{"version":3,"file":"laserfiche-lf-ui-components-lf-checklist.mjs","sources":["../../../projects/ui-components/lf-checklist/items/items-validation-text.pipe.ts","../../../projects/ui-components/lf-checklist/items/items.component.ts","../../../projects/ui-components/lf-checklist/items/items.component.html","../../../projects/ui-components/lf-checklist/options/options.component.ts","../../../projects/ui-components/lf-checklist/options/options.component.html","../../../projects/ui-components/lf-checklist/lf-checklist/lf-checklist.component.ts","../../../projects/ui-components/lf-checklist/lf-checklist/lf-checklist.component.html","../../../projects/ui-components/lf-checklist/lf-checklist-public-api.ts","../../../projects/ui-components/lf-checklist/laserfiche-lf-ui-components-lf-checklist.ts"],"sourcesContent":["// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { ValidationRule } from '@laserfiche/lf-ui-components/internal-shared';\nimport { Observable, of } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\nimport { ChecklistItem } from './checklist-item';\n\n/**\n * Pipe that gets the error message for a checklist item depending on the type of error\n */\n@Pipe({\n  name: 'itemsValidationText',\n  standalone: true,\n})\nexport class ItemsValidationTextPipe implements PipeTransform {\n  constructor() {}\n\n  private localizedStrings?: Map<string, Observable<string>>;\n\n  /**\n   * Gets the error message for the checklist item as an observable\n   * @param currentChecklistItem The metadata for the current checklist item\n   * @param currentFormControl The form control for the checklist item (i.e. value, validity)\n   * @param localizedStrings Map of possible localized strings\n   * @returns The error message for the checklist item\n   */\n  transform(\n    currentChecklistItem: ChecklistItem,\n    currentFormControl: AbstractControl,\n    localizedStrings: Map<string, Observable<string>>\n  ): Observable<string | undefined> {\n    this.localizedStrings = localizedStrings;\n    const validationObservable = this.getValidationObservable(currentChecklistItem, currentFormControl);\n    return validationObservable;\n  }\n\n  private getValidationObservable(item: ChecklistItem, formControl: AbstractControl): Observable<string | undefined> {\n    const validationObservable = formControl?.statusChanges.pipe(\n      mergeMap((validity) => {\n        const validationRuleName = this.getBrokenValidationRule(formControl);\n        if (validationRuleName === ValidationRule.PATTERN) {\n          return of(item?.constraintError);\n        }\n        if (validationRuleName === ValidationRule.REQUIRED && item.requiredError) {\n          return of(item.requiredError);\n        }\n        const requiredString = this.localizedStrings?.get('REQUIRED');\n        if (requiredString) {\n          return requiredString?.pipe(\n            map((stringVal) => {\n              if (validationRuleName === ValidationRule.REQUIRED) {\n                return item?.requiredError ? item.requiredError : stringVal;\n              } else {\n                return undefined;\n              }\n            })\n          );\n        } else {\n          return of(undefined);\n        }\n      })\n    );\n    return validationObservable;\n  }\n\n  private getBrokenValidationRule(formControl: AbstractControl): string | undefined {\n    if (formControl?.hasError(ValidationRule.PATTERN)) {\n      return ValidationRule.PATTERN;\n    } else if (formControl?.hasError(ValidationRule.REQUIRED)) {\n      return ValidationRule.REQUIRED;\n    }\n    return undefined;\n  }\n}\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Component, OnInit, Input, Output, EventEmitter, ChangeDetectorRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n  FormArray,\n  FormBuilder,\n  FormControl,\n  FormGroup,\n  ValidatorFn,\n  FormsModule,\n  ReactiveFormsModule,\n} from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { AppLocalizationService, ValidationUtils } from '@laserfiche/lf-ui-components/internal-shared';\nimport { Observable } from 'rxjs';\nimport { ChecklistItem } from './checklist-item';\nimport { ItemsValidationTextPipe } from './items-validation-text.pipe';\n\n/**\n * @internal\n */\n@Component({\n  selector: 'lf-items-component',\n  templateUrl: './items.component.html',\n  styleUrls: ['./items.component.css', './../lf-checklist/lf-checklist.component.css'],\n  standalone: true,\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    MatFormFieldModule,\n    MatInputModule,\n    MatCheckboxModule,\n    ItemsValidationTextPipe,\n  ],\n})\nexport class ItemsComponent implements OnInit {\n  private fb = inject(FormBuilder);\n  private ref = inject(ChangeDetectorRef);\n  private localizationService = inject(AppLocalizationService);\n\n  @Input() items: ChecklistItem[] = [];\n  @Output() itemsChanged: EventEmitter<void> = new EventEmitter<void>();\n  labelPosition: 'before' | 'after' = 'before';\n  checklistParentForm: FormGroup;\n\n  /** @internal */\n  readonly LOCALIZED_STRINGS: Map<string, Observable<string>> = new Map<string, Observable<string>>([\n    ['REQUIRED', this.localizationService.getStringLaserficheObservable('REQUIRED')],\n  ]);\n\n  constructor() {\n    this.checklistParentForm = this.fb.group({\n      fieldArray: new FormArray([]),\n    });\n  }\n\n  ngOnInit(): void {\n    this.refreshChecklistItems();\n  }\n\n  @Input()\n  refreshChecklistItems = () => {\n    this.syncFormControlDataToFieldValues();\n    this.ref.detectChanges();\n  };\n\n  forceValidation: () => boolean = () => {\n    let isValid = true;\n    this.items.forEach((val, index) => {\n      if (val.editable && val.checked) {\n        // don't return invalid if not editable, since user can't fix it\n        const control = this.getSingleField(index);\n        this.triggerValidation(control);\n        const controlValid = control.valid;\n        if (!controlValid) {\n          isValid = false;\n        }\n      }\n    });\n    return isValid;\n  };\n\n  onItemCheckboxChanged(index: number) {\n    const field = this.getSingleField(index);\n    const item = this.items[index];\n    item.name = field.value;\n    if (!item.checked) {\n      field.clearValidators();\n    } else {\n      this.addValidators(item, field);\n    }\n    this.triggerValidation(field);\n    this.itemsChanged.emit();\n  }\n\n  private addValidators(item: ChecklistItem, field: FormControl) {\n    const constraint = item.constraint;\n    const required = item.isRequired;\n    const validators: ValidatorFn[] = [];\n    if (constraint) {\n      validators.push(ValidationUtils.generalRegexValidator(new RegExp(constraint)));\n    }\n    if (required) {\n      const requiredRegexValidator = ValidationUtils.requiredValidator();\n      validators.push(requiredRegexValidator);\n    }\n    field.setValidators(validators);\n  }\n\n  private triggerValidation(field: FormControl) {\n    field.markAsDirty();\n    field.markAllAsTouched();\n    field.updateValueAndValidity();\n  }\n\n  onItemValueChanged(index: number) {\n    const field = this.getSingleField(index);\n    this.items[index].name = field.value;\n    this.itemsChanged.emit();\n  }\n\n  getIcons(item: ChecklistItem): string[] {\n    // TODO add error icon if there is an error on node\n    if (typeof item.icon === 'string') {\n      return [item.icon];\n    } else {\n      return item.icon;\n    }\n  }\n\n  private getArray(): FormArray {\n    return this.checklistParentForm.get('fieldArray') as FormArray;\n  }\n\n  getSingleField(index: number): FormControl {\n    return this.getArray().controls[index] as FormControl;\n  }\n\n  syncFormControlDataToFieldValues() {\n    this.getArray().clear();\n    if (this.items) {\n      this.items.forEach((item) => {\n        const formControl = new FormControl(item.name);\n        if (item.editable && item.checked) {\n          this.addValidators(item, formControl);\n        }\n        if (!item.editable || item.disabled) {\n          formControl.disable();\n        }\n        this.getArray().push(formControl);\n      });\n    }\n  }\n\n  doNothing(event: Event) {\n    event.preventDefault();\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n<div id=\"lf-checklist-item-container\" class=\"lf-checklist-item-container\">\n  @for (item of items; track item; let currentIndex = $index) {\n    <div id=\"lf-checklist-item\" class=\"lf-checklist-item\">\n      <div id=\"lf-checklist-item-label\" class=\"fixed-width-label\" (click)=\"doNothing($event)\">\n        @if (getIcons(item).length > 0) {\n          <div class=\"fixed-size-icon-container\">\n            @for (icon of getIcons(item); track icon) {\n              <img src=\"{{ icon }}\" alt=\"\" class=\"lf-checklist-item-icon\" />\n            }\n          </div>\n        }\n        <div id=\"lf-checklist-item-name\" class=\"lf-checklist-item-name\">\n          <mat-form-field class=\"lf-checklist-field stretch-width lf-text-field\">\n            <input\n              matInput\n              type=\"text\"\n              title=\"{{ item.name }}\"\n              [formControl]=\"getSingleField(currentIndex)\"\n              (change)=\"onItemValueChanged(currentIndex)\"\n              (focusout)=\"onItemValueChanged(currentIndex)\"\n            />\n            @if (!getSingleField(currentIndex).valid) {\n              <mat-error\n                title=\"{{ item | itemsValidationText: getSingleField(currentIndex) : LOCALIZED_STRINGS | async }}\"\n              >\n                {{ item | itemsValidationText: getSingleField(currentIndex) : LOCALIZED_STRINGS | async }}\n              </mat-error>\n            }\n          </mat-form-field>\n        </div>\n      </div>\n      <mat-checkbox\n        color=\"primary\"\n        ngDefaultControl\n        [labelPosition]=\"labelPosition\"\n        [(ngModel)]=\"item.checked\"\n        [disabled]=\"item.disabled\"\n        (change)=\"onItemCheckboxChanged(currentIndex)\"\n        class=\"lf-checkbox\"\n      >\n      </mat-checkbox>\n    </div>\n  }\n</div>\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport { Component, Input, EventEmitter, Output } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { ChecklistOption } from './checklist-option';\n\n@Component({\n  selector: 'lf-options-component',\n  templateUrl: './options.component.html',\n  styleUrls: ['./options.component.css', './../lf-checklist/lf-checklist.component.css'],\n  standalone: true,\n  imports: [FormsModule, MatCheckboxModule],\n})\nexport class OptionsComponent {\n  @Input() options: ChecklistOption[] = [];\n  @Output() optionsChanged: EventEmitter<void> = new EventEmitter<void>();\n\n  constructor() {}\n\n  onOptionCheckboxChanged() {\n    this.optionsChanged.emit();\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n<div id=\"lf-checklist-option-container\" class=\"lf-checklist-option-container\">\n  @for (option of options; track option) {\n    <div id=\"lf-checklist-option\" class=\"lf-checklist-option\">\n      <mat-checkbox\n        color=\"primary\"\n        ngDefaultControl\n        [(ngModel)]=\"option.checked\"\n        [disabled]=\"option.disabled\"\n        (change)=\"onOptionCheckboxChanged()\"\n        title=\"{{ option.name }}\"\n        class=\"lf-checkbox full-width-checkbox\"\n        >{{ option.name }}</mat-checkbox\n      >\n    </div>\n  }\n</div>\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nimport {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ChangeDetectorRef,\n  ViewChildren,\n  QueryList,\n  inject,\n} from '@angular/core';\n\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { ItemsComponent } from '../items/items.component';\nimport { OptionsComponent } from '../options/options.component';\nimport { Checklist } from '../checklist';\nimport { LfChecklistService } from '../lf-checklist.service';\n\nexport interface LfChecklistProviders {\n  checklistService: LfChecklistService;\n}\n\n@Component({\n  selector: 'lf-checklist',\n  templateUrl: './lf-checklist.component.html',\n  styleUrls: ['./lf-checklist.component.css'],\n  standalone: true,\n  imports: [MatExpansionModule, ItemsComponent, OptionsComponent],\n})\nexport class LfChecklistComponent {\n  /**@internal */\n  private ref = inject(ChangeDetectorRef);\n\n  @Input() action_button_text: string | undefined;\n\n  @Input() cancel_button_text: string | undefined;\n\n  @Output() checklistChanged: EventEmitter<Checklist[]> = new EventEmitter();\n\n  @Output() actionClick: EventEmitter<Checklist[]> = new EventEmitter();\n\n  @Output() cancelClick: EventEmitter<Checklist[]> = new EventEmitter();\n\n  /** @internal */\n  @ViewChildren(ItemsComponent) private itemsComponents!: QueryList<ItemsComponent>;\n\n  /** @internal */\n  checklists: Checklist[] = [];\n\n  @Input() initAsync = async (providers: LfChecklistProviders): Promise<void> => {\n    return new Promise((resolve) => {\n      requestAnimationFrame(async () => {\n        this.checklists = await providers.checklistService.loadChecklistsAsync();\n        this.itemsComponents?.forEach((component) => component.refreshChecklistItems());\n        this.checklistChanged.emit(this.checklists);\n        this.ref.markForCheck();\n        resolve();\n      });\n    });\n  };\n\n  @Input() forceValidation = (): boolean => {\n    let isValid = true;\n    this.itemsComponents.forEach((component) => {\n      if (!component.forceValidation()) {\n        isValid = false;\n      }\n    });\n    return isValid;\n  };\n\n  /** @internal */\n  onActionButtonClicked(): void {\n    this.actionClick.emit(this.checklists);\n  }\n\n  /** @internal */\n  onCancelButtonClicked(): void {\n    this.cancelClick.emit(this.checklists);\n  }\n\n  /** @internal */\n  emitChecklistChanges(): void {\n    this.checklistChanged.emit(this.checklists);\n  }\n}\n","<!--Copyright (c) Laserfiche.\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\n\n<div id=\"lf-checklist-container\" class=\"lf-checklist-container\">\n  <div id=\"lf-checklist-list-container\" class=\"lf-checklist-list-container\">\n    @for (checklist of checklists; track checklist) {\n      <div id=\"lf-checklist-list\" class=\"lf-checklist-list\">\n        @if (!checklist.collapsible) {\n          <div>\n            <div id=\"lf-checklist-name-container\" class=\"lf-checklist-name-container\">\n              <span id=\"lf-checklist-name\" class=\"lf-text-label\" title=\"{{ checklist.name }}\">{{\n                checklist.name\n              }}</span>\n            </div>\n            @if (checklist.checklistItems.length > 0) {\n              <lf-items-component\n                [items]=\"checklist.checklistItems\"\n                (itemsChanged)=\"emitChecklistChanges()\"\n              ></lf-items-component>\n            }\n            @if (checklist.checklistOptions.length > 0) {\n              <lf-options-component\n                [options]=\"checklist.checklistOptions\"\n                (optionsChanged)=\"emitChecklistChanges()\"\n              ></lf-options-component>\n            }\n          </div>\n        }\n        @if (checklist.collapsible) {\n          <div>\n            <mat-expansion-panel [expanded]=\"false\" class=\"checklist-expansion-panel\">\n              <mat-expansion-panel-header class=\"checklist-expansion-panel\">\n                <mat-panel-title>\n                  <span id=\"lf-checklist-name\" class=\"lf-text-label\" title=\"{{ checklist.name }}\">{{\n                    checklist.name\n                  }}</span>\n                </mat-panel-title>\n              </mat-expansion-panel-header>\n              @if (checklist.checklistItems.length > 0) {\n                <lf-items-component\n                  [items]=\"checklist.checklistItems\"\n                  (itemsChanged)=\"emitChecklistChanges()\"\n                ></lf-items-component>\n              }\n              @if (checklist.checklistOptions.length > 0) {\n                <lf-options-component\n                  [options]=\"checklist.checklistOptions\"\n                  (optionsChanged)=\"emitChecklistChanges()\"\n                ></lf-options-component>\n              }\n            </mat-expansion-panel>\n          </div>\n        }\n      </div>\n    }\n  </div>\n  <div id=\"lf-checklist-button-container\" class=\"lf-checklist-button-container\">\n    @if (action_button_text) {\n      <button\n        id=\"lf-checklist-action-button\"\n        class=\"lf-checklist-action-button primary-button lf-button\"\n        (click)=\"onActionButtonClicked()\"\n      >\n        {{ action_button_text }}\n      </button>\n    }\n    @if (cancel_button_text) {\n      <button\n        id=\"lf-checklist-cancel-button\"\n        class=\"lf-checklist-cancel-button lf-button sec-button\"\n        (click)=\"onCancelButtonClicked()\"\n      >\n        {{ cancel_button_text }}\n      </button>\n    }\n  </div>\n</div>\n","// Copyright (c) Laserfiche.\n// Licensed under the MIT License. See LICENSE in the project root for license information.\n\nexport { LfChecklistService } from './lf-checklist.service';\nexport { LfChecklistProviders, LfChecklistComponent } from './lf-checklist/lf-checklist.component';\nexport { Checklist } from './checklist';\nexport { ChecklistItem } from './items/checklist-item';\nexport { ChecklistOption } from './options/checklist-option';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './lf-checklist-public-api';\n"],"names":["i2","i1"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AACA;AASA;;AAEG;MAKU,uBAAuB,CAAA;AAClC,IAAA,WAAA,GAAA,EAAe;AAIf;;;;;;AAMG;AACH,IAAA,SAAS,CACP,oBAAmC,EACnC,kBAAmC,EACnC,gBAAiD,EAAA;AAEjD,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;QACxC,MAAM,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;AACnG,QAAA,OAAO,oBAAoB;IAC7B;IAEQ,uBAAuB,CAAC,IAAmB,EAAE,WAA4B,EAAA;AAC/E,QAAA,MAAM,oBAAoB,GAAG,WAAW,EAAE,aAAa,CAAC,IAAI,CAC1D,QAAQ,CAAC,CAAC,QAAQ,KAAI;YACpB,MAAM,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC;AACpE,YAAA,IAAI,kBAAkB,KAAK,cAAc,CAAC,OAAO,EAAE;AACjD,gBAAA,OAAO,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC;YAClC;YACA,IAAI,kBAAkB,KAAK,cAAc,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;AACxE,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC;YAC/B;YACA,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,UAAU,CAAC;YAC7D,IAAI,cAAc,EAAE;gBAClB,OAAO,cAAc,EAAE,IAAI,CACzB,GAAG,CAAC,CAAC,SAAS,KAAI;AAChB,oBAAA,IAAI,kBAAkB,KAAK,cAAc,CAAC,QAAQ,EAAE;AAClD,wBAAA,OAAO,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,SAAS;oBAC7D;yBAAO;AACL,wBAAA,OAAO,SAAS;oBAClB;gBACF,CAAC,CAAC,CACH;YACH;iBAAO;AACL,gBAAA,OAAO,EAAE,CAAC,SAAS,CAAC;YACtB;QACF,CAAC,CAAC,CACH;AACD,QAAA,OAAO,oBAAoB;IAC7B;AAEQ,IAAA,uBAAuB,CAAC,WAA4B,EAAA;QAC1D,IAAI,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;YACjD,OAAO,cAAc,CAAC,OAAO;QAC/B;aAAO,IAAI,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;YACzD,OAAO,cAAc,CAAC,QAAQ;QAChC;AACA,QAAA,OAAO,SAAS;IAClB;+GA1DW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,qBAAqB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;AChBD;AACA;AAqBA;;AAEG;MAgBU,cAAc,CAAA;AAezB,IAAA,WAAA,GAAA;AAdQ,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;AACxB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC/B,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,sBAAsB,CAAC;QAEnD,IAAA,CAAA,KAAK,GAAoB,EAAE;AAC1B,QAAA,IAAA,CAAA,YAAY,GAAuB,IAAI,YAAY,EAAQ;QACrE,IAAA,CAAA,aAAa,GAAuB,QAAQ;;QAInC,IAAA,CAAA,iBAAiB,GAAoC,IAAI,GAAG,CAA6B;YAChG,CAAC,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;AACjF,SAAA,CAAC;QAaF,IAAA,CAAA,qBAAqB,GAAG,MAAK;YAC3B,IAAI,CAAC,gCAAgC,EAAE;AACvC,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC1B,QAAA,CAAC;QAED,IAAA,CAAA,eAAe,GAAkB,MAAK;YACpC,IAAI,OAAO,GAAG,IAAI;YAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;gBAChC,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,EAAE;;oBAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC1C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;AAC/B,oBAAA,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK;oBAClC,IAAI,CAAC,YAAY,EAAE;wBACjB,OAAO,GAAG,KAAK;oBACjB;gBACF;AACF,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,OAAO;AAChB,QAAA,CAAC;QA7BC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACvC,YAAA,UAAU,EAAE,IAAI,SAAS,CAAC,EAAE,CAAC;AAC9B,SAAA,CAAC;IACJ;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAwBA,IAAA,qBAAqB,CAAC,KAAa,EAAA;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,KAAK,CAAC,eAAe,EAAE;QACzB;aAAO;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC;QACjC;AACA,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;IAEQ,aAAa,CAAC,IAAmB,EAAE,KAAkB,EAAA;AAC3D,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;AAClC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU;QAChC,MAAM,UAAU,GAAkB,EAAE;QACpC,IAAI,UAAU,EAAE;AACd,YAAA,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAChF;QACA,IAAI,QAAQ,EAAE;AACZ,YAAA,MAAM,sBAAsB,GAAG,eAAe,CAAC,iBAAiB,EAAE;AAClE,YAAA,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC;QACzC;AACA,QAAA,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC;IACjC;AAEQ,IAAA,iBAAiB,CAAC,KAAkB,EAAA;QAC1C,KAAK,CAAC,WAAW,EAAE;QACnB,KAAK,CAAC,gBAAgB,EAAE;QACxB,KAAK,CAAC,sBAAsB,EAAE;IAChC;AAEA,IAAA,kBAAkB,CAAC,KAAa,EAAA;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK;AACpC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;AAEA,IAAA,QAAQ,CAAC,IAAmB,EAAA;;AAE1B,QAAA,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;AACjC,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACpB;aAAO;YACL,OAAO,IAAI,CAAC,IAAI;QAClB;IACF;IAEQ,QAAQ,GAAA;QACd,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAc;IAChE;AAEA,IAAA,cAAc,CAAC,KAAa,EAAA;QAC1B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACvD;IAEA,gCAAgC,GAAA;AAC9B,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE;AACvB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBAC1B,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AACjC,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC;gBACvC;gBACA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACnC,WAAW,CAAC,OAAO,EAAE;gBACvB;gBACA,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;AACnC,YAAA,CAAC,CAAC;QACJ;IACF;AAEA,IAAA,SAAS,CAAC,KAAY,EAAA;QACpB,KAAK,CAAC,cAAc,EAAE;IACxB;+GAzHW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxC3B,86DA+CA,EAAA,MAAA,EAAA,CAAA,0gEAAA,EAAA,4nCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhBI,YAAY,8BACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,iBAAiB,oeACjB,uBAAuB,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAf1B,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAGlB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,kBAAkB;wBAClB,cAAc;wBACd,iBAAiB;wBACjB,uBAAuB;AACxB,qBAAA,EAAA,QAAA,EAAA,86DAAA,EAAA,MAAA,EAAA,CAAA,0gEAAA,EAAA,4nCAAA,CAAA,EAAA;;sBAOA;;sBACA;;sBAmBA;;;AEjEH;AACA;MAea,gBAAgB,CAAA;AAI3B,IAAA,WAAA,GAAA;QAHS,IAAA,CAAA,OAAO,GAAsB,EAAE;AAC9B,QAAA,IAAA,CAAA,cAAc,GAAuB,IAAI,YAAY,EAAQ;IAExD;IAEf,uBAAuB,GAAA;AACrB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;IAC5B;+GARW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChB7B,krBAmBA,EAAA,MAAA,EAAA,CAAA,0NAAA,EAAA,4nCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLY,WAAW,8mBAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAE7B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAGpB,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,krBAAA,EAAA,MAAA,EAAA,CAAA,0NAAA,EAAA,4nCAAA,CAAA,EAAA;;sBAGxC;;sBACA;;;AElBH;AACA;MA8Ba,oBAAoB,CAAA;AAPjC,IAAA,WAAA,GAAA;;AASU,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAM7B,QAAA,IAAA,CAAA,gBAAgB,GAA8B,IAAI,YAAY,EAAE;AAEhE,QAAA,IAAA,CAAA,WAAW,GAA8B,IAAI,YAAY,EAAE;AAE3D,QAAA,IAAA,CAAA,WAAW,GAA8B,IAAI,YAAY,EAAE;;QAMrE,IAAA,CAAA,UAAU,GAAgB,EAAE;AAEnB,QAAA,IAAA,CAAA,SAAS,GAAG,OAAO,SAA+B,KAAmB;AAC5E,YAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;gBAC7B,qBAAqB,CAAC,YAAW;oBAC/B,IAAI,CAAC,UAAU,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,mBAAmB,EAAE;AACxE,oBAAA,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,qBAAqB,EAAE,CAAC;oBAC/E,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AAC3C,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACvB,oBAAA,OAAO,EAAE;AACX,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;QAEQ,IAAA,CAAA,eAAe,GAAG,MAAc;YACvC,IAAI,OAAO,GAAG,IAAI;YAClB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;AACzC,gBAAA,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE;oBAChC,OAAO,GAAG,KAAK;gBACjB;AACF,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,OAAO;AAChB,QAAA,CAAC;AAgBF,IAAA;;IAbC,qBAAqB,GAAA;QACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IACxC;;IAGA,qBAAqB,GAAA;QACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IACxC;;IAGA,oBAAoB,GAAA;QAClB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IAC7C;+GAvDW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAejB,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9C9B,2hGA6EA,mrCDhDY,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAEnD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;+BACE,cAAc,EAAA,UAAA,EAGZ,IAAI,EAAA,OAAA,EACP,CAAC,kBAAkB,EAAE,cAAc,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,2hGAAA,EAAA,MAAA,EAAA,CAAA,4nCAAA,CAAA,EAAA;;sBAM9D;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAGA,YAAY;uBAAC,cAAc;;sBAK3B;;sBAYA;;;AE/DH;AACA;;ACDA;;AAEG;;;;"}