@vsn-ux/ngx-gaia 0.11.2 → 0.11.3
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":"vsn-ux-ngx-gaia.mjs","sources":["../../../projects/ngx-gaia/src/lib/utils/root-font-size.token.ts","../../../projects/ngx-gaia/src/lib/icon/icon.component.ts","../../../projects/ngx-gaia/src/lib/icon/icon.module.ts","../../../projects/ngx-gaia/src/lib/alert/alert-title.component.ts","../../../projects/ngx-gaia/src/lib/button/button-i18n.service.ts","../../../projects/ngx-gaia/src/lib/spinner/spinner.component.ts","../../../projects/ngx-gaia/src/lib/button/button.directive.ts","../../../projects/ngx-gaia/src/lib/button/icon-button.directive.ts","../../../projects/ngx-gaia/src/lib/button/button.module.ts","../../../projects/ngx-gaia/src/lib/alert/alert-i18n.service.ts","../../../projects/ngx-gaia/src/lib/alert/alert.component.ts","../../../projects/ngx-gaia/src/lib/alert/alert.component.html","../../../projects/ngx-gaia/src/lib/alert/alert-title-actions.component.ts","../../../projects/ngx-gaia/src/lib/alert/alert.module.ts","../../../projects/ngx-gaia/src/lib/badge/badge.component.ts","../../../projects/ngx-gaia/src/lib/badge/badge.module.ts","../../../projects/ngx-gaia/src/lib/card/card.component.ts","../../../projects/ngx-gaia/src/lib/card/card.module.ts","../../../projects/ngx-gaia/src/lib/form-field/form-control-errors.directive.ts","../../../projects/ngx-gaia/src/lib/utils/error-state.ts","../../../projects/ngx-gaia/src/lib/checkbox/checkbox.component.ts","../../../projects/ngx-gaia/src/lib/checkbox/checkbox.component.html","../../../projects/ngx-gaia/src/lib/checkbox/checkbox-required.validator.ts","../../../projects/ngx-gaia/src/lib/checkbox/checkbox.module.ts","../../../projects/ngx-gaia/src/lib/utils/class-checker.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker-i18n.service.ts","../../../projects/ngx-gaia/src/lib/datepicker/adapters/date-struct-adapter.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker.component.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker.component.html","../../../projects/ngx-gaia/src/lib/form-field/form-field-connector.ts","../../../projects/ngx-gaia/src/lib/input/input.directive.ts","../../../projects/ngx-gaia/src/lib/input/input.component.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker-toggle.component.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker-toggle.component.html","../../../projects/ngx-gaia/src/lib/datepicker/datepicker-parser-formatter.service.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker-input.directive.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker.module.ts","../../../projects/ngx-gaia/src/lib/datepicker/adapters/date-native-utc-adapter.ts","../../../projects/ngx-gaia/src/lib/datepicker/adapters/date-native-utc-iso-adapter.ts","../../../projects/ngx-gaia/src/lib/segmented-control/segmented-control.component.ts","../../../projects/ngx-gaia/src/lib/segmented-control/segmented-control-button.directive.ts","../../../projects/ngx-gaia/src/lib/segmented-control/segmented-control-icon-button.component.ts","../../../projects/ngx-gaia/src/lib/segmented-control/segmented-control-text-button.component.ts","../../../projects/ngx-gaia/src/lib/segmented-control/segmented-control.module.ts","../../../projects/ngx-gaia/src/lib/input/input.module.ts","../../../projects/ngx-gaia/src/lib/form-field/form-errors.provider.ts","../../../projects/ngx-gaia/src/lib/form-field/field-callout.component.ts","../../../projects/ngx-gaia/src/lib/form-field/field-callout.component.html","../../../projects/ngx-gaia/src/lib/form-field/field-info.component.ts","../../../projects/ngx-gaia/src/lib/form-field/field-error.directive.ts","../../../projects/ngx-gaia/src/lib/form-field/form-field.di.ts","../../../projects/ngx-gaia/src/lib/form-field/form-field.component.ts","../../../projects/ngx-gaia/src/lib/form-field/form-field.component.html","../../../projects/ngx-gaia/src/lib/tooltip/tooltip.component.ts","../../../projects/ngx-gaia/src/lib/tooltip/tooltip.component.html","../../../projects/ngx-gaia/src/lib/tooltip/tooltip.directive.ts","../../../projects/ngx-gaia/src/lib/tooltip/tooltip.module.ts","../../../projects/ngx-gaia/src/lib/form-field/field-label.component.ts","../../../projects/ngx-gaia/src/lib/form-field/field-label.component.html","../../../projects/ngx-gaia/src/lib/form-field/form-control.directive.ts","../../../projects/ngx-gaia/src/lib/form-field/labelled-by-form-field.directive.ts","../../../projects/ngx-gaia/src/lib/form-field/form-field.module.ts","../../../projects/ngx-gaia/src/lib/menu/menu.component.ts","../../../projects/ngx-gaia/src/lib/menu/menu-item.component.ts","../../../projects/ngx-gaia/src/lib/menu/menu-item.component.html","../../../projects/ngx-gaia/src/lib/menu/menu-title.component.ts","../../../projects/ngx-gaia/src/lib/menu/menu-trigger.directive.ts","../../../projects/ngx-gaia/src/lib/menu/menu-separator.component.ts","../../../projects/ngx-gaia/src/lib/menu/menu-trigger-icon.component.ts","../../../projects/ngx-gaia/src/lib/menu/menu.module.ts","../../../projects/ngx-gaia/src/lib/modal/modal-ref.ts","../../../projects/ngx-gaia/src/lib/modal/modal-data.token.ts","../../../projects/ngx-gaia/src/lib/modal/modal.options.ts","../../../projects/ngx-gaia/src/lib/modal/modal.service.ts","../../../projects/ngx-gaia/src/lib/modal/modal.component.ts","../../../projects/ngx-gaia/src/lib/modal/modal.directives.ts","../../../projects/ngx-gaia/src/lib/modal/modal-description.component.ts","../../../projects/ngx-gaia/src/lib/modal/modal-content.component.ts","../../../projects/ngx-gaia/src/lib/modal/modal-actions.component.ts","../../../projects/ngx-gaia/src/lib/modal/modal-i18n.service.ts","../../../projects/ngx-gaia/src/lib/modal/modal-header.component.ts","../../../projects/ngx-gaia/src/lib/modal/modal.module.ts","../../../projects/ngx-gaia/src/lib/radio/radio-group.component.ts","../../../projects/ngx-gaia/src/lib/radio/radio-group.component.html","../../../projects/ngx-gaia/src/lib/radio/radio-button.component.ts","../../../projects/ngx-gaia/src/lib/radio/radio-button.component.html","../../../projects/ngx-gaia/src/lib/radio/radio.module.ts","../../../projects/ngx-gaia/src/lib/select/option.component.ts","../../../projects/ngx-gaia/src/lib/select/option.component.html","../../../projects/ngx-gaia/src/lib/select/select-value.component.ts","../../../projects/ngx-gaia/src/lib/select/select-default-value.component.ts","../../../projects/ngx-gaia/src/lib/select/select-default-value.component.html","../../../projects/ngx-gaia/src/lib/select/select-i18n.service.ts","../../../projects/ngx-gaia/src/lib/spinner/spinner.module.ts","../../../projects/ngx-gaia/src/lib/select/select-dropdown-spinner.component.ts","../../../projects/ngx-gaia/src/lib/select/select-dropdown.component.ts","../../../projects/ngx-gaia/src/lib/select/select-dropdown.component.html","../../../projects/ngx-gaia/src/lib/select/select.component.ts","../../../projects/ngx-gaia/src/lib/select/select.component.html","../../../projects/ngx-gaia/src/lib/select/opt-group.component.ts","../../../projects/ngx-gaia/src/lib/select/select-required.validator.ts","../../../projects/ngx-gaia/src/lib/select/select.module.ts","../../../projects/ngx-gaia/src/lib/data-select/data-option.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-option.component.html","../../../projects/ngx-gaia/src/lib/data-select/data-select-i18n.service.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-value.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-value.component.html","../../../projects/ngx-gaia/src/lib/data-select/data-select-dropdown-spinner.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-dropdown.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-dropdown.component.html","../../../projects/ngx-gaia/src/lib/data-select/data-optgroup.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-value.directive.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-option-label.directive.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-optgroup-label.directive.ts","../../../projects/ngx-gaia/src/lib/utils/intersection-trigger.directive.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select.component.html","../../../projects/ngx-gaia/src/lib/data-select/data-select-required.validator.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select.module.ts","../../../projects/ngx-gaia/src/lib/switch/switch.component.ts","../../../projects/ngx-gaia/src/lib/switch/switch.component.html","../../../projects/ngx-gaia/src/lib/switch/switch.module.ts","../../../projects/ngx-gaia/src/lib/link/link.directive.ts","../../../projects/ngx-gaia/src/lib/link/link.module.ts","../../../projects/ngx-gaia/src/lib/tabs/tab.component.ts","../../../projects/ngx-gaia/src/lib/tabs/tab.component.html","../../../projects/ngx-gaia/src/lib/tabs/tabs.component.ts","../../../projects/ngx-gaia/src/lib/tabs/tabs.component.html","../../../projects/ngx-gaia/src/lib/tabs/tabs.module.ts","../../../projects/ngx-gaia/src/lib/text-area/text-area.directive.ts","../../../projects/ngx-gaia/src/lib/text-area/text-area.module.ts","../../../projects/ngx-gaia/src/lib/chip/chip-listbox.component.ts","../../../projects/ngx-gaia/src/lib/chip/chip-listbox.component.html","../../../projects/ngx-gaia/src/lib/chip/chip.component.ts","../../../projects/ngx-gaia/src/lib/chip/chip.component.html","../../../projects/ngx-gaia/src/lib/chip/chip.module.ts","../../../projects/ngx-gaia/src/public-api.ts","../../../projects/ngx-gaia/src/vsn-ux-ngx-gaia.ts"],"sourcesContent":["import { InjectionToken, makeEnvironmentProviders } from '@angular/core';\n\n/**\n * Injection token that provides the base root font size in pixels.\n * This token is used for accurate rem calculations when the default\n * browser font size (16px) has been overridden by application styles.\n * Default value is 16px if not explicitly provided.\n */\nexport const GA_BASE_FONT_SIZE = new InjectionToken<number>(\n 'ga-base-font-size',\n { providedIn: 'root', factory: () => 16 },\n);\n\nexport function provideGaBaseFontSize(fontSize: number) {\n return makeEnvironmentProviders([\n { provide: GA_BASE_FONT_SIZE, useValue: fontSize },\n ]);\n}\n","import {\n Component,\n computed,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n numberAttribute,\n ViewEncapsulation,\n} from '@angular/core';\nimport { LucideAngularModule, LucideIconData } from 'lucide-angular';\nimport { GA_BASE_FONT_SIZE } from '../utils/root-font-size.token';\n\nexport type GaIconData = LucideIconData;\n\nexport const GA_ICON_DEFAULT_SIZE = 24;\n\n@Component({\n selector: 'ga-icon',\n imports: [LucideAngularModule],\n template: `<lucide-icon\n [name]=\"icon()\"\n [color]=\"color()\"\n [strokeWidth]=\"strokeWidth()\"\n />`,\n host: {\n class: 'ga-icon',\n role: 'img',\n '[style]': \"{ '--ga-icon-size': sizeWithDimension() }\",\n },\n styles: `\n .ga-icon {\n display: inline-block;\n vertical-align: middle;\n user-select: none;\n width: fit-content;\n height: fit-content;\n\n lucide-icon > svg {\n width: var(--ga-icon-size);\n height: var(--ga-icon-size);\n }\n }\n `,\n encapsulation: ViewEncapsulation.None,\n})\nexport class GaIconComponent {\n private readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n private readonly baseFontSize = inject(GA_BASE_FONT_SIZE);\n private readonly ariaHiddenAttr = inject(\n new HostAttributeToken('aria-hidden'),\n {\n optional: true,\n },\n );\n\n readonly icon = input.required<GaIconData | string>();\n readonly size = input<string | number>(GA_ICON_DEFAULT_SIZE);\n readonly color = input<string>();\n readonly strokeWidth = input(undefined, { transform: numberAttribute });\n\n readonly sizeWithDimension = computed(() => {\n const size = this.size();\n if (\n typeof size === 'number' ||\n (typeof size === 'string' && size.match(/^\\d+$/))\n ) {\n const sizeNumber = Number(size);\n return `${sizeNumber / this.baseFontSize}rem`;\n }\n return size;\n });\n\n constructor() {\n if (!this.ariaHiddenAttr) {\n this.elementRef.nativeElement.setAttribute('aria-hidden', 'true');\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaIconComponent } from './icon.component';\n\n@NgModule({\n imports: [GaIconComponent],\n exports: [GaIconComponent],\n})\nexport class GaIconModule {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-alert-title',\n template: `<ng-content />`,\n host: {\n class: 'ga-notification__title',\n },\n})\nexport class GaAlertTitleComponent {}\n","import { Injectable, makeEnvironmentProviders } from '@angular/core';\n\nexport function GA_BUTTON_I18N_FACTORY() {\n return new GaButtonI18nDefault();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_BUTTON_I18N_FACTORY,\n})\nexport abstract class GaButtonI18n {\n abstract loadingLabel: string;\n}\n\n@Injectable()\nexport class GaButtonI18nDefault extends GaButtonI18n {\n /** A label for the default loading state */\n loadingLabel = 'Loading...';\n}\n\nexport function provideGaButtonI18n(\n value: GaButtonI18n | (() => GaButtonI18n),\n) {\n return makeEnvironmentProviders([\n typeof value === 'function'\n ? { provide: GaButtonI18n, useFactory: value }\n : { provide: GaButtonI18n, useValue: value },\n ]);\n}\n","import {\n Component,\n computed,\n input,\n numberAttribute,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'ga-spinner',\n template: `\n <svg\n [attr.width]=\"size()\"\n [attr.height]=\"size()\"\n [attr.viewBox]=\"'0 0 ' + size() + ' ' + size()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n [attr.cx]=\"center()\"\n [attr.cy]=\"center()\"\n [attr.r]=\"radius()\"\n stroke=\"var(--ga-color-secondary)\"\n [attr.stroke-width]=\"strokeWidth()\"\n fill=\"none\"\n ></circle>\n <circle\n [attr.cx]=\"center()\"\n [attr.cy]=\"center()\"\n [attr.r]=\"radius()\"\n stroke=\"var(--ga-color-primary-70)\"\n [attr.stroke-width]=\"strokeWidth()\"\n stroke-linecap=\"round\"\n fill=\"none\"\n [attr.stroke-dasharray]=\"arcCircumference() + ' ' + circumference()\"\n style=\"transform-origin: center; animation: ga-spinner__animation 1100ms linear infinite;\"\n ></circle>\n </svg>\n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ga-spinner',\n role: 'progressbar',\n '[attr.aria-valuemin]': '0',\n '[attr.aria-valuemax]': '100',\n '[attr.mode]': \"'indeterminate'\",\n tabindex: '-1',\n },\n styles: `\n .ga-spinner {\n display: inline-block;\n }\n\n @keyframes ga-spinner__animation {\n 0% {\n transform: rotate(0deg);\n }\n 31.82% {\n /* 350ms / 1100ms */\n transform: rotate(90deg);\n }\n 63.64% {\n /* (350ms + 350ms) / 1100ms */\n transform: rotate(180deg);\n }\n 81.82% {\n /* (350ms + 350ms + 200ms) / 1100ms */\n transform: rotate(270deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n `,\n})\nexport class GaSpinnerComponent {\n readonly size = input(32, { transform: numberAttribute });\n\n readonly strokeWidth = computed(() => this.size() / 5);\n readonly center = computed(() => this.size() / 2);\n readonly radius = computed(() => (this.size() - this.strokeWidth()) / 2);\n readonly circumference = computed(() => 2 * Math.PI * this.radius());\n readonly arcCircumference = computed(() => this.circumference() * 0.25);\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { GaButtonI18n } from './button-i18n.service';\nimport { GaSpinnerComponent } from '../spinner/spinner.component';\n\nexport type GaButtonType = 'primary' | 'secondary' | 'ghost' | 'transparent';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[gaButton], a[gaButton]',\n imports: [GaSpinnerComponent],\n template: `\n @if (isLoading()) {\n <ga-spinner size=\"16\" />\n <span class=\"ga-button__loading-label\">{{ loadingLabel() }}</span>\n } @else {\n <ng-content />\n }\n `,\n styles: `\n .ga-button__loading-label {\n color: var(--ga-color-text-body);\n font-weight: 400;\n font-size: calc(\n var(--ga-text-sm-font-size) * var(--ga-base-scaling-factor, 1)\n );\n line-height: calc(\n var(--ga-text-sm-line-height) * var(--ga-base-scaling-factor, 1)\n );\n letter-spacing: 0;\n }\n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ga-button',\n '[class.ga-button--secondary]': `!variant() || variant() === 'secondary'`,\n '[class.ga-button--primary]': `variant() === 'primary'`,\n '[class.ga-button--ghost]': `variant() === 'ghost'`,\n '[class.ga-button--transparent]': `variant() === 'transparent'`,\n '[attr.disabled]': 'disabled()',\n '[attr.aria-busy]': 'isLoading() ? \"true\" : null',\n },\n})\nexport class GaButtonDirective {\n private readonly i18n = inject(GaButtonI18n);\n private readonly el: ElementRef<HTMLElement> = inject(ElementRef);\n\n readonly variant = input.required<GaButtonType | ''>({\n alias: 'gaButton',\n });\n\n readonly isLoading = input(false, {\n alias: 'gaButtonLoading',\n transform: booleanAttribute,\n });\n readonly loadingLabel = input(this.i18n.loadingLabel, {\n alias: 'gaButtonLoadingLabel',\n });\n readonly disabledImplicit = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n\n readonly disabled = computed(() => {\n if (this.el.nativeElement.tagName === 'A') {\n return null;\n }\n return this.isLoading() || this.disabledImplicit() ? '' : null;\n });\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { GaIconModule } from '../icon/icon.module';\nimport { GaIconData } from '../icon/icon.component';\nimport { GaButtonI18n } from './button-i18n.service';\nimport { GaSpinnerComponent } from '../spinner/spinner.component';\n\nexport type GaIconButtonVariant =\n | 'primary'\n | 'secondary'\n | 'ghost'\n | 'transparent';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[gaIconButton], a[gaIconButton]',\n imports: [GaIconModule, GaSpinnerComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './icon-button.directive.scss',\n encapsulation: ViewEncapsulation.None,\n template: `\n @if (isLoading()) {\n <ga-spinner size=\"16\" />\n <span class=\"ga-button__icon-label\">{{ loadingLabel() }}</span>\n } @else {\n <ga-icon [icon]=\"icon()\" />\n <span class=\"ga-button__icon-label\"><ng-content /></span>\n }\n `,\n host: {\n class: 'ga-button ga-button--icon-only',\n '[class.ga-button--primary]': `variant() === 'primary'`,\n '[class.ga-button--secondary]': `variant() === 'secondary'`,\n '[class.ga-button--ghost]': `variant() === 'ghost'`,\n '[class.ga-button--transparent]': `variant() === 'transparent'`,\n '[attr.disabled]': 'disabled()',\n '[attr.aria-busy]': 'isLoading() ? \"true\" : null',\n },\n})\nexport class GaIconButtonDirective {\n private readonly i18n = inject(GaButtonI18n);\n private readonly el: ElementRef<HTMLElement> = inject(ElementRef);\n\n readonly icon = input.required<GaIconData>({\n alias: 'gaIconButton',\n });\n\n readonly variant = input<GaIconButtonVariant>('secondary', {\n alias: 'gaIconButtonVariant',\n });\n\n readonly isLoading = input(false, {\n alias: 'gaIconButtonLoading',\n transform: booleanAttribute,\n });\n readonly loadingLabel = input(this.i18n.loadingLabel, {\n alias: 'gaIconButtonLoadingLabel',\n });\n readonly disabledImplicit = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n\n readonly disabled = computed(() => {\n if (this.el.nativeElement.tagName === 'A') {\n return null;\n }\n return this.isLoading() || this.disabledImplicit() ? '' : null;\n });\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaButtonDirective } from './button.directive';\nimport { GaIconButtonDirective } from './icon-button.directive';\n\n@NgModule({\n imports: [GaButtonDirective, GaIconButtonDirective],\n exports: [GaButtonDirective, GaIconButtonDirective],\n})\nexport class GaButtonModule {}\n","import { Injectable, makeEnvironmentProviders } from '@angular/core';\n\nexport function GA_ALERT_I18N_FACTORY() {\n return new GaAlertI18nDefault();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_ALERT_I18N_FACTORY,\n})\nexport abstract class GaAlertI18n {\n abstract dismissLabel: string;\n}\n\n@Injectable()\nexport class GaAlertI18nDefault extends GaAlertI18n {\n /** A label for the dismiss button */\n dismissLabel = 'Dismiss';\n}\n\nexport function provideGaAlertI18n(value: GaAlertI18n | (() => GaAlertI18n)) {\n return makeEnvironmentProviders([\n typeof value === 'function'\n ? { provide: GaAlertI18n, useFactory: value }\n : { provide: GaAlertI18n, useValue: value },\n ]);\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n contentChild,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { GaIconData, GaIconModule } from '../icon';\nimport { GaAlertTitleComponent } from './alert-title.component';\nimport {\n CircleCheck,\n Info,\n OctagonAlert,\n TriangleAlert,\n X,\n} from 'lucide-angular';\nimport { GaButtonModule } from '../button/button.module';\nimport { GaAlertI18n } from './alert-i18n.service';\n\nlet nextUniqueId = 0;\n\nexport type GaAlertVariant =\n | 'brand'\n | 'information'\n | 'error'\n | 'warning'\n | 'success';\n\n@Component({\n selector: 'ga-alert',\n templateUrl: './alert.component.html',\n imports: [GaIconModule, GaButtonModule],\n host: {\n role: 'alert',\n '[class]': `variantClass()`,\n },\n})\nexport class GaAlertComponent {\n protected readonly i18n = inject(GaAlertI18n);\n\n readonly dismissIcon: typeof X = X;\n\n readonly variant = input<GaAlertVariant>('brand');\n readonly explicitIcon = input<GaIconData>(undefined, { alias: 'icon' });\n readonly dismissible = input(false, { transform: booleanAttribute });\n readonly progress = input<number | 'indeterminate'>();\n readonly progressLabel = input<string>();\n readonly progressLabelledBy = input<string>();\n\n readonly dismiss = output();\n\n readonly icon = computed(() => {\n if (this.explicitIcon() !== undefined) {\n return this.explicitIcon();\n }\n switch (this.variant()) {\n case 'information':\n return Info;\n case 'error':\n return OctagonAlert;\n case 'warning':\n return TriangleAlert;\n case 'success':\n return CircleCheck;\n }\n return null;\n });\n\n readonly title = contentChild(GaAlertTitleComponent);\n\n readonly progressId = `ga-alert-progress-${++nextUniqueId}`;\n\n readonly variantClass = computed(() => {\n return `ga-notification ga-notification--${this.variant()}`;\n });\n\n readonly hasProgress = computed(() => {\n return this.progress() !== undefined;\n });\n\n readonly progressValue = computed(() => {\n const progressValue = this.progress();\n if (progressValue === undefined || progressValue === 'indeterminate') {\n return undefined;\n }\n return Math.max(0, Math.min(100, progressValue));\n });\n\n readonly progressBarWidth = computed(() => {\n const progressValue = this.progressValue();\n if (progressValue === undefined) {\n return undefined;\n }\n return `${progressValue}%`;\n });\n}\n","@if (icon()) {\n <ga-icon [icon]=\"icon()!\" class=\"ga-notification__icon\" />\n}\n<div class=\"ga-notification__content\">\n @if (title()) {\n <div class=\"ga-notification__heading\">\n <ng-content select=\"ga-alert-title\" />\n <ng-content select=\"ga-alert-title-actions\" />\n </div>\n }\n <div class=\"ga-notification__description\">\n <ng-content />\n </div>\n</div>\n\n@if (hasProgress()) {\n <div\n role=\"progressbar\"\n class=\"ga-notification__progress\"\n [class.ga-notification__progress--indeterminate]=\"\n progress() === 'indeterminate'\n \"\n [id]=\"progressId\"\n [attr.aria-label]=\"progressLabel()\"\n [attr.aria-labelledby]=\"progressLabelledBy()\"\n [attr.aria-valuenow]=\"progressValue()\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <div\n class=\"ga-notification__progress-bar\"\n [style.width]=\"progressBarWidth()\"\n ></div>\n </div>\n}\n\n@if (dismissible()) {\n <button\n type=\"button\"\n [gaIconButton]=\"dismissIcon\"\n gaIconButtonVariant=\"ghost\"\n (click)=\"dismiss.emit()\"\n >\n {{ i18n.dismissLabel }}\n </button>\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-alert-title-actions',\n template: `<ng-content />`,\n host: {\n class: 'ga-notification__title-actions',\n },\n})\nexport class GaAlertTitleActionsComponent {}\n","import { NgModule } from '@angular/core';\n\nimport { GaAlertComponent } from './alert.component';\nimport { GaAlertTitleComponent } from './alert-title.component';\nimport { GaAlertTitleActionsComponent } from './alert-title-actions.component';\n\n@NgModule({\n imports: [\n GaAlertComponent,\n GaAlertTitleComponent,\n GaAlertTitleActionsComponent,\n ],\n exports: [\n GaAlertComponent,\n GaAlertTitleComponent,\n GaAlertTitleActionsComponent,\n ],\n})\nexport class GaAlertModule {}\n","import { Component, computed, input } from '@angular/core';\n\nexport type GaBadgeVariant =\n | 'default'\n | 'default-inverted'\n | 'information'\n | 'error'\n | 'warning'\n | 'success'\n | 'muted'\n | 'disabled';\n\nexport type GaBadgeType = 'text' | 'dot';\n\n@Component({\n selector: 'ga-badge',\n template: `<ng-content />`,\n host: {\n '[class]': `variantClass()`,\n },\n})\nexport class GaBadgeComponent {\n readonly variant = input<GaBadgeVariant>('default');\n readonly type = input<GaBadgeType>('text');\n\n readonly variantClass = computed(() => {\n return `ga-badge ga-badge--${this.type()} ga-badge--${this.variant()}`;\n });\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaBadgeComponent } from './badge.component';\n\n@NgModule({\n imports: [GaBadgeComponent],\n exports: [GaBadgeComponent],\n})\nexport class GaBadgeModule {}\n","import { booleanAttribute, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ga-card',\n template: `<ng-content />`,\n host: {\n class: 'ga-card',\n '[class.ga-card--selectable]': 'selectable()',\n '[class.ga-card--selected]': 'selected()',\n '[class.ga-card--disabled]': 'disabled()',\n },\n})\nexport class GaCardComponent {\n readonly selectable = input(false, { transform: booleanAttribute });\n readonly selected = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaCardComponent } from './card.component';\n\n@NgModule({\n imports: [GaCardComponent],\n exports: [GaCardComponent],\n})\nexport class GaCardModule {}\n","import { computed, Directive, input } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\n\n@Directive({\n selector: '[gaFormControlErrors]',\n})\nexport class GaFormControlErrorsDirective {\n readonly customErrorsInput = input.required<ValidationErrors>({\n alias: 'gaFormControlErrors',\n });\n\n readonly customErrors = computed(() => {\n // for better API ergonomics, we ignore errors with null and undefined values\n // this lets to bind custom errors directly without nasty if checks\n // e.g. [gaFormControlErrors]=\"{ required: isEmpty ? true : null, noMatch: form.getError('noMatch') }\"\n return Object.entries(this.customErrorsInput()).reduce<ValidationErrors>(\n (acc, [key, value]) => {\n if (value !== null && value !== undefined) {\n acc[key] = value;\n }\n return acc;\n },\n {},\n );\n });\n}\n","import {\n DestroyRef,\n effect,\n inject,\n InjectionToken,\n Injector,\n isSignal,\n linkedSignal,\n Signal,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport {\n ControlContainer,\n FormGroupDirective,\n NgControl,\n NgForm,\n ValidationErrors,\n} from '@angular/forms';\nimport { GaFormControlErrorsDirective } from '../form-field/form-control-errors.directive';\nimport { Subscription } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport interface GaFormControlAdapter {\n readonly ngControlErrors: Signal<ValidationErrors | null | undefined>;\n readonly ngControlTouched: Signal<boolean>;\n readonly ngControlDisabled: Signal<boolean>;\n readonly ngControlName: Signal<string | number | null>;\n readonly ngFormSubmitted: Signal<boolean>;\n}\n\nexport const GA_FORM_CONTROL_ADAPTER = new InjectionToken<GaFormControlAdapter>(\n 'ga-form-control-adapter',\n);\n\n/**\n * @internal - This function is for internal library use only\n */\nexport function injectNgControlState({\n implicitChildNgControl,\n explicitNgControl,\n explicitNgForm,\n}: {\n implicitChildNgControl?: Signal<NgControl | undefined | null>;\n explicitNgControl?: NgControl | Signal<NgControl | undefined | null> | null;\n explicitNgForm?: FormGroupDirective | NgForm;\n} = {}) {\n const gaFormControlAdapter = inject(GA_FORM_CONTROL_ADAPTER, {\n optional: true,\n });\n\n let ngControlErrors: WritableSignal<ValidationErrors | null | undefined>;\n let ngControlTouched: WritableSignal<boolean>;\n let ngControlDisabled: WritableSignal<boolean>;\n let ngControlName: WritableSignal<string | number | null>;\n let ngFormSubmitted: WritableSignal<boolean>;\n\n if (gaFormControlAdapter) {\n ngControlErrors = linkedSignal(() =>\n gaFormControlAdapter.ngControlErrors(),\n );\n ngControlTouched = linkedSignal(() =>\n gaFormControlAdapter.ngControlTouched(),\n );\n ngControlDisabled = linkedSignal(() =>\n gaFormControlAdapter.ngControlDisabled(),\n );\n ngControlName = linkedSignal(() => gaFormControlAdapter.ngControlName());\n ngFormSubmitted = linkedSignal(() =>\n gaFormControlAdapter.ngFormSubmitted(),\n );\n } else {\n ngControlErrors = signal<ValidationErrors | null>(null);\n ngControlTouched = signal<boolean>(false);\n ngControlDisabled = signal<boolean>(false);\n ngControlName = signal<string | number | null>(null);\n ngFormSubmitted = signal<boolean>(false);\n\n const injector = inject(Injector);\n const destroyRef = inject(DestroyRef);\n const implicitNgForm = inject(NgForm, { optional: true });\n const implicitControlContainer = inject(ControlContainer, {\n optional: true,\n });\n const ngForm =\n explicitNgForm ??\n implicitNgForm ??\n (implicitControlContainer?.formDirective instanceof NgForm\n ? implicitControlContainer.formDirective\n : null);\n\n let ngControlSubscription: Subscription | null = null;\n effect(() => {\n if (ngControlSubscription) {\n ngControlSubscription.unsubscribe();\n ngControlSubscription = null;\n }\n if (isSignal(explicitNgControl)) {\n explicitNgControl = explicitNgControl();\n }\n\n const ngControl =\n explicitNgControl ??\n implicitChildNgControl?.() ??\n injector.get(NgControl, null, { optional: true });\n if (ngControl?.control) {\n const updateStatuses = () => {\n ngControlErrors.set(ngControl.errors);\n ngControlTouched.set(!!ngControl.touched);\n ngControlDisabled.set(!!ngControl.disabled);\n ngControlName.set(ngControl.name);\n };\n updateStatuses();\n ngControlSubscription = ngControl.control.events\n .pipe(takeUntilDestroyed(destroyRef))\n .subscribe(() => updateStatuses());\n }\n });\n\n if (ngForm) {\n ngFormSubmitted.set(ngForm.submitted);\n ngForm.ngSubmit\n .pipe(takeUntilDestroyed(destroyRef))\n .subscribe(() => ngFormSubmitted.set(ngForm.submitted));\n }\n }\n\n const customErrorsDirective = inject(GaFormControlErrorsDirective, {\n optional: true,\n });\n const inError = signal(false);\n const errors = signal<ValidationErrors>({});\n effect(() => {\n errors.set({\n ...ngControlErrors(),\n ...(customErrorsDirective?.customErrors() ?? {}),\n });\n const hasErrors = Object.keys(errors()).length > 0;\n inError.set(hasErrors && (ngControlTouched() || ngFormSubmitted()));\n });\n\n return {\n inError: inError.asReadonly(),\n errors: errors.asReadonly(),\n disabled: ngControlDisabled.asReadonly(),\n name: ngControlName.asReadonly(),\n };\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n linkedSignal,\n output,\n Provider,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Check, LucideAngularModule, Minus } from 'lucide-angular';\nimport { injectNgControlState } from '../utils/error-state';\n\nexport const CHECKBOX_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaCheckboxComponent),\n multi: true,\n};\n\n// Increasing integer for generating unique ids for checkbox components.\n// Inspired by @angular/components\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-checkbox',\n templateUrl: './checkbox.component.html',\n imports: [LucideAngularModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CHECKBOX_CONTROL_VALUE_ACCESSOR],\n host: {\n class: 'ga-checkbox',\n '[class.ga-checkbox--invalid]': 'invalid()',\n '[attr.id]': 'null',\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n '[attr.aria-invalid]': 'null',\n '[attr.aria-errormessage]': 'null',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n },\n})\nexport class GaCheckboxComponent implements ControlValueAccessor {\n /** @ignore */\n private readonly _uniqueId = `ga-checkbox-${++nextUniqueId}`;\n\n /** @ignore */\n private readonly implicitNgControlState = injectNgControlState();\n\n /** @ignore */\n protected readonly tabindex = inject(new HostAttributeToken('tabindex'), {\n optional: true,\n });\n\n readonly icons = { Minus, Check };\n\n /** @ignore */\n private _onTouched?: () => any;\n /** @ignore */\n private _onModelChanged?: (value: any) => void;\n\n /** The value attribute of the native input element */\n readonly value = input<string | null>(null);\n readonly disabledInput = input(false, {\n transform: booleanAttribute,\n alias: 'disabled',\n });\n readonly checkedInput = input(false, {\n transform: booleanAttribute,\n alias: 'checked',\n });\n readonly nameInput = input<string | null>(null, { alias: 'name' });\n readonly id = input<string | null>(null);\n readonly indeterminate = input(false, { transform: booleanAttribute });\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly ariaLabelledby = input<string | null>(null, {\n alias: 'aria-labelledby',\n });\n readonly ariaDescribedby = input<string | null>(null, {\n alias: 'aria-describedby',\n });\n readonly ariaInvalid = input<string | null>(null, { alias: 'aria-invalid' });\n readonly ariaErrormessage = input<string | null>(null, {\n alias: 'aria-errormessage',\n });\n readonly required = input(false, { transform: booleanAttribute });\n\n readonly disabled = linkedSignal(() => this.disabledInput());\n readonly checked = linkedSignal(() => this.checkedInput());\n\n readonly change = output<boolean>();\n readonly indeterminateChange = output<boolean>();\n\n /** @ignore */\n readonly inputId = computed(() => (this.id() ? this.id() : this._uniqueId));\n /** @ignore */\n readonly name = computed(() => {\n return (\n this.nameInput() ?? this.implicitNgControlState.name() ?? this._uniqueId\n );\n });\n /** @ignore */\n readonly invalid = computed(() => {\n return this.ariaInvalid()\n ? this.ariaInvalid() === 'true'\n : this.implicitNgControlState.inError();\n });\n\n /** @ignore */\n onInputChange(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n\n if (this.disabled()) {\n return;\n }\n\n this.checked.set(!this.checked());\n this.updateModel();\n }\n\n /** @ignore */\n onBlur() {\n this._onTouched?.();\n }\n\n /** @ignore */\n registerOnChange(fn: (value: any) => void) {\n this._onModelChanged = fn;\n }\n\n /** @ignore */\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n /** @ignore */\n writeValue(value: any) {\n this.checked.set(!!value);\n }\n\n /** @ignore */\n setDisabledState(isDisabled: boolean) {\n this.disabled.set(isDisabled);\n }\n\n /** @ignore */\n private updateModel() {\n this._onModelChanged?.(this.checked());\n this.change.emit(this.checked());\n }\n}\n","<input\n type=\"checkbox\"\n class=\"ga-checkbox__native\"\n [attr.id]=\"inputId()\"\n [name]=\"name()\"\n [checked]=\"checked()\"\n [indeterminate]=\"indeterminate()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.value]=\"value()\"\n [attr.tabindex]=\"tabindex\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-errormessage]=\"ariaErrormessage()\"\n (change)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"\n/>\n<div class=\"ga-checkbox__marker\">\n <lucide-icon\n [img]=\"icons.Check\"\n class=\"ga-checkbox__marker__indicator-checked\"\n [size]=\"12\"\n [strokeWidth]=\"2\"\n [absoluteStrokeWidth]=\"true\"\n />\n <lucide-icon\n [img]=\"icons.Minus\"\n class=\"ga-checkbox__marker__indicator-indeterminate\"\n [size]=\"12\"\n [strokeWidth]=\"2\"\n [absoluteStrokeWidth]=\"true\"\n />\n</div>\n\n<label class=\"ga-checkbox__label\" [attr.for]=\"inputId()\"\n ><ng-content></ng-content\n></label>\n","import { Directive, Provider, forwardRef } from '@angular/core';\nimport { NG_VALIDATORS, CheckboxRequiredValidator } from '@angular/forms';\n\nexport const GA_CHECKBOX_REQUIRED_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => GaCheckboxRequiredValidator),\n multi: true,\n};\n\n/**\n * Validator for Gaia checkbox's required attribute in template-driven checkbox.\n * Current CheckboxRequiredValidator only work with `input type=checkbox` and does not\n * work with `ga-checkbox`.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: `ga-checkbox[required][formControlName], ga-checkbox[required][formControl], ga-checkbox[required][ngModel]`,\n providers: [GA_CHECKBOX_REQUIRED_VALIDATOR],\n})\nexport class GaCheckboxRequiredValidator extends CheckboxRequiredValidator {}\n","import { NgModule } from '@angular/core';\n\nimport { GaCheckboxRequiredValidator } from './checkbox-required.validator';\nimport { GaCheckboxComponent } from './checkbox.component';\n\n@NgModule({\n imports: [GaCheckboxComponent, GaCheckboxRequiredValidator],\n exports: [GaCheckboxComponent, GaCheckboxRequiredValidator],\n})\nexport class GaCheckboxModule {}\n","import { Type } from '@angular/core';\n\nexport function isClass<T>(value: any): value is Type<T> {\n return (\n typeof value === 'function' &&\n value.prototype &&\n value.prototype.constructor === value\n );\n}\n","import {\n Injectable,\n LOCALE_ID,\n Type,\n inject,\n makeEnvironmentProviders,\n} from '@angular/core';\nimport { isClass } from '../utils/class-checker';\n\nexport function GA_DATEPICKER_I18N_FACTORY() {\n return new GaDatepickerI18nDefault();\n}\n\nexport interface IGaDatepickerI18n {\n previousLabel: string;\n nextLabel: string;\n selectMonthLabel: string;\n selectYearLabel: string;\n openCalendarLabel: string;\n todayButtonLabel: string;\n\n monthNames?: string[];\n monthNamesShort?: string[];\n weekDays?: string[];\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_DATEPICKER_I18N_FACTORY,\n})\nexport abstract class GaDatepickerI18n implements IGaDatepickerI18n {\n abstract previousLabel: string;\n abstract nextLabel: string;\n abstract selectMonthLabel: string;\n abstract selectYearLabel: string;\n abstract openCalendarLabel: string;\n abstract todayButtonLabel: string;\n abstract monthNames: string[];\n abstract monthNamesShort: string[];\n abstract weekDays: string[];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class GaDatepickerI18nDefault extends GaDatepickerI18n {\n private readonly localeId = inject(LOCALE_ID);\n\n selectMonthLabel = 'Select month';\n selectYearLabel = 'Select year';\n previousLabel = 'Previous';\n nextLabel = 'Next';\n openCalendarLabel = 'Open calendar';\n todayButtonLabel = 'Today';\n\n monthNames: string[];\n monthNamesShort: string[];\n weekDays: string[];\n\n constructor() {\n super();\n\n // Generate month names using Intl API\n const monthFormatter = new Intl.DateTimeFormat(this.localeId, {\n month: 'long',\n });\n const monthShortFormatter = new Intl.DateTimeFormat(this.localeId, {\n month: 'short',\n });\n\n this.monthNames = Array.from({ length: 12 }, (_, i) => {\n const date = new Date(2024, i, 1);\n return monthFormatter.format(date);\n });\n\n this.monthNamesShort = Array.from({ length: 12 }, (_, i) => {\n const date = new Date(2024, i, 1);\n return monthShortFormatter.format(date);\n });\n\n // Generate weekday names using Intl API (starting from Monday)\n const weekdayFormatter = new Intl.DateTimeFormat(this.localeId, {\n weekday: 'short',\n });\n const weekDayDates = Array.from({ length: 7 }, (_, i) => {\n // January 2024 starts on Monday, so we can use dates 1-7\n return new Date(2024, 0, i + 1);\n });\n\n this.weekDays = weekDayDates.map((date) => {\n return weekdayFormatter.format(date);\n });\n }\n}\n\nexport function provideGaDatepickerI18n(\n value: IGaDatepickerI18n | Type<GaDatepickerI18n> | (() => IGaDatepickerI18n),\n) {\n if (isClass(value)) {\n return makeEnvironmentProviders([\n { provide: GaDatepickerI18n, useClass: value },\n ]);\n }\n return makeEnvironmentProviders([\n {\n provide: GaDatepickerI18n,\n useFactory: () => {\n const defaultI18n = inject(GaDatepickerI18nDefault);\n const i18n: Required<IGaDatepickerI18n> = {\n monthNames: defaultI18n.monthNames,\n monthNamesShort: defaultI18n.monthNamesShort,\n weekDays: defaultI18n.weekDays,\n ...(typeof value === 'function' ? value() : value),\n };\n return i18n;\n },\n },\n ]);\n}\n","import { Injectable, Provider, Type } from '@angular/core';\n\nexport interface GaDatepickerStruct {\n year: number;\n month: number; // 1-12 (January = 1, December = 12)\n day: number;\n}\n\nexport function GA_DATEPICKER_VALUE_ADAPTER_FACTORY() {\n return new GaDatepickerStructValueAdapter();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_DATEPICKER_VALUE_ADAPTER_FACTORY,\n})\nexport abstract class GaDatepickerValueAdapter<T = any> {\n /**\n * Converts the external value to internal struct representation\n */\n abstract toStruct(value: T | null): GaDatepickerStruct | null;\n\n /**\n * Converts the internal struct to external value representation\n */\n abstract fromStruct(struct: GaDatepickerStruct | null): T | null;\n}\n\n@Injectable()\nexport class GaDatepickerStructValueAdapter extends GaDatepickerValueAdapter<GaDatepickerStruct> {\n /**\n * Checks if a value is a valid GaDatepickerStruct\n */\n protected isStruct(value: any): value is GaDatepickerStruct {\n return (\n value &&\n typeof value === 'object' &&\n typeof value.year === 'number' &&\n typeof value.month === 'number' &&\n typeof value.day === 'number'\n );\n }\n\n /**\n * Handles GaDatepickerStruct natively - pass through as-is\n */\n toStruct(value: GaDatepickerStruct | null): GaDatepickerStruct | null {\n if (!value) return null;\n if (this.isStruct(value)) return value;\n return null; // Invalid input\n }\n\n /**\n * Returns struct as-is (no conversion needed)\n */\n fromStruct(struct: GaDatepickerStruct | null): GaDatepickerStruct | null {\n return struct;\n }\n}\n\nexport function provideGaDatepickerValueAdapter<T = any>(\n value: Type<GaDatepickerValueAdapter<T>>,\n): Provider {\n return { provide: GaDatepickerValueAdapter, useClass: value };\n}\n\n/**\n * Compares two structs for equality\n */\nexport function compareStructs(\n structA: GaDatepickerStruct | null,\n structB: GaDatepickerStruct | null,\n): -1 | 0 | 1 {\n if (!structA && !structB) return 0;\n if (!structA) return -1;\n if (!structB) return 1;\n const dateA = new Date(\n Date.UTC(structA.year, structA.month - 1, structA.day),\n );\n const dateB = new Date(\n Date.UTC(structB.year, structB.month - 1, structB.day),\n );\n return dateA.getTime() - dateB.getTime() < 0\n ? -1\n : dateA.getTime() - dateB.getTime() > 0\n ? 1\n : 0;\n}\n","import {\n Component,\n computed,\n inject,\n input,\n model,\n OnInit,\n signal,\n} from '@angular/core';\nimport { GaIconModule } from '../icon/icon.module';\nimport { GaDatepickerI18n } from './datepicker-i18n.service';\n\ninterface GaDatepickerViewStruct {\n year: number;\n month: number;\n}\nimport {\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ChevronUp,\n} from 'lucide-angular';\nimport {\n compareStructs,\n GaDatepickerStruct,\n GaDatepickerValueAdapter,\n} from './adapters/date-struct-adapter';\n\ntype ViewMode = 'day' | 'month' | 'year';\n\n@Component({\n selector: 'ga-datepicker',\n templateUrl: './datepicker.component.html',\n styles: `\n :host {\n display: block;\n }\n `,\n imports: [GaIconModule],\n host: {\n class: 'ga-calendar',\n },\n})\nexport class GaDatepickerComponent implements OnInit {\n protected readonly i18n = inject(GaDatepickerI18n);\n protected readonly valueAdapter = inject(GaDatepickerValueAdapter);\n protected readonly icons = {\n ChevronLeft,\n ChevronRight,\n ChevronUp,\n ChevronDown,\n };\n\n readonly value = model<any | null>(null);\n readonly min = input<any | null>(null);\n readonly max = input<any | null>(null);\n\n // Internal struct representation\n protected readonly internalValue = computed(() => {\n return this.valueAdapter.toStruct(this.value());\n });\n\n protected readonly internalMinDate = computed(() => {\n return this.valueAdapter.toStruct(this.min());\n });\n\n protected readonly internalMaxDate = computed(() => {\n return this.valueAdapter.toStruct(this.max());\n });\n\n protected readonly viewMode = signal<ViewMode>('day');\n protected readonly viewDate = signal<GaDatepickerViewStruct>(\n this.getInitialViewDate(),\n );\n\n ngOnInit() {\n // Initialize view date based on the initial value or today's date\n this.viewDate.set(this.getInitialViewDate());\n }\n\n private getInitialViewDate(): GaDatepickerViewStruct {\n // Try to use the initial value if available\n const initialValue = this.valueAdapter.toStruct(this.value());\n if (initialValue) {\n return {\n year: initialValue.year,\n month: initialValue.month,\n };\n }\n\n // Fallback to today's date, but respect min/max constraints\n const today = new Date();\n const todayStruct: GaDatepickerStruct = {\n year: today.getFullYear(),\n month: today.getMonth() + 1, // Convert from 0-11 to 1-12\n day: today.getDate(),\n };\n\n const minStruct = this.valueAdapter.toStruct(this.min());\n const maxStruct = this.valueAdapter.toStruct(this.max());\n\n let targetDate = todayStruct;\n\n // If today is before min date, use min date\n if (minStruct) {\n const todayValue =\n todayStruct.year * 10000 + todayStruct.month * 100 + todayStruct.day;\n const minValue =\n minStruct.year * 10000 + minStruct.month * 100 + minStruct.day;\n if (todayValue < minValue) {\n targetDate = minStruct;\n }\n }\n\n // If today is after max date, use max date\n if (maxStruct) {\n const todayValue =\n todayStruct.year * 10000 + todayStruct.month * 100 + todayStruct.day;\n const maxValue =\n maxStruct.year * 10000 + maxStruct.month * 100 + maxStruct.day;\n if (todayValue > maxValue) {\n targetDate = maxStruct;\n }\n }\n\n return {\n year: targetDate.year,\n month: targetDate.month,\n };\n }\n\n protected readonly weekDays = computed(() => this.i18n.weekDays);\n\n protected readonly calendarDays = computed(() => {\n const viewStruct = this.viewDate();\n const year = viewStruct.year;\n const month = viewStruct.month;\n\n const firstDay = new Date(year, month - 1, 1); // Convert from 1-12 to 0-11\n const lastDay = new Date(year, month, 0); // month is already 1-12, so this gives us last day of month-1\n const startDate = new Date(firstDay);\n const startDayOfWeek = (firstDay.getDay() + 6) % 7;\n startDate.setDate(startDate.getDate() - startDayOfWeek);\n\n const days: GaDatepickerStruct[] = [];\n const current = new Date(startDate);\n\n while (current <= lastDay || days.length % 7 !== 0) {\n days.push({\n year: current.getFullYear(),\n month: current.getMonth() + 1, // Convert from 0-11 to 1-12\n day: current.getDate(),\n });\n current.setDate(current.getDate() + 1);\n }\n\n return days;\n });\n\n protected readonly months = computed(() => {\n return Array.from({ length: 12 }, (_, i) => ({\n index: i + 1, // Use 1-12 indexing\n name: this.i18n.monthNames[i],\n shortName: this.i18n.monthNamesShort[i],\n }));\n });\n\n protected readonly years = computed(() => {\n const currentYear = this.viewDate().year;\n const startYear = Math.floor(currentYear / 10) * 10;\n return Array.from({ length: 25 }, (_, i) => startYear + i - 1);\n });\n\n protected selectDate(dateStruct: GaDatepickerStruct) {\n if (this.isDateDisabled(dateStruct) || this.isSelected(dateStruct)) {\n return;\n }\n const externalValue = this.valueAdapter.fromStruct(dateStruct);\n this.value.set(externalValue);\n }\n\n protected selectMonth(monthIndex: number) {\n const currentView = this.viewDate();\n const newView: GaDatepickerViewStruct = {\n year: currentView.year,\n month: monthIndex, // monthIndex is already 1-12 from months array\n };\n this.viewDate.set(newView);\n this.viewMode.set('day');\n }\n\n protected selectYear(year: number) {\n const currentView = this.viewDate();\n const newView: GaDatepickerViewStruct = {\n year,\n month: currentView.month,\n };\n this.viewDate.set(newView);\n this.viewMode.set('month');\n }\n\n protected navigatePrevious() {\n const currentView = this.viewDate();\n let newView: GaDatepickerViewStruct;\n\n switch (this.viewMode()) {\n case 'day': {\n const prevMonth = currentView.month === 1 ? 12 : currentView.month - 1; // Handle 1-12 indexing\n const prevYear =\n currentView.month === 1 ? currentView.year - 1 : currentView.year;\n newView = {\n year: prevYear,\n month: prevMonth,\n };\n break;\n }\n case 'month':\n newView = {\n year: currentView.year - 1,\n month: currentView.month,\n };\n break;\n case 'year':\n newView = {\n year: currentView.year - 10,\n month: currentView.month,\n };\n break;\n }\n\n this.viewDate.set(newView);\n }\n\n protected navigateNext() {\n const currentView = this.viewDate();\n let newView: GaDatepickerViewStruct;\n\n switch (this.viewMode()) {\n case 'day': {\n const nextMonth = currentView.month === 12 ? 1 : currentView.month + 1; // Handle 1-12 indexing\n const nextYear =\n currentView.month === 12 ? currentView.year + 1 : currentView.year;\n newView = {\n year: nextYear,\n month: nextMonth,\n };\n break;\n }\n case 'month':\n newView = {\n year: currentView.year + 1,\n month: currentView.month,\n };\n break;\n case 'year':\n newView = {\n year: currentView.year + 10,\n month: currentView.month,\n };\n break;\n }\n\n this.viewDate.set(newView);\n }\n\n protected toggleMonthView() {\n this.viewMode.set(this.viewMode() === 'month' ? 'day' : 'month');\n }\n\n protected toggleYearView() {\n this.viewMode.set(this.viewMode() === 'year' ? 'day' : 'year');\n }\n\n protected isToday(dateStruct: GaDatepickerStruct): boolean {\n const today = new Date();\n const todayStruct: GaDatepickerStruct = {\n year: today.getFullYear(),\n month: today.getMonth() + 1, // Convert from 0-11 to 1-12\n day: today.getDate(),\n };\n return compareStructs(dateStruct, todayStruct) === 0;\n }\n\n protected isSelected(dateStruct: GaDatepickerStruct): boolean {\n const selectedStruct = this.internalValue();\n return compareStructs(dateStruct, selectedStruct) === 0;\n }\n\n protected isCurrentMonth(dateStruct: GaDatepickerStruct): boolean {\n return dateStruct.month === this.viewDate().month;\n }\n\n protected isWeekend(dateStruct: GaDatepickerStruct): boolean {\n // Convert struct to Date to get day of week (convert month from 1-12 to 0-11)\n const date = new Date(\n dateStruct.year,\n dateStruct.month - 1,\n dateStruct.day,\n );\n const day = date.getDay();\n return day === 0 || day === 6;\n }\n\n protected isDateDisabled(dateStruct: GaDatepickerStruct): boolean {\n const minStruct = this.internalMinDate();\n const maxStruct = this.internalMaxDate();\n\n if (minStruct) {\n const dateValue =\n dateStruct.year * 10000 + dateStruct.month * 100 + dateStruct.day;\n const minValue =\n minStruct.year * 10000 + minStruct.month * 100 + minStruct.day;\n if (dateValue < minValue) {\n return true;\n }\n }\n\n if (maxStruct) {\n const dateValue =\n dateStruct.year * 10000 + dateStruct.month * 100 + dateStruct.day;\n const maxValue =\n maxStruct.year * 10000 + maxStruct.month * 100 + maxStruct.day;\n if (dateValue > maxValue) {\n return true;\n }\n }\n\n return false;\n }\n\n protected isMonthDisabled(monthIndex: number): boolean {\n const minStruct = this.internalMinDate();\n const maxStruct = this.internalMaxDate();\n const year = this.viewDate().year;\n\n if (minStruct) {\n if (\n year < minStruct.year ||\n (year === minStruct.year && monthIndex < minStruct.month)\n ) {\n return true;\n }\n }\n\n if (maxStruct) {\n if (\n year > maxStruct.year ||\n (year === maxStruct.year && monthIndex > maxStruct.month)\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n protected isYearDisabled(year: number): boolean {\n const minStruct = this.internalMinDate();\n const maxStruct = this.internalMaxDate();\n\n if (minStruct && year < minStruct.year) {\n return true;\n }\n\n if (maxStruct && year > maxStruct.year) {\n return true;\n }\n\n return false;\n }\n\n protected isSelectedMonth(monthIndex: number): boolean {\n const selectedStruct = this.internalValue();\n if (!selectedStruct) return false;\n\n return (\n selectedStruct.month === monthIndex &&\n selectedStruct.year === this.viewDate().year\n );\n }\n\n protected isSelectedYear(year: number): boolean {\n const selectedStruct = this.internalValue();\n return selectedStruct ? selectedStruct.year === year : false;\n }\n\n protected getMonthName(monthIndex: number): string {\n return this.i18n.monthNames[monthIndex - 1]; // Convert from 1-12 to 0-11 for array access\n }\n}\n","<div class=\"ga-calendar__header\">\n <div class=\"ga-calendar__month-year\">\n <button\n type=\"button\"\n class=\"ga-calendar__month-year-button\"\n (click)=\"toggleMonthView()\"\n [attr.aria-label]=\"i18n.selectMonthLabel\"\n >\n {{ getMonthName(viewDate().month) }}\n <ga-icon\n [icon]=\"viewMode() === 'month' ? icons.ChevronUp : icons.ChevronDown\"\n size=\"16\"\n />\n </button>\n <button\n type=\"button\"\n class=\"ga-calendar__month-year-button\"\n (click)=\"toggleYearView()\"\n [attr.aria-label]=\"i18n.selectYearLabel\"\n >\n {{ viewDate().year }}\n <ga-icon\n [icon]=\"viewMode() === 'year' ? icons.ChevronUp : icons.ChevronDown\"\n size=\"16\"\n />\n </button>\n </div>\n @if (viewMode() !== 'month') {\n <div class=\"ga-calendar__navigation\">\n <button\n type=\"button\"\n class=\"ga-calendar__navigation-button\"\n (click)=\"navigatePrevious()\"\n [attr.aria-label]=\"i18n.previousLabel\"\n >\n <ga-icon [icon]=\"icons.ChevronLeft\" size=\"24\" />\n </button>\n <button\n type=\"button\"\n class=\"ga-calendar__navigation-button\"\n (click)=\"navigateNext()\"\n [attr.aria-label]=\"i18n.nextLabel\"\n >\n <ga-icon [icon]=\"icons.ChevronRight\" size=\"24\" />\n </button>\n </div>\n }\n</div>\n\n@switch (viewMode()) {\n @case ('day') {\n <div class=\"ga-calendar__weekdays\">\n @for (day of weekDays(); track day) {\n <div class=\"ga-calendar__weekday\">{{ day }}</div>\n }\n </div>\n <div class=\"ga-calendar__selection ga-calendar__selection--day\">\n @for (\n dateStruct of calendarDays();\n track dateStruct.year + '-' + dateStruct.month + '-' + dateStruct.day\n ) {\n <button\n type=\"button\"\n class=\"ga-calendar__day\"\n [class.ga-calendar__day--selected]=\"isSelected(dateStruct)\"\n [class.ga-calendar__day--current]=\"isToday(dateStruct)\"\n [class.ga-calendar__day--disabled]=\"isDateDisabled(dateStruct)\"\n [class.ga-calendar__day--weekend]=\"isWeekend(dateStruct)\"\n [disabled]=\"isDateDisabled(dateStruct)\"\n (click)=\"selectDate(dateStruct)\"\n >\n {{ dateStruct.day }}\n </button>\n }\n </div>\n }\n @case ('month') {\n <div class=\"ga-calendar__selection ga-calendar__selection--month\">\n @for (month of months(); track month.index) {\n <button\n type=\"button\"\n class=\"ga-calendar__month\"\n [class.ga-calendar__month--selected]=\"isSelectedMonth(month.index)\"\n [class.ga-calendar__month--disabled]=\"isMonthDisabled(month.index)\"\n [disabled]=\"isMonthDisabled(month.index)\"\n (click)=\"selectMonth(month.index)\"\n >\n {{ month.shortName }}\n </button>\n }\n </div>\n }\n @case ('year') {\n <div class=\"ga-calendar__selection ga-calendar__selection--year\">\n @for (year of years(); track year) {\n <button\n type=\"button\"\n class=\"ga-calendar__year\"\n [class.ga-calendar__year--selected]=\"isSelectedYear(year)\"\n [class.ga-calendar__year--disabled]=\"isYearDisabled(year)\"\n [disabled]=\"isYearDisabled(year)\"\n (click)=\"selectYear(year)\"\n >\n {{ year }}\n </button>\n }\n </div>\n }\n}\n","import { Injectable, signal } from '@angular/core';\nimport type { GaFormControlDirective } from './form-control.directive';\n\n/**\n * @internal - Internal service for form field coordination\n */\n@Injectable()\nexport class GaFormFieldConnector {\n readonly controlDisabled = signal(false);\n readonly controlId = signal<string | null>(null);\n readonly labelId = signal<string | null>(null);\n readonly control = signal<GaFormControlDirective | null>(null);\n}\n","import {\n Attribute,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n} from '@angular/core';\nimport { GaInputComponent } from './input.component';\nimport { injectNgControlState } from '../utils/error-state';\nimport { GaFormFieldConnector } from '../form-field/form-field-connector';\n\nlet nextUniqueId = 0;\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[gaInput]',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id()',\n '[class.ga-input]': '!hasWrapper',\n '[class.ga-input--invalid]': '!hasWrapper && invalid()',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n },\n})\nexport class GaInputDirective {\n readonly uniqueId = `ga-input-${++nextUniqueId}`;\n\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n protected readonly hasWrapper = inject(GaInputComponent, { optional: true });\n private readonly renderer = inject(Renderer2);\n private readonly elementRef =\n inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n private readonly implicitNgControlState = injectNgControlState();\n\n readonly invalidInput = input(null, {\n alias: 'invalid',\n transform: booleanAttribute,\n });\n readonly idInput = input<string>(undefined, { alias: 'id' });\n readonly disabledInput = input(undefined, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n\n readonly invalid = computed(() => {\n return this.invalidInput() ?? this.implicitNgControlState.inError();\n });\n readonly id = computed(() => {\n return this.idInput() ?? this.uniqueId;\n });\n readonly disabled = computed(() => {\n return this.disabledInput() ?? this.implicitNgControlState.disabled();\n });\n\n constructor(@Attribute('placeholder') placeholder?: string) {\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() => formFieldConnector.controlDisabled.set(this.disabled()));\n effect(() => formFieldConnector.controlId.set(this.id()));\n }\n\n if (!placeholder) {\n // a workaround till https://github.com/visma-software-nordic/gaia-styles/issues/108 is fixed\n this.renderer.setAttribute(\n this.elementRef.nativeElement,\n 'placeholder',\n '',\n );\n }\n }\n\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n} from '@angular/core';\nimport { GaInputDirective } from './input.directive';\nimport { CdkOverlayOrigin } from '@angular/cdk/overlay';\n\n@Component({\n selector: 'ga-input',\n template: `<ng-content />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [CdkOverlayOrigin],\n host: {\n class: 'ga-input',\n '[class.ga-input--invalid]': 'gaInput().invalid()',\n '(click)': 'gaInput().focus()',\n },\n})\nexport class GaInputComponent {\n protected readonly gaInput = contentChild.required(GaInputDirective);\n}\n","import {\n Component,\n inject,\n Injector,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { GaIconModule } from '../icon/icon.module';\nimport { GaButtonModule } from '../button/button.module';\nimport {\n CdkOverlayOrigin,\n ConnectedPosition,\n createRepositionScrollStrategy,\n OverlayModule,\n} from '@angular/cdk/overlay';\nimport { GaDatepickerComponent } from './datepicker.component';\nimport { CalendarDays } from 'lucide-angular';\nimport { GaInputComponent } from '../input/input.component';\nimport { GaDatepickerInputDirective } from './datepicker-input.directive';\nimport { GaDatepickerI18n } from './datepicker-i18n.service';\nimport { GaDatepickerValueAdapter } from './adapters/date-struct-adapter';\n\n@Component({\n selector: 'ga-datepicker-toggle',\n templateUrl: './datepicker-toggle.component.html',\n imports: [GaIconModule, GaButtonModule, OverlayModule, GaDatepickerComponent],\n styles: `\n .ga-datepicker__footer {\n text-align: center;\n }\n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n '(keydown.escape)': 'close()',\n },\n})\nexport class GaDatepickerToggleComponent {\n protected readonly icons = { CalendarDays };\n\n protected readonly i18n = inject(GaDatepickerI18n);\n protected readonly gaInput = inject(GaInputComponent);\n protected readonly valueAdapter = inject(GaDatepickerValueAdapter);\n private readonly injector = inject(Injector);\n protected readonly overlayOrigin = inject(CdkOverlayOrigin);\n protected readonly repositionScrollStrategy = createRepositionScrollStrategy(\n this.injector,\n );\n\n protected readonly positions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8,\n },\n ];\n\n private readonly _isOpen = signal(false);\n readonly isOpen = this._isOpen.asReadonly();\n\n readonly for = input.required<GaDatepickerInputDirective>();\n\n toggle() {\n if (this._isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open() {\n if (this.for().disabled() || this._isOpen()) {\n return;\n }\n this._isOpen.set(true);\n }\n\n close() {\n if (!this._isOpen()) {\n return;\n }\n this._isOpen.set(false);\n }\n\n protected onDatepickerValueChange(value: any | null) {\n this.for().updateValue(value, { updateView: true, emitToNgModel: true });\n if (value) {\n this.close();\n }\n }\n\n protected setToday() {\n const today = new Date();\n const todayStruct = {\n year: today.getFullYear(),\n month: today.getMonth() + 1,\n day: today.getDate(),\n };\n const todayValue = this.valueAdapter.fromStruct(todayStruct);\n this.for().updateValue(todayValue, {\n updateView: true,\n emitToNgModel: true,\n });\n this.close();\n }\n}\n","<button\n type=\"button\"\n class=\"ga-datepicker-toggle\"\n [disabled]=\"for().disabled()\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"true\"\n [attr.aria-label]=\"i18n.openCalendarLabel\"\n tabindex=\"-1\"\n>\n <ga-icon [icon]=\"icons.CalendarDays\" size=\"24\" />\n</button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"repositionScrollStrategy\"\n (overlayOutsideClick)=\"close()\"\n (overlayKeydown)=\"$event.code === 'Escape' && close()\"\n>\n <div class=\"ga-datepicker\">\n <ga-datepicker\n [value]=\"for().value()\"\n (valueChange)=\"onDatepickerValueChange($event)\"\n [min]=\"for().min()\"\n [max]=\"for().max()\"\n />\n <div class=\"ga-datepicker__footer\">\n <button type=\"button\" gaButton (click)=\"setToday()\">\n {{ i18n.todayButtonLabel }}\n </button>\n </div>\n </div>\n</ng-template>\n","import {\n LOCALE_ID,\n Injectable,\n inject,\n InjectionToken,\n Provider,\n Type,\n} from '@angular/core';\nimport { GaDatepickerStruct } from './adapters/date-struct-adapter';\nimport { isClass } from '../utils/class-checker';\n\nexport function GA_DATEPICKER_PARSER_FORMATTER_FACTORY() {\n return new GaDatepickerParserFormatterDefault();\n}\n\n/**\n * Converts between the internal `GaDatepickerStruct` model presentation and a `string` that is displayed in the input element.\n */\n@Injectable({\n providedIn: 'root',\n useFactory: GA_DATEPICKER_PARSER_FORMATTER_FACTORY,\n})\nexport abstract class GaDatepickerParserFormatter {\n /**\n * When user types something in the input this method attempts to parse it into a `GaDatepickerStruct` object.\n * `null` must be returned if the value can't be parsed.\n */\n abstract parse(value: string): GaDatepickerStruct | null;\n\n /**\n * When users enters a valid date (either via keyboard or mouse click) this method reformats it into a preferred format.\n * An empty string must be returned if the given date is `null`.\n */\n abstract format(date: GaDatepickerStruct | null): string;\n}\n\nexport type GaDatepickerFormats = Record<\n string,\n { input: string[]; output: string }\n>;\n\nexport const GA_DEFAULT_DATEPICKER_FORMATS: GaDatepickerFormats = {\n 'en-US': {\n input: [\n 'yyyy-MM-dd',\n 'M d yy',\n 'M d yyyy',\n 'M/d/yy',\n 'M/d/yyyy',\n 'M.d.yy',\n 'M.d.yyyy',\n 'M-d-yy',\n 'M-d-yyyy',\n ],\n output: 'MM/dd/yyyy',\n },\n 'en-GB': {\n input: [\n 'yyyy-MM-dd',\n 'd M yy',\n 'd M yyyy',\n 'd/M/yy',\n 'd/M/yyyy',\n 'd.M.yy',\n 'd.M.yyyy',\n 'd-M-yy',\n 'd-M-yyyy',\n ],\n output: 'dd/MM/yyyy',\n },\n 'da-dK': {\n input: [\n 'yyyy-MM-dd',\n 'd M yyyy',\n 'd M yy',\n 'd.M.yy',\n 'd.M.yyyy',\n 'd/M/yy',\n 'd/M/yyyy',\n 'd-M-yy',\n 'd-M-yyyy',\n ],\n output: 'dd.MM.yyyy',\n },\n 'fi-FI': {\n input: [\n 'yyyy-MM-dd',\n 'd M yy',\n 'd M yyyy',\n 'd.M.yy',\n 'd.M.yyyy',\n 'd/M/yy',\n 'd/M/yyyy',\n 'd-M-yy',\n 'd-M-yyyy',\n ],\n output: 'dd.MM.yyyy',\n },\n 'nb-NO': {\n input: [\n 'yyyy-MM-dd',\n 'd M yy',\n 'd M yyyy',\n 'd.M.yy',\n 'd.M.yyyy',\n 'd/M/yy',\n 'd/M/yyyy',\n 'd-M-yy',\n 'd-M-yyyy',\n ],\n output: 'dd.MM.yyyy',\n },\n 'nn-NO': {\n input: [\n 'yyyy-MM-dd',\n 'd M yy',\n 'd M yyyy',\n 'd.M.yy',\n 'd.M.yyyy',\n 'd/M/yy',\n 'd/M/yyyy',\n 'd-M-yy',\n 'd-M-yyyy',\n ],\n output: 'dd.MM.yyyy',\n },\n 'sv-SE': {\n input: [\n 'yyyy-MM-dd',\n 'yy M d',\n 'yyyy M d',\n 'yy-M-d',\n 'yyyy-M-d',\n 'yy/M/d',\n 'yyyy/M/d',\n 'yy.M.d',\n 'yyyy.M.d',\n 'yyMMdd',\n 'yyyyMMdd',\n ],\n output: 'yyyy-MM-dd',\n },\n};\n\nexport const GA_DATE_PARSER_FORMATTER_CONFIG = new InjectionToken(\n 'GA_DATE_PARSER_FORMATTER_CONFIG',\n { providedIn: 'root', factory: () => GA_DEFAULT_DATEPICKER_FORMATS },\n);\n\nexport function extendGaDateParserFormatter(\n formats: GaDatepickerFormats,\n): Provider {\n return {\n provide: GA_DATE_PARSER_FORMATTER_CONFIG,\n useValue: { ...GA_DEFAULT_DATEPICKER_FORMATS, ...formats },\n };\n}\n\n@Injectable()\nexport class GaDatepickerParserFormatterDefault extends GaDatepickerParserFormatter {\n /** @ignore */\n private readonly locale = inject(LOCALE_ID);\n /** @ignore */\n private readonly formats = inject(GA_DATE_PARSER_FORMATTER_CONFIG);\n\n parse(value: string): GaDatepickerStruct | null {\n if (!value || typeof value !== 'string') {\n return null;\n }\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return null;\n }\n\n let config = this.formats[this.locale];\n\n if (!config) {\n this.printUnknownLocaleWarning();\n config = GA_DEFAULT_DATEPICKER_FORMATS['en-GB'];\n }\n\n for (const format of config.input) {\n const regexp = this.dateFormatToRegexp(format);\n\n const match = trimmedValue.match(regexp);\n if (match) {\n const yearIndex = format.indexOf('y');\n const monthIndex = format.indexOf('M');\n const dayIndex = format.indexOf('d');\n const sortedIndexes = [yearIndex, monthIndex, dayIndex].sort();\n const yearGroup = sortedIndexes.indexOf(yearIndex) + 1;\n const monthGroup = sortedIndexes.indexOf(monthIndex) + 1;\n const dayGroup = sortedIndexes.indexOf(dayIndex) + 1;\n const year = this.addYearPadding(+match[yearGroup]);\n const month = +match[monthGroup];\n const day = +match[dayGroup];\n\n if (month <= 0 || month > 12) {\n // invalid month\n return null;\n }\n\n const daysInMonth = new Date(year, month, 0).getDate();\n if (day <= 0 || day > daysInMonth) {\n // invalid day\n return null;\n }\n\n return { year, month, day };\n }\n }\n return null;\n }\n\n format(date: GaDatepickerStruct): string {\n if (!date) {\n return '';\n }\n let format = this.formats[this.locale];\n if (!format) {\n this.printUnknownLocaleWarning();\n format = GA_DEFAULT_DATEPICKER_FORMATS['en-GB'];\n }\n return this.formatDate(date, format.output);\n }\n\n private formatDate(date: GaDatepickerStruct, format: string): string {\n const year = date.year.toString();\n const month = date.month.toString().padStart(2, '0');\n const day = date.day.toString().padStart(2, '0');\n\n return format\n .replace(/yyyy/g, year)\n .replace(/MM/g, month)\n .replace(/dd/g, day);\n }\n\n private dateFormatToRegexp(format: string) {\n const pattern =\n '^' +\n format\n // / to \\/\n .replace(/\\//g, '\\\\/')\n // . to \\.\n .replace(/\\./g, '\\\\.')\n .replace(/(d+)/, '(\\\\d{1,2})')\n .replace(/(yyyy)/, '(\\\\d{4})')\n .replace(/(yy)/, '(\\\\d{2})')\n .replace(/(M+)/, '(\\\\d{1,2})') +\n '$';\n return new RegExp(pattern);\n }\n\n private addYearPadding(year: number) {\n if (year < 100) {\n return 2000 + year;\n }\n return year;\n }\n\n private printUnknownLocaleWarning() {\n console.warn(\n `Default datepicker parser-formatter does not have predefined formats for \"${this.locale}\" locale. Please provide custom 'GaDatepickerParserFormatter' class. Now defaults to \"en-GB\".`,\n );\n }\n}\n\nexport function provideGaDatepickerParserFormatter(\n value:\n | Type<GaDatepickerParserFormatter>\n | (() => GaDatepickerParserFormatter),\n): Provider {\n if (isClass(value)) {\n return { provide: GaDatepickerParserFormatter, useClass: value };\n }\n return typeof value === 'function'\n ? { provide: GaDatepickerParserFormatter, useFactory: value }\n : { provide: GaDatepickerParserFormatter, useValue: value };\n}\n","import {\n Directive,\n ElementRef,\n inject,\n input,\n output,\n computed,\n linkedSignal,\n booleanAttribute,\n forwardRef,\n effect,\n untracked,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { GaDatepickerParserFormatter } from './datepicker-parser-formatter.service';\nimport {\n compareStructs,\n GaDatepickerStruct,\n GaDatepickerValueAdapter,\n} from './adapters/date-struct-adapter';\n\n@Directive({\n selector: 'input[gaDatepickerInput]',\n exportAs: 'gaDatepickerInput',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaDatepickerInputDirective),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => GaDatepickerInputDirective),\n multi: true,\n },\n ],\n host: {\n '[disabled]': 'disabled()',\n '(blur)': 'onBlur()',\n '(input)': 'onInput($event)',\n },\n})\nexport class GaDatepickerInputDirective\n implements ControlValueAccessor, Validator\n{\n private readonly inputElRef = inject<ElementRef<HTMLInputElement>>(\n ElementRef,\n { self: true },\n );\n\n private readonly parserFormatter = inject(GaDatepickerParserFormatter);\n private readonly valueAdapter = inject(GaDatepickerValueAdapter);\n\n // Native value control (alternative to Angular forms)\n readonly valueInput = input<any>(null, { alias: 'value' });\n readonly disabledInput = input(null, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly min = input<any | null>(null);\n readonly max = input<any | null>(null);\n readonly dateInput = output<any>();\n readonly dateChange = output<any>();\n\n readonly value = linkedSignal<any>(() => this.valueInput());\n readonly dateStruct = computed(() =>\n this.valueAdapter.toStruct(this.value()),\n );\n readonly disabled = linkedSignal<boolean>(() => !!this.disabledInput());\n\n private readonly lastValueValid = signal(false);\n private readonly lastDateChangeEmittedValue =\n signal<GaDatepickerStruct | null>(null);\n\n private onNgChangeFn?: (value: GaDatepickerStruct | null) => void;\n private onNgTouchedFn?: () => void;\n\n constructor() {\n effect(() => {\n this.valueInput(); // explicit call to track value input changes\n this.lastValueValid.set(true);\n untracked(() => {\n this.lastDateChangeEmittedValue.set(this.dateStruct());\n this.formatValue();\n });\n });\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n\n // Parse the input value\n const parsedStruct = this.parserFormatter.parse(target.value);\n const newValue = this.valueAdapter.fromStruct(parsedStruct);\n\n this.lastValueValid.set(!target.value || parsedStruct !== null);\n\n // Only update if the parsed value is different from current value\n if (compareStructs(parsedStruct, this.dateStruct()) !== 0) {\n this.value.set(newValue);\n this.dateInput.emit(newValue);\n }\n this.onNgChangeFn?.(newValue);\n }\n\n onBlur(): void {\n if (this.dateStruct()) {\n this.formatValue();\n }\n\n if (\n compareStructs(this.dateStruct(), this.lastDateChangeEmittedValue()) !== 0\n ) {\n this.dateChange.emit(this.value());\n this.lastDateChangeEmittedValue.set(this.dateStruct());\n }\n\n this.onNgTouchedFn?.();\n }\n\n formatValue(): void {\n const value = this.dateStruct();\n const formattedValue = this.parserFormatter.format(value);\n this.inputElRef.nativeElement.value = formattedValue;\n }\n\n updateValue(\n value: any | null,\n {\n updateView,\n emitToNgModel,\n }: { updateView?: boolean; emitToNgModel?: boolean } = {},\n ): void {\n this.value.set(value);\n this.lastValueValid.set(true);\n this.lastDateChangeEmittedValue.set(this.dateStruct());\n if (updateView) {\n this.formatValue();\n }\n if (emitToNgModel) {\n this.onNgChangeFn?.(value);\n // NOTE: ngTouched must be called after ngChange to work with `updateOn: 'blur'` strategy\n this.onNgTouchedFn?.();\n this.dateInput.emit(value);\n this.dateChange.emit(value);\n }\n }\n\n // ControlValueAccessor implementation\n writeValue(value: any | null): void {\n this.updateValue(value, { updateView: true });\n }\n\n registerOnChange(fn: (value: GaDatepickerStruct | null) => void): void {\n this.onNgChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onNgTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n const { value } = control;\n\n if (!this.lastValueValid()) {\n return { dateFormat: { actual: this.inputElRef.nativeElement.value } };\n }\n\n if (value === null) {\n return null;\n }\n\n const valueStruct = this.valueAdapter.toStruct(value);\n\n if (this.min()) {\n const minDateStruct = this.valueAdapter.toStruct(this.min());\n if (minDateStruct && compareStructs(valueStruct, minDateStruct) === -1) {\n return { minDate: { actual: value, min: this.min() } };\n }\n }\n\n if (this.max()) {\n const maxDateStruct = this.valueAdapter.toStruct(this.max());\n if (maxDateStruct && compareStructs(valueStruct, maxDateStruct) === 1) {\n return { maxDate: { actual: value, max: this.max() } };\n }\n }\n return null;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaDatepickerComponent } from './datepicker.component';\nimport { GaDatepickerToggleComponent } from './datepicker-toggle.component';\nimport { GaDatepickerInputDirective } from './datepicker-input.directive';\n\n@NgModule({\n imports: [\n GaDatepickerComponent,\n GaDatepickerToggleComponent,\n GaDatepickerInputDirective,\n ],\n exports: [\n GaDatepickerComponent,\n GaDatepickerToggleComponent,\n GaDatepickerInputDirective,\n ],\n})\nexport class GaDatepickerModule {}\n","import { Injectable } from '@angular/core';\nimport {\n GaDatepickerStruct,\n GaDatepickerValueAdapter,\n} from './date-struct-adapter';\n\n@Injectable()\nexport class GaDatepickerNativeUtcValueAdapter extends GaDatepickerValueAdapter<Date> {\n /**\n * Converts Date to internal struct representation\n * Uses UTC to avoid timezone issues and normalizes to midnight\n */\n toStruct(value: Date | null): GaDatepickerStruct | null {\n if (!value) return null;\n\n // Create UTC date at midnight to avoid timezone issues\n const utcDate = new Date(\n Date.UTC(value.getFullYear(), value.getMonth(), value.getDate()),\n );\n\n return {\n year: utcDate.getUTCFullYear(),\n month: utcDate.getUTCMonth() + 1, // Convert from 0-11 to 1-12\n day: utcDate.getUTCDate(),\n };\n }\n\n /**\n * Converts internal struct to Date representation\n * Creates UTC Date at midnight (00:00:00)\n */\n fromStruct(struct: GaDatepickerStruct | null): Date | null {\n if (!struct) return null;\n\n // Create UTC date at midnight (convert month from 1-12 to 0-11)\n return new Date(\n Date.UTC(struct.year, struct.month - 1, struct.day, 0, 0, 0, 0),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n GaDatepickerStruct,\n GaDatepickerValueAdapter,\n} from './date-struct-adapter';\n\n@Injectable()\nexport class GaDatepickerNativeUtcIsoValueAdapter extends GaDatepickerValueAdapter<string> {\n /**\n * Converts ISO Date to internal struct representation\n * Uses UTC to avoid timezone issues and normalizes to midnight\n */\n toStruct(value: string | null): GaDatepickerStruct | null {\n if (!value) return null;\n\n const date = new Date(value);\n\n if (isNaN(date.getTime())) {\n return null;\n }\n\n return {\n year: date.getUTCFullYear(),\n month: date.getUTCMonth() + 1,\n day: date.getUTCDate(),\n };\n }\n\n /**\n * Converts internal struct to ISO Date representation\n * Creates UTC Date at midnight (00:00:00)\n */\n fromStruct(struct: GaDatepickerStruct | null): string | null {\n if (!struct) return null;\n\n return new Date(\n Date.UTC(struct.year, struct.month - 1, struct.day, 0, 0, 0, 0),\n ).toISOString();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n output,\n} from '@angular/core';\n\n@Component({\n selector: 'ga-segmented-control',\n template: `<ng-content />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'group',\n class: 'ga-segmented-control',\n },\n})\nexport class GaSegmentedControlComponent {\n readonly selected = model<any>();\n\n readonly compareFn = input<(o1: any, o2: any) => boolean>((a, b) => a === b);\n readonly change = output<any>();\n\n readonly safeCompareFn = computed(() => {\n const compareFn = this.compareFn();\n return (o1: any, o2: any) => {\n if (o1 === null || o1 === undefined || o2 === null || o2 === undefined) {\n return o1 === o2;\n }\n return compareFn(o1, o2);\n };\n });\n}\n","import {\n computed,\n Directive,\n HostListener,\n inject,\n input,\n} from '@angular/core';\n\nimport { GaSegmentedControlComponent } from './segmented-control.component';\n\n@Directive({\n selector: '[gaSegmentedControlButton]',\n host: {\n type: 'button',\n class: 'ga-segmented-control__button',\n '[class.ga-segmented-control__button--selected]': 'selected()',\n '[attr.aria-pressed]': 'selected()',\n },\n})\nexport class GaSegmentedControlButtonDirective {\n /** @ignore */\n private readonly group = inject(GaSegmentedControlComponent, {\n skipSelf: true,\n });\n\n readonly value = input<any>();\n\n readonly selected = computed(() => {\n const value = this.value();\n const selectedValue = this.group.selected();\n if (value === undefined || selectedValue === undefined) {\n return false;\n }\n return this.group.safeCompareFn()(selectedValue, value);\n });\n\n @HostListener('click')\n onClick(): void {\n this.group.selected.set(this.value());\n this.group.change.emit(this.value());\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { GaIconData, GaIconModule } from '../icon';\nimport { GaSegmentedControlButtonDirective } from './segmented-control-button.directive';\n\n@Component({\n selector: 'ga-segmented-control-icon-button',\n imports: [GaIconModule, GaSegmentedControlButtonDirective],\n template: `<button\n class=\"ga-segmented-control__button--icon-only\"\n gaSegmentedControlButton\n [value]=\"value()\"\n >\n <ga-icon [icon]=\"icon()\" size=\"16\" />\n <span class=\"ga-segmented-control__button-sr-label\"><ng-content /></span>\n </button>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GaSegmentedControlIconButtonComponent {\n readonly value = input.required<any>();\n readonly icon = input.required<GaIconData>();\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { GaSegmentedControlButtonDirective } from './segmented-control-button.directive';\n\n@Component({\n selector: 'ga-segmented-control-text-button',\n imports: [GaSegmentedControlButtonDirective],\n template: `<button gaSegmentedControlButton [value]=\"value()\">\n <ng-content />\n </button>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GaSegmentedControlTextButtonComponent {\n readonly value = input.required<any>();\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaSegmentedControlComponent } from './segmented-control.component';\nimport { GaSegmentedControlIconButtonComponent } from './segmented-control-icon-button.component';\nimport { GaSegmentedControlTextButtonComponent } from './segmented-control-text-button.component';\n\n@NgModule({\n imports: [\n GaSegmentedControlComponent,\n GaSegmentedControlIconButtonComponent,\n GaSegmentedControlTextButtonComponent,\n ],\n exports: [\n GaSegmentedControlComponent,\n GaSegmentedControlIconButtonComponent,\n GaSegmentedControlTextButtonComponent,\n ],\n})\nexport class GaSegmentedControlModule {}\n","import { NgModule } from '@angular/core';\n\nimport { GaInputComponent } from './input.component';\nimport { GaInputDirective } from './input.directive';\n\n@NgModule({\n imports: [GaInputComponent, GaInputDirective],\n exports: [GaInputComponent, GaInputDirective],\n})\nexport class GaInputModule {}\n","import {\n InjectionToken,\n EnvironmentProviders,\n makeEnvironmentProviders,\n} from '@angular/core';\n\nexport type GaFormErrorMessage = string | ((error: any) => string);\nexport type GaFormErrorsMap = Record<string, GaFormErrorMessage>;\nexport type GaFormErrorsConfig = GaFormErrorsMap | (() => GaFormErrorsMap);\n\nexport const GA_FORM_ERRORS = new InjectionToken<GaFormErrorsMap>(\n 'GA_FORM_ERRORS',\n { providedIn: 'root', factory: () => ({}) },\n);\n\n/**\n * Provides global form error messages that can be used across the application.\n * These errors will be displayed when a form control has validation errors\n * but no specific gaError directive template is provided.\n *\n * @param config - Either a static record of error messages or a factory function\n * @returns EnvironmentProviders for configuring global form errors\n *\n * @example\n * ```ts\n * // Static configuration\n * provideGaFormErrors({\n * required: 'This field is required',\n * email: 'Please enter a valid email address',\n * minlength: 'Input is too short'\n * })\n *\n * // Dynamic configuration with functions that access error data\n * provideGaFormErrors({\n * required: 'This field is required',\n * minlength: (error) => `Minimum ${error.requiredLength} characters required`,\n * pattern: (error) => `Input format is invalid. Expected pattern: ${error.requiredPattern}`\n * })\n *\n * // Factory function for lazy evaluation\n * provideGaFormErrors(() => ({\n * required: translateService.get('errors.required'),\n * email: translateService.get('errors.email')\n * }))\n * ```\n */\nexport function provideGaFormErrors(\n config: GaFormErrorsConfig,\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n typeof config === 'function'\n ? { provide: GA_FORM_ERRORS, useFactory: config }\n : { provide: GA_FORM_ERRORS, useValue: config },\n ]);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n TemplateRef,\n} from '@angular/core';\nimport { GaFormFieldComponent } from './form-field.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { GaIconModule } from '../icon/icon.module';\nimport { OctagonAlert } from 'lucide-angular';\nimport { GA_FORM_ERRORS } from './form-errors.provider';\n\n@Component({\n selector: 'ga-field-callout',\n templateUrl: './field-callout.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, GaIconModule],\n host: {\n class: 'ga-form-field__info',\n '[attr.id]': 'id',\n '[style.display]': 'hasCallout() ? null : \"none\"',\n },\n})\nexport class GaFieldCalloutComponent {\n protected readonly icons = { OctagonAlert };\n protected readonly formField = inject(GaFormFieldComponent);\n private readonly globalErrors = inject(GA_FORM_ERRORS);\n\n protected readonly id = this.formField.uniqueId + '-callout';\n\n protected readonly shouldShowError = computed(() => {\n const formControl = this.formField.formControl();\n if (!formControl) {\n return false;\n }\n return formControl.inError() && this.overlappingErrors().length > 0;\n });\n\n protected readonly overlappingErrors = computed(() => {\n const formControl = this.formField.formControl();\n if (!formControl) {\n return [];\n }\n const registeredErrors = this.formField\n .fieldErrors()\n .filter((err) => err.key());\n const controlErrorKeys = Object.keys(formControl.errors());\n const errors: {\n key: string;\n error: any;\n templateRef?: TemplateRef<any>;\n message?: string;\n }[] = [];\n\n // First, add errors that have matching gaError directives\n const registeredErrorKeys = new Set(\n registeredErrors.map((err) => err.key()),\n );\n registeredErrors\n .filter((err) => controlErrorKeys.includes(err.key()!))\n .forEach((err) => {\n const errorKey = err.key()!;\n errors.push({\n key: errorKey,\n templateRef: err.templateRef,\n error: formControl.errors()[errorKey],\n });\n });\n\n // Then, add global errors for keys that don't have gaError directives\n controlErrorKeys\n .filter((key) => !registeredErrorKeys.has(key))\n .forEach((key) => {\n const errorMessage = this.globalErrors[key];\n if (errorMessage) {\n const message =\n typeof errorMessage === 'function'\n ? errorMessage(formControl.errors()[key])\n : errorMessage;\n errors.push({\n key,\n error: formControl.errors()[key],\n message,\n });\n }\n });\n\n return errors;\n });\n\n protected readonly hasCallout = computed(\n () => !!this.formField.fieldInfo() || this.shouldShowError(),\n );\n}\n","@if (shouldShowError()) {\n <ga-icon\n [icon]=\"icons.OctagonAlert\"\n class=\"ga-icon\"\n style=\"color: var(--ga-color-icon-error)\"\n size=\"16\"\n />\n <div>\n @for (error of overlappingErrors(); track error.key; let last = $last) {\n <span>\n @if (error.templateRef) {\n <ng-container\n [ngTemplateOutlet]=\"error.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: error.error }\"\n />\n } @else {\n {{ error.message }}\n }\n @if (!last) {\n \n }\n </span>\n }\n </div>\n} @else if (formField.fieldInfo()) {\n <ng-container [ngTemplateOutlet]=\"formField.fieldInfo()!.templateRef()\" />\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n viewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'ga-info',\n template: `<ng-template><ng-content /></ng-template>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.display]': '\"none\"',\n },\n})\nexport class GaFieldInfoComponent {\n readonly templateRef = viewChild.required(TemplateRef);\n}\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[gaError]',\n})\nexport class GaFieldErrorDirective {\n readonly templateRef = inject(TemplateRef, { self: true });\n readonly key = input.required<string>({ alias: 'gaError' });\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const GA_FORM_FIELD_ID = new InjectionToken<string>('ga-form-field-id');\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n contentChildren,\n input,\n inject,\n computed,\n} from '@angular/core';\nimport { GaFieldCalloutComponent } from './field-callout.component';\nimport { GaFieldInfoComponent } from './field-info.component';\nimport { GaFieldErrorDirective } from './field-error.directive';\nimport { GA_FORM_FIELD_ID } from './form-field.di';\nimport { GaFormFieldConnector } from './form-field-connector';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-form-field',\n exportAs: 'gaFormField',\n templateUrl: './form-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [GaFieldCalloutComponent],\n host: {\n class: 'ga-form-field',\n },\n providers: [\n {\n provide: GA_FORM_FIELD_ID,\n useFactory: () => `ga-form-field-${++nextUniqueId}`,\n },\n GaFormFieldConnector,\n ],\n})\nexport class GaFormFieldComponent {\n readonly uniqueId = inject(GA_FORM_FIELD_ID);\n readonly formFieldConnector = inject(GaFormFieldConnector);\n\n readonly disabledInput = input(undefined, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly disabled = computed(() => {\n return this.disabledInput() ?? this.formFieldConnector.controlDisabled();\n });\n\n readonly formControl = this.formFieldConnector.control.asReadonly();\n\n readonly fieldInfo = contentChild(GaFieldInfoComponent);\n readonly fieldErrors = contentChildren(GaFieldErrorDirective);\n}\n","<ng-content select=\"ga-label\" />\n<ng-content />\n<ga-field-callout />\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostListener,\n input,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { NgTemplateOutlet } from '@angular/common';\n\nexport type GaTooltipPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type GaTooltipDirection = 'start' | 'end' | 'center';\nexport type GaTooltipPlacement = `${GaTooltipPosition}-${GaTooltipDirection}`;\nexport type GaTooltipControlMode = 'hover' | 'click' | 'none';\n\nlet nextUniqueId = 0;\n\n/**\n * Internal tooltip component used by the gaTooltip directive.\n * This component is not intended for direct use in templates.\n * Use the [gaTooltip] directive instead.\n * @internal\n */\n@Component({\n selector: 'ga-tooltip',\n imports: [NgTemplateOutlet],\n templateUrl: './tooltip.component.html',\n styleUrl: './tooltip.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.style]': 'inlineStyle()',\n },\n})\nexport class GaTooltipComponent {\n readonly uniqueId = `ga-tooltip-${++nextUniqueId}`;\n\n private mouseLeaveSubject = new Subject<void>();\n readonly afterMouseLeave = () => this.mouseLeaveSubject.asObservable();\n\n readonly mouseOver = signal(false);\n\n readonly content = input.required<string | TemplateRef<any>>();\n\n readonly template = computed(() => {\n const content = this.content();\n return content instanceof TemplateRef ? content : null;\n });\n\n readonly text = computed(() => {\n const content = this.content();\n return typeof content === 'string' ? content : null;\n });\n\n readonly position = input<GaTooltipPlacement>();\n readonly offset = input<number>(0);\n\n readonly hideTriggered = output();\n readonly triggerHide = () => this.hideTriggered.emit();\n\n readonly inlineStyle = computed(() => {\n if (!this.position() || !this.offset()) {\n return '';\n }\n\n return `--ga-tooltip-offset: ${this.offset()}px;`;\n });\n\n readonly cssClass = computed(() => {\n return ['ga-tooltip', `ga-tooltip--${this.position()}`].join(' ');\n });\n\n @HostListener('mouseenter')\n handleMouseEnter(): void {\n this.mouseOver.set(true);\n }\n\n @HostListener('mouseleave')\n handleMouseLeave(): void {\n this.mouseOver.set(false);\n this.mouseLeaveSubject.next();\n }\n}\n","<div role=\"tooltip\" [attr.id]=\"uniqueId\" [class]=\"cssClass()\">\n @if (text()) {\n {{ text() }}\n } @else if (template()) {\n <ng-container\n [ngTemplateOutlet]=\"template()\"\n [ngTemplateOutletContext]=\"{ hide: triggerHide }\"\n />\n }\n</div>\n","import {\n Overlay,\n OverlayRef,\n FlexibleConnectedPositionStrategy,\n ConnectedPosition,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n booleanAttribute,\n ComponentRef,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n input,\n Input,\n NgZone,\n numberAttribute,\n OnDestroy,\n OutputRefSubscription,\n TemplateRef,\n} from '@angular/core';\nimport { Subject, Observable, takeUntil, map } from 'rxjs';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n GaTooltipComponent,\n GaTooltipControlMode,\n GaTooltipDirection,\n GaTooltipPlacement,\n GaTooltipPosition,\n} from './tooltip.component';\n\nexport const GA_TOOLTIP_DEFAULT_OFFSET = 5;\n\n@Directive({\n selector: '[gaTooltip]',\n exportAs: 'gaTooltip',\n})\nexport class GaTooltipDirective implements OnDestroy {\n private readonly elementRef = inject(ElementRef);\n private readonly overlay = inject(Overlay);\n private readonly ngZone = inject(NgZone);\n\n protected destroyed$ = new Subject<void>();\n private _content: string | TemplateRef<any> | null = null;\n private tooltipInstanceDestroyed$: Subject<void> | null = null;\n private outputSubscription: OutputRefSubscription | null = null;\n private overlayRef?: OverlayRef;\n private tooltipPortal?: ComponentPortal<GaTooltipComponent>;\n private tooltipRef?: ComponentRef<GaTooltipComponent>;\n private get tooltipInstance() {\n return this.tooltipRef ? this.tooltipRef.instance : null;\n }\n private currentPosition$?: Observable<GaTooltipPlacement>;\n private _placement: GaTooltipPlacement = 'right-center';\n private _offset: number = GA_TOOLTIP_DEFAULT_OFFSET;\n private mouseOver = false;\n private _showControlMode: GaTooltipControlMode | null = null;\n private _hideControlMode: GaTooltipControlMode | null = null;\n private showTimeoutId: ReturnType<typeof setTimeout> | null = null;\n\n @Input('gaTooltip')\n set content(value: string | TemplateRef<any> | null) {\n if (value === this._content) {\n return;\n }\n\n this._content = value;\n\n // Hide tooltip with empty content\n if (!this._content && this.overlayRef?.hasAttached()) {\n this.hide();\n return;\n }\n\n // Update the content in case tooltip is already opened\n if (this.tooltipRef && this.overlayRef?.hasAttached()) {\n this.tooltipRef.setInput('content', this._content);\n }\n }\n get content() {\n return this._content;\n }\n\n @Input({ alias: 'gaTooltipDisabled', transform: booleanAttribute })\n disabled = false;\n\n @Input({ alias: 'gaTooltipControlMode' })\n controlMode: GaTooltipControlMode = 'hover';\n\n /**\n * @default `gaTooltipControlMode`\n */\n @Input({ alias: 'gaTooltipShowControlMode' })\n set showControlMode(value: GaTooltipControlMode) {\n this._showControlMode = value;\n }\n get showControlMode(): GaTooltipControlMode {\n return this._showControlMode ?? this.controlMode;\n }\n\n /**\n * @default `gaTooltipControlMode`\n */\n @Input({ alias: 'gaTooltipHideControlMode' })\n set hideControlMode(value: GaTooltipControlMode) {\n this._hideControlMode = value;\n }\n get hideControlMode(): GaTooltipControlMode {\n return this._hideControlMode ?? this.controlMode;\n }\n\n @Input({ alias: 'gaTooltipOffsetSize', transform: numberAttribute })\n set offset(value) {\n if (this._offset === value) {\n return;\n }\n\n this._offset = !isNaN(value) ? value : GA_TOOLTIP_DEFAULT_OFFSET;\n this.updateTooltipPlacement();\n }\n get offset() {\n return this._offset;\n }\n\n readonly showDelay = input(0, {\n alias: 'gaTooltipShowDelay',\n transform: numberAttribute,\n });\n\n @Input({ alias: 'gaTooltipPlacement' })\n set placement(value: GaTooltipPlacement) {\n if (this._placement === value) {\n return;\n }\n\n this._placement = value;\n\n this.updateTooltipPlacement();\n }\n get placement() {\n return this._placement;\n }\n\n @HostBinding('attr.aria-describedby')\n get ariaDescribedBy(): string | null {\n return this.tooltipInstance?.uniqueId ?? null;\n }\n\n ngOnDestroy(): void {\n this.clearShowTimeout();\n this.destroyed$.next();\n this.destroyed$.complete();\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n }\n\n show(): void {\n if (this.overlayRef?.hasAttached()) {\n return;\n }\n\n const overlayRef = this.createOverlay();\n this.tooltipPortal =\n this.tooltipPortal ?? new ComponentPortal(GaTooltipComponent);\n\n this.tooltipInstanceDestroyed$ = new Subject();\n\n this.tooltipRef = overlayRef.attach(this.tooltipPortal);\n this.tooltipRef.setInput('content', this.content);\n this.outputSubscription = this.tooltipInstance!.hideTriggered.subscribe(\n () => setTimeout(() => this.hide()),\n );\n\n if (this.hideControlMode === 'hover') {\n // Soft hide tooltip on mouse leave when control mode is set to 'hover'\n this.tooltipInstance!.afterMouseLeave()\n .pipe(takeUntil(this.tooltipInstanceDestroyed$))\n .subscribe(() => setTimeout(() => this.softHide()));\n } else if (this.hideControlMode === 'click') {\n // Hide tooltip on outside click when control mode is set to 'click'\n overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this.tooltipInstanceDestroyed$))\n .subscribe((event) => {\n const element = this.elementRef.nativeElement;\n if (event.target !== element && !element.contains(event.target)) {\n this.hide();\n }\n });\n }\n\n // Tell the instance current position (left, right, top, bottom)\n this.currentPosition$!.pipe(\n takeUntil(this.tooltipInstanceDestroyed$),\n ).subscribe((position) => {\n this.ngZone.run(() => {\n if (!this.tooltipRef) {\n return;\n }\n this.tooltipRef.setInput('position', position);\n this.tooltipRef.setInput('offset', this.offset);\n });\n });\n }\n\n hide(): void {\n if (!this.overlayRef?.hasAttached()) {\n return;\n }\n this.overlayRef.detach();\n this.tooltipInstanceDestroyed$!.next();\n this.tooltipInstanceDestroyed$!.complete();\n this.outputSubscription?.unsubscribe();\n this.tooltipRef = undefined;\n }\n\n toggle(): void {\n if (!this.overlayRef?.hasAttached()) {\n this.show();\n return;\n }\n this.hide();\n }\n\n @HostListener('click')\n handleMouseClick(): void {\n if (this.showControlMode !== 'click' || this.disabled || !this._content) {\n return;\n }\n this.toggle();\n }\n\n @HostListener('mouseenter')\n handleMouseEnter(): void {\n if (this.showControlMode !== 'hover' || this.disabled || !this._content) {\n return;\n }\n this.mouseOver = true;\n this.clearShowTimeout();\n\n if (this.showDelay() > 0) {\n this.showTimeoutId = setTimeout(() => this.show(), this.showDelay());\n } else {\n this.show();\n }\n }\n\n @HostListener('mouseleave')\n handleMouseLeave(): void {\n this.clearShowTimeout();\n if (this.hideControlMode !== 'hover' || this.disabled) {\n return;\n }\n this.mouseOver = false;\n setTimeout(() => this.softHide());\n }\n\n /**\n * hides only if mouse is not over the host element nor the tooltip itself\n */\n private softHide() {\n if (!this.mouseOver && !this.tooltipInstance?.mouseOver()) {\n this.hide();\n }\n }\n\n private clearShowTimeout(): void {\n if (this.showTimeoutId !== null) {\n clearTimeout(this.showTimeoutId);\n this.showTimeoutId = null;\n }\n }\n\n private createOverlay(): OverlayRef {\n if (this.overlayRef) {\n return this.overlayRef;\n }\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef);\n this.currentPosition$ = positionStrategy.positionChanges.pipe(\n map((pos) => pos.connectionPair.panelClass as GaTooltipPlacement),\n );\n\n const scrollStrategy = this.overlay.scrollStrategies.reposition();\n\n this.overlayRef = this.overlay.create({ positionStrategy, scrollStrategy });\n\n if (this.showControlMode !== 'none') {\n this.overlayRef\n .keydownEvents()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((event) => {\n if (\n this.overlayRef?.hasAttached() &&\n event.keyCode === ESCAPE &&\n !hasModifierKey(event)\n ) {\n this.hide();\n }\n });\n }\n\n this.updatePosition();\n\n return this.overlayRef;\n }\n\n private updateTooltipPlacement(): void {\n if (this.overlayRef) {\n this.updatePosition();\n this.overlayRef.updatePosition();\n }\n }\n\n private updatePosition(): void {\n const position = this.overlayRef!.getConfig()\n .positionStrategy as FlexibleConnectedPositionStrategy;\n const positions = this.getPositions(this._placement);\n position.withPositions(positions);\n }\n\n private getPositions(\n preferredPlacement: GaTooltipPlacement,\n ): ConnectedPosition[] {\n const [position, direction] = preferredPlacement.split('-') as [\n GaTooltipPosition,\n GaTooltipDirection,\n ];\n\n let positionedOverlayY: ConnectedPosition['overlayY'];\n let positionedOffsetY: number;\n if (direction === 'start') {\n positionedOverlayY = 'top';\n positionedOffsetY = -24;\n } else if (direction === 'end') {\n positionedOverlayY = 'bottom';\n positionedOffsetY = 24;\n } else {\n positionedOverlayY = 'center';\n positionedOffsetY = 0;\n }\n\n let positionedOffsetX: number;\n if (direction === 'start') {\n positionedOffsetX = -24;\n } else if (direction === 'end') {\n positionedOffsetX = 24;\n } else {\n positionedOffsetX = 0;\n }\n\n const right: ConnectedPosition = {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: positionedOverlayY,\n offsetY: positionedOffsetY,\n panelClass: `right-${direction}`,\n };\n\n const left: ConnectedPosition = {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: positionedOverlayY,\n offsetY: positionedOffsetY,\n panelClass: `left-${direction}`,\n };\n\n const top: ConnectedPosition = {\n originX: 'center',\n originY: 'top',\n overlayX: direction,\n overlayY: 'bottom',\n offsetX: positionedOffsetX,\n panelClass: `top-${direction}`,\n };\n\n const bottom: ConnectedPosition = {\n originX: 'center',\n originY: 'bottom',\n overlayX: direction,\n overlayY: 'top',\n offsetX: positionedOffsetX,\n panelClass: `bottom-${direction}`,\n };\n\n if (position === 'right') {\n return [right, left, bottom, top];\n } else if (position === 'left') {\n return [left, right, bottom, top];\n } else if (position === 'top') {\n return [top, bottom, right, left];\n } else {\n return [bottom, top, right, left];\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaTooltipDirective } from './tooltip.directive';\n\n@NgModule({\n imports: [GaTooltipDirective],\n exports: [GaTooltipDirective],\n})\nexport class GaTooltipModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n TemplateRef,\n DOCUMENT,\n effect,\n} from '@angular/core';\nimport { GaFormFieldComponent } from './form-field.component';\nimport { GaTooltipModule } from '../tooltip';\nimport { GaFormFieldConnector } from './form-field-connector';\n\n@Component({\n selector: 'ga-label',\n templateUrl: './field-label.component.html',\n imports: [GaTooltipModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'null',\n },\n})\nexport class GaFieldLabelComponent {\n private readonly document = inject(DOCUMENT);\n readonly formField = inject(GaFormFieldComponent);\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n\n readonly uniqueId = this.formField.uniqueId + '-label';\n\n readonly for = input<string>();\n readonly definition = input<string | TemplateRef<any> | null>(null);\n readonly state = input<string>();\n readonly idInput = input<string>(undefined, { alias: 'id' });\n\n readonly id = computed(() => {\n return this.idInput() ?? this.uniqueId;\n });\n\n protected readonly controlId = computed(() => {\n return this.for() ?? this.formFieldConnector?.controlId();\n });\n\n readonly controlElement = computed(() => {\n const controlId = this.controlId();\n if (!controlId) {\n return null;\n }\n const control = this.document.querySelector(`#${CSS.escape(controlId)}`);\n if (control instanceof HTMLElement) {\n return control;\n }\n return null;\n });\n\n constructor() {\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() => formFieldConnector.labelId.set(this.id()));\n }\n }\n\n focusControl() {\n const control = this.controlElement();\n // only focus custom elements as native elements already\n // have support for connecting label and reacting to events\n if (control?.tagName.includes('-')) {\n control.focus();\n }\n }\n}\n","<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events -->\n<label\n [attr.id]=\"id()\"\n [attr.for]=\"controlId()\"\n class=\"ga-form-field__label\"\n [class.ga-form-field__label--defined]=\"!!definition()\"\n [class.ga-form-field__label--disabled]=\"formField.disabled()\"\n (click)=\"focusControl()\"\n [attr.tabindex]=\"definition() ? 0 : -1\"\n>\n <span\n class=\"ga-form-field__label-text\"\n [gaTooltip]=\"definition()\"\n gaTooltipPlacement=\"top-start\"\n ><ng-content\n /></span>\n @if (state()) {\n <span class=\"ga-form-field__label-state\">{{ state() }}</span>\n }\n</label>\n","import {\n computed,\n Directive,\n inject,\n input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { injectNgControlState } from '../utils/error-state';\nimport { GA_FORM_FIELD_ID } from './form-field.di';\nimport { GaFormFieldConnector } from './form-field-connector';\n\n@Directive({\n exportAs: 'gaFormControl',\n selector: '[gaFormControl]',\n host: {\n '[attr.aria-invalid]': 'inError() ? \"true\" : null',\n '[attr.aria-errormessage]': 'ariaErrorMessageId()',\n },\n})\nexport class GaFormControlDirective implements OnInit, OnDestroy {\n private readonly formFieldId = inject(GA_FORM_FIELD_ID, { optional: true });\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n\n readonly ngControlInput = input<NgControl | string>(undefined, {\n alias: 'gaFormControl',\n });\n\n private readonly explicitNgControl = computed(() => {\n const ngControl = this.ngControlInput();\n if (ngControl instanceof NgControl) {\n return ngControl;\n }\n return null;\n });\n\n private readonly ngControlState = injectNgControlState({\n explicitNgControl: this.explicitNgControl,\n });\n\n readonly inError = this.ngControlState.inError;\n readonly errors = this.ngControlState.errors;\n\n readonly ariaErrorMessageId = computed(() => {\n if (!this.formFieldId || !this.inError()) {\n return null;\n }\n return `${this.formFieldId}-callout`;\n });\n\n ngOnInit(): void {\n this.formFieldConnector?.control.set(this);\n }\n\n ngOnDestroy(): void {\n this.formFieldConnector?.control.set(null);\n }\n}\n","import { computed, Directive, inject, input } from '@angular/core';\nimport { GaFormFieldConnector } from './form-field-connector';\n\n@Directive({\n selector: '[gaLabelledByFormField]',\n host: {\n '[attr.aria-labelledby]': 'labelledBy()',\n },\n})\nexport class GaLabelledByFormFieldDirective {\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n\n readonly ariaLabelledBy = input<string | null>(null, {\n alias: 'aria-labelledby',\n });\n\n protected readonly labelledBy = computed(() => {\n return this.ariaLabelledBy() ?? this.formFieldConnector?.labelId();\n });\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaFormFieldComponent } from './form-field.component';\nimport { GaFieldLabelComponent } from './field-label.component';\nimport { GaFieldInfoComponent } from './field-info.component';\nimport { GaFormControlDirective } from './form-control.directive';\nimport { GaFieldErrorDirective } from './field-error.directive';\nimport { GaFormControlErrorsDirective } from './form-control-errors.directive';\n\n@NgModule({\n imports: [\n GaFormFieldComponent,\n GaFieldLabelComponent,\n GaFieldInfoComponent,\n GaFieldErrorDirective,\n GaFormControlErrorsDirective,\n GaFormControlDirective,\n ],\n exports: [\n GaFormFieldComponent,\n GaFieldLabelComponent,\n GaFieldInfoComponent,\n GaFieldErrorDirective,\n GaFormControlErrorsDirective,\n GaFormControlDirective,\n ],\n})\nexport class GaFormFieldModule {}\n","import { CdkMenu } from '@angular/cdk/menu';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-menu',\n template: `<ng-content />`,\n hostDirectives: [CdkMenu],\n host: {\n class: 'ga-menu',\n },\n styles: `\n :host {\n margin-top: calc(\n var(--ga-size-spacing-03) * var(--ga-base-scaling-factor, 1)\n );\n margin-bottom: calc(\n var(--ga-size-spacing-03) * var(--ga-base-scaling-factor, 1)\n );\n }\n `,\n})\nexport class GaMenuComponent {}\n","import { CdkMenuItem } from '@angular/cdk/menu';\nimport { Component, input } from '@angular/core';\nimport { GaIconData, GaIconModule } from '../icon/';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[gaMenuItem]',\n templateUrl: './menu-item.component.html',\n imports: [GaIconModule],\n hostDirectives: [CdkMenuItem],\n host: {\n class: 'ga-menu__item',\n },\n})\nexport class GaMenuItemComponent {\n readonly icon = input<GaIconData | string>(undefined, {\n alias: 'gaMenuItemIcon',\n });\n readonly description = input('', { alias: 'gaMenuItemDescription' });\n readonly shortcut = input('', { alias: 'gaMenuItemShortcut' });\n}\n","@if (icon()) {\n <ga-icon [icon]=\"icon()!\" class=\"ga-menu__item-icon\" size=\"16\" />\n}\n<div class=\"ga-menu__item-content\">\n <div class=\"ga-menu__item-title\">\n <div class=\"ga-menu__item-label\"><ng-content /></div>\n @if (shortcut()) {\n <span class=\"ga-menu__item-shortcut\">{{ shortcut() }}</span>\n }\n </div>\n @if (description()) {\n <div class=\"ga-menu__item-description\">{{ description() }}</div>\n }\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-menu-title',\n template: `<ng-content />`,\n host: {\n class: 'ga-menu__title',\n },\n})\nexport class GaMenuTitleComponent {}\n","import { CdkMenuTrigger, MENU_SCROLL_STRATEGY } from '@angular/cdk/menu';\nimport { createRepositionScrollStrategy } from '@angular/cdk/overlay';\nimport {\n Directive,\n effect,\n inject,\n Injector,\n input,\n TemplateRef,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, merge } from 'rxjs';\n\n@Directive({\n selector: '[gaMenuTrigger]',\n exportAs: 'gaMenuTrigger',\n standalone: true,\n hostDirectives: [\n {\n directive: CdkMenuTrigger,\n outputs: ['cdkMenuOpened: gaMenuOpened', 'cdkMenuClosed: gaMenuClosed'],\n },\n ],\n providers: [\n {\n provide: MENU_SCROLL_STRATEGY,\n useFactory: () => {\n const injector = inject(Injector);\n return () => createRepositionScrollStrategy(injector);\n },\n },\n ],\n})\nexport class GaMenuTriggerDirective {\n private readonly cdkMenuTrigger = inject(CdkMenuTrigger);\n\n readonly menuRef = input.required<TemplateRef<any>>({\n alias: 'gaMenuTrigger',\n });\n\n readonly isOpen = toSignal(\n merge(\n this.cdkMenuTrigger.opened.pipe(map(() => true)),\n this.cdkMenuTrigger.closed.pipe(map(() => false)),\n ),\n { initialValue: this.cdkMenuTrigger.isOpen() },\n );\n\n constructor() {\n effect(() => {\n this.cdkMenuTrigger.menuTemplateRef = this.menuRef();\n });\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-menu-separator',\n template: `<ng-content />`,\n host: {\n class: 'ga-menu__separator',\n },\n})\nexport class GaMenuSeparatorComponent {}\n","import { Component, computed, inject } from '@angular/core';\nimport { GaIconModule } from '../icon/icon.module';\nimport { ChevronDown, ChevronUp } from 'lucide-angular';\nimport { GaMenuTriggerDirective } from './menu-trigger.directive';\nimport { GaIconData } from '../icon/icon.component';\n\n@Component({\n selector: 'ga-menu-trigger-icon',\n imports: [GaIconModule],\n template: `<ga-icon [icon]=\"icon()\" />`,\n})\nexport class GaMenuTriggerIconComponent {\n protected readonly menuTrigger = inject(GaMenuTriggerDirective);\n\n protected readonly icon = computed<GaIconData>(() => {\n return this.menuTrigger.isOpen() ? ChevronUp : ChevronDown;\n });\n}\n","import { NgModule } from '@angular/core';\nimport { GaMenuComponent } from './menu.component';\nimport { GaMenuItemComponent } from './menu-item.component';\nimport { GaMenuTriggerDirective } from './menu-trigger.directive';\nimport { GaMenuSeparatorComponent } from './menu-separator.component';\nimport { GaMenuTitleComponent } from './menu-title.component';\nimport { GaMenuTriggerIconComponent } from './menu-trigger-icon.component';\n\n@NgModule({\n imports: [\n GaMenuComponent,\n GaMenuItemComponent,\n GaMenuTriggerDirective,\n GaMenuSeparatorComponent,\n GaMenuTitleComponent,\n GaMenuTriggerIconComponent,\n ],\n exports: [\n GaMenuComponent,\n GaMenuItemComponent,\n GaMenuTriggerDirective,\n GaMenuSeparatorComponent,\n GaMenuTitleComponent,\n GaMenuTriggerIconComponent,\n ],\n})\nexport class GaMenuModule {}\n","import { GaModalComponent } from './modal.component';\n\nexport class GaModalRef<C extends GaModalComponent<any, any>> {\n instance!: C;\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const GA_MODAL_DATA = new InjectionToken<any>('GaModalData');\n","import { Provider } from '@angular/core';\n\nexport type GaModalRole = 'dialog' | 'alertdialog';\n\nexport type GaModalSize = 'sm' | 'md' | 'lg';\n\nexport type GaModalType = 'none' | 'info' | 'danger' | 'warning' | 'success';\n\nexport type GaModalVerticalPosition = 'top' | 'center';\n\nexport class GaModalOptions {\n /**\n * Defines the predefined size of the modal.\n *\n * @default `md`\n */\n size?: GaModalSize;\n\n /**\n * Defines the type of the modal:\n * - `none` for no icon.\n * - `information` for info dialog.\n * - `danger` for danger dialog.\n * - `warning` for warning dialog.\n * - `success` for success dialog.\n */\n type?: GaModalType;\n\n /**\n * The ARIA role of the dialog element.\n *\n * @default `dialog`\n */\n role?: GaModalRole;\n\n /**\n * Defines the vertical position of the modal.\n * - `center` centers the modal vertically in the viewport (default).\n * - `top` positions the modal at the top with a calculated offset.\n *\n * @default `center`\n */\n verticalPosition?: GaModalVerticalPosition;\n\n /**\n * Defines if the modal should be closed when the escape key is pressed.\n *\n * @default `true`\n */\n closeOnEscape?: boolean;\n\n /**\n * Defines if the modal should be closed when the backdrop is clicked.\n *\n * @default `true`\n */\n closeOnOutsideClick?: boolean;\n\n /**\n * Defines if the modal should be closed when the route changes.\n *\n * @default `true`\n */\n closeOnNavigation?: boolean;\n}\n\nexport const DEFAULT_MODAL_OPTIONS: Required<GaModalOptions> = {\n role: 'dialog',\n type: 'none',\n size: 'md',\n verticalPosition: 'center',\n closeOnEscape: true,\n closeOnOutsideClick: true,\n closeOnNavigation: true,\n};\n\nexport function provideGaModalOptions(options: GaModalOptions): Provider {\n return { provide: GaModalOptions, useValue: options };\n}\n","import {\n GlobalPositionStrategy,\n Overlay,\n OverlayRef,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport {\n inject,\n Injectable,\n Injector,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { GaModalRef } from './modal-ref';\nimport { GaModalComponent } from './modal.component';\nimport { GA_MODAL_DATA } from './modal-data.token';\nimport { ExtractInput } from './modal.utils';\nimport { DEFAULT_MODAL_OPTIONS } from './modal.options';\n\n@Injectable({ providedIn: 'root' })\nexport class GaModalService {\n /** @ignore */\n private overlay = inject(Overlay);\n /** @ignore */\n private injector = inject(Injector);\n /** @ignore */\n private parentModalService = inject(GaModalService, {\n optional: true,\n skipSelf: true,\n });\n\n /** @ignore */\n private openModalsAtThisLevel = signal<GaModalComponent<any, any>[]>([]);\n\n /** @ignore */\n private positionStrategy?: GlobalPositionStrategy;\n\n get activeModals(): WritableSignal<GaModalComponent<any, any>[]> {\n if (this.parentModalService) {\n return this.parentModalService.activeModals;\n }\n return this.openModalsAtThisLevel;\n }\n\n open<C extends GaModalComponent<any, any>>(\n component: ComponentType<C>,\n ...args: ExtractInput<C> extends void\n ? [(undefined | null)?]\n : [ExtractInput<C>]\n ) {\n const [data] = args;\n\n const overlayRef = this.createOverlay();\n return this.attachContent<C>(component, data, overlayRef);\n }\n\n closeAll(): void {\n this.activeModals.update((modals) => {\n while (modals.length > 0) {\n modals.pop()?.close();\n }\n return modals;\n });\n }\n\n /** @ignore */\n private attachContent<C extends GaModalComponent<any, any>>(\n component: ComponentType<C>,\n data: ExtractInput<C> | undefined | null,\n overlayRef: OverlayRef,\n ) {\n const modalRef = new GaModalRef<C>();\n const injector = this.createInjector(\n this.injector,\n overlayRef,\n modalRef,\n data,\n );\n const modalPortal = new ComponentPortal(component, null, injector);\n const { instance: modalComponent } = overlayRef.attach(modalPortal);\n modalRef.instance = modalComponent;\n\n // Update position and size if verticalPosition is 'top'\n const verticalPosition =\n modalComponent.options.verticalPosition ??\n DEFAULT_MODAL_OPTIONS.verticalPosition;\n if (verticalPosition === 'top') {\n const modalStackIndex = this.activeModals().length + 1;\n this.positionStrategy?.top(\n `calc(4rem * var(--ga-base-scaling-factor, 1) * ${modalStackIndex})`,\n );\n overlayRef.updateSize({\n maxHeight: `calc(100vh - 4rem * var(--ga-base-scaling-factor, 1) * (1 + ${modalStackIndex}))`,\n });\n }\n\n this.activeModals.update((modals) => {\n modals.push(modalComponent);\n return modals;\n });\n modalComponent.afterClosed({ closeOnUnsubscribe: false }).subscribe(() => {\n const index = this.activeModals().indexOf(modalRef.instance);\n if (index > -1) {\n this.activeModals.update((modals) => {\n modals.splice(index, 1);\n return modals;\n });\n }\n });\n\n return modalComponent;\n }\n\n /** @ignore */\n private createOverlay(): OverlayRef {\n this.positionStrategy = this.overlay\n .position()\n .global()\n .centerHorizontally()\n .centerVertically();\n\n const scrollStrategy = this.overlay.scrollStrategies.block();\n return this.overlay.create({\n positionStrategy: this.positionStrategy,\n scrollStrategy,\n hasBackdrop: true,\n // TODO: reevaluate this option later in the future, currently it's limited by:\n // - poor ecosystem support (i.e. Playwright cannot mask elements inside Top layer)\n // - poor compatibility with other overlay components that don't use Top layer yet\n usePopover: false,\n backdropClass: 'ga-modal__backdrop',\n // NOTE: handled manually inside the modal component\n disposeOnNavigation: false,\n height: 'auto',\n maxHeight: `calc(100vh - 4rem * var(--ga-base-scaling-factor, 1) * 2)`,\n });\n }\n\n /** @ignore */\n private createInjector<C extends GaModalComponent>(\n parentInjector: Injector,\n overlayRef: OverlayRef,\n modalRef: GaModalRef<C>,\n data: any,\n ): Injector {\n return Injector.create({\n parent: parentInjector,\n providers: [\n { provide: OverlayRef, useValue: overlayRef },\n { provide: GaModalRef, useValue: modalRef },\n { provide: GA_MODAL_DATA, useValue: data ?? null },\n ],\n });\n }\n}\n","import {\n afterNextRender,\n Component,\n DestroyRef,\n inject,\n signal,\n} from '@angular/core';\nimport { filter, isObservable, Observable, Subject } from 'rxjs';\nimport { GA_MODAL_DATA } from './modal-data.token';\nimport { DEFAULT_MODAL_OPTIONS, GaModalOptions } from './modal.options';\nimport { ResolveStart, Router } from '@angular/router';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\n\n@Component({\n template: '',\n host: {\n class: 'ga-modal',\n '[attr.role]': 'options.role',\n '[attr.aria-labelledby]': 'options.labelledBy ?? labelledBy()',\n '[attr.aria-describedby]': 'options.describedBy ?? describedBy()',\n '[class.ga-modal--small]': \"options.size === 'sm'\",\n '[class.ga-modal--medium]': \"options.size === 'md'\",\n '[class.ga-modal--large]': \"options.size === 'lg'\",\n '[class.ga-modal--information]': \"options.type === 'info'\",\n '[class.ga-modal--danger]': \"options.type === 'danger'\",\n '[class.ga-modal--warning]': \"options.type === 'warning'\",\n '[class.ga-modal--success]': \"options.type === 'success'\",\n },\n hostDirectives: [CdkTrapFocus],\n})\nexport abstract class GaModalComponent<I = void, O = void> {\n readonly #closeSubject = new Subject<O | undefined>();\n readonly #overlayRef = inject(OverlayRef);\n readonly #destroyRef = inject(DestroyRef);\n readonly #router = inject(Router, { optional: true });\n readonly #globalOptions = inject(GaModalOptions, { optional: true });\n readonly options: GaModalOptions & {\n labelledBy?: string;\n describedBy?: string;\n } = this.createOptions();\n readonly #trapfocus = inject(CdkTrapFocus);\n\n protected readonly data: I = inject<I>(GA_MODAL_DATA);\n\n protected readonly labelledBy = signal<string | null>(null);\n protected readonly describedBy = signal<string | null>(null);\n\n constructor() {\n this.#trapfocus.enabled = true;\n this.#trapfocus.autoCapture = true;\n\n // Using next render to delay the initialization, so that there is more time\n // to set the modal options\n afterNextRender({\n read: () => {\n if (this.options.closeOnNavigation) {\n this.#router?.events\n .pipe(\n /**\n * Listen for `ResolveStart` to be friendly with route-guards.\n * i.e. don't close the modal in case a guard prevents the route change,\n * beneficial for pending changes check.\n */\n filter((event) => event instanceof ResolveStart),\n takeUntilDestroyed(this.#destroyRef),\n )\n .subscribe(() => this.close());\n }\n\n if (this.options.closeOnEscape) {\n this.#overlayRef\n .keydownEvents()\n .pipe(\n filter(\n (event) => event.key === 'Escape' && !hasModifierKey(event),\n ),\n takeUntilDestroyed(this.#destroyRef),\n )\n .subscribe((event) => {\n event.preventDefault();\n this.#softClose();\n });\n }\n\n if (this.options.closeOnOutsideClick) {\n this.#overlayRef\n .backdropClick()\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe(() => this.#softClose());\n }\n },\n });\n }\n\n close(result?: O): void {\n if (!this.#overlayRef.hasAttached()) {\n return;\n }\n this.#overlayRef.dispose();\n this.#closeSubject.next(result);\n this.#closeSubject.complete();\n }\n\n afterClosed(\n { closeOnUnsubscribe } = { closeOnUnsubscribe: true },\n ): Observable<O | undefined> {\n return new Observable((observer) => {\n this.#closeSubject.subscribe(observer);\n return () => closeOnUnsubscribe && this.close();\n });\n }\n\n /**\n * \"Soft close\" hook which is called whenever the modal is being closed\n * by \"Escape\" key or Backdrop click.\n * Return true to permit closing. False - to refuse.\n */\n protected onSoftClose(): boolean | Observable<boolean> {\n return true;\n }\n\n #softClose(): void {\n const shouldClose = this.onSoftClose();\n if (typeof shouldClose === 'boolean' && shouldClose) {\n this.close();\n }\n if (isObservable(shouldClose)) {\n shouldClose\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((result) => result && this.close());\n }\n }\n\n protected createOptions(\n options?: GaModalOptions & { labelledBy?: string; describedBy?: string },\n ) {\n return {\n ...DEFAULT_MODAL_OPTIONS,\n ...this.#globalOptions,\n ...options,\n };\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n HostAttributeToken,\n HostListener,\n inject,\n input,\n Renderer2,\n} from '@angular/core';\nimport { GaModalRef } from './modal-ref';\n\n@Directive({\n selector: '[gaModalClose]',\n})\nexport class GaModalCloseDirective {\n private readonly modalRef = inject(GaModalRef);\n\n readonly modalResult = input<any>({ alias: 'gaModalClose' });\n\n @HostListener('click')\n onClick(): void {\n this.modalRef.instance.close(this.modalResult);\n }\n}\n\nlet nextUniqueModalTitleId = 0;\n@Directive({\n selector: '[gaModalTitle]',\n host: { class: 'ga-modal__title' },\n})\nexport class GaModalTitleDirective implements AfterViewInit {\n private readonly renderer = inject(Renderer2);\n private readonly elementRef = inject(ElementRef);\n private readonly modalRef = inject(GaModalRef);\n protected readonly idAttribute = inject(new HostAttributeToken('id'), {\n optional: true,\n });\n\n private readonly id: string;\n\n constructor() {\n if (this.idAttribute) {\n this.id = this.idAttribute;\n } else {\n this.id = `gaModalTitle${nextUniqueModalTitleId++}`;\n this.renderer.setAttribute(this.elementRef.nativeElement, 'id', this.id);\n }\n }\n\n ngAfterViewInit(): void {\n this.modalRef.instance.labelledBy.set(this.id);\n }\n}\n\nlet nextUniqueModalDescriptionId = 0;\n@Directive({\n selector: '[gaModalDescription]',\n host: { class: 'ga-modal__description' },\n})\nexport class GaModalDescriptionDirective implements AfterViewInit {\n readonly renderer = inject(Renderer2);\n readonly elementRef = inject(ElementRef);\n private readonly modalRef = inject(GaModalRef);\n protected readonly idAttribute = inject(new HostAttributeToken('id'), {\n optional: true,\n });\n\n private readonly id: string;\n\n constructor() {\n if (this.idAttribute) {\n this.id = this.idAttribute;\n } else {\n this.id = `gaModalDescription${nextUniqueModalDescriptionId++}`;\n this.renderer.setAttribute(this.elementRef.nativeElement, 'id', this.id);\n }\n }\n\n ngAfterViewInit(): void {\n this.modalRef.instance.describedBy.set(this.id);\n }\n}\n\nlet nextUniqueModalLabelId = 0;\n@Directive({\n selector: '[gaModalLabel]',\n host: { class: 'ga-modal__label' },\n})\nexport class GaModalLabelDirective {\n private readonly renderer = inject(Renderer2);\n private readonly elementRef = inject(ElementRef);\n protected readonly idAttribute = inject(new HostAttributeToken('id'), {\n optional: true,\n });\n\n private readonly id: string;\n\n constructor() {\n if (this.idAttribute) {\n this.id = this.idAttribute;\n } else {\n this.id = `gaModalLabel${nextUniqueModalLabelId++}`;\n this.renderer.setAttribute(this.elementRef.nativeElement, 'id', this.id);\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { GaModalDescriptionDirective } from './modal.directives';\n\n@Component({\n selector: 'ga-modal-description',\n template: `<ng-content />`,\n hostDirectives: [GaModalDescriptionDirective],\n host: {\n class: 'ga-modal__description',\n },\n})\nexport class GaModalDescriptionComponent {}\n","import { CdkScrollable } from '@angular/cdk/scrolling';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-modal-content',\n template: `<ng-content />`,\n hostDirectives: [CdkScrollable],\n host: {\n class: 'ga-modal__content',\n },\n})\nexport class GaModalContentComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-modal-actions',\n template: ` <ng-content />`,\n host: {\n class: 'ga-modal__actions',\n },\n})\nexport class GaModalActionsComponent {}\n","import { Injectable, makeEnvironmentProviders } from '@angular/core';\n\nexport function GA_MODAL_I18N_FACTORY() {\n return new GaModalI18nDefault();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_MODAL_I18N_FACTORY,\n})\nexport abstract class GaModalI18n {\n abstract dismissLabel: string;\n}\n\n@Injectable()\nexport class GaModalI18nDefault extends GaModalI18n {\n /** A label for the dismiss button */\n dismissLabel = 'Dismiss';\n}\n\nexport function provideGaModalI18n(value: GaModalI18n | (() => GaModalI18n)) {\n return makeEnvironmentProviders([\n typeof value === 'function'\n ? { provide: GaModalI18n, useFactory: value }\n : { provide: GaModalI18n, useValue: value },\n ]);\n}\n","import { Component, inject } from '@angular/core';\nimport { GaButtonModule } from '../button';\nimport { GaModalRef } from './modal-ref';\nimport { GaModalI18n } from './modal-i18n.service';\nimport {\n CircleCheck,\n Info,\n OctagonAlert,\n TriangleAlert,\n X,\n} from 'lucide-angular';\nimport { GaIconModule } from '../icon';\n\n@Component({\n selector: 'ga-modal-header',\n imports: [GaButtonModule, GaIconModule],\n template: `\n @if (modalRef.instance.options.type !== 'none') {\n <div class=\"ga-modal__icon\">\n @switch (modalRef.instance.options.type) {\n @case ('info') {\n <ga-icon [icon]=\"icons.Info\" size=\"48\" />\n }\n @case ('warning') {\n <ga-icon [icon]=\"icons.TriangleAlert\" size=\"48\" />\n }\n @case ('danger') {\n <ga-icon [icon]=\"icons.OctagonAlert\" size=\"48\" />\n }\n @case ('success') {\n <ga-icon [icon]=\"icons.CircleCheck\" size=\"48\" />\n }\n }\n </div>\n }\n <div class=\"ga-modal__heading\">\n <ng-content select=\"[gaModalLabel]\" />\n <ng-content select=\"[gaModalTitle]\" />\n <ng-content select=\"ga-modal-description\" />\n </div>\n <button\n type=\"button\"\n [gaIconButton]=\"icons.X\"\n gaIconButtonVariant=\"ghost\"\n class=\"ga-modal__close-icon\"\n (click)=\"modalRef.instance.close()\"\n >\n {{ i18n.dismissLabel }}\n </button>\n `,\n host: {\n class: 'ga-modal__top-section',\n },\n})\nexport class GaModalHeaderComponent {\n protected readonly icons = {\n X,\n Info,\n CircleCheck,\n TriangleAlert,\n OctagonAlert,\n };\n\n protected readonly modalRef = inject(GaModalRef);\n protected readonly i18n = inject(GaModalI18n);\n}\n","import { NgModule } from '@angular/core';\nimport {\n GaModalCloseDirective,\n GaModalDescriptionDirective,\n GaModalLabelDirective,\n GaModalTitleDirective,\n} from './modal.directives';\nimport { GaModalDescriptionComponent } from './modal-description.component';\nimport { GaModalContentComponent } from './modal-content.component';\nimport { GaModalActionsComponent } from './modal-actions.component';\nimport { GaModalHeaderComponent } from './modal-header.component';\n\n@NgModule({\n imports: [\n GaModalCloseDirective,\n GaModalTitleDirective,\n GaModalLabelDirective,\n GaModalDescriptionDirective,\n GaModalDescriptionComponent,\n GaModalContentComponent,\n GaModalActionsComponent,\n GaModalHeaderComponent,\n ],\n exports: [\n GaModalCloseDirective,\n GaModalTitleDirective,\n GaModalLabelDirective,\n GaModalDescriptionDirective,\n GaModalDescriptionComponent,\n GaModalContentComponent,\n GaModalActionsComponent,\n GaModalHeaderComponent,\n ],\n})\nexport class GaModalModule {}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input,\n linkedSignal,\n output,\n Provider,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Provider Expression that allows ga-radio-group to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)] and ngControl.\n */\nexport const RADIO_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaRadioGroupComponent),\n multi: true,\n};\n\n// Increasing integer for generating unique ids for radio components.\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-radio-group',\n templateUrl: './radio-group.component.html',\n providers: [RADIO_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'radiogroup',\n class: 'ga-radio-group',\n },\n})\nexport class GaRadioGroupComponent implements ControlValueAccessor {\n /** Name of the radio button group. All radio buttons inside this group will use this name. */\n readonly name = input<string>(`ga-radio-group-${nextUniqueId++}`);\n /**\n * Value for the radio-group. Should equal the value of the selected radio button if there is\n * a corresponding radio button with a matching value. If there is not such a corresponding\n * radio button, this value persists to be applied in case a new radio button is added with a\n * matching value.\n */\n readonly value = input<string | null>(null);\n /** Whether the radio group is disabled */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Event emitted when the group value changes.\n * Change events are only emitted when the value changes due to user interaction with\n * a radio button (the same behavior as `<input type=\"radio\">`).\n */\n readonly change = output<string | null>();\n\n readonly valueModel = linkedSignal(() => this.value());\n readonly disabledModel = linkedSignal(() => this.disabled());\n\n private _onTouched?: () => any;\n private _onModelChanged?: (value: any) => void;\n\n registerOnChange(fn: (value: any) => void) {\n this._onModelChanged = fn;\n }\n\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n writeValue(value: any) {\n this.valueModel.set(value);\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabledModel.set(isDisabled);\n }\n\n onValueChange(value: string | null) {\n if (this.valueModel() === value) {\n return;\n }\n this.valueModel.set(value);\n this.change.emit(value);\n if (this._onModelChanged) {\n this._onModelChanged(value);\n }\n }\n\n onBlur() {\n if (this._onTouched) {\n this._onTouched();\n }\n }\n}\n","<ng-content></ng-content>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n HostAttributeToken,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { GaRadioGroupComponent } from './radio-group.component';\nimport { injectNgControlState } from '../utils/error-state';\n\n// Increasing integer for generating unique ids for radio button components.\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-radio-button',\n templateUrl: './radio-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ga-radio-button',\n '[class.ga-radio-button--invalid]': 'invalid()',\n '[attr.id]': 'null',\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n },\n})\nexport class GaRadioButtonComponent {\n private readonly radioGroup = inject(GaRadioGroupComponent, {\n optional: true,\n });\n\n protected readonly tabindex = inject(new HostAttributeToken('tabindex'), {\n optional: true,\n });\n\n private readonly implicitNgControlState = injectNgControlState();\n\n private _uniqueId = `ga-radio-button-${++nextUniqueId}`;\n\n /** The value attribute of the native input element */\n readonly value = input<string | null>(null);\n readonly inputId = input<string | null>(null, { alias: 'id' });\n readonly inputName = input<string | null>(null, { alias: 'name' });\n readonly inputChecked = input(false, {\n alias: 'checked',\n transform: booleanAttribute,\n });\n readonly inputDisabled = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly ariaLabelledby = input<string | null>(null, {\n alias: 'aria-labelledby',\n });\n readonly ariaDescribedby = input<string | null>(null, {\n alias: 'aria-describedby',\n });\n readonly ariaInvalid = input<string | null>(null, { alias: 'aria-invalid' });\n readonly ariaErrormessage = input<string | null>(null, {\n alias: 'aria-errormessage',\n });\n\n /**\n * Event emitted when the group value changes.\n * Change events are only emitted when the value changes due to user interaction with\n * a radio button (the same behavior as `<input type=\"radio\">`).\n */\n readonly change = output<string | null>();\n\n readonly id = computed(() => this.inputId() ?? this._uniqueId);\n readonly name = computed(\n () => this.radioGroup?.name() ?? this.inputName() ?? this._uniqueId,\n );\n readonly disabled = computed(\n () => this.radioGroup?.disabledModel() || this.inputDisabled(),\n );\n\n /** @ignore */\n readonly invalid = computed(() => {\n return this.ariaInvalid()\n ? this.ariaInvalid() === 'true'\n : this.implicitNgControlState.inError();\n });\n\n protected readonly checked = computed(\n () => this.radioGroup?.valueModel() === this.value() || this.inputChecked(),\n );\n\n onInputChange(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n\n if (this.disabled()) {\n return;\n }\n\n this.change.emit(this.value());\n this.radioGroup?.onValueChange(this.value());\n }\n\n onBlur() {\n this.radioGroup?.onBlur();\n }\n}\n","<input\n type=\"radio\"\n class=\"ga-radio-button__native\"\n [attr.id]=\"id()\"\n [name]=\"name()\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [attr.tabindex]=\"tabindex\"\n [attr.value]=\"value()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-errormessage]=\"ariaErrormessage()\"\n (change)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"\n/>\n\n<div class=\"ga-radio-button__marker\"></div>\n<label class=\"ga-radio-button__label\" [attr.for]=\"id()\"\n ><ng-content></ng-content\n></label>\n","import { NgModule } from '@angular/core';\nimport { GaRadioButtonComponent } from './radio-button.component';\nimport { GaRadioGroupComponent } from './radio-group.component';\n\n@NgModule({\n imports: [GaRadioButtonComponent, GaRadioGroupComponent],\n exports: [GaRadioButtonComponent, GaRadioGroupComponent],\n})\nexport class GaRadioModule {}\n","import { CdkOption } from '@angular/cdk/listbox';\nimport {\n afterEveryRender,\n booleanAttribute,\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { GaSelectComponent } from './select.component';\nimport { GaCheckboxModule } from '../checkbox';\nimport { GaRadioModule } from '../radio';\n\n@Component({\n selector: 'ga-option',\n imports: [GaCheckboxModule, GaRadioModule],\n templateUrl: './option.component.html',\n hostDirectives: [\n {\n directive: CdkOption,\n inputs: [\n 'cdkOption: value',\n 'cdkOptionDisabled: disabled',\n 'cdkOptionTypeaheadLabel: typeaheadLabel',\n ],\n },\n ],\n host: {\n class: 'ga-dropdown__item',\n '[class.ga-dropdown__item--selected]': 'selected()',\n '[class.ga-dropdown__item--disabled]': 'cdkOption.disabled',\n '[class.ga-dropdown__item--active]': 'active() && !cdkOption.disabled',\n '(click)': 'onClick()',\n '[attr.hidden]': `hidden() ? '' : null`,\n },\n})\nexport class GaOptionComponent<InputType = any> {\n private readonly _isSelected = signal(false);\n private readonly _isActive = signal(false);\n protected readonly selectComponent = inject(GaSelectComponent);\n\n readonly cdkOption = inject(CdkOption, { self: true });\n\n readonly value = input<InputType | null>(null);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly hidden = input(false, { transform: booleanAttribute });\n readonly withInput = input(this.selectComponent.multiple(), {\n transform: booleanAttribute,\n });\n\n readonly selected = computed(() => {\n if (!this._isSelected()) {\n return false;\n }\n\n if (\n this.cdkOption.value !== undefined &&\n this.cdkOption.value !== null &&\n this.cdkOption.value !== ''\n ) {\n return true;\n }\n\n return this.selectComponent.canSelectNullable();\n });\n readonly active = this._isActive.asReadonly();\n\n constructor() {\n afterEveryRender({\n read: () => {\n // NOTE: currently there is no other reliable way to track the selected state,\n // refactor once cdk will be based on signals or more appropriate events introduced\n this._isSelected.set(this.cdkOption.isSelected());\n this._isActive.set(this.cdkOption.isActive());\n },\n });\n\n // NOTE: this is a workaround to set the default empty value (null) for cdkOption\n if (this.value() !== this.cdkOption && this.cdkOption.value === undefined) {\n this.cdkOption.value = this.value();\n }\n\n effect(() => {\n this.cdkOption.disabled = this.disabled() || this.hidden();\n });\n }\n\n onClick() {\n if (!this.cdkOption.disabled) {\n this.selectComponent.autoClose();\n }\n }\n}\n","@if (withInput()) {\n @if (selectComponent.multiple()) {\n <ga-checkbox\n [checked]=\"selected()\"\n [disabled]=\"disabled()\"\n aria-hidden=\"true\"\n style=\"pointer-events: none\"\n tabindex=\"-1\"\n />\n } @else {\n <ga-radio-button\n [checked]=\"selected()\"\n [disabled]=\"disabled()\"\n aria-hidden=\"true\"\n style=\"pointer-events: none\"\n tabindex=\"-1\"\n />\n }\n}\n<div class=\"ga-dropdown__item-label\"><ng-content /></div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-select-value',\n template: `<ng-content />`,\n})\nexport class GaSelectValueComponent {}\n","import { Component, computed, inject } from '@angular/core';\nimport { GaSelectComponent } from './select.component';\nimport { X } from 'lucide-angular';\nimport { GaIconModule } from '../icon';\nimport { GaOptionComponent } from './option.component';\n\n@Component({\n selector: 'ga-select-default-value',\n templateUrl: './select-default-value.component.html',\n imports: [GaIconModule],\n host: {\n class: 'ga-select__value',\n },\n})\nexport class GaSelectDefaultValueComponent {\n protected readonly selectComponent = inject(GaSelectComponent);\n\n protected readonly icons = { X };\n\n protected readonly singleViewValue = computed(() => {\n const options = this.selectComponent.selectedOptions();\n if (!options.length) {\n return '';\n }\n return options[0].cdkOption.getLabel();\n });\n\n protected deselectOption(option: GaOptionComponent): void {\n this.selectComponent.deselectValue(option.cdkOption.value);\n }\n}\n","@if (selectComponent.multiple()) {\n @for (option of selectComponent.selectedOptions(); track option) {\n <div\n class=\"ga-tag\"\n [class.ga-tag--interactive-selected]=\"!selectComponent.disabled()\"\n [class.ga-tag--interactive-selected-disabled]=\"selectComponent.disabled()\"\n >\n <span class=\"ga-tag__label\">{{ option.cdkOption.getLabel() }}</span>\n @if (!selectComponent.disabled()) {\n <div class=\"ga-tag__separator\"></div>\n <ga-icon\n [icon]=\"icons.X\"\n size=\"16\"\n class=\"ga-tag__icon\"\n (click)=\"deselectOption(option); $event.stopPropagation()\"\n />\n }\n </div>\n }\n} @else {\n {{ singleViewValue() }}\n}\n","import { Injectable, makeEnvironmentProviders } from '@angular/core';\n\nexport function GA_SELECT_I18N_FACTORY() {\n return new GaSelectI18nDefault();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_SELECT_I18N_FACTORY,\n})\nexport abstract class GaSelectI18n {\n abstract clearLabel: string;\n abstract defaultSearchInputLabel: string;\n}\n\n@Injectable()\nexport class GaSelectI18nDefault extends GaSelectI18n {\n /** A label for the clear button */\n clearLabel = 'Clear';\n\n /** A default label for the search input */\n defaultSearchInputLabel = 'Search';\n}\n\nexport function provideGaSelectI18n(\n value: GaSelectI18n | (() => GaSelectI18n),\n) {\n return makeEnvironmentProviders([\n typeof value === 'function'\n ? { provide: GaSelectI18n, useFactory: value }\n : { provide: GaSelectI18n, useValue: value },\n ]);\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaSpinnerComponent } from './spinner.component';\n\n@NgModule({\n imports: [GaSpinnerComponent],\n exports: [GaSpinnerComponent],\n})\nexport class GaSpinnerModule {}\n","import { Component } from '@angular/core';\nimport { GaSpinnerModule } from '../spinner';\n\n@Component({\n selector: 'ga-select-dropdown-spinner',\n template: `<ga-spinner size=\"16\" />`,\n imports: [GaSpinnerModule],\n host: {\n class: 'ga-dropdown__spinner',\n },\n})\nexport class GaSelectDropdownSpinnerComponent {}\n","import { CdkListbox } from '@angular/cdk/listbox';\nimport {\n booleanAttribute,\n Component,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\nimport { GaSelectDropdownSpinnerComponent } from './select-dropdown-spinner.component';\n\n@Component({\n selector: 'ga-select-dropdown',\n templateUrl: './select-dropdown.component.html',\n imports: [GaSelectDropdownSpinnerComponent],\n hostDirectives: [CdkListbox],\n host: {\n class: 'ga-dropdown ga-dropdown__content',\n },\n})\nexport class GaSelectDropdownComponent {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly loading = input(false, { transform: booleanAttribute });\n\n resetScroll() {\n this.elementRef.nativeElement.scrollTo(0, 0);\n }\n}\n","@if (loading()) {\n <ga-select-dropdown-spinner />\n} @else {\n <ng-content />\n}\n","import {\n AfterContentInit,\n afterNextRender,\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n linkedSignal,\n model,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { GaIconModule } from '../icon/icon.module';\nimport { ChevronDown, ChevronUp, CircleX } from 'lucide-angular';\nimport { GaButtonModule } from '../button/button.module';\nimport {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ConnectedPosition,\n createRepositionScrollStrategy,\n OverlayModule,\n} from '@angular/cdk/overlay';\nimport { GaIconData } from '../icon';\nimport { GaOptionComponent } from './option.component';\nimport { CdkListbox } from '@angular/cdk/listbox';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { GaSelectValueComponent } from './select-value.component';\nimport { GaSelectDefaultValueComponent } from './select-default-value.component';\nimport { GaLabelledByFormFieldDirective } from '../form-field/labelled-by-form-field.directive';\nimport { GaSelectI18n } from './select-i18n.service';\nimport { injectNgControlState } from '../utils/error-state';\nimport { GaFormFieldConnector } from '../form-field/form-field-connector';\nimport { GaSelectDropdownComponent } from './select-dropdown.component';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-select',\n templateUrl: './select.component.html',\n imports: [\n GaIconModule,\n GaButtonModule,\n OverlayModule,\n GaSelectDefaultValueComponent,\n ],\n hostDirectives: [\n CdkOverlayOrigin,\n {\n directive: GaLabelledByFormFieldDirective,\n inputs: ['aria-labelledby'],\n },\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaSelectComponent),\n multi: true,\n },\n ],\n host: {\n role: 'combobox',\n '[attr.id]': 'id()',\n class: 'ga-select',\n '[class.ga-select--multi]': 'multiple()',\n '[class.ga-select--expanded]': 'isOpen()',\n '[class.ga-select--disabled]': 'disabled()',\n '[class.ga-select--invalid]': 'invalid()',\n '[class.ga-select--empty]': '!hasValue()',\n 'aria-haspopup': 'listbox',\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.aria-controls]': 'isOpen() ? cdkListbox().id : null',\n '[attr.aria-invalid]': 'invalid()',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.aria-owns]': 'isOpen() && searchable() ? cdkListbox().id : null',\n '[attr.aria-activedescendant]':\n 'isOpen() && !searchable() ? activeDescendantId() : null',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '(click)': 'toggle()',\n '(keydown.arrowdown)': 'open(); $event.preventDefault()',\n '(keydown.space)': 'open(); $event.preventDefault()',\n '(keydown.enter)': 'open(); $event.preventDefault()',\n '(keydown.backspace)': 'clearValue(); $event.preventDefault()',\n },\n})\nexport class GaSelectComponent\n implements ControlValueAccessor, AfterContentInit\n{\n private readonly _uniqueId = `ga-select-${++nextUniqueId}`;\n\n protected readonly icons = { CircleX };\n\n private _onTouched?: () => any;\n private _onModelChanged?: (value: any) => void;\n protected readonly positions: ConnectedPosition[] = [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8,\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n ];\n\n private readonly injector = inject(Injector);\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n protected readonly i18n = inject(GaSelectI18n);\n protected readonly overlayOrigin = inject(CdkOverlayOrigin);\n protected readonly repositionScrollStrategy = createRepositionScrollStrategy(\n this.injector,\n );\n private readonly implicitNgControlState = injectNgControlState();\n\n private readonly _isOpen = signal(false);\n private shouldRecoverFocus = false;\n\n readonly value = model<any | any[] | null>(null);\n readonly placeholder = input<string>('');\n readonly searchInputLabel = input<string | null>(null);\n readonly disabledInput = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly invalidInput = input(null, {\n alias: 'invalid',\n transform: booleanAttribute,\n });\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly compareWith = input<(o1: any, o2: any) => boolean>();\n readonly searchable = input(false, { transform: booleanAttribute });\n readonly clearable = input(false, { transform: booleanAttribute });\n readonly clearableLabel = input<string>();\n readonly canSelectNullable = input(false, {\n transform: booleanAttribute,\n });\n readonly textValue = model<string>('');\n readonly leftIcon = input<GaIconData>();\n readonly idInput = input<string | null>(null, { alias: 'id' });\n\n readonly opened = output();\n readonly closed = output();\n\n // TODO: if we rename this to options, it breaks, why?\n readonly gaOptions = contentChildren(GaOptionComponent, {\n descendants: true,\n read: GaOptionComponent,\n });\n protected readonly cdkListbox = contentChild.required(CdkListbox);\n protected readonly gaDropdown = contentChild.required(\n GaSelectDropdownComponent,\n );\n protected readonly customSelectValue = contentChild(GaSelectValueComponent);\n protected readonly inputSearch =\n viewChild<ElementRef<HTMLInputElement>>('inputSearch');\n protected readonly content = viewChild('ngContent', { read: ElementRef });\n protected readonly connectedOverlay = viewChild(CdkConnectedOverlay);\n\n readonly id = computed(() => {\n return this.idInput() ?? this._uniqueId;\n });\n readonly isOpen = this._isOpen.asReadonly();\n readonly disabled = linkedSignal(() => this.disabledInput());\n protected readonly menuStatusIcon = computed(() => {\n return this._isOpen() ? ChevronUp : ChevronDown;\n });\n protected readonly visibleOptions = computed(() => {\n return this.gaOptions().filter((option) => !option.hidden());\n });\n readonly selectedOptions = computed(() => {\n return this.gaOptions().filter((option) => option.selected());\n });\n readonly activeDescendantId = computed(() => {\n const activeOption = this.gaOptions().find((option) => option.active());\n return activeOption?.cdkOption.id;\n });\n readonly hasValue = computed(() => {\n if (!this.customSelectValue()) {\n // When no custom value component exists, we determine if there's a value\n // by checking selected options (which provide the display labels).\n return this.gaOptions().some((option) => option.selected());\n }\n // With a custom value component, we can check the value directly\n // which is useful for asynchronous selects, e.g. to display selected value without options\n return this.value() !== null || this.canSelectNullable();\n });\n\n readonly invalid = computed(() => {\n return this.invalidInput() ?? this.implicitNgControlState.inError();\n });\n\n constructor() {\n effect(() => {\n // if the select became disabled while open, close it\n if (this.disabled() && this._isOpen()) {\n this.close();\n }\n });\n\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() => formFieldConnector.controlDisabled.set(this.disabled()));\n }\n\n effect(() => {\n const options = this.visibleOptions();\n untracked(() => {\n if (!this.isOpen()) {\n return;\n }\n if (!options.some((option) => option.cdkOption.isActive())) {\n const firstOption = options.find(\n (option) => !option.cdkOption.disabled,\n );\n const selectedOption = options.find((option) =>\n option.cdkOption.isSelected(),\n );\n if (selectedOption && !this.textValue()) {\n this.cdkListbox()._setActiveOption(selectedOption.cdkOption);\n } else if (firstOption) {\n // if no active option, set the first enabled as active\n this.cdkListbox()._setActiveOption(firstOption.cdkOption);\n }\n }\n this.connectedOverlay()?.overlayRef?.updatePosition();\n });\n });\n\n effect(() => {\n // update the overlayPosition since it may change size when selecting/deselecting options\n this.value();\n untracked(() => {\n if (this.multiple()) {\n setTimeout(() => {\n this.connectedOverlay()?.overlayRef?.updatePosition();\n });\n }\n });\n });\n }\n\n ngAfterContentInit() {\n effect(\n () => {\n this.cdkListbox().multiple = this.multiple();\n this.cdkListbox().useActiveDescendant = this.searchable();\n this.cdkListbox().compareWith = this.compareWith();\n this.cdkListbox().value = this.multiple()\n ? (this.value() as any[])\n : [this.value()];\n },\n { injector: this.injector },\n );\n\n // track value changes (pull)\n this.cdkListbox().valueChange.subscribe(({ value }) => {\n if (!this.multiple()) {\n [value] = value;\n }\n this.value.set(value);\n this._onModelChanged?.(value);\n // this is needed because value could be also changed via keyboard\n this.autoClose();\n });\n }\n\n writeValue(value: any) {\n this.value.set(value);\n }\n\n registerOnChange(fn: any) {\n this._onModelChanged = fn;\n }\n\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n setDisabledState(disabled: boolean) {\n this.disabled.set(disabled);\n }\n\n toggle() {\n if (this._isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open() {\n if (this.disabled() || this._isOpen()) {\n return;\n }\n this._isOpen.set(true);\n }\n\n close() {\n if (!this._isOpen()) {\n return;\n }\n this._isOpen.set(false);\n }\n\n autoClose() {\n // close that was initiated by clicking the option\n if (!this.multiple()) {\n this.shouldRecoverFocus = true;\n this.close();\n }\n }\n\n focusListbox() {\n this.cdkListbox().focus();\n }\n\n setPreviousItemActive() {\n this.setItemActive(-1);\n }\n\n setNextItemActive() {\n this.setItemActive(1);\n }\n\n setActiveItemAsSelected() {\n const options = this.gaOptions();\n let activeOption = options.find((option) => option.cdkOption.isActive());\n if (!activeOption && options.length > 0) {\n activeOption = options[0];\n }\n if (activeOption) {\n const { cdkOption } = activeOption;\n if (!this.multiple() && cdkOption.isSelected()) {\n // if single select and the active option is already selected, do nothing\n return;\n }\n this.cdkListbox().toggle(cdkOption);\n this.syncValue();\n this._onModelChanged?.(this.value());\n }\n }\n\n onOverlayKeydown(event: KeyboardEvent) {\n if (event.code === 'Escape') {\n this.shouldRecoverFocus = true;\n } else if (event.code === 'Tab') {\n this.close();\n }\n }\n\n protected clearValue() {\n if (!this.clearable() || !this.searchable()) {\n return;\n }\n if (\n this.elementRef.nativeElement !== document.activeElement &&\n this.inputSearch()?.nativeElement !== document.activeElement\n ) {\n this._onTouched?.();\n }\n const value = this.multiple() ? [] : null;\n this.value.set(value);\n this._onModelChanged?.(value);\n this.autoClose();\n }\n\n protected onInputKeyDown(event: KeyboardEvent) {\n switch (event.code) {\n case 'ArrowDown':\n this.setNextItemActive();\n event.preventDefault();\n event.stopPropagation();\n break;\n case 'ArrowUp':\n this.setPreviousItemActive();\n event.preventDefault();\n event.stopPropagation();\n break;\n case 'Space':\n event.stopPropagation();\n break;\n case 'Enter':\n this.setActiveItemAsSelected();\n this.autoClose();\n event.preventDefault();\n event.stopPropagation();\n break;\n case 'Tab':\n this.close();\n break;\n case 'Backspace':\n if (this.textValue() === '') {\n this.clearValue();\n }\n event.stopPropagation();\n break;\n }\n }\n\n protected onOverlayAttach() {\n this.shouldRecoverFocus = false;\n this._isOpen.set(true);\n if (this.searchable()) {\n this.inputSearch()!.nativeElement.focus();\n } else {\n this.focusListbox();\n }\n this.scrollActiveOptionIntoView();\n this.opened.emit();\n }\n\n protected onOverlayDetach() {\n this._isOpen.set(false);\n if (\n this.inputSearch()?.nativeElement === document.activeElement ||\n this.shouldRecoverFocus\n ) {\n this.elementRef.nativeElement.focus();\n }\n this.textValue.set('');\n this._onTouched?.();\n this.closed.emit();\n }\n\n deselectValue(value: any) {\n this.cdkListbox().deselectValue(value);\n this.syncValue();\n this._onModelChanged?.(this.value());\n }\n\n private syncValue() {\n let { value } = this.cdkListbox();\n if (!this.multiple()) {\n [value] = value;\n }\n this.value.set(value);\n }\n\n private setItemActive(direction: 1 | -1) {\n const options = this.gaOptions();\n const currentIndex = options.findIndex(({ cdkOption }) =>\n cdkOption.isActive(),\n );\n\n const findNextEnabled = (startIndex: number) => {\n let index = startIndex;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for (const _ of options) {\n // calculate next index with wrapping (using modulo)\n index = (index + direction + options.length) % options.length;\n if (!options[index].cdkOption.disabled) {\n return index;\n }\n }\n return -1; // no enabled options found\n };\n\n const nextIndex = findNextEnabled(currentIndex);\n if (nextIndex !== -1) {\n this.cdkListbox()._setActiveOption(options[nextIndex].cdkOption);\n }\n }\n\n private scrollActiveOptionIntoView() {\n // NOTE: since cdkListbox is not destroyed on close,\n // we need to reset the active option every time the overlay is opened\n const firstEnabledOption = this.visibleOptions().find(\n (option) => !option.cdkOption.disabled,\n );\n const selectedOption = this.visibleOptions().find((option) =>\n option.cdkOption.isSelected(),\n );\n if (selectedOption) {\n this.cdkListbox()._setActiveOption(selectedOption.cdkOption);\n } else if (firstEnabledOption) {\n this.cdkListbox()._setActiveOption(firstEnabledOption.cdkOption);\n }\n\n afterNextRender(\n {\n mixedReadWrite: () => {\n // NOTE: since dropdown is not destroyed on close,\n // we need to reset scroll position every time the overlay is opened\n // to ensure consistent scroll position when reopening\n this.gaDropdown().resetScroll();\n\n const activeOption = this.visibleOptions().find((option) =>\n option.cdkOption.isActive(),\n );\n if (activeOption) {\n activeOption.cdkOption.element.scrollIntoView({\n block: 'center',\n inline: 'nearest',\n });\n }\n },\n },\n { injector: this.injector },\n );\n }\n}\n","@if (leftIcon()) {\n <ga-icon [icon]=\"leftIcon()!\" />\n}\n\n<div class=\"ga-select__main-area\">\n @if (hasValue() && (!textValue() || multiple())) {\n @if (customSelectValue()) {\n <div class=\"ga-select__value\">\n <ng-content select=\"ga-select-value\" />\n </div>\n } @else {\n <ga-select-default-value />\n }\n } @else if (!searchable()) {\n <div class=\"ga-select__placeholder\">\n {{ placeholder() }}\n </div>\n }\n\n @if (searchable()) {\n <input\n #inputSearch\n type=\"text\"\n class=\"ga-select__input\"\n aria-autocomplete=\"list\"\n [value]=\"textValue()\"\n (input)=\"open(); textValue.set(inputSearch.value)\"\n (click)=\"open(); $event.stopPropagation()\"\n [attr.aria-controls]=\"isOpen() ? cdkListbox().id : null\"\n [attr.aria-activedescendant]=\"isOpen() ? activeDescendantId() : null\"\n [attr.aria-label]=\"searchInputLabel() ?? i18n.defaultSearchInputLabel\"\n [placeholder]=\"hasValue() ? '' : placeholder()\"\n (keydown)=\"onInputKeyDown($event)\"\n tabindex=\"-1\"\n [disabled]=\"disabled()\"\n />\n }\n</div>\n\n<div class=\"ga-select__suffix\">\n @if (clearable() && hasValue()) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n (click)=\"clearValue(); $event.stopPropagation()\"\n [attr.aria-label]=\"clearableLabel() ?? i18n.clearLabel\"\n style=\"font-size: 0\"\n >\n <ga-icon [icon]=\"icons.CircleX\" size=\"16\" />\n </button>\n }\n\n <ga-icon [icon]=\"menuStatusIcon()\" class=\"ga-select__action-icon\" />\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"repositionScrollStrategy\"\n (overlayOutsideClick)=\"close()\"\n (attach)=\"onOverlayAttach()\"\n (detach)=\"onOverlayDetach()\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n>\n <ng-content select=\"ga-select-dropdown\" />\n</ng-template>\n","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'ga-optgroup',\n template: `\n @if (label()) {\n <div class=\"ga-dropdown__caption\">{{ label() }}</div>\n }\n <ng-content />\n `,\n host: {\n role: 'group',\n },\n})\nexport class GaOptgroupComponent {\n readonly label = input<string>();\n}\n","import { Directive, Provider, forwardRef } from '@angular/core';\nimport { NG_VALIDATORS, RequiredValidator } from '@angular/forms';\n\n/**\n * @internal - Internal validator provider for ga-select required validation\n */\nexport const GA_SELECT_REQUIRED_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => GaSelectRequiredValidator),\n multi: true,\n};\n\n/**\n * @internal - Internal directive for ga-select required validation\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: `ga-select[required][formControlName], ga-select[required][formControl], ga-select[required][ngModel]`,\n providers: [GA_SELECT_REQUIRED_VALIDATOR],\n})\nexport class GaSelectRequiredValidator extends RequiredValidator {}\n","import { NgModule } from '@angular/core';\n\nimport { GaSelectComponent } from './select.component';\nimport { GaOptionComponent } from './option.component';\nimport { GaOptgroupComponent } from './opt-group.component';\nimport { GaSelectDropdownComponent } from './select-dropdown.component';\nimport { GaSelectDropdownSpinnerComponent } from './select-dropdown-spinner.component';\nimport { GaSelectRequiredValidator } from './select-required.validator';\nimport { GaSelectValueComponent } from './select-value.component';\n\n@NgModule({\n imports: [\n GaSelectComponent,\n GaOptionComponent,\n GaOptgroupComponent,\n GaSelectDropdownComponent,\n GaSelectDropdownSpinnerComponent,\n GaSelectValueComponent,\n GaSelectRequiredValidator,\n ],\n exports: [\n GaSelectComponent,\n GaOptionComponent,\n GaOptgroupComponent,\n GaSelectDropdownComponent,\n GaSelectDropdownSpinnerComponent,\n GaSelectValueComponent,\n GaSelectRequiredValidator,\n ],\n})\nexport class GaSelectModule {}\n","import { CdkOption } from '@angular/cdk/listbox';\nimport {\n afterEveryRender,\n booleanAttribute,\n Component,\n computed,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { GaDataSelectComponent } from './data-select.component';\nimport { GaCheckboxModule } from '../checkbox';\nimport { GaRadioModule } from '../radio';\n\n@Component({\n selector: 'ga-data-option',\n imports: [GaCheckboxModule, GaRadioModule],\n templateUrl: './data-option.component.html',\n hostDirectives: [\n {\n directive: CdkOption,\n inputs: [\n 'cdkOption: value',\n 'cdkOptionDisabled: disabled',\n 'cdkOptionTypeaheadLabel: typeaheadLabel',\n ],\n },\n ],\n host: {\n class: 'ga-dropdown__item',\n '[class.ga-dropdown__item--selected]': 'selected()',\n '[class.ga-dropdown__item--disabled]': 'cdkOption.disabled',\n '[class.ga-dropdown__item--active]': 'active() && !cdkOption.disabled',\n '(keydown.enter)': 'autoClose($event);',\n '(keydown.space)': 'autoClose($event);',\n '(click)': 'autoClose();',\n },\n})\nexport class GaDataOptionComponent<InputType = any> {\n private readonly _isSelected = signal(false);\n private readonly _isActive = signal(false);\n protected readonly selectComponent = inject(GaDataSelectComponent);\n\n readonly cdkOption = inject(CdkOption, { self: true });\n\n readonly value = input<InputType | null>(null);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly withInput = input(this.selectComponent.multiple(), {\n transform: booleanAttribute,\n });\n\n readonly selected = computed(() => {\n if (!this._isSelected()) {\n return false;\n }\n\n if (\n this.cdkOption.value !== undefined &&\n this.cdkOption.value !== null &&\n this.cdkOption.value !== ''\n ) {\n return true;\n }\n\n return this.selectComponent.canSelectNullable();\n });\n readonly active = this._isActive.asReadonly();\n\n constructor() {\n // NOTE: this is a workaround to set the default empty value (null) for cdkOption\n if (\n this.value() !== this.cdkOption.value &&\n this.cdkOption.value === undefined\n ) {\n this.cdkOption.value = this.value();\n }\n\n afterEveryRender({\n read: () => {\n // NOTE: currently there is no other reliable way to track the selected state,\n // refactor once cdk will be based on signals or more appropriate events introduced\n this._isSelected.set(this.cdkOption.isSelected());\n this._isActive.set(this.cdkOption.isActive());\n },\n });\n }\n\n autoClose(event?: Event) {\n if (this.cdkOption.isSelected()) {\n // if already selected, auto close\n this.selectComponent.autoClose();\n event?.preventDefault();\n }\n }\n}\n","@if (withInput()) {\n @if (selectComponent.multiple()) {\n <ga-checkbox\n [checked]=\"selected()\"\n [disabled]=\"disabled()\"\n aria-hidden=\"true\"\n style=\"pointer-events: none\"\n tabindex=\"-1\"\n />\n } @else {\n <ga-radio-button\n [checked]=\"selected()\"\n [disabled]=\"disabled()\"\n aria-hidden=\"true\"\n style=\"pointer-events: none\"\n tabindex=\"-1\"\n />\n }\n}\n<div class=\"ga-dropdown__item-label\"><ng-content /></div>\n","import { Injectable, makeEnvironmentProviders } from '@angular/core';\n\nexport function GA_DATA_SELECT_I18N_FACTORY() {\n return new GaDataSelectI18nDefault();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_DATA_SELECT_I18N_FACTORY,\n})\nexport abstract class GaDataSelectI18n {\n abstract clearLabel: string;\n abstract searchInputLabel: string;\n abstract noOptionsLabel: string;\n abstract displayLimitReachedLabel: (counter: number) => string;\n}\n\n@Injectable()\nexport class GaDataSelectI18nDefault extends GaDataSelectI18n {\n /** A label for the clear button */\n clearLabel = 'Clear';\n\n /** A label for the search input */\n searchInputLabel = 'Search';\n\n /** A label shown when there are no options to display */\n noOptionsLabel = 'No options';\n\n /** A label shown when the display limit is reached in multi-select mode */\n displayLimitReachedLabel = (counter: number) => `+${counter} more`;\n}\n\nexport function provideGaDataSelectI18n(\n value: GaDataSelectI18n | (() => GaDataSelectI18n),\n) {\n return makeEnvironmentProviders([\n typeof value === 'function'\n ? { provide: GaDataSelectI18n, useFactory: value }\n : { provide: GaDataSelectI18n, useValue: value },\n ]);\n}\n","import { Component, computed, inject, input, TemplateRef } from '@angular/core';\nimport { GaDataSelectComponent } from './data-select.component';\nimport { X } from 'lucide-angular';\nimport { GaIconModule } from '../icon';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { GaDataSelectI18n } from './data-select-i18n.service';\n\n@Component({\n selector: 'ga-data-select-value',\n templateUrl: './data-select-value.component.html',\n imports: [GaIconModule, NgTemplateOutlet],\n host: {\n class: 'ga-select__value',\n },\n})\nexport class GaDataSelectValueComponent {\n protected readonly selectComponent = inject(GaDataSelectComponent);\n protected readonly i18n = inject(GaDataSelectI18n);\n\n protected readonly icons = { X };\n\n readonly customValueTemplate = input<TemplateRef<any>>();\n\n protected readonly customValueTemplateContext = (item: any) => {\n if (!item) {\n return { $implicit: '', value: null, item: null };\n }\n return {\n $implicit: this.selectComponent.getItemLabel(item),\n value: this.selectComponent.getItemValue(item),\n item,\n };\n };\n\n protected readonly singleViewValue = computed(() => {\n if (!this.selectComponent.hasValue()) {\n return '';\n }\n const selectValue = this.selectComponent.value();\n if (!this.selectComponent.bindValue()) {\n return this.selectComponent.getItemLabel(selectValue);\n }\n const item = this.selectComponent\n .items()\n .find((item) =>\n this.selectComponent.compareFn()(\n this.selectComponent.getItemValue(item),\n selectValue,\n ),\n );\n return this.selectComponent.getItemLabel(item);\n });\n\n protected readonly selectedItems = computed(() => {\n const value = this.selectComponent.value();\n if (!this.selectComponent.hasValue() || !Array.isArray(value)) {\n return [];\n }\n if (!this.selectComponent.bindValue()) {\n return value;\n }\n return this.selectComponent\n .items()\n .filter((item) =>\n value.some((v) =>\n this.selectComponent.compareFn()(\n this.selectComponent.getItemValue(item),\n v,\n ),\n ),\n );\n });\n\n protected readonly visibleSelectedItems = computed(() => {\n const items = this.selectedItems();\n const limit = this.selectComponent.valueDisplayLimit();\n if (limit === null || limit >= items.length) {\n return items;\n }\n return items.slice(0, limit);\n });\n\n protected readonly hiddenItemsCount = computed(() => {\n return this.selectedItems().length - this.visibleSelectedItems().length;\n });\n\n protected deselectOption(value: any): void {\n this.selectComponent.deselectValue(value);\n }\n}\n","@if (selectComponent.multiple()) {\n @for (\n selectedItem of visibleSelectedItems();\n track selectComponent.getItemValue(selectedItem)\n ) {\n <div\n class=\"ga-tag\"\n [class.ga-tag--interactive-selected]=\"!selectComponent.disabled()\"\n [class.ga-tag--interactive-selected-disabled]=\"selectComponent.disabled()\"\n >\n <span class=\"ga-tag__label\">\n @if (customValueTemplate(); as templateRef) {\n <ng-container\n [ngTemplateOutlet]=\"templateRef\"\n [ngTemplateOutletContext]=\"customValueTemplateContext(selectedItem)\"\n />\n } @else {\n {{ selectComponent.getItemLabel(selectedItem) }}\n }\n </span>\n @if (!selectComponent.disabled()) {\n <div class=\"ga-tag__separator\"></div>\n <ga-icon\n [icon]=\"icons.X\"\n size=\"16\"\n class=\"ga-tag__icon\"\n (click)=\"\n deselectOption(selectComponent.getItemValue(selectedItem));\n $event.stopPropagation()\n \"\n />\n }\n </div>\n }\n @if (hiddenItemsCount() > 0) {\n <div\n class=\"ga-tag\"\n [class.ga-tag--interactive-selected]=\"!selectComponent.disabled()\"\n [class.ga-tag--interactive-selected-disabled]=\"selectComponent.disabled()\"\n >\n <span class=\"ga-tag__label\">{{\n i18n.displayLimitReachedLabel(hiddenItemsCount())\n }}</span>\n </div>\n }\n} @else {\n @if (customValueTemplate(); as templateRef) {\n <ng-container\n [ngTemplateOutlet]=\"templateRef\"\n [ngTemplateOutletContext]=\"\n customValueTemplateContext(selectComponent.selectedItem())\n \"\n />\n } @else {\n {{ singleViewValue() }}\n }\n}\n","import { Component } from '@angular/core';\nimport { GaSpinnerModule } from '../spinner';\n\n@Component({\n selector: 'ga-data-select-dropdown-spinner',\n template: `<ga-spinner size=\"16\" />`,\n imports: [GaSpinnerModule],\n host: {\n class: 'ga-dropdown__spinner',\n },\n})\nexport class GaDataSelectDropdownSpinnerComponent {}\n","import { CdkListbox } from '@angular/cdk/listbox';\nimport {\n booleanAttribute,\n Component,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\nimport { GaDataSelectDropdownSpinnerComponent } from './data-select-dropdown-spinner.component';\n\n@Component({\n selector: 'ga-data-select-dropdown',\n templateUrl: './data-select-dropdown.component.html',\n imports: [GaDataSelectDropdownSpinnerComponent],\n hostDirectives: [\n {\n directive: CdkListbox,\n inputs: [\n 'cdkListboxMultiple: multiple',\n 'cdkListboxUseActiveDescendant: useActiveDescendant',\n 'cdkListboxNavigationWrapDisabled: navigationWrapDisabled',\n 'cdkListboxCompareWith: compareWith',\n ],\n },\n ],\n host: {\n class: 'ga-dropdown ga-dropdown__content',\n },\n})\nexport class GaDataSelectDropdownComponent {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly cdkListbox = inject(CdkListbox, { self: true });\n\n readonly loading = input(false, { transform: booleanAttribute });\n\n resetScroll() {\n this.elementRef.nativeElement.scrollTo(0, 0);\n }\n}\n","<ng-content />\n\n@if (loading()) {\n <ga-data-select-dropdown-spinner />\n}\n","import { Component, input, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ga-data-optgroup',\n imports: [NgTemplateOutlet],\n template: `\n @if (customLabelTemplate(); as templateRef) {\n <div class=\"ga-dropdown__caption\">\n <ng-container\n [ngTemplateOutlet]=\"templateRef\"\n [ngTemplateOutletContext]=\"customLabelContext()\"\n />\n </div>\n } @else if (label()) {\n <div class=\"ga-dropdown__caption\">{{ label() }}</div>\n }\n <ng-content />\n `,\n host: {\n role: 'group',\n },\n})\nexport class GaDataOptgroupComponent {\n readonly label = input<string>();\n readonly customLabelTemplate = input<TemplateRef<any>>();\n readonly customLabelContext = input<any>();\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[gaDataSelectValueTpl]',\n})\nexport class GaDataSelectValueDirective {\n readonly templateRef = inject(TemplateRef, { self: true });\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[gaDataSelectOptionTpl]',\n})\nexport class GaDataSelectOptionLabelDirective {\n readonly templateRef = inject(TemplateRef, { self: true });\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[gaDataSelectOptgroupLabelTpl]',\n})\nexport class GaDataSelectOptgroupLabelDirective {\n readonly templateRef = inject(TemplateRef, { self: true });\n}\n","import {\n Component,\n ElementRef,\n OnDestroy,\n input,\n output,\n inject,\n booleanAttribute,\n computed,\n afterNextRender,\n} from '@angular/core';\n\n@Component({\n selector: 'ga-intersection-trigger',\n template: ``,\n styles: `\n :host {\n height: 0px;\n display: block;\n flex-shrink: 0;\n }\n `,\n})\nexport class GaIntersectionTriggerComponent implements OnDestroy {\n private observer?: IntersectionObserver;\n\n private readonly anchor = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly rootElement = input<ElementRef<HTMLElement>>();\n readonly rootMargin = input<string>('0px');\n readonly parentAsRoot = input(false, { transform: booleanAttribute });\n readonly trigger = output();\n\n protected root = computed(() => {\n return this.parentAsRoot()\n ? this.anchor.nativeElement.parentElement\n : this.rootElement()?.nativeElement;\n });\n\n constructor() {\n afterNextRender(() => {\n this.observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n this.trigger.emit();\n }\n },\n {\n root: this.root(),\n rootMargin: this.rootMargin(),\n threshold: 0,\n },\n );\n this.observer.observe(this.anchor.nativeElement);\n });\n }\n\n ngOnDestroy() {\n this.observer?.disconnect();\n }\n}\n","import {\n afterNextRender,\n booleanAttribute,\n Component,\n computed,\n contentChild,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n isDevMode,\n linkedSignal,\n model,\n numberAttribute,\n OnInit,\n output,\n signal,\n untracked,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { GaIconModule } from '../icon/icon.module';\nimport { ChevronDown, ChevronUp, CircleX } from 'lucide-angular';\nimport { GaButtonModule } from '../button/button.module';\nimport {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ConnectedPosition,\n createRepositionScrollStrategy,\n OverlayModule,\n} from '@angular/cdk/overlay';\nimport { GaIconData } from '../icon';\nimport { GaDataOptionComponent } from './data-option.component';\nimport { CdkListbox } from '@angular/cdk/listbox';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { GaDataSelectValueComponent } from './data-select-value.component';\nimport { GaLabelledByFormFieldDirective } from '../form-field/labelled-by-form-field.directive';\nimport { GaDataSelectI18n } from './data-select-i18n.service';\nimport { injectNgControlState } from '../utils/error-state';\nimport { GaFormFieldConnector } from '../form-field/form-field-connector';\nimport { GaDataSelectDropdownComponent } from './data-select-dropdown.component';\nimport { GaDataOptgroupComponent } from './data-optgroup.component';\nimport { GaDataSelectValueDirective } from './data-select-value.directive';\nimport { GaDataSelectOptionLabelDirective } from './data-select-option-label.directive';\nimport { GaDataSelectOptgroupLabelDirective } from './data-select-optgroup-label.directive';\nimport { IGaSelectOption } from './data-select-option.interface';\nimport { GaIntersectionTriggerComponent } from '../utils/intersection-trigger.directive';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-data-select',\n templateUrl: './data-select.component.html',\n imports: [\n GaIconModule,\n GaButtonModule,\n OverlayModule,\n GaDataSelectValueComponent,\n GaDataSelectDropdownComponent,\n GaDataOptionComponent,\n GaDataOptgroupComponent,\n GaIntersectionTriggerComponent,\n NgTemplateOutlet,\n ],\n hostDirectives: [\n CdkOverlayOrigin,\n {\n directive: GaLabelledByFormFieldDirective,\n inputs: ['aria-labelledby'],\n },\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaDataSelectComponent),\n multi: true,\n },\n ],\n host: {\n role: 'combobox',\n '[attr.id]': 'id()',\n class: 'ga-select',\n '[class.ga-select--multi]': 'multiple()',\n '[class.ga-select--expanded]': 'isOpen()',\n '[class.ga-select--disabled]': 'disabled()',\n '[class.ga-select--invalid]': 'invalid()',\n '[class.ga-select--empty]': '!hasValue()',\n 'aria-haspopup': 'listbox',\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.aria-controls]': 'isOpen() ? cdkListbox()?.id : null',\n '[attr.aria-invalid]': 'invalid()',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.aria-owns]': 'isOpen() && searchable() ? cdkListbox()?.id : null',\n '[attr.aria-activedescendant]':\n 'isOpen() && !searchable() ? activeDescendantId() : null',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '(click)': 'toggle()',\n '(keydown.arrowdown)': 'open(); $event.preventDefault()',\n '(keydown.space)': 'open(); $event.preventDefault()',\n '(keydown.enter)': 'open(); $event.preventDefault()',\n '(keydown.backspace)': 'clearValue(); $event.preventDefault()',\n },\n})\nexport class GaDataSelectComponent implements OnInit, ControlValueAccessor {\n private readonly _uniqueId = `ga-data-select-${++nextUniqueId}`;\n\n protected readonly icons = { CircleX };\n\n private _onTouched?: () => any;\n private _onModelChanged?: (value: any) => void;\n protected readonly positions: ConnectedPosition[] = [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8,\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n ];\n\n private readonly injector = inject(Injector);\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n protected readonly i18n = inject(GaDataSelectI18n);\n protected readonly overlayOrigin = inject(CdkOverlayOrigin);\n protected readonly repositionScrollStrategy = createRepositionScrollStrategy(\n this.injector,\n );\n private readonly implicitNgControlState = injectNgControlState();\n\n private readonly _isOpen = signal(false);\n private shouldRecoverFocus = false;\n\n readonly searchValue = signal<string | null>(null);\n\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly value = model<any | any[] | null>(null);\n readonly placeholder = input<string>('');\n readonly disabledInput = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly invalidInput = input(null, {\n alias: 'invalid',\n transform: booleanAttribute,\n });\n readonly compareFn = input<(o1: any, o2: any) => boolean>((a, b) => a === b);\n readonly searchable = input(false, { transform: booleanAttribute });\n readonly customFilter = input(false, { transform: booleanAttribute });\n readonly clearable = input(false, { transform: booleanAttribute });\n readonly clearableLabel = input<string>();\n readonly noOptionsLabel = input<string>();\n readonly canSelectNullable = input(false, {\n transform: booleanAttribute,\n });\n readonly leftIcon = input<GaIconData>();\n readonly idInput = input<string | null>(null, { alias: 'id' });\n readonly items = input<IGaSelectOption[]>([]);\n readonly bindValue = input<string>();\n readonly bindLabel = input<string>();\n readonly groupBy = input<string | ((item: IGaSelectOption) => string)>();\n readonly loading = input(false, { transform: booleanAttribute });\n readonly withOptionInput = input(null, { transform: booleanAttribute });\n readonly valueDisplayLimit = input(null, { transform: numberAttribute });\n\n readonly searchValueChange = output<string | null>();\n readonly opened = output();\n readonly closed = output();\n readonly optionsEndReached = output();\n\n protected readonly dropdownElRef = viewChild<\n unknown,\n ElementRef<HTMLElement>\n >('selectDropdown', {\n read: ElementRef,\n });\n protected readonly gaOptions = viewChildren(GaDataOptionComponent);\n protected readonly cdkListbox = viewChild(CdkListbox);\n protected readonly gaDropdown = viewChild(GaDataSelectDropdownComponent);\n protected readonly customValueTemplate = contentChild(\n GaDataSelectValueDirective,\n );\n protected readonly customOptionLabelTemplate = contentChild(\n GaDataSelectOptionLabelDirective,\n );\n protected readonly customOptgroupLabelTemplate = contentChild(\n GaDataSelectOptgroupLabelDirective,\n );\n protected readonly inputSearch =\n viewChild<ElementRef<HTMLInputElement>>('inputSearch');\n protected readonly connectedOverlay = viewChild(CdkConnectedOverlay);\n\n readonly id = computed(() => {\n return this.idInput() ?? this._uniqueId;\n });\n readonly isOpen = this._isOpen.asReadonly();\n readonly disabled = linkedSignal(() => this.disabledInput());\n protected readonly menuStatusIcon = computed(() => {\n return this._isOpen() ? ChevronUp : ChevronDown;\n });\n readonly selectedItem = computed(() => {\n if (!this.bindValue()) {\n return this.value();\n }\n return this.items().find((item) =>\n this.compareFn()(this.getItemValue(item), this.value()),\n );\n });\n\n // Selected items for multi-select\n protected readonly selectedItems = computed(() => {\n const value = this.value();\n if (!this.hasValue() || !Array.isArray(value)) {\n return [];\n }\n return this.items().filter((item) =>\n value.some((v) => this.compareFn()(this.getItemValue(item), v)),\n );\n });\n\n // Template context factory for option labels\n protected getOptionLabelTemplateContext(item: IGaSelectOption) {\n return {\n $implicit: this.getItemLabel(item),\n value: this.getItemValue(item),\n item: item,\n };\n }\n\n // Template context factory for optgroup labels\n protected getOptgroupLabelTemplateContext(group: {\n label: string;\n items: IGaSelectOption[];\n }) {\n return {\n $implicit: group.label,\n label: group.label,\n items: group.items,\n };\n }\n\n protected readonly filteredItems = computed(() => {\n const searchText = this.searchValue()?.toLowerCase() ?? '';\n if (!searchText || !this.searchable() || this.customFilter()) {\n return this.items();\n }\n\n return this.items().filter((item) => {\n const label = this.getItemLabel(item);\n return label.toLowerCase().includes(searchText);\n });\n });\n\n // Returns selected values not in filtered items, ensuring cdkListbox maintains state during filtering\n protected readonly virtualItems = computed(() => {\n const value = this.value();\n if (this.bindValue() || !Array.isArray(value)) {\n return [];\n }\n\n return value.filter((val: any) => {\n return !this.filteredItems().some((item) =>\n this.compareFn()(this.getItemValue(item), val),\n );\n });\n });\n\n protected readonly groupedItems = computed(() => {\n const items = this.filteredItems();\n const groupByKey = this.groupBy();\n\n if (!groupByKey) {\n return [{ label: null, items }];\n }\n\n const groups = new Map<string, IGaSelectOption[]>();\n items.forEach((item) => {\n const groupLabel =\n typeof groupByKey === 'function'\n ? groupByKey(item)\n : this.getNestedValue(item, groupByKey);\n if (!groups.has(groupLabel)) {\n groups.set(groupLabel, []);\n }\n groups.get(groupLabel)!.push(item);\n });\n\n return Array.from(groups.entries()).map(([label, items]) => ({\n label,\n items,\n }));\n });\n\n protected readonly hasNoOptions = computed(() => {\n return this.filteredItems().length === 0;\n });\n\n readonly activeDescendantId = computed(() => {\n const activeOption = this.gaOptions().find((option) => option.active());\n return activeOption?.cdkOption.id;\n });\n\n readonly hasValue = computed(() => {\n const value = this.value();\n if (!this.multiple() && (value === null || value === undefined)) {\n return this.canSelectNullable();\n }\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n return true;\n });\n\n readonly invalid = computed(() => {\n return this.invalidInput() ?? this.implicitNgControlState.inError();\n });\n\n readonly listboxCompareWith = computed(() => {\n return (o1: any, o2: any) => {\n if (o1 === null || o1 === undefined || o2 === null || o2 === undefined) {\n // for some reason cdkListbox compareWith is sometimes called with null/undefined values\n // in that case, use strict equality to avoid null reference issues\n return o1 === o2;\n }\n return this.compareFn()(o1, o2);\n };\n });\n\n // Helper method to get the label for an item\n getItemLabel(item: IGaSelectOption): string {\n const bindLabel = this.bindLabel();\n if (!bindLabel) {\n return String(item);\n }\n return String(this.getNestedValue(item, bindLabel));\n }\n\n // Helper method to get the value for an item\n getItemValue(item: IGaSelectOption): any {\n const bindValue = this.bindValue();\n if (!bindValue) {\n return item;\n }\n if (this.searchable()) {\n return item;\n }\n return this.getNestedValue(item, bindValue);\n }\n\n // Helper method to check if an item is disabled\n getItemDisabled(item: IGaSelectOption): boolean {\n return item?.$disabled === true;\n }\n\n // Helper method to get the typeahead label for an item\n getItemTypeaheadLabel(item: IGaSelectOption): string | null {\n return item?.$typeaheadLabel;\n }\n\n // Helper method to get nested property value\n private getNestedValue(obj: any, path: string): any {\n return path.split('.').reduce((current, prop) => current?.[prop], obj);\n }\n\n constructor() {\n effect(() => {\n // if the select became disabled while open, close it\n if (this.disabled() && this._isOpen()) {\n this.close();\n }\n });\n\n if (isDevMode()) {\n effect(() => {\n if (this.bindValue() && this.searchable()) {\n console.warn(\n 'GaDataSelectComponent: `bindValue` is ignored with `searchable` mode, value and item must be of the same type. See docs for more details.',\n );\n }\n });\n }\n\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() => formFieldConnector.controlDisabled.set(this.disabled()));\n }\n\n effect(() => {\n // emit search value changes\n this.searchValueChange.emit(this.searchValue());\n });\n\n effect(() => {\n // update the overlayPosition since it may change size when selecting/deselecting options\n this.value();\n untracked(() => {\n if (this.multiple()) {\n setTimeout(() => {\n this.connectedOverlay()?.overlayRef?.updatePosition();\n });\n }\n });\n });\n\n effect(() => {\n // sync cdkListbox inputs & value (push)\n const cdkListbox = this.cdkListbox();\n if (cdkListbox) {\n cdkListbox.value = this.multiple()\n ? (this.value() as any[])\n : [this.value()];\n }\n });\n\n effect(() => {\n // when options change, ensure there is an active option selected and correct overlay position\n const options = this.gaOptions();\n untracked(() => {\n if (!this.isOpen()) {\n return;\n }\n if (!options.some((option) => option.cdkOption.isActive())) {\n const firstOption = options.find(\n (option) => !option.cdkOption.disabled,\n );\n const selectedOption = options.find((option) =>\n option.cdkOption.isSelected(),\n );\n if (selectedOption && !this.searchValue()) {\n this.cdkListbox()?._setActiveOption(selectedOption.cdkOption);\n } else if (firstOption) {\n // if no active option, set the first enabled as active\n this.cdkListbox()?._setActiveOption(firstOption.cdkOption);\n }\n }\n this.connectedOverlay()?.overlayRef?.updatePosition();\n });\n });\n\n effect(() => {\n // sync cdkListbox value changes (pull)\n const cdkListbox = this.cdkListbox();\n if (cdkListbox) {\n untracked(() => {\n cdkListbox.valueChange.subscribe(({ value }) => {\n if (!this.multiple()) {\n [value] = value;\n }\n this.value.set(value);\n this._onModelChanged?.(value);\n this.autoClose();\n });\n });\n }\n });\n }\n\n ngOnInit() {\n // initialize proper default value for multiple select\n if (this.multiple() && this.value() === null) {\n this.value.set([]);\n }\n }\n\n writeValue(value: any) {\n this.value.set(value);\n }\n\n registerOnChange(fn: any) {\n this._onModelChanged = fn;\n }\n\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n setDisabledState(disabled: boolean) {\n this.disabled.set(disabled);\n }\n\n toggle() {\n if (this._isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open() {\n if (this.disabled() || this._isOpen()) {\n return;\n }\n this._isOpen.set(true);\n }\n\n close() {\n if (!this._isOpen()) {\n return;\n }\n this._isOpen.set(false);\n }\n\n autoClose() {\n // close that was initiated by clicking the option\n if (!this.multiple()) {\n this.shouldRecoverFocus = true;\n this.close();\n }\n }\n\n focusListbox() {\n this.cdkListbox()!.focus();\n }\n\n setActiveItemAsSelected() {\n const options = this.gaOptions();\n let activeOption = options.find((option) => option.cdkOption.isActive());\n if (!activeOption && options.length > 0) {\n activeOption = options[0];\n }\n if (activeOption) {\n const { cdkOption } = activeOption;\n if (!this.multiple() && cdkOption.isSelected()) {\n // if single select and the active option is already selected, do nothing\n return;\n }\n this.cdkListbox()!.toggle(cdkOption);\n this.syncValue();\n }\n }\n\n onOverlayKeydown(event: KeyboardEvent) {\n if (event.code === 'Escape') {\n this.shouldRecoverFocus = true;\n } else if (event.code === 'Tab') {\n this.close();\n }\n }\n\n protected clearValue() {\n if (!this.clearable()) {\n return;\n }\n if (\n this.elementRef.nativeElement !== document.activeElement &&\n this.inputSearch()?.nativeElement !== document.activeElement\n ) {\n this._onTouched?.();\n }\n const value = this.multiple() ? [] : null;\n this.value.set(value);\n this._onModelChanged?.(value);\n this.autoClose();\n }\n\n protected onInputKeyDown(event: KeyboardEvent) {\n switch (event.code) {\n case 'ArrowDown':\n case 'ArrowUp':\n case 'Enter': {\n // redirect the event to the cdkListbox\n event.preventDefault();\n event.stopPropagation();\n const eventClone = new KeyboardEvent(event.type, event);\n this.dropdownElRef()?.nativeElement.dispatchEvent(eventClone);\n if (event.code === 'Enter' && this.isOpen()) {\n // if the value wasn't changed via cdkListbox valueChange, close the dropdown manually\n this.autoClose();\n }\n break;\n }\n case 'Space':\n event.stopPropagation();\n break;\n case 'Tab':\n this.close();\n break;\n case 'Backspace':\n if (this.searchValue() === '') {\n this.clearValue();\n }\n event.stopPropagation();\n break;\n }\n }\n\n protected onOverlayAttach() {\n this.shouldRecoverFocus = false;\n this._isOpen.set(true);\n if (this.searchable()) {\n this.inputSearch()!.nativeElement.focus();\n } else {\n this.focusListbox();\n }\n this.searchValue.set('');\n afterNextRender(\n {\n mixedReadWrite: () => {\n if (!this.multiple()) {\n this.markSelectedOptionAsActive();\n }\n this.scrollActiveOptionIntoView();\n },\n },\n { injector: this.injector },\n );\n this.opened.emit();\n }\n\n protected onOverlayDetach() {\n this._isOpen.set(false);\n if (\n this.inputSearch()?.nativeElement === document.activeElement ||\n this.shouldRecoverFocus\n ) {\n this.elementRef.nativeElement.focus();\n }\n this.searchValue.set(null);\n this._onTouched?.();\n this.closed.emit();\n }\n\n deselectValue(value: any) {\n const comboboxValue = this.value();\n if (Array.isArray(comboboxValue)) {\n this.value.update((v) =>\n v.filter((item: any) => !this.compareFn()(item, value)),\n );\n } else {\n this.value.set(null);\n }\n this._onModelChanged?.(this.value());\n }\n\n protected endReached() {\n const dropdownEl = this.dropdownElRef()?.nativeElement;\n if (!dropdownEl) {\n return;\n }\n if (dropdownEl.scrollHeight > dropdownEl.clientHeight) {\n this.optionsEndReached.emit();\n }\n }\n\n private syncValue() {\n let { value } = this.cdkListbox()!;\n if (!this.multiple()) {\n [value] = value;\n }\n this.value.set(value);\n }\n\n private markSelectedOptionAsActive() {\n const selectedOption = this.gaOptions().find((option) =>\n option.cdkOption.isSelected(),\n );\n if (selectedOption) {\n this.cdkListbox()?._setActiveOption(selectedOption.cdkOption);\n }\n }\n\n private scrollActiveOptionIntoView() {\n const activeOption = this.gaOptions().find((option) =>\n option.cdkOption.isActive(),\n );\n if (activeOption) {\n activeOption.cdkOption.element.scrollIntoView({\n block: 'center',\n inline: 'nearest',\n });\n }\n }\n}\n","@if (leftIcon()) {\n <ga-icon [icon]=\"leftIcon()!\" />\n}\n\n<div class=\"ga-select__main-area\">\n @if (hasValue() && (!searchValue() || multiple())) {\n <ga-data-select-value\n [customValueTemplate]=\"customValueTemplate()?.templateRef\"\n />\n } @else if (!searchable()) {\n <div class=\"ga-select__placeholder\">\n {{ placeholder() }}\n </div>\n }\n\n @if (searchable()) {\n <input\n #inputSearch\n type=\"text\"\n class=\"ga-select__input\"\n aria-autocomplete=\"list\"\n [value]=\"searchValue() ?? ''\"\n (input)=\"open(); searchValue.set(inputSearch.value)\"\n (click)=\"open(); $event.stopPropagation()\"\n [attr.aria-controls]=\"isOpen() ? cdkListbox()?.id : null\"\n [attr.aria-activedescendant]=\"isOpen() ? activeDescendantId() : null\"\n [attr.aria-label]=\"i18n.searchInputLabel\"\n [placeholder]=\"hasValue() ? '' : placeholder()\"\n (keydown)=\"onInputKeyDown($event)\"\n tabindex=\"-1\"\n [disabled]=\"disabled()\"\n />\n }\n</div>\n\n<div class=\"ga-select__suffix\">\n @if (clearable() && hasValue()) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n (click)=\"clearValue(); $event.stopPropagation()\"\n [attr.aria-label]=\"clearableLabel() ?? i18n.clearLabel\"\n style=\"font-size: 0\"\n >\n <ga-icon [icon]=\"icons.CircleX\" size=\"16\" />\n </button>\n }\n\n <ga-icon [icon]=\"menuStatusIcon()\" class=\"ga-select__action-icon\" />\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"repositionScrollStrategy\"\n (overlayOutsideClick)=\"close()\"\n (attach)=\"onOverlayAttach()\"\n (detach)=\"onOverlayDetach()\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n>\n <ga-data-select-dropdown\n [multiple]=\"multiple()\"\n [useActiveDescendant]=\"searchable()\"\n [navigationWrapDisabled]=\"loading()\"\n [compareWith]=\"listboxCompareWith()\"\n [loading]=\"loading()\"\n #selectDropdown\n >\n @if (hasNoOptions() && !loading()) {\n <div class=\"ga-dropdown__caption\">\n {{ noOptionsLabel() ?? i18n.noOptionsLabel }}\n </div>\n }\n\n @for (group of groupedItems(); track group.label) {\n @if (group.label) {\n <ga-data-optgroup\n [label]=\"group.label\"\n [customLabelTemplate]=\"customOptgroupLabelTemplate()?.templateRef\"\n [customLabelContext]=\"getOptgroupLabelTemplateContext(group)\"\n >\n @for (item of group.items; track getItemValue(item)) {\n <ga-data-option\n [value]=\"getItemValue(item)\"\n [withInput]=\"withOptionInput()\"\n [disabled]=\"getItemDisabled(item)\"\n [typeaheadLabel]=\"getItemTypeaheadLabel(item)\"\n >\n @if (customOptionLabelTemplate(); as labelTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"labelTemplate.templateRef\"\n [ngTemplateOutletContext]=\"\n getOptionLabelTemplateContext(item)\n \"\n />\n } @else {\n {{ getItemLabel(item) }}\n }\n </ga-data-option>\n }\n </ga-data-optgroup>\n } @else {\n @for (item of group.items; track getItemValue(item)) {\n <ga-data-option\n [value]=\"getItemValue(item)\"\n [withInput]=\"withOptionInput() ?? multiple()\"\n [disabled]=\"getItemDisabled(item)\"\n [typeaheadLabel]=\"getItemTypeaheadLabel(item)\"\n >\n @if (customOptionLabelTemplate(); as labelTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"labelTemplate.templateRef\"\n [ngTemplateOutletContext]=\"getOptionLabelTemplateContext(item)\"\n />\n } @else {\n {{ getItemLabel(item) }}\n }\n </ga-data-option>\n }\n }\n }\n\n <!--\n Virtual items: Render hidden disabled options for all selected values.\n This ensures cdkListbox maintains state when filtering occurs - even when\n selected values don't match the currently visible filtered options, they\n remain valid options in the listbox, preventing state loss.\n -->\n @for (item of virtualItems(); track getItemValue(item)) {\n <ga-data-option\n [value]=\"getItemValue(item)\"\n [withInput]=\"withOptionInput() ?? multiple()\"\n disabled\n hidden\n >\n @if (customOptionLabelTemplate(); as labelTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"labelTemplate.templateRef\"\n [ngTemplateOutletContext]=\"getOptionLabelTemplateContext(item)\"\n />\n } @else {\n {{ getItemLabel(item) }}\n }\n </ga-data-option>\n }\n\n <ga-intersection-trigger\n parentAsRoot\n rootMargin=\"0% 0% 20px 0%\"\n (trigger)=\"endReached()\"\n />\n </ga-data-select-dropdown>\n</ng-template>\n","import { Directive, Provider, forwardRef } from '@angular/core';\nimport { NG_VALIDATORS, RequiredValidator } from '@angular/forms';\n\n/**\n * @internal - Internal validator provider for ga-data-select required validation\n */\nexport const GA_DATA_SELECT_REQUIRED_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => GaDataSelectRequiredValidator),\n multi: true,\n};\n\n/**\n * @internal - Internal directive for ga-data-select required validation\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: `ga-data-select[required][formControlName], ga-data-select[required][formControl], ga-data-select[required][ngModel]`,\n providers: [GA_DATA_SELECT_REQUIRED_VALIDATOR],\n})\nexport class GaDataSelectRequiredValidator extends RequiredValidator {}\n","import { NgModule } from '@angular/core';\n\nimport { GaDataSelectComponent } from './data-select.component';\nimport { GaDataSelectRequiredValidator } from './data-select-required.validator';\nimport { GaDataSelectValueDirective } from './data-select-value.directive';\nimport { GaDataSelectOptionLabelDirective } from './data-select-option-label.directive';\nimport { GaDataSelectOptgroupLabelDirective } from './data-select-optgroup-label.directive';\n\n@NgModule({\n imports: [\n GaDataSelectComponent,\n GaDataSelectRequiredValidator,\n GaDataSelectValueDirective,\n GaDataSelectOptionLabelDirective,\n GaDataSelectOptgroupLabelDirective,\n ],\n exports: [\n GaDataSelectComponent,\n GaDataSelectRequiredValidator,\n GaDataSelectValueDirective,\n GaDataSelectOptionLabelDirective,\n GaDataSelectOptgroupLabelDirective,\n ],\n})\nexport class GaDataSelectModule {}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n linkedSignal,\n output,\n Provider,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Check } from 'lucide-angular';\nimport { GaFormFieldConnector } from '../form-field/form-field-connector';\nimport { GaIconModule } from '../icon';\nimport { injectNgControlState } from '../utils/error-state';\n\nexport const SWITCH_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaSwitchComponent),\n multi: true,\n};\n\n// Increasing integer for generating unique ids for switch components.\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-switch',\n templateUrl: './switch.component.html',\n imports: [GaIconModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [SWITCH_CONTROL_VALUE_ACCESSOR],\n host: {\n class: 'ga-switch',\n '[class.ga-switch--checked]': 'checkedModel()',\n '[class.ga-switch--disabled]': 'disabledModel()',\n '[class.ga-switch--invalid]': 'invalidComputed()',\n '[attr.id]': 'null',\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n '[attr.aria-errormessage]': 'null',\n '[attr.aria-invalid]': 'null',\n },\n})\nexport class GaSwitchComponent implements ControlValueAccessor {\n protected readonly icons = { Check };\n\n /** @ignore */\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n /** @ignore */\n private readonly implicitNgControlState = injectNgControlState();\n\n /** @ignore */\n readonly _uniqueId = `ga-switch-${++nextUniqueId}`;\n\n /** @ignore */\n readonly tabindex = input<string | number>(0, {\n alias: 'tabindex',\n });\n\n /** @ignore */\n private _onTouched?: () => any;\n /** @ignore */\n private _onModelChanged?: (value: any) => void;\n\n readonly checked = input(false, {\n transform: booleanAttribute,\n });\n readonly disabled = input(false, {\n transform: booleanAttribute,\n });\n readonly ariaInvalid = input<string | null>(null, { alias: 'aria-invalid' });\n readonly label = input<string>('');\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly ariaLabelledby = input<string | null>(null, {\n alias: 'aria-labelledby',\n });\n readonly ariaDescribedby = input<string | null>(null, {\n alias: 'aria-describedby',\n });\n readonly ariaErrormessage = input<string | null>(null, {\n alias: 'aria-errormessage',\n });\n readonly nameInput = input<string | null>(null, { alias: 'name' });\n readonly id = input<string | null>(null);\n\n readonly disabledModel = linkedSignal(() => this.disabled());\n readonly checkedModel = linkedSignal(() => this.checked());\n\n readonly checkedChange = output<boolean>();\n\n /** @ignore */\n readonly inputId = computed(() => this.id() ?? this._uniqueId);\n /** @ignore */\n readonly name = computed(() => {\n return (\n this.nameInput() ?? this.implicitNgControlState.name() ?? this._uniqueId\n );\n });\n /** @ignore */\n readonly invalidComputed = computed(() => {\n return this.ariaInvalid()\n ? this.ariaInvalid() === 'true'\n : this.implicitNgControlState.inError();\n });\n\n constructor() {\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() =>\n formFieldConnector.controlDisabled.set(this.disabledModel()),\n );\n effect(() => formFieldConnector.controlId.set(this.inputId()));\n }\n }\n\n /** @ignore */\n onInputChange(event: Event) {\n const target = event.target as HTMLInputElement;\n const newValue = target.checked;\n\n this.checkedModel.set(newValue);\n this._onModelChanged?.(newValue);\n this.checkedChange.emit(newValue);\n }\n\n /** @ignore */\n onBlur() {\n this._onTouched?.();\n }\n\n // ControlValueAccessor implementation\n writeValue(value: any) {\n const newValue = !!value;\n this.checkedModel.set(newValue);\n }\n\n registerOnChange(fn: any) {\n this._onModelChanged = fn;\n }\n\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n setDisabledState(disabled: boolean) {\n this.disabledModel.set(disabled);\n }\n}\n","<input\n #input\n type=\"checkbox\"\n class=\"ga-switch__input\"\n [attr.id]=\"inputId()\"\n [name]=\"name()\"\n [checked]=\"checkedModel()\"\n [disabled]=\"disabledModel()\"\n [attr.tabindex]=\"tabindex()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n [attr.aria-errormessage]=\"ariaErrormessage()\"\n [attr.aria-invalid]=\"invalidComputed() ? 'true' : null\"\n (change)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"\n/>\n<div class=\"ga-switch__marker\">\n <ga-icon\n [icon]=\"icons.Check\"\n class=\"ga-switch__check-icon\"\n [size]=\"16\"\n aria-hidden=\"true\"\n />\n <span class=\"ga-switch__slider\"></span>\n</div>\n@if (label()) {\n <label [attr.for]=\"inputId()\" class=\"ga-switch__label\">{{ label() }}</label>\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaSwitchComponent } from './switch.component';\n\n@NgModule({\n imports: [GaSwitchComponent],\n exports: [GaSwitchComponent],\n})\nexport class GaSwitchModule {}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\nimport { GaIconData, GaIconModule } from '../icon';\n\nexport type GaLinkVariant = 'inline';\nexport type GaLinkSize = 'small' | 'medium' | 'large';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'a[gaLink], button[gaLink]',\n template: `\n @if (leadingIcon()) {\n <ga-icon\n class=\"ga-link__icon\"\n [icon]=\"leadingIcon()\"\n [size]=\"iconSize()\"\n />\n }\n <ng-content />\n @if (trailingIcon()) {\n <ga-icon\n class=\"ga-link__icon\"\n [icon]=\"trailingIcon()\"\n [size]=\"iconSize()\"\n />\n }\n `,\n host: {\n class: 'ga-link',\n '[class.ga-link--inline]': `variant() === 'inline'`,\n '[class.ga-link--small]': `size() === 'small'`,\n '[class.ga-link--large]': `size() === 'large'`,\n '[class.ga-link--disabled]': `disabled()`,\n '[attr.aria-disabled]': 'disabled()',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '[attr.role]': `elementRef.nativeElement.tagName.toLowerCase() === 'button' ? 'link' : null`,\n '(click)': 'onClick($event)',\n },\n imports: [GaIconModule],\n})\nexport class GaLinkDirective {\n readonly variant = input<GaLinkVariant | ''>('', { alias: 'gaLink' });\n readonly size = input<GaLinkSize>('medium', { alias: 'gaLinkSize' });\n readonly disabled = input(false, {\n alias: 'gaLinkDisabled',\n transform: booleanAttribute,\n });\n readonly leadingIcon = input<GaIconData | string>('', {\n alias: 'gaLinkLeadingIcon',\n });\n readonly trailingIcon = input<GaIconData | string>('', {\n alias: 'gaLinkTrailingIcon',\n });\n\n protected readonly elementRef = inject(ElementRef);\n protected readonly iconSize = computed(() =>\n this.size() === 'large' ? 24 : 16,\n );\n\n protected onClick(event: Event): void {\n if (this.disabled()) {\n event.preventDefault();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaLinkDirective } from './link.directive';\n\n@NgModule({\n imports: [GaLinkDirective],\n exports: [GaLinkDirective],\n})\nexport class GaLinkModule {}\n","import {\n Component,\n Directive,\n TemplateRef,\n booleanAttribute,\n input,\n contentChild,\n viewChild,\n computed,\n} from '@angular/core';\nimport { GaIconData } from '../icon/icon.component';\n\n@Directive({\n selector: 'ng-template[gaTabContent]',\n})\nexport class GaTabContentDirective {}\n\n@Component({\n selector: 'ga-tab',\n templateUrl: './tab.component.html',\n})\nexport class GaTabComponent {\n readonly title = input('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly rightIcon = input<GaIconData>();\n readonly rightIconColor = input<string>();\n\n /** @ignore */\n readonly explicitContent = contentChild(GaTabContentDirective, {\n read: TemplateRef,\n });\n\n /** @ignore */\n readonly implicitContent = viewChild.required(TemplateRef);\n\n /** @ignore */\n readonly contentTpl = computed(() => {\n return this.explicitContent() ?? this.implicitContent();\n });\n}\n","<ng-template><ng-content></ng-content></ng-template>\n","import {\n Component,\n booleanAttribute,\n numberAttribute,\n input,\n contentChildren,\n effect,\n untracked,\n signal,\n output,\n linkedSignal,\n} from '@angular/core';\n\nimport { GaTabComponent } from './tab.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { GaIconComponent } from '../icon';\n\nexport interface GaTabChangeEvent {\n index: number;\n tab: GaTabComponent;\n}\n\nexport type GaTabsOrientation = 'horizontal' | 'vertical';\n\nexport interface GaBeforeTabChangeEvent {\n newIndex: number;\n oldIndex: number;\n preventChange: () => void;\n}\n\n// Increasing integer for generating unique id for tabpanels.\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-tabs',\n imports: [NgTemplateOutlet, GaIconComponent],\n templateUrl: './tabs.component.html',\n styleUrl: './tabs.component.scss',\n host: {\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[class.ga-tabs-container--horizontal]': \"orientation() === 'horizontal'\",\n '[class.ga-tabs-container--vertical]': \"orientation() === 'vertical'\",\n },\n})\nexport class GaTabsComponent {\n /** @ignore */\n readonly uniqueId = `ga-tabs-${nextUniqueId++}`;\n\n /** @ignore */\n readonly selectedTab = signal<GaTabComponent | null>(null);\n\n /** @ignore */\n readonly tabs = contentChildren(GaTabComponent);\n\n readonly withKeyline = input(false, { transform: booleanAttribute });\n readonly orientation = input<GaTabsOrientation>('horizontal');\n readonly ariaLabel = input<string>(undefined, { alias: 'aria-label' });\n readonly ariaLabelledby = input<string>(undefined, {\n alias: 'aria-labelledby',\n });\n readonly selectedIndexInput = input(0, {\n transform: numberAttribute,\n alias: 'selectedIndex',\n });\n readonly selectedIndex = linkedSignal(() => this.selectedIndexInput());\n\n readonly beforeTabChange = output<GaBeforeTabChangeEvent>();\n readonly selectedIndexChange = output<number>();\n readonly selectedTabChange = output<GaTabChangeEvent>();\n\n constructor() {\n effect(() => {\n const selectedIndex = this.selectedIndex();\n untracked(() => this.selectTab(selectedIndex, false));\n });\n\n effect(() => {\n const selectedTab = this.selectedTab();\n const tabs = this.tabs();\n if (selectedTab && !tabs.includes(selectedTab)) {\n untracked(() => this.selectTab(this.selectedIndex(), true));\n }\n });\n }\n\n /** @ignore */\n onTabClick(index: number) {\n let canChange = true;\n this.beforeTabChange.emit({\n newIndex: index,\n oldIndex: this.selectedIndex(),\n preventChange: () => {\n canChange = false;\n },\n });\n if (canChange) {\n this.selectTab(index, true);\n }\n }\n\n protected selectTab(index: number, broadcastEvent: boolean) {\n const tabs = this.tabs();\n if (!tabs?.length) {\n return;\n }\n\n const clampedTabIndex = Math.min(tabs!.length - 1, Math.max(index || 0, 0));\n const tabAtIndex = tabs.find((_, i) => i === clampedTabIndex)!;\n\n if (tabAtIndex.disabled()) {\n return;\n }\n\n if (clampedTabIndex !== this.selectedIndex()) {\n this.selectedIndex.set(clampedTabIndex);\n if (broadcastEvent) {\n this.selectedIndexChange.emit(clampedTabIndex);\n }\n }\n\n if (tabAtIndex !== this.selectedTab()) {\n this.selectedTab.set(tabAtIndex);\n if (broadcastEvent) {\n this.selectedTabChange.emit({\n index: clampedTabIndex,\n tab: tabAtIndex,\n });\n }\n }\n }\n}\n","<ul\n role=\"tablist\"\n [attr.id]=\"uniqueId\"\n class=\"ga-tabs\"\n [class.ga-tabs--horizontal]=\"orientation() === 'horizontal'\"\n [class.ga-tabs--vertical]=\"orientation() === 'vertical'\"\n [class.ga-tabs--keyline]=\"withKeyline()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-orientation]=\"orientation()\"\n>\n @for (tab of tabs(); track tab; let i = $index) {\n <li\n [attr.id]=\"uniqueId + '-tablabel-' + i\"\n class=\"ga-tabs__tab\"\n [class.ga-tabs__tab--selected]=\"i === selectedIndex()\"\n [class.ga-tabs__tab--disabled]=\"tab.disabled()\"\n role=\"tab\"\n [tabindex]=\"tab.disabled() ? -1 : undefined\"\n (click)=\"onTabClick(i); $event.preventDefault()\"\n (keydown.enter)=\"onTabClick(i); $event.preventDefault()\"\n (keydown.space)=\"onTabClick(i); $event.preventDefault()\"\n [attr.aria-selected]=\"i === selectedIndex()\"\n [attr.aria-disabled]=\"tab.disabled()\"\n [attr.aria-controls]=\"uniqueId + '-tabpanel-' + i\"\n >\n {{ tab.title() }}\n @let tabTitleIcon = tab.rightIcon();\n @if (tabTitleIcon) {\n <ga-icon\n [icon]=\"tabTitleIcon\"\n size=\"16\"\n class=\"ga-tabs__tab-icon\"\n [color]=\"tab.rightIconColor()\"\n />\n }\n </li>\n }\n</ul>\n\n@for (tab of tabs(); track tab; let i = $index) {\n @if (tab === selectedTab()) {\n <div\n role=\"tabpanel\"\n [attr.id]=\"uniqueId + '-tabpanel-' + i\"\n [attr.aria-labelledby]=\"uniqueId + '-tablabel-' + i\"\n >\n <ng-template [ngTemplateOutlet]=\"tab.contentTpl()\"></ng-template>\n </div>\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaTabComponent, GaTabContentDirective } from './tab.component';\nimport { GaTabsComponent } from './tabs.component';\n\n@NgModule({\n imports: [GaTabsComponent, GaTabComponent, GaTabContentDirective],\n exports: [GaTabsComponent, GaTabComponent, GaTabContentDirective],\n})\nexport class GaTabsModule {}\n","import {\n Attribute,\n booleanAttribute,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n} from '@angular/core';\nimport { injectNgControlState } from '../utils/error-state';\nimport { GaFormFieldConnector } from '../form-field/form-field-connector';\n\nlet nextUniqueId = 0;\n\n@Directive({\n selector: '[gaTextArea]',\n host: {\n class: 'ga-text-area',\n '[class.ga-text-area--invalid]': 'invalid()',\n '[attr.id]': 'id()',\n '[attr.disabled]': 'disabled() ? true : null',\n },\n})\nexport class GaTextAreaDirective {\n private readonly implicitNgControlState = injectNgControlState();\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n private readonly renderer = inject(Renderer2);\n private readonly elementRef = inject(ElementRef);\n\n private readonly uniqueId = `ga-text-area-${++nextUniqueId}`;\n\n readonly idInput = input<string | undefined>(undefined, { alias: 'id' });\n readonly disabledInput = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly invalidInput = input(undefined, {\n alias: 'invalid',\n transform: booleanAttribute,\n });\n\n readonly disabled = computed(\n () => this.disabledInput() ?? this.implicitNgControlState.disabled(),\n );\n readonly invalid = computed(\n () => this.invalidInput() ?? this.implicitNgControlState.inError(),\n );\n readonly id = computed(() => this.idInput() ?? this.uniqueId);\n\n constructor(@Attribute('placeholder') placeholder?: string) {\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() => formFieldConnector.controlDisabled.set(this.disabled()));\n effect(() => formFieldConnector.controlId.set(this.id()));\n }\n\n if (!placeholder) {\n // a workaround till https://github.com/visma-software-nordic/gaia-styles/issues/108 is fixed\n this.renderer.setAttribute(\n this.elementRef.nativeElement,\n 'placeholder',\n '',\n );\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaTextAreaDirective } from './text-area.directive';\n\n@NgModule({\n imports: [GaTextAreaDirective],\n exports: [GaTextAreaDirective],\n})\nexport class GaTextAreaModule {}\n","import {\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { CdkListbox } from '@angular/cdk/listbox';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport type GaChipVariant = 'default' | 'transparent';\n\n@Component({\n selector: 'ga-chip-listbox',\n templateUrl: './chip-listbox.component.html',\n hostDirectives: [\n {\n directive: CdkListbox,\n inputs: [\n 'cdkListboxMultiple: multiple',\n 'cdkListboxValue: value',\n 'cdkListboxDisabled: disabled',\n 'cdkListboxCompareWith: compareWith',\n ],\n },\n ],\n host: {\n class: 'ga-chip-listbox',\n },\n})\nexport class GaChipListboxComponent<ValueT = unknown> {\n protected readonly cdkListbox = inject(CdkListbox<ValueT>, { self: true });\n\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n readonly variant = input<GaChipVariant>('default');\n readonly valueChange = output<readonly ValueT[]>();\n\n readonly disabled = computed(() => this.cdkListbox.disabled);\n\n constructor() {\n effect(() => {\n this.cdkListbox.orientation = this.orientation();\n });\n\n this.cdkListbox.valueChange\n .pipe(takeUntilDestroyed())\n .subscribe((event) => {\n this.valueChange.emit(event.value);\n });\n }\n\n focus() {\n this.cdkListbox.focus();\n }\n}\n","<ng-content />\n","import { CdkListboxModule, CdkOption } from '@angular/cdk/listbox';\nimport {\n afterEveryRender,\n booleanAttribute,\n Component,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { GaChipListboxComponent } from './chip-listbox.component';\n\n@Component({\n selector: 'ga-chip',\n templateUrl: './chip.component.html',\n imports: [CdkListboxModule],\n hostDirectives: [\n {\n directive: CdkOption,\n inputs: ['cdkOption: value', 'cdkOptionDisabled: disabled'],\n },\n ],\n host: {\n class: 'ga-quick-filter-button',\n '[class.ga-quick-filter-button--transparent]':\n \"listbox.variant() === 'transparent'\",\n '[class.ga-quick-filter-button--disabled]':\n 'disabled() || listbox.disabled()',\n '[class.ga-quick-filter-button--selected]': 'selected()',\n },\n})\nexport class GaChipComponent {\n private readonly cdkOption = inject(CdkOption, { self: true });\n protected readonly listbox = inject(GaChipListboxComponent);\n\n protected readonly _isSelected = signal<boolean | null>(null);\n readonly selected = this._isSelected.asReadonly();\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n constructor() {\n afterEveryRender({\n read: () => {\n // NOTE: currently there is no other reliable way to track the selected state,\n // refactor once cdk will be based on signals or more appropriate events introduced\n this._isSelected.set(this.cdkOption.isSelected());\n },\n });\n }\n}\n","<ng-content />\n","import { NgModule } from '@angular/core';\nimport { GaChipComponent } from './chip.component';\nimport { GaChipListboxComponent } from './chip-listbox.component';\n\n@NgModule({\n imports: [GaChipComponent, GaChipListboxComponent],\n exports: [GaChipComponent, GaChipListboxComponent],\n})\nexport class GaChipModule {}\n","/*\n * Public API Surface of ngx-gaia\n */\n\nexport * from './lib/alert/index';\nexport * from './lib/badge/index';\nexport * from './lib/button/index';\nexport * from './lib/card/index';\nexport * from './lib/checkbox/index';\nexport * from './lib/datepicker/index';\nexport * from './lib/segmented-control/index';\nexport * from './lib/icon/index';\nexport * from './lib/input/index';\nexport * from './lib/form-field/index';\nexport * from './lib/menu/index';\nexport * from './lib/modal/index';\nexport * from './lib/tooltip/index';\nexport * from './lib/select/index';\nexport * from './lib/data-select/index';\nexport * from './lib/spinner/index';\nexport * from './lib/radio/index';\nexport * from './lib/switch/index';\nexport * from './lib/utils/index';\nexport * from './lib/link/index';\nexport * from './lib/tabs/index';\nexport * from './lib/text-area/index';\nexport * from './lib/chip/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextUniqueId","i2.GaIconButtonDirective","i1.GaIconComponent","i1","i2.GaButtonDirective","i3","i1.GaTooltipDirective","i2.GaIconComponent","i3.GaRadioButtonComponent","i1.GaSpinnerComponent","i2.GaLabelledByFormFieldDirective","i3.GaIconComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAEA;;;;;AAKG;MACU,iBAAiB,GAAG,IAAI,cAAc,CACjD,mBAAmB,EACnB,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;AAGrC,SAAU,qBAAqB,CAAC,QAAgB,EAAA;AACpD,IAAA,OAAO,wBAAwB,CAAC;AAC9B,QAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACnD,KAAA,CAAC;AACJ;;ACFO,MAAM,oBAAoB,GAAG;MA+BvB,eAAe,CAAA;AACT,IAAA,UAAU,GAA4B,MAAM,CAAC,UAAU,CAAC;AACxD,IAAA,YAAY,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACxC,cAAc,GAAG,MAAM,CACtC,IAAI,kBAAkB,CAAC,aAAa,CAAC,EACrC;AACE,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CACF;AAEQ,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAuB;AAC5C,IAAA,IAAI,GAAG,KAAK,CAAkB,oBAAoB,gDAAC;IACnD,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IACvB,WAAW,GAAG,KAAK,CAAC,SAAS,wDAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAE9D,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACzC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QACxB,IACE,OAAO,IAAI,KAAK,QAAQ;AACxB,aAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EACjD;AACA,YAAA,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;AAC/B,YAAA,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC,YAAY,KAAK;QAC/C;AACA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,6DAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;QACnE;IACF;uGA/BW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,KAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,2CAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA1BhB,CAAA;;;;AAIP,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EALO,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FA2BlB,eAAe,EAAA,UAAA,EAAA,CAAA;kBA7B3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAAA,OAAA,EACV,CAAC,mBAAmB,CAAC,EAAA,QAAA,EACpB,CAAA;;;;KAIP,EAAA,IAAA,EACG;AACJ,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,SAAS,EAAE,2CAA2C;qBACvD,EAAA,aAAA,EAec,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,qNAAA,CAAA,EAAA;;;MCrC1B,YAAY,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAZ,YAAY,EAAA,OAAA,EAAA,CAHb,eAAe,CAAA,EAAA,OAAA,EAAA,CACf,eAAe,CAAA,EAAA,CAAA;AAEd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAHb,eAAe,CAAA,EAAA,CAAA;;2FAGd,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,eAAe,CAAC;oBAC1B,OAAO,EAAE,CAAC,eAAe,CAAC;AAC3B,iBAAA;;;MCGY,qBAAqB,CAAA;uGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,8HALtB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAKf,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,wBAAwB;AAChC,qBAAA;AACF,iBAAA;;;SCNe,sBAAsB,GAAA;IACpC,OAAO,IAAI,mBAAmB,EAAE;AAClC;MAMsB,YAAY,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAZ,YAAY,EAAA,UAAA,EAHpB,MAAM,EAAA,UAAA,EACN,sBAAsB,EAAA,CAAA;;2FAEd,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AAClB,oBAAA,UAAU,EAAE,sBAAsB;AACnC,iBAAA;;AAMK,MAAO,mBAAoB,SAAQ,YAAY,CAAA;;IAEnD,YAAY,GAAG,YAAY;uGAFhB,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAnB,mBAAmB,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;AAMK,SAAU,mBAAmB,CACjC,KAA0C,EAAA;AAE1C,IAAA,OAAO,wBAAwB,CAAC;QAC9B,OAAO,KAAK,KAAK;cACb,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK;cAC1C,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC/C,KAAA,CAAC;AACJ;;MC8Ca,kBAAkB,CAAA;IACpB,IAAI,GAAG,KAAK,CAAC,EAAE,iDAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAEhD,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,uDAAC;AAC7C,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,kDAAC;IACxC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,kDAAC;AAC/D,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,yDAAC;AAC3D,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,4DAAC;uGAP5D,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,GAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhEnB;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yNAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAqCU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAlE9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,QAAA,EACZ;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BT,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,KAAK,EAAE,YAAY;AACnB,wBAAA,IAAI,EAAE,aAAa;AACnB,wBAAA,sBAAsB,EAAE,GAAG;AAC3B,wBAAA,sBAAsB,EAAE,KAAK;AAC7B,wBAAA,aAAa,EAAE,iBAAiB;AAChC,wBAAA,QAAQ,EAAE,IAAI;AACf,qBAAA,EAAA,MAAA,EAAA,CAAA,yNAAA,CAAA,EAAA;;;MCIU,iBAAiB,CAAA;AACX,IAAA,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC;AAC3B,IAAA,EAAE,GAA4B,MAAM,CAAC,UAAU,CAAC;IAExD,OAAO,GAAG,KAAK,CAAC,QAAQ,mDAC/B,KAAK,EAAE,UAAU,EAAA,CACjB;AAEO,IAAA,SAAS,GAAG,KAAK,CAAC,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,GAAA,EAAA,CAAA,EAC9B,KAAK,EAAE,iBAAiB;QACxB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACO,IAAA,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,cAAA,EAAA,GAAA,EAAA,CAAA,EAClD,KAAK,EAAE,sBAAsB,GAC7B;AACO,IAAA,gBAAgB,GAAG,KAAK,CAAC,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,GAAA,EAAA,CAAA,EACrC,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AAEO,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;QAChC,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,KAAK,GAAG,EAAE;AACzC,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,GAAG,IAAI;AAChE,IAAA,CAAC,oDAAC;uGAzBS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,4BAAA,EAAA,yCAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,8BAAA,EAAA,6BAAA,EAAA,eAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,+BAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhClB;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,iQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EARS,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAiCjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBApC7B,SAAS;AAEE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,EAAA,OAAA,EAChC,CAAC,kBAAkB,CAAC,EAAA,QAAA,EACnB;;;;;;;GAOT,EAAA,aAAA,EAcc,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,8BAA8B,EAAE,CAAA,uCAAA,CAAyC;AACzE,wBAAA,4BAA4B,EAAE,CAAA,uBAAA,CAAyB;AACvD,wBAAA,0BAA0B,EAAE,CAAA,qBAAA,CAAuB;AACnD,wBAAA,gCAAgC,EAAE,CAAA,2BAAA,CAA6B;AAC/D,wBAAA,iBAAiB,EAAE,YAAY;AAC/B,wBAAA,kBAAkB,EAAE,6BAA6B;AAClD,qBAAA,EAAA,MAAA,EAAA,CAAA,iQAAA,CAAA,EAAA;;;MCAU,qBAAqB,CAAA;AACf,IAAA,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC;AAC3B,IAAA,EAAE,GAA4B,MAAM,CAAC,UAAU,CAAC;IAExD,IAAI,GAAG,KAAK,CAAC,QAAQ,gDAC5B,KAAK,EAAE,cAAc,EAAA,CACrB;IAEO,OAAO,GAAG,KAAK,CAAsB,WAAW,oDACvD,KAAK,EAAE,qBAAqB,EAAA,CAC5B;AAEO,IAAA,SAAS,GAAG,KAAK,CAAC,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,GAAA,EAAA,CAAA,EAC9B,KAAK,EAAE,qBAAqB;QAC5B,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACO,IAAA,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,cAAA,EAAA,GAAA,EAAA,CAAA,EAClD,KAAK,EAAE,0BAA0B,GACjC;AACO,IAAA,gBAAgB,GAAG,KAAK,CAAC,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,GAAA,EAAA,CAAA,EACrC,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AAEO,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;QAChC,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,KAAK,GAAG,EAAE;AACzC,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,GAAG,IAAI;AAChE,IAAA,CAAC,oDAAC;uGA7BS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,8BAAA,EAAA,6BAAA,EAAA,eAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,+BAAA,EAAA,EAAA,cAAA,EAAA,gCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnBtB;;;;;;;;GAQT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6TAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAZS,YAAY,oJAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAuB/B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA1BjC,SAAS;AAEE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uCAAuC,EAAA,OAAA,EACxC,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAAA,eAAA,EAC1B,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAEhC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B;;;;;;;;GAQT,EAAA,IAAA,EACK;AACJ,wBAAA,KAAK,EAAE,gCAAgC;AACvC,wBAAA,4BAA4B,EAAE,CAAA,uBAAA,CAAyB;AACvD,wBAAA,8BAA8B,EAAE,CAAA,yBAAA,CAA2B;AAC3D,wBAAA,0BAA0B,EAAE,CAAA,qBAAA,CAAuB;AACnD,wBAAA,gCAAgC,EAAE,CAAA,2BAAA,CAA6B;AAC/D,wBAAA,iBAAiB,EAAE,YAAY;AAC/B,wBAAA,kBAAkB,EAAE,6BAA6B;AAClD,qBAAA,EAAA,MAAA,EAAA,CAAA,6TAAA,CAAA,EAAA;;;MCrCU,cAAc,CAAA;uGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAHf,iBAAiB,EAAE,qBAAqB,CAAA,EAAA,OAAA,EAAA,CACxC,iBAAiB,EAAE,qBAAqB,CAAA,EAAA,CAAA;AAEvC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAHI,qBAAqB,CAAA,EAAA,CAAA;;2FAGvC,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,iBAAiB,EAAE,qBAAqB,CAAC;AACnD,oBAAA,OAAO,EAAE,CAAC,iBAAiB,EAAE,qBAAqB,CAAC;AACpD,iBAAA;;;SCNe,qBAAqB,GAAA;IACnC,OAAO,IAAI,kBAAkB,EAAE;AACjC;MAMsB,WAAW,CAAA;uGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAX,WAAW,EAAA,UAAA,EAHnB,MAAM,EAAA,UAAA,EACN,qBAAqB,EAAA,CAAA;;2FAEb,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AAClB,oBAAA,UAAU,EAAE,qBAAqB;AAClC,iBAAA;;AAMK,MAAO,kBAAmB,SAAQ,WAAW,CAAA;;IAEjD,YAAY,GAAG,SAAS;uGAFb,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAlB,kBAAkB,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;AAMK,SAAU,kBAAkB,CAAC,KAAwC,EAAA;AACzE,IAAA,OAAO,wBAAwB,CAAC;QAC9B,OAAO,KAAK,KAAK;cACb,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK;cACzC,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC9C,KAAA,CAAC;AACJ;;ACLA,IAAIA,cAAY,GAAG,CAAC;MAkBP,gBAAgB,CAAA;AACR,IAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;IAEpC,WAAW,GAAa,CAAC;AAEzB,IAAA,OAAO,GAAG,KAAK,CAAiB,OAAO,mDAAC;IACxC,YAAY,GAAG,KAAK,CAAa,SAAS,yDAAI,KAAK,EAAE,MAAM,EAAA,CAAG;IAC9D,WAAW,GAAG,KAAK,CAAC,KAAK,wDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAC3D,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA4B;IAC5C,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IAC/B,kBAAkB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IAEpC,OAAO,GAAG,MAAM,EAAE;AAElB,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;AAC5B,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,SAAS,EAAE;AACrC,YAAA,OAAO,IAAI,CAAC,YAAY,EAAE;QAC5B;AACA,QAAA,QAAQ,IAAI,CAAC,OAAO,EAAE;AACpB,YAAA,KAAK,aAAa;AAChB,gBAAA,OAAO,IAAI;AACb,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,aAAa;AACtB,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,WAAW;;AAEtB,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,gDAAC;AAEO,IAAA,KAAK,GAAG,YAAY,CAAC,qBAAqB,iDAAC;AAE3C,IAAA,UAAU,GAAG,CAAA,kBAAA,EAAqB,EAAEA,cAAY,EAAE;AAElD,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,OAAO,oCAAoC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC7D,IAAA,CAAC,wDAAC;AAEO,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,SAAS;AACtC,IAAA,CAAC,uDAAC;AAEO,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE;QACrC,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,eAAe,EAAE;AACpE,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AAClD,IAAA,CAAC,yDAAC;AAEO,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;AAC1C,QAAA,IAAI,aAAa,KAAK,SAAS,EAAE;AAC/B,YAAA,OAAO,SAAS;QAClB;QACA,OAAO,CAAA,EAAG,aAAa,CAAA,CAAA,CAAG;AAC5B,IAAA,CAAC,4DAAC;uGAzDS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,uiCA+BG,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtErD,6oCA8CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDbY,YAAY,mJAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAM3B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAT5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,WAEX,CAAC,YAAY,EAAE,cAAc,CAAC,EAAA,IAAA,EACjC;AACJ,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,SAAS,EAAE,CAAA,cAAA,CAAgB;AAC5B,qBAAA,EAAA,QAAA,EAAA,6oCAAA,EAAA;+uBAiC6B,qBAAqB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ME7DxC,4BAA4B,CAAA;uGAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,8IAL7B,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAKf,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAPxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,gCAAgC;AACxC,qBAAA;AACF,iBAAA;;;MCUY,aAAa,CAAA;uGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAVtB,gBAAgB;YAChB,qBAAqB;AACrB,YAAA,4BAA4B,aAG5B,gBAAgB;YAChB,qBAAqB;YACrB,4BAA4B,CAAA,EAAA,CAAA;AAGnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAVtB,gBAAgB,CAAA,EAAA,CAAA;;2FAUP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAZzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,gBAAgB;wBAChB,qBAAqB;wBACrB,4BAA4B;AAC7B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,gBAAgB;wBAChB,qBAAqB;wBACrB,4BAA4B;AAC7B,qBAAA;AACF,iBAAA;;;MCIY,gBAAgB,CAAA;AAClB,IAAA,OAAO,GAAG,KAAK,CAAiB,SAAS,mDAAC;AAC1C,IAAA,IAAI,GAAG,KAAK,CAAc,MAAM,gDAAC;AAEjC,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QACpC,OAAO,CAAA,mBAAA,EAAsB,IAAI,CAAC,IAAI,EAAE,CAAA,WAAA,EAAc,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE;AACxE,IAAA,CAAC,wDAAC;uGANS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,wXALjB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAKf,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,CAAA,cAAA,CAAgB;AAC5B,qBAAA;AACF,iBAAA;;;MCZY,aAAa,CAAA;uGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAb,aAAa,EAAA,OAAA,EAAA,CAHd,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAChB,gBAAgB,CAAA,EAAA,CAAA;wGAEf,aAAa,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,gBAAgB,CAAC;oBAC3B,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC5B,iBAAA;;;MCKY,eAAe,CAAA;IACjB,UAAU,GAAG,KAAK,CAAC,KAAK,uDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAC1D,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;uGAHtD,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,4oBARhB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAQf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAV3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,6BAA6B,EAAE,cAAc;AAC7C,wBAAA,2BAA2B,EAAE,YAAY;AACzC,wBAAA,2BAA2B,EAAE,YAAY;AAC1C,qBAAA;AACF,iBAAA;;;MCHY,YAAY,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAZ,YAAY,EAAA,OAAA,EAAA,CAHb,eAAe,CAAA,EAAA,OAAA,EAAA,CACf,eAAe,CAAA,EAAA,CAAA;wGAEd,YAAY,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,eAAe,CAAC;oBAC1B,OAAO,EAAE,CAAC,eAAe,CAAC;AAC3B,iBAAA;;;MCDY,4BAA4B,CAAA;IAC9B,iBAAiB,GAAG,KAAK,CAAC,QAAQ,6DACzC,KAAK,EAAE,qBAAqB,EAAA,CAC5B;AAEO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;;;;QAIpC,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,MAAM,CACpD,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YACpB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC,gBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;YAClB;AACA,YAAA,OAAO,GAAG;QACZ,CAAC,EACD,EAAE,CACH;AACH,IAAA,CAAC,wDAAC;uGAlBS,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAHxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AAClC,iBAAA;;;MC0BY,uBAAuB,GAAG,IAAI,cAAc,CACvD,yBAAyB;AAG3B;;AAEG;AACG,SAAU,oBAAoB,CAAC,EACnC,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,GAAA,GAKZ,EAAE,EAAA;AACJ,IAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,uBAAuB,EAAE;AAC3D,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;AAEF,IAAA,IAAI,eAAoE;AACxE,IAAA,IAAI,gBAAyC;AAC7C,IAAA,IAAI,iBAA0C;AAC9C,IAAA,IAAI,aAAqD;AACzD,IAAA,IAAI,eAAwC;IAE5C,IAAI,oBAAoB,EAAE;QACxB,eAAe,GAAG,YAAY,CAAC,MAC7B,oBAAoB,CAAC,eAAe,EAAE,CACvC;QACD,gBAAgB,GAAG,YAAY,CAAC,MAC9B,oBAAoB,CAAC,gBAAgB,EAAE,CACxC;QACD,iBAAiB,GAAG,YAAY,CAAC,MAC/B,oBAAoB,CAAC,iBAAiB,EAAE,CACzC;QACD,aAAa,GAAG,YAAY,CAAC,MAAM,oBAAoB,CAAC,aAAa,EAAE,CAAC;QACxE,eAAe,GAAG,YAAY,CAAC,MAC7B,oBAAoB,CAAC,eAAe,EAAE,CACvC;IACH;SAAO;AACL,QAAA,eAAe,GAAG,MAAM,CAA0B,IAAI,CAAC;AACvD,QAAA,gBAAgB,GAAG,MAAM,CAAU,KAAK,CAAC;AACzC,QAAA,iBAAiB,GAAG,MAAM,CAAU,KAAK,CAAC;AAC1C,QAAA,aAAa,GAAG,MAAM,CAAyB,IAAI,CAAC;AACpD,QAAA,eAAe,GAAG,MAAM,CAAU,KAAK,CAAC;AAExC,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACzD,QAAA,MAAM,wBAAwB,GAAG,MAAM,CAAC,gBAAgB,EAAE;AACxD,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC;QACF,MAAM,MAAM,GACV,cAAc;YACd,cAAc;AACd,aAAC,wBAAwB,EAAE,aAAa,YAAY;kBAChD,wBAAwB,CAAC;kBACzB,IAAI,CAAC;QAEX,IAAI,qBAAqB,GAAwB,IAAI;QACrD,MAAM,CAAC,MAAK;YACV,IAAI,qBAAqB,EAAE;gBACzB,qBAAqB,CAAC,WAAW,EAAE;gBACnC,qBAAqB,GAAG,IAAI;YAC9B;AACA,YAAA,IAAI,QAAQ,CAAC,iBAAiB,CAAC,EAAE;gBAC/B,iBAAiB,GAAG,iBAAiB,EAAE;YACzC;YAEA,MAAM,SAAS,GACb,iBAAiB;AACjB,gBAAA,sBAAsB,IAAI;AAC1B,gBAAA,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACnD,YAAA,IAAI,SAAS,EAAE,OAAO,EAAE;gBACtB,MAAM,cAAc,GAAG,MAAK;AAC1B,oBAAA,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC;oBACrC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;oBACzC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC3C,oBAAA,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;AACnC,gBAAA,CAAC;AACD,gBAAA,cAAc,EAAE;AAChB,gBAAA,qBAAqB,GAAG,SAAS,CAAC,OAAO,CAAC;AACvC,qBAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;AACnC,qBAAA,SAAS,CAAC,MAAM,cAAc,EAAE,CAAC;YACtC;AACF,QAAA,CAAC,CAAC;QAEF,IAAI,MAAM,EAAE;AACV,YAAA,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;AACrC,YAAA,MAAM,CAAC;AACJ,iBAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;AACnC,iBAAA,SAAS,CAAC,MAAM,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3D;IACF;AAEA,IAAA,MAAM,qBAAqB,GAAG,MAAM,CAAC,4BAA4B,EAAE;AACjE,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;AACF,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,mDAAC;AAC7B,IAAA,MAAM,MAAM,GAAG,MAAM,CAAmB,EAAE,kDAAC;IAC3C,MAAM,CAAC,MAAK;QACV,MAAM,CAAC,GAAG,CAAC;AACT,YAAA,GAAG,eAAe,EAAE;AACpB,YAAA,IAAI,qBAAqB,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACjD,SAAA,CAAC;AACF,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;AAClD,QAAA,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,gBAAgB,EAAE,IAAI,eAAe,EAAE,CAAC,CAAC;AACrE,IAAA,CAAC,CAAC;IAEF,OAAO;AACL,QAAA,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE;AAC7B,QAAA,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE;AAC3B,QAAA,QAAQ,EAAE,iBAAiB,CAAC,UAAU,EAAE;AACxC,QAAA,IAAI,EAAE,aAAa,CAAC,UAAU,EAAE;KACjC;AACH;;AClIO,MAAM,+BAA+B,GAAa;AACvD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,IAAA,KAAK,EAAE,IAAI;;AAGb;AACA;AACA,IAAID,cAAY,GAAG,CAAC;MAqBP,mBAAmB,CAAA;;AAEb,IAAA,SAAS,GAAG,CAAA,YAAA,EAAe,EAAEA,cAAY,EAAE;;IAG3C,sBAAsB,GAAG,oBAAoB,EAAE;;IAG7C,QAAQ,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE;AACvE,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;AAEO,IAAA,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;;AAGzB,IAAA,UAAU;;AAEV,IAAA,eAAe;;AAGd,IAAA,KAAK,GAAG,KAAK,CAAgB,IAAI,iDAAC;AAClC,IAAA,aAAa,GAAG,KAAK,CAAC,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,GAAA,EAAA,CAAA,EAClC,SAAS,EAAE,gBAAgB;QAC3B,KAAK,EAAE,UAAU,EAAA,CACjB;AACO,IAAA,YAAY,GAAG,KAAK,CAAC,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,cAAA,EAAA,GAAA,EAAA,CAAA,EACjC,SAAS,EAAE,gBAAgB;QAC3B,KAAK,EAAE,SAAS,EAAA,CAChB;IACO,SAAS,GAAG,KAAK,CAAgB,IAAI,sDAAI,KAAK,EAAE,MAAM,EAAA,CAAG;AACzD,IAAA,EAAE,GAAG,KAAK,CAAgB,IAAI,8CAAC;IAC/B,aAAa,GAAG,KAAK,CAAC,KAAK,0DAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAC7D,SAAS,GAAG,KAAK,CAAgB,IAAI,sDAAI,KAAK,EAAE,YAAY,EAAA,CAAG;IAC/D,cAAc,GAAG,KAAK,CAAgB,IAAI,2DACjD,KAAK,EAAE,iBAAiB,EAAA,CACxB;IACO,eAAe,GAAG,KAAK,CAAgB,IAAI,4DAClD,KAAK,EAAE,kBAAkB,EAAA,CACzB;IACO,WAAW,GAAG,KAAK,CAAgB,IAAI,wDAAI,KAAK,EAAE,cAAc,EAAA,CAAG;IACnE,gBAAgB,GAAG,KAAK,CAAgB,IAAI,6DACnD,KAAK,EAAE,mBAAmB,EAAA,CAC1B;IACO,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAExD,QAAQ,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IACnD,OAAO,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAEjD,MAAM,GAAG,MAAM,EAAW;IAC1B,mBAAmB,GAAG,MAAM,EAAW;;IAGvC,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAElE,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;AAC5B,QAAA,QACE,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS;AAE5E,IAAA,CAAC,gDAAC;;AAEO,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;QAC/B,OAAO,IAAI,CAAC,WAAW;AACrB,cAAE,IAAI,CAAC,WAAW,EAAE,KAAK;AACzB,cAAE,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE;AAC3C,IAAA,CAAC,mDAAC;;AAGF,IAAA,aAAa,CAAC,KAAY,EAAA;;;;QAIxB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;QACF;QAEA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC,WAAW,EAAE;IACpB;;IAGA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,IAAI;IACrB;;AAGA,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AACvC,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;;AAGA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;;AAGA,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3B;;AAGA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;IAC/B;;IAGQ,WAAW,GAAA;QACjB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAClC;uGA9GW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,wkEAdnB,CAAC,+BAA+B,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChC9C,mlCAuCA,2CDTY,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAgBlB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAnB/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,OAAA,EAEd,CAAC,mBAAmB,CAAC,EAAA,eAAA,EACb,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,+BAA+B,CAAC,EAAA,IAAA,EACtC;AACJ,wBAAA,KAAK,EAAE,aAAa;AACpB,wBAAA,8BAA8B,EAAE,WAAW;AAC3C,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,iBAAiB,EAAE,MAAM;AACzB,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,wBAAwB,EAAE,MAAM;AAChC,wBAAA,yBAAyB,EAAE,MAAM;AACjC,wBAAA,qBAAqB,EAAE,MAAM;AAC7B,wBAAA,0BAA0B,EAAE,MAAM;AAClC,wBAAA,iBAAiB,EAAE,wBAAwB;AAC5C,qBAAA,EAAA,QAAA,EAAA,mlCAAA,EAAA;;;AEzCI,MAAM,8BAA8B,GAAa;AACtD,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,2BAA2B,CAAC;AAC1D,IAAA,KAAK,EAAE,IAAI;;AAGb;;;;AAIG;AAMG,MAAO,2BAA4B,SAAQ,yBAAyB,CAAA;uGAA7D,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4GAAA,EAAA,SAAA,EAF3B,CAAC,8BAA8B,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAEhC,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,CAAA,0GAAA,CAA4G;oBACtH,SAAS,EAAE,CAAC,8BAA8B,CAAC;AAC5C,iBAAA;;;MCTY,gBAAgB,CAAA;uGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAHjB,mBAAmB,EAAE,2BAA2B,CAAA,EAAA,OAAA,EAAA,CAChD,mBAAmB,EAAE,2BAA2B,CAAA,EAAA,CAAA;AAE/C,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAHjB,mBAAmB,CAAA,EAAA,CAAA;;2FAGlB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;AAC3D,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;AAC5D,iBAAA;;;ACNK,SAAU,OAAO,CAAI,KAAU,EAAA;AACnC,IAAA,QACE,OAAO,KAAK,KAAK,UAAU;AAC3B,QAAA,KAAK,CAAC,SAAS;AACf,QAAA,KAAK,CAAC,SAAS,CAAC,WAAW,KAAK,KAAK;AAEzC;;SCCgB,0BAA0B,GAAA;IACxC,OAAO,IAAI,uBAAuB,EAAE;AACtC;MAmBsB,gBAAgB,CAAA;uGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAhB,gBAAgB,EAAA,UAAA,EAHxB,MAAM,EAAA,UAAA,EACN,0BAA0B,EAAA,CAAA;;2FAElB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJrC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AAClB,oBAAA,UAAU,EAAE,0BAA0B;AACvC,iBAAA;;AAcK,MAAO,uBAAwB,SAAQ,gBAAgB,CAAA;AAC1C,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;IAE7C,gBAAgB,GAAG,cAAc;IACjC,eAAe,GAAG,aAAa;IAC/B,aAAa,GAAG,UAAU;IAC1B,SAAS,GAAG,MAAM;IAClB,iBAAiB,GAAG,eAAe;IACnC,gBAAgB,GAAG,OAAO;AAE1B,IAAA,UAAU;AACV,IAAA,eAAe;AACf,IAAA,QAAQ;AAER,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;;QAGP,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5D,YAAA,KAAK,EAAE,MAAM;AACd,SAAA,CAAC;QACF,MAAM,mBAAmB,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjE,YAAA,KAAK,EAAE,OAAO;AACf,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAI;YACpD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AACjC,YAAA,OAAO,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;AACpC,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAI;YACzD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AACjC,YAAA,OAAO,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC;AACzC,QAAA,CAAC,CAAC;;QAGF,MAAM,gBAAgB,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC9D,YAAA,OAAO,EAAE,OAAO;AACjB,SAAA,CAAC;AACF,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAI;;YAEtD,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjC,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AACxC,YAAA,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;AACtC,QAAA,CAAC,CAAC;IACJ;uGA/CW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cADV,MAAM,EAAA,CAAA;;2FACnB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;AAmD5B,SAAU,uBAAuB,CACrC,KAA6E,EAAA;AAE7E,IAAA,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AAClB,QAAA,OAAO,wBAAwB,CAAC;AAC9B,YAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC/C,SAAA,CAAC;IACJ;AACA,IAAA,OAAO,wBAAwB,CAAC;AAC9B,QAAA;AACE,YAAA,OAAO,EAAE,gBAAgB;YACzB,UAAU,EAAE,MAAK;AACf,gBAAA,MAAM,WAAW,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACnD,gBAAA,MAAM,IAAI,GAAgC;oBACxC,UAAU,EAAE,WAAW,CAAC,UAAU;oBAClC,eAAe,EAAE,WAAW,CAAC,eAAe;oBAC5C,QAAQ,EAAE,WAAW,CAAC,QAAQ;AAC9B,oBAAA,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;iBACnD;AACD,gBAAA,OAAO,IAAI;YACb,CAAC;AACF,SAAA;AACF,KAAA,CAAC;AACJ;;SC5GgB,mCAAmC,GAAA;IACjD,OAAO,IAAI,8BAA8B,EAAE;AAC7C;MAMsB,wBAAwB,CAAA;uGAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAxB,wBAAwB,EAAA,UAAA,EAHhC,MAAM,EAAA,UAAA,EACN,mCAAmC,EAAA,CAAA;;2FAE3B,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJ7C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AAClB,oBAAA,UAAU,EAAE,mCAAmC;AAChD,iBAAA;;AAcK,MAAO,8BAA+B,SAAQ,wBAA4C,CAAA;AAC9F;;AAEG;AACO,IAAA,QAAQ,CAAC,KAAU,EAAA;AAC3B,QAAA,QACE,KAAK;YACL,OAAO,KAAK,KAAK,QAAQ;AACzB,YAAA,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;AAC9B,YAAA,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;AAC/B,YAAA,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;IAEjC;AAEA;;AAEG;AACH,IAAA,QAAQ,CAAC,KAAgC,EAAA;AACvC,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;AACvB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK;QACtC,OAAO,IAAI,CAAC;IACd;AAEA;;AAEG;AACH,IAAA,UAAU,CAAC,MAAiC,EAAA;AAC1C,QAAA,OAAO,MAAM;IACf;uGA5BW,8BAA8B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAA9B,8BAA8B,EAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAD1C;;AAgCK,SAAU,+BAA+B,CAC7C,KAAwC,EAAA;IAExC,OAAO,EAAE,OAAO,EAAE,wBAAwB,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC/D;AAEA;;AAEG;AACG,SAAU,cAAc,CAC5B,OAAkC,EAClC,OAAkC,EAAA;AAElC,IAAA,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;AAAE,QAAA,OAAO,CAAC;AAClC,IAAA,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,CAAC;AACvB,IAAA,IAAI,CAAC,OAAO;AAAE,QAAA,OAAO,CAAC;IACtB,MAAM,KAAK,GAAG,IAAI,IAAI,CACpB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CACvD;IACD,MAAM,KAAK,GAAG,IAAI,IAAI,CACpB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CACvD;IACD,OAAO,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG;UACvC,CAAC;UACD,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG;AACpC,cAAE;cACA,CAAC;AACT;;MC5Ca,qBAAqB,CAAA;AACb,IAAA,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC/B,IAAA,YAAY,GAAG,MAAM,CAAC,wBAAwB,CAAC;AAC/C,IAAA,KAAK,GAAG;QACzB,WAAW;QACX,YAAY;QACZ,SAAS;QACT,WAAW;KACZ;AAEQ,IAAA,KAAK,GAAG,KAAK,CAAa,IAAI,iDAAC;AAC/B,IAAA,GAAG,GAAG,KAAK,CAAa,IAAI,+CAAC;AAC7B,IAAA,GAAG,GAAG,KAAK,CAAa,IAAI,+CAAC;;AAGnB,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;QAC/C,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACjD,IAAA,CAAC,yDAAC;AAEiB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;QACjD,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC/C,IAAA,CAAC,2DAAC;AAEiB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;QACjD,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC/C,IAAA,CAAC,2DAAC;AAEiB,IAAA,QAAQ,GAAG,MAAM,CAAW,KAAK,oDAAC;IAClC,QAAQ,GAAG,MAAM,CAClC,IAAI,CAAC,kBAAkB,EAAE,oDAC1B;IAED,QAAQ,GAAA;;QAEN,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9C;IAEQ,kBAAkB,GAAA;;AAExB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC7D,IAAI,YAAY,EAAE;YAChB,OAAO;gBACL,IAAI,EAAE,YAAY,CAAC,IAAI;gBACvB,KAAK,EAAE,YAAY,CAAC,KAAK;aAC1B;QACH;;AAGA,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AACxB,QAAA,MAAM,WAAW,GAAuB;AACtC,YAAA,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE;YACzB,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC;AAC3B,YAAA,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE;SACrB;AAED,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACxD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAExD,IAAI,UAAU,GAAG,WAAW;;QAG5B,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,UAAU,GACd,WAAW,CAAC,IAAI,GAAG,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,GAAG,GAAG,WAAW,CAAC,GAAG;AACtE,YAAA,MAAM,QAAQ,GACZ,SAAS,CAAC,IAAI,GAAG,KAAK,GAAG,SAAS,CAAC,KAAK,GAAG,GAAG,GAAG,SAAS,CAAC,GAAG;AAChE,YAAA,IAAI,UAAU,GAAG,QAAQ,EAAE;gBACzB,UAAU,GAAG,SAAS;YACxB;QACF;;QAGA,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,UAAU,GACd,WAAW,CAAC,IAAI,GAAG,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,GAAG,GAAG,WAAW,CAAC,GAAG;AACtE,YAAA,MAAM,QAAQ,GACZ,SAAS,CAAC,IAAI,GAAG,KAAK,GAAG,SAAS,CAAC,KAAK,GAAG,GAAG,GAAG,SAAS,CAAC,GAAG;AAChE,YAAA,IAAI,UAAU,GAAG,QAAQ,EAAE;gBACzB,UAAU,GAAG,SAAS;YACxB;QACF;QAEA,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,KAAK,EAAE,UAAU,CAAC,KAAK;SACxB;IACH;AAEmB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE7C,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE;AAClC,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI;AAC5B,QAAA,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK;AAE9B,QAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,QAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC;AACpC,QAAA,MAAM,cAAc,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC;QAClD,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC;QAEvD,MAAM,IAAI,GAAyB,EAAE;AACrC,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,QAAA,OAAO,OAAO,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE;YAClD,IAAI,CAAC,IAAI,CAAC;AACR,gBAAA,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE;gBAC3B,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;AAC7B,gBAAA,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE;AACvB,aAAA,CAAC;YACF,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxC;AAEA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,wDAAC;AAEiB,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM;AAC3C,YAAA,KAAK,EAAE,CAAC,GAAG,CAAC;YACZ,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAC7B,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AACxC,SAAA,CAAC,CAAC;AACL,IAAA,CAAC,kDAAC;AAEiB,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI;AACxC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,EAAE;QACnD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;AAChE,IAAA,CAAC,iDAAC;AAEQ,IAAA,UAAU,CAAC,UAA8B,EAAA;AACjD,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;YAClE;QACF;QACA,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC;AAC9D,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;IAC/B;AAEU,IAAA,WAAW,CAAC,UAAkB,EAAA;AACtC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE;AACnC,QAAA,MAAM,OAAO,GAA2B;YACtC,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,KAAK,EAAE,UAAU;SAClB;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1B;AAEU,IAAA,UAAU,CAAC,IAAY,EAAA;AAC/B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE;AACnC,QAAA,MAAM,OAAO,GAA2B;YACtC,IAAI;YACJ,KAAK,EAAE,WAAW,CAAC,KAAK;SACzB;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;IAC5B;IAEU,gBAAgB,GAAA;AACxB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE;AACnC,QAAA,IAAI,OAA+B;AAEnC,QAAA,QAAQ,IAAI,CAAC,QAAQ,EAAE;YACrB,KAAK,KAAK,EAAE;gBACV,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;gBACvE,MAAM,QAAQ,GACZ,WAAW,CAAC,KAAK,KAAK,CAAC,GAAG,WAAW,CAAC,IAAI,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI;AACnE,gBAAA,OAAO,GAAG;AACR,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,KAAK,EAAE,SAAS;iBACjB;gBACD;YACF;AACA,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,GAAG;AACR,oBAAA,IAAI,EAAE,WAAW,CAAC,IAAI,GAAG,CAAC;oBAC1B,KAAK,EAAE,WAAW,CAAC,KAAK;iBACzB;gBACD;AACF,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,GAAG;AACR,oBAAA,IAAI,EAAE,WAAW,CAAC,IAAI,GAAG,EAAE;oBAC3B,KAAK,EAAE,WAAW,CAAC,KAAK;iBACzB;gBACD;;AAGJ,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;IAC5B;IAEU,YAAY,GAAA;AACpB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE;AACnC,QAAA,IAAI,OAA+B;AAEnC,QAAA,QAAQ,IAAI,CAAC,QAAQ,EAAE;YACrB,KAAK,KAAK,EAAE;gBACV,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,KAAK,EAAE,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;gBACvE,MAAM,QAAQ,GACZ,WAAW,CAAC,KAAK,KAAK,EAAE,GAAG,WAAW,CAAC,IAAI,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI;AACpE,gBAAA,OAAO,GAAG;AACR,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,KAAK,EAAE,SAAS;iBACjB;gBACD;YACF;AACA,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,GAAG;AACR,oBAAA,IAAI,EAAE,WAAW,CAAC,IAAI,GAAG,CAAC;oBAC1B,KAAK,EAAE,WAAW,CAAC,KAAK;iBACzB;gBACD;AACF,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,GAAG;AACR,oBAAA,IAAI,EAAE,WAAW,CAAC,IAAI,GAAG,EAAE;oBAC3B,KAAK,EAAE,WAAW,CAAC,KAAK;iBACzB;gBACD;;AAGJ,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;IAC5B;IAEU,eAAe,GAAA;QACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;IAClE;IAEU,cAAc,GAAA;QACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IAChE;AAEU,IAAA,OAAO,CAAC,UAA8B,EAAA;AAC9C,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AACxB,QAAA,MAAM,WAAW,GAAuB;AACtC,YAAA,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE;YACzB,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC;AAC3B,YAAA,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE;SACrB;QACD,OAAO,cAAc,CAAC,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC;IACtD;AAEU,IAAA,UAAU,CAAC,UAA8B,EAAA;AACjD,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE;QAC3C,OAAO,cAAc,CAAC,UAAU,EAAE,cAAc,CAAC,KAAK,CAAC;IACzD;AAEU,IAAA,cAAc,CAAC,UAA8B,EAAA;QACrD,OAAO,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK;IACnD;AAEU,IAAA,SAAS,CAAC,UAA8B,EAAA;;AAEhD,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CACnB,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,KAAK,GAAG,CAAC,EACpB,UAAU,CAAC,GAAG,CACf;AACD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,QAAA,OAAO,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;IAC/B;AAEU,IAAA,cAAc,CAAC,UAA8B,EAAA;AACrD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE;AACxC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE;QAExC,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,SAAS,GACb,UAAU,CAAC,IAAI,GAAG,KAAK,GAAG,UAAU,CAAC,KAAK,GAAG,GAAG,GAAG,UAAU,CAAC,GAAG;AACnE,YAAA,MAAM,QAAQ,GACZ,SAAS,CAAC,IAAI,GAAG,KAAK,GAAG,SAAS,CAAC,KAAK,GAAG,GAAG,GAAG,SAAS,CAAC,GAAG;AAChE,YAAA,IAAI,SAAS,GAAG,QAAQ,EAAE;AACxB,gBAAA,OAAO,IAAI;YACb;QACF;QAEA,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,SAAS,GACb,UAAU,CAAC,IAAI,GAAG,KAAK,GAAG,UAAU,CAAC,KAAK,GAAG,GAAG,GAAG,UAAU,CAAC,GAAG;AACnE,YAAA,MAAM,QAAQ,GACZ,SAAS,CAAC,IAAI,GAAG,KAAK,GAAG,SAAS,CAAC,KAAK,GAAG,GAAG,GAAG,SAAS,CAAC,GAAG;AAChE,YAAA,IAAI,SAAS,GAAG,QAAQ,EAAE;AACxB,gBAAA,OAAO,IAAI;YACb;QACF;AAEA,QAAA,OAAO,KAAK;IACd;AAEU,IAAA,eAAe,CAAC,UAAkB,EAAA;AAC1C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE;AACxC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI;QAEjC,IAAI,SAAS,EAAE;AACb,YAAA,IACE,IAAI,GAAG,SAAS,CAAC,IAAI;AACrB,iBAAC,IAAI,KAAK,SAAS,CAAC,IAAI,IAAI,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,EACzD;AACA,gBAAA,OAAO,IAAI;YACb;QACF;QAEA,IAAI,SAAS,EAAE;AACb,YAAA,IACE,IAAI,GAAG,SAAS,CAAC,IAAI;AACrB,iBAAC,IAAI,KAAK,SAAS,CAAC,IAAI,IAAI,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,EACzD;AACA,gBAAA,OAAO,IAAI;YACb;QACF;AAEA,QAAA,OAAO,KAAK;IACd;AAEU,IAAA,cAAc,CAAC,IAAY,EAAA;AACnC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE;AACxC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE;QAExC,IAAI,SAAS,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE;AACtC,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,SAAS,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE;AACtC,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,KAAK;IACd;AAEU,IAAA,eAAe,CAAC,UAAkB,EAAA;AAC1C,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE;AAC3C,QAAA,IAAI,CAAC,cAAc;AAAE,YAAA,OAAO,KAAK;AAEjC,QAAA,QACE,cAAc,CAAC,KAAK,KAAK,UAAU;YACnC,cAAc,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI;IAEhD;AAEU,IAAA,cAAc,CAAC,IAAY,EAAA;AACnC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE;AAC3C,QAAA,OAAO,cAAc,GAAG,cAAc,CAAC,IAAI,KAAK,IAAI,GAAG,KAAK;IAC9D;AAEU,IAAA,YAAY,CAAC,UAAkB,EAAA;AACvC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAC9C;uGAzVW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3ClC,09GA6GA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvEY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAKX,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAbjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAOhB,CAAC,YAAY,CAAC,EAAA,IAAA,EACjB;AACJ,wBAAA,KAAK,EAAE,aAAa;AACrB,qBAAA,EAAA,QAAA,EAAA,09GAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEtCH;;AAEG;MAEU,oBAAoB,CAAA;AACtB,IAAA,eAAe,GAAG,MAAM,CAAC,KAAK,2DAAC;AAC/B,IAAA,SAAS,GAAG,MAAM,CAAgB,IAAI,qDAAC;AACvC,IAAA,OAAO,GAAG,MAAM,CAAgB,IAAI,mDAAC;AACrC,IAAA,OAAO,GAAG,MAAM,CAAgC,IAAI,mDAAC;uGAJnD,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAApB,oBAAoB,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC;;;ACUD,IAAIF,cAAY,GAAG,CAAC;MAcP,gBAAgB,CAAA;AAClB,IAAA,QAAQ,GAAG,CAAA,SAAA,EAAY,EAAEA,cAAY,EAAE;AAE/B,IAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,EAAE;AACjE,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IACiB,UAAU,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC3D,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,UAAU,GACzB,MAAM,CAA+B,UAAU,CAAC;IAEjC,sBAAsB,GAAG,oBAAoB,EAAE;AAEvD,IAAA,YAAY,GAAG,KAAK,CAAC,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,cAAA,EAAA,GAAA,EAAA,CAAA,EAChC,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;IACO,OAAO,GAAG,KAAK,CAAS,SAAS,oDAAI,KAAK,EAAE,IAAI,EAAA,CAAG;AACnD,IAAA,aAAa,GAAG,KAAK,CAAC,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,GAAA,EAAA,CAAA,EACtC,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AAEO,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;QAC/B,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE;AACrE,IAAA,CAAC,mDAAC;AACO,IAAA,EAAE,GAAG,QAAQ,CAAC,MAAK;QAC1B,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ;AACxC,IAAA,CAAC,8CAAC;AACO,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;QAChC,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE;AACvE,IAAA,CAAC,oDAAC;AAEF,IAAA,WAAA,CAAsC,WAAoB,EAAA;AACxD,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;QAClD,IAAI,kBAAkB,EAAE;AACtB,YAAA,MAAM,CAAC,MAAM,kBAAkB,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrE,YAAA,MAAM,CAAC,MAAM,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D;QAEA,IAAI,CAAC,WAAW,EAAE;;AAEhB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CACxB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,aAAa,EACb,EAAE,CACH;QACH;IACF;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;IACvC;AApDW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,kBAiCJ,aAAa,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAjCzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,+oBATjB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FASD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAZ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,kBAAkB,EAAE,aAAa;AACjC,wBAAA,2BAA2B,EAAE,0BAA0B;AACvD,wBAAA,iBAAiB,EAAE,wBAAwB;AAC5C,qBAAA;AACF,iBAAA;;0BAkCc,SAAS;2BAAC,aAAa;;;MC5CzB,gBAAgB,CAAA;AACR,IAAA,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC;uGADzD,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,qBAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACwB,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAG,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVzD,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FASf,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAX5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,cAAc,EAAE,CAAC,gBAAgB,CAAC;AAClC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,2BAA2B,EAAE,qBAAqB;AAClD,wBAAA,SAAS,EAAE,mBAAmB;AAC/B,qBAAA;AACF,iBAAA;4FAEoD,gBAAgB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MCiBxD,2BAA2B,CAAA;AACnB,IAAA,KAAK,GAAG,EAAE,YAAY,EAAE;AAExB,IAAA,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC/B,IAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAClC,IAAA,YAAY,GAAG,MAAM,CAAC,wBAAwB,CAAC;AACjD,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACzB,IAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,IAAA,wBAAwB,GAAG,8BAA8B,CAC1E,IAAI,CAAC,QAAQ,CACd;AAEkB,IAAA,SAAS,GAAwB;AAClD,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,CAAC,CAAC;AACZ,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,CAAC,CAAC;AACZ,SAAA;KACF;AAEgB,IAAA,OAAO,GAAG,MAAM,CAAC,KAAK,mDAAC;AAC/B,IAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAElC,IAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,8CAA8B;IAE3D,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE;QACd;aAAO;YACL,IAAI,CAAC,IAAI,EAAE;QACb;IACF;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAC3C;QACF;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACnB;QACF;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IACzB;AAEU,IAAA,uBAAuB,CAAC,KAAiB,EAAA;AACjD,QAAA,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QACxE,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,KAAK,EAAE;QACd;IACF;IAEU,QAAQ,GAAA;AAChB,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AACxB,QAAA,MAAM,WAAW,GAAG;AAClB,YAAA,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE;AACzB,YAAA,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC;AAC3B,YAAA,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE;SACrB;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC;AAC5D,QAAA,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE;AACjC,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,aAAa,EAAE,IAAI;AACpB,SAAA,CAAC;QACF,IAAI,CAAC,KAAK,EAAE;IACd;uGA1FW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrCxC,gmCAqCA,EAAA,MAAA,EAAA,CAAA,6CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDXY,YAAY,mJAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,EAAA,+BAAA,EAAA,+BAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,KAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAWjE,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAdvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,OAAA,EAEvB,CAAC,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,qBAAqB,CAAC,EAAA,aAAA,EAM9D,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,kBAAkB,EAAE,SAAS;AAC9B,qBAAA,EAAA,QAAA,EAAA,gmCAAA,EAAA,MAAA,EAAA,CAAA,6CAAA,CAAA,EAAA;;;SExBa,sCAAsC,GAAA;IACpD,OAAO,IAAI,kCAAkC,EAAE;AACjD;AAEA;;AAEG;MAKmB,2BAA2B,CAAA;uGAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAA3B,2BAA2B,EAAA,UAAA,EAHnC,MAAM,EAAA,UAAA,EACN,sCAAsC,EAAA,CAAA;;2FAE9B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJhD,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AAClB,oBAAA,UAAU,EAAE,sCAAsC;AACnD,iBAAA;;AAoBM,MAAM,6BAA6B,GAAwB;AAChE,IAAA,OAAO,EAAE;AACP,QAAA,KAAK,EAAE;YACL,YAAY;YACZ,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,UAAU;AACX,SAAA;AACD,QAAA,MAAM,EAAE,YAAY;AACrB,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,KAAK,EAAE;YACL,YAAY;YACZ,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,UAAU;AACX,SAAA;AACD,QAAA,MAAM,EAAE,YAAY;AACrB,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,KAAK,EAAE;YACL,YAAY;YACZ,UAAU;YACV,QAAQ;YACR,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,UAAU;AACX,SAAA;AACD,QAAA,MAAM,EAAE,YAAY;AACrB,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,KAAK,EAAE;YACL,YAAY;YACZ,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,UAAU;AACX,SAAA;AACD,QAAA,MAAM,EAAE,YAAY;AACrB,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,KAAK,EAAE;YACL,YAAY;YACZ,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,UAAU;AACX,SAAA;AACD,QAAA,MAAM,EAAE,YAAY;AACrB,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,KAAK,EAAE;YACL,YAAY;YACZ,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,UAAU;AACX,SAAA;AACD,QAAA,MAAM,EAAE,YAAY;AACrB,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,KAAK,EAAE;YACL,YAAY;YACZ,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,UAAU;AACX,SAAA;AACD,QAAA,MAAM,EAAE,YAAY;AACrB,KAAA;;MAGU,+BAA+B,GAAG,IAAI,cAAc,CAC/D,iCAAiC,EACjC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,6BAA6B,EAAE;AAGhE,SAAU,2BAA2B,CACzC,OAA4B,EAAA;IAE5B,OAAO;AACL,QAAA,OAAO,EAAE,+BAA+B;AACxC,QAAA,QAAQ,EAAE,EAAE,GAAG,6BAA6B,EAAE,GAAG,OAAO,EAAE;KAC3D;AACH;AAGM,MAAO,kCAAmC,SAAQ,2BAA2B,CAAA;;AAEhE,IAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;;AAE1B,IAAA,OAAO,GAAG,MAAM,CAAC,+BAA+B,CAAC;AAElE,IAAA,KAAK,CAAC,KAAa,EAAA;QACjB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE;QACjC,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QAEtC,IAAI,CAAC,MAAM,EAAE;YACX,IAAI,CAAC,yBAAyB,EAAE;AAChC,YAAA,MAAM,GAAG,6BAA6B,CAAC,OAAO,CAAC;QACjD;AAEA,QAAA,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;YAE9C,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;YACxC,IAAI,KAAK,EAAE;gBACT,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;gBACrC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;gBACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;AACpC,gBAAA,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE;gBAC9D,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC;gBACtD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBACxD,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;AACpD,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACnD,gBAAA,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;AAChC,gBAAA,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAE5B,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE,EAAE;;AAE5B,oBAAA,OAAO,IAAI;gBACb;AAEA,gBAAA,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;gBACtD,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,WAAW,EAAE;;AAEjC,oBAAA,OAAO,IAAI;gBACb;AAEA,gBAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;YAC7B;QACF;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,CAAC,IAAwB,EAAA;QAC7B,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,EAAE;QACX;QACA,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE;YACX,IAAI,CAAC,yBAAyB,EAAE;AAChC,YAAA,MAAM,GAAG,6BAA6B,CAAC,OAAO,CAAC;QACjD;QACA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;IAC7C;IAEQ,UAAU,CAAC,IAAwB,EAAE,MAAc,EAAA;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACpD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAEhD,QAAA,OAAO;AACJ,aAAA,OAAO,CAAC,OAAO,EAAE,IAAI;AACrB,aAAA,OAAO,CAAC,KAAK,EAAE,KAAK;AACpB,aAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;IACxB;AAEQ,IAAA,kBAAkB,CAAC,MAAc,EAAA;QACvC,MAAM,OAAO,GACX,GAAG;YACH;;AAEG,iBAAA,OAAO,CAAC,KAAK,EAAE,KAAK;;AAEpB,iBAAA,OAAO,CAAC,KAAK,EAAE,KAAK;AACpB,iBAAA,OAAO,CAAC,MAAM,EAAE,YAAY;AAC5B,iBAAA,OAAO,CAAC,QAAQ,EAAE,UAAU;AAC5B,iBAAA,OAAO,CAAC,MAAM,EAAE,UAAU;AAC1B,iBAAA,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC;AAChC,YAAA,GAAG;AACL,QAAA,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;IAC5B;AAEQ,IAAA,cAAc,CAAC,IAAY,EAAA;AACjC,QAAA,IAAI,IAAI,GAAG,GAAG,EAAE;YACd,OAAO,IAAI,GAAG,IAAI;QACpB;AACA,QAAA,OAAO,IAAI;IACb;IAEQ,yBAAyB,GAAA;QAC/B,OAAO,CAAC,IAAI,CACV,CAAA,0EAAA,EAA6E,IAAI,CAAC,MAAM,CAAA,6FAAA,CAA+F,CACxL;IACH;uGA1GW,kCAAkC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAlC,kCAAkC,EAAA,CAAA;;2FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAD9C;;AA8GK,SAAU,kCAAkC,CAChD,KAEuC,EAAA;AAEvC,IAAA,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;QAClB,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,KAAK,EAAE;IAClE;IACA,OAAO,OAAO,KAAK,KAAK;UACpB,EAAE,OAAO,EAAE,2BAA2B,EAAE,UAAU,EAAE,KAAK;UACzD,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC/D;;MCrOa,0BAA0B,CAAA;IAGpB,UAAU,GAAG,MAAM,CAClC,UAAU,EACV,EAAE,IAAI,EAAE,IAAI,EAAE,CACf;AAEgB,IAAA,eAAe,GAAG,MAAM,CAAC,2BAA2B,CAAC;AACrD,IAAA,YAAY,GAAG,MAAM,CAAC,wBAAwB,CAAC;;IAGvD,UAAU,GAAG,KAAK,CAAM,IAAI,uDAAI,KAAK,EAAE,OAAO,EAAA,CAAG;AACjD,IAAA,aAAa,GAAG,KAAK,CAAC,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,GAAA,EAAA,CAAA,EACjC,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACO,IAAA,GAAG,GAAG,KAAK,CAAa,IAAI,+CAAC;AAC7B,IAAA,GAAG,GAAG,KAAK,CAAa,IAAI,+CAAC;IAC7B,SAAS,GAAG,MAAM,EAAO;IACzB,UAAU,GAAG,MAAM,EAAO;IAE1B,KAAK,GAAG,YAAY,CAAM,MAAM,IAAI,CAAC,UAAU,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAClD,IAAA,UAAU,GAAG,QAAQ,CAAC,MAC7B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,sDACzC;AACQ,IAAA,QAAQ,GAAG,YAAY,CAAU,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,oDAAC;AAEtD,IAAA,cAAc,GAAG,MAAM,CAAC,KAAK,0DAAC;AAC9B,IAAA,0BAA0B,GACzC,MAAM,CAA4B,IAAI,sEAAC;AAEjC,IAAA,YAAY;AACZ,IAAA,aAAa;AAErB,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;YAC7B,SAAS,CAAC,MAAK;gBACb,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACtD,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;;AAG/C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC;AAE3D,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,YAAY,KAAK,IAAI,CAAC;;AAG/D,QAAA,IAAI,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE;AACzD,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/B;AACA,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;IAC/B;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,IAAI,CAAC,WAAW,EAAE;QACpB;AAEA,QAAA,IACE,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,0BAA0B,EAAE,CAAC,KAAK,CAAC,EAC1E;YACA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAClC,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACxD;AAEA,QAAA,IAAI,CAAC,aAAa,IAAI;IACxB;IAEA,WAAW,GAAA;AACT,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;QAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC;QACzD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,cAAc;IACtD;IAEA,WAAW,CACT,KAAiB,EACjB,EACE,UAAU,EACV,aAAa,MACwC,EAAE,EAAA;AAEzD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;QAC7B,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACtD,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,WAAW,EAAE;QACpB;QACA,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;;AAE1B,YAAA,IAAI,CAAC,aAAa,IAAI;AACtB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B;IACF;;AAGA,IAAA,UAAU,CAAC,KAAiB,EAAA;QAC1B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC/C;AAEA,IAAA,gBAAgB,CAAC,EAA8C,EAAA;AAC7D,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;IACxB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;IACzB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;IAC/B;AAEA,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC/B,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO;AAEzB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;AAC1B,YAAA,OAAO,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE;QACxE;AAEA,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;AAErD,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;AACd,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC5D,YAAA,IAAI,aAAa,IAAI,cAAc,CAAC,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE;AACtE,gBAAA,OAAO,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE;YACxD;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;AACd,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC5D,IAAI,aAAa,IAAI,cAAc,CAAC,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE;AACrE,gBAAA,OAAO,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE;YACxD;QACF;AACA,QAAA,OAAO,IAAI;IACb;uGAtJW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAlB1B;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,0BAA0B,CAAC;AACzD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,0BAA0B,CAAC;AACzD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAOU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBArBtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,gCAAgC,CAAC;AACzD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,gCAAgC,CAAC;AACzD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,SAAS,EAAE,iBAAiB;AAC7B,qBAAA;AACF,iBAAA;;;MChCY,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAV3B,qBAAqB;YACrB,2BAA2B;AAC3B,YAAA,0BAA0B,aAG1B,qBAAqB;YACrB,2BAA2B;YAC3B,0BAA0B,CAAA,EAAA,CAAA;AAGjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAV3B,qBAAqB;YACrB,2BAA2B,CAAA,EAAA,CAAA;;2FASlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAZ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,qBAAqB;wBACrB,2BAA2B;wBAC3B,0BAA0B;AAC3B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,qBAAqB;wBACrB,2BAA2B;wBAC3B,0BAA0B;AAC3B,qBAAA;AACF,iBAAA;;;ACTK,MAAO,iCAAkC,SAAQ,wBAA8B,CAAA;AACnF;;;AAGG;AACH,IAAA,QAAQ,CAAC,KAAkB,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;;QAGvB,MAAM,OAAO,GAAG,IAAI,IAAI,CACtB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CACjE;QAED,OAAO;AACL,YAAA,IAAI,EAAE,OAAO,CAAC,cAAc,EAAE;YAC9B,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC;AAChC,YAAA,GAAG,EAAE,OAAO,CAAC,UAAU,EAAE;SAC1B;IACH;AAEA;;;AAGG;AACH,IAAA,UAAU,CAAC,MAAiC,EAAA;AAC1C,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI;;AAGxB,QAAA,OAAO,IAAI,IAAI,CACb,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAChE;IACH;uGA/BW,iCAAiC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAjC,iCAAiC,EAAA,CAAA;;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAD7C;;;ACCK,MAAO,oCAAqC,SAAQ,wBAAgC,CAAA;AACxF;;;AAGG;AACH,IAAA,QAAQ,CAAC,KAAoB,EAAA;AAC3B,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;AAEvB,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;QAE5B,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AACzB,YAAA,OAAO,IAAI;QACb;QAEA,OAAO;AACL,YAAA,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE;AAC3B,YAAA,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC;AAC7B,YAAA,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE;SACvB;IACH;AAEA;;;AAGG;AACH,IAAA,UAAU,CAAC,MAAiC,EAAA;AAC1C,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI;AAExB,QAAA,OAAO,IAAI,IAAI,CACb,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAChE,CAAC,WAAW,EAAE;IACjB;uGA/BW,oCAAoC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAApC,oCAAoC,EAAA,CAAA;;2FAApC,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBADhD;;;MCYY,2BAA2B,CAAA;IAC7B,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAO;AAEvB,IAAA,SAAS,GAAG,KAAK,CAAgC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,qDAAC;IACnE,MAAM,GAAG,MAAM,EAAO;AAEtB,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,OAAO,CAAC,EAAO,EAAE,EAAO,KAAI;AAC1B,YAAA,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE;gBACtE,OAAO,EAAE,KAAK,EAAE;YAClB;AACA,YAAA,OAAO,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;AAC1B,QAAA,CAAC;AACH,IAAA,CAAC,yDAAC;uGAdS,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,+eAP5B,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAOf,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBATvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,KAAK,EAAE,sBAAsB;AAC9B,qBAAA;AACF,iBAAA;;;MCEY,iCAAiC,CAAA;;AAE3B,IAAA,KAAK,GAAG,MAAM,CAAC,2BAA2B,EAAE;AAC3D,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IAEO,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAO;AAEpB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAChC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;QAC3C,IAAI,KAAK,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS,EAAE;AACtD,YAAA,OAAO,KAAK;QACd;QACA,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,aAAa,EAAE,KAAK,CAAC;AACzD,IAAA,CAAC,oDAAC;IAGF,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACrC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACtC;uGArBW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,8CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAT7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,KAAK,EAAE,8BAA8B;AACrC,wBAAA,gDAAgD,EAAE,YAAY;AAC9D,wBAAA,qBAAqB,EAAE,YAAY;AACpC,qBAAA;AACF,iBAAA;;sBAkBE,YAAY;uBAAC,OAAO;;;MClBV,qCAAqC,CAAA;AACvC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAO;AAC7B,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAc;uGAFjC,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qCAAqC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVtC,CAAA;;;;;;;YAOA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EARA,YAAY,oJAAE,iCAAiC,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAW9C,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAbjD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,iCAAiC,CAAC;AAC1D,oBAAA,QAAQ,EAAE,CAAA;;;;;;;AAOA,WAAA,CAAA;oBACV,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;MCLY,qCAAqC,CAAA;AACvC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAO;uGAD3B,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qCAAqC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EALtC,CAAA;;AAEA,WAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAHA,iCAAiC,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAMhC,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBARjD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;oBAC5C,OAAO,EAAE,CAAC,iCAAiC,CAAC;AAC5C,oBAAA,QAAQ,EAAE,CAAA;;AAEA,WAAA,CAAA;oBACV,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;MCOY,wBAAwB,CAAA;uGAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAVjC,2BAA2B;YAC3B,qCAAqC;AACrC,YAAA,qCAAqC,aAGrC,2BAA2B;YAC3B,qCAAqC;YACrC,qCAAqC,CAAA,EAAA,CAAA;AAG5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YATjC,qCAAqC,CAAA,EAAA,CAAA;;2FAS5B,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAZpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,2BAA2B;wBAC3B,qCAAqC;wBACrC,qCAAqC;AACtC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,2BAA2B;wBAC3B,qCAAqC;wBACrC,qCAAqC;AACtC,qBAAA;AACF,iBAAA;;;MCRY,aAAa,CAAA;uGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAHd,gBAAgB,EAAE,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAClC,gBAAgB,EAAE,gBAAgB,CAAA,EAAA,CAAA;wGAEjC,aAAa,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;AAC7C,oBAAA,OAAO,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;AAC9C,iBAAA;;;ACEM,MAAM,cAAc,GAAG,IAAI,cAAc,CAC9C,gBAAgB,EAChB,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE;AAG7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BG;AACG,SAAU,mBAAmB,CACjC,MAA0B,EAAA;AAE1B,IAAA,OAAO,wBAAwB,CAAC;QAC9B,OAAO,MAAM,KAAK;cACd,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM;cAC7C,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE;AAClD,KAAA,CAAC;AACJ;;MC9Ba,uBAAuB,CAAA;AACf,IAAA,KAAK,GAAG,EAAE,YAAY,EAAE;AACxB,IAAA,SAAS,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAC1C,IAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;IAEnC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU;AAEzC,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;QAChD,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,KAAK;QACd;AACA,QAAA,OAAO,WAAW,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,GAAG,CAAC;AACrE,IAAA,CAAC,2DAAC;AAEiB,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;QAChD,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,EAAE;QACX;AACA,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC3B,aAAA,WAAW;aACX,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;QAC1D,MAAM,MAAM,GAKN,EAAE;;QAGR,MAAM,mBAAmB,GAAG,IAAI,GAAG,CACjC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,CACzC;QACD;AACG,aAAA,MAAM,CAAC,CAAC,GAAG,KAAK,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAG,CAAC;AACrD,aAAA,OAAO,CAAC,CAAC,GAAG,KAAI;AACf,YAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,EAAG;YAC3B,MAAM,CAAC,IAAI,CAAC;AACV,gBAAA,GAAG,EAAE,QAAQ;gBACb,WAAW,EAAE,GAAG,CAAC,WAAW;AAC5B,gBAAA,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC;AACtC,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;;QAGJ;AACG,aAAA,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;AAC7C,aAAA,OAAO,CAAC,CAAC,GAAG,KAAI;YACf,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;YAC3C,IAAI,YAAY,EAAE;AAChB,gBAAA,MAAM,OAAO,GACX,OAAO,YAAY,KAAK;sBACpB,YAAY,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC;sBACtC,YAAY;gBAClB,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG;AACH,oBAAA,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC;oBAChC,OAAO;AACR,iBAAA,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;AAEJ,QAAA,OAAO,MAAM;AACf,IAAA,CAAC,6DAAC;IAEiB,UAAU,GAAG,QAAQ,CACtC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,sDAC7D;uGArEU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAA,EAAA,gCAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxBpC,guBA2BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDVY,gBAAgB,mJAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAO7B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAXnC,SAAS;+BACE,kBAAkB,EAAA,eAAA,EAEX,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,gBAAgB,EAAE,YAAY,CAAC,EAAA,IAAA,EACnC;AACJ,wBAAA,KAAK,EAAE,qBAAqB;AAC5B,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,iBAAiB,EAAE,8BAA8B;AAClD,qBAAA,EAAA,QAAA,EAAA,guBAAA,EAAA;;;MEPU,oBAAoB,CAAA;AACtB,IAAA,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC;uGAD3C,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,UAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACW,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAP3C,CAAA,yCAAA,CAA2C,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAM1C,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,QAAQ,EAAE,CAAA,yCAAA,CAA2C;oBACrD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,iBAAiB,EAAE,QAAQ;AAC5B,qBAAA;AACF,iBAAA;6FAE2C,WAAW,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MCX1C,qBAAqB,CAAA;IACvB,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjD,GAAG,GAAG,KAAK,CAAC,QAAQ,+CAAW,KAAK,EAAE,SAAS,EAAA,CAAG;uGAFhD,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACtB,iBAAA;;;ACFM,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAAS,kBAAkB,CAAC;;ACc9E,IAAIF,cAAY,GAAG,CAAC;MAmBP,oBAAoB,CAAA;AACtB,IAAA,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACnC,IAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAEjD,IAAA,aAAa,GAAG,KAAK,CAAC,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,GAAA,EAAA,CAAA,EACtC,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACO,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;QAChC,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE;AAC1E,IAAA,CAAC,oDAAC;IAEO,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAU,EAAE;AAE1D,IAAA,SAAS,GAAG,YAAY,CAAC,oBAAoB,qDAAC;AAC9C,IAAA,WAAW,GAAG,eAAe,CAAC,qBAAqB,uDAAC;uGAflD,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EARpB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,gBAAgB;AACzB,gBAAA,UAAU,EAAE,MAAM,CAAA,cAAA,EAAiB,EAAEA,cAAY,CAAA,CAAE;AACpD,aAAA;YACD,oBAAoB;AACrB,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAgBiC,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EACf,qBAAqB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClD9D,4EAGA,4CDoBY,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAYtB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAjBhC,SAAS;+BACE,eAAe,EAAA,QAAA,EACf,aAAa,EAAA,eAAA,EAEN,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,uBAAuB,CAAC,EAAA,IAAA,EAC5B;AACJ,wBAAA,KAAK,EAAE,eAAe;qBACvB,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,gBAAgB;AACzB,4BAAA,UAAU,EAAE,MAAM,CAAA,cAAA,EAAiB,EAAEA,cAAY,CAAA,CAAE;AACpD,yBAAA;wBACD,oBAAoB;AACrB,qBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA;AAgBiC,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,oBAAoB,gGACf,qBAAqB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEhC9D,IAAIA,cAAY,GAAG,CAAC;AAEpB;;;;;AAKG;MAWU,kBAAkB,CAAA;AACpB,IAAA,QAAQ,GAAG,CAAA,WAAA,EAAc,EAAEA,cAAY,EAAE;AAE1C,IAAA,iBAAiB,GAAG,IAAI,OAAO,EAAQ;IACtC,eAAe,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AAE7D,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AAEzB,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAA6B;AAErD,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAChC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAC9B,OAAO,OAAO,YAAY,WAAW,GAAG,OAAO,GAAG,IAAI;AACxD,IAAA,CAAC,oDAAC;AAEO,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;AAC5B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,OAAO,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,IAAI;AACrD,IAAA,CAAC,gDAAC;IAEO,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AACtC,IAAA,MAAM,GAAG,KAAK,CAAS,CAAC,kDAAC;IAEzB,aAAa,GAAG,MAAM,EAAE;IACxB,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AAE7C,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AACtC,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,OAAO,wBAAwB,IAAI,CAAC,MAAM,EAAE,KAAK;AACnD,IAAA,CAAC,uDAAC;AAEO,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAChC,QAAA,OAAO,CAAC,YAAY,EAAE,CAAA,YAAA,EAAe,IAAI,CAAC,QAAQ,EAAE,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACnE,IAAA,CAAC,oDAAC;IAGF,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IAC1B;IAGA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE;IAC/B;uGA/CW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpC/B,qRAUA,EAAA,MAAA,EAAA,CAAA,wXAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDkBY,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAQf,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAV9B,SAAS;+BACE,YAAY,EAAA,OAAA,EACb,CAAC,gBAAgB,CAAC,mBAGV,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,cAAc,EAAE,eAAe;AAChC,qBAAA,EAAA,QAAA,EAAA,qRAAA,EAAA,MAAA,EAAA,CAAA,wXAAA,CAAA,EAAA;;sBAwCA,YAAY;uBAAC,YAAY;;sBAKzB,YAAY;uBAAC,YAAY;;;AE9CrB,MAAM,yBAAyB,GAAG;MAM5B,kBAAkB,CAAA;AACZ,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAE9B,IAAA,UAAU,GAAG,IAAI,OAAO,EAAQ;IAClC,QAAQ,GAAqC,IAAI;IACjD,yBAAyB,GAAyB,IAAI;IACtD,kBAAkB,GAAiC,IAAI;AACvD,IAAA,UAAU;AACV,IAAA,aAAa;AACb,IAAA,UAAU;AAClB,IAAA,IAAY,eAAe,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI;IAC1D;AACQ,IAAA,gBAAgB;IAChB,UAAU,GAAuB,cAAc;IAC/C,OAAO,GAAW,yBAAyB;IAC3C,SAAS,GAAG,KAAK;IACjB,gBAAgB,GAAgC,IAAI;IACpD,gBAAgB,GAAgC,IAAI;IACpD,aAAa,GAAyC,IAAI;IAElE,IACI,OAAO,CAAC,KAAuC,EAAA;AACjD,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE;YAC3B;QACF;AAEA,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;AAGrB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE;YACpD,IAAI,CAAC,IAAI,EAAE;YACX;QACF;;QAGA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE;YACrD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC;QACpD;IACF;AACA,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;IACtB;IAGA,QAAQ,GAAG,KAAK;IAGhB,WAAW,GAAyB,OAAO;AAE3C;;AAEG;IACH,IACI,eAAe,CAAC,KAA2B,EAAA;AAC7C,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;IAC/B;AACA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,WAAW;IAClD;AAEA;;AAEG;IACH,IACI,eAAe,CAAC,KAA2B,EAAA;AAC7C,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;IAC/B;AACA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,WAAW;IAClD;IAEA,IACI,MAAM,CAAC,KAAK,EAAA;AACd,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;YAC1B;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,yBAAyB;QAChE,IAAI,CAAC,sBAAsB,EAAE;IAC/B;AACA,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;IACrB;AAES,IAAA,SAAS,GAAG,KAAK,CAAC,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,GAAA,EAAA,CAAA,EAC1B,KAAK,EAAE,oBAAoB;QAC3B,SAAS,EAAE,eAAe,EAAA,CAC1B;IAEF,IACI,SAAS,CAAC,KAAyB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;YAC7B;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;QAEvB,IAAI,CAAC,sBAAsB,EAAE;IAC/B;AACA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;IACxB;AAEA,IAAA,IACI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,eAAe,EAAE,QAAQ,IAAI,IAAI;IAC/C;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AAC1B,QAAA,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;AACzB,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;IAC5B;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE;YAClC;QACF;AAEA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AACvC,QAAA,IAAI,CAAC,aAAa;YAChB,IAAI,CAAC,aAAa,IAAI,IAAI,eAAe,CAAC,kBAAkB,CAAC;AAE/D,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,OAAO,EAAE;QAE9C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QACvD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC;QACjD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,eAAgB,CAAC,aAAa,CAAC,SAAS,CACrE,MAAM,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CACpC;AAED,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,OAAO,EAAE;;AAEpC,YAAA,IAAI,CAAC,eAAgB,CAAC,eAAe;AAClC,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC;AAC9C,iBAAA,SAAS,CAAC,MAAM,UAAU,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvD;AAAO,aAAA,IAAI,IAAI,CAAC,eAAe,KAAK,OAAO,EAAE;;YAE3C;AACG,iBAAA,oBAAoB;AACpB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC;AAC9C,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAC7C,gBAAA,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;oBAC/D,IAAI,CAAC,IAAI,EAAE;gBACb;AACF,YAAA,CAAC,CAAC;QACN;;AAGA,QAAA,IAAI,CAAC,gBAAiB,CAAC,IAAI,CACzB,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAC1C,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACnB,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;oBACpB;gBACF;gBACA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;gBAC9C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;AACjD,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,IAAI,GAAA;QACF,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE;YACnC;QACF;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AACxB,QAAA,IAAI,CAAC,yBAA0B,CAAC,IAAI,EAAE;AACtC,QAAA,IAAI,CAAC,yBAA0B,CAAC,QAAQ,EAAE;AAC1C,QAAA,IAAI,CAAC,kBAAkB,EAAE,WAAW,EAAE;AACtC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;IAC7B;IAEA,MAAM,GAAA;QACJ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,EAAE;YACX;QACF;QACA,IAAI,CAAC,IAAI,EAAE;IACb;IAGA,gBAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACvE;QACF;QACA,IAAI,CAAC,MAAM,EAAE;IACf;IAGA,gBAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACvE;QACF;AACA,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACrB,IAAI,CAAC,gBAAgB,EAAE;AAEvB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACtE;aAAO;YACL,IAAI,CAAC,IAAI,EAAE;QACb;IACF;IAGA,gBAAgB,GAAA;QACd,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,IAAI,CAAC,eAAe,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YACrD;QACF;AACA,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,UAAU,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACnC;AAEA;;AAEG;IACK,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE;YACzD,IAAI,CAAC,IAAI,EAAE;QACb;IACF;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE;AAC/B,YAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AAChC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QAC3B;IACF;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,OAAO,IAAI,CAAC,UAAU;QACxB;AAEA,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC3B,aAAA,QAAQ;AACR,aAAA,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAC3D,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,cAAc,CAAC,UAAgC,CAAC,CAClE;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAEjE,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,cAAc,EAAE,CAAC;AAE3E,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,MAAM,EAAE;AACnC,YAAA,IAAI,CAAC;AACF,iBAAA,aAAa;AACb,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;AAC/B,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,gBAAA,IACE,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE;oBAC9B,KAAK,CAAC,OAAO,KAAK,MAAM;AACxB,oBAAA,CAAC,cAAc,CAAC,KAAK,CAAC,EACtB;oBACA,IAAI,CAAC,IAAI,EAAE;gBACb;AACF,YAAA,CAAC,CAAC;QACN;QAEA,IAAI,CAAC,cAAc,EAAE;QAErB,OAAO,IAAI,CAAC,UAAU;IACxB;IAEQ,sBAAsB,GAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;QAClC;IACF;IAEQ,cAAc,GAAA;AACpB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAW,CAAC,SAAS;AACxC,aAAA,gBAAqD;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;AACpD,QAAA,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;IACnC;AAEQ,IAAA,YAAY,CAClB,kBAAsC,EAAA;AAEtC,QAAA,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAGzD;AAED,QAAA,IAAI,kBAAiD;AACrD,QAAA,IAAI,iBAAyB;AAC7B,QAAA,IAAI,SAAS,KAAK,OAAO,EAAE;YACzB,kBAAkB,GAAG,KAAK;YAC1B,iBAAiB,GAAG,CAAC,EAAE;QACzB;AAAO,aAAA,IAAI,SAAS,KAAK,KAAK,EAAE;YAC9B,kBAAkB,GAAG,QAAQ;YAC7B,iBAAiB,GAAG,EAAE;QACxB;aAAO;YACL,kBAAkB,GAAG,QAAQ;YAC7B,iBAAiB,GAAG,CAAC;QACvB;AAEA,QAAA,IAAI,iBAAyB;AAC7B,QAAA,IAAI,SAAS,KAAK,OAAO,EAAE;YACzB,iBAAiB,GAAG,CAAC,EAAE;QACzB;AAAO,aAAA,IAAI,SAAS,KAAK,KAAK,EAAE;YAC9B,iBAAiB,GAAG,EAAE;QACxB;aAAO;YACL,iBAAiB,GAAG,CAAC;QACvB;AAEA,QAAA,MAAM,KAAK,GAAsB;AAC/B,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE,kBAAkB;AAC5B,YAAA,OAAO,EAAE,iBAAiB;YAC1B,UAAU,EAAE,CAAA,MAAA,EAAS,SAAS,CAAA,CAAE;SACjC;AAED,QAAA,MAAM,IAAI,GAAsB;AAC9B,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,kBAAkB;AAC5B,YAAA,OAAO,EAAE,iBAAiB;YAC1B,UAAU,EAAE,CAAA,KAAA,EAAQ,SAAS,CAAA,CAAE;SAChC;AAED,QAAA,MAAM,GAAG,GAAsB;AAC7B,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,OAAO,EAAE,iBAAiB;YAC1B,UAAU,EAAE,CAAA,IAAA,EAAO,SAAS,CAAA,CAAE;SAC/B;AAED,QAAA,MAAM,MAAM,GAAsB;AAChC,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE,iBAAiB;YAC1B,UAAU,EAAE,CAAA,OAAA,EAAU,SAAS,CAAA,CAAE;SAClC;AAED,QAAA,IAAI,QAAQ,KAAK,OAAO,EAAE;YACxB,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC;QACnC;AAAO,aAAA,IAAI,QAAQ,KAAK,MAAM,EAAE;YAC9B,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC;QACnC;AAAO,aAAA,IAAI,QAAQ,KAAK,KAAK,EAAE;YAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;QACnC;aAAO;YACL,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC;QACnC;IACF;uGAzWW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EA8CmB,gBAAgB,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EA4Bd,eAAe,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FA1EtD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,WAAW;AACtB,iBAAA;;sBAwBE,KAAK;uBAAC,WAAW;;sBAuBjB,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGjE,KAAK;uBAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE;;sBAMvC,KAAK;uBAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE;;sBAW3C,KAAK;uBAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE;;sBAQ3C,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,eAAe,EAAE;;sBAkBlE,KAAK;uBAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE;;sBAcrC,WAAW;uBAAC,uBAAuB;;sBAiFnC,YAAY;uBAAC,OAAO;;sBAQpB,YAAY;uBAAC,YAAY;;sBAezB,YAAY;uBAAC,YAAY;;;MClPf,eAAe,CAAA;uGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAf,eAAe,EAAA,OAAA,EAAA,CAHhB,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAClB,kBAAkB,CAAA,EAAA,CAAA;wGAEjB,eAAe,EAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBAC7B,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC9B,iBAAA;;;MCiBY,qBAAqB,CAAA;AACf,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACnC,IAAA,SAAS,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAChC,IAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,EAAE;AACjE,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IAEO,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ;IAE7C,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACrB,IAAA,UAAU,GAAG,KAAK,CAAmC,IAAI,sDAAC;IAC1D,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IACvB,OAAO,GAAG,KAAK,CAAS,SAAS,oDAAI,KAAK,EAAE,IAAI,EAAA,CAAG;AAEnD,IAAA,EAAE,GAAG,QAAQ,CAAC,MAAK;QAC1B,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ;AACxC,IAAA,CAAC,8CAAC;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;QAC3C,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,SAAS,EAAE;AAC3D,IAAA,CAAC,qDAAC;AAEO,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;QAClC,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA,CAAA,EAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA,CAAE,CAAC;AACxE,QAAA,IAAI,OAAO,YAAY,WAAW,EAAE;AAClC,YAAA,OAAO,OAAO;QAChB;AACA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,0DAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;QAClD,IAAI,kBAAkB,EAAE;AACtB,YAAA,MAAM,CAAC,MAAM,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACzD;IACF;IAEA,YAAY,GAAA;AACV,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE;;;QAGrC,IAAI,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAClC,OAAO,CAAC,KAAK,EAAE;QACjB;IACF;uGAhDW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvBlC,soBAoBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDHY,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAMd,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBATjC,SAAS;+BACE,UAAU,EAAA,OAAA,EAEX,CAAC,eAAe,CAAC,mBACT,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,WAAW,EAAE,MAAM;AACpB,qBAAA,EAAA,QAAA,EAAA,soBAAA,EAAA;;;MEAU,sBAAsB,CAAA;IAChB,WAAW,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC1D,IAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,EAAE;AACjE,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IAEO,cAAc,GAAG,KAAK,CAAqB,SAAS,2DAC3D,KAAK,EAAE,eAAe,EAAA,CACtB;AAEe,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACjD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE;AACvC,QAAA,IAAI,SAAS,YAAY,SAAS,EAAE;AAClC,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,6DAAC;IAEe,cAAc,GAAG,oBAAoB,CAAC;QACrD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;AAC1C,KAAA,CAAC;AAEO,IAAA,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO;AACrC,IAAA,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM;AAEnC,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;QAC1C,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACxC,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,CAAA,EAAG,IAAI,CAAC,WAAW,UAAU;AACtC,IAAA,CAAC,8DAAC;IAEF,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5C;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5C;uGAtCW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,6BAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBARlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,IAAI,EAAE;AACJ,wBAAA,qBAAqB,EAAE,2BAA2B;AAClD,wBAAA,0BAA0B,EAAE,sBAAsB;AACnD,qBAAA;AACF,iBAAA;;;MCXY,8BAA8B,CAAA;AACxB,IAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,EAAE;AACjE,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IAEO,cAAc,GAAG,KAAK,CAAgB,IAAI,2DACjD,KAAK,EAAE,iBAAiB,EAAA,CACxB;AAEiB,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;QAC5C,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,OAAO,EAAE;AACpE,IAAA,CAAC,sDAAC;uGAXS,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,IAAI,EAAE;AACJ,wBAAA,wBAAwB,EAAE,cAAc;AACzC,qBAAA;AACF,iBAAA;;;MCmBY,iBAAiB,CAAA;uGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAhB1B,oBAAoB;YACpB,qBAAqB;YACrB,oBAAoB;YACpB,qBAAqB;YACrB,4BAA4B;AAC5B,YAAA,sBAAsB,aAGtB,oBAAoB;YACpB,qBAAqB;YACrB,oBAAoB;YACpB,qBAAqB;YACrB,4BAA4B;YAC5B,sBAAsB,CAAA,EAAA,CAAA;AAGb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAhB1B,oBAAoB,CAAA,EAAA,CAAA;;2FAgBX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAlB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB,qBAAqB;wBACrB,oBAAoB;wBACpB,qBAAqB;wBACrB,4BAA4B;wBAC5B,sBAAsB;AACvB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB,qBAAqB;wBACrB,oBAAoB;wBACpB,qBAAqB;wBACrB,4BAA4B;wBAC5B,sBAAsB;AACvB,qBAAA;AACF,iBAAA;;;MCLY,eAAe,CAAA;uGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,uJAhBhB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yKAAA,CAAA,EAAA,CAAA;;2FAgBf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAlB3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,YACT,CAAA,cAAA,CAAgB,EAAA,cAAA,EACV,CAAC,OAAO,CAAC,EAAA,IAAA,EACnB;AACJ,wBAAA,KAAK,EAAE,SAAS;AACjB,qBAAA,EAAA,MAAA,EAAA,CAAA,yKAAA,CAAA,EAAA;;;MCKU,mBAAmB,CAAA;IACrB,IAAI,GAAG,KAAK,CAAsB,SAAS,iDAClD,KAAK,EAAE,gBAAgB,EAAA,CACvB;IACO,WAAW,GAAG,KAAK,CAAC,EAAE,wDAAI,KAAK,EAAE,uBAAuB,EAAA,CAAG;IAC3D,QAAQ,GAAG,KAAK,CAAC,EAAE,qDAAI,KAAK,EAAE,oBAAoB,EAAA,CAAG;uGALnD,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAH,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdhC,wcAcA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDNY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAMX,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAV/B,SAAS;+BAEE,cAAc,EAAA,OAAA,EAEf,CAAC,YAAY,CAAC,kBACP,CAAC,WAAW,CAAC,EAAA,IAAA,EACvB;AACJ,wBAAA,KAAK,EAAE,eAAe;AACvB,qBAAA,EAAA,QAAA,EAAA,wcAAA,EAAA;;;MEHU,oBAAoB,CAAA;uGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,qHALrB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAKf,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,gBAAgB;AACxB,qBAAA;AACF,iBAAA;;;MCyBY,sBAAsB,CAAA;AAChB,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;IAE/C,OAAO,GAAG,KAAK,CAAC,QAAQ,mDAC/B,KAAK,EAAE,eAAe,EAAA,CACtB;IAEO,MAAM,GAAG,QAAQ,CACxB,KAAK,CACH,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,EAChD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAClD,EACD,EAAE,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAC/C;AAED,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE;AACtD,QAAA,CAAC,CAAC;IACJ;uGAnBW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAVtB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,oBAAoB;gBAC7B,UAAU,EAAE,MAAK;AACf,oBAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,oBAAA,OAAO,MAAM,8BAA8B,CAAC,QAAQ,CAAC;gBACvD,CAAC;AACF,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAJ,IAAA,CAAA,cAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAEU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBApBlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,cAAc,EAAE;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,cAAc;AACzB,4BAAA,OAAO,EAAE,CAAC,6BAA6B,EAAE,6BAA6B,CAAC;AACxE,yBAAA;AACF,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,oBAAoB;4BAC7B,UAAU,EAAE,MAAK;AACf,gCAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,gCAAA,OAAO,MAAM,8BAA8B,CAAC,QAAQ,CAAC;4BACvD,CAAC;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;;;MCvBY,wBAAwB,CAAA;uGAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,6HALzB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAKf,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,oBAAoB;AAC5B,qBAAA;AACF,iBAAA;;;MCGY,0BAA0B,CAAA;AAClB,IAAA,WAAW,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAE5C,IAAA,IAAI,GAAG,QAAQ,CAAa,MAAK;AAClD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,SAAS,GAAG,WAAW;AAC5D,IAAA,CAAC,gDAAC;uGALS,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAF3B,CAAA,2BAAA,CAA6B,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAD7B,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGX,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;oBAChC,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,QAAQ,EAAE,CAAA,2BAAA,CAA6B;AACxC,iBAAA;;;MCgBY,YAAY,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAhBrB,eAAe;YACf,mBAAmB;YACnB,sBAAsB;YACtB,wBAAwB;YACxB,oBAAoB;AACpB,YAAA,0BAA0B,aAG1B,eAAe;YACf,mBAAmB;YACnB,sBAAsB;YACtB,wBAAwB;YACxB,oBAAoB;YACpB,0BAA0B,CAAA,EAAA,CAAA;AAGjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAfrB,mBAAmB;YAInB,0BAA0B,CAAA,EAAA,CAAA;;2FAWjB,YAAY,EAAA,UAAA,EAAA,CAAA;kBAlBxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,eAAe;wBACf,mBAAmB;wBACnB,sBAAsB;wBACtB,wBAAwB;wBACxB,oBAAoB;wBACpB,0BAA0B;AAC3B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,eAAe;wBACf,mBAAmB;wBACnB,sBAAsB;wBACtB,wBAAwB;wBACxB,oBAAoB;wBACpB,0BAA0B;AAC3B,qBAAA;AACF,iBAAA;;;MCvBY,UAAU,CAAA;AACrB,IAAA,QAAQ;AACT;;MCFY,aAAa,GAAG,IAAI,cAAc,CAAM,aAAa;;MCQrD,cAAc,CAAA;AACzB;;;;AAIG;AACH,IAAA,IAAI;AAEJ;;;;;;;AAOG;AACH,IAAA,IAAI;AAEJ;;;;AAIG;AACH,IAAA,IAAI;AAEJ;;;;;;AAMG;AACH,IAAA,gBAAgB;AAEhB;;;;AAIG;AACH,IAAA,aAAa;AAEb;;;;AAIG;AACH,IAAA,mBAAmB;AAEnB;;;;AAIG;AACH,IAAA,iBAAiB;AAClB;AAEM,MAAM,qBAAqB,GAA6B;AAC7D,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,gBAAgB,EAAE,QAAQ;AAC1B,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,mBAAmB,EAAE,IAAI;AACzB,IAAA,iBAAiB,EAAE,IAAI;;AAGnB,SAAU,qBAAqB,CAAC,OAAuB,EAAA;IAC3D,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE;AACvD;;MC1Da,cAAc,CAAA;;AAEjB,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;;AAEzB,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;;AAE3B,IAAA,kBAAkB,GAAG,MAAM,CAAC,cAAc,EAAE;AAClD,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;;AAGM,IAAA,qBAAqB,GAAG,MAAM,CAA+B,EAAE,iEAAC;;AAGhE,IAAA,gBAAgB;AAExB,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY;QAC7C;QACA,OAAO,IAAI,CAAC,qBAAqB;IACnC;AAEA,IAAA,IAAI,CACF,SAA2B,EAC3B,GAAG,IAEkB,EAAA;AAErB,QAAA,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI;AAEnB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;QACvC,OAAO,IAAI,CAAC,aAAa,CAAI,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC;IAC3D;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;AAClC,YAAA,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,gBAAA,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE;YACvB;AACA,YAAA,OAAO,MAAM;AACf,QAAA,CAAC,CAAC;IACJ;;AAGQ,IAAA,aAAa,CACnB,SAA2B,EAC3B,IAAwC,EACxC,UAAsB,EAAA;AAEtB,QAAA,MAAM,QAAQ,GAAG,IAAI,UAAU,EAAK;AACpC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAClC,IAAI,CAAC,QAAQ,EACb,UAAU,EACV,QAAQ,EACR,IAAI,CACL;QACD,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC;AAClE,QAAA,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC;AACnE,QAAA,QAAQ,CAAC,QAAQ,GAAG,cAAc;;AAGlC,QAAA,MAAM,gBAAgB,GACpB,cAAc,CAAC,OAAO,CAAC,gBAAgB;YACvC,qBAAqB,CAAC,gBAAgB;AACxC,QAAA,IAAI,gBAAgB,KAAK,KAAK,EAAE;YAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,GAAG,CAAC;YACtD,IAAI,CAAC,gBAAgB,EAAE,GAAG,CACxB,CAAA,+CAAA,EAAkD,eAAe,CAAA,CAAA,CAAG,CACrE;YACD,UAAU,CAAC,UAAU,CAAC;gBACpB,SAAS,EAAE,CAAA,4DAAA,EAA+D,eAAe,CAAA,EAAA,CAAI;AAC9F,aAAA,CAAC;QACJ;QAEA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;AAClC,YAAA,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;AAC3B,YAAA,OAAO,MAAM;AACf,QAAA,CAAC,CAAC;AACF,QAAA,cAAc,CAAC,WAAW,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AACvE,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC5D,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACd,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;AAClC,oBAAA,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACvB,oBAAA,OAAO,MAAM;AACf,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,cAAc;IACvB;;IAGQ,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC1B,aAAA,QAAQ;AACR,aAAA,MAAM;AACN,aAAA,kBAAkB;AAClB,aAAA,gBAAgB,EAAE;QAErB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;AAC5D,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACzB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,cAAc;AACd,YAAA,WAAW,EAAE,IAAI;;;;AAIjB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,aAAa,EAAE,oBAAoB;;AAEnC,YAAA,mBAAmB,EAAE,KAAK;AAC1B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,SAAS,EAAE,CAAA,yDAAA,CAA2D;AACvE,SAAA,CAAC;IACJ;;AAGQ,IAAA,cAAc,CACpB,cAAwB,EACxB,UAAsB,EACtB,QAAuB,EACvB,IAAS,EAAA;QAET,OAAO,QAAQ,CAAC,MAAM,CAAC;AACrB,YAAA,MAAM,EAAE,cAAc;AACtB,YAAA,SAAS,EAAE;AACT,gBAAA,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE;AAC7C,gBAAA,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE;gBAC3C,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,IAAI,IAAI,EAAE;AACnD,aAAA;AACF,SAAA,CAAC;IACJ;uGArIW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA;;2FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCcZ,gBAAgB,CAAA;AAC3B,IAAA,aAAa,GAAG,IAAI,OAAO,EAAiB;AAC5C,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;IAChC,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5C,cAAc,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC3D,IAAA,OAAO,GAGZ,IAAI,CAAC,aAAa,EAAE;AACf,IAAA,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC;AAEvB,IAAA,IAAI,GAAM,MAAM,CAAI,aAAa,CAAC;AAElC,IAAA,UAAU,GAAG,MAAM,CAAgB,IAAI,sDAAC;AACxC,IAAA,WAAW,GAAG,MAAM,CAAgB,IAAI,uDAAC;AAE5D,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI;;;AAIlC,QAAA,eAAe,CAAC;YACd,IAAI,EAAE,MAAK;AACT,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;oBAClC,IAAI,CAAC,OAAO,EAAE;yBACX,IAAI;AACH;;;;AAIG;AACH,oBAAA,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,YAAY,CAAC,EAChD,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;yBAErC,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;gBAClC;AAEA,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAC9B,oBAAA,IAAI,CAAC;AACF,yBAAA,aAAa;yBACb,IAAI,CACH,MAAM,CACJ,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAC5D,EACD,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAErC,yBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;wBACnB,KAAK,CAAC,cAAc,EAAE;wBACtB,IAAI,CAAC,UAAU,EAAE;AACnB,oBAAA,CAAC,CAAC;gBACN;AAEA,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;AACpC,oBAAA,IAAI,CAAC;AACF,yBAAA,aAAa;AACb,yBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;yBACzC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;gBACvC;YACF,CAAC;AACF,SAAA,CAAC;IACJ;AAEA,IAAA,KAAK,CAAC,MAAU,EAAA;QACd,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE;YACnC;QACF;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;IAC/B;IAEA,WAAW,CACT,EAAE,kBAAkB,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAA;AAErD,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAQ,KAAI;AACjC,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC;YACtC,OAAO,MAAM,kBAAkB,IAAI,IAAI,CAAC,KAAK,EAAE;AACjD,QAAA,CAAC,CAAC;IACJ;AAEA;;;;AAIG;IACO,WAAW,GAAA;AACnB,QAAA,OAAO,IAAI;IACb;IAEA,UAAU,GAAA;AACR,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AACtC,QAAA,IAAI,OAAO,WAAW,KAAK,SAAS,IAAI,WAAW,EAAE;YACnD,IAAI,CAAC,KAAK,EAAE;QACd;AACA,QAAA,IAAI,YAAY,CAAC,WAAW,CAAC,EAAE;YAC7B;AACG,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACzC,iBAAA,SAAS,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAClD;IACF;AAEU,IAAA,aAAa,CACrB,OAAwE,EAAA;QAExE,OAAO;AACL,YAAA,GAAG,qBAAqB;YACxB,GAAG,IAAI,CAAC,cAAc;AACtB,YAAA,GAAG,OAAO;SACX;IACH;uGA/GoB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,wsBAhB1B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAgBQ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAjBrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,aAAa,EAAE,cAAc;AAC7B,wBAAA,wBAAwB,EAAE,oCAAoC;AAC9D,wBAAA,yBAAyB,EAAE,sCAAsC;AACjE,wBAAA,yBAAyB,EAAE,uBAAuB;AAClD,wBAAA,0BAA0B,EAAE,uBAAuB;AACnD,wBAAA,yBAAyB,EAAE,uBAAuB;AAClD,wBAAA,+BAA+B,EAAE,yBAAyB;AAC1D,wBAAA,0BAA0B,EAAE,2BAA2B;AACvD,wBAAA,2BAA2B,EAAE,4BAA4B;AACzD,wBAAA,2BAA2B,EAAE,4BAA4B;AAC1D,qBAAA;oBACD,cAAc,EAAE,CAAC,YAAY,CAAC;AAC/B,iBAAA;;;MCjBY,qBAAqB,CAAA;AACf,IAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;IAErC,WAAW,GAAG,KAAK,CAAM,EAAE,KAAK,EAAE,cAAc,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAG5D,OAAO,GAAA;QACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;IAChD;uGARW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC3B,iBAAA;;sBAME,YAAY;uBAAC,OAAO;;AAMvB,IAAI,sBAAsB,GAAG,CAAC;MAKjB,qBAAqB,CAAA;AACf,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;IAC3B,WAAW,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE;AACpE,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;AAEe,IAAA,EAAE;AAEnB,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW;QAC5B;aAAO;AACL,YAAA,IAAI,CAAC,EAAE,GAAG,eAAe,sBAAsB,EAAE,EAAE;AACnD,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC1E;IACF;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IAChD;uGArBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACnC,iBAAA;;AAyBD,IAAI,4BAA4B,GAAG,CAAC;MAKvB,2BAA2B,CAAA;AAC7B,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACvB,IAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;IAC3B,WAAW,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE;AACpE,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;AAEe,IAAA,EAAE;AAEnB,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW;QAC5B;aAAO;AACL,YAAA,IAAI,CAAC,EAAE,GAAG,qBAAqB,4BAA4B,EAAE,EAAE;AAC/D,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC1E;IACF;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IACjD;uGArBW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE;AACzC,iBAAA;;AAyBD,IAAI,sBAAsB,GAAG,CAAC;MAKjB,qBAAqB,CAAA;AACf,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAC7B,WAAW,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE;AACpE,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;AAEe,IAAA,EAAE;AAEnB,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW;QAC5B;aAAO;AACL,YAAA,IAAI,CAAC,EAAE,GAAG,eAAe,sBAAsB,EAAE,EAAE;AACnD,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC1E;IACF;uGAhBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACnC,iBAAA;;;MC7EY,2BAA2B,CAAA;uGAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,iMAN5B,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAMf,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBARvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;oBAC1B,cAAc,EAAE,CAAC,2BAA2B,CAAC;AAC7C,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,uBAAuB;AAC/B,qBAAA;AACF,iBAAA;;;MCCY,uBAAuB,CAAA;uGAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,gLANxB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAMf,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;oBAC1B,cAAc,EAAE,CAAC,aAAa,CAAC;AAC/B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,mBAAmB;AAC3B,qBAAA;AACF,iBAAA;;;MCDY,uBAAuB,CAAA;uGAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,2HALxB,CAAA,eAAA,CAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAKhB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,CAAA,eAAA,CAAiB;AAC3B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,mBAAmB;AAC3B,qBAAA;AACF,iBAAA;;;SCNe,qBAAqB,GAAA;IACnC,OAAO,IAAI,kBAAkB,EAAE;AACjC;MAMsB,WAAW,CAAA;uGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAX,WAAW,EAAA,UAAA,EAHnB,MAAM,EAAA,UAAA,EACN,qBAAqB,EAAA,CAAA;;2FAEb,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AAClB,oBAAA,UAAU,EAAE,qBAAqB;AAClC,iBAAA;;AAMK,MAAO,kBAAmB,SAAQ,WAAW,CAAA;;IAEjD,YAAY,GAAG,SAAS;uGAFb,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAlB,kBAAkB,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;AAMK,SAAU,kBAAkB,CAAC,KAAwC,EAAA;AACzE,IAAA,OAAO,wBAAwB,CAAC;QAC9B,OAAO,KAAK,KAAK;cACb,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK;cACzC,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC9C,KAAA,CAAC;AACJ;;MC4Ba,sBAAsB,CAAA;AACd,IAAA,KAAK,GAAG;QACzB,CAAC;QACD,IAAI;QACJ,WAAW;QACX,aAAa;QACb,YAAY;KACb;AAEkB,IAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;AAC7B,IAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;uGAVlC,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtCvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAlCS,cAAc,qPAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAuC3B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAzClC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,OAAO,EAAE,CAAC,cAAc,EAAE,YAAY,CAAC;AACvC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,uBAAuB;AAC/B,qBAAA;AACF,iBAAA;;;MCnBY,aAAa,CAAA;uGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YApBtB,qBAAqB;YACrB,qBAAqB;YACrB,qBAAqB;YACrB,2BAA2B;YAC3B,2BAA2B;YAC3B,uBAAuB;YACvB,uBAAuB;AACvB,YAAA,sBAAsB,aAGtB,qBAAqB;YACrB,qBAAqB;YACrB,qBAAqB;YACrB,2BAA2B;YAC3B,2BAA2B;YAC3B,uBAAuB;YACvB,uBAAuB;YACvB,sBAAsB,CAAA,EAAA,CAAA;AAGb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAbtB,sBAAsB,CAAA,EAAA,CAAA;;2FAab,aAAa,EAAA,UAAA,EAAA,CAAA;kBAtBzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,qBAAqB;wBACrB,qBAAqB;wBACrB,qBAAqB;wBACrB,2BAA2B;wBAC3B,2BAA2B;wBAC3B,uBAAuB;wBACvB,uBAAuB;wBACvB,sBAAsB;AACvB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,qBAAqB;wBACrB,qBAAqB;wBACrB,qBAAqB;wBACrB,2BAA2B;wBAC3B,2BAA2B;wBAC3B,uBAAuB;wBACvB,uBAAuB;wBACvB,sBAAsB;AACvB,qBAAA;AACF,iBAAA;;;ACrBD;;;AAGG;AACI,MAAM,4BAA4B,GAAa;AACpD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,IAAA,KAAK,EAAE,IAAI;;AAGb;AACA,IAAIP,cAAY,GAAG,CAAC;MAYP,qBAAqB,CAAA;;IAEvB,IAAI,GAAG,KAAK,CAAS,CAAA,eAAA,EAAkBA,cAAY,EAAE,CAAA,CAAE,gDAAC;AACjE;;;;;AAKG;AACM,IAAA,KAAK,GAAG,KAAK,CAAgB,IAAI,iDAAC;;IAElC,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEjE;;;;AAIG;IACM,MAAM,GAAG,MAAM,EAAiB;IAEhC,UAAU,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAC7C,aAAa,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEpD,IAAA,UAAU;AACV,IAAA,eAAe;AAEvB,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AACvC,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;IAC5B;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;IACpC;AAEA,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,KAAK,EAAE;YAC/B;QACF;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAC7B;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;uGAzDW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAPrB,CAAC,4BAA4B,CAAC,0BC5B3C,6BACA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDkCa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,SAAS;+BACE,gBAAgB,EAAA,SAAA,EAEf,CAAC,4BAA4B,CAAC,mBACxB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,KAAK,EAAE,gBAAgB;AACxB,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA;;;AEpBH;AACA,IAAIA,cAAY,GAAG,CAAC;MAiBP,sBAAsB,CAAA;AAChB,IAAA,UAAU,GAAG,MAAM,CAAC,qBAAqB,EAAE;AAC1D,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IAEiB,QAAQ,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE;AACvE,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IAEe,sBAAsB,GAAG,oBAAoB,EAAE;AAExD,IAAA,SAAS,GAAG,CAAA,gBAAA,EAAmB,EAAEA,cAAY,EAAE;;AAG9C,IAAA,KAAK,GAAG,KAAK,CAAgB,IAAI,iDAAC;IAClC,OAAO,GAAG,KAAK,CAAgB,IAAI,oDAAI,KAAK,EAAE,IAAI,EAAA,CAAG;IACrD,SAAS,GAAG,KAAK,CAAgB,IAAI,sDAAI,KAAK,EAAE,MAAM,EAAA,CAAG;AACzD,IAAA,YAAY,GAAG,KAAK,CAAC,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,cAAA,EAAA,GAAA,EAAA,CAAA,EACjC,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACO,IAAA,aAAa,GAAG,KAAK,CAAC,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,GAAA,EAAA,CAAA,EAClC,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;IACO,SAAS,GAAG,KAAK,CAAgB,IAAI,sDAAI,KAAK,EAAE,YAAY,EAAA,CAAG;IAC/D,cAAc,GAAG,KAAK,CAAgB,IAAI,2DACjD,KAAK,EAAE,iBAAiB,EAAA,CACxB;IACO,eAAe,GAAG,KAAK,CAAgB,IAAI,4DAClD,KAAK,EAAE,kBAAkB,EAAA,CACzB;IACO,WAAW,GAAG,KAAK,CAAgB,IAAI,wDAAI,KAAK,EAAE,cAAc,EAAA,CAAG;IACnE,gBAAgB,GAAG,KAAK,CAAgB,IAAI,6DACnD,KAAK,EAAE,mBAAmB,EAAA,CAC1B;AAEF;;;;AAIG;IACM,MAAM,GAAG,MAAM,EAAiB;AAEhC,IAAA,EAAE,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,SAAS,8CAAC;IACrD,IAAI,GAAG,QAAQ,CACtB,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACpE;AACQ,IAAA,QAAQ,GAAG,QAAQ,CAC1B,MAAM,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,oDAC/D;;AAGQ,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;QAC/B,OAAO,IAAI,CAAC,WAAW;AACrB,cAAE,IAAI,CAAC,WAAW,EAAE,KAAK;AACzB,cAAE,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE;AAC3C,IAAA,CAAC,mDAAC;IAEiB,OAAO,GAAG,QAAQ,CACnC,MAAM,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC5E;AAED,IAAA,aAAa,CAAC,KAAY,EAAA;;;;QAIxB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;QACF;QAEA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAC9C;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;IAC3B;uGA/EW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,+uDC/BnC,wpBAsBA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDSa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAflC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,eAAA,EAEV,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,KAAK,EAAE,iBAAiB;AACxB,wBAAA,kCAAkC,EAAE,WAAW;AAC/C,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,iBAAiB,EAAE,MAAM;AACzB,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,wBAAwB,EAAE,MAAM;AAChC,wBAAA,yBAAyB,EAAE,MAAM;AACjC,wBAAA,iBAAiB,EAAE,wBAAwB;AAC5C,qBAAA,EAAA,QAAA,EAAA,wpBAAA,EAAA;;;MErBU,aAAa,CAAA;uGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAHd,sBAAsB,EAAE,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAC7C,sBAAsB,EAAE,qBAAqB,CAAA,EAAA,CAAA;wGAE5C,aAAa,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,qBAAqB,CAAC;AACxD,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,qBAAqB,CAAC;AACzD,iBAAA;;;MC+BY,iBAAiB,CAAA;AACX,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,uDAAC;AAC3B,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AACvB,IAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAErD,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAE7C,IAAA,KAAK,GAAG,KAAK,CAAmB,IAAI,iDAAC;IACrC,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,MAAM,GAAG,KAAK,CAAC,KAAK,mDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACtD,IAAA,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,GAAA,EAAA,CAAA,EACxD,SAAS,EAAE,gBAAgB,GAC3B;AAEO,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACvB,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IACE,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,SAAS;AAClC,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI;AAC7B,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,EAAE,EAC3B;AACA,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE;AACjD,IAAA,CAAC,oDAAC;AACO,IAAA,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AAE7C,IAAA,WAAA,GAAA;AACE,QAAA,gBAAgB,CAAC;YACf,IAAI,EAAE,MAAK;;;AAGT,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;AACjD,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC/C,CAAC;AACF,SAAA,CAAC;;AAGF,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE;YACzE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QACrC;QAEA,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;AAC5D,QAAA,CAAC,CAAC;IACJ;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAC5B,YAAA,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE;QAClC;IACF;uGAvDW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mCAAA,EAAA,YAAA,EAAA,mCAAA,EAAA,oBAAA,EAAA,iCAAA,EAAA,iCAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAG,IAAA,CAAA,SAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtC9B,2fAoBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDHY,gBAAgB,oUAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAqB9B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAvB7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,WACZ,CAAC,gBAAgB,EAAE,aAAa,CAAC,EAAA,cAAA,EAE1B;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,SAAS;AACpB,4BAAA,MAAM,EAAE;gCACN,kBAAkB;gCAClB,6BAA6B;gCAC7B,yCAAyC;AAC1C,6BAAA;AACF,yBAAA;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,KAAK,EAAE,mBAAmB;AAC1B,wBAAA,qCAAqC,EAAE,YAAY;AACnD,wBAAA,qCAAqC,EAAE,oBAAoB;AAC3D,wBAAA,mCAAmC,EAAE,iCAAiC;AACtE,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,eAAe,EAAE,CAAA,oBAAA,CAAsB;AACxC,qBAAA,EAAA,QAAA,EAAA,2fAAA,EAAA;;;ME9BU,sBAAsB,CAAA;uGAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,2EAFvB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEf,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;;MCSY,6BAA6B,CAAA;AACrB,IAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAE3C,IAAA,KAAK,GAAG,EAAE,CAAC,EAAE;AAEb,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE;AACtD,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACnB,YAAA,OAAO,EAAE;QACX;QACA,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE;AACxC,IAAA,CAAC,2DAAC;AAEQ,IAAA,cAAc,CAAC,MAAyB,EAAA;QAChD,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;IAC5D;uGAfW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd1C,+tBAsBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDbY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAKX,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBARzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAAA,OAAA,EAE1B,CAAC,YAAY,CAAC,EAAA,IAAA,EACjB;AACJ,wBAAA,KAAK,EAAE,kBAAkB;AAC1B,qBAAA,EAAA,QAAA,EAAA,+tBAAA,EAAA;;;SEVa,sBAAsB,GAAA;IACpC,OAAO,IAAI,mBAAmB,EAAE;AAClC;MAMsB,YAAY,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAZ,YAAY,EAAA,UAAA,EAHpB,MAAM,EAAA,UAAA,EACN,sBAAsB,EAAA,CAAA;;2FAEd,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AAClB,oBAAA,UAAU,EAAE,sBAAsB;AACnC,iBAAA;;AAOK,MAAO,mBAAoB,SAAQ,YAAY,CAAA;;IAEnD,UAAU,GAAG,OAAO;;IAGpB,uBAAuB,GAAG,QAAQ;uGALvB,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAnB,mBAAmB,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;AASK,SAAU,mBAAmB,CACjC,KAA0C,EAAA;AAE1C,IAAA,OAAO,wBAAwB,CAAC;QAC9B,OAAO,KAAK,KAAK;cACb,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK;cAC1C,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC/C,KAAA,CAAC;AACJ;;MCxBa,eAAe,CAAA;uGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAf,eAAe,EAAA,OAAA,EAAA,CAHhB,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAClB,kBAAkB,CAAA,EAAA,CAAA;wGAEjB,eAAe,EAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBAC7B,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC9B,iBAAA;;;MCIY,gCAAgC,CAAA;uGAAhC,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhC,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EANjC,CAAA,wBAAA,CAA0B,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC1B,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAKd,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAR5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,QAAQ,EAAE,CAAA,wBAAA,CAA0B;oBACpC,OAAO,EAAE,CAAC,eAAe,CAAC;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,sBAAsB;AAC9B,qBAAA;AACF,iBAAA;;;MCSY,yBAAyB,CAAA;AACnB,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;IAEhE,OAAO,GAAG,KAAK,CAAC,KAAK,oDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAEhE,WAAW,GAAA;QACT,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9C;uGAPW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kCAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAN,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBtC,uFAKA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDQY,gCAAgC,EAAA,QAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,CAAA;;2FAM/B,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBATrC,SAAS;+BACE,oBAAoB,EAAA,OAAA,EAErB,CAAC,gCAAgC,CAAC,kBAC3B,CAAC,UAAU,CAAC,EAAA,IAAA,EACtB;AACJ,wBAAA,KAAK,EAAE,kCAAkC;AAC1C,qBAAA,EAAA,QAAA,EAAA,uFAAA,EAAA;;;AE0BH,IAAIH,cAAY,GAAG,CAAC;MAkDP,iBAAiB,CAAA;AAGX,IAAA,SAAS,GAAG,CAAA,UAAA,EAAa,EAAEA,cAAY,EAAE;AAEvC,IAAA,KAAK,GAAG,EAAE,OAAO,EAAE;AAE9B,IAAA,UAAU;AACV,IAAA,eAAe;AACJ,IAAA,SAAS,GAAwB;AAClD,QAAA;AACE,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,CAAC,CAAC;AACZ,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,CAAC,CAAC;AACZ,SAAA;KACF;AAEgB,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAA,UAAU,GAAG,MAAM,EAAC,UAAuB,EAAC;AAC5C,IAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,EAAE;AACjE,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;AACiB,IAAA,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC;AAC3B,IAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,IAAA,wBAAwB,GAAG,8BAA8B,CAC1E,IAAI,CAAC,QAAQ,CACd;IACgB,sBAAsB,GAAG,oBAAoB,EAAE;AAE/C,IAAA,OAAO,GAAG,MAAM,CAAC,KAAK,mDAAC;IAChC,kBAAkB,GAAG,KAAK;AAEzB,IAAA,KAAK,GAAG,KAAK,CAAqB,IAAI,iDAAC;AACvC,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,uDAAC;AAC/B,IAAA,gBAAgB,GAAG,KAAK,CAAgB,IAAI,4DAAC;AAC7C,IAAA,aAAa,GAAG,KAAK,CAAC,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,GAAA,EAAA,CAAA,EAClC,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACO,IAAA,YAAY,GAAG,KAAK,CAAC,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,cAAA,EAAA,GAAA,EAAA,CAAA,EAChC,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;IACO,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAiC;IACpD,UAAU,GAAG,KAAK,CAAC,KAAK,uDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAC1D,SAAS,GAAG,KAAK,CAAC,KAAK,sDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACzD,cAAc,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IAChC,iBAAiB,GAAG,KAAK,CAAC,KAAK,8DACtC,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACO,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,qDAAC;IAC7B,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAc;IAC9B,OAAO,GAAG,KAAK,CAAgB,IAAI,oDAAI,KAAK,EAAE,IAAI,EAAA,CAAG;IAErD,MAAM,GAAG,MAAM,EAAE;IACjB,MAAM,GAAG,MAAM,EAAE;;AAGjB,IAAA,SAAS,GAAG,eAAe,CAAC,iBAAiB,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,GAAA,EAAA,CAAA,EACpD,WAAW,EAAE,IAAI;QACjB,IAAI,EAAE,iBAAiB,EAAA,CACvB;AACiB,IAAA,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;AAC9C,IAAA,UAAU,GAAG,YAAY,CAAC,QAAQ,CACnD,yBAAyB,CAC1B;AACkB,IAAA,iBAAiB,GAAG,YAAY,CAAC,sBAAsB,6DAAC;AACxD,IAAA,WAAW,GAC5B,SAAS,CAA+B,aAAa,uDAAC;IACrC,OAAO,GAAG,SAAS,CAAC,WAAW,oDAAI,IAAI,EAAE,UAAU,EAAA,CAAG;AACtD,IAAA,gBAAgB,GAAG,SAAS,CAAC,mBAAmB,4DAAC;AAE3D,IAAA,EAAE,GAAG,QAAQ,CAAC,MAAK;QAC1B,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,SAAS;AACzC,IAAA,CAAC,8CAAC;AACO,IAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;IAClC,QAAQ,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACzC,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAChD,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,GAAG,WAAW;AACjD,IAAA,CAAC,0DAAC;AACiB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAChD,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AAC9D,IAAA,CAAC,0DAAC;AACO,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC/D,IAAA,CAAC,2DAAC;AACO,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;AACvE,QAAA,OAAO,YAAY,EAAE,SAAS,CAAC,EAAE;AACnC,IAAA,CAAC,8DAAC;AACO,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;;;AAG7B,YAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC7D;;;QAGA,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1D,IAAA,CAAC,oDAAC;AAEO,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;QAC/B,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE;AACrE,IAAA,CAAC,mDAAC;AAEF,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;;YAEV,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;gBACrC,IAAI,CAAC,KAAK,EAAE;YACd;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;QAClD,IAAI,kBAAkB,EAAE;AACtB,YAAA,MAAM,CAAC,MAAM,kBAAkB,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvE;QAEA,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE;YACrC,SAAS,CAAC,MAAK;AACb,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;oBAClB;gBACF;AACA,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE;AAC1D,oBAAA,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAC9B,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CACvC;AACD,oBAAA,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KACzC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAC9B;oBACD,IAAI,cAAc,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;wBACvC,IAAI,CAAC,UAAU,EAAE,CAAC,gBAAgB,CAAC,cAAc,CAAC,SAAS,CAAC;oBAC9D;yBAAO,IAAI,WAAW,EAAE;;wBAEtB,IAAI,CAAC,UAAU,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,SAAS,CAAC;oBAC3D;gBACF;gBACA,IAAI,CAAC,gBAAgB,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE;AACvD,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;;YAEV,IAAI,CAAC,KAAK,EAAE;YACZ,SAAS,CAAC,MAAK;AACb,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;oBACnB,UAAU,CAAC,MAAK;wBACd,IAAI,CAAC,gBAAgB,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE;AACvD,oBAAA,CAAC,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,kBAAkB,GAAA;QAChB,MAAM,CACJ,MAAK;YACH,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC5C,IAAI,CAAC,UAAU,EAAE,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,EAAE;YACzD,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;YAClD,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ;AACrC,kBAAG,IAAI,CAAC,KAAK;AACb,kBAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5B;;AAGD,QAAA,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,KAAI;AACpD,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,gBAAA,CAAC,KAAK,CAAC,GAAG,KAAK;YACjB;AACA,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;;YAE7B,IAAI,CAAC,SAAS,EAAE;AAClB,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IACvB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC7B;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE;QACd;aAAO;YACL,IAAI,CAAC,IAAI,EAAE;QACb;IACF;IAEA,IAAI,GAAA;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YACrC;QACF;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACnB;QACF;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IACzB;IAEA,SAAS,GAAA;;AAEP,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;YAC9B,IAAI,CAAC,KAAK,EAAE;QACd;IACF;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE;IAC3B;IAEA,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACxB;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IACvB;IAEA,uBAAuB,GAAA;AACrB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE;AAChC,QAAA,IAAI,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACxE,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,YAAA,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC;QAC3B;QACA,IAAI,YAAY,EAAE;AAChB,YAAA,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY;YAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,SAAS,CAAC,UAAU,EAAE,EAAE;;gBAE9C;YACF;YACA,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;YACnC,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACtC;IACF;AAEA,IAAA,gBAAgB,CAAC,KAAoB,EAAA;AACnC,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;QAChC;AAAO,aAAA,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;YAC/B,IAAI,CAAC,KAAK,EAAE;QACd;IACF;IAEU,UAAU,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;YAC3C;QACF;QACA,IACE,IAAI,CAAC,UAAU,CAAC,aAAa,KAAK,QAAQ,CAAC,aAAa;YACxD,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,KAAK,QAAQ,CAAC,aAAa,EAC5D;AACA,YAAA,IAAI,CAAC,UAAU,IAAI;QACrB;AACA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI;AACzC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,SAAS,EAAE;IAClB;AAEU,IAAA,cAAc,CAAC,KAAoB,EAAA;AAC3C,QAAA,QAAQ,KAAK,CAAC,IAAI;AAChB,YAAA,KAAK,WAAW;gBACd,IAAI,CAAC,iBAAiB,EAAE;gBACxB,KAAK,CAAC,cAAc,EAAE;gBACtB,KAAK,CAAC,eAAe,EAAE;gBACvB;AACF,YAAA,KAAK,SAAS;gBACZ,IAAI,CAAC,qBAAqB,EAAE;gBAC5B,KAAK,CAAC,cAAc,EAAE;gBACtB,KAAK,CAAC,eAAe,EAAE;gBACvB;AACF,YAAA,KAAK,OAAO;gBACV,KAAK,CAAC,eAAe,EAAE;gBACvB;AACF,YAAA,KAAK,OAAO;gBACV,IAAI,CAAC,uBAAuB,EAAE;gBAC9B,IAAI,CAAC,SAAS,EAAE;gBAChB,KAAK,CAAC,cAAc,EAAE;gBACtB,KAAK,CAAC,eAAe,EAAE;gBACvB;AACF,YAAA,KAAK,KAAK;gBACR,IAAI,CAAC,KAAK,EAAE;gBACZ;AACF,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;oBAC3B,IAAI,CAAC,UAAU,EAAE;gBACnB;gBACA,KAAK,CAAC,eAAe,EAAE;gBACvB;;IAEN;IAEU,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;AAC/B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,IAAI,CAAC,WAAW,EAAG,CAAC,aAAa,CAAC,KAAK,EAAE;QAC3C;aAAO;YACL,IAAI,CAAC,YAAY,EAAE;QACrB;QACA,IAAI,CAAC,0BAA0B,EAAE;AACjC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;IAEU,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QACvB,IACE,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,KAAK,QAAQ,CAAC,aAAa;YAC5D,IAAI,CAAC,kBAAkB,EACvB;AACA,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;QACvC;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,UAAU,IAAI;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;AAEA,IAAA,aAAa,CAAC,KAAU,EAAA;QACtB,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC;QACtC,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IACtC;IAEQ,SAAS,GAAA;QACf,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,CAAC,KAAK,CAAC,GAAG,KAAK;QACjB;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IACvB;AAEQ,IAAA,aAAa,CAAC,SAAiB,EAAA;AACrC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE;AAChC,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,KACnD,SAAS,CAAC,QAAQ,EAAE,CACrB;AAED,QAAA,MAAM,eAAe,GAAG,CAAC,UAAkB,KAAI;YAC7C,IAAI,KAAK,GAAG,UAAU;;AAEtB,YAAA,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;;AAEvB,gBAAA,KAAK,GAAG,CAAC,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM;gBAC7D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE;AACtC,oBAAA,OAAO,KAAK;gBACd;YACF;AACA,YAAA,OAAO,CAAC,CAAC,CAAC;AACZ,QAAA,CAAC;AAED,QAAA,MAAM,SAAS,GAAG,eAAe,CAAC,YAAY,CAAC;AAC/C,QAAA,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC;QAClE;IACF;IAEQ,0BAA0B,GAAA;;;QAGhC,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CACnD,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CACvC;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KACvD,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAC9B;QACD,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,UAAU,EAAE,CAAC,gBAAgB,CAAC,cAAc,CAAC,SAAS,CAAC;QAC9D;aAAO,IAAI,kBAAkB,EAAE;YAC7B,IAAI,CAAC,UAAU,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,SAAS,CAAC;QAClE;AAEA,QAAA,eAAe,CACb;YACE,cAAc,EAAE,MAAK;;;;AAInB,gBAAA,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE;gBAE/B,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KACrD,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAC5B;gBACD,IAAI,YAAY,EAAE;AAChB,oBAAA,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC;AAC5C,wBAAA,KAAK,EAAE,QAAQ;AACf,wBAAA,MAAM,EAAE,SAAS;AAClB,qBAAA,CAAC;gBACJ;YACF,CAAC;SACF,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5B;IACH;uGArbW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,uCAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,wBAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,mCAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,mDAAA,EAAA,4BAAA,EAAA,yDAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAhCjB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EA4GoC,iBAAiB,2BAE9C,iBAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAE6B,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAE9D,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEyB,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAGd,UAAU,gFACtB,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAG,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAAO,8BAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3LrE,uiEAoEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnBI,YAAY,mJACZ,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,EAAA,+BAAA,EAAA,+BAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,6BAA6B,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,CAAA;;2FAyCpB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAhD7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,OAAA,EAEZ;wBACP,YAAY;wBACZ,cAAc;wBACd,aAAa;wBACb,6BAA6B;qBAC9B,EAAA,cAAA,EACe;wBACd,gBAAgB;AAChB,wBAAA;AACE,4BAAA,SAAS,EAAE,8BAA8B;4BACzC,MAAM,EAAE,CAAC,iBAAiB,CAAC;AAC5B,yBAAA;qBACF,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,0BAA0B,EAAE,YAAY;AACxC,wBAAA,6BAA6B,EAAE,UAAU;AACzC,wBAAA,6BAA6B,EAAE,YAAY;AAC3C,wBAAA,4BAA4B,EAAE,WAAW;AACzC,wBAAA,0BAA0B,EAAE,aAAa;AACzC,wBAAA,eAAe,EAAE,SAAS;AAC1B,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,sBAAsB,EAAE,mCAAmC;AAC3D,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,kBAAkB,EAAE,mDAAmD;AACvE,wBAAA,8BAA8B,EAC5B,yDAAyD;AAC3D,wBAAA,iBAAiB,EAAE,qBAAqB;AACxC,wBAAA,SAAS,EAAE,UAAU;AACrB,wBAAA,qBAAqB,EAAE,iCAAiC;AACxD,wBAAA,iBAAiB,EAAE,iCAAiC;AACpD,wBAAA,iBAAiB,EAAE,iCAAiC;AACpD,wBAAA,qBAAqB,EAAE,uCAAuC;AAC/D,qBAAA,EAAA,QAAA,EAAA,uiEAAA,EAAA;AAoFoC,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,iBAAiB,CAAA,EAAA,EAAA,GAAE;AACtD,4BAAA,WAAW,EAAE,IAAI;AACjB,4BAAA,IAAI,EAAE,iBAAiB;AACxB,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MACqD,UAAU,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAE9D,yBAAyB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAEyB,sBAAsB,sEAEhC,aAAa,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAChB,WAAW,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,4FACxB,mBAAmB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ME7KxD,mBAAmB,CAAA;IACrB,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;uGADrB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVpB;;;;;AAKT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAKU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAZ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE;;;;;AAKT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,OAAO;AACd,qBAAA;AACF,iBAAA;;;ACVD;;AAEG;AACI,MAAM,4BAA4B,GAAa;AACpD,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC;AACxD,IAAA,KAAK,EAAE,IAAI;;AAGb;;AAEG;AAMG,MAAO,yBAA0B,SAAQ,iBAAiB,CAAA;uGAAnD,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,SAAA,EAFzB,CAAC,4BAA4B,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAE9B,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,CAAA,oGAAA,CAAsG;oBAChH,SAAS,EAAE,CAAC,4BAA4B,CAAC;AAC1C,iBAAA;;;MCWY,cAAc,CAAA;uGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAlBvB,iBAAiB;YACjB,iBAAiB;YACjB,mBAAmB;YACnB,yBAAyB;YACzB,gCAAgC;YAChC,sBAAsB;AACtB,YAAA,yBAAyB,aAGzB,iBAAiB;YACjB,iBAAiB;YACjB,mBAAmB;YACnB,yBAAyB;YACzB,gCAAgC;YAChC,sBAAsB;YACtB,yBAAyB,CAAA,EAAA,CAAA;AAGhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAlBvB,iBAAiB;YACjB,iBAAiB,CAAA,EAAA,CAAA;;2FAiBR,cAAc,EAAA,UAAA,EAAA,CAAA;kBApB1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,iBAAiB;wBACjB,iBAAiB;wBACjB,mBAAmB;wBACnB,yBAAyB;wBACzB,gCAAgC;wBAChC,sBAAsB;wBACtB,yBAAyB;AAC1B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,iBAAiB;wBACjB,iBAAiB;wBACjB,mBAAmB;wBACnB,yBAAyB;wBACzB,gCAAgC;wBAChC,sBAAsB;wBACtB,yBAAyB;AAC1B,qBAAA;AACF,iBAAA;;;MCSY,qBAAqB,CAAA;AACf,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,uDAAC;AAC3B,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AACvB,IAAA,eAAe,GAAG,MAAM,CAAC,qBAAqB,CAAC;IAEzD,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAE7C,IAAA,KAAK,GAAG,KAAK,CAAmB,IAAI,iDAAC;IACrC,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACxD,IAAA,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,GAAA,EAAA,CAAA,EACxD,SAAS,EAAE,gBAAgB,GAC3B;AAEO,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACvB,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IACE,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,SAAS;AAClC,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI;AAC7B,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,EAAE,EAC3B;AACA,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE;AACjD,IAAA,CAAC,oDAAC;AACO,IAAA,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AAE7C,IAAA,WAAA,GAAA;;QAEE,IACE,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK;AACrC,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,SAAS,EAClC;YACA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QACrC;AAEA,QAAA,gBAAgB,CAAC;YACf,IAAI,EAAE,MAAK;;;AAGT,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;AACjD,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC/C,CAAC;AACF,SAAA,CAAC;IACJ;AAEA,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE;;AAE/B,YAAA,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE;YAChC,KAAK,EAAE,cAAc,EAAE;QACzB;IACF;uGAvDW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mCAAA,EAAA,YAAA,EAAA,mCAAA,EAAA,oBAAA,EAAA,iCAAA,EAAA,iCAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtClC,2fAoBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDJY,gBAAgB,oUAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAsB9B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAxBjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,WACjB,CAAC,gBAAgB,EAAE,aAAa,CAAC,EAAA,cAAA,EAE1B;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,SAAS;AACpB,4BAAA,MAAM,EAAE;gCACN,kBAAkB;gCAClB,6BAA6B;gCAC7B,yCAAyC;AAC1C,6BAAA;AACF,yBAAA;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,KAAK,EAAE,mBAAmB;AAC1B,wBAAA,qCAAqC,EAAE,YAAY;AACnD,wBAAA,qCAAqC,EAAE,oBAAoB;AAC3D,wBAAA,mCAAmC,EAAE,iCAAiC;AACtE,wBAAA,iBAAiB,EAAE,oBAAoB;AACvC,wBAAA,iBAAiB,EAAE,oBAAoB;AACvC,wBAAA,SAAS,EAAE,cAAc;AAC1B,qBAAA,EAAA,QAAA,EAAA,2fAAA,EAAA;;;SElCa,2BAA2B,GAAA;IACzC,OAAO,IAAI,uBAAuB,EAAE;AACtC;MAMsB,gBAAgB,CAAA;uGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAhB,gBAAgB,EAAA,UAAA,EAHxB,MAAM,EAAA,UAAA,EACN,2BAA2B,EAAA,CAAA;;2FAEnB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJrC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AAClB,oBAAA,UAAU,EAAE,2BAA2B;AACxC,iBAAA;;AASK,MAAO,uBAAwB,SAAQ,gBAAgB,CAAA;;IAE3D,UAAU,GAAG,OAAO;;IAGpB,gBAAgB,GAAG,QAAQ;;IAG3B,cAAc,GAAG,YAAY;;IAG7B,wBAAwB,GAAG,CAAC,OAAe,KAAK,CAAA,CAAA,EAAI,OAAO,CAAA,KAAA,CAAO;uGAXvD,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAvB,uBAAuB,EAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC;;AAeK,SAAU,uBAAuB,CACrC,KAAkD,EAAA;AAElD,IAAA,OAAO,wBAAwB,CAAC;QAC9B,OAAO,KAAK,KAAK;cACb,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,KAAK;cAC9C,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE;AACnD,KAAA,CAAC;AACJ;;MCzBa,0BAA0B,CAAA;AAClB,IAAA,eAAe,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC/C,IAAA,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAE/B,IAAA,KAAK,GAAG,EAAE,CAAC,EAAE;IAEvB,mBAAmB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAoB;AAErC,IAAA,0BAA0B,GAAG,CAAC,IAAS,KAAI;QAC5D,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QACnD;QACA,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC;YAClD,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC;YAC9C,IAAI;SACL;AACH,IAAA,CAAC;AAEkB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;QACjD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE;AACpC,YAAA,OAAO,EAAE;QACX;QACA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;QAChD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,EAAE;YACrC,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,WAAW,CAAC;QACvD;AACA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC;AACf,aAAA,KAAK;aACL,IAAI,CAAC,CAAC,IAAI,KACT,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAC9B,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,EACvC,WAAW,CACZ,CACF;QACH,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC;AAChD,IAAA,CAAC,2DAAC;AAEiB,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC7D,YAAA,OAAO,EAAE;QACX;QACA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,EAAE;AACrC,YAAA,OAAO,KAAK;QACd;QACA,OAAO,IAAI,CAAC;AACT,aAAA,KAAK;AACL,aAAA,MAAM,CAAC,CAAC,IAAI,KACX,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KACX,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAC9B,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,EACvC,CAAC,CACF,CACF,CACF;AACL,IAAA,CAAC,yDAAC;AAEiB,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AACtD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE;QACtD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;AAC3C,YAAA,OAAO,KAAK;QACd;QACA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;AAC9B,IAAA,CAAC,gEAAC;AAEiB,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAClD,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC,MAAM;AACzE,IAAA,CAAC,4DAAC;AAEQ,IAAA,cAAc,CAAC,KAAU,EAAA;AACjC,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC;IAC3C;uGAzEW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECfvC,uuDAyDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/CY,YAAY,oJAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAK7B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBARtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,WAEvB,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAA,IAAA,EACnC;AACJ,wBAAA,KAAK,EAAE,kBAAkB;AAC1B,qBAAA,EAAA,QAAA,EAAA,uuDAAA,EAAA;;;MEFU,oCAAoC,CAAA;uGAApC,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApC,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EANrC,CAAA,wBAAA,CAA0B,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC1B,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAKd,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBARhD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iCAAiC;AAC3C,oBAAA,QAAQ,EAAE,CAAA,wBAAA,CAA0B;oBACpC,OAAO,EAAE,CAAC,eAAe,CAAC;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,sBAAsB;AAC9B,qBAAA;AACF,iBAAA;;;MCmBY,6BAA6B,CAAA;AACvB,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;IAChE,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAE/C,OAAO,GAAG,KAAK,CAAC,KAAK,oDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAEhE,WAAW,GAAA;QACT,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9C;uGARW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kCAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAN,IAAA,CAAA,UAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,qBAAA,EAAA,kCAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7B1C,iFAKA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDQY,oCAAoC,EAAA,QAAA,EAAA,iCAAA,EAAA,CAAA,EAAA,CAAA;;2FAgBnC,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAnBzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAAA,OAAA,EAE1B,CAAC,oCAAoC,CAAC,EAAA,cAAA,EAC/B;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,UAAU;AACrB,4BAAA,MAAM,EAAE;gCACN,8BAA8B;gCAC9B,oDAAoD;gCACpD,0DAA0D;gCAC1D,oCAAoC;AACrC,6BAAA;AACF,yBAAA;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,KAAK,EAAE,kCAAkC;AAC1C,qBAAA,EAAA,QAAA,EAAA,iFAAA,EAAA;;;MEJU,uBAAuB,CAAA;IACzB,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IACvB,mBAAmB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAoB;IAC/C,kBAAkB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAO;uGAH/B,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjBxB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAbS,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAkBf,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBApBnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;oBAC5B,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC3B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,OAAO;AACd,qBAAA;AACF,iBAAA;;;MCjBY,0BAA0B,CAAA;IAC5B,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;uGAD/C,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AACnC,iBAAA;;;MCCY,gCAAgC,CAAA;IAClC,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;uGAD/C,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhC,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAH5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACpC,iBAAA;;;MCCY,kCAAkC,CAAA;IACpC,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;uGAD/C,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAH9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gCAAgC;AAC3C,iBAAA;;;MCmBY,8BAA8B,CAAA;AACjC,IAAA,QAAQ;AAEC,IAAA,MAAM,GAAG,MAAM,CAA0B,UAAU,CAAC;IAE5D,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA2B;AAC9C,IAAA,UAAU,GAAG,KAAK,CAAS,KAAK,sDAAC;IACjC,YAAY,GAAG,KAAK,CAAC,KAAK,yDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAC5D,OAAO,GAAG,MAAM,EAAE;AAEjB,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;QAC7B,OAAO,IAAI,CAAC,YAAY;AACtB,cAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;AAC5B,cAAE,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa;AACvC,IAAA,CAAC,gDAAC;AAEF,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CACtC,CAAC,CAAC,KAAK,CAAC,KAAI;AACV,gBAAA,IAAI,KAAK,CAAC,cAAc,EAAE;AACxB,oBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBACrB;AACF,YAAA,CAAC,EACD;AACE,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,gBAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,gBAAA,SAAS,EAAE,CAAC;AACb,aAAA,CACF;YACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;AAClD,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE;IAC7B;uGApCW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,8hBAT/B,CAAA,CAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,iDAAA,CAAA,EAAA,CAAA;;2FASD,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAX1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,YACzB,CAAA,CAAE,EAAA,MAAA,EAAA,CAAA,iDAAA,CAAA,EAAA;;;ACqCd,IAAIH,cAAY,GAAG,CAAC;MAuDP,qBAAqB,CAAA;AACf,IAAA,SAAS,GAAG,CAAA,eAAA,EAAkB,EAAEA,cAAY,EAAE;AAE5C,IAAA,KAAK,GAAG,EAAE,OAAO,EAAE;AAE9B,IAAA,UAAU;AACV,IAAA,eAAe;AACJ,IAAA,SAAS,GAAwB;AAClD,QAAA;AACE,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,CAAC,CAAC;AACZ,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,CAAC,CAAC;AACZ,SAAA;KACF;AAEgB,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAA,UAAU,GAAG,MAAM,EAAC,UAAuB,EAAC;AAC5C,IAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,EAAE;AACjE,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;AACiB,IAAA,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC/B,IAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,IAAA,wBAAwB,GAAG,8BAA8B,CAC1E,IAAI,CAAC,QAAQ,CACd;IACgB,sBAAsB,GAAG,oBAAoB,EAAE;AAE/C,IAAA,OAAO,GAAG,MAAM,CAAC,KAAK,mDAAC;IAChC,kBAAkB,GAAG,KAAK;AAEzB,IAAA,WAAW,GAAG,MAAM,CAAgB,IAAI,uDAAC;IAEzC,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACxD,IAAA,KAAK,GAAG,KAAK,CAAqB,IAAI,iDAAC;AACvC,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,uDAAC;AAC/B,IAAA,aAAa,GAAG,KAAK,CAAC,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,GAAA,EAAA,CAAA,EAClC,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACO,IAAA,YAAY,GAAG,KAAK,CAAC,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,cAAA,EAAA,GAAA,EAAA,CAAA,EAChC,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACO,IAAA,SAAS,GAAG,KAAK,CAAgC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,qDAAC;IACnE,UAAU,GAAG,KAAK,CAAC,KAAK,uDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAC1D,YAAY,GAAG,KAAK,CAAC,KAAK,yDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAC5D,SAAS,GAAG,KAAK,CAAC,KAAK,sDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACzD,cAAc,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IAChC,cAAc,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IAChC,iBAAiB,GAAG,KAAK,CAAC,KAAK,8DACtC,SAAS,EAAE,gBAAgB,EAAA,CAC3B;IACO,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAc;IAC9B,OAAO,GAAG,KAAK,CAAgB,IAAI,oDAAI,KAAK,EAAE,IAAI,EAAA,CAAG;AACrD,IAAA,KAAK,GAAG,KAAK,CAAoB,EAAE,iDAAC;IACpC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IAC3B,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IAC3B,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgD;IAC/D,OAAO,GAAG,KAAK,CAAC,KAAK,oDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACvD,eAAe,GAAG,KAAK,CAAC,IAAI,4DAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAC9D,iBAAiB,GAAG,KAAK,CAAC,IAAI,8DAAI,SAAS,EAAE,eAAe,EAAA,CAAG;IAE/D,iBAAiB,GAAG,MAAM,EAAiB;IAC3C,MAAM,GAAG,MAAM,EAAE;IACjB,MAAM,GAAG,MAAM,EAAE;IACjB,iBAAiB,GAAG,MAAM,EAAE;IAElB,aAAa,GAAG,SAAS,CAG1C,gBAAgB,0DAChB,IAAI,EAAE,UAAU,EAAA,CAChB;AACiB,IAAA,SAAS,GAAG,YAAY,CAAC,qBAAqB,qDAAC;AAC/C,IAAA,UAAU,GAAG,SAAS,CAAC,UAAU,sDAAC;AAClC,IAAA,UAAU,GAAG,SAAS,CAAC,6BAA6B,sDAAC;AACrD,IAAA,mBAAmB,GAAG,YAAY,CACnD,0BAA0B,+DAC3B;AACkB,IAAA,yBAAyB,GAAG,YAAY,CACzD,gCAAgC,qEACjC;AACkB,IAAA,2BAA2B,GAAG,YAAY,CAC3D,kCAAkC,uEACnC;AACkB,IAAA,WAAW,GAC5B,SAAS,CAA+B,aAAa,uDAAC;AACrC,IAAA,gBAAgB,GAAG,SAAS,CAAC,mBAAmB,4DAAC;AAE3D,IAAA,EAAE,GAAG,QAAQ,CAAC,MAAK;QAC1B,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,SAAS;AACzC,IAAA,CAAC,8CAAC;AACO,IAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;IAClC,QAAQ,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACzC,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAChD,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,GAAG,WAAW;AACjD,IAAA,CAAC,0DAAC;AACO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACrB,YAAA,OAAO,IAAI,CAAC,KAAK,EAAE;QACrB;AACA,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAC5B,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CACxD;AACH,IAAA,CAAC,wDAAC;;AAGiB,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC/C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC7C,YAAA,OAAO,EAAE;QACX;AACA,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAC9B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAChE;AACH,IAAA,CAAC,yDAAC;;AAGQ,IAAA,6BAA6B,CAAC,IAAqB,EAAA;QAC3D,OAAO;AACL,YAAA,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAClC,YAAA,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAC9B,YAAA,IAAI,EAAE,IAAI;SACX;IACH;;AAGU,IAAA,+BAA+B,CAAC,KAGzC,EAAA;QACC,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,KAAK;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB;IACH;AAEmB,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;AAC1D,QAAA,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AAC5D,YAAA,OAAO,IAAI,CAAC,KAAK,EAAE;QACrB;QAEA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACrC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;AACjD,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,yDAAC;;AAGiB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC7C,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAQ,KAAI;AAC/B,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KACrC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAC/C;AACH,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,wDAAC;AAEiB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE;AAClC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE;QAEjC,IAAI,CAAC,UAAU,EAAE;YACf,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACjC;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6B;AACnD,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrB,YAAA,MAAM,UAAU,GACd,OAAO,UAAU,KAAK;AACpB,kBAAE,UAAU,CAAC,IAAI;kBACf,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAC3B,gBAAA,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;YAC5B;YACA,MAAM,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC,QAAA,CAAC,CAAC;QAEF,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM;YAC3D,KAAK;YACL,KAAK;AACN,SAAA,CAAC,CAAC;AACL,IAAA,CAAC,wDAAC;AAEiB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QAC9C,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,KAAK,CAAC;AAC1C,IAAA,CAAC,wDAAC;AAEO,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;AACvE,QAAA,OAAO,YAAY,EAAE,SAAS,CAAC,EAAE;AACnC,IAAA,CAAC,8DAAC;AAEO,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAChC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,EAAE;AAC/D,YAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE;QACjC;AACA,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC;QACzB;AACA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,oDAAC;AAEO,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;QAC/B,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE;AACrE,IAAA,CAAC,mDAAC;AAEO,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,OAAO,CAAC,EAAO,EAAE,EAAO,KAAI;AAC1B,YAAA,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE;;;gBAGtE,OAAO,EAAE,KAAK,EAAE;YAClB;YACA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACjC,QAAA,CAAC;AACH,IAAA,CAAC,8DAAC;;AAGF,IAAA,YAAY,CAAC,IAAqB,EAAA;AAChC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;QAClC,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB;QACA,OAAO,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrD;;AAGA,IAAA,YAAY,CAAC,IAAqB,EAAA;AAChC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;QAClC,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,IAAI;QACb;AACA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,OAAO,IAAI;QACb;QACA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC;IAC7C;;AAGA,IAAA,eAAe,CAAC,IAAqB,EAAA;AACnC,QAAA,OAAO,IAAI,EAAE,SAAS,KAAK,IAAI;IACjC;;AAGA,IAAA,qBAAqB,CAAC,IAAqB,EAAA;QACzC,OAAO,IAAI,EAAE,eAAe;IAC9B;;IAGQ,cAAc,CAAC,GAAQ,EAAE,IAAY,EAAA;QAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,IAAI,KAAK,OAAO,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;IACxE;AAEA,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;;YAEV,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;gBACrC,IAAI,CAAC,KAAK,EAAE;YACd;AACF,QAAA,CAAC,CAAC;QAEF,IAAI,SAAS,EAAE,EAAE;YACf,MAAM,CAAC,MAAK;gBACV,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACzC,oBAAA,OAAO,CAAC,IAAI,CACV,2IAA2I,CAC5I;gBACH;AACF,YAAA,CAAC,CAAC;QACJ;AAEA,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;QAClD,IAAI,kBAAkB,EAAE;AACtB,YAAA,MAAM,CAAC,MAAM,kBAAkB,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvE;QAEA,MAAM,CAAC,MAAK;;YAEV,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACjD,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;;YAEV,IAAI,CAAC,KAAK,EAAE;YACZ,SAAS,CAAC,MAAK;AACb,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;oBACnB,UAAU,CAAC,MAAK;wBACd,IAAI,CAAC,gBAAgB,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE;AACvD,oBAAA,CAAC,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;;AAEV,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;YACpC,IAAI,UAAU,EAAE;AACd,gBAAA,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ;AAC9B,sBAAG,IAAI,CAAC,KAAK;AACb,sBAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACpB;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;;AAEV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE;YAChC,SAAS,CAAC,MAAK;AACb,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;oBAClB;gBACF;AACA,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE;AAC1D,oBAAA,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAC9B,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CACvC;AACD,oBAAA,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KACzC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAC9B;oBACD,IAAI,cAAc,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;wBACzC,IAAI,CAAC,UAAU,EAAE,EAAE,gBAAgB,CAAC,cAAc,CAAC,SAAS,CAAC;oBAC/D;yBAAO,IAAI,WAAW,EAAE;;wBAEtB,IAAI,CAAC,UAAU,EAAE,EAAE,gBAAgB,CAAC,WAAW,CAAC,SAAS,CAAC;oBAC5D;gBACF;gBACA,IAAI,CAAC,gBAAgB,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE;AACvD,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;;AAEV,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;YACpC,IAAI,UAAU,EAAE;gBACd,SAAS,CAAC,MAAK;oBACb,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,KAAI;AAC7C,wBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,4BAAA,CAAC,KAAK,CAAC,GAAG,KAAK;wBACjB;AACA,wBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,wBAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;wBAC7B,IAAI,CAAC,SAAS,EAAE;AAClB,oBAAA,CAAC,CAAC;AACJ,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;;AAEN,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;AAC5C,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB;IACF;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IACvB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC7B;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE;QACd;aAAO;YACL,IAAI,CAAC,IAAI,EAAE;QACb;IACF;IAEA,IAAI,GAAA;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YACrC;QACF;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACnB;QACF;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IACzB;IAEA,SAAS,GAAA;;AAEP,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;YAC9B,IAAI,CAAC,KAAK,EAAE;QACd;IACF;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,EAAG,CAAC,KAAK,EAAE;IAC5B;IAEA,uBAAuB,GAAA;AACrB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE;AAChC,QAAA,IAAI,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACxE,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,YAAA,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC;QAC3B;QACA,IAAI,YAAY,EAAE;AAChB,YAAA,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY;YAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,SAAS,CAAC,UAAU,EAAE,EAAE;;gBAE9C;YACF;YACA,IAAI,CAAC,UAAU,EAAG,CAAC,MAAM,CAAC,SAAS,CAAC;YACpC,IAAI,CAAC,SAAS,EAAE;QAClB;IACF;AAEA,IAAA,gBAAgB,CAAC,KAAoB,EAAA;AACnC,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;QAChC;AAAO,aAAA,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;YAC/B,IAAI,CAAC,KAAK,EAAE;QACd;IACF;IAEU,UAAU,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB;QACF;QACA,IACE,IAAI,CAAC,UAAU,CAAC,aAAa,KAAK,QAAQ,CAAC,aAAa;YACxD,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,KAAK,QAAQ,CAAC,aAAa,EAC5D;AACA,YAAA,IAAI,CAAC,UAAU,IAAI;QACrB;AACA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI;AACzC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,SAAS,EAAE;IAClB;AAEU,IAAA,cAAc,CAAC,KAAoB,EAAA;AAC3C,QAAA,QAAQ,KAAK,CAAC,IAAI;AAChB,YAAA,KAAK,WAAW;AAChB,YAAA,KAAK,SAAS;YACd,KAAK,OAAO,EAAE;;gBAEZ,KAAK,CAAC,cAAc,EAAE;gBACtB,KAAK,CAAC,eAAe,EAAE;gBACvB,MAAM,UAAU,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;gBACvD,IAAI,CAAC,aAAa,EAAE,EAAE,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC;gBAC7D,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;;oBAE3C,IAAI,CAAC,SAAS,EAAE;gBAClB;gBACA;YACF;AACA,YAAA,KAAK,OAAO;gBACV,KAAK,CAAC,eAAe,EAAE;gBACvB;AACF,YAAA,KAAK,KAAK;gBACR,IAAI,CAAC,KAAK,EAAE;gBACZ;AACF,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;oBAC7B,IAAI,CAAC,UAAU,EAAE;gBACnB;gBACA,KAAK,CAAC,eAAe,EAAE;gBACvB;;IAEN;IAEU,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;AAC/B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,IAAI,CAAC,WAAW,EAAG,CAAC,aAAa,CAAC,KAAK,EAAE;QAC3C;aAAO;YACL,IAAI,CAAC,YAAY,EAAE;QACrB;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;AACxB,QAAA,eAAe,CACb;YACE,cAAc,EAAE,MAAK;AACnB,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;oBACpB,IAAI,CAAC,0BAA0B,EAAE;gBACnC;gBACA,IAAI,CAAC,0BAA0B,EAAE;YACnC,CAAC;SACF,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5B;AACD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;IAEU,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QACvB,IACE,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,KAAK,QAAQ,CAAC,aAAa;YAC5D,IAAI,CAAC,kBAAkB,EACvB;AACA,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;QACvC;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,IAAI;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;AAEA,IAAA,aAAa,CAAC,KAAU,EAAA;AACtB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE;AAClC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAClB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAS,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CACxD;QACH;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QACtB;QACA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IACtC;IAEU,UAAU,GAAA;QAClB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,aAAa;QACtD,IAAI,CAAC,UAAU,EAAE;YACf;QACF;QACA,IAAI,UAAU,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,EAAE;AACrD,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE;QAC/B;IACF;IAEQ,SAAS,GAAA;QACf,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,EAAG;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,CAAC,KAAK,CAAC,GAAG,KAAK;QACjB;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IACvB;IAEQ,0BAA0B,GAAA;QAChC,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAClD,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAC9B;QACD,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,UAAU,EAAE,EAAE,gBAAgB,CAAC,cAAc,CAAC,SAAS,CAAC;QAC/D;IACF;IAEQ,0BAA0B,GAAA;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAChD,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAC5B;QACD,IAAI,YAAY,EAAE;AAChB,YAAA,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC;AAC5C,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,MAAM,EAAE,SAAS;AAClB,aAAA,CAAC;QACJ;IACF;uGA/kBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,uCAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,wBAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,oCAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,oDAAA,EAAA,4BAAA,EAAA,yDAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAhCrB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA8HC,0BAA0B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAG1B,gCAAgC,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,6BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGhC,kCAAkC,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAZ5B,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAE0B,qBAAqB,6FACvB,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACV,6BAA6B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAYvB,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAG,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAAO,8BAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxNrE,mnKA2JA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlGI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,aAAa,4nCACb,0BAA0B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,6BAA6B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,8BAA8B,iJAC9B,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAyCP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBArDjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,OAAA,EAEjB;wBACP,YAAY;wBACZ,cAAc;wBACd,aAAa;wBACb,0BAA0B;wBAC1B,6BAA6B;wBAC7B,qBAAqB;wBACrB,uBAAuB;wBACvB,8BAA8B;wBAC9B,gBAAgB;qBACjB,EAAA,cAAA,EACe;wBACd,gBAAgB;AAChB,wBAAA;AACE,4BAAA,SAAS,EAAE,8BAA8B;4BACzC,MAAM,EAAE,CAAC,iBAAiB,CAAC;AAC5B,yBAAA;qBACF,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,0BAA0B,EAAE,YAAY;AACxC,wBAAA,6BAA6B,EAAE,UAAU;AACzC,wBAAA,6BAA6B,EAAE,YAAY;AAC3C,wBAAA,4BAA4B,EAAE,WAAW;AACzC,wBAAA,0BAA0B,EAAE,aAAa;AACzC,wBAAA,eAAe,EAAE,SAAS;AAC1B,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,sBAAsB,EAAE,oCAAoC;AAC5D,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,kBAAkB,EAAE,oDAAoD;AACxE,wBAAA,8BAA8B,EAC5B,yDAAyD;AAC3D,wBAAA,iBAAiB,EAAE,qBAAqB;AACxC,wBAAA,SAAS,EAAE,UAAU;AACrB,wBAAA,qBAAqB,EAAE,iCAAiC;AACxD,wBAAA,iBAAiB,EAAE,iCAAiC;AACpD,wBAAA,iBAAiB,EAAE,iCAAiC;AACpD,wBAAA,qBAAqB,EAAE,uCAAuC;AAC/D,qBAAA,EAAA,QAAA,EAAA,mnKAAA,EAAA;AA+FC,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,gBAAgB,EAAA,EAAA,GAAE;AAClB,4BAAA,IAAI,EAAE,UAAU;AACjB,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAC2C,qBAAqB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MACvB,UAAU,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MACV,6BAA6B,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAErE,0BAA0B,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAG1B,gCAAgC,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAGhC,kCAAkC,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAGM,aAAa,8FACP,mBAAmB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AErNrE;;AAEG;AACI,MAAM,iCAAiC,GAAa;AACzD,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,6BAA6B,CAAC;AAC5D,IAAA,KAAK,EAAE,IAAI;;AAGb;;AAEG;AAMG,MAAO,6BAA8B,SAAQ,iBAAiB,CAAA;uGAAvD,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qHAAA,EAAA,SAAA,EAF7B,CAAC,iCAAiC,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAEnC,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,CAAA,mHAAA,CAAqH;oBAC/H,SAAS,EAAE,CAAC,iCAAiC,CAAC;AAC/C,iBAAA;;;MCKY,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAd3B,qBAAqB;YACrB,6BAA6B;YAC7B,0BAA0B;YAC1B,gCAAgC;AAChC,YAAA,kCAAkC,aAGlC,qBAAqB;YACrB,6BAA6B;YAC7B,0BAA0B;YAC1B,gCAAgC;YAChC,kCAAkC,CAAA,EAAA,CAAA;AAGzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAd3B,qBAAqB,CAAA,EAAA,CAAA;;2FAcZ,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAhB9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,qBAAqB;wBACrB,6BAA6B;wBAC7B,0BAA0B;wBAC1B,gCAAgC;wBAChC,kCAAkC;AACnC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,qBAAqB;wBACrB,6BAA6B;wBAC7B,0BAA0B;wBAC1B,gCAAgC;wBAChC,kCAAkC;AACnC,qBAAA;AACF,iBAAA;;;ACJM,MAAM,6BAA6B,GAAa;AACrD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,IAAA,KAAK,EAAE,IAAI;;AAGb;AACA,IAAIX,cAAY,GAAG,CAAC;MAsBP,iBAAiB,CAAA;AACT,IAAA,KAAK,GAAG,EAAE,KAAK,EAAE;;AAGnB,IAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,EAAE;AACjE,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;;IAEe,sBAAsB,GAAG,oBAAoB,EAAE;;AAGvD,IAAA,SAAS,GAAG,CAAA,UAAA,EAAa,EAAEA,cAAY,EAAE;;IAGzC,QAAQ,GAAG,KAAK,CAAkB,CAAC,qDAC1C,KAAK,EAAE,UAAU,EAAA,CACjB;;AAGM,IAAA,UAAU;;AAEV,IAAA,eAAe;IAEd,OAAO,GAAG,KAAK,CAAC,KAAK,oDAC5B,SAAS,EAAE,gBAAgB,EAAA,CAC3B;IACO,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAC7B,SAAS,EAAE,gBAAgB,EAAA,CAC3B;IACO,WAAW,GAAG,KAAK,CAAgB,IAAI,wDAAI,KAAK,EAAE,cAAc,EAAA,CAAG;AACnE,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;IACzB,SAAS,GAAG,KAAK,CAAgB,IAAI,sDAAI,KAAK,EAAE,YAAY,EAAA,CAAG;IAC/D,cAAc,GAAG,KAAK,CAAgB,IAAI,2DACjD,KAAK,EAAE,iBAAiB,EAAA,CACxB;IACO,eAAe,GAAG,KAAK,CAAgB,IAAI,4DAClD,KAAK,EAAE,kBAAkB,EAAA,CACzB;IACO,gBAAgB,GAAG,KAAK,CAAgB,IAAI,6DACnD,KAAK,EAAE,mBAAmB,EAAA,CAC1B;IACO,SAAS,GAAG,KAAK,CAAgB,IAAI,sDAAI,KAAK,EAAE,MAAM,EAAA,CAAG;AACzD,IAAA,EAAE,GAAG,KAAK,CAAgB,IAAI,8CAAC;IAE/B,aAAa,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IACnD,YAAY,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAEjD,aAAa,GAAG,MAAM,EAAW;;AAGjC,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,SAAS,mDAAC;;AAErD,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;AAC5B,QAAA,QACE,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS;AAE5E,IAAA,CAAC,gDAAC;;AAEO,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;QACvC,OAAO,IAAI,CAAC,WAAW;AACrB,cAAE,IAAI,CAAC,WAAW,EAAE,KAAK;AACzB,cAAE,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE;AAC3C,IAAA,CAAC,2DAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;QAClD,IAAI,kBAAkB,EAAE;AACtB,YAAA,MAAM,CAAC,MACL,kBAAkB,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAC7D;AACD,YAAA,MAAM,CAAC,MAAM,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAChE;IACF;;AAGA,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;AAC/C,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO;AAE/B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;IACnC;;IAGA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,IAAI;IACrB;;AAGA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;IACjC;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClC;uGAzGW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,y7DAfjB,CAAC,6BAA6B,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjC5C,i1BA6BA,2CDEY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAiBX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBApB7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,OAAA,EAEZ,CAAC,YAAY,CAAC,EAAA,eAAA,EACN,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,6BAA6B,CAAC,EAAA,IAAA,EACpC;AACJ,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,4BAA4B,EAAE,gBAAgB;AAC9C,wBAAA,6BAA6B,EAAE,iBAAiB;AAChD,wBAAA,4BAA4B,EAAE,mBAAmB;AACjD,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,iBAAiB,EAAE,MAAM;AACzB,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,wBAAwB,EAAE,MAAM;AAChC,wBAAA,yBAAyB,EAAE,MAAM;AACjC,wBAAA,0BAA0B,EAAE,MAAM;AAClC,wBAAA,qBAAqB,EAAE,MAAM;AAC9B,qBAAA,EAAA,QAAA,EAAA,i1BAAA,EAAA;;;MEtCU,cAAc,CAAA;uGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAd,cAAc,EAAA,OAAA,EAAA,CAHf,iBAAiB,CAAA,EAAA,OAAA,EAAA,CACjB,iBAAiB,CAAA,EAAA,CAAA;AAEhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAHf,iBAAiB,CAAA,EAAA,CAAA;;2FAGhB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,iBAAiB,CAAC;oBAC5B,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC7B,iBAAA;;;MCuCY,eAAe,CAAA;IACjB,OAAO,GAAG,KAAK,CAAqB,EAAE,oDAAI,KAAK,EAAE,QAAQ,EAAA,CAAG;IAC5D,IAAI,GAAG,KAAK,CAAa,QAAQ,iDAAI,KAAK,EAAE,YAAY,EAAA,CAAG;AAC3D,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAC7B,KAAK,EAAE,gBAAgB;QACvB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;IACO,WAAW,GAAG,KAAK,CAAsB,EAAE,wDAClD,KAAK,EAAE,mBAAmB,EAAA,CAC1B;IACO,YAAY,GAAG,KAAK,CAAsB,EAAE,yDACnD,KAAK,EAAE,oBAAoB,EAAA,CAC3B;AAEiB,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAC/B,QAAQ,GAAG,QAAQ,CAAC,MACrC,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,GAAG,EAAE,GAAG,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAClC;AAES,IAAA,OAAO,CAAC,KAAY,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,KAAK,CAAC,cAAc,EAAE;QACxB;IACF;uGAvBW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,6EAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9BhB;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAYS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAjC3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,yBAAyB,EAAE,CAAA,sBAAA,CAAwB;AACnD,wBAAA,wBAAwB,EAAE,CAAA,kBAAA,CAAoB;AAC9C,wBAAA,wBAAwB,EAAE,CAAA,kBAAA,CAAoB;AAC9C,wBAAA,2BAA2B,EAAE,CAAA,UAAA,CAAY;AACzC,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,iBAAiB,EAAE,qBAAqB;AACxC,wBAAA,aAAa,EAAE,CAAA,2EAAA,CAA6E;AAC5F,wBAAA,SAAS,EAAE,iBAAiB;AAC7B,qBAAA;oBACD,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;MCtCY,YAAY,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAZ,YAAY,EAAA,OAAA,EAAA,CAHb,eAAe,CAAA,EAAA,OAAA,EAAA,CACf,eAAe,CAAA,EAAA,CAAA;AAEd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAHb,eAAe,CAAA,EAAA,CAAA;;2FAGd,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,eAAe,CAAC;oBAC1B,OAAO,EAAE,CAAC,eAAe,CAAC;AAC3B,iBAAA;;;MCSY,qBAAqB,CAAA;uGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2BAA2B;AACtC,iBAAA;;MAOY,cAAc,CAAA;AAChB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;IACjB,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAc;IAC/B,cAAc,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAGhC,eAAe,GAAG,YAAY,CAAC,qBAAqB,4DAC3D,IAAI,EAAE,WAAW,EAAA,CACjB;;AAGO,IAAA,eAAe,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC;;AAGjD,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;QAClC,OAAO,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE;AACzD,IAAA,CAAC,sDAAC;uGAjBS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,2oBAOe,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACrD,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAI2B,WAAW,gECjC3D,wDACA,EAAA,CAAA;;2FDoBa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,SAAS;+BACE,QAAQ,EAAA,QAAA,EAAA,wDAAA,EAAA;AAUsB,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,qBAAqB,CAAA,EAAA,EAAA,GAAE;AAC7D,4BAAA,IAAI,EAAE,WAAW;AAClB,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAG6C,WAAW,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEH3D;AACA,IAAIF,cAAY,GAAG,CAAC;MAcP,eAAe,CAAA;;AAEjB,IAAA,QAAQ,GAAG,CAAA,QAAA,EAAWA,cAAY,EAAE,EAAE;;AAGtC,IAAA,WAAW,GAAG,MAAM,CAAwB,IAAI,uDAAC;;AAGjD,IAAA,IAAI,GAAG,eAAe,CAAC,cAAc,gDAAC;IAEtC,WAAW,GAAG,KAAK,CAAC,KAAK,wDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC3D,IAAA,WAAW,GAAG,KAAK,CAAoB,YAAY,uDAAC;IACpD,SAAS,GAAG,KAAK,CAAS,SAAS,sDAAI,KAAK,EAAE,YAAY,EAAA,CAAG;IAC7D,cAAc,GAAG,KAAK,CAAS,SAAS,2DAC/C,KAAK,EAAE,iBAAiB,EAAA,CACxB;AACO,IAAA,kBAAkB,GAAG,KAAK,CAAC,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,GAAA,EAAA,CAAA,EACnC,SAAS,EAAE,eAAe;QAC1B,KAAK,EAAE,eAAe,EAAA,CACtB;IACO,aAAa,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAE7D,eAAe,GAAG,MAAM,EAA0B;IAClD,mBAAmB,GAAG,MAAM,EAAU;IACtC,iBAAiB,GAAG,MAAM,EAAoB;AAEvD,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AACvD,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AACtC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;YACxB,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AAC9C,gBAAA,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,CAAC;YAC7D;AACF,QAAA,CAAC,CAAC;IACJ;;AAGA,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,SAAS,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACxB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE;YAC9B,aAAa,EAAE,MAAK;gBAClB,SAAS,GAAG,KAAK;YACnB,CAAC;AACF,SAAA,CAAC;QACF,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC;QAC7B;IACF;IAEU,SAAS,CAAC,KAAa,EAAE,cAAuB,EAAA;AACxD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;YACjB;QACF;QAEA,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,IAAK,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3E,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,eAAe,CAAE;AAE9D,QAAA,IAAI,UAAU,CAAC,QAAQ,EAAE,EAAE;YACzB;QACF;AAEA,QAAA,IAAI,eAAe,KAAK,IAAI,CAAC,aAAa,EAAE,EAAE;AAC5C,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC;YACvC,IAAI,cAAc,EAAE;AAClB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC;YAChD;QACF;AAEA,QAAA,IAAI,UAAU,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AACrC,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;YAChC,IAAI,cAAc,EAAE;AAClB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC1B,oBAAA,KAAK,EAAE,eAAe;AACtB,oBAAA,GAAG,EAAE,UAAU;AAChB,iBAAA,CAAC;YACJ;QACF;IACF;uGArFW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,mpCAQM,cAAc,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrDhD,4qDAmDA,EAAA,MAAA,EAAA,CAAA,sLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhBY,gBAAgB,oJAAE,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAUhC,eAAe,EAAA,UAAA,EAAA,CAAA;kBAZ3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,WACV,CAAC,gBAAgB,EAAE,eAAe,CAAC,EAAA,IAAA,EAGtC;AACJ,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,wBAAwB,EAAE,MAAM;AAChC,wBAAA,uCAAuC,EAAE,gCAAgC;AACzE,wBAAA,qCAAqC,EAAE,8BAA8B;AACtE,qBAAA,EAAA,QAAA,EAAA,4qDAAA,EAAA,MAAA,EAAA,CAAA,sLAAA,CAAA,EAAA;sHAU+B,cAAc,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ME7CnC,YAAY,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAZ,YAAY,EAAA,OAAA,EAAA,CAHb,eAAe,EAAE,cAAc,EAAE,qBAAqB,CAAA,EAAA,OAAA,EAAA,CACtD,eAAe,EAAE,cAAc,EAAE,qBAAqB,CAAA,EAAA,CAAA;AAErD,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAHb,eAAe,CAAA,EAAA,CAAA;;2FAGd,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,eAAe,EAAE,cAAc,EAAE,qBAAqB,CAAC;AACjE,oBAAA,OAAO,EAAE,CAAC,eAAe,EAAE,cAAc,EAAE,qBAAqB,CAAC;AAClE,iBAAA;;;ACOD,IAAI,YAAY,GAAG,CAAC;MAWP,mBAAmB,CAAA;IACb,sBAAsB,GAAG,oBAAoB,EAAE;AAC/C,IAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,EAAE;AACjE,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;AACe,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAE/B,IAAA,QAAQ,GAAG,CAAA,aAAA,EAAgB,EAAE,YAAY,EAAE;IAEnD,OAAO,GAAG,KAAK,CAAqB,SAAS,oDAAI,KAAK,EAAE,IAAI,EAAA,CAAG;AAC/D,IAAA,aAAa,GAAG,KAAK,CAAC,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,GAAA,EAAA,CAAA,EAClC,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACO,IAAA,YAAY,GAAG,KAAK,CAAC,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,cAAA,EAAA,GAAA,EAAA,CAAA,EACrC,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AAEO,IAAA,QAAQ,GAAG,QAAQ,CAC1B,MAAM,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,oDACrE;AACQ,IAAA,OAAO,GAAG,QAAQ,CACzB,MAAM,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,mDACnE;AACQ,IAAA,EAAE,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,8CAAC;AAE7D,IAAA,WAAA,CAAsC,WAAoB,EAAA;AACxD,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;QAClD,IAAI,kBAAkB,EAAE;AACtB,YAAA,MAAM,CAAC,MAAM,kBAAkB,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrE,YAAA,MAAM,CAAC,MAAM,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D;QAEA,IAAI,CAAC,WAAW,EAAE;;AAEhB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CACxB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,aAAa,EACb,EAAE,CACH;QACH;IACF;AA3CW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,kBA4BP,aAAa,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FA5BzB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,SAAA,EAAA,MAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,EAAA,cAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAT/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,cAAc;AACrB,wBAAA,+BAA+B,EAAE,WAAW;AAC5C,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,iBAAiB,EAAE,0BAA0B;AAC9C,qBAAA;AACF,iBAAA;;0BA6Bc,SAAS;2BAAC,aAAa;;;MC9CzB,gBAAgB,CAAA;uGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAhB,gBAAgB,EAAA,OAAA,EAAA,CAHjB,mBAAmB,CAAA,EAAA,OAAA,EAAA,CACnB,mBAAmB,CAAA,EAAA,CAAA;wGAElB,gBAAgB,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,mBAAmB,CAAC;oBAC9B,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC/B,iBAAA;;;MCyBY,sBAAsB,CAAA;AACd,IAAA,UAAU,GAAG,MAAM,EAAC,UAAkB,GAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEjE,IAAA,WAAW,GAAG,KAAK,CAA4B,YAAY,uDAAC;AAC5D,IAAA,OAAO,GAAG,KAAK,CAAgB,SAAS,mDAAC;IACzC,WAAW,GAAG,MAAM,EAAqB;AAEzC,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE5D,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AAClD,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC;aACb,IAAI,CAAC,kBAAkB,EAAE;AACzB,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;YACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACpC,QAAA,CAAC,CAAC;IACN;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;IACzB;uGAvBW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,ynBC/BnC,kBACA,EAAA,CAAA;;2FD8Ba,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAlBlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,cAAA,EAEX;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,UAAU;AACrB,4BAAA,MAAM,EAAE;gCACN,8BAA8B;gCAC9B,wBAAwB;gCACxB,8BAA8B;gCAC9B,oCAAoC;AACrC,6BAAA;AACF,yBAAA;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,KAAK,EAAE,iBAAiB;AACzB,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA;;;MECU,eAAe,CAAA;IACT,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC3C,IAAA,OAAO,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAExC,IAAA,WAAW,GAAG,MAAM,CAAiB,IAAI,uDAAC;AACpD,IAAA,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;IAExC,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEjE,IAAA,WAAA,GAAA;AACE,QAAA,gBAAgB,CAAC;YACf,IAAI,EAAE,MAAK;;;AAGT,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;YACnD,CAAC;AACF,SAAA,CAAC;IACJ;uGAjBW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,2CAAA,EAAA,qCAAA,EAAA,wCAAA,EAAA,kCAAA,EAAA,wCAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAG,IAAA,CAAA,SAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9B5B,kBACA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDaY,gBAAgB,EAAA,CAAA,EAAA,CAAA;;2FAgBf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAnB3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAAA,OAAA,EAEV,CAAC,gBAAgB,CAAC,EAAA,cAAA,EACX;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,SAAS;AACpB,4BAAA,MAAM,EAAE,CAAC,kBAAkB,EAAE,6BAA6B,CAAC;AAC5D,yBAAA;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,KAAK,EAAE,wBAAwB;AAC/B,wBAAA,6CAA6C,EAC3C,qCAAqC;AACvC,wBAAA,0CAA0C,EACxC,kCAAkC;AACpC,wBAAA,0CAA0C,EAAE,YAAY;AACzD,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA;;;MEpBU,YAAY,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAHb,eAAe,EAAE,sBAAsB,CAAA,EAAA,OAAA,EAAA,CACvC,eAAe,EAAE,sBAAsB,CAAA,EAAA,CAAA;AAEtC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAHb,eAAe,CAAA,EAAA,CAAA;;2FAGd,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,eAAe,EAAE,sBAAsB,CAAC;AAClD,oBAAA,OAAO,EAAE,CAAC,eAAe,EAAE,sBAAsB,CAAC;AACnD,iBAAA;;;ACPD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"vsn-ux-ngx-gaia.mjs","sources":["../../../projects/ngx-gaia/src/lib/utils/root-font-size.token.ts","../../../projects/ngx-gaia/src/lib/icon/icon.component.ts","../../../projects/ngx-gaia/src/lib/icon/icon.module.ts","../../../projects/ngx-gaia/src/lib/alert/alert-title.component.ts","../../../projects/ngx-gaia/src/lib/button/button-i18n.service.ts","../../../projects/ngx-gaia/src/lib/spinner/spinner.component.ts","../../../projects/ngx-gaia/src/lib/button/button.directive.ts","../../../projects/ngx-gaia/src/lib/button/icon-button.directive.ts","../../../projects/ngx-gaia/src/lib/button/button.module.ts","../../../projects/ngx-gaia/src/lib/alert/alert-i18n.service.ts","../../../projects/ngx-gaia/src/lib/alert/alert.component.ts","../../../projects/ngx-gaia/src/lib/alert/alert.component.html","../../../projects/ngx-gaia/src/lib/alert/alert-title-actions.component.ts","../../../projects/ngx-gaia/src/lib/alert/alert.module.ts","../../../projects/ngx-gaia/src/lib/badge/badge.component.ts","../../../projects/ngx-gaia/src/lib/badge/badge.module.ts","../../../projects/ngx-gaia/src/lib/card/card.component.ts","../../../projects/ngx-gaia/src/lib/card/card.module.ts","../../../projects/ngx-gaia/src/lib/form-field/form-control-errors.directive.ts","../../../projects/ngx-gaia/src/lib/utils/error-state.ts","../../../projects/ngx-gaia/src/lib/checkbox/checkbox.component.ts","../../../projects/ngx-gaia/src/lib/checkbox/checkbox.component.html","../../../projects/ngx-gaia/src/lib/checkbox/checkbox-required.validator.ts","../../../projects/ngx-gaia/src/lib/checkbox/checkbox.module.ts","../../../projects/ngx-gaia/src/lib/utils/class-checker.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker-i18n.service.ts","../../../projects/ngx-gaia/src/lib/datepicker/adapters/date-struct-adapter.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker.component.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker.component.html","../../../projects/ngx-gaia/src/lib/form-field/form-field-connector.ts","../../../projects/ngx-gaia/src/lib/input/input.directive.ts","../../../projects/ngx-gaia/src/lib/input/input.component.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker-toggle.component.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker-toggle.component.html","../../../projects/ngx-gaia/src/lib/datepicker/datepicker-parser-formatter.service.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker-input.directive.ts","../../../projects/ngx-gaia/src/lib/datepicker/datepicker.module.ts","../../../projects/ngx-gaia/src/lib/datepicker/adapters/date-native-utc-adapter.ts","../../../projects/ngx-gaia/src/lib/datepicker/adapters/date-native-utc-iso-adapter.ts","../../../projects/ngx-gaia/src/lib/segmented-control/segmented-control.component.ts","../../../projects/ngx-gaia/src/lib/segmented-control/segmented-control-button.directive.ts","../../../projects/ngx-gaia/src/lib/segmented-control/segmented-control-icon-button.component.ts","../../../projects/ngx-gaia/src/lib/segmented-control/segmented-control-text-button.component.ts","../../../projects/ngx-gaia/src/lib/segmented-control/segmented-control.module.ts","../../../projects/ngx-gaia/src/lib/input/input.module.ts","../../../projects/ngx-gaia/src/lib/form-field/form-errors.provider.ts","../../../projects/ngx-gaia/src/lib/form-field/field-callout.component.ts","../../../projects/ngx-gaia/src/lib/form-field/field-callout.component.html","../../../projects/ngx-gaia/src/lib/form-field/field-info.component.ts","../../../projects/ngx-gaia/src/lib/form-field/field-error.directive.ts","../../../projects/ngx-gaia/src/lib/form-field/form-field.di.ts","../../../projects/ngx-gaia/src/lib/form-field/form-field.component.ts","../../../projects/ngx-gaia/src/lib/form-field/form-field.component.html","../../../projects/ngx-gaia/src/lib/tooltip/tooltip.component.ts","../../../projects/ngx-gaia/src/lib/tooltip/tooltip.component.html","../../../projects/ngx-gaia/src/lib/tooltip/tooltip.directive.ts","../../../projects/ngx-gaia/src/lib/tooltip/tooltip.module.ts","../../../projects/ngx-gaia/src/lib/form-field/field-label.component.ts","../../../projects/ngx-gaia/src/lib/form-field/field-label.component.html","../../../projects/ngx-gaia/src/lib/form-field/form-control.directive.ts","../../../projects/ngx-gaia/src/lib/form-field/labelled-by-form-field.directive.ts","../../../projects/ngx-gaia/src/lib/form-field/form-field.module.ts","../../../projects/ngx-gaia/src/lib/menu/menu.component.ts","../../../projects/ngx-gaia/src/lib/menu/menu-item.component.ts","../../../projects/ngx-gaia/src/lib/menu/menu-item.component.html","../../../projects/ngx-gaia/src/lib/menu/menu-title.component.ts","../../../projects/ngx-gaia/src/lib/menu/menu-trigger.directive.ts","../../../projects/ngx-gaia/src/lib/menu/menu-separator.component.ts","../../../projects/ngx-gaia/src/lib/menu/menu-trigger-icon.component.ts","../../../projects/ngx-gaia/src/lib/menu/menu.module.ts","../../../projects/ngx-gaia/src/lib/modal/modal-ref.ts","../../../projects/ngx-gaia/src/lib/modal/modal-data.token.ts","../../../projects/ngx-gaia/src/lib/modal/modal.options.ts","../../../projects/ngx-gaia/src/lib/modal/modal.service.ts","../../../projects/ngx-gaia/src/lib/modal/modal.component.ts","../../../projects/ngx-gaia/src/lib/modal/modal.directives.ts","../../../projects/ngx-gaia/src/lib/modal/modal-description.component.ts","../../../projects/ngx-gaia/src/lib/modal/modal-content.component.ts","../../../projects/ngx-gaia/src/lib/modal/modal-actions.component.ts","../../../projects/ngx-gaia/src/lib/modal/modal-i18n.service.ts","../../../projects/ngx-gaia/src/lib/modal/modal-header.component.ts","../../../projects/ngx-gaia/src/lib/modal/modal.module.ts","../../../projects/ngx-gaia/src/lib/radio/radio-group.component.ts","../../../projects/ngx-gaia/src/lib/radio/radio-group.component.html","../../../projects/ngx-gaia/src/lib/radio/radio-button.component.ts","../../../projects/ngx-gaia/src/lib/radio/radio-button.component.html","../../../projects/ngx-gaia/src/lib/radio/radio.module.ts","../../../projects/ngx-gaia/src/lib/select/option.component.ts","../../../projects/ngx-gaia/src/lib/select/option.component.html","../../../projects/ngx-gaia/src/lib/select/select-value.component.ts","../../../projects/ngx-gaia/src/lib/select/select-default-value.component.ts","../../../projects/ngx-gaia/src/lib/select/select-default-value.component.html","../../../projects/ngx-gaia/src/lib/select/select-i18n.service.ts","../../../projects/ngx-gaia/src/lib/spinner/spinner.module.ts","../../../projects/ngx-gaia/src/lib/select/select-dropdown-spinner.component.ts","../../../projects/ngx-gaia/src/lib/select/select-dropdown.component.ts","../../../projects/ngx-gaia/src/lib/select/select-dropdown.component.html","../../../projects/ngx-gaia/src/lib/select/select.component.ts","../../../projects/ngx-gaia/src/lib/select/select.component.html","../../../projects/ngx-gaia/src/lib/select/opt-group.component.ts","../../../projects/ngx-gaia/src/lib/select/select-required.validator.ts","../../../projects/ngx-gaia/src/lib/select/select.module.ts","../../../projects/ngx-gaia/src/lib/data-select/data-option.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-option.component.html","../../../projects/ngx-gaia/src/lib/data-select/data-select-i18n.service.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-value.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-value.component.html","../../../projects/ngx-gaia/src/lib/data-select/data-select-dropdown-spinner.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-dropdown.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-dropdown.component.html","../../../projects/ngx-gaia/src/lib/data-select/data-optgroup.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-value.directive.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-option-label.directive.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select-optgroup-label.directive.ts","../../../projects/ngx-gaia/src/lib/utils/intersection-trigger.directive.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select.component.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select.component.html","../../../projects/ngx-gaia/src/lib/data-select/data-select-required.validator.ts","../../../projects/ngx-gaia/src/lib/data-select/data-select.module.ts","../../../projects/ngx-gaia/src/lib/switch/switch.component.ts","../../../projects/ngx-gaia/src/lib/switch/switch.component.html","../../../projects/ngx-gaia/src/lib/switch/switch.module.ts","../../../projects/ngx-gaia/src/lib/link/link.directive.ts","../../../projects/ngx-gaia/src/lib/link/link.module.ts","../../../projects/ngx-gaia/src/lib/tabs/tab.component.ts","../../../projects/ngx-gaia/src/lib/tabs/tab.component.html","../../../projects/ngx-gaia/src/lib/tabs/tabs.component.ts","../../../projects/ngx-gaia/src/lib/tabs/tabs.component.html","../../../projects/ngx-gaia/src/lib/tabs/tabs.module.ts","../../../projects/ngx-gaia/src/lib/text-area/text-area.directive.ts","../../../projects/ngx-gaia/src/lib/text-area/text-area.module.ts","../../../projects/ngx-gaia/src/lib/chip/chip-listbox.component.ts","../../../projects/ngx-gaia/src/lib/chip/chip-listbox.component.html","../../../projects/ngx-gaia/src/lib/chip/chip.component.ts","../../../projects/ngx-gaia/src/lib/chip/chip.component.html","../../../projects/ngx-gaia/src/lib/chip/chip.module.ts","../../../projects/ngx-gaia/src/public-api.ts","../../../projects/ngx-gaia/src/vsn-ux-ngx-gaia.ts"],"sourcesContent":["import { InjectionToken, makeEnvironmentProviders } from '@angular/core';\n\n/**\n * Injection token that provides the base root font size in pixels.\n * This token is used for accurate rem calculations when the default\n * browser font size (16px) has been overridden by application styles.\n * Default value is 16px if not explicitly provided.\n */\nexport const GA_BASE_FONT_SIZE = new InjectionToken<number>(\n 'ga-base-font-size',\n { providedIn: 'root', factory: () => 16 },\n);\n\nexport function provideGaBaseFontSize(fontSize: number) {\n return makeEnvironmentProviders([\n { provide: GA_BASE_FONT_SIZE, useValue: fontSize },\n ]);\n}\n","import {\n Component,\n computed,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n numberAttribute,\n ViewEncapsulation,\n} from '@angular/core';\nimport { LucideAngularModule, LucideIconData } from 'lucide-angular';\nimport { GA_BASE_FONT_SIZE } from '../utils/root-font-size.token';\n\nexport type GaIconData = LucideIconData;\n\nexport const GA_ICON_DEFAULT_SIZE = 24;\n\n@Component({\n selector: 'ga-icon',\n imports: [LucideAngularModule],\n template: `<lucide-icon\n [name]=\"icon()\"\n [color]=\"color()\"\n [strokeWidth]=\"strokeWidth()\"\n />`,\n host: {\n class: 'ga-icon',\n role: 'img',\n '[style]': \"{ '--ga-icon-size': sizeWithDimension() }\",\n },\n styles: `\n .ga-icon {\n display: inline-block;\n vertical-align: middle;\n user-select: none;\n width: fit-content;\n height: fit-content;\n\n lucide-icon > svg {\n width: var(--ga-icon-size);\n height: var(--ga-icon-size);\n }\n }\n `,\n encapsulation: ViewEncapsulation.None,\n})\nexport class GaIconComponent {\n private readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n private readonly baseFontSize = inject(GA_BASE_FONT_SIZE);\n private readonly ariaHiddenAttr = inject(\n new HostAttributeToken('aria-hidden'),\n {\n optional: true,\n },\n );\n\n readonly icon = input.required<GaIconData | string>();\n readonly size = input<string | number>(GA_ICON_DEFAULT_SIZE);\n readonly color = input<string>();\n readonly strokeWidth = input(undefined, { transform: numberAttribute });\n\n readonly sizeWithDimension = computed(() => {\n const size = this.size();\n if (\n typeof size === 'number' ||\n (typeof size === 'string' && size.match(/^\\d+$/))\n ) {\n const sizeNumber = Number(size);\n return `${sizeNumber / this.baseFontSize}rem`;\n }\n return size;\n });\n\n constructor() {\n if (!this.ariaHiddenAttr) {\n this.elementRef.nativeElement.setAttribute('aria-hidden', 'true');\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaIconComponent } from './icon.component';\n\n@NgModule({\n imports: [GaIconComponent],\n exports: [GaIconComponent],\n})\nexport class GaIconModule {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-alert-title',\n template: `<ng-content />`,\n host: {\n class: 'ga-notification__title',\n },\n})\nexport class GaAlertTitleComponent {}\n","import { Injectable, makeEnvironmentProviders } from '@angular/core';\n\nexport function GA_BUTTON_I18N_FACTORY() {\n return new GaButtonI18nDefault();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_BUTTON_I18N_FACTORY,\n})\nexport abstract class GaButtonI18n {\n abstract loadingLabel: string;\n}\n\n@Injectable()\nexport class GaButtonI18nDefault extends GaButtonI18n {\n /** A label for the default loading state */\n loadingLabel = 'Loading...';\n}\n\nexport function provideGaButtonI18n(\n value: GaButtonI18n | (() => GaButtonI18n),\n) {\n return makeEnvironmentProviders([\n typeof value === 'function'\n ? { provide: GaButtonI18n, useFactory: value }\n : { provide: GaButtonI18n, useValue: value },\n ]);\n}\n","import {\n Component,\n computed,\n input,\n numberAttribute,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'ga-spinner',\n template: `\n <svg\n [attr.width]=\"size()\"\n [attr.height]=\"size()\"\n [attr.viewBox]=\"'0 0 ' + size() + ' ' + size()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n [attr.cx]=\"center()\"\n [attr.cy]=\"center()\"\n [attr.r]=\"radius()\"\n stroke=\"var(--ga-color-secondary)\"\n [attr.stroke-width]=\"strokeWidth()\"\n fill=\"none\"\n ></circle>\n <circle\n [attr.cx]=\"center()\"\n [attr.cy]=\"center()\"\n [attr.r]=\"radius()\"\n stroke=\"var(--ga-color-primary-70)\"\n [attr.stroke-width]=\"strokeWidth()\"\n stroke-linecap=\"round\"\n fill=\"none\"\n [attr.stroke-dasharray]=\"arcCircumference() + ' ' + circumference()\"\n style=\"transform-origin: center; animation: ga-spinner__animation 1100ms linear infinite;\"\n ></circle>\n </svg>\n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ga-spinner',\n role: 'progressbar',\n '[attr.aria-valuemin]': '0',\n '[attr.aria-valuemax]': '100',\n '[attr.mode]': \"'indeterminate'\",\n tabindex: '-1',\n },\n styles: `\n .ga-spinner {\n display: inline-block;\n }\n\n @keyframes ga-spinner__animation {\n 0% {\n transform: rotate(0deg);\n }\n 31.82% {\n /* 350ms / 1100ms */\n transform: rotate(90deg);\n }\n 63.64% {\n /* (350ms + 350ms) / 1100ms */\n transform: rotate(180deg);\n }\n 81.82% {\n /* (350ms + 350ms + 200ms) / 1100ms */\n transform: rotate(270deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n `,\n})\nexport class GaSpinnerComponent {\n readonly size = input(32, { transform: numberAttribute });\n\n readonly strokeWidth = computed(() => this.size() / 5);\n readonly center = computed(() => this.size() / 2);\n readonly radius = computed(() => (this.size() - this.strokeWidth()) / 2);\n readonly circumference = computed(() => 2 * Math.PI * this.radius());\n readonly arcCircumference = computed(() => this.circumference() * 0.25);\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { GaButtonI18n } from './button-i18n.service';\nimport { GaSpinnerComponent } from '../spinner/spinner.component';\n\nexport type GaButtonType = 'primary' | 'secondary' | 'ghost' | 'transparent';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[gaButton], a[gaButton]',\n imports: [GaSpinnerComponent],\n template: `\n @if (isLoading()) {\n <ga-spinner size=\"16\" />\n <span class=\"ga-button__loading-label\">{{ loadingLabel() }}</span>\n } @else {\n <ng-content />\n }\n `,\n styles: `\n .ga-button__loading-label {\n color: var(--ga-color-text-body);\n font-weight: 400;\n font-size: calc(\n var(--ga-text-sm-font-size) * var(--ga-base-scaling-factor, 1)\n );\n line-height: calc(\n var(--ga-text-sm-line-height) * var(--ga-base-scaling-factor, 1)\n );\n letter-spacing: 0;\n }\n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ga-button',\n '[class.ga-button--secondary]': `!variant() || variant() === 'secondary'`,\n '[class.ga-button--primary]': `variant() === 'primary'`,\n '[class.ga-button--ghost]': `variant() === 'ghost'`,\n '[class.ga-button--transparent]': `variant() === 'transparent'`,\n '[attr.disabled]': 'disabled()',\n '[attr.aria-busy]': 'isLoading() ? \"true\" : null',\n },\n})\nexport class GaButtonDirective {\n private readonly i18n = inject(GaButtonI18n);\n private readonly el: ElementRef<HTMLElement> = inject(ElementRef);\n\n readonly variant = input.required<GaButtonType | ''>({\n alias: 'gaButton',\n });\n\n readonly isLoading = input(false, {\n alias: 'gaButtonLoading',\n transform: booleanAttribute,\n });\n readonly loadingLabel = input(this.i18n.loadingLabel, {\n alias: 'gaButtonLoadingLabel',\n });\n readonly disabledImplicit = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n\n readonly disabled = computed(() => {\n if (this.el.nativeElement.tagName === 'A') {\n return null;\n }\n return this.isLoading() || this.disabledImplicit() ? '' : null;\n });\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { GaIconModule } from '../icon/icon.module';\nimport { GaIconData } from '../icon/icon.component';\nimport { GaButtonI18n } from './button-i18n.service';\nimport { GaSpinnerComponent } from '../spinner/spinner.component';\n\nexport type GaIconButtonVariant =\n | 'primary'\n | 'secondary'\n | 'ghost'\n | 'transparent';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[gaIconButton], a[gaIconButton]',\n imports: [GaIconModule, GaSpinnerComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './icon-button.directive.scss',\n encapsulation: ViewEncapsulation.None,\n template: `\n @if (isLoading()) {\n <ga-spinner size=\"16\" />\n <span class=\"ga-button__icon-label\">{{ loadingLabel() }}</span>\n } @else {\n <ga-icon [icon]=\"icon()\" />\n <span class=\"ga-button__icon-label\"><ng-content /></span>\n }\n `,\n host: {\n class: 'ga-button ga-button--icon-only',\n '[class.ga-button--primary]': `variant() === 'primary'`,\n '[class.ga-button--secondary]': `variant() === 'secondary'`,\n '[class.ga-button--ghost]': `variant() === 'ghost'`,\n '[class.ga-button--transparent]': `variant() === 'transparent'`,\n '[attr.disabled]': 'disabled()',\n '[attr.aria-busy]': 'isLoading() ? \"true\" : null',\n },\n})\nexport class GaIconButtonDirective {\n private readonly i18n = inject(GaButtonI18n);\n private readonly el: ElementRef<HTMLElement> = inject(ElementRef);\n\n readonly icon = input.required<GaIconData>({\n alias: 'gaIconButton',\n });\n\n readonly variant = input<GaIconButtonVariant>('secondary', {\n alias: 'gaIconButtonVariant',\n });\n\n readonly isLoading = input(false, {\n alias: 'gaIconButtonLoading',\n transform: booleanAttribute,\n });\n readonly loadingLabel = input(this.i18n.loadingLabel, {\n alias: 'gaIconButtonLoadingLabel',\n });\n readonly disabledImplicit = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n\n readonly disabled = computed(() => {\n if (this.el.nativeElement.tagName === 'A') {\n return null;\n }\n return this.isLoading() || this.disabledImplicit() ? '' : null;\n });\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaButtonDirective } from './button.directive';\nimport { GaIconButtonDirective } from './icon-button.directive';\n\n@NgModule({\n imports: [GaButtonDirective, GaIconButtonDirective],\n exports: [GaButtonDirective, GaIconButtonDirective],\n})\nexport class GaButtonModule {}\n","import { Injectable, makeEnvironmentProviders } from '@angular/core';\n\nexport function GA_ALERT_I18N_FACTORY() {\n return new GaAlertI18nDefault();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_ALERT_I18N_FACTORY,\n})\nexport abstract class GaAlertI18n {\n abstract dismissLabel: string;\n}\n\n@Injectable()\nexport class GaAlertI18nDefault extends GaAlertI18n {\n /** A label for the dismiss button */\n dismissLabel = 'Dismiss';\n}\n\nexport function provideGaAlertI18n(value: GaAlertI18n | (() => GaAlertI18n)) {\n return makeEnvironmentProviders([\n typeof value === 'function'\n ? { provide: GaAlertI18n, useFactory: value }\n : { provide: GaAlertI18n, useValue: value },\n ]);\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n contentChild,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { GaIconData, GaIconModule } from '../icon';\nimport { GaAlertTitleComponent } from './alert-title.component';\nimport {\n CircleCheck,\n Info,\n OctagonAlert,\n TriangleAlert,\n X,\n} from 'lucide-angular';\nimport { GaButtonModule } from '../button/button.module';\nimport { GaAlertI18n } from './alert-i18n.service';\n\nlet nextUniqueId = 0;\n\nexport type GaAlertVariant =\n | 'brand'\n | 'information'\n | 'error'\n | 'warning'\n | 'success';\n\n@Component({\n selector: 'ga-alert',\n templateUrl: './alert.component.html',\n imports: [GaIconModule, GaButtonModule],\n host: {\n role: 'alert',\n '[class]': `variantClass()`,\n },\n})\nexport class GaAlertComponent {\n protected readonly i18n = inject(GaAlertI18n);\n\n readonly dismissIcon: typeof X = X;\n\n readonly variant = input<GaAlertVariant>('brand');\n readonly explicitIcon = input<GaIconData>(undefined, { alias: 'icon' });\n readonly dismissible = input(false, { transform: booleanAttribute });\n readonly progress = input<number | 'indeterminate'>();\n readonly progressLabel = input<string>();\n readonly progressLabelledBy = input<string>();\n\n readonly dismiss = output();\n\n readonly icon = computed(() => {\n if (this.explicitIcon() !== undefined) {\n return this.explicitIcon();\n }\n switch (this.variant()) {\n case 'information':\n return Info;\n case 'error':\n return OctagonAlert;\n case 'warning':\n return TriangleAlert;\n case 'success':\n return CircleCheck;\n }\n return null;\n });\n\n readonly title = contentChild(GaAlertTitleComponent);\n\n readonly progressId = `ga-alert-progress-${++nextUniqueId}`;\n\n readonly variantClass = computed(() => {\n return `ga-notification ga-notification--${this.variant()}`;\n });\n\n readonly hasProgress = computed(() => {\n return this.progress() !== undefined;\n });\n\n readonly progressValue = computed(() => {\n const progressValue = this.progress();\n if (progressValue === undefined || progressValue === 'indeterminate') {\n return undefined;\n }\n return Math.max(0, Math.min(100, progressValue));\n });\n\n readonly progressBarWidth = computed(() => {\n const progressValue = this.progressValue();\n if (progressValue === undefined) {\n return undefined;\n }\n return `${progressValue}%`;\n });\n}\n","@if (icon()) {\n <ga-icon [icon]=\"icon()!\" class=\"ga-notification__icon\" />\n}\n<div class=\"ga-notification__content\">\n @if (title()) {\n <div class=\"ga-notification__heading\">\n <ng-content select=\"ga-alert-title\" />\n <ng-content select=\"ga-alert-title-actions\" />\n </div>\n }\n <div class=\"ga-notification__description\">\n <ng-content />\n </div>\n</div>\n\n@if (hasProgress()) {\n <div\n role=\"progressbar\"\n class=\"ga-notification__progress\"\n [class.ga-notification__progress--indeterminate]=\"\n progress() === 'indeterminate'\n \"\n [id]=\"progressId\"\n [attr.aria-label]=\"progressLabel()\"\n [attr.aria-labelledby]=\"progressLabelledBy()\"\n [attr.aria-valuenow]=\"progressValue()\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <div\n class=\"ga-notification__progress-bar\"\n [style.width]=\"progressBarWidth()\"\n ></div>\n </div>\n}\n\n@if (dismissible()) {\n <button\n type=\"button\"\n [gaIconButton]=\"dismissIcon\"\n gaIconButtonVariant=\"ghost\"\n (click)=\"dismiss.emit()\"\n >\n {{ i18n.dismissLabel }}\n </button>\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-alert-title-actions',\n template: `<ng-content />`,\n host: {\n class: 'ga-notification__title-actions',\n },\n})\nexport class GaAlertTitleActionsComponent {}\n","import { NgModule } from '@angular/core';\n\nimport { GaAlertComponent } from './alert.component';\nimport { GaAlertTitleComponent } from './alert-title.component';\nimport { GaAlertTitleActionsComponent } from './alert-title-actions.component';\n\n@NgModule({\n imports: [\n GaAlertComponent,\n GaAlertTitleComponent,\n GaAlertTitleActionsComponent,\n ],\n exports: [\n GaAlertComponent,\n GaAlertTitleComponent,\n GaAlertTitleActionsComponent,\n ],\n})\nexport class GaAlertModule {}\n","import { Component, computed, input } from '@angular/core';\n\nexport type GaBadgeVariant =\n | 'default'\n | 'default-inverted'\n | 'information'\n | 'error'\n | 'warning'\n | 'success'\n | 'muted'\n | 'disabled';\n\nexport type GaBadgeType = 'text' | 'dot';\n\n@Component({\n selector: 'ga-badge',\n template: `<ng-content />`,\n host: {\n '[class]': `variantClass()`,\n },\n})\nexport class GaBadgeComponent {\n readonly variant = input<GaBadgeVariant>('default');\n readonly type = input<GaBadgeType>('text');\n\n readonly variantClass = computed(() => {\n return `ga-badge ga-badge--${this.type()} ga-badge--${this.variant()}`;\n });\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaBadgeComponent } from './badge.component';\n\n@NgModule({\n imports: [GaBadgeComponent],\n exports: [GaBadgeComponent],\n})\nexport class GaBadgeModule {}\n","import { booleanAttribute, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ga-card',\n template: `<ng-content />`,\n host: {\n class: 'ga-card',\n '[class.ga-card--selectable]': 'selectable()',\n '[class.ga-card--selected]': 'selected()',\n '[class.ga-card--disabled]': 'disabled()',\n },\n})\nexport class GaCardComponent {\n readonly selectable = input(false, { transform: booleanAttribute });\n readonly selected = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaCardComponent } from './card.component';\n\n@NgModule({\n imports: [GaCardComponent],\n exports: [GaCardComponent],\n})\nexport class GaCardModule {}\n","import { computed, Directive, input } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\n\n@Directive({\n selector: '[gaFormControlErrors]',\n})\nexport class GaFormControlErrorsDirective {\n readonly customErrorsInput = input.required<ValidationErrors>({\n alias: 'gaFormControlErrors',\n });\n\n readonly customErrors = computed(() => {\n // for better API ergonomics, we ignore errors with null and undefined values\n // this lets to bind custom errors directly without nasty if checks\n // e.g. [gaFormControlErrors]=\"{ required: isEmpty ? true : null, noMatch: form.getError('noMatch') }\"\n return Object.entries(this.customErrorsInput()).reduce<ValidationErrors>(\n (acc, [key, value]) => {\n if (value !== null && value !== undefined) {\n acc[key] = value;\n }\n return acc;\n },\n {},\n );\n });\n}\n","import {\n DestroyRef,\n effect,\n inject,\n InjectionToken,\n Injector,\n isSignal,\n linkedSignal,\n Signal,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport {\n ControlContainer,\n FormGroupDirective,\n NgControl,\n NgForm,\n ValidationErrors,\n} from '@angular/forms';\nimport { GaFormControlErrorsDirective } from '../form-field/form-control-errors.directive';\nimport { Subscription } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport interface GaFormControlAdapter {\n readonly ngControlErrors: Signal<ValidationErrors | null | undefined>;\n readonly ngControlTouched: Signal<boolean>;\n readonly ngControlDisabled: Signal<boolean>;\n readonly ngControlName: Signal<string | number | null>;\n readonly ngFormSubmitted: Signal<boolean>;\n}\n\nexport const GA_FORM_CONTROL_ADAPTER = new InjectionToken<GaFormControlAdapter>(\n 'ga-form-control-adapter',\n);\n\n/**\n * @internal - This function is for internal library use only\n */\nexport function injectNgControlState({\n implicitChildNgControl,\n explicitNgControl,\n explicitNgForm,\n}: {\n implicitChildNgControl?: Signal<NgControl | undefined | null>;\n explicitNgControl?: NgControl | Signal<NgControl | undefined | null> | null;\n explicitNgForm?: FormGroupDirective | NgForm;\n} = {}) {\n const gaFormControlAdapter = inject(GA_FORM_CONTROL_ADAPTER, {\n optional: true,\n });\n\n let ngControlErrors: WritableSignal<ValidationErrors | null | undefined>;\n let ngControlTouched: WritableSignal<boolean>;\n let ngControlDisabled: WritableSignal<boolean>;\n let ngControlName: WritableSignal<string | number | null>;\n let ngFormSubmitted: WritableSignal<boolean>;\n\n if (gaFormControlAdapter) {\n ngControlErrors = linkedSignal(() =>\n gaFormControlAdapter.ngControlErrors(),\n );\n ngControlTouched = linkedSignal(() =>\n gaFormControlAdapter.ngControlTouched(),\n );\n ngControlDisabled = linkedSignal(() =>\n gaFormControlAdapter.ngControlDisabled(),\n );\n ngControlName = linkedSignal(() => gaFormControlAdapter.ngControlName());\n ngFormSubmitted = linkedSignal(() =>\n gaFormControlAdapter.ngFormSubmitted(),\n );\n } else {\n ngControlErrors = signal<ValidationErrors | null>(null);\n ngControlTouched = signal<boolean>(false);\n ngControlDisabled = signal<boolean>(false);\n ngControlName = signal<string | number | null>(null);\n ngFormSubmitted = signal<boolean>(false);\n\n const injector = inject(Injector);\n const destroyRef = inject(DestroyRef);\n const implicitNgForm = inject(NgForm, { optional: true });\n const implicitControlContainer = inject(ControlContainer, {\n optional: true,\n });\n const ngForm =\n explicitNgForm ??\n implicitNgForm ??\n (implicitControlContainer?.formDirective instanceof NgForm\n ? implicitControlContainer.formDirective\n : null);\n\n let ngControlSubscription: Subscription | null = null;\n effect(() => {\n if (ngControlSubscription) {\n ngControlSubscription.unsubscribe();\n ngControlSubscription = null;\n }\n if (isSignal(explicitNgControl)) {\n explicitNgControl = explicitNgControl();\n }\n\n const ngControl =\n explicitNgControl ??\n implicitChildNgControl?.() ??\n injector.get(NgControl, null, { optional: true });\n if (ngControl?.control) {\n const updateStatuses = () => {\n ngControlErrors.set(ngControl.errors);\n ngControlTouched.set(!!ngControl.touched);\n ngControlDisabled.set(!!ngControl.disabled);\n ngControlName.set(ngControl.name);\n };\n updateStatuses();\n ngControlSubscription = ngControl.control.events\n .pipe(takeUntilDestroyed(destroyRef))\n .subscribe(() => updateStatuses());\n }\n });\n\n if (ngForm) {\n ngFormSubmitted.set(ngForm.submitted);\n ngForm.ngSubmit\n .pipe(takeUntilDestroyed(destroyRef))\n .subscribe(() => ngFormSubmitted.set(ngForm.submitted));\n }\n }\n\n const customErrorsDirective = inject(GaFormControlErrorsDirective, {\n optional: true,\n });\n const inError = signal(false);\n const errors = signal<ValidationErrors>({});\n effect(() => {\n errors.set({\n ...ngControlErrors(),\n ...(customErrorsDirective?.customErrors() ?? {}),\n });\n const hasErrors = Object.keys(errors()).length > 0;\n inError.set(hasErrors && (ngControlTouched() || ngFormSubmitted()));\n });\n\n return {\n inError: inError.asReadonly(),\n errors: errors.asReadonly(),\n disabled: ngControlDisabled.asReadonly(),\n name: ngControlName.asReadonly(),\n };\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n linkedSignal,\n output,\n Provider,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Check, LucideAngularModule, Minus } from 'lucide-angular';\nimport { injectNgControlState } from '../utils/error-state';\n\nexport const CHECKBOX_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaCheckboxComponent),\n multi: true,\n};\n\n// Increasing integer for generating unique ids for checkbox components.\n// Inspired by @angular/components\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-checkbox',\n templateUrl: './checkbox.component.html',\n imports: [LucideAngularModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CHECKBOX_CONTROL_VALUE_ACCESSOR],\n host: {\n class: 'ga-checkbox',\n '[class.ga-checkbox--invalid]': 'invalid()',\n '[attr.id]': 'null',\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n '[attr.aria-invalid]': 'null',\n '[attr.aria-errormessage]': 'null',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n },\n})\nexport class GaCheckboxComponent implements ControlValueAccessor {\n /** @ignore */\n private readonly _uniqueId = `ga-checkbox-${++nextUniqueId}`;\n\n /** @ignore */\n private readonly implicitNgControlState = injectNgControlState();\n\n /** @ignore */\n protected readonly tabindex = inject(new HostAttributeToken('tabindex'), {\n optional: true,\n });\n\n readonly icons = { Minus, Check };\n\n /** @ignore */\n private _onTouched?: () => any;\n /** @ignore */\n private _onModelChanged?: (value: any) => void;\n\n /** The value attribute of the native input element */\n readonly value = input<string | null>(null);\n readonly disabledInput = input(false, {\n transform: booleanAttribute,\n alias: 'disabled',\n });\n readonly checkedInput = input(false, {\n transform: booleanAttribute,\n alias: 'checked',\n });\n readonly nameInput = input<string | null>(null, { alias: 'name' });\n readonly id = input<string | null>(null);\n readonly indeterminate = input(false, { transform: booleanAttribute });\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly ariaLabelledby = input<string | null>(null, {\n alias: 'aria-labelledby',\n });\n readonly ariaDescribedby = input<string | null>(null, {\n alias: 'aria-describedby',\n });\n readonly ariaInvalid = input<string | null>(null, { alias: 'aria-invalid' });\n readonly ariaErrormessage = input<string | null>(null, {\n alias: 'aria-errormessage',\n });\n readonly required = input(false, { transform: booleanAttribute });\n\n readonly disabled = linkedSignal(() => this.disabledInput());\n readonly checked = linkedSignal(() => this.checkedInput());\n\n /** Emits when the checked state changes. */\n readonly checkedChange = output<boolean>();\n /**\n * Emits when the checked state changes.\n * @deprecated Use `checkedChange` instead.\n */\n readonly change = output<boolean>();\n readonly indeterminateChange = output<boolean>();\n\n /** @ignore */\n readonly inputId = computed(() => (this.id() ? this.id() : this._uniqueId));\n /** @ignore */\n readonly name = computed(() => {\n return (\n this.nameInput() ?? this.implicitNgControlState.name() ?? this._uniqueId\n );\n });\n /** @ignore */\n readonly invalid = computed(() => {\n return this.ariaInvalid()\n ? this.ariaInvalid() === 'true'\n : this.implicitNgControlState.inError();\n });\n\n /** @ignore */\n onInputChange(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n\n if (this.disabled()) {\n return;\n }\n\n this.checked.set(!this.checked());\n this.updateModel();\n }\n\n /** @ignore */\n onBlur() {\n this._onTouched?.();\n }\n\n /** @ignore */\n registerOnChange(fn: (value: any) => void) {\n this._onModelChanged = fn;\n }\n\n /** @ignore */\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n /** @ignore */\n writeValue(value: any) {\n this.checked.set(!!value);\n }\n\n /** @ignore */\n setDisabledState(isDisabled: boolean) {\n this.disabled.set(isDisabled);\n }\n\n /** @ignore */\n private updateModel() {\n this._onModelChanged?.(this.checked());\n this.checkedChange.emit(this.checked());\n this.change.emit(this.checked());\n }\n}\n","<input\n type=\"checkbox\"\n class=\"ga-checkbox__native\"\n [attr.id]=\"inputId()\"\n [name]=\"name()\"\n [checked]=\"checked()\"\n [indeterminate]=\"indeterminate()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.value]=\"value()\"\n [attr.tabindex]=\"tabindex\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-errormessage]=\"ariaErrormessage()\"\n (change)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"\n/>\n<div class=\"ga-checkbox__marker\">\n <lucide-icon\n [img]=\"icons.Check\"\n class=\"ga-checkbox__marker__indicator-checked\"\n [size]=\"12\"\n [strokeWidth]=\"2\"\n [absoluteStrokeWidth]=\"true\"\n />\n <lucide-icon\n [img]=\"icons.Minus\"\n class=\"ga-checkbox__marker__indicator-indeterminate\"\n [size]=\"12\"\n [strokeWidth]=\"2\"\n [absoluteStrokeWidth]=\"true\"\n />\n</div>\n\n<label class=\"ga-checkbox__label\" [attr.for]=\"inputId()\"\n ><ng-content></ng-content\n></label>\n","import { Directive, Provider, forwardRef } from '@angular/core';\nimport { NG_VALIDATORS, CheckboxRequiredValidator } from '@angular/forms';\n\nexport const GA_CHECKBOX_REQUIRED_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => GaCheckboxRequiredValidator),\n multi: true,\n};\n\n/**\n * Validator for Gaia checkbox's required attribute in template-driven checkbox.\n * Current CheckboxRequiredValidator only work with `input type=checkbox` and does not\n * work with `ga-checkbox`.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: `ga-checkbox[required][formControlName], ga-checkbox[required][formControl], ga-checkbox[required][ngModel]`,\n providers: [GA_CHECKBOX_REQUIRED_VALIDATOR],\n})\nexport class GaCheckboxRequiredValidator extends CheckboxRequiredValidator {}\n","import { NgModule } from '@angular/core';\n\nimport { GaCheckboxRequiredValidator } from './checkbox-required.validator';\nimport { GaCheckboxComponent } from './checkbox.component';\n\n@NgModule({\n imports: [GaCheckboxComponent, GaCheckboxRequiredValidator],\n exports: [GaCheckboxComponent, GaCheckboxRequiredValidator],\n})\nexport class GaCheckboxModule {}\n","import { Type } from '@angular/core';\n\nexport function isClass<T>(value: any): value is Type<T> {\n return (\n typeof value === 'function' &&\n value.prototype &&\n value.prototype.constructor === value\n );\n}\n","import {\n Injectable,\n LOCALE_ID,\n Type,\n inject,\n makeEnvironmentProviders,\n} from '@angular/core';\nimport { isClass } from '../utils/class-checker';\n\nexport function GA_DATEPICKER_I18N_FACTORY() {\n return new GaDatepickerI18nDefault();\n}\n\nexport interface IGaDatepickerI18n {\n previousLabel: string;\n nextLabel: string;\n selectMonthLabel: string;\n selectYearLabel: string;\n openCalendarLabel: string;\n todayButtonLabel: string;\n\n monthNames?: string[];\n monthNamesShort?: string[];\n weekDays?: string[];\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_DATEPICKER_I18N_FACTORY,\n})\nexport abstract class GaDatepickerI18n implements IGaDatepickerI18n {\n abstract previousLabel: string;\n abstract nextLabel: string;\n abstract selectMonthLabel: string;\n abstract selectYearLabel: string;\n abstract openCalendarLabel: string;\n abstract todayButtonLabel: string;\n abstract monthNames: string[];\n abstract monthNamesShort: string[];\n abstract weekDays: string[];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class GaDatepickerI18nDefault extends GaDatepickerI18n {\n private readonly localeId = inject(LOCALE_ID);\n\n selectMonthLabel = 'Select month';\n selectYearLabel = 'Select year';\n previousLabel = 'Previous';\n nextLabel = 'Next';\n openCalendarLabel = 'Open calendar';\n todayButtonLabel = 'Today';\n\n monthNames: string[];\n monthNamesShort: string[];\n weekDays: string[];\n\n constructor() {\n super();\n\n // Generate month names using Intl API\n const monthFormatter = new Intl.DateTimeFormat(this.localeId, {\n month: 'long',\n });\n const monthShortFormatter = new Intl.DateTimeFormat(this.localeId, {\n month: 'short',\n });\n\n this.monthNames = Array.from({ length: 12 }, (_, i) => {\n const date = new Date(2024, i, 1);\n return monthFormatter.format(date);\n });\n\n this.monthNamesShort = Array.from({ length: 12 }, (_, i) => {\n const date = new Date(2024, i, 1);\n return monthShortFormatter.format(date);\n });\n\n // Generate weekday names using Intl API (starting from Monday)\n const weekdayFormatter = new Intl.DateTimeFormat(this.localeId, {\n weekday: 'short',\n });\n const weekDayDates = Array.from({ length: 7 }, (_, i) => {\n // January 2024 starts on Monday, so we can use dates 1-7\n return new Date(2024, 0, i + 1);\n });\n\n this.weekDays = weekDayDates.map((date) => {\n return weekdayFormatter.format(date);\n });\n }\n}\n\nexport function provideGaDatepickerI18n(\n value: IGaDatepickerI18n | Type<GaDatepickerI18n> | (() => IGaDatepickerI18n),\n) {\n if (isClass(value)) {\n return makeEnvironmentProviders([\n { provide: GaDatepickerI18n, useClass: value },\n ]);\n }\n return makeEnvironmentProviders([\n {\n provide: GaDatepickerI18n,\n useFactory: () => {\n const defaultI18n = inject(GaDatepickerI18nDefault);\n const i18n: Required<IGaDatepickerI18n> = {\n monthNames: defaultI18n.monthNames,\n monthNamesShort: defaultI18n.monthNamesShort,\n weekDays: defaultI18n.weekDays,\n ...(typeof value === 'function' ? value() : value),\n };\n return i18n;\n },\n },\n ]);\n}\n","import { Injectable, Provider, Type } from '@angular/core';\n\nexport interface GaDatepickerStruct {\n year: number;\n month: number; // 1-12 (January = 1, December = 12)\n day: number;\n}\n\nexport function GA_DATEPICKER_VALUE_ADAPTER_FACTORY() {\n return new GaDatepickerStructValueAdapter();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_DATEPICKER_VALUE_ADAPTER_FACTORY,\n})\nexport abstract class GaDatepickerValueAdapter<T = any> {\n /**\n * Converts the external value to internal struct representation\n */\n abstract toStruct(value: T | null): GaDatepickerStruct | null;\n\n /**\n * Converts the internal struct to external value representation\n */\n abstract fromStruct(struct: GaDatepickerStruct | null): T | null;\n}\n\n@Injectable()\nexport class GaDatepickerStructValueAdapter extends GaDatepickerValueAdapter<GaDatepickerStruct> {\n /**\n * Checks if a value is a valid GaDatepickerStruct\n */\n protected isStruct(value: any): value is GaDatepickerStruct {\n return (\n value &&\n typeof value === 'object' &&\n typeof value.year === 'number' &&\n typeof value.month === 'number' &&\n typeof value.day === 'number'\n );\n }\n\n /**\n * Handles GaDatepickerStruct natively - pass through as-is\n */\n toStruct(value: GaDatepickerStruct | null): GaDatepickerStruct | null {\n if (!value) return null;\n if (this.isStruct(value)) return value;\n return null; // Invalid input\n }\n\n /**\n * Returns struct as-is (no conversion needed)\n */\n fromStruct(struct: GaDatepickerStruct | null): GaDatepickerStruct | null {\n return struct;\n }\n}\n\nexport function provideGaDatepickerValueAdapter<T = any>(\n value: Type<GaDatepickerValueAdapter<T>>,\n): Provider {\n return { provide: GaDatepickerValueAdapter, useClass: value };\n}\n\n/**\n * Compares two structs for equality\n */\nexport function compareStructs(\n structA: GaDatepickerStruct | null,\n structB: GaDatepickerStruct | null,\n): -1 | 0 | 1 {\n if (!structA && !structB) return 0;\n if (!structA) return -1;\n if (!structB) return 1;\n const dateA = new Date(\n Date.UTC(structA.year, structA.month - 1, structA.day),\n );\n const dateB = new Date(\n Date.UTC(structB.year, structB.month - 1, structB.day),\n );\n return dateA.getTime() - dateB.getTime() < 0\n ? -1\n : dateA.getTime() - dateB.getTime() > 0\n ? 1\n : 0;\n}\n","import {\n Component,\n computed,\n inject,\n input,\n model,\n OnInit,\n signal,\n} from '@angular/core';\nimport { GaIconModule } from '../icon/icon.module';\nimport { GaDatepickerI18n } from './datepicker-i18n.service';\n\ninterface GaDatepickerViewStruct {\n year: number;\n month: number;\n}\nimport {\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ChevronUp,\n} from 'lucide-angular';\nimport {\n compareStructs,\n GaDatepickerStruct,\n GaDatepickerValueAdapter,\n} from './adapters/date-struct-adapter';\n\ntype ViewMode = 'day' | 'month' | 'year';\n\n@Component({\n selector: 'ga-datepicker',\n templateUrl: './datepicker.component.html',\n styles: `\n :host {\n display: block;\n }\n `,\n imports: [GaIconModule],\n host: {\n class: 'ga-calendar',\n },\n})\nexport class GaDatepickerComponent implements OnInit {\n protected readonly i18n = inject(GaDatepickerI18n);\n protected readonly valueAdapter = inject(GaDatepickerValueAdapter);\n protected readonly icons = {\n ChevronLeft,\n ChevronRight,\n ChevronUp,\n ChevronDown,\n };\n\n readonly value = model<any | null>(null);\n readonly min = input<any | null>(null);\n readonly max = input<any | null>(null);\n\n // Internal struct representation\n protected readonly internalValue = computed(() => {\n return this.valueAdapter.toStruct(this.value());\n });\n\n protected readonly internalMinDate = computed(() => {\n return this.valueAdapter.toStruct(this.min());\n });\n\n protected readonly internalMaxDate = computed(() => {\n return this.valueAdapter.toStruct(this.max());\n });\n\n protected readonly viewMode = signal<ViewMode>('day');\n protected readonly viewDate = signal<GaDatepickerViewStruct>(\n this.getInitialViewDate(),\n );\n\n ngOnInit() {\n // Initialize view date based on the initial value or today's date\n this.viewDate.set(this.getInitialViewDate());\n }\n\n private getInitialViewDate(): GaDatepickerViewStruct {\n // Try to use the initial value if available\n const initialValue = this.valueAdapter.toStruct(this.value());\n if (initialValue) {\n return {\n year: initialValue.year,\n month: initialValue.month,\n };\n }\n\n // Fallback to today's date, but respect min/max constraints\n const today = new Date();\n const todayStruct: GaDatepickerStruct = {\n year: today.getFullYear(),\n month: today.getMonth() + 1, // Convert from 0-11 to 1-12\n day: today.getDate(),\n };\n\n const minStruct = this.valueAdapter.toStruct(this.min());\n const maxStruct = this.valueAdapter.toStruct(this.max());\n\n let targetDate = todayStruct;\n\n // If today is before min date, use min date\n if (minStruct) {\n const todayValue =\n todayStruct.year * 10000 + todayStruct.month * 100 + todayStruct.day;\n const minValue =\n minStruct.year * 10000 + minStruct.month * 100 + minStruct.day;\n if (todayValue < minValue) {\n targetDate = minStruct;\n }\n }\n\n // If today is after max date, use max date\n if (maxStruct) {\n const todayValue =\n todayStruct.year * 10000 + todayStruct.month * 100 + todayStruct.day;\n const maxValue =\n maxStruct.year * 10000 + maxStruct.month * 100 + maxStruct.day;\n if (todayValue > maxValue) {\n targetDate = maxStruct;\n }\n }\n\n return {\n year: targetDate.year,\n month: targetDate.month,\n };\n }\n\n protected readonly weekDays = computed(() => this.i18n.weekDays);\n\n protected readonly calendarDays = computed(() => {\n const viewStruct = this.viewDate();\n const year = viewStruct.year;\n const month = viewStruct.month;\n\n const firstDay = new Date(year, month - 1, 1); // Convert from 1-12 to 0-11\n const lastDay = new Date(year, month, 0); // month is already 1-12, so this gives us last day of month-1\n const startDate = new Date(firstDay);\n const startDayOfWeek = (firstDay.getDay() + 6) % 7;\n startDate.setDate(startDate.getDate() - startDayOfWeek);\n\n const days: GaDatepickerStruct[] = [];\n const current = new Date(startDate);\n\n while (current <= lastDay || days.length % 7 !== 0) {\n days.push({\n year: current.getFullYear(),\n month: current.getMonth() + 1, // Convert from 0-11 to 1-12\n day: current.getDate(),\n });\n current.setDate(current.getDate() + 1);\n }\n\n return days;\n });\n\n protected readonly months = computed(() => {\n return Array.from({ length: 12 }, (_, i) => ({\n index: i + 1, // Use 1-12 indexing\n name: this.i18n.monthNames[i],\n shortName: this.i18n.monthNamesShort[i],\n }));\n });\n\n protected readonly years = computed(() => {\n const currentYear = this.viewDate().year;\n const startYear = Math.floor(currentYear / 10) * 10;\n return Array.from({ length: 25 }, (_, i) => startYear + i - 1);\n });\n\n protected selectDate(dateStruct: GaDatepickerStruct) {\n if (this.isDateDisabled(dateStruct) || this.isSelected(dateStruct)) {\n return;\n }\n const externalValue = this.valueAdapter.fromStruct(dateStruct);\n this.value.set(externalValue);\n }\n\n protected selectMonth(monthIndex: number) {\n const currentView = this.viewDate();\n const newView: GaDatepickerViewStruct = {\n year: currentView.year,\n month: monthIndex, // monthIndex is already 1-12 from months array\n };\n this.viewDate.set(newView);\n this.viewMode.set('day');\n }\n\n protected selectYear(year: number) {\n const currentView = this.viewDate();\n const newView: GaDatepickerViewStruct = {\n year,\n month: currentView.month,\n };\n this.viewDate.set(newView);\n this.viewMode.set('month');\n }\n\n protected navigatePrevious() {\n const currentView = this.viewDate();\n let newView: GaDatepickerViewStruct;\n\n switch (this.viewMode()) {\n case 'day': {\n const prevMonth = currentView.month === 1 ? 12 : currentView.month - 1; // Handle 1-12 indexing\n const prevYear =\n currentView.month === 1 ? currentView.year - 1 : currentView.year;\n newView = {\n year: prevYear,\n month: prevMonth,\n };\n break;\n }\n case 'month':\n newView = {\n year: currentView.year - 1,\n month: currentView.month,\n };\n break;\n case 'year':\n newView = {\n year: currentView.year - 10,\n month: currentView.month,\n };\n break;\n }\n\n this.viewDate.set(newView);\n }\n\n protected navigateNext() {\n const currentView = this.viewDate();\n let newView: GaDatepickerViewStruct;\n\n switch (this.viewMode()) {\n case 'day': {\n const nextMonth = currentView.month === 12 ? 1 : currentView.month + 1; // Handle 1-12 indexing\n const nextYear =\n currentView.month === 12 ? currentView.year + 1 : currentView.year;\n newView = {\n year: nextYear,\n month: nextMonth,\n };\n break;\n }\n case 'month':\n newView = {\n year: currentView.year + 1,\n month: currentView.month,\n };\n break;\n case 'year':\n newView = {\n year: currentView.year + 10,\n month: currentView.month,\n };\n break;\n }\n\n this.viewDate.set(newView);\n }\n\n protected toggleMonthView() {\n this.viewMode.set(this.viewMode() === 'month' ? 'day' : 'month');\n }\n\n protected toggleYearView() {\n this.viewMode.set(this.viewMode() === 'year' ? 'day' : 'year');\n }\n\n protected isToday(dateStruct: GaDatepickerStruct): boolean {\n const today = new Date();\n const todayStruct: GaDatepickerStruct = {\n year: today.getFullYear(),\n month: today.getMonth() + 1, // Convert from 0-11 to 1-12\n day: today.getDate(),\n };\n return compareStructs(dateStruct, todayStruct) === 0;\n }\n\n protected isSelected(dateStruct: GaDatepickerStruct): boolean {\n const selectedStruct = this.internalValue();\n return compareStructs(dateStruct, selectedStruct) === 0;\n }\n\n protected isCurrentMonth(dateStruct: GaDatepickerStruct): boolean {\n return dateStruct.month === this.viewDate().month;\n }\n\n protected isWeekend(dateStruct: GaDatepickerStruct): boolean {\n // Convert struct to Date to get day of week (convert month from 1-12 to 0-11)\n const date = new Date(\n dateStruct.year,\n dateStruct.month - 1,\n dateStruct.day,\n );\n const day = date.getDay();\n return day === 0 || day === 6;\n }\n\n protected isDateDisabled(dateStruct: GaDatepickerStruct): boolean {\n const minStruct = this.internalMinDate();\n const maxStruct = this.internalMaxDate();\n\n if (minStruct) {\n const dateValue =\n dateStruct.year * 10000 + dateStruct.month * 100 + dateStruct.day;\n const minValue =\n minStruct.year * 10000 + minStruct.month * 100 + minStruct.day;\n if (dateValue < minValue) {\n return true;\n }\n }\n\n if (maxStruct) {\n const dateValue =\n dateStruct.year * 10000 + dateStruct.month * 100 + dateStruct.day;\n const maxValue =\n maxStruct.year * 10000 + maxStruct.month * 100 + maxStruct.day;\n if (dateValue > maxValue) {\n return true;\n }\n }\n\n return false;\n }\n\n protected isMonthDisabled(monthIndex: number): boolean {\n const minStruct = this.internalMinDate();\n const maxStruct = this.internalMaxDate();\n const year = this.viewDate().year;\n\n if (minStruct) {\n if (\n year < minStruct.year ||\n (year === minStruct.year && monthIndex < minStruct.month)\n ) {\n return true;\n }\n }\n\n if (maxStruct) {\n if (\n year > maxStruct.year ||\n (year === maxStruct.year && monthIndex > maxStruct.month)\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n protected isYearDisabled(year: number): boolean {\n const minStruct = this.internalMinDate();\n const maxStruct = this.internalMaxDate();\n\n if (minStruct && year < minStruct.year) {\n return true;\n }\n\n if (maxStruct && year > maxStruct.year) {\n return true;\n }\n\n return false;\n }\n\n protected isSelectedMonth(monthIndex: number): boolean {\n const selectedStruct = this.internalValue();\n if (!selectedStruct) return false;\n\n return (\n selectedStruct.month === monthIndex &&\n selectedStruct.year === this.viewDate().year\n );\n }\n\n protected isSelectedYear(year: number): boolean {\n const selectedStruct = this.internalValue();\n return selectedStruct ? selectedStruct.year === year : false;\n }\n\n protected getMonthName(monthIndex: number): string {\n return this.i18n.monthNames[monthIndex - 1]; // Convert from 1-12 to 0-11 for array access\n }\n}\n","<div class=\"ga-calendar__header\">\n <div class=\"ga-calendar__month-year\">\n <button\n type=\"button\"\n class=\"ga-calendar__month-year-button\"\n (click)=\"toggleMonthView()\"\n [attr.aria-label]=\"i18n.selectMonthLabel\"\n >\n {{ getMonthName(viewDate().month) }}\n <ga-icon\n [icon]=\"viewMode() === 'month' ? icons.ChevronUp : icons.ChevronDown\"\n size=\"16\"\n />\n </button>\n <button\n type=\"button\"\n class=\"ga-calendar__month-year-button\"\n (click)=\"toggleYearView()\"\n [attr.aria-label]=\"i18n.selectYearLabel\"\n >\n {{ viewDate().year }}\n <ga-icon\n [icon]=\"viewMode() === 'year' ? icons.ChevronUp : icons.ChevronDown\"\n size=\"16\"\n />\n </button>\n </div>\n @if (viewMode() !== 'month') {\n <div class=\"ga-calendar__navigation\">\n <button\n type=\"button\"\n class=\"ga-calendar__navigation-button\"\n (click)=\"navigatePrevious()\"\n [attr.aria-label]=\"i18n.previousLabel\"\n >\n <ga-icon [icon]=\"icons.ChevronLeft\" size=\"24\" />\n </button>\n <button\n type=\"button\"\n class=\"ga-calendar__navigation-button\"\n (click)=\"navigateNext()\"\n [attr.aria-label]=\"i18n.nextLabel\"\n >\n <ga-icon [icon]=\"icons.ChevronRight\" size=\"24\" />\n </button>\n </div>\n }\n</div>\n\n@switch (viewMode()) {\n @case ('day') {\n <div class=\"ga-calendar__weekdays\">\n @for (day of weekDays(); track day) {\n <div class=\"ga-calendar__weekday\">{{ day }}</div>\n }\n </div>\n <div class=\"ga-calendar__selection ga-calendar__selection--day\">\n @for (\n dateStruct of calendarDays();\n track dateStruct.year + '-' + dateStruct.month + '-' + dateStruct.day\n ) {\n <button\n type=\"button\"\n class=\"ga-calendar__day\"\n [class.ga-calendar__day--selected]=\"isSelected(dateStruct)\"\n [class.ga-calendar__day--current]=\"isToday(dateStruct)\"\n [class.ga-calendar__day--disabled]=\"isDateDisabled(dateStruct)\"\n [class.ga-calendar__day--weekend]=\"isWeekend(dateStruct)\"\n [disabled]=\"isDateDisabled(dateStruct)\"\n (click)=\"selectDate(dateStruct)\"\n >\n {{ dateStruct.day }}\n </button>\n }\n </div>\n }\n @case ('month') {\n <div class=\"ga-calendar__selection ga-calendar__selection--month\">\n @for (month of months(); track month.index) {\n <button\n type=\"button\"\n class=\"ga-calendar__month\"\n [class.ga-calendar__month--selected]=\"isSelectedMonth(month.index)\"\n [class.ga-calendar__month--disabled]=\"isMonthDisabled(month.index)\"\n [disabled]=\"isMonthDisabled(month.index)\"\n (click)=\"selectMonth(month.index)\"\n >\n {{ month.shortName }}\n </button>\n }\n </div>\n }\n @case ('year') {\n <div class=\"ga-calendar__selection ga-calendar__selection--year\">\n @for (year of years(); track year) {\n <button\n type=\"button\"\n class=\"ga-calendar__year\"\n [class.ga-calendar__year--selected]=\"isSelectedYear(year)\"\n [class.ga-calendar__year--disabled]=\"isYearDisabled(year)\"\n [disabled]=\"isYearDisabled(year)\"\n (click)=\"selectYear(year)\"\n >\n {{ year }}\n </button>\n }\n </div>\n }\n}\n","import { Injectable, signal } from '@angular/core';\nimport type { GaFormControlDirective } from './form-control.directive';\n\n/**\n * @internal - Internal service for form field coordination\n */\n@Injectable()\nexport class GaFormFieldConnector {\n readonly controlDisabled = signal(false);\n readonly controlId = signal<string | null>(null);\n readonly labelId = signal<string | null>(null);\n readonly control = signal<GaFormControlDirective | null>(null);\n}\n","import {\n Attribute,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n} from '@angular/core';\nimport { GaInputComponent } from './input.component';\nimport { injectNgControlState } from '../utils/error-state';\nimport { GaFormFieldConnector } from '../form-field/form-field-connector';\n\nlet nextUniqueId = 0;\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[gaInput]',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id()',\n '[class.ga-input]': '!hasWrapper',\n '[class.ga-input--invalid]': '!hasWrapper && invalid()',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n },\n})\nexport class GaInputDirective {\n readonly uniqueId = `ga-input-${++nextUniqueId}`;\n\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n protected readonly hasWrapper = inject(GaInputComponent, { optional: true });\n private readonly renderer = inject(Renderer2);\n private readonly elementRef =\n inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n private readonly implicitNgControlState = injectNgControlState();\n\n readonly invalidInput = input(null, {\n alias: 'invalid',\n transform: booleanAttribute,\n });\n readonly idInput = input<string>(undefined, { alias: 'id' });\n readonly disabledInput = input(undefined, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n\n readonly invalid = computed(() => {\n return this.invalidInput() ?? this.implicitNgControlState.inError();\n });\n readonly id = computed(() => {\n return this.idInput() ?? this.uniqueId;\n });\n readonly disabled = computed(() => {\n return this.disabledInput() ?? this.implicitNgControlState.disabled();\n });\n\n constructor(@Attribute('placeholder') placeholder?: string) {\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() => formFieldConnector.controlDisabled.set(this.disabled()));\n effect(() => formFieldConnector.controlId.set(this.id()));\n }\n\n if (!placeholder) {\n // a workaround till https://github.com/visma-software-nordic/gaia-styles/issues/108 is fixed\n this.renderer.setAttribute(\n this.elementRef.nativeElement,\n 'placeholder',\n '',\n );\n }\n }\n\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n} from '@angular/core';\nimport { GaInputDirective } from './input.directive';\nimport { CdkOverlayOrigin } from '@angular/cdk/overlay';\n\n@Component({\n selector: 'ga-input',\n template: `<ng-content />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [CdkOverlayOrigin],\n host: {\n class: 'ga-input',\n '[class.ga-input--invalid]': 'gaInput().invalid()',\n '(click)': 'gaInput().focus()',\n },\n})\nexport class GaInputComponent {\n protected readonly gaInput = contentChild.required(GaInputDirective);\n}\n","import {\n Component,\n inject,\n Injector,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { GaIconModule } from '../icon/icon.module';\nimport { GaButtonModule } from '../button/button.module';\nimport {\n CdkOverlayOrigin,\n ConnectedPosition,\n createRepositionScrollStrategy,\n OverlayModule,\n} from '@angular/cdk/overlay';\nimport { GaDatepickerComponent } from './datepicker.component';\nimport { CalendarDays } from 'lucide-angular';\nimport { GaInputComponent } from '../input/input.component';\nimport { GaDatepickerInputDirective } from './datepicker-input.directive';\nimport { GaDatepickerI18n } from './datepicker-i18n.service';\nimport { GaDatepickerValueAdapter } from './adapters/date-struct-adapter';\n\n@Component({\n selector: 'ga-datepicker-toggle',\n templateUrl: './datepicker-toggle.component.html',\n imports: [GaIconModule, GaButtonModule, OverlayModule, GaDatepickerComponent],\n styles: `\n .ga-datepicker__footer {\n text-align: center;\n }\n `,\n encapsulation: ViewEncapsulation.None,\n host: {\n '(keydown.escape)': 'close()',\n },\n})\nexport class GaDatepickerToggleComponent {\n protected readonly icons = { CalendarDays };\n\n protected readonly i18n = inject(GaDatepickerI18n);\n protected readonly gaInput = inject(GaInputComponent);\n protected readonly valueAdapter = inject(GaDatepickerValueAdapter);\n private readonly injector = inject(Injector);\n protected readonly overlayOrigin = inject(CdkOverlayOrigin);\n protected readonly repositionScrollStrategy = createRepositionScrollStrategy(\n this.injector,\n );\n\n protected readonly positions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8,\n },\n ];\n\n private readonly _isOpen = signal(false);\n readonly isOpen = this._isOpen.asReadonly();\n\n readonly for = input.required<GaDatepickerInputDirective>();\n\n toggle() {\n if (this._isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open() {\n if (this.for().disabled() || this._isOpen()) {\n return;\n }\n this._isOpen.set(true);\n }\n\n close() {\n if (!this._isOpen()) {\n return;\n }\n this._isOpen.set(false);\n }\n\n protected onDatepickerValueChange(value: any | null) {\n this.for().updateValue(value, { updateView: true, emitToNgModel: true });\n if (value) {\n this.close();\n }\n }\n\n protected setToday() {\n const today = new Date();\n const todayStruct = {\n year: today.getFullYear(),\n month: today.getMonth() + 1,\n day: today.getDate(),\n };\n const todayValue = this.valueAdapter.fromStruct(todayStruct);\n this.for().updateValue(todayValue, {\n updateView: true,\n emitToNgModel: true,\n });\n this.close();\n }\n}\n","<button\n type=\"button\"\n class=\"ga-datepicker-toggle\"\n [disabled]=\"for().disabled()\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"true\"\n [attr.aria-label]=\"i18n.openCalendarLabel\"\n tabindex=\"-1\"\n>\n <ga-icon [icon]=\"icons.CalendarDays\" size=\"24\" />\n</button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"repositionScrollStrategy\"\n (overlayOutsideClick)=\"close()\"\n (overlayKeydown)=\"$event.code === 'Escape' && close()\"\n>\n <div class=\"ga-datepicker\">\n <ga-datepicker\n [value]=\"for().value()\"\n (valueChange)=\"onDatepickerValueChange($event)\"\n [min]=\"for().min()\"\n [max]=\"for().max()\"\n />\n <div class=\"ga-datepicker__footer\">\n <button type=\"button\" gaButton (click)=\"setToday()\">\n {{ i18n.todayButtonLabel }}\n </button>\n </div>\n </div>\n</ng-template>\n","import {\n LOCALE_ID,\n Injectable,\n inject,\n InjectionToken,\n Provider,\n Type,\n} from '@angular/core';\nimport { GaDatepickerStruct } from './adapters/date-struct-adapter';\nimport { isClass } from '../utils/class-checker';\n\nexport function GA_DATEPICKER_PARSER_FORMATTER_FACTORY() {\n return new GaDatepickerParserFormatterDefault();\n}\n\n/**\n * Converts between the internal `GaDatepickerStruct` model presentation and a `string` that is displayed in the input element.\n */\n@Injectable({\n providedIn: 'root',\n useFactory: GA_DATEPICKER_PARSER_FORMATTER_FACTORY,\n})\nexport abstract class GaDatepickerParserFormatter {\n /**\n * When user types something in the input this method attempts to parse it into a `GaDatepickerStruct` object.\n * `null` must be returned if the value can't be parsed.\n */\n abstract parse(value: string): GaDatepickerStruct | null;\n\n /**\n * When users enters a valid date (either via keyboard or mouse click) this method reformats it into a preferred format.\n * An empty string must be returned if the given date is `null`.\n */\n abstract format(date: GaDatepickerStruct | null): string;\n}\n\nexport type GaDatepickerFormats = Record<\n string,\n { input: string[]; output: string }\n>;\n\nexport const GA_DEFAULT_DATEPICKER_FORMATS: GaDatepickerFormats = {\n 'en-US': {\n input: [\n 'yyyy-MM-dd',\n 'M d yy',\n 'M d yyyy',\n 'M/d/yy',\n 'M/d/yyyy',\n 'M.d.yy',\n 'M.d.yyyy',\n 'M-d-yy',\n 'M-d-yyyy',\n ],\n output: 'MM/dd/yyyy',\n },\n 'en-GB': {\n input: [\n 'yyyy-MM-dd',\n 'd M yy',\n 'd M yyyy',\n 'd/M/yy',\n 'd/M/yyyy',\n 'd.M.yy',\n 'd.M.yyyy',\n 'd-M-yy',\n 'd-M-yyyy',\n ],\n output: 'dd/MM/yyyy',\n },\n 'da-dK': {\n input: [\n 'yyyy-MM-dd',\n 'd M yyyy',\n 'd M yy',\n 'd.M.yy',\n 'd.M.yyyy',\n 'd/M/yy',\n 'd/M/yyyy',\n 'd-M-yy',\n 'd-M-yyyy',\n ],\n output: 'dd.MM.yyyy',\n },\n 'fi-FI': {\n input: [\n 'yyyy-MM-dd',\n 'd M yy',\n 'd M yyyy',\n 'd.M.yy',\n 'd.M.yyyy',\n 'd/M/yy',\n 'd/M/yyyy',\n 'd-M-yy',\n 'd-M-yyyy',\n ],\n output: 'dd.MM.yyyy',\n },\n 'nb-NO': {\n input: [\n 'yyyy-MM-dd',\n 'd M yy',\n 'd M yyyy',\n 'd.M.yy',\n 'd.M.yyyy',\n 'd/M/yy',\n 'd/M/yyyy',\n 'd-M-yy',\n 'd-M-yyyy',\n ],\n output: 'dd.MM.yyyy',\n },\n 'nn-NO': {\n input: [\n 'yyyy-MM-dd',\n 'd M yy',\n 'd M yyyy',\n 'd.M.yy',\n 'd.M.yyyy',\n 'd/M/yy',\n 'd/M/yyyy',\n 'd-M-yy',\n 'd-M-yyyy',\n ],\n output: 'dd.MM.yyyy',\n },\n 'sv-SE': {\n input: [\n 'yyyy-MM-dd',\n 'yy M d',\n 'yyyy M d',\n 'yy-M-d',\n 'yyyy-M-d',\n 'yy/M/d',\n 'yyyy/M/d',\n 'yy.M.d',\n 'yyyy.M.d',\n 'yyMMdd',\n 'yyyyMMdd',\n ],\n output: 'yyyy-MM-dd',\n },\n};\n\nexport const GA_DATE_PARSER_FORMATTER_CONFIG = new InjectionToken(\n 'GA_DATE_PARSER_FORMATTER_CONFIG',\n { providedIn: 'root', factory: () => GA_DEFAULT_DATEPICKER_FORMATS },\n);\n\nexport function extendGaDateParserFormatter(\n formats: GaDatepickerFormats,\n): Provider {\n return {\n provide: GA_DATE_PARSER_FORMATTER_CONFIG,\n useValue: { ...GA_DEFAULT_DATEPICKER_FORMATS, ...formats },\n };\n}\n\n@Injectable()\nexport class GaDatepickerParserFormatterDefault extends GaDatepickerParserFormatter {\n /** @ignore */\n private readonly locale = inject(LOCALE_ID);\n /** @ignore */\n private readonly formats = inject(GA_DATE_PARSER_FORMATTER_CONFIG);\n\n parse(value: string): GaDatepickerStruct | null {\n if (!value || typeof value !== 'string') {\n return null;\n }\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return null;\n }\n\n let config = this.formats[this.locale];\n\n if (!config) {\n this.printUnknownLocaleWarning();\n config = GA_DEFAULT_DATEPICKER_FORMATS['en-GB'];\n }\n\n for (const format of config.input) {\n const regexp = this.dateFormatToRegexp(format);\n\n const match = trimmedValue.match(regexp);\n if (match) {\n const yearIndex = format.indexOf('y');\n const monthIndex = format.indexOf('M');\n const dayIndex = format.indexOf('d');\n const sortedIndexes = [yearIndex, monthIndex, dayIndex].sort();\n const yearGroup = sortedIndexes.indexOf(yearIndex) + 1;\n const monthGroup = sortedIndexes.indexOf(monthIndex) + 1;\n const dayGroup = sortedIndexes.indexOf(dayIndex) + 1;\n const year = this.addYearPadding(+match[yearGroup]);\n const month = +match[monthGroup];\n const day = +match[dayGroup];\n\n if (month <= 0 || month > 12) {\n // invalid month\n return null;\n }\n\n const daysInMonth = new Date(year, month, 0).getDate();\n if (day <= 0 || day > daysInMonth) {\n // invalid day\n return null;\n }\n\n return { year, month, day };\n }\n }\n return null;\n }\n\n format(date: GaDatepickerStruct): string {\n if (!date) {\n return '';\n }\n let format = this.formats[this.locale];\n if (!format) {\n this.printUnknownLocaleWarning();\n format = GA_DEFAULT_DATEPICKER_FORMATS['en-GB'];\n }\n return this.formatDate(date, format.output);\n }\n\n private formatDate(date: GaDatepickerStruct, format: string): string {\n const year = date.year.toString();\n const month = date.month.toString().padStart(2, '0');\n const day = date.day.toString().padStart(2, '0');\n\n return format\n .replace(/yyyy/g, year)\n .replace(/MM/g, month)\n .replace(/dd/g, day);\n }\n\n private dateFormatToRegexp(format: string) {\n const pattern =\n '^' +\n format\n // / to \\/\n .replace(/\\//g, '\\\\/')\n // . to \\.\n .replace(/\\./g, '\\\\.')\n .replace(/(d+)/, '(\\\\d{1,2})')\n .replace(/(yyyy)/, '(\\\\d{4})')\n .replace(/(yy)/, '(\\\\d{2})')\n .replace(/(M+)/, '(\\\\d{1,2})') +\n '$';\n return new RegExp(pattern);\n }\n\n private addYearPadding(year: number) {\n if (year < 100) {\n return 2000 + year;\n }\n return year;\n }\n\n private printUnknownLocaleWarning() {\n console.warn(\n `Default datepicker parser-formatter does not have predefined formats for \"${this.locale}\" locale. Please provide custom 'GaDatepickerParserFormatter' class. Now defaults to \"en-GB\".`,\n );\n }\n}\n\nexport function provideGaDatepickerParserFormatter(\n value:\n | Type<GaDatepickerParserFormatter>\n | (() => GaDatepickerParserFormatter),\n): Provider {\n if (isClass(value)) {\n return { provide: GaDatepickerParserFormatter, useClass: value };\n }\n return typeof value === 'function'\n ? { provide: GaDatepickerParserFormatter, useFactory: value }\n : { provide: GaDatepickerParserFormatter, useValue: value };\n}\n","import {\n Directive,\n ElementRef,\n inject,\n input,\n output,\n computed,\n linkedSignal,\n booleanAttribute,\n forwardRef,\n effect,\n untracked,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { GaDatepickerParserFormatter } from './datepicker-parser-formatter.service';\nimport {\n compareStructs,\n GaDatepickerStruct,\n GaDatepickerValueAdapter,\n} from './adapters/date-struct-adapter';\n\n@Directive({\n selector: 'input[gaDatepickerInput]',\n exportAs: 'gaDatepickerInput',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaDatepickerInputDirective),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => GaDatepickerInputDirective),\n multi: true,\n },\n ],\n host: {\n '[disabled]': 'disabled()',\n '(blur)': 'onBlur()',\n '(input)': 'onInput($event)',\n },\n})\nexport class GaDatepickerInputDirective\n implements ControlValueAccessor, Validator\n{\n private readonly inputElRef = inject<ElementRef<HTMLInputElement>>(\n ElementRef,\n { self: true },\n );\n\n private readonly parserFormatter = inject(GaDatepickerParserFormatter);\n private readonly valueAdapter = inject(GaDatepickerValueAdapter);\n\n // Native value control (alternative to Angular forms)\n readonly valueInput = input<any>(null, { alias: 'value' });\n readonly disabledInput = input(null, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly min = input<any | null>(null);\n readonly max = input<any | null>(null);\n readonly dateInput = output<any>();\n readonly dateChange = output<any>();\n\n readonly value = linkedSignal<any>(() => this.valueInput());\n readonly dateStruct = computed(() =>\n this.valueAdapter.toStruct(this.value()),\n );\n readonly disabled = linkedSignal<boolean>(() => !!this.disabledInput());\n\n private readonly lastValueValid = signal(false);\n private readonly lastDateChangeEmittedValue =\n signal<GaDatepickerStruct | null>(null);\n\n private onNgChangeFn?: (value: GaDatepickerStruct | null) => void;\n private onNgTouchedFn?: () => void;\n\n constructor() {\n effect(() => {\n this.valueInput(); // explicit call to track value input changes\n this.lastValueValid.set(true);\n untracked(() => {\n this.lastDateChangeEmittedValue.set(this.dateStruct());\n this.formatValue();\n });\n });\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n\n // Parse the input value\n const parsedStruct = this.parserFormatter.parse(target.value);\n const newValue = this.valueAdapter.fromStruct(parsedStruct);\n\n this.lastValueValid.set(!target.value || parsedStruct !== null);\n\n // Only update if the parsed value is different from current value\n if (compareStructs(parsedStruct, this.dateStruct()) !== 0) {\n this.value.set(newValue);\n this.dateInput.emit(newValue);\n }\n this.onNgChangeFn?.(newValue);\n }\n\n onBlur(): void {\n if (this.dateStruct()) {\n this.formatValue();\n }\n\n if (\n compareStructs(this.dateStruct(), this.lastDateChangeEmittedValue()) !== 0\n ) {\n this.dateChange.emit(this.value());\n this.lastDateChangeEmittedValue.set(this.dateStruct());\n }\n\n this.onNgTouchedFn?.();\n }\n\n formatValue(): void {\n const value = this.dateStruct();\n const formattedValue = this.parserFormatter.format(value);\n this.inputElRef.nativeElement.value = formattedValue;\n }\n\n updateValue(\n value: any | null,\n {\n updateView,\n emitToNgModel,\n }: { updateView?: boolean; emitToNgModel?: boolean } = {},\n ): void {\n this.value.set(value);\n this.lastValueValid.set(true);\n this.lastDateChangeEmittedValue.set(this.dateStruct());\n if (updateView) {\n this.formatValue();\n }\n if (emitToNgModel) {\n this.onNgChangeFn?.(value);\n // NOTE: ngTouched must be called after ngChange to work with `updateOn: 'blur'` strategy\n this.onNgTouchedFn?.();\n this.dateInput.emit(value);\n this.dateChange.emit(value);\n }\n }\n\n // ControlValueAccessor implementation\n writeValue(value: any | null): void {\n this.updateValue(value, { updateView: true });\n }\n\n registerOnChange(fn: (value: GaDatepickerStruct | null) => void): void {\n this.onNgChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onNgTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n const { value } = control;\n\n if (!this.lastValueValid()) {\n return { dateFormat: { actual: this.inputElRef.nativeElement.value } };\n }\n\n if (value === null) {\n return null;\n }\n\n const valueStruct = this.valueAdapter.toStruct(value);\n\n if (this.min()) {\n const minDateStruct = this.valueAdapter.toStruct(this.min());\n if (minDateStruct && compareStructs(valueStruct, minDateStruct) === -1) {\n return { minDate: { actual: value, min: this.min() } };\n }\n }\n\n if (this.max()) {\n const maxDateStruct = this.valueAdapter.toStruct(this.max());\n if (maxDateStruct && compareStructs(valueStruct, maxDateStruct) === 1) {\n return { maxDate: { actual: value, max: this.max() } };\n }\n }\n return null;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaDatepickerComponent } from './datepicker.component';\nimport { GaDatepickerToggleComponent } from './datepicker-toggle.component';\nimport { GaDatepickerInputDirective } from './datepicker-input.directive';\n\n@NgModule({\n imports: [\n GaDatepickerComponent,\n GaDatepickerToggleComponent,\n GaDatepickerInputDirective,\n ],\n exports: [\n GaDatepickerComponent,\n GaDatepickerToggleComponent,\n GaDatepickerInputDirective,\n ],\n})\nexport class GaDatepickerModule {}\n","import { Injectable } from '@angular/core';\nimport {\n GaDatepickerStruct,\n GaDatepickerValueAdapter,\n} from './date-struct-adapter';\n\n@Injectable()\nexport class GaDatepickerNativeUtcValueAdapter extends GaDatepickerValueAdapter<Date> {\n /**\n * Converts Date to internal struct representation\n * Uses UTC to avoid timezone issues and normalizes to midnight\n */\n toStruct(value: Date | null): GaDatepickerStruct | null {\n if (!value) return null;\n\n // Create UTC date at midnight to avoid timezone issues\n const utcDate = new Date(\n Date.UTC(value.getFullYear(), value.getMonth(), value.getDate()),\n );\n\n return {\n year: utcDate.getUTCFullYear(),\n month: utcDate.getUTCMonth() + 1, // Convert from 0-11 to 1-12\n day: utcDate.getUTCDate(),\n };\n }\n\n /**\n * Converts internal struct to Date representation\n * Creates UTC Date at midnight (00:00:00)\n */\n fromStruct(struct: GaDatepickerStruct | null): Date | null {\n if (!struct) return null;\n\n // Create UTC date at midnight (convert month from 1-12 to 0-11)\n return new Date(\n Date.UTC(struct.year, struct.month - 1, struct.day, 0, 0, 0, 0),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n GaDatepickerStruct,\n GaDatepickerValueAdapter,\n} from './date-struct-adapter';\n\n@Injectable()\nexport class GaDatepickerNativeUtcIsoValueAdapter extends GaDatepickerValueAdapter<string> {\n /**\n * Converts ISO Date to internal struct representation\n * Uses UTC to avoid timezone issues and normalizes to midnight\n */\n toStruct(value: string | null): GaDatepickerStruct | null {\n if (!value) return null;\n\n const date = new Date(value);\n\n if (isNaN(date.getTime())) {\n return null;\n }\n\n return {\n year: date.getUTCFullYear(),\n month: date.getUTCMonth() + 1,\n day: date.getUTCDate(),\n };\n }\n\n /**\n * Converts internal struct to ISO Date representation\n * Creates UTC Date at midnight (00:00:00)\n */\n fromStruct(struct: GaDatepickerStruct | null): string | null {\n if (!struct) return null;\n\n return new Date(\n Date.UTC(struct.year, struct.month - 1, struct.day, 0, 0, 0, 0),\n ).toISOString();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n output,\n} from '@angular/core';\n\n@Component({\n selector: 'ga-segmented-control',\n template: `<ng-content />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'group',\n class: 'ga-segmented-control',\n },\n})\nexport class GaSegmentedControlComponent {\n readonly selected = model<any>();\n\n readonly compareFn = input<(o1: any, o2: any) => boolean>((a, b) => a === b);\n readonly change = output<any>();\n\n readonly safeCompareFn = computed(() => {\n const compareFn = this.compareFn();\n return (o1: any, o2: any) => {\n if (o1 === null || o1 === undefined || o2 === null || o2 === undefined) {\n return o1 === o2;\n }\n return compareFn(o1, o2);\n };\n });\n}\n","import {\n computed,\n Directive,\n HostListener,\n inject,\n input,\n} from '@angular/core';\n\nimport { GaSegmentedControlComponent } from './segmented-control.component';\n\n@Directive({\n selector: '[gaSegmentedControlButton]',\n host: {\n type: 'button',\n class: 'ga-segmented-control__button',\n '[class.ga-segmented-control__button--selected]': 'selected()',\n '[attr.aria-pressed]': 'selected()',\n },\n})\nexport class GaSegmentedControlButtonDirective {\n /** @ignore */\n private readonly group = inject(GaSegmentedControlComponent, {\n skipSelf: true,\n });\n\n readonly value = input<any>();\n\n readonly selected = computed(() => {\n const value = this.value();\n const selectedValue = this.group.selected();\n if (value === undefined || selectedValue === undefined) {\n return false;\n }\n return this.group.safeCompareFn()(selectedValue, value);\n });\n\n @HostListener('click')\n onClick(): void {\n this.group.selected.set(this.value());\n this.group.change.emit(this.value());\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { GaIconData, GaIconModule } from '../icon';\nimport { GaSegmentedControlButtonDirective } from './segmented-control-button.directive';\n\n@Component({\n selector: 'ga-segmented-control-icon-button',\n imports: [GaIconModule, GaSegmentedControlButtonDirective],\n template: `<button\n class=\"ga-segmented-control__button--icon-only\"\n gaSegmentedControlButton\n [value]=\"value()\"\n >\n <ga-icon [icon]=\"icon()\" size=\"16\" />\n <span class=\"ga-segmented-control__button-sr-label\"><ng-content /></span>\n </button>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GaSegmentedControlIconButtonComponent {\n readonly value = input.required<any>();\n readonly icon = input.required<GaIconData>();\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { GaSegmentedControlButtonDirective } from './segmented-control-button.directive';\n\n@Component({\n selector: 'ga-segmented-control-text-button',\n imports: [GaSegmentedControlButtonDirective],\n template: `<button gaSegmentedControlButton [value]=\"value()\">\n <ng-content />\n </button>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GaSegmentedControlTextButtonComponent {\n readonly value = input.required<any>();\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaSegmentedControlComponent } from './segmented-control.component';\nimport { GaSegmentedControlIconButtonComponent } from './segmented-control-icon-button.component';\nimport { GaSegmentedControlTextButtonComponent } from './segmented-control-text-button.component';\n\n@NgModule({\n imports: [\n GaSegmentedControlComponent,\n GaSegmentedControlIconButtonComponent,\n GaSegmentedControlTextButtonComponent,\n ],\n exports: [\n GaSegmentedControlComponent,\n GaSegmentedControlIconButtonComponent,\n GaSegmentedControlTextButtonComponent,\n ],\n})\nexport class GaSegmentedControlModule {}\n","import { NgModule } from '@angular/core';\n\nimport { GaInputComponent } from './input.component';\nimport { GaInputDirective } from './input.directive';\n\n@NgModule({\n imports: [GaInputComponent, GaInputDirective],\n exports: [GaInputComponent, GaInputDirective],\n})\nexport class GaInputModule {}\n","import {\n InjectionToken,\n EnvironmentProviders,\n makeEnvironmentProviders,\n} from '@angular/core';\n\nexport type GaFormErrorMessage = string | ((error: any) => string);\nexport type GaFormErrorsMap = Record<string, GaFormErrorMessage>;\nexport type GaFormErrorsConfig = GaFormErrorsMap | (() => GaFormErrorsMap);\n\nexport const GA_FORM_ERRORS = new InjectionToken<GaFormErrorsMap>(\n 'GA_FORM_ERRORS',\n { providedIn: 'root', factory: () => ({}) },\n);\n\n/**\n * Provides global form error messages that can be used across the application.\n * These errors will be displayed when a form control has validation errors\n * but no specific gaError directive template is provided.\n *\n * @param config - Either a static record of error messages or a factory function\n * @returns EnvironmentProviders for configuring global form errors\n *\n * @example\n * ```ts\n * // Static configuration\n * provideGaFormErrors({\n * required: 'This field is required',\n * email: 'Please enter a valid email address',\n * minlength: 'Input is too short'\n * })\n *\n * // Dynamic configuration with functions that access error data\n * provideGaFormErrors({\n * required: 'This field is required',\n * minlength: (error) => `Minimum ${error.requiredLength} characters required`,\n * pattern: (error) => `Input format is invalid. Expected pattern: ${error.requiredPattern}`\n * })\n *\n * // Factory function for lazy evaluation\n * provideGaFormErrors(() => ({\n * required: translateService.get('errors.required'),\n * email: translateService.get('errors.email')\n * }))\n * ```\n */\nexport function provideGaFormErrors(\n config: GaFormErrorsConfig,\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n typeof config === 'function'\n ? { provide: GA_FORM_ERRORS, useFactory: config }\n : { provide: GA_FORM_ERRORS, useValue: config },\n ]);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n TemplateRef,\n} from '@angular/core';\nimport { GaFormFieldComponent } from './form-field.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { GaIconModule } from '../icon/icon.module';\nimport { OctagonAlert } from 'lucide-angular';\nimport { GA_FORM_ERRORS } from './form-errors.provider';\n\n@Component({\n selector: 'ga-field-callout',\n templateUrl: './field-callout.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, GaIconModule],\n host: {\n class: 'ga-form-field__info',\n '[attr.id]': 'id',\n '[style.display]': 'hasCallout() ? null : \"none\"',\n },\n})\nexport class GaFieldCalloutComponent {\n protected readonly icons = { OctagonAlert };\n protected readonly formField = inject(GaFormFieldComponent);\n private readonly globalErrors = inject(GA_FORM_ERRORS);\n\n protected readonly id = this.formField.uniqueId + '-callout';\n\n protected readonly shouldShowError = computed(() => {\n const formControl = this.formField.formControl();\n if (!formControl) {\n return false;\n }\n return formControl.inError() && this.overlappingErrors().length > 0;\n });\n\n protected readonly overlappingErrors = computed(() => {\n const formControl = this.formField.formControl();\n if (!formControl) {\n return [];\n }\n const registeredErrors = this.formField\n .fieldErrors()\n .filter((err) => err.key());\n const controlErrorKeys = Object.keys(formControl.errors());\n const errors: {\n key: string;\n error: any;\n templateRef?: TemplateRef<any>;\n message?: string;\n }[] = [];\n\n // First, add errors that have matching gaError directives\n const registeredErrorKeys = new Set(\n registeredErrors.map((err) => err.key()),\n );\n registeredErrors\n .filter((err) => controlErrorKeys.includes(err.key()!))\n .forEach((err) => {\n const errorKey = err.key()!;\n errors.push({\n key: errorKey,\n templateRef: err.templateRef,\n error: formControl.errors()[errorKey],\n });\n });\n\n // Then, add global errors for keys that don't have gaError directives\n controlErrorKeys\n .filter((key) => !registeredErrorKeys.has(key))\n .forEach((key) => {\n const errorMessage = this.globalErrors[key];\n if (errorMessage) {\n const message =\n typeof errorMessage === 'function'\n ? errorMessage(formControl.errors()[key])\n : errorMessage;\n errors.push({\n key,\n error: formControl.errors()[key],\n message,\n });\n }\n });\n\n return errors;\n });\n\n protected readonly hasCallout = computed(\n () => !!this.formField.fieldInfo() || this.shouldShowError(),\n );\n}\n","@if (shouldShowError()) {\n <ga-icon\n [icon]=\"icons.OctagonAlert\"\n class=\"ga-icon\"\n style=\"color: var(--ga-color-icon-error)\"\n size=\"16\"\n />\n <div>\n @for (error of overlappingErrors(); track error.key; let last = $last) {\n <span>\n @if (error.templateRef) {\n <ng-container\n [ngTemplateOutlet]=\"error.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: error.error }\"\n />\n } @else {\n {{ error.message }}\n }\n @if (!last) {\n \n }\n </span>\n }\n </div>\n} @else if (formField.fieldInfo()) {\n <ng-container [ngTemplateOutlet]=\"formField.fieldInfo()!.templateRef()\" />\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n viewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'ga-info',\n template: `<ng-template><ng-content /></ng-template>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.display]': '\"none\"',\n },\n})\nexport class GaFieldInfoComponent {\n readonly templateRef = viewChild.required(TemplateRef);\n}\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[gaError]',\n})\nexport class GaFieldErrorDirective {\n readonly templateRef = inject(TemplateRef, { self: true });\n readonly key = input.required<string>({ alias: 'gaError' });\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const GA_FORM_FIELD_ID = new InjectionToken<string>('ga-form-field-id');\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n contentChildren,\n input,\n inject,\n computed,\n} from '@angular/core';\nimport { GaFieldCalloutComponent } from './field-callout.component';\nimport { GaFieldInfoComponent } from './field-info.component';\nimport { GaFieldErrorDirective } from './field-error.directive';\nimport { GA_FORM_FIELD_ID } from './form-field.di';\nimport { GaFormFieldConnector } from './form-field-connector';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-form-field',\n exportAs: 'gaFormField',\n templateUrl: './form-field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [GaFieldCalloutComponent],\n host: {\n class: 'ga-form-field',\n },\n providers: [\n {\n provide: GA_FORM_FIELD_ID,\n useFactory: () => `ga-form-field-${++nextUniqueId}`,\n },\n GaFormFieldConnector,\n ],\n})\nexport class GaFormFieldComponent {\n readonly uniqueId = inject(GA_FORM_FIELD_ID);\n readonly formFieldConnector = inject(GaFormFieldConnector);\n\n readonly disabledInput = input(undefined, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly disabled = computed(() => {\n return this.disabledInput() ?? this.formFieldConnector.controlDisabled();\n });\n\n readonly formControl = this.formFieldConnector.control.asReadonly();\n\n readonly fieldInfo = contentChild(GaFieldInfoComponent);\n readonly fieldErrors = contentChildren(GaFieldErrorDirective);\n}\n","<ng-content select=\"ga-label\" />\n<ng-content />\n<ga-field-callout />\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostListener,\n input,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { NgTemplateOutlet } from '@angular/common';\n\nexport type GaTooltipPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type GaTooltipDirection = 'start' | 'end' | 'center';\nexport type GaTooltipPlacement = `${GaTooltipPosition}-${GaTooltipDirection}`;\nexport type GaTooltipControlMode = 'hover' | 'click' | 'none';\n\nlet nextUniqueId = 0;\n\n/**\n * Internal tooltip component used by the gaTooltip directive.\n * This component is not intended for direct use in templates.\n * Use the [gaTooltip] directive instead.\n * @internal\n */\n@Component({\n selector: 'ga-tooltip',\n imports: [NgTemplateOutlet],\n templateUrl: './tooltip.component.html',\n styleUrl: './tooltip.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.style]': 'inlineStyle()',\n },\n})\nexport class GaTooltipComponent {\n readonly uniqueId = `ga-tooltip-${++nextUniqueId}`;\n\n private mouseLeaveSubject = new Subject<void>();\n readonly afterMouseLeave = () => this.mouseLeaveSubject.asObservable();\n\n readonly mouseOver = signal(false);\n\n readonly content = input.required<string | TemplateRef<any>>();\n\n readonly template = computed(() => {\n const content = this.content();\n return content instanceof TemplateRef ? content : null;\n });\n\n readonly text = computed(() => {\n const content = this.content();\n return typeof content === 'string' ? content : null;\n });\n\n readonly position = input<GaTooltipPlacement>();\n readonly offset = input<number>(0);\n\n readonly hideTriggered = output();\n readonly triggerHide = () => this.hideTriggered.emit();\n\n readonly inlineStyle = computed(() => {\n if (!this.position() || !this.offset()) {\n return '';\n }\n\n return `--ga-tooltip-offset: ${this.offset()}px;`;\n });\n\n readonly cssClass = computed(() => {\n return ['ga-tooltip', `ga-tooltip--${this.position()}`].join(' ');\n });\n\n @HostListener('mouseenter')\n handleMouseEnter(): void {\n this.mouseOver.set(true);\n }\n\n @HostListener('mouseleave')\n handleMouseLeave(): void {\n this.mouseOver.set(false);\n this.mouseLeaveSubject.next();\n }\n}\n","<div role=\"tooltip\" [attr.id]=\"uniqueId\" [class]=\"cssClass()\">\n @if (text()) {\n {{ text() }}\n } @else if (template()) {\n <ng-container\n [ngTemplateOutlet]=\"template()\"\n [ngTemplateOutletContext]=\"{ hide: triggerHide }\"\n />\n }\n</div>\n","import {\n Overlay,\n OverlayRef,\n FlexibleConnectedPositionStrategy,\n ConnectedPosition,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n booleanAttribute,\n ComponentRef,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n input,\n Input,\n NgZone,\n numberAttribute,\n OnDestroy,\n OutputRefSubscription,\n TemplateRef,\n} from '@angular/core';\nimport { Subject, Observable, takeUntil, map } from 'rxjs';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n GaTooltipComponent,\n GaTooltipControlMode,\n GaTooltipDirection,\n GaTooltipPlacement,\n GaTooltipPosition,\n} from './tooltip.component';\n\nexport const GA_TOOLTIP_DEFAULT_OFFSET = 5;\n\n@Directive({\n selector: '[gaTooltip]',\n exportAs: 'gaTooltip',\n})\nexport class GaTooltipDirective implements OnDestroy {\n private readonly elementRef = inject(ElementRef);\n private readonly overlay = inject(Overlay);\n private readonly ngZone = inject(NgZone);\n\n protected destroyed$ = new Subject<void>();\n private _content: string | TemplateRef<any> | null = null;\n private tooltipInstanceDestroyed$: Subject<void> | null = null;\n private outputSubscription: OutputRefSubscription | null = null;\n private overlayRef?: OverlayRef;\n private tooltipPortal?: ComponentPortal<GaTooltipComponent>;\n private tooltipRef?: ComponentRef<GaTooltipComponent>;\n private get tooltipInstance() {\n return this.tooltipRef ? this.tooltipRef.instance : null;\n }\n private currentPosition$?: Observable<GaTooltipPlacement>;\n private _placement: GaTooltipPlacement = 'right-center';\n private _offset: number = GA_TOOLTIP_DEFAULT_OFFSET;\n private mouseOver = false;\n private _showControlMode: GaTooltipControlMode | null = null;\n private _hideControlMode: GaTooltipControlMode | null = null;\n private showTimeoutId: ReturnType<typeof setTimeout> | null = null;\n\n @Input('gaTooltip')\n set content(value: string | TemplateRef<any> | null) {\n if (value === this._content) {\n return;\n }\n\n this._content = value;\n\n // Hide tooltip with empty content\n if (!this._content && this.overlayRef?.hasAttached()) {\n this.hide();\n return;\n }\n\n // Update the content in case tooltip is already opened\n if (this.tooltipRef && this.overlayRef?.hasAttached()) {\n this.tooltipRef.setInput('content', this._content);\n }\n }\n get content() {\n return this._content;\n }\n\n @Input({ alias: 'gaTooltipDisabled', transform: booleanAttribute })\n disabled = false;\n\n @Input({ alias: 'gaTooltipControlMode' })\n controlMode: GaTooltipControlMode = 'hover';\n\n /**\n * @default `gaTooltipControlMode`\n */\n @Input({ alias: 'gaTooltipShowControlMode' })\n set showControlMode(value: GaTooltipControlMode) {\n this._showControlMode = value;\n }\n get showControlMode(): GaTooltipControlMode {\n return this._showControlMode ?? this.controlMode;\n }\n\n /**\n * @default `gaTooltipControlMode`\n */\n @Input({ alias: 'gaTooltipHideControlMode' })\n set hideControlMode(value: GaTooltipControlMode) {\n this._hideControlMode = value;\n }\n get hideControlMode(): GaTooltipControlMode {\n return this._hideControlMode ?? this.controlMode;\n }\n\n @Input({ alias: 'gaTooltipOffsetSize', transform: numberAttribute })\n set offset(value) {\n if (this._offset === value) {\n return;\n }\n\n this._offset = !isNaN(value) ? value : GA_TOOLTIP_DEFAULT_OFFSET;\n this.updateTooltipPlacement();\n }\n get offset() {\n return this._offset;\n }\n\n readonly showDelay = input(0, {\n alias: 'gaTooltipShowDelay',\n transform: numberAttribute,\n });\n\n @Input({ alias: 'gaTooltipPlacement' })\n set placement(value: GaTooltipPlacement) {\n if (this._placement === value) {\n return;\n }\n\n this._placement = value;\n\n this.updateTooltipPlacement();\n }\n get placement() {\n return this._placement;\n }\n\n @HostBinding('attr.aria-describedby')\n get ariaDescribedBy(): string | null {\n return this.tooltipInstance?.uniqueId ?? null;\n }\n\n ngOnDestroy(): void {\n this.clearShowTimeout();\n this.destroyed$.next();\n this.destroyed$.complete();\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n }\n\n show(): void {\n if (this.overlayRef?.hasAttached()) {\n return;\n }\n\n const overlayRef = this.createOverlay();\n this.tooltipPortal =\n this.tooltipPortal ?? new ComponentPortal(GaTooltipComponent);\n\n this.tooltipInstanceDestroyed$ = new Subject();\n\n this.tooltipRef = overlayRef.attach(this.tooltipPortal);\n this.tooltipRef.setInput('content', this.content);\n this.outputSubscription = this.tooltipInstance!.hideTriggered.subscribe(\n () => setTimeout(() => this.hide()),\n );\n\n if (this.hideControlMode === 'hover') {\n // Soft hide tooltip on mouse leave when control mode is set to 'hover'\n this.tooltipInstance!.afterMouseLeave()\n .pipe(takeUntil(this.tooltipInstanceDestroyed$))\n .subscribe(() => setTimeout(() => this.softHide()));\n } else if (this.hideControlMode === 'click') {\n // Hide tooltip on outside click when control mode is set to 'click'\n overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this.tooltipInstanceDestroyed$))\n .subscribe((event) => {\n const element = this.elementRef.nativeElement;\n if (event.target !== element && !element.contains(event.target)) {\n this.hide();\n }\n });\n }\n\n // Tell the instance current position (left, right, top, bottom)\n this.currentPosition$!.pipe(\n takeUntil(this.tooltipInstanceDestroyed$),\n ).subscribe((position) => {\n this.ngZone.run(() => {\n if (!this.tooltipRef) {\n return;\n }\n this.tooltipRef.setInput('position', position);\n this.tooltipRef.setInput('offset', this.offset);\n });\n });\n }\n\n hide(): void {\n if (!this.overlayRef?.hasAttached()) {\n return;\n }\n this.overlayRef.detach();\n this.tooltipInstanceDestroyed$!.next();\n this.tooltipInstanceDestroyed$!.complete();\n this.outputSubscription?.unsubscribe();\n this.tooltipRef = undefined;\n }\n\n toggle(): void {\n if (!this.overlayRef?.hasAttached()) {\n this.show();\n return;\n }\n this.hide();\n }\n\n @HostListener('click')\n handleMouseClick(): void {\n if (this.showControlMode !== 'click' || this.disabled || !this._content) {\n return;\n }\n this.toggle();\n }\n\n @HostListener('mouseenter')\n handleMouseEnter(): void {\n if (this.showControlMode !== 'hover' || this.disabled || !this._content) {\n return;\n }\n this.mouseOver = true;\n this.clearShowTimeout();\n\n if (this.showDelay() > 0) {\n this.showTimeoutId = setTimeout(() => this.show(), this.showDelay());\n } else {\n this.show();\n }\n }\n\n @HostListener('mouseleave')\n handleMouseLeave(): void {\n this.clearShowTimeout();\n if (this.hideControlMode !== 'hover' || this.disabled) {\n return;\n }\n this.mouseOver = false;\n setTimeout(() => this.softHide());\n }\n\n /**\n * hides only if mouse is not over the host element nor the tooltip itself\n */\n private softHide() {\n if (!this.mouseOver && !this.tooltipInstance?.mouseOver()) {\n this.hide();\n }\n }\n\n private clearShowTimeout(): void {\n if (this.showTimeoutId !== null) {\n clearTimeout(this.showTimeoutId);\n this.showTimeoutId = null;\n }\n }\n\n private createOverlay(): OverlayRef {\n if (this.overlayRef) {\n return this.overlayRef;\n }\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef);\n this.currentPosition$ = positionStrategy.positionChanges.pipe(\n map((pos) => pos.connectionPair.panelClass as GaTooltipPlacement),\n );\n\n const scrollStrategy = this.overlay.scrollStrategies.reposition();\n\n this.overlayRef = this.overlay.create({ positionStrategy, scrollStrategy });\n\n if (this.showControlMode !== 'none') {\n this.overlayRef\n .keydownEvents()\n .pipe(takeUntil(this.destroyed$))\n .subscribe((event) => {\n if (\n this.overlayRef?.hasAttached() &&\n event.keyCode === ESCAPE &&\n !hasModifierKey(event)\n ) {\n this.hide();\n }\n });\n }\n\n this.updatePosition();\n\n return this.overlayRef;\n }\n\n private updateTooltipPlacement(): void {\n if (this.overlayRef) {\n this.updatePosition();\n this.overlayRef.updatePosition();\n }\n }\n\n private updatePosition(): void {\n const position = this.overlayRef!.getConfig()\n .positionStrategy as FlexibleConnectedPositionStrategy;\n const positions = this.getPositions(this._placement);\n position.withPositions(positions);\n }\n\n private getPositions(\n preferredPlacement: GaTooltipPlacement,\n ): ConnectedPosition[] {\n const [position, direction] = preferredPlacement.split('-') as [\n GaTooltipPosition,\n GaTooltipDirection,\n ];\n\n let positionedOverlayY: ConnectedPosition['overlayY'];\n let positionedOffsetY: number;\n if (direction === 'start') {\n positionedOverlayY = 'top';\n positionedOffsetY = -24;\n } else if (direction === 'end') {\n positionedOverlayY = 'bottom';\n positionedOffsetY = 24;\n } else {\n positionedOverlayY = 'center';\n positionedOffsetY = 0;\n }\n\n let positionedOffsetX: number;\n if (direction === 'start') {\n positionedOffsetX = -24;\n } else if (direction === 'end') {\n positionedOffsetX = 24;\n } else {\n positionedOffsetX = 0;\n }\n\n const right: ConnectedPosition = {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: positionedOverlayY,\n offsetY: positionedOffsetY,\n panelClass: `right-${direction}`,\n };\n\n const left: ConnectedPosition = {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: positionedOverlayY,\n offsetY: positionedOffsetY,\n panelClass: `left-${direction}`,\n };\n\n const top: ConnectedPosition = {\n originX: 'center',\n originY: 'top',\n overlayX: direction,\n overlayY: 'bottom',\n offsetX: positionedOffsetX,\n panelClass: `top-${direction}`,\n };\n\n const bottom: ConnectedPosition = {\n originX: 'center',\n originY: 'bottom',\n overlayX: direction,\n overlayY: 'top',\n offsetX: positionedOffsetX,\n panelClass: `bottom-${direction}`,\n };\n\n if (position === 'right') {\n return [right, left, bottom, top];\n } else if (position === 'left') {\n return [left, right, bottom, top];\n } else if (position === 'top') {\n return [top, bottom, right, left];\n } else {\n return [bottom, top, right, left];\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaTooltipDirective } from './tooltip.directive';\n\n@NgModule({\n imports: [GaTooltipDirective],\n exports: [GaTooltipDirective],\n})\nexport class GaTooltipModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n TemplateRef,\n DOCUMENT,\n effect,\n} from '@angular/core';\nimport { GaFormFieldComponent } from './form-field.component';\nimport { GaTooltipModule } from '../tooltip';\nimport { GaFormFieldConnector } from './form-field-connector';\n\n@Component({\n selector: 'ga-label',\n templateUrl: './field-label.component.html',\n imports: [GaTooltipModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'null',\n },\n})\nexport class GaFieldLabelComponent {\n private readonly document = inject(DOCUMENT);\n readonly formField = inject(GaFormFieldComponent);\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n\n readonly uniqueId = this.formField.uniqueId + '-label';\n\n readonly for = input<string>();\n readonly definition = input<string | TemplateRef<any> | null>(null);\n readonly state = input<string>();\n readonly idInput = input<string>(undefined, { alias: 'id' });\n\n readonly id = computed(() => {\n return this.idInput() ?? this.uniqueId;\n });\n\n protected readonly controlId = computed(() => {\n return this.for() ?? this.formFieldConnector?.controlId();\n });\n\n readonly controlElement = computed(() => {\n const controlId = this.controlId();\n if (!controlId) {\n return null;\n }\n const control = this.document.querySelector(`#${CSS.escape(controlId)}`);\n if (control instanceof HTMLElement) {\n return control;\n }\n return null;\n });\n\n constructor() {\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() => formFieldConnector.labelId.set(this.id()));\n }\n }\n\n focusControl() {\n const control = this.controlElement();\n // only focus custom elements as native elements already\n // have support for connecting label and reacting to events\n if (control?.tagName.includes('-')) {\n control.focus();\n }\n }\n}\n","<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events -->\n<label\n [attr.id]=\"id()\"\n [attr.for]=\"controlId()\"\n class=\"ga-form-field__label\"\n [class.ga-form-field__label--defined]=\"!!definition()\"\n [class.ga-form-field__label--disabled]=\"formField.disabled()\"\n (click)=\"focusControl()\"\n [attr.tabindex]=\"definition() ? 0 : -1\"\n>\n <span\n class=\"ga-form-field__label-text\"\n [gaTooltip]=\"definition()\"\n gaTooltipPlacement=\"top-start\"\n gaTooltipShowDelay=\"600\"\n ><ng-content\n /></span>\n @if (state()) {\n <span class=\"ga-form-field__label-state\">{{ state() }}</span>\n }\n</label>\n","import {\n computed,\n Directive,\n inject,\n input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { injectNgControlState } from '../utils/error-state';\nimport { GA_FORM_FIELD_ID } from './form-field.di';\nimport { GaFormFieldConnector } from './form-field-connector';\n\n@Directive({\n exportAs: 'gaFormControl',\n selector: '[gaFormControl]',\n host: {\n '[attr.aria-invalid]': 'inError() ? \"true\" : null',\n '[attr.aria-errormessage]': 'ariaErrorMessageId()',\n },\n})\nexport class GaFormControlDirective implements OnInit, OnDestroy {\n private readonly formFieldId = inject(GA_FORM_FIELD_ID, { optional: true });\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n\n readonly ngControlInput = input<NgControl | string>(undefined, {\n alias: 'gaFormControl',\n });\n\n private readonly explicitNgControl = computed(() => {\n const ngControl = this.ngControlInput();\n if (ngControl instanceof NgControl) {\n return ngControl;\n }\n return null;\n });\n\n private readonly ngControlState = injectNgControlState({\n explicitNgControl: this.explicitNgControl,\n });\n\n readonly inError = this.ngControlState.inError;\n readonly errors = this.ngControlState.errors;\n\n readonly ariaErrorMessageId = computed(() => {\n if (!this.formFieldId || !this.inError()) {\n return null;\n }\n return `${this.formFieldId}-callout`;\n });\n\n ngOnInit(): void {\n this.formFieldConnector?.control.set(this);\n }\n\n ngOnDestroy(): void {\n this.formFieldConnector?.control.set(null);\n }\n}\n","import { computed, Directive, inject, input } from '@angular/core';\nimport { GaFormFieldConnector } from './form-field-connector';\n\n@Directive({\n selector: '[gaLabelledByFormField]',\n host: {\n '[attr.aria-labelledby]': 'labelledBy()',\n },\n})\nexport class GaLabelledByFormFieldDirective {\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n\n readonly ariaLabelledBy = input<string | null>(null, {\n alias: 'aria-labelledby',\n });\n\n protected readonly labelledBy = computed(() => {\n return this.ariaLabelledBy() ?? this.formFieldConnector?.labelId();\n });\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaFormFieldComponent } from './form-field.component';\nimport { GaFieldLabelComponent } from './field-label.component';\nimport { GaFieldInfoComponent } from './field-info.component';\nimport { GaFormControlDirective } from './form-control.directive';\nimport { GaFieldErrorDirective } from './field-error.directive';\nimport { GaFormControlErrorsDirective } from './form-control-errors.directive';\n\n@NgModule({\n imports: [\n GaFormFieldComponent,\n GaFieldLabelComponent,\n GaFieldInfoComponent,\n GaFieldErrorDirective,\n GaFormControlErrorsDirective,\n GaFormControlDirective,\n ],\n exports: [\n GaFormFieldComponent,\n GaFieldLabelComponent,\n GaFieldInfoComponent,\n GaFieldErrorDirective,\n GaFormControlErrorsDirective,\n GaFormControlDirective,\n ],\n})\nexport class GaFormFieldModule {}\n","import { CdkMenu } from '@angular/cdk/menu';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-menu',\n template: `<ng-content />`,\n hostDirectives: [CdkMenu],\n host: {\n class: 'ga-menu',\n },\n styles: `\n :host {\n margin-top: calc(\n var(--ga-size-spacing-03) * var(--ga-base-scaling-factor, 1)\n );\n margin-bottom: calc(\n var(--ga-size-spacing-03) * var(--ga-base-scaling-factor, 1)\n );\n }\n `,\n})\nexport class GaMenuComponent {}\n","import { CdkMenuItem } from '@angular/cdk/menu';\nimport { Component, input } from '@angular/core';\nimport { GaIconData, GaIconModule } from '../icon/';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[gaMenuItem]',\n templateUrl: './menu-item.component.html',\n imports: [GaIconModule],\n hostDirectives: [CdkMenuItem],\n host: {\n class: 'ga-menu__item',\n },\n})\nexport class GaMenuItemComponent {\n readonly icon = input<GaIconData | string>(undefined, {\n alias: 'gaMenuItemIcon',\n });\n readonly description = input('', { alias: 'gaMenuItemDescription' });\n readonly shortcut = input('', { alias: 'gaMenuItemShortcut' });\n}\n","@if (icon()) {\n <ga-icon [icon]=\"icon()!\" class=\"ga-menu__item-icon\" size=\"16\" />\n}\n<div class=\"ga-menu__item-content\">\n <div class=\"ga-menu__item-title\">\n <div class=\"ga-menu__item-label\"><ng-content /></div>\n @if (shortcut()) {\n <span class=\"ga-menu__item-shortcut\">{{ shortcut() }}</span>\n }\n </div>\n @if (description()) {\n <div class=\"ga-menu__item-description\">{{ description() }}</div>\n }\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-menu-title',\n template: `<ng-content />`,\n host: {\n class: 'ga-menu__title',\n },\n})\nexport class GaMenuTitleComponent {}\n","import { CdkMenuTrigger, MENU_SCROLL_STRATEGY } from '@angular/cdk/menu';\nimport { createRepositionScrollStrategy } from '@angular/cdk/overlay';\nimport {\n Directive,\n effect,\n inject,\n Injector,\n input,\n TemplateRef,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, merge } from 'rxjs';\n\n@Directive({\n selector: '[gaMenuTrigger]',\n exportAs: 'gaMenuTrigger',\n standalone: true,\n hostDirectives: [\n {\n directive: CdkMenuTrigger,\n outputs: ['cdkMenuOpened: gaMenuOpened', 'cdkMenuClosed: gaMenuClosed'],\n },\n ],\n providers: [\n {\n provide: MENU_SCROLL_STRATEGY,\n useFactory: () => {\n const injector = inject(Injector);\n return () => createRepositionScrollStrategy(injector);\n },\n },\n ],\n})\nexport class GaMenuTriggerDirective {\n private readonly cdkMenuTrigger = inject(CdkMenuTrigger);\n\n readonly menuRef = input.required<TemplateRef<any>>({\n alias: 'gaMenuTrigger',\n });\n\n readonly isOpen = toSignal(\n merge(\n this.cdkMenuTrigger.opened.pipe(map(() => true)),\n this.cdkMenuTrigger.closed.pipe(map(() => false)),\n ),\n { initialValue: this.cdkMenuTrigger.isOpen() },\n );\n\n constructor() {\n effect(() => {\n this.cdkMenuTrigger.menuTemplateRef = this.menuRef();\n });\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-menu-separator',\n template: `<ng-content />`,\n host: {\n class: 'ga-menu__separator',\n },\n})\nexport class GaMenuSeparatorComponent {}\n","import { Component, computed, inject } from '@angular/core';\nimport { GaIconModule } from '../icon/icon.module';\nimport { ChevronDown, ChevronUp } from 'lucide-angular';\nimport { GaMenuTriggerDirective } from './menu-trigger.directive';\nimport { GaIconData } from '../icon/icon.component';\n\n@Component({\n selector: 'ga-menu-trigger-icon',\n imports: [GaIconModule],\n template: `<ga-icon [icon]=\"icon()\" />`,\n})\nexport class GaMenuTriggerIconComponent {\n protected readonly menuTrigger = inject(GaMenuTriggerDirective);\n\n protected readonly icon = computed<GaIconData>(() => {\n return this.menuTrigger.isOpen() ? ChevronUp : ChevronDown;\n });\n}\n","import { NgModule } from '@angular/core';\nimport { GaMenuComponent } from './menu.component';\nimport { GaMenuItemComponent } from './menu-item.component';\nimport { GaMenuTriggerDirective } from './menu-trigger.directive';\nimport { GaMenuSeparatorComponent } from './menu-separator.component';\nimport { GaMenuTitleComponent } from './menu-title.component';\nimport { GaMenuTriggerIconComponent } from './menu-trigger-icon.component';\n\n@NgModule({\n imports: [\n GaMenuComponent,\n GaMenuItemComponent,\n GaMenuTriggerDirective,\n GaMenuSeparatorComponent,\n GaMenuTitleComponent,\n GaMenuTriggerIconComponent,\n ],\n exports: [\n GaMenuComponent,\n GaMenuItemComponent,\n GaMenuTriggerDirective,\n GaMenuSeparatorComponent,\n GaMenuTitleComponent,\n GaMenuTriggerIconComponent,\n ],\n})\nexport class GaMenuModule {}\n","import { GaModalComponent } from './modal.component';\n\nexport class GaModalRef<C extends GaModalComponent<any, any>> {\n instance!: C;\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const GA_MODAL_DATA = new InjectionToken<any>('GaModalData');\n","import { Provider } from '@angular/core';\n\nexport type GaModalRole = 'dialog' | 'alertdialog';\n\nexport type GaModalSize = 'sm' | 'md' | 'lg';\n\nexport type GaModalType = 'none' | 'info' | 'danger' | 'warning' | 'success';\n\nexport type GaModalVerticalPosition = 'top' | 'center';\n\nexport class GaModalOptions {\n /**\n * Defines the predefined size of the modal.\n *\n * @default `md`\n */\n size?: GaModalSize;\n\n /**\n * Defines the type of the modal:\n * - `none` for no icon.\n * - `information` for info dialog.\n * - `danger` for danger dialog.\n * - `warning` for warning dialog.\n * - `success` for success dialog.\n */\n type?: GaModalType;\n\n /**\n * The ARIA role of the dialog element.\n *\n * @default `dialog`\n */\n role?: GaModalRole;\n\n /**\n * Defines the vertical position of the modal.\n * - `center` centers the modal vertically in the viewport (default).\n * - `top` positions the modal at the top with a calculated offset.\n *\n * @default `center`\n */\n verticalPosition?: GaModalVerticalPosition;\n\n /**\n * Defines if the modal should be closed when the escape key is pressed.\n *\n * @default `true`\n */\n closeOnEscape?: boolean;\n\n /**\n * Defines if the modal should be closed when the backdrop is clicked.\n *\n * @default `true`\n */\n closeOnOutsideClick?: boolean;\n\n /**\n * Defines if the modal should be closed when the route changes.\n *\n * @default `true`\n */\n closeOnNavigation?: boolean;\n}\n\nexport const DEFAULT_MODAL_OPTIONS: Required<GaModalOptions> = {\n role: 'dialog',\n type: 'none',\n size: 'md',\n verticalPosition: 'center',\n closeOnEscape: true,\n closeOnOutsideClick: true,\n closeOnNavigation: true,\n};\n\nexport function provideGaModalOptions(options: GaModalOptions): Provider {\n return { provide: GaModalOptions, useValue: options };\n}\n","import {\n GlobalPositionStrategy,\n Overlay,\n OverlayRef,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport {\n inject,\n Injectable,\n Injector,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { GaModalRef } from './modal-ref';\nimport { GaModalComponent } from './modal.component';\nimport { GA_MODAL_DATA } from './modal-data.token';\nimport { ExtractInput } from './modal.utils';\nimport { DEFAULT_MODAL_OPTIONS } from './modal.options';\n\n@Injectable({ providedIn: 'root' })\nexport class GaModalService {\n /** @ignore */\n private overlay = inject(Overlay);\n /** @ignore */\n private injector = inject(Injector);\n /** @ignore */\n private parentModalService = inject(GaModalService, {\n optional: true,\n skipSelf: true,\n });\n\n /** @ignore */\n private openModalsAtThisLevel = signal<GaModalComponent<any, any>[]>([]);\n\n /** @ignore */\n private positionStrategy?: GlobalPositionStrategy;\n\n get activeModals(): WritableSignal<GaModalComponent<any, any>[]> {\n if (this.parentModalService) {\n return this.parentModalService.activeModals;\n }\n return this.openModalsAtThisLevel;\n }\n\n open<C extends GaModalComponent<any, any>>(\n component: ComponentType<C>,\n ...args: ExtractInput<C> extends void\n ? [(undefined | null)?]\n : [ExtractInput<C>]\n ) {\n const [data] = args;\n\n const overlayRef = this.createOverlay();\n return this.attachContent<C>(component, data, overlayRef);\n }\n\n closeAll(): void {\n this.activeModals.update((modals) => {\n while (modals.length > 0) {\n modals.pop()?.close();\n }\n return modals;\n });\n }\n\n /** @ignore */\n private attachContent<C extends GaModalComponent<any, any>>(\n component: ComponentType<C>,\n data: ExtractInput<C> | undefined | null,\n overlayRef: OverlayRef,\n ) {\n const modalRef = new GaModalRef<C>();\n const injector = this.createInjector(\n this.injector,\n overlayRef,\n modalRef,\n data,\n );\n const modalPortal = new ComponentPortal(component, null, injector);\n const { instance: modalComponent } = overlayRef.attach(modalPortal);\n modalRef.instance = modalComponent;\n\n // Update position and size if verticalPosition is 'top'\n const verticalPosition =\n modalComponent.options.verticalPosition ??\n DEFAULT_MODAL_OPTIONS.verticalPosition;\n if (verticalPosition === 'top') {\n const modalStackIndex = this.activeModals().length + 1;\n this.positionStrategy?.top(\n `calc(4rem * var(--ga-base-scaling-factor, 1) * ${modalStackIndex})`,\n );\n overlayRef.updateSize({\n maxHeight: `calc(100vh - 4rem * var(--ga-base-scaling-factor, 1) * (1 + ${modalStackIndex}))`,\n });\n }\n\n this.activeModals.update((modals) => {\n modals.push(modalComponent);\n return modals;\n });\n modalComponent.afterClosed({ closeOnUnsubscribe: false }).subscribe(() => {\n const index = this.activeModals().indexOf(modalRef.instance);\n if (index > -1) {\n this.activeModals.update((modals) => {\n modals.splice(index, 1);\n return modals;\n });\n }\n });\n\n return modalComponent;\n }\n\n /** @ignore */\n private createOverlay(): OverlayRef {\n this.positionStrategy = this.overlay\n .position()\n .global()\n .centerHorizontally()\n .centerVertically();\n\n const scrollStrategy = this.overlay.scrollStrategies.block();\n return this.overlay.create({\n positionStrategy: this.positionStrategy,\n scrollStrategy,\n hasBackdrop: true,\n // TODO: reevaluate this option later in the future, currently it's limited by:\n // - poor ecosystem support (i.e. Playwright cannot mask elements inside Top layer)\n // - poor compatibility with other overlay components that don't use Top layer yet\n usePopover: false,\n backdropClass: 'ga-modal__backdrop',\n // NOTE: handled manually inside the modal component\n disposeOnNavigation: false,\n height: 'auto',\n maxHeight: `calc(100vh - 4rem * var(--ga-base-scaling-factor, 1) * 2)`,\n });\n }\n\n /** @ignore */\n private createInjector<C extends GaModalComponent>(\n parentInjector: Injector,\n overlayRef: OverlayRef,\n modalRef: GaModalRef<C>,\n data: any,\n ): Injector {\n return Injector.create({\n parent: parentInjector,\n providers: [\n { provide: OverlayRef, useValue: overlayRef },\n { provide: GaModalRef, useValue: modalRef },\n { provide: GA_MODAL_DATA, useValue: data ?? null },\n ],\n });\n }\n}\n","import {\n afterNextRender,\n Component,\n DestroyRef,\n inject,\n signal,\n} from '@angular/core';\nimport { filter, isObservable, Observable, Subject } from 'rxjs';\nimport { GA_MODAL_DATA } from './modal-data.token';\nimport { DEFAULT_MODAL_OPTIONS, GaModalOptions } from './modal.options';\nimport { ResolveStart, Router } from '@angular/router';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\n\n@Component({\n template: '',\n host: {\n class: 'ga-modal',\n '[attr.role]': 'options.role',\n '[attr.aria-labelledby]': 'options.labelledBy ?? labelledBy()',\n '[attr.aria-describedby]': 'options.describedBy ?? describedBy()',\n '[class.ga-modal--small]': \"options.size === 'sm'\",\n '[class.ga-modal--medium]': \"options.size === 'md'\",\n '[class.ga-modal--large]': \"options.size === 'lg'\",\n '[class.ga-modal--information]': \"options.type === 'info'\",\n '[class.ga-modal--danger]': \"options.type === 'danger'\",\n '[class.ga-modal--warning]': \"options.type === 'warning'\",\n '[class.ga-modal--success]': \"options.type === 'success'\",\n },\n hostDirectives: [CdkTrapFocus],\n})\nexport abstract class GaModalComponent<I = void, O = void> {\n readonly #closeSubject = new Subject<O | undefined>();\n readonly #overlayRef = inject(OverlayRef);\n readonly #destroyRef = inject(DestroyRef);\n readonly #router = inject(Router, { optional: true });\n readonly #globalOptions = inject(GaModalOptions, { optional: true });\n readonly options: GaModalOptions & {\n labelledBy?: string;\n describedBy?: string;\n } = this.createOptions();\n readonly #trapfocus = inject(CdkTrapFocus);\n\n protected readonly data: I = inject<I>(GA_MODAL_DATA);\n\n protected readonly labelledBy = signal<string | null>(null);\n protected readonly describedBy = signal<string | null>(null);\n\n constructor() {\n this.#trapfocus.enabled = true;\n this.#trapfocus.autoCapture = true;\n\n // Using next render to delay the initialization, so that there is more time\n // to set the modal options\n afterNextRender({\n read: () => {\n if (this.options.closeOnNavigation) {\n this.#router?.events\n .pipe(\n /**\n * Listen for `ResolveStart` to be friendly with route-guards.\n * i.e. don't close the modal in case a guard prevents the route change,\n * beneficial for pending changes check.\n */\n filter((event) => event instanceof ResolveStart),\n takeUntilDestroyed(this.#destroyRef),\n )\n .subscribe(() => this.close());\n }\n\n if (this.options.closeOnEscape) {\n this.#overlayRef\n .keydownEvents()\n .pipe(\n filter(\n (event) => event.key === 'Escape' && !hasModifierKey(event),\n ),\n takeUntilDestroyed(this.#destroyRef),\n )\n .subscribe((event) => {\n event.preventDefault();\n this.#softClose();\n });\n }\n\n if (this.options.closeOnOutsideClick) {\n this.#overlayRef\n .backdropClick()\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe(() => this.#softClose());\n }\n },\n });\n }\n\n close(result?: O): void {\n if (!this.#overlayRef.hasAttached()) {\n return;\n }\n this.#overlayRef.dispose();\n this.#closeSubject.next(result);\n this.#closeSubject.complete();\n }\n\n afterClosed(\n { closeOnUnsubscribe } = { closeOnUnsubscribe: true },\n ): Observable<O | undefined> {\n return new Observable((observer) => {\n this.#closeSubject.subscribe(observer);\n return () => closeOnUnsubscribe && this.close();\n });\n }\n\n /**\n * \"Soft close\" hook which is called whenever the modal is being closed\n * by \"Escape\" key or Backdrop click.\n * Return true to permit closing. False - to refuse.\n */\n protected onSoftClose(): boolean | Observable<boolean> {\n return true;\n }\n\n #softClose(): void {\n const shouldClose = this.onSoftClose();\n if (typeof shouldClose === 'boolean' && shouldClose) {\n this.close();\n }\n if (isObservable(shouldClose)) {\n shouldClose\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((result) => result && this.close());\n }\n }\n\n protected createOptions(\n options?: GaModalOptions & { labelledBy?: string; describedBy?: string },\n ) {\n return {\n ...DEFAULT_MODAL_OPTIONS,\n ...this.#globalOptions,\n ...options,\n };\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n HostAttributeToken,\n HostListener,\n inject,\n input,\n Renderer2,\n} from '@angular/core';\nimport { GaModalRef } from './modal-ref';\n\n@Directive({\n selector: '[gaModalClose]',\n})\nexport class GaModalCloseDirective {\n private readonly modalRef = inject(GaModalRef);\n\n readonly modalResult = input<any>({ alias: 'gaModalClose' });\n\n @HostListener('click')\n onClick(): void {\n this.modalRef.instance.close(this.modalResult);\n }\n}\n\nlet nextUniqueModalTitleId = 0;\n@Directive({\n selector: '[gaModalTitle]',\n host: { class: 'ga-modal__title' },\n})\nexport class GaModalTitleDirective implements AfterViewInit {\n private readonly renderer = inject(Renderer2);\n private readonly elementRef = inject(ElementRef);\n private readonly modalRef = inject(GaModalRef);\n protected readonly idAttribute = inject(new HostAttributeToken('id'), {\n optional: true,\n });\n\n private readonly id: string;\n\n constructor() {\n if (this.idAttribute) {\n this.id = this.idAttribute;\n } else {\n this.id = `gaModalTitle${nextUniqueModalTitleId++}`;\n this.renderer.setAttribute(this.elementRef.nativeElement, 'id', this.id);\n }\n }\n\n ngAfterViewInit(): void {\n this.modalRef.instance.labelledBy.set(this.id);\n }\n}\n\nlet nextUniqueModalDescriptionId = 0;\n@Directive({\n selector: '[gaModalDescription]',\n host: { class: 'ga-modal__description' },\n})\nexport class GaModalDescriptionDirective implements AfterViewInit {\n readonly renderer = inject(Renderer2);\n readonly elementRef = inject(ElementRef);\n private readonly modalRef = inject(GaModalRef);\n protected readonly idAttribute = inject(new HostAttributeToken('id'), {\n optional: true,\n });\n\n private readonly id: string;\n\n constructor() {\n if (this.idAttribute) {\n this.id = this.idAttribute;\n } else {\n this.id = `gaModalDescription${nextUniqueModalDescriptionId++}`;\n this.renderer.setAttribute(this.elementRef.nativeElement, 'id', this.id);\n }\n }\n\n ngAfterViewInit(): void {\n this.modalRef.instance.describedBy.set(this.id);\n }\n}\n\nlet nextUniqueModalLabelId = 0;\n@Directive({\n selector: '[gaModalLabel]',\n host: { class: 'ga-modal__label' },\n})\nexport class GaModalLabelDirective {\n private readonly renderer = inject(Renderer2);\n private readonly elementRef = inject(ElementRef);\n protected readonly idAttribute = inject(new HostAttributeToken('id'), {\n optional: true,\n });\n\n private readonly id: string;\n\n constructor() {\n if (this.idAttribute) {\n this.id = this.idAttribute;\n } else {\n this.id = `gaModalLabel${nextUniqueModalLabelId++}`;\n this.renderer.setAttribute(this.elementRef.nativeElement, 'id', this.id);\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { GaModalDescriptionDirective } from './modal.directives';\n\n@Component({\n selector: 'ga-modal-description',\n template: `<ng-content />`,\n hostDirectives: [GaModalDescriptionDirective],\n host: {\n class: 'ga-modal__description',\n },\n})\nexport class GaModalDescriptionComponent {}\n","import { CdkScrollable } from '@angular/cdk/scrolling';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-modal-content',\n template: `<ng-content />`,\n hostDirectives: [CdkScrollable],\n host: {\n class: 'ga-modal__content',\n },\n})\nexport class GaModalContentComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-modal-actions',\n template: ` <ng-content />`,\n host: {\n class: 'ga-modal__actions',\n },\n})\nexport class GaModalActionsComponent {}\n","import { Injectable, makeEnvironmentProviders } from '@angular/core';\n\nexport function GA_MODAL_I18N_FACTORY() {\n return new GaModalI18nDefault();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_MODAL_I18N_FACTORY,\n})\nexport abstract class GaModalI18n {\n abstract dismissLabel: string;\n}\n\n@Injectable()\nexport class GaModalI18nDefault extends GaModalI18n {\n /** A label for the dismiss button */\n dismissLabel = 'Dismiss';\n}\n\nexport function provideGaModalI18n(value: GaModalI18n | (() => GaModalI18n)) {\n return makeEnvironmentProviders([\n typeof value === 'function'\n ? { provide: GaModalI18n, useFactory: value }\n : { provide: GaModalI18n, useValue: value },\n ]);\n}\n","import { Component, inject } from '@angular/core';\nimport { GaButtonModule } from '../button';\nimport { GaModalRef } from './modal-ref';\nimport { GaModalI18n } from './modal-i18n.service';\nimport {\n CircleCheck,\n Info,\n OctagonAlert,\n TriangleAlert,\n X,\n} from 'lucide-angular';\nimport { GaIconModule } from '../icon';\n\n@Component({\n selector: 'ga-modal-header',\n imports: [GaButtonModule, GaIconModule],\n template: `\n @if (modalRef.instance.options.type !== 'none') {\n <div class=\"ga-modal__icon\">\n @switch (modalRef.instance.options.type) {\n @case ('info') {\n <ga-icon [icon]=\"icons.Info\" size=\"48\" />\n }\n @case ('warning') {\n <ga-icon [icon]=\"icons.TriangleAlert\" size=\"48\" />\n }\n @case ('danger') {\n <ga-icon [icon]=\"icons.OctagonAlert\" size=\"48\" />\n }\n @case ('success') {\n <ga-icon [icon]=\"icons.CircleCheck\" size=\"48\" />\n }\n }\n </div>\n }\n <div class=\"ga-modal__heading\">\n <ng-content select=\"[gaModalLabel]\" />\n <ng-content select=\"[gaModalTitle]\" />\n <ng-content select=\"ga-modal-description\" />\n </div>\n <button\n type=\"button\"\n [gaIconButton]=\"icons.X\"\n gaIconButtonVariant=\"ghost\"\n class=\"ga-modal__close-icon\"\n (click)=\"modalRef.instance.close()\"\n >\n {{ i18n.dismissLabel }}\n </button>\n `,\n host: {\n class: 'ga-modal__top-section',\n },\n})\nexport class GaModalHeaderComponent {\n protected readonly icons = {\n X,\n Info,\n CircleCheck,\n TriangleAlert,\n OctagonAlert,\n };\n\n protected readonly modalRef = inject(GaModalRef);\n protected readonly i18n = inject(GaModalI18n);\n}\n","import { NgModule } from '@angular/core';\nimport {\n GaModalCloseDirective,\n GaModalDescriptionDirective,\n GaModalLabelDirective,\n GaModalTitleDirective,\n} from './modal.directives';\nimport { GaModalDescriptionComponent } from './modal-description.component';\nimport { GaModalContentComponent } from './modal-content.component';\nimport { GaModalActionsComponent } from './modal-actions.component';\nimport { GaModalHeaderComponent } from './modal-header.component';\n\n@NgModule({\n imports: [\n GaModalCloseDirective,\n GaModalTitleDirective,\n GaModalLabelDirective,\n GaModalDescriptionDirective,\n GaModalDescriptionComponent,\n GaModalContentComponent,\n GaModalActionsComponent,\n GaModalHeaderComponent,\n ],\n exports: [\n GaModalCloseDirective,\n GaModalTitleDirective,\n GaModalLabelDirective,\n GaModalDescriptionDirective,\n GaModalDescriptionComponent,\n GaModalContentComponent,\n GaModalActionsComponent,\n GaModalHeaderComponent,\n ],\n})\nexport class GaModalModule {}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input,\n linkedSignal,\n output,\n Provider,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Provider Expression that allows ga-radio-group to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)] and ngControl.\n */\nexport const RADIO_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaRadioGroupComponent),\n multi: true,\n};\n\n// Increasing integer for generating unique ids for radio components.\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-radio-group',\n templateUrl: './radio-group.component.html',\n providers: [RADIO_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'radiogroup',\n class: 'ga-radio-group',\n },\n})\nexport class GaRadioGroupComponent implements ControlValueAccessor {\n /** Name of the radio button group. All radio buttons inside this group will use this name. */\n readonly name = input<string>(`ga-radio-group-${nextUniqueId++}`);\n /**\n * Value for the radio-group. Should equal the value of the selected radio button if there is\n * a corresponding radio button with a matching value. If there is not such a corresponding\n * radio button, this value persists to be applied in case a new radio button is added with a\n * matching value.\n */\n readonly value = input<string | null>(null);\n /** Whether the radio group is disabled */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Event emitted when the group value changes.\n * Change events are only emitted when the value changes due to user interaction with\n * a radio button (the same behavior as `<input type=\"radio\">`).\n */\n readonly change = output<string | null>();\n\n readonly valueModel = linkedSignal(() => this.value());\n readonly disabledModel = linkedSignal(() => this.disabled());\n\n private _onTouched?: () => any;\n private _onModelChanged?: (value: any) => void;\n\n registerOnChange(fn: (value: any) => void) {\n this._onModelChanged = fn;\n }\n\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n writeValue(value: any) {\n this.valueModel.set(value);\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabledModel.set(isDisabled);\n }\n\n onValueChange(value: string | null) {\n if (this.valueModel() === value) {\n return;\n }\n this.valueModel.set(value);\n this.change.emit(value);\n if (this._onModelChanged) {\n this._onModelChanged(value);\n }\n }\n\n onBlur() {\n if (this._onTouched) {\n this._onTouched();\n }\n }\n}\n","<ng-content></ng-content>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n HostAttributeToken,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { GaRadioGroupComponent } from './radio-group.component';\nimport { injectNgControlState } from '../utils/error-state';\n\n// Increasing integer for generating unique ids for radio button components.\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-radio-button',\n templateUrl: './radio-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ga-radio-button',\n '[class.ga-radio-button--invalid]': 'invalid()',\n '[attr.id]': 'null',\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n },\n})\nexport class GaRadioButtonComponent {\n private readonly radioGroup = inject(GaRadioGroupComponent, {\n optional: true,\n });\n\n protected readonly tabindex = inject(new HostAttributeToken('tabindex'), {\n optional: true,\n });\n\n private readonly implicitNgControlState = injectNgControlState();\n\n private _uniqueId = `ga-radio-button-${++nextUniqueId}`;\n\n /** The value attribute of the native input element */\n readonly value = input<string | null>(null);\n readonly inputId = input<string | null>(null, { alias: 'id' });\n readonly inputName = input<string | null>(null, { alias: 'name' });\n readonly inputChecked = input(false, {\n alias: 'checked',\n transform: booleanAttribute,\n });\n readonly inputDisabled = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly ariaLabelledby = input<string | null>(null, {\n alias: 'aria-labelledby',\n });\n readonly ariaDescribedby = input<string | null>(null, {\n alias: 'aria-describedby',\n });\n readonly ariaInvalid = input<string | null>(null, { alias: 'aria-invalid' });\n readonly ariaErrormessage = input<string | null>(null, {\n alias: 'aria-errormessage',\n });\n\n /**\n * Event emitted when the group value changes.\n * Change events are only emitted when the value changes due to user interaction with\n * a radio button (the same behavior as `<input type=\"radio\">`).\n */\n readonly change = output<string | null>();\n\n readonly id = computed(() => this.inputId() ?? this._uniqueId);\n readonly name = computed(\n () => this.radioGroup?.name() ?? this.inputName() ?? this._uniqueId,\n );\n readonly disabled = computed(\n () => this.radioGroup?.disabledModel() || this.inputDisabled(),\n );\n\n /** @ignore */\n readonly invalid = computed(() => {\n return this.ariaInvalid()\n ? this.ariaInvalid() === 'true'\n : this.implicitNgControlState.inError();\n });\n\n protected readonly checked = computed(\n () => this.radioGroup?.valueModel() === this.value() || this.inputChecked(),\n );\n\n onInputChange(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n\n if (this.disabled()) {\n return;\n }\n\n this.change.emit(this.value());\n this.radioGroup?.onValueChange(this.value());\n }\n\n onBlur() {\n this.radioGroup?.onBlur();\n }\n}\n","<input\n type=\"radio\"\n class=\"ga-radio-button__native\"\n [attr.id]=\"id()\"\n [name]=\"name()\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [attr.tabindex]=\"tabindex\"\n [attr.value]=\"value()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.aria-errormessage]=\"ariaErrormessage()\"\n (change)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"\n/>\n\n<div class=\"ga-radio-button__marker\"></div>\n<label class=\"ga-radio-button__label\" [attr.for]=\"id()\"\n ><ng-content></ng-content\n></label>\n","import { NgModule } from '@angular/core';\nimport { GaRadioButtonComponent } from './radio-button.component';\nimport { GaRadioGroupComponent } from './radio-group.component';\n\n@NgModule({\n imports: [GaRadioButtonComponent, GaRadioGroupComponent],\n exports: [GaRadioButtonComponent, GaRadioGroupComponent],\n})\nexport class GaRadioModule {}\n","import { CdkOption } from '@angular/cdk/listbox';\nimport {\n afterEveryRender,\n booleanAttribute,\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { GaSelectComponent } from './select.component';\nimport { GaCheckboxModule } from '../checkbox';\nimport { GaRadioModule } from '../radio';\n\n@Component({\n selector: 'ga-option',\n imports: [GaCheckboxModule, GaRadioModule],\n templateUrl: './option.component.html',\n hostDirectives: [\n {\n directive: CdkOption,\n inputs: [\n 'cdkOption: value',\n 'cdkOptionDisabled: disabled',\n 'cdkOptionTypeaheadLabel: typeaheadLabel',\n ],\n },\n ],\n host: {\n class: 'ga-dropdown__item',\n '[class.ga-dropdown__item--selected]': 'selected()',\n '[class.ga-dropdown__item--disabled]': 'cdkOption.disabled',\n '[class.ga-dropdown__item--active]': 'active() && !cdkOption.disabled',\n '(click)': 'onClick()',\n '[attr.hidden]': `hidden() ? '' : null`,\n },\n})\nexport class GaOptionComponent<InputType = any> {\n private readonly _isSelected = signal(false);\n private readonly _isActive = signal(false);\n protected readonly selectComponent = inject(GaSelectComponent);\n\n readonly cdkOption = inject(CdkOption, { self: true });\n\n readonly value = input<InputType | null>(null);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly hidden = input(false, { transform: booleanAttribute });\n readonly withInput = input(this.selectComponent.multiple(), {\n transform: booleanAttribute,\n });\n\n readonly selected = computed(() => {\n if (!this._isSelected()) {\n return false;\n }\n\n if (\n this.cdkOption.value !== undefined &&\n this.cdkOption.value !== null &&\n this.cdkOption.value !== ''\n ) {\n return true;\n }\n\n return this.selectComponent.canSelectNullable();\n });\n readonly active = this._isActive.asReadonly();\n\n constructor() {\n afterEveryRender({\n read: () => {\n // NOTE: currently there is no other reliable way to track the selected state,\n // refactor once cdk will be based on signals or more appropriate events introduced\n this._isSelected.set(this.cdkOption.isSelected());\n this._isActive.set(this.cdkOption.isActive());\n },\n });\n\n // NOTE: this is a workaround to set the default empty value (null) for cdkOption\n if (this.value() !== this.cdkOption && this.cdkOption.value === undefined) {\n this.cdkOption.value = this.value();\n }\n\n effect(() => {\n this.cdkOption.disabled = this.disabled() || this.hidden();\n });\n }\n\n onClick() {\n if (!this.cdkOption.disabled) {\n this.selectComponent.autoClose();\n }\n }\n}\n","@if (withInput()) {\n @if (selectComponent.multiple()) {\n <ga-checkbox\n [checked]=\"selected()\"\n [disabled]=\"disabled()\"\n aria-hidden=\"true\"\n style=\"pointer-events: none\"\n tabindex=\"-1\"\n />\n } @else {\n <ga-radio-button\n [checked]=\"selected()\"\n [disabled]=\"disabled()\"\n aria-hidden=\"true\"\n style=\"pointer-events: none\"\n tabindex=\"-1\"\n />\n }\n}\n<div class=\"ga-dropdown__item-label\"><ng-content /></div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ga-select-value',\n template: `<ng-content />`,\n})\nexport class GaSelectValueComponent {}\n","import { Component, computed, inject } from '@angular/core';\nimport { GaSelectComponent } from './select.component';\nimport { X } from 'lucide-angular';\nimport { GaIconModule } from '../icon';\nimport { GaOptionComponent } from './option.component';\n\n@Component({\n selector: 'ga-select-default-value',\n templateUrl: './select-default-value.component.html',\n imports: [GaIconModule],\n host: {\n class: 'ga-select__value',\n },\n})\nexport class GaSelectDefaultValueComponent {\n protected readonly selectComponent = inject(GaSelectComponent);\n\n protected readonly icons = { X };\n\n protected readonly singleViewValue = computed(() => {\n const options = this.selectComponent.selectedOptions();\n if (!options.length) {\n return '';\n }\n return options[0].cdkOption.getLabel();\n });\n\n protected deselectOption(option: GaOptionComponent): void {\n this.selectComponent.deselectValue(option.cdkOption.value);\n }\n}\n","@if (selectComponent.multiple()) {\n @for (option of selectComponent.selectedOptions(); track option) {\n <div\n class=\"ga-tag\"\n [class.ga-tag--interactive-selected]=\"!selectComponent.disabled()\"\n [class.ga-tag--interactive-selected-disabled]=\"selectComponent.disabled()\"\n >\n <span class=\"ga-tag__label\">{{ option.cdkOption.getLabel() }}</span>\n @if (!selectComponent.disabled()) {\n <div class=\"ga-tag__separator\"></div>\n <ga-icon\n [icon]=\"icons.X\"\n size=\"16\"\n class=\"ga-tag__icon\"\n (click)=\"deselectOption(option); $event.stopPropagation()\"\n />\n }\n </div>\n }\n} @else {\n {{ singleViewValue() }}\n}\n","import { Injectable, makeEnvironmentProviders } from '@angular/core';\n\nexport function GA_SELECT_I18N_FACTORY() {\n return new GaSelectI18nDefault();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_SELECT_I18N_FACTORY,\n})\nexport abstract class GaSelectI18n {\n abstract clearLabel: string;\n abstract defaultSearchInputLabel: string;\n}\n\n@Injectable()\nexport class GaSelectI18nDefault extends GaSelectI18n {\n /** A label for the clear button */\n clearLabel = 'Clear';\n\n /** A default label for the search input */\n defaultSearchInputLabel = 'Search';\n}\n\nexport function provideGaSelectI18n(\n value: GaSelectI18n | (() => GaSelectI18n),\n) {\n return makeEnvironmentProviders([\n typeof value === 'function'\n ? { provide: GaSelectI18n, useFactory: value }\n : { provide: GaSelectI18n, useValue: value },\n ]);\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaSpinnerComponent } from './spinner.component';\n\n@NgModule({\n imports: [GaSpinnerComponent],\n exports: [GaSpinnerComponent],\n})\nexport class GaSpinnerModule {}\n","import { Component } from '@angular/core';\nimport { GaSpinnerModule } from '../spinner';\n\n@Component({\n selector: 'ga-select-dropdown-spinner',\n template: `<ga-spinner size=\"16\" />`,\n imports: [GaSpinnerModule],\n host: {\n class: 'ga-dropdown__spinner',\n },\n})\nexport class GaSelectDropdownSpinnerComponent {}\n","import { CdkListbox } from '@angular/cdk/listbox';\nimport {\n booleanAttribute,\n Component,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\nimport { GaSelectDropdownSpinnerComponent } from './select-dropdown-spinner.component';\n\n@Component({\n selector: 'ga-select-dropdown',\n templateUrl: './select-dropdown.component.html',\n imports: [GaSelectDropdownSpinnerComponent],\n hostDirectives: [CdkListbox],\n host: {\n class: 'ga-dropdown ga-dropdown__content',\n },\n})\nexport class GaSelectDropdownComponent {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly loading = input(false, { transform: booleanAttribute });\n\n resetScroll() {\n this.elementRef.nativeElement.scrollTo(0, 0);\n }\n}\n","@if (loading()) {\n <ga-select-dropdown-spinner />\n} @else {\n <ng-content />\n}\n","import {\n AfterContentInit,\n afterNextRender,\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n linkedSignal,\n model,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { GaIconModule } from '../icon/icon.module';\nimport { ChevronDown, ChevronUp, CircleX } from 'lucide-angular';\nimport { GaButtonModule } from '../button/button.module';\nimport {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ConnectedPosition,\n createRepositionScrollStrategy,\n OverlayModule,\n} from '@angular/cdk/overlay';\nimport { GaIconData } from '../icon';\nimport { GaOptionComponent } from './option.component';\nimport { CdkListbox } from '@angular/cdk/listbox';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { GaSelectValueComponent } from './select-value.component';\nimport { GaSelectDefaultValueComponent } from './select-default-value.component';\nimport { GaLabelledByFormFieldDirective } from '../form-field/labelled-by-form-field.directive';\nimport { GaSelectI18n } from './select-i18n.service';\nimport { injectNgControlState } from '../utils/error-state';\nimport { GaFormFieldConnector } from '../form-field/form-field-connector';\nimport { GaSelectDropdownComponent } from './select-dropdown.component';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-select',\n templateUrl: './select.component.html',\n imports: [\n GaIconModule,\n GaButtonModule,\n OverlayModule,\n GaSelectDefaultValueComponent,\n ],\n hostDirectives: [\n CdkOverlayOrigin,\n {\n directive: GaLabelledByFormFieldDirective,\n inputs: ['aria-labelledby'],\n },\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaSelectComponent),\n multi: true,\n },\n ],\n host: {\n role: 'combobox',\n '[attr.id]': 'id()',\n class: 'ga-select',\n '[class.ga-select--multi]': 'multiple()',\n '[class.ga-select--expanded]': 'isOpen()',\n '[class.ga-select--disabled]': 'disabled()',\n '[class.ga-select--invalid]': 'invalid()',\n '[class.ga-select--empty]': '!hasValue()',\n 'aria-haspopup': 'listbox',\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.aria-controls]': 'isOpen() ? cdkListbox().id : null',\n '[attr.aria-invalid]': 'invalid()',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.aria-owns]': 'isOpen() && searchable() ? cdkListbox().id : null',\n '[attr.aria-activedescendant]':\n 'isOpen() && !searchable() ? activeDescendantId() : null',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '(click)': 'toggle()',\n '(keydown.arrowdown)': 'open(); $event.preventDefault()',\n '(keydown.space)': 'open(); $event.preventDefault()',\n '(keydown.enter)': 'open(); $event.preventDefault()',\n '(keydown.backspace)': 'clearValue(); $event.preventDefault()',\n },\n})\nexport class GaSelectComponent\n implements ControlValueAccessor, AfterContentInit\n{\n private readonly _uniqueId = `ga-select-${++nextUniqueId}`;\n\n protected readonly icons = { CircleX };\n\n private _onTouched?: () => any;\n private _onModelChanged?: (value: any) => void;\n protected readonly positions: ConnectedPosition[] = [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8,\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n ];\n\n private readonly injector = inject(Injector);\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n protected readonly i18n = inject(GaSelectI18n);\n protected readonly overlayOrigin = inject(CdkOverlayOrigin);\n protected readonly repositionScrollStrategy = createRepositionScrollStrategy(\n this.injector,\n );\n private readonly implicitNgControlState = injectNgControlState();\n\n private readonly _isOpen = signal(false);\n private shouldRecoverFocus = false;\n\n readonly value = model<any | any[] | null>(null);\n readonly placeholder = input<string>('');\n readonly searchInputLabel = input<string | null>(null);\n readonly disabledInput = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly invalidInput = input(null, {\n alias: 'invalid',\n transform: booleanAttribute,\n });\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly compareWith = input<(o1: any, o2: any) => boolean>();\n readonly searchable = input(false, { transform: booleanAttribute });\n readonly clearable = input(false, { transform: booleanAttribute });\n readonly clearableLabel = input<string>();\n readonly canSelectNullable = input(false, {\n transform: booleanAttribute,\n });\n readonly textValue = model<string>('');\n readonly leftIcon = input<GaIconData>();\n readonly idInput = input<string | null>(null, { alias: 'id' });\n\n readonly opened = output();\n readonly closed = output();\n\n // TODO: if we rename this to options, it breaks, why?\n readonly gaOptions = contentChildren(GaOptionComponent, {\n descendants: true,\n read: GaOptionComponent,\n });\n protected readonly cdkListbox = contentChild.required(CdkListbox);\n protected readonly gaDropdown = contentChild.required(\n GaSelectDropdownComponent,\n );\n protected readonly customSelectValue = contentChild(GaSelectValueComponent);\n protected readonly inputSearch =\n viewChild<ElementRef<HTMLInputElement>>('inputSearch');\n protected readonly content = viewChild('ngContent', { read: ElementRef });\n protected readonly connectedOverlay = viewChild(CdkConnectedOverlay);\n\n readonly id = computed(() => {\n return this.idInput() ?? this._uniqueId;\n });\n readonly isOpen = this._isOpen.asReadonly();\n readonly disabled = linkedSignal(() => this.disabledInput());\n protected readonly menuStatusIcon = computed(() => {\n return this._isOpen() ? ChevronUp : ChevronDown;\n });\n protected readonly visibleOptions = computed(() => {\n return this.gaOptions().filter((option) => !option.hidden());\n });\n readonly selectedOptions = computed(() => {\n return this.gaOptions().filter((option) => option.selected());\n });\n readonly activeDescendantId = computed(() => {\n const activeOption = this.gaOptions().find((option) => option.active());\n return activeOption?.cdkOption.id;\n });\n readonly hasValue = computed(() => {\n if (!this.customSelectValue()) {\n // When no custom value component exists, we determine if there's a value\n // by checking selected options (which provide the display labels).\n return this.gaOptions().some((option) => option.selected());\n }\n // With a custom value component, we can check the value directly\n // which is useful for asynchronous selects, e.g. to display selected value without options\n return this.value() !== null || this.canSelectNullable();\n });\n\n readonly invalid = computed(() => {\n return this.invalidInput() ?? this.implicitNgControlState.inError();\n });\n\n constructor() {\n effect(() => {\n // if the select became disabled while open, close it\n if (this.disabled() && this._isOpen()) {\n this.close();\n }\n });\n\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() => formFieldConnector.controlDisabled.set(this.disabled()));\n }\n\n effect(() => {\n const options = this.visibleOptions();\n untracked(() => {\n if (!this.isOpen()) {\n return;\n }\n if (!options.some((option) => option.cdkOption.isActive())) {\n const firstOption = options.find(\n (option) => !option.cdkOption.disabled,\n );\n const selectedOption = options.find((option) =>\n option.cdkOption.isSelected(),\n );\n if (selectedOption && !this.textValue()) {\n this.cdkListbox()._setActiveOption(selectedOption.cdkOption);\n } else if (firstOption) {\n // if no active option, set the first enabled as active\n this.cdkListbox()._setActiveOption(firstOption.cdkOption);\n }\n }\n this.connectedOverlay()?.overlayRef?.updatePosition();\n });\n });\n\n effect(() => {\n // update the overlayPosition since it may change size when selecting/deselecting options\n this.value();\n untracked(() => {\n if (this.multiple()) {\n setTimeout(() => {\n this.connectedOverlay()?.overlayRef?.updatePosition();\n });\n }\n });\n });\n }\n\n ngAfterContentInit() {\n effect(\n () => {\n this.cdkListbox().multiple = this.multiple();\n this.cdkListbox().useActiveDescendant = this.searchable();\n this.cdkListbox().compareWith = this.compareWith();\n this.cdkListbox().value = this.multiple()\n ? (this.value() as any[])\n : [this.value()];\n },\n { injector: this.injector },\n );\n\n // track value changes (pull)\n this.cdkListbox().valueChange.subscribe(({ value }) => {\n if (!this.multiple()) {\n [value] = value;\n }\n this._onModelChanged?.(value);\n this.value.set(value);\n // this is needed because value could be also changed via keyboard\n this.autoClose();\n });\n }\n\n writeValue(value: any) {\n this.value.set(value);\n }\n\n registerOnChange(fn: any) {\n this._onModelChanged = fn;\n }\n\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n setDisabledState(disabled: boolean) {\n this.disabled.set(disabled);\n }\n\n toggle() {\n if (this._isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open() {\n if (this.disabled() || this._isOpen()) {\n return;\n }\n this._isOpen.set(true);\n }\n\n close() {\n if (!this._isOpen()) {\n return;\n }\n this._isOpen.set(false);\n }\n\n autoClose() {\n // close that was initiated by clicking the option\n if (!this.multiple()) {\n this.shouldRecoverFocus = true;\n this.close();\n }\n }\n\n focusListbox() {\n this.cdkListbox().focus();\n }\n\n setPreviousItemActive() {\n this.setItemActive(-1);\n }\n\n setNextItemActive() {\n this.setItemActive(1);\n }\n\n setActiveItemAsSelected() {\n const options = this.gaOptions();\n let activeOption = options.find((option) => option.cdkOption.isActive());\n if (!activeOption && options.length > 0) {\n activeOption = options[0];\n }\n if (activeOption) {\n const { cdkOption } = activeOption;\n if (!this.multiple() && cdkOption.isSelected()) {\n // if single select and the active option is already selected, do nothing\n return;\n }\n this.cdkListbox().toggle(cdkOption);\n this.syncValue();\n this._onModelChanged?.(this.value());\n }\n }\n\n onOverlayKeydown(event: KeyboardEvent) {\n if (event.code === 'Escape') {\n this.shouldRecoverFocus = true;\n } else if (event.code === 'Tab') {\n this.close();\n }\n }\n\n protected clearValue() {\n if (!this.clearable() || !this.searchable()) {\n return;\n }\n if (\n this.elementRef.nativeElement !== document.activeElement &&\n this.inputSearch()?.nativeElement !== document.activeElement\n ) {\n this._onTouched?.();\n }\n const value = this.multiple() ? [] : null;\n this.value.set(value);\n this._onModelChanged?.(value);\n this.autoClose();\n }\n\n protected onInputKeyDown(event: KeyboardEvent) {\n switch (event.code) {\n case 'ArrowDown':\n this.setNextItemActive();\n event.preventDefault();\n event.stopPropagation();\n break;\n case 'ArrowUp':\n this.setPreviousItemActive();\n event.preventDefault();\n event.stopPropagation();\n break;\n case 'Space':\n event.stopPropagation();\n break;\n case 'Enter':\n this.setActiveItemAsSelected();\n this.autoClose();\n event.preventDefault();\n event.stopPropagation();\n break;\n case 'Tab':\n this.close();\n break;\n case 'Backspace':\n if (this.textValue() === '') {\n this.clearValue();\n }\n event.stopPropagation();\n break;\n }\n }\n\n protected onOverlayAttach() {\n this.shouldRecoverFocus = false;\n this._isOpen.set(true);\n if (this.searchable()) {\n this.inputSearch()!.nativeElement.focus();\n } else {\n this.focusListbox();\n }\n this.scrollActiveOptionIntoView();\n this.opened.emit();\n }\n\n protected onOverlayDetach() {\n this._isOpen.set(false);\n if (\n this.inputSearch()?.nativeElement === document.activeElement ||\n this.shouldRecoverFocus\n ) {\n this.elementRef.nativeElement.focus();\n }\n this.textValue.set('');\n this._onTouched?.();\n this.closed.emit();\n }\n\n deselectValue(value: any) {\n this.cdkListbox().deselectValue(value);\n this.syncValue();\n this._onModelChanged?.(this.value());\n }\n\n private syncValue() {\n let { value } = this.cdkListbox();\n if (!this.multiple()) {\n [value] = value;\n }\n this.value.set(value);\n }\n\n private setItemActive(direction: 1 | -1) {\n const options = this.gaOptions();\n const currentIndex = options.findIndex(({ cdkOption }) =>\n cdkOption.isActive(),\n );\n\n const findNextEnabled = (startIndex: number) => {\n let index = startIndex;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for (const _ of options) {\n // calculate next index with wrapping (using modulo)\n index = (index + direction + options.length) % options.length;\n if (!options[index].cdkOption.disabled) {\n return index;\n }\n }\n return -1; // no enabled options found\n };\n\n const nextIndex = findNextEnabled(currentIndex);\n if (nextIndex !== -1) {\n this.cdkListbox()._setActiveOption(options[nextIndex].cdkOption);\n }\n }\n\n private scrollActiveOptionIntoView() {\n // NOTE: since cdkListbox is not destroyed on close,\n // we need to reset the active option every time the overlay is opened\n const firstEnabledOption = this.visibleOptions().find(\n (option) => !option.cdkOption.disabled,\n );\n const selectedOption = this.visibleOptions().find((option) =>\n option.cdkOption.isSelected(),\n );\n if (selectedOption) {\n this.cdkListbox()._setActiveOption(selectedOption.cdkOption);\n } else if (firstEnabledOption) {\n this.cdkListbox()._setActiveOption(firstEnabledOption.cdkOption);\n }\n\n afterNextRender(\n {\n mixedReadWrite: () => {\n // NOTE: since dropdown is not destroyed on close,\n // we need to reset scroll position every time the overlay is opened\n // to ensure consistent scroll position when reopening\n this.gaDropdown().resetScroll();\n\n const activeOption = this.visibleOptions().find((option) =>\n option.cdkOption.isActive(),\n );\n if (activeOption) {\n activeOption.cdkOption.element.scrollIntoView({\n block: 'center',\n inline: 'nearest',\n });\n }\n },\n },\n { injector: this.injector },\n );\n }\n}\n","@if (leftIcon()) {\n <ga-icon [icon]=\"leftIcon()!\" />\n}\n\n<div class=\"ga-select__main-area\">\n @if (hasValue() && (!textValue() || multiple())) {\n @if (customSelectValue()) {\n <div class=\"ga-select__value\">\n <ng-content select=\"ga-select-value\" />\n </div>\n } @else {\n <ga-select-default-value />\n }\n } @else if (!searchable()) {\n <div class=\"ga-select__placeholder\">\n {{ placeholder() }}\n </div>\n }\n\n @if (searchable()) {\n <input\n #inputSearch\n type=\"text\"\n class=\"ga-select__input\"\n aria-autocomplete=\"list\"\n [value]=\"textValue()\"\n (input)=\"open(); textValue.set(inputSearch.value)\"\n (click)=\"open(); $event.stopPropagation()\"\n [attr.aria-controls]=\"isOpen() ? cdkListbox().id : null\"\n [attr.aria-activedescendant]=\"isOpen() ? activeDescendantId() : null\"\n [attr.aria-label]=\"searchInputLabel() ?? i18n.defaultSearchInputLabel\"\n [placeholder]=\"hasValue() ? '' : placeholder()\"\n (keydown)=\"onInputKeyDown($event)\"\n tabindex=\"-1\"\n [disabled]=\"disabled()\"\n />\n }\n</div>\n\n<div class=\"ga-select__suffix\">\n @if (clearable() && hasValue()) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n (click)=\"clearValue(); $event.stopPropagation()\"\n [attr.aria-label]=\"clearableLabel() ?? i18n.clearLabel\"\n style=\"font-size: 0\"\n >\n <ga-icon [icon]=\"icons.CircleX\" size=\"16\" />\n </button>\n }\n\n <ga-icon [icon]=\"menuStatusIcon()\" class=\"ga-select__action-icon\" />\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"repositionScrollStrategy\"\n (overlayOutsideClick)=\"close()\"\n (attach)=\"onOverlayAttach()\"\n (detach)=\"onOverlayDetach()\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n>\n <ng-content select=\"ga-select-dropdown\" />\n</ng-template>\n","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'ga-optgroup',\n template: `\n @if (label()) {\n <div class=\"ga-dropdown__caption\">{{ label() }}</div>\n }\n <ng-content />\n `,\n host: {\n role: 'group',\n },\n})\nexport class GaOptgroupComponent {\n readonly label = input<string>();\n}\n","import { Directive, Provider, forwardRef } from '@angular/core';\nimport { NG_VALIDATORS, RequiredValidator } from '@angular/forms';\n\n/**\n * @internal - Internal validator provider for ga-select required validation\n */\nexport const GA_SELECT_REQUIRED_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => GaSelectRequiredValidator),\n multi: true,\n};\n\n/**\n * @internal - Internal directive for ga-select required validation\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: `ga-select[required][formControlName], ga-select[required][formControl], ga-select[required][ngModel]`,\n providers: [GA_SELECT_REQUIRED_VALIDATOR],\n})\nexport class GaSelectRequiredValidator extends RequiredValidator {}\n","import { NgModule } from '@angular/core';\n\nimport { GaSelectComponent } from './select.component';\nimport { GaOptionComponent } from './option.component';\nimport { GaOptgroupComponent } from './opt-group.component';\nimport { GaSelectDropdownComponent } from './select-dropdown.component';\nimport { GaSelectDropdownSpinnerComponent } from './select-dropdown-spinner.component';\nimport { GaSelectRequiredValidator } from './select-required.validator';\nimport { GaSelectValueComponent } from './select-value.component';\n\n@NgModule({\n imports: [\n GaSelectComponent,\n GaOptionComponent,\n GaOptgroupComponent,\n GaSelectDropdownComponent,\n GaSelectDropdownSpinnerComponent,\n GaSelectValueComponent,\n GaSelectRequiredValidator,\n ],\n exports: [\n GaSelectComponent,\n GaOptionComponent,\n GaOptgroupComponent,\n GaSelectDropdownComponent,\n GaSelectDropdownSpinnerComponent,\n GaSelectValueComponent,\n GaSelectRequiredValidator,\n ],\n})\nexport class GaSelectModule {}\n","import { CdkOption } from '@angular/cdk/listbox';\nimport {\n afterEveryRender,\n booleanAttribute,\n Component,\n computed,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { GaDataSelectComponent } from './data-select.component';\nimport { GaCheckboxModule } from '../checkbox';\nimport { GaRadioModule } from '../radio';\n\n@Component({\n selector: 'ga-data-option',\n imports: [GaCheckboxModule, GaRadioModule],\n templateUrl: './data-option.component.html',\n hostDirectives: [\n {\n directive: CdkOption,\n inputs: [\n 'cdkOption: value',\n 'cdkOptionDisabled: disabled',\n 'cdkOptionTypeaheadLabel: typeaheadLabel',\n ],\n },\n ],\n host: {\n class: 'ga-dropdown__item',\n '[class.ga-dropdown__item--selected]': 'selected()',\n '[class.ga-dropdown__item--disabled]': 'cdkOption.disabled',\n '[class.ga-dropdown__item--active]': 'active() && !cdkOption.disabled',\n '(keydown.enter)': 'autoClose($event);',\n '(keydown.space)': 'autoClose($event);',\n '(click)': 'autoClose();',\n },\n})\nexport class GaDataOptionComponent<InputType = any> {\n private readonly _isSelected = signal(false);\n private readonly _isActive = signal(false);\n protected readonly selectComponent = inject(GaDataSelectComponent);\n\n readonly cdkOption = inject(CdkOption, { self: true });\n\n readonly value = input<InputType | null>(null);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly withInput = input(this.selectComponent.multiple(), {\n transform: booleanAttribute,\n });\n\n readonly selected = computed(() => {\n if (!this._isSelected()) {\n return false;\n }\n\n if (\n this.cdkOption.value !== undefined &&\n this.cdkOption.value !== null &&\n this.cdkOption.value !== ''\n ) {\n return true;\n }\n\n return this.selectComponent.canSelectNullable();\n });\n readonly active = this._isActive.asReadonly();\n\n constructor() {\n // NOTE: this is a workaround to set the default empty value (null) for cdkOption\n if (\n this.value() !== this.cdkOption.value &&\n this.cdkOption.value === undefined\n ) {\n this.cdkOption.value = this.value();\n }\n\n afterEveryRender({\n read: () => {\n // NOTE: currently there is no other reliable way to track the selected state,\n // refactor once cdk will be based on signals or more appropriate events introduced\n this._isSelected.set(this.cdkOption.isSelected());\n this._isActive.set(this.cdkOption.isActive());\n },\n });\n }\n\n autoClose(event?: Event) {\n if (this.cdkOption.isSelected()) {\n // if already selected, auto close\n this.selectComponent.autoClose();\n event?.preventDefault();\n }\n }\n}\n","@if (withInput()) {\n @if (selectComponent.multiple()) {\n <ga-checkbox\n [checked]=\"selected()\"\n [disabled]=\"disabled()\"\n aria-hidden=\"true\"\n style=\"pointer-events: none\"\n tabindex=\"-1\"\n />\n } @else {\n <ga-radio-button\n [checked]=\"selected()\"\n [disabled]=\"disabled()\"\n aria-hidden=\"true\"\n style=\"pointer-events: none\"\n tabindex=\"-1\"\n />\n }\n}\n<div class=\"ga-dropdown__item-label\"><ng-content /></div>\n","import { Injectable, makeEnvironmentProviders } from '@angular/core';\n\nexport function GA_DATA_SELECT_I18N_FACTORY() {\n return new GaDataSelectI18nDefault();\n}\n\n@Injectable({\n providedIn: 'root',\n useFactory: GA_DATA_SELECT_I18N_FACTORY,\n})\nexport abstract class GaDataSelectI18n {\n abstract clearLabel: string;\n abstract searchInputLabel: string;\n abstract noOptionsLabel: string;\n abstract displayLimitReachedLabel: (counter: number) => string;\n}\n\n@Injectable()\nexport class GaDataSelectI18nDefault extends GaDataSelectI18n {\n /** A label for the clear button */\n clearLabel = 'Clear';\n\n /** A label for the search input */\n searchInputLabel = 'Search';\n\n /** A label shown when there are no options to display */\n noOptionsLabel = 'No options';\n\n /** A label shown when the display limit is reached in multi-select mode */\n displayLimitReachedLabel = (counter: number) => `+${counter} more`;\n}\n\nexport function provideGaDataSelectI18n(\n value: GaDataSelectI18n | (() => GaDataSelectI18n),\n) {\n return makeEnvironmentProviders([\n typeof value === 'function'\n ? { provide: GaDataSelectI18n, useFactory: value }\n : { provide: GaDataSelectI18n, useValue: value },\n ]);\n}\n","import { Component, computed, inject, input, TemplateRef } from '@angular/core';\nimport { GaDataSelectComponent } from './data-select.component';\nimport { X } from 'lucide-angular';\nimport { GaIconModule } from '../icon';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { GaDataSelectI18n } from './data-select-i18n.service';\n\n@Component({\n selector: 'ga-data-select-value',\n templateUrl: './data-select-value.component.html',\n imports: [GaIconModule, NgTemplateOutlet],\n host: {\n class: 'ga-select__value',\n },\n})\nexport class GaDataSelectValueComponent {\n protected readonly selectComponent = inject(GaDataSelectComponent);\n protected readonly i18n = inject(GaDataSelectI18n);\n\n protected readonly icons = { X };\n\n readonly customValueTemplate = input<TemplateRef<any>>();\n\n protected readonly customValueTemplateContext = (item: any) => {\n if (!item) {\n return { $implicit: '', value: null, item: null };\n }\n return {\n $implicit: this.selectComponent.getItemLabel(item),\n value: this.selectComponent.getItemValue(item),\n item,\n };\n };\n\n protected readonly singleViewValue = computed(() => {\n if (!this.selectComponent.hasValue()) {\n return '';\n }\n const selectValue = this.selectComponent.value();\n if (!this.selectComponent.bindValue()) {\n return this.selectComponent.getItemLabel(selectValue);\n }\n const item = this.selectComponent\n .items()\n .find((item) =>\n this.selectComponent.compareFn()(\n this.selectComponent.getItemValue(item),\n selectValue,\n ),\n );\n return this.selectComponent.getItemLabel(item);\n });\n\n protected readonly selectedItems = computed(() => {\n const value = this.selectComponent.value();\n if (!this.selectComponent.hasValue() || !Array.isArray(value)) {\n return [];\n }\n if (!this.selectComponent.bindValue()) {\n return value;\n }\n return this.selectComponent\n .items()\n .filter((item) =>\n value.some((v) =>\n this.selectComponent.compareFn()(\n this.selectComponent.getItemValue(item),\n v,\n ),\n ),\n );\n });\n\n protected readonly visibleSelectedItems = computed(() => {\n const items = this.selectedItems();\n const limit = this.selectComponent.valueDisplayLimit();\n if (limit === null || limit >= items.length) {\n return items;\n }\n return items.slice(0, limit);\n });\n\n protected readonly hiddenItemsCount = computed(() => {\n return this.selectedItems().length - this.visibleSelectedItems().length;\n });\n\n protected deselectOption(value: any): void {\n this.selectComponent.deselectValue(value);\n }\n}\n","@if (selectComponent.multiple()) {\n @for (\n selectedItem of visibleSelectedItems();\n track selectComponent.getItemValue(selectedItem)\n ) {\n <div\n class=\"ga-tag\"\n [class.ga-tag--interactive-selected]=\"!selectComponent.disabled()\"\n [class.ga-tag--interactive-selected-disabled]=\"selectComponent.disabled()\"\n >\n <span class=\"ga-tag__label\">\n @if (customValueTemplate(); as templateRef) {\n <ng-container\n [ngTemplateOutlet]=\"templateRef\"\n [ngTemplateOutletContext]=\"customValueTemplateContext(selectedItem)\"\n />\n } @else {\n {{ selectComponent.getItemLabel(selectedItem) }}\n }\n </span>\n @if (!selectComponent.disabled()) {\n <div class=\"ga-tag__separator\"></div>\n <ga-icon\n [icon]=\"icons.X\"\n size=\"16\"\n class=\"ga-tag__icon\"\n (click)=\"\n deselectOption(selectComponent.getItemValue(selectedItem));\n $event.stopPropagation()\n \"\n />\n }\n </div>\n }\n @if (hiddenItemsCount() > 0) {\n <div\n class=\"ga-tag\"\n [class.ga-tag--interactive-selected]=\"!selectComponent.disabled()\"\n [class.ga-tag--interactive-selected-disabled]=\"selectComponent.disabled()\"\n >\n <span class=\"ga-tag__label\">{{\n i18n.displayLimitReachedLabel(hiddenItemsCount())\n }}</span>\n </div>\n }\n} @else {\n @if (customValueTemplate(); as templateRef) {\n <ng-container\n [ngTemplateOutlet]=\"templateRef\"\n [ngTemplateOutletContext]=\"\n customValueTemplateContext(selectComponent.selectedItem())\n \"\n />\n } @else {\n {{ singleViewValue() }}\n }\n}\n","import { Component } from '@angular/core';\nimport { GaSpinnerModule } from '../spinner';\n\n@Component({\n selector: 'ga-data-select-dropdown-spinner',\n template: `<ga-spinner size=\"16\" />`,\n imports: [GaSpinnerModule],\n host: {\n class: 'ga-dropdown__spinner',\n },\n})\nexport class GaDataSelectDropdownSpinnerComponent {}\n","import { CdkListbox } from '@angular/cdk/listbox';\nimport {\n booleanAttribute,\n Component,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\nimport { GaDataSelectDropdownSpinnerComponent } from './data-select-dropdown-spinner.component';\n\n@Component({\n selector: 'ga-data-select-dropdown',\n templateUrl: './data-select-dropdown.component.html',\n imports: [GaDataSelectDropdownSpinnerComponent],\n hostDirectives: [\n {\n directive: CdkListbox,\n inputs: [\n 'cdkListboxMultiple: multiple',\n 'cdkListboxUseActiveDescendant: useActiveDescendant',\n 'cdkListboxNavigationWrapDisabled: navigationWrapDisabled',\n 'cdkListboxCompareWith: compareWith',\n ],\n },\n ],\n host: {\n class: 'ga-dropdown ga-dropdown__content',\n },\n})\nexport class GaDataSelectDropdownComponent {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly cdkListbox = inject(CdkListbox, { self: true });\n\n readonly loading = input(false, { transform: booleanAttribute });\n\n resetScroll() {\n this.elementRef.nativeElement.scrollTo(0, 0);\n }\n}\n","<ng-content />\n\n@if (loading()) {\n <ga-data-select-dropdown-spinner />\n}\n","import { Component, input, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ga-data-optgroup',\n imports: [NgTemplateOutlet],\n template: `\n @if (customLabelTemplate(); as templateRef) {\n <div class=\"ga-dropdown__caption\">\n <ng-container\n [ngTemplateOutlet]=\"templateRef\"\n [ngTemplateOutletContext]=\"customLabelContext()\"\n />\n </div>\n } @else if (label()) {\n <div class=\"ga-dropdown__caption\">{{ label() }}</div>\n }\n <ng-content />\n `,\n host: {\n role: 'group',\n },\n})\nexport class GaDataOptgroupComponent {\n readonly label = input<string>();\n readonly customLabelTemplate = input<TemplateRef<any>>();\n readonly customLabelContext = input<any>();\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[gaDataSelectValueTpl]',\n})\nexport class GaDataSelectValueDirective {\n readonly templateRef = inject(TemplateRef, { self: true });\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[gaDataSelectOptionTpl]',\n})\nexport class GaDataSelectOptionLabelDirective {\n readonly templateRef = inject(TemplateRef, { self: true });\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[gaDataSelectOptgroupLabelTpl]',\n})\nexport class GaDataSelectOptgroupLabelDirective {\n readonly templateRef = inject(TemplateRef, { self: true });\n}\n","import {\n Component,\n ElementRef,\n OnDestroy,\n input,\n output,\n inject,\n booleanAttribute,\n computed,\n afterNextRender,\n} from '@angular/core';\n\n@Component({\n selector: 'ga-intersection-trigger',\n template: ``,\n styles: `\n :host {\n height: 0px;\n display: block;\n flex-shrink: 0;\n }\n `,\n})\nexport class GaIntersectionTriggerComponent implements OnDestroy {\n private observer?: IntersectionObserver;\n\n private readonly anchor = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly rootElement = input<ElementRef<HTMLElement>>();\n readonly rootMargin = input<string>('0px');\n readonly parentAsRoot = input(false, { transform: booleanAttribute });\n readonly trigger = output();\n\n protected root = computed(() => {\n return this.parentAsRoot()\n ? this.anchor.nativeElement.parentElement\n : this.rootElement()?.nativeElement;\n });\n\n constructor() {\n afterNextRender(() => {\n this.observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n this.trigger.emit();\n }\n },\n {\n root: this.root(),\n rootMargin: this.rootMargin(),\n threshold: 0,\n },\n );\n this.observer.observe(this.anchor.nativeElement);\n });\n }\n\n ngOnDestroy() {\n this.observer?.disconnect();\n }\n}\n","import {\n afterNextRender,\n booleanAttribute,\n Component,\n computed,\n contentChild,\n effect,\n ElementRef,\n forwardRef,\n inject,\n Injector,\n input,\n isDevMode,\n linkedSignal,\n model,\n numberAttribute,\n OnInit,\n output,\n signal,\n untracked,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { GaIconModule } from '../icon/icon.module';\nimport { ChevronDown, ChevronUp, CircleX } from 'lucide-angular';\nimport { GaButtonModule } from '../button/button.module';\nimport {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ConnectedPosition,\n createRepositionScrollStrategy,\n OverlayModule,\n} from '@angular/cdk/overlay';\nimport { GaIconData } from '../icon';\nimport { GaDataOptionComponent } from './data-option.component';\nimport { CdkListbox } from '@angular/cdk/listbox';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { GaDataSelectValueComponent } from './data-select-value.component';\nimport { GaLabelledByFormFieldDirective } from '../form-field/labelled-by-form-field.directive';\nimport { GaDataSelectI18n } from './data-select-i18n.service';\nimport { injectNgControlState } from '../utils/error-state';\nimport { GaFormFieldConnector } from '../form-field/form-field-connector';\nimport { GaDataSelectDropdownComponent } from './data-select-dropdown.component';\nimport { GaDataOptgroupComponent } from './data-optgroup.component';\nimport { GaDataSelectValueDirective } from './data-select-value.directive';\nimport { GaDataSelectOptionLabelDirective } from './data-select-option-label.directive';\nimport { GaDataSelectOptgroupLabelDirective } from './data-select-optgroup-label.directive';\nimport { IGaSelectOption } from './data-select-option.interface';\nimport { GaIntersectionTriggerComponent } from '../utils/intersection-trigger.directive';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-data-select',\n templateUrl: './data-select.component.html',\n imports: [\n GaIconModule,\n GaButtonModule,\n OverlayModule,\n GaDataSelectValueComponent,\n GaDataSelectDropdownComponent,\n GaDataOptionComponent,\n GaDataOptgroupComponent,\n GaIntersectionTriggerComponent,\n NgTemplateOutlet,\n ],\n hostDirectives: [\n CdkOverlayOrigin,\n {\n directive: GaLabelledByFormFieldDirective,\n inputs: ['aria-labelledby'],\n },\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaDataSelectComponent),\n multi: true,\n },\n ],\n host: {\n role: 'combobox',\n '[attr.id]': 'id()',\n class: 'ga-select',\n '[class.ga-select--multi]': 'multiple()',\n '[class.ga-select--expanded]': 'isOpen()',\n '[class.ga-select--disabled]': 'disabled()',\n '[class.ga-select--invalid]': 'invalid()',\n '[class.ga-select--empty]': '!hasValue()',\n 'aria-haspopup': 'listbox',\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.aria-controls]': 'isOpen() ? cdkListbox()?.id : null',\n '[attr.aria-invalid]': 'invalid()',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.aria-owns]': 'isOpen() && searchable() ? cdkListbox()?.id : null',\n '[attr.aria-activedescendant]':\n 'isOpen() && !searchable() ? activeDescendantId() : null',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '(click)': 'toggle()',\n '(keydown.arrowdown)': 'open(); $event.preventDefault()',\n '(keydown.space)': 'open(); $event.preventDefault()',\n '(keydown.enter)': 'open(); $event.preventDefault()',\n '(keydown.backspace)': 'clearValue(); $event.preventDefault()',\n },\n})\nexport class GaDataSelectComponent implements OnInit, ControlValueAccessor {\n private readonly _uniqueId = `ga-data-select-${++nextUniqueId}`;\n\n protected readonly icons = { CircleX };\n\n private _onTouched?: () => any;\n private _onModelChanged?: (value: any) => void;\n protected readonly positions: ConnectedPosition[] = [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8,\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n ];\n\n private readonly injector = inject(Injector);\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n protected readonly i18n = inject(GaDataSelectI18n);\n protected readonly overlayOrigin = inject(CdkOverlayOrigin);\n protected readonly repositionScrollStrategy = createRepositionScrollStrategy(\n this.injector,\n );\n private readonly implicitNgControlState = injectNgControlState();\n\n private readonly _isOpen = signal(false);\n private shouldRecoverFocus = false;\n\n readonly searchValue = signal<string | null>(null);\n\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly value = model<any | any[] | null>(null);\n readonly placeholder = input<string>('');\n readonly disabledInput = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly invalidInput = input(null, {\n alias: 'invalid',\n transform: booleanAttribute,\n });\n readonly compareFn = input<(o1: any, o2: any) => boolean>((a, b) => a === b);\n readonly searchable = input(false, { transform: booleanAttribute });\n readonly customFilter = input(false, { transform: booleanAttribute });\n readonly clearable = input(false, { transform: booleanAttribute });\n readonly clearableLabel = input<string>();\n readonly noOptionsLabel = input<string>();\n readonly canSelectNullable = input(false, {\n transform: booleanAttribute,\n });\n readonly leftIcon = input<GaIconData>();\n readonly idInput = input<string | null>(null, { alias: 'id' });\n readonly items = input<IGaSelectOption[]>([]);\n readonly bindValue = input<string>();\n readonly bindLabel = input<string>();\n readonly groupBy = input<string | ((item: IGaSelectOption) => string)>();\n readonly loading = input(false, { transform: booleanAttribute });\n readonly withOptionInput = input(null, { transform: booleanAttribute });\n readonly valueDisplayLimit = input(null, { transform: numberAttribute });\n\n readonly searchValueChange = output<string | null>();\n readonly opened = output();\n readonly closed = output();\n readonly optionsEndReached = output();\n\n protected readonly dropdownElRef = viewChild<\n unknown,\n ElementRef<HTMLElement>\n >('selectDropdown', {\n read: ElementRef,\n });\n protected readonly gaOptions = viewChildren(GaDataOptionComponent);\n protected readonly cdkListbox = viewChild(CdkListbox);\n protected readonly gaDropdown = viewChild(GaDataSelectDropdownComponent);\n protected readonly customValueTemplate = contentChild(\n GaDataSelectValueDirective,\n );\n protected readonly customOptionLabelTemplate = contentChild(\n GaDataSelectOptionLabelDirective,\n );\n protected readonly customOptgroupLabelTemplate = contentChild(\n GaDataSelectOptgroupLabelDirective,\n );\n protected readonly inputSearch =\n viewChild<ElementRef<HTMLInputElement>>('inputSearch');\n protected readonly connectedOverlay = viewChild(CdkConnectedOverlay);\n\n readonly id = computed(() => {\n return this.idInput() ?? this._uniqueId;\n });\n readonly isOpen = this._isOpen.asReadonly();\n readonly disabled = linkedSignal(() => this.disabledInput());\n protected readonly menuStatusIcon = computed(() => {\n return this._isOpen() ? ChevronUp : ChevronDown;\n });\n readonly selectedItem = computed(() => {\n if (!this.bindValue()) {\n return this.value();\n }\n return this.items().find((item) =>\n this.compareFn()(this.getItemValue(item), this.value()),\n );\n });\n\n // Selected items for multi-select\n protected readonly selectedItems = computed(() => {\n const value = this.value();\n if (!this.hasValue() || !Array.isArray(value)) {\n return [];\n }\n return this.items().filter((item) =>\n value.some((v) => this.compareFn()(this.getItemValue(item), v)),\n );\n });\n\n // Template context factory for option labels\n protected getOptionLabelTemplateContext(item: IGaSelectOption) {\n return {\n $implicit: this.getItemLabel(item),\n value: this.getItemValue(item),\n item: item,\n };\n }\n\n // Template context factory for optgroup labels\n protected getOptgroupLabelTemplateContext(group: {\n label: string;\n items: IGaSelectOption[];\n }) {\n return {\n $implicit: group.label,\n label: group.label,\n items: group.items,\n };\n }\n\n protected readonly filteredItems = computed(() => {\n const searchText = this.searchValue()?.toLowerCase() ?? '';\n if (!searchText || !this.searchable() || this.customFilter()) {\n return this.items();\n }\n\n return this.items().filter((item) => {\n const label = this.getItemLabel(item);\n return label.toLowerCase().includes(searchText);\n });\n });\n\n // Returns selected values not in filtered items, ensuring cdkListbox maintains state during filtering\n protected readonly virtualItems = computed(() => {\n const value = this.value();\n if (this.bindValue() || !Array.isArray(value)) {\n return [];\n }\n\n return value.filter((val: any) => {\n return !this.filteredItems().some((item) =>\n this.compareFn()(this.getItemValue(item), val),\n );\n });\n });\n\n protected readonly groupedItems = computed(() => {\n const items = this.filteredItems();\n const groupByKey = this.groupBy();\n\n if (!groupByKey) {\n return [{ label: null, items }];\n }\n\n const groups = new Map<string, IGaSelectOption[]>();\n items.forEach((item) => {\n const groupLabel =\n typeof groupByKey === 'function'\n ? groupByKey(item)\n : this.getNestedValue(item, groupByKey);\n if (!groups.has(groupLabel)) {\n groups.set(groupLabel, []);\n }\n groups.get(groupLabel)!.push(item);\n });\n\n return Array.from(groups.entries()).map(([label, items]) => ({\n label,\n items,\n }));\n });\n\n protected readonly hasNoOptions = computed(() => {\n return this.filteredItems().length === 0;\n });\n\n readonly activeDescendantId = computed(() => {\n const activeOption = this.gaOptions().find((option) => option.active());\n return activeOption?.cdkOption.id;\n });\n\n readonly hasValue = computed(() => {\n const value = this.value();\n if (!this.multiple() && (value === null || value === undefined)) {\n return this.canSelectNullable();\n }\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n return true;\n });\n\n readonly invalid = computed(() => {\n return this.invalidInput() ?? this.implicitNgControlState.inError();\n });\n\n readonly listboxCompareWith = computed(() => {\n return (o1: any, o2: any) => {\n if (o1 === null || o1 === undefined || o2 === null || o2 === undefined) {\n // for some reason cdkListbox compareWith is sometimes called with null/undefined values\n // in that case, use strict equality to avoid null reference issues\n return o1 === o2;\n }\n return this.compareFn()(o1, o2);\n };\n });\n\n // Helper method to get the label for an item\n getItemLabel(item: IGaSelectOption): string {\n const bindLabel = this.bindLabel();\n if (!bindLabel) {\n return String(item);\n }\n return String(this.getNestedValue(item, bindLabel));\n }\n\n // Helper method to get the value for an item\n getItemValue(item: IGaSelectOption): any {\n const bindValue = this.bindValue();\n if (!bindValue) {\n return item;\n }\n if (this.searchable()) {\n return item;\n }\n return this.getNestedValue(item, bindValue);\n }\n\n // Helper method to check if an item is disabled\n getItemDisabled(item: IGaSelectOption): boolean {\n return item?.$disabled === true;\n }\n\n // Helper method to get the typeahead label for an item\n getItemTypeaheadLabel(item: IGaSelectOption): string | null {\n return item?.$typeaheadLabel;\n }\n\n // Helper method to get nested property value\n private getNestedValue(obj: any, path: string): any {\n return path.split('.').reduce((current, prop) => current?.[prop], obj);\n }\n\n constructor() {\n effect(() => {\n // if the select became disabled while open, close it\n if (this.disabled() && this._isOpen()) {\n this.close();\n }\n });\n\n if (isDevMode()) {\n effect(() => {\n if (this.bindValue() && this.searchable()) {\n console.warn(\n 'GaDataSelectComponent: `bindValue` is ignored with `searchable` mode, value and item must be of the same type. See docs for more details.',\n );\n }\n });\n }\n\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() => formFieldConnector.controlDisabled.set(this.disabled()));\n }\n\n effect(() => {\n // emit search value changes\n this.searchValueChange.emit(this.searchValue());\n });\n\n effect(() => {\n // update the overlayPosition since it may change size when selecting/deselecting options\n this.value();\n untracked(() => {\n if (this.multiple()) {\n setTimeout(() => {\n this.connectedOverlay()?.overlayRef?.updatePosition();\n });\n }\n });\n });\n\n effect(() => {\n // sync cdkListbox inputs & value (push)\n const cdkListbox = this.cdkListbox();\n if (cdkListbox) {\n cdkListbox.value = this.multiple()\n ? (this.value() as any[])\n : [this.value()];\n }\n });\n\n effect(() => {\n // when options change, ensure there is an active option selected and correct overlay position\n const options = this.gaOptions();\n untracked(() => {\n if (!this.isOpen()) {\n return;\n }\n if (!options.some((option) => option.cdkOption.isActive())) {\n const firstOption = options.find(\n (option) => !option.cdkOption.disabled,\n );\n const selectedOption = options.find((option) =>\n option.cdkOption.isSelected(),\n );\n if (selectedOption && !this.searchValue()) {\n this.cdkListbox()?._setActiveOption(selectedOption.cdkOption);\n } else if (firstOption) {\n // if no active option, set the first enabled as active\n this.cdkListbox()?._setActiveOption(firstOption.cdkOption);\n }\n }\n this.connectedOverlay()?.overlayRef?.updatePosition();\n });\n });\n\n effect(() => {\n // sync cdkListbox value changes (pull)\n const cdkListbox = this.cdkListbox();\n if (cdkListbox) {\n untracked(() => {\n cdkListbox.valueChange.subscribe(({ value }) => {\n if (!this.multiple()) {\n [value] = value;\n }\n this._onModelChanged?.(value);\n this.value.set(value);\n this.autoClose();\n });\n });\n }\n });\n }\n\n ngOnInit() {\n // initialize proper default value for multiple select\n if (this.multiple() && this.value() === null) {\n this.value.set([]);\n }\n }\n\n writeValue(value: any) {\n this.value.set(value);\n }\n\n registerOnChange(fn: any) {\n this._onModelChanged = fn;\n }\n\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n setDisabledState(disabled: boolean) {\n this.disabled.set(disabled);\n }\n\n toggle() {\n if (this._isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open() {\n if (this.disabled() || this._isOpen()) {\n return;\n }\n this._isOpen.set(true);\n }\n\n close() {\n if (!this._isOpen()) {\n return;\n }\n this._isOpen.set(false);\n }\n\n autoClose() {\n // close that was initiated by clicking the option\n if (!this.multiple()) {\n this.shouldRecoverFocus = true;\n this.close();\n }\n }\n\n focusListbox() {\n this.cdkListbox()!.focus();\n }\n\n setActiveItemAsSelected() {\n const options = this.gaOptions();\n let activeOption = options.find((option) => option.cdkOption.isActive());\n if (!activeOption && options.length > 0) {\n activeOption = options[0];\n }\n if (activeOption) {\n const { cdkOption } = activeOption;\n if (!this.multiple() && cdkOption.isSelected()) {\n // if single select and the active option is already selected, do nothing\n return;\n }\n this.cdkListbox()!.toggle(cdkOption);\n this.syncValue();\n }\n }\n\n onOverlayKeydown(event: KeyboardEvent) {\n if (event.code === 'Escape') {\n this.shouldRecoverFocus = true;\n } else if (event.code === 'Tab') {\n this.close();\n }\n }\n\n protected clearValue() {\n if (!this.clearable()) {\n return;\n }\n if (\n this.elementRef.nativeElement !== document.activeElement &&\n this.inputSearch()?.nativeElement !== document.activeElement\n ) {\n this._onTouched?.();\n }\n const value = this.multiple() ? [] : null;\n this.value.set(value);\n this._onModelChanged?.(value);\n this.autoClose();\n }\n\n protected onInputKeyDown(event: KeyboardEvent) {\n switch (event.code) {\n case 'ArrowDown':\n case 'ArrowUp':\n case 'Enter': {\n // redirect the event to the cdkListbox\n event.preventDefault();\n event.stopPropagation();\n const eventClone = new KeyboardEvent(event.type, event);\n this.dropdownElRef()?.nativeElement.dispatchEvent(eventClone);\n if (event.code === 'Enter' && this.isOpen()) {\n // if the value wasn't changed via cdkListbox valueChange, close the dropdown manually\n this.autoClose();\n }\n break;\n }\n case 'Space':\n event.stopPropagation();\n break;\n case 'Tab':\n this.close();\n break;\n case 'Backspace':\n if (this.searchValue() === '') {\n this.clearValue();\n }\n event.stopPropagation();\n break;\n }\n }\n\n protected onOverlayAttach() {\n this.shouldRecoverFocus = false;\n this._isOpen.set(true);\n if (this.searchable()) {\n this.inputSearch()!.nativeElement.focus();\n } else {\n this.focusListbox();\n }\n this.searchValue.set('');\n afterNextRender(\n {\n mixedReadWrite: () => {\n if (!this.multiple()) {\n this.markSelectedOptionAsActive();\n }\n this.scrollActiveOptionIntoView();\n },\n },\n { injector: this.injector },\n );\n this.opened.emit();\n }\n\n protected onOverlayDetach() {\n this._isOpen.set(false);\n if (\n this.inputSearch()?.nativeElement === document.activeElement ||\n this.shouldRecoverFocus\n ) {\n this.elementRef.nativeElement.focus();\n }\n this.searchValue.set(null);\n this._onTouched?.();\n this.closed.emit();\n }\n\n deselectValue(value: any) {\n const comboboxValue = this.value();\n if (Array.isArray(comboboxValue)) {\n this.value.update((v) =>\n v.filter((item: any) => !this.compareFn()(item, value)),\n );\n } else {\n this.value.set(null);\n }\n this._onModelChanged?.(this.value());\n }\n\n protected endReached() {\n const dropdownEl = this.dropdownElRef()?.nativeElement;\n if (!dropdownEl) {\n return;\n }\n if (dropdownEl.scrollHeight > dropdownEl.clientHeight) {\n this.optionsEndReached.emit();\n }\n }\n\n private syncValue() {\n let { value } = this.cdkListbox()!;\n if (!this.multiple()) {\n [value] = value;\n }\n this.value.set(value);\n }\n\n private markSelectedOptionAsActive() {\n const selectedOption = this.gaOptions().find((option) =>\n option.cdkOption.isSelected(),\n );\n if (selectedOption) {\n this.cdkListbox()?._setActiveOption(selectedOption.cdkOption);\n }\n }\n\n private scrollActiveOptionIntoView() {\n const activeOption = this.gaOptions().find((option) =>\n option.cdkOption.isActive(),\n );\n if (activeOption) {\n activeOption.cdkOption.element.scrollIntoView({\n block: 'center',\n inline: 'nearest',\n });\n }\n }\n}\n","@if (leftIcon()) {\n <ga-icon [icon]=\"leftIcon()!\" />\n}\n\n<div class=\"ga-select__main-area\">\n @if (hasValue() && (!searchValue() || multiple())) {\n <ga-data-select-value\n [customValueTemplate]=\"customValueTemplate()?.templateRef\"\n />\n } @else if (!searchable()) {\n <div class=\"ga-select__placeholder\">\n {{ placeholder() }}\n </div>\n }\n\n @if (searchable()) {\n <input\n #inputSearch\n type=\"text\"\n class=\"ga-select__input\"\n aria-autocomplete=\"list\"\n [value]=\"searchValue() ?? ''\"\n (input)=\"open(); searchValue.set(inputSearch.value)\"\n (click)=\"open(); $event.stopPropagation()\"\n [attr.aria-controls]=\"isOpen() ? cdkListbox()?.id : null\"\n [attr.aria-activedescendant]=\"isOpen() ? activeDescendantId() : null\"\n [attr.aria-label]=\"i18n.searchInputLabel\"\n [placeholder]=\"hasValue() ? '' : placeholder()\"\n (keydown)=\"onInputKeyDown($event)\"\n tabindex=\"-1\"\n [disabled]=\"disabled()\"\n />\n }\n</div>\n\n<div class=\"ga-select__suffix\">\n @if (clearable() && hasValue()) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n (click)=\"clearValue(); $event.stopPropagation()\"\n [attr.aria-label]=\"clearableLabel() ?? i18n.clearLabel\"\n style=\"font-size: 0\"\n >\n <ga-icon [icon]=\"icons.CircleX\" size=\"16\" />\n </button>\n }\n\n <ga-icon [icon]=\"menuStatusIcon()\" class=\"ga-select__action-icon\" />\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"repositionScrollStrategy\"\n (overlayOutsideClick)=\"close()\"\n (attach)=\"onOverlayAttach()\"\n (detach)=\"onOverlayDetach()\"\n (overlayKeydown)=\"onOverlayKeydown($event)\"\n>\n <ga-data-select-dropdown\n [multiple]=\"multiple()\"\n [useActiveDescendant]=\"searchable()\"\n [navigationWrapDisabled]=\"loading()\"\n [compareWith]=\"listboxCompareWith()\"\n [loading]=\"loading()\"\n #selectDropdown\n >\n @if (hasNoOptions() && !loading()) {\n <div class=\"ga-dropdown__caption\">\n {{ noOptionsLabel() ?? i18n.noOptionsLabel }}\n </div>\n }\n\n @for (group of groupedItems(); track group.label) {\n @if (group.label) {\n <ga-data-optgroup\n [label]=\"group.label\"\n [customLabelTemplate]=\"customOptgroupLabelTemplate()?.templateRef\"\n [customLabelContext]=\"getOptgroupLabelTemplateContext(group)\"\n >\n @for (item of group.items; track getItemValue(item)) {\n <ga-data-option\n [value]=\"getItemValue(item)\"\n [withInput]=\"withOptionInput()\"\n [disabled]=\"getItemDisabled(item)\"\n [typeaheadLabel]=\"getItemTypeaheadLabel(item)\"\n >\n @if (customOptionLabelTemplate(); as labelTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"labelTemplate.templateRef\"\n [ngTemplateOutletContext]=\"\n getOptionLabelTemplateContext(item)\n \"\n />\n } @else {\n {{ getItemLabel(item) }}\n }\n </ga-data-option>\n }\n </ga-data-optgroup>\n } @else {\n @for (item of group.items; track getItemValue(item)) {\n <ga-data-option\n [value]=\"getItemValue(item)\"\n [withInput]=\"withOptionInput() ?? multiple()\"\n [disabled]=\"getItemDisabled(item)\"\n [typeaheadLabel]=\"getItemTypeaheadLabel(item)\"\n >\n @if (customOptionLabelTemplate(); as labelTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"labelTemplate.templateRef\"\n [ngTemplateOutletContext]=\"getOptionLabelTemplateContext(item)\"\n />\n } @else {\n {{ getItemLabel(item) }}\n }\n </ga-data-option>\n }\n }\n }\n\n <!--\n Virtual items: Render hidden disabled options for all selected values.\n This ensures cdkListbox maintains state when filtering occurs - even when\n selected values don't match the currently visible filtered options, they\n remain valid options in the listbox, preventing state loss.\n -->\n @for (item of virtualItems(); track getItemValue(item)) {\n <ga-data-option\n [value]=\"getItemValue(item)\"\n [withInput]=\"withOptionInput() ?? multiple()\"\n disabled\n hidden\n >\n @if (customOptionLabelTemplate(); as labelTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"labelTemplate.templateRef\"\n [ngTemplateOutletContext]=\"getOptionLabelTemplateContext(item)\"\n />\n } @else {\n {{ getItemLabel(item) }}\n }\n </ga-data-option>\n }\n\n <ga-intersection-trigger\n parentAsRoot\n rootMargin=\"0% 0% 20px 0%\"\n (trigger)=\"endReached()\"\n />\n </ga-data-select-dropdown>\n</ng-template>\n","import { Directive, Provider, forwardRef } from '@angular/core';\nimport { NG_VALIDATORS, RequiredValidator } from '@angular/forms';\n\n/**\n * @internal - Internal validator provider for ga-data-select required validation\n */\nexport const GA_DATA_SELECT_REQUIRED_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => GaDataSelectRequiredValidator),\n multi: true,\n};\n\n/**\n * @internal - Internal directive for ga-data-select required validation\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: `ga-data-select[required][formControlName], ga-data-select[required][formControl], ga-data-select[required][ngModel]`,\n providers: [GA_DATA_SELECT_REQUIRED_VALIDATOR],\n})\nexport class GaDataSelectRequiredValidator extends RequiredValidator {}\n","import { NgModule } from '@angular/core';\n\nimport { GaDataSelectComponent } from './data-select.component';\nimport { GaDataSelectRequiredValidator } from './data-select-required.validator';\nimport { GaDataSelectValueDirective } from './data-select-value.directive';\nimport { GaDataSelectOptionLabelDirective } from './data-select-option-label.directive';\nimport { GaDataSelectOptgroupLabelDirective } from './data-select-optgroup-label.directive';\n\n@NgModule({\n imports: [\n GaDataSelectComponent,\n GaDataSelectRequiredValidator,\n GaDataSelectValueDirective,\n GaDataSelectOptionLabelDirective,\n GaDataSelectOptgroupLabelDirective,\n ],\n exports: [\n GaDataSelectComponent,\n GaDataSelectRequiredValidator,\n GaDataSelectValueDirective,\n GaDataSelectOptionLabelDirective,\n GaDataSelectOptgroupLabelDirective,\n ],\n})\nexport class GaDataSelectModule {}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n linkedSignal,\n output,\n Provider,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Check } from 'lucide-angular';\nimport { GaFormFieldConnector } from '../form-field/form-field-connector';\nimport { GaIconModule } from '../icon';\nimport { injectNgControlState } from '../utils/error-state';\n\nexport const SWITCH_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaSwitchComponent),\n multi: true,\n};\n\n// Increasing integer for generating unique ids for switch components.\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-switch',\n templateUrl: './switch.component.html',\n imports: [GaIconModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [SWITCH_CONTROL_VALUE_ACCESSOR],\n host: {\n class: 'ga-switch',\n '[class.ga-switch--checked]': 'checkedModel()',\n '[class.ga-switch--disabled]': 'disabledModel()',\n '[class.ga-switch--invalid]': 'invalidComputed()',\n '[attr.id]': 'null',\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n '[attr.aria-errormessage]': 'null',\n '[attr.aria-invalid]': 'null',\n },\n})\nexport class GaSwitchComponent implements ControlValueAccessor {\n protected readonly icons = { Check };\n\n /** @ignore */\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n /** @ignore */\n private readonly implicitNgControlState = injectNgControlState();\n\n /** @ignore */\n readonly _uniqueId = `ga-switch-${++nextUniqueId}`;\n\n /** @ignore */\n readonly tabindex = input<string | number>(0, {\n alias: 'tabindex',\n });\n\n /** @ignore */\n private _onTouched?: () => any;\n /** @ignore */\n private _onModelChanged?: (value: any) => void;\n\n readonly checked = input(false, {\n transform: booleanAttribute,\n });\n readonly disabled = input(false, {\n transform: booleanAttribute,\n });\n readonly ariaInvalid = input<string | null>(null, { alias: 'aria-invalid' });\n readonly label = input<string>('');\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly ariaLabelledby = input<string | null>(null, {\n alias: 'aria-labelledby',\n });\n readonly ariaDescribedby = input<string | null>(null, {\n alias: 'aria-describedby',\n });\n readonly ariaErrormessage = input<string | null>(null, {\n alias: 'aria-errormessage',\n });\n readonly nameInput = input<string | null>(null, { alias: 'name' });\n readonly id = input<string | null>(null);\n\n readonly disabledModel = linkedSignal(() => this.disabled());\n readonly checkedModel = linkedSignal(() => this.checked());\n\n readonly checkedChange = output<boolean>();\n\n /** @ignore */\n readonly inputId = computed(() => this.id() ?? this._uniqueId);\n /** @ignore */\n readonly name = computed(() => {\n return (\n this.nameInput() ?? this.implicitNgControlState.name() ?? this._uniqueId\n );\n });\n /** @ignore */\n readonly invalidComputed = computed(() => {\n return this.ariaInvalid()\n ? this.ariaInvalid() === 'true'\n : this.implicitNgControlState.inError();\n });\n\n constructor() {\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() =>\n formFieldConnector.controlDisabled.set(this.disabledModel()),\n );\n effect(() => formFieldConnector.controlId.set(this.inputId()));\n }\n }\n\n /** @ignore */\n onInputChange(event: Event) {\n const target = event.target as HTMLInputElement;\n const newValue = target.checked;\n\n this.checkedModel.set(newValue);\n this._onModelChanged?.(newValue);\n this.checkedChange.emit(newValue);\n }\n\n /** @ignore */\n onBlur() {\n this._onTouched?.();\n }\n\n // ControlValueAccessor implementation\n writeValue(value: any) {\n const newValue = !!value;\n this.checkedModel.set(newValue);\n }\n\n registerOnChange(fn: any) {\n this._onModelChanged = fn;\n }\n\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n setDisabledState(disabled: boolean) {\n this.disabledModel.set(disabled);\n }\n}\n","<input\n #input\n type=\"checkbox\"\n class=\"ga-switch__input\"\n [attr.id]=\"inputId()\"\n [name]=\"name()\"\n [checked]=\"checkedModel()\"\n [disabled]=\"disabledModel()\"\n [attr.tabindex]=\"tabindex()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n [attr.aria-errormessage]=\"ariaErrormessage()\"\n [attr.aria-invalid]=\"invalidComputed() ? 'true' : null\"\n (change)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"\n/>\n<div class=\"ga-switch__marker\">\n <ga-icon\n [icon]=\"icons.Check\"\n class=\"ga-switch__check-icon\"\n [size]=\"16\"\n aria-hidden=\"true\"\n />\n <span class=\"ga-switch__slider\"></span>\n</div>\n@if (label()) {\n <label [attr.for]=\"inputId()\" class=\"ga-switch__label\">{{ label() }}</label>\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaSwitchComponent } from './switch.component';\n\n@NgModule({\n imports: [GaSwitchComponent],\n exports: [GaSwitchComponent],\n})\nexport class GaSwitchModule {}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\nimport { GaIconData, GaIconModule } from '../icon';\n\nexport type GaLinkVariant = 'inline';\nexport type GaLinkSize = 'small' | 'medium' | 'large';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'a[gaLink], button[gaLink]',\n template: `\n @if (leadingIcon()) {\n <ga-icon\n class=\"ga-link__icon\"\n [icon]=\"leadingIcon()\"\n [size]=\"iconSize()\"\n />\n }\n <ng-content />\n @if (trailingIcon()) {\n <ga-icon\n class=\"ga-link__icon\"\n [icon]=\"trailingIcon()\"\n [size]=\"iconSize()\"\n />\n }\n `,\n host: {\n class: 'ga-link',\n '[class.ga-link--inline]': `variant() === 'inline'`,\n '[class.ga-link--small]': `size() === 'small'`,\n '[class.ga-link--large]': `size() === 'large'`,\n '[class.ga-link--disabled]': `disabled()`,\n '[attr.aria-disabled]': 'disabled()',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '[attr.role]': `elementRef.nativeElement.tagName.toLowerCase() === 'button' ? 'link' : null`,\n '(click)': 'onClick($event)',\n },\n imports: [GaIconModule],\n})\nexport class GaLinkDirective {\n readonly variant = input<GaLinkVariant | ''>('', { alias: 'gaLink' });\n readonly size = input<GaLinkSize>('medium', { alias: 'gaLinkSize' });\n readonly disabled = input(false, {\n alias: 'gaLinkDisabled',\n transform: booleanAttribute,\n });\n readonly leadingIcon = input<GaIconData | string>('', {\n alias: 'gaLinkLeadingIcon',\n });\n readonly trailingIcon = input<GaIconData | string>('', {\n alias: 'gaLinkTrailingIcon',\n });\n\n protected readonly elementRef = inject(ElementRef);\n protected readonly iconSize = computed(() =>\n this.size() === 'large' ? 24 : 16,\n );\n\n protected onClick(event: Event): void {\n if (this.disabled()) {\n event.preventDefault();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaLinkDirective } from './link.directive';\n\n@NgModule({\n imports: [GaLinkDirective],\n exports: [GaLinkDirective],\n})\nexport class GaLinkModule {}\n","import {\n Component,\n Directive,\n TemplateRef,\n booleanAttribute,\n input,\n contentChild,\n viewChild,\n computed,\n} from '@angular/core';\nimport { GaIconData } from '../icon/icon.component';\n\n@Directive({\n selector: 'ng-template[gaTabContent]',\n})\nexport class GaTabContentDirective {}\n\n@Component({\n selector: 'ga-tab',\n templateUrl: './tab.component.html',\n})\nexport class GaTabComponent {\n readonly title = input('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly rightIcon = input<GaIconData>();\n readonly rightIconColor = input<string>();\n\n /** @ignore */\n readonly explicitContent = contentChild(GaTabContentDirective, {\n read: TemplateRef,\n });\n\n /** @ignore */\n readonly implicitContent = viewChild.required(TemplateRef);\n\n /** @ignore */\n readonly contentTpl = computed(() => {\n return this.explicitContent() ?? this.implicitContent();\n });\n}\n","<ng-template><ng-content></ng-content></ng-template>\n","import {\n Component,\n booleanAttribute,\n numberAttribute,\n input,\n contentChildren,\n effect,\n untracked,\n signal,\n output,\n linkedSignal,\n} from '@angular/core';\n\nimport { GaTabComponent } from './tab.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { GaIconComponent } from '../icon';\n\nexport interface GaTabChangeEvent {\n index: number;\n tab: GaTabComponent;\n}\n\nexport type GaTabsOrientation = 'horizontal' | 'vertical';\n\nexport interface GaBeforeTabChangeEvent {\n newIndex: number;\n oldIndex: number;\n preventChange: () => void;\n}\n\n// Increasing integer for generating unique id for tabpanels.\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ga-tabs',\n imports: [NgTemplateOutlet, GaIconComponent],\n templateUrl: './tabs.component.html',\n styleUrl: './tabs.component.scss',\n host: {\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[class.ga-tabs-container--horizontal]': \"orientation() === 'horizontal'\",\n '[class.ga-tabs-container--vertical]': \"orientation() === 'vertical'\",\n },\n})\nexport class GaTabsComponent {\n /** @ignore */\n readonly uniqueId = `ga-tabs-${nextUniqueId++}`;\n\n /** @ignore */\n readonly selectedTab = signal<GaTabComponent | null>(null);\n\n /** @ignore */\n readonly tabs = contentChildren(GaTabComponent);\n\n readonly withKeyline = input(false, { transform: booleanAttribute });\n readonly orientation = input<GaTabsOrientation>('horizontal');\n readonly ariaLabel = input<string>(undefined, { alias: 'aria-label' });\n readonly ariaLabelledby = input<string>(undefined, {\n alias: 'aria-labelledby',\n });\n readonly selectedIndexInput = input(0, {\n transform: numberAttribute,\n alias: 'selectedIndex',\n });\n readonly selectedIndex = linkedSignal(() => this.selectedIndexInput());\n\n readonly beforeTabChange = output<GaBeforeTabChangeEvent>();\n readonly selectedIndexChange = output<number>();\n readonly selectedTabChange = output<GaTabChangeEvent>();\n\n constructor() {\n effect(() => {\n const selectedIndex = this.selectedIndex();\n untracked(() => this.selectTab(selectedIndex, false));\n });\n\n effect(() => {\n const selectedTab = this.selectedTab();\n const tabs = this.tabs();\n if (selectedTab && !tabs.includes(selectedTab)) {\n untracked(() => this.selectTab(this.selectedIndex(), true));\n }\n });\n }\n\n /** @ignore */\n onTabClick(index: number) {\n let canChange = true;\n this.beforeTabChange.emit({\n newIndex: index,\n oldIndex: this.selectedIndex(),\n preventChange: () => {\n canChange = false;\n },\n });\n if (canChange) {\n this.selectTab(index, true);\n }\n }\n\n protected selectTab(index: number, broadcastEvent: boolean) {\n const tabs = this.tabs();\n if (!tabs?.length) {\n return;\n }\n\n const clampedTabIndex = Math.min(tabs!.length - 1, Math.max(index || 0, 0));\n const tabAtIndex = tabs.find((_, i) => i === clampedTabIndex)!;\n\n if (tabAtIndex.disabled()) {\n return;\n }\n\n if (clampedTabIndex !== this.selectedIndex()) {\n this.selectedIndex.set(clampedTabIndex);\n if (broadcastEvent) {\n this.selectedIndexChange.emit(clampedTabIndex);\n }\n }\n\n if (tabAtIndex !== this.selectedTab()) {\n this.selectedTab.set(tabAtIndex);\n if (broadcastEvent) {\n this.selectedTabChange.emit({\n index: clampedTabIndex,\n tab: tabAtIndex,\n });\n }\n }\n }\n}\n","<ul\n role=\"tablist\"\n [attr.id]=\"uniqueId\"\n class=\"ga-tabs\"\n [class.ga-tabs--horizontal]=\"orientation() === 'horizontal'\"\n [class.ga-tabs--vertical]=\"orientation() === 'vertical'\"\n [class.ga-tabs--keyline]=\"withKeyline()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-orientation]=\"orientation()\"\n>\n @for (tab of tabs(); track tab; let i = $index) {\n <li\n [attr.id]=\"uniqueId + '-tablabel-' + i\"\n class=\"ga-tabs__tab\"\n [class.ga-tabs__tab--selected]=\"i === selectedIndex()\"\n [class.ga-tabs__tab--disabled]=\"tab.disabled()\"\n role=\"tab\"\n [tabindex]=\"tab.disabled() ? -1 : undefined\"\n (click)=\"onTabClick(i); $event.preventDefault()\"\n (keydown.enter)=\"onTabClick(i); $event.preventDefault()\"\n (keydown.space)=\"onTabClick(i); $event.preventDefault()\"\n [attr.aria-selected]=\"i === selectedIndex()\"\n [attr.aria-disabled]=\"tab.disabled()\"\n [attr.aria-controls]=\"uniqueId + '-tabpanel-' + i\"\n >\n {{ tab.title() }}\n @let tabTitleIcon = tab.rightIcon();\n @if (tabTitleIcon) {\n <ga-icon\n [icon]=\"tabTitleIcon\"\n size=\"16\"\n class=\"ga-tabs__tab-icon\"\n [color]=\"tab.rightIconColor()\"\n />\n }\n </li>\n }\n</ul>\n\n@for (tab of tabs(); track tab; let i = $index) {\n @if (tab === selectedTab()) {\n <div\n role=\"tabpanel\"\n [attr.id]=\"uniqueId + '-tabpanel-' + i\"\n [attr.aria-labelledby]=\"uniqueId + '-tablabel-' + i\"\n >\n <ng-template [ngTemplateOutlet]=\"tab.contentTpl()\"></ng-template>\n </div>\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaTabComponent, GaTabContentDirective } from './tab.component';\nimport { GaTabsComponent } from './tabs.component';\n\n@NgModule({\n imports: [GaTabsComponent, GaTabComponent, GaTabContentDirective],\n exports: [GaTabsComponent, GaTabComponent, GaTabContentDirective],\n})\nexport class GaTabsModule {}\n","import {\n Attribute,\n booleanAttribute,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n} from '@angular/core';\nimport { injectNgControlState } from '../utils/error-state';\nimport { GaFormFieldConnector } from '../form-field/form-field-connector';\n\nlet nextUniqueId = 0;\n\n@Directive({\n selector: '[gaTextArea]',\n host: {\n class: 'ga-text-area',\n '[class.ga-text-area--invalid]': 'invalid()',\n '[attr.id]': 'id()',\n '[attr.disabled]': 'disabled() ? true : null',\n },\n})\nexport class GaTextAreaDirective {\n private readonly implicitNgControlState = injectNgControlState();\n private readonly formFieldConnector = inject(GaFormFieldConnector, {\n optional: true,\n });\n private readonly renderer = inject(Renderer2);\n private readonly elementRef = inject(ElementRef);\n\n private readonly uniqueId = `ga-text-area-${++nextUniqueId}`;\n\n readonly idInput = input<string | undefined>(undefined, { alias: 'id' });\n readonly disabledInput = input(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly invalidInput = input(undefined, {\n alias: 'invalid',\n transform: booleanAttribute,\n });\n\n readonly disabled = computed(\n () => this.disabledInput() ?? this.implicitNgControlState.disabled(),\n );\n readonly invalid = computed(\n () => this.invalidInput() ?? this.implicitNgControlState.inError(),\n );\n readonly id = computed(() => this.idInput() ?? this.uniqueId);\n\n constructor(@Attribute('placeholder') placeholder?: string) {\n const formFieldConnector = this.formFieldConnector;\n if (formFieldConnector) {\n effect(() => formFieldConnector.controlDisabled.set(this.disabled()));\n effect(() => formFieldConnector.controlId.set(this.id()));\n }\n\n if (!placeholder) {\n // a workaround till https://github.com/visma-software-nordic/gaia-styles/issues/108 is fixed\n this.renderer.setAttribute(\n this.elementRef.nativeElement,\n 'placeholder',\n '',\n );\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { GaTextAreaDirective } from './text-area.directive';\n\n@NgModule({\n imports: [GaTextAreaDirective],\n exports: [GaTextAreaDirective],\n})\nexport class GaTextAreaModule {}\n","import {\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { CdkListbox } from '@angular/cdk/listbox';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport type GaChipVariant = 'default' | 'transparent';\n\n@Component({\n selector: 'ga-chip-listbox',\n templateUrl: './chip-listbox.component.html',\n hostDirectives: [\n {\n directive: CdkListbox,\n inputs: [\n 'cdkListboxMultiple: multiple',\n 'cdkListboxValue: value',\n 'cdkListboxDisabled: disabled',\n 'cdkListboxCompareWith: compareWith',\n ],\n },\n ],\n host: {\n class: 'ga-chip-listbox',\n },\n})\nexport class GaChipListboxComponent<ValueT = unknown> {\n protected readonly cdkListbox = inject(CdkListbox<ValueT>, { self: true });\n\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n readonly variant = input<GaChipVariant>('default');\n readonly valueChange = output<readonly ValueT[]>();\n\n readonly disabled = computed(() => this.cdkListbox.disabled);\n\n constructor() {\n effect(() => {\n this.cdkListbox.orientation = this.orientation();\n });\n\n this.cdkListbox.valueChange\n .pipe(takeUntilDestroyed())\n .subscribe((event) => {\n this.valueChange.emit(event.value);\n });\n }\n\n focus() {\n this.cdkListbox.focus();\n }\n}\n","<ng-content />\n","import { CdkListboxModule, CdkOption } from '@angular/cdk/listbox';\nimport {\n afterEveryRender,\n booleanAttribute,\n Component,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { GaChipListboxComponent } from './chip-listbox.component';\n\n@Component({\n selector: 'ga-chip',\n templateUrl: './chip.component.html',\n imports: [CdkListboxModule],\n hostDirectives: [\n {\n directive: CdkOption,\n inputs: ['cdkOption: value', 'cdkOptionDisabled: disabled'],\n },\n ],\n host: {\n class: 'ga-quick-filter-button',\n '[class.ga-quick-filter-button--transparent]':\n \"listbox.variant() === 'transparent'\",\n '[class.ga-quick-filter-button--disabled]':\n 'disabled() || listbox.disabled()',\n '[class.ga-quick-filter-button--selected]': 'selected()',\n },\n})\nexport class GaChipComponent {\n private readonly cdkOption = inject(CdkOption, { self: true });\n protected readonly listbox = inject(GaChipListboxComponent);\n\n protected readonly _isSelected = signal<boolean | null>(null);\n readonly selected = this._isSelected.asReadonly();\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n constructor() {\n afterEveryRender({\n read: () => {\n // NOTE: currently there is no other reliable way to track the selected state,\n // refactor once cdk will be based on signals or more appropriate events introduced\n this._isSelected.set(this.cdkOption.isSelected());\n },\n });\n }\n}\n","<ng-content />\n","import { NgModule } from '@angular/core';\nimport { GaChipComponent } from './chip.component';\nimport { GaChipListboxComponent } from './chip-listbox.component';\n\n@NgModule({\n imports: [GaChipComponent, GaChipListboxComponent],\n exports: [GaChipComponent, GaChipListboxComponent],\n})\nexport class GaChipModule {}\n","/*\n * Public API Surface of ngx-gaia\n */\n\nexport * from './lib/alert/index';\nexport * from './lib/badge/index';\nexport * from './lib/button/index';\nexport * from './lib/card/index';\nexport * from './lib/checkbox/index';\nexport * from './lib/datepicker/index';\nexport * from './lib/segmented-control/index';\nexport * from './lib/icon/index';\nexport * from './lib/input/index';\nexport * from './lib/form-field/index';\nexport * from './lib/menu/index';\nexport * from './lib/modal/index';\nexport * from './lib/tooltip/index';\nexport * from './lib/select/index';\nexport * from './lib/data-select/index';\nexport * from './lib/spinner/index';\nexport * from './lib/radio/index';\nexport * from './lib/switch/index';\nexport * from './lib/utils/index';\nexport * from './lib/link/index';\nexport * from './lib/tabs/index';\nexport * from './lib/text-area/index';\nexport * from './lib/chip/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextUniqueId","i2.GaIconButtonDirective","i1.GaIconComponent","i1","i2.GaButtonDirective","i3","i1.GaTooltipDirective","i2.GaIconComponent","i3.GaRadioButtonComponent","i1.GaSpinnerComponent","i2.GaLabelledByFormFieldDirective","i3.GaIconComponent"],"mappings":"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"}
|