{"version":3,"file":"fundamental-ngx-core-product-switch.mjs","sources":["../../../../libs/core/product-switch/product-switch-body/product-switch-body.component.ts","../../../../libs/core/product-switch/product-switch-body/product-switch-body.component.html","../../../../libs/core/product-switch/product-switch-button.directive.ts","../../../../libs/core/product-switch/tokens.ts","../../../../libs/core/product-switch/product-switch/product-switch.component.ts","../../../../libs/core/product-switch/product-switch/product-switch.component.html","../../../../libs/core/product-switch/product-switch.module.ts","../../../../libs/core/product-switch/fundamental-ngx-core-product-switch.ts"],"sourcesContent":["import { DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    inject,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    ViewEncapsulation\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { FdDropEvent, KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\n\nimport { DndItemDirective, DndListDirective } from '@fundamental-ngx/cdk/utils';\nimport { AvatarComponent } from '@fundamental-ngx/core/avatar';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent } from '@fundamental-ngx/core/icon';\nimport { ProductSwitchItem } from './product-switch.item';\n\nconst containerWidthPxSmallMode = 588;\nconst containerWidthPx = 776;\n\n@Component({\n    selector: 'fd-product-switch-body',\n    templateUrl: './product-switch-body.component.html',\n    styleUrls: ['./product-switch-body.component.scss', '../../../cdk/utils/drag-and-drop/drag-and-drop.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [DndItemDirective, DndListDirective, IconComponent, AvatarComponent]\n})\nexport class ProductSwitchBodyComponent implements OnInit, OnDestroy {\n    /** Defines if drag and drop functionality should be included in product switch*/\n    @Input()\n    dragAndDropEnabled = true;\n\n    /** The product switch's product items. */\n    @Input()\n    products: ProductSwitchItem[];\n\n    /** Defines if the product switcher should be displayed in list mode, no matter what is the size of window */\n    @Input()\n    forceListMode = false;\n\n    /** Event thrown on products array change */\n    @Output()\n    readonly productsChange: EventEmitter<any[]> = new EventEmitter<any[]>();\n\n    /** Event emitted on product click */\n    @Output()\n    readonly itemClicked: EventEmitter<void> = new EventEmitter<void>();\n\n    /** @hidden */\n    protected readonly FD_DEFAULT_ICON_FONT_FAMILY = FD_DEFAULT_ICON_FONT_FAMILY;\n\n    /** @hidden */\n    private _listMode: boolean;\n\n    /** @hidden */\n    private _subscriptions = new Subscription();\n\n    /** @hidden */\n    private _rtlService = inject(RtlService, { optional: true });\n\n    /** @hidden */\n    constructor(\n        private _viewportRuler: ViewportRuler,\n        private readonly _cdr: ChangeDetectorRef\n    ) {}\n\n    /** @hidden */\n    ngOnInit(): void {\n        this._subscriptions.add(\n            this._viewportRuler.change().subscribe((event) => {\n                const { innerWidth } = <Window>event.target;\n                this._checkSize(innerWidth);\n            })\n        );\n\n        const { width } = this._viewportRuler.getViewportSize();\n        this._checkSize(width);\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._subscriptions.unsubscribe();\n    }\n\n    /** @hidden */\n    _itemClick(item: ProductSwitchItem, event: MouseEvent): void {\n        this.products.forEach((product) => (product.selected = product === item));\n\n        this.itemClicked.emit();\n        if (item.callback) {\n            item.callback(event);\n        }\n    }\n\n    /** Method called on products change */\n    _productSwitchItemsChangeHandle(dropEvent: FdDropEvent<ProductSwitchItem>): void {\n        this.productsChange.emit(dropEvent.items);\n        this.products = dropEvent.items;\n    }\n\n    /** @hidden */\n    _keyDownHandle(event: KeyboardEvent): void {\n        const target = <HTMLElement>event.target;\n\n        if (!KeyUtil.isKeyCode(event, TAB)) {\n            event.preventDefault();\n        }\n\n        if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n            target.click();\n        } else if (!this._isListMode()) {\n            const i = Array.from(target.parentElement?.children ?? []).indexOf(target);\n            this._handleNoListKeydown(event, target, i);\n        } else if (this._isListMode() && KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW])) {\n            this._handleListArrowUpDown(event, target);\n        }\n    }\n\n    /** @hidden */\n    _isSmallMode(): boolean {\n        return this.products?.length < 7;\n    }\n\n    /** @hidden */\n    _isListMode(): boolean {\n        return this._listMode || this.forceListMode;\n    }\n\n    /** @hidden */\n    private _checkSize(width: number): void {\n        if (this._isSmallMode()) {\n            this._listMode = width < containerWidthPxSmallMode;\n        } else {\n            this._listMode = width < containerWidthPx;\n        }\n\n        this._cdr.markForCheck();\n    }\n\n    /** @hidden */\n    private _handleNoListKeydown(event: KeyboardEvent, target: HTMLElement, i: number): void {\n        const previousElementSibling = <HTMLElement>target.previousElementSibling;\n        const nextElementSibling = <HTMLElement>target.nextElementSibling;\n\n        if (\n            i === this.products.length - 1 &&\n            (KeyUtil.isKeyCode(event, RIGHT_ARROW) || (KeyUtil.isKeyCode(event, LEFT_ARROW) && this._rtlService?.rtl()))\n        ) {\n            while (<HTMLElement>target.previousElementSibling) {\n                target = <HTMLElement>target.previousElementSibling;\n            }\n            target.focus();\n        }\n\n        if (KeyUtil.isKeyCode(event, LEFT_ARROW)) {\n            this._rtlService?.rtl() ? nextElementSibling?.focus() : previousElementSibling?.focus();\n        } else if (KeyUtil.isKeyCode(event, RIGHT_ARROW)) {\n            this._rtlService?.rtl() ? previousElementSibling?.focus() : nextElementSibling?.focus();\n        } else if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW])) {\n            if (this.products.length >= 7) {\n                this._handleNoListMoreThanSeven(event, target, i);\n            } else if (this.products.length < 7) {\n                this._handleNoListLessThanSeven(event, target, i);\n            }\n        }\n    }\n\n    /** @hidden */\n    private _handleNoListMoreThanSeven(event: KeyboardEvent, target: HTMLElement, i: number): void {\n        const nextIndexByColumn = 4;\n        const children = target.parentElement?.children;\n\n        if (!children) {\n            return;\n        }\n\n        if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n            (<HTMLElement>children[i + nextIndexByColumn])?.focus();\n        }\n\n        if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n            (<HTMLElement>children[i - nextIndexByColumn])?.focus();\n        }\n    }\n\n    /** @hidden */\n    private _handleNoListLessThanSeven(event: KeyboardEvent, target: HTMLElement, i: number): void {\n        const nextIndexByColumn = 3;\n        const children = target.parentElement?.children;\n\n        if (!children) {\n            return;\n        }\n\n        if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n            (<HTMLElement>children[i + nextIndexByColumn])?.focus();\n        }\n\n        if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n            (<HTMLElement>children[i - nextIndexByColumn])?.focus();\n        }\n    }\n\n    /** @hidden */\n    private _handleListArrowUpDown(event: KeyboardEvent, target: HTMLElement): void {\n        const targetIndex = Array.from(target.parentElement?.children ?? []).indexOf(target);\n        const previousElementSibling =\n            targetIndex === 0\n                ? <HTMLElement>target.parentElement?.children[this.products.length - 1]\n                : <HTMLElement>target.previousElementSibling;\n        const nextElementSibling =\n            targetIndex === this.products.length - 1\n                ? <HTMLElement>target.parentElement?.children[0]\n                : <HTMLElement>target.nextElementSibling;\n\n        if (this._isListMode() && KeyUtil.isKeyCode(event, DOWN_ARROW) && nextElementSibling) {\n            nextElementSibling.focus();\n        } else if (this._isListMode() && KeyUtil.isKeyCode(event, UP_ARROW) && previousElementSibling) {\n            previousElementSibling.focus();\n        }\n    }\n}\n","<div\n    class=\"fd-product-switch__body\"\n    [class.fd-product-switch__body--col-3]=\"_isSmallMode() && !_isListMode()\"\n    [class.fd-product-switch__body--mobile]=\"_isListMode()\"\n>\n    <ul\n        fd-dnd-list\n        class=\"fd-product-switch__list\"\n        [items]=\"products\"\n        [gridMode]=\"!_isListMode()\"\n        (itemDropped)=\"_productSwitchItemsChangeHandle($event)\"\n    >\n        @for (product of products; track product) {\n            <li\n                fd-dnd-item\n                tabindex=\"0\"\n                class=\"fd-product-switch__item\"\n                [class.selected]=\"product.selected\"\n                (keydown)=\"_keyDownHandle($event)\"\n                (click)=\"_itemClick(product, $event)\"\n                [draggable]=\"!product.disabledDragAndDrop && dragAndDropEnabled\"\n                [stickInPlace]=\"!!product.stickToPosition\"\n            >\n                @if (product.avatar) {\n                    <fd-avatar\n                        size=\"s\"\n                        [glyph]=\"product.avatar.glyph ?? null\"\n                        [label]=\"product.avatar.label ?? null\"\n                        [circle]=\"!!product.avatar.circle\"\n                        [image]=\"product.avatar.image ?? null\"\n                        [contain]=\"!!product.avatar.contain\"\n                        [transparent]=\"!!product.avatar.transparent\"\n                        [placeholder]=\"!!product.avatar.placeholder\"\n                        [tile]=\"!!product.avatar.tile\"\n                        [colorAccent]=\"product.avatar.colorAccent\"\n                        [colorIndication]=\"product.avatar.colorIndication\"\n                        [border]=\"!!product.avatar.border\"\n                        [alterIcon]=\"product.avatar.alterIcon ?? null\"\n                        [backupImage]=\"product.avatar.backupImage ?? null\"\n                        [ariaLabel]=\"product.avatar.ariaLabel ?? null\"\n                    >\n                    </fd-avatar>\n                } @else {\n                    <fd-icon\n                        [font]=\"product.font || FD_DEFAULT_ICON_FONT_FAMILY\"\n                        role=\"presentation\"\n                        class=\"fd-product-switch__icon\"\n                        [glyph]=\"product.icon\"\n                    ></fd-icon>\n                }\n\n                <div class=\"fd-product-switch__text\">\n                    <div class=\"fd-product-switch__title\">{{ product.title }}</div>\n                    @if (product.subtitle) {\n                        <div class=\"fd-product-switch__subtitle\">{{ product.subtitle }}</div>\n                    }\n                </div>\n            </li>\n        }\n    </ul>\n</div>\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n    selector: '[fdProductSwitchButton]',\n    standalone: true\n})\nexport class ProductSwitchButtonDirective {\n    /** @hidden */\n    constructor(readonly templateRef: TemplateRef<any>) {}\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FD_PRODUCT_SWITCH_COMPONENT = new InjectionToken('FdProductSwitchComponent');\n","import {\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    Component,\n    contentChild,\n    input,\n    model,\n    output,\n    signal\n} from '@angular/core';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityDirective, ContentDensityMode } from '@fundamental-ngx/core/content-density';\nimport {\n    PopoverBodyComponent,\n    PopoverComponent,\n    PopoverControlComponent,\n    TriggerConfig\n} from '@fundamental-ngx/core/popover';\nimport { Placement } from '@fundamental-ngx/core/shared';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { ProductSwitchButtonDirective } from '../product-switch-button.directive';\nimport { FD_PRODUCT_SWITCH_COMPONENT } from '../tokens';\n\n@Component({\n    selector: 'fd-product-switch',\n    templateUrl: './product-switch.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: FD_PRODUCT_SWITCH_COMPONENT,\n            useExisting: ProductSwitchComponent\n        }\n    ],\n    imports: [\n        PopoverComponent,\n        PopoverControlComponent,\n        ButtonComponent,\n        PopoverBodyComponent,\n        FdTranslatePipe,\n        NgTemplateOutlet,\n        ContentDensityDirective\n    ],\n    host: {\n        '[class.fd-popover-custom--disabled]': 'disabled()'\n    }\n})\nexport class ProductSwitchComponent {\n    /** Placement of the product switch dropdown. */\n    readonly placement = input<Placement>('bottom-end');\n\n    /** Whether the product switch is disabled. */\n    readonly disabled = input(false, { transform: booleanAttribute });\n\n    /** Whether the product switch should close when the escape key is pressed. */\n    readonly closeOnEscapeKey = input(true, { transform: booleanAttribute });\n\n    /** Whether the product switch should close when a click is made outside its boundaries. */\n    readonly closeOnOutsideClick = input(true, { transform: booleanAttribute });\n\n    /** Whether the product switch dropdown should have an arrow. */\n    readonly noArrow = input(true, { transform: booleanAttribute });\n\n    /** Whether to wrap content with fd-scrollbar directive. */\n    readonly disableScrollbar = input(false, { transform: booleanAttribute });\n\n    /** The trigger events that will open/close the product switch. */\n    readonly triggers = input<(string | TriggerConfig)[]>(['click']);\n\n    /** Whether the product switch should trap focus within its boundaries. */\n    readonly focusTrapped = input(false, { transform: booleanAttribute });\n\n    /** Whether the product switch should automatically move focus into the trapped region. */\n    readonly focusAutoCapture = input(false, { transform: booleanAttribute });\n\n    /** Two-way binding for product switch open state. */\n    readonly isOpen = model(false);\n\n    /** Event emitted right before the product switch is being opened. */\n    readonly beforeOpen = output<void>();\n\n    /** Event emitted when the product switch open state changes. */\n    readonly isOpenChange = output<boolean>();\n\n    /** @hidden */\n    contentDensity = signal<ContentDensityMode>(ContentDensityMode.COZY);\n\n    /** @hidden */\n    protected readonly customProductSwitchButton = contentChild(ProductSwitchButtonDirective);\n}\n","<div class=\"fd-product-switch\">\n    <fd-popover\n        [placement]=\"placement()\"\n        [closeOnEscapeKey]=\"closeOnEscapeKey()\"\n        [closeOnOutsideClick]=\"closeOnOutsideClick()\"\n        [(isOpen)]=\"isOpen\"\n        [disabled]=\"disabled()\"\n        [triggers]=\"triggers()\"\n        [focusTrapped]=\"focusTrapped()\"\n        [focusAutoCapture]=\"focusAutoCapture()\"\n        [noArrow]=\"noArrow()\"\n        [disableScrollbar]=\"disableScrollbar()\"\n        (beforeOpen)=\"beforeOpen.emit()\"\n        (isOpenChange)=\"isOpenChange.emit($event)\"\n    >\n        <fd-popover-control>\n            @if (!customProductSwitchButton()) {\n                <button\n                    fd-button\n                    [attr.aria-label]=\"('coreProductSwitch.ariaLabel' | fdTranslate)()\"\n                    [attr.title]=\"('coreProductSwitch.ariaLabel' | fdTranslate)()\"\n                    class=\"fd-shellbar__button\"\n                    glyph=\"grid\"\n                    fdType=\"transparent\"\n                    [fdContentDensity]=\"contentDensity()\"\n                ></button>\n            } @else {\n                <ng-template [ngTemplateOutlet]=\"customProductSwitchButton()!.templateRef\"></ng-template>\n            }\n        </fd-popover-control>\n        <fd-popover-body>\n            <ng-content></ng-content>\n        </fd-popover-body>\n    </fd-popover>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ProductSwitchBodyComponent } from './product-switch-body/product-switch-body.component';\nimport { ProductSwitchComponent } from './product-switch/product-switch.component';\n\n/**\n * @deprecated\n * Use direct imports of `ProductSwitchComponent`, `ProductSwitchBodyComponent`\n */\n@NgModule({\n    imports: [ProductSwitchComponent, ProductSwitchBodyComponent],\n    exports: [ProductSwitchComponent, ProductSwitchBodyComponent]\n})\nexport class ProductSwitchModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAuBA,MAAM,yBAAyB,GAAG,GAAG;AACrC,MAAM,gBAAgB,GAAG,GAAG;MAUf,0BAA0B,CAAA;;IAkCnC,WAAA,CACY,cAA6B,EACpB,IAAuB,EAAA;QADhC,IAAA,CAAA,cAAc,GAAd,cAAc;QACL,IAAA,CAAA,IAAI,GAAJ,IAAI;;QAjCzB,IAAA,CAAA,kBAAkB,GAAG,IAAI;;QAQzB,IAAA,CAAA,aAAa,GAAG,KAAK;;AAIZ,QAAA,IAAA,CAAA,cAAc,GAAwB,IAAI,YAAY,EAAS;;AAI/D,QAAA,IAAA,CAAA,WAAW,GAAuB,IAAI,YAAY,EAAQ;;QAGhD,IAAA,CAAA,2BAA2B,GAAG,2BAA2B;;AAMpE,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;;QAGnC,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAMzD;;IAGH,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACnB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC7C,YAAA,MAAM,EAAE,UAAU,EAAE,GAAW,KAAK,CAAC,MAAM;AAC3C,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAC/B,CAAC,CAAC,CACL;QAED,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE;AACvD,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IAC1B;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;IACrC;;IAGA,UAAU,CAAC,IAAuB,EAAE,KAAiB,EAAA;QACjD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,MAAM,OAAO,CAAC,QAAQ,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC;AAEzE,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACxB;IACJ;;AAGA,IAAA,+BAA+B,CAAC,SAAyC,EAAA;QACrE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,KAAK;IACnC;;AAGA,IAAA,cAAc,CAAC,KAAoB,EAAA;AAC/B,QAAA,MAAM,MAAM,GAAgB,KAAK,CAAC,MAAM;QAExC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;YAChC,KAAK,CAAC,cAAc,EAAE;QAC1B;AAEA,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;YAC1C,MAAM,CAAC,KAAK,EAAE;QAClB;AAAO,aAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AAC5B,YAAA,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;YAC1E,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/C;AAAO,aAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE;AAC/E,YAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC;QAC9C;IACJ;;IAGA,YAAY,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC;IACpC;;IAGA,WAAW,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa;IAC/C;;AAGQ,IAAA,UAAU,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,GAAG,yBAAyB;QACtD;aAAO;AACH,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,GAAG,gBAAgB;QAC7C;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;IAC5B;;AAGQ,IAAA,oBAAoB,CAAC,KAAoB,EAAE,MAAmB,EAAE,CAAS,EAAA;AAC7E,QAAA,MAAM,sBAAsB,GAAgB,MAAM,CAAC,sBAAsB;AACzE,QAAA,MAAM,kBAAkB,GAAgB,MAAM,CAAC,kBAAkB;QAEjE,IACI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AAC9B,aAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAC9G;AACE,YAAA,OAAoB,MAAM,CAAC,sBAAsB,EAAE;AAC/C,gBAAA,MAAM,GAAgB,MAAM,CAAC,sBAAsB;YACvD;YACA,MAAM,CAAC,KAAK,EAAE;QAClB;QAEA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,kBAAkB,EAAE,KAAK,EAAE,GAAG,sBAAsB,EAAE,KAAK,EAAE;QAC3F;aAAO,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,sBAAsB,EAAE,KAAK,EAAE,GAAG,kBAAkB,EAAE,KAAK,EAAE;QAC3F;AAAO,aAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE;YACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC3B,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACrD;iBAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACjC,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACrD;QACJ;IACJ;;AAGQ,IAAA,0BAA0B,CAAC,KAAoB,EAAE,MAAmB,EAAE,CAAS,EAAA;QACnF,MAAM,iBAAiB,GAAG,CAAC;AAC3B,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,EAAE,QAAQ;QAE/C,IAAI,CAAC,QAAQ,EAAE;YACX;QACJ;QAEA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;YACxB,QAAQ,CAAC,CAAC,GAAG,iBAAiB,CAAE,EAAE,KAAK,EAAE;QAC3D;QAEA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;YACtB,QAAQ,CAAC,CAAC,GAAG,iBAAiB,CAAE,EAAE,KAAK,EAAE;QAC3D;IACJ;;AAGQ,IAAA,0BAA0B,CAAC,KAAoB,EAAE,MAAmB,EAAE,CAAS,EAAA;QACnF,MAAM,iBAAiB,GAAG,CAAC;AAC3B,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,EAAE,QAAQ;QAE/C,IAAI,CAAC,QAAQ,EAAE;YACX;QACJ;QAEA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;YACxB,QAAQ,CAAC,CAAC,GAAG,iBAAiB,CAAE,EAAE,KAAK,EAAE;QAC3D;QAEA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;YACtB,QAAQ,CAAC,CAAC,GAAG,iBAAiB,CAAE,EAAE,KAAK,EAAE;QAC3D;IACJ;;IAGQ,sBAAsB,CAAC,KAAoB,EAAE,MAAmB,EAAA;AACpE,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;AACpF,QAAA,MAAM,sBAAsB,GACxB,WAAW,KAAK;AACZ,cAAe,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AACtE,cAAe,MAAM,CAAC,sBAAsB;QACpD,MAAM,kBAAkB,GACpB,WAAW,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG;cACpB,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAC/C,cAAe,MAAM,CAAC,kBAAkB;AAEhD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,kBAAkB,EAAE;YAClF,kBAAkB,CAAC,KAAK,EAAE;QAC9B;AAAO,aAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,sBAAsB,EAAE;YAC3F,sBAAsB,CAAC,KAAK,EAAE;QAClC;IACJ;8GAjMS,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClCvC,wtFA6DA,EAAA,MAAA,EAAA,CAAA,8/rBAAA,EAAA,itEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED7Bc,gBAAgB,8OAAE,gBAAgB,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,WAAA,EAAA,eAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,0BAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,aAAA,EAAA,aAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAEnE,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBARtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,iBAGnB,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,wtFAAA,EAAA,MAAA,EAAA,CAAA,8/rBAAA,EAAA,itEAAA,CAAA,EAAA;;sBAI5E;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;;ME9CQ,4BAA4B,CAAA;;AAErC,IAAA,WAAA,CAAqB,WAA6B,EAAA;QAA7B,IAAA,CAAA,WAAW,GAAX,WAAW;IAAqB;8GAF5C,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCHY,2BAA2B,GAAG,IAAI,cAAc,CAAC,0BAA0B;;MC8C3E,sBAAsB,CAAA;AAvBnC,IAAA,WAAA,GAAA;;AAyBa,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAY,YAAY,qDAAC;;QAG1C,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAGxD,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,IAAI,6DAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAG/D,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAC,IAAI,gEAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAGlE,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,oDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAGtD,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,KAAK,6DAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;AAGhE,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAA6B,CAAC,OAAO,CAAC,oDAAC;;QAGvD,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,KAAK,yDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAG5D,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,KAAK,6DAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;AAGhE,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,KAAK,kDAAC;;QAGrB,IAAA,CAAA,UAAU,GAAG,MAAM,EAAQ;;QAG3B,IAAA,CAAA,YAAY,GAAG,MAAM,EAAW;;AAGzC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAqB,kBAAkB,CAAC,IAAI,0DAAC;;AAGjD,QAAA,IAAA,CAAA,yBAAyB,GAAG,YAAY,CAAC,4BAA4B,qEAAC;AAC5F,IAAA;8GA1CY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,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,mBAAA,EAAA,MAAA,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,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,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,cAAA,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,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,MAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mCAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAnBpB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,2BAA2B;AACpC,gBAAA,WAAW,EAAE;AAChB;AACJ,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAuD2D,4BAA4B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzF5F,u4CAmCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDCQ,gBAAgB,8mBAChB,uBAAuB,EAAA,QAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,eAAe,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,oBAAoB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEpB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,uBAAuB,+cAFvB,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAQV,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAvBlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,eAAA,EAEZ,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,2BAA2B;AACpC,4BAAA,WAAW,EAAA;AACd;qBACJ,EAAA,OAAA,EACQ;wBACL,gBAAgB;wBAChB,uBAAuB;wBACvB,eAAe;wBACf,oBAAoB;wBACpB,eAAe;wBACf,gBAAgB;wBAChB;qBACH,EAAA,IAAA,EACK;AACF,wBAAA,qCAAqC,EAAE;AAC1C,qBAAA,EAAA,QAAA,EAAA,u4CAAA,EAAA;2xCA2C2D,4BAA4B,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AErF5F;;;AAGG;MAKU,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAHlB,sBAAsB,EAAE,0BAA0B,CAAA,EAAA,OAAA,EAAA,CAClD,sBAAsB,EAAE,0BAA0B,CAAA,EAAA,CAAA,CAAA;+GAEnD,mBAAmB,EAAA,OAAA,EAAA,CAHlB,sBAAsB,EAAE,0BAA0B,CAAA,EAAA,CAAA,CAAA;;2FAGnD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,0BAA0B,CAAC;AAC7D,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,0BAA0B;AAC/D,iBAAA;;;ACXD;;AAEG;;;;"}