{"version":3,"file":"qualcomm-ui-angular-core-input.mjs","sources":["../../src/input/input-form-control-provider.ts","../../src/input/abstract-input-form-control.directive.ts","../../src/input/abstract-list-collection-form-control.directive.ts","../../src/input/qualcomm-ui-angular-core-input.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n  computed,\n  inject,\n  InjectionToken,\n  type Signal,\n  signal,\n  type WritableSignal,\n} from \"@angular/core\"\nimport {NgControl, NgModel} from \"@angular/forms\"\n\nimport type {FormEventData} from \"@qualcomm-ui/angular-core/forms\"\n\nexport interface InputFormControlContext<T> {\n  control?: NgControl[\"control\"] | null\n  /**\n   * Computed error message from the underlying control.\n   */\n  errorText: Signal<string | undefined | null>\n  formEventData: WritableSignal<FormEventData<T | undefined> | null>\n  /** `true` when used with reactive-forms (`formControl`, `formControlName`). */\n  isReactiveForm: () => boolean\n  /** `true` when used with template-driven forms (`[(ngModel)]`, `ngModel`). */\n  isTemplateDrivenForm: () => boolean\n  ngControl: NgControl | null\n}\n\nexport type FormControlKnownErrors = Record<\n  string,\n  ((error: any) => string) | undefined\n>\n\nconst defaultErrors: FormControlKnownErrors = {\n  email: () => \"Invalid email\",\n  max: (err) => `Max: ${err.max}`,\n  maxLength: (err) => `Max length: ${err.maxLength}`,\n  min: (err) => `Min: ${err.min}`,\n  minLength: (err) => `Min length: ${err.requiredLength}`,\n  pattern: () => \"Invalid format\",\n  required: () => \"This field is required\",\n  requiredTrue: () => \"Required\",\n}\n\n/**\n * Override the default error messages for known form control errors.\n *\n * The defaults are as follows:\n * ```angular-html\n * const defaultKnownErrors: FormControlKnownErrors = {\n *   email: () => \"Invalid email\",\n *   max: (err) => `Max: ${err.max}`,\n *   maxLength: (err) => `Max length: ${err.maxLength}`,\n *   min: (err) => `Min: ${err.min}`,\n *   minLength: (err) => `Min length: ${err.requiredLength}`,\n *   pattern: () => \"Invalid format\",\n *   required: () => \"This field is required\",\n *   requiredTrue: () => \"This field is required\",\n * }\n * ```\n */\nexport const FORM_CONTROL_ERROR_MESSAGE_PROVIDER = new InjectionToken<\n  Partial<FormControlKnownErrors>\n>(\"FormControlErrorProvider\")\n\nexport const INPUT_FORM_CONTROL_CONTEXT = new InjectionToken<\n  InputFormControlContext<any>\n>(\"InputFormControl\")\n\nexport function initInputFormControl<T = string>(): InputFormControlContext<T> {\n  const ngControl: NgControl | null = inject(NgControl, {\n    optional: true,\n    self: true,\n  })\n\n  const knownErrors: FormControlKnownErrors = {\n    ...defaultErrors,\n    ...(inject(FORM_CONTROL_ERROR_MESSAGE_PROVIDER, {optional: true}) ?? {}),\n  }\n\n  const formEventData = signal<FormEventData<T | undefined> | null>(null)\n\n  function isTemplateDrivenForm(): boolean {\n    return ngControl instanceof NgModel\n  }\n\n  function isReactiveForm(): boolean {\n    // Any NgControl that is *not* NgModel belongs to the reactive-forms package\n    return !!ngControl && !isTemplateDrivenForm()\n  }\n\n  return {\n    control: ngControl?.control ?? null,\n    errorText: computed(() => {\n      // make this reactive so that the error message is updated when the form state\n      // changes.\n      formEventData()\n      const errors = ngControl?.control?.errors ?? {}\n      const [errorKey, errorValue] = Object.entries(errors)[0] ?? []\n      if (errorKey && knownErrors[errorKey]) {\n        return knownErrors[errorKey](errorValue)\n      }\n      return errors[\"errorText\"] ?? errors[\"error\"] ?? null\n    }),\n    formEventData,\n    isReactiveForm,\n    isTemplateDrivenForm,\n    ngControl,\n  }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n  afterNextRender,\n  booleanAttribute,\n  computed,\n  Directive,\n  effect,\n  inject,\n  Injector,\n  input,\n  isDevMode,\n  linkedSignal,\n  type OnInit,\n  runInInjectionContext,\n  signal,\n} from \"@angular/core\"\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\"\nimport {\n  type AbstractControl,\n  type ControlValueAccessor,\n  type FormControlStatus,\n  FormGroupDirective,\n  FormSubmittedEvent,\n  NgForm,\n  PristineChangeEvent,\n  Validators,\n} from \"@angular/forms\"\n\nimport {useOnDestroy} from \"@qualcomm-ui/angular-core/common\"\nimport {allEventsSignal} from \"@qualcomm-ui/angular-core/forms\"\nimport type {Booleanish} from \"@qualcomm-ui/utils/coercion\"\nimport {defined, isDefined} from \"@qualcomm-ui/utils/guard\"\n\nimport {initInputFormControl} from \"./input-form-control-provider\"\n\n@Directive()\nexport abstract class AbstractInputFormControlDirective\n  implements ControlValueAccessor, OnInit\n{\n  /**\n   * The initial state of the input when rendered. Use when you don't\n   * need to control the checked state of the input. This property will be\n   * ignored if you opt into controlled state via form control bindings.\n   */\n  readonly defaultValue = input<string | undefined>(undefined)\n\n  /**\n   * Controls whether the input is disabled in template-driven forms. When true,\n   * prevents user interaction and applies visual styling to indicate the disabled\n   * state.\n   */\n  readonly disabled = input<boolean | undefined, Booleanish>(undefined, {\n    transform: booleanAttribute,\n  })\n\n  /**\n   * Controls the visual error state of the input. When true, applies semantic error\n   * styling to indicate validation failure.\n   */\n  readonly invalid = input<boolean | undefined, Booleanish>(undefined, {\n    transform: booleanAttribute,\n  })\n\n  /**\n   * The name of the input field. Useful for form submission.\n   */\n  readonly name = input<string | undefined>()\n\n  /**\n   * Whether the input is read-only. When true, prevents user interaction while\n   * keeping the input focusable and visible.\n   */\n  readonly readOnly = input<boolean | undefined, Booleanish>(undefined, {\n    transform: booleanAttribute,\n  })\n\n  /**\n   * Controls whether the input is required in template-driven forms. When\n   * true, the input must have a value for form validation to pass.\n   */\n  readonly required = input<boolean | undefined, Booleanish>(undefined, {\n    transform: booleanAttribute,\n  })\n\n  /* the internal \"value\" state of the input */\n  protected readonly value = signal<string>(\"\")\n  protected readonly onDestroy = useOnDestroy()\n  protected readonly injector = inject(Injector)\n  protected readonly formControlStatus = signal<FormControlStatus | undefined>(\n    undefined,\n  )\n  protected readonly formSubmitted = signal(false)\n\n  readonly formControlContext = initInputFormControl()\n\n  /**\n   * If the component is bound to an Angular AbstractControl, its state wins.\n   * If not, fall back to the host attribute.\n   */\n  protected readonly isDisabled = linkedSignal(() => {\n    /**\n     * When the component is bound to any AbstractControl, status is guaranteed to\n     * be non-undefined.\n     */\n    const status = this.formControlStatus()\n    const disabled = this.disabled()\n    if (status !== undefined) {\n      return status === \"DISABLED\"\n    }\n\n    return !!disabled\n  })\n\n  readonly isInvalid = computed(() => {\n    const formEventData = this.formControlContext.formEventData()\n    this.formSubmitted()\n    const isInvalidDefined = defined(this.invalid())\n    const invalidProp = this.invalid() || false\n    if (!this.control) {\n      return invalidProp\n    }\n\n    let invalid, touched, dirty\n\n    if (this.formControlContext.isTemplateDrivenForm()) {\n      invalid = isInvalidDefined ? invalidProp : this.control.invalid\n      touched = this.control.touched\n      dirty = this.control.dirty\n    } else if (formEventData) {\n      invalid = formEventData.invalid\n      touched = formEventData.touched\n      dirty = formEventData.dirty\n    } else {\n      return invalidProp\n    }\n\n    switch (this.control.updateOn) {\n      case \"submit\":\n        return invalid\n      case \"blur\":\n        return invalid && touched\n      default:\n        // \"change\"\n        return dirty && invalid\n    }\n  })\n\n  readonly isRequired = linkedSignal(() => {\n    const control = this.control\n    const required = this.required()\n    if (!control || !this.formControlContext.isReactiveForm()) {\n      return required\n    }\n\n    if (typeof control.hasValidator === \"function\") {\n      return (\n        control.hasValidator(Validators.required) ||\n        control.hasValidator(Validators.requiredTrue)\n      )\n    }\n    return false\n  })\n\n  constructor() {\n    if (this.formControlContext.ngControl) {\n      this.formControlContext.ngControl.valueAccessor = this\n      this.value.set(this.formControlContext.ngControl.control?.value || \"\")\n    }\n\n    afterNextRender(() => {\n      if (\n        isDefined(this.required()) &&\n        this.formControlContext.isReactiveForm() &&\n        isDevMode()\n      ) {\n        console.warn(\n          \"The required attribute is not supported on reactive forms. Use Validators instead. https://angular.dev/guide/forms/form-validation#validating-input-in-reactive-forms\",\n        )\n      }\n    })\n\n    effect(() => {\n      const required = this.required()\n      if (this.control && this.formControlContext.isTemplateDrivenForm()) {\n        if (required) {\n          this.control.addValidators(Validators.required)\n        } else if (this.control.hasValidator(Validators.required)) {\n          this.control.removeValidators(Validators.required)\n        }\n      }\n    })\n  }\n\n  ngOnInit() {\n    // Ensure the form control receives the initial value\n    const defaultValue = this.defaultValue()\n    if (!this.control && defaultValue) {\n      this.value.set(defaultValue)\n    } else if (this.control) {\n      const subscription = this.control.statusChanges.subscribe((status) => {\n        this.formControlStatus.set(status)\n      })\n      this.onDestroy(() => {\n        subscription.unsubscribe()\n      })\n\n      const parent = this.getParentForm()\n\n      runInInjectionContext(this.injector, () => {\n        if (this.control) {\n          const formSignal = allEventsSignal<string | undefined>(this.control)\n          effect(() => {\n            this.formControlContext.formEventData.set(formSignal())\n          })\n        }\n\n        if (parent) {\n          let prevPristine = this.control?.pristine || false\n          parent.form.events.pipe(takeUntilDestroyed()).subscribe((event) => {\n            if (event instanceof PristineChangeEvent) {\n              if (event.pristine && !prevPristine) {\n                // if this event fires with pristine status and the control was\n                // previously not pristine, this means that the form was reset. There\n                // isn't another way to determine form resets programmatically,\n                // unfortunately.\n                this.formSubmitted.set(false)\n              }\n              prevPristine = event.pristine\n            } else if (event instanceof FormSubmittedEvent) {\n              this.formSubmitted.set(true)\n              this.control?.markAsDirty()\n            }\n          })\n          parent.ngSubmit.pipe(takeUntilDestroyed()).subscribe(() => {\n            if (this.formControlContext.isReactiveForm()) {\n              // already accounted for in the above event subscription.\n              return\n            }\n            this.formSubmitted.set(true)\n            this.control?.markAsDirty()\n          })\n        }\n      })\n    }\n  }\n\n  /** Convenience access to the underlying AbstractControl (can be null). */\n  get control(): AbstractControl | null {\n    return this.formControlContext.ngControl?.control ?? null\n  }\n\n  /**\n   * Used to subscribe to form submit events.\n   */\n  private getParentForm(): NgForm | FormGroupDirective | null {\n    if (!this.control) {\n      return null\n    }\n\n    // Try to find NgForm first\n    try {\n      const ngForm = this.injector.get(NgForm, null)\n      if (ngForm) {\n        return ngForm\n      }\n    } catch {}\n\n    // Fall back to FormGroupDirective\n    try {\n      const formGroupDirective = this.injector.get(FormGroupDirective, null)\n      if (formGroupDirective) {\n        return formGroupDirective\n      }\n    } catch {}\n\n    return null\n  }\n\n  /*\n   * Control value accessor methods\n   */\n  writeValue(value: any): void {\n    this.value.set(value)\n  }\n\n  // placeholder\n  protected onChange = (_value: any) => {}\n\n  registerOnChange(fn: (value: any) => void): void {\n    this.onChange = (_value) => {\n      fn(_value)\n      this.value.set(_value)\n    }\n  }\n\n  protected onTouched = () => {}\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn\n  }\n\n  /**\n   * NgModel never calls setDisabledState, but ReactiveForms does. Everything else\n   * (writeValue, registerOnChange, registerOnTouched) is identical between Reactive\n   * and Template forms.\n   */\n  setDisabledState(isDisabled: boolean): void {\n    this.isDisabled.set(isDisabled)\n  }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n  afterNextRender,\n  booleanAttribute,\n  computed,\n  Directive,\n  effect,\n  inject,\n  Injector,\n  input,\n  isDevMode,\n  linkedSignal,\n  type OnInit,\n  runInInjectionContext,\n  signal,\n} from \"@angular/core\"\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\"\nimport {\n  type AbstractControl,\n  type ControlValueAccessor,\n  type FormControlStatus,\n  FormGroupDirective,\n  FormSubmittedEvent,\n  NgForm,\n  PristineChangeEvent,\n  Validators,\n} from \"@angular/forms\"\n\nimport {useOnDestroy} from \"@qualcomm-ui/angular-core/common\"\nimport {allEventsSignal} from \"@qualcomm-ui/angular-core/forms\"\nimport type {Booleanish} from \"@qualcomm-ui/utils/coercion\"\nimport {\n  type CollectionItem,\n  ListCollection,\n} from \"@qualcomm-ui/utils/collection\"\nimport {defined, isDefined} from \"@qualcomm-ui/utils/guard\"\n\nimport {initInputFormControl} from \"./input-form-control-provider\"\n\n@Directive()\nexport abstract class AbstractBaseListCollectionFormControlDirective<\n  T extends CollectionItem,\n>\n  implements ControlValueAccessor, OnInit\n{\n  /**\n   * The initial value of the input when rendered. Use when you don't need to\n   * control the value of the input. This property will be ignored if you\n   * opt into controlled state via form control bindings.\n   *\n   * @inheritDoc\n   */\n  readonly defaultValue = input<T[] | undefined>(undefined)\n\n  /**\n   * Controls whether the input is disabled in template-driven forms. When true,\n   * prevents user interaction and applies visual styling to indicate the disabled\n   * state.\n   */\n  readonly disabled = input<boolean | undefined, Booleanish>(undefined, {\n    transform: booleanAttribute,\n  })\n\n  /**\n   * Controls the visual error state of the input. When true, applies semantic error\n   * styling to indicate validation failure.\n   */\n  readonly invalid = input<boolean | undefined, Booleanish>(undefined, {\n    transform: booleanAttribute,\n  })\n\n  /**\n   * The name of the input field. Useful for form submission.\n   */\n  readonly name = input<string | undefined>()\n\n  /**\n   * Whether the input is read-only. When true, prevents user interaction while\n   * keeping the input focusable and visible.\n   */\n  readonly readOnly = input<boolean | undefined, Booleanish>(undefined, {\n    transform: booleanAttribute,\n  })\n\n  /**\n   * Controls whether the input is required in template-driven forms. When\n   * true, the input must have a value for form validation to pass.\n   */\n  readonly required = input<boolean | undefined, Booleanish>(undefined, {\n    transform: booleanAttribute,\n  })\n\n  /* the internal \"value\" state of the input */\n  protected readonly value = signal<T[]>([])\n  protected readonly onDestroy = useOnDestroy()\n  protected readonly injector = inject(Injector)\n  protected readonly formControlStatus = signal<FormControlStatus | undefined>(\n    undefined,\n  )\n  protected readonly formSubmitted = signal(false)\n\n  readonly formControlContext = initInputFormControl<T[]>()\n\n  /**\n   * If the component is bound to an Angular AbstractControl, its state wins.\n   * If not, fall back to the host attribute.\n   */\n  protected readonly isDisabled = linkedSignal(() => {\n    /**\n     * When the component is bound to any AbstractControl, status is guaranteed to\n     * be non-undefined.\n     */\n    const status = this.formControlStatus()\n    const disabled = this.disabled()\n    if (status !== undefined) {\n      return status === \"DISABLED\"\n    }\n\n    return !!disabled\n  })\n\n  readonly isInvalid = computed(() => {\n    const formEventData = this.formControlContext.formEventData()\n    this.formSubmitted()\n    const isInvalidDefined = defined(this.invalid())\n    const invalidProp = this.invalid() || false\n    if (!this.control) {\n      return invalidProp\n    }\n\n    let invalid, touched, dirty\n\n    if (this.formControlContext.isTemplateDrivenForm()) {\n      invalid = isInvalidDefined ? invalidProp : this.control.invalid\n      touched = this.control.touched\n      dirty = this.control.dirty\n    } else if (formEventData) {\n      invalid = formEventData.invalid\n      touched = formEventData.touched\n      dirty = formEventData.dirty\n    } else {\n      return invalidProp\n    }\n\n    switch (this.control.updateOn) {\n      case \"submit\":\n        return invalid\n      case \"blur\":\n        return invalid && touched\n      default:\n        // \"change\"\n        return dirty && invalid\n    }\n  })\n\n  readonly isRequired = linkedSignal(() => {\n    const control = this.control\n    const required = this.required()\n    if (!control || !this.formControlContext.isReactiveForm()) {\n      return required\n    }\n\n    if (typeof control.hasValidator === \"function\") {\n      return (\n        control.hasValidator(Validators.required) ||\n        control.hasValidator(Validators.requiredTrue)\n      )\n    }\n    return false\n  })\n\n  constructor() {\n    if (this.formControlContext.ngControl) {\n      this.formControlContext.ngControl.valueAccessor = this\n      this.value.set(this.formControlContext.ngControl.control?.value || [])\n    }\n\n    afterNextRender(() => {\n      if (\n        isDefined(this.required()) &&\n        this.formControlContext.isReactiveForm() &&\n        isDevMode()\n      ) {\n        console.warn(\n          \"The required attribute is not supported on reactive forms. Use Validators instead. https://angular.dev/guide/forms/form-validation#validating-input-in-reactive-forms\",\n        )\n      }\n    })\n\n    effect(() => {\n      const required = this.required()\n      const isRequired = this.isRequired()\n      if (!this.control) {\n        return\n      }\n      if (this.formControlContext.isTemplateDrivenForm()) {\n        if (required) {\n          this.control.addValidators([\n            Validators.required,\n            Validators.minLength(1),\n          ])\n        } else if (\n          this.control.hasValidator(Validators.required) &&\n          this.control.hasValidator(Validators.minLength(1))\n        ) {\n          this.control.removeValidators([\n            Validators.required,\n            Validators.minLength(1),\n          ])\n        }\n      } else if (isRequired) {\n        this.control.addValidators(Validators.minLength(1))\n      }\n    })\n  }\n\n  ngOnInit() {\n    // Ensure the form control receives the initial value\n    const defaultValue = this.defaultValue()\n    if (!this.control) {\n      if (defaultValue) {\n        this.value.set(defaultValue)\n      }\n      return\n    }\n\n    const subscription = this.control.statusChanges.subscribe((status) => {\n      this.formControlStatus.set(status)\n    })\n    this.onDestroy(() => {\n      subscription.unsubscribe()\n    })\n\n    const parent = this.getParentForm()\n\n    runInInjectionContext(this.injector, () => {\n      if (this.control) {\n        const formSignal = allEventsSignal<T[] | undefined>(this.control)\n        effect(() => {\n          this.formControlContext.formEventData.set(formSignal())\n        })\n      }\n\n      if (parent) {\n        let prevPristine = this.control?.pristine || false\n        parent.form.events.pipe(takeUntilDestroyed()).subscribe((event) => {\n          if (event instanceof PristineChangeEvent) {\n            if (event.pristine && !prevPristine) {\n              // if this event fires with pristine status and the control was\n              // previously not pristine, this means that the form was reset. There\n              // isn't another way to determine form resets programmatically,\n              // unfortunately.\n              this.formSubmitted.set(false)\n            }\n            prevPristine = event.pristine\n          } else if (event instanceof FormSubmittedEvent) {\n            this.formSubmitted.set(true)\n            this.control?.markAsDirty()\n          }\n        })\n        parent.ngSubmit.pipe(takeUntilDestroyed()).subscribe(() => {\n          if (this.formControlContext.isReactiveForm()) {\n            // already accounted for in the above event subscription.\n            return\n          }\n          this.formSubmitted.set(true)\n          this.control?.markAsDirty()\n        })\n      }\n    })\n  }\n\n  /** Convenience access to the underlying AbstractControl (can be null). */\n  get control(): AbstractControl | null {\n    return this.formControlContext.ngControl?.control ?? null\n  }\n\n  /**\n   * Used to subscribe to form submit events.\n   */\n  private getParentForm(): NgForm | FormGroupDirective | null {\n    if (!this.control) {\n      return null\n    }\n\n    // Try to find NgForm first\n    try {\n      const ngForm = this.injector.get(NgForm, null)\n      if (ngForm) {\n        return ngForm\n      }\n    } catch {}\n\n    // Fall back to FormGroupDirective\n    try {\n      const formGroupDirective = this.injector.get(FormGroupDirective, null)\n      if (formGroupDirective) {\n        return formGroupDirective\n      }\n    } catch {}\n\n    return null\n  }\n\n  /*\n   * Control value accessor methods\n   */\n  writeValue(value: any): void {\n    this.value.set(value ?? [])\n  }\n\n  // placeholder\n  protected onChange = (_value: any) => {}\n\n  registerOnChange(fn: (value: any) => void): void {\n    this.onChange = (_value) => {\n      fn(_value)\n      this.value.set(_value ?? [])\n    }\n  }\n\n  protected onTouched = () => {}\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn\n  }\n\n  /**\n   * NgModel never calls setDisabledState, but ReactiveForms does. Everything else\n   * (writeValue, registerOnChange, registerOnTouched) is identical between Reactive\n   * and Template forms.\n   */\n  setDisabledState(isDisabled: boolean): void {\n    this.isDisabled.set(isDisabled)\n  }\n}\n\n@Directive()\nexport abstract class AbstractListCollectionFormControlDirective<\n  T extends CollectionItem,\n> extends AbstractBaseListCollectionFormControlDirective<T> {\n  /**\n   * The item collection\n   *\n   * @inheritDoc\n   */\n  readonly collection = input.required<ListCollection<T>>()\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AAiCA,MAAM,aAAa,GAA2B;AAC5C,IAAA,KAAK,EAAE,MAAM,eAAe;IAC5B,GAAG,EAAE,CAAC,GAAG,KAAK,CAAA,KAAA,EAAQ,GAAG,CAAC,GAAG,CAAA,CAAE;IAC/B,SAAS,EAAE,CAAC,GAAG,KAAK,CAAA,YAAA,EAAe,GAAG,CAAC,SAAS,CAAA,CAAE;IAClD,GAAG,EAAE,CAAC,GAAG,KAAK,CAAA,KAAA,EAAQ,GAAG,CAAC,GAAG,CAAA,CAAE;IAC/B,SAAS,EAAE,CAAC,GAAG,KAAK,CAAA,YAAA,EAAe,GAAG,CAAC,cAAc,CAAA,CAAE;AACvD,IAAA,OAAO,EAAE,MAAM,gBAAgB;AAC/B,IAAA,QAAQ,EAAE,MAAM,wBAAwB;AACxC,IAAA,YAAY,EAAE,MAAM,UAAU;CAC/B;AAED;;;;;;;;;;;;;;;;AAgBG;MACU,mCAAmC,GAAG,IAAI,cAAc,CAEnE,0BAA0B;MAEf,0BAA0B,GAAG,IAAI,cAAc,CAE1D,kBAAkB;SAEJ,oBAAoB,GAAA;AAClC,IAAA,MAAM,SAAS,GAAqB,MAAM,CAAC,SAAS,EAAE;AACpD,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,IAAI,EAAE,IAAI;AACX,KAAA,CAAC;AAEF,IAAA,MAAM,WAAW,GAA2B;AAC1C,QAAA,GAAG,aAAa;AAChB,QAAA,IAAI,MAAM,CAAC,mCAAmC,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,EAAE,CAAC;KACzE;AAED,IAAA,MAAM,aAAa,GAAG,MAAM,CAAsC,IAAI,oFAAC;AAEvE,IAAA,SAAS,oBAAoB,GAAA;QAC3B,OAAO,SAAS,YAAY,OAAO;IACrC;AAEA,IAAA,SAAS,cAAc,GAAA;;AAErB,QAAA,OAAO,CAAC,CAAC,SAAS,IAAI,CAAC,oBAAoB,EAAE;IAC/C;IAEA,OAAO;AACL,QAAA,OAAO,EAAE,SAAS,EAAE,OAAO,IAAI,IAAI;AACnC,QAAA,SAAS,EAAE,QAAQ,CAAC,MAAK;;;AAGvB,YAAA,aAAa,EAAE;YACf,MAAM,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE;AAC/C,YAAA,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC9D,YAAA,IAAI,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE;AACrC,gBAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC;YAC1C;YACA,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;AACvD,QAAA,CAAC,CAAC;QACF,aAAa;QACb,cAAc;QACd,oBAAoB;QACpB,SAAS;KACV;AACH;;AC9GA;AACA;MAqCsB,iCAAiC,CAAA;AAGrD;;;;AAIG;AACM,IAAA,YAAY,GAAG,KAAK,CAAqB,SAAS,mFAAC;AAE5D;;;;AAIG;IACM,QAAQ,GAAG,KAAK,CAAkC,SAAS,gFAClE,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AAEF;;;AAGG;IACM,OAAO,GAAG,KAAK,CAAkC,SAAS,+EACjE,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AAEF;;AAEG;IACM,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAsB;AAE3C;;;AAGG;IACM,QAAQ,GAAG,KAAK,CAAkC,SAAS,gFAClE,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AAEF;;;AAGG;IACM,QAAQ,GAAG,KAAK,CAAkC,SAAS,gFAClE,SAAS,EAAE,gBAAgB,EAAA,CAC3B;;AAGiB,IAAA,KAAK,GAAG,MAAM,CAAS,EAAE,4EAAC;IAC1B,SAAS,GAAG,YAAY,EAAE;AAC1B,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAA,iBAAiB,GAAG,MAAM,CAC3C,SAAS,wFACV;AACkB,IAAA,aAAa,GAAG,MAAM,CAAC,KAAK,oFAAC;IAEvC,kBAAkB,GAAG,oBAAoB,EAAE;AAEpD;;;AAGG;AACgB,IAAA,UAAU,GAAG,YAAY,CAAC,MAAK;AAChD;;;AAGG;AACH,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACvC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,QAAA,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,OAAO,MAAM,KAAK,UAAU;QAC9B;QAEA,OAAO,CAAC,CAAC,QAAQ;AACnB,IAAA,CAAC,iFAAC;AAEO,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;QACjC,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE;QAC7D,IAAI,CAAC,aAAa,EAAE;QACpB,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,WAAW;QACpB;AAEA,QAAA,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK;AAE3B,QAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,EAAE;AAClD,YAAA,OAAO,GAAG,gBAAgB,GAAG,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;AAC/D,YAAA,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;AAC9B,YAAA,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;QAC5B;aAAO,IAAI,aAAa,EAAE;AACxB,YAAA,OAAO,GAAG,aAAa,CAAC,OAAO;AAC/B,YAAA,OAAO,GAAG,aAAa,CAAC,OAAO;AAC/B,YAAA,KAAK,GAAG,aAAa,CAAC,KAAK;QAC7B;aAAO;AACL,YAAA,OAAO,WAAW;QACpB;AAEA,QAAA,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC3B,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,OAAO;AAChB,YAAA,KAAK,MAAM;gBACT,OAAO,OAAO,IAAI,OAAO;AAC3B,YAAA;;gBAEE,OAAO,KAAK,IAAI,OAAO;;AAE7B,IAAA,CAAC,gFAAC;AAEO,IAAA,UAAU,GAAG,YAAY,CAAC,MAAK;AACtC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;AAC5B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,EAAE;AACzD,YAAA,OAAO,QAAQ;QACjB;AAEA,QAAA,IAAI,OAAO,OAAO,CAAC,YAAY,KAAK,UAAU,EAAE;YAC9C,QACE,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACzC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC;QAEjD;AACA,QAAA,OAAO,KAAK;AACd,IAAA,CAAC,iFAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE;YACrC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;AACtD,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;QACxE;QAEA,eAAe,CAAC,MAAK;AACnB,YAAA,IACE,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC1B,gBAAA,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE;gBACxC,SAAS,EAAE,EACX;AACA,gBAAA,OAAO,CAAC,IAAI,CACV,uKAAuK,CACxK;YACH;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;YAChC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,EAAE;gBAClE,IAAI,QAAQ,EAAE;oBACZ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACjD;qBAAO,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;oBACzD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACpD;YACF;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;;AAEN,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AACxC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,YAAY,EAAE;AACjC,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;QAC9B;AAAO,aAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACnE,gBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;AACpC,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,CAAC,MAAK;gBAClB,YAAY,CAAC,WAAW,EAAE;AAC5B,YAAA,CAAC,CAAC;AAEF,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE;AAEnC,YAAA,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAK;AACxC,gBAAA,IAAI,IAAI,CAAC,OAAO,EAAE;oBAChB,MAAM,UAAU,GAAG,eAAe,CAAqB,IAAI,CAAC,OAAO,CAAC;oBACpE,MAAM,CAAC,MAAK;wBACV,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AACzD,oBAAA,CAAC,CAAC;gBACJ;gBAEA,IAAI,MAAM,EAAE;oBACV,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,KAAK;AAClD,oBAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAChE,wBAAA,IAAI,KAAK,YAAY,mBAAmB,EAAE;AACxC,4BAAA,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,YAAY,EAAE;;;;;AAKnC,gCAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;4BAC/B;AACA,4BAAA,YAAY,GAAG,KAAK,CAAC,QAAQ;wBAC/B;AAAO,6BAAA,IAAI,KAAK,YAAY,kBAAkB,EAAE;AAC9C,4BAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,4BAAA,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;wBAC7B;AACF,oBAAA,CAAC,CAAC;AACF,oBAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AACxD,wBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,EAAE;;4BAE5C;wBACF;AACA,wBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,wBAAA,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;AAC7B,oBAAA,CAAC,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;QACJ;IACF;;AAGA,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,IAAI,IAAI;IAC3D;AAEA;;AAEG;IACK,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,IAAI;QACb;;AAGA,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;YAC9C,IAAI,MAAM,EAAE;AACV,gBAAA,OAAO,MAAM;YACf;QACF;QAAE,MAAM,EAAC;;AAGT,QAAA,IAAI;AACF,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC;YACtE,IAAI,kBAAkB,EAAE;AACtB,gBAAA,OAAO,kBAAkB;YAC3B;QACF;QAAE,MAAM,EAAC;AAET,QAAA,OAAO,IAAI;IACb;AAEA;;AAEG;AACH,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IACvB;;AAGU,IAAA,QAAQ,GAAG,CAAC,MAAW,KAAI,EAAE,CAAC;AAExC,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,MAAM,KAAI;YACzB,EAAE,CAAC,MAAM,CAAC;AACV,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;AACxB,QAAA,CAAC;IACH;AAEU,IAAA,SAAS,GAAG,MAAK,EAAE,CAAC;AAC9B,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;IACjC;wGA/QoB,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBADtD;;;ACrCD;AACA;MAyCsB,8CAA8C,CAAA;AAKlE;;;;;;AAMG;AACM,IAAA,YAAY,GAAG,KAAK,CAAkB,SAAS,mFAAC;AAEzD;;;;AAIG;IACM,QAAQ,GAAG,KAAK,CAAkC,SAAS,gFAClE,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AAEF;;;AAGG;IACM,OAAO,GAAG,KAAK,CAAkC,SAAS,+EACjE,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AAEF;;AAEG;IACM,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAsB;AAE3C;;;AAGG;IACM,QAAQ,GAAG,KAAK,CAAkC,SAAS,gFAClE,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AAEF;;;AAGG;IACM,QAAQ,GAAG,KAAK,CAAkC,SAAS,gFAClE,SAAS,EAAE,gBAAgB,EAAA,CAC3B;;AAGiB,IAAA,KAAK,GAAG,MAAM,CAAM,EAAE,4EAAC;IACvB,SAAS,GAAG,YAAY,EAAE;AAC1B,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAA,iBAAiB,GAAG,MAAM,CAC3C,SAAS,wFACV;AACkB,IAAA,aAAa,GAAG,MAAM,CAAC,KAAK,oFAAC;IAEvC,kBAAkB,GAAG,oBAAoB,EAAO;AAEzD;;;AAGG;AACgB,IAAA,UAAU,GAAG,YAAY,CAAC,MAAK;AAChD;;;AAGG;AACH,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACvC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,QAAA,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,OAAO,MAAM,KAAK,UAAU;QAC9B;QAEA,OAAO,CAAC,CAAC,QAAQ;AACnB,IAAA,CAAC,iFAAC;AAEO,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;QACjC,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE;QAC7D,IAAI,CAAC,aAAa,EAAE;QACpB,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,WAAW;QACpB;AAEA,QAAA,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK;AAE3B,QAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,EAAE;AAClD,YAAA,OAAO,GAAG,gBAAgB,GAAG,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;AAC/D,YAAA,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;AAC9B,YAAA,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;QAC5B;aAAO,IAAI,aAAa,EAAE;AACxB,YAAA,OAAO,GAAG,aAAa,CAAC,OAAO;AAC/B,YAAA,OAAO,GAAG,aAAa,CAAC,OAAO;AAC/B,YAAA,KAAK,GAAG,aAAa,CAAC,KAAK;QAC7B;aAAO;AACL,YAAA,OAAO,WAAW;QACpB;AAEA,QAAA,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC3B,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,OAAO;AAChB,YAAA,KAAK,MAAM;gBACT,OAAO,OAAO,IAAI,OAAO;AAC3B,YAAA;;gBAEE,OAAO,KAAK,IAAI,OAAO;;AAE7B,IAAA,CAAC,gFAAC;AAEO,IAAA,UAAU,GAAG,YAAY,CAAC,MAAK;AACtC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;AAC5B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,EAAE;AACzD,YAAA,OAAO,QAAQ;QACjB;AAEA,QAAA,IAAI,OAAO,OAAO,CAAC,YAAY,KAAK,UAAU,EAAE;YAC9C,QACE,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACzC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC;QAEjD;AACA,QAAA,OAAO,KAAK;AACd,IAAA,CAAC,iFAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE;YACrC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;AACtD,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;QACxE;QAEA,eAAe,CAAC,MAAK;AACnB,YAAA,IACE,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC1B,gBAAA,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE;gBACxC,SAAS,EAAE,EACX;AACA,gBAAA,OAAO,CAAC,IAAI,CACV,uKAAuK,CACxK;YACH;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACjB;YACF;AACA,YAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,EAAE;gBAClD,IAAI,QAAQ,EAAE;AACZ,oBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AACzB,wBAAA,UAAU,CAAC,QAAQ;AACnB,wBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACxB,qBAAA,CAAC;gBACJ;qBAAO,IACL,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC9C,oBAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAClD;AACA,oBAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAC5B,wBAAA,UAAU,CAAC,QAAQ;AACnB,wBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACxB,qBAAA,CAAC;gBACJ;YACF;iBAAO,IAAI,UAAU,EAAE;AACrB,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACrD;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;;AAEN,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AACxC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,YAAY,EAAE;AAChB,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;YAC9B;YACA;QACF;AAEA,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACnE,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;AACpC,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,CAAC,MAAK;YAClB,YAAY,CAAC,WAAW,EAAE;AAC5B,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE;AAEnC,QAAA,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAK;AACxC,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,MAAM,UAAU,GAAG,eAAe,CAAkB,IAAI,CAAC,OAAO,CAAC;gBACjE,MAAM,CAAC,MAAK;oBACV,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AACzD,gBAAA,CAAC,CAAC;YACJ;YAEA,IAAI,MAAM,EAAE;gBACV,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,KAAK;AAClD,gBAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAChE,oBAAA,IAAI,KAAK,YAAY,mBAAmB,EAAE;AACxC,wBAAA,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,YAAY,EAAE;;;;;AAKnC,4BAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;wBAC/B;AACA,wBAAA,YAAY,GAAG,KAAK,CAAC,QAAQ;oBAC/B;AAAO,yBAAA,IAAI,KAAK,YAAY,kBAAkB,EAAE;AAC9C,wBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,wBAAA,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;oBAC7B;AACF,gBAAA,CAAC,CAAC;AACF,gBAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AACxD,oBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,EAAE;;wBAE5C;oBACF;AACA,oBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,oBAAA,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;AAC7B,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;;AAGA,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,IAAI,IAAI;IAC3D;AAEA;;AAEG;IACK,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,IAAI;QACb;;AAGA,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;YAC9C,IAAI,MAAM,EAAE;AACV,gBAAA,OAAO,MAAM;YACf;QACF;QAAE,MAAM,EAAC;;AAGT,QAAA,IAAI;AACF,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC;YACtE,IAAI,kBAAkB,EAAE;AACtB,gBAAA,OAAO,kBAAkB;YAC3B;QACF;QAAE,MAAM,EAAC;AAET,QAAA,OAAO,IAAI;IACb;AAEA;;AAEG;AACH,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;IAC7B;;AAGU,IAAA,QAAQ,GAAG,CAAC,MAAW,KAAI,EAAE,CAAC;AAExC,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,MAAM,KAAI;YACzB,EAAE,CAAC,MAAM,CAAC;YACV,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;AAC9B,QAAA,CAAC;IACH;AAEU,IAAA,SAAS,GAAG,MAAK,EAAE,CAAC;AAC9B,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;IACjC;wGArSoB,8CAA8C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA9C,8CAA8C,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAA9C,8CAA8C,EAAA,UAAA,EAAA,CAAA;kBADnE;;AA0SK,MAAgB,0CAEpB,SAAQ,8CAAiD,CAAA;AACzD;;;;AAIG;AACM,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,gFAAqB;wGARrC,0CAA0C,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA1C,0CAA0C,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAA1C,0CAA0C,EAAA,UAAA,EAAA,CAAA;kBAD/D;;;AClVD;;AAEG;;;;"}