{"version":3,"file":"axulus-uikit-cascadeselect.mjs","sources":["../../src/app/components/cascadeselect/cascadeselect.ts","../../src/app/components/cascadeselect/axulus-uikit-cascadeselect.ts"],"sourcesContent":["import { AnimationEvent } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Input,\n  NgModule,\n  OnInit,\n  Output,\n  QueryList,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { OverlayOptions, OverlayService, PrimeNGConfig, PrimeTemplate, SharedModule } from '@axulus/uikit/api';\nimport { DomHandler } from '@axulus/uikit/dom';\nimport { Overlay, OverlayModule } from '@axulus/uikit/overlay';\nimport { RippleModule } from '@axulus/uikit/ripple';\nimport { ObjectUtils } from '@axulus/uikit/utils';\n\nexport const CASCADESELECT_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => CascadeSelect),\n  multi: true\n};\n\n@Component({\n  selector: 'p-cascadeSelectSub',\n  template: `\n    <ul\n      class=\"p-cascadeselect-panel p-cascadeselect-items\"\n      [ngClass]=\"{ 'p-cascadeselect-panel-root': root }\"\n      role=\"listbox\"\n      aria-orientation=\"horizontal\"\n    >\n      <ng-template ngFor let-option [ngForOf]=\"options\" let-i=\"index\">\n        <li [ngClass]=\"getItemClass(option)\" role=\"none\">\n          <div\n            class=\"p-cascadeselect-item-content\"\n            (click)=\"onOptionClick($event, option)\"\n            tabindex=\"0\"\n            (keydown)=\"onKeyDown($event, option, i)\"\n            pRipple\n          >\n            <ng-container *ngIf=\"optionTemplate; else defaultOptionTemplate\">\n              <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: option }\"></ng-container>\n            </ng-container>\n            <ng-template #defaultOptionTemplate>\n              <span class=\"p-cascadeselect-item-text\">{{ getOptionLabelToRender(option) }}</span>\n            </ng-template>\n            <span class=\"p-cascadeselect-group-icon pi pi-angle-right\" *ngIf=\"isOptionGroup(option)\"></span>\n          </div>\n          <p-cascadeSelectSub\n            *ngIf=\"isOptionGroup(option) && isOptionActive(option)\"\n            class=\"p-cascadeselect-sublist\"\n            [selectionPath]=\"selectionPath\"\n            [options]=\"getOptionGroupChildren(option)\"\n            [optionLabel]=\"optionLabel\"\n            [optionValue]=\"optionValue\"\n            [level]=\"level + 1\"\n            (onSelect)=\"onOptionSelect($event)\"\n            (onOptionGroupSelect)=\"onOptionGroupSelect()\"\n            [optionGroupLabel]=\"optionGroupLabel\"\n            [optionGroupChildren]=\"optionGroupChildren\"\n            [parentActive]=\"isOptionActive(option)\"\n            [dirty]=\"dirty\"\n            [optionTemplate]=\"optionTemplate\"\n          >\n          </p-cascadeSelectSub>\n        </li>\n      </ng-template>\n    </ul>\n  `,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CascadeSelectSub implements OnInit {\n  @Input() selectionPath: any[];\n\n  @Input() options: any[];\n\n  @Input() optionGroupChildren: any[];\n\n  @Input() optionTemplate: TemplateRef<any>;\n\n  @Input() level: number = 0;\n\n  @Input() optionLabel: string;\n\n  @Input() optionValue: string;\n\n  @Input() optionGroupLabel: string;\n\n  @Input() dirty: boolean;\n\n  @Input() root: boolean;\n\n  @Output() onSelect: EventEmitter<any> = new EventEmitter();\n\n  @Output() onGroupSelect: EventEmitter<any> = new EventEmitter();\n\n  @Input() get parentActive(): boolean {\n    return this._parentActive;\n  }\n  set parentActive(val) {\n    if (!val) {\n      this.activeOption = null;\n    }\n\n    this._parentActive = val;\n  }\n\n  activeOption: any = null;\n\n  _parentActive: boolean;\n\n  cascadeSelect: CascadeSelect;\n\n  constructor(@Inject(forwardRef(() => CascadeSelect)) cascadeSelect, private el: ElementRef) {\n    this.cascadeSelect = cascadeSelect as CascadeSelect;\n  }\n\n  ngOnInit() {\n    if (this.selectionPath && this.options && !this.dirty) {\n      for (let option of this.options) {\n        if (this.selectionPath.includes(option)) {\n          this.activeOption = option;\n          break;\n        }\n      }\n    }\n\n    if (!this.root) {\n      this.position();\n    }\n  }\n\n  onOptionClick(event, option) {\n    if (this.isOptionGroup(option)) {\n      this.activeOption = this.activeOption === option ? null : option;\n\n      this.onGroupSelect.emit({\n        originalEvent: event,\n        value: option\n      });\n    } else {\n      this.onSelect.emit({\n        originalEvent: event,\n        value: this.getOptionValue(option)\n      });\n    }\n  }\n\n  onOptionSelect(event) {\n    this.onSelect.emit(event);\n  }\n\n  onOptionGroupSelect(event) {\n    this.onGroupSelect.emit(event);\n  }\n\n  getOptionLabel(option) {\n    return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option;\n  }\n\n  getOptionValue(option) {\n    return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : option;\n  }\n\n  getOptionGroupLabel(optionGroup) {\n    return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : null;\n  }\n\n  getOptionGroupChildren(optionGroup) {\n    return ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren[this.level]);\n  }\n\n  isOptionGroup(option) {\n    return Object.prototype.hasOwnProperty.call(option, this.optionGroupChildren[this.level]);\n  }\n\n  getOptionLabelToRender(option) {\n    return this.isOptionGroup(option) ? this.getOptionGroupLabel(option) : this.getOptionLabel(option);\n  }\n\n  getItemClass(option) {\n    return {\n      'p-cascadeselect-item': true,\n      'p-cascadeselect-item-group': this.isOptionGroup(option),\n      'p-cascadeselect-item-active p-highlight': this.isOptionActive(option)\n    };\n  }\n\n  isOptionActive(option) {\n    return this.activeOption === option;\n  }\n\n  onKeyDown(event, option, index) {\n    let listItem = event.currentTarget.parentElement;\n\n    switch (event.key) {\n      case 'Down':\n      case 'ArrowDown':\n        var nextItem = this.el.nativeElement.children[0].children[index + 1];\n        if (nextItem) {\n          nextItem.children[0].focus();\n        }\n\n        event.preventDefault();\n        break;\n\n      case 'Up':\n      case 'ArrowUp':\n        var prevItem = this.el.nativeElement.children[0].children[index - 1];\n        if (prevItem) {\n          prevItem.children[0].focus();\n        }\n\n        event.preventDefault();\n        break;\n\n      case 'Right':\n      case 'ArrowRight':\n        if (this.isOptionGroup(option)) {\n          if (this.isOptionActive(option)) {\n            listItem.children[1].children[0].children[0].children[0].focus();\n          } else {\n            this.activeOption = option;\n          }\n        }\n\n        event.preventDefault();\n        break;\n\n      case 'Left':\n      case 'ArrowLeft':\n        this.activeOption = null;\n\n        var parentList = listItem.parentElement.parentElement.parentElement;\n        if (parentList) {\n          parentList.children[0].focus();\n        }\n\n        event.preventDefault();\n        break;\n\n      case 'Enter':\n        this.onOptionClick(event, option);\n\n        event.preventDefault();\n        break;\n\n      case 'Tab':\n      case 'Escape':\n        this.cascadeSelect.hide();\n\n        event.preventDefault();\n        break;\n    }\n  }\n\n  position() {\n    const parentItem = this.el.nativeElement.parentElement;\n    const containerOffset = DomHandler.getOffset(parentItem);\n    const viewport = DomHandler.getViewport();\n    const sublistWidth = this.el.nativeElement.children[0].offsetParent\n      ? this.el.nativeElement.children[0].offsetWidth\n      : DomHandler.getHiddenElementOuterWidth(this.el.nativeElement.children[0]);\n    const itemOuterWidth = DomHandler.getOuterWidth(parentItem.children[0]);\n\n    if (parseInt(containerOffset.left, 10) + itemOuterWidth + sublistWidth > viewport.width - DomHandler.calculateScrollbarWidth()) {\n      this.el.nativeElement.children[0].style.left = '-200%';\n    }\n  }\n}\n\n@Component({\n  selector: 'p-cascadeSelect',\n  template: `\n    <div #container [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\" (click)=\"onClick($event)\">\n      <div class=\"p-hidden-accessible\">\n        <input\n          #focusInput\n          type=\"text\"\n          [attr.id]=\"inputId\"\n          readonly\n          [disabled]=\"disabled\"\n          (focus)=\"onFocus()\"\n          (blur)=\"onBlur()\"\n          (keydown)=\"onKeyDown($event)\"\n          [attr.tabindex]=\"tabindex\"\n          aria-haspopup=\"listbox\"\n          [attr.aria-expanded]=\"overlayVisible\"\n          [attr.aria-labelledby]=\"ariaLabelledBy\"\n          [attr.label]=\"inputLabel\"\n          [attr.aria-label]=\"ariaLabel\"\n        />\n      </div>\n      <span [ngClass]=\"labelClass()\">\n        <ng-container *ngIf=\"valueTemplate; else defaultValueTemplate\">\n          <ng-container *ngTemplateOutlet=\"valueTemplate; context: { $implicit: value, placeholder: placeholder }\"></ng-container>\n        </ng-container>\n        <ng-template #defaultValueTemplate>\n          {{ label() }}\n        </ng-template>\n      </span>\n      <i *ngIf=\"filled && !disabled && showClear\" class=\"p-cascadeselect-clear-icon pi pi-times\" (click)=\"clear($event)\"></i>\n      <div class=\"p-cascadeselect-trigger\" role=\"button\" aria-haspopup=\"listbox\" [attr.aria-expanded]=\"overlayVisible\">\n        <span class=\"p-cascadeselect-trigger-icon pi pi-chevron-down\"></span>\n      </div>\n      <p-overlay\n        #overlay\n        [(visible)]=\"overlayVisible\"\n        [options]=\"overlayOptions\"\n        [target]=\"'@parent'\"\n        [appendTo]=\"appendTo\"\n        [showTransitionOptions]=\"showTransitionOptions\"\n        [hideTransitionOptions]=\"hideTransitionOptions\"\n        (onAnimationDone)=\"onOverlayAnimationDone($event)\"\n        (onBeforeShow)=\"onBeforeShow.emit($event)\"\n        (onShow)=\"onShow.emit($event)\"\n        (onBeforeHide)=\"onBeforeHide.emit($event)\"\n        (onHide)=\"onHide.emit($event)\"\n      >\n        <ng-template pTemplate=\"content\">\n          <div #panel class=\"p-cascadeselect-panel p-component\" [class]=\"panelStyleClass\" [ngStyle]=\"panelStyle\">\n            <div class=\"p-cascadeselect-items-wrapper\">\n              <p-cascadeSelectSub\n                [options]=\"options\"\n                [selectionPath]=\"selectionPath\"\n                class=\"p-cascadeselect-items\"\n                [optionLabel]=\"optionLabel\"\n                [optionValue]=\"optionValue\"\n                [level]=\"0\"\n                [optionTemplate]=\"optionTemplate\"\n                [optionGroupLabel]=\"optionGroupLabel\"\n                [optionGroupChildren]=\"optionGroupChildren\"\n                (onSelect)=\"onOptionSelect($event)\"\n                (onGroupSelect)=\"onOptionGroupSelect($event)\"\n                [dirty]=\"dirty\"\n                [root]=\"true\"\n              >\n              </p-cascadeSelectSub>\n            </div>\n          </div>\n        </ng-template>\n      </p-overlay>\n    </div>\n  `,\n  host: {\n    class: 'p-element p-inputwrapper',\n    '[class.p-inputwrapper-filled]': 'filled',\n    '[class.p-inputwrapper-focus]': 'focused || overlayVisible',\n    '[class.p-cascadeselect-clearable]': 'showClear && !disabled'\n  },\n  providers: [CASCADESELECT_VALUE_ACCESSOR],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  styleUrls: ['./cascadeselect.css']\n})\nexport class CascadeSelect implements OnInit, AfterContentInit {\n  @Input() styleClass: string;\n\n  @Input() style: any;\n\n  @Input() options: any[];\n\n  @Input() optionLabel: string;\n\n  @Input() optionValue: string;\n\n  @Input() optionGroupLabel: string;\n\n  @Input() optionGroupChildren: any[];\n\n  @Input() placeholder: string;\n\n  @Input() value: string;\n\n  @Input() dataKey: string;\n\n  @Input() inputId: string;\n\n  @Input() tabindex: string;\n\n  @Input() ariaLabelledBy: string;\n\n  @Input() inputLabel: string;\n\n  @Input() ariaLabel: string;\n\n  @Input() appendTo: any;\n\n  @Input() disabled: boolean;\n\n  @Input() rounded: boolean;\n\n  @Input() showClear: boolean = false;\n\n  @Input() panelStyleClass: string;\n\n  @Input() panelStyle: object;\n\n  @Input() overlayOptions: OverlayOptions;\n\n  @ViewChild('focusInput') focusInputEl: ElementRef;\n\n  @ViewChild('container') containerEl: ElementRef;\n\n  @ViewChild('panel') panelEl: ElementRef;\n\n  @ViewChild('overlay') overlayViewChild: Overlay;\n\n  @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n  @Output() onGroupChange: EventEmitter<any> = new EventEmitter();\n\n  @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n  @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n  @Output() onClear: EventEmitter<any> = new EventEmitter();\n\n  @Output() onBeforeShow: EventEmitter<any> = new EventEmitter();\n\n  @Output() onBeforeHide: EventEmitter<any> = new EventEmitter();\n\n  @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n  /* @deprecated */\n  _showTransitionOptions: string;\n  @Input() get showTransitionOptions(): string {\n    return this._showTransitionOptions;\n  }\n  set showTransitionOptions(val: string) {\n    this._showTransitionOptions = val;\n    console.warn('The showTransitionOptions property is deprecated since v14.2.0, use overlayOptions property instead.');\n  }\n\n  /* @deprecated */\n  _hideTransitionOptions: string;\n  @Input() get hideTransitionOptions(): string {\n    return this._hideTransitionOptions;\n  }\n  set hideTransitionOptions(val: string) {\n    this._hideTransitionOptions = val;\n    console.warn('The hideTransitionOptions property is deprecated since v14.2.0, use overlayOptions property instead.');\n  }\n\n  selectionPath: any = null;\n\n  focused: boolean = false;\n\n  filled: boolean = false;\n\n  overlayVisible: boolean = false;\n\n  dirty: boolean = false;\n\n  valueTemplate: TemplateRef<any>;\n\n  optionTemplate: TemplateRef<any>;\n\n  onModelChange: Function = () => {};\n\n  onModelTouched: Function = () => {};\n\n  constructor(\n    private el: ElementRef,\n    private cd: ChangeDetectorRef,\n    private config: PrimeNGConfig,\n    public overlayService: OverlayService\n  ) {}\n\n  ngOnInit() {\n    this.updateSelectionPath();\n  }\n\n  ngAfterContentInit() {\n    this.templates.forEach((item) => {\n      switch (item.getType()) {\n        case 'value':\n          this.valueTemplate = item.template;\n          break;\n        case 'option':\n          this.optionTemplate = item.template;\n          break;\n      }\n    });\n  }\n\n  onOptionSelect(event) {\n    this.value = event.value;\n    this.updateSelectionPath();\n    this.onModelChange(this.value);\n    this.onChange.emit(event);\n    this.hide();\n    this.focusInputEl.nativeElement.focus();\n  }\n\n  onOptionGroupSelect(event) {\n    this.dirty = true;\n    this.onGroupChange.emit(event);\n  }\n\n  getOptionLabel(option) {\n    return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option;\n  }\n\n  getOptionValue(option) {\n    return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : option;\n  }\n\n  getOptionGroupChildren(optionGroup, level) {\n    return ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren[level]);\n  }\n\n  isOptionGroup(option, level) {\n    return Object.prototype.hasOwnProperty.call(option, this.optionGroupChildren[level]);\n  }\n\n  updateSelectionPath() {\n    let path;\n    if (this.value != null && this.options) {\n      for (let option of this.options) {\n        path = this.findModelOptionInGroup(option, 0);\n        if (path) {\n          break;\n        }\n      }\n    }\n\n    this.selectionPath = path;\n    this.updateFilledState();\n  }\n\n  updateFilledState() {\n    this.filled = !(this.selectionPath == null || this.selectionPath.length == 0);\n  }\n\n  findModelOptionInGroup(option, level) {\n    if (this.isOptionGroup(option, level)) {\n      let selectedOption;\n      for (let childOption of this.getOptionGroupChildren(option, level)) {\n        selectedOption = this.findModelOptionInGroup(childOption, level + 1);\n        if (selectedOption) {\n          selectedOption.unshift(option);\n          return selectedOption;\n        }\n      }\n    } else if (ObjectUtils.equals(this.value, this.getOptionValue(option), this.dataKey)) {\n      return [option];\n    }\n\n    return null;\n  }\n\n  show() {\n    this.overlayVisible = true;\n  }\n\n  hide() {\n    this.overlayVisible = false;\n    this.cd.markForCheck();\n  }\n\n  clear(event) {\n    this.value = null;\n    this.selectionPath = null;\n    this.updateFilledState();\n    this.onClear.emit();\n    this.onModelChange(this.value);\n    event.stopPropagation();\n    this.cd.markForCheck();\n  }\n\n  onClick(event) {\n    if (this.disabled) {\n      return;\n    }\n\n    if (!this.overlayViewChild?.el?.nativeElement?.contains(event.target)) {\n      if (this.overlayVisible) {\n        this.hide();\n      } else {\n        this.show();\n      }\n\n      this.focusInputEl.nativeElement.focus();\n    }\n  }\n\n  onFocus() {\n    this.focused = true;\n  }\n\n  onBlur() {\n    this.focused = false;\n  }\n\n  onOverlayAnimationDone(event: AnimationEvent) {\n    switch (event.toState) {\n      case 'void':\n        this.dirty = false;\n        break;\n    }\n  }\n\n  writeValue(value: any): void {\n    this.value = value;\n    this.updateSelectionPath();\n    this.cd.markForCheck();\n  }\n\n  registerOnChange(fn: Function): void {\n    this.onModelChange = fn;\n  }\n\n  registerOnTouched(fn: Function): void {\n    this.onModelTouched = fn;\n  }\n\n  setDisabledState(val: boolean): void {\n    this.disabled = val;\n    this.cd.markForCheck();\n  }\n\n  label() {\n    if (this.selectionPath) {\n      return this.getOptionLabel(this.selectionPath[this.selectionPath.length - 1]);\n    }\n\n    return this.placeholder || 'p-emptylabel';\n  }\n\n  onKeyDown(event) {\n    switch (event.code) {\n      case 'Down':\n      case 'ArrowDown':\n        if (this.overlayVisible) {\n          DomHandler.findSingle(this.panelEl.nativeElement, '.p-cascadeselect-item').children[0].focus();\n        } else if (event.altKey && this.options && this.options.length) {\n          this.show();\n        }\n        event.preventDefault();\n        break;\n\n      case 'Space':\n      case 'Enter':\n        if (!this.overlayVisible) this.show();\n        else this.hide();\n\n        event.preventDefault();\n        break;\n\n      case 'Tab':\n      case 'Escape':\n        if (this.overlayVisible) {\n          this.hide();\n          event.preventDefault();\n        }\n        break;\n    }\n  }\n\n  containerClass() {\n    return {\n      'p-cascadeselect p-component p-inputwrapper': true,\n      'p-disabled': this.disabled,\n      'p-focus': this.focused\n    };\n  }\n\n  labelClass() {\n    return {\n      'p-cascadeselect-label': true,\n      'p-inputtext': true,\n      'p-placeholder': this.label() === this.placeholder,\n      'p-cascadeselect-label-empty': !this.value && (this.label() === 'p-emptylabel' || this.label().length === 0)\n    };\n  }\n}\n\n@NgModule({\n  imports: [CommonModule, OverlayModule, SharedModule, RippleModule],\n  exports: [CascadeSelect, CascadeSelectSub, OverlayModule, SharedModule, RippleModule],\n  declarations: [CascadeSelect, CascadeSelectSub]\n})\nexport class CascadeSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;AA4Ba,MAAA,4BAA4B,GAAQ;AAC/C,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,aAAa,CAAC;AAC5C,IAAA,KAAK,EAAE,IAAI;EACX;MAoDW,gBAAgB,CAAA;IA0C3B,WAAqD,CAAA,aAAa,EAAU,EAAc,EAAA;AAAd,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AAjCjF,QAAA,IAAK,CAAA,KAAA,GAAW,CAAC,CAAC;AAYjB,QAAA,IAAA,CAAA,QAAQ,GAAsB,IAAI,YAAY,EAAE,CAAC;AAEjD,QAAA,IAAA,CAAA,aAAa,GAAsB,IAAI,YAAY,EAAE,CAAC;AAahE,QAAA,IAAY,CAAA,YAAA,GAAQ,IAAI,CAAC;AAOvB,QAAA,IAAI,CAAC,aAAa,GAAG,aAA8B,CAAC;KACrD;AAnBD,IAAA,IAAa,YAAY,GAAA;QACvB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IACD,IAAI,YAAY,CAAC,GAAG,EAAA;QAClB,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC1B,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;KAC1B;IAYD,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACrD,YAAA,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC/B,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACvC,oBAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;oBAC3B,MAAM;AACP,iBAAA;AACF,aAAA;AACF,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjB,SAAA;KACF;IAED,aAAa,CAAC,KAAK,EAAE,MAAM,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,KAAK,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;AAEjE,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACtB,gBAAA,aAAa,EAAE,KAAK;AACpB,gBAAA,KAAK,EAAE,MAAM;AACd,aAAA,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjB,gBAAA,aAAa,EAAE,KAAK;AACpB,gBAAA,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AACnC,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;AAED,IAAA,cAAc,CAAC,KAAK,EAAA;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;AAED,IAAA,mBAAmB,CAAC,KAAK,EAAA;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;AAED,IAAA,cAAc,CAAC,MAAM,EAAA;QACnB,OAAO,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;KAC3F;AAED,IAAA,cAAc,CAAC,MAAM,EAAA;QACnB,OAAO,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;KAC3F;AAED,IAAA,mBAAmB,CAAC,WAAW,EAAA;QAC7B,OAAO,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;KACxG;AAED,IAAA,sBAAsB,CAAC,WAAW,EAAA;AAChC,QAAA,OAAO,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KACxF;AAED,IAAA,aAAa,CAAC,MAAM,EAAA;AAClB,QAAA,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KAC3F;AAED,IAAA,sBAAsB,CAAC,MAAM,EAAA;QAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;KACpG;AAED,IAAA,YAAY,CAAC,MAAM,EAAA;QACjB,OAAO;AACL,YAAA,sBAAsB,EAAE,IAAI;AAC5B,YAAA,4BAA4B,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AACxD,YAAA,yCAAyC,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;SACvE,CAAC;KACH;AAED,IAAA,cAAc,CAAC,MAAM,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,YAAY,KAAK,MAAM,CAAC;KACrC;AAED,IAAA,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAA;AAC5B,QAAA,IAAI,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC;QAEjD,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,MAAM,CAAC;AACZ,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACrE,gBAAA,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAC9B,iBAAA;gBAED,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM;AAER,YAAA,KAAK,IAAI,CAAC;AACV,YAAA,KAAK,SAAS;AACZ,gBAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACrE,gBAAA,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAC9B,iBAAA;gBAED,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM;AAER,YAAA,KAAK,OAAO,CAAC;AACb,YAAA,KAAK,YAAY;AACf,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AAC9B,oBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;wBAC/B,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAClE,qBAAA;AAAM,yBAAA;AACL,wBAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;AAC5B,qBAAA;AACF,iBAAA;gBAED,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM;AAER,YAAA,KAAK,MAAM,CAAC;AACZ,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBAEzB,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC;AACpE,gBAAA,IAAI,UAAU,EAAE;oBACd,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAChC,iBAAA;gBAED,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM;AAER,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAElC,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM;AAER,YAAA,KAAK,KAAK,CAAC;AACX,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;gBAE1B,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM;AACT,SAAA;KACF;IAED,QAAQ,GAAA;QACN,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC;QACvD,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACzD,QAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;AAC1C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY;AACjE,cAAE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW;AAC/C,cAAE,UAAU,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,QAAA,MAAM,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAExE,IAAI,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,cAAc,GAAG,YAAY,GAAG,QAAQ,CAAC,KAAK,GAAG,UAAU,CAAC,uBAAuB,EAAE,EAAE;AAC9H,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;AACxD,SAAA;KACF;;AArMU,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,kBA0CP,UAAU,CAAC,MAAM,aAAa,CAAC,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA1CxC,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAhDjB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CT,EAAA,QAAA,EAAA,IAAA,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,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,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,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,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAIU,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAlD5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CT,EAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD,CAAA;;;8BA2Cc,MAAM;wBAAC,IAAA,EAAA,CAAA,UAAU,CAAC,MAAM,aAAa,CAAC,CAAA;;yBAzC1C,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAEG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBAEG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEI,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBAEG,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBAEM,YAAY,EAAA,CAAA;sBAAxB,KAAK;;MAmQK,aAAa,CAAA;AA2GxB,IAAA,WAAA,CACU,EAAc,EACd,EAAqB,EACrB,MAAqB,EACtB,cAA8B,EAAA;AAH7B,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AACd,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAmB;AACrB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;AACtB,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AA1E9B,QAAA,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AAgB1B,QAAA,IAAA,CAAA,QAAQ,GAAsB,IAAI,YAAY,EAAE,CAAC;AAEjD,QAAA,IAAA,CAAA,aAAa,GAAsB,IAAI,YAAY,EAAE,CAAC;AAEtD,QAAA,IAAA,CAAA,MAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;AAE/C,QAAA,IAAA,CAAA,MAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;AAE/C,QAAA,IAAA,CAAA,OAAO,GAAsB,IAAI,YAAY,EAAE,CAAC;AAEhD,QAAA,IAAA,CAAA,YAAY,GAAsB,IAAI,YAAY,EAAE,CAAC;AAErD,QAAA,IAAA,CAAA,YAAY,GAAsB,IAAI,YAAY,EAAE,CAAC;AAwB/D,QAAA,IAAa,CAAA,aAAA,GAAQ,IAAI,CAAC;AAE1B,QAAA,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;AAEzB,QAAA,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;AAExB,QAAA,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;AAEhC,QAAA,IAAK,CAAA,KAAA,GAAY,KAAK,CAAC;AAMvB,QAAA,IAAA,CAAA,aAAa,GAAa,MAAK,GAAG,CAAC;AAEnC,QAAA,IAAA,CAAA,cAAc,GAAa,MAAK,GAAG,CAAC;KAOhC;AAzCJ,IAAA,IAAa,qBAAqB,GAAA;QAChC,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACpC;IACD,IAAI,qBAAqB,CAAC,GAAW,EAAA;AACnC,QAAA,IAAI,CAAC,sBAAsB,GAAG,GAAG,CAAC;AAClC,QAAA,OAAO,CAAC,IAAI,CAAC,sGAAsG,CAAC,CAAC;KACtH;AAID,IAAA,IAAa,qBAAqB,GAAA;QAChC,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACpC;IACD,IAAI,qBAAqB,CAAC,GAAW,EAAA;AACnC,QAAA,IAAI,CAAC,sBAAsB,GAAG,GAAG,CAAC;AAClC,QAAA,OAAO,CAAC,IAAI,CAAC,sGAAsG,CAAC,CAAC;KACtH;IA2BD,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC9B,YAAA,QAAQ,IAAI,CAAC,OAAO,EAAE;AACpB,gBAAA,KAAK,OAAO;AACV,oBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACnC,MAAM;AACR,gBAAA,KAAK,QAAQ;AACX,oBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACpC,MAAM;AACT,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,cAAc,CAAC,KAAK,EAAA;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;AACZ,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KACzC;AAED,IAAA,mBAAmB,CAAC,KAAK,EAAA;AACvB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;AAED,IAAA,cAAc,CAAC,MAAM,EAAA;QACnB,OAAO,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;KAC3F;AAED,IAAA,cAAc,CAAC,MAAM,EAAA;QACnB,OAAO,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;KAC3F;IAED,sBAAsB,CAAC,WAAW,EAAE,KAAK,EAAA;AACvC,QAAA,OAAO,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;KACnF;IAED,aAAa,CAAC,MAAM,EAAE,KAAK,EAAA;AACzB,QAAA,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;KACtF;IAED,mBAAmB,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC;QACT,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtC,YAAA,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC/B,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC9C,gBAAA,IAAI,IAAI,EAAE;oBACR,MAAM;AACP,iBAAA;AACF,aAAA;AACF,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAED,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;KAC/E;IAED,sBAAsB,CAAC,MAAM,EAAE,KAAK,EAAA;QAClC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;AACrC,YAAA,IAAI,cAAc,CAAC;YACnB,KAAK,IAAI,WAAW,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;gBAClE,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AACrE,gBAAA,IAAI,cAAc,EAAE;AAClB,oBAAA,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/B,oBAAA,OAAO,cAAc,CAAC;AACvB,iBAAA;AACF,aAAA;AACF,SAAA;AAAM,aAAA,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;YACpF,OAAO,CAAC,MAAM,CAAC,CAAC;AACjB,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC5B;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KACxB;AAED,IAAA,KAAK,CAAC,KAAK,EAAA;AACT,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KACxB;AAED,IAAA,OAAO,CAAC,KAAK,EAAA;;QACX,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;AACR,SAAA;QAED,IAAI,EAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,0CAAE,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA,EAAE;YACrE,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,IAAI,EAAE,CAAC;AACb,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,IAAI,EAAE,CAAC;AACb,aAAA;AAED,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACzC,SAAA;KACF;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACrB;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtB;AAED,IAAA,sBAAsB,CAAC,KAAqB,EAAA;QAC1C,QAAQ,KAAK,CAAC,OAAO;AACnB,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,MAAM;AACT,SAAA;KACF;AAED,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KACxB;AAED,IAAA,gBAAgB,CAAC,EAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KACzB;AAED,IAAA,iBAAiB,CAAC,EAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;KAC1B;AAED,IAAA,gBAAgB,CAAC,GAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;AACpB,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KACxB;IAED,KAAK,GAAA;QACH,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/E,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,cAAc,CAAC;KAC3C;AAED,IAAA,SAAS,CAAC,KAAK,EAAA;QACb,QAAQ,KAAK,CAAC,IAAI;AAChB,YAAA,KAAK,MAAM,CAAC;AACZ,YAAA,KAAK,WAAW;gBACd,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,oBAAA,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAChG,iBAAA;AAAM,qBAAA,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;oBAC9D,IAAI,CAAC,IAAI,EAAE,CAAC;AACb,iBAAA;gBACD,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM;AAER,YAAA,KAAK,OAAO,CAAC;AACb,YAAA,KAAK,OAAO;gBACV,IAAI,CAAC,IAAI,CAAC,cAAc;oBAAE,IAAI,CAAC,IAAI,EAAE,CAAC;;oBACjC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAEjB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM;AAER,YAAA,KAAK,KAAK,CAAC;AACX,YAAA,KAAK,QAAQ;gBACX,IAAI,IAAI,CAAC,cAAc,EAAE;oBACvB,IAAI,CAAC,IAAI,EAAE,CAAC;oBACZ,KAAK,CAAC,cAAc,EAAE,CAAC;AACxB,iBAAA;gBACD,MAAM;AACT,SAAA;KACF;IAED,cAAc,GAAA;QACZ,OAAO;AACL,YAAA,4CAA4C,EAAE,IAAI;YAClD,YAAY,EAAE,IAAI,CAAC,QAAQ;YAC3B,SAAS,EAAE,IAAI,CAAC,OAAO;SACxB,CAAC;KACH;IAED,UAAU,GAAA;QACR,OAAO;AACL,YAAA,uBAAuB,EAAE,IAAI;AAC7B,YAAA,aAAa,EAAE,IAAI;YACnB,eAAe,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,WAAW;YAClD,6BAA6B,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,KAAK,cAAc,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;SAC7G,CAAC;KACH;;0GAhUU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,knCALb,CAAC,4BAA4B,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAwExB,aAAa,EArJpB,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ouCAAA,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,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,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,cAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAhRU,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FA4RhB,aAAa,EAAA,UAAA,EAAA,CAAA;kBApFzB,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EACjB,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsET,EAAA,CAAA,EACK,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,0BAA0B;AACjC,wBAAA,+BAA+B,EAAE,QAAQ;AACzC,wBAAA,8BAA8B,EAAE,2BAA2B;AAC3D,wBAAA,mCAAmC,EAAE,wBAAwB;qBAC9D,EACU,SAAA,EAAA,CAAC,4BAA4B,CAAC,EACxB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,ouCAAA,CAAA,EAAA,CAAA;0LAI5B,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAEG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBAEG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAEG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAEG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAEmB,YAAY,EAAA,CAAA;sBAApC,SAAS;uBAAC,YAAY,CAAA;gBAEC,WAAW,EAAA,CAAA;sBAAlC,SAAS;uBAAC,WAAW,CAAA;gBAEF,OAAO,EAAA,CAAA;sBAA1B,SAAS;uBAAC,OAAO,CAAA;gBAEI,gBAAgB,EAAA,CAAA;sBAArC,SAAS;uBAAC,SAAS,CAAA;gBAEV,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBAEG,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBAEG,MAAM,EAAA,CAAA;sBAAf,MAAM;gBAEG,MAAM,EAAA,CAAA;sBAAf,MAAM;gBAEG,OAAO,EAAA,CAAA;sBAAhB,MAAM;gBAEG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBAEG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBAEyB,SAAS,EAAA,CAAA;sBAAxC,eAAe;uBAAC,aAAa,CAAA;gBAIjB,qBAAqB,EAAA,CAAA;sBAAjC,KAAK;gBAUO,qBAAqB,EAAA,CAAA;sBAAjC,KAAK;;MAuPK,mBAAmB,CAAA;;gHAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;iHAAnB,mBAAmB,EAAA,YAAA,EAAA,CAxUnB,aAAa,EA5Rb,gBAAgB,aAgmBjB,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,CAAA,EAAA,OAAA,EAAA,CApUtD,aAAa,EA5Rb,gBAAgB,EAimBgB,aAAa,EAAE,YAAY,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;AAGzE,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAJpB,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EACtB,aAAa,EAAE,YAAY,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;2FAGzE,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,CAAC;oBAClE,OAAO,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,CAAC;AACrF,oBAAA,YAAY,EAAE,CAAC,aAAa,EAAE,gBAAgB,CAAC;iBAChD,CAAA;;;ACvrBD;;AAEG;;;;"}