ng-block-ui
Version:
Angular Block UI
1 lines • 39.8 kB
Source Map (JSON)
{"version":3,"file":"ng-block-ui.mjs","sources":["../../lib/constants/block-ui-default-name.constant.ts","../../lib/constants/block-ui-actions.constant.ts","../../lib/services/block-ui-instance.service.ts","../../lib/components/block-ui-content/block-ui-content.component.template.ts","../../lib/components/block-ui-content/block-ui-content.component.ts","../../lib/components/block-ui/block-ui.component.ts","../../lib/services/block-ui.service.ts","../../lib/directives/block-ui.directive.ts","../../lib/block-ui.module.ts","../../lib/decorators/block-ui.decorator.ts","../../lib/ng-block-ui.ts"],"sourcesContent":["export const BlockUIDefaultName: string = 'block-ui-main';\n","export class BlockUIActions {\n static START = 'start';\n static STOP = 'stop';\n static UPDATE = 'update';\n static RESET = 'reset';\n static RESET_GLOBAL = 'reset_global';\n static UNSUBSCRIBE = 'unsubscribe';\n}","import { Injectable } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { BlockUIActions } from '../constants/block-ui-actions.constant';\nimport { BlockUIDefaultName } from '../constants/block-ui-default-name.constant';\nimport { NgBlockUI } from '../models/block-ui.model';\nimport { BlockUISettings } from '../models/block-ui-settings.model';\nimport { BlockUIEvent } from '../models/block-ui-event.model';\n\n\n@Injectable()\nexport class BlockUIInstanceService {\n blockUISettings: BlockUISettings | any = {};\n blockUIInstances: any = {};\n private blockUISubject: ReplaySubject<any> = new ReplaySubject(1);\n private blockUIObservable: Observable<any> = this.blockUISubject.asObservable();\n\n constructor() {\n this.blockUIObservable.subscribe(this.blockUIMiddleware.bind(this));\n }\n\n getSettings(): BlockUISettings | any {\n return this.blockUISettings;\n }\n\n updateSettings(settings: BlockUISettings | any = {}): void {\n this.blockUISettings = { ...this.blockUISettings, ...settings };\n }\n\n decorate(name: string = BlockUIDefaultName): NgBlockUI {\n const blockUI = {\n name,\n isActive: false,\n blockCount: 0,\n start: this.dispatch(this.blockUISubject, BlockUIActions.START, name),\n update: this.dispatch(this.blockUISubject, BlockUIActions.UPDATE, name),\n stop: this.dispatch(this.blockUISubject, BlockUIActions.STOP, name),\n reset: this.dispatch(this.blockUISubject, BlockUIActions.RESET, name),\n resetGlobal: this.dispatch(this.blockUISubject, BlockUIActions.RESET_GLOBAL, name),\n unsubscribe: this.dispatch(this.blockUISubject, BlockUIActions.UNSUBSCRIBE, name)\n } as NgBlockUI;\n\n this.blockUIInstances[name] = this.blockUIInstances[name] || blockUI;\n\n return blockUI;\n }\n\n observe(): Observable<any> {\n return this.blockUIObservable;\n }\n\n clearInstance(instanceName: string) {\n this.dispatch(this.blockUISubject, BlockUIActions.RESET, instanceName);\n }\n\n private blockUIMiddleware({ action, name }: BlockUIEvent): void {\n let isActive: boolean = null;\n\n switch (action) {\n case (BlockUIActions.START):\n isActive = true;\n break;\n\n case (BlockUIActions.STOP):\n case (BlockUIActions.RESET):\n isActive = false;\n break;\n }\n\n if (isActive !== null) {\n this.blockUIInstances[name].isActive = isActive;\n }\n }\n\n private dispatch(subject: ReplaySubject<any>, action: BlockUIActions, name: string = BlockUIDefaultName): Function {\n return (message?: any): void => {\n subject.next({\n name,\n action,\n message\n });\n };\n }\n}\n","export const template = `\n<div class=\"block-ui-wrapper {{name}} {{className}}\" [ngClass]=\"{ 'active': state.blockCount > 0 }\">\n <div class=\"block-ui-spinner\" *ngIf=\"!templateCmp\">\n <div class=\"loader\"></div>\n <div *ngIf=\"message || defaultMessage\" class=\"message\">\n {{ message || defaultMessage }}\n </div>\n </div>\n <ng-template *ngIf=\"templateCmp\" #templateOutlet></ng-template>\n</div>\n`;\n","import {\n Component,\n OnInit,\n AfterViewInit,\n AfterViewChecked,\n OnDestroy,\n ViewEncapsulation,\n Input,\n ViewChild,\n ComponentRef,\n TemplateRef,\n ComponentFactoryResolver,\n ViewContainerRef,\n ChangeDetectorRef\n} from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { BlockUIInstanceService } from '../../services/block-ui-instance.service';\nimport { BlockUIEvent } from '../../models/block-ui-event.model';\nimport { BlockUIActions } from '../../constants/block-ui-actions.constant';\nimport { BlockUIDefaultName } from '../../constants/block-ui-default-name.constant';\nimport { styles } from './block-ui-content.component.style';\nimport { template } from './block-ui-content.component.template';\nimport { BlockUISettings } from '../../models/block-ui-settings.model';\n\nexport type BlockState = {\n startTimeouts: Array<any>;\n stopTimeouts: Array<any>;\n updateTimeouts: Array<any>;\n blockCount: number;\n startCallCount: number;\n stopCallCount: number;\n};\n\n@Component({\n selector: 'block-ui-content',\n template: template,\n styles: [styles], // TODO: Find how to bundle styles for npm\n encapsulation: ViewEncapsulation.None\n})\nexport class BlockUIContentComponent implements OnInit, AfterViewInit, AfterViewChecked, OnDestroy {\n @Input() name: string = BlockUIDefaultName;\n @Input() delayStart: number;\n @Input() delayStop: number;\n @Input('message') defaultMessage: string;\n @Input('template') templateCmp: any;\n @ViewChild('templateOutlet', { read: ViewContainerRef })\n templateOutlet: ViewContainerRef;\n\n defaultBlockState: BlockState = {\n startTimeouts: [],\n stopTimeouts: [],\n updateTimeouts: [],\n blockCount: 0,\n startCallCount: 0,\n stopCallCount: 0\n };\n state: BlockState = { ...this.defaultBlockState };\n className: string;\n templateCompRef: ComponentRef<{ message?: any }> | TemplateRef<{}>;\n message: any;\n\n private blockUISubscription: Subscription;\n private settings: BlockUISettings;\n\n constructor(\n private blockUI: BlockUIInstanceService,\n private resolver: ComponentFactoryResolver,\n private changeDetectionRef: ChangeDetectorRef\n ) { }\n\n ngOnInit() {\n this.settings = this.blockUI.getSettings();\n this.blockUISubscription = this.subscribeToBlockUI(this.blockUI.observe());\n }\n\n ngAfterViewInit() {\n try {\n if (!this.templateCmp) {\n return false;\n }\n\n if (this.templateCmp instanceof TemplateRef) {\n this.templateOutlet.createEmbeddedView(this.templateCmp);\n } else {\n const templateComp = this.resolver.resolveComponentFactory(this.templateCmp);\n this.templateCompRef = this.templateOutlet.createComponent(templateComp);\n this.updateBlockTemplate(this.message);\n }\n } catch (error) {\n console.error('ng-block-ui:', error);\n }\n }\n\n ngAfterViewChecked() {\n this.detectChanges();\n }\n\n private subscribeToBlockUI(blockUI$: Observable<any>): Subscription {\n return blockUI$.subscribe(event => this.onDispatchedEvent(event));\n }\n\n private onDispatchedEvent(event: BlockUIEvent) {\n switch (event.action) {\n case BlockUIActions.START:\n this.onStart(event);\n break;\n\n case BlockUIActions.STOP:\n this.onStop(event);\n break;\n\n case BlockUIActions.UPDATE:\n this.onUpdate(event);\n break;\n\n case BlockUIActions.RESET:\n this.onReset(event);\n break;\n\n case BlockUIActions.RESET_GLOBAL:\n this.resetState();\n break;\n\n case BlockUIActions.UNSUBSCRIBE:\n this.onStop(event);\n this.onUnsubscribe(event.name);\n break;\n }\n }\n\n private onStart({ name, message }: BlockUIEvent) {\n if (name === this.name) {\n const delay = this.delayStart ?? this.settings.delayStart ?? 0;\n\n this.state.startCallCount += 1;\n const startTimeout = setTimeout(() => {\n this.state.blockCount += 1;\n this.showBlock(message);\n this.updateInstanceBlockCount();\n }, delay);\n this.state.startTimeouts.push(startTimeout);\n }\n }\n\n private onStop({ name }: BlockUIEvent) {\n if (name === this.name) {\n const stopCount = this.state.stopCallCount + 1;\n\n if (this.state.startCallCount - stopCount >= 0) {\n const delay = this.delayStop ?? this.settings.delayStop ?? 0;\n\n this.state.stopCallCount = stopCount;\n const stopTimeout = setTimeout(() => {\n this.state.blockCount -= 1;\n this.updateInstanceBlockCount();\n this.detectChanges();\n }, delay);\n this.state.stopTimeouts.push(stopTimeout);\n }\n }\n }\n\n private onUpdate({ name, message }: BlockUIEvent) {\n if (name === this.name) {\n const delay = this.delayStart || this.settings.delayStart || 0;\n\n clearTimeout(this.state.updateTimeouts[0]);\n const updateTimeout = setTimeout(() => {\n this.updateMessage(message);\n }, delay);\n this.state.updateTimeouts.push(updateTimeout);\n }\n }\n\n private onReset({ name }: BlockUIEvent) {\n if (name === this.name) {\n this.resetState();\n }\n }\n\n private updateMessage(message: string) {\n this.showBlock(message);\n }\n\n private showBlock(message: any) {\n this.message = message || this.defaultMessage || this.settings.message;\n this.updateBlockTemplate(this.message);\n this.detectChanges();\n }\n\n private updateBlockTemplate(msg: any): void {\n if (this.templateCompRef && this.templateCompRef instanceof ComponentRef) {\n this.templateCompRef.instance.message = msg;\n }\n }\n\n private resetState() {\n [\n ...this.state.startTimeouts,\n ...this.state.stopTimeouts,\n ...this.state.updateTimeouts\n ].forEach(clearTimeout);\n this.state = { ...this.defaultBlockState };\n this.updateInstanceBlockCount();\n this.detectChanges();\n }\n\n private onUnsubscribe(name: string) {\n if (this.blockUISubscription && name === this.name) {\n this.blockUISubscription.unsubscribe();\n }\n }\n\n private updateInstanceBlockCount() {\n if (this.blockUI.blockUIInstances[this.name]) {\n const { blockCount } = this.state;\n this.blockUI.blockUIInstances[this.name].blockCount = blockCount;\n }\n }\n\n private detectChanges() {\n if (!this.changeDetectionRef['destroyed']) {\n this.changeDetectionRef.detectChanges();\n }\n }\n\n ngOnDestroy() {\n this.resetState();\n this.onUnsubscribe(this.name);\n this.blockUI.clearInstance(this.name);\n }\n}\n","import {\n Component,\n Input,\n ViewEncapsulation,\n OnInit,\n ComponentRef\n} from '@angular/core';\nimport { BlockUIInstanceService } from '../../services/block-ui-instance.service';\nimport { BlockUIDefaultName } from '../../constants/block-ui-default-name.constant';\n\n@Component({\n selector: 'block-ui',\n template: `\n <ng-content></ng-content>\n <block-ui-content\n [name]=\"name\"\n [message]=\"message\"\n [template]=\"template\"\n [delayStart]=\"delayStart\"\n [delayStop]=\"delayStop\"\n >\n </block-ui-content>\n `,\n encapsulation: ViewEncapsulation.None\n})\nexport class BlockUIComponent implements OnInit {\n @Input() name: string;\n @Input() message: any;\n @Input() delayStart: number;\n @Input() delayStop: number;\n @Input() template: any;\n\n constructor(\n private blockUI: BlockUIInstanceService,\n ) { }\n\n ngOnInit() {\n this.name = this.name || BlockUIDefaultName;\n this.template = this.template || this.blockUI.blockUISettings.template;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BlockUIActions } from '../constants/block-ui-actions.constant';\nimport { BlockUIInstanceService } from './block-ui-instance.service';\nimport { NgBlockUI } from '../models/block-ui.model';\n\n\n@Injectable()\nexport class BlockUIService {\n globalDispatch: NgBlockUI = this.blockUIInstance.decorate();\n\n constructor(\n private blockUIInstance: BlockUIInstanceService\n ) { }\n\n /**\n * Starts blocking for given BlockUI instance or instances\n */\n start(target: string | string[], message?: any): void {\n this.dispatch(target, BlockUIActions.START, message);\n }\n\n /**\n * Stops blocking for given BlockUI instance or instances\n */\n stop(target: string | string[]): void {\n this.dispatch(target, BlockUIActions.STOP);\n }\n\n /**\n * Reset blocking for given BlockUI instance or instances\n */\n reset(target: string | string[]): void {\n this.dispatch(target, BlockUIActions.RESET);\n }\n\n /**\n * Reset blocking for all BlockUI instances\n */\n resetGlobal(): void {\n this.globalDispatch.resetGlobal();\n }\n\n /**\n * Updates message for given BlockUI instance or instances\n */\n update(target: string | string[], message: any): void {\n this.dispatch(target, BlockUIActions.UPDATE, message);\n }\n\n /**\n * Unsubscribes for given BlockUI instance or instances\n */\n unsubscribe(target: string | string[]): void {\n this.dispatch(target, BlockUIActions.UNSUBSCRIBE);\n }\n\n /**\n * Checks if BlockUI is actively blocking\n */\n isActive(target: string | string[] = null): boolean {\n const targets = target ? this.toArray(target) : null;\n const instances = this.blockUIInstance.blockUIInstances;\n\n return Object.keys(instances).some((key: string) => {\n if (!targets) {\n return instances[key].isActive;\n }\n\n return targets.indexOf(instances[key].name) >= 0 && instances[key].isActive;\n });\n }\n\n private dispatch(target: string | string[] = [], type: string, message?: any) {\n const instances = this.toArray(target);\n instances.forEach(i => this.blockUIInstance.decorate(i)[type](message));\n }\n\n private toArray(target: string | string[] = []) {\n return typeof target === 'string' ? [target] : target;\n }\n}\n","import {\n Directive,\n Input,\n OnInit,\n OnDestroy,\n ComponentRef,\n ComponentFactoryResolver,\n ViewContainerRef,\n TemplateRef,\n Renderer2,\n EmbeddedViewRef\n} from '@angular/core';\nimport { BlockUIContentComponent } from '../components/block-ui-content/block-ui-content.component';\nimport { BlockUIInstanceService } from '../services/block-ui-instance.service';\nimport { BlockUIDefaultName } from '../constants/block-ui-default-name.constant';\nimport { BlockUIService } from '../services/block-ui.service';\n\n@Directive({ selector: '[blockUI]' })\nexport class BlockUIDirective implements OnInit, OnDestroy {\n private blockUIComponentRef: ComponentRef<BlockUIContentComponent>;\n blockTarget: string;\n message: any;\n template: any;\n delayStart: any;\n delayStop: any;\n\n @Input()\n set blockUI(name: any) { this.blockTarget = name; };\n @Input()\n set blockUIMessage(message: any) { this.message = message; };\n @Input()\n set blockUITemplate(template: any) { this.template = template; };\n @Input()\n set blockUIDelayStart(delayStart: any) {\n this.delayStart = delayStart ? Number(delayStart) : null;\n };\n @Input()\n set blockUIDelayStop(delayStop: any) {\n this.delayStop = delayStop ? Number(delayStop) : null;\n };\n\n constructor(\n private blockUIService: BlockUIService,\n private blockUIInstanceService: BlockUIInstanceService,\n private viewRef: ViewContainerRef,\n private templateRef: TemplateRef<any>,\n private renderer: Renderer2,\n private componentFactoryResolver: ComponentFactoryResolver\n ) { }\n\n ngOnInit() {\n try {\n this.viewRef.createEmbeddedView(this.templateRef);\n const parentElement = this.getParentElement();\n\n if (parentElement && !this.isComponentInTemplate(parentElement)) {\n this.renderer.addClass(parentElement, 'block-ui__element');\n this.blockUIComponentRef = this.createComponent();\n let blockUIContent = this.findContentNode(this.viewRef.element.nativeElement);\n\n if (blockUIContent) {\n const settings = this.blockUIInstanceService.getSettings();\n\n parentElement.appendChild(blockUIContent);\n this.blockUIComponentRef.instance.className = 'block-ui-wrapper--element';\n this.blockUIComponentRef.instance.name = this.blockTarget || BlockUIDefaultName;\n if (this.message) this.blockUIComponentRef.instance.defaultMessage = this.message;\n if (this.delayStart) this.blockUIComponentRef.instance.delayStart = this.delayStart;\n if (this.delayStop) this.blockUIComponentRef.instance.delayStop = this.delayStop;\n if (this.template || settings.template)\n this.blockUIComponentRef.instance.templateCmp = this.template || settings.template;\n }\n }\n } catch (error) {\n console.error('ng-block-ui:', error);\n }\n }\n\n private isComponentInTemplate(element: any): boolean {\n // Needed because of https://github.com/microsoft/TypeScript/issues/26235\n const targetElement = element || {};\n let { children } = targetElement;\n children = Array.from(children || []).reverse();\n return children.some((el: any) => el && el.localName === 'block-ui');\n }\n\n private getParentElement(): Element {\n const embeddedView = this.viewRef.get(0) as EmbeddedViewRef<any>;\n\n return embeddedView.rootNodes[0];\n\n }\n\n // Needed for IE (#17)\n private findContentNode(element: any) {\n const nextSibling = element.nextSibling || {};\n const previousSibling = element.previousSibling || {};\n\n return [\n nextSibling,\n nextSibling.nextSibling,\n previousSibling,\n previousSibling.previousSibling\n ].find((e) => e && e.localName === 'block-ui-content');\n }\n\n private createComponent() {\n const resolvedBlockUIComponent = this.componentFactoryResolver.resolveComponentFactory(BlockUIContentComponent);\n return this.viewRef.createComponent(resolvedBlockUIComponent);\n }\n\n ngOnDestroy() {\n if (this.blockTarget) {\n this.blockUIService.reset(this.blockTarget);\n }\n }\n}\n","import { NgModule, ModuleWithProviders, InjectionToken } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { BlockUIComponent } from './components/block-ui/block-ui.component';\nimport { BlockUIContentComponent } from './components/block-ui-content/block-ui-content.component';\nimport { BlockUIInstanceService } from './services/block-ui-instance.service';\nimport { BlockUIService } from './services/block-ui.service';\nimport { BlockUIDirective } from './directives/block-ui.directive';\nimport { BlockUISettings } from './models/block-ui-settings.model';\n\nexport const BlockUIServiceInstance = new BlockUIInstanceService();\n\n// Needed for AOT compiling\nexport const BlockUIModuleSettings = new InjectionToken<string>('BlockUIModuleSettings');\n\nexport function provideInstance(settings: BlockUISettings): any {\n BlockUIServiceInstance.updateSettings(settings);\n return BlockUIServiceInstance;\n}\n\n@NgModule({\n imports: [\n CommonModule\n ],\n entryComponents: [\n BlockUIComponent,\n BlockUIContentComponent\n ],\n declarations: [\n BlockUIComponent,\n BlockUIDirective,\n BlockUIContentComponent\n ],\n exports: [\n BlockUIComponent,\n BlockUIDirective,\n BlockUIContentComponent\n ]\n})\nexport class BlockUIModule {\n public static forRoot(settings: BlockUISettings = {}): ModuleWithProviders<BlockUIModule> {\n return {\n ngModule: BlockUIModule,\n providers: [\n {\n provide: BlockUIModuleSettings,\n useValue: settings\n },\n {\n provide: BlockUIInstanceService,\n useFactory: provideInstance,\n deps: [BlockUIModuleSettings]\n },\n BlockUIService\n ]\n };\n }\n}\n","import { BlockUIServiceInstance } from '../block-ui.module';\nimport { BlockUIDecoratorSettings } from '../models/block-ui-decorator-settings.model';\n\nexport let blockInstanceGuid = 1;\n\nexport function BlockUI(blockName?: string, settings: BlockUIDecoratorSettings = {}) {\n if (!settings.scopeToInstance) {\n return function (target?: any, propertyKey?: string) {\n target[propertyKey] = BlockUIServiceInstance.decorate(blockName);\n };\n }\n\n\n return function (target?: any, key?: string) {\n const secret = `_${key}-block-ui`;\n\n Object.defineProperty(target, key, {\n get: function () {\n if (this[secret]) {\n return this[secret];\n }\n\n const instanceName = `${blockName}-${blockInstanceGuid++}`;\n this[secret] = BlockUIServiceInstance.decorate(instanceName);\n\n return this[secret];\n },\n set: function (value: any) {\n this[secret] = value;\n },\n });\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.BlockUIInstanceService","i2.BlockUIContentComponent","i1.BlockUIService","i2.BlockUIInstanceService"],"mappings":";;;;;;AAAO,MAAM,kBAAkB,GAAW;;MCA7B,cAAc,CAAA;;AAClB,cAAK,CAAA,KAAA,GAAG,OAAO,CAAC;AAChB,cAAI,CAAA,IAAA,GAAG,MAAM,CAAC;AACd,cAAM,CAAA,MAAA,GAAG,QAAQ,CAAC;AAClB,cAAK,CAAA,KAAA,GAAG,OAAO,CAAC;AAChB,cAAY,CAAA,YAAA,GAAG,cAAc,CAAC;AAC9B,cAAW,CAAA,WAAA,GAAG,aAAa;;MCIvB,sBAAsB,CAAA;AAMjC,IAAA,WAAA,GAAA;AALA,QAAA,IAAe,CAAA,eAAA,GAA0B,EAAE,CAAC;AAC5C,QAAA,IAAgB,CAAA,gBAAA,GAAQ,EAAE,CAAC;QACnB,IAAA,CAAA,cAAc,GAAuB,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAA,CAAA,iBAAiB,GAAoB,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AAG9E,QAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACrE;IAED,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IAED,cAAc,CAAC,WAAkC,EAAE,EAAA;QACjD,IAAI,CAAC,eAAe,GAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,eAAe,CAAA,EAAK,QAAQ,CAAE,CAAC;KACjE;IAED,QAAQ,CAAC,OAAe,kBAAkB,EAAA;AACxC,QAAA,MAAM,OAAO,GAAG;YACd,IAAI;AACJ,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC;AACrE,YAAA,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;AACvE,YAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;AACnE,YAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC;AACrE,YAAA,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC;AAClF,YAAA,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC;SACrE,CAAC;AAEf,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC;AAErE,QAAA,OAAO,OAAO,CAAC;KAChB;IAED,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;AAED,IAAA,aAAa,CAAC,YAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;KACxE;AAEO,IAAA,iBAAiB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAgB,EAAA;QACtD,IAAI,QAAQ,GAAY,IAAI,CAAC;AAE7B,QAAA,QAAQ,MAAM;AACZ,YAAA,MAAM,cAAc,CAAC,KAAK;gBACxB,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;AAER,YAAA,MAAM,cAAc,CAAC,IAAI,EAAE;AAC3B,YAAA,MAAM,cAAc,CAAC,KAAK;gBACxB,QAAQ,GAAG,KAAK,CAAC;gBACjB,MAAM;AACT,SAAA;QAED,IAAI,QAAQ,KAAK,IAAI,EAAE;YACrB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjD,SAAA;KACF;AAEO,IAAA,QAAQ,CAAC,OAA2B,EAAE,MAAsB,EAAE,OAAe,kBAAkB,EAAA;QACrG,OAAO,CAAC,OAAa,KAAU;YAC7B,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI;gBACJ,MAAM;gBACN,OAAO;AACR,aAAA,CAAC,CAAC;AACL,SAAC,CAAC;KACH;;mHAvEU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;uHAAtB,sBAAsB,EAAA,CAAA,CAAA;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;;;ACTJ,MAAM,QAAQ,GAAG,CAAA;;;;;;;;;;CAUvB;;MC8BY,uBAAuB,CAAA;AAyBlC,IAAA,WAAA,CACU,OAA+B,EAC/B,QAAkC,EAClC,kBAAqC,EAAA;AAFrC,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAwB;AAC/B,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA0B;AAClC,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAmB;AA3BtC,QAAA,IAAI,CAAA,IAAA,GAAW,kBAAkB,CAAC;QAQ3C,IAAA,CAAA,iBAAiB,GAAe;AAC9B,YAAA,aAAa,EAAE,EAAE;AACjB,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,cAAc,EAAE,EAAE;AAClB,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,aAAa,EAAE,CAAC;SACjB,CAAC;AACF,QAAA,IAAA,CAAA,KAAK,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAoB,IAAI,CAAC,iBAAiB,CAAE,CAAC;KAY7C;IAEL,QAAQ,GAAA;QACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;KAC5E;IAED,eAAe,GAAA;QACb,IAAI;AACF,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AAED,YAAA,IAAI,IAAI,CAAC,WAAW,YAAY,WAAW,EAAE;gBAC3C,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1D,aAAA;AAAM,iBAAA;AACL,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC7E,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;AACzE,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,aAAA;AACF,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AACtC,SAAA;KACF;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;AAEO,IAAA,kBAAkB,CAAC,QAAyB,EAAA;AAClD,QAAA,OAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;KACnE;AAEO,IAAA,iBAAiB,CAAC,KAAmB,EAAA;QAC3C,QAAQ,KAAK,CAAC,MAAM;YAClB,KAAK,cAAc,CAAC,KAAK;AACvB,gBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM;YAER,KAAK,cAAc,CAAC,IAAI;AACtB,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACnB,MAAM;YAER,KAAK,cAAc,CAAC,MAAM;AACxB,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM;YAER,KAAK,cAAc,CAAC,KAAK;AACvB,gBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM;YAER,KAAK,cAAc,CAAC,YAAY;gBAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,MAAM;YAER,KAAK,cAAc,CAAC,WAAW;AAC7B,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM;AACT,SAAA;KACF;AAEO,IAAA,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAgB,EAAA;;AAC7C,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AACtB,YAAA,MAAM,KAAK,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC;AAE/D,YAAA,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,CAAC;AAC/B,YAAA,MAAM,YAAY,GAAG,UAAU,CAAC,MAAK;AACnC,gBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;AAC3B,gBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACxB,IAAI,CAAC,wBAAwB,EAAE,CAAC;aACjC,EAAE,KAAK,CAAC,CAAC;YACV,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC7C,SAAA;KACF;IAEO,MAAM,CAAC,EAAE,IAAI,EAAgB,EAAA;;AACnC,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;YAE/C,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,SAAS,IAAI,CAAC,EAAE;AAC9C,gBAAA,MAAM,KAAK,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC;AAE7D,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;AACrC,gBAAA,MAAM,WAAW,GAAG,UAAU,CAAC,MAAK;AAClC,oBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;oBAC3B,IAAI,CAAC,wBAAwB,EAAE,CAAC;oBAChC,IAAI,CAAC,aAAa,EAAE,CAAC;iBACtB,EAAE,KAAK,CAAC,CAAC;gBACV,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3C,aAAA;AACF,SAAA;KACF;AAEO,IAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAgB,EAAA;AAC9C,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AACtB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC;YAE/D,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAA,MAAM,aAAa,GAAG,UAAU,CAAC,MAAK;AACpC,gBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;aAC7B,EAAE,KAAK,CAAC,CAAC;YACV,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC/C,SAAA;KACF;IAEO,OAAO,CAAC,EAAE,IAAI,EAAgB,EAAA;AACpC,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;YACtB,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,SAAA;KACF;AAEO,IAAA,aAAa,CAAC,OAAe,EAAA;AACnC,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;KACzB;AAEO,IAAA,SAAS,CAAC,OAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AACvE,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;AAEO,IAAA,mBAAmB,CAAC,GAAQ,EAAA;QAClC,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,YAAY,YAAY,EAAE;YACxE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,GAAG,GAAG,CAAC;AAC7C,SAAA;KACF;IAEO,UAAU,GAAA;AAChB,QAAA;AACE,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;AAC3B,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY;AAC1B,YAAA,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc;AAC7B,SAAA,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,KAAK,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,IAAI,CAAC,iBAAiB,CAAE,CAAC;QAC3C,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;AAEO,IAAA,aAAa,CAAC,IAAY,EAAA;QAChC,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AAClD,YAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;AACxC,SAAA;KACF;IAEO,wBAAwB,GAAA;QAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5C,YAAA,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;AAClE,SAAA;KACF;IAEO,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE;AACzC,YAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;AACzC,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACvC;;oHA/LU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,0TAMG,gBAAgB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,sZAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,w7BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FAN1C,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAClB,QAAA,EAAA,QAAQ,EAEH,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,w7BAAA,CAAA,EAAA,CAAA;iLAG5B,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACY,cAAc,EAAA,CAAA;sBAA/B,KAAK;uBAAC,SAAS,CAAA;gBACG,WAAW,EAAA,CAAA;sBAA7B,KAAK;uBAAC,UAAU,CAAA;gBAEjB,cAAc,EAAA,CAAA;sBADb,SAAS;gBAAC,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;;;MCrB5C,gBAAgB,CAAA;AAO3B,IAAA,WAAA,CACU,OAA+B,EAAA;AAA/B,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAwB;KACpC;IAEL,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,kBAAkB,CAAC;AAC5C,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC;KACxE;;6GAdU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAbjB,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;GAUT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FAGU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAf5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;AAUT,EAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;iBACtC,CAAA;0GAEU,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MCvBK,cAAc,CAAA;AAGzB,IAAA,WAAA,CACU,eAAuC,EAAA;AAAvC,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAwB;QAHjD,IAAA,CAAA,cAAc,GAAc,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;KAIvD;AAEL;;AAEE;IACF,KAAK,CAAC,MAAyB,EAAE,OAAa,EAAA;QAC5C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KACtD;AAED;;AAEE;AACF,IAAA,IAAI,CAAC,MAAyB,EAAA;QAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;KAC5C;AAED;;AAEE;AACF,IAAA,KAAK,CAAC,MAAyB,EAAA;QAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;KAC7C;AAED;;AAEE;IACF,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;KACnC;AAED;;AAEE;IACF,MAAM,CAAC,MAAyB,EAAE,OAAY,EAAA;QAC5C,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACvD;AAED;;AAEE;AACF,IAAA,WAAW,CAAC,MAAyB,EAAA;QACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;KACnD;AAED;;AAEE;IACF,QAAQ,CAAC,SAA4B,IAAI,EAAA;AACvC,QAAA,MAAM,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACrD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC;AAExD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAW,KAAI;YACjD,IAAI,CAAC,OAAO,EAAE;AACZ,gBAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;AAChC,aAAA;YAED,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;AAC9E,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,QAAQ,CAAC,MAA4B,GAAA,EAAE,EAAE,IAAY,EAAE,OAAa,EAAA;QAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;KACzE;IAEO,OAAO,CAAC,SAA4B,EAAE,EAAA;AAC5C,QAAA,OAAO,OAAO,MAAM,KAAK,QAAQ,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;KACvD;;2GAxEU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+GAAd,cAAc,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;MCYE,gBAAgB,CAAA;IAuB3B,WACU,CAAA,cAA8B,EAC9B,sBAA8C,EAC9C,OAAyB,EACzB,WAA6B,EAC7B,QAAmB,EACnB,wBAAkD,EAAA;AALlD,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAC9B,QAAA,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;AAC9C,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAkB;AACzB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAkB;AAC7B,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AACnB,QAAA,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;KACvD;IAtBL,IACI,OAAO,CAAC,IAAS,EAAI,EAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE;;IACnD,IACI,cAAc,CAAC,OAAY,EAAI,EAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,EAAE;;IAC5D,IACI,eAAe,CAAC,QAAa,EAAI,EAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,EAAE;;IAChE,IACI,iBAAiB,CAAC,UAAe,EAAA;AACnC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;KAC1D;;IACD,IACI,gBAAgB,CAAC,SAAc,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;KACvD;;IAWD,QAAQ,GAAA;QACN,IAAI;YACF,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAClD,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAE9C,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,EAAE;gBAC/D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;AAC3D,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAClD,gBAAA,IAAI,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAE9E,gBAAA,IAAI,cAAc,EAAE;oBAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;AAE3D,oBAAA,aAAa,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;oBAC1C,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,SAAS,GAAG,2BAA2B,CAAC;AAC1E,oBAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,IAAI,kBAAkB,CAAC;oBAChF,IAAI,IAAI,CAAC,OAAO;wBAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC;oBAClF,IAAI,IAAI,CAAC,UAAU;wBAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;oBACpF,IAAI,IAAI,CAAC,SAAS;wBAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACjF,oBAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;AACpC,wBAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC;AACtF,iBAAA;AACF,aAAA;AACF,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AACtC,SAAA;KACF;AAEO,IAAA,qBAAqB,CAAC,OAAY,EAAA;;AAExC,QAAA,MAAM,aAAa,GAAG,OAAO,IAAI,EAAE,CAAC;AACpC,QAAA,IAAI,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;AACjC,QAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;AAChD,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAO,KAAK,EAAE,IAAI,EAAE,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC;KACtE;IAEO,gBAAgB,GAAA;QACtB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAyB,CAAC;AAEjE,QAAA,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KAElC;;AAGO,IAAA,eAAe,CAAC,OAAY,EAAA;AAClC,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;AAC9C,QAAA,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;QAEtD,OAAO;YACL,WAAW;AACX,YAAA,WAAW,CAAC,WAAW;YACvB,eAAe;AACf,YAAA,eAAe,CAAC,eAAe;AAChC,SAAA,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,kBAAkB,CAAC,CAAC;KACxD;IAEO,eAAe,GAAA;QACrB,MAAM,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,CAAC;QAChH,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC;KAC/D;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7C,SAAA;KACF;;6GAjGU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iGAAhB,gBAAgB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,SAAS;mBAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;4PAU9B,OAAO,EAAA,CAAA;sBADV,KAAK;gBAGF,cAAc,EAAA,CAAA;sBADjB,KAAK;gBAGF,eAAe,EAAA,CAAA;sBADlB,KAAK;gBAGF,iBAAiB,EAAA,CAAA;sBADpB,KAAK;gBAKF,gBAAgB,EAAA,CAAA;sBADnB,KAAK;;;AC1BD,MAAM,sBAAsB,GAAG,IAAI,sBAAsB,EAAE,CAAC;AAEnE;AACO,MAAM,qBAAqB,GAAG,IAAI,cAAc,CAAS,uBAAuB,CAAC,CAAC;AAEnF,SAAU,eAAe,CAAC,QAAyB,EAAA;AACvD,IAAA,sBAAsB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AAChD,IAAA,OAAO,sBAAsB,CAAC;AAChC,CAAC;MAqBY,aAAa,CAAA;AACjB,IAAA,OAAO,OAAO,CAAC,QAAA,GAA4B,EAAE,EAAA;QAClD,OAAO;AACL,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,qBAAqB;AAC9B,oBAAA,QAAQ,EAAE,QAAQ;AACnB,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE,sBAAsB;AAC/B,oBAAA,UAAU,EAAE,eAAe;oBAC3B,IAAI,EAAE,CAAC,qBAAqB,CAAC;AAC9B,iBAAA;gBACD,cAAc;AACf,aAAA;SACF,CAAC;KACH;;0GAjBU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,iBAVtB,gBAAgB;QAChB,gBAAgB;QAChB,uBAAuB,CAAA,EAAA,OAAA,EAAA,CATvB,YAAY,CAAA,EAAA,OAAA,EAAA,CAYZ,gBAAgB;QAChB,gBAAgB;QAChB,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAGd,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAjBtB,YAAY,CAAA,EAAA,CAAA,CAAA;2FAiBH,aAAa,EAAA,UAAA,EAAA,CAAA;kBAnBzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACD,oBAAA,eAAe,EAAE;wBACf,gBAAgB;wBAChB,uBAAuB;AACxB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,gBAAgB;wBAChB,gBAAgB;wBAChB,uBAAuB;AACxB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,gBAAgB;wBAChB,gBAAgB;wBAChB,uBAAuB;AACxB,qBAAA;iBACF,CAAA;;;ACnCM,IAAI,iBAAiB,GAAG,CAAC,CAAC;SAEjB,OAAO,CAAC,SAAkB,EAAE,WAAqC,EAAE,EAAA;AACjF,IAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;QAC7B,OAAO,UAAU,MAAY,EAAE,WAAoB,EAAA;YACjD,MAAM,CAAC,WAAW,CAAC,GAAG,sBAAsB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACnE,SAAC,CAAC;AACH,KAAA;IAGD,OAAO,UAAU,MAAY,EAAE,GAAY,EAAA;AACzC,QAAA,MAAM,MAAM,GAAG,CAAI,CAAA,EAAA,GAAG,WAAW,CAAC;AAElC,QAAA,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE;AACjC,YAAA,GAAG,EAAE,YAAA;AACH,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE;AAChB,oBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACrB,iBAAA;gBAED,MAAM,YAAY,GAAG,CAAG,EAAA,SAAS,IAAI,iBAAiB,EAAE,EAAE,CAAC;gBAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,sBAAsB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAE7D,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;aACrB;YACD,GAAG,EAAE,UAAU,KAAU,EAAA;AACvB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;aACtB;AACF,SAAA,CAAC,CAAC;AACL,KAAC,CAAC;AACJ;;AChCA;;AAEG;;;;"}