{"version":3,"file":"grcm-components.mjs","sources":["../../../projects/grcm-components/src/lib/ui/components/button/grcm-button.component.ts","../../../projects/grcm-components/src/lib/ui/components/button/grcm-button.component.html","../../../projects/grcm-components/src/lib/ui/components/controls/form/interfaces/form-change.interface.ts","../../../projects/grcm-components/src/lib/ui/components/controls/form/utils/createGrcmControl.ts","../../../projects/grcm-components/src/lib/ui/components/controls/control/grcm-control.component.ts","../../../projects/grcm-components/src/lib/ui/components/controls/control/grcm-control.component.html","../../../projects/grcm-components/src/lib/ui/components/controls/form/grcm-form.component.ts","../../../projects/grcm-components/src/lib/ui/components/controls/form/grcm-form.component.html","../../../projects/grcm-components/src/lib/ui/components/controls/form-field/grcm-form-field.component.ts","../../../projects/grcm-components/src/lib/ui/components/controls/form-field/grcm-form-field.component.html","../../../projects/grcm-components/src/lib/ui/components/controls/plain-form-field/grcm-plain-form-field.component.ts","../../../projects/grcm-components/src/lib/ui/components/controls/plain-form-field/grcm-plain-form-field.component.html","../../../projects/grcm-components/src/lib/ui/components/controls/input/grcm-input.component.ts","../../../projects/grcm-components/src/lib/ui/components/controls/input/grcm-input.component.html","../../../projects/grcm-components/src/lib/ui/components/examples/forms/login/example-login.component.ts","../../../projects/grcm-components/src/lib/ui/components/examples/forms/login/example-login.component.html","../../../projects/grcm-components/src/public-api.ts","../../../projects/grcm-components/src/grcm-components.ts"],"sourcesContent":["import { RouterLink } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component, computed, input, output } from '@angular/core';\r\nimport { GrcmButtonVariants } from './interfaces/button-variants.type';\r\nimport { GrcmButtonType } from './interfaces/button-types.type';\r\nimport { GrcmButtonsSizes } from './interfaces/button-sizes.type';\r\n\r\n@Component({\r\n  selector: 'lib-grcm-button',\r\n  imports: [CommonModule, RouterLink],\r\n  templateUrl: './grcm-button.component.html',\r\n  styleUrl: './grcm-button.component.css'\r\n})\r\nexport class GrcmButtonComponent {\r\n\r\n  public label = input<string>('');\r\n\r\n  public title = input<string>('');\r\n\r\n  public disabled = input<boolean>(false);\r\n\r\n  public link = input<string | null | undefined>(null);\r\n\r\n  public type = input<GrcmButtonType>('button');\r\n\r\n  public variant = input<GrcmButtonVariants>('primary');\r\n\r\n  public outline = input<boolean>(false);\r\n\r\n  public size = input<GrcmButtonsSizes>('default');\r\n\r\n  public additionalClasses = input<string>('');\r\n\r\n  public icon = input<string>('');\r\n\r\n  public submitter = input<string|null>(null);\r\n\r\n  public fontSizeIcon = input<1 | 2 | 3 | 4 | 5 | 6>(6);\r\n\r\n  public clicked = output();\r\n\r\n  protected readonly classes = computed(() => {\r\n    return `w-100 btn btn-${(this.outline() ? 'outline-' : '') + this.variant() + (this.size() ? ` btn-${this.size()} ` : ' ') + this.additionalClasses()}`\r\n  })\r\n\r\n  click() {\r\n    this.clicked.emit();\r\n  }\r\n\r\n}\r\n","<button [type]=\"type()\" [attr.disabled]=\"disabled() ? 'disabled' : null\" (click)=\"click()\" [title]=\"title()\" [ngClass]=\"classes()\" [routerLink]=\"link()\" [attr.data-submitter]=\"submitter() ? submitter() : null\">\r\n    @if (icon()) {\r\n        <i [ngClass]=\"'fs-' + fontSizeIcon() + ' bi bi-' + icon()\"></i>\r\n    }\r\n    {{ label() }}\r\n</button>\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nexport interface GrcmDataFormChange {\r\n  field: string,\r\n  newValue: any\r\n}\r\n","import { GrcmFormComponentType } from \"../interfaces/form-component-type.interface\";\r\n\r\nexport function createGrcmControl<T, T2>(data: GrcmFormComponentType<T, T2>): GrcmFormComponentType<T, T2> {\r\n  return data;\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any  */\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { AfterContentInit, Component, ComponentRef, computed, DestroyRef, forwardRef, inject, Injector, input, isSignal, OnDestroy, OutputEmitterRef, OutputRefSubscription, viewChild, ViewContainerRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nimport { GrcmFormComponent } from '../form/grcm-form.component';\r\nimport { Args } from '../form/interfaces/args.interface';\r\n\r\n@Component({\r\n  selector: 'lib-grcm-control',\r\n  templateUrl: './grcm-control.component.html',\r\n  styleUrl: './grcm-control.component.css',\r\n  imports: [CommonModule, ReactiveFormsModule],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => GrcmControlComponent),\r\n      multi: true\r\n    }\r\n  ],\r\n  host: {\r\n    '[attr.data-control-id]': 'id()'\r\n  }\r\n})\r\nexport class GrcmControlComponent implements AfterContentInit, ControlValueAccessor, OnDestroy {\r\n\r\n  private readonly _injector = inject(Injector);\r\n\r\n  private readonly _destroyRef = inject(DestroyRef);\r\n\r\n  private readonly _container = viewChild('container', { read: ViewContainerRef });\r\n\r\n  private readonly _grcmFormComponent = inject(GrcmFormComponent);\r\n\r\n  public formControlName = input.required<string>();\r\n\r\n  private _componentRef!: ComponentRef<any>;\r\n\r\n  private _componentRefFormField!: ComponentRef<any>;\r\n\r\n  public readonly id = computed(() => this._grcmFormComponent.identifier() + '_' + this.formControlName())\r\n\r\n  private readonly _form = computed(() => this._grcmFormComponent.form())\r\n\r\n  private readonly _data = computed(() => this._grcmFormComponent.data().controls[this.formControlName()])\r\n\r\n  public readonly control = computed(() => this._form()?.controls[this.formControlName()]);\r\n\r\n  private _hasPendingValue = false;\r\n  private _hasPendingDisabledValue = false;\r\n\r\n  private _pendingValue: any = null;\r\n  private _onChange: any = null;\r\n  private _onTouched: any = null;\r\n  private _pendingDisabled: boolean | null = null;\r\n\r\n  ngAfterContentInit(): void {\r\n    this.initialize();\r\n  }\r\n\r\n  private initialize() {\r\n    this.createComponents();\r\n    this.setInputsOutputs();\r\n    this.setClasses();\r\n    this.flushPendingControlValueAccessors();\r\n  }\r\n\r\n  private createComponents() {\r\n    const { component, formFieldComponent } = this._data();\r\n    const viewContainer = this._container();\r\n    if (!formFieldComponent || !viewContainer) return;\r\n    viewContainer.clear();\r\n    this._componentRefFormField = viewContainer.createComponent(formFieldComponent);\r\n    this._componentRefFormField.setInput('control', this.control())\r\n    this._componentRefFormField.setInput('id', this.id())\r\n    const formFieldInstance = this._componentRefFormField.instance;\r\n    formFieldInstance.controlView().clear();\r\n    this._componentRef = formFieldInstance.controlView().createComponent(component);\r\n  }\r\n\r\n  private setInputsOutputs() {\r\n    const args = this._data().args;\r\n    if (!args) return;\r\n    const { control = {}, formField = {}} = args;\r\n    const componentRef = this._componentRef;\r\n    const componentRefFormField = this._componentRefFormField;\r\n    const setInputsOutputs = (args: Partial<Args<any>>, componentRef: ComponentRef<any>) => {\r\n      const keys = Object.keys(args);\r\n      keys.forEach((argProperty: string) => {\r\n        const argValue = args[argProperty];\r\n        const componentProperty = componentRef.instance[argProperty];\r\n        switch (typeof componentProperty) {\r\n          case 'function':\r\n            if (isSignal(argValue)) {\r\n              const obs = toObservable(argValue, {\r\n                injector: this._injector\r\n              }).subscribe(() => componentRef.setInput(argProperty, argValue()))\r\n              this._destroyRef.onDestroy(() => obs.unsubscribe());\r\n            } else {\r\n              componentRef.setInput(argProperty, argValue)\r\n            }\r\n            break;\r\n          case 'object':\r\n            if (!(componentProperty instanceof OutputEmitterRef)) return;\r\n            const subs: OutputRefSubscription = componentProperty.subscribe(argValue)\r\n            this._destroyRef.onDestroy(() => subs.unsubscribe())\r\n        }\r\n      });\r\n    }\r\n    setInputsOutputs(control, componentRef);\r\n    setInputsOutputs(formField, componentRefFormField);\r\n  }\r\n\r\n  private setClasses() {\r\n    const classes = this._data().classes;\r\n    if (!classes) return;\r\n    const { control, formField } = classes;\r\n    if (control) this._componentRef.location.nativeElement.classList = control;\r\n    if (formField) this._componentRefFormField.location.nativeElement.classList = formField;\r\n  }\r\n\r\n  private flushPendingControlValueAccessors() {\r\n    const instance = this._componentRef?.instance;\r\n\r\n    if (this._hasPendingValue) {\r\n      instance.writeValue(this._pendingValue);\r\n      this._hasPendingValue = false;\r\n    }\r\n\r\n    if (this._onChange) {\r\n      instance.registerOnChange(this._onChange);\r\n      this._onChange = null;\r\n    }\r\n\r\n    if (this._onTouched) {\r\n      instance.registerOnTouched(this._onTouched);\r\n      this._onTouched = null;\r\n    }\r\n\r\n    if (this._hasPendingDisabledValue) {\r\n      instance.setDisabledState?.(this._pendingDisabled);\r\n      this._hasPendingDisabledValue = false;\r\n    }\r\n  }\r\n\r\n  writeValue(obj: unknown): void {\r\n    const instance = this._componentRef?.instance;\r\n\r\n    if (instance) {\r\n      instance.writeValue(obj);\r\n      return;\r\n    }\r\n    this._hasPendingValue = true;\r\n    this._pendingValue = obj;\r\n  }\r\n\r\n  registerOnChange(fn: Function): void {\r\n    const instance = this._componentRef?.instance;\r\n\r\n    if (instance) {\r\n      instance.registerOnChange(fn);\r\n      return;\r\n    }\r\n    this._onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: Function): void {\r\n    const instance = this._componentRef?.instance;\r\n\r\n    if (instance) {\r\n      instance.registerOnTouched(fn);\r\n      return;\r\n    }\r\n    this._onTouched = fn;\r\n  }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    const instance = this._componentRef?.instance;\r\n\r\n    if (instance) {\r\n      instance?.setDisabledState?.(isDisabled);\r\n      return;\r\n    }\r\n    this._hasPendingDisabledValue = true;\r\n    this._pendingDisabled = isDisabled;\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._componentRef?.destroy();\r\n    this._componentRefFormField?.destroy();\r\n    this._container()?.clear();\r\n  }\r\n\r\n}\r\n","<ng-container #container></ng-container>\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport { AfterViewInit, Component, computed, DestroyRef, inject, input, OnInit, output, signal, TemplateRef, viewChildren, ViewContainerRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { distinctUntilChanged } from 'rxjs';\r\nimport { FormBuilder, FormGroup, ReactiveFormsModule, ValidationErrors } from '@angular/forms';\r\nimport { GrcmDataForm } from './interfaces/data-form.interface';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { GrcmControlComponent } from '../control/grcm-control.component';\r\nimport { ResponseGrcmForm } from './interfaces/response-form.interface';\r\nimport { GrcmDataFormChange } from './interfaces/form-change.interface';\r\nimport { GenericObject } from './interfaces/generic-object.interface';\r\nimport { GrcmFormComponentType } from './interfaces/form-component-type.interface';\r\n\r\n\r\n@Component({\r\n  selector: 'lib-grcm-form',\r\n  imports: [CommonModule, ReactiveFormsModule, GrcmControlComponent],\r\n  templateUrl: './grcm-form.component.html',\r\n  styleUrl: './grcm-form.component.css'\r\n})\r\nexport class GrcmFormComponent implements OnInit, AfterViewInit {\r\n\r\n  public grcmControls = viewChildren(GrcmControlComponent, { read: ViewContainerRef });\r\n\r\n  private readonly _destroyRef = inject(DestroyRef);\r\n\r\n  private readonly _formBuilder = inject(FormBuilder);\r\n\r\n  public data = input.required<GrcmDataForm>();\r\n\r\n  public additionalClasses = computed(() =>\r\n    this.data().form.classes || \"\"\r\n  );\r\n\r\n  public buildForm = output<FormGroup | null>();\r\n\r\n  public formSubmit = output<ResponseGrcmForm>();\r\n\r\n  public formChange = output<GrcmDataFormChange>();\r\n\r\n  private _form = signal<FormGroup | null>(null);\r\n\r\n  public readonly form = this._form.asReadonly();\r\n\r\n  protected formKeys: string[] = []\r\n\r\n  public readonly templates = input<GenericObject<TemplateRef<any>>>({});\r\n\r\n  public readonly identifier = computed(() => this.data().form.id);\r\n\r\n  public readonly formControlNames = computed(() => Object.keys(this._form()?.controls || {}))\r\n\r\n  ngOnInit(): void {\r\n    this.initialize();\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.buildForm.emit(this.form());\r\n  }\r\n\r\n  private initialize() {\r\n    this.initForm();\r\n    this.initSubscriptionsForControlValueChanges();\r\n  }\r\n\r\n  private initForm() {\r\n    const data = this.data();\r\n    this._form.set(this._formBuilder.record({}, {\r\n      validators: data.form.validators,\r\n      asyncValidators: data.form.asyncValidators,\r\n      updateOn: data.form.updateOn || 'change'\r\n    }));\r\n    Object.keys(data.controls).forEach((name) => {\r\n      const dataControl = data.controls[name];\r\n      this.addControl(name, dataControl);\r\n    });\r\n  }\r\n\r\n  addControl(name: string, control: GrcmFormComponentType<any, any>) {\r\n    this._form()?.addControl(name, this._formBuilder.control(control.value, [...control.validators || []], [...control.asyncValidators || []]));\r\n  }\r\n\r\n\r\n  private initSubscriptionsForControlValueChanges() {\r\n    const form = this.form();\r\n    if (!form) return;\r\n    this.formControlNames().forEach((key: string) => {\r\n      if (!this.data().controls[key].valueChangesSubscribe) return;\r\n      form.controls[key].valueChanges.pipe(\r\n        distinctUntilChanged(),\r\n        takeUntilDestroyed(this._destroyRef)\r\n      ).subscribe((value: any) => {\r\n        this.formChange.emit({ field: key, newValue: value })\r\n      })\r\n    });\r\n  }\r\n\r\n  getErrors(errors: ValidationErrors | null) {\r\n    if (!errors) return [];\r\n    return Object.keys(errors);\r\n  }\r\n\r\n  public onSubmit(event: SubmitEvent | null = null) {\r\n    const submitter = event?.submitter?.dataset['submitter'] || null;\r\n    const form = this.form();\r\n    this.markAsTouched();\r\n    if (!form || form.invalid) return;\r\n    if (form.valid) this.formSubmit.emit({ form, submitter });\r\n  }\r\n\r\n  private markAsTouched() {\r\n    const form = this.form();\r\n    form?.markAsTouched();\r\n    form?.updateValueAndValidity();\r\n  }\r\n\r\n  protected getDataForTemplateContext(formControlName: string | null = null) {\r\n    const form = this.form();\r\n    if (!form) return {};\r\n    const data: GenericObject = {\r\n      form\r\n    };\r\n    if (formControlName) {\r\n      data['control'] = form.controls[formControlName];\r\n    }\r\n    return data;\r\n  }\r\n\r\n}\r\n","\r\n\r\n<ng-template #renderTemplate let-templateKey let-controlName>\r\n  @let tmpl = templates()[templateKey];\r\n  @if (tmpl) {\r\n    <ng-container *ngTemplateOutlet=\"tmpl; context: getDataForTemplateContext(controlName)\"></ng-container>\r\n  }\r\n</ng-template>\r\n\r\n<!-- <ng-container *ngTemplateOutlet=\"renderTemplate; context: {\r\n  templateKey: 'before_' + controlName,\r\n  controlName: controlName\r\n}\"></ng-container> -->\r\n\r\n@let formInstance = form();\r\n@if (formInstance) {\r\n  <form [formGroup]=\"formInstance\" (ngSubmit)=\"onSubmit($event)\" [ngClass]=\"additionalClasses()\" novalidate>\r\n    @let beforeFormTemplate = templates()[\"beforeFormTemplate\"];\r\n    @if (beforeFormTemplate) {\r\n      <ng-container *ngTemplateOutlet=\"beforeFormTemplate; context: getDataForTemplateContext()\"></ng-container>\r\n    }\r\n    @for (controlName of formControlNames(); track controlName) {\r\n      @let beforeControlTemplate = templates()[\"before_\" + controlName];\r\n      @if (beforeControlTemplate) {\r\n        <ng-container *ngTemplateOutlet=\"beforeControlTemplate; context: getDataForTemplateContext(controlName)\"></ng-container>\r\n      }\r\n      <lib-grcm-control [formControlName]=\"controlName\" style=\"width: 100%;\"></lib-grcm-control>\r\n      @let afterControlTemplate = templates()[\"after_\" + controlName];\r\n      @if (afterControlTemplate) {\r\n        <ng-container *ngTemplateOutlet=\"afterControlTemplate; context: getDataForTemplateContext(controlName)\"></ng-container>\r\n      }\r\n    }\r\n    @let afterFormTemplate = templates()[\"afterFormTemplate\"];\r\n    @if (afterFormTemplate) {\r\n      <ng-container *ngTemplateOutlet=\"afterFormTemplate; context: getDataForTemplateContext()\"></ng-container>\r\n    }\r\n  </form>\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport { AbstractControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ChangeDetectionStrategy, Component, DestroyRef, OnDestroy, OnInit, ViewContainerRef, computed, inject, input, signal, viewChild } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { GrcmFormField } from '../form/interfaces/form-field.interface';\r\nimport { GrcmFormComponent } from '../form/grcm-form.component';\r\n\r\n@Component({\r\n  selector: 'lib-grcm-form-field',\r\n  imports: [CommonModule],\r\n  templateUrl: './grcm-form-field.component.html',\r\n  styleUrl: './grcm-form-field.component.css',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  host: {\r\n    class: 'form-group'\r\n  }\r\n})\r\nexport class GrcmFormFieldComponent implements OnInit, GrcmFormField, OnDestroy {\r\n\r\n  private readonly _destroyRef = inject(DestroyRef);\r\n\r\n  public controlView = viewChild.required('controlView', { read: ViewContainerRef })\r\n\r\n  public control = input.required<AbstractControl<any>>();\r\n\r\n  public id = input.required<string>();\r\n\r\n  private readonly _formComponent = inject(GrcmFormComponent);\r\n\r\n  public label = input<string>(\"\");\r\n\r\n  private _isRequired = signal(false);\r\n  protected readonly isRequired = this._isRequired.asReadonly();\r\n\r\n  private _useCompleteLabel = signal(false);\r\n  protected readonly useCompleteLabel = this._useCompleteLabel.asReadonly();\r\n\r\n  public readonly requiredTag = \"*\";\r\n  public readonly optionalTag = \"(Opcional)\";\r\n\r\n  protected readonly form = computed(() => this._formComponent.form())\r\n\r\n  public readonly completeLabel = computed(() => {\r\n    return this.label() + (this.useCompleteLabel() ? (this.isRequired() ? this.requiredTag : this.optionalTag) : \"\");\r\n  })\r\n\r\n  ngOnInit(): void {\r\n    this.initialize();\r\n  }\r\n\r\n  private initialize() {\r\n    this.setIsRequired();\r\n    this.initControlStatusChanges();\r\n    this.initFormStatusChanges();\r\n  }\r\n\r\n  private initControlStatusChanges() {\r\n    this.control().statusChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\r\n      this.setIsRequired();\r\n    })\r\n  }\r\n\r\n  private initFormStatusChanges() {\r\n    const form = this._formComponent.form();\r\n    if (!form) return;\r\n    this.setUseCompleteLabel(form);\r\n    form.statusChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\r\n      this.setUseCompleteLabel(form);\r\n    })\r\n  }\r\n\r\n  private setUseCompleteLabel(form: FormGroup<any>) {\r\n    let requiredControls = 0;\r\n    const keys = Object.keys(form.controls);\r\n    keys.forEach(key => {\r\n      if (this.controlIsRequired(form.controls[key])) requiredControls++;\r\n    });\r\n    const keysLen = keys.length / 2;\r\n    if (this.isRequired() && requiredControls <= keysLen) {\r\n      this._useCompleteLabel.set(true)\r\n    } else {\r\n      this._useCompleteLabel.set(!this.isRequired() && requiredControls > keysLen)\r\n    }\r\n  }\r\n\r\n  setIsRequired() {\r\n    this._isRequired.set(this.controlIsRequired(this.control()));\r\n  }\r\n\r\n  controlIsRequired(control: AbstractControl) {\r\n    return control.hasValidator(Validators.required);\r\n  }\r\n\r\n  getError(errors: any) {\r\n    const keys = Object.keys(errors);\r\n    if (!keys.length) return '';\r\n    const error = keys[0];\r\n    const data = errors[keys[0]];\r\n    switch (error) {\r\n      case 'required':\r\n        return 'Este campo es requerido.';\r\n      case 'minlength':\r\n        return `Tiene que tener como mínimo ${data.requiredLength} caracteres.`;\r\n      case 'maxlength':\r\n        return `Tiene que tener como máximo ${data.requiredLength} caracteres.`;\r\n      case 'pattern':\r\n        return 'La contraseña debe contener al menos una letra mayúscula, una minúscula y un símbolo especial.';\r\n      default:\r\n        return 'Revisa el valor ingresado.'\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.controlView().clear();\r\n  }\r\n\r\n}\r\n","@let errors = control().errors;\r\n@let touched = control().touched;\r\n<label [for]=\"id()\" class=\"form-label\">{{ completeLabel() }}</label>\r\n<div class=\"input-group has-validation form-field-invalid d-block\">\r\n    <ng-container #controlView></ng-container>\r\n    <div class=\"invalid-feedback d-block\">\r\n        @if (touched && errors) {\r\n          <p>{{ getError(errors) }}<p>\r\n        }\r\n    </div>\r\n     <!-- @else {\r\n    <div class=\"valid-feedback d-block\">\r\n        Looks good!\r\n    </div>\r\n    } -->\r\n</div>\r\n","import { Component, input, OnDestroy, viewChild, ViewContainerRef } from '@angular/core';\r\nimport { AbstractControl } from '@angular/forms';\r\nimport { GrcmFormField } from '../form/interfaces/form-field.interface';\r\n\r\n@Component({\r\n  selector: 'lib-grcm-plain-form-field',\r\n  imports: [],\r\n  templateUrl: './grcm-plain-form-field.component.html',\r\n  styleUrl: './grcm-plain-form-field.component.css'\r\n})\r\nexport class GrcmPlainFormFieldComponent implements GrcmFormField, OnDestroy {\r\n\r\n  public controlView = viewChild.required('controlView', { read: ViewContainerRef })\r\n\r\n  public control = input.required<AbstractControl<any>>();\r\n\r\n  public id = input.required<string>();\r\n\r\n  ngOnDestroy(): void {\r\n    this.controlView().clear();\r\n  }\r\n\r\n}\r\n","<ng-container #controlView></ng-container>\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport { AbstractControl, ControlValueAccessor, FormsModule, NgControlStatus, NgModel, ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component, computed, inject, input, OnInit, output, signal, DestroyRef, viewChild, ElementRef } from '@angular/core';\r\nimport { Subject, debounceTime } from 'rxjs';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { GrcmFormComponent } from '../form/grcm-form.component';\r\nimport { GrcmControlComponent } from '../control/grcm-control.component';\r\n\r\n@Component({\r\n  selector: 'lib-grcm-input',\r\n  templateUrl: './grcm-input.component.html',\r\n  styles: ``,\r\n  imports: [CommonModule, ReactiveFormsModule, FormsModule]\r\n})\r\nexport class GrcmInputComponent implements OnInit, ControlValueAccessor {\r\n\r\n  private readonly _grcmFormComponent = inject(GrcmFormComponent);\r\n\r\n  protected readonly controlComp = inject(GrcmControlComponent);\r\n\r\n  private readonly _destroyRef = inject(DestroyRef);\r\n\r\n  public type = input<'text' | 'password'>('text');\r\n\r\n  public placeholder = input<string>('');\r\n\r\n  public debounceTimer = input<number>(300);\r\n\r\n  public icon = input<string>();\r\n\r\n  public autocomplete = input<boolean>(true);\r\n\r\n  public submitFormOnDebounce = input<boolean>(false);\r\n\r\n  public changeValue = output<string>();\r\n\r\n  public debounce = output<string>();\r\n\r\n  public additionalClasses = input<string|string[]>(\"\");\r\n\r\n  public control = computed<AbstractControl<any>|undefined>(() => this.controlComp.control() )\r\n\r\n  public id = computed<string>(() => this.controlComp.id())\r\n\r\n  private _value = signal<string>(\"\");\r\n  protected readonly value = this._value.asReadonly();\r\n\r\n  private _disabled = signal<boolean>(false);\r\n  protected readonly disabled = this._disabled.asReadonly();\r\n\r\n  private _debouncer: Subject<string> = new Subject<string>();\r\n\r\n  private _inputRef = viewChild<ElementRef<HTMLInputElement>>(\"input\")\r\n\r\n  ngOnInit(): void {\r\n    this.initialize();\r\n  }\r\n\r\n  private initialize() {\r\n    this._debouncer\r\n    .pipe(\r\n      takeUntilDestroyed(this._destroyRef),\r\n      debounceTime(this.debounceTimer()),\r\n    )\r\n    .subscribe( value => {\r\n      this.debounce.emit(value);\r\n      if (this.submitFormOnDebounce())\r\n      this._grcmFormComponent.onSubmit();\r\n    });\r\n  }\r\n\r\n  change( value: string ) {\r\n    this._onTouched();\r\n    this._onChange(value);\r\n  }\r\n\r\n  onBlur() {\r\n    this._onTouched();\r\n  }\r\n\r\n  _onChange: Function = () => {};\r\n  _onTouched: Function = () => {};\r\n\r\n  registerOnChange(fn: Function): void {\r\n    this._onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: Function): void {\r\n    this._onTouched = fn;\r\n  }\r\n\r\n  writeValue(value: unknown): void {\r\n    if (typeof value === \"string\") this.updateValue(value)\r\n  }\r\n\r\n  private updateValue(value: string) {\r\n    this._value.set(value);\r\n    const inputRef = this._inputRef();\r\n    if (inputRef) inputRef.nativeElement.value = value;\r\n  }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this._disabled.set(isDisabled);\r\n  }\r\n\r\n}\r\n\r\n","@if (control()) {\r\n  @if (icon()) {\r\n    <span class=\"input-group-text\">\r\n      <i [ngClass]=\"'bi bi-' + icon()\"></i>\r\n    </span>\r\n  }\r\n  @let validator = control()!.validator;\r\n  @let valid = control()!.valid;\r\n  @let invalid = control()!.invalid;\r\n  @let touched = control()!.touched;\r\n  <input\r\n      [type]=\"type()\"\r\n      [placeholder]=\"placeholder()\"\r\n      class=\"form-control\"\r\n      [class.is-valid]=\"validator && valid && touched\"\r\n      [class.is-invalid]=\"validator && invalid && touched\"\r\n      (input)=\"change( input.value )\"\r\n      [value]=\"value()\"\r\n      [id]=\"id()\"\r\n      [attr.disabled]=\"disabled() ? 'disabled' : null\"\r\n      [attr.autocomplete]=\"autocomplete() ? 'on' : 'off'\"\r\n      (blur)=\"onBlur()\"\r\n      [ngClass]=\"additionalClasses()\" #input>\r\n}\r\n\r\n\r\n    <!--\r\n    [class.is-invalid]=\"control().validator && control().invalid && control().touched\"     -->\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component, output, signal } from '@angular/core';\r\nimport { Validators, FormGroup, ValidationErrors } from '@angular/forms';\r\nimport { GrcmFormFieldComponent } from '../../../controls/form-field/grcm-form-field.component';\r\nimport { GrcmFormComponent } from '../../../controls/form/grcm-form.component';\r\nimport { GrcmDataForm } from '../../../controls/form/interfaces/data-form.interface';\r\nimport { GrcmDataFormChange } from '../../../controls/form/interfaces/form-change.interface';\r\nimport { ResponseGrcmForm } from '../../../controls/form/interfaces/response-form.interface';\r\nimport { createGrcmControl } from '../../../controls/form/utils/createGrcmControl';\r\nimport { GrcmInputComponent } from '../../../controls/input/grcm-input.component';\r\nimport { GrcmButtonComponent } from '../../../button/grcm-button.component';\r\nimport { GrcmUserLoginExample } from './interfaces/grcm-user-login-example.interface';\r\n\r\n\r\n@Component({\r\n  selector: 'lib-grcm-example-login',\r\n  imports: [CommonModule, GrcmButtonComponent, GrcmFormComponent],\r\n  templateUrl: './example-login.component.html',\r\n  styleUrl: './example-login.component.css'\r\n})\r\nexport class GrcmExampleLoginComponent {\r\n\r\n  private _responseForm = signal<GrcmUserLoginExample|null>(null);\r\n  protected readonly responseForm = this._responseForm.asReadonly();\r\n\r\n  public submitForm = output<GrcmUserLoginExample>();\r\n\r\n  protected dataForm: GrcmDataForm = {\r\n    form: {\r\n      id: 'login'\r\n    },\r\n    controls: {\r\n      username: createGrcmControl({\r\n        component: GrcmInputComponent,\r\n        formFieldComponent: GrcmFormFieldComponent,\r\n        value: \"\",\r\n        validators: [Validators.required, Validators.minLength(3), Validators.maxLength(10)],\r\n        args: {\r\n          control: {\r\n            debounceTimer: 1000,\r\n            placeholder: \"Escriba su usuario\",\r\n            icon: \"person-circle\",\r\n            autocomplete: false,\r\n            // debounce: (value: string) => {\r\n            //   console.log(value)\r\n            // }\r\n          },\r\n          formField: {\r\n            label: \"Usuario\"\r\n          }\r\n        },\r\n        classes: {\r\n          control: \"input-group\"\r\n        }\r\n      }),\r\n      password: createGrcmControl({\r\n        component: GrcmInputComponent,\r\n        formFieldComponent: GrcmFormFieldComponent,\r\n        value: \"\",\r\n        validators: [Validators.required, Validators.minLength(6), Validators.maxLength(15), Validators.pattern('^(?=.*[a-z])(?=.*[A-Z])(?=.*[-_!@#$%^&*(),.?\":{}|<>]).+$')],\r\n        args: {\r\n          control: {\r\n            type: 'password',\r\n            placeholder: \"Escriba su contraseña\",\r\n            icon: \"lock\",\r\n            autocomplete: false,\r\n          },\r\n          formField: {\r\n            label: \"Contraseña\"\r\n          }\r\n        },\r\n        classes: {\r\n          control: \"input-group\"\r\n        }\r\n      }),\r\n    }\r\n  };\r\n\r\n  buildForm(form: FormGroup | null) {\r\n    // console.log(form);\r\n  }\r\n\r\n  onChangeControl(data: GrcmDataFormChange) {\r\n    // console.log(data)\r\n  }\r\n\r\n  onSubmit(data: ResponseGrcmForm) {\r\n    const user: GrcmUserLoginExample = {...data.form.value}\r\n    this._responseForm.set(user);\r\n    this.submitForm.emit(user);\r\n  }\r\n\r\n  getErrors(errors: ValidationErrors | null) {\r\n    console.log({errors})\r\n    if (!errors) return [];\r\n    return Object.keys(errors);\r\n  }\r\n\r\n}\r\n","<lib-grcm-form [data]=\"dataForm\" classes=\"row pb-4\" (buildForm)=\"buildForm($event)\" (formChange)=\"onChangeControl($event)\"\r\n  (formSubmit)=\"onSubmit($event)\" [templates]=\"{afterFormTemplate}\">\r\n  <!-- <ng-template #before_username>, before_username\r\n    nombreeee antes\r\n    @if (control.valid) {\r\n      VÁLIDO\r\n    } @else {\r\n      INVÁLIDO\r\n    }\r\n  </ng-template> -->\r\n  <ng-template #afterFormTemplate let-form=\"form\">\r\n    <div class=\"invalid-feedback d-block\">\r\n      @if (form.errors) {\r\n      @for (error of getErrors(form); track $index) {\r\n      <p>{{ error }}\r\n      <p>\r\n        }\r\n        }\r\n    </div>\r\n    <lib-grcm-button label=\"Entrar\" class=\"w-100\" [disabled]=\"form.invalid\" type=\"submit\"></lib-grcm-button>\r\n  </ng-template>\r\n</lib-grcm-form>\r\n@if (responseForm()) {\r\n  <div class=\"container mt-4\">\r\n    <p>Respuesta del formulario</p>\r\n    <div class=\"p-2\">\r\n      <pre><code class=\"language-javascript\" data-lang=\"js\">{{responseForm()  | json }}</code></pre>\r\n    </div>\r\n  </div>\r\n}\r\n","/*\r\n * Public API Surface of grcm-components\r\n */\r\n\r\n\r\n// UI\r\n\r\n// COMPONENTS\r\n\r\n// BUTTON\r\nexport * from './lib/ui/components/button/interfaces/button-sizes.type';\r\nexport * from './lib/ui/components/button/interfaces/button-types.type';\r\nexport * from './lib/ui/components/button/interfaces/button-variants.type';\r\nexport * from './lib/ui/components/button/grcm-button.component';\r\n\r\n// FORM\r\nexport * from './lib/ui/components/controls/form/interfaces/data-form.interface';\r\nexport * from './lib/ui/components/controls/form/interfaces/form-change.interface';\r\nexport * from './lib/ui/components/controls/form/interfaces/form-field.interface';\r\nexport * from './lib/ui/components/controls/form/interfaces/generic-object.interface';\r\nexport * from './lib/ui/components/controls/form/interfaces/response-form.interface';\r\nexport * from './lib/ui/components/controls/form/interfaces/args.interface';\r\nexport * from './lib/ui/components/controls/form/utils/createGrcmControl';\r\nexport * from './lib/ui/components/controls/form/grcm-form.component';\r\n\r\n// CONTROL\r\nexport * from './lib/ui/components/controls/control/grcm-control.component';\r\n\r\n// FORM-FIELD\r\nexport * from './lib/ui/components/controls/form-field/grcm-form-field.component';\r\n\r\n// PLAIN-FORM-FIELD\r\nexport * from './lib/ui/components/controls/plain-form-field/grcm-plain-form-field.component';\r\n\r\n// INPUT\r\nexport * from './lib/ui/components/controls/input/grcm-input.component';\r\n\r\n// EXAMPLES/FORMS/LOGIN\r\nexport * from './lib/ui/components/examples/forms/login/interfaces/grcm-user-login-example.interface';\r\nexport * from './lib/ui/components/examples/forms/login/example-login.component';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;MAaa,mBAAmB,CAAA;AAEvB,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC;AAEzB,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC;AAEzB,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC;AAEhC,IAAA,IAAI,GAAG,KAAK,CAA4B,IAAI,CAAC;AAE7C,IAAA,IAAI,GAAG,KAAK,CAAiB,QAAQ,CAAC;AAEtC,IAAA,OAAO,GAAG,KAAK,CAAqB,SAAS,CAAC;AAE9C,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,CAAC;AAE/B,IAAA,IAAI,GAAG,KAAK,CAAmB,SAAS,CAAC;AAEzC,IAAA,iBAAiB,GAAG,KAAK,CAAS,EAAE,CAAC;AAErC,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,CAAC;AAExB,IAAA,SAAS,GAAG,KAAK,CAAc,IAAI,CAAC;AAEpC,IAAA,YAAY,GAAG,KAAK,CAAwB,CAAC,CAAC;IAE9C,OAAO,GAAG,MAAM,EAAE;AAEN,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;QACzC,OAAO,CAAA,cAAA,EAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,UAAU,GAAG,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA,CAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA,CAAE;AACzJ,KAAC,CAAC;IAEF,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;uGAjCV,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,ECbhC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,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,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,oXAMA,EDGY,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,6HAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIvB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAClB,OAAA,EAAA,CAAC,YAAY,EAAE,UAAU,CAAC,EAAA,QAAA,EAAA,oXAAA,EAAA;;;AETrC;;ACEM,SAAU,iBAAiB,CAAQ,IAAkC,EAAA;AACzE,IAAA,OAAO,IAAI;AACb;;ACJA;MAyBa,oBAAoB,CAAA;AAEd,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE5B,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;IAEhC,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AAE/D,IAAA,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAExD,IAAA,eAAe,GAAG,KAAK,CAAC,QAAQ,EAAU;AAEzC,IAAA,aAAa;AAEb,IAAA,sBAAsB;IAEd,EAAE,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAEvF,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;IAEtD,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AAExF,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IAEhF,gBAAgB,GAAG,KAAK;IACxB,wBAAwB,GAAG,KAAK;IAEhC,aAAa,GAAQ,IAAI;IACzB,SAAS,GAAQ,IAAI;IACrB,UAAU,GAAQ,IAAI;IACtB,gBAAgB,GAAmB,IAAI;IAE/C,kBAAkB,GAAA;QAChB,IAAI,CAAC,UAAU,EAAE;;IAGX,UAAU,GAAA;QAChB,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,iCAAiC,EAAE;;IAGlC,gBAAgB,GAAA;QACtB,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE;AACtD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE;AACvC,QAAA,IAAI,CAAC,kBAAkB,IAAI,CAAC,aAAa;YAAE;QAC3C,aAAa,CAAC,KAAK,EAAE;QACrB,IAAI,CAAC,sBAAsB,GAAG,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC;AAC/E,QAAA,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAC/D,QAAA,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;AACrD,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ;AAC9D,QAAA,iBAAiB,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE;AACvC,QAAA,IAAI,CAAC,aAAa,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC;;IAGzE,gBAAgB,GAAA;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI;AAC9B,QAAA,IAAI,CAAC,IAAI;YAAE;QACX,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAC,GAAG,IAAI;AAC5C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa;AACvC,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,sBAAsB;AACzD,QAAA,MAAM,gBAAgB,GAAG,CAAC,IAAwB,EAAE,YAA+B,KAAI;YACrF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,WAAmB,KAAI;AACnC,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;gBAClC,MAAM,iBAAiB,GAAG,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC5D,QAAQ,OAAO,iBAAiB;AAC9B,oBAAA,KAAK,UAAU;AACb,wBAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACtB,4BAAA,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE;gCACjC,QAAQ,EAAE,IAAI,CAAC;AAChB,6BAAA,CAAC,CAAC,SAAS,CAAC,MAAM,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;AAClE,4BAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;;6BAC9C;AACL,4BAAA,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC;;wBAE9C;AACF,oBAAA,KAAK,QAAQ;AACX,wBAAA,IAAI,EAAE,iBAAiB,YAAY,gBAAgB,CAAC;4BAAE;wBACtD,MAAM,IAAI,GAA0B,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC;AACzE,wBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;;AAE1D,aAAC,CAAC;AACJ,SAAC;AACD,QAAA,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC;AACvC,QAAA,gBAAgB,CAAC,SAAS,EAAE,qBAAqB,CAAC;;IAG5C,UAAU,GAAA;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO;AACpC,QAAA,IAAI,CAAC,OAAO;YAAE;AACd,QAAA,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO;AACtC,QAAA,IAAI,OAAO;YAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,GAAG,OAAO;AAC1E,QAAA,IAAI,SAAS;YAAE,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,GAAG,SAAS;;IAGjF,iCAAiC,GAAA;AACvC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ;AAE7C,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;AACvC,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;;AAG/B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;AACzC,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;;AAGvB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AAC3C,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;AAGxB,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;YACjC,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAClD,YAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK;;;AAIzC,IAAA,UAAU,CAAC,GAAY,EAAA;AACrB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ;QAE7C,IAAI,QAAQ,EAAE;AACZ,YAAA,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;YACxB;;AAEF,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,aAAa,GAAG,GAAG;;AAG1B,IAAA,gBAAgB,CAAC,EAAY,EAAA;AAC3B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ;QAE7C,IAAI,QAAQ,EAAE;AACZ,YAAA,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC7B;;AAEF,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,iBAAiB,CAAC,EAAY,EAAA;AAC5B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ;QAE7C,IAAI,QAAQ,EAAE;AACZ,YAAA,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC9B;;AAEF,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;AAGtB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ;QAE7C,IAAI,QAAQ,EAAE;AACZ,YAAA,QAAQ,EAAE,gBAAgB,GAAG,UAAU,CAAC;YACxC;;AAEF,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;AACpC,QAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU;;IAGpC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE;AAC7B,QAAA,IAAI,CAAC,sBAAsB,EAAE,OAAO,EAAE;AACtC,QAAA,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;;uGAtKjB,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,EAXpB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAW4D,gBAAgB,EC/B/E,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,8CACA,EDYY,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BAAE,mBAAmB,EAAA,CAAA,EAAA,CAAA;;2FAYhC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAhBhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,WAGnB,CAAC,YAAY,EAAE,mBAAmB,CAAC,EACjC,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE;AACR;qBACF,EACK,IAAA,EAAA;AACJ,wBAAA,wBAAwB,EAAE;AAC3B,qBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA;;;AEvBH;MAqBa,iBAAiB,CAAA;IAErB,YAAY,GAAG,YAAY,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AAEnE,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhC,IAAA,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;AAE5C,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAgB;AAErC,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAClC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAC/B;IAEM,SAAS,GAAG,MAAM,EAAoB;IAEtC,UAAU,GAAG,MAAM,EAAoB;IAEvC,UAAU,GAAG,MAAM,EAAsB;AAExC,IAAA,KAAK,GAAG,MAAM,CAAmB,IAAI,CAAC;AAE9B,IAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;IAEpC,QAAQ,GAAa,EAAE;AAEjB,IAAA,SAAS,GAAG,KAAK,CAAkC,EAAE,CAAC;AAEtD,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;IAEhD,gBAAgB,GAAG,QAAQ,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IAE5F,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,EAAE;;IAGnB,eAAe,GAAA;QACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;;IAG1B,UAAU,GAAA;QAChB,IAAI,CAAC,QAAQ,EAAE;QACf,IAAI,CAAC,uCAAuC,EAAE;;IAGxC,QAAQ,GAAA;AACd,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE;AAC1C,YAAA,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;AAChC,YAAA,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe;AAC1C,YAAA,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI;AACjC,SAAA,CAAC,CAAC;AACH,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACvC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC;AACpC,SAAC,CAAC;;IAGJ,UAAU,CAAC,IAAY,EAAE,OAAwC,EAAA;AAC/D,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC;;IAIrI,uCAAuC,GAAA;AAC7C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,IAAI;YAAE;QACX,IAAI,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,GAAW,KAAI;YAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,qBAAqB;gBAAE;YACtD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,CAClC,oBAAoB,EAAE,EACtB,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CACrC,CAAC,SAAS,CAAC,CAAC,KAAU,KAAI;AACzB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACvD,aAAC,CAAC;AACJ,SAAC,CAAC;;AAGJ,IAAA,SAAS,CAAC,MAA+B,EAAA;AACvC,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,EAAE;AACtB,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;;IAGrB,QAAQ,CAAC,QAA4B,IAAI,EAAA;AAC9C,QAAA,MAAM,SAAS,GAAG,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI;AAChE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QACxB,IAAI,CAAC,aAAa,EAAE;AACpB,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO;YAAE;QAC3B,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;IAGnD,aAAa,GAAA;AACnB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QACxB,IAAI,EAAE,aAAa,EAAE;QACrB,IAAI,EAAE,sBAAsB,EAAE;;IAGtB,yBAAyB,CAAC,kBAAiC,IAAI,EAAA;AACvE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE;AACpB,QAAA,MAAM,IAAI,GAAkB;YAC1B;SACD;QACD,IAAI,eAAe,EAAE;YACnB,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;;AAElD,QAAA,OAAO,IAAI;;uGAzGF,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAEO,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvBnF,0wDAsCA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDrBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,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,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAItD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,WAChB,CAAC,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,EAAA,QAAA,EAAA,0wDAAA,EAAA;;;AEjBpE;MAmBa,sBAAsB,CAAA;AAEhB,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAE1C,IAAA,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AAE3E,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAwB;AAEhD,IAAA,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAU;AAEnB,IAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEpD,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC;AAExB,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AAChB,IAAA,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;AAErD,IAAA,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC;AACtB,IAAA,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE;IAEzD,WAAW,GAAG,GAAG;IACjB,WAAW,GAAG,YAAY;AAEvB,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAEpD,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;AAClH,KAAC,CAAC;IAEF,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,EAAE;;IAGX,UAAU,GAAA;QAChB,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,CAAC,wBAAwB,EAAE;QAC/B,IAAI,CAAC,qBAAqB,EAAE;;IAGtB,wBAAwB,GAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACrF,IAAI,CAAC,aAAa,EAAE;AACtB,SAAC,CAAC;;IAGI,qBAAqB,GAAA;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AACvC,QAAA,IAAI,CAAC,IAAI;YAAE;AACX,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC3E,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAChC,SAAC,CAAC;;AAGI,IAAA,mBAAmB,CAAC,IAAoB,EAAA;QAC9C,IAAI,gBAAgB,GAAG,CAAC;QACxB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACvC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,IAAG;YACjB,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAAE,gBAAA,gBAAgB,EAAE;AACpE,SAAC,CAAC;AACF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;QAC/B,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,gBAAgB,IAAI,OAAO,EAAE;AACpD,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;;aAC3B;AACL,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,gBAAgB,GAAG,OAAO,CAAC;;;IAIhF,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;;AAG9D,IAAA,iBAAiB,CAAC,OAAwB,EAAA;QACxC,OAAO,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC;;AAGlD,IAAA,QAAQ,CAAC,MAAW,EAAA;QAClB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,EAAE;AAC3B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,QAAQ,KAAK;AACX,YAAA,KAAK,UAAU;AACb,gBAAA,OAAO,0BAA0B;AACnC,YAAA,KAAK,WAAW;AACd,gBAAA,OAAO,CAA+B,4BAAA,EAAA,IAAI,CAAC,cAAc,cAAc;AACzE,YAAA,KAAK,WAAW;AACd,gBAAA,OAAO,CAA+B,4BAAA,EAAA,IAAI,CAAC,cAAc,cAAc;AACzE,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,gGAAgG;AACzG,YAAA;AACE,gBAAA,OAAO,4BAA4B;;;IAIzC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE;;uGAhGjB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAI8B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAgB,ECvBjF,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0iBAgBA,+FDLY,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAQX,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;+BACE,qBAAqB,EAAA,OAAA,EACtB,CAAC,YAAY,CAAC,mBAGN,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE;AACR,qBAAA,EAAA,QAAA,EAAA,0iBAAA,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA;;;MEPU,2BAA2B,CAAA;AAE/B,IAAA,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AAE3E,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAwB;AAEhD,IAAA,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAU;IAEpC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE;;uGATjB,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEyB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZjF,gDACA,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA,CAAA;;2FDSa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,WAC5B,EAAE,EAAA,QAAA,EAAA,gDAAA,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA;;;AENb;MAgBa,kBAAkB,CAAA;AAEZ,IAAA,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAE5C,IAAA,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAE5C,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAE1C,IAAA,IAAI,GAAG,KAAK,CAAsB,MAAM,CAAC;AAEzC,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,CAAC;AAE/B,IAAA,aAAa,GAAG,KAAK,CAAS,GAAG,CAAC;IAElC,IAAI,GAAG,KAAK,EAAU;AAEtB,IAAA,YAAY,GAAG,KAAK,CAAU,IAAI,CAAC;AAEnC,IAAA,oBAAoB,GAAG,KAAK,CAAU,KAAK,CAAC;IAE5C,WAAW,GAAG,MAAM,EAAU;IAE9B,QAAQ,GAAG,MAAM,EAAU;AAE3B,IAAA,iBAAiB,GAAG,KAAK,CAAkB,EAAE,CAAC;AAE9C,IAAA,OAAO,GAAG,QAAQ,CAAiC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAE;AAErF,IAAA,EAAE,GAAG,QAAQ,CAAS,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;AAEjD,IAAA,MAAM,GAAG,MAAM,CAAS,EAAE,CAAC;AAChB,IAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAE3C,IAAA,SAAS,GAAG,MAAM,CAAU,KAAK,CAAC;AACvB,IAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AAEjD,IAAA,UAAU,GAAoB,IAAI,OAAO,EAAU;AAEnD,IAAA,SAAS,GAAG,SAAS,CAA+B,OAAO,CAAC;IAEpE,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,EAAE;;IAGX,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC;AACJ,aAAA,IAAI,CACH,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EACpC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;aAEnC,SAAS,CAAE,KAAK,IAAG;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YACzB,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC/B,gBAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE;AACpC,SAAC,CAAC;;AAGJ,IAAA,MAAM,CAAE,KAAa,EAAA;QACnB,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;IAGvB,MAAM,GAAA;QACJ,IAAI,CAAC,UAAU,EAAE;;AAGnB,IAAA,SAAS,GAAa,MAAK,GAAG;AAC9B,IAAA,UAAU,GAAa,MAAK,GAAG;AAE/B,IAAA,gBAAgB,CAAC,EAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,iBAAiB,CAAC,EAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;AAGtB,IAAA,UAAU,CAAC,KAAc,EAAA;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;;AAGhD,IAAA,WAAW,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE;AACjC,QAAA,IAAI,QAAQ;AAAE,YAAA,QAAQ,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK;;AAGpD,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;;uGAxFrB,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,2tCChB/B,88BA4BA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDdY,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,8BAAE,WAAW,EAAA,CAAA,EAAA,CAAA;;2FAE7C,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,WAGjB,CAAC,YAAY,EAAE,mBAAmB,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,88BAAA,EAAA;;;AEd3D;MAsBa,yBAAyB,CAAA;AAE5B,IAAA,aAAa,GAAG,MAAM,CAA4B,IAAI,CAAC;AAC5C,IAAA,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE;IAE1D,UAAU,GAAG,MAAM,EAAwB;AAExC,IAAA,QAAQ,GAAiB;AACjC,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE;AACL,SAAA;AACD,QAAA,QAAQ,EAAE;YACR,QAAQ,EAAE,iBAAiB,CAAC;AAC1B,gBAAA,SAAS,EAAE,kBAAkB;AAC7B,gBAAA,kBAAkB,EAAE,sBAAsB;AAC1C,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACpF,gBAAA,IAAI,EAAE;AACJ,oBAAA,OAAO,EAAE;AACP,wBAAA,aAAa,EAAE,IAAI;AACnB,wBAAA,WAAW,EAAE,oBAAoB;AACjC,wBAAA,IAAI,EAAE,eAAe;AACrB,wBAAA,YAAY,EAAE,KAAK;;;;AAIpB,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,KAAK,EAAE;AACR;AACF,iBAAA;AACD,gBAAA,OAAO,EAAE;AACP,oBAAA,OAAO,EAAE;AACV;aACF,CAAC;YACF,QAAQ,EAAE,iBAAiB,CAAC;AAC1B,gBAAA,SAAS,EAAE,kBAAkB;AAC7B,gBAAA,kBAAkB,EAAE,sBAAsB;AAC1C,gBAAA,KAAK,EAAE,EAAE;gBACT,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,0DAA0D,CAAC,CAAC;AACpK,gBAAA,IAAI,EAAE;AACJ,oBAAA,OAAO,EAAE;AACP,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,WAAW,EAAE,uBAAuB;AACpC,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,YAAY,EAAE,KAAK;AACpB,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,KAAK,EAAE;AACR;AACF,iBAAA;AACD,gBAAA,OAAO,EAAE;AACP,oBAAA,OAAO,EAAE;AACV;aACF,CAAC;AACH;KACF;AAED,IAAA,SAAS,CAAC,IAAsB,EAAA;;;AAIhC,IAAA,eAAe,CAAC,IAAwB,EAAA;;;AAIxC,IAAA,QAAQ,CAAC,IAAsB,EAAA;QAC7B,MAAM,IAAI,GAAyB,EAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAC;AACvD,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG5B,IAAA,SAAS,CAAC,MAA+B,EAAA;AACvC,QAAA,OAAO,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC;AACrB,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,EAAE;AACtB,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;;uGA3EjB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,yHCtBtC,slCA8BA,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDZY,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,kOAAE,iBAAiB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAInD,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,WACzB,CAAC,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,slCAAA,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA;;;AElBjE;;AAEG;AAGH;AAEA;AAEA;;ACTA;;AAEG;;;;"}