{"version":3,"file":"bootkit-ng1-components-list.mjs","sources":["../../../projects/ng1/components/list/list-item.ts","../../../projects/ng1/components/list/list.component.ts","../../../projects/ng1/components/list/list.component.html","../../../projects/ng1/components/list/list.module.ts","../../../projects/ng1/components/list/public-api.ts","../../../projects/ng1/components/list/bootkit-ng1-components-list.ts"],"sourcesContent":["import { inject, input, ElementRef, Directive } from '@angular/core';\nimport { ListComponent } from './list.component';\n\n/**\n * ListItem represents an individual item within a ListComponent.\n */\n@Directive({\n    selector: 'ng1-list-item',\n    exportAs: 'ng1ListItem',\n    standalone: true,\n    host: {\n        '[attr.id]': 'id()',\n        '[attr.tabIndex]': '_getTabIndex()'\n    }\n})\nexport class ListItem {\n    /**\n     * The value associated with the item. This can be of any type.\n     */\n    public readonly value = input<any>();\n\n    /**\n     * The id of the item.\n     */\n    public readonly id = input<any>();\n\n    /**\n     * Reference to the parent list component\n     */\n    public readonly list = inject(ListComponent);\n\n    /**\n     * Reference to the host element\n     */\n    public readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n    /**\n     * Indicates whether the item is active.\n     * @returns True if the item is active, false otherwise.\n     */\n    public isActive() {\n        return this.list.isActive(this);\n    }\n\n    /**\n     * Indicates whether the item is selected.\n     * @returns True if the item is selected, false otherwise.\n     */\n    public isSelected() {\n        return this.list.isSelected(this.value());\n    }\n\n    /**\n     * Selects the item.\n     * @returns \n     */\n    public select() {\n        return this.list.select(this.value());\n    }\n\n    /**\n     * Deselects the item.\n     * @returns \n     */\n    public deselect() {\n        this.list.deselect(this);\n    }\n\n    /**\n     * Toggles the selection state of the item.\n     * @returns void\n     */\n    public toggle() {\n        this.list.toggle(this.value());\n    }\n\n    // /**\n    //  * Indicates whether the item is disabled. Default is false.\n    //  */\n    // public readonly disabled = input(false, { transform: booleanAttribute });\n\n    /**\n     * Scrolls the item into view within its parent container.\n     * @param position The vertical alignment of the item after scrolling.\n     *                 Can be 'start', 'center', 'end', or 'nearest'.\n     *                 Default is 'nearest'.\n     * @param behavior The scrolling behavior.\n     */\n    public scrollIntoView(position?: ScrollLogicalPosition, behavior?: ScrollBehavior) {\n        this.elementRef.nativeElement.scrollIntoView({ block: position, behavior: behavior });\n    }\n\n    /**\n     * Sets focus on the item.\n     */\n    public focus() {\n        this.elementRef.nativeElement.focus();\n    }\n\n    protected _getTabIndex() {\n        let focus = this.list.focusMode();\n        // if (this.list.isDisabled()) {\n        //     return undefined;\n        // }\n\n        if (focus == 'none' || focus == 'activeDescendant') {\n            return undefined;\n        } else {\n            // focus: roving\n            return this.isActive() ? 0 : -1\n        }\n    }\n}\n","import { Component, ElementRef, input, signal, HostListener, inject, forwardRef, TemplateRef, ContentChild, ChangeDetectionStrategy, booleanAttribute, ChangeDetectorRef, effect, EventEmitter, Output, computed, ViewChildren, QueryList, ViewEncapsulation, ViewContainerRef, HostBinding, OnInit, AfterViewInit, untracked, model, Renderer2, EnvironmentInjector, runInInjectionContext } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { dataSourceAttribute, DataRequest, DataSource, DataSourceLike } from '@bootkit/ng1/data';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { objectFormatterAttribute, defaultFormatter, LocalizationService } from '@bootkit/ng1/localization';\nimport { ListItem } from \"./list-item\";\nimport {\n    CssClassAttribute, defaultEqualityComparer, equalityComparerAttribute, valueWriterAttribute,\n    defaultValueWriter, filterPredicateAttribute, noopFilter, IdGeneratorAttribute, TrackByAttribute, trackByIndex, IfDirective\n} from '@bootkit/ng1/common';\n\n/** \n * ListComponent is a versatile component that displays a list of items with support for single or multiple selection,\n * custom item templates, filtering, and keyboard navigation.\n */\n@Component({\n    selector: 'ng1-list, ng1-select-list',\n    exportAs: 'ng1List',\n    templateUrl: './list.component.html',\n    styleUrl: './list.component.scss',\n    standalone: true,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n        CommonModule,\n        // IfDirective,\n        ListItem\n    ],\n    providers: [{\n        provide: NG_VALUE_ACCESSOR,\n        useExisting: forwardRef(() => ListComponent),\n        multi: true\n    }],\n    host: {\n        '[class.ng1-list-loading]': 'source().isLoading()',\n        '[attr.aria-activedescendant]': '_hostAriaActiveDescendant()',\n        '[attr.disabled]': '_isDisabled() ? \"\" : undefined',\n        '[attr.aria-disabled]': '_isDisabled() ? \"\" : undefined',\n        '[attr.tabindex]': '_hostTabIndex()',\n    }\n})\nexport class ListComponent implements ControlValueAccessor {\n    private _localizationService = inject(LocalizationService);\n    private _changeDetector = inject(ChangeDetectorRef);\n    private _injector = inject(EnvironmentInjector);\n    private _changeCallback?: (value: any) => void;\n    private _touchCallback?: () => void;\n    private readonly _selectedItems = new Set<any>();\n\n    protected readonly _sourceItems = signal<any[]>([]);\n    @ContentChild(TemplateRef) protected _itemTemplate?: TemplateRef<any>;\n    protected readonly _activeItem = signal<ListItem | undefined>(undefined);\n    protected readonly _isDisabled = signal<boolean>(false);\n    private readonly _value = signal<any>(undefined);\n    private _renderer = inject(Renderer2);\n\n    /**\n     * A list of all visible list items.\n     */\n    @ViewChildren(ListItem) public readonly listItems?: QueryList<ListItem>;\n\n    /**\n     * Reference to the host element\n     */\n    public elementRef = inject<ElementRef<HTMLElement>>(ElementRef<HTMLElement>);\n\n    /**\n     * The data source for the select component.\n     * This can be an array of data, a function that returns an observable of data,\n     * or an instance of DataSource.\n     */\n    public readonly source = input.required<DataSource<any>, DataSourceLike<any>>({\n        transform: v => dataSourceAttribute(v)\n    });\n\n    /** \n     * Indicates whether multi selection is enabled or not.\n     */\n    public readonly multiple = input(false, {\n        transform: booleanAttribute\n    });\n\n    /**\n     * Indicates whether to show selection indicator (checkbox/radio) next to each item.\n     * Default is false.\n     */\n    public readonly showSelectionIndicator = input(false, {\n        transform: booleanAttribute\n    });\n\n    /**\n    * A comparer to compare items for selection.\n    * Default uses strict equality (===).\n    */\n    public readonly compareBy = input(defaultEqualityComparer, {\n        transform: equalityComparerAttribute\n    });\n\n    /**\n     * A fromatter to convert each item to a string for display.\n     * Default converts the item to a string using its toString method.\n     */\n    public readonly formatBy = input(defaultFormatter, {\n        transform: objectFormatterAttribute(this._injector)\n    });\n\n    /**\n     * Custom value writer to extract the value of any object while writing values.\n     */\n    public readonly writeBy = input(defaultValueWriter, {\n        transform: valueWriterAttribute\n    });\n\n    /**\n     * Custom filter function to filter items.\n     * Default is a noop filter that does not filter any items.\n     */\n    public readonly filterBy = input(noopFilter, {\n        transform: filterPredicateAttribute\n    });\n\n    /**\n     * A function that uniquely identifies each item in the list.\n     * If set to a function, it will be called with the index and item as arguments to generate the unique id.\n     * If set to a string, it will be used as the property name to extract the unique id from each item.\n     * Two predifined trackBy options are available:\n     * - '@index': uses the index of the item as its unique id.\n     * - '@item': uses the item itself as its unique id.\n     * @example\n     * trackBy=\"@index\"\n     * trackBy=\"@item\"\n     * trackBy=\"objectFieldName\"\n     * [trackBy]=\"customTrackByFunction\"\n     * @default trackByIndex\n     */\n    public readonly trackBy = input(trackByIndex, {\n        transform: TrackByAttribute\n    });\n\n    /**\n     * CSS class or classes to apply to the list container.\n     * Default is undefined.\n     */\n    public readonly itemClass = input(undefined, {\n        transform: CssClassAttribute\n    });\n\n    /**\n     * Defines the focus behavior of the list component.\n     * - 'none': No keyboard interaction is possible. The list cannot be focused.\n     * - 'roving': Roving tabindex is enabled. The list can be focused and the active item is tabbable.\n     * - 'activeDescendant': The list can be focused, but no item is tabbable. The active item is indicated using aria-activedescendant.\n     * @default 'activeDescendant'.\n     */\n    public readonly focusMode = input<'none' | 'roving' | 'activeDescendant'>('activeDescendant');\n\n    /**\n     * A function that generates unique ids for each item in the list.\n     * If set to a function, it will be called with the item as an argument to generate the id.\n     * If set to undefined, no ids will be generated for the items.\n     * @default undefined\n     */\n    public readonly idGenerator = input(undefined, {\n        transform: IdGeneratorAttribute\n    });\n\n    /**\n     * Event emitted when the selection state of an item changes by user interaction.\n     */\n    @Output() public readonly itemSelect = new EventEmitter<ListItemSelectEvent>();\n\n    /**\n     * The template to use for each item in the list.\n     */\n    public readonly itemTemplate = input<TemplateRef<any> | undefined>(undefined);\n\n    constructor() {\n        effect(() => {\n            this.source().load(new DataRequest()).subscribe(res => {\n                untracked(() => {\n                    this._activeItem.set(undefined);\n                    this._sourceItems.set(res.data);\n                    this._updateSelectedItems();\n                    this._activateFirstSelectedItem();\n                });\n            });\n        });\n    }\n\n    /**\n     * Indicates whether an item is active.\n     * @param item  \n     * @returns \n     */\n    public isActive(item: ListItem): boolean {\n        return item === this._activeItem();\n    }\n\n    /**\n     * Indicates whether the given value is selected.\n     * @param item \n     * @returns \n     */\n    public isSelected(value: any): boolean {\n        return this._selectedItems.has(value);\n    }\n\n    /**\n     * Selects the given value.\n     * @param item \n     */\n    public select(value: any): void {\n        if (this.multiple()) {\n            if (!this._selectedItems.has(value)) {\n                this._selectedItems.add(value);\n                this._updateValue();\n                this._changeCallback?.(this._value())\n            }\n        } else {\n            this._selectedItems.clear();\n            this._selectedItems.add(value);\n            this._updateValue();\n            this._changeCallback?.(this._value())\n        }\n    }\n\n    /**\n     * Deselects the given value.\n     * @param item \n     */\n    public deselect(value: any): void {\n        this._selectedItems.delete(value);\n        this._updateValue();\n        this._changeCallback?.(this._value());\n    }\n\n    /**\n     * Toggles the selection state of the given value.\n     * @param item\n     */\n    public toggle(value: any): void {\n        if (this.isSelected(value)) {\n            this.deselect(value);\n        } else {\n            this.select(value);\n        }\n    }\n\n    /**\n     * Deselects all items in the list.\n     */\n    public deselectAll(): void {\n        this._selectedItems.clear();\n        this._updateValue();\n        this._changeCallback?.(this._value());\n    }\n\n    /**\n     * Selects all items in the list. Only applicable in multiple selection mode.\n     */\n    public selectAll(): void {\n        if (this.multiple()) {\n            this._selectedItems.clear();\n            this._sourceItems().forEach(i => this._selectedItems.add(i));\n            this._updateValue();\n            this._changeCallback?.(this._value());\n        } else {\n            throw new Error('selectAll is only available in multiple selection mode.');\n        }\n    }\n\n    /**\n     * Gets the current value(s) of the list.\n     */\n    public get value(): ReadonlyArray<any | any[]> {\n        return this._value();\n    }\n\n    /**\n     * Gets the current items in the list.\n     */\n    public get items(): ReadonlyArray<any[]> {\n        return this._sourceItems();\n    }\n\n    writeValue(value: any): void {\n        if (this.multiple()) {\n            if (value === null || value === undefined) {\n                value = [];\n            } else if (!Array.isArray(value)) {\n                throw Error('invalid value. Expected an array in multiple selection mode.');\n            }\n        }\n\n        this._value.set(value);\n        this._updateSelectedItems();\n        this._activateFirstSelectedItem();\n        this._changeDetector.markForCheck();\n    }\n\n    registerOnChange(fn: any): void {\n        this._changeCallback = fn;\n    }\n\n    registerOnTouched(fn: any): void {\n        this._touchCallback = fn;\n    }\n\n    setDisabledState?(isDisabled: boolean): void {\n        this._isDisabled.set(isDisabled);\n    }\n\n    protected _handleUserSelection(item: ListItem, index: number) {\n        let value = item.value();\n\n        if (this.multiple()) {\n            this.toggle(value);\n        } else {\n            this.select(value);\n        }\n\n        this._activeItem.set(item);\n        this.itemSelect.emit({ value: item.value(), item: item, list: this });\n        this._changeDetector.detectChanges();\n    }\n\n    protected _showLoadingSppiner = computed(() => {\n        let source = this.source();\n        return source.isLoading() && source.type == 'remote';\n    });\n\n    private _updateSelectedItems(): void {\n        let value = this._value();\n        let compareBy = this.compareBy();\n        let findAndSelect = (v: any) => {\n            let index = this._sourceItems().findIndex(i => compareBy(i, v));\n            if (index > -1) {\n                let item = this._sourceItems().at(index)!;\n                this._selectedItems.add(item);\n            }\n\n            return index;\n        };\n\n        this._selectedItems.clear();\n        if (this.multiple()) {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach(v => findAndSelect(v));\n            }\n        } else {\n            findAndSelect(value);\n        }\n    }\n\n    private _activateFirstSelectedItem(): void {\n        if (this._selectedItems.size > 0) {\n            let value = this._selectedItems.values().next().value;\n            let item = this.listItems?.find(i => i.value() === value);\n            if (item) {\n                this._activeItem.set(item);\n            }\n        }\n    }\n\n    private _updateValue(): void {\n        let value: any;\n\n        if (this.multiple()) {\n            let values: any[] = [];\n            this._selectedItems.forEach(v => {\n                values.push(this.writeBy()(v));\n            });\n            value = values;\n        } else {\n            if (this._selectedItems.size > 0) {\n                let first = this._selectedItems.values().next().value;\n                value = this.writeBy()(first);\n            } else {\n                value = undefined;\n            }\n        }\n\n        this._value.set(value);\n    }\n\n    protected _hostAriaActiveDescendant = computed(() => {\n        if (this._activeItem() && !this._isDisabled() && this.focusMode() == 'activeDescendant') {\n            return this._activeItem()!.id();\n        }\n\n        return undefined;\n    });\n\n    protected _hostTabIndex = computed(() => {\n        let isDisabled = this._isDisabled(); // track the value\n        let activeItem = this._activeItem(); // track the value\n\n        if (isDisabled) {\n            return undefined;\n        }\n\n        switch (this.focusMode()) {\n            case 'none':\n                return undefined;\n            case 'activeDescendant':\n                return 0;\n            case 'roving':\n\n                return activeItem ? undefined : 0;\n        }\n    });\n\n    @HostListener('blur')\n    protected _onHostBlur() {\n        this._touchCallback?.();\n    }\n\n    @HostListener('keydown', ['$event'])\n    protected _onKeydown(e: KeyboardEvent) {\n        if (this._isDisabled())\n            return;\n\n        let listLength = this.listItems!.length;\n        if (listLength == 0) {\n            return;\n        }\n\n        let activeItem = this._activeItem();\n        let activeItemindex = activeItem ? this.listItems!.toArray().findIndex(i => i === activeItem) : -1;\n\n        switch (e.key) {\n            case 'ArrowDown':\n                if (activeItemindex < listLength - 1) {\n                    const next = this.listItems!.get(activeItemindex + 1);\n                    this._activeItem.set(next);\n                }\n                e.preventDefault();\n                break;\n            case 'ArrowUp':\n                if (activeItemindex == -1) {\n                    const last = this.listItems!.get(listLength - 1);\n                    this._activeItem.set(last);\n                } else if (activeItemindex > 0) {\n                    const previous = this.listItems!.get(activeItemindex - 1);\n                    this._activeItem.set(previous);\n                }\n                e.preventDefault();\n                break;\n            case 'Enter':\n                if (activeItem) {\n                    this._handleUserSelection(activeItem, activeItemindex);\n                }\n                break;\n            case 'Home':\n                const first = this.listItems!.get(0);\n                this._activeItem.set(first);\n                e.preventDefault();\n                break;\n            case 'End':\n                const last = this.listItems!.get(listLength - 1);\n                this._activeItem.set(last);\n                e.preventDefault();\n                break;\n        }\n\n        this._activeItem()?.scrollIntoView('nearest', listLength > 100 ? 'instant' : 'smooth');\n        if (this.focusMode() === 'roving') {\n            this._activeItem()?.focus();\n        }\n    }\n}\n\n\n/**\n * Event emitted when the selection state of the list changes by user interaction.\n */\nexport interface ListItemSelectEvent {\n    /**\n     * The value of the item that was selected or deselected.\n     */\n    value: any;\n\n    /**\n     * The item that was selected or deselected.\n     */\n    readonly item: ListItem;\n\n    /**\n     * The list component that emitted the event.\n     */\n    readonly list: ListComponent\n}\n","@let filter = filterBy();\n@let formatter = formatBy();\n\n@for (item of _sourceItems(); track trackBy()($index, item)) {\n\n<ng1-list-item #listItem=\"ng1ListItem\"\n               *ng1If=\"!filter || filter(item)\"\n               [value]=\"item\"\n               [id]=\"idGenerator()?.(item)\"\n               [class.active]=\"isActive(listItem)\"\n               [class.selected]=\"isSelected(item)\"\n               [ngClass]=\"itemClass()?.(item)\"\n               (click)=\"_handleUserSelection(listItem, $index);\">\n\n       @if(itemTemplate() || _itemTemplate) {\n       @let template = itemTemplate() || _itemTemplate;\n       <ng-container *ngTemplateOutlet=\"template; context: { $implicit: {item: listItem, value: item}}\" />\n       } @else {\n       @if(showSelectionIndicator()) {\n       <input class=\"form-check-input ng1-selection-indicator\"\n              tabindex=\"-1\"\n              [checked]=\"isSelected(item)\"\n              [attr.type]=\"multiple() ? 'checkbox' : 'radio'\">\n       }\n\n       {{formatter(item)}}\n       }\n</ng1-list-item>\n}\n\n@if(_showLoadingSppiner()) {\n@if(_sourceItems().length == 0) {\n<div style=\"text-align: center; padding: 0.5rem 0;\">\n       <ng-container *ngTemplateOutlet=\"spinner\"></ng-container>\n</div>\n}@else {\n<div class=\"ng1-list-loading-cover\">\n       <ng-container *ngTemplateOutlet=\"spinner\"></ng-container>\n</div>\n}\n}\n\n<ng-template #spinner>\n       <div class=\"spinner-border spinner-sm text-primary ng1-list-loading-indicator\" role=\"status\">\n              <span class=\"visually-hidden\">Loading...</span>\n       </div>\n</ng-template>","import { NgModule } from '@angular/core';\nimport { ListComponent } from './list.component';\n\nconst Items = [ListComponent]\n\n/**\n * List module.\n */\n@NgModule({\n    imports: Items,\n    exports: Items\n})\nexport class ListModule { }\n","// export  *  from './types';\nexport * from './list.component';\nexport * from './list.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;AAGA;;AAEG;MAUU,QAAQ,CAAA;AACjB;;AAEG;IACa,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAO;AAEpC;;AAEG;IACa,EAAE,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAO;AAEjC;;AAEG;AACa,IAAA,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC;AAE5C;;AAEG;AACa,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AAExE;;;AAGG;IACI,QAAQ,GAAA;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IACnC;AAEA;;;AAGG;IACI,UAAU,GAAA;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAC7C;AAEA;;;AAGG;IACI,MAAM,GAAA;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACzC;AAEA;;;AAGG;IACI,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B;AAEA;;;AAGG;IACI,MAAM,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAClC;;;;;AAOA;;;;;;AAMG;IACI,cAAc,CAAC,QAAgC,EAAE,QAAyB,EAAA;AAC7E,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACzF;AAEA;;AAEG;IACI,KAAK,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;IACzC;IAEU,YAAY,GAAA;QAClB,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;;;;QAKjC,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,kBAAkB,EAAE;AAChD,YAAA,OAAO,SAAS;QACpB;aAAO;;AAEH,YAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC;IACJ;wGAhGS,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAR,QAAQ,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,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,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,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBATpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACF,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,iBAAiB,EAAE;AACtB;AACJ,iBAAA;;;ACHD;;;AAGG;MA2BU,aAAa,CAAA;AACd,IAAA,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAClD,IAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC3C,IAAA,SAAS,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACvC,IAAA,eAAe;AACf,IAAA,cAAc;AACL,IAAA,cAAc,GAAG,IAAI,GAAG,EAAO;AAE7B,IAAA,YAAY,GAAG,MAAM,CAAQ,EAAE,wDAAC;AACd,IAAA,aAAa;AAC/B,IAAA,WAAW,GAAG,MAAM,CAAuB,SAAS,uDAAC;AACrD,IAAA,WAAW,GAAG,MAAM,CAAU,KAAK,uDAAC;AACtC,IAAA,MAAM,GAAG,MAAM,CAAM,SAAS,kDAAC;AACxC,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAErC;;AAEG;AACqC,IAAA,SAAS;AAEjD;;AAEG;AACI,IAAA,UAAU,GAAG,MAAM,EAA0B,UAAuB,EAAC;AAE5E;;;;AAIG;AACa,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,yCACnC,SAAS,EAAE,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAA,CAAA,GAAA,CADoC;YAC1E,SAAS,EAAE,CAAC,IAAI,mBAAmB,CAAC,CAAC;AACxC,SAAA,CAAA,CAAA,CAAC;AAEF;;AAEG;IACa,QAAQ,GAAG,KAAK,CAAC,KAAK,4CAClC,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CADS;AACpC,YAAA,SAAS,EAAE;AACd,SAAA,CAAA,CAAA,CAAC;AAEF;;;AAGG;IACa,sBAAsB,GAAG,KAAK,CAAC,KAAK,0DAChD,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CADuB;AAClD,YAAA,SAAS,EAAE;AACd,SAAA,CAAA,CAAA,CAAC;AAEF;;;AAGE;IACc,SAAS,GAAG,KAAK,CAAC,uBAAuB,6CACrD,SAAS,EAAE,yBAAyB,EAAA,CAAA,GAAA,CADmB;AACvD,YAAA,SAAS,EAAE;AACd,SAAA,CAAA,CAAA,CAAC;AAEF;;;AAGG;AACa,IAAA,QAAQ,GAAG,KAAK,CAAC,gBAAgB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAC7C,SAAS,EAAE,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAA,CAAA,GAAA,CADJ;AAC/C,YAAA,SAAS,EAAE,wBAAwB,CAAC,IAAI,CAAC,SAAS;AACrD,SAAA,CAAA,CAAA,CAAC;AAEF;;AAEG;IACa,OAAO,GAAG,KAAK,CAAC,kBAAkB,2CAC9C,SAAS,EAAE,oBAAoB,EAAA,CAAA,GAAA,CADiB;AAChD,YAAA,SAAS,EAAE;AACd,SAAA,CAAA,CAAA,CAAC;AAEF;;;AAGG;IACa,QAAQ,GAAG,KAAK,CAAC,UAAU,4CACvC,SAAS,EAAE,wBAAwB,EAAA,CAAA,GAAA,CADM;AACzC,YAAA,SAAS,EAAE;AACd,SAAA,CAAA,CAAA,CAAC;AAEF;;;;;;;;;;;;;AAaG;IACa,OAAO,GAAG,KAAK,CAAC,YAAY,2CACxC,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CADe;AAC1C,YAAA,SAAS,EAAE;AACd,SAAA,CAAA,CAAA,CAAC;AAEF;;;AAGG;IACa,SAAS,GAAG,KAAK,CAAC,SAAS,6CACvC,SAAS,EAAE,iBAAiB,EAAA,CAAA,GAAA,CADa;AACzC,YAAA,SAAS,EAAE;AACd,SAAA,CAAA,CAAA,CAAC;AAEF;;;;;;AAMG;AACa,IAAA,SAAS,GAAG,KAAK,CAAyC,kBAAkB,qDAAC;AAE7F;;;;;AAKG;IACa,WAAW,GAAG,KAAK,CAAC,SAAS,+CACzC,SAAS,EAAE,oBAAoB,EAAA,CAAA,GAAA,CADY;AAC3C,YAAA,SAAS,EAAE;AACd,SAAA,CAAA,CAAA,CAAC;AAEF;;AAEG;AACuB,IAAA,UAAU,GAAG,IAAI,YAAY,EAAuB;AAE9E;;AAEG;AACa,IAAA,YAAY,GAAG,KAAK,CAA+B,SAAS,wDAAC;AAE7E,IAAA,WAAA,GAAA;QACI,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;gBAClD,SAAS,CAAC,MAAK;AACX,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;oBAC/B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;oBAC/B,IAAI,CAAC,oBAAoB,EAAE;oBAC3B,IAAI,CAAC,0BAA0B,EAAE;AACrC,gBAAA,CAAC,CAAC;AACN,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACN;AAEA;;;;AAIG;AACI,IAAA,QAAQ,CAAC,IAAc,EAAA;AAC1B,QAAA,OAAO,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE;IACtC;AAEA;;;;AAIG;AACI,IAAA,UAAU,CAAC,KAAU,EAAA;QACxB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;IACzC;AAEA;;;AAGG;AACI,IAAA,MAAM,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACjC,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC9B,IAAI,CAAC,YAAY,EAAE;gBACnB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACzC;QACJ;aAAO;AACH,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC3B,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;YAC9B,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACzC;IACJ;AAEA;;;AAGG;AACI,IAAA,QAAQ,CAAC,KAAU,EAAA;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IACzC;AAEA;;;AAGG;AACI,IAAA,MAAM,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACxB;aAAO;AACH,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACtB;IACJ;AAEA;;AAEG;IACI,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;QAC3B,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IACzC;AAEA;;AAEG;IACI,SAAS,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACjB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACzC;aAAO;AACH,YAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC;QAC9E;IACJ;AAEA;;AAEG;AACH,IAAA,IAAW,KAAK,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE;IACxB;AAEA;;AAEG;AACH,IAAA,IAAW,KAAK,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE;IAC9B;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;AACjB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvC,KAAK,GAAG,EAAE;YACd;iBAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC9B,gBAAA,MAAM,KAAK,CAAC,8DAA8D,CAAC;YAC/E;QACJ;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,0BAA0B,EAAE;AACjC,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACvC;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACpB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC7B;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACrB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;IAC5B;AAEA,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;IACpC;IAEU,oBAAoB,CAAC,IAAc,EAAE,KAAa,EAAA;AACxD,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAExB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACtB;aAAO;AACH,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACtB;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACrE,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;IACxC;AAEU,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAC1B,OAAO,MAAM,CAAC,SAAS,EAAE,IAAI,MAAM,CAAC,IAAI,IAAI,QAAQ;AACxD,IAAA,CAAC,+DAAC;IAEM,oBAAoB,GAAA;AACxB,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAChC,QAAA,IAAI,aAAa,GAAG,CAAC,CAAM,KAAI;YAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACZ,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,KAAK,CAAE;AACzC,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;YACjC;AAEA,YAAA,OAAO,KAAK;AAChB,QAAA,CAAC;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC3B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACjB,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACrB,gBAAA,KAAe,CAAC,OAAO,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;YACnD;QACJ;aAAO;YACH,aAAa,CAAC,KAAK,CAAC;QACxB;IACJ;IAEQ,0BAA0B,GAAA;QAC9B,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE;AAC9B,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AACrD,YAAA,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC;YACzD,IAAI,IAAI,EAAE;AACN,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;YAC9B;QACJ;IACJ;IAEQ,YAAY,GAAA;AAChB,QAAA,IAAI,KAAU;AAEd,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB,IAAI,MAAM,GAAU,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAG;gBAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AAClC,YAAA,CAAC,CAAC;YACF,KAAK,GAAG,MAAM;QAClB;aAAO;YACH,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE;AAC9B,gBAAA,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;gBACrD,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC;YACjC;iBAAO;gBACH,KAAK,GAAG,SAAS;YACrB;QACJ;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1B;AAEU,IAAA,yBAAyB,GAAG,QAAQ,CAAC,MAAK;AAChD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,kBAAkB,EAAE;AACrF,YAAA,OAAO,IAAI,CAAC,WAAW,EAAG,CAAC,EAAE,EAAE;QACnC;AAEA,QAAA,OAAO,SAAS;AACpB,IAAA,CAAC,qEAAC;AAEQ,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;QACpC,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpC,IAAI,UAAU,EAAE;AACZ,YAAA,OAAO,SAAS;QACpB;AAEA,QAAA,QAAQ,IAAI,CAAC,SAAS,EAAE;AACpB,YAAA,KAAK,MAAM;AACP,gBAAA,OAAO,SAAS;AACpB,YAAA,KAAK,kBAAkB;AACnB,gBAAA,OAAO,CAAC;AACZ,YAAA,KAAK,QAAQ;gBAET,OAAO,UAAU,GAAG,SAAS,GAAG,CAAC;;AAE7C,IAAA,CAAC,yDAAC;IAGQ,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,cAAc,IAAI;IAC3B;AAGU,IAAA,UAAU,CAAC,CAAgB,EAAA;QACjC,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB;AAEJ,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,SAAU,CAAC,MAAM;AACvC,QAAA,IAAI,UAAU,IAAI,CAAC,EAAE;YACjB;QACJ;AAEA,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE;AACnC,QAAA,IAAI,eAAe,GAAG,UAAU,GAAG,IAAI,CAAC,SAAU,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC;AAElG,QAAA,QAAQ,CAAC,CAAC,GAAG;AACT,YAAA,KAAK,WAAW;AACZ,gBAAA,IAAI,eAAe,GAAG,UAAU,GAAG,CAAC,EAAE;AAClC,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAU,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC;AACrD,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC9B;gBACA,CAAC,CAAC,cAAc,EAAE;gBAClB;AACJ,YAAA,KAAK,SAAS;AACV,gBAAA,IAAI,eAAe,IAAI,CAAC,CAAC,EAAE;AACvB,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAU,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;AAChD,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC9B;AAAO,qBAAA,IAAI,eAAe,GAAG,CAAC,EAAE;AAC5B,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAU,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC;AACzD,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAClC;gBACA,CAAC,CAAC,cAAc,EAAE;gBAClB;AACJ,YAAA,KAAK,OAAO;gBACR,IAAI,UAAU,EAAE;AACZ,oBAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,eAAe,CAAC;gBAC1D;gBACA;AACJ,YAAA,KAAK,MAAM;gBACP,MAAM,KAAK,GAAG,IAAI,CAAC,SAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC3B,CAAC,CAAC,cAAc,EAAE;gBAClB;AACJ,YAAA,KAAK,KAAK;AACN,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAU,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;AAChD,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC1B,CAAC,CAAC,cAAc,EAAE;gBAClB;;QAGR,IAAI,CAAC,WAAW,EAAE,EAAE,cAAc,CAAC,SAAS,EAAE,UAAU,GAAG,GAAG,GAAG,SAAS,GAAG,QAAQ,CAAC;AACtF,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,QAAQ,EAAE;AAC/B,YAAA,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE;QAC/B;IACJ;wGA5aS,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,uiEAbX,CAAC;AACR,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,aAAa,CAAC;AAC5C,gBAAA,KAAK,EAAE;AACV,aAAA,CAAC,qEAkBY,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EASX,QAAQ,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3D1B,smDA8Cc,i5DDtBN,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA;;gBAEZ,QAAQ,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAeH,aAAa,EAAA,UAAA,EAAA,CAAA;kBA1BzB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,QAAA,EAC3B,SAAS,EAAA,UAAA,EAGP,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B;wBACL,YAAY;;wBAEZ;AACH,qBAAA,EAAA,SAAA,EACU,CAAC;AACR,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,mBAAmB,CAAC;AAC5C,4BAAA,KAAK,EAAE;AACV,yBAAA,CAAC,EAAA,IAAA,EACI;AACF,wBAAA,0BAA0B,EAAE,sBAAsB;AAClD,wBAAA,8BAA8B,EAAE,6BAA6B;AAC7D,wBAAA,iBAAiB,EAAE,gCAAgC;AACnD,wBAAA,sBAAsB,EAAE,gCAAgC;AACxD,wBAAA,iBAAiB,EAAE,iBAAiB;AACvC,qBAAA,EAAA,QAAA,EAAA,smDAAA,EAAA,MAAA,EAAA,CAAA,01DAAA,CAAA,EAAA;;sBAWA,YAAY;uBAAC,WAAW;;sBASxB,YAAY;uBAAC,QAAQ;;sBA8GrB;;sBAmPA,YAAY;uBAAC,MAAM;;sBAKnB,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AE9ZvC,MAAM,KAAK,GAAG,CAAC,aAAa,CAAC;AAE7B;;AAEG;MAKU,UAAU,CAAA;wGAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAAV,UAAU,EAAA,OAAA,EAAA,CATR,aAAa,CAAA,EAAA,OAAA,EAAA,CAAb,aAAa,CAAA,EAAA,CAAA;AASf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAHV,KAAK,CAAA,EAAA,CAAA;;4FAGL,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE;AACZ,iBAAA;;;ACXD;;ACAA;;AAEG;;;;"}