{"version":3,"file":"obliczeniowo-elementary-value-picker.mjs","sources":["../../../../projects/components/value-picker/models/abstract-values-set.model.ts","../../../../projects/components/value-picker/models/value-set-static.model.ts","../../../../projects/components/value-picker/components/values-set/values-set.component.ts","../../../../projects/components/value-picker/components/values-set/values-set.component.html","../../../../projects/components/value-picker/components/value-picker/value-picker.component.ts","../../../../projects/components/value-picker/components/value-picker/value-picker.component.html","../../../../projects/components/value-picker/value-picker.module.ts","../../../../projects/components/value-picker/models/value-set-dynamic.model.ts","../../../../projects/components/value-picker/obliczeniowo-elementary-value-picker.ts"],"sourcesContent":["import { Observable, of } from 'rxjs';\nimport { ValuePickerItem } from './value-item.model';\n\nexport abstract class AbstractValueSetModel {\n  set: ValuePickerItem[] = [];\n  max: number = 12;\n  columns: number = 3;\n  loading: boolean = false;\n\n  abstract init(current?: ValuePickerItem): Observable<void>;\n  abstract getNextSet(): Observable<boolean>;\n  abstract getPreviousSet(): Observable<boolean>;\n  abstract getCurrentSet(): Observable<ValuePickerItem[]>;\n  abstract displayNextPrevious(): Observable<boolean>;\n  abstract next(current?: ValuePickerItem): Observable<ValuePickerItem | undefined>;\n  abstract previous(current?: ValuePickerItem): Observable<ValuePickerItem | undefined>;\n\n  nextDisabled(): Observable<boolean | undefined> {\n    return of(undefined);\n  }\n\n  previousDisabled(): Observable<boolean | undefined> {\n    return of(undefined);\n  }\n\n  decreaseDisabled(current?: ValuePickerItem) {\n    return current === this.set[0];\n  }\n\n  increaseDisabled(current?: ValuePickerItem) {\n    return current === (this.set && this.set[this.set.length - 1]);\n  }\n\n  selected(item: ValuePickerItem, current?: ValuePickerItem): boolean {\n    return current === item;\n  }\n}\n","import { Observable, of } from 'rxjs';\nimport { AbstractValueSetModel } from './abstract-values-set.model';\nimport { ValuePickerItem } from './value-item.model';\n\nexport class ValueSetStaticModel extends AbstractValueSetModel {\n  offset: number = 0;\n\n  init(current?: ValuePickerItem): Observable<void> {\n    this.offset = current && Math.floor((this.set.indexOf(current) || 0) / this.max) || 0;\n\n    return of();\n  }\n\n  displayNextPrevious(): Observable<boolean> {\n    return of(this.set.length > this.max);\n  }\n\n  getNextSet(): Observable<boolean> {\n    const offset = this.offset + 1;\n    if (offset * this.max < this.set.length - 1) {\n      this.offset = offset;\n      return of(true);\n    }\n    return of(false);\n  }\n\n  getPreviousSet(): Observable<boolean> {\n    if (this.offset) {\n      this.offset = this.offset - 1;\n      return of(true);\n    }\n    return of(false);\n  }\n\n  getCurrentSet(): Observable<ValuePickerItem[]> {\n    return of(this.set.slice(this.offset * this.max, (this.offset + 1) * this.max));\n  }\n\n  next(current?: ValuePickerItem): Observable<ValuePickerItem | undefined> {\n    if (!this.set) {\n      return of();\n    }\n    if (current) {\n      const index = this.set.findIndex(item => item === current);\n      return of(this.set[Math.min(index + 1, this.set.length - 1)]);\n    } else if (!current) {\n      return of(this.set && this.set[this.set.length - 1]);\n    }\n    return of();\n  }\n\n  previous(current?: ValuePickerItem): Observable<ValuePickerItem | undefined> {\n    if (!this.set) {\n      return of();\n    }\n    if (current) {\n      const index = this.set.findIndex(item => item === current);\n      return of(this.set[Math.max(index - 1, 0)]);\n    } else if (!current) {\n      return of(this.set?.[0]);\n    }\n    return of();\n  }\n\n  nextDisabled(): Observable<boolean | undefined> {\n    return of(this.max * this.offset + this.max >= (this.set.length || 0));\n  }\n\n  previousDisabled(): Observable<boolean | undefined> {\n    return of(!this.offset || undefined);\n  }\n}","import { ValuePickerItem } from '../../models/value-item.model';\nimport { Component, Input, EventEmitter, Output, TemplateRef } from '@angular/core';\nimport { AbstractValueSetModel } from '../../models/abstract-values-set.model';\nimport { ValueSetStaticModel } from '../../models/value-set-static.model';\n\n@Component({\n    selector: 'obl-values-set',\n    templateUrl: './values-set.component.html',\n    styleUrls: ['./values-set.component.scss'],\n    standalone: false\n})\nexport class ValuesSetComponent {\n  /**\n   * Input item that can have external optional data, must be the same reference object as one exist on items table\n   */\n  @Input() current?: ValuePickerItem;\n\n  @Input() model: AbstractValueSetModel = new ValueSetStaticModel();\n\n  @Input() itemRef?: TemplateRef<any>;\n\n  @Output() selected = new EventEmitter<ValuePickerItem>();\n\n  @Output() next = new EventEmitter<void>();\n\n  @Output() previous = new EventEmitter<void>();\n\n  ngOnInit() {\n    this.model.init(this.current);\n  }\n\n  setOffset(type: 'next' | 'previous') {\n    (type === 'next' && this.model.getNextSet() || this.model.getPreviousSet()).subscribe(resp => {\n      if (resp) {\n        this[type].emit();\n      }\n    })\n  }\n}\n","@if (!model.loading) {\n  @if (model.displayNextPrevious() | async) {\n    <div class=\"navigation\">\n      <button\n        oblButton\n        (click)=\"setOffset('previous')\"\n        [disabled]=\"model.previousDisabled() | async\"\n      >\n        <obl-icon [name]=\"'left'\"></obl-icon>\n      </button>\n      <button\n        oblButton\n        (click)=\"setOffset('next')\"\n        [disabled]=\"model.nextDisabled() | async\"\n      >\n        <obl-icon [name]=\"'right'\"></obl-icon>\n      </button>\n    </div>\n  }\n  <div class=\"items\">\n    <ng-container>\n      @for (item of model.getCurrentSet() | async; track item) {\n        <button\n          oblButton\n          [selected]=\"model.selected(item, current)\"\n          [style.width]=\"'calc(100% / ' + model.columns + ')'\"\n          (click)=\"selected.emit(item)\"\n        >\n          <ng-container\n            *ngTemplateOutlet=\"\n              itemRef || defaultRef;\n              context: { $implicit: item }\n            \"\n          ></ng-container>\n        </button>\n      }\n    </ng-container>\n  </div>\n} @else {\n  <div class=\"loading\">\n    <obl-spinner></obl-spinner>\n  </div>\n}\n\n<ng-template let-item #defaultRef>\n  {{ item?.value.toString() }}\n</ng-template>\n\n","import { Component, Input, EventEmitter, Output, ContentChild, TemplateRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Observable, of } from 'rxjs';\n\nimport { AbstractValueSetModel } from '../../models/abstract-values-set.model';\nimport { PickerSettings } from '../../models/picker-settings';\nimport { ValuePickerItem } from '../../models/value-item.model';\nimport { ValuePickerDisplay } from '../../models/value-picker-display';\nimport { ValueSetStaticModel } from '../../models/value-set-static.model';\n\n@Component({\n    selector: 'obl-value-picker',\n    templateUrl: './value-picker.component.html',\n    styleUrls: ['./value-picker.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            multi: true,\n            useExisting: ValuePickerComponent\n        },\n    ],\n    standalone: false\n})\nexport class ValuePickerComponent implements ControlValueAccessor {\n  protected _current?: ValuePickerItem | undefined;\n\n  /**\n   * Input item that can have external optional data, must be the same reference object as one exist on items table\n   */\n  @Input() set current(value: ValuePickerItem | undefined) {\n    this._current = value;\n  }\n\n  get current(): ValuePickerItem | undefined {\n    return this._current;\n  }\n\n  /**\n   * items to pickup\n   */\n  @Input() set items(value: ValuePickerItem[]) {\n    if (!this.model) {\n      this.model = new ValueSetStaticModel();\n    }\n    this.model.set = value;\n  }\n\n  public get items(): ValuePickerItem[] {\n    return this._model.set;\n  }\n\n  /**\n   * disable the whole things\n   */\n  @Input() disabled = false;\n\n  /** */\n  @Input() placeholder?: string;\n\n  private _model: AbstractValueSetModel = new ValueSetStaticModel();\n\n  /**\n   * Set model class that need to extends AbstractValueSetModel\n   */\n  @Input() set model(value: AbstractValueSetModel) {\n    value.set = value.set.length && value.set || this._model?.set;\n    this._model = value;\n  }\n\n  get model(): AbstractValueSetModel {\n    return this._model;\n  }\n\n  /**\n   * Options to control displaying different parts, right now only next/previous buttons\n   */\n  @Input() display: ValuePickerDisplay = { nextPrevious: true };\n\n  /**\n   * Picker settings\n   */\n  @Input() picker: PickerSettings = {};\n\n  /**\n   * Emit when picker value changed\n   */\n  @Output() changed = new EventEmitter<ValuePickerItem>();\n\n  /** define if list is opened */\n  isOpen = false;\n\n  protected touched: boolean = false;\n\n  @ContentChild('valueRef') protected valueRef?: TemplateRef<any>;\n\n  @ContentChild('itemRef') protected itemRef?: TemplateRef<any>;\n\n  onChange = (value: ValuePickerItem | undefined) => { };\n\n  onTouched = () => { };\n\n  registerOnValidatorChange(fn: () => void): void { this.onChange = fn; }\n\n  writeValue(set?: ValuePickerItem): void {\n    this.current = set;\n  }\n\n  registerOnChange(onChange: any): void {\n    this.onChange = onChange;\n  }\n\n  registerOnTouched(onTouched: any): void {\n    this.onTouched = onTouched;\n  }\n\n  setDisabledState(disabled: boolean): void {\n    this.disabled = disabled;\n  }\n\n  markAsTouched(): void {\n    if (this.disabled) {\n      return;\n    }\n    if (!this.touched) {\n      this.onTouched();\n      this.touched = true;\n    }\n  }\n\n  previous() {\n    this.setValue(this.model.previous(this.current));\n  }\n\n  next() {\n    this.setValue(this.model.next(this.current));\n  }\n\n  open(): void {\n    if (!this.isOpen) {\n      this.isOpen = true;\n    }\n  }\n\n  toggle(): void {\n    this.isOpen = !this.isOpen;\n  }\n\n  selected(item: ValuePickerItem) {\n    this.isOpen = false;\n    this.setValue(of(item));\n  }\n\n  protected setValue(value: Observable<ValuePickerItem | undefined>) {\n    value.subscribe(value => {\n      this.writeValue(value);\n      this.onChange(value);\n      this.changed.emit(value);\n    })\n  }\n}\n","@if (display.nextPrevious) {\n  <button\n    oblButton\n    (click)=\"previous()\"\n    [icon]=\"'left'\"\n    [disabled]=\"disabled || model.loading || model.decreaseDisabled(current)\"\n  ></button>\n}\n<button\n  [disabled]=\"disabled\"\n  oblButton\n  class=\"current\"\n  (click)=\"open()\"\n  cdkOverlayOrigin\n  #dropDown=\"cdkOverlayOrigin\"\n>\n  @if (model.loading) {\n    <obl-spinner></obl-spinner>\n  }\n  <ng-container\n    *ngTemplateOutlet=\"\n      (current && (valueRef || defaultRef)) || placeholderRef;\n      context: { $implicit: current }\n    \"\n  ></ng-container>\n</button>\n\n@if (display.nextPrevious) {\n  <button\n    oblButton\n    (click)=\"next()\"\n    [icon]=\"'right'\"\n    [disabled]=\"disabled || model.loading || model.increaseDisabled(current)\"\n  >\n  </button>\n}\n\n<ng-template\n  cdkConnectedOverlay\n  [cdkConnectedOverlayOrigin]=\"dropDown\"\n  [cdkConnectedOverlayOpen]=\"isOpen\"\n  [cdkConnectedOverlayOffsetX]=\"2\"\n  (overlayOutsideClick)=\"toggle()\"\n>\n  <obl-values-set\n    [class]=\"picker.className\"\n    [current]=\"current\"\n    [model]=\"model\"\n    [itemRef]=\"itemRef\"\n    (selected)=\"selected($event)\"\n  >\n  </obl-values-set>\n</ng-template>\n\n<ng-template #defaultRef>\n  {{ current?.value.toString() }}\n</ng-template>\n\n<ng-content></ng-content>\n\n<ng-template #placeholderRef>\n  {{ placeholder }}\n</ng-template>\n","import { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\nimport { LoadingModule } from '@obliczeniowo/elementary/loading';\nimport { ButtonsModule } from '@obliczeniowo/elementary/buttons';\nimport { IconsModule } from '@obliczeniowo/elementary/icons';\n\nimport { ValuePickerComponent } from './components/value-picker/value-picker.component';\nimport { ValuesSetComponent } from './components/values-set/values-set.component';\n\n@NgModule({\n  declarations: [\n    ValuePickerComponent,\n    ValuesSetComponent\n  ],\n  imports: [\n    CommonModule,\n    IconsModule,\n    ButtonsModule,\n    OverlayModule,\n    FormsModule,\n    ReactiveFormsModule,\n    LoadingModule,\n  ],\n  exports: [\n    ValuePickerComponent,\n    ValuesSetComponent\n  ]\n})\nexport class ValuePickerModule { }\n","import { Observable, BehaviorSubject, of, map, finalize } from 'rxjs';\nimport { AbstractValueSetModel } from './abstract-values-set.model';\nimport { ValuePickerItem } from './value-item.model';\n\nexport type ActionType = 'previous' | 'next' | 'current' | 'default';\n\nexport interface IdLike {\n  id: number | string;\n  [key: string]: any;\n}\n\nexport interface ValuePickerResp<T extends IdLike = IdLike, Ext = any> {\n  items: ValuePickerItem<T, Ext>[];\n  next: boolean;\n  previous: boolean;\n}\n\nexport class ValueSetDynamicModel extends AbstractValueSetModel {\n  values = new BehaviorSubject<ValuePickerResp | undefined>(undefined);\n\n  protected observer = this.values.asObservable();\n\n  getSet?: (model: ValueSetDynamicModel, type: ActionType, current?: ValuePickerItem<IdLike>) => Observable<ValuePickerResp>;\n\n  protected get(type: ActionType, current?: ValuePickerItem<IdLike>): Observable<ValuePickerResp | undefined> {\n    if (this.getSet) {\n      setTimeout(() => this.loading = true);\n      return this.getSet(this, type, current).pipe(finalize(() => this.loading = false));\n    }\n\n    return of();\n  }\n\n  init(current?: ValuePickerItem<IdLike> | undefined): Observable<void> {\n    const values = this.values.value;\n\n    if (values && current) {\n      if (values.items.findIndex(item => item.value.id === current?.value.id) !== -1) {\n        return of();\n      }\n    }\n\n    this.get(current && 'current' || 'default', current).subscribe(resp => this.values.next(resp));\n\n    return of();\n  }\n\n  getNextSet(): Observable<boolean> {\n    return this.getPreviousNextSet('next');\n  }\n\n  getPreviousSet(): Observable<boolean> {\n    return this.getPreviousNextSet('previous');\n  }\n\n  protected getPreviousNextSet(type: 'next' | 'previous', current?: ValuePickerItem<IdLike>): Observable<boolean> {\n    const res = this.values.value;\n\n    if (this.getSet) {\n      if (res) {\n        if (res.next) {\n          this.loading = true;\n          this.get(type).subscribe(resp => this.values.next(resp));\n        }\n\n        return of(res.next);\n      }\n      this.loading = true;\n      this.get(current && 'current' || 'default', current).subscribe(resp => this.values.next(resp));\n    }\n\n    return of(false);\n  }\n\n  getCurrentSet(): Observable<ValuePickerItem<IdLike>[]> {\n    return this.observer.pipe(map(resp => resp?.items || []));\n  }\n\n  displayNextPrevious(): Observable<boolean> {\n    const value = this.values.value;\n\n    return of(value && (value.next && value.previous) || false);\n  }\n\n  next(current?: ValuePickerItem<IdLike>): Observable<ValuePickerItem | undefined> {\n    return this.getPreviousNext('next', current);\n  }\n\n  previous(current?: ValuePickerItem<IdLike>): Observable<ValuePickerItem<IdLike> | undefined> {\n    return this.getPreviousNext('previous', current);\n  }\n\n  protected getPreviousNext(type: 'next' | 'previous', current?: ValuePickerItem<IdLike>): Observable<ValuePickerItem<IdLike> | undefined> {\n    if (this.loading) {\n      return of(current);\n    }\n\n    const value = this.values.value;\n    const get = () => {\n      if (this.getSet) {\n        setTimeout(() => this.loading = true);\n        return this.getSet(this, type).pipe(\n          map(resp => (this.values.next(resp), resp.items[type === 'next' ? 0 : resp.items.length - 1])),\n          finalize(() => this.loading = false)\n        );\n      }\n\n      return of();\n    }\n\n    if (value) {\n      const { items, next, previous } = value;\n      const index = items.findIndex(item => item.value.id === current?.value.id);\n\n      if (type === 'next' && next) {\n        return items[index + 1] && of(items[index + 1]) || get();\n      } else if (type === 'previous' && previous) {\n        return items[index - 1] && of(items[index - 1]) || get();\n      }\n      return of();\n    }\n\n    return get();\n  }\n\n  nextDisabled(): Observable<boolean> {\n    return of(this.values.value?.next !== true || false);\n  }\n\n  previousDisabled(): Observable<boolean> {\n    return of(this.values.value?.previous !== true || false);\n  }\n\n  decreaseDisabled(current?: ValuePickerItem) {\n    const values = this.values.value;\n\n    return current?.value.id === values?.items[0].value.id && values?.previous !== true || false;\n  }\n\n  increaseDisabled(current?: ValuePickerItem) {\n    const values = this.values.value;\n\n    return current?.value.id === values?.items[(values?.items.length || 0) - 1]?.value.id && values?.next !== true || false;\n  }\n\n  selected(item: ValuePickerItem<IdLike>, current?: ValuePickerItem<IdLike>): boolean {\n    return current?.value.id === item?.value.id;\n  }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i5.ValuesSetComponent"],"mappings":";;;;;;;;;;;;;;;MAGsB,qBAAqB,CAAA;IACzC,GAAG,GAAsB,EAAE;IAC3B,GAAG,GAAW,EAAE;IAChB,OAAO,GAAW,CAAC;IACnB,OAAO,GAAY,KAAK;IAUxB,YAAY,GAAA;AACV,QAAA,OAAO,EAAE,CAAC,SAAS,CAAC;;IAGtB,gBAAgB,GAAA;AACd,QAAA,OAAO,EAAE,CAAC,SAAS,CAAC;;AAGtB,IAAA,gBAAgB,CAAC,OAAyB,EAAA;QACxC,OAAO,OAAO,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;;AAGhC,IAAA,gBAAgB,CAAC,OAAyB,EAAA;QACxC,OAAO,OAAO,MAAM,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;IAGhE,QAAQ,CAAC,IAAqB,EAAE,OAAyB,EAAA;QACvD,OAAO,OAAO,KAAK,IAAI;;AAE1B;;AChCK,MAAO,mBAAoB,SAAQ,qBAAqB,CAAA;IAC5D,MAAM,GAAW,CAAC;AAElB,IAAA,IAAI,CAAC,OAAyB,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAErF,OAAO,EAAE,EAAE;;IAGb,mBAAmB,GAAA;AACjB,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;;IAGvC,UAAU,GAAA;AACR,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;AAC9B,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;;AAEjB,QAAA,OAAO,EAAE,CAAC,KAAK,CAAC;;IAGlB,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;AAC7B,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;;AAEjB,QAAA,OAAO,EAAE,CAAC,KAAK,CAAC;;IAGlB,aAAa,GAAA;AACX,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;;AAGjF,IAAA,IAAI,CAAC,OAAyB,EAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACb,OAAO,EAAE,EAAE;;QAEb,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,KAAK,OAAO,CAAC;YAC1D,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;aACxD,IAAI,CAAC,OAAO,EAAE;AACnB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;QAEtD,OAAO,EAAE,EAAE;;AAGb,IAAA,QAAQ,CAAC,OAAyB,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACb,OAAO,EAAE,EAAE;;QAEb,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,KAAK,OAAO,CAAC;AAC1D,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;;aACtC,IAAI,CAAC,OAAO,EAAE;YACnB,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;;QAE1B,OAAO,EAAE,EAAE;;IAGb,YAAY,GAAA;QACV,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;;IAGxE,gBAAgB,GAAA;QACd,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC;;AAEvC;;MC5DY,kBAAkB,CAAA;AAC7B;;AAEG;AACM,IAAA,OAAO;AAEP,IAAA,KAAK,GAA0B,IAAI,mBAAmB,EAAE;AAExD,IAAA,OAAO;AAEN,IAAA,QAAQ,GAAG,IAAI,YAAY,EAAmB;AAE9C,IAAA,IAAI,GAAG,IAAI,YAAY,EAAQ;AAE/B,IAAA,QAAQ,GAAG,IAAI,YAAY,EAAQ;IAE7C,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;;AAG/B,IAAA,SAAS,CAAC,IAAyB,EAAA;QACjC,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,CAAC,IAAI,IAAG;YAC3F,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;;AAErB,SAAC,CAAC;;uGAzBO,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,sNCX/B,0vCAgDA,EAAA,MAAA,EAAA,CAAA,8tBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA;;2FDrCa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAGd,KAAK,EAAA,QAAA,EAAA,0vCAAA,EAAA,MAAA,EAAA,CAAA,8tBAAA,CAAA,EAAA;8BAMV,OAAO,EAAA,CAAA;sBAAf;gBAEQ,KAAK,EAAA,CAAA;sBAAb;gBAEQ,OAAO,EAAA,CAAA;sBAAf;gBAES,QAAQ,EAAA,CAAA;sBAAjB;gBAES,IAAI,EAAA,CAAA;sBAAb;gBAES,QAAQ,EAAA,CAAA;sBAAjB;;;MEFU,oBAAoB,CAAA;AACrB,IAAA,QAAQ;AAElB;;AAEG;IACH,IAAa,OAAO,CAAC,KAAkC,EAAA;AACrD,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;AAGvB,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;;AAGtB;;AAEG;IACH,IAAa,KAAK,CAAC,KAAwB,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,mBAAmB,EAAE;;AAExC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK;;AAGxB,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG;;AAGxB;;AAEG;IACM,QAAQ,GAAG,KAAK;;AAGhB,IAAA,WAAW;AAEZ,IAAA,MAAM,GAA0B,IAAI,mBAAmB,EAAE;AAEjE;;AAEG;IACH,IAAa,KAAK,CAAC,KAA4B,EAAA;AAC7C,QAAA,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG;AAC7D,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;AAGrB,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;;AAGpB;;AAEG;AACM,IAAA,OAAO,GAAuB,EAAE,YAAY,EAAE,IAAI,EAAE;AAE7D;;AAEG;IACM,MAAM,GAAmB,EAAE;AAEpC;;AAEG;AACO,IAAA,OAAO,GAAG,IAAI,YAAY,EAAmB;;IAGvD,MAAM,GAAG,KAAK;IAEJ,OAAO,GAAY,KAAK;AAEE,IAAA,QAAQ;AAET,IAAA,OAAO;AAE1C,IAAA,QAAQ,GAAG,CAAC,KAAkC,KAAI,GAAI;AAEtD,IAAA,SAAS,GAAG,MAAK,GAAI;IAErB,yBAAyB,CAAC,EAAc,EAAA,EAAU,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAErE,IAAA,UAAU,CAAC,GAAqB,EAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG;;AAGpB,IAAA,gBAAgB,CAAC,QAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;AAG1B,IAAA,iBAAiB,CAAC,SAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;;AAG5B,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;IAG1B,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;;IAIvB,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;IAGlD,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;IAG9C,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;;;IAItB,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM;;AAG5B,IAAA,QAAQ,CAAC,IAAqB,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACnB,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;;AAGf,IAAA,QAAQ,CAAC,KAA8C,EAAA;AAC/D,QAAA,KAAK,CAAC,SAAS,CAAC,KAAK,IAAG;AACtB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B,SAAC,CAAC;;uGAtIO,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EATlB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE;AAChB,aAAA;AACJ,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBL,03CA+DA,EAAA,MAAA,EAAA,CAAA,uSAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDxCa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAbhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAGjB,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAsB;AACpC,yBAAA;AACJ,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,03CAAA,EAAA,MAAA,EAAA,CAAA,uSAAA,CAAA,EAAA;8BAQN,OAAO,EAAA,CAAA;sBAAnB;gBAWY,KAAK,EAAA,CAAA;sBAAjB;gBAcQ,QAAQ,EAAA,CAAA;sBAAhB;gBAGQ,WAAW,EAAA,CAAA;sBAAnB;gBAOY,KAAK,EAAA,CAAA;sBAAjB;gBAYQ,OAAO,EAAA,CAAA;sBAAf;gBAKQ,MAAM,EAAA,CAAA;sBAAd;gBAKS,OAAO,EAAA,CAAA;sBAAhB;gBAOmC,QAAQ,EAAA,CAAA;sBAA3C,YAAY;uBAAC,UAAU;gBAEW,OAAO,EAAA,CAAA;sBAAzC,YAAY;uBAAC,SAAS;;;MEhEZ,iBAAiB,CAAA;uGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAjB1B,oBAAoB;AACpB,YAAA,kBAAkB,aAGlB,YAAY;YACZ,WAAW;YACX,aAAa;YACb,aAAa;YACb,WAAW;YACX,mBAAmB;AACnB,YAAA,aAAa,aAGb,oBAAoB;YACpB,kBAAkB,CAAA,EAAA,CAAA;AAGT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAb1B,YAAY;YACZ,WAAW;YACX,aAAa;YACb,aAAa;YACb,WAAW;YACX,mBAAmB;YACnB,aAAa,CAAA,EAAA,CAAA;;2FAOJ,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAnB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,oBAAoB;wBACpB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,aAAa;wBACb,aAAa;wBACb,WAAW;wBACX,mBAAmB;wBACnB,aAAa;AACd,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB;AACD;AACF,iBAAA;;;ACbK,MAAO,oBAAqB,SAAQ,qBAAqB,CAAA;AAC7D,IAAA,MAAM,GAAG,IAAI,eAAe,CAA8B,SAAS,CAAC;AAE1D,IAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AAE/C,IAAA,MAAM;IAEI,GAAG,CAAC,IAAgB,EAAE,OAAiC,EAAA;AAC/D,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACrC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;;QAGpF,OAAO,EAAE,EAAE;;AAGb,IAAA,IAAI,CAAC,OAA6C,EAAA;AAChD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;AAEhC,QAAA,IAAI,MAAM,IAAI,OAAO,EAAE;YACrB,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC9E,OAAO,EAAE,EAAE;;;QAIf,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,SAAS,IAAI,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9F,OAAO,EAAE,EAAE;;IAGb,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;;IAGxC,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;;IAGlC,kBAAkB,CAAC,IAAyB,EAAE,OAAiC,EAAA;AACvF,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;AAE7B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,GAAG,EAAE;AACP,gBAAA,IAAI,GAAG,CAAC,IAAI,EAAE;AACZ,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI;oBACnB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAG1D,gBAAA,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;;AAErB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACnB,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,SAAS,IAAI,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAGhG,QAAA,OAAO,EAAE,CAAC,KAAK,CAAC;;IAGlB,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;;IAG3D,mBAAmB,GAAA;AACjB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;AAE/B,QAAA,OAAO,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;;AAG7D,IAAA,IAAI,CAAC,OAAiC,EAAA;QACpC,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC;;AAG9C,IAAA,QAAQ,CAAC,OAAiC,EAAA;QACxC,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC;;IAGxC,eAAe,CAAC,IAAyB,EAAE,OAAiC,EAAA;AACpF,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,OAAO,EAAE,CAAC,OAAO,CAAC;;AAGpB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;QAC/B,MAAM,GAAG,GAAG,MAAK;AACf,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACrC,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CACjC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAC9F,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CACrC;;YAGH,OAAO,EAAE,EAAE;AACb,SAAC;QAED,IAAI,KAAK,EAAE;YACT,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK;YACvC,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;AAE1E,YAAA,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,EAAE;AAC3B,gBAAA,OAAO,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;;AACnD,iBAAA,IAAI,IAAI,KAAK,UAAU,IAAI,QAAQ,EAAE;AAC1C,gBAAA,OAAO,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;;YAE1D,OAAO,EAAE,EAAE;;QAGb,OAAO,GAAG,EAAE;;IAGd,YAAY,GAAA;AACV,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC;;IAGtD,gBAAgB,GAAA;AACd,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC;;AAG1D,IAAA,gBAAgB,CAAC,OAAyB,EAAA;AACxC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;QAEhC,OAAO,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,MAAM,EAAE,QAAQ,KAAK,IAAI,IAAI,KAAK;;AAG9F,IAAA,gBAAgB,CAAC,OAAyB,EAAA;AACxC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;AAEhC,QAAA,OAAO,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,MAAM,EAAE,IAAI,KAAK,IAAI,IAAI,KAAK;;IAGzH,QAAQ,CAAC,IAA6B,EAAE,OAAiC,EAAA;QACvE,OAAO,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE,KAAK,CAAC,EAAE;;AAE9C;;ACpJD;;AAEG;;;;"}