{"version":3,"file":"nxt-sortablejs.mjs","sources":["../../../packages/sortablejs/src/lib/globals.ts","../../../packages/sortablejs/src/lib/sortablejs-binding.ts","../../../packages/sortablejs/src/lib/sortablejs-bindings.ts","../../../packages/sortablejs/src/lib/sortablejs.service.ts","../../../packages/sortablejs/src/lib/sortablejs.directive.ts","../../../packages/sortablejs/src/nxt-sortablejs.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core'\r\nimport { Options } from 'sortablejs'\r\n\r\n/** @internal */\r\nexport const GLOBALS: InjectionToken<Options> = new InjectionToken('Global config for sortablejs')\r\n\r\nexport function provideGlobalSortableOptions(globalOptions: Options): Provider[] {\r\n    return [\r\n        {\r\n            provide: GLOBALS,\r\n            useValue: globalOptions\r\n        }\r\n    ]\r\n}\r\n","import { type FormArray } from '@angular/forms'\nimport { SortableData } from './sortablejs.directive'\n\n/** @internal */\nfunction isFormArray<T>(target: SortableData<T>): target is (SortableData<T> & FormArray<any>) {\n    // we need this to identify that the target is a FormArray\n    // we don't want to have a dependency on @angular/forms just for that\n    // just checking for random FormArray methods not available on a standard array\n    return !!target.at && !!(target as FormArray).insert && !!(target as FormArray).reset\n}\n\n/** @internal */\nexport class SortablejsBinding<T> {\n\n    constructor(\n        private readonly target: SortableData<T>\n    ) { }\n\n    insert(index: number, item: any) {\n        if (isFormArray(this.target)) {\n            this.target.insert(index, item)\n        } else {\n            (this.target as T[]).splice(index, 0, item)\n        }\n    }\n\n    get(index: number) {\n        return isFormArray(this.target) ? this.target.at(index) as T : (this.target as T[])[index]\n    }\n\n    remove(index: number) {\n        let item\n\n        if (isFormArray(this.target)) {\n            item = this.target.at(index)\n            this.target.removeAt(index)\n        } else {\n            item = (this.target as T[]).splice(index, 1)[0]\n        }\n\n        return item\n    }\n\n}\n","import { SortablejsBinding } from './sortablejs-binding'\r\nimport { SortableData } from './sortablejs.directive'\r\n\r\n/** @internal */\r\nexport class SortablejsBindings<T> {\r\n\r\n    bindings: Array<SortablejsBinding<T>>\r\n\r\n    constructor(bindingTargets: Array<SortableData<T>>) {\r\n        this.bindings = bindingTargets.map(target => new SortablejsBinding<T>(target))\r\n    }\r\n\r\n    injectIntoEvery(index: number, items: any[]) {\r\n        this.bindings.forEach((b, i) => b.insert(index, items[i]))\r\n    }\r\n\r\n    getFromEvery(index: number) {\r\n        return this.bindings.map(b => b.get(index))\r\n    }\r\n\r\n    extractFromEvery(index: number) {\r\n        return this.bindings.map(b => b.remove(index))\r\n    }\r\n\r\n    get provided() {\r\n        return !!this.bindings.length\r\n    }\r\n\r\n}\r\n","import { Injectable } from '@angular/core'\r\n\r\n/** @internal */\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class SortablejsService {\r\n\r\n    // original library calls the events in unnatural order\r\n    // first the item is added, then removed from the previous array\r\n    // this is a temporary event to work this around\r\n    // as long as only one sortable takes place at a certain time\r\n    // this is enough to have a single `global` event\r\n    transfer?: (items: any[]) => void\r\n\r\n}\r\n","import {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Directive,\n    ElementRef,\n    NgZone,\n    OnChanges,\n    OnDestroy,\n    Renderer2,\n    SimpleChange,\n    computed,\n    inject,\n    input,\n    output\n} from '@angular/core'\nimport { type AbstractControl, type FormArray } from '@angular/forms'\nimport Sortable, { Options, SortableEvent } from 'sortablejs'\nimport { GLOBALS } from './globals'\nimport { SortablejsBindings } from './sortablejs-bindings'\nimport { SortablejsService } from './sortablejs.service'\n\nexport type SortableData<T> = [T] extends [AbstractControl] ? (FormArray<T> | T[]) : T[]\nexport type CloneFunction<T> = (item: T) => T\n\n@Directive({ selector: '[nxtSortablejs]' })\nexport class SortablejsDirective<T> implements OnChanges, OnDestroy, AfterViewInit {\n\n    private readonly globalConfig = inject(GLOBALS, { optional: true })\n    private readonly service = inject(SortablejsService)\n    private readonly element = inject(ElementRef)\n    private readonly cdRef = inject(ChangeDetectorRef)\n    private readonly zone = inject(NgZone)\n    private readonly renderer = inject(Renderer2)\n\n    /** Input data, can be Array or FormArray */\n    readonly data = input<SortableData<T>>(undefined, { alias: 'nxtSortablejs' })\n\n    /**\n     * CSS selector for the sortable container\n     *\n     * Mostly required when used with custom components which wrap items in multiple containers. In that case,\n     * this should be the selector for the direct HTML parent of sortable items.\n     */\n    readonly sortablejsContainer = input<string>()\n\n    /** Sortablejs configuration */\n    readonly config = input<Options>()\n\n    /** A function invoked when cloning items from template dataset into target dataset */\n    readonly cloneFunction = input<CloneFunction<T>>()\n\n    /** Initialised a new Sortablejs instance */\n    readonly init = output<Sortable>()\n\n    private sortableInstance?: Sortable\n\n    private readonly bindings = computed(() => {\n        const data = this.data()\n        if (!data) {\n            return new SortablejsBindings([])\n        } else if (data instanceof SortablejsBindings) {\n            return data\n        } else {\n            return new SortablejsBindings([data])\n        }\n    })\n\n    private readonly optionsWithoutEvents = computed(() => ({ ...(this.globalConfig || {}), ...(this.config() || {}) }))\n    private readonly overridenOptions = computed<Options>(() => ({\n        // always intercept standard events but act only in case items are set (bindingEnabled)\n        // allows to forget about tracking this.items changes\n        onAdd: (event: SortableEvent) => {\n            this.service.transfer = (items: any[]) => {\n                this.bindings().injectIntoEvery(event.newIndex!, items)\n                this.proxyEvent('onAdd', event)\n            }\n\n            this.proxyEvent('onAddOriginal', event)\n            this.cdRef.detectChanges()\n        },\n        onRemove: (event: SortableEvent) => {\n            const bindings = this.bindings()\n\n            if (bindings.provided) {\n                if (this.isCloning) {\n                    this.service.transfer?.(bindings.getFromEvery(event.oldIndex!).map(item => this.clone(item)))\n\n                    // great thanks to https://github.com/tauu\n                    // event.item is the original item from the source list which is moved to the target list\n                    // event.clone is a clone of the original item and will be added to source list\n                    // If bindings are provided, adding the item dom element to the target list causes artifacts\n                    // as it interferes with the rendering performed by the angular template.\n                    // Therefore we remove it immediately and also move the original item back to the source list.\n                    // (event handler may be attached to the original item and not its clone, therefore keeping\n                    // the original dom node, circumvents side effects )\n                    this.renderer.removeChild(event.item.parentNode, event.item)\n                    this.renderer.insertBefore(event.clone.parentNode, event.item, event.clone)\n                    this.renderer.removeChild(event.clone.parentNode, event.clone)\n                } else {\n                    this.service.transfer?.(bindings.extractFromEvery(event.oldIndex!))\n                }\n\n                this.service.transfer = undefined\n            }\n\n            this.proxyEvent('onRemove', event)\n            this.cdRef.detectChanges()\n        },\n        onUpdate: (event: SortableEvent) => {\n            const bindings = this.bindings()\n\n            bindings.injectIntoEvery(event.newIndex!, bindings.extractFromEvery(event.oldIndex!))\n            this.proxyEvent('onUpdate', event)\n            this.cdRef.detectChanges()\n        }\n    }))\n\n    private readonly options = computed(() => ({ ...this.optionsWithoutEvents(), ...this.overridenOptions() }))\n\n    /** @internal */\n    ngAfterViewInit() {\n        if (Sortable?.create!) { // Sortable does not exist in angular universal (SSR)\n            this.create()\n        }\n    }\n\n    /** @internal */\n    ngOnChanges(changes: { [prop in keyof SortablejsDirective<T>]: SimpleChange }) {\n        const optionsChange = changes.config\n\n        if (optionsChange && !optionsChange.isFirstChange()) {\n            const previousOptions: Options = optionsChange.previousValue\n            const currentOptions: Options = optionsChange.currentValue\n\n            Object.keys(currentOptions).forEach(optionName => {\n                if (currentOptions[optionName as keyof Options] !== previousOptions[optionName as keyof Options]) {\n                    // use low-level option setter\n                    this.sortableInstance?.option(optionName as keyof Options, this.options()[optionName as keyof Options])\n                }\n            })\n        }\n    }\n\n    /** @internal */\n    ngOnDestroy() {\n        if (this.sortableInstance) {\n            this.sortableInstance.destroy()\n        }\n    }\n\n    private create() {\n        const sortablejsContainer = this.sortablejsContainer()\n        const container = sortablejsContainer ? this.element.nativeElement.querySelector(sortablejsContainer) : this.element.nativeElement\n\n        setTimeout(() => {\n            if (typeof window != 'undefined') {\n                this.sortableInstance = Sortable.create(container, this.options())\n                this.init.emit(this.sortableInstance)\n            }\n        }, 0)\n    }\n\n    private proxyEvent(eventName: string, ...params: any[]) {\n        this.zone.run(() => { // re-entering zone, see https://github.com/SortableJS/angular-sortablejs/issues/110#issuecomment-408874600\n            const opts = this.optionsWithoutEvents()\n            if (opts?.[eventName as keyof typeof opts]) {\n                (opts[eventName as keyof typeof opts] as (...params: any[]) => void)(...params)\n            }\n        })\n    }\n\n    private get isCloning() {\n        const groupOptions = this.sortableInstance?.options.group\n        return groupOptions && (typeof groupOptions != 'string')\n            ? groupOptions.checkPull?.(this.sortableInstance!, this.sortableInstance!, undefined as any, undefined as any) === 'clone'\n            : groupOptions === 'clone'\n    }\n\n    private clone(item: T): T {\n        // by default pass the item through, no cloning performed\n        return (this.cloneFunction() || (subitem => subitem))(item)\n    }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAGA;AACO,MAAM,OAAO,GAA4B,IAAI,cAAc,CAAC,8BAA8B,CAAC;AAE5F,SAAU,4BAA4B,CAAC,aAAsB,EAAA;IAC/D,OAAO;AACH,QAAA;AACI,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,QAAQ,EAAE;AACb;KACJ;AACL;;ACVA;AACA,SAAS,WAAW,CAAI,MAAuB,EAAA;;;;AAI3C,IAAA,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAE,MAAoB,CAAC,MAAM,IAAI,CAAC,CAAE,MAAoB,CAAC,KAAK;AACzF;AAEA;MACa,iBAAiB,CAAA;AAE1B,IAAA,WAAA,CACqB,MAAuB,EAAA;QAAvB,IAAA,CAAA,MAAM,GAAN,MAAM;IACvB;IAEJ,MAAM,CAAC,KAAa,EAAE,IAAS,EAAA;AAC3B,QAAA,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;QACnC;aAAO;YACF,IAAI,CAAC,MAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC;QAC/C;IACJ;AAEA,IAAA,GAAG,CAAC,KAAa,EAAA;QACb,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAM,GAAI,IAAI,CAAC,MAAc,CAAC,KAAK,CAAC;IAC9F;AAEA,IAAA,MAAM,CAAC,KAAa,EAAA;AAChB,QAAA,IAAI,IAAI;AAER,QAAA,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC1B,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC/B;aAAO;AACH,YAAA,IAAI,GAAI,IAAI,CAAC,MAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD;AAEA,QAAA,OAAO,IAAI;IACf;AAEH;;ACxCD;MACa,kBAAkB,CAAA;AAI3B,IAAA,WAAA,CAAY,cAAsC,EAAA;AAC9C,QAAA,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,iBAAiB,CAAI,MAAM,CAAC,CAAC;IAClF;IAEA,eAAe,CAAC,KAAa,EAAE,KAAY,EAAA;QACvC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D;AAEA,IAAA,YAAY,CAAC,KAAa,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/C;AAEA,IAAA,gBAAgB,CAAC,KAAa,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClD;AAEA,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;IACjC;AAEH;;AC1BD;MAIa,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFd,MAAM,EAAA,CAAA,CAAA;;2FAET,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCoBY,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;QAGqB,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAClD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACnC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5B,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACjC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AACrB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;;QAGpC,IAAA,CAAA,IAAI,GAAG,KAAK,CAAkB,SAAS,4EAAI,KAAK,EAAE,eAAe,EAAA,CAAG;AAE7E;;;;;AAKG;AACM,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK;2GAAU;;AAGrC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK;8FAAW;;AAGzB,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK;qGAAoB;;QAGzC,IAAA,CAAA,IAAI,GAAG,MAAM,EAAY;AAIjB,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACtC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;YACxB,IAAI,CAAC,IAAI,EAAE;AACP,gBAAA,OAAO,IAAI,kBAAkB,CAAC,EAAE,CAAC;YACrC;AAAO,iBAAA,IAAI,IAAI,YAAY,kBAAkB,EAAE;AAC3C,gBAAA,OAAO,IAAI;YACf;iBAAO;AACH,gBAAA,OAAO,IAAI,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC;YACzC;QACJ,CAAC;qFAAC;QAEe,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;iGAAC;AACnG,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAU,OAAO;;;AAGzD,YAAA,KAAK,EAAE,CAAC,KAAoB,KAAI;gBAC5B,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,KAAY,KAAI;AACrC,oBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,QAAS,EAAE,KAAK,CAAC;AACvD,oBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC;AACnC,gBAAA,CAAC;AAED,gBAAA,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC;AACvC,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC9B,CAAC;AACD,YAAA,QAAQ,EAAE,CAAC,KAAoB,KAAI;AAC/B,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAEhC,gBAAA,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACnB,oBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,wBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,QAAS,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;;;;;;;;;AAU7F,wBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC;AAC5D,wBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC;AAC3E,wBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC;oBAClE;yBAAO;AACH,wBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAS,CAAC,CAAC;oBACvE;AAEA,oBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,SAAS;gBACrC;AAEA,gBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC;AAClC,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC9B,CAAC;AACD,YAAA,QAAQ,EAAE,CAAC,KAAoB,KAAI;AAC/B,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAEhC,gBAAA,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,QAAS,EAAE,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAS,CAAC,CAAC;AACrF,gBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC;AAClC,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC9B;SACH,CAAC;6FAAC;QAEc,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,oBAAoB,EAAE,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;oFAAC;AAkE9G,IAAA;;IA/DG,eAAe,GAAA;AACX,QAAA,IAAI,QAAQ,EAAE,MAAO,EAAE;YACnB,IAAI,CAAC,MAAM,EAAE;QACjB;IACJ;;AAGA,IAAA,WAAW,CAAC,OAAiE,EAAA;AACzE,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM;QAEpC,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,EAAE;AACjD,YAAA,MAAM,eAAe,GAAY,aAAa,CAAC,aAAa;AAC5D,YAAA,MAAM,cAAc,GAAY,aAAa,CAAC,YAAY;YAE1D,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,UAAU,IAAG;gBAC7C,IAAI,cAAc,CAAC,UAA2B,CAAC,KAAK,eAAe,CAAC,UAA2B,CAAC,EAAE;;AAE9F,oBAAA,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,UAA2B,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,UAA2B,CAAC,CAAC;gBAC3G;AACJ,YAAA,CAAC,CAAC;QACN;IACJ;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;QACnC;IACJ;IAEQ,MAAM,GAAA;AACV,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE;QACtD,MAAM,SAAS,GAAG,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;QAElI,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,OAAO,MAAM,IAAI,WAAW,EAAE;AAC9B,gBAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;YACzC;QACJ,CAAC,EAAE,CAAC,CAAC;IACT;AAEQ,IAAA,UAAU,CAAC,SAAiB,EAAE,GAAG,MAAa,EAAA;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AACf,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACxC,YAAA,IAAI,IAAI,GAAG,SAA8B,CAAC,EAAE;AACvC,gBAAA,IAAI,CAAC,SAA8B,CAAgC,CAAC,GAAG,MAAM,CAAC;YACnF;AACJ,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,IAAY,SAAS,GAAA;QACjB,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,KAAK;AACzD,QAAA,OAAO,YAAY,KAAK,OAAO,YAAY,IAAI,QAAQ;AACnD,cAAE,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAiB,EAAE,IAAI,CAAC,gBAAiB,EAAE,SAAgB,EAAE,SAAgB,CAAC,KAAK;AACnH,cAAE,YAAY,KAAK,OAAO;IAClC;AAEQ,IAAA,KAAK,CAAC,IAAO,EAAA;;AAEjB,QAAA,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,OAAO,IAAI,OAAO,CAAC,EAAE,IAAI,CAAC;IAC/D;8GA5JS,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,SAAS;mBAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE;;;ACxB1C;;AAEG;;;;"}