{"version":3,"file":"sapphire-ion-framework.mjs","sources":["../../../projects/sapphire-ion-framework/src/lib/components/info-popover/info-popover.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/info-popover/info-popover.component.html","../../../projects/sapphire-ion-framework/src/lib/components/tooltip/tooltip.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/tooltip/tooltip.component.html","../../../projects/sapphire-ion-framework/src/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.html","../../../projects/sapphire-ion-framework/src/lib/core/directives/ng-var.directive.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/inputs.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-configuration.ts","../../../projects/sapphire-ion-framework/src/lib/components/input-loading/input-loading.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/input-loading/input-loading.component.html","../../../projects/sapphire-ion-framework/src/lib/components/input-bool/input-bool.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/input-bool/input-bool.component.html","../../../projects/sapphire-ion-framework/src/lib/core/services/utils.service.ts","../../../projects/sapphire-ion-framework/src/lib/components/input-date/input-date.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/input-date/input-date.component.html","../../../projects/sapphire-ion-framework/src/lib/components/input-decimal/input-decimal.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/input-decimal/input-decimal.component.html","../../../projects/sapphire-ion-framework/src/lib/core.module.ts","../../../projects/sapphire-ion-framework/src/lib/components/classes.ts","../../../projects/sapphire-ion-framework/src/lib/classes/config.ts","../../../projects/sapphire-ion-framework/src/lib/core/services/environment.service.ts","../../../projects/sapphire-ion-framework/src/lib/core/services/generics.service.ts","../../../projects/sapphire-ion-framework/src/lib/web/api-url-provider.service.ts","../../../projects/sapphire-ion-framework/src/lib/web/storage.service.ts","../../../projects/sapphire-ion-framework/src/lib/components/generic/loading/loading.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/generic/loading/loading.component.html","../../../projects/sapphire-ion-framework/src/lib/components/input-file/input-file.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/input-file/input-file.component.html","../../../projects/sapphire-ion-framework/src/lib/components/input-file/download-button/download-button.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/input-file/download-button/download-button.component.html","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-type.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/table-field.ts","../../../projects/sapphire-ion-framework/src/lib/web/http.service.ts","../../../projects/sapphire-ion-framework/src/lib/web/http.ativo.service.ts","../../../projects/sapphire-ion-framework/src/lib/components/input-select/configuration.ts","../../../projects/sapphire-ion-framework/src/lib/components/input-select/ISelect.ts","../../../projects/sapphire-ion-framework/src/lib/components/input-select/input-select-option/input-select-option.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/input-select/input-select-option/input-select-option.component.html","../../../projects/sapphire-ion-framework/src/lib/components/input-select/input-select-internal-option/input-select-internal-option.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/input-select/input-select-internal-option/input-select-internal-option.component.html","../../../projects/sapphire-ion-framework/src/lib/components/input-select/input-select.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/input-select/input-select.component.html","../../../projects/sapphire-ion-framework/src/lib/components/input-string/input-string.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/input-string/input-string.component.html","../../../projects/sapphire-ion-framework/src/lib/components/input-textarea/input-textarea.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/input-textarea/input-textarea.component.html","../../../projects/sapphire-ion-framework/src/lib/components/input-color/input-color.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/input-color/input-color.component.html","../../../projects/sapphire-ion-framework/src/lib/components/input-cpf-cnpj/input-cpf-cnpj.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/input-cpf-cnpj/input-cpf-cnpj.component.html","../../../projects/sapphire-ion-framework/src/lib/components/input-select/input-select-template.directive.ts","../../../projects/sapphire-ion-framework/src/lib/components/text-tooltip/text-tooltip.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/text-tooltip/text-tooltip.component.html","../../../projects/sapphire-ion-framework/src/lib/components/inputs.module.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs-validators.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs-default-configurations.ts","../../../projects/sapphire-ion-framework/src/lib/core/services/route/route.cache.service.ts","../../../projects/sapphire-ion-framework/src/lib/core/services/route/route.provider.service.ts","../../../projects/sapphire-ion-framework/src/lib/components/client/default/default.page.ts","../../../projects/sapphire-ion-framework/src/lib/components/client/default/default.page.html","../../../projects/sapphire-ion-framework/src/lib/core/services/auth.service.ts","../../../projects/sapphire-ion-framework/src/lib/components/drawer/menu.ts","../../../projects/sapphire-ion-framework/src/lib/components/drawer/drawer-group/drawer-group.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/drawer/drawer-group/drawer-group.component.html","../../../projects/sapphire-ion-framework/src/lib/components/drawer/drawer.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/drawer/drawer.component.html","../../../projects/sapphire-ion-framework/src/lib/components/client/main-content/main-content.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/client/main-content/main-content.component.html","../../../projects/sapphire-ion-framework/src/lib/components/drawer/default-drawer-end/default-drawer-end.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/drawer/default-drawer-end/default-drawer-end.component.html","../../../projects/sapphire-ion-framework/src/lib/core/services/usuario.service.ts","../../../projects/sapphire-ion-framework/src/lib/components/login/login-admin/login-admin.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/login/login-admin/login-admin.component.html","../../../projects/sapphire-ion-framework/src/lib/components/login/login.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/login/login.component.html","../../../projects/sapphire-ion-framework/src/lib/components/carousel/base.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/carousel/carousel.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/carousel/carousel.component.html","../../../projects/sapphire-ion-framework/src/lib/core/pipes/secure.pipe.ts","../../../projects/sapphire-ion-framework/src/lib/components/image/image.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/image/image.component.html","../../../projects/sapphire-ion-framework/src/lib/components/carousel/carousel-image/carousel-image.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/carousel/carousel-image/carousel-image.component.html","../../../projects/sapphire-ion-framework/src/lib/components/carousel/carousel-item/carousel-item.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/carousel/carousel-item/carousel-item.component.html","../../../projects/sapphire-ion-framework/src/lib/components/carousel/carousel.module.ts","../../../projects/sapphire-ion-framework/src/lib/components/content-block/content-block.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/content-block/content-block.component.html","../../../projects/sapphire-ion-framework/src/lib/components/generic/tabs/tab/tab.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/generic/tabs/tab/tab.component.html","../../../projects/sapphire-ion-framework/src/lib/components/generic/tabs/tabs/tabs.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/generic/tabs/tabs/tabs.component.html","../../../projects/sapphire-ion-framework/src/lib/components/generic/tabs/tabs.module.ts","../../../projects/sapphire-ion-framework/src/lib/components/generic/stepper/step/step.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/generic/stepper/step/step.component.html","../../../projects/sapphire-ion-framework/src/lib/components/generic/stepper/stepper.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/generic/stepper/stepper.component.html","../../../projects/sapphire-ion-framework/src/lib/components/generic/stepper/stepper.module.ts","../../../projects/sapphire-ion-framework/src/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.html","../../../projects/sapphire-ion-framework/src/lib/components/drag-drop-file/drag-drop-file.directive.ts","../../../projects/sapphire-ion-framework/src/lib/components/drag-drop-file/drag-drop-file.module.ts","../../../projects/sapphire-ion-framework/src/lib/classes/comparison.ts","../../../projects/sapphire-ion-framework/src/lib/components/default/default-list/list.ts","../../../projects/sapphire-ion-framework/src/lib/components/default/default-list/header-list/header-list.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/default/default-list/header-list/header-list.component.html","../../../projects/sapphire-ion-framework/src/lib/components/default/default-pagination/default-pagination.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/default/default-pagination/default-pagination.component.html","../../../projects/sapphire-ion-framework/src/lib/components/default/default-table/th-filter/th-filter.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/default/default-table/th-filter/th-filter.component.html","../../../projects/sapphire-ion-framework/src/lib/components/default/default-table/default-table.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/default/default-table/default-table.component.html","../../../projects/sapphire-ion-framework/src/lib/components/default/default-list/default-list.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/default/default-list/default-list.component.html","../../../projects/sapphire-ion-framework/src/lib/components/default/default-view/header-view/header-view.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/default/default-view/header-view/header-view.component.html","../../../projects/sapphire-ion-framework/src/lib/components/default/default-view/view.ts","../../../projects/sapphire-ion-framework/src/lib/components/default/default-view/default-view.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/default/default-view/default-view.component.html","../../../projects/sapphire-ion-framework/src/lib/components/default/default.module.ts","../../../projects/sapphire-ion-framework/src/lib/components/filter/filter.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/filter/filter.component.html","../../../projects/sapphire-ion-framework/src/lib/components/default/default-list/abstract-list.ts","../../../projects/sapphire-ion-framework/src/lib/classes/routing.factory.ts","../../../projects/sapphire-ion-framework/src/lib/classes/infinite-scroll.ts","../../../projects/sapphire-ion-framework/src/lib/core/guards/error.interceptor.ts","../../../projects/sapphire-ion-framework/src/lib/core/guards/token.interceptor.ts","../../../projects/sapphire-ion-framework/src/lib/core/guards/auth.guard.ts","../../../projects/sapphire-ion-framework/src/lib/index.ts","../../../projects/sapphire-ion-framework/src/sapphire-ion-framework.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\n@Component({\r\n  standalone: true,\r\n  imports: [ IonicModule, CommonModule ],\r\n  selector: 'info-popover',\r\n  templateUrl: './info-popover.component.html',\r\n  styleUrls: ['./info-popover.component.scss'],\r\n})\r\nexport class InfoPopoverComponent  implements OnInit {\r\n\r\n  @Output('OnClick') clickEventEmitter: EventEmitter<void> = new EventEmitter<void>()\r\n\r\n  @Input() button: boolean = false;\r\n  @Input() fill: string = 'solid';\r\n  @Input('position') _position: string = 'relative';\r\n  position: string = '';\r\n\r\n  SetPositionClass(){\r\n    switch(this._position){\r\n      case('relative'): {\r\n        this.position = \"relative\"; \r\n      }\r\n      break;\r\n      case('top-right'):{\r\n        this.position = \"absolute top-3 right-3\"; \r\n      }\r\n      break;\r\n      case('right'):{\r\n        this.position = \"absolute top-1/2 bottom 1/2 right-3\"; \r\n      }\r\n      break;\r\n      case('bottom-right'):{\r\n        this.position = \"absolute bottom-3 right-3\"; \r\n      }\r\n      break;\r\n      case('top'):{\r\n        this.position = \"absolute top-3 right-1/2 left-1/2\"; \r\n      }\r\n      break;\r\n      case('bottom'):{\r\n        this.position = \"absolute left-1/2 right-1/2 bottom-3\"; \r\n      }\r\n      break;\r\n      case('left'):{\r\n        this.position = \"absolute top-1/2 bottom-1/2 left-3\"; \r\n      }\r\n      break;\r\n      case('top-left'):{\r\n        this.position = \"absolute top-3 left-3\"; \r\n      }\r\n      break;\r\n      case('bottom-left'):{\r\n        this.position = \"absolute bottom-3 left-3\"; \r\n      }\r\n      break;\r\n      case('center'):{\r\n        this.position = \"absolute top-1/2 bottom-1/2 left-1/2 right-1/2\"; \r\n      }\r\n      break;\r\n    }\r\n  }\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n    this.SetPositionClass();\r\n  }\r\n\r\n  ClickEvent(){\r\n    this.clickEventEmitter.emit();\r\n  }\r\n}\r\n","<div class=\"min-w-fit min-h-fit {{position}}\">\r\n  <ion-button [fill]=\"fill\" size=\"small\" class=\"size-8 m-0\" (click)=\"button ? popover.present($event) : null\" (mouseenter)=\"!button ? popover.present($event) : null\">\r\n    <ion-icon slot=\"icon-only\" name=\"help\"></ion-icon>\r\n  </ion-button>\r\n  \r\n  <ion-popover #popover triggerAction=\"hover\">\r\n    <ng-template>\r\n      <ion-content class=\"ion-padding\">\r\n        <div class=\"w-56 text-sm\">\r\n          <ng-content></ng-content>\r\n        </div>\r\n  \r\n        @if (button) {\r\n          <div class=\"w-56 h-8 flex items-center justify-center mt-3\">\r\n            <ion-text class=\"cursor-pointer\" color=\"primary\" (click)=\"ClickEvent()\">\r\n              <ion-icon class=\"align-sub\" name=\"information-circle\"></ion-icon> Clique para saber mais\r\n            </ion-text>\r\n          </div>\r\n        }\r\n      </ion-content>\r\n    </ng-template>\r\n  </ion-popover>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { AfterViewInit, Component, ElementRef, Host, Input, input, OnDestroy, OnInit, SkipSelf, ViewChild } from '@angular/core';\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\n@Component({\r\n  selector: 'tooltip',\r\n  standalone: true,\r\n  imports: [CommonModule, IonicModule],\r\n  templateUrl: './tooltip.component.html',\r\n  styleUrls: ['./tooltip.component.scss'],\r\n})\r\nexport class TooltipComponent {\r\n\r\n  @Input() align: 'top' | 'bottom' | 'left' | 'right' = 'right';\r\n  @Input() color: string= 'secondary';\r\n}\r\n","<!-- <div\r\n  class=\"\r\n    absolute\r\n    \r\n\r\n    default-transition px-2\r\n    min-w-fit h-fit py-1\r\n    bg-[var(--ion-color-secondary)] \r\n    rounded-xl\r\n  \"\r\n  [ngClass]=\"{'!translate-x-0 !translate-y-0 !opacity-100': _active}\"\r\n> \r\n  <div class=\"absolute -left-1 top-0 rounded bottom-0 my-auto rotate-45 h-4 aspect-square bg-red-500 [clip-path:polygon(0_20%,_0%_100%,_80%_100%)]\"></div>\r\n  <div class=\"z-[100] whitespace-nowrap\">\r\n    <ng-content></ng-content>\r\n  </div>\r\n</div>  -->\r\n<div #wrapper id=\"wrapper\" class=\"size-full absolute left-0 right-0 animated\">\r\n  <div\r\n    id=\"tooltip\"\r\n    style=\"--background: var(--ion-color-{{color}})\"\r\n    class=\"\r\n      !pointer-events-none\r\n      absolute\r\n      default-transition px-2\r\n      min-w-fit h-fit py-1\r\n      bg-[var(--background)]\r\n      rounded-xl blur-sm\r\n      opacity-0\r\n      max-w-full\r\n      {{align}}\r\n    \"\r\n  > \r\n    @switch (align) {\r\n      @case ('top') {\r\n        <div class=\"absolute rounded -bottom-1 left-0 right-0 mx-auto -rotate-45 h-4 aspect-square bg-[var(--background)] [clip-path:polygon(0_20%,_0%_100%,_80%_100%)]\"></div>\r\n      }\r\n      @case ('bottom') {\r\n        <div class=\"absolute rounded -top-1 left-0 right-0 mx-auto rotate-[135deg] h-4 aspect-square bg-[var(--background)] [clip-path:polygon(0_20%,_0%_100%,_80%_100%)]\"></div>\r\n      }\r\n      @case ('right') {\r\n        <div class=\"absolute rounded -left-1 top-0 bottom-0 my-auto rotate-45 h-4 aspect-square bg-[var(--background)] [clip-path:polygon(0_20%,_0%_100%,_80%_100%)]\"></div>\r\n      }\r\n      @case ('left') {\r\n        <div class=\"absolute rounded -right-1 top-0 bottom-0 my-auto -rotate-[135deg] h-4 aspect-square bg-[var(--background)] [clip-path:polygon(0_20%,_0%_100%,_80%_100%)]\"></div>\r\n      }\r\n    }\r\n    <div class=\"z-[100] block text-dark text-sm\">\r\n      <ng-content></ng-content>\r\n    </div>\r\n  </div> \r\n</div>\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { RouterLink } from '@angular/router';\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\n@Component({\r\n  selector: 'forbidden-403',\r\n  standalone: true,\r\n  imports: [CommonModule, IonicModule, RouterLink],\r\n  templateUrl: './forbidden-403.component.html',\r\n  styleUrls: ['./forbidden-403.component.scss'],\r\n})\r\nexport class Forbidden403Component  implements OnInit {\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {}\r\n\r\n}\r\n","<div class=\"bg-white size-full\">\r\n  <div class=\"relative flex flex-col items-center justify-center min-h-screen overflow-hidden\">\r\n    <div class=\"absolute inset-0 w-full h-full bg-gradient-to-br from-red-500 to-red-900 animate-gradient-fade\"></div>\r\n  \r\n    <ion-card class=\"m-0 max-w-md\">\r\n      <ion-card-content class=\"size-full bg-light/10 p-8 flex flex-col items-center justify-center text-center space-y-6\">\r\n        <div class=\"p-3 rounded-full relative translucid-border\">\r\n          <div class=\"size-12 flex items-center justify-center\">\r\n            <ion-icon class=\"text-5xl text-white/70\" name=\"shield-outline\"></ion-icon>\r\n          </div>\r\n      \r\n      \r\n          <div class=\"absolute -inset-1 rounded-full bg-gradient-to-r from-rose-400 to-pink-500 opacity-25 blur-sm\"></div>\r\n        </div>\r\n      \r\n        <ion-text class=\"text-4xl font-bold tracking-tight text-white/70\">\r\n          Acesso Negado\r\n        </ion-text>\r\n      \r\n        <ion-text color=\"light\" class=\"text-white/70\">\r\n          Você não tem permissão para acessar este recurso. Por favor, entre em contato com o administrador se acreditar que isso é um erro.\r\n        </ion-text>\r\n      \r\n        <div class=\"flex flex-col sm:flex-row gap-4 mt-4\">\r\n          <ion-button [routerLink]=\"['/']\" color=\"danger\" class=\"text-red-600 px-4 py-2 rounded-md font-medium\">\r\n            <ion-icon name=\"chevron-back\" slot=\"start\"></ion-icon>\r\n            Retornar a navegação\r\n          </ion-button>\r\n        </div>\r\n  \r\n      </ion-card-content>\r\n    </ion-card>\r\n  </div>\r\n</div>\r\n  ","import { Directive, Input, TemplateRef, ViewContainerRef } from \"@angular/core\";\r\n\r\n@Directive({\r\n  standalone: true,\r\n  selector: '[ngVar]',\r\n})\r\nexport class NgVarDirective {\r\n  @Input()\r\n  set ngVar(context: unknown) {\r\n      this.context.$implicit = this.context.ngVar = context;\r\n\r\n      if (!this.hasView) {\r\n          this.vcRef.createEmbeddedView(this.templateRef, this.context);\r\n          this.hasView = true;\r\n      }\r\n  }\r\n\r\n  private context: {\r\n      $implicit: unknown;\r\n      ngVar: unknown;\r\n  } = {\r\n      $implicit: null,\r\n      ngVar: null,\r\n  };\r\n\r\n  private hasView: boolean = false;\r\n\r\n  constructor(\r\n      private templateRef: TemplateRef<any>,\r\n      private vcRef: ViewContainerRef\r\n  ) {}\r\n}","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, OutputEmitterRef, WritableSignal, effect, forwardRef, model, output } from \"@angular/core\";\r\nimport { AbstractControl, ControlContainer, ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, Validators } from \"@angular/forms\";\r\n\r\n//[ -------------------------------------------------------------------------------- ]\r\nexport class InputProviderFactory{\r\n  static GetProvider(component): any[]{\r\n    return [ \r\n      {\r\n        provide: NG_VALUE_ACCESSOR,\r\n        useExisting: forwardRef(() => component),\r\n        multi: true,\r\n      },\r\n    ]\r\n  }\r\n}\r\n\r\n@Component({ template: '', providers: InputProviderFactory.GetProvider(CustomInput) })\r\nexport abstract class CustomInput<T> implements ControlValueAccessor, OnInit{\r\n  //[ Basic ]\r\n  @Input() id       : string = \"uniqueId\";\r\n  /** Exibe o spinner de carregamento */\r\n  @Input() loading  : boolean;\r\n  /** Se ativo desabilita o Input */\r\n  @Input() disabled : boolean;\r\n  /** Indica se o formulário foi enviado */\r\n  @Input() submitted: boolean = false;\r\n  /** Titulo do Input */\r\n  @Input() label    : string  = \"Label\";\r\n  /** Torna o input obrigatório (Utiliza-se com ngModel) */\r\n  @Input() required : boolean = false;\r\n  \r\n  writeValue(obj: T): void { console.error(\"[ Component writeValue isnt implemented ]\") }\r\n  \r\n  //[ Value ]\r\n  _model: T | null | undefined = null;\r\n  get model(): T | any      { return this._model;  }\r\n  set model(value: T | any) { this._model = value; }\r\n\r\n  //[ Handle Form / NgModel ]\r\n  @Input() formControlName: string;\r\n  \r\n  public   controlContainer : ControlContainer;\r\n  @Input('formControl') public control: AbstractControl;\r\n  protected elementRef      : ElementRef;\r\n\r\n  ngOnInit(){\r\n    if(!this.control && this.controlContainer && this.formControlName){ \r\n      this.control = this.controlContainer.control.get(this.formControlName); \r\n    }\r\n    \r\n    if(this.control){ \r\n      this.required = this.control.hasValidator(Validators.required); \r\n      this.invalid  = this.control.invalid;\r\n\r\n      this.control.events.subscribe({\r\n        next: (event) => { this.RunValidation(event.source); }\r\n      });\r\n    }\r\n  }\r\n\r\n  private RunValidation(control: AbstractControl): void{\r\n    this.required = control.hasValidator(Validators.required);\r\n    this.invalid  = control.invalid;\r\n  }\r\n  \r\n  invalid = false;\r\n  // classes: string;\r\n\r\n  @Output('blur') blurEmitter: EventEmitter<T> = new EventEmitter<T>();\r\n\r\n  //[ ControlValueAccessor ]\r\n  @Output('change') changeEmitter: EventEmitter<T> = new EventEmitter<T>();\r\n  propagateChange(obj: T): void{ this._onChange(obj); this.changeEmitter.emit(obj);; }\r\n\r\n  _onChange: Function = (v: any) => {}\r\n  _onTouch : Function = (v: any) => {}\r\n  registerOnChange (fn: (value: any) => void ){ this._onChange = fn }\r\n  registerOnTouched(fn: (value: any) => void ){ this._onTouch  = fn }\r\n}\r\n\r\n\r\n@Component({ template: '', providers: InputProviderFactory.GetProvider(CustomSignalInput) })\r\nexport abstract class CustomSignalInput<T> implements ControlValueAccessor, OnInit{\r\n  //[ Basic ]\r\n  /** Exibe o spinner de carregamento */\r\n  @Input() loading  : boolean = false;\r\n  /** Se ativo desabilita o Input */\r\n  @Input() disabled : boolean = false;\r\n    /** Indica se o formulário foi enviado */\r\n  @Input() submitted: boolean = false;\r\n  /** Titulo do Input */\r\n  @Input() label    : string  = \"Label\";\r\n  /** Torna o input obrigatorio */\r\n  required: WritableSignal<boolean> = model<boolean>(false)\r\n  \r\n  writeValue(obj: T): void { console.error(\"[ Component writeValue isnt implemented ]\") }\r\n  \r\n  //[ Value ]\r\n  protected _model: T | null = null;\r\n  get model(): T | any      { return this._model;  }\r\n  set model(value: T | any) { this._model = value; }\r\n\r\n  //[ Handle Form / NgModel ]\r\n  @Input()  formControlName : string;\r\n  public    controlContainer: ControlContainer;\r\n  @Input('formControl') \r\n  public    control    : AbstractControl;\r\n  protected elementRef : ElementRef;\r\n\r\n  constructor(){\r\n    effect(() => { \r\n      if(this.control){ this.invalid = this.control.invalid; }\r\n    });\r\n  }\r\n\r\n  ngOnInit(){\r\n    if(!this.control && this.controlContainer && this.formControlName){ \r\n      this.control = this.controlContainer.control.get(this.formControlName); \r\n    }\r\n    \r\n    if(this.control){ \r\n      this.required.set(this.control.hasValidator(Validators.required));  \r\n      this.invalid  = this.control.invalid;\r\n\r\n      this.control.events.subscribe({ next: (event) => { this.RunValidation(); } });\r\n    }\r\n  }\r\n\r\n  private RunValidation(): void{\r\n    this.required.set(this.control.hasValidator(Validators.required)); \r\n    this.invalid = this.control.invalid;\r\n  }\r\n  \r\n  invalid = false;\r\n\r\n  //[ ControlValueAccessor ]\r\n  /** Acionado quando um elemento perde o foco. */\r\n  blur  : OutputEmitterRef<T> = output<T>();\r\n  /** Emitido quando o valor é alterado. */\r\n  change: OutputEmitterRef<T> = output<T>();\r\n  propagateChange(obj: T): void{ this.onChange(obj); this.change.emit(obj);; }\r\n\r\n  onChange: (value: any) => void = (v: any) => { return; }\r\n  onTouch : (value: any) => void = (v: any) => { return; }\r\n  registerOnChange (fn: (value: any) => void ){ this.onChange = fn }\r\n  registerOnTouched(fn: (value: any) => void ){ this.onTouch  = fn }\r\n}\r\n","import { InputSelectConfiguration } from \"../input-select/configuration\";\r\n\r\n\r\n//#region [ Input Configurations  ]\r\nexport class InputFileConfiguration{\r\n  constructor(\r\n    /** Tipos de arquivos que podem ser selecionados */\r\n    public types: any = ['image/*'], \r\n    /** Declara se mais do que um arquivo pode ser selecionado */\r\n    public multiple: boolean = false\r\n  ){}\r\n}\r\n\r\nexport class InputBoolConfiguration{\r\n  constructor(\r\n    /** Estilo do ckeckbox \r\n     * - checkbox : @link https://ionicframework.com/docs/api/checkbox\r\n     * - toggle : @link https://ionicframework.com/docs/api/toggle\r\n    */\r\n    public type: InputBoolType = InputBoolType.checkbox\r\n  ){}  \r\n}\r\nexport enum InputBoolType{\r\n  checkbox = \"checkbox\",\r\n  toggle   = \"toogle\",\r\n}\r\nexport class InputDateConfiguration{\r\n  constructor(\r\n    /** Habilita o botão de limpar os dados  */\r\n    public clearable: boolean = false\r\n  ){}\r\n}\r\nexport class InputDecimalConfiguration{\r\n  prefix      : string;\r\n  sufix       : string;\r\n  placeholder : string;\r\n\r\n  constructor(\r\n    /** Declara a quantidade de numeros apos o ponto  */\r\n    public precision: number = 2, \r\n    /** Texto no inicio do input */\r\n    prefix: string | null = null, \r\n    /** Texto no fim do input */\r\n    sufix: string | null = null, \r\n    /** Se = false não aplica virgulas no lugar do separador a cada 3 unidades */\r\n    public thousandSeparator: string = '.',\r\n    public decimalSeparator : string = ','\r\n  ){\r\n    if(!prefix){ this.prefix = ''; }else{ this.prefix = prefix; }\r\n    if(!sufix ){ this.sufix  = ''; }else{ this.sufix  = sufix; }\r\n\r\n    this.placeholder = \"-\";\r\n    if(precision > 0){\r\n      this.placeholder += this.decimalSeparator;\r\n      for(let i = precision; i > 0; i--){\r\n        this.placeholder += \"-\";\r\n      }\r\n    }\r\n  }\r\n} \r\nexport class InputNumberConfiguration extends InputDecimalConfiguration {\r\n  constructor(\r\n    prefix: string = \"\", \r\n    sufix : string = \"\", \r\n    thousandSeparator: string = '.'\r\n  ){\r\n    super(0, prefix, sufix, thousandSeparator);\r\n  }\r\n}\r\nexport class InputCurrencyConfiguration extends InputDecimalConfiguration {\r\n  constructor(prefix: string = \"R$\", sufix: string = \"\", thousandSeparator: string = '.'){\r\n    super(2, prefix, sufix, thousandSeparator);\r\n  }\r\n}\r\nexport class InputStringConfiguration{\r\n  maxlength: number;\r\n  type: InputStringType = InputStringType.Text;\r\n  constructor(type: InputStringType = InputStringType.Text, maxlength: number = 50){\r\n    this.type = type; \r\n  }\r\n}\r\n\r\nexport type CPFCnpj = 'CPF' | 'CNPJ' | 'CPF/CNPJ'\r\nexport class InputCpfCnpjConfiguration {\r\n  constructor(public type: CPFCnpj = 'CPF/CNPJ'){}\r\n}\r\n//#endregion [ Input Configurations  ]\r\nexport enum InputStringType{\r\n  Text     = \"text\", \r\n  Password = \"password\", \r\n  Email    = \"email\", \r\n  Number   = \"number\", \r\n  Search   = \"search\", \r\n  Tel      = \"tel\", \r\n  Url      = \"url\"\r\n}\r\n\r\n\r\nexport type InputConfiguration = \r\n  InputFileConfiguration     |\r\n  InputSelectConfiguration   |\r\n  InputBoolConfiguration     |\r\n  InputDateConfiguration     |\r\n  InputDecimalConfiguration  |\r\n  InputNumberConfiguration   |\r\n  InputCurrencyConfiguration |\r\n  InputCpfCnpjConfiguration  |\r\n  InputStringConfiguration   | any;\r\n\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'input-loading',\r\n  templateUrl: './input-loading.component.html',\r\n  styleUrls: ['./input-loading.component.scss'],\r\n})\r\nexport class InputLoadingComponent {\r\n\r\n  @Input() loading: boolean;\r\n\r\n  constructor() { }\r\n}\r\n","<div id=\"spinner-wrapper\" class=\"absolute size-full flex justify-center items-center default-transition w-full left-0 top-0\" [ngClass]=\"{ '-translate-y-12 opacity-0 -z-10' : !loading }\">\r\n  <ion-spinner></ion-spinner>\r\n</div>","import { Component, ElementRef, Host, Input, OnInit, Optional, SkipSelf } from '@angular/core';\r\nimport { ControlContainer } from '@angular/forms';\r\nimport { CustomInput, InputProviderFactory } from '../inputs/inputs';\r\nimport { InputBoolConfiguration, InputBoolType } from '../inputs/input-configuration';\r\n\r\n@Component({\r\n  selector: 'input-bool',\r\n  templateUrl: './input-bool.component.html',\r\n  styleUrls: ['./input-bool.component.scss', '../inputs.scss'],\r\n  providers: InputProviderFactory.GetProvider(InputBoolComponent)\r\n})\r\nexport class InputBoolComponent extends CustomInput<boolean> implements OnInit {\r\n\r\n  @Input() configuration: InputBoolConfiguration = new InputBoolConfiguration();\r\n  types = InputBoolType;\r\n\r\n  constructor(\r\n    @Optional() @Host() @SkipSelf()\r\n    override controlContainer: ControlContainer,\r\n    override elementRef: ElementRef\r\n  ) { super(); }\r\n\r\n  override async ngOnInit() {\r\n    super.ngOnInit();\r\n  }\r\n\r\n  override get model()    : boolean  { return this._model; }\r\n  override set model(value: boolean) { this.setModel(value); this.propagateChange(value); }\r\n  setModel(value: boolean){\r\n    this._model = value;\r\n  }\r\n\r\n  override writeValue(value: boolean): void { this.setModel(value); }\r\n}\r\n","<div class=\"flex relative overflow-hidden\">\r\n  <ion-card class=\"cursor-pointer ion-card-input\" [disabled]=\"loading || disabled\"\r\n      [ngClass]=\"{\r\n        'invalid'  : invalid,\r\n        'submitted': submitted,\r\n        'disabled' : disabled,\r\n      }\"\r\n    >\r\n    <ion-card-content class=\"default-transition flex h-full\">\r\n      <div id=\"content\" class=\"flex flex-col shrink-0 default-transition\">\r\n        <ion-toggle   class=\"w-full grow flex items-center\" *ngIf=\"configuration.type == types.toggle\" [(ngModel)]=\"model\">{{label}}</ion-toggle>\r\n        <ion-checkbox class=\"w-full grow flex items-center\" *ngIf=\"configuration.type != types.toggle\" [(ngModel)]=\"model\">{{label}}</ion-checkbox>\r\n      </div>\r\n     \r\n    </ion-card-content>\r\n  </ion-card>\r\n  <input-loading [loading]=\"loading\"></input-loading>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { CameraSource } from '@capacitor/camera';\r\n\r\nimport { ActionSheetButton, ActionSheetController } from '@ionic/angular';\r\nimport { FilePicker, PickFilesResult, PickedFile } from '@capawesome/capacitor-file-picker';\r\n\r\nimport { OverlayEventDetail } from '@ionic/core';\r\nimport moment from 'moment';\r\nimport { InputFileConfiguration } from '../../components/inputs/input-configuration';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class UtilsService{\r\n\r\n  constructor(private actionSheetController: ActionSheetController) {\r\n  }\r\n\r\n  /** Retorna um array de arquivos de acordo com o tipo de configutação */\r\n  async SelectFile(configuration: InputFileConfiguration): Promise<File[]>{\r\n    enum SelectType {\r\n      camera = 1,\r\n      galery = 2,\r\n      file   = 3,\r\n      deny   = 4,\r\n    }\r\n\r\n    const btnCamera: ActionSheetButton = { text: 'Câmera'            , icon: 'camera'      , data: SelectType.camera }\r\n    const btnGalery: ActionSheetButton = { text: 'Galeria'           , icon: 'image'       , data: SelectType.galery }\r\n    const btnFile  : ActionSheetButton = { text: 'Selecionar Arquivo', icon: 'document'    , data: SelectType.file   }\r\n    const btnDeny  : ActionSheetButton = { text: 'Cancelar'          , icon: 'close-circle', data: SelectType.deny, role: 'cancel', };\r\n\r\n    const isApp = (!document.URL.startsWith('http') || document.URL.startsWith('http://localhost:8080'));\r\n\r\n    var lstBtn: any[] = [];\r\n    if(isApp){ \r\n      lstBtn.push(btnCamera); \r\n      lstBtn.push(btnGalery);\r\n    }\r\n    lstBtn.push(btnFile);\r\n    lstBtn.push(btnDeny);\r\n\r\n    var res: OverlayEventDetail<any>;\r\n    if(lstBtn.length > 2){\r\n      const actionSheet = await this.actionSheetController.create({ buttons: lstBtn });\r\n      actionSheet.present();\r\n      res = await actionSheet.onDidDismiss();\r\n    }else{\r\n      res = { role: 'confirm', data: lstBtn[0].data };\r\n    }\r\n\r\n    \r\n    if(['backdrop', 'cancel'].includes(res.role)){ return; }\r\n\r\n    if([SelectType.camera, SelectType.galery].includes(res.data)){ \r\n      const Source = res.data == SelectType.camera ? CameraSource.Camera : CameraSource.Photos\r\n      //const photo = await Camera.getPhoto({ resultType: CameraResultType.Uri, source: Source, quality: 100 });\r\n      console.error(\"[ TODO ]\")\r\n      return null;\r\n    }else{\r\n      const res: Promise<PickFilesResult> = FilePicker.pickFiles({ types: configuration.types, limit: configuration.multiple ? 0 : 1 });\r\n      const files: PickedFile[] = (await res).files;\r\n      return files.map(p => <File>p.blob);\r\n    }\r\n  } \r\n}\r\n\r\nexport class Utils {\r\n  /** Converte de unix para Date object */\r\n  static UNIXToDate(unix_timestamp: number): Date {\r\n    var date = new Date(unix_timestamp * 1000);\r\n    return date;\r\n  }\r\n  \r\n  /**\r\n   * @param DateStr - Date on ISO format, e.g: \r\n   * [ 2010-10-05T14:48:00.000Z ]\r\n   * @returns Date on format DD/MM/YYYY\r\n  */\r\n  static DateISOToDDMMYYYYHHMM(iso: string, onInvalidDateString: string = '-'): string{\r\n    if(!iso){ return onInvalidDateString; }\r\n    return moment(iso).format(\"DD/MM/YYYY HH:mm\");\r\n  }\r\n\r\n  /**\r\n     * @param iso - Date on ISO format, e.g: \r\n     * [ 2010-10-05T14:48:00.000Z ]\r\n     * @returns Date on format DD/MM/YYYY\r\n    */\r\n  static DateISOToDDMMYYYY(iso: string, onInvalidDateString: string = '-'): string{\r\n    if(!iso){ return onInvalidDateString; }\r\n    return moment(iso).format(\"DD/MM/YYYY\");\r\n  }\r\n\r\n  static GenerateGUID(): string {\r\n    return 'id-xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\r\n      var r = Math.random() * 16 | 0,\r\n      v = c === 'x' ? r : (r & 0x3 | 0x8);\r\n      return v.toString(16);\r\n    });\r\n  }\r\n\r\n  /** \r\n   * @param file: base64 | Blob\r\n   */\r\n  static async DownloadFile(file: string | Blob, fileName: string){\r\n    var blob: Blob = null;\r\n    if(!(file instanceof Blob)){\r\n      blob = await this.Base64ToBlob(file);\r\n    }\r\n    else{ \r\n      blob = file; \r\n    }\r\n\r\n    var fileURL = URL.createObjectURL(blob);\r\n    const linkElement = document.createElement(\"a\");\r\n    linkElement.setAttribute(\"href\", fileURL);\r\n    linkElement.setAttribute(\"target\", \"_blank\");\r\n    linkElement.setAttribute(\"download\", fileName);\r\n\r\n    let me = new MouseEvent(\"click\", {\r\n      view: window,\r\n      bubbles: true,\r\n      cancelable: false,\r\n    });\r\n\r\n    linkElement.dispatchEvent(me);\r\n  }\r\n\r\n  static async Base64ToBlob(base64: string): Promise<Blob>{\r\n    return (await fetch(base64)).blob();\r\n  }\r\n}\r\n\r\nexport function Search<T = any>(items: T[], Search: string, bindLabel: ((obj: T) => string)): T[] {\r\n  return items.filter(p => bindLabel(p)?.toLowerCase().includes(Search.toLowerCase()));\r\n}\r\n\r\nexport function Timeout(timeout: number): Promise<void>{\r\n  return new Promise(resolve => setTimeout(resolve, timeout));\r\n}\r\n\r\n//[ Base 64 ]\r\nfunction DecodeBase64<T>(b64: string): T{\r\n  return JSON.parse(Buffer.from(b64, 'base64').toString('utf-8'));\r\n}\r\n\r\nfunction DecodeBase64AsString(b64: string) {\r\n  return Buffer.from(b64, 'base64').toString('utf-8');\r\n}\r\n\r\nfunction EncodeBase64(obj: any | string): string{\r\n  if(typeof obj == \"object\"){\r\n    return Buffer.from(JSON.stringify(obj)).toString('base64');\r\n  }\r\n  else\r\n  if(typeof obj == \"string\"){\r\n    return Buffer.from(obj).toString('base64');\r\n  }\r\n}\r\n\r\nexport const INT_MAX = 2_147_483_646;","import { ChangeDetectorRef, Component, ElementRef, Host, Input, OnInit, Optional, SkipSelf } from '@angular/core';\r\nimport { ControlContainer } from '@angular/forms';\r\nimport { IonModal } from '@ionic/angular';\r\n\r\nimport { Utils } from '../../core/services/utils.service';\r\nimport moment from 'moment';\r\nimport { InputDateConfiguration } from '../inputs/input-configuration';\r\nimport { CustomInput, InputProviderFactory } from '../inputs/inputs';\r\n\r\n@Component({\r\n  selector: 'input-date, input-date-time, input-time',\r\n  templateUrl: './input-date.component.html',\r\n  styleUrls: ['./input-date.component.scss', '../inputs.scss'],\r\n  providers: InputProviderFactory.GetProvider(InputDateComponent)\r\n})\r\nexport class InputDateComponent extends CustomInput<string> implements OnInit {\r\n\r\n  @Input() configuration: InputDateConfiguration = new InputDateConfiguration();\r\n\r\n  constructor(\r\n    @Optional() @Host() @SkipSelf()\r\n    override controlContainer : ControlContainer,\r\n    override elementRef       : ElementRef,\r\n  ) { super(); this.HandleSelector(); }\r\n\r\n  public presentation: \"date-time\" | \"date\" | \"time\" | string = \"date-time\"\r\n  private transform: Function = ((v) => { console.warn(\"[ Component isn't ready ]\"); })\r\n\r\n  HandleSelector(){\r\n    const selector: string = (this.elementRef.nativeElement.tagName.toLowerCase() as string).replace('input-', '');\r\n    this.presentation = selector;\r\n    \r\n    if(selector == \"date-time\"){ this.transform = Utils.DateISOToDDMMYYYYHHMM }\r\n    if(selector == \"date\")     { this.transform = Utils.DateISOToDDMMYYYY }\r\n    if(selector == \"time\")     { this.transform = TimeTransform }\r\n  }\r\n\r\n  id_modal: string = \"\";\r\n  override async ngOnInit() {\r\n    super.ngOnInit();\r\n    this.id_modal = `${this.formControlName}${this.id}${Utils.GenerateGUID()}${this.elementRef.nativeElement.tagName.toLowerCase()}`\r\n  }\r\n\r\n  dateModel: string | null = new Date().toISOString();\r\n  override writeValue(value: string | null){\r\n    if (value !== undefined && value != null) {\r\n      if(['date-time', 'date'].includes(this.presentation)){\r\n        this.dateModel = moment(value).toISOString();\r\n        this.setModel(value);\r\n      }else{\r\n        this.dateModel = this.transform(value);\r\n        this.setModel(this.transform(value));\r\n      }\r\n    }else{\r\n      this.dateModel = null;\r\n      this.setModel(null)\r\n    }\r\n  }\r\n  override get model(): string      {  if(this._model != null){ return this.transform(this._model); } else return null; }\r\n  override set model(value: string) { this._model = value; this.propagateChange(this._model); }\r\n  setModel(value: string){\r\n    this._model = value; \r\n  }\r\n  \r\n  get _val()  { return this.model; }\r\n  set _val(v) { }\r\n\r\n  get modal(){ return document.getElementById(this.id_modal) as any as IonModal}\r\n  Open(){ if(!this.disabled){ this.modal.present(); } }\r\n\r\n  Clear(){ \r\n    this.dateModel = null;\r\n    this.DateTimeChange();\r\n  }\r\n  DateTimeChange(): void{\r\n    if(this.dateModel){\r\n      if(this.presentation == 'time') { this.model = this.dateModel; } else\r\n      if(this.presentation == 'date') { this.model = this.dateModel.split('T')[0] + \"T00:00:00\" } else { this.model = this.dateModel }\r\n    }else{\r\n      this.model = this.dateModel\r\n    }\r\n  }\r\n}\r\n\r\nconst TimeTransform: Function = ((v: string): string => { \r\n  if(!v){ return null; }\r\n  if(v.split(':').length == 2){ \r\n    return v; \r\n  }else{ \r\n    return v.split(':')[0] + \":\" + v.split(':')[1]\r\n  }   \r\n})","<div class=\"flex relative overflow-hidden\">\r\n  <ion-card class=\"focus-within:on-focus ion-card-input\" [disabled]=\"loading || disabled\"\r\n    [ngClass]=\"{\r\n      'invalid'  : invalid,\r\n      'submitted': submitted,\r\n      'disabled' : disabled,\r\n      '!border-r-0 !rounded-r-none': configuration.clearable\r\n    }\"\r\n  >\r\n    <ion-card-content>\r\n      <ion-item lines=\"none\" class=\"w-full default-transition\">\r\n        <ion-input (click)=\"Open()\" [readonly]=\"true\" labelPlacement=\"stacked\" class=\"!opacity-100\" [(ngModel)]=\"_val\">\r\n          <ion-text id=\"label\" [ngClass]=\"{'required': required}\" slot=\"label\"> {{label}}</ion-text>\r\n        </ion-input>\r\n      </ion-item>\r\n    </ion-card-content>\r\n  </ion-card>\r\n  <div class=\"w-12 shrink-0\" [hidden]=\"!configuration.clearable\"> \r\n    <ion-button (click)=\"Clear()\"[disabled]=\"loading || disabled\" class=\"m-0 h-full w-full rounded-r-2xl on-hover\" style=\"--border-width: 1px 1px 2px 1px;\" size=\"small\" color=\"medium\" fill=\"outline\"> \r\n      <ion-icon slot=\"icon-only\" name=\"backspace\"></ion-icon> \r\n    </ion-button>\r\n  </div>\r\n  <input-loading [loading]=\"loading\"></input-loading>\r\n</div>\r\n\r\n<ion-modal [id]=\"id_modal\" [keepContentsMounted]=\"true\" class=\"bg-transparent\">\r\n  <ng-template>\r\n    <ion-datetime [presentation]=\"presentation\" #datetime id=\"{{id_modal}}-datetime\" locale=\"pt-BR\" [(ngModel)]=\"dateModel\" (ngModelChange)=\"DateTimeChange()\">\r\n      <ion-buttons slot=\"buttons\">\r\n        <ion-button color=\"primary\" fill=\"clear\" (click)=\"datetime.cancel(); modal.dismiss()\">\r\n          <ion-icon slot=\"icon-only\" name=\"close-circle\"></ion-icon>\r\n        </ion-button>\r\n        <ion-button color=\"primary\" fill=\"clear\" (click)=\"datetime.confirm(); modal.dismiss()\">\r\n          <ion-icon slot=\"icon-only\" name=\"checkmark-circle\"></ion-icon>\r\n        </ion-button>\r\n      </ion-buttons>\r\n    </ion-datetime>\r\n  </ng-template>\r\n</ion-modal>\r\n<ion-datetime-button class=\"hidden\" datetime=\"{{id_modal}}-datetime\"></ion-datetime-button>","import { Component, ElementRef, Host, HostListener, Input, OnInit, Optional, SkipSelf } from '@angular/core';\r\nimport { ControlContainer } from '@angular/forms';\r\n\r\nimport { formatNumber } from '@angular/common';\r\nimport { Timeout } from '../../core/services/utils.service';\r\nimport { CustomInput, InputProviderFactory } from '../inputs/inputs';\r\nimport { InputCurrencyConfiguration, InputDecimalConfiguration, InputNumberConfiguration } from '../inputs/input-configuration';\r\n\r\n@Component({\r\n  selector: 'input-decimal, input-number, input-currency, inout-percentage',\r\n  templateUrl: './input-decimal.component.html',\r\n  styleUrls: ['./input-decimal.component.scss', '../inputs.scss'],\r\n  providers: InputProviderFactory.GetProvider(InputDecimalComponent)\r\n})\r\nexport class InputDecimalComponent extends CustomInput<number> implements OnInit {\r\n\r\n  @Input() configuration: InputDecimalConfiguration | InputNumberConfiguration | InputCurrencyConfiguration;\r\n\r\n  constructor(\r\n    @Optional() @Host() @SkipSelf()\r\n    override controlContainer: ControlContainer,\r\n    override elementRef: ElementRef\r\n  ) { super(); this._model = 0; }\r\n\r\n  override async ngOnInit() {\r\n    super.ngOnInit();\r\n\r\n    this.HandleSelector();\r\n    this.setDivider();\r\n  }\r\n\r\n  digitsInfo: string = \"1.2-2\";\r\n  setDigitsInfo(): void { this.digitsInfo = `1.${this.configuration.precision}-${this.configuration.precision}`; }\r\n  HandleSelector(): void{\r\n    const selector: string = this.elementRef.nativeElement.tagName.toLowerCase().split('-')[1];\r\n\r\n    if(selector == \"number\"   && !this.configuration){ this.configuration = new InputNumberConfiguration();   } else\r\n    if(selector == \"decimal\"  && !this.configuration){ this.configuration = new InputDecimalConfiguration();  } else\r\n    if(selector == \"currency\" && !this.configuration){ this.configuration = new InputCurrencyConfiguration(); }\r\n    this.setDigitsInfo();\r\n  }\r\n\r\n  override writeValue(value: number){ this._model = value; }\r\n\r\n  override get model(): string      { \r\n    var formated = formatNumber(this._model, \"pt-BR\", this.digitsInfo);\r\n    if(this.configuration.thousandSeparator){  \r\n      return formated;\r\n    }else{\r\n      return formated.replaceAll(thousandSeparator, '')\r\n    } \r\n  }\r\n  override set model(value: number) { this._model = value; this.propagateChange(this._model); }\r\n\r\n  //#region [ Event Handler ]\r\n  @HostListener('keydown', ['$event'])\r\n  onKeyDown(event: any) {\r\n    this.eventType = 0;\r\n    this.event = event;\r\n    this.key   = event.key;\r\n    \r\n    this.altKey   = this.event.altKey;\r\n    this.ctrlKey  = this.event.ctrlKey;\r\n    this.shiftKey = this.event.shiftKey;\r\n\r\n    this.startPosition = event.target.selectionStart;\r\n    this.endPosition   = event.target.selectionEnd;\r\n\r\n    this.value = event.target.value;\r\n\r\n    this.HandleBrowser();\r\n  }\r\n  \r\n  @HostListener('paste', ['$event'])\r\n  onPaste(event: any) {\r\n    this.event.preventDefault();\r\n    \r\n    let clipboardData = event.clipboardData || window['clipboardData'];\r\n    let pastedText = clipboardData.getData('text');\r\n\r\n    const s = pastedText.replaceAll('.', '').replaceAll(',', '.');\r\n    const n = Number(s);\r\n\r\n    if(Number(s) && isFinite(n)){ \r\n      this.model = n;\r\n    } else{\r\n\r\n    }\r\n    event.preventDefault();\r\n  }\r\n\r\n  key: string | null | undefined;\r\n  \r\n  altKey  : boolean = false;\r\n  ctrlKey : boolean = false;\r\n  shiftKey: boolean = false;\r\n\r\n  startPosition : number;\r\n  endPosition   : number;\r\n\r\n  value: string;\r\n\r\n  event    : any;\r\n  eventType: number;\r\n  \r\n  atLeft: string;\r\n  atRight: string;\r\n\r\n  HandleBrowser(){\r\n    this.atLeft  = this.value.slice(0, this.startPosition); \r\n    this.atRight = this.value.slice(this.endPosition, this.value.length); \r\n    if([\"-\"].includes(this.key)){ \r\n      return this.HandleNegative();\r\n    }else\r\n    if([\"V\", \"v\"].includes(this.key) && this.ctrlKey){ \r\n      //@HostListener('paste', ['$event'])\r\n    }else\r\n    if(lstNumbers.includes(this.key)){ \r\n      return this.HandleNumber(); \r\n    }else\r\n    if(lstEspecialCases.includes(this.key)){ \r\n      return this.HandleEspecial(); \r\n    }else\r\n    if([\"A\", \"a\"].includes(this.key) && this.ctrlKey){ \r\n      return; \r\n    }else\r\n    if([\"C\", \"c\"].includes(this.key) && this.ctrlKey){ \r\n      return this.HandleCopy(); \r\n    }else\r\n    if(lstIgnoreNotPrevent.includes(this.key)){ \r\n      return; \r\n    }else\r\n    this.event.preventDefault();\r\n  }\r\n\r\n  divider: number;\r\n  setDivider(){\r\n    var d = \"1\";\r\n    for(let i = 0; i < this.configuration.precision; i++){\r\n      d += \"0\"; \r\n    }\r\n    this.divider = Number(d);\r\n  }\r\n\r\n  async HandleNumber(){\r\n    this.event.preventDefault();\r\n\r\n    var focusEnd = this.startPosition == 0 && this.endPosition == this.model.length;\r\n    /** [ Remove decimalSeparator & thousandSeparator ] */\r\n    const f = this.atLeft + this.key + this.atRight;\r\n    const CurrentValue: number = this.SanitizeValue(f);\r\n    if(CurrentValue == this._model){ return false; }\r\n    if(CurrentValue > decimalMaxValue){\r\n      return false;\r\n    }\r\n    \r\n    //[ Handle Set Cursor Position]\r\n    this.model = CurrentValue;\r\n    const newPos = this.startPosition + 1 + this.model.split('.').length - this.value.split('.').length;\r\n    \r\n    //Horrivel, mas nao sem uma alternativa boa, https://stackoverflow.com/questions/511088/use-javascript-to-place-cursor-at-end-of-text-in-text-input-element\r\n    await Timeout(0);\r\n    this.event.target.setSelectionRange(newPos, newPos); \r\n    if(focusEnd){\r\n      this.event.target.setSelectionRange(this.model.length, this.model.length); \r\n    }\r\n\r\n    return false;\r\n  }\r\n \r\n  async HandleNegative(){\r\n    this.event.preventDefault();\r\n\r\n    var focusEnd = this.startPosition == 0 && this.endPosition == this.model.length;\r\n    /** [ Remove decimalSeparator & thousandSeparator ] */\r\n    var f;\r\n    if(!this.atLeft.includes('-')){\r\n      f = this.key + this.atLeft + this.atRight;\r\n    }else{\r\n      f = (this.atLeft + this.atRight).replace('-', '')\r\n    }\r\n    if(f == \"-\"){ \r\n      if(this.value.includes('-')){\r\n        f = this.value.replace('-', '');\r\n      }\r\n      else{\r\n        f = `-${this.value}`;\r\n      }\r\n    }\r\n\r\n    const CurrentValue: number = this.SanitizeValue(f);\r\n    if(CurrentValue == this._model){ return false; }\r\n    \r\n    //[ Handle Set Cursor Position]\r\n    this.model = CurrentValue;\r\n    const newPos = this.startPosition + 1 + this.model.split('.').length - this.value.split('.').length;\r\n    \r\n    //Horrivel, mas nao sem uma alternativa boa, https://stackoverflow.com/questions/511088/use-javascript-to-place-cursor-at-end-of-text-in-text-input-element\r\n    await Timeout(0);\r\n    this.event.target.setSelectionRange(newPos, newPos); \r\n    if(focusEnd){\r\n      this.event.target.setSelectionRange(this.model.length, this.model.length); \r\n    }\r\n    return false;\r\n  }\r\n\r\n  async HandleEspecial(){\r\n    this.event.preventDefault();\r\n    if(this.startPosition == this.endPosition){\r\n      if(this.key == \"Backspace\"){\r\n        if(this.startPosition == this.endPosition && this.startPosition == 0){ return false; }\r\n\r\n        const previousChar: string = this.atLeft[this.atLeft.length - 1];\r\n        const isNumber = lstNumbers.includes(previousChar);\r\n        const f = this.atLeft.slice(0, this.atLeft.length - (isNumber ? 1 : 2)) + this.atRight;\r\n        const CurrentValue = this.SanitizeValue(f);\r\n        \r\n        //[ Handle Set Cursor Position]\r\n        this.model = CurrentValue;\r\n        await Timeout(0);\r\n        this.event.target.setSelectionRange(this.startPosition, this.startPosition); \r\n        \r\n        return false;\r\n      }else\r\n      if(this.key == \"Delete\"){\r\n        const nextChar: string = this.atRight[0];\r\n        const isNumber = lstNumbers.includes(nextChar);\r\n        const f = this.atLeft + this.atRight.slice(isNumber ? 1 : 2);\r\n        const CurrentValue = this.SanitizeValue(f);\r\n        \r\n        //[ Handle Set Cursor Position]\r\n        this.model = CurrentValue;\r\n        var newPos: number = this.startPosition - 1\r\n        if(newPos <= -1){ newPos = 0; }\r\n\r\n        await Timeout(0);\r\n        this.event.target.setSelectionRange(newPos, newPos);\r\n        \r\n        return false;\r\n      }\r\n    }else{\r\n      const f = this.atLeft + this.atRight;\r\n      const CurrentValue = this.SanitizeValue(f);\r\n      this.model = CurrentValue;\r\n      \r\n      await Timeout(0);\r\n      this.event.target.setSelectionRange(this.model.length, this.model.length); \r\n\r\n      return false;\r\n    }\r\n  }\r\n\r\n  async HandleCopy(){\r\n    //[ Not necessary, default behaviour might work ]\r\n    // this.event.preventDefault();\r\n\r\n    // var str = this.model;\r\n    // var lst = str.split('');\r\n    // lst.splice(this.endPosition, str.length - this.endPosition);\r\n    // lst.splice(0, this.startPosition)\r\n    // var copy = lst.join('').replaceAll(this.configuration.thousandSeparator, '').replace(this.configuration.decimalSeparator, '.');\r\n    // console.log(copy)\r\n    // Clipboard.write({string: copy}).catch(() => {\r\n    //   navigator.clipboard.writeText(copy);\r\n    // });\r\n  }\r\n\r\n  SanitizeValue(f: string): number{\r\n    var CurrentValue: number = Number(Sanitize(f)) / this.divider;\r\n    //[ Cancela se o valor for muito alto ]\r\n    if(CurrentValue >= decimalMaxValue){ \r\n      return this._model; \r\n    }\r\n    return CurrentValue;\r\n  }\r\n  //#endregion [ Event Handler ]\r\n}\r\n\r\nconst decimalMaxValue = 9_000_000_000_000.00\r\n\r\nconst decimalSeparator : string = \",\";\r\nconst thousandSeparator: string = \".\";\r\n\r\nconst Sanitize: Function = ((v: string): string => { \r\n  return v.replaceAll(thousandSeparator, '')\r\n          .replace   (decimalSeparator , '') \r\n        });\r\n\r\nconst lstNumbers = [\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\"];\r\nconst lstIgnoreNotPrevent = [\r\n  \"Tab\", \"CapsLock\", \"Shift\", \"Control\", \"Alt\", \"ArrowRight\", \"ArrowUp\", \"ArrowDown\", \"ArrowLeft\"\r\n];\r\nconst lstEspecialCases = [\r\n  \"Backspace\", \"Delete\"\r\n];","<div class=\"flex relative overflow-hidden\">\r\n  <ion-card class=\"focus-within:on-focus ion-card-input\" [disabled]=\"loading || disabled\"\r\n      [ngClass]=\"{\r\n        'invalid'  : invalid,\r\n        'submitted': submitted,\r\n        'disabled': disabled,\r\n      }\"\r\n    >\r\n    <ion-card-content>\r\n      <div class=\"relative flex\">\r\n        <ion-item class=\"w-full shrink-0\" [ngClass]=\"{'required' : required}\" lines=\"none\">\r\n          <ion-input\r\n            class=\"default-transition\" [value]=\"model\" labelPlacement=\"stacked\"\r\n          >\r\n            <ion-text [ngClass]=\"{'required': required}\" slot=\"label\"> {{label}} </ion-text>\r\n            <span *ngIf=\"configuration.prefix\" slot=\"start\">{{configuration.prefix}}</span>\r\n            <span *ngIf=\"configuration.sufix\"  slot=\"end\"  >{{configuration.sufix}}</span>\r\n          </ion-input>\r\n        </ion-item>\r\n      </div>\r\n    </ion-card-content>\r\n  </ion-card>\r\n  <input-loading [loading]=\"loading\"></input-loading>\r\n</div>","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { Environment } from './classes/config';\r\nimport { EnvironmentService } from './core/services/environment.service';\r\n\r\nexport const LibraryConfigService = new InjectionToken<Environment>('Environment');\r\n\r\n\r\n@NgModule({\r\n  declarations: [],\r\n  exports     : [],\r\n  imports: [\r\n    CommonModule\r\n  ],\r\n})\r\nexport class FrameworkCoreModule { \r\n  static forRoot(config: Environment): ModuleWithProviders<FrameworkCoreModule> {\r\n    return { \r\n      ngModule: FrameworkCoreModule,\r\n      providers: [ \r\n        EnvironmentService, { provide: LibraryConfigService, useValue: config }, \r\n      ]\r\n    }\r\n  }\r\n}\r\n","import { FormBuilder, FormGroup } from \"@angular/forms\";\r\nimport { IComparison } from \"../classes/comparison\";\r\nimport { INT_MAX } from \"../core/services/utils.service\";\r\nimport { TableField } from \"./inputs/table-field\";\r\n\r\nexport class TableFieldFormBuilder {\r\n    static create(lstTableFields: TableField[], fb: FormBuilder): FormGroup{\r\n        const frm: FormGroup = fb.group({});\r\n\r\n        lstTableFields.forEach(field => { frm.addControl(field.index, field.formControl); });\r\n\r\n        return frm;\r\n    }\r\n}\r\n\r\nexport class ViewFiltros{\r\n    limit          : number         = 0;\r\n    public filter  : IComparison | null = null;\r\n  \r\n    constructor(\r\n        limit : number | null = 25, \r\n        public search: string = \"\", \r\n        public page  : number = 1, \r\n        public orderByProperty: string | null = null, \r\n        public ascending      : boolean = true\r\n    ){\r\n        if(limit == null){ \r\n            this.limit = INT_MAX \r\n        } \r\n        else { \r\n            this.limit = limit; \r\n        }\r\n    }\r\n}","import { INT_MAX } from \"../core/services/utils.service\";\r\nimport { ViewFiltros } from \"../components/classes\";\r\n\r\n/** Classe base para utiolização de credenciais para autenticação na API */\r\nexport interface Credentials{\r\n    apelido : string;\r\n    senha   : string;\r\n}\r\n\r\n/** Opções de paginação */\r\nexport interface PageOption {\r\n    /** Quantidade de entidades a serem buscadas, se igual a null, busca todos os valores */\r\n    value: number | null; \r\n    /** Texto a ser exibido no select de listagem */\r\n    label: string;\r\n}\r\n\r\nexport class Environment {\r\n    production     : boolean = false;\r\n    applicationName: string  = \"Panel\";\r\n    apiUrl         : string | null = null;\r\n    defaultCredentials: Credentials = { apelido: \"admin\", senha: \"Coopertec@2017\" };\r\n    defaultPageLimits : PageOption[] = [\r\n        { value: 25  , label: \"25\"    },\r\n        { value: 50  , label: \"50\"    },\r\n        { value: 100 , label: \"100\"   },\r\n        { value: 200 , label: \"200\"   },\r\n        { value: INT_MAX, label: \"Todos\" },\r\n    ];\r\n    get defaultPageLimit(): number | null {\r\n        return this.defaultPageLimits[0].value\r\n    }\r\n    get defaultPaginationObject(): ViewFiltros{\r\n        return new ViewFiltros(10, \"\", 1)\r\n    }\r\n\r\n    constructor(production: boolean, applicationName: string, apiUrl: string, defaultCredentials?: Credentials, defaultPageLimits?: PageOption[]){\r\n        this.production         = production;\r\n        this.applicationName    = applicationName;\r\n        this.apiUrl             = apiUrl;\r\n        //[ ApiUrls ]\r\n        if(defaultCredentials)\r\n        this.defaultCredentials = defaultCredentials;\r\n        if(defaultPageLimits)\r\n        this.defaultPageLimits  = defaultPageLimits\r\n    }\r\n}","import { Inject, Injectable } from \"@angular/core\";\r\nimport { LibraryConfigService } from \"../../core.module\";\r\nimport { Environment } from \"../../classes/config\";\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class EnvironmentService {\r\n    constructor(@Inject(LibraryConfigService) private config: Environment) {\r\n        this._environment = this.config;\r\n    }\r\n\r\n    private _environment: Environment\r\n    get environment(): Environment{\r\n        return this._environment;\r\n    }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Title } from '@angular/platform-browser';\r\nimport { AlertButton, AlertController, ToastController } from \"@ionic/angular\";\r\n\r\nimport { EnvironmentService } from './environment.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\n\r\nexport class GenericService{\r\n  constructor(\r\n    private toastController: ToastController,\r\n    private alertController: AlertController,\r\n    private titleController: Title,\r\n    private coreService: EnvironmentService,\r\n  ){}\r\n\r\n  public async PresentToast(message: string, icon = 'alert-circle') {\r\n    const toast = await this.toastController.create({\r\n      message: message,\r\n      duration: 1750,\r\n      icon: icon,\r\n      position: 'bottom',\r\n      translucent: false, \r\n    });\r\n\r\n    await toast.present();\r\n  }\r\n  \r\n  public async PresentToastSuccess(message: string = \"Salvo com sucesso!\") {\r\n    const toast = await this.toastController.create({\r\n      message: message,\r\n      duration: 1750,\r\n      icon: 'checkmark-circle',\r\n      position: 'bottom',\r\n      translucent: false,\r\n    });\r\n\r\n    await toast.present();\r\n    return toast.onDidDismiss();\r\n  }\r\n\r\n  public static CancelButton: AlertButton = {\r\n    text: 'Cancelar',\r\n    role: 'cancel',\r\n  }\r\n  public static ConfirmButton : AlertButton = {\r\n    text: 'OK',\r\n    role: 'confirm',\r\n  }\r\n  static defaultAlertButtons: AlertButton[] = [GenericService.ConfirmButton];\r\n\r\n  public async PresentAlert(header: string, message: string, buttons: AlertButton[] = GenericService.defaultAlertButtons) {\r\n    const alert = await this.alertController.create({\r\n      header:  header,\r\n      message: message,\r\n      buttons: buttons,\r\n    });\r\n    await alert.present();\r\n    return alert.onDidDismiss();\r\n  }\r\n\r\n  public SetTitle(title: string){\r\n    this.titleController.setTitle(this.coreService.environment.applicationName + \" | \" + title)\r\n  }\r\n\r\n  public GetId(activatedRoute: ActivatedRoute, depth: number = 2): number | null{\r\n    try{\r\n      var Route = activatedRoute;\r\n      for(let i = 0; i < depth; i++){\r\n        Route = Route.parent;\r\n      }\r\n      if(Route.snapshot.paramMap.has('id')){\r\n        return Number(Route.snapshot.paramMap.get('id'));\r\n      }\r\n      else{\r\n        return 0;\r\n      }\r\n    }catch{\r\n      return null;\r\n    }\r\n  }\r\n}","import { Injectable, OnInit } from '@angular/core';\r\nimport { EnvironmentService } from '../core/services/environment.service';\r\nimport { Preferences } from '@capacitor/preferences';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ApiUrlProviderService {\r\n\r\n  constructor(\r\n    private coreService: EnvironmentService,\r\n  ) { \r\n    this._production = coreService.environment.production;\r\n\r\n    this.apiUrl = this.coreService.environment.apiUrl;;\r\n\r\n    console.log(`%c [ sapphire-ion-framework : ${this.coreService.environment.applicationName} started @ development ] | Conectado em: ${this.apiUrl}`, \"background-color: #2fdf75; color: black;\")\r\n  }\r\n\r\n  //#region [ API URL ]\r\n  public _apiUrl: string = '';\r\n\r\n  public get apiUrl(): string{ return this._apiUrl; }\r\n  public set apiUrl(value: string){\r\n    this._apiUrl = value;\r\n  }\r\n  \r\n  private _production: boolean;\r\n\r\n  public get production() { return this._production; }\r\n  //#endregion [ API URL ]\r\n}\r\n\r\n// export class ApiUrl{\r\n//   label     : string; \r\n//   value     : string;\r\n//   production: boolean;\r\n//   constructor(value: string, port: number, production: boolean, https: boolean = false){\r\n//     this.production = production;\r\n//     if(!production){\r\n//       this.value = `http${https ? 's' : ''}://${value}:${port}/`;\r\n//       this.label = value;\r\n//     }else{\r\n//       this.value = `http${https ? 's' : ''}://${value}/`;\r\n//       this.label = 'Produção'\r\n//     }\r\n//   }\r\n// }","import { HttpClient, HttpEventType, HttpResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { GenericService } from '../core/services/generics.service';\r\n\r\nimport { HttpService } from './http.service';\r\nimport { ApiUrlProviderService } from './api-url-provider.service';\r\nimport { BehaviorSubject, Observable, Observer, Subscription } from 'rxjs';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class StorageService {\r\n\r\n  constructor(\r\n    private http : HttpClient,\r\n    private apiUrlProviderService: ApiUrlProviderService,\r\n    private genericService: GenericService\r\n  ) { }\r\n\r\n  private currentlyDownloading: Download[] = [];\r\n\r\n  public GetProgress(file: string): number{\r\n    const Download = this.currentlyDownloading.find(p => p.file == file)\r\n    return Download ? Download.progress : 0;\r\n  }\r\n\r\n  public StartDownload(file: string, params?: any, post: boolean = false): Download {\r\n    if(!this.currentlyDownloading.find(p => p.file == file)){\r\n      const download = new Download(file);\r\n      this.currentlyDownloading.push(download);\r\n      this.HandleDownload(download, params, post);\r\n      return download;\r\n    }\r\n    return this.currentlyDownloading.find(p => p.file == file);\r\n  }\r\n\r\n  private HandleDownload(download: Download, params?: any, post: boolean = false){\r\n    var request: Observable<any> = this.GetFile(download.file, params, post);\r\n\r\n    const requestProgess = new BehaviorSubject<any>(null);\r\n    download.requestProgess = requestProgess;\r\n    request.subscribe({\r\n      next: (event) => {\r\n        if (event.type === HttpEventType.DownloadProgress) { \r\n          download.progress = event.loaded / event.total; \r\n          requestProgess.next(download.progress);\r\n        } else \r\n        if (event.type === HttpEventType.Response) {\r\n          DownloadFile(event, download.file);\r\n          this.currentlyDownloading.splice(this.currentlyDownloading.indexOf(download), 1);\r\n          requestProgess.complete(); \r\n        }\r\n        if(event.status == 404){\r\n          this.genericService.PresentToast(\"Arquivo não encontrado / Url inválida\")\r\n          requestProgess.error(event); \r\n          requestProgess.complete(); \r\n        }\r\n      },\r\n      error: (err) => {\r\n        this.currentlyDownloading.splice(this.currentlyDownloading.indexOf(download), 1)\r\n      }\r\n    });\r\n    return request;\r\n  }\r\n\r\n  public static SanitizeFileName(v): string{\r\n    try{\r\n      \r\n      var filenameEnd: string  = v.split('/')[v.split('/').length - 1]\r\n      \r\n      if(filenameEnd.split('.').length <= 2){\r\n        return filenameEnd;\r\n      }else{\r\n        var lst = filenameEnd.split('.');\r\n        lst[0] = '';\r\n        return lst.join('.').replace('.', '');\r\n      }\r\n    }catch{\r\n      return v;\r\n    }\r\n  };\r\n\r\n  public GetFile(fileUrl: string, params?: any, post: boolean = false): Observable<any> {\r\n    var url: string;\r\n    if(fileUrl[0] == '/'){ \r\n      url = fileUrl.slice(1, fileUrl.length - 1);\r\n    }else{\r\n      url = `${this.apiUrlProviderService.apiUrl}${fileUrl}`;\r\n    }\r\n    url = encodeURI(url).replace(/#/g, '%23')\r\n\r\n    if(!post){\r\n      return this.http.get(url, {\r\n        reportProgress: true,\r\n        observe: 'events',\r\n        responseType: 'blob',\r\n        params: params\r\n      });\r\n    }else{\r\n      return this.http.post(url, params, {\r\n        reportProgress: true,\r\n        observe: 'events',\r\n        responseType: 'blob'\r\n      });\r\n    }\r\n  }\r\n}\r\n\r\nexport class Download {\r\n  requestProgess: Observable<any>;\r\n  progress      : number = 0.00001;\r\n  constructor(public file: string){}\r\n}\r\n\r\nfunction DownloadFile(data: HttpResponse<Blob>, fileUrl) {\r\n  const downloadedFile = new Blob([data.body], { type: data.body.type });\r\n\r\n  var fileURL = URL.createObjectURL(downloadedFile);\r\n  const linkElement = document.createElement(\"a\");\r\n  linkElement.setAttribute(\"href\", fileURL);\r\n  linkElement.setAttribute(\"target\", \"_blank\");\r\n  linkElement.setAttribute(\"download\", StorageService.SanitizeFileName(fileUrl));\r\n\r\n  let me = new MouseEvent(\"click\", {\r\n      view: window,\r\n      bubbles: true,\r\n      cancelable: false,\r\n  });\r\n\r\n  linkElement.dispatchEvent(me);\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\n@Component({\r\n  standalone: true,\r\n  imports: [ CommonModule, IonicModule ],\r\n  selector: 'loading',\r\n  templateUrl: './loading.component.html',\r\n  styleUrls: ['./loading.component.scss'],\r\n})\r\nexport class LoadingComponent  implements OnInit {\r\n\r\n  /** Texto exibido */\r\n  @Input() text    : string = \"Carregando, por favor aguarde...\";\r\n  /** Tipo do loading\r\n   *  1 - Componente basico - h-16 de altura \r\n   *  2 - Componente basico - h-16 de altura \r\n   *  3 - Componente absoluto, preenche o elemento superior relativo\r\n   */\r\n  @Input() type    : 1 | 2 | 3 = 1;\r\n  /** Utilizado no tipo 3, quando inativo é hidden */\r\n  @Input() loading : boolean = true;\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {}\r\n\r\n}\r\n","@switch (type) {\r\n  @case (1) {\r\n    <div class=\"w-full text-center h-16 flex items-center justify-center\">\r\n      <div class=\"flex items-center justify-center\">\r\n        <ion-spinner></ion-spinner>\r\n      </div>\r\n      @if(text){\r\n        <span>{{text}}</span>\r\n      }\r\n    </div>\r\n  }\r\n  @case (2) {\r\n    <div class=\"w-full text-center h-16 flex items-center justify-center\">\r\n      <div class=\"flex items-center justify-center\">\r\n        <ion-spinner></ion-spinner> \r\n        @if (text) {\r\n          <span class=\"ml-3\">{{text}}</span>\r\n        }\r\n      </div>\r\n    </div>\r\n  }\r\n  @case (3) {\r\n    <div class=\"absolute top-0 left-0 size-full opacity-0 -z-50 default-transition -translate-y-12 flex items-center justify-center !translucid-background\" \r\n      [ngClass]=\"{'!z-20 !opacity-100 !translate-y-0': loading}\">\r\n      <loading [type]=\"2\" [text]=\"text\"></loading>   \r\n    </div>\r\n  }\r\n}","import { Component, ElementRef, Host, Input, OnInit, Optional, SkipSelf } from '@angular/core';\r\nimport { ControlContainer, ControlValueAccessor } from '@angular/forms';\r\nimport { StorageService } from '../../web/storage.service';\r\nimport { CustomInput, InputProviderFactory } from '../inputs/inputs';\r\nimport { Utils, UtilsService } from '../../core/services/utils.service';\r\nimport { ApiUrlProviderService } from '../../web/api-url-provider.service';\r\nimport { PickedFile } from '@capawesome/capacitor-file-picker';\r\nimport { InputFileConfiguration } from '../inputs/input-configuration';\r\n\r\n@Component({\r\n  selector: 'input-file',\r\n  templateUrl: './input-file.component.html',\r\n  styleUrls: ['./input-file.component.scss', '../inputs.scss'],\r\n  providers: InputProviderFactory.GetProvider(InputFileComponent)\r\n})\r\nexport class InputFileComponent extends CustomInput<File[] | string> {\r\n\r\n  @Input() configuration: InputFileConfiguration = new InputFileConfiguration()\r\n\r\n  constructor(\r\n    @Optional() @Host() @SkipSelf()\r\n    override controlContainer: ControlContainer,\r\n    override elementRef: ElementRef,\r\n    private utilsService: UtilsService,\r\n    private apiUrlProviderService: ApiUrlProviderService,\r\n    public storageService: StorageService\r\n  ) { super() }\r\n\r\n  guid: string;\r\n  apiUrl: string;\r\n\r\n  override async ngOnInit() {\r\n    super.ngOnInit();\r\n    this.apiUrl = this.apiUrlProviderService.apiUrl;\r\n    this.guid = `${this.formControlName}${this.id}${Utils.GenerateGUID()}${this.elementRef.nativeElement.tagName.toLowerCase()}`\r\n  }\r\n\r\n  override writeValue(value: File[] | string): void { this.setModel(value); }\r\n  \r\n  override get model(){\r\n    if(!this._model){ return \"\"; }\r\n    \r\n    if(typeof(this._model) == \"string\") { \r\n      const t = this._model.split(';').length;\r\n      return t == 1 ? StorageService.SanitizeFileName(this._model) : `${t} Arquivos Armazenados`; \r\n    } else { \r\n      if(this._model.length > 1){ return `${this._model.length} Arquivos Selecionados` }\r\n      else                      { return this._model[0].name }\r\n    }\r\n\r\n  }\r\n  override set model(value: File[] | string) { \r\n    this.setModel(value);\r\n    this.propagateChange(this._model); \r\n  }\r\n  setModel(value: File[] | string) { \r\n    this._model = value;\r\n    \r\n    if(typeof(this._model) == \"string\"){\r\n      this.lstFiles = this._model.split(';');\r\n    }else{\r\n      this.lstFiles = [];\r\n    }\r\n  }\r\n\r\n  lstFiles: any[] = [];\r\n\r\n  Upload(): void{\r\n    this.utilsService.SelectFile(this.configuration).then((res) => { if(res){ this.model = res; } });\r\n  }\r\n  Download(value: string): void{\r\n    this.storageService.StartDownload(value);\r\n  }\r\n\r\n  PopoverImg(){\r\n    return !this.configuration.multiple && typeof(this._model) == \"string\" && this.ExtensionIsImage(this._model);\r\n  }\r\n  ExtensionIsImage(v){\r\n    try{\r\n      return imageTypes.includes(v.split('.')[v.split('.').length - 1])\r\n    }catch{}\r\n  }\r\n\r\n  get src(){\r\n    return this.apiUrl + this._model\r\n  }\r\n  get isCloud(){\r\n    return typeof(this._model) == \"string\"\r\n  }\r\n\r\n  Sanitize(v): string { return StorageService.SanitizeFileName(v); }\r\n\r\n  lstLoading: string[] = [];\r\n  SetLoading(path: string){\r\n    this.lstLoading.push(path);\r\n  }\r\n  SetNotLoading(path: string){\r\n    this.lstLoading.splice(this.lstLoading.indexOf(path), 1);\r\n  }\r\n  isLoading(path: string){\r\n    return this.lstLoading.indexOf(path) != -1;\r\n  }\r\n}\r\n\r\nexport const imageTypes: string[] = [\r\n  'jpe',\r\n  'jpg',\r\n  'jpeg',\r\n  'gif',\r\n  'png',\r\n  'bmp',\r\n  'ico',\r\n  'svg',\r\n  'svgz',\r\n  'tif',\r\n  'tiff',\r\n] ","<div class=\"flex relative overflow-hidden\">\r\n  <ion-card [disabled]=\"loading || disabled\"\r\n    class=\"!border-r-0 !rounded-r-none focus-within:on-focus ion-card-input\"\r\n    [ngClass]=\"{\r\n      'invalid'  : invalid,\r\n      'submitted': submitted,\r\n      'disabled': disabled,\r\n    }\"\r\n  >\r\n    <ion-card-content>\r\n      <ion-item lines=\"none\">\r\n        <ion-input [readonly]=\"true\" class=\"!opacity-100\" labelPlacement=\"stacked\" [(ngModel)]=\"model\">\r\n          <ion-text id=\"label\" [ngClass]=\"{'required': required}\" slot=\"label\"> {{label}} </ion-text>\r\n        </ion-input>\r\n      </ion-item>\r\n        <div class=\"absolute h-full right-2 top-0 z-50 flex items-center justify-center\">\r\n          <ion-button [id]=\"guid\"  [disabled]=\"!(lstFiles.length > 1)\"\r\n            class=\"aspect-square default-transition opacity-0 translate-x-12\" \r\n            [ngClass]=\"{'opacity-100 !translate-x-0 size-8':  lstFiles.length > 1 }\" \r\n            size=\"small\" fill=\"outline\" color=\"medium\"\r\n          >\r\n            <ion-icon name=\"ellipsis-vertical\" slot=\"icon-only\"></ion-icon>\r\n          </ion-button>\r\n        </div>\r\n\r\n        <div class=\"absolute h-full right-12 top-0 z-50 flex items-center justify-center\" [ngClass]=\"{'!z-0': !(_model && lstFiles.length == 1 && PopoverImg)}\" >\r\n          <ion-button [id]=\"guid + 'image'\" [disabled]=\"!(_model && lstFiles.length == 1 && PopoverImg)\"\r\n            class=\"aspect-square default-transition opacity-0 translate-x-12\" \r\n            [ngClass]=\"{'opacity-100 !translate-x-0 size-8': _model && lstFiles.length == 1 && PopoverImg }\" \r\n            size=\"small\" fill=\"outline\" color=\"medium\"\r\n          >\r\n            <ion-icon name=\"image\" slot=\"icon-only\"></ion-icon>\r\n          </ion-button>\r\n        </div>\r\n\r\n        <div class=\"absolute h-full right-2 top-0 z-50 flex items-center justify-center\" [ngClass]=\"{'!z-0': !(_model && lstFiles.length == 1 && PopoverImg)}\" >\r\n          <ion-button (click)=\"Download(_model.toString())\" [disabled]=\"!(_model && lstFiles.length == 1)\"\r\n            class=\"aspect-square default-transition opacity-0 translate-x-12\" \r\n            [ngClass]=\"{'opacity-100 !translate-x-0 size-8': _model && lstFiles.length == 1 }\" \r\n            size=\"small\" fill=\"outline\"\r\n          >\r\n            <ion-icon name=\"cloud-download\" slot=\"icon-only\"></ion-icon>\r\n          </ion-button>\r\n        </div>\r\n\r\n        @if (model) {\r\n          <ion-progress-bar *ngVar=\"storageService.GetProgress(_model.toString()) as val\" [value]=\"val\" class=\"absolute bottom-0 left-0 w-full h-1 default-transition\" [ngClass]=\"{'!h-0': !val}\"></ion-progress-bar>\r\n        }\r\n    </ion-card-content>\r\n  </ion-card>\r\n  <div class=\"w-12\"> \r\n    <ion-button (click)=\"Upload()\" class=\"m-0 h-full w-full rou on-hover rounded-r-2xl\"  [disabled]=\"loading || disabled\"  style=\"--border-width: 1px 1px 2px 1px; --border-radius: 0rem 1rem 1rem 0rem;\" size=\"small\" color=\"secondary\" fill=\"outline\"> \r\n      <ion-icon slot=\"icon-only\" name=\"cloud-upload\"></ion-icon> \r\n    </ion-button>\r\n  </div>\r\n  <input-loading [loading]=\"loading\"></input-loading>\r\n\r\n</div>\r\n\r\n@if (PopoverImg) {\r\n  <ion-popover [trigger]=\"guid + 'image'\" [keepContentsMounted]=\"true\" triggerAction=\"click\">\r\n    <ng-template>\r\n      <ion-img [src]=\"src\"></ion-img>      \r\n    </ng-template>\r\n  </ion-popover>\r\n}\r\n@if(configuration.multiple){\r\n  <ion-popover [trigger]=\"guid\" [keepContentsMounted]=\"true\" triggerAction=\"click\">\r\n    <ng-template>\r\n      <ion-content class=\"p-0 bg-transparent\">\r\n        <ion-list>\r\n          @for (item of lstFiles; track item; let i = $index; let l = $last) {\r\n            <section *ngVar=\"storageService.GetProgress(item) as val\">\r\n              <ion-item style=\"--background: transparent\" lines=\"{{l ? 'none' : 'full'}}\" button [detail]=\"false\">\r\n\r\n                <ion-icon name=\"download\" (click)=\"Download(item)\" slot=\"start\"></ion-icon> \r\n                @if (ExtensionIsImage(item)) {\r\n                  <ion-icon [id]=\"guid + '-' + i + '-nested-popover'\" name=\"image\" slot=\"start\"></ion-icon> \r\n                }\r\n\r\n                <ion-label>{{Sanitize(item)}}</ion-label>\r\n                <ion-text *ngIf=\"val != 0\" slot=\"end\" class=\"text-sm\"><b>{{val * 100 | number : '1.2-2'}}%</b></ion-text>\r\n              </ion-item>\r\n              <ion-progress-bar class=\"h-0 default-transition\" [ngClass]=\"{'h-1': val != 0 }\" [value]=\"val\"></ion-progress-bar>\r\n              <ion-popover *ngIf=\"ExtensionIsImage(item)\" side=\"end\" alignment=\"center\" [trigger]=\"guid + '-' + i + '-nested-popover'\" [dismissOnSelect]=\"true\" triggerAction=\"click\">\r\n                <ng-template>\r\n                  <ion-content *ngVar=\"isLoading(item) as isLoading\">\r\n                    <loading    [hidden]=\"!isLoading\"></loading>\r\n                    <ion-img    [hidden]=\"isLoading\" [src]=\"apiUrl + item\" (ionImgWillLoad)=\"SetLoading(item)\" (ionImgDidLoad)=\"SetNotLoading(item)\"></ion-img>\r\n                  </ion-content>\r\n                </ng-template>\r\n              </ion-popover>\r\n            </section>\r\n            }\r\n        </ion-list>\r\n      </ion-content>\r\n    </ng-template>\r\n  </ion-popover>\r\n}\r\n","import { Component, computed, ElementRef, input, Input, InputSignal, model, ModelSignal, OnInit, Signal } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { StorageService } from '../../../web/storage.service';\r\nimport { InputProviderFactory } from '../../inputs/inputs';\r\nimport { Utils } from '../../../core/services/utils.service';\r\nimport { imageTypes } from '../input-file.component';\r\nimport { ApiUrlProviderService } from '../../../web/api-url-provider.service';\r\nimport { InputFileConfiguration } from '../../../components/inputs/input-configuration';\r\n\r\n@Component({\r\n  selector: 'download-button',\r\n  templateUrl: './download-button.component.html',\r\n  styleUrls: ['./download-button.component.scss'],\r\n  providers: InputProviderFactory.GetProvider(DownloadButtonComponent)\r\n})\r\nexport class DownloadButtonComponent implements ControlValueAccessor {\r\n\r\n  @Input() expand: string = \"\";\r\n  value: ModelSignal<string> = model<string>();\r\n  @Input() size: string = \"small\";\r\n  @Input() params: any;\r\n  @Input() disabled: boolean;\r\n  @Input() post: boolean = false;\r\n  @Input() configuration: InputFileConfiguration = new InputFileConfiguration();\r\n  \r\n  constructor(\r\n    public storageService: StorageService,\r\n    private elementRef: ElementRef,\r\n    private apiUrlProviderService: ApiUrlProviderService\r\n  ) { }\r\n\r\n  registerOnChange(fn: any): void {\r\n    //throw new Error('Method not implemented.');\r\n  }\r\n  registerOnTouched(fn: any): void {\r\n    //throw new Error('Method not implemented.');\r\n  }\r\n  setDisabledState?(isDisabled: boolean): void {\r\n    //throw new Error('Method not implemented.');\r\n  }\r\n\r\n  guid : string = \"\";\r\n  apiUrl: string;\r\n\r\n  ngOnInit() {\r\n    this.apiUrl = this.apiUrlProviderService.apiUrl;\r\n    this.guid  = `${Utils.GenerateGUID()}${this.elementRef.nativeElement.tagName.toLowerCase()}`\r\n  }\r\n\r\n  lstFiles: Signal<string[]> = computed(() => {\r\n    if(typeof(this.value()) == \"string\"){\r\n      return this.value().split(';');\r\n    }else{\r\n      return [];\r\n    }\r\n  });\r\n\r\n  writeValue(value: string): void { this.value.set(value); }\r\n\r\n  Download(value: string): void{\r\n    this.storageService.StartDownload(value, this.params, this.post);\r\n  }\r\n\r\n  Sanitize(v): string {\r\n    return StorageService.SanitizeFileName(v);\r\n  }\r\n\r\n  ExtensionIsImage(v){\r\n    try{\r\n      return imageTypes.includes(v.split('.')[v.split('.').length - 1])\r\n    }catch{}\r\n  }\r\n\r\n  lstLoading: string[] = [];\r\n  SetLoading(path: string){\r\n    this.lstLoading.push(path);\r\n  }\r\n  SetNotLoading(path: string){\r\n    this.lstLoading.splice(this.lstLoading.indexOf(path), 1);\r\n  }\r\n  isLoading(path: string){\r\n    return this.lstLoading.indexOf(path) != -1;\r\n  }\r\n}\r\n","@if(lstFiles().length == 0){\r\n  <ion-button fill=\"outline\" [disabled]=\"true\" [size]=\"size\"> \r\n    <ion-icon name=\"close-circle\" slot=\"start\"></ion-icon>  \r\n    <ion-label> Sem arquivos... </ion-label>\r\n  </ion-button>\r\n}\r\n@else if(lstFiles().length == 1){\r\n  <ion-button *ngVar=\"storageService.GetProgress(lstFiles()[0]) as val\" class=\"relative block {{expand == 'block' ? 'size-full' : ''}}\" [disabled]=\"val != 0 || disabled\" (click)=\"Download(lstFiles()[0])\" fill=\"outline\" [size]=\"size\"> \r\n    <ion-icon name=\"download\" slot=\"start\"></ion-icon>  \r\n    <ion-label> {{Sanitize(lstFiles()[0])}} </ion-label>\r\n    <input-loading [loading]=\"val != 0\"></input-loading>\r\n    <div class=\"absolute size-full h-[calc(100%+var(--padding-top)+var(--padding-bottom))] w-[calc(100%+var(--padding-end)+var(--padding-start))]\">\r\n      <div class=\"size-full flex flex-row-reverse relative\">\r\n        <ion-progress-bar class=\"absolute bottom-0 left-0 w-full h-1 default-transition\" [ngClass]=\"{'-translate-y-4 opacity-0': (!val || val == 0)}\" [value]=\"val\"></ion-progress-bar>\r\n      </div>\r\n    </div>\r\n  </ion-button>\r\n}\r\n@else{\r\n  <ion-button [id]=\"guid\" fill=\"outline\" [size]=\"size\"> \r\n    <ion-icon name=\"download\" slot=\"start\"></ion-icon>  \r\n    <ion-label> {{lstFiles().length}} Arquivos </ion-label>\r\n  </ion-button>\r\n\r\n  <ion-popover [trigger]=\"guid\" [keepContentsMounted]=\"true\" triggerAction=\"click\">\r\n    <ng-template>\r\n      <ion-content class=\"p-0 bg-transparent\">\r\n        <ion-list>\r\n          @for (item of lstFiles(); track item; let i = $index; let l = $last) {\r\n            <section *ngVar=\"storageService.GetProgress(item) as val\">\r\n              <ion-item style=\"--background: transparent\" lines=\"{{l ? 'none' : 'full'}}\" button [detail]=\"false\">\r\n\r\n                <ion-icon name=\"download\" (click)=\"Download(item)\" slot=\"start\"></ion-icon> \r\n                @if (ExtensionIsImage(item)) {\r\n                  <ion-icon [id]=\"guid + '-' + i + '-nested-popover'\" name=\"image\" slot=\"start\"></ion-icon> \r\n                }\r\n\r\n                <ion-label>{{Sanitize(item)}}</ion-label>\r\n                <ion-text *ngIf=\"val != 0\" slot=\"end\" class=\"text-sm\"><b>{{val * 100 | number : '1.2-2'}}%</b></ion-text>\r\n              </ion-item>\r\n              <ion-progress-bar class=\"h-0 default-transition\" [ngClass]=\"{'h-1': val != 0 }\" [value]=\"val\"></ion-progress-bar>\r\n              <ion-popover *ngIf=\"ExtensionIsImage(item)\" side=\"end\" alignment=\"center\" [trigger]=\"guid + '-' + i + '-nested-popover'\" [dismissOnSelect]=\"true\" triggerAction=\"click\">\r\n                <ng-template>\r\n                  <ion-content *ngVar=\"isLoading(item) as isLoading\">\r\n                    <loading    [hidden]=\"!isLoading\"></loading>\r\n                    <ion-img    [hidden]=\"isLoading\" [src]=\"apiUrl + item\" (ionImgWillLoad)=\"SetLoading(item)\" (ionImgDidLoad)=\"SetNotLoading(item)\"></ion-img>\r\n                  </ion-content>\r\n                </ng-template>\r\n              </ion-popover>\r\n            </section>\r\n            }\r\n        </ion-list>\r\n      </ion-content>\r\n    </ng-template>\r\n  </ion-popover>\r\n}","export enum InputType {\r\n  Bool     = \"Bool\",\r\n  Currency = \"Currency\",\r\n  Date     = \"Date\",\r\n  DateTime = \"DateTime\",\r\n  Time     = \"Time\",\r\n  Decimal  = \"Decimal\",\r\n  Number   = \"Number\",\r\n  File     = \"File\",\r\n  String   = \"String\",\r\n  TextArea = \"TextArea\",\r\n  Select   = \"Select\",\r\n  Cpf      = \"Cpf\",\r\n  Cpnj     = \"Cnpj\",\r\n  CpfCnpj  = \"CpfCnpj\",\r\n}\r\n","import { FormControl } from \"@angular/forms\";\r\nimport { IComparison } from \"../../classes/comparison\";\r\nimport { InputType } from \"./input-type\";\r\nimport { InputBoolConfiguration, InputConfiguration, InputCurrencyConfiguration, InputDateConfiguration, InputDecimalConfiguration, InputFileConfiguration, InputNumberConfiguration, InputStringConfiguration } from \"./input-configuration\";\r\nimport { InputSelectConfiguration } from \"../input-select/configuration\";\r\n\r\nexport class TableField{\r\n  class     : string = \"xl:col-span-3 md:col-span-6 col-span-full\"\r\n\r\n  hiddenView: boolean = false;\r\n  hidden    : boolean = false;\r\n  filter    : IComparison | null = null;\r\n\r\n  constructor(\r\n    public header: string, \r\n    public index : string, \r\n    public formControl  : FormControl | null, \r\n    public type         : InputType   | null, \r\n    public configuration: InputConfiguration | null = null,\r\n    public disabled     : boolean = false\r\n  ){\r\n    if(configuration){ this.configuration = configuration }\r\n    else{\r\n      if(TableField.dateTypes.includes(type)){ this.configuration = new InputDateConfiguration() } else\r\n      if(type == InputType.File    ){ this.configuration = new InputFileConfiguration()     }else\r\n      if(type == InputType.Number  ){ this.configuration = new InputNumberConfiguration()   }else\r\n      if(type == InputType.Decimal ){ this.configuration = new InputDecimalConfiguration()  }else\r\n      if(type == InputType.Currency){ this.configuration = new InputCurrencyConfiguration() }else\r\n      if(type == InputType.String  ){ this.configuration = new InputStringConfiguration()   }else\r\n      if(type == InputType.Select  ){ this.configuration = new InputSelectConfiguration()   }else\r\n      if(type == InputType.TextArea){ \r\n        this.configuration = new InputStringConfiguration(); \r\n        this.class = \"col-span-full\"                          \r\n      }else \r\n      if(type == InputType.Bool    ){ \r\n        this.configuration = new InputBoolConfiguration(); \r\n        if(this.formControl.value == null){ this.formControl.setValue(false); } \r\n      }\r\n    }\r\n  }\r\n  private static readonly dateTypes = [InputType.Date, InputType.DateTime, InputType.Time];\r\n}\r\n","import { HttpClient, HttpEventType } from '@angular/common/http';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { Injectable, inject } from '@angular/core';\r\n\r\nimport { NavController } from '@ionic/angular';\r\nimport { BehaviorSubject, Observable, firstValueFrom } from 'rxjs';\r\n\r\nimport { GenericService } from '../core/services/generics.service';\r\n\r\nimport { ApiUrlProviderService } from './api-url-provider.service';\r\nimport { View } from '../components/default/default-view/view';\r\nimport { HttpServiceAtivo } from './http.ativo.service';\r\nimport { ViewFiltros } from '../components/classes';\r\nimport { PickedFile } from '@capawesome/capacitor-file-picker';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { TableField } from '../components/inputs/table-field';\r\nimport { InputType } from '../components/inputs/input-type';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport abstract class HttpService<V = any> {\r\n\r\n  public abstract route: string; \r\n  public abstract title: string; \r\n\r\n  constructor(\r\n    protected http          : HttpClient,\r\n    protected fb            : FormBuilder, \r\n    protected genericService: GenericService,\r\n    protected navController : NavController,\r\n    protected apiUrlProviderService: ApiUrlProviderService,\r\n  ) { }\r\n\r\n  public get fullRoute(): string{\r\n    return this.apiUrlProviderService.apiUrl + this.route\r\n  }\r\n\r\n  /** \r\n   * Retorna os dados de acordo com os filtros \r\n   * @param vFilter Filtra os dados (Pesquisa, Paginação e IComparison)\r\n  */\r\n  List(vFilter?: ViewFiltros): Observable<ViewRetorno<V>>{\r\n    return this.http.post<ViewRetorno<V>>(this.fullRoute + `/list`, vFilter);\r\n  }\r\n\r\n  /** Retorna o dado da tabela associada com a rota com o id indicado \r\n   * @param id id do dado\r\n  */\r\n  Get(id: number): Observable<V> { \r\n    return this.http.get<V>(this.fullRoute +`/get/${id}`);\r\n  }\r\n  \r\n  /** Salva as alterações no dado recebido */\r\n  Save<T = number>(obj: any | V, view?: View<HttpService | HttpServiceAtivo>): Observable<T>{\r\n    if(view){ view.submitted = true; }\r\n\r\n    var object = obj;\r\n    \r\n    if(obj instanceof FormGroup){ \r\n      if(obj.invalid){ \r\n        const r = new BehaviorSubject(null)\r\n        r.error(\"[ Invalid Form ]\");\r\n        r.complete();\r\n        this.genericService.PresentToast(\"Verifique os campos!\")\r\n        return r;\r\n      }\r\n    \r\n      object = obj.value; \r\n    }\r\n\r\n    const formData = new FormData();\r\n    this.FilesToForm(object, formData)\r\n    \r\n    if(obj instanceof FormGroup && this.hasFileForm && !view){ \r\n      console.error(\"[ FormGroup contains file, but view isnt passed ]\") \r\n    } else \r\n    if(view){ \r\n      return this._Save(formData, view); \r\n    } \r\n\r\n    return this.http.post<T>(this.fullRoute + `/save`, formData);\r\n  }\r\n\r\n  /** Exclui a entidade */\r\n  Delete(id: number): Observable<void> {\r\n    return this.http.delete<void>(this.fullRoute + `/delete/`+id);\r\n  }\r\n\r\n  /** Retorna todos os dados */\r\n  public Load(vFiltros?: ViewFiltros): Promise<ViewRetorno<V>>{\r\n    return firstValueFrom(this.List(vFiltros));\r\n  }\r\n\r\n  get lstTableFields()    : TableField[] { return []; } \r\n  get lstTableFieldsView(): TableField[] { return this.lstTableFields; } \r\n\r\n  get defaultId() {\r\n    var control = this.fb.control(0);\r\n    const field = new TableField(\"id\", \"id\", control, InputType.Number); \r\n    field.hidden = true;\r\n    field.hiddenView = true;\r\n    return field\r\n  }\r\n\r\n  get defaultIdEmpresa() {\r\n    var control = this.fb.control(0);\r\n    const field = new TableField(\"Empresa\", \"idEmpresa\", control, InputType.Select); \r\n    field.hiddenView = true;\r\n    field.hidden     = true;\r\n    return field;\r\n  }\r\n\r\n  private get hasFileForm(): boolean { return this.lstTableFieldsView.filter(p => p.type == InputType.File).length > 0; } \r\n\r\n  protected _Save(formData: FormData, view: View<HttpService | HttpServiceAtivo>): Observable<any | void>{\r\n    view.loading = true;\r\n\r\n    const subject = new BehaviorSubject<any>(null);\r\n    this.http.post(this.fullRoute +`/save`, formData, {\r\n      reportProgress: true,\r\n      observe: 'events',\r\n    }).subscribe({\r\n      next: (rez) => { \r\n        if(rez.type == HttpEventType.UploadProgress){\r\n          const res = rez.loaded / rez.total!; \r\n          subject.next(rez);\r\n          view.progress = res;  \r\n        }else \r\n        if(rez.type == HttpEventType.Response){\r\n          view.loading   = false; \r\n          view.submitted = false; \r\n          view.Refresh(); \r\n\r\n          const id: number = Number(rez.body)\r\n          //[ Redirect to view/id | redirectPath ]\r\n          if(view.id == 0){ this.RedirectRoute(id, view.redirectPath, view.GetCurrentRouting()); }\r\n        }\r\n      },\r\n      error:(err) => { \r\n        subject.error(err); \r\n        view.loading   = false; \r\n        view.submitted = false; \r\n        subject.complete(); \r\n      },\r\n      complete:() => { \r\n        this.genericService.PresentToastSuccess();\r\n        subject.complete(); \r\n      }\r\n    });\r\n\r\n    return subject;\r\n  }\r\n\r\n  private RedirectRoute(id: number, redirectPath: string, activatedRoute: ActivatedRoute): void {\r\n    if(!redirectPath){ return; }\r\n    const path = redirectPath.replace(\":id\", id.toString());\r\n    this.navController.navigateRoot([`../${path}`], { relativeTo: activatedRoute })\r\n  }\r\n\r\n  private FilesToForm(object: any, formData: FormData){\r\n    Object.entries(object).forEach((prop) => {\r\n      if(this.lstTableFieldsView.find(p => prop[0] == p.index && p.type == InputType.File)){\r\n        const formValue = prop[1];\r\n        if(formValue && typeof(formValue) != \"string\"){\r\n          var lstFiles = (formValue as any[])\r\n          lstFiles.forEach(e => {\r\n            if(e instanceof File){\r\n              const file: File = e; \r\n              const name = `file-${(formValue as any[]).indexOf(file)}-${prop[0]}`;\r\n              formData.append(name, e, e.name); \r\n            } else {\r\n              var file: PickedFile = e;\r\n              const fileToUpload = <File>file.blob;\r\n              const name = `file-${(formValue as any[]).indexOf(file)}-${prop[0]}`;\r\n              formData.append(name, fileToUpload, fileToUpload.name); \r\n            }\r\n          });\r\n          object[prop[0]]= \"\";\r\n        }\r\n      }\r\n    });\r\n    formData.append('view', JSON.stringify(object));\r\n  }\r\n}\r\n\r\nexport class ViewRetorno<T = any> {\r\n  lstDados: T[] = [];\r\n  total: number;\r\n}","import { NavController } from '@ionic/angular';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { GenericService } from '../core/services/generics.service';\r\nimport { ApiUrlProviderService } from './api-url-provider.service';\r\nimport { HttpService, ViewRetorno } from './http.service';\r\nimport { FormBuilder } from '@angular/forms';\r\nimport { ViewFiltros } from \"../components/classes\";\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { InputBoolConfiguration, InputBoolType } from '../components/inputs/input-configuration';\r\nimport { TableField } from '../components/inputs/table-field';\r\nimport { InputType } from '../components/inputs/input-type';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport abstract class HttpServiceAtivo<V = any> extends HttpService<V> {\r\n\r\n  constructor(\r\n    protected override http          : HttpClient,\r\n    protected override fb            : FormBuilder, \r\n    protected override genericService: GenericService,\r\n    protected override navController : NavController,\r\n    protected override apiUrlProviderService: ApiUrlProviderService,\r\n  ) { \r\n    super(http, fb, genericService, navController, apiUrlProviderService);\r\n  }\r\n\r\n  /**\r\n   * Troca o status de ativo da entidade\r\n   */\r\n  Ativar(id: number): Observable<boolean> {\r\n    return this.http.post<boolean>(this.fullRoute + `/ativar/${id}`, {});\r\n  }\r\n\r\n  /**\r\n   * Lista todos os dados ativos\r\n   * @param vFilter\r\n   */\r\n  ListAtivo<T = ViewRetorno>(vFilter?: ViewFiltros): Observable<T> {\r\n    return this.http.post<T>(this.fullRoute + `/listAtivo`, vFilter);\r\n  }\r\n\r\n  /**  Table Field padrão de ativo */\r\n  get defaultAtivo(): TableField {\r\n    var control = this.fb.control(true);\r\n    const field = new TableField(\"Ativo\", \"ativo\", control, InputType.Bool);\r\n    field.configuration = new InputBoolConfiguration(InputBoolType.toggle); \r\n    return field;\r\n  }\r\n}","import { ViewFiltros } from \"../classes\";\r\nimport { Observable, firstValueFrom } from \"rxjs\";\r\n\r\nimport { HttpServiceAtivo } from \"../../web/http.ativo.service\";\r\nimport { HttpService, ViewRetorno } from \"../../web/http.service\";\r\nimport { IComparison } from \"../../classes/comparison\";\r\nimport { INT_MAX } from \"../../core/services/utils.service\";\r\nimport { ISelect } from \"./ISelect\";\r\n\r\nexport type DefaultModelOptions = { value: string, label: string };\r\n\r\nexport class InputSelectConfiguration{\r\n  placeholder     : string = \"Selecione um item...\"\r\n  noItensFoundText: string = \"Sem items encontrados...\"\r\n\r\n  loader: InputSelectDataLoader;\r\n  loadFromArray   : any[];\r\n  loadFromService : HttpService | HttpServiceAtivo\r\n  loadFromFunction: Observable<any>\r\n\r\n  public vFiltros: ViewFiltros | null = null;\r\n\r\n  constructor(\r\n    /** Valor que será setado no formControl */\r\n    public bindValue: string | ((obj: any) => any)     = \"id\"  ,\r\n    /** Valor que será exibido */\r\n    public bindLabel: string | ((obj: any) => string)  = \"nome\", \r\n    \r\n    /** Indica se o select pode ser nulo e limpavel */\r\n    public clearable  : boolean = true, \r\n    /** Indica se o select pode ser pesquisado */\r\n    public searcheable: boolean = true, \r\n    \r\n    /** \r\n     * Se LoadFrom instanceof HttpService      -> Os dados serão carregados do List()\r\n     * Se LoadFrom instanceof HttpServiceAtivo -> Os dados serão carregados do ListAtivo()\r\n     * Se LoadFrom instanceof Observable       -> Os dados serão carregados da função indicada\r\n     * Se LoadFrom instanceof Array            -> Os dados serão o array\r\n     */\r\n    public loadFrom?:  HttpService | HttpServiceAtivo | Observable<ViewRetorno> | any[], \r\n    /** Se = true Os valores no form control seráo um array dos items selecionados */\r\n    public multiple : boolean = false,\r\n    /** Aplica os filtros na pesquisa */\r\n    vFiltros : Partial<{ \r\n      /** Aplica uma pesquisa em texto  */\r\n      search: string\r\n      /** Propriedade de ordenação */\r\n      orderByProperty: string\r\n      /** Orientação de ordenação */\r\n      ascending: boolean,\r\n      /** Filtro  */\r\n      filter: IComparison\r\n    }> | null = null,\r\n    /** Desativa os items que estão de acordo com a função */\r\n    public disableConditional: ((obj: any) => boolean) | null = null\r\n  ){\r\n    this.clearable   = clearable;\r\n    this.searcheable = searcheable;\r\n    this.multiple    = multiple;\r\n\r\n    if(vFiltros != null){\r\n      const v = vFiltros;\r\n      if(v.ascending == null || v.ascending == undefined){ v.ascending = true; }\r\n      this.vFiltros = new ViewFiltros(INT_MAX, v.search, 1, v.orderByProperty, v.ascending);\r\n      (this.vFiltros as ViewFiltros).filter = v.filter;\r\n    }\r\n\r\n    if(loadFrom){\r\n      if(Array.isArray(loadFrom)){ \r\n        this.loadFromArray    = loadFrom; \r\n      } else\r\n      if(loadFrom instanceof HttpService || loadFrom instanceof HttpServiceAtivo){ \r\n        this.loadFromService  = loadFrom;\r\n      } else {  \r\n        this.loadFromFunction = loadFrom;\r\n      }\r\n    }\r\n    this.loader = new InputSelectDataLoader(this);\r\n  }\r\n}\r\n\r\nexport class InputSelectDataLoader{\r\n  lstComponents: ISelect[] = [];\r\n  configuration: InputSelectConfiguration;\r\n\r\n  /** Valor que será setado no formControl */\r\n  public bindValue: ((obj: any) => any)   | null = null;\r\n  /** Valor que será exibido */\r\n  public bindLabel: ((obj: any) => string)| null = null;\r\n\r\n  constructor(configuration: InputSelectConfiguration){ \r\n    this.configuration = configuration; \r\n    this.bindValue = BindValueFactory(configuration)\r\n    this.bindLabel = BindLabelFactory(configuration)\r\n  }\r\n\r\n  public GetLabel(value: any){\r\n    if(!this.items || !this.bindValue || !this.bindLabel){ return \"\"; }\r\n    const item = this.items.find(p => this.bindValue(p) == value);\r\n    if(!item){ return \"\" ;}\r\n    return this.bindLabel(item);\r\n  }\r\n\r\n  AddComponent(component: ISelect){ \r\n    this.lstComponents.push(component);\r\n  }\r\n\r\n  private _isLoaded: boolean = false;\r\n\r\n  async Refresh(items?: any[]): Promise<void>{\r\n    this.lstComponents.forEach(component => { component.loadingFromLoader = true; });\r\n    \r\n    if(!this.configuration.loadFromService && !this.configuration.loadFromFunction && (!this.configuration.loadFromArray || !(this.configuration.loadFromArray.length > 0))){\r\n      this.items = items;\r\n      this._isLoaded = true;\r\n      this.lstComponents.forEach(component => { component.items.set(this.items); });\r\n    }\r\n    \r\n    try{\r\n      await this.Load();\r\n      this._isLoaded = true;\r\n      this.lstComponents.forEach(component => { component.items.set(this.items); });\r\n    }\r\n    finally{\r\n      this.lstComponents.forEach(component => { component.loadingFromLoader = false; });\r\n    }\r\n  }\r\n\r\n  private SetLstComponentsThisItens(){\r\n    this.lstComponents.forEach(component => { component.items.set(this.items); return; });\r\n  }\r\n\r\n  items: any[] = [];\r\n  async Load(): Promise<void>{\r\n    if(this._isLoaded){\r\n      this.SetLstComponentsThisItens();\r\n      return;\r\n    }\r\n\r\n    //[ Load from Array ]\r\n    if(this.configuration.loadFromArray != undefined && this.configuration.loadFromArray.length){\r\n      this.items = this.configuration.loadFromArray;\r\n      this.SetLstComponentsThisItens();\r\n      return;\r\n    }\r\n\r\n    //[ Load from api ]\r\n    var vFiltros: ViewFiltros | null = this.configuration.vFiltros;\r\n    try{\r\n      var lstDados: any[] = [];\r\n      \r\n      if(this.configuration.loadFromService){\r\n        lstDados = (await firstValueFrom(this.configuration.loadFromService.List(vFiltros))).lstDados\r\n      }else{\r\n        lstDados = (await firstValueFrom(this.configuration.loadFromFunction)).lstDados;\r\n      }\r\n\r\n      this.items = lstDados;\r\n      this.SetLstComponentsThisItens();\r\n    }finally{ return; }\r\n  }\r\n}\r\n\r\nexport function BindValueFactory(configuration: InputSelectConfiguration): ((obj: any) => any) {\r\n  const cBindValue = configuration.bindValue;\r\n  var bindValue: ((args: any) => any) = null;\r\n  if(typeof(cBindValue) == 'string'){\r\n    var bvS: string               = cBindValue;\r\n    bindValue = ((obj: any): any => { return obj[bvS]; });\r\n  }else{\r\n    var bvF: ((args: any) => any) = cBindValue;\r\n    bindValue = ((obj: any): any => { return bvF(obj); });\r\n  }\r\n  return bindValue;\r\n}\r\n\r\nexport function BindLabelFactory(configuration: InputSelectConfiguration): ((obj: any) => string){\r\n  const cBindLabel = configuration.bindLabel;\r\n  var bindLabel: ((args: any) => string) = null;\r\n  if(typeof(cBindLabel) == 'string'){\r\n    var blS: string               = cBindLabel;\r\n    bindLabel = ((obj: any): string => { return obj[blS] + ''; });\r\n  }else{\r\n    var blF: ((args: any) => any) = cBindLabel;\r\n    bindLabel = ((obj: any): string => { return blF(obj) + ''; });\r\n  }\r\n  return bindLabel;\r\n}","import { ModelSignal } from \"@angular/core\"\r\nimport { InputSelectConfiguration } from \"./configuration\"\r\n\r\nexport abstract class ISelect{\r\n  items            : ModelSignal<any[]>                   \r\n  configuration    : ModelSignal<InputSelectConfiguration>\r\n  loadingFromLoader: boolean\r\n  Clear : (() => void) \r\n  Select: ((item: any, UseDefaultModelOptions?) => void)\r\n  PresentPopover: (($event: MouseEvent) => Promise<void>)\r\n  UpdateUseDefaultModelOptions: (() => void);\r\n  Update: (() => void);\r\n}\r\nexport abstract class ISelectOption{\r\n  hidden  : boolean = false;\r\n  disabled: boolean = false;\r\n\r\n  label: ModelSignal<string>;\r\n  \r\n  model: any;\r\n  \r\n  GetNativeElement: (() => HTMLElement);\r\n\r\n  isSelected: boolean = false;\r\n  onFocus   : boolean = false;\r\n}","import { Component, ElementRef, Host, Input, InputSignal, ModelSignal, Optional, Signal, SkipSelf, computed, contentChild, effect, input, model, viewChild } from '@angular/core';\r\nimport { InputSelectComponent } from '../input-select.component';\r\nimport { IonItem, IonLabel } from '@ionic/angular';\r\nimport { DefaultModelOptions } from '../configuration';\r\nimport { ISelectOption, ISelect } from '../ISelect';\r\n\r\n@Component({\r\n  selector: 'input-select-option',\r\n  templateUrl: './input-select-option.component.html',\r\n  styleUrls: ['./input-select-option.component.scss', '../../inputs.scss'],\r\n})\r\nexport class InputSelectOptionComponent implements ISelectOption {\r\n\r\n  /** Atributo indicando que o navegador não deve renderizar o conteúdo do elemento. */\r\n  @Input() hidden  : boolean = false;\r\n  /** Se ativo desabilita o Input */\r\n  @Input() disabled: boolean = false;\r\n  /** Valor da opção em questão */\r\n  @Input() value: any;\r\n  \r\n\r\n  constructor(\r\n    protected parentComponent: ISelect,\r\n    private elementRef: ElementRef<HTMLElement>\r\n  ) { \r\n    effect(() => { \r\n      parentComponent.UpdateUseDefaultModelOptions(); \r\n      parentComponent.Update(); \r\n    }, { allowSignalWrites: true })\r\n  }\r\n\r\n  public GetNativeElement(){\r\n    return this.elementRef.nativeElement\r\n  }\r\n\r\n  /** Representa uma legenda para um item */\r\n  label: ModelSignal<string> = model<string>();\r\n  \r\n  public model = computed<DefaultModelOptions>(() => {\r\n    return { value: this.value, label: this.label() }\r\n  });\r\n\r\n  protected HandleClick(): void{\r\n    this.parentComponent.Select(this.model(), true);\r\n  }\r\n\r\n  isSelected: boolean = false;\r\n  onFocus   : boolean = false;\r\n}\r\n","<ion-item [disabled]=\"disabled\"  \r\n  [ngClass]=\"{'remove-select-padding': isSelected, 'opacity-0 !h-0' : hidden, 'bg-primary/10': onFocus}\" \r\n  lines=\"full\" \r\n  class=\"default-transition w-full flex items-center h-fit cursor-pointer justify-between overflow-hidden select-none hover:bg-primary/5\" \r\n  (click)=\"HandleClick()\"\r\n>\r\n  <ng-content select=\"[slot=start]\"></ng-content>\r\n  <div class=\"size-full flex items-center justify-start\">\r\n    <ng-content class=\"truncate w-full\"></ng-content>\r\n  </div>\r\n  <ng-content select=\"[slot=end]\"></ng-content>\r\n  <div slot=\"end\" class=\"w-6 flex items-center justify-start opacity-100 default-transition\" [ngClass]=\"{'!w-0 !opacity-0': !isSelected}\">\r\n    <ion-icon class=\"text-2xl\" color=\"primary\" name=\"checkmark\"></ion-icon>\r\n  </div>\r\n</ion-item>","import { Component, effect, ElementRef, Input, model, ModelSignal } from '@angular/core';\r\nimport { ISelectOption, ISelect } from '../ISelect';\r\n\r\n@Component({\r\n  selector: 'input-select-internal-option',\r\n  templateUrl: './input-select-internal-option.component.html',\r\n  styleUrls: ['./input-select-internal-option.component.scss', '../../inputs.scss'],\r\n})\r\nexport class InputSelectInternalOptionComponent implements ISelectOption {\r\n\r\n  @Input() hidden  : boolean = false;\r\n  @Input() disabled: boolean = false;\r\n\r\n  constructor(\r\n    protected parentComponent: ISelect,\r\n    private elementRef: ElementRef<HTMLElement>\r\n  ) {\r\n    effect(() => { \r\n      parentComponent.UpdateUseDefaultModelOptions(); \r\n      parentComponent.Update(); \r\n    }, { allowSignalWrites: true })\r\n  }\r\n\r\n  public GetNativeElement(){\r\n    return this.elementRef.nativeElement\r\n  }\r\n\r\n  label: ModelSignal<string> = model<string>();\r\n  \r\n  @Input() model: any;\r\n\r\n  protected HandleClick(): void{\r\n    this.parentComponent.Select(this.model, false);\r\n  }\r\n\r\n  @Input() isSelected: boolean = false;\r\n  onFocus   : boolean = false;\r\n}\r\n","<ion-item \r\n  [disabled]=\"disabled\" \r\n  [ngClass]=\"{'remove-select-padding': isSelected, 'opacity-0 !h-0' : hidden, 'bg-primary/10': onFocus}\" \r\n  lines=\"full\" \r\n  class=\"default-transition w-full flex items-center cursor-pointer justify-between overflow-hidden select-none hover:bg-primary/5\" \r\n  (click)=\"HandleClick()\"\r\n>\r\n  <ng-content select=\"[slot=start]\"></ng-content>\r\n  <div class=\"size-full flex items-center justify-start\">\r\n    <ng-content class=\"truncate w-full\"></ng-content>\r\n  </div>\r\n  <ng-content select=\"[slot=end]\"></ng-content>\r\n  <div slot=\"end\" class=\"w-6 flex items-center justify-start opacity-100 default-transition\" [ngClass]=\"{'!w-0 !opacity-0': !isSelected}\">\r\n    <ion-icon class=\"text-2xl\" color=\"primary\" name=\"checkmark\"></ion-icon>\r\n  </div>\r\n</ion-item>","import { Component, ContentChildren, ElementRef, Host, HostListener, ModelSignal, OnDestroy, OnInit, Optional, QueryList, Signal, SkipSelf, ViewChild, ViewChildren, WritableSignal, computed, effect, forwardRef, model, signal } from '@angular/core';\r\nimport { ControlContainer, ControlValueAccessor } from '@angular/forms';\r\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\r\nimport { IonInput, IonItem, IonPopover, IonSearchbar } from '@ionic/angular';\r\nimport { Observable, Subscription, interval } from 'rxjs';\r\n\r\nimport { CustomSignalInput, InputProviderFactory } from '../inputs/inputs';\r\nimport { BindLabelFactory, BindValueFactory, DefaultModelOptions, InputSelectConfiguration } from './configuration';\r\nimport { InputSelectOptionComponent } from './input-select-option/input-select-option.component';\r\nimport { InputSelectInternalOptionComponent } from './input-select-internal-option/input-select-internal-option.component';\r\nimport { Search } from '../../core/services/utils.service';\r\nimport { ISelect, ISelectOption } from './ISelect';\r\n\r\n@Component({\r\n  selector: 'input-select',\r\n  templateUrl: './input-select.component.html',\r\n  styleUrls: ['./input-select.component.scss', '../inputs.scss'],\r\n  providers: [...InputProviderFactory.GetProvider(InputSelectComponent), { \r\n    provide: ISelect, useExisting: forwardRef(() => InputSelectComponent)\r\n  }]\r\n})\r\nexport class InputSelectComponent extends CustomSignalInput<any> implements OnInit, OnDestroy, ControlValueAccessor, ISelect {\r\n\r\n  /** Items disponíveis no select */\r\n  public items            : ModelSignal<any[]>                    = model<any[]>([]);\r\n  /** Configuração do select */\r\n  public configuration    : ModelSignal<InputSelectConfiguration> = model<InputSelectConfiguration>(new InputSelectConfiguration()); \r\n  public loadingFromLoader: boolean = false;\r\n\r\n  @ContentChildren(InputSelectOptionComponent) lstOptions: QueryList<InputSelectOptionComponent>;\r\n  @ViewChildren(InputSelectInternalOptionComponent) lstInternalOptions: QueryList<InputSelectInternalOptionComponent>;\r\n  @ViewChild(CdkVirtualScrollViewport, { read: ElementRef<any> }) cdkVirtualScrollViewport: ElementRef<any>\r\n\r\n  private useDefaultModelOptions: WritableSignal<boolean> = signal<boolean>(false);\r\n  protected bindValue: Signal<((args: any) => any)>         = computed(() => { \r\n    if(this.useDefaultModelOptions()){ return ((obj: DefaultModelOptions): string => { return obj.value; }); }\r\n    return BindValueFactory(this.configuration());\r\n  });\r\n  protected bindLabel: Signal<((args: any) => string)>      = computed(() => {\r\n    if(this.useDefaultModelOptions()){ return ((obj: DefaultModelOptions): string => { return obj.label; }); }\r\n    return BindLabelFactory(this.configuration());\r\n  });\r\n\r\n  constructor(\r\n    @Optional() @Host() @SkipSelf()\r\n    override controlContainer: ControlContainer,\r\n    override elementRef      : ElementRef\r\n  ) { super();\r\n    effect(() => { this.Update(); }, { allowSignalWrites: true });\r\n\r\n    this.updateInterval     = interval(1000);\r\n    this.updateSubscription = this.updateInterval.subscribe(() => {\r\n      if(this.lastItemsQtd != this.items().length){\r\n        this.lastItemsQtd = this.items().length;\r\n        this.Update();\r\n      } \r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.updateSubscription.unsubscribe();\r\n  }\r\n\r\n  updateInterval: Observable<number> | null;\r\n  updateSubscription: Subscription;\r\n\r\n  lastItemsQtd: number | null = null;\r\n  \r\n  override ngOnInit() {\r\n    super.ngOnInit();\r\n\r\n    this.configuration().loader.AddComponent(this);\r\n    this.configuration().loader.Refresh(this.items());\r\n  }\r\n\r\n  public Clear(): void{ \r\n    this.model = null; \r\n    this.Update();\r\n  }\r\n  \r\n  protected CurrentLabel      : string  = \"\";\r\n  protected CurrentlyNoValue  : boolean = true;\r\n\r\n  public Update(){\r\n    this.UpdateSelected();\r\n    this.UpdateCurrentLabel(); \r\n  }\r\n  private UpdateCurrentLabel(): void{\r\n    if(this._model == null){ \r\n      this.CurrentLabel = this.configuration().placeholder;\r\n      this.CurrentlyNoValue = true;\r\n      return;\r\n    }\r\n    if(!this.configuration().multiple){\r\n      const m: any | null = this.items().find(p => this.bindValue()(p) == this._model);\r\n      if(m){ \r\n        this.CurrentLabel     = this.bindLabel()(m);\r\n        this.CurrentlyNoValue = false; \r\n      }\r\n      return;\r\n    }else{\r\n      if(!this._model){ \r\n        this.CurrentLabel = this.configuration().placeholder; \r\n        this.CurrentlyNoValue = true;\r\n        return; \r\n      }else\r\n      if(Array.isArray(this.model) && !this.model.length){ \r\n        this.CurrentLabel = this.configuration().placeholder; \r\n        this.CurrentlyNoValue = true;\r\n        return; \r\n      }\r\n      this.CurrentLabel     = \"\"; \r\n      this.CurrentlyNoValue = false;\r\n      return;\r\n    }\r\n  }\r\n  private UpdateSelected(){\r\n    if(this.lstOptions && this.lstOptions.length){\r\n      this.lstOptions.forEach(p => p.isSelected = false);\r\n      this.lstOptions.filter(p => Array.isArray(this._model) ? this._model.includes(p.value) : this._model == p.value).forEach(p => p.isSelected = true);\r\n    }\r\n  }\r\n\r\n  IsSelected(item: any){\r\n    if(Array.isArray(this._model)){\r\n      return this._model.includes(this.bindValue()(item));\r\n    }\r\n    return this._model == this.bindValue()(item);\r\n  }\r\n\r\n  /** Applies only on multiple */\r\n  protected GetSelectedItens(): any[]{\r\n    if(this._model && this.lstOptions.length){\r\n      return this.lstOptions.filter(p => p.isSelected).map(p => p.model()); \r\n    }\r\n    if(this._model && this.items()){\r\n      return this.items().filter(p => Array.isArray(this._model) ? this._model.includes(this.bindValue()(p)) : this._model == this.bindValue()(p)); \r\n    }\r\n\r\n    return [];\r\n  }\r\n\r\n  //[ Model ]\r\n  override _model: any = null;\r\n  override get model(): any      { return this._model;  }\r\n  override set model(value: any) { \r\n    this.SetModel(value);\r\n    this.propagateChange(this._model); \r\n  }\r\n  protected SetModel(value: any): void { \r\n    if(value == null ){ this._model = null; return; }\r\n\r\n    this._model = value;\r\n\r\n    this.Update();\r\n    return; \r\n  }\r\n\r\n  protected SearchChanged(): void{\r\n    if(this.lstOptions.length){\r\n      this.useDefaultModelOptions.set(true);\r\n      var lst = Search(this.lstOptions.map(p => p.model()), this.Search(), this.bindLabel()); \r\n      this.lstOptions.forEach(p => p.hidden = !lst.includes(p.model()))\r\n    }\r\n  }\r\n  \r\n  protected GetUseDefaultModelOptions(): boolean{\r\n    if(this.lstOptions && this.lstOptions.length){ return true; }\r\n    return false;\r\n  }\r\n\r\n  public UpdateUseDefaultModelOptions(): void{\r\n    this.useDefaultModelOptions.set(this.GetUseDefaultModelOptions());\r\n    if(this.useDefaultModelOptions()){ \r\n      if(this.items().length != this.lstOptions.length){\r\n        this.items.set(this.lstOptions.map(p => p.model())); \r\n      }\r\n    }\r\n  }\r\n\r\n  //[ Select ]\r\n  override writeValue(obj: any): void { this.SetModel(obj); }\r\n\r\n  public Select(item: any): void{\r\n    this.UpdateUseDefaultModelOptions();\r\n    \r\n    if(!this.configuration().multiple){ \r\n      this.model = this.bindValue()(item); \r\n    } \r\n    else{\r\n      var value =  this.bindValue()(item);\r\n\r\n      if(this._model){\r\n        if(this._model.includes(value)){ \r\n          this.model = [...this._model.filter(p => p != value)]; \r\n        }\r\n        else{\r\n          this.model = [...this._model, value];\r\n        }\r\n        return;\r\n      }\r\n\r\n      this.model = [value];\r\n      return;\r\n    }\r\n  }\r\n\r\n  protected interfaceOptions = { cssClass : 'wider-popover' }\r\n\r\n  @ViewChild('container', { read: ElementRef }) inputContainer: ElementRef<HTMLElement>;\r\n  @ViewChild(IonPopover) ionPopoverComponent: IonPopover;\r\n  @ViewChild(IonPopover, { read: ElementRef }) ionPopoverElement: ElementRef<HTMLElement>;\r\n  @ViewChild(IonSearchbar) searchbarComponent: IonSearchbar;\r\n\r\n  public async PresentPopover($event: MouseEvent) {\r\n    Object.defineProperty($event, 'target', { writable: false, value: this.inputContainer.nativeElement });\r\n    const Popover        = this.ionPopoverComponent;\r\n    const PopoverElement = this.ionPopoverElement.nativeElement as HTMLElement;\r\n    \r\n    const PopoverContent = Array.from(\r\n      Array.from(PopoverElement.shadowRoot.children).find(\r\n        p => p.classList.contains(\"popover-wrapper\")\r\n      ).children\r\n    ).find(\r\n      p => p.classList.contains(\"popover-content\")\r\n    ) as HTMLElement\r\n    PopoverContent.style.width = this.inputContainer.nativeElement.offsetWidth + 'px';\r\n    await Popover.present($event);\r\n    this.searchbarComponent.setFocus();\r\n\r\n    if(this.cdkVirtualScrollViewport){\r\n      this.cdkVirtualScrollViewport.nativeElement.scroll({ top: 1, behavior: 'smooth' });\r\n    }\r\n\r\n    this.focusedModel = null;\r\n    this.UpdateUseDefaultModelOptions();\r\n  };\r\n\r\n  protected Search        : ModelSignal<string> = model<string>(\"\");\r\n  protected lstSearchItens: Signal<any[]>       = computed<any[]>(() => { return Search(this.items(), this.Search(), this.bindLabel()); })\r\n\r\n  //#region [ Arrow/Tab Control ]\r\n  @ViewChild(IonInput) inputComponent: IonInput;\r\n  @ViewChild(IonItem, { read: ElementRef })  itemComponent : ElementRef<HTMLElement>;\r\n  @HostListener('document:keydown', ['$event'])\r\n  async HandleKeyboardEvent(event: KeyboardEvent) {\r\n    if(!this.inputComponent || !this.searchbarComponent){ return; }\r\n    \r\n    const inputComponent     = await this.inputComponent.getInputElement();\r\n    const searchbarComponent = await this.searchbarComponent.getInputElement();\r\n    \r\n    if(event.target == inputComponent && event.key == \"ArrowDown\" && this.configuration().searcheable){\r\n      this.itemComponent.nativeElement.click();\r\n      event.preventDefault();\r\n    }else\r\n    if(event.target == searchbarComponent){\r\n      this.UpdateUseDefaultModelOptions();\r\n\r\n      const items  = this.lstSearchItens();\r\n      if(event.key == \"ArrowDown\"){\r\n        if(this.focusedModel){\r\n          const index = items.indexOf(this.focusedModel);\r\n          \r\n          if(items[index + 1]){\r\n            this.SetFocusedElement(items[index + 1]);\r\n          }else{\r\n            this.SetFocusedElement(items[0]);\r\n          }\r\n        }else{\r\n          if(items[0]){\r\n            this.SetFocusedElement(items[0]);\r\n          }\r\n        }\r\n      }else\r\n      if(event.key == \"ArrowUp\"){\r\n        if(this.focusedModel){\r\n          const index = items.indexOf(this.focusedModel);\r\n\r\n          if(items[index - 1]){\r\n            this.SetFocusedElement(items[index - 1]);\r\n          }else{\r\n            this.SetFocusedElement(items[items.length -1]);\r\n          }\r\n        }\r\n      }else\r\n      if(event.key == \"Enter\"){\r\n        var Option: ISelectOption;\r\n        if(this.useDefaultModelOptions()){\r\n          Option = this.lstOptions.find(p => p.model() == this.focusedModel);\r\n        }else{\r\n          Option = this.lstInternalOptions.find(p => p.model == this.focusedModel);\r\n        }\r\n        if(!Option.disabled){\r\n          this.Select(this.focusedModel);\r\n        }\r\n      }\r\n    }\r\n  }\r\n  SetFocusedElement(focusedModel: any, scroll: boolean = true,): void{\r\n    this.focusedModel = focusedModel;\r\n    \r\n    var Option: ISelectOption;\r\n    if(this.useDefaultModelOptions()){\r\n      Option = this.lstOptions.find(p => p.model() == focusedModel);\r\n      this.lstOptions.filter(p => p.onFocus).forEach(p => p.onFocus = false);\r\n      Option.onFocus = true;\r\n    }else{\r\n      Option = this.lstInternalOptions.find(p => p.model == focusedModel);\r\n      this.lstInternalOptions.filter(p => p.onFocus).forEach(p => p.onFocus = false);\r\n      Option.onFocus = true;\r\n    }\r\n    \r\n    if(scroll){ Option.GetNativeElement().scrollIntoView({ behavior: 'smooth' }); }\r\n  }\r\n\r\n  focusedModel: any | null;\r\n  //#endregion [ Arrow/Tab Control ]\r\n}","<div class=\"relative flex overflow-hidden\" #container>\r\n  <ion-card \r\n      class=\"focus-within:on-focus ion-card-input\" \r\n      [disabled]=\"loading || loadingFromLoader || disabled\" \r\n      [class.invalid]=\"invalid\"\r\n      [class.submitted]=\"submitted\"\r\n      [class.disabled]=\"disabled\"\r\n      [ngClass]=\"{'!rounded-l-2xl !rounded-r-none !border-r-0': configuration().clearable}\"\r\n    >\r\n    <ion-card-content>\r\n      <ion-item lines=\"none\" class=\"rounded-2xl w-full relative\" (click)=\"PresentPopover($event)\" [ngClass]=\"{'!rounded-l-2xl !rounded-r-none': configuration().clearable }\">\r\n        <ion-input fill=\"none\" [readonly]=\"true\" labelPlacement=\"stacked\" [value]=\"CurrentLabel\" [class.no-items-opacity]=\"CurrentlyNoValue\">\r\n          <ion-text id=\"label\" [ngClass]=\"{'required': required() }\" slot=\"label\" class=\"!text-dark\"> \r\n            {{label}} \r\n          </ion-text>\r\n        </ion-input>\r\n        @if(configuration().multiple){\r\n          <div class=\"absolute left-0 bottom-0 h-6 w-full flex z-[90] overflow-x-auto\">\r\n            @for(item of GetSelectedItens(); track $index){\r\n              <div class=\"h-full flex bg-medium/10 border translucid-border rounded-lg mr-1 animated\">\r\n                <div (click)=\"Select(item); $event.stopPropagation()\" class=\"bg-medium/10 cursor-pointer translucid-border min-w-min !border-l-0 !border-y-0 h-full aspect-square flex items-center justify-center rounded-r-lg\"> \r\n                    <ion-icon color=\"danger\" name=\"close\"></ion-icon>\r\n                </div>\r\n                <div class=\"h-full px-1 select-none\"> {{bindLabel()(item)}} </div>\r\n              </div>\r\n            }\r\n          </div>\r\n        }\r\n      </ion-item>\r\n      \r\n    </ion-card-content>\r\n  </ion-card>\r\n  <input-loading [loading]=\"loading || loadingFromLoader\"></input-loading>\r\n  @if(configuration().clearable){\r\n    <div class=\"w-12\">\r\n      <ion-button (click)=\"Clear()\" [disabled]=\"loading || disabled || loadingFromLoader\" size=\"small\" fill=\"outline\" color=\"medium\" class=\"rounded-r-2xl h-full w-full\" style=\"--border-width: 1px 1px 2px 1px;\">\r\n        <ion-icon name=\"backspace\" slot=\"icon-only\"></ion-icon>\r\n      </ion-button>\r\n    </div>\r\n  }\r\n</div>\r\n\r\n<ion-popover class=\"input-select-popover\" [keepContentsMounted]=\"false\" [dismissOnSelect]=\"!configuration().multiple\" (didDismiss)=\"Search.set('')\">\r\n  <ng-template>\r\n    <div class=\"size-full flex flex-col bg-primary/10\">\r\n      <div class=\"w-full shrink-0\" [hidden]=\"!configuration().searcheable\">\r\n        <ion-searchbar [(ngModel)]=\"Search\" (ngModelChange)=\"SearchChanged()\" placeholder=\"Pesquisa...\" class=\"size-full bg-transparent\" [debounce]=\"100\"></ion-searchbar>\r\n      </div>\r\n\r\n      <div class=\"h-48 w-full overflow-hidden translucid-border !border-x-0 !border-b-0 rounded-t-2xl bg-light\" [ngClass]=\"{'!border-0': !configuration().searcheable}\">\r\n        @if(!lstOptions || !lstOptions.length){\r\n          <cdk-virtual-scroll-viewport itemSize=\"45\" [minBufferPx]=\"200\" [maxBufferPx]=\"300\" class=\"size-full\">\r\n            <input-select-internal-option [model]=\"item\" *cdkVirtualFor=\"let item of lstSearchItens()\" [isSelected]=\"IsSelected(item)\">\r\n              <ion-label class=\"truncate\">{{bindLabel()(item)}}</ion-label>\r\n            </input-select-internal-option>\r\n          </cdk-virtual-scroll-viewport>\r\n        }\r\n        @else {\r\n          <div class=\"size-full overflow-y-auto overflow-x-hidden mask-y\">\r\n            <ng-content select=\"input-select-option\"></ng-content>\r\n          </div>\r\n        }\r\n      </div>\r\n    </div>\r\n  </ng-template>\r\n</ion-popover>","import { Component, ElementRef, Host, Input, OnInit, Optional, Self, SkipSelf } from '@angular/core';\r\nimport { ControlContainer } from '@angular/forms';\r\nimport { InputStringConfiguration } from '../inputs/input-configuration';\r\nimport { CustomInput, InputProviderFactory } from '../inputs/inputs';\r\n\r\n@Component({\r\n  selector: 'input-string',\r\n  templateUrl: './input-string.component.html',\r\n  styleUrls: ['./input-string.component.scss', '../inputs.scss'],\r\n  providers: InputProviderFactory.GetProvider(InputStringComponent)\r\n})\r\nexport class InputStringComponent extends CustomInput<string> implements OnInit {\r\n\r\n  @Input() configuration: InputStringConfiguration = new InputStringConfiguration();\r\n  @Input() type: 'text' | 'password' = 'text';\r\n\r\n  constructor(\r\n    @Optional() @Host() @SkipSelf()\r\n    override controlContainer: ControlContainer,\r\n    override elementRef: ElementRef\r\n  ) { super(); }\r\n\r\n  override async ngOnInit() {\r\n    super.ngOnInit();\r\n  }\r\n\r\n  override writeValue(value: string){ this.setModel(value) }\r\n  override get model(): string      { return this._model;  }\r\n  override set model(value: string) { this.setModel(value); this.propagateChange(this._model); }\r\n\r\n  setModel(value){\r\n    if(value == null){ this._model = '' } else { this._model = value + '' }\r\n  }\r\n}\r\n","<div class=\"flex relative overflow-hidden\">\r\n  <ion-card class=\"focus-within:on-focus ion-card-input\" [disabled]=\"loading || disabled\"\r\n    [ngClass]=\"{\r\n      'invalid'  : invalid,\r\n      'submitted': submitted,\r\n      'disabled': disabled,\r\n    }\"\r\n  >\r\n    <ion-card-content>\r\n      <div class=\"flex\">\r\n        <ion-item class=\"w-full\" [ngClass]=\"{'submitted': submitted, 'invalid': invalid, 'required': required}\" lines=\"none\">\r\n          <ion-input [type]=\"type\" (ionBlur)=\"blurEmitter.emit(model)\" [maxlength]=\"configuration.maxlength\" labelPlacement=\"stacked\" [(ngModel)]=\"model\">\r\n            @if (label) {\r\n              <ion-text id=\"label\" [ngClass]=\"{'required': required}\" slot=\"label\"> {{label}} </ion-text>\r\n            }\r\n          </ion-input>\r\n        </ion-item>\r\n      </div>\r\n    </ion-card-content>\r\n  </ion-card>\r\n  <input-loading [loading]=\"loading\"></input-loading>\r\n</div>\r\n","import { Component, ElementRef, Host, Input, OnInit, Optional, SkipSelf } from '@angular/core';\r\nimport { CustomInput, InputProviderFactory } from '../inputs/inputs';\r\nimport { ControlContainer } from '@angular/forms';\r\nimport { InputStringConfiguration } from '../inputs/input-configuration';\r\n\r\n@Component({\r\n  selector: 'input-textarea',\r\n  templateUrl: './input-textarea.component.html',\r\n  styleUrls: ['./input-textarea.component.scss', '../inputs.scss'],\r\n  providers: InputProviderFactory.GetProvider(InputTextareaComponent)\r\n})\r\nexport class InputTextareaComponent extends CustomInput<string> implements OnInit {\r\n\r\n  @Input() configuration: InputStringConfiguration = new InputStringConfiguration();\r\n\r\n  constructor(\r\n    @Optional() @Host() @SkipSelf()\r\n    override controlContainer: ControlContainer,\r\n    override elementRef: ElementRef\r\n  ) { super(); }\r\n\r\n  override async ngOnInit() {\r\n    super.ngOnInit();\r\n  }\r\n\r\n  override writeValue(value: string){ this.setModel(value) }\r\n  override get model(): string      { return this._model;  }\r\n  override set model(value: string) { this.setModel(value); this.propagateChange(this._model); }\r\n\r\n  setModel(value){\r\n    if(value == null){ this._model = '' } else { this._model = value + '' }\r\n  }\r\n}\r\n","<div class=\"flex relative overflow-hidden\">\r\n  <input-loading [loading]=\"loading\"></input-loading>\r\n  <ion-card class=\"!size-full !max-h-full focus-within:on-focus ion-card-input\" [disabled]=\"loading || disabled\"\r\n      [ngClass]=\"{\r\n        'invalid'  : invalid,\r\n        'submitted': submitted,\r\n        'disabled' : disabled,\r\n      }\"\r\n    >\r\n    <ion-card-content class=\"!size-full\">\r\n      <div class=\"flex size-full\">\r\n        <ion-item class=\"size-full\" [ngClass]=\"{'submitted': submitted, 'invalid': invalid, 'required': required}\" lines=\"none\">\r\n          <ion-textarea \r\n            [autoGrow]=\"true\" \r\n            class=\"!size-full\"\r\n            [maxlength]=\"configuration.maxlength\" \r\n            labelPlacement=\"stacked\" \r\n            [(ngModel)]=\"model\">\r\n            <ion-text id=\"label\" [ngClass]=\"{'required': required}\" slot=\"label\"> {{label}} </ion-text>\r\n          </ion-textarea>\r\n        </ion-item>\r\n      </div>\r\n    </ion-card-content>\r\n  </ion-card>\r\n</div>","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { Clipboard } from '@capacitor/clipboard';\r\nimport { IonPopover } from '@ionic/angular';\r\n\r\nimport { CustomSignalInput, InputProviderFactory } from '../inputs/inputs';\r\nimport { GenericService } from '../../core/services/generics.service';\r\n\r\ntype RGB = { r: number, g: number, b: number };\r\ntype HSL = { h: number, l: number, s: number };\r\n\r\n@Component({\r\n  selector: 'input-color',\r\n  templateUrl: './input-color.component.html',\r\n  styleUrls: ['./input-color.component.scss', '../inputs.scss'],\r\n  providers: InputProviderFactory.GetProvider(InputColorComponent)\r\n})\r\nexport class InputColorComponent extends CustomSignalInput<string> implements OnInit {\r\n\r\n  constructor(\r\n    private genericService: GenericService\r\n  ) { super(); }\r\n\r\n  \r\n  @ViewChild('canvas'     ) canvas: ElementRef<HTMLCanvasElement>;\r\n  @ViewChild(\"hueSlider\"  ) hueSlider: ElementRef<HTMLCanvasElement>\r\n  @ViewChild(\"alphaSlider\") alphaSlider: ElementRef<HTMLCanvasElement>\r\n\r\n  override writeValue(value: string){ this.setModel(value, true) }\r\n  override get model(): string      { return this._model;  }\r\n  override set model(value: string) { this.setModel(value); this.propagateChange(this._model); }\r\n\r\n  setModel(value: string, redraw: boolean = false){\r\n    if(value){\r\n      this.setColorFromHex(value, false);\r\n      if(this.canvasCtx && redraw){\r\n        this.updateSelectedColor(); \r\n        this.updateIndicatorPositions(); \r\n        this.drawColorGradient()\r\n      }\r\n    }\r\n  }\r\n\r\n  @ViewChild(IonPopover) Popover: IonPopover;\r\n  rendering: boolean = true;\r\n  async Present($event){\r\n    this.rendering = true;\r\n    await this.Popover.present($event);\r\n    \r\n    this.initCanvas()\r\n    this.initHueSlider()\r\n    this.initAlphaSlider()\r\n    this.drawColorGradient()\r\n    this.drawHueSlider()\r\n    this.drawAlphaSlider()\r\n    this.rendering = false;\r\n  }\r\n  private canvasCtx: CanvasRenderingContext2D;\r\n  private canvasWidth: number = 0;\r\n  private canvasHeight: number = 0;\r\n\r\n  private hueCtx: CanvasRenderingContext2D;\r\n  private hueSliderWidth: number = 0;\r\n  private hueSliderHeight: number = 0;\r\n\r\n  private alphaCtx: CanvasRenderingContext2D;\r\n  private alphaSliderWidth: number = 0;\r\n  private alphaSliderHeight: number = 0;\r\n\r\n  private isDragging = false\r\n  private isHueDragging = false\r\n  private isAlphaDragging = false\r\n\r\n  rgbColor : RGB = { r: 255, g: 0, b: 0 };\r\n  hslColor : HSL = { h: 0, s: 100, l: 50 };\r\n  alpha    : number = 0\r\n\r\n  indicatorX: number = 100\r\n  indicatorY: number = 0\r\n\r\n  initCanvas(): void {\r\n    const canvas      = this.canvas.nativeElement;\r\n    this.canvasWidth  = canvas.width; \r\n    this.canvasHeight = canvas.height; \r\n    this.canvasCtx    = canvas.getContext('2d');\r\n\r\n    canvas.addEventListener('mousedown' , this.startDrag.bind(this));\r\n    canvas.addEventListener('mousemove' , this.drag.bind(this));\r\n    canvas.addEventListener('mouseup'   , this.endDrag.bind(this));\r\n    canvas.addEventListener('mouseleave', this.endDrag.bind(this));\r\n\r\n    // Touch events\r\n    canvas.addEventListener('touchstart', this.handleTouch.bind(this));\r\n    canvas.addEventListener('touchmove' , this.handleTouch.bind(this));\r\n    canvas.addEventListener('touchend'  , this.endDrag.bind(this));\r\n  }\r\n\r\n  initHueSlider(): void {\r\n    const hueSlider  = this.hueSlider.nativeElement\r\n    this.hueSliderWidth  = hueSlider.width;\r\n    this.hueSliderHeight = hueSlider.height;\r\n    this.hueCtx = hueSlider.getContext(\"2d\")\r\n\r\n    hueSlider.addEventListener(\"mousedown\" , this.startHueDrag.bind(this))\r\n    hueSlider.addEventListener(\"mousemove\" , this.hueDrag.bind(this))\r\n    hueSlider.addEventListener(\"mouseup\"   , this.endHueDrag.bind(this))\r\n    hueSlider.addEventListener(\"mouseleave\", this.endHueDrag.bind(this))\r\n\r\n    // Touch events\r\n    hueSlider.addEventListener(\"touchstart\", this.handleHueTouch.bind(this))\r\n    hueSlider.addEventListener(\"touchmove\" , this.handleHueTouch.bind(this))\r\n    hueSlider.addEventListener(\"touchend\"  , this.endHueDrag.bind(this))\r\n  }\r\n\r\n  initAlphaSlider(): void {\r\n    const alphaSlider      = this.alphaSlider.nativeElement;\r\n    this.alphaSliderHeight = alphaSlider.height;\r\n    this.alphaSliderWidth  = alphaSlider.width;\r\n\r\n    this.alphaCtx = alphaSlider.getContext(\"2d\")\r\n\r\n    alphaSlider.addEventListener(\"mousedown\" , this.startAlphaDrag.bind(this))\r\n    alphaSlider.addEventListener(\"mousemove\" , this.alphaDrag.bind(this))\r\n    alphaSlider.addEventListener(\"mouseup\"   , this.endAlphaDrag.bind(this))\r\n    alphaSlider.addEventListener(\"mouseleave\", this.endAlphaDrag.bind(this))\r\n\r\n    // Touch events\r\n    alphaSlider.addEventListener(\"touchstart\", this.handleAlphaTouch.bind(this))\r\n    alphaSlider.addEventListener(\"touchmove\" , this.handleAlphaTouch.bind(this))\r\n    alphaSlider.addEventListener(\"touchend\"  , this.endAlphaDrag.bind(this))\r\n  }\r\n\r\n  drawColorGradient(): void {\r\n    const ctx = this.canvasCtx;\r\n\r\n    // Clear canvas\r\n    ctx.clearRect(0, 0, this.canvasWidth, this.canvasHeight)\r\n\r\n    // Draw the pure hue color at the top-right corner\r\n    ctx.fillStyle = `hsl(${this.hslColor.h}, 100%, 50%)`\r\n    ctx.fillRect(0, 0, this.canvasWidth, this.canvasHeight)\r\n\r\n    // White gradient (horizontal - saturation)\r\n    const whiteGradient = ctx.createLinearGradient(0, 0, this.canvasWidth, 0)\r\n    whiteGradient.addColorStop(0, \"white\")\r\n    whiteGradient.addColorStop(1, \"rgba(255, 255, 255, 0)\")\r\n    ctx.fillStyle = whiteGradient\r\n    ctx.fillRect(0, 0, this.canvasWidth, this.canvasHeight)\r\n\r\n    // Black gradient (vertical - brightness)\r\n    const blackGradient = ctx.createLinearGradient(0, 0, 0, this.canvasHeight)\r\n    blackGradient.addColorStop(0, \"rgba(0, 0, 0, 0)\")\r\n    blackGradient.addColorStop(1, \"black\")\r\n    ctx.fillStyle = blackGradient\r\n    ctx.fillRect(0, 0, this.canvasWidth, this.canvasHeight)\r\n  }\r\n\r\n  drawHueSlider(): void {\r\n    const ctx = this.hueCtx\r\n\r\n    // Create hue gradient\r\n    const gradient = ctx.createLinearGradient(0, 0, this.hueSliderWidth, 0)\r\n    for (let i = 0; i <= 360; i += 60) {\r\n      gradient.addColorStop(i / 360, `hsl(${i}, 100%, 50%)`)\r\n    }\r\n\r\n    ctx.fillStyle = gradient\r\n    ctx.fillRect(0, 0, this.hueSliderWidth, this.hueSliderHeight)\r\n  }\r\n\r\n  drawAlphaSlider(): void {\r\n    const ctx = this.alphaCtx\r\n    const width  = this.alphaSliderWidth\r\n    const height = this.alphaSliderHeight\r\n\r\n    // Clear canvas\r\n    ctx.clearRect(0, 0, width, height)\r\n\r\n    // Create checkerboard pattern for transparency\r\n    const squareSize = 8\r\n    for (let i = 0; i < width; i += squareSize) {\r\n      for (let j = 0; j < height; j += squareSize) {\r\n        const isEven = (i / squareSize + j / squareSize) % 2 === 0\r\n        ctx.fillStyle = isEven ? \"#ffffff\" : \"#cccccc\"\r\n        ctx.fillRect(i, j, squareSize, squareSize)\r\n      }\r\n    }\r\n    \r\n\r\n    // Create alpha gradient\r\n    const gradient = ctx.createLinearGradient(0, 0, width, 0)\r\n    const rgb = this.hslToRgb(this.hslColor);\r\n\r\n    gradient.addColorStop(0, `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0)`)\r\n    gradient.addColorStop(1, `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 1)`)\r\n\r\n    ctx.fillStyle = gradient\r\n    ctx.fillRect(0, 0, width, height)\r\n  }\r\n\r\n  startDrag(e: MouseEvent): void {\r\n    this.isDragging = true\r\n    this.handleColorSelection(e.offsetX, e.offsetY)\r\n  }\r\n\r\n  drag(e: MouseEvent): void {\r\n    if (this.isDragging) {\r\n      this.handleColorSelection(e.offsetX, e.offsetY)\r\n    }\r\n  }\r\n\r\n  endDrag(): void {\r\n    this.isDragging = false\r\n  }\r\n\r\n  handleTouch(e: TouchEvent): void {\r\n    e.preventDefault()\r\n    if (e.type === \"touchstart\") {\r\n      this.isDragging = true\r\n    }\r\n\r\n    if (this.isDragging) {\r\n      const rect = this.canvas.nativeElement.getBoundingClientRect()\r\n      const touch = e.touches[0]\r\n      const x = touch.clientX - rect.left\r\n      const y = touch.clientY - rect.top\r\n      this.handleColorSelection(x, y)\r\n    }\r\n  }\r\n\r\n  startHueDrag(e: MouseEvent): void {\r\n    this.isHueDragging = true\r\n    this.handleHueSelection(e.offsetX)\r\n  }\r\n\r\n  hueDrag(e: MouseEvent): void {\r\n    if (this.isHueDragging) {\r\n      this.handleHueSelection(e.offsetX)\r\n    }\r\n  }\r\n\r\n  endHueDrag(): void {\r\n    this.isHueDragging = false\r\n  }\r\n\r\n  startAlphaDrag(e: MouseEvent): void {\r\n    this.isAlphaDragging = true\r\n    this.handleAlphaSelection(e.offsetX)\r\n  }\r\n\r\n  alphaDrag(e: MouseEvent): void {\r\n    if (this.isAlphaDragging) {\r\n      this.handleAlphaSelection(e.offsetX)\r\n    }\r\n  }\r\n\r\n  endAlphaDrag(): void {\r\n    this.isAlphaDragging = false\r\n  }\r\n\r\n  handleAlphaTouch(e: TouchEvent): void {\r\n    e.preventDefault()\r\n    if (e.type === \"touchstart\") {\r\n      this.isAlphaDragging = true\r\n    }\r\n\r\n    if (this.isAlphaDragging) {\r\n      const rect = this.alphaSlider.nativeElement.getBoundingClientRect()\r\n      const touch = e.touches[0]\r\n      const x = touch.clientX - rect.left\r\n      this.handleAlphaSelection(x)\r\n    }\r\n  }\r\n\r\n  handleHueTouch(e: TouchEvent): void {\r\n    e.preventDefault()\r\n    if (e.type === \"touchstart\") {\r\n      this.isHueDragging = true\r\n    }\r\n\r\n    if (this.isHueDragging) {\r\n      const rect = this.hueSlider.nativeElement.getBoundingClientRect()\r\n      const touch = e.touches[0]\r\n      const x = touch.clientX - rect.left\r\n      this.handleHueSelection(x)\r\n    }\r\n  }\r\n\r\n  handleHueSelection(x: number): void {\r\n    // Constrain x to canvas bounds\r\n    x = Math.max(0, Math.min(x, this.hueSliderWidth))\r\n\r\n    // Calculate hue based on x position (0-360)\r\n    this.hslColor.h = Math.round((x / this.hueSliderWidth) * 360)\r\n\r\n    // Redraw color gradient with new hue\r\n    this.drawColorGradient()\r\n\r\n    // Redraw alpha slider with new color\r\n    this.drawAlphaSlider()\r\n\r\n    // Update selected color\r\n    this.updateSelectedColor(this.hslColor.s, this.hslColor.l, true)\r\n  }\r\n\r\n  handleAlphaSelection(x: number): void {\r\n    // Constrain x to canvas bounds\r\n    x = Math.max(0, Math.min(x, this.alphaSliderWidth))\r\n\r\n    // Calculate alpha based on x position (0-100)\r\n    this.alpha = Math.round((x / this.alphaSliderWidth) * 100)\r\n\r\n    // Update selected color\r\n    this.updateSelectedColor(this.hslColor.s, this.hslColor.l, true)\r\n  }\r\n\r\n  handleColorSelection(x: number, y: number): void {\r\n    // Constrain coordinates to canvas bounds\r\n    x = Math.max(0, Math.min(x, this.canvasWidth))\r\n    y = Math.max(0, Math.min(y, this.canvasHeight))\r\n\r\n    // Store the raw position percentage for the indicator\r\n    this.indicatorX = (x / this.canvasWidth) * 100\r\n    this.indicatorY = (y / this.canvasHeight) * 100\r\n\r\n    // Calculate saturation and lightness based on position\r\n    this.hslColor.s = Math.round(this.indicatorX)\r\n    // Adjust lightness calculation:\r\n    // - Top of canvas (y=0) should be white (lightness=100) on the left and pure color (lightness=50) on the right\r\n    // - Bottom of canvas (y=height) should be black (lightness=0)\r\n    if (this.hslColor.s === 0) {\r\n      // Left edge is always white to black, regardless of y position\r\n      this.hslColor.l = Math.round(100 - this.indicatorY)\r\n    } else {\r\n      // For other saturation values, top is 50-100% lightness (based on saturation), bottom is 0%\r\n      const maxLightness = 100 - this.hslColor.s / 2\r\n      this.hslColor.l = Math.round(maxLightness - (this.indicatorY / 100) * maxLightness)\r\n    }\r\n\r\n    // Update selected color\r\n    this.updateSelectedColor(this.hslColor.s, this.hslColor.l, true)\r\n\r\n    // Redraw alpha slider with new color\r\n    this.drawAlphaSlider()\r\n  }\r\n\r\n  updateSelectedColor(saturation: number | null = null, lightness: number | null = null, emitChanges: boolean = false): void {\r\n\r\n    // Update HSL values\r\n    if(saturation != null){\r\n      this.hslColor.s = saturation\r\n    }\r\n    if(lightness != null){\r\n      this.hslColor.l = lightness\r\n    }\r\n    // Convert HSL to RGB\r\n    const rgb = this.hslToRgb(this.hslColor);\r\n\r\n    this.rgbColor = rgb\r\n\r\n    // Convert RGB to HEX\r\n    const hex = this.rgbToHex(rgb, this.alpha / 100);\r\n    if(emitChanges){ this.model = hex }else{ this._model = hex }\r\n\r\n    // Emit color change event\r\n    // this.colorChange.emit(this.selectedColor)\r\n  }\r\n\r\n  updateIndicatorPositions(): void {\r\n    // Set X position directly from saturation (0-100)\r\n    this.indicatorX = this.hslColor.s;\r\n  \r\n    // Set Y position based on lightness\r\n    // When lightness is 50, Y should be 0 (top)\r\n    // When lightness is 0, Y should be 100 (bottom)\r\n    this.indicatorY = (50 - this.hslColor.l) * 2;\r\n  }\r\n\r\n  hslToRgb(hsl: HSL): RGB {\r\n    var h = hsl.h / 360;\r\n    var s = hsl.s / 100;\r\n    var l = hsl.l / 100;\r\n\r\n    let r: number, g: number, b: number\r\n\r\n    if (s === 0) {\r\n      r = g = b = l // achromatic\r\n    } else {\r\n      const hue2rgb = (p: number, q: number, t: number) => {\r\n        if (t < 0) t += 1\r\n        if (t > 1) t -= 1\r\n        if (t < 1 / 6) return p + (q - p) * 6 * t\r\n        if (t < 1 / 2) return q\r\n        if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6\r\n        return p\r\n      }\r\n\r\n      const q = l < 0.5 ? l * (1 + s) : l + s - l * s\r\n      const p = 2 * l - q\r\n\r\n      r = hue2rgb(p, q, h + 1 / 3)\r\n      g = hue2rgb(p, q, h)\r\n      b = hue2rgb(p, q, h - 1 / 3)\r\n    }\r\n\r\n    return {\r\n      r: Math.round(r * 255),\r\n      g: Math.round(g * 255),\r\n      b: Math.round(b * 255),\r\n    }\r\n  }\r\n\r\n  setColorFromHex(hexColor: string, updateCanvas: boolean = true, emitChanges: boolean = false): void {\r\n    // Remove # if present\r\n    hexColor = hexColor.replace(/^#/, \"\")\r\n\r\n    let r: number, g: number, b: number, a = 1\r\n\r\n    // Parse hex values based on string length\r\n    if (hexColor.length === 3) {\r\n      // Short hex (#RGB)\r\n      r = Number.parseInt(hexColor.charAt(0) + hexColor.charAt(0), 16)\r\n      g = Number.parseInt(hexColor.charAt(1) + hexColor.charAt(1), 16)\r\n      b = Number.parseInt(hexColor.charAt(2) + hexColor.charAt(2), 16)\r\n    } else if (hexColor.length === 6) {\r\n      // Standard hex (#RRGGBB)\r\n      r = Number.parseInt(hexColor.substring(0, 2), 16)\r\n      g = Number.parseInt(hexColor.substring(2, 4), 16)\r\n      b = Number.parseInt(hexColor.substring(4, 6), 16)\r\n    } else if (hexColor.length === 8) {\r\n      // Hex with alpha (#RRGGBBAA)\r\n      r = Number.parseInt(hexColor.substring(0, 2), 16)\r\n      g = Number.parseInt(hexColor.substring(2, 4), 16)\r\n      b = Number.parseInt(hexColor.substring(4, 6), 16)\r\n      a = Number.parseInt(hexColor.substring(6, 8), 16) / 255\r\n    } else {\r\n      // Invalid hex, use default\r\n      console.error(\"Invalid hex color format\")\r\n      return\r\n    }\r\n\r\n    // Update RGB color\r\n    this.rgbColor = { r, g, b }\r\n\r\n    // Convert RGB to HSL\r\n    this.hslColor = this.rgbToHsl(this.rgbColor)\r\n\r\n    // Update alpha\r\n    this.alpha = Math.round(a * 100)\r\n\r\n    // Update selected color\r\n    const hex = this.rgbToHex(this.rgbColor, a)\r\n    if(emitChanges){ this.model = hex }else{ this._model = hex }\r\n\r\n    if(updateCanvas){\r\n      // Calculate indicator position\r\n      this.updateIndicatorPosition()\r\n  \r\n      // Redraw components\r\n      this.drawColorGradient()\r\n      this.drawAlphaSlider()\r\n    }\r\n  }\r\n\r\n  updateIndicatorPosition(): void {\r\n    // Set X position based on saturation (0-100%)\r\n    this.indicatorX = this.hslColor.s\r\n\r\n    // Calculate Y position based on lightness and saturation\r\n    if (this.hslColor.s == 0) {\r\n      // Left edge: lightness determines position\r\n      this.indicatorY = 100 - this.hslColor.l\r\n    } else {\r\n      // Rest of canvas: calculate based on max lightness for this saturation\r\n      const maxLightness = 100 - this.hslColor.s / 2\r\n      \r\n      // Ensure lightness is within valid range for this saturation\r\n      const adjustedLightness = Math.min(this.hslColor.l, maxLightness)\r\n\r\n      // Calculate Y position (0% at top, 100% at bottom)\r\n      if (maxLightness == 0) {\r\n        this.indicatorY = 100 // Avoid division by zero\r\n      } else {\r\n        this.indicatorY = ((maxLightness - adjustedLightness) / maxLightness) * 100\r\n      }\r\n\r\n      // Constrain to canvas bounds\r\n      this.indicatorY = Math.max(0, Math.min(100, this.indicatorY))\r\n    }\r\n  }\r\n\r\n  rgbToHsl(rgb: RGB): HSL {\r\n    var r = rgb.r / 255\r\n    var g = rgb.g / 255\r\n    var b = rgb.b / 255\r\n\r\n    const max = Math.max(r, g, b)\r\n    const min = Math.min(r, g, b)\r\n    let h = 0,\r\n      s = 0\r\n    const l = (max + min) / 2\r\n\r\n    if (max !== min) {\r\n      const d = max - min\r\n      s = l > 0.5 ? d / (2 - max - min) : d / (max + min)\r\n\r\n      switch (max) {\r\n        case r:\r\n          h = ((g - b) / d + (g < b ? 6 : 0)) / 6\r\n          break\r\n        case g:\r\n          h = ((b - r) / d + 2) / 6\r\n          break\r\n        case b:\r\n          h = ((r - g) / d + 4) / 6\r\n          break\r\n      }\r\n    }\r\n\r\n    return {\r\n      h: Math.round(h * 360),\r\n      s: Math.round(s * 100),\r\n      l: Math.round(l * 100),\r\n    }\r\n  }\r\n\r\n  rgbToHex(rgb: RGB , a = 1): string {\r\n    var { r, g, b } = rgb\r\n\r\n    const alphaHex = Math.round(a * 255)\r\n      .toString(16)\r\n      .padStart(2, \"0\")\r\n    return (\r\n      \"#\" +\r\n      [r, g, b]\r\n        .map((x) => {\r\n          const hex = x.toString(16)\r\n          return hex.length === 1 ? \"0\" + hex : hex\r\n        })\r\n        .join(\"\") +\r\n      (a < 1 ? alphaHex : \"\")\r\n    ).toUpperCase();\r\n  }\r\n\r\n  getRgbaString(): string {\r\n    const { r, g, b } = this.rgbColor\r\n    const a = this.alpha / 100\r\n    return `rgba(${r}, ${g}, ${b}, ${a})`\r\n  }\r\n\r\n  getHslaString(): string {\r\n    return `hsla(${this.hslColor.h}, ${this.hslColor.s}%, ${this.hslColor.l}%, ${this.alpha / 100})`\r\n  }\r\n\r\n  async CopyToClipboard() {\r\n    await Clipboard.write({\r\n      string: this.model\r\n    });\r\n    await this.genericService.PresentToastSuccess(`${this.model} copiada para a área de transferência!`);\r\n  }\r\n}","<div class=\"flex relative overflow-hidden\">\r\n  <ion-card class=\"focus-within:on-focus ion-card-input !rounded-r-none\" [disabled]=\"loading || disabled\"\r\n    [ngClass]=\"{\r\n      'invalid'  : invalid,\r\n      'submitted': submitted,\r\n      'disabled': disabled,\r\n    }\"\r\n  >\r\n    <ion-card-content>\r\n      <div class=\"flex\">\r\n        <ion-item class=\"w-full\" [ngClass]=\"{'submitted': submitted, 'invalid': invalid, 'required': required}\" lines=\"none\">\r\n          <ion-input (ionBlur)=\"blur.emit(model)\" [maxlength]=\"9\" labelPlacement=\"stacked\" [(ngModel)]=\"model\">\r\n            @if (label) {\r\n              <ion-text id=\"label\" [ngClass]=\"{'required': required}\" slot=\"label\"> {{label}} </ion-text>\r\n            }\r\n          </ion-input>\r\n        </ion-item>\r\n      </div>\r\n    </ion-card-content>\r\n  </ion-card>\r\n  <div class=\"w-12 shrink-0\" > \r\n    <ion-button (click)=\"Present($event)\" [disabled]=\"loading || disabled\" class=\"m-0 h-full w-full rounded-r-2xl on-hover [--border-radius:0rem_1rem_1rem_0rem]\" style=\"--border-width: 1px 1px 2px 1px;\" size=\"small\" color=\"medium\" fill=\"outline\"> \r\n      <ion-icon class=\"fill-rainbow\" slot=\"icon-only\" name=\"color-palette\"></ion-icon> \r\n    </ion-button>\r\n  </div>\r\n  <input-loading [loading]=\"loading\"></input-loading>\r\n</div>\r\n\r\n<ion-popover #popover [keepContentsMounted]=\"true\">\r\n  <ng-template>\r\n    <ion-card class=\"m-0\">\r\n      <ion-card-content class=\"p-0 relative\">\r\n        <loading [type]=\"3\" [loading]=\"rendering\" text=\"\"></loading>\r\n        <div class=\"size-full p-3 flex gap-2\">\r\n          <div class=\"h-[12.5rem] flex flex-col gap-1 w-44\">\r\n            <div class=\"w-full h-32 relative\">\r\n              <canvas #canvas width=\"176\" height=\"128\" class=\"size-full rounded-sm translucid-border\"></canvas>\r\n    \r\n               <div class=\"color-indicator quick-transition\" [style.left.%]=\"indicatorX\" [style.top.%]=\"indicatorY\"></div>\r\n            </div>\r\n    \r\n            <div class=\"w-full flex shrink-0\">\r\n              <div class=\"w-full grid grid-cols-5 gap-1\">\r\n                <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#000000FF' }\"></ng-container>\r\n                <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#3880ffff' }\"></ng-container>\r\n                <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#2dd36fff' }\"></ng-container>\r\n                <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#ffc409ff' }\"></ng-container>\r\n                <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#eb445aff' }\"></ng-container>\r\n                \r\n                <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#FFFFFFFF' }\"></ng-container>\r\n                <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#59168bFF' }\"></ng-container>\r\n                <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#c6005cFF' }\"></ng-container>\r\n                <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#fb2c36FF' }\"></ng-container>\r\n                <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#314158FF' }\"></ng-container>\r\n    \r\n                <ng-template #templateColor let-color>\r\n                  <div class=\"size-8 rounded translucid-border cursor-pointer\" (click)=\"setColorFromHex(color, true, true)\" [style]=\"{ 'background': color }\"></div>\r\n                </ng-template>\r\n              </div>\r\n            </div>\r\n          </div>\r\n          <div class=\"h-[12.5rem] flex flex-col gap-2 w-44\">\r\n            <div class=\"w-full relative\">\r\n              <canvas #hueSlider   class=\"w-full rounded h-[22px]\" width=\"176\" height=\"22\"></canvas>\r\n              <div class=\"indicator quick-transition\" [style.left.%]=\"hslColor.h / 3.6\"></div>\r\n            </div>\r\n            <div class=\"w-full relative\">\r\n              <canvas #alphaSlider class=\"w-full rounded h-[22px]\" width=\"176\" height=\"22\"></canvas>\r\n              <div class=\"indicator quick-transition\" [style.left.%]=\"alpha\"></div>\r\n            </div>\r\n      \r\n            <div class=\"flex flex-col gap-1\">\r\n              <div class=\"flex items-center justify-center w-full h-fit gap-1 overflow-hidden\">\r\n                <div class=\"size-10 relative z-10 shrink-0 flex items-center justify-center\">\r\n                  <div class=\"size-full z-10 rounded translucid-border absolute left-0 top-0\" [style.background]=\"getRgbaString()\"></div>\r\n                  <ion-icon class=\"z-0 opacity-50\" color=\"dark\" name=\"color-fill\"></ion-icon>\r\n                </div>\r\n    \r\n                <div class=\"h-full shrink text-sm flex flex-col items-start justify-center\">\r\n                  <ion-text>Hex</ion-text>\r\n                  <input [value]=\"model\" (change)=\"setColorFromHex($event.target['value'])\" class=\"w-full\"/>\r\n                </div>\r\n    \r\n                <ion-button (click)=\"CopyToClipboard()\" class=\"aspect-square\" style=\"--border-radius: .25rem\" size=\"small\">\r\n                  <ion-icon slot=\"icon-only\" name=\"clipboard\"></ion-icon>\r\n                </ion-button>\r\n              </div> \r\n      \r\n              <div class=\"w-full flex gap-1 overflow-hidden text-sm\">\r\n                <div class=\"w-full shrink\">\r\n                  <ion-text>R</ion-text>\r\n                  <input [(ngModel)]=\"rgbColor.r\" (change)=\"updateSelectedColor(); updateIndicatorPositions(); this.drawColorGradient()\" type=\"number\" class=\"w-full\"/>\r\n                </div>\r\n                <div class=\"w-full shrink\">\r\n                  <ion-text>G</ion-text>\r\n                  <input [(ngModel)]=\"rgbColor.g\" (change)=\"updateSelectedColor(); updateIndicatorPositions()\" type=\"number\" class=\"w-full\"/>\r\n                </div>\r\n                <div class=\"w-full shrink\">\r\n                  <ion-text>B</ion-text>\r\n                  <input [(ngModel)]=\"rgbColor.b\" (change)=\"updateSelectedColor(); updateIndicatorPositions()\" type=\"number\" class=\"w-full\"/>\r\n                </div>\r\n                <div class=\"w-full shrink\">\r\n                  <ion-text>A</ion-text>\r\n                  <input [(ngModel)]=\"alpha\" class=\"w-full\"/>\r\n                </div>\r\n              </div>\r\n        \r\n              <div class=\"w-full flex gap-1 overflow-hidden text-sm\">\r\n                <div class=\"w-full shrink\">\r\n                  <ion-text>H</ion-text>\r\n                  <input [(ngModel)]=\"hslColor.h\" (change)=\"updateSelectedColor(); updateIndicatorPositions(); this.drawColorGradient()\" type=\"number\" class=\"w-full\"/>\r\n                </div>\r\n                <div class=\"w-full shrink\">\r\n                  <ion-text>L</ion-text>\r\n                  <input [(ngModel)]=\"hslColor.l\" (change)=\"updateSelectedColor(); updateIndicatorPositions()\" type=\"number\" class=\"w-full\"/>\r\n                </div>\r\n                <div class=\"w-full shrink\">\r\n                  <ion-text>S</ion-text>\r\n                  <input [(ngModel)]=\"hslColor.s\" (change)=\"updateSelectedColor(); updateIndicatorPositions()\" type=\"number\" class=\"w-full\"/>\r\n                </div>\r\n                <div class=\"w-full shrink\">\r\n                  <ion-text>A</ion-text>\r\n                  <input [(ngModel)]=\"alpha\" type=\"number\" class=\"w-full\"/>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </ion-card-content>\r\n    </ion-card>\r\n  </ng-template>\r\n</ion-popover>\r\n","import { Component, ElementRef, Host, Input, OnInit, Optional, SkipSelf } from '@angular/core';\r\nimport { ControlContainer } from '@angular/forms';\r\n\r\nimport { MaskitoOptions, MaskitoElementPredicate, maskitoTransform } from '@maskito/core';\r\nimport { MaskitoMaskExpression } from '@maskito/core/src/lib/types';\r\nimport { InputCpfCnpjConfiguration } from '../inputs/input-configuration';\r\nimport { CustomInput, InputProviderFactory } from '../inputs/inputs';\r\n\r\n@Component({\r\n  selector: 'input-cpf-cnpj, input-cpf, input-cnpj',\r\n  templateUrl: './input-cpf-cnpj.component.html',\r\n  styleUrls: ['./input-cpf-cnpj.component.scss', '../inputs.scss'],\r\n  providers: InputProviderFactory.GetProvider(InputCpfCnpjComponent)\r\n})\r\nexport class InputCpfCnpjComponent extends CustomInput<string> implements OnInit {\r\n\r\n  @Input() configuration: InputCpfCnpjConfiguration = new InputCpfCnpjConfiguration('CPF/CNPJ')\r\n\r\n  constructor(\r\n    @Optional() @Host() @SkipSelf()\r\n    override controlContainer: ControlContainer,\r\n    override elementRef: ElementRef\r\n  ) { super(); }\r\n\r\n  override async ngOnInit() {\r\n    super.ngOnInit();\r\n  \r\n    if(this.elementRef.nativeElement.tagName.toLowerCase() == 'input-cpf-cnpj'){\r\n      this.configuration = new InputCpfCnpjConfiguration();\r\n    }else{\r\n      const selector: string = this.elementRef.nativeElement.tagName.toLowerCase().split('-')[1];\r\n      if(selector == 'cpf' ){ this.configuration = new InputCpfCnpjConfiguration('CPF')  } else\r\n      if(selector == 'cnpj'){ this.configuration = new InputCpfCnpjConfiguration('CNPJ') } \r\n    }\r\n  }\r\n\r\n  override writeValue(value: string){ this.setModel(value) }\r\n  override get model(): string      { return this._model;  }\r\n  override set model(value: string) { this.setModel(value); this.propagateChange(this._model.replaceAll('.', '').replaceAll('-', '').replaceAll('/', '')); }\r\n\r\n  setModel(value){\r\n    if(value == null){ \r\n      this._model = '' \r\n    } else { \r\n      this._model = maskitoTransform(value, this.mask);\r\n    }\r\n  }\r\n\r\n  readonly cpfMask : MaskitoMaskExpression = [ /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/  ];\r\n  readonly cnpjMask: MaskitoMaskExpression = [ /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\r\n  \r\n  readonly mask: MaskitoOptions = {\r\n    mask: (elementState) => {\r\n      if(this.configuration.type == 'CPF/CNPJ'){\r\n        if(!elementState.value){ \r\n          return this.cpfMask;\r\n        }else{\r\n          if(elementState.value.includes('.')){\r\n            if(elementState.value.length <= 14) { \r\n              return this.cpfMask; \r\n            }\r\n            return this.cnpjMask;\r\n          }else{\r\n            if(elementState.value.length <= 11) { \r\n              return this.cpfMask; \r\n            }\r\n            return this.cnpjMask;\r\n          }\r\n        }\r\n      }\r\n      if(this.configuration.type == 'CNPJ'){ return this.cnpjMask; }\r\n      if(this.configuration.type == 'CPF' ){ return this.cpfMask;  }\r\n    },\r\n  };\r\n  readonly maskPredicate: MaskitoElementPredicate = async (el) => (el as HTMLIonInputElement).getInputElement();\r\n}\r\n","<div class=\"flex relative overflow-hidden\">\r\n  <ion-card class=\"focus-within:on-focus ion-card-input\" [disabled]=\"loading || disabled\"\r\n    [ngClass]=\"{\r\n      'invalid'  : invalid,\r\n      'submitted': submitted,\r\n      'disabled' : disabled,\r\n    }\"\r\n  >\r\n    <ion-card-content>\r\n      <div class=\"flex\">\r\n        <ion-item class=\"w-full\" [ngClass]=\"{'submitted': submitted, 'invalid': invalid, 'required': required}\" lines=\"none\">\r\n          <ion-input \r\n            [(ngModel)]=\"model\"\r\n            labelPlacement=\"stacked\"\r\n\r\n            [maskito]=\"mask\"\r\n            [maskitoElement]=\"maskPredicate\"\r\n          >\r\n            <ion-text id=\"label\" [ngClass]=\"{'required': required}\" slot=\"label\"> {{label}} </ion-text>\r\n          </ion-input>\r\n        </ion-item>\r\n      </div>\r\n    </ion-card-content>\r\n  </ion-card>\r\n  <input-loading [loading]=\"loading\"></input-loading>\r\n</div>","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[input-select-template]',\r\n})\r\nexport class InputSelectTemplateDirective {\r\n  constructor(public template: TemplateRef<any>) { }\r\n}\r\n","import { AfterContentInit, AfterViewInit, Component, ContentChild, ElementRef, HostListener, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, TemplateRef, ViewChild } from '@angular/core';\r\nimport { TooltipComponent } from '../tooltip/tooltip.component';\r\nimport { IonicModule, IonText } from '@ionic/angular';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Timeout } from '../../core/services/utils.service';\r\n\r\n@Component({\r\n  selector: 'text-tooltip',\r\n  standalone: true,\r\n  imports: [CommonModule, IonicModule, TooltipComponent],\r\n  templateUrl: './text-tooltip.component.html',\r\n  styleUrls: ['./text-tooltip.component.scss'],\r\n})\r\nexport class TextTooltipComponent implements OnChanges, AfterContentInit  {\r\n  isOverflowing: boolean = true;\r\n\r\n  @ViewChild('text') text: ElementRef<HTMLDivElement>;\r\n  private CheckOverflowHandler(){\r\n    if(this.text){ this.isOverflowing = this.text.nativeElement.scrollWidth > this.text.nativeElement.clientWidth; }\r\n  };\r\n  \r\n  @Input() align: 'top' | 'bottom' | 'left' | 'right' = 'right';\r\n  @Input() color: string= 'secondary';\r\n\r\n  constructor() { \r\n  }\r\n  \r\n  @HostListener(\"mouseenter\")\r\n  onMouseEnter() {\r\n    this.CheckOverflowHandler()\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    setTimeout(() => this.CheckOverflowHandler(), 100)\r\n  }\r\n\r\n  ngAfterContentInit(): void {\r\n    this.CheckOverflowHandler();\r\n  }\r\n\r\n  @HostListener(\"window:resize\")\r\n  onResize() {\r\n    this.CheckOverflowHandler()\r\n  }\r\n\r\n}\r\n","<div #text class=\"w-full truncate relative  overflow-hidden\">\r\n  <ng-content select=\"[slot=content]\"></ng-content>\r\n</div>\r\n<div class=\"absolute top-0 left-0 size-full\">\r\n  <tooltip [color]=\"color\" [align]=\"align\" *ngIf=\"isOverflowing\" [hidden]=\"!isOverflowing\">\r\n    <ng-content select=\"[slot=tooltip]\"></ng-content>\r\n  </tooltip>\r\n</div>","import { ScrollingModule } from '@angular/cdk/scrolling'; \r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MaskitoDirective } from '@maskito/angular';\r\n\r\nimport { NgVarDirective } from '../core/directives/ng-var.directive';\r\n\r\nimport { InputBoolComponent } from './input-bool/input-bool.component';\r\nimport { InputDateComponent } from './input-date/input-date.component';\r\n\r\nimport { InputDecimalComponent  } from './input-decimal/input-decimal.component';\r\n// import { DecimalDirective       } from './input-decimal/decimal.directive';\r\n\r\nimport { InputFileComponent      } from './input-file/input-file.component';\r\nimport { DownloadButtonComponent } from './input-file/download-button/download-button.component';\r\n\r\nimport { InputSelectComponent   } from './input-select/input-select.component';\r\nimport { InputStringComponent   } from './input-string/input-string.component';\r\nimport { InputTextareaComponent } from './input-textarea/input-textarea.component';\r\nimport { InputLoadingComponent  } from './input-loading/input-loading.component';\r\nimport { InputColorComponent    } from './input-color/input-color.component';\r\nimport { LoadingComponent       } from '../components/generic/loading/loading.component';\r\nimport { InputCpfCnpjComponent  } from './input-cpf-cnpj/input-cpf-cnpj.component';\r\nimport { InputSelectOptionComponent } from './input-select/input-select-option/input-select-option.component';\r\nimport { InputSelectTemplateDirective } from './input-select/input-select-template.directive';\r\nimport { InputSelectInternalOptionComponent } from './input-select/input-select-internal-option/input-select-internal-option.component';\r\nimport { TextTooltipComponent } from \"./text-tooltip/text-tooltip.component\";\r\nconst declare_export = [\r\n  InputBoolComponent     , \r\n  InputDateComponent     , \r\n  InputDecimalComponent  , \r\n  InputFileComponent     , \r\n  DownloadButtonComponent, \r\n\r\n  InputSelectComponent        ,\r\n  InputSelectOptionComponent  , \r\n  InputSelectTemplateDirective,\r\n\r\n  InputStringComponent  , \r\n  InputTextareaComponent, \r\n  InputLoadingComponent ,\r\n  InputColorComponent   ,\r\n  InputCpfCnpjComponent\r\n]\r\n\r\n@NgModule({\r\n  declarations: [ ...declare_export, InputSelectInternalOptionComponent ],\r\n  exports     : [ ...declare_export ],\r\n  imports: [\r\n    CommonModule,\r\n    IonicModule,\r\n    ReactiveFormsModule,\r\n    FormsModule,\r\n    NgVarDirective,\r\n    LoadingComponent,\r\n    MaskitoDirective,\r\n    ScrollingModule,\r\n    TextTooltipComponent,\r\n  ],\r\n})\r\nexport class InputsModule { }\r\n","import { AbstractControl } from \"@angular/forms\";\r\n\r\nexport class ControlError {\r\n  constructor(public message: string){}\r\n}\r\n\r\nexport class FormValidators{\r\n  static readonly CPFError    : ControlError = new ControlError(\"CPF incompleto\");\r\n  static readonly CnpjError   : ControlError = new ControlError(\"CNPJ incompleto\");\r\n  static readonly CPFCnpjError: ControlError = new ControlError(\"CPF / CNPJ incompleto\");\r\n  static CPFValidator(control: AbstractControl): ControlError | null {\r\n    if(control.value != null){\r\n      if(control.value.length != 11){ return FormValidators.CPFError; }\r\n      return null;\r\n    }\r\n    return FormValidators.CPFError;\r\n  } \r\n  static CnpjValidator(control: AbstractControl): ControlError | null {\r\n    if(control.value != null){\r\n      if(control.value.length != 14){ return FormValidators.CnpjError; }\r\n      return null;\r\n    }\r\n    return FormValidators.CnpjError;\r\n  } \r\n  static CPFCpnjValidator(control: AbstractControl): ControlError | null {\r\n    if(control.value != null){\r\n      if(control.value.length < 11){\r\n        return FormValidators.CPFError;\r\n      }else\r\n      if(control.value.length > 11 && control.value.length != 14){  \r\n        return FormValidators.CnpjError;\r\n      }\r\n      return null;\r\n    }\r\n    return null;\r\n  } \r\n\r\n  static readonly PositiveNonZeroNumberError: ControlError = new ControlError(\"%fieldName% deve ser maior que 0!\");\r\n  static PositiveNonZeroNumberValidator(fieldName: string): (control: AbstractControl) => ControlError | null {\r\n    return ((control: AbstractControl): ControlError | null => {\r\n      const Error = FormValidators.PositiveNonZeroNumberError.message.replace(\"%fieldName%\", fieldName);\r\n      if(control.value != null){\r\n        if(control.value <= 0){ return new ControlError(Error); }\r\n        return null;\r\n      }\r\n      return new ControlError(Error);;\r\n    })\r\n  }\r\n\r\n  static readonly PositiveNumberError: ControlError = new ControlError(\"%fieldName% deve ser maior ou igual que 0!\");\r\n  static PositiveNumberValidator(fieldName: string): (control: AbstractControl) => ControlError | null {\r\n    return ((control: AbstractControl): ControlError | null => {\r\n      const Error = FormValidators.PositiveNumberError.message.replace(\"%fieldName%\", fieldName);\r\n      if(control.value != null){\r\n        if(control.value < 0){ return new ControlError(Error); }\r\n        return null;\r\n      }\r\n      return new ControlError(Error); \r\n    })\r\n  }\r\n\r\n  static readonly ValueBetweenError = new ControlError(\"%fieldName% deve ser maior ou igual a %min% e menor ou igual a %max%\");\r\n  static ValueBetweenValidator(min: number, max: number, fieldName: string, equalMin: boolean = true, equalMax: boolean = true): (control: AbstractControl) => ControlError | null {\r\n    return ((control: AbstractControl): ControlError | null => {\r\n      const Error = FormValidators.ValueBetweenError.message.replace(\"%fieldName%\", fieldName).replace(\"%min%\", min.toString()).replace(\"%max%\", max.toString());\r\n      if(control.value != null){\r\n        if(control.value < min && equalMin){ return new ControlError(Error); }else\r\n        if(control.value > max && equalMax){ return new ControlError(Error); }else\r\n        if(control.value <= min && !equalMin){ return new ControlError(Error); }else\r\n        if(control.value >= max && !equalMax){ return new ControlError(Error); }\r\n        return null;\r\n      }\r\n      return new ControlError(Error); \r\n    });\r\n  }\r\n}","import { InputDecimalConfiguration, InputNumberConfiguration } from \"./inputs/input-configuration\";\r\n\r\nexport class InputsDefaultConfigurations {\r\n  static readonly configurationDecimalPercentage: InputDecimalConfiguration = new InputDecimalConfiguration(2, null, '%');\r\n  static readonly configurationDecimalDegree    : InputDecimalConfiguration = new InputDecimalConfiguration(2, null, \"°C\");\r\n  static readonly configurationDecimalM3H       : InputDecimalConfiguration = new InputDecimalConfiguration(2, null, \"m³/h\");\r\n  static readonly configurationDecimalMeters    : InputDecimalConfiguration = new InputDecimalConfiguration(2, null, \"m\");\r\n  static readonly configurationDecimalMilimeters: InputDecimalConfiguration = new InputDecimalConfiguration(2, null, \"mm\");\r\n\r\n  static readonly configurationNumberPercentage: InputNumberConfiguration = new InputNumberConfiguration(null, '%');\r\n  static readonly configurationNumberDegree    : InputNumberConfiguration = new InputNumberConfiguration(null, \"°C\");\r\n  static readonly configurationNumberM3H       : InputNumberConfiguration = new InputNumberConfiguration(null, \"m³/h\");\r\n  static readonly configurationNumberMeters    : InputNumberConfiguration = new InputNumberConfiguration(null, \"m\");\r\n  static readonly configurationNumberMilimeters: InputNumberConfiguration = new InputNumberConfiguration(null, \"mm\");\r\n}","import { Menu } from \"../../../components/drawer/menu\";\r\n\r\nexport class RouteCacheService {\r\n  private cachedData: Menu[] | null = null;\r\n\r\n  getCachedData(): Menu[] {\r\n    return this.cachedData;\r\n  }\r\n\r\n  setCachedData(data: Menu[]): void {\r\n    this.cachedData = data;\r\n  }\r\n\r\n  isDataCached(): boolean {\r\n    return this.cachedData != null;\r\n  }\r\n}","import { Injectable, OnInit } from '@angular/core';\r\nimport { firstValueFrom, Observable, tap, share, finalize } from 'rxjs';\r\nimport { Menu } from '../../../components/drawer/menu';\r\nimport { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/router';\r\nimport { RouteCacheService } from './route.cache.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class RouteProviderService  {\r\n\r\n  loadFrom: Observable<Menu[]> | Menu[] = [];\r\n  private routeCacheService: RouteCacheService = new RouteCacheService();\r\n  private loading$: Observable<Menu[]> | null = null;\r\n\r\n  constructor(\r\n  ) { }\r\n\r\n  resolver: Promise<Menu[]>\r\n\r\n  GetData(): Observable<Menu[]> {\r\n    // If a request is already in progress, return that Observable\r\n    if (this.loading$) {\r\n      return this.loading$;\r\n    }\r\n\r\n    if(Array.isArray(this.loadFrom)){\r\n      this.routeCacheService.setCachedData(this.loadFrom);\r\n    }\r\n\r\n    const cachedData = this.routeCacheService.getCachedData();\r\n\r\n    if (cachedData) {\r\n      return new Observable(observer => {\r\n        observer.next(cachedData);\r\n        observer.complete();\r\n      });\r\n    } else {\r\n      // Store the loading Observable and make sure to reset it when it completes\r\n      this.loading$ = (this.loadFrom as Observable<Menu[]>).pipe(\r\n        tap(data => this.routeCacheService.setCachedData(data)),\r\n        finalize(() => this.loading$ = null),\r\n        share() // Share the same subscription with multiple subscribers\r\n      );\r\n      \r\n      return this.loading$;\r\n    }\r\n  }\r\n}\r\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { IonPopover, IonicModule, NumericValueAccessor } from '@ionic/angular';\r\nimport { ActivatedRoute, RouterLinkWithHref } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { InputsModule } from '../../inputs.module';\r\nimport { EnvironmentService } from '../../../core/services/environment.service';\r\nimport { Menu } from '../../drawer/menu';\r\nimport { GenericService } from '../../../core/services/generics.service';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { LoadingComponent } from '../../generic/loading/loading.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { RouteProviderService } from '../../../core/services/route/route.provider.service';\r\n\r\n/** Pagina Default - mostra os botões de rotas horizontalmente - componente padrão */\r\n@Component({\r\n  standalone: true,\r\n  selector: 'app-default',\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    IonicModule,\r\n    InputsModule,\r\n    RouterLinkWithHref,\r\n    LoadingComponent,\r\n    TranslateModule,\r\n  ],\r\n  templateUrl: './default.page.html',\r\n  styleUrls: ['./default.page.scss'],\r\n})\r\nexport class DefaultPage implements OnInit {\r\n  \r\n  useTranslation: boolean = false;\r\n  TranslationModule: any = {\r\n    Permissao     : 'Entities.Permissao.',\r\n    PermissaoGrupo: 'Entities.PermissaoGrupo.'\r\n  };\r\n\r\n  constructor(\r\n    private route: ActivatedRoute,\r\n    private coreService: EnvironmentService,\r\n    private genericService: GenericService,\r\n    private routeProviderService: RouteProviderService \r\n  ) { \r\n  }\r\n  \r\n  title: string = this.coreService.environment.applicationName;\r\n  loading: boolean;\r\n  lstMenu: Menu[] = [] \r\n  configuration: DefaultPageConfiguration | null = null;\r\n  async ngOnInit(): Promise<void> {\r\n    this.loading = true;\r\n    this.configuration = await firstValueFrom(this.route.data) as DefaultPageConfiguration;\r\n    this.lstMenu       = await firstValueFrom(this.routeProviderService.GetData());\r\n    this.loading = false;\r\n  }\r\n\r\n  SetTitle(item: Menu){\r\n    this.genericService.SetTitle(item.title);\r\n  }\r\n}\r\n\r\nexport class DefaultPageConfiguration{\r\n  constructor(\r\n    public image: DefaultPageImage | null = null,\r\n    public useTranslation: boolean = false\r\n  ){\r\n  }\r\n}\r\n\r\nexport class DefaultPageImage {\r\n  constructor(\r\n    public src: string | null = null,\r\n    public classes: string = ''\r\n  ){}\r\n}\r\n","<ion-content [fullscreen]=\"true\">\r\n  <div class=\"wrapper\">\r\n    <ion-breadcrumbs>\r\n      <ion-breadcrumb [routerLink]=\"[null]\">\r\n        <ion-icon slot=\"start\" name=\"home\"></ion-icon> Inicio\r\n      </ion-breadcrumb>\r\n    </ion-breadcrumbs>\r\n  \r\n    <ion-card>\r\n      <ion-card-content class=\"flex flex-col items-center justify-center !p-8\">\r\n        <div class=\"w-full shrink-0 text-center\">\r\n          @if(configuration?.image){\r\n            <ion-img [class]=\"configuration.image.classes\" [src]=\"configuration.image.src\" (ion-error)=\"configuration.image = null\"></ion-img>\r\n          }\r\n          @else {\r\n            <ion-text class=\"text-8xl font-poppins w-full\"> {{title}} </ion-text>\r\n          }\r\n        </div>\r\n        <div class=\"!overflow-y-auto w-full portrait:grow relative\">\r\n          <loading [type]=\"3\" [loading]=\"loading\"></loading>\r\n          <div class=\"flex flex-wrap items-start justify-start mt-4 portrait:!grid portrait:!grid-cols-1\"> \r\n            @for (item of lstMenu; track item; let i = $index) {\r\n              @if(item.type == \"Menu\"){\r\n                <ion-button fill=\"outline\" class=\"mx-1 mt-2 flex-grow shrink-0\" [routerLink]=\"[item.route]\">\r\n                  <ion-icon slot=\"start\" [name]=\"item.icon\"></ion-icon> \r\n                  {{useTranslation ? (TranslationModule.Permissao + item.id | translate) : item.title}}\r\n                </ion-button>\r\n              }\r\n              @if(item.type == \"MenuGroup\"){\r\n                <ion-button fill=\"outline\" class=\"mx-1 mt-2 flex-grow shrink-0\" (click)=\"popover.present($event)\">\r\n                  <ion-icon slot=\"start\" [name]=\"item.icon\"></ion-icon> \r\n                  {{useTranslation ? (TranslationModule.PermissaoGrupo + item.id | translate) : item.title}}\r\n                </ion-button>\r\n                <ion-popover #popover class=\"overflow-y-auto\" [dismissOnSelect]=\"true\" triggerAction=\"click\">\r\n                  <ng-template>\r\n                    <ion-list class=\"no-outer-border\">\r\n                      <ion-item class=\"bg-transparent\" (click)=\"SetTitle(menu)\" *ngFor=\"let menu of item.lstMenu\" [routerLink]=\"['./' + menu.route]\" lines=\"none\" detail=\"false\" routerLinkActive=\"selected\">\r\n                        <ion-icon [name]=\"menu.icon\" slot=\"start\"></ion-icon> \r\n                        <ion-label> \r\n                          {{useTranslation ? (TranslationModule.Permissao + menu.id | translate) : menu.title}}  \r\n                        </ion-label>\r\n                      </ion-item>\r\n                    </ion-list>\r\n                  </ng-template>\r\n                </ion-popover>\r\n              }\r\n            }\r\n          </div>\r\n        </div>\r\n      </ion-card-content>\r\n    </ion-card>\r\n  </div>\r\n</ion-content>","import { HttpClient, HttpErrorResponse, HttpRequest } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { NavController } from '@ionic/angular';\r\nimport { Observable, firstValueFrom, from } from 'rxjs';\r\nimport { jwtDecode } from 'jwt-decode';\r\n\r\nimport { Utils } from './utils.service';\r\nimport { ApiUrlProviderService } from '../../web/api-url-provider.service';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { Preferences } from '@capacitor/preferences';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n\r\n  constructor(\r\n    private http: HttpClient,\r\n    private navController: NavController,\r\n    private coreService: EnvironmentService,\r\n    private apiUrlProviderService: ApiUrlProviderService \r\n  ) {\r\n    this.SetToken();\r\n  }\r\n\r\n  private localUserKey      : string = this.coreService.environment.applicationName.toUpperCase() + \"_USER_KEY\";\r\n  private localAdminKey     : string = this.coreService.environment.applicationName.toUpperCase() + \"_ADMIN_KEY\";\r\n  public  currentToken: string | null = null;\r\n\r\n  async SetToken(): Promise<void> {\r\n    const Token      = await this.LoadToken();\r\n    const TokenAdmin = await this.LoadTokenAdmin();\r\n    if(this.isTokenValid(Token)){\r\n      this.currentToken = await this.JWToken();\r\n    }else{\r\n      return this.Loggout();\r\n    }\r\n\r\n    if(TokenAdmin && this.isTokenValid(TokenAdmin)){\r\n      this._isAdmin = true;\r\n    }\r\n\r\n    return;\r\n  }\r\n\r\n  async Loggout(): Promise<void> {\r\n    await Preferences.remove({ key: this.localUserKey });\r\n    await Preferences.remove({ key: this.localAdminKey });\r\n    this.currentToken = null;\r\n    this.navController.navigateRoot(\"login\");\r\n  }\r\n  \r\n  _isAdmin: boolean = false;\r\n  get isAdmin(){ return this._isAdmin;  }\r\n\r\n  async Login(credentials: Authentication): Promise<any> {\r\n    try{\r\n      const JWToken = await firstValueFrom(this.ApiLogin(credentials));\r\n      await this.SaveToken(JWToken);\r\n      await this.SetToken();\r\n      return (jwtDecode(JWToken));\r\n    }\r\n    catch (Error){\r\n      throw Error;\r\n    }\r\n  }\r\n\r\n  async BypassLogin(id: number): Promise<any> {\r\n    try{\r\n      const JWToken = await firstValueFrom(this.ApiBypassLogin(id));\r\n      await this.SaveToken(JWToken);\r\n      await this.SetToken();\r\n      return (jwtDecode(JWToken));\r\n    }\r\n    catch (Error){\r\n      throw Error;\r\n    }\r\n  }\r\n\r\n  ApiLogin(credentials: Authentication): Observable<string> {\r\n    return this.http.post<string>(this.apiUrlProviderService.apiUrl + 'auth', credentials);\r\n  }\r\n  ApiBypassLogin(id: number): Observable<string> {\r\n    return this.http.get<string>(this.apiUrlProviderService.apiUrl + `auth/${id}`);\r\n  }\r\n\r\n  async SaveToken(JWToken: string): Promise<void>{\r\n    if((jwtDecode(JWToken) as Token).id == 1){ \r\n      await Preferences.set({ key: this.localAdminKey, value: JWToken});\r\n    }\r\n    await Preferences.set({ key: this.localUserKey, value: JWToken })\r\n  }\r\n\r\n  async LoadToken(): Promise<Token | null | any> {\r\n    const JWToken = (await Preferences.get({ key: this.localUserKey})).value;\r\n    if(JWToken){\r\n      const ParsedObject = jwtDecode(JWToken);\r\n      return ParsedObject;\r\n    }else{\r\n      return null;\r\n    }\r\n  }\r\n  async LoadTokenAdmin(): Promise<Token | null | any> {\r\n    const JWToken = (await Preferences.get({ key: this.localAdminKey})).value;\r\n    if(JWToken){\r\n      const ParsedObject = jwtDecode(JWToken);\r\n      return ParsedObject;\r\n    }else{\r\n      return null;\r\n    }\r\n  }\r\n\r\n  async JWToken(): Promise<string> {\r\n    const JWToken: string = (await Preferences.get({ key: this.localUserKey })).value;\r\n    return JWToken;\r\n  }\r\n\r\n  async GetBearer(): Promise<string>{\r\n    return `Bearer ${await this.JWToken()}`\r\n  }\r\n\r\n  public isTokenValid(Token: any): boolean{\r\n    if(!Token){ return false; }else\r\n    return !(Utils.UNIXToDate(Token.exp) < new Date())\r\n  }\r\n}\r\n\r\nclass Authentication{\r\n  public Apelido: string = null;\r\n  public Senha  : string = null;\r\n}\r\n\r\nclass Token {\r\n  [prop: string]: any;\r\n  Acesso   : number = 0;\r\n  Apelido  : string = \"\";\r\n  Nome     : string = \"\";\r\n  id       : number = 0;\r\n  idEmpresa: number = 0;\r\n  \r\n  constructor(){}\r\n  \r\n  patch(token: Token | any): void{\r\n    for(let prop of Object.getOwnPropertyNames(token)){\r\n      if(Number((token[prop]))){\r\n        this[prop] = Number(token[prop]); \r\n        continue;\r\n      }\r\n      this[prop] = token[prop];\r\n    }\r\n  }\r\n}","\r\nexport class Menu{\r\n  id: number;\r\n  route: string | null;\r\n  icon : string | null;\r\n  title: string;\r\n  lstMenu: Menu[];\r\n  type: 'Menu' | 'MenuGroup'\r\n  constructor(type: 'Menu' | 'MenuGroup', title: string, icon : string | null, lstMenu: Menu[] = [], route: string | null = null){\r\n    this.type  = type; \r\n    this.title = title;\r\n    this.route = route;\r\n    if(icon){\r\n      this.icon  = icon;\r\n    }else{\r\n      this.icon = \"layers\";\r\n    }\r\n    this.lstMenu = lstMenu;\r\n  }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit, QueryList, ViewChildren } from '@angular/core';\r\nimport { IonAccordion, IonAccordionGroup, IonicModule, NavController } from '@ionic/angular';\r\nimport { Menu } from '.././menu';\r\nimport { Router } from '@angular/router';\r\nimport { GenericService } from '../../../core/services/generics.service';\r\nimport { NgVarDirective } from '../../../core/directives/ng-var.directive';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n  standalone: true,\r\n  imports: [CommonModule, IonicModule, NgVarDirective, TranslateModule],\r\n  selector: 'drawer-group',\r\n  templateUrl: './drawer-group.component.html',\r\n  styleUrls: ['./drawer-group.component.scss'],\r\n})\r\nexport class DrawerGroupComponent  implements OnInit {\r\n\r\n  TranslationModule: any = {\r\n    Permissao     : 'Entities.Permissao.',\r\n    PermissaoGrupo: 'Entities.PermissaoGrupo.'\r\n  };\r\n  @Input() MenuGroup: Menu;\r\n  @Input() colapsed: boolean;\r\n  @Input() useTranslation: boolean;\r\n\r\n  constructor(\r\n    public router: Router,\r\n    private navController: NavController,\r\n    private genericService: GenericService\r\n  ) { }\r\n\r\n  ngOnInit() {}\r\n\r\n  HandleNav(item: Menu | any){\r\n    this.SetTitle(item);\r\n    this.navController.navigateRoot('/' + item.route);\r\n  }\r\n  SetTitle(item: Menu){\r\n    this.genericService.SetTitle(item.title);\r\n  }\r\n\r\n  @ViewChildren(IonAccordionGroup) lstIonAcordionGroup: QueryList<IonAccordion>\r\n}\r\n","<div class=\"w-full text-center mb-2\">\r\n  <ion-item class=\"bg-inactive bg-active\" lines=\"none\" style=\"--border-radius: 1rem\">\r\n    <ion-label class=\"text-center\">\r\n      <ion-icon class=\"text-2xl\" [name]=\"MenuGroup.icon\"></ion-icon> <br>\r\n      <ion-text class=\"text-lg\">\r\n        {{useTranslation ? (TranslationModule.PermissaoGrupo + MenuGroup.id | translate) : MenuGroup.title}} \r\n      </ion-text>\r\n    </ion-label>\r\n  </ion-item>\r\n</div>\r\n\r\n<div class=\"grid gap-2 w-full overflow-hidden\">\r\n  @for (mGroup of MenuGroup.lstMenu; track $index) {\r\n    <!-- Menu -->\r\n    @if(mGroup.type == \"Menu\"){\r\n      <ion-item \r\n        class=\"bg-inactive\" lines=\"none\" \r\n        (click)=\"HandleNav(mGroup)\"\r\n        [ngClass]=\"{'colapsed': colapsed, 'bg-active' : router.isActive('/' + mGroup.route, false)}\">\r\n        <ion-icon slot=\"start\" [name]=\"mGroup.icon\"></ion-icon>\r\n        <ion-label class=\"ion-text-nowrap\">\r\n          {{useTranslation ? (TranslationModule.Permissao + mGroup.id | translate) : mGroup.title}}          \r\n        </ion-label>\r\n      </ion-item>\r\n    } \r\n    @else if (mGroup.type == \"MenuGroup\") {\r\n      <!-- MenuGroup -->\r\n      <div class=\"w-full overflow-hidden\">\r\n        <ion-accordion-group class=\"ion-text-nowrap w-full\">\r\n          <ion-accordion class=\"bg-transparent\" [value]=\"mGroup\">\r\n            <ion-item slot=\"header\" color=\"light\" class=\"ion-text-nowrap bg-inactive\" style=\"--ion-color-base: var(--background) !important\">\r\n              <ion-icon slot=\"start\" [name]=\"mGroup.icon\"></ion-icon>\r\n              <ion-label>\r\n                {{useTranslation ? (TranslationModule.PermissaoGrupo + mGroup.id | translate) : mGroup.title}}\r\n              </ion-label>\r\n            </ion-item>\r\n            <div slot=\"content\">\r\n              <div class=\"pl-8\">\r\n                <div class=\"w-full border-l-2 border-solid rounded-bl-2xl grid gap-2 pl-2 py-2\" style=\"border-color: color-mix(in srgb, var(--ion-color-primary) 30%, transparent 70%)\">\r\n                  @for (mMenu of mGroup.lstMenu; track $index) {\r\n                    @if (mMenu.type == \"Menu\") {\r\n                      <ion-item \r\n                        class=\"bg-inactive\" lines=\"none\" \r\n                        (click)=\"HandleNav(mMenu)\"\r\n                        [ngClass]=\"{'colapsed': colapsed, 'bg-active' : router.isActive('/' + mMenu.route, false)}\">\r\n                        <ion-icon slot=\"start\" [name]=\"mMenu.icon\"></ion-icon>\r\n                        <ion-label class=\"ion-text-nowrap\">\r\n                          {{useTranslation ? (TranslationModule.Permissao + mMenu.id | translate) : mMenu.title}}\r\n                        </ion-label>\r\n                      </ion-item>\r\n                    }\r\n                  }\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </ion-accordion>\r\n        </ion-accordion-group>\r\n      </div>\r\n    }\r\n  }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { AfterViewInit, Component, computed, effect, EventEmitter, input, Input, InputSignal, OnInit, Output, QueryList, Signal, ViewChildren, viewChildren } from '@angular/core';\r\nimport { Router, RouterLinkWithHref } from '@angular/router';\r\nimport { IonAccordion, IonicModule } from '@ionic/angular';\r\nimport { Menu } from './menu';\r\nimport { GenericService } from '../../core/services/generics.service';\r\nimport { LoadingComponent } from '../generic/loading/loading.component';\r\nimport { DrawerGroupComponent } from './drawer-group/drawer-group.component';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ApiUrlProviderService } from '../../web/api-url-provider.service';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    IonicModule,\r\n    LoadingComponent,\r\n    DrawerGroupComponent,\r\n    TranslateModule\r\n  ],\r\n  selector: 'drawer',\r\n  templateUrl: './drawer.component.html',\r\n  styleUrls: ['./drawer.component.scss'],\r\n})\r\nexport class DrawerComponent {\r\n\r\n  TranslationModule: any = {\r\n    Permissao     : 'Entities.Permissao.',\r\n    PermissaoGrupo: 'Entities.PermissaoGrupo.'\r\n  };\r\n\r\n  @Input() loading: boolean = true;\r\n  lstMenu: InputSignal<Menu[]> = input<Menu[]>() \r\n  lstFlattenMenu: Signal<Menu[]> = computed(() => { return FlattenMenus(this.lstMenu()) });\r\n\r\n  @Input() colapsed: boolean = false;  \r\n  @Output() colapsedChange: EventEmitter<boolean> = new EventEmitter<boolean>;  \r\n  @Input() title: string;\r\n  @Input() useTranslation: boolean = false;\r\n  \r\n  constructor(\r\n    private genericService: GenericService,\r\n  ) { \r\n    effect(() => {\r\n      //Handle Menu Title\r\n      const lstFlat = this.lstFlattenMenu();\r\n      const currentMenu = lstFlat.find(p => window.location.pathname.includes('/' + p.route));\r\n      const group: Menu | null = FindMenuParent(this.lstMenu(), currentMenu);\r\n      if(group){\r\n        this.CurrentGroupActive = group;\r\n      }\r\n      else{\r\n        this.CurrentGroupActive = this.lstMenu()[0];\r\n      }\r\n    });\r\n  }\r\n  CurrentGroupActive: Menu = null;\r\n\r\n  ToggleCollapsed(){\r\n    this.colapsedChange.emit(!this._enterColapsed);\r\n    this._enterColapsed = false;\r\n  }\r\n\r\n  _enterColapsed: boolean = false;\r\n  onMouseEnter(){\r\n    if(this.colapsed){\r\n      this._enterColapsed = true;\r\n      this.colapsedChange.emit(false);\r\n    }\r\n  }\r\n  onMouseLeave(){\r\n    if(this._enterColapsed){\r\n      this._enterColapsed = false;\r\n      this.colapsedChange.emit(true);\r\n    }\r\n  }\r\n}\r\n\r\n/**\r\n * Flattens a hierarchical Menu[] structure into a single array\r\n * containing all Menu items from the original array and all nested items\r\n * @param menus The array of Menu items to flatten\r\n * @returns A flattened array containing all Menu items\r\n */\r\nfunction FlattenMenus(menus: Menu[]): Menu[] {\r\n  const result: Menu[] = [];\r\n  \r\n  function addMenuItems(items: Menu[]) {\r\n    for (const menu of items) {\r\n      // Add current menu to result\r\n      result.push(menu);\r\n      \r\n      // Process nested menus if they exist\r\n      if (menu.lstMenu && menu.lstMenu.length > 0) {\r\n        addMenuItems(menu.lstMenu);\r\n      }\r\n    }\r\n  }\r\n  \r\n  addMenuItems(menus);\r\n  return result;\r\n}\r\n\r\nfunction FindMenuParent(menus: Menu[], targetMenu: Menu): Menu | null {\r\n  for (const menu of menus) {\r\n    // Check if current menu has the target in its direct children\r\n    if (menu.lstMenu && menu.lstMenu.some(m => m === targetMenu)) {\r\n      return menu;\r\n    }\r\n    \r\n    // Search deeper in the hierarchy\r\n    if (menu.lstMenu && menu.lstMenu.length > 0) {\r\n      const parent = FindMenuParent(menu.lstMenu, targetMenu);\r\n      if (parent) {\r\n        return parent;\r\n      }\r\n    }\r\n  }\r\n  \r\n  return null;\r\n}","<div class=\"absolute left-0 top-0 h-full w-[19rem] flex flex-col bg-light\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n  <div class=\"w-full px-2 h-14 pt-2 flex justify-between items-center text-3xl text-center\">\r\n    <ion-button id=\"drawer-button\" class=\"shrink-0 portrait:hidden aspect-square h-12 z-10 default-transition m-0\" size=\"small\" fill=\"outline\" color=\"dark\" style=\"--border-radius: 999rem; --border-width: 0;\" (click)=\"ToggleCollapsed()\"> \r\n      <ion-icon name=\"menu\" slot=\"icon-only\"></ion-icon>\r\n    </ion-button>\r\n    <div class=\"size-full\">\r\n      @if (!ref.children.length) {\r\n        <ion-text class=\"size-full flex items-center justify-center default-transition z-0\" [ngClass]=\"{'opacity-0 -translate-x-1/2': colapsed }\"> \r\n          {{title}}\r\n        </ion-text>\r\n      }\r\n      <div #ref class=\"size-full flex items-center justify-center\">\r\n        <ng-content select=\"[slot=logo]\"></ng-content>\r\n      </div>\r\n    </div>\r\n  </div>\r\n\r\n  <div id=\"menu-conteiner\" class=\"mask-y flex flex-col relative\">\r\n    <loading [type]=\"3\" [loading]=\"loading\" text=\"\"></loading>\r\n    <div class=\"size-full shrink flex\">\r\n      <div class=\"h-full w-16 p-2 shrink-0\">\r\n        <div class=\"grid gap-2\">\r\n          @for (item of lstMenu(); track $index) {\r\n            <ion-item \r\n              id=\"group-menu\" [title]=\"item.title\" class=\"bg-inactive relative overflow-visible\" lines=\"none\" style=\"--padding-start: 0;\"\r\n              (click)=\"CurrentGroupActive = item\" \r\n              [ngClass]=\"{'bg-active': CurrentGroupActive == item}\"\r\n            >\r\n              <div id=\"tooltip\" class=\"opacity-0 !pointer-events-none -translate-x-4 absolute top-0 bottom-0 default-transition left-14 px-2 my-auto text-nowrap h-8 bg-[var(--ion-color-secondary)] -z-30 rounded-xl flex items-center justify-center\">\r\n                <div class=\"absolute -left-1 top-0 rounded bottom-0 my-auto rotate-45 h-4 aspect-square bg-[var(--ion-color-secondary)]\"></div>\r\n                <ion-icon class=\"z-50 mr-2\" [name]=\"item.icon\"></ion-icon>\r\n                <ion-text class=\"z-50\"> \r\n                  {{useTranslation ? (TranslationModule.PermissaoGrupo + item.id | translate) : item.title}}\r\n                </ion-text>\r\n              </div>\r\n              <div class=\"absolute top-0 size-full flex items-center justify-center overflow-visible\">\r\n                <ion-icon class=\"text-2xl\" [name]=\"item.icon\"></ion-icon>\r\n              </div>\r\n            </ion-item>\r\n          }\r\n        </div>\r\n      </div>\r\n      <div class=\"h-full w-full border-dashed border-l relative\" style=\"border-color: color-mix(in srgb, var(--ion-color-dark) 20%, transparent 80%);\">\r\n        @for (mGroup of lstMenu(); track $index) {\r\n          <div class=\"absolute top-0 left-0 px-2 py-2 size-full default-transition opacity-0 translate-x-full z-0 mask-y overflow-y-auto\" [ngClass]=\"{'opacity-100 !translate-x-0': CurrentGroupActive == mGroup}\">\r\n            <drawer-group [MenuGroup]=\"mGroup\" [useTranslation]=\"useTranslation\" [colapsed]=\"colapsed\"></drawer-group>\r\n          </div>\r\n        }\r\n      </div>\r\n    </div> \r\n\r\n    <div class=\"shrink-0 w-full\">\r\n      <ng-content select=\"[slot=drawer]\"></ng-content>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { AuthService } from '../../../core/services/auth.service';\r\nimport { RouterLinkWithHref } from '@angular/router';\r\nimport { DrawerComponent } from '../../drawer/drawer.component';\r\n\r\n@Component({\r\n  standalone: true,\r\n  imports: [ CommonModule, IonicModule, RouterLinkWithHref ],\r\n  selector: 'main-content',\r\n  templateUrl: './main-content.component.html',\r\n  styleUrls: ['./main-content.component.scss'],\r\n})\r\nexport class MainContentComponent  implements OnInit {\r\n\r\n  @Input() colapsed: boolean = false;\r\n  @Input() drawerComponent: DrawerComponent;\r\n\r\n  constructor(\r\n    public authService: AuthService\r\n  ) { }\r\n\r\n  Token: any;\r\n  ngOnInit(): void {\r\n    this.authService.LoadToken().then((res) => {\r\n      this.Token = res;\r\n    });\r\n  }\r\n\r\n  get fullScreen(): boolean { \r\n    if(document.fullscreenElement != null){\r\n      return true;\r\n    }\r\n    return false; \r\n  };\r\n  @ViewChild('target') FullScreenConteiner;\r\n  FullScreen(): void{\r\n    if(!this.fullScreen){\r\n      const elem = this.FullScreenConteiner.nativeElement;\r\n  \r\n      if (elem.requestFullscreen) {\r\n        elem.requestFullscreen();\r\n      } else if (elem.msRequestFullscreen) {\r\n        elem.msRequestFullscreen();\r\n      } else if (elem.mozRequestFullScreen) {\r\n        elem.mozRequestFullScreen();\r\n      } else if (elem.webkitRequestFullscreen) {\r\n        elem.webkitRequestFullscreen();\r\n      }\r\n    }else{\r\n      document.exitFullscreen()\r\n    }\r\n  }\r\n}\r\n","<div class=\"size-full flex flex-col\" [ngClass]=\"{'bg-light/50': fullScreen}\" #target>\r\n  <div class=\"w-full h-14 relative shrink-0\">\r\n    <ion-card class=\"m-0 rounded-none size-full border-none\">\r\n      <ion-card-content class=\"p-0 px-2 size-full flex\">\r\n        <div class=\"w-1/2 h-full flex items-center justify-start\">\r\n          @if (!fullScreen) {\r\n            <ion-menu-button  [routerLink]=\"['/']\" [autoHide]=\"true\"></ion-menu-button>\r\n          }\r\n          <ng-content select=\"[slot=start]\"></ng-content>\r\n        </div>\r\n\r\n        <div class=\"w-1/2 h-full flex flex-row-reverse items-center justify-start gap-2\">\r\n          <ng-content select=\"[slot=end]\"></ng-content>\r\n         \r\n          @if (!fullScreen) {\r\n            <ion-button (click)=\"userPopover.present($event)\" size=\"small\" class=\"size-10 aspect-square\">\r\n              <span class=\"uppercase text-white\">{{Token ? Token.Nome[0] : ''}}</span>\r\n            </ion-button>\r\n            <ion-popover #userPopover [dismissOnSelect]=\"true\" triggerAction=\"click\">\r\n              <ng-template>\r\n                <ion-content>\r\n                  <div class=\"size-full\">\r\n                    <div class=\"w-full px-3 flex items-center\">\r\n                      <div class=\"size-10 shrink-0 aspect-square rounded-2xl text-sm flex items-center justify-center default-transition\" style=\"background-color: var(--ion-color-primary);\">\r\n                        <span class=\"uppercase text-white\">{{Token ? Token.Nome[0] : ''}}</span>\r\n                      </div>\r\n                      <div class=\"grow min-w-10 p-2 justify-center items-center whitespace-nowrap text-ellipsis overflow-hidden block default-transition\" [ngClass]=\"{'opacity-0 w-0': colapsed}\">\r\n                        <span>{{Token ? Token.Nome : ''}}</span> <br>\r\n                        <ion-text color=\"secondary\" class=\"text-sm\">\r\n                          &#64;{{Token ? Token.Apelido : ''}}\r\n                        </ion-text>\r\n                      </div>\r\n                    </div>\r\n                    <div class=\"w-full\">\r\n                      <ng-content class=\"size-full\" select=\"[slot=user-popover]\"></ng-content>\r\n                    </div>\r\n                    <div class=\"w-full px-3 py-2 translucid-border !border-x-0 !border-b-0 flex items-center justify-between\">\r\n                      <ion-text> Log Out </ion-text>\r\n                      <ion-button (click)=\"authService.Loggout()\" class=\"size-10 shrink-0\" size=\"small\" color=\"danger\">\r\n                        <ion-icon slot=\"icon-only\" name=\"exit-outline\"></ion-icon> \r\n                      </ion-button>\r\n                    </div>\r\n                  </div>\r\n                </ion-content>\r\n              </ng-template>\r\n            </ion-popover>\r\n          }\r\n\r\n          <ion-button (click)=\"FullScreen()\" fill=\"outline\" color=\"dark\" size=\"small\" class=\"size-10 aspect-square\">\r\n            <ion-icon slot=\"icon-only\" name=\"expand\"></ion-icon>\r\n          </ion-button>\r\n        </div>\r\n      </ion-card-content>\r\n    </ion-card>\r\n  </div>\r\n  <div class=\"size-full relative p-2 bg-light\">\r\n    <div class=\"size-full relative rounded-2xl bg-primary/30 content-shadow overflow-hidden\">\r\n      <ng-content></ng-content>\r\n    </div>\r\n  </div>\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { RouterLinkWithHref } from '@angular/router';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AuthService } from '../../../core/services/auth.service';\r\n\r\n@Component({\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    IonicModule,\r\n    RouterLinkWithHref,\r\n  ],\r\n  selector: 'default-drawer-end',\r\n  templateUrl: './default-drawer-end.component.html',\r\n  styleUrls: ['./default-drawer-end.component.scss'],\r\n})\r\nexport class DefaultDrawerEndComponent  implements OnInit {\r\n\r\n  constructor(\r\n    public authService: AuthService\r\n  ) { }\r\n\r\n  @Input() colapsed: boolean = false;\r\n\r\n  Token: any;\r\n  ngOnInit(): void {\r\n    this.authService.LoadToken().then((res) => {\r\n      this.Token = res;\r\n    })\r\n  }\r\n\r\n\r\n  Loggout(): void { this.authService.Loggout(); }\r\n}\r\n","<div class=\"mt-1 w-full default-transition flex p-3\" [ngClass]=\"{'!w-16': colapsed}\">\r\n  <div class=\"w-10 shrink-0 aspect-square rounded-2xl flex items-center justify-center default-transition\" style=\"background-color: var(--ion-color-primary);\">\r\n    <span class=\"uppercase text-white\">{{Token ? Token.Nome[0] : ''}}</span>\r\n  </div>\r\n  <div class=\"grow min-w-10 p-2 justify-center items-center whitespace-nowrap text-ellipsis overflow-hidden block default-transition\" [ngClass]=\"{'opacity-0 w-0': colapsed}\">\r\n    <span>{{Token ? Token.Nome : ''}}</span>\r\n  </div>\r\n\r\n  <ion-button (click)=\"Loggout()\" class=\"size-10 shrink-0\" size=\"small\" color=\"danger\">\r\n    <ion-icon slot=\"icon-only\" name=\"exit-outline\"></ion-icon> \r\n  </ion-button>\r\n</div>","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { FormBuilder, Validators } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { NavController } from '@ionic/angular';\r\n\r\nimport { ApiUrlProviderService } from '../../web/api-url-provider.service';\r\nimport { HttpServiceAtivo } from '../../web/http.ativo.service';\r\nimport { GenericService } from './generics.service';\r\nimport { InputStringConfiguration, InputStringType } from '../../components/inputs/input-configuration';\r\nimport { TableField } from '../../components/inputs/table-field';\r\nimport { InputType } from '../../components/inputs/input-type';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class UsuarioService extends HttpServiceAtivo {\r\n\r\n  public override route: string = \"usuario\"; \r\n  public override title: string = \"Usuario\"; \r\n\r\n  constructor(\r\n    protected override http: HttpClient,\r\n    protected override fb: FormBuilder,\r\n    protected override genericService: GenericService,\r\n    protected override navController : NavController,\r\n    protected override apiUrlProviderService : ApiUrlProviderService,\r\n  ) { \r\n    super(http, fb, genericService, navController, apiUrlProviderService);\r\n  }\r\n\r\n  override get lstTableFields(){\r\n    var lst: TableField[] = [];\r\n\r\n    lst[0] = this.defaultId;\r\n    lst[1] = new TableField(\"Nome\"   , \"nome\"   , this.fb.control(null, Validators.required), InputType.String)\r\n    lst[2] = new TableField(\"Apelido\", \"apelido\", this.fb.control(null, Validators.required), InputType.String)\r\n    lst[3] = new TableField(\"Senha\"  , \"senha\"  , this.fb.control(null, Validators.required), InputType.String)\r\n    lst[3].hiddenView = true;\r\n    lst[3].configuration = new InputStringConfiguration(InputStringType.Password);\r\n    lst[4] = this.defaultAtivo;\r\n\r\n    return lst;\r\n  };\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\nimport { ApiUrlProviderService } from '../../../web/api-url-provider.service';\r\nimport { UsuarioService        } from '../../../core/services/usuario.service';\r\nimport { AuthService           } from '../../../core/services/auth.service';\r\n\r\nimport { InputsModule             } from '../../../components/inputs.module';\r\nimport { InputSelectConfiguration } from '../../../components/input-select/configuration';\r\n\r\n@Component({\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    IonicModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    InputsModule\r\n  ],\r\n  selector: 'login-admin',\r\n  templateUrl: './login-admin.component.html',\r\n  styleUrls: ['./login-admin.component.scss'],\r\n})\r\nexport class LoginAdminComponent  implements OnInit {\r\n\r\n  constructor(\r\n    public apiUrlProviderService: ApiUrlProviderService,\r\n    public authService: AuthService,\r\n    private usuarioService: UsuarioService,\r\n  ) { }\r\n\r\n  idUsuario: number | null;\r\n\r\n  async ngOnInit() {\r\n    try{\r\n      this.idUsuario = (await this.authService.LoadToken()).id;\r\n    }catch{}\r\n  }\r\n\r\n  public selectUserConfiguration: InputSelectConfiguration = new InputSelectConfiguration('id', ((v) => { return v.nome + ' - ' + v.apelido; }), false, true, this.usuarioService);\r\n  SelectUser(event: number){\r\n    if(event){ this.authService.BypassLogin(event).then(() => window.location.reload() ) }\r\n  }\r\n\r\n  apiUrl: string = this.apiUrlProviderService.apiUrl;\r\n  SetApiUrl(){\r\n    this.apiUrlProviderService.apiUrl = this.apiUrl;\r\n  }\r\n}\r\n","@if (this.authService.isAdmin || !this.apiUrlProviderService.production) {\r\n  <ion-button (click)=\"adminPopover.present($event)\" fill=\"outline\" class=\"aspect-square h-8 z-50\" size=\"small\">\r\n    <ion-icon name=\"shield\" slot=\"icon-only\"></ion-icon>\r\n  </ion-button>\r\n  <ion-popover id=\"admin-popover\" #adminPopover>\r\n    <ng-template>\r\n      <ion-content class=\"p-2 bg-transparent\">\r\n      <div class=\"p-2\">\r\n        <input-select\r\n          [(ngModel)]=\"idUsuario\"\r\n          label=\"Logar como...\"\r\n          (change)=\"SelectUser($event)\"\r\n          [configuration]=\"selectUserConfiguration\"\r\n        ></input-select>\r\n  \r\n        <div class=\"rounded-2xl mt-2 overflow-hidden border border-primary/30\">\r\n          <div class=\"py-2 text-center border-b border-b-medium/30\">\r\n            <span class=\"font-poppins\"> API </span>\r\n          </div>\r\n          <ion-item lines=\"none\" style=\"--border-width: 0 !important;\">\r\n            <ion-input [(ngModel)]=\"apiUrl\" (ngModelChange)=\"SetApiUrl()\"></ion-input>\r\n          </ion-item>\r\n        </div>\r\n      </div>\r\n      </ion-content>\r\n    </ng-template>\r\n  </ion-popover>\r\n}","import { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { Component, EventEmitter, HostListener, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { IonicModule, NavController } from '@ionic/angular';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { GenericService } from '../../core/services/generics.service';\r\nimport { AuthService } from '../../core/services/auth.service';\r\nimport { ApiUrlProviderService } from '../../web/api-url-provider.service';\r\nimport { EnvironmentService } from '../../core/services/environment.service';\r\nimport { LoginAdminComponent } from './login-admin/login-admin.component';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    IonicModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    LoginAdminComponent\r\n  ],\r\n  selector: 'login',\r\n  templateUrl: './login.component.html',\r\n  styleUrls: ['./login.component.scss'],\r\n})\r\nexport class DefaultLoginComponent  implements OnInit {\r\n\r\n  constructor(\r\n    private fb: FormBuilder,\r\n    private genericService: GenericService,\r\n    private navController: NavController,\r\n    private authService: AuthService,\r\n    public apiUrlProviderService: ApiUrlProviderService,\r\n    public coreService: EnvironmentService,\r\n    private router: Router\r\n  ) { \r\n    this.genericService.SetTitle(\"Login\");\r\n  }\r\n  \r\n  async ngOnInit() {\r\n    this.CreateForm();\r\n\r\n    if(!this.coreService.environment.production){\r\n      this.frm.patchValue(this.coreService.environment.defaultCredentials); \r\n    }\r\n    const Token = await this.authService.LoadToken()\r\n    if(this.authService.isTokenValid(Token)){\r\n      this.router.navigate([\"/\"]);\r\n    }\r\n  }\r\n  \r\n  frm: FormGroup;\r\n  CreateForm(): void{\r\n    this.frm = this.fb.group({\r\n      apelido : [null ,Validators.required],\r\n      senha   : [null, Validators.required]\r\n    });\r\n  }\r\n\r\n  loading: boolean;\r\n  submitted: boolean = false;\r\n\r\n  @Output() OnLogin: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n  @HostListener('window:keydown', ['$event'])\r\n  async Login($event?: KeyboardEvent): Promise<void>{\r\n    if($event && $event.key != 'Enter'){ return; }\r\n\r\n    this.submitted = true;\r\n    this.loading   = true;\r\n   \r\n    if(!this.frm.valid){\r\n      this.loading = false;\r\n      this.genericService.PresentToast(\"Usuario / Senha não informado!\"); return;\r\n    }\r\n\r\n    try{\r\n      const Token = await this.authService.Login(this.frm.value);\r\n\r\n      this.loading = false;\r\n      this.navController.navigateRoot(\"/\");\r\n      this.genericService.PresentToast(\"Logado com sucesso!\", \"checkmark-circle\");\r\n      this.OnLogin.emit(Token);\r\n    }\r\n    catch (status){\r\n      if(status == 401){\r\n        this.genericService.PresentToast(\"Usuário / Senha inválido (s)!\");\r\n      }else{\r\n        this.genericService.PresentToast(\"Ocorreu um erro ao realizar o login!\");\r\n      }\r\n      this.loading = false;\r\n    }\r\n  }\r\n}\r\n","<div class=\"size-full flex justify-center items-center relative\">\r\n  <div class=\"landscape:w-4/5 portrait:w-full landscape:h-2/3 portrait:h-full landscape:max-w-[60rem] translucid-border landscape:rounded-3xl landscape:backdrop-blur-xl overflow-hidden\">\r\n    <div class=\"size-full flex portrait:flex-col\" style=\"background-color: color-mix(in srgb, var(--ion-color-light) 20%, transparent 80%);\">\r\n      <div class=\"shrink-0 w-96 portrait:w-full portrait:h-32 h-full p-3\">\r\n        <div class=\"rounded-2xl size-full overflow-x-hidden\">\r\n          <ng-content class=\"size-full\"></ng-content>\r\n        </div>\r\n      </div>\r\n      <div class=\"grow flex items-center justify-center h-full py-3 pr-3 portrait:pl-3\">\r\n        <div class=\"w-96 h-full flex flex-col items-center justify-center\" *ngIf=\"frm\" [formGroup]=\"frm\">\r\n\r\n          <ion-text class=\"text-5xl my-10 portrait:mt-[-5rem]\"> Login </ion-text>\r\n\r\n          <ion-card class=\"w-full backdrop-blur-xl\">\r\n            <ion-card-content>\r\n              <ion-item lines=\"none\" label=\"Senha\" labelPlacement=\"stacked\" class=\"rounded-2xl my-3 w-full\">\r\n                <ion-icon name=\"person\" slot=\"start\"></ion-icon>\r\n                <ion-input placeholder=\"Usuário / User\" formControlName=\"apelido\"></ion-input>\r\n              </ion-item>\r\n            </ion-card-content>\r\n          </ion-card>\r\n\r\n          <ion-card class=\"w-full backdrop-blur-xl\"> \r\n            <ion-card-content>\r\n              <ion-item lines=\"none\" class=\"rounded-2xl my-3 w-full\">\r\n                <ion-icon name=\"lock-closed\" slot=\"start\"></ion-icon>\r\n                <ion-input type=\"password\" formControlName=\"senha\" placeholder=\"Senha / Password\">\r\n                  <ion-input-password-toggle slot=\"end\"></ion-input-password-toggle>\r\n                </ion-input>\r\n              </ion-item>\r\n            </ion-card-content>\r\n          </ion-card>\r\n\r\n          <div class=\"flex my-3 w-full\">\r\n            <ion-button class=\"rounded-2xl shadow-xl default-transition w-full\" expand=\"block\" (click)=\"Login()\" [disabled]=\"loading\">\r\n              <ion-spinner class=\"default-transition\" [ngClass]=\"{'-translate-x-12 opacity-0 size-0': !loading, 'mr-2' : loading}\" slot=\"start\"></ion-spinner>\r\n              <ion-icon    class=\"default-transition\" [ngClass]=\"{'-translate-x-12 opacity-0 size-0':  loading}\" name=\"enter-outline\" slot=\"start\" ></ion-icon>\r\n              <span class=\"default-transition\" > Login </span>\r\n            </ion-button>\r\n\r\n            <ion-button class=\"shrink-0 aspect-square ml-3\" color=\"dark\" hidden>\r\n              <svg class=\"size-8\" slot=\"icon-only\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 32 32\" width=\"64\" height=\"64\"><defs><path id=\"A\" d=\"M44.5 20H24v8.5h11.8C34.7 33.9 30.1 37 24 37c-7.2 0-13-5.8-13-13s5.8-13 13-13c3.1 0 5.9 1.1 8.1 2.9l6.4-6.4C34.6 4.1 29.6 2 24 2 11.8 2 2 11.8 2 24s9.8 22 22 22c11 0 21-8 21-22 0-1.3-.2-2.7-.5-4z\"/></defs><clipPath id=\"B\"><use xlink:href=\"#A\"/></clipPath><g transform=\"matrix(.727273 0 0 .727273 -.954545 -1.45455)\"><path d=\"M0 37V11l17 13z\" clip-path=\"url(#B)\" fill=\"#fbbc05\"/><path d=\"M0 11l17 13 7-6.1L48 14V0H0z\" clip-path=\"url(#B)\" fill=\"#ea4335\"/><path d=\"M0 37l30-23 7.9 1L48 0v48H0z\" clip-path=\"url(#B)\" fill=\"#34a853\"/><path d=\"M48 48L17 24l-4-3 35-10z\" clip-path=\"url(#B)\" fill=\"#4285f4\"/></g></svg>\r\n              <!-- <ion-icon name=\"logo-google\" ></ion-icon> -->\r\n            </ion-button>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>","import { Component, Input, model, ModelSignal, Signal, signal, WritableSignal } from \"@angular/core\";\r\n\r\n@Component({ template: '' })\r\nexport abstract class ICarouselItem {\r\n  index: WritableSignal<number> = signal(0);\r\n  carouselIndex: Signal<number> = signal(0);\r\n  value: ModelSignal<any>       = model<any>(undefined)\r\n}\r\n","import { AfterContentInit, Component, contentChildren, ContentChildren, effect, forwardRef, input, InputSignal, output, OutputEmitterRef, QueryList, signal, Signal, WritableSignal } from '@angular/core';\r\nimport { ICarouselItem } from './base.component';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n  selector: 'carousel',\r\n  templateUrl: './carousel.component.html',\r\n  styleUrls: ['./carousel.component.scss'],\r\n  providers: [{ provide    : NG_VALUE_ACCESSOR, \r\n                useExisting: forwardRef(() => CarouselComponent),\r\n                multi: true     \r\n  }]\r\n})\r\nexport class CarouselComponent implements AfterContentInit, ControlValueAccessor {\r\n\r\n  @ContentChildren(ICarouselItem) components: QueryList<ICarouselItem>;\r\n  lst: Signal<readonly ICarouselItem[]> = contentChildren(ICarouselItem);\r\n  \r\n  value: InputSignal<any> = input<any>();\r\n  constructor() {\r\n    effect(() => {\r\n      if(this.value()){\r\n        this._model  = this.value();\r\n        this.index.set(this.lst().find(p => p.value() == this.value())?.index())\r\n      }\r\n      else{\r\n        if(this.lst().length){\r\n          this.model = this.lst()[0].value();\r\n        }\r\n      }\r\n      this.UpdateIndex();\r\n\r\n    }, { allowSignalWrites: true });\r\n  }\r\n\r\n  index: WritableSignal<number> = signal<number>(0);\r\n\r\n  ngAfterContentInit() {\r\n    this.UpdateIndex();\r\n  }\r\n\r\n  UpdateIndex(): void{\r\n    const lst = this.lst();\r\n    for(let carouselItem of lst){\r\n      carouselItem.index.set(lst.indexOf(carouselItem));\r\n      carouselItem.carouselIndex = this.index;\r\n    }\r\n  }\r\n  SetIndex(index: number){\r\n    this.index.set(index);\r\n    this.UpdateModel();\r\n  }\r\n  IndexUp(){\r\n    this.index.set(this.index() + 1);\r\n    this.UpdateModel();\r\n  }\r\n  IndexDown(){\r\n    this.index.set(this.index() - 1);\r\n    this.UpdateModel();\r\n  }\r\n  UpdateModel(){\r\n    this.model = this.lst().find(p => p.index() == this.index())?.value();\r\n  }\r\n\r\n  protected _model: any | null = null;\r\n  get model(): any      { return this._model;  }\r\n  set model(value: any) { this._model = value; this.propagateChange(this._model); }\r\n  \r\n\r\n  writeValue(value: string){ this.model = value; }\r\n\r\n  //[ ControlValueAccessor ]\r\n  /** Acionado quando um elemento perde o foco. */\r\n  blur  : OutputEmitterRef<any> = output<any>();\r\n  /** Emitido quando o valor é alterado. */\r\n  change: OutputEmitterRef<any> = output<any>();\r\n  propagateChange(obj: any): void{ this.onChange(obj); this.change.emit(obj);; }\r\n\r\n  onChange: (value: any) => void = (v: any) => { return; }\r\n  onTouch : (value: any) => void = (v: any) => { return; }\r\n  registerOnChange (fn: (value: any) => void ){ this.onChange = fn }\r\n  registerOnTouched(fn: (value: any) => void ){ this.onTouch  = fn }\r\n}\r\n","<ion-card class=\"size-full m-0\">\r\n  <ion-card-content class=\"size-full p-0 relative\">\r\n    <ng-content></ng-content>\r\n\r\n    <ion-button color=\"dark\" size=\"small\" class=\"absolute backdrop-blur-sm w-3 h-10 top-0 bottom-0 my-auto left-0 ml-2 default-transition\" [disabled]=\"index() == 0\" [ngClass]=\"{'opacity-0': index() == 0}\" style=\"--border-radius: .5rem;\" (click)=\"IndexDown()\">\r\n      <ion-icon slot=\"icon-only\" name=\"chevron-back\"></ion-icon>\r\n    </ion-button>\r\n    <ion-button color=\"dark\" size=\"small\" class=\"absolute backdrop-blur-sm w-3 h-10 top-0 bottom-0 my-auto right-0 mr-2 default-transition\" [disabled]=\" index() >= lst().length - 1\" [ngClass]=\"{'opacity-0': index() >= lst().length - 1}\" style=\"--border-radius: .5rem;\" (click)=\"IndexUp()\">\r\n      <ion-icon slot=\"icon-only\" name=\"chevron-forward\"></ion-icon>\r\n    </ion-button>\r\n\r\n    @if(lst().length){\r\n      <div class=\"absolute left-0 bottom-0 h-8 w-full flex items-center justify-center\">\r\n        <div class=\"bg-dark/50 h-3 rounded-full flex items-center justify-center default-transition gap-0.5 p-0.5\">\r\n          @for (item of lst(); track $index) {\r\n            <div class=\"bg-light cursor-pointer border border-light/40 h-full aspect-square rounded-full backdrop-blur-sm default-transition\" (click)=\"SetIndex($index)\" [ngClass]=\"{'bg-dark': $index != index()}\"></div>\r\n          }\r\n        </div>\r\n      </div>\r\n    }\r\n  </ion-card-content>\r\n</ion-card>","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable, from, switchMap } from 'rxjs';\r\nimport { AuthService } from '../services/auth.service';\r\nimport { ApiUrlProviderService } from '../../web/api-url-provider.service';\r\n\r\n@Pipe({\r\n  name: 'secure',\r\n  standalone: true,\r\n})\r\nexport class SecurePipe implements PipeTransform {\r\n\r\n  constructor(\r\n    private http: HttpClient,\r\n    private auth: AuthService,\r\n    private apiUrlProviderService: ApiUrlProviderService\r\n  ) {}\r\n\r\n  transform(src: string): Observable<string> | Promise<string> {\r\n    if(src.startsWith(this.apiUrlProviderService.apiUrl)){\r\n      // Convert the Promise to an Observable and chain the HTTP request\r\n      return from(this.auth.LoadToken())\r\n      .pipe(\r\n        switchMap((Bearer: string) => {\r\n          const headers = new HttpHeaders({ 'Authorization': `Bearer ${Bearer}` });\r\n          return this.http.get(src, { headers, responseType: 'blob' });\r\n        }),\r\n        switchMap((blob: Blob) => {\r\n          const url = URL.createObjectURL(blob);\r\n          return from(Promise.resolve(url));\r\n        })\r\n      );\r\n    }\r\n    else{\r\n      return Promise.resolve(src);\r\n    }\r\n  }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, computed, effect, input, Input, InputSignal, OnInit, Signal } from '@angular/core';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { LoadingComponent } from '../generic/loading/loading.component';\r\nimport { ApiUrlProviderService } from '../../web/api-url-provider.service';\r\nimport { SecurePipe } from '../../core/pipes/secure.pipe';\r\n\r\n@Component({\r\n  standalone: true,\r\n  imports: [IonicModule, CommonModule, LoadingComponent, SecurePipe],\r\n  selector: 'image',\r\n  templateUrl: './image.component.html',\r\n  styleUrls: ['./image.component.scss'],\r\n})\r\nexport class ImageComponent  implements OnInit {\r\n\r\n  /** Tipo de prenchimento e borda  do objeto */\r\n  @Input() fill: 'clear'| 'outline' | 'solid' = 'outline';\r\n  /** Tipo de prenchimento da imagem */\r\n  @Input() object: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down' = 'contain';\r\n\r\n  ClassFill: string;\r\n  SetClassFill(): void{\r\n    switch(this.fill){\r\n      case('clear'):{\r\n        this.ClassFill = ''\r\n        break;\r\n      }\r\n      case('outline'):{\r\n        this.ClassFill = 'p-2 translucid-border rounded-2xl'\r\n        break;\r\n      }\r\n      case('solid'):{\r\n        this.ClassFill = 'p-2 translucid-border bg-medium/10 rounded-2xl'\r\n        break;\r\n      }\r\n    }\r\n  }\r\n  ClassObject: string\r\n  SetClassObject(): void{\r\n    switch(this.object){\r\n      case('contain'):{\r\n        this.ClassFill = 'object-contain'\r\n        break;\r\n      }\r\n      case('cover'):{\r\n        this.ClassFill = 'object-cover'\r\n        break;\r\n      }\r\n      case('fill'):{\r\n        this.ClassFill = 'object-fill'\r\n        break;\r\n      }\r\n      case('none'):{\r\n        this.ClassFill = 'object-none'\r\n        break;\r\n      }\r\n      case('scale-down'):{\r\n        this.ClassFill = 'object-scale-down'\r\n        break;\r\n      }\r\n    }\r\n  }\r\n\r\n  /** Link */\r\n  src: InputSignal<string | null> = input<string | null>();\r\n  _src: Signal<string> = computed(() => { \r\n    if(this.src()?.startsWith(\"http\")){\r\n      return this.src();\r\n    }\r\n    else\r\n    if(this.src()?.startsWith('assets')){\r\n      return window.origin + '/' + this.src()\r\n    }\r\n    else{\r\n      return this.apiUrlProviderService.apiUrl + this.src()\r\n    }\r\n  });\r\n\r\n  err: boolean = false;\r\n  loading: boolean = false;\r\n\r\n  constructor(\r\n    public apiUrlProviderService: ApiUrlProviderService\r\n  ) { \r\n    effect(() => {\r\n      this.err = !this.src();\r\n    });\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.SetClassFill();\r\n  }\r\n}\r\n","@if (!err && _src()) {\r\n    <div class=\"animated-from-top flex items-center justify-center relative overflow-hidden size-full {{ClassObject}} {{ClassFill}}\" >\r\n        <loading class=\"!text-sm\" [loading]=\"loading\" [type]=\"3\" text=\"\"></loading>\r\n        <ion-img \r\n            class=\"-translate-y-12 opacity-0 default-transition animated-from-top object-contain size-full\" \r\n            [ngClass]=\"{'opacity-100 translate-y-0': !loading }\"\r\n            [src]=\"src() ? (_src() | secure | async) : null\" \r\n            (ionImgWillLoad)=\"loading = true\"\r\n            (ionError)=\"loading = false; err = true\"\r\n            (ionImgDidLoad)=\"loading = false;\"\r\n        ></ion-img>\r\n    </div>\r\n}@else {\r\n    <div class=\"animated-from-top flex items-center justify-center size-full {{ClassObject}} {{ClassFill}}\">\r\n        <ion-icon class=\"text-xl\" name=\"image\" color=\"dark\"></ion-icon>\r\n    </div>\r\n}","import { Component, Input, input, OnInit } from '@angular/core';\r\nimport { ICarouselItem } from '../base.component';\r\n\r\n@Component({\r\n  selector: 'carousel-image',\r\n  templateUrl: './carousel-image.component.html',\r\n  styleUrls: ['./carousel-image.component.scss'],\r\n  providers: [{ provide: ICarouselItem, useExisting: CarouselImageComponent }],\r\n})\r\nexport class CarouselImageComponent extends ICarouselItem implements OnInit {\r\n  @Input() src: string; \r\n  constructor() { super(); }\r\n\r\n  ngOnInit() {}\r\n}","<image class=\"absolute top-0 left-0 block size-full default-transition rounded-xl\" fill=\"clear\"  \r\n  [ngClass]=\"{'opacity-20 -translate-x-full': carouselIndex() > index(), 'opacity-20 translate-x-full': carouselIndex() < index() }\" \r\n  [src]=\"src\"\r\n></image>","import { Component, OnInit } from '@angular/core';\r\nimport { ICarouselItem } from '../base.component';\r\n\r\n@Component({\r\n  selector: 'carousel-item',\r\n  templateUrl: './carousel-item.component.html',\r\n  styleUrls: ['./carousel-item.component.scss'],\r\n  providers: [{ provide: ICarouselItem, useExisting: CarouselItemComponent }],\r\n})\r\nexport class CarouselItemComponent extends ICarouselItem implements OnInit {\r\n  constructor() { super(); }\r\n\r\n  ngOnInit() {}\r\n}","<div class=\"absolute top-0 left-0 size-full default-transition rounded-xl\" [ngClass]=\"{'opacity-20 -translate-x-full': carouselIndex() > index(), 'opacity-20 translate-x-full': carouselIndex() < index() }\">\r\n  <ng-content></ng-content>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CarouselComponent } from './carousel.component';\r\nimport { CarouselImageComponent } from './carousel-image/carousel-image.component';\r\nimport { CarouselItemComponent } from './carousel-item/carousel-item.component';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { ImageComponent } from '../image/image.component';\r\n\r\nconst lstComponents = [ CarouselComponent, CarouselImageComponent, CarouselItemComponent ]\r\n\r\n@NgModule({\r\n  declarations: [...lstComponents],\r\n  exports     : [...lstComponents],\r\n  imports: [\r\n    CommonModule,\r\n    IonicModule,\r\n    ImageComponent\r\n  ]\r\n})\r\nexport class CarouselModule { }\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\n\r\n/** Bloqueia o conteudo na div que é aplicada\r\n *  O elemento superior NÃO deve ter posicionamento INSET\r\n */\r\n@Component({\r\n  standalone: true,\r\n  imports: [ CommonModule ],\r\n  selector: 'content-block',\r\n  templateUrl: './content-block.component.html',\r\n  styleUrls: ['./content-block.component.scss'],\r\n})\r\nexport class ContentBlockComponent  implements OnInit {\r\n\r\n  /** Texto a ser exibido */\r\n  @Input() text : string = \"Carregando, por favor aguarde...\";\r\n  /** Define se o conteudo é bloqueado ou não */\r\n  @Input() value: boolean = true;\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {}\r\n\r\n}\r\n","<div class=\"absolute top-0 left-0 size-full opacity-0 -z-50 default-transition -translate-y-12 flex items-center justify-center !translucid-background\" \r\n  [ngClass]=\"{'!z-20 !opacity-100 !translate-y-0': value}\">\r\n  <div class=\"w-full text-center h-16 flex items-center justify-center\">\r\n    {{text}}\r\n  </div>\r\n</div>","import { AfterViewInit, Component, Input, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\r\nimport { RouterOutlet } from \"@angular/router\";\r\nimport { Utils } from \"../../../../core/services/utils.service\";\r\n\r\n@Component({\r\n  selector: 'tab',\r\n  templateUrl: './tab.component.html',\r\n  styleUrls: ['./tab.component.scss'],\r\n})\r\nexport class TabComponent {\r\n  @Input() id   : string  = null;\r\n\r\n  @Input() label: string  = \"Label\";\r\n  /** Icone da aba @link https://ionic.io/ionicons */\r\n  @Input() name : string  = \"warning\";\r\n  /** Rota aba, quando náo informada irá mostrar o conteudo do componente */\r\n  @Input() public route : string | null = null;\r\n  @Input() active: boolean = false;\r\n  @Input() relative: boolean = false;\r\n\r\n  constructor() { }\r\n\r\n  @ViewChild('placeToRender', {read: ViewContainerRef}) placeToRender: ViewContainerRef;\r\n  routerOutlet: RouterOutlet | null = null;\r\n\r\n  guid = Utils.GenerateGUID();\r\n}\r\n\r\n","<div [ngClass]=\"{'-translate-x-full opacity-0': !active,\r\n                 '!relative': relative }\" class=\"default-transition overflow-hidden max-h-full size-full absolute top-0 left-0\">\r\n  @if(route && active){\r\n    <router-outlet class=\"size-full\"></router-outlet>\r\n  }@else {\r\n    <ng-content></ng-content>\r\n  }\r\n</div>","import { AfterContentInit, Component, ContentChild, ContentChildren, EventEmitter, OnInit, Output, QueryList } from '@angular/core';\r\nimport { TabComponent } from '../tab/tab.component';\r\nimport { RouterOutlet } from '@angular/router';\r\n\r\n@Component({\r\n  selector: 'tabs',\r\n  templateUrl: './tabs.component.html',\r\n  styleUrls: ['./tabs.component.scss'],\r\n})\r\nexport class TabsComponent implements AfterContentInit {\r\n\r\n  @ContentChildren(TabComponent) lstTabs: QueryList<TabComponent>;\r\n  @ContentChild(RouterOutlet)  router: RouterOutlet;\r\n  \r\n  /** Emitido quando a aba é trocada. Emite o ID do elemento */\r\n  @Output('change') changeEmitter: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n  constructor(\r\n  ) { }\r\n\r\n  ngAfterContentInit(): void {\r\n    let activeTabs = this.lstTabs.filter((tab) => tab.active);\r\n    if(activeTabs.length == 0 && this.lstTabs.length > 0) { this.SetActiveTab(this.lstTabs.first); }\r\n  \r\n    let currentLocationTabs = this.lstTabs.filter(tab => tab.route).filter((tab) => window.location.pathname.toLocaleLowerCase().includes((tab.route).toLocaleLowerCase()));\r\n    if(currentLocationTabs.length > 0){ this.SetActiveTab(currentLocationTabs[0]); }\r\n  }\r\n\r\n  ActiveTab: TabComponent | null = null;\r\n  SetActiveTab(tab: TabComponent){\r\n    this.lstTabs.forEach(tab => tab.active = false);\r\n    tab.active = true;\r\n    this.ActiveTab = tab;\r\n    if(tab.route){ this.isComponent = false; } else{ this.isComponent = true; }\r\n    this.changeEmitter.emit(this.ActiveTab.id);\r\n  }\r\n  isComponent: boolean = true;\r\n\r\n  GetElse(){\r\n    return this.lstTabs.some(p => p.route != null) ? './' : undefined\r\n  }\r\n}\r\n","<div class=\"flex flex-col size-full\">\r\n  <div class=\"h-10 w-full flex px-3 mask-x/3 overflow-x-auto\">\r\n    @for (tab of lstTabs; track $index) {\r\n      <div [routerLink]=\"tab.route ? '.' + tab.route : GetElse()\" [ngClass]=\"{'selected': tab.active}\" class=\"default-transition !translucid-background translucid-border tab-selector !border-b-0 animated-from-right whitespace-nowrap\" (click)=\"SetActiveTab(tab)\">\r\n        <ion-text class=\"mx-auto\" [color]=\"tab.active ? 'dark' : ''\">\r\n          <ion-icon [name]=\"tab.name\" class=\"align-sub mr-1\"></ion-icon> {{tab.label}}\r\n        </ion-text>\r\n      </div>\r\n    }\r\n  </div>\r\n  <div class=\"translucid-border tab-content !overflow-hidden relative\">\r\n    <ng-content></ng-content>\r\n  </div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TabsComponent } from './tabs/tabs.component';\r\nimport { TabComponent } from './tab/tab.component';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { RouterLinkWithHref, RouterModule } from '@angular/router';\r\nimport { NgVarDirective } from '../../../core/directives/ng-var.directive';\r\n\r\n@NgModule({\r\n  declarations: [ TabsComponent, TabComponent ],\r\n  exports     : [ TabsComponent, TabComponent ],\r\n  imports: [ CommonModule, IonicModule, NgVarDirective, RouterLinkWithHref, RouterModule ]\r\n})\r\nexport class TabsModule { }\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { StepperComponent } from '../stepper.component';\r\n\r\n@Component({\r\n  selector: 'step',\r\n  templateUrl: './step.component.html',\r\n  styleUrls: ['./step.component.scss'],\r\n})\r\nexport class StepComponent  implements OnInit {\r\n  \r\n  @Input()        label   : string = \"Label\";\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  parent: StepperComponent;\r\n\r\n  get index(): number{ \r\n    if(this.parent && this.parent.lstSteps){\r\n      return this.parent.lstSteps.toArray().indexOf(this);\r\n    }\r\n    return 0;\r\n  }\r\n  \r\n  get fill(): boolean{\r\n    if(this.parent){\r\n      return this.parent.lstSteps.toArray().indexOf(this) == this.parent._model;\r\n    }\r\n    return false;\r\n  };\r\n  \r\n  get selected(): boolean{\r\n    if(this.parent){\r\n      return this.parent.lstSteps.toArray().indexOf(this) <= this.parent._model;\r\n    }\r\n    return false;\r\n  };\r\n\r\n  get _fill(){\r\n    return this.fill ? 1 : 0; \r\n  }\r\n}","<div class=\"px-1 flex flex-col items-center justify-center text-center animated\">\r\n  <div [ngClass]=\"{'selected': selected}\" class=\"default-transition min-h-8 min-w-8 bg-red-400 flex items-center justify-center rounded-2xl step\">\r\n    <div class=\"wrapper\"><ng-content select=\"ion-icon, ion-text\"></ng-content></div>\r\n    <div class=\"default\">\r\n      {{index + 1}}\r\n    </div>\r\n  </div>\r\n  \r\n  <ion-text> {{label}} </ion-text>\r\n  <ion-progress-bar [color]=\"selected ? 'secondary' : 'primary'\" class=\"h-2 ease-in-out\" [value]=\"_fill\"></ion-progress-bar>\r\n</div>","import { AfterContentInit, Component, ContentChildren, QueryList } from '@angular/core';\r\nimport { StepComponent } from './step/step.component';\r\nimport { CustomInput, InputProviderFactory } from '../../inputs/inputs';\r\n\r\n@Component({\r\n  selector: 'stepper',\r\n  templateUrl: './stepper.component.html',\r\n  styleUrls: ['./stepper.component.scss'],\r\n  providers: InputProviderFactory.GetProvider(StepperComponent)\r\n})\r\nexport class StepperComponent extends CustomInput<any> implements AfterContentInit  {\r\n\r\n  constructor() { super(); }\r\n  ngAfterContentInit(): void {\r\n    if(this.lstSteps){\r\n      this.lstSteps.filter(p => !p.parent).forEach(comp => { comp.parent = this; });\r\n    }\r\n  }\r\n\r\n  override async ngOnInit() {\r\n    super.ngOnInit();\r\n  }\r\n\r\n  @ContentChildren(StepComponent) lstSteps : QueryList<StepComponent>;\r\n\r\n  override writeValue(value: any){ this.setModel(value) }\r\n  override get model(): any      { return this._model;  }\r\n  override set model(value: any) { this.setModel(value); this.propagateChange(this._model); }\r\n\r\n  override _model: number = 0;\r\n  setModel(value){\r\n    this._model = value;\r\n    this.ngAfterContentInit();\r\n  }\r\n}\r\n","<div class=\"flex w-full justify-evenly\">\r\n    <ng-content selector=\"step\" class=\"grow\"></ng-content>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StepComponent } from './step/step.component';\r\nimport { StepperComponent } from './stepper.component';\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\n@NgModule({\r\n  declarations: [ StepComponent, StepperComponent ],\r\n  exports: [ StepComponent, StepperComponent ],\r\n  imports: [\r\n    CommonModule,\r\n    IonicModule\r\n  ]\r\n})\r\nexport class StepperModule { }\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\n@Component({\r\n  selector: 'drag-drop-overlay',\r\n  templateUrl: './drag-drop-overlay.component.html',\r\n  styleUrls: ['./drag-drop-overlay.component.scss'],\r\n})\r\nexport class DragDropOverlayComponent  implements OnInit {\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {}\r\n\r\n  fileOver: boolean;\r\n}\r\n","<div class=\"absolute top-0 left-0 size-full z-50 p-4 pointer-events-none\" [ngClass]=\"{'fileOver': fileOver}\">\r\n  <div class=\"border-4 border-dashed border-transparent default-transition rounded-2xl size-full flex items-center justify-center\">\r\n    <ion-icon class=\"text-9xl text-transparent\" name=\"cloud-upload\"></ion-icon>\r\n  </div>\r\n</div>","import { ContentChild, Directive, ViewChild } from '@angular/core';\r\nimport { Output, EventEmitter, HostBinding, HostListener } from '@angular/core';\r\nimport { DragDropOverlayComponent } from './drag-drop-overlay/drag-drop-overlay.component';\r\n\r\n@Directive({\r\n  selector: '[DragDropFile]'\r\n})\r\nexport class DragDropFileDirective {\r\n\r\n  constructor() { }\r\n\r\n  @HostBinding('class.fileOver') fileOver: boolean;\r\n  @Output() fileDropped = new EventEmitter<File[]>();\r\n\r\n  @ContentChild(DragDropOverlayComponent) dragDropOverlay: DragDropOverlayComponent \r\n\r\n  // Dragover listener\r\n  @HostListener('dragover', ['$event']) onDragOver(evt: DragEvent) {\r\n    evt.preventDefault();\r\n    evt.stopPropagation();\r\n    this.fileOver = true;\r\n    this.dragDropOverlay.fileOver = true;\r\n  }\r\n\r\n  // Dragleave listener\r\n  @HostListener('dragleave', ['$event']) public onDragLeave(evt: DragEvent) {\r\n    evt.preventDefault();\r\n    evt.stopPropagation();\r\n    this.fileOver = false;\r\n    this.dragDropOverlay.fileOver = false;\r\n  }\r\n  \r\n  // Drop listener\r\n  @HostListener('drop', ['$event']) public onDrop(evt: DragEvent) {\r\n    evt.preventDefault();\r\n    evt.stopPropagation();\r\n    this.fileOver = false;\r\n    this.dragDropOverlay.fileOver = false;\r\n    let files = evt.dataTransfer.files;\r\n    if (files.length > 0) {\r\n      this.fileDropped.emit(Array.from(files));\r\n    }\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DragDropFileDirective } from './drag-drop-file.directive';\r\nimport { DragDropOverlayComponent } from './drag-drop-overlay/drag-drop-overlay.component';\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\nconst values = [\r\n  DragDropFileDirective,\r\n  DragDropOverlayComponent\r\n]\r\n\r\n\r\n@NgModule({\r\n  declarations: [ ...values ],\r\n  exports     : [ ...values ],\r\n  imports: [\r\n    CommonModule,\r\n    IonicModule\r\n  ]\r\n})\r\nexport class DragDropFileModule { }\r\n","import { TableField } from \"../components/inputs/table-field\";\r\n\r\n/**  */\r\nexport interface IComparison {\r\n  /** \r\n   * Desabilita as mudanças de valores quando em uma listagem\r\n  */\r\n  disableChange: boolean;\r\n\r\n  /** \r\n   * Tipo da comparação veja os tipos em ComparisonType\r\n   */\r\n  type: ComparisonType,\r\n  \r\n  /** \r\n   * Seta o valor da comparação (utiliza o valor B)\r\n   * @param value Valor a ser comparado \r\n  */\r\n  setValue(value);\r\n\r\n  /** \r\n   * Retorna o valor da comparação (utiliza o valor B)\r\n   * @returns value Valor a ser comparado \r\n  */\r\n  getValue(): any;\r\n  \r\n  /**  \r\n   * @param comparison Comparação para ser utilizada em conjunto com a que está fazendo a chamada \r\n   * @returns Retorna um comparação, equivalente a ```(A && B)```\r\n  */\r\n  And(comparison: IComparison): IComparison;\r\n    /**  \r\n   * @param comparison Comparação para ser utilizada em conjunto com a que está fazendo a chamada \r\n   * @returns Retorna um comparação, equivalente a ```(A || B)```\r\n  */\r\n  Or(comparison: IComparison): IComparison;\r\n  \r\n  /** Retorna o tipo da propriedade A  */\r\n  GetAType();\r\n  /** Retorna o tipo da propriedade B  */\r\n  GetBType();\r\n  \r\n  /** Retorna o nome da propriedade A */\r\n  GetPropAName();\r\n  /** Retorna o nome da propriedade B */\r\n  GetPropBName();\r\n}\r\n\r\nexport class Comparison<T1, T2> implements IComparison{\r\n  constructor(\r\n    public type: ComparisonType,\r\n    /** Valor A para ser comparado */\r\n    public valueA: T1 | T2,\r\n    /** Valor B para ser comparado */\r\n    public valueB: T1 | T2,\r\n    /** Tipo do valor B para ser comparado, se for do tipo propriedade o valor vai ser comparado no db */\r\n    public valueAType: ComparisonValueType,\r\n    /** Tipo do valor B para ser comparado, se for do tipo propriedade o valor vai ser comparado no db */\r\n    public valueBType: ComparisonValueType,\r\n    /** Inverte a comparação, EX:\r\n     *  ```!(A && B)```\r\n     */\r\n    public not       : boolean = false,\r\n    public disableChange: boolean = false\r\n  ){}\r\n\r\n  setValue(value: T1 | T2) {\r\n    this.valueB = value;\r\n  }\r\n  getValue() {\r\n    return this.valueB;\r\n  }\r\n  GetPropAName(){ return (this.valueA as ComparisonValue).name; }\r\n  GetPropBName(){ return (this.valueB as ComparisonValue).name; }\r\n\r\n  GetAType(){ return this.valueAType; }\r\n  GetBType(){ return this.valueBType; }\r\n\r\n  And<TA, TB>(comparison: Comparison<TA, TB>): Comparison<Comparison<T1, T2>, Comparison<TA, TB>>{\r\n    return new Comparison<Comparison<T1, T2>, Comparison<TA, TB>>(ComparisonType.And, this, comparison, ComparisonValueType.Comparison, ComparisonValueType.Comparison);\r\n  }\r\n\r\n  Or<TA, TB>(comparison: Comparison<TA, TB>): Comparison<Comparison<T1, T2>, Comparison<TA, TB>>{\r\n    return new Comparison<Comparison<T1, T2>, Comparison<TA, TB>>(ComparisonType.And, this, comparison, ComparisonValueType.Comparison, ComparisonValueType.Comparison);\r\n  }\r\n}\r\n\r\n\r\n/** Retorna a comparação inversa: EX: \r\n * ```(A && B) -> !(A && B)```\r\n */\r\nexport function Not<T1, T2>(comparison: Comparison<T1, T2>): Comparison<T1, T2>{\r\n  return new Comparison<T1, T2>(comparison.type, comparison.valueA, comparison.valueB, comparison.valueAType, comparison.valueBType, !comparison.not, comparison.disableChange);\r\n}\r\n\r\n/**\r\n * Compila todos os filtros validos para uma IComparison única, se não houver filtros validos, retornara nulo\r\n * @param lstTableFields lista de TableFields para compilar os filtros\r\n * @returns {IComparison} Filtro do tipo IComparison ou null\r\n */\r\nexport function CompileLstTableField(lstTableFields: TableField[]): IComparison | null{\r\n  var Comparison: IComparison | null = null;\r\n  lstTableFields.forEach((tf: TableField) => {\r\n    if(tf.filter){ \r\n      if(Comparison){\r\n        Comparison = Comparison.And(tf.filter);\r\n      }else{\r\n        Comparison = tf.filter; \r\n      }\r\n    }\r\n  });\r\n\r\n  return Comparison;\r\n}\r\n\r\n/**\r\n * Compila uma lista de filtros em um só para ser enviado a API\r\n * @param lstFilter Lista de fitros a sem compilada\r\n * @returns Filtro do tipo IComparison\r\n */\r\nexport function CompileFilters(lstFilter: IComparison[]): IComparison {\r\n  lstFilter = lstFilter.filter(p => p) \r\n  var Comparison: IComparison = lstFilter[0];\r\n\r\n  for(let i = 1; i< lstFilter.length; i++){\r\n    Comparison = Comparison.And(lstFilter[i]);\r\n  }\r\n\r\n  return Comparison;\r\n}\r\n\r\n/** Tipos de valores a serem comparados na filtragem de dados */\r\nenum ComparisonValueType{\r\n  Property   = 0,\r\n  Comparison = 1,\r\n  Int        = 2,\r\n  Long       = 3,\r\n  Decimal    = 4,\r\n  String     = 5,\r\n  DateTime   = 6,\r\n  Date       = 9,\r\n  List       = 7,\r\n  Bool       = 8,\r\n\r\n  RouteParam = 10,\r\n}\r\n\r\nexport enum ComparisonType{\r\n  //[ Logical ]\r\n  And  = 100,  \r\n  Or   = 101,\r\n  // Nand = 102,\r\n  // Nor  = 103,\r\n  // Xor  = 104,\r\n  // NXor = 105,\r\n  Not  = 106,\r\n  //[ Comparisson  ]\r\n  Equals             = 200,\r\n  BiggerThan         = 201,\r\n  BiggerThanOrEqual  = 202,\r\n  SmallerThan        = 203,\r\n  SmallerThanOrEqual = 204,\r\n  \r\n  EqualsCaseInsensitive = 200,\r\n  Contains              = 201,\r\n  // ContainsCaseInsensitive = 202,\r\n}\r\n\r\nexport class ComparisonValue{ constructor(public name: string, public type: ComparisonValueType) {} }\r\n\r\n//#region [ Number ]\r\nexport class NumberProperty extends ComparisonValue{ \r\n  constructor(name: string, type: ComparisonValueType = ComparisonValueType.Decimal) { \r\n    super(name, type); \r\n  } \r\n\r\n  Equals(n: number | null): Comparison<NumberProperty, number | null>{\r\n    return new Comparison<NumberProperty, number | null>(ComparisonType.Equals, this, n, ComparisonValueType.Property, this.type);\r\n  }\r\n  BiggerThan(n: number | null): Comparison<NumberProperty, number | null>{\r\n    return new Comparison<NumberProperty, number | null>(ComparisonType.BiggerThan, this, n, ComparisonValueType.Property, this.type);\r\n  }\r\n  BiggerThanOrEqual(n: number | null): Comparison<NumberProperty, number | null>{\r\n    return new Comparison<NumberProperty, number | null>(ComparisonType.BiggerThanOrEqual, this, n, ComparisonValueType.Property, this.type);\r\n  }\r\n  SmallerThan(n: number | null): Comparison<NumberProperty, number | null>{\r\n    return new Comparison<NumberProperty, number | null>(ComparisonType.SmallerThan, this, n, ComparisonValueType.Property, this.type);\r\n  }\r\n  SmallerThanOrEqual(n: number | null): Comparison<NumberProperty, number | null>{\r\n    return new Comparison<NumberProperty, number | null>(ComparisonType.SmallerThanOrEqual, this, n, ComparisonValueType.Property, this.type);\r\n  }\r\n}\r\n\r\n/** Filtro para propriedades int e enum */\r\nexport class IntProperty extends NumberProperty {\r\n  constructor(name: string) { super(name, ComparisonValueType.Int); }\r\n  Contains(arr: (string | number)[]): Comparison<IntProperty, (string | number)[]>{\r\n    return new Comparison<IntProperty, (string | number)[]>(ComparisonType.Contains, this, arr, ComparisonValueType.Property, this.type);\r\n  }\r\n}\r\n/** FIltro para proprieadades long */\r\nexport class LongProperty extends NumberProperty {\r\n  constructor(name: string) { super(name, ComparisonValueType.Long); }\r\n  \r\n  Contains(arr: (string | number)[]): Comparison<LongProperty, (string | number)[]>{\r\n    return new Comparison<LongProperty, (string | number)[]>(ComparisonType.Contains, this, arr, ComparisonValueType.Property, this.type);\r\n  }\r\n}\r\n/** Filtro de preopriedades decimal  */\r\nexport class DecimalProperty extends NumberProperty {\r\n  constructor(name: string) { super(name, ComparisonValueType.Decimal); }\r\n}\r\n\r\n/** Paranetros para usos interno do pacote */\r\nexport class RouteParamProperty extends NumberProperty {\r\n  constructor(name: string) { super(name, ComparisonValueType.Decimal); }\r\n}\r\n//#endregion [ Number ]\r\nexport class ImplicitProperty extends NumberProperty {\r\n  constructor(name: string) { super(name, ComparisonValueType.Property); }\r\n}\r\n\r\n/** Filtro de comparação de string */\r\nexport class StringProperty extends ComparisonValue {\r\n  constructor(name: string) { super(name, ComparisonValueType.String); }\r\n  \r\n  Equals(string: string | null): Comparison<StringProperty, string | null>{\r\n    return new Comparison<StringProperty, string | null>(ComparisonType.Equals, this, string, ComparisonValueType.Property, this.type);\r\n  }\r\n  Contains(string: string | null): Comparison<StringProperty, string | null>{\r\n    return new Comparison<StringProperty, string | null>(ComparisonType.Contains, this, string, ComparisonValueType.Property, this.type);\r\n  }\r\n  EqualsCaseInsensitive(string: string | null): Comparison<StringProperty, string | null>{\r\n    return new Comparison<StringProperty, string | null>(ComparisonType.EqualsCaseInsensitive, this, string, ComparisonValueType.Property, this.type);\r\n  }\r\n  // ContainsCaseInsensitiveNoDiacritics(string: string | null): Comparison<StringProperty, string | null>{\r\n  //   return new Comparison<StringProperty, string | null>(ComparisonType.ContainsCaseInsensitiveNoDiacritics, this, string, ComparisonValueType.Property, this.type);\r\n  // }\r\n}\r\n\r\n/** Filtro de propriedades booleanas */\r\nexport class BoolProperty extends ComparisonValue {\r\n  constructor(name: string) { super(name, ComparisonValueType.Bool); }\r\n  \r\n  Equals(string: boolean | null): Comparison<BoolProperty, boolean | null>{\r\n    return new Comparison<BoolProperty, boolean | null>(ComparisonType.Equals, this, string, ComparisonValueType.Property, this.type);\r\n  }\r\n}\r\n\r\n/** Filtro de datas */\r\nexport class DateProperty extends ComparisonValue{ \r\n  constructor(name: string, type: ComparisonValueType = ComparisonValueType.DateTime) { \r\n    super(name, type); \r\n  } \r\n\r\n  Equals(n: string | null): Comparison<DateProperty, string | null>{\r\n    return new Comparison<DateProperty, string | null>(ComparisonType.Equals, this, n, ComparisonValueType.Property, this.type);\r\n  }\r\n  BiggerThan(n: string | null): Comparison<DateProperty, string | null>{\r\n    return new Comparison<DateProperty, string | null>(ComparisonType.BiggerThan, this, n, ComparisonValueType.Property, this.type);\r\n  }\r\n  BiggerThanOrEqual(n: string | null): Comparison<DateProperty, string | null>{\r\n    return new Comparison<DateProperty, string | null>(ComparisonType.BiggerThanOrEqual, this, n, ComparisonValueType.Property, this.type);\r\n  }\r\n  SmallerThan(n: string | null): Comparison<DateProperty, string | null>{\r\n    return new Comparison<DateProperty, string | null>(ComparisonType.SmallerThan, this, n, ComparisonValueType.Property, this.type);\r\n  }\r\n  SmallerThanOrEqual(n: string | null): Comparison<DateProperty, string | null>{\r\n    return new Comparison<DateProperty, string | null>(ComparisonType.SmallerThanOrEqual, this, n, ComparisonValueType.Property, this.type);\r\n  }\r\n}\r\n\r\n/** FIltro de datas com tempo  */\r\nexport class DateTimeProperty extends DateProperty {\r\n  constructor(name: string) { super(name, ComparisonValueType.DateTime); }\r\n}\r\n\r\n/** Filtro de lisras */\r\nexport class ListValue extends ComparisonValue {\r\n  constructor(public value: (number | string)[]) { super(\"<listValue>\", ComparisonValueType.List); }\r\n\r\n  Contains(n: number | string | ComparisonValue, valueBType?: ComparisonValueType): Comparison<ListValue, number | string | ComparisonValue>{\r\n    if(n instanceof ComparisonValue){\r\n      valueBType = ComparisonValueType.Property;\r\n    }\r\n    return new Comparison<ListValue, number | string | ComparisonValue>(ComparisonType.Equals, this, n, this.type, valueBType);\r\n  }\r\n}","\r\nimport { GenericService } from \"../../../core/services/generics.service\";\r\nimport { ViewFiltros } from \"../../classes\";\r\nimport { Observable, firstValueFrom } from \"rxjs\";\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Component, effect, ElementRef, Input, model, ModelSignal, OnInit } from '@angular/core';\r\nimport { HttpService, ViewRetorno } from '../../../web/http.service';\r\nimport { HttpServiceAtivo } from '../../../web/http.ativo.service';\r\nimport { RefresherCustomEvent } from \"@ionic/angular\";\r\nimport { RouteData } from \"../../../classes/routing.factory\";\r\nimport { CompileLstTableField, IComparison } from \"../../../classes/comparison\";\r\nimport { TableField } from \"./../../inputs/table-field\";\r\n\r\n//Classe de listagem, implemente carregamento e filtragem de dados\r\n@Component({ template: '', styles: '' })\r\nexport abstract class List<T extends HttpService<V> | HttpServiceAtivo<V>, V = any> implements OnInit {\r\n\r\n  protected genericService: GenericService;\r\n  protected activatedRoute: ActivatedRoute;\r\n  protected elementRef: ElementRef;\r\n  @Input() service: T;\r\n\r\n  constructor() { \r\n    effect(() => {\r\n      this.SetFilters();\r\n    });\r\n  }\r\n  \r\n  /** @optional Filtro a ser aplicado na busca da listagem na API */\r\n  preloadFilter: ModelSignal<IComparison | null> = model<IComparison | null>(null); \r\n  // @Input() preloadFilter: IComparison | null = null; \r\n  \r\n  /** End-point de carregamento de dados. Deve ser uma função no service aplicado */\r\n  @Input() loadFrom: (view: ViewFiltros) => Observable<ViewRetorno>;\r\n\r\n\r\n  lstDados: V[] = [];\r\n  total   : number;\r\n  nested  : boolean = false;\r\n  loading : boolean = true;\r\n  \r\n  /** Filtro précarregado  */\r\n  @Input() frm: ViewFiltros = new ViewFiltros();\r\n\r\n  /** Lista de campos a serem substituídos pelo padrão, armazenado no service enviado como parâmetro */\r\n  @Input() lstTableFields: TableField[] = [];\r\n\r\n  async ngOnInit(): Promise<void> {\r\n    if(this.lstTableFields.length == 0){\r\n      this.lstTableFields = this.service.lstTableFields;\r\n    }\r\n    if(!this.service.route){ console.warn(\"[ Warning! ] [ Url is undefined ]\")}\r\n    if(!this.service.title){ console.warn(\"[ Warning! ] [ titulo is undefined ]\")}\r\n    \r\n    //[ Nested element ]\r\n    if(this.elementRef.nativeElement.parentElement){\r\n      this.nested = (this.elementRef.nativeElement.parentElement.tagName as string).toUpperCase() != \"ION-CONTENT\";\r\n    }else{\r\n      this.nested = true;\r\n    }\r\n\r\n    await this.SetFilters();\r\n    if(this.nested){ this.Refresh(); }\r\n  }\r\n\r\n  protected async SetFilters(): Promise<void>{\r\n    await this.LoadIdComparison();\r\n    const compiled      = CompileLstTableField(this.lstTableFields);\r\n    const preloadFilter = this.preloadFilter();\r\n    const lstComp: IComparison[] = [preloadFilter, compiled];\r\n    for(const IComp of lstComp){\r\n      if(IComp && this.frm.filter){\r\n        this.frm.filter = this.frm.filter.And(IComp);\r\n      }\r\n      else \r\n      if(IComp){\r\n        this.frm.filter = IComp;\r\n      }\r\n    }\r\n  }\r\n\r\n  async LoadIdComparison(): Promise<void>{\r\n    try{\r\n      const data: RouteData = (await firstValueFrom(this.activatedRoute.data)) as RouteData;\r\n\r\n      const id   = this.genericService.GetId(this.activatedRoute, data.idPreloaderConfiguration.routeDepth);\r\n      var index: number = this.lstTableFields.indexOf(this.lstTableFields.find(p => p.index == data.idPreloaderConfiguration.idPreloader.name));\r\n      this.lstTableFields[index].filter                = data.idPreloaderConfiguration.idPreloader.Equals(id);\r\n      this.lstTableFields[index].filter.disableChange =  data.idPreloaderConfiguration.idPreloaderChange;\r\n    }finally{ \r\n      return;\r\n    }\r\n  }\r\n\r\n  async Refresh(event?: RefresherCustomEvent): Promise<void> {\r\n    this.loading = true;\r\n    try{\r\n      await this.Load();\r\n    }\r\n    finally{\r\n      if(event){ event.target.complete(); }\r\n      this.loading = false;\r\n    }\r\n  }\r\n  \r\n  async Load(): Promise<void>{\r\n    var vRetorno: ViewRetorno;\r\n\r\n    try{\r\n      if(this.loadFrom){\r\n        vRetorno = await firstValueFrom(this.service[this.loadFrom.name](this.frm));\r\n      }\r\n      else{\r\n        vRetorno = await firstValueFrom(this.service.List(this.frm));\r\n      }\r\n      this.lstDados = vRetorno.lstDados; \r\n      this.total    = vRetorno.total; \r\n    } finally{ \r\n      return;\r\n    }\r\n  }\r\n}","import { Component, Output, Input, EventEmitter, HostListener } from '@angular/core';\r\n\r\nimport { IonSearchbar } from '@ionic/angular';\r\n\r\nimport { PageOption } from '../../../../classes/config';\r\nimport { EnvironmentService } from '../../../../core/services/environment.service';\r\n\r\n/** Componente de cabeçalho de listagem padrão  */\r\n@Component({\r\n  selector: 'header-list',\r\n  templateUrl: './header-list.component.html',\r\n  styleUrls: ['./header-list.component.scss'],\r\n})\r\nexport class HeaderListComponent {\r\n\r\n  /** Número de páginas máximo (usando two way data binding) */\r\n  @Input()  limit: number | null;\r\n  @Output() limitChange: EventEmitter<number | null> = new EventEmitter<number | null>();\r\n\r\n  /** Valor da pagina, setado = 1 quando troca-se o valor de limite de paginas (usando two way data binding) */\r\n  @Input() page: number;\r\n  @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n  /** Campo de pesquisa (usando two way data binding) */\r\n  @Input() search: string | null;\r\n  @Output() searchChange: EventEmitter<string | null> = new EventEmitter<string | null>();\r\n  \r\n  @Input() loading: boolean;\r\n\r\n  /** Evento de refersh\r\n   * Emitido em:\r\n   *  - Troca de página\r\n   *  - Pesquisa\r\n   */\r\n  @Output('refresh') refreshEmitter: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  /** Link a ser acessado no click do botão NOVO */\r\n  @Input() link : string = \"view\";\r\n\r\n  /** Remove o botão NOVO */\r\n  @Input() noNew: boolean = false;\r\n  /** Remove o select de paginas */\r\n  @Input() noPage: boolean = false;\r\n  /** Remove o elemento de pesquisa */\r\n  @Input() noSearch: boolean = false;\r\n    \r\n\r\n  /** Desabilita o redirect de novo em um botão para ser utilizado com [onNewEmitter] */\r\n  @Input() overrideNew: boolean = false;\r\n  /** Evento quando o botáo NOVO é clickado */\r\n  @Output('onNew') onNewEmitter: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  onNew(): void{\r\n    this.onNewEmitter.emit();\r\n  }\r\n\r\n  constructor(private coreService: EnvironmentService) { \r\n    this.lstLimits = coreService.environment.defaultPageLimits;\r\n    this.limit = this.lstLimits[0].value\r\n  }\r\n\r\n  lstLimits: PageOption[] = []\r\n  EmitSearch(): void{\r\n    this.searchChange.emit(this.search);\r\n    this.EmitChange();\r\n  }\r\n\r\n  EmitLimit(): void{\r\n    this.limitChange.emit(this.limit);\r\n    this.pageChange.emit(1);\r\n    \r\n    this.EmitChange();\r\n  }\r\n\r\n  EmitChange(){\r\n    this.refreshEmitter.emit();\r\n  }\r\n\r\n  @HostListener('window:keydown',['$event'])\r\n  onKeyPress($event: KeyboardEvent) {\r\n    if(($event.ctrlKey || $event.metaKey) && ($event.key == 'F' || $event.key == 'f')){\r\n      (document.getElementById(\"list_search\") as any as IonSearchbar).setFocus();\r\n      $event.preventDefault();\r\n    }\r\n  }\r\n}","<div class=\"flex flex-wrap w-full gap-2\">\r\n  @if (!noPage) {\r\n    <div class=\"portrait:basis-[calc(50%-0.25rem)] landscape:w-48 portrait:order-1\">\r\n      <ion-item class=\"rounded-2xl w-full h-full translucid-border\" lines=\"full\" style=\"--border-radius: 1rem !important; --background: transparent\" >\r\n        <ion-select [disabled]=\"loading\" [(ngModel)]=\"limit\" (ionChange)=\"EmitLimit()\" interface=\"popover\">\r\n          @for (limit of lstLimits; track limit) {\r\n            <ion-select-option [value]=\"limit.value\">{{limit.label}}</ion-select-option>\r\n          }\r\n        </ion-select>\r\n      </ion-item>\r\n    </div>\r\n  }\r\n  \r\n  <ng-content select=\"[slot=start]\"></ng-content>\r\n\r\n  @if(!noSearch) {\r\n    <div class=\"portrait:basis-full portrait:order-3 grow flex items-center justify-center\">\r\n      <ion-searchbar class=\"w-full min-h-0 p-0 m-0\" [debounce]=\"500\" [(ngModel)]=\"search\" (ionInput)=\"this.EmitSearch()\" [animated]=\"true\" placeholder=\"Pesquisar...\"></ion-searchbar>\r\n    </div>\r\n  }\r\n\r\n  <ng-content select=\"[slot=end]\"></ng-content>\r\n\r\n  @if(!noNew){\r\n    <div class=\"portrait:basis-[calc(50%-0.25rem)] landscape:basis-24 portrait:order-2\">\r\n      <ion-button [routerLink]=\"overrideNew ? null : [link]\" (click)=\"onNew()\" class=\"size-full m-0 rounded-2xl text-base\" size=\"small\" fill=\"clear\">\r\n        <ion-icon name=\"add\" slot=\"start\"></ion-icon>\r\n        <ion-text class=\"text-base\">Novo</ion-text>\r\n      </ion-button>\r\n    </div>\r\n  }\r\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { Utils } from '../../../core/services/utils.service';\r\nimport { GenericService } from '../../../core/services/generics.service';\r\n\r\n/** Componente de paginação padrão  */\r\n@Component({\r\n  selector: 'default-pagination',\r\n  templateUrl: './default-pagination.component.html',\r\n  styleUrls: ['./default-pagination.component.scss'],\r\n})\r\nexport class DefaultPaginationComponent  implements OnInit {\r\n\r\n\r\n  total: number = 0;\r\n  limit: number | null = 0;\r\n  /** Valor total de dados */\r\n  @Input('total') set _total(value: number){  \r\n    this.total = value;\r\n    this.TotalPages = this.GetTotalPages();\r\n    this.lstPages = this.GetlstPages();\r\n  };\r\n  /** Limite de páginas */\r\n  @Input('limit') set _limit(value: number | null){ \r\n    this.limit = value;\r\n    this.TotalPages = this.GetTotalPages();\r\n    this.lstPages = this.GetlstPages();\r\n  };\r\n\r\n  /** Quantidade de dados em tela */\r\n  @Input() length: number;\r\n  @Input() loading: boolean;\r\n  \r\n  /** Pagina atual (usando two way data binding) */\r\n  @Input() page: number;\r\n  @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\r\n  \r\n  /** Evento emitido na mudança de valores (Pagina) */\r\n  @Output('change') changeEmitter: EventEmitter<void> = new EventEmitter<void>();\r\n  \r\n  constructor(\r\n    private genericService: GenericService\r\n  ) { }\r\n\r\n  ngOnInit() {}\r\n  pop_id: string = \"popover-id-\" + Utils.GenerateGUID();\r\n\r\n  GetlstPages(): number[] {\r\n    if(!this.TotalPages){ return []; }\r\n    var startIndex: number;\r\n    var start: number[] = [];\r\n\r\n    startIndex = this.page - 1;\r\n\r\n    var _: number[] = [];\r\n    for(let i = this.TotalPages - 4; i <= this.TotalPages ; i++){\r\n      if(i > 0){\r\n        _.push(i);\r\n      }\r\n    }\r\n\r\n    for(let i = startIndex; i <= this.TotalPages && i < startIndex + 5; i++){\r\n      if(i > 0){\r\n        start.push(i);\r\n      }\r\n    }\r\n    if(startIndex == 0 && this.TotalPages >= 5){\r\n      start.push(5);\r\n    }\r\n\r\n    if(start[0] > _[0]){\r\n      return _;\r\n    }\r\n\r\n    return start;\r\n  }\r\n\r\n  GetTotalPages(): number{\r\n    return this.limit ? Math.ceil(this.total / this.limit) : Math.ceil(this.total / this.total)\r\n  }\r\n\r\n  lstPages  : number[] = [];\r\n  TotalPages: number = 0;\r\n\r\n  PageAdd(): void{\r\n    if(this.page + 1 > this.TotalPages){ return; }\r\n    this.SetPage(this.page + 1);\r\n  }\r\n  \r\n  PageSub(): void{\r\n    if(this.page - 1 < 1){ return; }\r\n    this.SetPage(this.page - 1);\r\n  }\r\n\r\n  SetPage(value: number): void{\r\n    if(value != this.page){\r\n      this.pageChange.emit(value);\r\n      this.EmitChange()\r\n\r\n      setTimeout(() => {\r\n        this.TotalPages = this.GetTotalPages();\r\n        this.lstPages = this.GetlstPages();\r\n      }, 100);\r\n    }\r\n  }\r\n\r\n  _page: number;\r\n  SetPageManual(){\r\n    if(this._page && this._page > 0 && this._page <= this.TotalPages){\r\n      this.SetPage(this._page);\r\n    }else{\r\n      this.genericService.PresentToast(\"Página inválida\")\r\n    }\r\n  }\r\n\r\n  EmitChange(): void{\r\n    this.changeEmitter.emit();\r\n  }\r\n}","<div id=\"pagination\" class=\"flex items-center rounded-b-2xl px-4 py-2 portrait:flex-col\">\r\n  <div class=\"w-full h-full items-center justify-start flex portrait:justify-center\">\r\n    <ion-spinner [hidden]=\"!(loading && lstPages.length == 0)\"></ion-spinner>\r\n    <ion-text [hidden]=\"loading && lstPages.length == 0\">\r\n      <div class=\"flex\">\r\n        Mostrando &nbsp;\r\n        <ion-skeleton-text *ngIf=\"loading\" [animated]=\"true\" style=\"width: 2ch\"></ion-skeleton-text>\r\n        <b *ngIf=\"!loading\">{{limit * page - limit + length}}</b>  &nbsp;\r\n        de \r\n        @if (total != null) {\r\n          <b>&nbsp; {{total}} &nbsp;</b> items\r\n        }\r\n        @else{\r\n          <b>&nbsp; - &nbsp; </b> items\r\n        }\r\n      </div>\r\n    </ion-text>\r\n  </div>\r\n  <div class=\"w-full h-full items-center justify-end flex portrait:justify-center\" *ngIf=\"total != null\">\r\n    <button class=\"flex items-center\" [disabled]=\"loading\" (click)=\"PageSub()\">\r\n      <ion-icon [ngClass]=\"{'opacity-20': page == 1}\" name=\"chevron-back\" class=\"cursor-pointer default transition\"></ion-icon>\r\n    </button>\r\n\r\n    <ion-spinner *ngIf=\"loading && lstPages.length == 0\"></ion-spinner>\r\n\r\n    <button [disabled]=\"loading\" class=\"page\" *ngFor=\"let item of lstPages\" [ngClass]=\"{ 'selected' : page == item }\" (click)=\"SetPage(item)\"> {{item}} </button>\r\n\r\n    <button class=\"flex items-center\" [disabled]=\"loading\" (click)=\"PageAdd()\">\r\n      <ion-icon [ngClass]=\"{'opacity-20': page == TotalPages }\" name=\"chevron-forward\" class=\"cursor-pointer default transition\"></ion-icon>\r\n    </button>\r\n\r\n    @if (TotalPages > 5) {\r\n      <button [disabled]=\"loading\" class=\"page\" [id]=\"pop_id\"><ion-icon name=\"search\"></ion-icon></button>\r\n      <ion-popover [trigger]=\"pop_id\" triggerAction=\"click\">\r\n        <ng-template>\r\n          <ion-content>\r\n            <div class=\"grid grid-cols-10 pl-3\">\r\n              <div class=\"col-span-8 pb-2\">\r\n                <ion-input class=\"number-class\" [(ngModel)]=\"_page\" type=\"Number\" labelPlacement=\"stacked\" label=\"Página [Max. {{TotalPages}}]\"></ion-input>\r\n              </div>\r\n              <div class=\"col-span-2\">\r\n                <ion-button [disabled]=\"loading\" class=\"size-full\" size=\"small\" (click)=\"SetPageManual()\" style=\"--border-radius: 0rem\">\r\n                  <ion-icon class=\"w-4 aspect-square\" slot=\"icon-only\" name=\"checkmark-circle\"></ion-icon>\r\n                </ion-button>\r\n              </div>\r\n            </div>\r\n          </ion-content>\r\n        </ng-template>\r\n      </ion-popover>\r\n    }\r\n    </div>\r\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Utils } from '../../../../core/services/utils.service';\r\nimport { BoolProperty, DateProperty, IComparison, ImplicitProperty, ListValue, NumberProperty, StringProperty } from '../../../../classes/comparison';\r\nimport { InputSelectConfiguration } from '../../../../components/input-select/configuration';\r\nimport { TableField } from '../../../../components/inputs/table-field';\r\nimport { InputType } from '../../../../components/inputs/input-type';\r\nimport { InputBoolConfiguration, InputConfiguration, InputCurrencyConfiguration, InputDateConfiguration, InputDecimalConfiguration, InputFileConfiguration, InputNumberConfiguration, InputStringConfiguration } from '../../../../components/inputs/input-configuration';\r\n\r\n@Component({\r\n  selector: 'th-filter',\r\n  templateUrl: './th-filter.component.html',\r\n  styleUrls: ['./th-filter.component.scss'],\r\n})\r\nexport class ThFilterComponent implements OnInit {\r\n\r\n  @Input() field : TableField \r\n\r\n  guid: string = Utils.GenerateGUID();\r\n  configuration: InputConfiguration;\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n    this.configuration = this.field.configuration;\r\n    \r\n    if(!this.configuration){\r\n      if([InputType.Date, InputType.DateTime, InputType.Time].includes(this.field.type)){ this.configuration = new InputDateConfiguration() } else\r\n      if(this.field.type == InputType.File    ){ this.configuration = new InputFileConfiguration()     }else\r\n      if(this.field.type == InputType.Number  ){ this.configuration = new InputNumberConfiguration()   }else\r\n      if(this.field.type == InputType.Decimal ){ this.configuration = new InputDecimalConfiguration()  }else\r\n      if(this.field.type == InputType.Currency){ this.configuration = new InputCurrencyConfiguration() }else\r\n      if(this.field.type == InputType.String  ){ this.configuration = new InputStringConfiguration()   }else\r\n      if(this.field.type == InputType.Select  ){ this.configuration = new InputSelectConfiguration()   }else\r\n      if(this.field.type == InputType.TextArea){ \r\n        this.configuration = new InputStringConfiguration(); \r\n      }else \r\n      if(this.field.type == InputType.Bool    ){ \r\n        this.configuration = new InputBoolConfiguration(); \r\n      }\r\n    }\r\n\r\n    if(this.configuration instanceof InputSelectConfiguration){\r\n      this.configuration = new InputSelectConfiguration(\r\n        this.configuration.bindValue,\r\n        this.configuration.bindLabel,\r\n        true,\r\n        true,\r\n        this.configuration.loadFrom,\r\n        true,\r\n      );\r\n    }\r\n\r\n    if(this.configuration instanceof InputDateConfiguration){\r\n      this.configuration = new InputDateConfiguration(true);\r\n    }\r\n\r\n    if(this.field.type == InputType.Bool){\r\n      if(this.field.index == \"ativo\"){\r\n        this.configuration = this.configuration = new InputSelectConfiguration('value', 'label', true, true, [\r\n          { label: 'Somente Ativos'    , value: true  },\r\n          { label: 'Somente Não Ativos', value: false },\r\n        ]);\r\n        this.model = true;\r\n      }\r\n      else{\r\n        this.configuration = new InputSelectConfiguration('value', 'label', true, false, [\r\n          { label: 'Sim', value: true  },\r\n          { label: 'Não', value: false },\r\n        ])\r\n      }\r\n    }\r\n  }\r\n\r\n  isFilterActive: boolean = false;\r\n\r\n  model: any | null = null;\r\n  modelMinimum: any | null = null;\r\n  modelMaximum: any | null = null;\r\n  @Output('change') changeEmitter: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  Change(): void{\r\n    if(((typeof(this.model) == 'string' && !this.model) || this.model == null || (Array.isArray(this.model) && this.model.length == 0)) && !this.modelMinimum && !this.modelMaximum){\r\n      this.SetInactive();\r\n      return;\r\n    }\r\n\r\n    if([InputType.Currency, InputType.Decimal, InputType.Number].includes(this.field.type)){\r\n      var Bigger  = new NumberProperty(this.field.index).BiggerThanOrEqual(this.modelMinimum);\r\n      var Smaller = new NumberProperty(this.field.index).SmallerThanOrEqual(this.modelMaximum);\r\n      var Comparison: IComparison | null = null;\r\n      if(this.modelMinimum){\r\n        Comparison = Bigger;\r\n      }\r\n      if(this.modelMaximum){\r\n        if(Comparison){ Comparison = Comparison.And(Smaller); } else{ Comparison = Smaller; }\r\n      }\r\n\r\n      this.field.filter = Comparison;\r\n      this.isFilterActive = true;\r\n      this.changeEmitter.emit();\r\n      return;\r\n    }else\r\n    if([InputType.String].includes(this.field.type)){\r\n      this.field.filter = new StringProperty(this.field.index).Contains(this.model);\r\n      this.isFilterActive = true;\r\n      this.changeEmitter.emit();\r\n      return;\r\n    }else\r\n    if(this.field.type == InputType.Select){\r\n      const Property: ImplicitProperty = new ImplicitProperty(this.field.index)\r\n      this.field.filter = new ListValue(this.model).Contains(Property);\r\n      this.isFilterActive = true;\r\n      this.changeEmitter.emit();\r\n      return;\r\n    }else\r\n    if(this.field.type == InputType.Bool){\r\n      this.field.filter = new BoolProperty(this.field.index).Equals(this.model);\r\n      this.isFilterActive = true;\r\n      this.changeEmitter.emit();\r\n      return;\r\n    } else\r\n    if (this.field.type == InputType.Date || this.field.type == InputType.DateTime){\r\n      if(this.modelMinimum){\r\n        if(this.field.type == InputType.Date){ this.modelMinimum = this.modelMinimum.split(\"T\")[0] + \"T23:59:59\" }\r\n      }\r\n      if(this.modelMaximum){\r\n        if(this.field.type == InputType.Date){ this.modelMaximum = this.modelMaximum.split(\"T\")[0] + \"T23:59:59\" }\r\n      }\r\n    \r\n      var BiggerDate  = new DateProperty(this.field.index).BiggerThanOrEqual(this.modelMinimum);\r\n      var SmallerDate = new DateProperty(this.field.index).SmallerThanOrEqual(this.modelMaximum);\r\n      var Comparison: IComparison | null = null;\r\n      if(this.modelMinimum){\r\n        Comparison = BiggerDate;\r\n      }\r\n      if(this.modelMaximum){\r\n        if(Comparison){ Comparison = Comparison.And(SmallerDate); } else{ Comparison = SmallerDate; }\r\n      }\r\n\r\n      this.field.filter = Comparison;\r\n      this.isFilterActive = true;\r\n      this.changeEmitter.emit();\r\n      return;\r\n    }\r\n\r\n\r\n    this.changeEmitter.emit();\r\n  }\r\n\r\n  SetInactive(): void{\r\n    this.field.filter = null;\r\n    this.isFilterActive = false;\r\n    this.changeEmitter.emit();\r\n    return;\r\n  }\r\n}\r\n","<div class=\"h-5 aspect-square mr-1 flex items-center justify-center cursor-pointer\">\r\n  <ion-icon id=\"{{guid}}-trigger\" name=\"filter-circle\" class=\"text-xl align-sub size-full\" [color]=\"isFilterActive ? 'secondary' : 'medium' \"></ion-icon>\r\n</div>\r\n\r\n<ion-popover [keepContentsMounted]=\"true\" class=\"popover-filter\" trigger=\"{{guid}}-trigger\" triggerAction=\"click\">\r\n  <ng-template>\r\n    <ion-card class=\"m-0 !border-0 bg-primary/30\">\r\n      <ion-card-header class=\"bg-transparent\">\r\n        <ion-card-title class=\"text-center text-sm\">\r\n          Filtro - {{field.header}}\r\n        </ion-card-title>\r\n      </ion-card-header>\r\n      <ion-card-content [ngClass]=\"{'!p-0': ['Select', 'Bool', 'String', 'TextArea'].includes(field.type)}\" class=\"!p-2 bg-light rounded-t-2xl\">\r\n        @switch (field.type) {\r\n          @case ('String') {\r\n            <input-string [(ngModel)]=\"model\" class=\"th-select\" label=\"\" (blur)=\"Change()\"></input-string>\r\n          }\r\n          @case ('Number') {\r\n            <div class=\"grid grid-cols-1 gap-2\">\r\n              <input-number (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor Mínimo\" [configuration]=\"field.configuration\"></input-number>\r\n              <input-number (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-number>\r\n            </div>\r\n          }\r\n          @case ('Decimal') {\r\n            <div class=\"grid grid-cols-1 gap-2\">\r\n              <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor Mínimo\" [configuration]=\"field.configuration\"></input-decimal>\r\n              <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-decimal>\r\n            </div>\r\n          }\r\n          @case ('Currency') {\r\n            <div class=\"grid grid-cols-1 gap-2\">\r\n              <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor Mínimo\" [configuration]=\"field.configuration\"></input-currency>\r\n              <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-currency>\r\n            </div>\r\n          }\r\n          @case ('Select') {\r\n            <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"\" [configuration]=\"configuration\"></input-select>\r\n          }\r\n          @case ('TextArea') {\r\n            <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"\"></input-string>\r\n          }\r\n          @case ('Bool') {\r\n            <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"\" placeholder=\"\" [configuration]=\"configuration\"></input-select>\r\n          }\r\n          @case ('Date') {\r\n            <div class=\"size-full grid grid-cols-1 gap-2\">\r\n              <input-date (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data Mínima\" [configuration]=\"configuration\"></input-date>\r\n              <input-date (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date>\r\n            </div>\r\n          }\r\n          @case ('DateTime') {\r\n            <div class=\"grid grid-cols-1 gap-2\">\r\n              <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data Mínima\" [configuration]=\"configuration\"></input-date-time>\r\n              <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date-time>\r\n            </div>\r\n          }\r\n        }\r\n      </ion-card-content>\r\n    </ion-card>\r\n  </ng-template>\r\n</ion-popover>\r\n","import { Component, EventEmitter, input, Input, OnInit, Output, TemplateRef } from '@angular/core';\r\nimport { formatNumber  } from '@angular/common';\r\n\r\nimport { HttpServiceAtivo } from '../../../web/http.ativo.service';\r\nimport { HttpService      } from '../../../web/http.service';\r\nimport { StorageService  } from '../../../web/storage.service';\r\n\r\nimport { Utils } from '../../../core/services/utils.service';\r\n\r\nimport { CompileLstTableField, IComparison } from '../../../classes/comparison';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { InputSelectConfiguration } from '../../../components/input-select/configuration';\r\nimport { InputDecimalConfiguration } from '../../../components/inputs/input-configuration';\r\nimport { TableField } from '../../../components/inputs/table-field';\r\nimport { InputType } from '../../../components/inputs/input-type';\r\n\r\n/** Componente de tabela padrão */\r\n@Component({\r\n  selector: 'default-table',\r\n  templateUrl: './default-table.component.html',\r\n  styleUrls: ['./default-table.component.scss'],\r\n})\r\nexport class DefaultTableComponent<T extends HttpServiceAtivo | HttpService> implements OnInit {\r\n  \r\n  /** Service a ser utilizado na listagem */\r\n  @Input('service') defaultService: T;\r\n/** Template de ações, deve ser um elemento ```<ng-template>``` */\r\n  @Input() acoesTemplate: TemplateRef<any>;\r\n\r\n  //#region [ Pagination ]\r\n  /** Valor total de dados */\r\n  @Input() total: number;\r\n\r\n  /** Número de páginas máximo (usando two way data binding) */\r\n  @Input() limit: number;\r\n  @Output() limitChange: EventEmitter<number> = new EventEmitter<number>();\r\n  \r\n  /** Valor da pagina, setado = 1 quando troca-se o valor de limite de paginas (usando two way data binding) */\r\n  @Input() page: number;\r\n  @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\r\n  \r\n  /** Propriedade de ordenação (usando two way data binding) */\r\n  @Input() orderByProperty: string | null;\r\n  @Output() orderByPropertyChange: EventEmitter<string | null> = new EventEmitter<string | null>();\r\n  \r\n  /** Propriedade de ordenação\r\n   * Se = true  Ordenará de menor ao maior \r\n   * Se = false Ordenará de maior ao menor (usando two way data binding) */\r\n  @Input() ascending: boolean;\r\n  @Output() ascendingChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n  //#endregion [ Pagination ]\r\n\r\n  /** Filtros (usando two way data binding) */  \r\n  @Input('filter') filter: IComparison\r\n  @Output() filterChange: EventEmitter<IComparison> = new EventEmitter<IComparison>();\r\n  \r\n  /** Evento emitido quando um dos dados é ativado. Emite o id do dado */  \r\n  @Output('ativar') ativarEmitter: EventEmitter<number> = new EventEmitter<number>;\r\n  @Output('refresh') refreshEmitter: EventEmitter<void> = new EventEmitter<void>();\r\n  @Input() loading: boolean;\r\n\r\n  /** Lista de dados a ser exibidos */\r\n  @Input() items: any[] = [];\r\n  \r\n  /** Lista de campos a ser exibidos */\r\n  @Input() lstTableFields: TableField[] = [];\r\n\r\n  /** Remove os filtros no cabeçalho da tabela  */\r\n  @Input() noFilters: boolean = false;\r\n  \r\n  /** Aplica classes de CSS na coluna de acirdo com o retorno da função passada como parametro  */\r\n  @Input() columnClass: ((index:string, object: any) => string) | null = null;\r\n  /** Aplica style de CSS na coluna de acirdo com o retorno da função passada como parametro  */\r\n  @Input() columnStyle: ((index:string, object: any) => string) | null = null;\r\n  /** Remove a paginação da listagem */\r\n  @Input() noPagination: boolean = false;\r\n  /** Caminho de redirecionamento do item */\r\n  @Input() itemPath: string | null = \"view/:id\"\r\n  InputTypeFile = InputType.File\r\n\r\n  constructor(\r\n    public storageService : StorageService,\r\n    private activatedRoute: ActivatedRoute,\r\n    private router        : Router,\r\n  ) { }\r\n\r\n  Redirect(field: TableField, item: any): void{\r\n    if(!this.defaultService){\r\n      return;\r\n    }else\r\n    if(field.index == 'ativo'){\r\n      return;\r\n    }else\r\n    if(field.type  == 'File'){\r\n      return;\r\n    }else{\r\n      if(this.itemPath){\r\n        const id = item.id; \r\n        const path = this.itemPath.replace(\":id\", id.toString());\r\n        this.router.navigate([`./${path}`], { relativeTo: this.activatedRoute })\r\n      }\r\n    }\r\n  }\r\n\r\n  ngOnInit() {\r\n    if(this.defaultService && this.lstTableFields.length == 0){\r\n      this.lstTableFields = this.defaultService.lstTableFields;\r\n    }\r\n    if(this.lstTableFields.length == 0){ console.warn(\"[ Warning! ] [ Table configuration is empty]\") }\r\n\r\n    this.lstTableFields.filter(tf => tf.configuration instanceof InputSelectConfiguration).forEach(tf => tf.configuration.loader.Refresh());\r\n  }\r\n\r\n  SwitchOrder(field: TableField): void{\r\n    if(this.orderByProperty != field.index){\r\n      this.orderByProperty = field.index;\r\n      this.ascending = true;\r\n    }\r\n    else if(this.ascending){\r\n      this.ascending = false;\r\n    }\r\n    else{ this.orderByProperty = null; }\r\n\r\n    this.orderByPropertyChange.emit(this.orderByProperty)\r\n    this.ascendingChange.emit(this.ascending);\r\n\r\n    this.EmitChange();\r\n  }\r\n\r\n  EmitPage(value: number): void{\r\n    this.pageChange.emit(value);\r\n    this.EmitChange()\r\n  }\r\n\r\n  EmitChange(): void{\r\n    this.refreshEmitter.emit();\r\n  }\r\n\r\n  GetField(item: any, field : TableField): any{\r\n    const value = item[field.index];\r\n    const type = field.type;\r\n    if(['Number','Decimal','Currency'].includes(type)){\r\n      const config: InputDecimalConfiguration = (field.configuration as InputDecimalConfiguration)\r\n      return config.prefix + ' ' + formatNumber(value, \"pt-BR\", `1.${config.precision}-${config.precision}`) + ' ' + config.sufix;\r\n    }else\r\n    if(type == 'DateTime'){\r\n      if(!value){ return \"-\"; }\r\n      return Utils.DateISOToDDMMYYYYHHMM(value);\r\n    }else\r\n    if(type == 'Date'){\r\n      if(!value){ return \"-\"; }\r\n      return Utils.DateISOToDDMMYYYY(value);\r\n    }\r\n    return value;\r\n  }\r\n\r\n  GetSelectLabel(item: any, tField: TableField): string{\r\n    const configuration: InputSelectConfiguration = tField.configuration;\r\n    return configuration.loader.GetLabel(this.GetField(item, tField));\r\n  }\r\n\r\n  GetTypeOf(val): string{\r\n    return typeof(val)\r\n  }\r\n\r\n  Ativar(id): void{\r\n    this.ativarEmitter.emit(id);\r\n  }\r\n\r\n  ChangeFilter(): void{\r\n    this.filterChange.emit(CompileLstTableField(this.lstTableFields));\r\n    this.refreshEmitter.emit();\r\n  }\r\n\r\n  GetTdClasses(field, item): string{\r\n    var classes : string = \"\";\r\n    if(['DateTime', 'Time', 'Date'].includes(field.type)){\r\n      classes += 'font-mono ';\r\n    }\r\n    if(this.columnClass){\r\n      classes += this.columnClass(field.index, item);\r\n    }\r\n    return classes;\r\n  }\r\n  GetTdStyle(field, item): string{\r\n    if(this.columnStyle){\r\n      return this.columnStyle(field, item);\r\n    }\r\n    return \"\";\r\n  }\r\n}","<section class=\"w-full h-full rounded-2xl flex flex-col overflow-y-hidden relative\" [ngClass]=\"{ 'loading' : loading }\">\r\n    \r\n    <div class=\"unique-conteiner default-transition\" [ngClass]=\"{'!-z-50 !-translate-y-12 !opacity-0': !loading }\">\r\n        <loading [type]=\"2\"></loading>\r\n    </div>\r\n    <div class=\"unique-conteiner default-transition\" [ngClass]=\"{'!-z-50 !-translate-y-12 !opacity-0': items.length != 0 || loading }\">\r\n        <b><ion-icon class=\"align-sub\" name=\"remove-circle\"></ion-icon> Sem dados</b>\r\n    </div>\r\n\r\n    <div id=\"wrapper\" class=\"relative overflow-y-auto w-full grow-0 mb-auto pb-2\">\r\n        <table class=\"z-20\">\r\n            <thead>\r\n                <tr>\r\n                    <th scope=\"col\" class=\"px-3 !h-10\" *ngIf=\"acoesTemplate\">\r\n                        <span>Ações</span>\r\n                    </th>\r\n                    @for (field of lstTableFields; let i = $index; track i) {\r\n                        @if (!field.hidden) {\r\n                            <th scope=\"col\" class=\"p-2 px-3\" id=\"th-filter-select\">\r\n                                <div class=\"flex items-center justify-start h-full\" style=\"white-space: var(--ion-table-filter-wrap);\"> \r\n                                    @if(!noFilters){\r\n                                        <th-filter *ngIf=\"(field.type != InputTypeFile) && !(field.filter && field.filter.disableChange) && !noFilters\"\r\n                                        [field]=\"field\"\r\n                                        (change)=\"ChangeFilter()\"\r\n                                        ></th-filter>\r\n                                    }\r\n                                    <span>{{field.header}}</span>\r\n\r\n                                    <a *ngIf=\"!(!(field.type != InputTypeFile) && !(field.filter && field.filter.disableChange)) && !noFilters\" class=\"order-switch h-5 flex items-center justify-center px-1 ml-2 shrink-0 cursor-pointer rounded-2xl\" (click)=\"SwitchOrder(field)\" [ngClass]=\"{ 'ordering-asc' : orderByProperty == field.index && ascending, 'ordering-desc' : orderByProperty == field.index && !ascending}\">\r\n                                        <ion-icon id=\"up\"   name=\"arrow-up\"   class=\"-mt-1\"></ion-icon>\r\n                                        <ion-icon id=\"down\" name=\"arrow-down\" class=\"-ml-1 -mb-1\"></ion-icon>\r\n                                    </a>\r\n                                </div>\r\n                            </th>\r\n                        }\r\n                    }\r\n                </tr>\r\n            </thead>\r\n            <tbody>\r\n                <tr [hidden]=\"loading\" *ngFor=\"let item of items\">\r\n                    @if(acoesTemplate){\r\n                        <td class=\"whitespace-nowrap py-1 px-3\" [style]=\"GetTdStyle('Acoes', item)\" >\r\n                            <ng-container *ngTemplateOutlet=\"acoesTemplate; context: { $implicit: item }\"></ng-container>\r\n                        </td>\r\n                    }\r\n\r\n                    @for (field of lstTableFields; track $index) {\r\n                        @if (!field.hidden) {\r\n                            <td class=\"px-3 py-2\" \r\n                                [ngClass]=\"GetTdClasses(field, item)\" \r\n                                [style]=\"GetTdStyle(field, item)\" \r\n                                (click)=\"Redirect(field, item)\"\r\n                                style=\"white-space: var(--ion-table-row-wrap);\"\r\n                            >\r\n                                @if (field.index == 'ativo') {\r\n                                    <div class=\"w-full h-full flex items-center justify-start\" [routerLink]=\"null\">\r\n                                        <ion-toggle [checked]=\"item[field.index]\" [disabled]=\"loading\" (ionChange)=\"Ativar(item.id)\" ></ion-toggle>\r\n                                    </div>\r\n                                } @else {\r\n                                    @switch (field.type) {\r\n                                        @case (\"Bool\") {\r\n                                            @if (field.configuration.type == \"toggle\") {\r\n                                                <div class=\"-full h-full flex items-center justify-start\">\r\n                                                    <ion-toggle [checked]=\"item[field.index]\" [disabled]=\"true\"></ion-toggle>\r\n                                                </div>\r\n                                            }\r\n                                            @else {\r\n                                                <div class=\"-full h-full flex items-center justify-start\">\r\n                                                    <ion-checkbox [checked]=\"item[field.index]\" [disabled]=\"true\"></ion-checkbox>\r\n                                                </div>\r\n                                            }\r\n                                        }\r\n                                        @case (\"File\") {\r\n                                            <download-button [(ngModel)]=\"item[field.index]\" [configuration]=\"field.configuration\"></download-button>\r\n                                        }\r\n                                        @case (\"Select\") {\r\n                                            {{GetSelectLabel(item, field)}}\r\n                                        }\r\n                                        @default {\r\n                                            {{GetField(item, field)}} \r\n                                        }\r\n                                    }\r\n                                }\r\n                            </td>\r\n                        }\r\n                    }\r\n                </tr>\r\n\r\n                <ng-content select=\"[slot=item-end]\"></ng-content>\r\n            </tbody>\r\n        </table>\r\n    </div>\r\n    @if(!noPagination){\r\n        <div class=\"shrink-0 mt-auto w-full\">\r\n            <default-pagination\r\n                [page]=\"page\"\r\n                (pageChange)=\"EmitPage($event)\"\r\n                [total]=\"total\"\r\n                [limit]=\"limit\"\r\n                [length]=\"items.length\"\r\n                [loading]=\"loading\"\r\n            ></default-pagination>\r\n        </div>\r\n    }\r\n</section>\r\n","import { Component, ContentChild, ElementRef, EventEmitter, Injector, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { HttpService } from '../../../web/http.service';\r\nimport { HttpServiceAtivo } from '../../../web/http.ativo.service';\r\nimport { List } from './list';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { GenericService } from '../../../core/services/generics.service';\r\nimport { firstValueFrom } from 'rxjs';\r\n\r\n/** Componente de listagem padrão\r\n * Tipo Generic deve ser um service HttpService \r\n * @link https://sapphire-ion-framework.gitbook.io/framework/componentes-default/default-list\r\n */\r\n@Component({\r\n  selector: 'default-list',\r\n  templateUrl: './default-list.component.html',\r\n  styleUrls: ['./default-list.component.scss'],\r\n})\r\nexport class DefaultListComponent<T extends HttpService | HttpServiceAtivo> extends List<T> implements OnInit {\r\n\r\n  //#region [@Table]\r\n  /** Remove o botão NOVO da listagem */\r\n  @Input() noNew: boolean = false;\r\n  /** Remove a paginação da listagem */\r\n  @Input() noPage: boolean = false;\r\n  /** Remove o elemento de pesquisa da listagem */\r\n  @Input() noSearch: boolean = false;\r\n  \r\n  /** Aplica classes de CSS na coluna de acirdo com o retorno da função passada como parametro  */\r\n  @Input() columnClass: ((index:string, object: any) => string) | null = null;\r\n  /** Aplica style de CSS na coluna de acirdo com o retorno da função passada como parametro  */\r\n  @Input() columnStyle: ((index:string, object: any) => string) | null = null;\r\n  \r\n  /** Desabilita o redirect de novo em um botão para ser utilizado com [onNewEmitter] */\r\n  @Input() overrideNew: boolean = false;\r\n  /** Evento quando o botão NOVO é clicado */\r\n  @Output('onNew') onNewEmitter: EventEmitter<void> = new EventEmitter<void>();\r\n  /** Template de ações, é enviado com #tmpAcoes, deve ser um elemento ```<ng-template>``` */\r\n  @ContentChild('tmpAcoes', { static: false }) acoesTemplate!: TemplateRef<any>;\r\n  //#endregion [@Table]\r\n\r\n  /** Remove a paginação da listagem */\r\n  @Input() noPagination : boolean = false;\r\n  /** Remove os breadcrumbs da listagem */\r\n  @Input() noBreadcrumbs: boolean = false;\r\n  /** Caminho de redirecionamento do item */\r\n  @Input() itemPath: string | null = \"view/:id\"\r\n  \r\n  constructor(\r\n    public override elementRef    : ElementRef,\r\n    public override activatedRoute: ActivatedRoute,\r\n    public override genericService: GenericService\r\n  ) { super(); }\r\n  \r\n  public async Ativar(id: number): Promise<void>{\r\n    if(!(this.service instanceof HttpServiceAtivo)){ return; }\r\n    this.loading = true;\r\n    try{\r\n      await firstValueFrom(this.service.Ativar(id));\r\n      this.Refresh();\r\n    }catch{\r\n      this.loading = false;\r\n    }\r\n  }\r\n\r\n  override async ngOnInit() {\r\n    await super.ngOnInit();    \r\n  }\r\n}","<ion-content class=\"bg-transparent\">\r\n  <div class=\"wrapper\" [ngClass]=\"{'!p-0 translucid-primary-background': nested}\">\r\n    @if (!noBreadcrumbs) {\r\n      <ion-breadcrumbs>\r\n        <ion-breadcrumb [routerLink]=\"[service ? service.route : '']\" [replaceUrl]=\"true\">{{service.title}}</ion-breadcrumb>\r\n      </ion-breadcrumbs>\r\n    }\r\n    <ion-card>\r\n      <ion-card-header [ngClass]=\"{'!px-0 !pb-0': noNew && noPage && noSearch}\">\r\n        <header-list \r\n          [(limit)]=\"frm.limit\"\r\n          [(search)]=\"frm.search\"        \r\n          [(page)]=\"frm.page\"        \r\n          [loading]=\"loading\"  \r\n          (refresh)=\"Refresh()\"\r\n          [noNew]=\"noNew\"\r\n          [noPage]=\"noPage\"\r\n          [noSearch]=\"noSearch\"\r\n          [overrideNew]=\"overrideNew\"\r\n          (onNew)=\"onNewEmitter.emit()\"\r\n        > \r\n          <ng-content slot=\"start\" select=\"[slot=header-start]\"></ng-content>\r\n          <ng-content slot=\"end\" select=\"[slot=header-end]\"></ng-content>\r\n        </header-list>\r\n      </ion-card-header>\r\n      <ion-card-content>\r\n        <ion-refresher slot=\"fixed\" class=\"z-20\" (ionRefresh)=\"Refresh($event)\">\r\n          <ion-refresher-content></ion-refresher-content>\r\n        </ion-refresher>\r\n        <div class=\"size-full ion-content-scroll-host\">\r\n          @if(frm){\r\n            <default-table \r\n              class=\"block size-full relative\" \r\n              [ngClass]=\"{ 'translate-y-0' : !loading }\"\r\n              [loading]=\"loading\"\r\n              [items]=\"lstDados\" \r\n              [total]=\"total\"\r\n              [(limit)]=\"frm.limit\"\r\n              [(page)]=\"frm.page\"\r\n              [(ascending)]=\"frm.ascending\"\r\n              [(orderByProperty)]=\"frm.orderByProperty\"\r\n              [(filter)]=\"frm.filter\"\r\n              [itemPath]=\"itemPath\"\r\n              [columnClass]=\"columnClass\"\r\n              [columnStyle]=\"columnStyle\"\r\n              [service]=\"service\"\r\n              [acoesTemplate]=\"acoesTemplate\"\r\n              (refresh)=\"Refresh();\"\r\n              (ativar)=\"Ativar($event)\"\r\n              [lstTableFields]=\"lstTableFields\"\r\n              [noPagination]=\"noPagination\"\r\n            >\r\n            </default-table>\r\n          }\r\n        </div>\r\n      </ion-card-content>\r\n    </ion-card>\r\n  </div>\r\n</ion-content>","import { Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute, Route, Router } from '@angular/router';\r\nimport { IonBackButton, IonButton, NavController } from '@ionic/angular';\r\n\r\n@Component({\r\n  selector: 'header-view',\r\n  templateUrl: './header-view.component.html',\r\n  styleUrls: ['./header-view.component.scss'],\r\n})\r\nexport class HeaderViewComponent implements OnInit {\r\n\r\n  @Input() novo: boolean = false;\r\n  @Input() loading: boolean;\r\n  @Input() progress: number | null = null;\r\n  @Output('save') saveEmitter: EventEmitter<void> = new EventEmitter<void>();  \r\n\r\n  @Input() noBack: boolean = false;\r\n  @Input() noNew : boolean = false;\r\n  @Input() useDefaultRouting: boolean = false;\r\n\r\n  constructor(\r\n    private navController: NavController,\r\n    private activatedRoute: ActivatedRoute\r\n  ) { }\r\n\r\n  ngOnInit() {}\r\n\r\n  protected get BackRoute(){\r\n    const fullRoute = window.location.pathname.split('/')\r\n\r\n    const li = fullRoute[fullRoute.length - 1];\r\n    var offset = 1;\r\n    if(Number(li)){ offset++; }\r\n    let route: string[] = []\r\n    for(let i = 0; i < fullRoute.length - offset; i++){ route.push(fullRoute[i]); }\r\n    return route.join('/');\r\n  }\r\n\r\n  @ViewChild(IonBackButton) IonBackButtonElement: IonBackButton; \r\n  public Back($event = null){\r\n    this.IonBackButtonElement.onClick($event)\r\n  }\r\n  @ViewChild('new') NewIonButtonElement: ElementRef; \r\n  public New(){\r\n    if(!this.novo){\r\n      this.navController.navigateForward(['../'], { relativeTo: this.activatedRoute});\r\n    }\r\n  }\r\n\r\n  Save(): void{\r\n    this.saveEmitter.emit();\r\n  }\r\n}\r\n","<div class=\"w-full h-7 flex\">\r\n  <div class=\"w-1/2 flex items-center justify-start gap-3\">\r\n    @if(!noBack){\r\n      <ion-back-button style=\"--min-height: 100%;\"  [disabled]=\"loading\" text=\"Voltar\" [defaultHref]=\"BackRoute\"></ion-back-button>\r\n\r\n      <!-- <ion-card button [disabled]=\"loading\" class=\"h-full w-12 m-0 default-transition\" style=\"border-color: var(--ion-color-primary)\">\r\n        <ion-card-content class=\"p-0 bg-transparent\">\r\n          @if(!useDefaultRouting){\r\n            <ion-back-button class=\"scale-75 size-full\" style=\"--min-height: 100%;\" text=\"\"  [defaultHref]=\"BackRoute\" >\r\n            </ion-back-button>\r\n          }@else {\r\n            <ion-button class=\"size-full\" size=\"small\" fill=\"clear\" [routerLink]=\"BackRoute\">\r\n              <ion-icon name=\"chevron-back\" slot=\"icon-only\"></ion-icon>\r\n            </ion-button>\r\n          }\r\n        </ion-card-content>\r\n      </ion-card> -->\r\n    }\r\n    <div class=\"h-full border-r border-r-primary border-solid\"></div>\r\n\r\n    <div class=\"relative\">\r\n      <ion-button class=\"-mx-2\" [disabled]=\"loading\" fill=\"clear\" size=\"small\" (click)=\"Save()\">\r\n        <ion-icon class=\"text-base\" slot=\"start\" name=\"save\"></ion-icon>\r\n        <ion-text class=\"text-base\">\r\n          Salvar\r\n        </ion-text>\r\n      </ion-button>\r\n\r\n      <div class=\"absolute w-[125%] h-[125%] -top-[12.5%] -left-[12.5%] flex flex-col items-center justify-center default-transition backdrop-blur-sm\" [ngClass]=\"{'opacity-0 -translate-y-8': !loading}\">\r\n        <ion-text color=\"success\" class=\"text-sm mt-1\"><b>\r\n          @if(progress){\r\n            {{(progress * 100) | number: '1.1-1'}}%\r\n          }@else {\r\n            {{0 | number: '1.1-1'}}%\r\n          }\r\n        </b></ion-text>\r\n        <ion-progress-bar [value]=\"progress\" color=\"success\" class=\"w-full default-transition\"></ion-progress-bar>\r\n      </div>\r\n    </div>\r\n    <ng-content select=\"[slot=start]\"></ng-content>\r\n  </div>\r\n  <div class=\"w-1/2 flex justify-end items-center gap-2\">\r\n    <ng-content select=\"[slot=end]\"></ng-content>\r\n\r\n    @if(!(noNew || novo)){\r\n      <ion-button #new [routerLink]=\"['../']\" class=\"m-0\" fill=\"clear\" size=\"small\">\r\n        <ion-icon class=\"text-base\" name=\"add\" slot=\"start\"></ion-icon> \r\n        <ion-text class=\"text-base\">\r\n          Novo\r\n        </ion-text>\r\n      </ion-button>\r\n    }\r\n  </div>\r\n</div>","import { Component, ElementRef, EventEmitter, HostListener, inject, Input, OnInit, Output, ViewChild, viewChild } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup } from \"@angular/forms\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n\r\nimport { HttpService      } from \"../../../web/http.service\";\r\nimport { HttpServiceAtivo } from \"../../../web/http.ativo.service\";\r\nimport { GenericService   } from \"../../../core/services/generics.service\";\r\nimport { TableFieldFormBuilder } from \"../../classes\";\r\nimport { NavController } from \"@ionic/angular\";\r\nimport { firstValueFrom, lastValueFrom } from \"rxjs\";\r\nimport { RouteData } from \"../../../classes/routing.factory\";\r\nimport { HeaderViewComponent } from \"./header-view/header-view.component\";\r\nimport { TableField } from \"../../../components/inputs/table-field\";\r\n\r\n@Component({ template: '', styles: '' })\r\nexport abstract class View<T extends HttpService | HttpServiceAtivo> implements OnInit {\r\n  /** Id do dado a ser carregado */\r\n  @Input() id       : number | null = null;\r\n  @Input() loading  : boolean = false;\r\n  @Input() submitted: boolean = false;\r\n  /** Progresso de salvamento */\r\n  @Input() progress : number;\r\n  /** Service a ser utlizado na view */\r\n  @Input() service  : T;\r\n  \r\n  protected genericService: GenericService;\r\n  protected activatedRoute: ActivatedRoute;\r\n  protected elementRef: ElementRef;\r\n  protected fb: FormBuilder;\r\n\r\n  protected nested: boolean = false;\r\n\r\n  constructor(){\r\n    this.genericService = inject(GenericService)\r\n    this.activatedRoute = inject(ActivatedRoute)\r\n    this.elementRef     = inject(ElementRef)\r\n    this.fb             = inject(FormBuilder)\r\n  }\r\n\r\n  /** Lista de TableFields a serem invocados de acordo com sua configuração.\r\n   * Automaticamente preenchido com service.lstTableFieldsView ou service.lstTableFields quando não informado\r\n    */\r\n  @Input() lstTableFields: TableField[] = [];\r\n  @Input() public redirectPath: string | null = \"/view/:id\"\r\n  \r\n  \r\n  @ViewChild('.wrapper') Wrapper: HTMLElement;\r\n  async ngOnInit() {\r\n    if(this.lstTableFields.length == 0){\r\n      if(this.service.lstTableFieldsView.length != 0){\r\n        this.lstTableFields = this.service.lstTableFieldsView;\r\n      }else{\r\n        this.lstTableFields = this.service.lstTableFields;\r\n      }\r\n    }\r\n\r\n    if(this.id == null){\r\n      this.id = this.genericService.GetId(this.activatedRoute, 0);\r\n    }\r\n    \r\n    if(!this.service){ console.warn(\"[ View service is not valid! ]\"); }\r\n    if (instanceOfViewWillCreateForm(this)) { this.OnViewWillCreateForm() }\r\n    await this.CreateForm();\r\n    if (instanceOfViewDidCreateForm(this)) { this.OnViewDidCreateForm() }\r\n  \r\n    if(this.elementRef && this.elementRef.nativeElement && this.elementRef.nativeElement.parentElement){\r\n      this.nested = (this.elementRef.nativeElement.parentElement.tagName as string).toUpperCase() != \"ION-CONTENT\";\r\n    }else{\r\n      this.nested = true;\r\n    }\r\n\r\n    this.Refresh();\r\n  }\r\n\r\n  async Refresh() {\r\n    this.loading = true;\r\n    try{\r\n      await this.Load();\r\n    }finally{ }\r\n    this.loading = false;\r\n  }\r\n\r\n  Load(): Promise<void>{\r\n    return new Promise<void>((resolve, reject) => {\r\n      if(this.id == 0){ resolve(); }else\r\n      this.service.Get(this.id).subscribe({\r\n        next: (res) => { this.frm.patchValue(res); resolve(); },\r\n        error:(err) => { reject(); }\r\n      });\r\n    });\r\n  }\r\n\r\n  frm: FormGroup;\r\n  async CreateForm() {\r\n    this.frm = TableFieldFormBuilder.create(this.lstTableFields, this.fb);\r\n    await this.LoadIdComparison();\r\n  }\r\n  async LoadIdComparison(): Promise<void> {\r\n    try{\r\n      const data: RouteData = await firstValueFrom(this.activatedRoute.data) as RouteData;\r\n      if(data){\r\n        const id   = this.genericService.GetId(this.activatedRoute, data.idPreloaderConfiguration.routeDepth);\r\n        \r\n        if(id){\r\n          this.frm.controls[data.idPreloaderConfiguration.idPreloader.name].setValue(id);\r\n          this.lstTableFields.find(p => p.index == data.idPreloaderConfiguration.idPreloader.name).disabled = true;\r\n        }\r\n      }\r\n    }catch{ }\r\n  }\r\n\r\n  /** Emite o id da entidade salva apos o salvamento */\r\n  @Output('Save') SaveEmitter: EventEmitter<number> = new EventEmitter<number>();\r\n  async Save() {\r\n    await lastValueFrom(this.service.Save(this.frm, this));\r\n    this.SaveEmitter.emit(this.id);\r\n  }\r\n\r\n  public get BackRoute(){\r\n    const fullRoute = window.location.pathname.split('/')\r\n\r\n    const li = fullRoute[fullRoute.length - 1];\r\n    var offset = 1;\r\n    if(Number(li)){ offset++; }\r\n    let route: string[] = []\r\n    for(let i = 0; i < fullRoute.length - offset; i++){ route.push(fullRoute[i]); }\r\n    return route.join('/');\r\n  }\r\n\r\n  public GetCurrentRouting(): ActivatedRoute { return this.activatedRoute; }\r\n\r\n  protected navController: NavController;\r\n  protected NavigateToList(): void{ this.navController.navigateBack(this.BackRoute); }\r\n\r\n\r\n  @ViewChild(HeaderViewComponent) HeaderViewComponentElement: HeaderViewComponent;\r\n\r\n  @HostListener('window:keydown',['$event'])\r\n  onKeyPress($event: KeyboardEvent) {\r\n    if(!(this.elementRef.nativeElement.contains(document.activeElement) || document.activeElement == this.elementRef.nativeElement)){\r\n      return;\r\n    }\r\n    if($event.key == 'Escape'){\r\n      this.HeaderViewComponentElement.Back($event);\r\n      $event.preventDefault();\r\n      return;\r\n    }\r\n    if(($event.ctrlKey || $event.metaKey) && ($event.key == 'Enter')){\r\n      this.Save();\r\n      $event.preventDefault();\r\n      return;\r\n    }\r\n    if($event.altKey && $event.key == 'Insert'){\r\n      this.HeaderViewComponentElement.New();\r\n      $event.preventDefault();\r\n      return;\r\n    }\r\n  }\r\n\r\n\r\n\r\n}\r\n\r\n\r\n/** Componente padrão para a invocação do DefaultView */\r\n@Component({ template: '', styles: '' })\r\nexport abstract class AbstractView<T extends HttpService | HttpServiceAtivo> implements OnInit {\r\n  public service       : T;\r\n  public genericService: GenericService;\r\n  public activatedRoute: ActivatedRoute;\r\n  \r\n  public id: number;\r\n  \r\n  ngOnInit(): void {\r\n    this.id = this.genericService.GetId(this.activatedRoute, 0);\r\n  }\r\n\r\n  public static GetProvider(component): any[]{\r\n    return [{ provide: AbstractView, useExisting: component }]\r\n  }\r\n}\r\n\r\nexport interface ViewWillCreateForm{\r\n  OnViewWillCreateForm(): void | any;\r\n} \r\nfunction instanceOfViewWillCreateForm(object: any): object is ViewWillCreateForm {\r\n  return 'OnViewWillCreateForm' in object;\r\n}\r\nexport interface ViewDidCreateForm {\r\n  OnViewDidCreateForm(): void | any;\r\n} \r\nfunction instanceOfViewDidCreateForm(object: any): object is ViewDidCreateForm {\r\n  return 'OnViewDidCreateForm' in object;\r\n}\r\n\r\n","import { FormBuilder } from '@angular/forms';\r\nimport { Component, ElementRef, Input, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { NavController } from '@ionic/angular';\r\n\r\n\r\nimport { HttpServiceAtivo } from '../../../web/http.ativo.service';\r\nimport { HttpService      } from '../../../web/http.service';\r\nimport { View } from './view';\r\nimport { GenericService } from './../../../core/services/generics.service';\r\n\r\n/** Componente View Padão */\r\n@Component({\r\n  selector: 'default-view',\r\n  templateUrl: './default-view.component.html',\r\n  styleUrls: ['./default-view.component.scss'],\r\n})\r\nexport class DefaultViewComponent<T extends HttpService | HttpServiceAtivo> extends View<T> implements OnInit {\r\n\r\n  /** Remove o botão de voltar */\r\n  @Input() noBack: boolean = false;\r\n  /** Remove o botão NOVO da listagem */\r\n  @Input() noNew : boolean = false;\r\n  /** Remove os breadcrumbs da listagem */\r\n  @Input() noBreadcrumbs: boolean = false;\r\n\r\n  constructor(\r\n    public override fb: FormBuilder,\r\n    public override elementRef: ElementRef,\r\n    public override activatedRoute: ActivatedRoute,\r\n    public override genericService: GenericService,\r\n    public override navController: NavController,\r\n  ) { super(); }\r\n}","<ion-content class=\"bg-transparent\"> \r\n  <div class=\"wrapper\" [ngClass]=\"{'!p-0 translucid-primary-background': nested}\" tabindex=\"-1\">\r\n    @if (!noBreadcrumbs) {\r\n      <ion-breadcrumbs>\r\n        <ion-breadcrumb class=\"cursor-pointer\" (click)=\"NavigateToList()\">\r\n          {{service.title}}\r\n        </ion-breadcrumb>\r\n        <ion-breadcrumb> \r\n          {{id == 0 ? 'Novo Registro' : 'Editar Registro' }} \r\n        </ion-breadcrumb>\r\n      </ion-breadcrumbs>\r\n    }\r\n    \r\n    <ion-card>\r\n      <ion-card-header class=\"!block\">\r\n        <header-view *ngIf=\"service\" [novo]=\"id == 0\" [useDefaultRouting]=\"nested\" [loading]=\"loading\" [progress]=\"progress\" (save)=\"Save()\" [noBack]=\"noBack\" [noNew]=\"noNew\"></header-view>\r\n      </ion-card-header>\r\n      <ion-card-content class=\"p-0 h-full !overflow-y-auto overflow-x-hidden\">\r\n        <div class=\"grid grid-cols-12 gap-4 w-full\" *ngIf=\"frm\" [formGroup]=\"frm\">\r\n  \r\n          @for (field of lstTableFields; track $index) {\r\n            @if (field.index != 'id') {\r\n              @if (!field.hiddenView) {\r\n                @switch (field.type) {\r\n                  @case (\"Bool\") {\r\n                    <input-bool      [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\" ></input-bool>\r\n                  }\r\n                  @case (\"Currency\") {\r\n                    <input-currency  [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-currency>\r\n                  }\r\n                  @case (\"Date\") {\r\n                    <input-date      [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date>\r\n                  }\r\n                  @case (\"Time\") {\r\n                    <input-time      [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-time>\r\n                  }\r\n                  @case (\"DateTime\") {\r\n                    <input-date-time [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date-time>\r\n                  }\r\n                  @case (\"Decimal\") {\r\n                    <input-decimal   [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-decimal>\r\n                  }\r\n                  @case (\"File\") {\r\n                    <input-file      [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-file>\r\n                  }\r\n                  @case (\"String\") {\r\n                    <input-string    [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-string>\r\n                  }\r\n                  @case (\"TextArea\") {\r\n                    <input-textarea  [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-textarea>\r\n                  }\r\n                  @case (\"Number\") {\r\n                    <input-number    [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-number>\r\n                  }\r\n                  @case (\"Select\") {\r\n                    <input-select    [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-select>\r\n                  }\r\n                  @case (\"Cpf\") {\r\n                    <input-cpf       [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf>\r\n                  }\r\n                  @case (\"Cnpj\") {\r\n                    <input-cnpj      [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cnpj>\r\n                  }\r\n                  @case (\"CpfCnpj\") {\r\n                    <input-cpf-cnpj  [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf-cnpj>\r\n                  }\r\n                }\r\n              }\r\n            }\r\n          }\r\n  \r\n          <div class=\"col-span-full rounded-2xl p-3 flex items-center justify-center\" *ngIf=\"!service || service.lstTableFields.length == 0\" style=\"background: var(--ion-color-danger);\">\r\n            <ion-text class=\"text-2xl text-white\">\r\n              <ion-icon class=\"align-sub text-3xl\" name=\"alert-circle\"></ion-icon> [ Invalid Configuration ]\r\n            </ion-text>\r\n          </div>\r\n        </div>\r\n      </ion-card-content>\r\n    </ion-card>\r\n  </div>\r\n</ion-content>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { RouterLink, RouterLinkWithHref, RouterModule, RouterOutlet } from '@angular/router';\r\n\r\nimport { NgVarDirective } from '../../core/directives/ng-var.directive';\r\nimport { InputsModule } from '../inputs.module';\r\n\r\nimport { LoadingComponent } from '../generic/loading/loading.component';\r\nimport { DefaultListComponent } from './default-list/default-list.component';\r\nimport { DefaultViewComponent } from './default-view/default-view.component';\r\nimport { HeaderListComponent } from './default-list/header-list/header-list.component';\r\nimport { HeaderViewComponent } from './default-view/header-view/header-view.component';\r\nimport { DefaultTableComponent } from './default-table/default-table.component';\r\nimport { DefaultPaginationComponent } from './default-pagination/default-pagination.component';\r\nimport { ThFilterComponent } from './default-table/th-filter/th-filter.component';\r\n\r\nconst lstComponents = [\r\n  HeaderListComponent,\r\n  DefaultListComponent,\r\n\r\n  DefaultViewComponent,\r\n  HeaderViewComponent,\r\n  DefaultTableComponent,\r\n  DefaultPaginationComponent,\r\n  ThFilterComponent\r\n]\r\n\r\n/** Modulo parão, inclui os seguiintes componentes:\r\n *  - HeaderListComponent,\r\n    - DefaultListComponent,\r\n    - DefaultViewComponent,\r\n    - HeaderViewComponent,\r\n    - DefaultTableComponent,\r\n    - DefaultPaginationComponent,\r\n */\r\n@NgModule({\r\n  declarations: [...lstComponents],\r\n  exports     : [...lstComponents],\r\n  imports: [\r\n    IonicModule, \r\n    CommonModule, \r\n    InputsModule,\r\n    ReactiveFormsModule, \r\n    RouterLinkWithHref,\r\n    FormsModule,\r\n    RouterModule,\r\n    RouterOutlet,\r\n    RouterLink,\r\n    LoadingComponent,\r\n    NgVarDirective\r\n  ]\r\n})\r\nexport class DefaultModule { }\r\n","import { Component, effect, EventEmitter, input, Input, InputSignal, model, ModelSignal, OnInit, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { InputsModule } from '../inputs.module';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { Utils } from '../../core/services/utils.service';\r\nimport { ComparisonType, IComparison} from '../../classes/comparison';\r\nimport { InputSelectConfiguration } from '../input-select/configuration';\r\nimport moment from 'moment';\r\nimport { InputBoolConfiguration, InputConfiguration, InputCurrencyConfiguration, InputDateConfiguration, InputDecimalConfiguration, InputFileConfiguration, InputNumberConfiguration, InputStringConfiguration } from '../inputs/input-configuration';\r\nimport { InputType } from '../inputs/input-type';\r\n\r\n/** Componente padrão de filtro */\r\n@Component({\r\n  standalone: true,\r\n  imports: [CommonModule, IonicModule, InputsModule, ReactiveFormsModule, FormsModule],\r\n  selector: 'filter',\r\n  templateUrl: './filter.component.html',\r\n  styleUrls: ['./filter.component.scss'],\r\n\r\n})\r\nexport class FilterComponent {\r\n\r\n  /** Label do input */\r\n  @Input() label: string;\r\n  /** Filtro que sera utilizado na pesquisa (usando two way data binding) */\r\n  filter: ModelSignal<IComparison> = model<IComparison>();\r\n\r\n  /** Tipo de input do filtro */\r\n  @Input() type: InputType;\r\n  \r\n  guid: string = Utils.GenerateGUID();\r\n  \r\n  /** Configuração input do filtro */\r\n  _configuration: InputConfiguration | null = null;\r\n  configuration: ModelSignal<InputConfiguration | null> = model<InputConfiguration | null>(null);\r\n\r\n  constructor() { \r\n    effect(() => {\r\n      if([InputType.Date, InputType.DateTime].includes(this.type)){ \r\n        this.model = moment(this.filter().getValue()).format(\"YYYY-MM-DDTHH:mm:ss\");\r\n        this.filter().setValue(this.model);\r\n      }else{\r\n        this.model = this.filter().getValue();\r\n      }\r\n      this.SetConfiguration();\r\n    })\r\n  }\r\n\r\n  get index() { return this.filter().GetPropAName(); }\r\n\r\n  SetConfiguration() {\r\n    if(!this.configuration()){\r\n      if([InputType.Date, InputType.DateTime, InputType.Time].includes(this.type)){ \r\n                                           this._configuration = new InputDateConfiguration(true) } else\r\n      if(this.type == InputType.File    ){ this._configuration = new InputFileConfiguration()     } else\r\n      if(this.type == InputType.Number  ){ this._configuration = new InputNumberConfiguration()   } else\r\n      if(this.type == InputType.Decimal ){ this._configuration = new InputDecimalConfiguration()  } else\r\n      if(this.type == InputType.Currency){ this._configuration = new InputCurrencyConfiguration() } else\r\n      if(this.type == InputType.String  ){ this._configuration = new InputStringConfiguration()   } else\r\n      if(this.type == InputType.Select  ){ this._configuration = new InputSelectConfiguration()   } else\r\n      if(this.type == InputType.TextArea){ this._configuration = new InputStringConfiguration();  } else \r\n      if(this.type == InputType.Bool    ){ this._configuration = new InputBoolConfiguration();    }\r\n    }\r\n\r\n    if(this.configuration() && this.configuration() instanceof InputSelectConfiguration){\r\n      this._configuration = new InputSelectConfiguration(\r\n        this.configuration().bindValue,\r\n        this.configuration().bindLabel,\r\n        true,\r\n        true,\r\n        this.configuration().loadFrom,\r\n        true,\r\n      );\r\n    }\r\n\r\n    if(this.configuration() instanceof InputDateConfiguration){\r\n      this._configuration = new InputDateConfiguration(true);\r\n    }\r\n\r\n    if(this.type == InputType.Bool){\r\n      if(this.index == \"ativo\"){\r\n        this._configuration = new InputSelectConfiguration('value', 'label', true, true, [\r\n          { label: 'Somente Ativos'    , value: true  },\r\n          { label: 'Somente Não Ativos', value: false },\r\n        ]);\r\n        this.model = true;\r\n      }\r\n      else{\r\n        this._configuration = new InputSelectConfiguration('value', 'label', true, false, [\r\n          { label: 'Sim', value: true  },\r\n          { label: 'Não', value: false },\r\n        ]);\r\n      }\r\n    }\r\n  }\r\n\r\n  isFilterActive: boolean = false;\r\n\r\n  model: any | null = null;\r\n  /** Evento emitido quando o valor do filtro muda */\r\n  @Output('change') changeEmitter: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  Change(): void{\r\n    if(this.model){\r\n      if(this.type == InputType.Date && (this.filter().type == ComparisonType.SmallerThan || this.filter().type == ComparisonType.SmallerThanOrEqual)){ \r\n        this.model = this.FormatDateModel(moment(this.model).endOf(\"day\").toISOString());\r\n      }\r\n    }\r\n    this.filter().setValue(this.model);\r\n    this.filter.set(this.filter());\r\n    this.changeEmitter.emit();\r\n  }\r\n\r\n  FormatDateModel(model: string): string{\r\n    return moment(model).format(\"YYYY-MM-DDTHH:mm:ss\");\r\n  }\r\n}\r\n","@if(_configuration){\r\n  @switch (type) {\r\n    @case ('String') {\r\n      <input-string [(ngModel)]=\"model\" [label]=\"label\" (blur)=\"Change()\"></input-string>\r\n    }\r\n    @case ('Number') {\r\n      <input-number (change)=\"Change()\" [(ngModel)]=\"model\" [label]=\"label\" [configuration]=\"_configuration\"></input-number>\r\n    }\r\n    @case ('Decimal') {\r\n      <input-decimal (change)=\"Change()\" [(ngModel)]=\"model\" [label]=\"label\" [configuration]=\"_configuration\"></input-decimal>\r\n    }\r\n    @case ('Currency') {\r\n      <input-currency (change)=\"Change()\" [(ngModel)]=\"model\" [label]=\"label\" [configuration]=\"_configuration\"></input-currency>\r\n    }\r\n    @case ('Select') {\r\n      <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" [label]=\"label\" [configuration]=\"_configuration\"></input-select>\r\n    }\r\n    @case ('TextArea') {\r\n      <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" [label]=\"label\"></input-string>\r\n    }\r\n    @case ('Bool') {\r\n      <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" [label]=\"label\" placeholder=\"\" [configuration]=\"_configuration\"></input-select>\r\n    }\r\n    @case ('Date') {\r\n      <input-date (change)=\"Change()\" [(ngModel)]=\"model\" [label]=\"label\" [configuration]=\"_configuration\"></input-date>\r\n    }\r\n    @case ('DateTime') {\r\n      <input-date-time (change)=\"Change()\" [(ngModel)]=\"model\" [label]=\"label\" [configuration]=\"_configuration\"></input-date-time>\r\n    }\r\n  }\r\n}","import { Component, OnInit, ViewChild } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { firstValueFrom } from \"rxjs\";\r\nimport { AlertButton } from \"@ionic/angular\";\r\n\r\nimport { RouteData } from \"../../../classes/routing.factory\";\r\nimport { GenericService } from \"../../../core/services/generics.service\";\r\nimport { HttpService } from \"../../../web/http.service\";\r\nimport { DefaultListComponent } from \"./default-list.component\";\r\n\r\n/** Componente padrão para a invocação do DefaultList */\r\n@Component({ template: '', styles: '' })\r\nexport abstract class AbstractList<T extends HttpService> implements OnInit {\r\n  \r\n  protected service: T\r\n  protected genericService: GenericService\r\n  protected activatedRoute: ActivatedRoute;\r\n\r\n  public id: number;\r\n  \r\n  ngOnInit(): void { \r\n    this.LoadId();\r\n    if(this.activatedRoute){ this.LoadId(); }\r\n  }\r\n\r\n  /** Busca o id da tabela se estiver configurado */\r\n  async LoadId(){\r\n    if(this.activatedRoute){\r\n      const data: RouteData = (await firstValueFrom(this.activatedRoute.data)) as RouteData;\r\n      if(data && data.idPreloaderConfiguration){\r\n        this.id = this.genericService.GetId(this.activatedRoute, data.idPreloaderConfiguration.routeDepth);\r\n      }\r\n    }\r\n  }\r\n\r\n  @ViewChild('defList') DefaultList: DefaultListComponent<T>;\r\n  ionViewWillEnter(): void{\r\n    if(this.DefaultList){\r\n      this.DefaultList.Refresh();\r\n    }\r\n  }\r\n  \r\n  Delete(id: number): void {\r\n    const buttons: AlertButton[] = [\r\n      { text: \"Cancelar\", role: 'cancel' },\r\n      { text: \"OK\"      , role: 'confirm', handler: (() => { \r\n          this.service.Delete(id).subscribe({ \r\n            next: (() => { this.DefaultList.Refresh(); this.genericService.PresentToastSuccess(\"Excluido com sucesso!\"); }) \r\n          }); \r\n        }) \r\n      }\r\n    ]\r\n\r\n    this.genericService.PresentAlert(\"Atenção!\", \"Tem certeza que deseja excluir o dado?\", buttons)\r\n  }\r\n}","import { Routes } from \"@angular/router\";\r\nimport { IComparison, LongProperty, RouteParamProperty } from \"./comparison\";\r\n\r\nexport class DefaultRoutingFactory{\r\n  /** Retorna as rotas padrões, incluindo listagem, view(novo) e view:id\r\n   * @param ListComponent Componente de listagem a ser invocado\r\n   * @param ViewCompnent Componente de listagem a ser invocado\r\n   */\r\n  public static GetRoutes(ListComponent, ViewCompnent): Routes{\r\n    return [\r\n      {\r\n        path: '',\r\n        component: ListComponent\r\n      },\r\n      {\r\n        path: 'view',\r\n        component: ViewCompnent\r\n      },\r\n      {\r\n        path: 'view/:id',\r\n        component: ViewCompnent,\r\n      }\r\n    ]\r\n  } \r\n}\r\n\r\n/** Configuração de rota */\r\nexport class RouteData{\r\n  idPreloaderConfiguration: idPreloaderConfiguration | null = null;\r\n  \r\n  constructor(data: Partial<RouteData>){\r\n    if(data.idPreloaderConfiguration){ this.idPreloaderConfiguration = data.idPreloaderConfiguration }\r\n  }\r\n}\r\n/** Configuração de rota: Automaticamente aplica o id de uma rota superior para a filtragem de uma listagem de uma tebela filha\r\n * * A propriedade precisa existir no seu determinado service para ser aplicado\r\n */\r\nexport class idPreloaderConfiguration{\r\n  constructor(\r\n    /** Propriedade no banco de dados a ser comparada */\r\n    public idPreloader      : LongProperty,\r\n    /** \r\n     * Se idPreloaderChange == true  : o valor PODERÁ ser modificado na listagem pelo usuário\r\n     * Se idPreloaderChange == false : o valor NÃO poderá ser modificado na listagem pelo usuário\r\n     * */\r\n    public idPreloaderChange: boolean = false,\r\n\r\n    /** Profundidade da rota para buscar o parametro :id\r\n     * Valor minimo é 0\r\n     */\r\n    public routeDepth       : number = 2,\r\n  ){ }\r\n}","import { InfiniteScrollCustomEvent } from \"@ionic/angular\";\r\n\r\n/**\r\n * @deprecated\r\n */\r\nexport class InfiniteScroll {\r\n  public configuration: InfiniteScrollConfiguration;\r\n\r\n  private console: InfiniteScrollConsole;\r\n  \r\n  constructor(configuration: InfiniteScrollConfiguration){\r\n    this.configuration = configuration;\r\n    \r\n    this.console = new InfiniteScrollConsole(configuration.logging);\r\n  } \r\n\r\n  get pushTreshhold(): number { return this.configuration.pushTreshold } \r\n\r\n  private originalArray: any[] = [];\r\n  public internalArray: any[] = [];\r\n\r\n  public array: any[] = [];\r\n\r\n  get CanScroll(): boolean{\r\n    return this.array.length != this.internalArray.length\r\n  }\r\n  get NoItems(): boolean{\r\n    return this.array.length == 0;\r\n  }\r\n\r\n  public PushItens(event? : InfiniteScrollCustomEvent): void {\r\n    const minimum = this.array.length;\r\n    const size    = this.array.length + this.pushTreshhold;\r\n\r\n    for (let i = minimum; i < size; i++) {\r\n      this.console.log(\"[ Pushing @ ]\", i, minimum, size, this.originalArray.length)\r\n      if(i > this.originalArray.length){ \r\n        this.console.warn(\"[ Warning! ] [ End of array! ]\"); \r\n        break; \r\n      }\r\n\r\n      const data = this.internalArray[i];\r\n      if(data){ this.array.push(data); }\r\n    }\r\n\r\n    if(event){ event.target.complete(); }\r\n  }\r\n\r\n  public search: string = \"\";\r\n  \r\n  public SetArray(array: any[]){\r\n    this.originalArray = array;\r\n    this.internalArray = array;\r\n    this.array        = [];\r\n  }\r\n  \r\n  public Search(){\r\n    this.internalArray = [];\r\n    this.array         = [];\r\n  \r\n    var search: string = this.search.toLowerCase();\r\n\r\n    this.originalArray.forEach(el => {\r\n      var hidden: boolean = true;\r\n      const lbl = this.getLabel(el).toLowerCase();\r\n      try{\r\n        hidden = !lbl.includes(search);\r\n      }catch{ \r\n        this.console.warn(\"[ Error in searching @ object! ]\", this.configuration, el) \r\n      }\r\n\r\n      if(!hidden){ this.internalArray.push(el); }\r\n    });\r\n\r\n    this.PushItens();\r\n  }\r\n\r\n  private getLabel(item: any): string{\r\n    return typeof(this.configuration.bindLabel) == 'function' ? this.configuration.bindLabel(item) + '' : item[this.configuration.bindLabel] + ''\r\n  }\r\n}\r\n  \r\nexport class InfiniteScrollConfiguration{\r\n  bindLabel    : string | ((...args: any[]) => string);\r\n  pushTreshold : number   = 50;\r\n  logging      : boolean = false;\r\n  constructor(bindLabel: string | ((...args: any[]) => string) = \"nome\", pushTreshold: number = 50, logging: boolean = false){\r\n    this.bindLabel    = bindLabel\r\n    this.pushTreshold = pushTreshold\r\n    this.logging      = logging\r\n  }\r\n}\r\n\r\nclass InfiniteScrollConsole {\r\n  private logging: boolean = false;\r\n  constructor(logging: boolean){\r\n    this.logging = logging;\r\n    const _ = ((...args: any[]) : void => { return; })\r\n    this.warn  = _;\r\n    this.log   = _;\r\n    this.error = _;\r\n    if(logging){\r\n      this.log   = console.log;\r\n      this.warn  = console.warn;\r\n      this.error = console.error;\r\n    }\r\n  }\r\n\r\n  warn  : ((...args: any[]) => void );\r\n  log   : ((...args: any[]) => void );\r\n  error : ((...args: any[]) => void );\r\n}\r\n","import { HttpClient, HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\r\nimport { NavController, ToastController } from \"@ionic/angular\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Observable, catchError } from \"rxjs\";\r\n\r\nimport { GenericService } from \"../services/generics.service\";\r\nimport { AuthService } from \"../services/auth.service\";\r\nimport { ApiUrlProviderService } from \"../../web/api-url-provider.service\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n\r\n  constructor(\r\n    private auth: AuthService,\r\n    private http: HttpClient,\r\n    private genericService: GenericService,\r\n    private toastController: ToastController,\r\n    private apiUrlProviderService: ApiUrlProviderService,\r\n    private router: Router\r\n  ) {}\r\n\r\n  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n    return next.handle(req).pipe(\r\n      catchError((error: HttpErrorResponse) => { \r\n        // if(error.status == 0){\r\n        //   this.PresentErrorToast(error.error, req, error);\r\n        // }\r\n        if(error.status == 401){ \r\n          this.auth.Loggout(); \r\n        }else \r\n        if(error.status != 404){ \r\n          this.PresentErrorToast(error.error, req, error);\r\n        }\r\n        if(error.status == 403){\r\n          this.router.navigate(['/403'])\r\n        }\r\n        throw error;\r\n      })\r\n    );\r\n  }\r\n\r\n  private localUserKey: string = \"APLICATION_USER_KEY\";\r\n  private localAdminKey: string = \"APLICATION_ADMIN_KEY\";\r\n  async PresentErrorToast(json: string, request: any, fullError: any) {\r\n    var res: ApiErrorReturn = null;\r\n    try{\r\n      res = JSON.parse(json) as ApiErrorReturn\r\n    }catch{\r\n      res = { Erro: \"Não foi possivel converter o JSON de retorno!\", Mensagem: \"Ocorreu um erro inesperado!\", _Info: \"\" }\r\n    }\r\n    res._Info = await this.GetInfo(request, fullError);\r\n\r\n    const toast = await this.toastController.create({\r\n      message: res.Mensagem,\r\n      duration: 5000,\r\n      icon: \"bug\",\r\n      position: 'bottom',\r\n      translucent: false, \r\n      cssClass: 'ionic-toast',\r\n      buttons: [\r\n        { \r\n          text: \"Reportar Erro\",\r\n          icon: \"document\",\r\n          side: \"end\",\r\n          handler: () => {\r\n            this.Report(res);\r\n          }\r\n        }\r\n      ]\r\n    });\r\n\r\n    await toast.present();\r\n  }\r\n\r\n  protected get fullRoute(): string{\r\n    return this.apiUrlProviderService.apiUrl + 'error'\r\n  }\r\n  Report(res: ApiErrorReturn): void{\r\n    this.http.post(this.fullRoute, res).subscribe({\r\n      next: (res) => { this.genericService.PresentToast(\"Erro informado com sucesso!\", \"checkmark-circle\"); },\r\n      error:(err) => { this.genericService.PresentToast(\"Ocorreu um erro inesperado no retorno do erro!\"); }\r\n    });\r\n  }\r\n\r\n  async GetInfo(request: any, fullError: any): Promise<string>{\r\n    return JSON.stringify({\r\n      token     : this.auth.LoadToken(),\r\n      tokenAdmin: this.auth.LoadTokenAdmin(),\r\n      currentUrl: window.location.href,\r\n      userId    : (await this.auth.LoadToken()).id,\r\n      jwtAdmin  : localStorage.getItem(this.localAdminKey),\r\n      jwtUser   : localStorage.getItem(this.localUserKey),\r\n      request   : request,\r\n      error     : fullError,\r\n      apiUrl    : this.apiUrlProviderService.apiUrl\r\n    });\r\n  }\r\n}\r\n\r\nclass ApiErrorReturn {\r\n  Mensagem: string;\r\n  Erro: string;\r\n  _Info: string;\r\n}","import { AuthService } from './../services/auth.service';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n  HttpRequest,\r\n  HttpHandler,\r\n  HttpEvent,\r\n  HttpInterceptor\r\n} from '@angular/common/http';\r\nimport { Observable, first, firstValueFrom, from, lastValueFrom, mergeMap, switchMap } from 'rxjs';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class TokenInterceptor implements HttpInterceptor {\r\n\r\n  constructor(\r\n    private auth: AuthService\r\n  ) {}\r\n\r\n  intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n    return from(this.auth.JWToken()).pipe( \r\n      switchMap((authToken: string) => {\r\n        const authReq = request.clone({ setHeaders: { Authorization: `Bearer ${authToken}` } });\r\n        return next.handle(authReq);\r\n      })\r\n    );\r\n  }\r\n}\r\n","import { AuthService } from './../services/auth.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router';\r\n\r\n@Injectable()\r\nexport class AuthGuard implements CanActivate {\r\n\r\n  constructor(private auth: AuthService, private router: Router) {}\r\n\r\n  async canActivate(route:ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {\r\n    const Token = await this.auth.LoadToken();\r\n    const Authenticated = this.auth.isTokenValid(Token);\r\n    if(!Authenticated){\r\n      this.auth.Loggout();\r\n    }\r\n    return Authenticated;\r\n  }\r\n}","/*\r\n * Public API Surface of sapphire-ion-framework\r\n */\r\n\r\n//[ Components]\r\n    export * from '../lib/components/info-popover/info-popover.component';\r\n    export * from '../lib/components/tooltip/tooltip.component';\r\n    export * from '../lib/components/http-responses-pages/forbidden-403/forbidden-403.component';\r\n\r\n    //[ Inputs ]\r\n    export * from '../lib/components/inputs.module';\r\n    export * from '../lib/components/inputs-validators';\r\n    export * from '../lib/components/inputs-default-configurations';\r\n    export * from '../lib/components/inputs/input-configuration';\r\n    export * from '../lib/components/inputs/input-type';\r\n    export * from '../lib/components/inputs/table-field';\r\n    export * from '../lib/components/inputs/inputs';\r\n        export * from '../lib/components/input-loading/input-loading.component';\r\n        export * from '../lib/components/input-bool/input-bool.component';\r\n        export * from '../lib/components/input-date/input-date.component';\r\n        export * from '../lib/components/input-decimal/input-decimal.component';\r\n        export * from '../lib/components/input-file/input-file.component';\r\n        export * from '../lib/components/input-file/download-button/download-button.component';\r\n        \r\n        export * from '../lib/components/input-select/input-select-template.directive';\r\n        export * from '../lib/components/input-select/input-select.component';\r\n        export * from '../lib/components/input-select/input-select-option/input-select-option.component';\r\n        export * from '../lib/components/input-select/configuration';\r\n\r\n        export * from '../lib/components/input-string/input-string.component';\r\n        export * from '../lib/components/input-textarea/input-textarea.component';\r\n        export * from '../lib/components/input-cpf-cnpj/input-cpf-cnpj.component';\r\n        export * from '../lib/components/input-color/input-color.component';\r\n\r\n    //[ Client ]\r\n    export * from '../lib/components/client/default/default.page';\r\n    export * from '../lib/components/client/main-content/main-content.component';\r\n    export * from '../lib/components/drawer/drawer.component';\r\n    export * from '../lib/components/drawer/drawer-group/drawer-group.component';\r\n    export * from '../lib/components/drawer/default-drawer-end/default-drawer-end.component';\r\n    export * from '../lib/components/drawer/menu';\r\n    export * from '../lib/components/login/login.component';\r\n    export * from '../lib/components/login/login-admin/login-admin.component';\r\n    export * from '../lib/components/classes';\r\n\r\n    //[ Generic ]\r\n    export * from '../lib/components/carousel/carousel.module';\r\n    export * from '../lib/components/carousel/carousel.component';\r\n    export * from '../lib/components/carousel/carousel-image/carousel-image.component';\r\n    export * from '../lib/components/carousel/carousel-item/carousel-item.component';\r\n\r\n    export * from '../lib/components/content-block/content-block.component';\r\n\r\n    export * from '../lib/components/image/image.component';\r\n    export * from '../lib/components/generic/loading/loading.component';\r\n        //[ Tabs ]\r\n        export * from '../lib/components/generic/tabs/tabs.module';\r\n        export * from '../lib/components/generic/tabs/tab/tab.component';\r\n        export * from '../lib/components/generic/tabs/tabs/tabs.component';\r\n        //[ Stepper ]\r\n        export * from '../lib/components/generic/stepper/stepper.component';\r\n        export * from '../lib/components/generic/stepper/step/step.component';\r\n        export * from '../lib/components/generic/stepper/stepper.module';\r\n\r\n    export * from '../lib/components/drag-drop-file/drag-drop-file.module';\r\n    export * from '../lib/components/drag-drop-file/drag-drop-file.directive';\r\n    export * from '../lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component';\r\n    //[ Default ]\r\n    export * from '../lib/components/default/default.module';\r\n\r\n    export * from '../lib/components/filter/filter.component';\r\n    export * from '../lib/components/default/default-list/default-list.component';\r\n    export * from '../lib/components/default/default-list/header-list/header-list.component';\r\n    export * from '../lib/components/default/default-list/list';\r\n    export * from '../lib/components/default/default-list/abstract-list';\r\n    export * from '../lib/components/default/default-pagination/default-pagination.component';\r\n    export * from '../lib/components/default/default-table/default-table.component';\r\n    export * from '../lib/components/default/default-table/th-filter/th-filter.component';\r\n    export * from '../lib/components/default/default-view/default-view.component';\r\n    export * from '../lib/components/default/default-view/header-view/header-view.component';\r\n    export * from '../lib/components/default/default-view/view';\r\n\r\n    //[ Login ]\r\n    export * from '../lib/components/login/login.component';\r\n\r\n//[ Core ]\r\n    //[ Classes ]\r\n    export * from './classes/config';\r\n    export * from './classes/routing.factory';\r\n    export * from './classes/infinite-scroll';\r\n    export * from './classes/comparison';\r\n    \r\n    //[ Directives ]\r\n    export * from '../lib/core/directives/ng-var.directive';\r\n    //[ Guards ]\r\n    export * from '../lib/core/guards/error.interceptor';\r\n    export * from '../lib/core/guards/token.interceptor';\r\n    export * from '../lib/core/guards/auth.guard';\r\n    //[ Services ]\r\n    export * from '../lib/core/services/generics.service';\r\n    export * from './core/services/utils.service';\r\n    export * from '../lib/core/services/auth.service';\r\n    export * from '../lib/core/services/environment.service';\r\n    export * from '../lib/core/services/usuario.service';\r\n    export * from './core/services/route/route.provider.service';\r\n    export * from './core/services/route/route.cache.service';\r\n\r\n//[ Web ]\r\nexport * from '../lib/web/api-url-provider.service';\r\nexport * from '../lib/web/http.ativo.service';\r\nexport * from '../lib/web/http.service';\r\nexport * from './web/storage.service';\r\n\r\nexport * from './core.module';\r\nexport * from './core/services/environment.service';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i4.InputLoadingComponent","i3.EnvironmentService","i1.EnvironmentService","i2.ApiUrlProviderService","i3.GenericService","i2.UtilsService","i3.ApiUrlProviderService","i4.StorageService","i5","i6","i7.NgVarDirective","i8.LoadingComponent","i9.InputLoadingComponent","i1.StorageService","i3","i4","i5.NgVarDirective","i6.LoadingComponent","i7.InputLoadingComponent","i5.ApiUrlProviderService","i1.ISelect","i5.InputLoadingComponent","i6.InputSelectInternalOptionComponent","i1.GenericService","i5.LoadingComponent","i6.InputLoadingComponent","i2.EnvironmentService","i4.RouteProviderService","i4.ApiUrlProviderService","i1.AuthService","i1.ApiUrlProviderService","i2.AuthService","i3.UsuarioService","i6.InputSelectComponent","i2.GenericService","i4.AuthService","i6.EnvironmentService","i7","i2.ImageComponent","lstComponents","i3.InputDateComponent","i4.InputDecimalComponent","i5.InputSelectComponent","i6.InputStringComponent","i5.DownloadButtonComponent","i7.LoadingComponent","i8.DefaultPaginationComponent","i9.ThFilterComponent","i5.HeaderListComponent","i6.DefaultTableComponent","i6.InputBoolComponent","i7.InputDateComponent","i8.InputDecimalComponent","i9.InputFileComponent","i10.InputSelectComponent","i11.InputStringComponent","i12.InputTextareaComponent","i13.InputCpfCnpjComponent","i14.HeaderViewComponent","i1.InputDateComponent","i2.InputDecimalComponent","i3.InputSelectComponent","i4.InputStringComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;MAWa,oBAAoB,CAAA;IAS/B,gBAAgB,GAAA;AACd,QAAA,QAAO,IAAI,CAAC,SAAS;YACnB,MAAK,UAAU;gBAAG;AAChB,oBAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;iBAC5B;gBACD,MAAM;YACN,MAAK,WAAW;gBAAE;AAChB,oBAAA,IAAI,CAAC,QAAQ,GAAG,wBAAwB,CAAC;iBAC1C;gBACD,MAAM;YACN,MAAK,OAAO;gBAAE;AACZ,oBAAA,IAAI,CAAC,QAAQ,GAAG,qCAAqC,CAAC;iBACvD;gBACD,MAAM;YACN,MAAK,cAAc;gBAAE;AACnB,oBAAA,IAAI,CAAC,QAAQ,GAAG,2BAA2B,CAAC;iBAC7C;gBACD,MAAM;YACN,MAAK,KAAK;gBAAE;AACV,oBAAA,IAAI,CAAC,QAAQ,GAAG,mCAAmC,CAAC;iBACrD;gBACD,MAAM;YACN,MAAK,QAAQ;gBAAE;AACb,oBAAA,IAAI,CAAC,QAAQ,GAAG,sCAAsC,CAAC;iBACxD;gBACD,MAAM;YACN,MAAK,MAAM;gBAAE;AACX,oBAAA,IAAI,CAAC,QAAQ,GAAG,oCAAoC,CAAC;iBACtD;gBACD,MAAM;YACN,MAAK,UAAU;gBAAE;AACf,oBAAA,IAAI,CAAC,QAAQ,GAAG,uBAAuB,CAAC;iBACzC;gBACD,MAAM;YACN,MAAK,aAAa;gBAAE;AAClB,oBAAA,IAAI,CAAC,QAAQ,GAAG,0BAA0B,CAAC;iBAC5C;gBACD,MAAM;YACN,MAAK,QAAQ;gBAAE;AACb,oBAAA,IAAI,CAAC,QAAQ,GAAG,gDAAgD,CAAC;iBAClE;gBACD,MAAM;SACP;KACF;AAED,IAAA,WAAA,GAAA;AApDmB,QAAA,IAAA,CAAA,iBAAiB,GAAuB,IAAI,YAAY,EAAQ,CAAA;QAE1E,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;QACxB,IAAI,CAAA,IAAA,GAAW,OAAO,CAAC;QACb,IAAS,CAAA,SAAA,GAAW,UAAU,CAAC;QAClD,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;KA+CL;IAEjB,QAAQ,GAAA;QACN,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;KAC/B;+GA9DU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,ECXjC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,o9BAsBM,EDhBO,MAAA,EAAA,CAAA,qCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,uxBAAE,YAAY,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAKzB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,WACP,CAAE,WAAW,EAAE,YAAY,CAAE,YAC5B,cAAc,EAAA,QAAA,EAAA,o9BAAA,EAAA,MAAA,EAAA,CAAA,qCAAA,CAAA,EAAA,CAAA;wDAML,iBAAiB,EAAA,CAAA;sBAAnC,MAAM;uBAAC,SAAS,CAAA;gBAER,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACa,SAAS,EAAA,CAAA;sBAA3B,KAAK;uBAAC,UAAU,CAAA;;;MENN,gBAAgB,CAAA;AAP7B,IAAA,WAAA,GAAA;QASW,IAAK,CAAA,KAAA,GAAwC,OAAO,CAAC;QACrD,IAAK,CAAA,KAAA,GAAU,WAAW,CAAC;AACrC,KAAA;+GAJY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,ECX7B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,49DAqDA,ED9CY,MAAA,EAAA,CAAA,q+CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BAAE,WAAW,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIxB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,cACP,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,49DAAA,EAAA,MAAA,EAAA,CAAA,q+CAAA,CAAA,EAAA,CAAA;8BAM3B,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;;;MEFK,qBAAqB,CAAA;AAEhC,IAAA,WAAA,GAAA,GAAiB;AAEjB,IAAA,QAAQ,MAAK;+GAJF,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,yECZlC,mqDAkCE,EAAA,MAAA,EAAA,CAAA,2OAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED1BU,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,g6BAAE,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,CAAA,EAAA;;4FAIpC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,WAAW,EAAE,UAAU,CAAC,EAAA,QAAA,EAAA,mqDAAA,EAAA,MAAA,EAAA,CAAA,2OAAA,CAAA,EAAA,CAAA;;;MEFrC,cAAc,CAAA;IACzB,IACI,KAAK,CAAC,OAAgB,EAAA;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;AAEtD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACvB;KACJ;IAYD,WACY,CAAA,WAA6B,EAC7B,KAAuB,EAAA;QADvB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAkB;QAC7B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAkB;AAZ3B,QAAA,IAAA,CAAA,OAAO,GAGX;AACA,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,KAAK,EAAE,IAAI;SACd,CAAC;QAEM,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;KAK7B;+GAxBO,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,SAAS;AACpB,iBAAA,CAAA;+GAGK,KAAK,EAAA,CAAA;sBADR,KAAK;;;ACJR;MACa,oBAAoB,CAAA;IAC/B,OAAO,WAAW,CAAC,SAAS,EAAA;QAC1B,OAAO;AACL,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,SAAS,CAAC;AACxC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,CAAA;KACF;AACF,CAAA;MAGqB,WAAW,CAAA;AADjC,IAAA,WAAA,GAAA;;QAGW,IAAE,CAAA,EAAA,GAAkB,UAAU,CAAC;;QAM/B,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;;QAE3B,IAAK,CAAA,KAAA,GAAgB,OAAO,CAAC;;QAE7B,IAAQ,CAAA,QAAA,GAAa,KAAK,CAAC;;QAKpC,IAAM,CAAA,MAAA,GAAyB,IAAI,CAAC;QA+BpC,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;;AAGA,QAAA,IAAA,CAAA,WAAW,GAAoB,IAAI,YAAY,EAAK,CAAC;;AAGnD,QAAA,IAAA,CAAA,aAAa,GAAoB,IAAI,YAAY,EAAK,CAAC;AAGzE,QAAA,IAAA,CAAA,SAAS,GAAa,CAAC,CAAM,KAAI,GAAG,CAAA;AACpC,QAAA,IAAA,CAAA,QAAQ,GAAc,CAAC,CAAM,KAAI,GAAG,CAAA;AAGrC,KAAA;IA/CC,UAAU,CAAC,GAAM,EAAA,EAAU,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAA,EAAE;IAIvF,IAAI,KAAK,KAAmB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAG;IAClD,IAAI,KAAK,CAAC,KAAc,EAAI,EAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE;IASlD,QAAQ,GAAA;AACN,QAAA,IAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,eAAe,EAAC;AAChE,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SACxE;AAED,QAAA,IAAG,IAAI,CAAC,OAAO,EAAC;AACd,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC/D,IAAI,CAAC,OAAO,GAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAErC,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;AAC5B,gBAAA,IAAI,EAAE,CAAC,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE;AACvD,aAAA,CAAC,CAAC;SACJ;KACF;AAEO,IAAA,aAAa,CAAC,OAAwB,EAAA;QAC5C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,OAAO,GAAI,OAAO,CAAC,OAAO,CAAC;KACjC;IASD,eAAe,CAAC,GAAM,EAAS,EAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA,CAAC,EAAE;IAIpF,gBAAgB,CAAE,EAAwB,EAAA,EAAI,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA,EAAE;IACnE,iBAAiB,CAAC,EAAwB,EAAA,EAAI,IAAI,CAAC,QAAQ,GAAI,EAAE,CAAA,EAAE;+GA5D/C,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAX,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,SAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EADK,oBAAoB,CAAC,WAAW,CAAC,WAAW,CAAC,0BAA5D,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FACH,WAAW,EAAA,UAAA,EAAA,CAAA;kBADhC,SAAS;mBAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,oBAAoB,CAAC,WAAW,CAAA,WAAA,CAAa,EAAE,CAAA;8BAG1E,EAAE,EAAA,CAAA;sBAAV,KAAK;gBAEG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAUG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAGuB,OAAO,EAAA,CAAA;sBAAnC,KAAK;uBAAC,aAAa,CAAA;gBA0BJ,WAAW,EAAA,CAAA;sBAA1B,MAAM;uBAAC,MAAM,CAAA;gBAGI,aAAa,EAAA,CAAA;sBAA9B,MAAM;uBAAC,QAAQ,CAAA;;MAWI,iBAAiB,CAAA;IAarC,UAAU,CAAC,GAAM,EAAA,EAAU,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAA,EAAE;IAIvF,IAAI,KAAK,KAAmB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAG;IAClD,IAAI,KAAK,CAAC,KAAc,EAAI,EAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE;AASlD,IAAA,WAAA,GAAA;;;QAxBS,IAAO,CAAA,OAAA,GAAc,KAAK,CAAC;;QAE3B,IAAQ,CAAA,QAAA,GAAa,KAAK,CAAC;;QAE3B,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;;QAE3B,IAAK,CAAA,KAAA,GAAgB,OAAO,CAAC;;AAEtC,QAAA,IAAA,CAAA,QAAQ,GAA4B,KAAK,CAAU,KAAK,CAAC,CAAA;;QAK/C,IAAM,CAAA,MAAA,GAAa,IAAI,CAAC;QAmClC,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;;;QAIhB,IAAI,CAAA,IAAA,GAA0B,MAAM,EAAK,CAAC;;QAE1C,IAAM,CAAA,MAAA,GAAwB,MAAM,EAAK,CAAC;QAG1C,IAAQ,CAAA,QAAA,GAAyB,CAAC,CAAM,KAAO,EAAA,OAAO,EAAE,CAAA;QACxD,IAAO,CAAA,OAAA,GAA0B,CAAC,CAAM,KAAO,EAAA,OAAO,EAAE,CAAA;QAjCtD,MAAM,CAAC,MAAK;AACV,YAAA,IAAG,IAAI,CAAC,OAAO,EAAC;gBAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;aAAE;AAC1D,SAAC,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;AACN,QAAA,IAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,eAAe,EAAC;AAChE,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SACxE;AAED,QAAA,IAAG,IAAI,CAAC,OAAO,EAAC;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,OAAO,GAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YAErC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,KAAI,EAAG,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;SAC/E;KACF;IAEO,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;KACrC;IASD,eAAe,CAAC,GAAM,EAAS,EAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA,CAAC,EAAE;IAI5E,gBAAgB,CAAE,EAAwB,EAAA,EAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA,EAAE;IAClE,iBAAiB,CAAC,EAAwB,EAAA,EAAI,IAAI,CAAC,OAAO,GAAI,EAAE,CAAA,EAAE;+GA/D9C,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAjB,iBAAiB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,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,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EADD,oBAAoB,CAAC,WAAW,CAAC,iBAAiB,CAAC,0BAAlE,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FACH,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBADtC,SAAS;mBAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,oBAAoB,CAAC,WAAW,CAAA,iBAAA,CAAmB,EAAE,CAAA;wDAIhF,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAYI,eAAe,EAAA,CAAA;sBAAxB,KAAK;gBAGI,OAAO,EAAA,CAAA;sBADhB,KAAK;uBAAC,aAAa,CAAA;;;ACtGtB;MACa,sBAAsB,CAAA;AACjC,IAAA,WAAA;;IAES,KAAa,GAAA,CAAC,SAAS,CAAC;;AAExB,IAAA,QAAA,GAAoB,KAAK,EAAA;QAFzB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAmB;QAExB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;KAC/B;AACJ,CAAA;MAEY,sBAAsB,CAAA;AACjC,IAAA,WAAA;AACE;;;AAGE;IACK,IAAsB,GAAA,aAAa,CAAC,QAAQ,EAAA;QAA5C,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAwC;KAClD;AACJ,CAAA;IACW,cAGX;AAHD,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAmB,CAAA;AACrB,CAAC,EAHW,aAAa,KAAb,aAAa,GAGxB,EAAA,CAAA,CAAA,CAAA;MACY,sBAAsB,CAAA;AACjC,IAAA,WAAA;;AAES,IAAA,SAAA,GAAqB,KAAK,EAAA;QAA1B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;KAChC;AACJ,CAAA;MACY,yBAAyB,CAAA;AAKpC,IAAA,WAAA;;AAES,IAAA,SAAA,GAAoB,CAAC;;AAE5B,IAAA,MAAA,GAAwB,IAAI;;AAE5B,IAAA,KAAA,GAAuB,IAAI;;IAEpB,iBAA4B,GAAA,GAAG,EAC/B,gBAAA,GAA4B,GAAG,EAAA;QAP/B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAY;QAMrB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAc;QAC/B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAe;QAEtC,IAAG,CAAC,MAAM,EAAC;AAAE,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;SAAE;aAAI;AAAE,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;SAAE;QAC7D,IAAG,CAAC,KAAK,EAAE;AAAE,YAAA,IAAI,CAAC,KAAK,GAAI,EAAE,CAAC;SAAE;aAAI;AAAE,YAAA,IAAI,CAAC,KAAK,GAAI,KAAK,CAAC;SAAE;AAE5D,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;AACvB,QAAA,IAAG,SAAS,GAAG,CAAC,EAAC;AACf,YAAA,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,gBAAgB,CAAC;AAC1C,YAAA,KAAI,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAC;AAChC,gBAAA,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC;aACzB;SACF;KACF;AACF,CAAA;AACK,MAAO,wBAAyB,SAAQ,yBAAyB,CAAA;AACrE,IAAA,WAAA,CACE,SAAiB,EAAE,EACnB,QAAiB,EAAE,EACnB,oBAA4B,GAAG,EAAA;QAE/B,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;KAC5C;AACF,CAAA;AACK,MAAO,0BAA2B,SAAQ,yBAAyB,CAAA;AACvE,IAAA,WAAA,CAAY,SAAiB,IAAI,EAAE,QAAgB,EAAE,EAAE,oBAA4B,GAAG,EAAA;QACpF,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;KAC5C;AACF,CAAA;MACY,wBAAwB,CAAA;AAGnC,IAAA,WAAA,CAAY,OAAwB,eAAe,CAAC,IAAI,EAAE,YAAoB,EAAE,EAAA;AADhF,QAAA,IAAA,CAAA,IAAI,GAAoB,eAAe,CAAC,IAAI,CAAC;AAE3C,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KAClB;AACF,CAAA;MAGY,yBAAyB,CAAA;AACpC,IAAA,WAAA,CAAmB,OAAgB,UAAU,EAAA;QAA1B,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAsB;KAAG;AACjD,CAAA;AACD;IACY,gBAQX;AARD,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAiB,CAAA;AACjB,IAAA,eAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAkB,CAAA;AAClB,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAmB,CAAA;AACnB,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAmB,CAAA;AACnB,IAAA,eAAA,CAAA,KAAA,CAAA,GAAA,KAAgB,CAAA;AAChB,IAAA,eAAA,CAAA,KAAA,CAAA,GAAA,KAAgB,CAAA;AAClB,CAAC,EARW,eAAe,KAAf,eAAe,GAQ1B,EAAA,CAAA,CAAA;;MCxFY,qBAAqB,CAAA;AAIhC,IAAA,WAAA,GAAA,GAAiB;+GAJN,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,qFCPlC,6OAEM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDKO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,6OAAA,EAAA,CAAA;wDAMhB,OAAO,EAAA,CAAA;sBAAf,KAAK;;;AEEF,MAAO,kBAAmB,SAAQ,WAAoB,CAAA;IAK1D,WAEW,CAAA,gBAAkC,EAClC,UAAsB,EAAA;AAC7B,QAAA,KAAK,EAAE,CAAC;QAFD,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AANxB,QAAA,IAAA,CAAA,aAAa,GAA2B,IAAI,sBAAsB,EAAE,CAAC;QAC9E,IAAK,CAAA,KAAA,GAAG,aAAa,CAAC;KAMR;AAEL,IAAA,MAAM,QAAQ,GAAA;QACrB,KAAK,CAAC,QAAQ,EAAE,CAAC;KAClB;IAED,IAAa,KAAK,KAAmB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;IAC1D,IAAa,KAAK,CAAC,KAAc,EAAA,EAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE;AACzF,IAAA,QAAQ,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;IAEQ,UAAU,CAAC,KAAc,EAAA,EAAU,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;+GArBxD,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAFlB,oBAAoB,CAAC,WAAW,CAAC,kBAAkB,CAAC,iDCTjE,m3BAiBM,EAAA,MAAA,EAAA,CAAA,0PAAA,EAAA,49DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDNO,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAGX,SAAA,EAAA,oBAAoB,CAAC,WAAW,CAAoB,kBAAA,CAAA,EAAA,QAAA,EAAA,m3BAAA,EAAA,MAAA,EAAA,CAAA,0PAAA,EAAA,49DAAA,CAAA,EAAA,CAAA;;0BAQ5D,QAAQ;;0BAAI,IAAI;;0BAAI,QAAQ;kEAJtB,aAAa,EAAA,CAAA;sBAArB,KAAK;;;MEAK,YAAY,CAAA;AAEvB,IAAA,WAAA,CAAoB,qBAA4C,EAAA;QAA5C,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;KAC/D;;IAGD,MAAM,UAAU,CAAC,aAAqC,EAAA;AACpD,QAAA,IAAK,UAKJ,CAAA;AALD,QAAA,CAAA,UAAK,UAAU,EAAA;AACb,YAAA,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV,YAAA,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV,YAAA,UAAA,CAAA,UAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAU,CAAA;AACV,YAAA,UAAA,CAAA,UAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAU,CAAA;AACZ,SAAC,EALI,UAAU,KAAV,UAAU,GAKd,EAAA,CAAA,CAAA,CAAA;AAED,QAAA,MAAM,SAAS,GAAsB,EAAE,IAAI,EAAE,QAAQ,EAAc,IAAI,EAAE,QAAQ,EAAQ,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,CAAA;AAClH,QAAA,MAAM,SAAS,GAAsB,EAAE,IAAI,EAAE,SAAS,EAAa,IAAI,EAAE,OAAO,EAAS,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,CAAA;AAClH,QAAA,MAAM,OAAO,GAAwB,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,UAAU,EAAM,IAAI,EAAE,UAAU,CAAC,IAAI,EAAI,CAAA;QAClH,MAAM,OAAO,GAAwB,EAAE,IAAI,EAAE,UAAU,EAAY,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,GAAG,CAAC;QAElI,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAErG,IAAI,MAAM,GAAU,EAAE,CAAC;QACvB,IAAG,KAAK,EAAC;AACP,YAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACvB,YAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACxB;AACD,QAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrB,QAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAErB,QAAA,IAAI,GAA4B,CAAC;AACjC,QAAA,IAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAC;AACnB,YAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACjF,WAAW,CAAC,OAAO,EAAE,CAAC;AACtB,YAAA,GAAG,GAAG,MAAM,WAAW,CAAC,YAAY,EAAE,CAAC;SACxC;aAAI;AACH,YAAA,GAAG,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACjD;AAGD,QAAA,IAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAC;YAAE,OAAO;SAAE;AAExD,QAAA,IAAG,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAC;YAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAA;;AAExF,YAAA,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;AACzB,YAAA,OAAO,IAAI,CAAC;SACb;aAAI;AACH,YAAA,MAAM,GAAG,GAA6B,UAAU,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClI,MAAM,KAAK,GAAiB,CAAC,MAAM,GAAG,EAAE,KAAK,CAAC;AAC9C,YAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAU,CAAC,CAAC,IAAI,CAAC,CAAC;SACrC;KACF;+GAnDU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;MAuDY,KAAK,CAAA;;IAEhB,OAAO,UAAU,CAAC,cAAsB,EAAA;QACtC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;AAC3C,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;;;AAIE;AACF,IAAA,OAAO,qBAAqB,CAAC,GAAW,EAAE,sBAA8B,GAAG,EAAA;QACzE,IAAG,CAAC,GAAG,EAAC;AAAE,YAAA,OAAO,mBAAmB,CAAC;SAAE;QACvC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;KAC/C;AAED;;;;AAII;AACJ,IAAA,OAAO,iBAAiB,CAAC,GAAW,EAAE,sBAA8B,GAAG,EAAA;QACrE,IAAG,CAAC,GAAG,EAAC;AAAE,YAAA,OAAO,mBAAmB,CAAC;SAAE;QACvC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;KACzC;AAED,IAAA,OAAO,YAAY,GAAA;AACjB,QAAA,OAAO,yCAAyC,CAAC,OAAO,CAAC,OAAO,EAAE,UAAS,CAAC,EAAA;AAC1E,YAAA,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAC9B,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACpC,YAAA,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxB,SAAC,CAAC,CAAC;KACJ;AAED;;AAEG;AACH,IAAA,aAAa,YAAY,CAAC,IAAmB,EAAE,QAAgB,EAAA;QAC7D,IAAI,IAAI,GAAS,IAAI,CAAC;AACtB,QAAA,IAAG,EAAE,IAAI,YAAY,IAAI,CAAC,EAAC;YACzB,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SACtC;aACG;YACF,IAAI,GAAG,IAAI,CAAC;SACb;QAED,IAAI,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAChD,QAAA,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,QAAA,WAAW,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC7C,QAAA,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAE/C,QAAA,IAAI,EAAE,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE;AAC/B,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,UAAU,EAAE,KAAK;AAClB,SAAA,CAAC,CAAC;AAEH,QAAA,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;KAC/B;AAED,IAAA,aAAa,YAAY,CAAC,MAAc,EAAA;QACtC,OAAO,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;KACrC;AACF,CAAA;SAEe,MAAM,CAAU,KAAU,EAAE,MAAc,EAAE,SAA+B,EAAA;IACzF,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACvF,CAAC;AAEK,SAAU,OAAO,CAAC,OAAe,EAAA;AACrC,IAAA,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;AACA,SAAS,YAAY,CAAI,GAAW,EAAA;AAClC,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW,EAAA;AACvC,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,YAAY,CAAC,GAAiB,EAAA;AACrC,IAAA,IAAG,OAAO,GAAG,IAAI,QAAQ,EAAC;AACxB,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;KAC5D;AAED,SAAA,IAAG,OAAO,GAAG,IAAI,QAAQ,EAAC;QACxB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;KAC5C;AACH,CAAC;AAEM,MAAM,OAAO,GAAG;;AClJjB,MAAO,kBAAmB,SAAQ,WAAmB,CAAA;IAIzD,WAEW,CAAA,gBAAmC,EACnC,UAA6B,EAAA;AACpC,QAAA,KAAK,EAAE,CAAC;QAFD,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAmB;QACnC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;AAL/B,QAAA,IAAA,CAAA,aAAa,GAA2B,IAAI,sBAAsB,EAAE,CAAC;QAQvE,IAAY,CAAA,YAAA,GAA2C,WAAW,CAAA;AACjE,QAAA,IAAA,CAAA,SAAS,IAAc,CAAC,CAAC,KAAO,EAAA,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAA;QAWrF,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;AAMtB,QAAA,IAAA,CAAA,SAAS,GAAkB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QApBvC,IAAI,CAAC,cAAc,EAAE,CAAC;KAAE;IAKrC,cAAc,GAAA;AACZ,QAAA,MAAM,QAAQ,GAAY,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC/G,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;AAE7B,QAAA,IAAG,QAAQ,IAAI,WAAW,EAAC;AAAE,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,qBAAqB,CAAA;SAAE;AAC3E,QAAA,IAAG,QAAQ,IAAI,MAAM,EAAM;AAAE,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,iBAAiB,CAAA;SAAE;AACvE,QAAA,IAAG,QAAQ,IAAI,MAAM,EAAM;AAAE,YAAA,IAAI,CAAC,SAAS,GAAG,aAAa,CAAA;SAAE;KAC9D;AAGQ,IAAA,MAAM,QAAQ,GAAA;QACrB,KAAK,CAAC,QAAQ,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,eAAe,CAAA,EAAG,IAAI,CAAC,EAAE,CAAA,EAAG,KAAK,CAAC,YAAY,EAAE,CAAG,EAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA,CAAE,CAAA;KACjI;AAGQ,IAAA,UAAU,CAAC,KAAoB,EAAA;QACtC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,IAAI,EAAE;AACxC,YAAA,IAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAC;gBACnD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7C,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACtB;iBAAI;gBACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;aACtC;SACF;aAAI;AACH,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;SACpB;KACF;IACD,IAAa,KAAK,KAAmB,IAAG,IAAI,CAAC,MAAM,IAAI,IAAI,EAAC;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAAE;;QAAM,OAAO,IAAI,CAAC,EAAE;IACvH,IAAa,KAAK,CAAC,KAAa,EAAA,EAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;AAC7F,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;IAED,IAAI,IAAI,KAAM,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE;AAClC,IAAA,IAAI,IAAI,CAAC,CAAC,EAAA,GAAK;AAEf,IAAA,IAAI,KAAK,GAAA,EAAI,OAAO,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAoB,CAAA,EAAC;AAC9E,IAAA,IAAI,KAAI,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAC;AAAE,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AAAC,KAAC,EAAE;IAErD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IACD,cAAc,GAAA;AACZ,QAAA,IAAG,IAAI,CAAC,SAAS,EAAC;AAChB,YAAA,IAAG,IAAI,CAAC,YAAY,IAAI,MAAM,EAAE;AAAE,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;aAAE;AAChE,iBAAA,IAAG,IAAI,CAAC,YAAY,IAAI,MAAM,EAAE;AAAE,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAA;aAAE;iBAAM;AAAE,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAA;aAAE;SACjI;aAAI;AACH,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAA;SAC5B;KACF;+GAlEU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAFlB,oBAAoB,CAAC,WAAW,CAAC,kBAAkB,CAAC,iDCbjE,8mEAuC2F,EAAA,MAAA,EAAA,CAAA,skBAAA,EAAA,49DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,KAAA,EAAA,cAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,6BAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDxB9E,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yCAAyC,EAGxC,SAAA,EAAA,oBAAoB,CAAC,WAAW,CAAoB,kBAAA,CAAA,EAAA,QAAA,EAAA,8mEAAA,EAAA,MAAA,EAAA,CAAA,skBAAA,EAAA,49DAAA,CAAA,EAAA,CAAA;;0BAO5D,QAAQ;;0BAAI,IAAI;;0BAAI,QAAQ;kEAHtB,aAAa,EAAA,CAAA;sBAArB,KAAK;;AAmER,MAAM,aAAa,IAAc,CAAC,CAAS,KAAY;IACrD,IAAG,CAAC,CAAC,EAAC;AAAE,QAAA,OAAO,IAAI,CAAC;KAAE;IACtB,IAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,EAAC;AAC1B,QAAA,OAAO,CAAC,CAAC;KACV;SAAI;QACH,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;KAC/C;AACH,CAAC,CAAC;;AE7EI,MAAO,qBAAsB,SAAQ,WAAmB,CAAA;IAI5D,WAEW,CAAA,gBAAkC,EAClC,UAAsB,EAAA;AAC7B,QAAA,KAAK,EAAE,CAAC;QAFD,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAUjC,IAAU,CAAA,UAAA,GAAW,OAAO,CAAC;QA8D7B,IAAM,CAAA,MAAA,GAAc,KAAK,CAAC;QAC1B,IAAO,CAAA,OAAA,GAAa,KAAK,CAAC;QAC1B,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAzEb,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;KAAE;AAEtB,IAAA,MAAM,QAAQ,GAAA;QACrB,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAGD,aAAa,GAAA,EAAW,IAAI,CAAC,UAAU,GAAG,CAAK,EAAA,EAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAI,CAAA,EAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAE,CAAA,CAAC,EAAE;IAChH,cAAc,GAAA;QACZ,MAAM,QAAQ,GAAW,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3F,IAAG,QAAQ,IAAI,QAAQ,IAAM,CAAC,IAAI,CAAC,aAAa,EAAC;AAAE,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,wBAAwB,EAAE,CAAC;SAAI;aAC3G,IAAG,QAAQ,IAAI,SAAS,IAAK,CAAC,IAAI,CAAC,aAAa,EAAC;AAAE,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,yBAAyB,EAAE,CAAC;SAAG;aAC3G,IAAG,QAAQ,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,aAAa,EAAC;AAAE,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,0BAA0B,EAAE,CAAC;SAAE;QAC3G,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAEQ,UAAU,CAAC,KAAa,EAAA,EAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE;AAE1D,IAAA,IAAa,KAAK,GAAA;AAChB,QAAA,IAAI,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACnE,QAAA,IAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAC;AACtC,YAAA,OAAO,QAAQ,CAAC;SACjB;aAAI;YACH,OAAO,QAAQ,CAAC,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAA;SAClD;KACF;IACD,IAAa,KAAK,CAAC,KAAa,EAAA,EAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;;AAI7F,IAAA,SAAS,CAAC,KAAU,EAAA;AAClB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,GAAG,GAAK,KAAK,CAAC,GAAG,CAAC;QAEvB,IAAI,CAAC,MAAM,GAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,OAAO,GAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAEpC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC;QACjD,IAAI,CAAC,WAAW,GAAK,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;QAE/C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QAEhC,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;AAGD,IAAA,OAAO,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAE5B,IAAI,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC;QACnE,IAAI,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAE/C,QAAA,MAAM,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9D,QAAA,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAG,MAAM,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAC;AAC1B,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAChB;aAAK;SAEL;QACD,KAAK,CAAC,cAAc,EAAE,CAAC;KACxB;IAmBD,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,GAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrE,IAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC;AAC1B,YAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;SAC9B;AACD,aAAA,IAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAC;;SAEhD;aACD,IAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC;AAC/B,YAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;SAC5B;aACD,IAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC;AACrC,YAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;SAC9B;AACD,aAAA,IAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAC;YAC/C,OAAO;SACR;AACD,aAAA,IAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAC;AAC/C,YAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;SAC1B;aACD,IAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC;YACxC,OAAO;SACR;;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;KAC7B;IAGD,UAAU,GAAA;QACR,IAAI,CAAC,GAAG,GAAG,CAAC;AACZ,QAAA,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,EAAE,EAAC;YACnD,CAAC,IAAI,GAAG,CAAC;SACV;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;KAC1B;AAED,IAAA,MAAM,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;AAE5B,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;;AAEhF,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;QAChD,MAAM,YAAY,GAAW,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACnD,QAAA,IAAG,YAAY,IAAI,IAAI,CAAC,MAAM,EAAC;AAAE,YAAA,OAAO,KAAK,CAAC;SAAE;AAChD,QAAA,IAAG,YAAY,GAAG,eAAe,EAAC;AAChC,YAAA,OAAO,KAAK,CAAC;SACd;;AAGD,QAAA,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;AAC1B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;;AAGpG,QAAA,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpD,IAAG,QAAQ,EAAC;AACV,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC3E;AAED,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,MAAM,cAAc,GAAA;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;AAE5B,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;;AAEhF,QAAA,IAAI,CAAC,CAAC;QACN,IAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAC;AAC5B,YAAA,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;SAC3C;aAAI;AACH,YAAA,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;SAClD;AACD,QAAA,IAAG,CAAC,IAAI,GAAG,EAAC;YACV,IAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAC;gBAC1B,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;aACjC;iBACG;AACF,gBAAA,CAAC,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,KAAK,EAAE,CAAC;aACtB;SACF;QAED,MAAM,YAAY,GAAW,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACnD,QAAA,IAAG,YAAY,IAAI,IAAI,CAAC,MAAM,EAAC;AAAE,YAAA,OAAO,KAAK,CAAC;SAAE;;AAGhD,QAAA,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;AAC1B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;;AAGpG,QAAA,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpD,IAAG,QAAQ,EAAC;AACV,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC3E;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,MAAM,cAAc,GAAA;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAC5B,IAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,EAAC;AACxC,YAAA,IAAG,IAAI,CAAC,GAAG,IAAI,WAAW,EAAC;AACzB,gBAAA,IAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,EAAC;AAAE,oBAAA,OAAO,KAAK,CAAC;iBAAE;AAEtF,gBAAA,MAAM,YAAY,GAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACjE,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACnD,gBAAA,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;gBACvF,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;;AAG3C,gBAAA,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;AAC1B,gBAAA,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;AACjB,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAE5E,gBAAA,OAAO,KAAK,CAAC;aACd;AACD,iBAAA,IAAG,IAAI,CAAC,GAAG,IAAI,QAAQ,EAAC;gBACtB,MAAM,QAAQ,GAAW,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACzC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;;AAG3C,gBAAA,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;AAC1B,gBAAA,IAAI,MAAM,GAAW,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;AAC3C,gBAAA,IAAG,MAAM,IAAI,CAAC,CAAC,EAAC;oBAAE,MAAM,GAAG,CAAC,CAAC;iBAAE;AAE/B,gBAAA,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;gBACjB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEpD,gBAAA,OAAO,KAAK,CAAC;aACd;SACF;aAAI;YACH,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YACrC,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;AAE1B,YAAA,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAE1E,YAAA,OAAO,KAAK,CAAC;SACd;KACF;AAED,IAAA,MAAM,UAAU,GAAA;;;;;;;;;;;;KAaf;AAED,IAAA,aAAa,CAAC,CAAS,EAAA;AACrB,QAAA,IAAI,YAAY,GAAW,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;;AAE9D,QAAA,IAAG,YAAY,IAAI,eAAe,EAAC;YACjC,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;AACD,QAAA,OAAO,YAAY,CAAC;KACrB;+GApQU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAArB,qBAAqB,EAAA,QAAA,EAAA,+DAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EAFrB,oBAAoB,CAAC,WAAW,CAAC,qBAAqB,CAAC,iDCZpE,miCAuBM,EAAA,MAAA,EAAA,CAAA,w/BAAA,EAAA,49DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDTO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+DAA+D,EAG9D,SAAA,EAAA,oBAAoB,CAAC,WAAW,CAAuB,qBAAA,CAAA,EAAA,QAAA,EAAA,miCAAA,EAAA,MAAA,EAAA,CAAA,w/BAAA,EAAA,49DAAA,CAAA,EAAA,CAAA;;0BAO/D,QAAQ;;0BAAI,IAAI;;0BAAI,QAAQ;kEAHtB,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAwCN,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAmBnC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;AA6MnC,MAAM,eAAe,GAAG,oBAAoB,CAAA;AAE5C,MAAM,gBAAgB,GAAY,GAAG,CAAC;AACtC,MAAM,iBAAiB,GAAW,GAAG,CAAC;AAEtC,MAAM,QAAQ,IAAc,CAAC,CAAS,KAAY;AAChD,IAAA,OAAO,CAAC,CAAC,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAC;AACjC,SAAA,OAAO,CAAI,gBAAgB,EAAG,EAAE,CAAC,CAAA;AACpC,CAAC,CAAC,CAAC;AAEX,MAAM,UAAU,GAAG,CAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,mBAAmB,GAAG;AAC1B,IAAA,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW;CAChG,CAAC;AACF,MAAM,gBAAgB,GAAG;AACvB,IAAA,WAAW,EAAE,QAAQ;CACtB;;MEhSY,oBAAoB,GAAG,IAAI,cAAc,CAAc,aAAa,EAAE;MAUtE,mBAAmB,CAAA;IAC9B,OAAO,OAAO,CAAC,MAAmB,EAAA;QAChC,OAAO;AACL,YAAA,QAAQ,EAAE,mBAAmB;AAC7B,YAAA,SAAS,EAAE;gBACT,kBAAkB,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,EAAE;AACxE,aAAA;SACF,CAAA;KACF;+GARU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAH5B,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;AAGH,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAH5B,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGH,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAO,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACF,iBAAA,CAAA;;;MCVY,qBAAqB,CAAA;AAC9B,IAAA,OAAO,MAAM,CAAC,cAA4B,EAAE,EAAe,EAAA;QACvD,MAAM,GAAG,GAAc,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEpC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAG,EAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;AAErF,QAAA,OAAO,GAAG,CAAC;KACd;AACJ,CAAA;MAEY,WAAW,CAAA;AAIpB,IAAA,WAAA,CACI,KAAwB,GAAA,EAAE,EACnB,MAAA,GAAiB,EAAE,EACnB,IAAiB,GAAA,CAAC,EAClB,eAAA,GAAiC,IAAI,EACrC,YAA2B,IAAI,EAAA;QAH/B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAa;QACnB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAc;QAClB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAsB;QACrC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAsB;QAR1C,IAAK,CAAA,KAAA,GAA6B,CAAC,CAAC;QAC7B,IAAM,CAAA,MAAA,GAAyB,IAAI,CAAC;AASvC,QAAA,IAAG,KAAK,IAAI,IAAI,EAAC;AACb,YAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;SACvB;aACI;AACD,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACtB;KACJ;AACJ;;MChBY,WAAW,CAAA;AAYpB,IAAA,IAAI,gBAAgB,GAAA;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;KACzC;AACD,IAAA,IAAI,uBAAuB,GAAA;QACvB,OAAO,IAAI,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;KACpC;IAED,WAAY,CAAA,UAAmB,EAAE,eAAuB,EAAE,MAAc,EAAE,kBAAgC,EAAE,iBAAgC,EAAA;QAlB5I,IAAU,CAAA,UAAA,GAAiB,KAAK,CAAC;QACjC,IAAe,CAAA,eAAA,GAAY,OAAO,CAAC;QACnC,IAAM,CAAA,MAAA,GAA2B,IAAI,CAAC;QACtC,IAAkB,CAAA,kBAAA,GAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;AAChF,QAAA,IAAA,CAAA,iBAAiB,GAAkB;AAC/B,YAAA,EAAE,KAAK,EAAE,EAAE,EAAI,KAAK,EAAE,IAAI,EAAK;AAC/B,YAAA,EAAE,KAAK,EAAE,EAAE,EAAI,KAAK,EAAE,IAAI,EAAK;AAC/B,YAAA,EAAE,KAAK,EAAE,GAAG,EAAG,KAAK,EAAE,KAAK,EAAI;AAC/B,YAAA,EAAE,KAAK,EAAE,GAAG,EAAG,KAAK,EAAE,KAAK,EAAI;AAC/B,YAAA,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;SACrC,CAAC;AASE,QAAA,IAAI,CAAC,UAAU,GAAW,UAAU,CAAC;AACrC,QAAA,IAAI,CAAC,eAAe,GAAM,eAAe,CAAC;AAC1C,QAAA,IAAI,CAAC,MAAM,GAAe,MAAM,CAAC;;AAEjC,QAAA,IAAG,kBAAkB;AACrB,YAAA,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;AAC7C,QAAA,IAAG,iBAAiB;AACpB,YAAA,IAAI,CAAC,iBAAiB,GAAI,iBAAiB,CAAA;KAC9C;AACJ;;MCvCY,kBAAkB,CAAA;AAC3B,IAAA,WAAA,CAAkD,MAAmB,EAAA;QAAnB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAa;AACjE,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;KACnC;AAGD,IAAA,IAAI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AARQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,kBACP,oBAAoB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAD/B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFf,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;0BAEgB,MAAM;2BAAC,oBAAoB,CAAA;;;MCG/B,cAAc,CAAA;AACzB,IAAA,WAAA,CACU,eAAgC,EAChC,eAAgC,EAChC,eAAsB,EACtB,WAA+B,EAAA;QAH/B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAO;QACtB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;KACtC;AAEI,IAAA,MAAM,YAAY,CAAC,OAAe,EAAE,IAAI,GAAG,cAAc,EAAA;QAC9D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAC9C,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,WAAW,EAAE,KAAK;AACnB,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;KACvB;AAEM,IAAA,MAAM,mBAAmB,CAAC,OAAA,GAAkB,oBAAoB,EAAA;QACrE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAC9C,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,WAAW,EAAE,KAAK;AACnB,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;AACtB,QAAA,OAAO,KAAK,CAAC,YAAY,EAAE,CAAC;KAC7B;AAEa,IAAA,SAAA,IAAA,CAAA,YAAY,GAAgB;AACxC,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,QAAQ;AACf,KAHyB,CAGzB,EAAA;AACa,IAAA,SAAA,IAAA,CAAA,aAAa,GAAiB;AAC1C,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,IAAI,EAAE,SAAS;AAChB,KAH0B,CAG1B,EAAA;AACM,IAAA,SAAA,IAAA,CAAA,mBAAmB,GAAkB,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,EAAA;IAEpE,MAAM,YAAY,CAAC,MAAc,EAAE,OAAe,EAAE,OAAA,GAAyB,cAAc,CAAC,mBAAmB,EAAA;QACpH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAC9C,YAAA,MAAM,EAAG,MAAM;AACf,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,OAAO;AACjB,SAAA,CAAC,CAAC;AACH,QAAA,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;AACtB,QAAA,OAAO,KAAK,CAAC,YAAY,EAAE,CAAC;KAC7B;AAEM,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,eAAe,GAAG,KAAK,GAAG,KAAK,CAAC,CAAA;KAC5F;AAEM,IAAA,KAAK,CAAC,cAA8B,EAAE,KAAA,GAAgB,CAAC,EAAA;AAC5D,QAAA,IAAG;YACD,IAAI,KAAK,GAAG,cAAc,CAAC;AAC3B,YAAA,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAC;AAC5B,gBAAA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;aACtB;YACD,IAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAC;AACnC,gBAAA,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;aAClD;iBACG;AACF,gBAAA,OAAO,CAAC,CAAC;aACV;SACF;AAAA,QAAA,MAAK;AACJ,YAAA,OAAO,IAAI,CAAC;SACb;KACF;+GAxEU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAHb,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAGP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCFY,qBAAqB,CAAA;AAEhC,IAAA,WAAA,CACU,WAA+B,EAAA;QAA/B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;;QAUlC,IAAO,CAAA,OAAA,GAAW,EAAE,CAAC;QAR1B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC;QAEtD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC;QAAA,CAAC;AAEnD,QAAA,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,eAAe,CAAA,yCAAA,EAA4C,IAAI,CAAC,MAAM,EAAE,EAAE,0CAA0C,CAAC,CAAA;KAChM;IAKD,IAAW,MAAM,KAAY,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE;IACnD,IAAW,MAAM,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtB;IAID,IAAW,UAAU,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE;+GAtBzC,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCMY,cAAc,CAAA;AAEzB,IAAA,WAAA,CACU,IAAiB,EACjB,qBAA4C,EAC5C,cAA8B,EAAA;QAF9B,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;QACjB,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QAC5C,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAGhC,IAAoB,CAAA,oBAAA,GAAe,EAAE,CAAC;KAFzC;AAIE,IAAA,WAAW,CAAC,IAAY,EAAA;AAC7B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAA;QACpE,OAAO,QAAQ,GAAG,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;KACzC;AAEM,IAAA,aAAa,CAAC,IAAY,EAAE,MAAY,EAAE,OAAgB,KAAK,EAAA;AACpE,QAAA,IAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,EAAC;AACtD,YAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5C,YAAA,OAAO,QAAQ,CAAC;SACjB;AACD,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;KAC5D;AAEO,IAAA,cAAc,CAAC,QAAkB,EAAE,MAAY,EAAE,OAAgB,KAAK,EAAA;AAC5E,QAAA,IAAI,OAAO,GAAoB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAEzE,QAAA,MAAM,cAAc,GAAG,IAAI,eAAe,CAAM,IAAI,CAAC,CAAC;AACtD,QAAA,QAAQ,CAAC,cAAc,GAAG,cAAc,CAAC;QACzC,OAAO,CAAC,SAAS,CAAC;AAChB,YAAA,IAAI,EAAE,CAAC,KAAK,KAAI;gBACd,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,gBAAgB,EAAE;oBACjD,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;AAC/C,oBAAA,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;iBACxC;qBACD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,QAAQ,EAAE;AACzC,oBAAA,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnC,oBAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;oBACjF,cAAc,CAAC,QAAQ,EAAE,CAAC;iBAC3B;AACD,gBAAA,IAAG,KAAK,CAAC,MAAM,IAAI,GAAG,EAAC;AACrB,oBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,uCAAuC,CAAC,CAAA;AACzE,oBAAA,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC5B,cAAc,CAAC,QAAQ,EAAE,CAAC;iBAC3B;aACF;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;aACjF;AACF,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,OAAO,CAAC;KAChB;IAEM,OAAO,gBAAgB,CAAC,CAAC,EAAA;AAC9B,QAAA,IAAG;YAED,IAAI,WAAW,GAAY,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YAEhE,IAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,EAAC;AACpC,gBAAA,OAAO,WAAW,CAAC;aACpB;iBAAI;gBACH,IAAI,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjC,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACZ,gBAAA,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;aACvC;SACF;AAAA,QAAA,MAAK;AACJ,YAAA,OAAO,CAAC,CAAC;SACV;KACF;;AAEM,IAAA,OAAO,CAAC,OAAe,EAAE,MAAY,EAAE,OAAgB,KAAK,EAAA;AACjE,QAAA,IAAI,GAAW,CAAC;AAChB,QAAA,IAAG,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,EAAC;AACnB,YAAA,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAC5C;aAAI;YACH,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAA,EAAG,OAAO,CAAA,CAAE,CAAC;SACxD;AACD,QAAA,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAEzC,IAAG,CAAC,IAAI,EAAC;AACP,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;AACxB,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,YAAY,EAAE,MAAM;AACpB,gBAAA,MAAM,EAAE,MAAM;AACf,aAAA,CAAC,CAAC;SACJ;aAAI;YACH,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE;AACjC,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,YAAY,EAAE,MAAM;AACrB,aAAA,CAAC,CAAC;SACJ;KACF;+GA9FU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;MAkGY,QAAQ,CAAA;AAGnB,IAAA,WAAA,CAAmB,IAAY,EAAA;QAAZ,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAD/B,IAAQ,CAAA,QAAA,GAAiB,OAAO,CAAC;KACC;AACnC,CAAA;AAED,SAAS,YAAY,CAAC,IAAwB,EAAE,OAAO,EAAA;IACrD,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAEvE,IAAI,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAChD,IAAA,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,IAAA,WAAW,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC7C,IAAA,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;AAE/E,IAAA,IAAI,EAAE,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE;AAC7B,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA,CAAC,CAAC;AAEH,IAAA,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AAChC;;MCxHa,gBAAgB,CAAA;AAa3B,IAAA,WAAA,GAAA;;QAVS,IAAI,CAAA,IAAA,GAAe,kCAAkC,CAAC;AAC/D;;;;AAIG;QACM,IAAI,CAAA,IAAA,GAAkB,CAAC,CAAC;;QAExB,IAAO,CAAA,OAAA,GAAa,IAAI,CAAC;KAEjB;AAEjB,IAAA,QAAQ,MAAK;+GAfF,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,+HCX7B,y8BA2BC,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhBY,gBAAgB,EALhB,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,4HAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAKzB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,WACP,CAAE,YAAY,EAAE,WAAW,CAAE,YAC5B,SAAS,EAAA,QAAA,EAAA,y8BAAA,EAAA,CAAA;wDAOV,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAMG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEG,OAAO,EAAA,CAAA;sBAAf,KAAK;;;AEPF,MAAO,kBAAmB,SAAQ,WAA4B,CAAA;IAIlE,WAEW,CAAA,gBAAkC,EAClC,UAAsB,EACvB,YAA0B,EAC1B,qBAA4C,EAC7C,cAA8B,EAAA;AACnC,QAAA,KAAK,EAAE,CAAA;QALA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACvB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QAC7C,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAR9B,QAAA,IAAA,CAAA,aAAa,GAA2B,IAAI,sBAAsB,EAAE,CAAA;QAgD7E,IAAQ,CAAA,QAAA,GAAU,EAAE,CAAC;QA2BrB,IAAU,CAAA,UAAA,GAAa,EAAE,CAAC;KAlEb;AAKJ,IAAA,MAAM,QAAQ,GAAA;QACrB,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;AAChD,QAAA,IAAI,CAAC,IAAI,GAAG,CAAA,EAAG,IAAI,CAAC,eAAe,CAAA,EAAG,IAAI,CAAC,EAAE,CAAA,EAAG,KAAK,CAAC,YAAY,EAAE,CAAG,EAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA,CAAE,CAAA;KAC7H;IAEQ,UAAU,CAAC,KAAsB,EAAA,EAAU,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;AAE3E,IAAA,IAAa,KAAK,GAAA;AAChB,QAAA,IAAG,CAAC,IAAI,CAAC,MAAM,EAAC;AAAE,YAAA,OAAO,EAAE,CAAC;SAAE;QAE9B,IAAG,QAAO,IAAI,CAAC,MAAM,CAAC,IAAI,QAAQ,EAAE;AAClC,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAG,EAAA,CAAC,uBAAuB,CAAC;SAC5F;aAAM;YACL,IAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAC;AAAE,gBAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,wBAAwB,CAAA;aAAE;iBACxD;gBAAE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;aAAE;SACzD;KAEF;IACD,IAAa,KAAK,CAAC,KAAsB,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACnC;AACD,IAAA,QAAQ,CAAC,KAAsB,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,IAAG,QAAO,IAAI,CAAC,MAAM,CAAC,IAAI,QAAQ,EAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACxC;aAAI;AACH,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;SACpB;KACF;IAID,MAAM,GAAA;QACJ,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,IAAG,GAAG,EAAC;AAAE,YAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;SAAE,EAAE,CAAC,CAAC;KAClG;AACD,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAC1C;IAED,UAAU,GAAA;QACR,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,QAAO,IAAI,CAAC,MAAM,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC9G;AACD,IAAA,gBAAgB,CAAC,CAAC,EAAA;AAChB,QAAA,IAAG;YACD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;SAClE;QAAA,MAAK,GAAE;KACT;AAED,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;KACjC;AACD,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,QAAO,IAAI,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAA;KACvC;AAED,IAAA,QAAQ,CAAC,CAAC,EAAY,EAAA,OAAO,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE;AAGlE,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5B;AACD,IAAA,aAAa,CAAC,IAAY,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;KAC1D;AACD,IAAA,SAAS,CAAC,IAAY,EAAA;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC5C;+GAtFU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAFlB,oBAAoB,CAAC,WAAW,CAAC,kBAAkB,CAAC,iDCbjE,44KAmGA,EAAA,MAAA,EAAA,CAAA,gCAAA,EAAA,49DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDpFa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAGX,SAAA,EAAA,oBAAoB,CAAC,WAAW,CAAoB,kBAAA,CAAA,EAAA,QAAA,EAAA,44KAAA,EAAA,MAAA,EAAA,CAAA,gCAAA,EAAA,49DAAA,CAAA,EAAA,CAAA;;0BAO5D,QAAQ;;0BAAI,IAAI;;0BAAI,QAAQ;qJAHtB,aAAa,EAAA,CAAA;sBAArB,KAAK;;AAuFK,MAAA,UAAU,GAAa;IAClC,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;;;MEpGK,uBAAuB,CAAA;AAUlC,IAAA,WAAA,CACS,cAA8B,EAC7B,UAAsB,EACtB,qBAA4C,EAAA;QAF7C,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC7B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QAX7C,IAAM,CAAA,MAAA,GAAW,EAAE,CAAC;QAC7B,IAAK,CAAA,KAAA,GAAwB,KAAK,EAAU,CAAC;QACpC,IAAI,CAAA,IAAA,GAAW,OAAO,CAAC;QAGvB,IAAI,CAAA,IAAA,GAAY,KAAK,CAAC;AACtB,QAAA,IAAA,CAAA,aAAa,GAA2B,IAAI,sBAAsB,EAAE,CAAC;QAkB9E,IAAI,CAAA,IAAA,GAAY,EAAE,CAAC;AAQnB,QAAA,IAAA,CAAA,QAAQ,GAAqB,QAAQ,CAAC,MAAK;YACzC,IAAG,QAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,QAAQ,EAAC;gBAClC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aAChC;iBAAI;AACH,gBAAA,OAAO,EAAE,CAAC;aACX;AACH,SAAC,CAAC,CAAC;QAkBH,IAAU,CAAA,UAAA,GAAa,EAAE,CAAC;KA5CrB;AAEL,IAAA,gBAAgB,CAAC,EAAO,EAAA;;KAEvB;AACD,IAAA,iBAAiB,CAAC,EAAO,EAAA;;KAExB;AACD,IAAA,gBAAgB,CAAE,UAAmB,EAAA;;KAEpC;IAKD,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;QAChD,IAAI,CAAC,IAAI,GAAI,CAAA,EAAG,KAAK,CAAC,YAAY,EAAE,CAAG,EAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAA;KAC7F;AAUD,IAAA,UAAU,CAAC,KAAa,EAAU,EAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AAE1D,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KAClE;AAED,IAAA,QAAQ,CAAC,CAAC,EAAA;AACR,QAAA,OAAO,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;KAC3C;AAED,IAAA,gBAAgB,CAAC,CAAC,EAAA;AAChB,QAAA,IAAG;YACD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;SAClE;QAAA,MAAK,GAAE;KACT;AAGD,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5B;AACD,IAAA,aAAa,CAAC,IAAY,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;KAC1D;AACD,IAAA,SAAS,CAAC,IAAY,EAAA;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC5C;+GAnEU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAK,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAvB,uBAAuB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAFvB,oBAAoB,CAAC,WAAW,CAAC,uBAAuB,CAAC,0BCbtE,0vGAuDC,EAAA,MAAA,EAAA,CAAA,gCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDxCY,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAGhB,SAAA,EAAA,oBAAoB,CAAC,WAAW,CAAyB,uBAAA,CAAA,EAAA,QAAA,EAAA,0vGAAA,EAAA,MAAA,EAAA,CAAA,gCAAA,CAAA,EAAA,CAAA;0IAI3D,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;;;IEvBI,UAeX;AAfD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAoB,CAAA;AACpB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAmB,CAAA;AACnB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAmB,CAAA;AACnB,IAAA,SAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAmB,CAAA;AACnB,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAgB,CAAA;AAChB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAoB,CAAA;AACtB,CAAC,EAfW,SAAS,KAAT,SAAS,GAepB,EAAA,CAAA,CAAA;;MCTY,UAAU,CAAA;AAOrB,IAAA,WAAA,CACS,MAAc,EACd,KAAc,EACd,WAAiC,EACjC,IAAiC,EACjC,aAA2C,GAAA,IAAI,EAC/C,QAAA,GAAyB,KAAK,EAAA;QAL9B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAS;QACd,IAAW,CAAA,WAAA,GAAX,WAAW,CAAsB;QACjC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAA6B;QACjC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkC;QAC/C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAsB;QAZvC,IAAK,CAAA,KAAA,GAAgB,2CAA2C,CAAA;QAEhE,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;QAC5B,IAAM,CAAA,MAAA,GAAgB,KAAK,CAAC;QAC5B,IAAM,CAAA,MAAA,GAA2B,IAAI,CAAC;QAUpC,IAAG,aAAa,EAAC;AAAE,YAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;SAAE;aACnD;YACF,IAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAC;AAAE,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,sBAAsB,EAAE,CAAA;aAAE;AAC5F,iBAAA,IAAG,IAAI,IAAI,SAAS,CAAC,IAAI,EAAK;AAAE,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,sBAAsB,EAAE,CAAA;aAAM;AACvF,iBAAA,IAAG,IAAI,IAAI,SAAS,CAAC,MAAM,EAAG;AAAE,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,wBAAwB,EAAE,CAAA;aAAI;AACvF,iBAAA,IAAG,IAAI,IAAI,SAAS,CAAC,OAAO,EAAE;AAAE,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,yBAAyB,EAAE,CAAA;aAAG;AACvF,iBAAA,IAAG,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAC;AAAE,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,0BAA0B,EAAE,CAAA;aAAE;AACvF,iBAAA,IAAG,IAAI,IAAI,SAAS,CAAC,MAAM,EAAG;AAAE,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,wBAAwB,EAAE,CAAA;aAAI;AACvF,iBAAA,IAAG,IAAI,IAAI,SAAS,CAAC,MAAM,EAAG;AAAE,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,wBAAwB,EAAE,CAAA;aAAI;AACvF,iBAAA,IAAG,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAC;AAC5B,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,wBAAwB,EAAE,CAAC;AACpD,gBAAA,IAAI,CAAC,KAAK,GAAG,eAAe,CAAA;aAC7B;AACD,iBAAA,IAAG,IAAI,IAAI,SAAS,CAAC,IAAI,EAAK;AAC5B,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,sBAAsB,EAAE,CAAC;gBAClD,IAAG,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,EAAC;AAAE,oBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;iBAAE;aACxE;SACF;KACF;AACuB,IAAA,SAAA,IAAA,CAAA,SAAS,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,EAAA;;;MCnBrE,WAAW,CAAA;IAK/B,WACY,CAAA,IAA0B,EAC1B,EAA2B,EAC3B,cAA8B,EAC9B,aAA6B,EAC7B,qBAA4C,EAAA;QAJ5C,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAsB;QAC1B,IAAE,CAAA,EAAA,GAAF,EAAE,CAAyB;QAC3B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAgB;QAC7B,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;KACnD;AAEL,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;KACtD;AAED;;;AAGE;AACF,IAAA,IAAI,CAAC,OAAqB,EAAA;AACxB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAiB,IAAI,CAAC,SAAS,GAAG,CAAA,KAAA,CAAO,EAAE,OAAO,CAAC,CAAC;KAC1E;AAED;;AAEE;AACF,IAAA,GAAG,CAAC,EAAU,EAAA;AACZ,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,IAAI,CAAC,SAAS,GAAE,CAAA,KAAA,EAAQ,EAAE,CAAA,CAAE,CAAC,CAAC;KACvD;;IAGD,IAAI,CAAa,GAAY,EAAE,IAA2C,EAAA;QACxE,IAAG,IAAI,EAAC;AAAE,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SAAE;QAElC,IAAI,MAAM,GAAG,GAAG,CAAC;AAEjB,QAAA,IAAG,GAAG,YAAY,SAAS,EAAC;AAC1B,YAAA,IAAG,GAAG,CAAC,OAAO,EAAC;AACb,gBAAA,MAAM,CAAC,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;AACnC,gBAAA,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBAC5B,CAAC,CAAC,QAAQ,EAAE,CAAC;AACb,gBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAA;AACxD,gBAAA,OAAO,CAAC,CAAC;aACV;AAED,YAAA,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC;SACpB;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAElC,IAAG,GAAG,YAAY,SAAS,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,EAAC;AACvD,YAAA,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAA;SACnE;aACD,IAAG,IAAI,EAAC;YACN,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SACnC;AAED,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAI,IAAI,CAAC,SAAS,GAAG,CAAA,KAAA,CAAO,EAAE,QAAQ,CAAC,CAAC;KAC9D;;AAGD,IAAA,MAAM,CAAC,EAAU,EAAA;AACf,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAO,IAAI,CAAC,SAAS,GAAG,CAAA,QAAA,CAAU,GAAC,EAAE,CAAC,CAAC;KAC/D;;AAGM,IAAA,IAAI,CAAC,QAAsB,EAAA;QAChC,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;KAC5C;AAED,IAAA,IAAI,cAAc,GAAuB,EAAA,OAAO,EAAE,CAAC,EAAE;IACrD,IAAI,kBAAkB,KAAmB,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE;AAEtE,IAAA,IAAI,SAAS,GAAA;QACX,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjC,QAAA,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;AACpE,QAAA,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;AACpB,QAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AACxB,QAAA,OAAO,KAAK,CAAA;KACb;AAED,IAAA,IAAI,gBAAgB,GAAA;QAClB,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjC,QAAA,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;AAChF,QAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AACxB,QAAA,KAAK,CAAC,MAAM,GAAO,IAAI,CAAC;AACxB,QAAA,OAAO,KAAK,CAAC;KACd;IAED,IAAY,WAAW,GAAc,EAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;IAE7G,KAAK,CAAC,QAAkB,EAAE,IAA0C,EAAA;AAC5E,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAEpB,QAAA,MAAM,OAAO,GAAG,IAAI,eAAe,CAAM,IAAI,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAE,CAAA,KAAA,CAAO,EAAE,QAAQ,EAAE;AAChD,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC,SAAS,CAAC;AACX,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;gBACZ,IAAG,GAAG,CAAC,IAAI,IAAI,aAAa,CAAC,cAAc,EAAC;oBAC1C,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,KAAM,CAAC;AACpC,oBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,oBAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;iBACrB;qBACD,IAAG,GAAG,CAAC,IAAI,IAAI,aAAa,CAAC,QAAQ,EAAC;AACpC,oBAAA,IAAI,CAAC,OAAO,GAAK,KAAK,CAAC;AACvB,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;oBACvB,IAAI,CAAC,OAAO,EAAE,CAAC;oBAEf,MAAM,EAAE,GAAW,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;;AAEnC,oBAAA,IAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAC;AAAE,wBAAA,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;qBAAE;iBACzF;aACF;AACD,YAAA,KAAK,EAAC,CAAC,GAAG,KAAI;AACZ,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnB,gBAAA,IAAI,CAAC,OAAO,GAAK,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,OAAO,CAAC,QAAQ,EAAE,CAAC;aACpB;YACD,QAAQ,EAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC;gBAC1C,OAAO,CAAC,QAAQ,EAAE,CAAC;aACpB;AACF,SAAA,CAAC,CAAC;AAEH,QAAA,OAAO,OAAO,CAAC;KAChB;AAEO,IAAA,aAAa,CAAC,EAAU,EAAE,YAAoB,EAAE,cAA8B,EAAA;QACpF,IAAG,CAAC,YAAY,EAAC;YAAE,OAAO;SAAE;AAC5B,QAAA,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAM,GAAA,EAAA,IAAI,CAAE,CAAA,CAAC,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAA;KAChF;IAEO,WAAW,CAAC,MAAW,EAAE,QAAkB,EAAA;QACjD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACtC,YAAA,IAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,EAAC;AACnF,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAG,SAAS,IAAI,QAAO,SAAS,CAAC,IAAI,QAAQ,EAAC;oBAC5C,IAAI,QAAQ,GAAI,SAAmB,CAAA;AACnC,oBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAG;AACnB,wBAAA,IAAG,CAAC,YAAY,IAAI,EAAC;4BACnB,MAAM,IAAI,GAAS,CAAC,CAAC;AACrB,4BAAA,MAAM,IAAI,GAAG,CAAS,KAAA,EAAA,SAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;4BACrE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;yBAClC;6BAAM;4BACL,IAAI,IAAI,GAAe,CAAC,CAAC;AACzB,4BAAA,MAAM,YAAY,GAAS,IAAI,CAAC,IAAI,CAAC;AACrC,4BAAA,MAAM,IAAI,GAAG,CAAS,KAAA,EAAA,SAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;4BACrE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;yBACxD;AACH,qBAAC,CAAC,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAE,EAAE,CAAC;iBACrB;aACF;AACH,SAAC,CAAC,CAAC;AACH,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;KACjD;+GAlKmB,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAhB,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAW,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAX,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFnB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEE,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;MAsKY,WAAW,CAAA;AAAxB,IAAA,WAAA,GAAA;QACE,IAAQ,CAAA,QAAA,GAAQ,EAAE,CAAC;KAEpB;AAAA;;AC3KK,MAAgB,gBAA0B,SAAQ,WAAc,CAAA;IAEpE,WACqB,CAAA,IAA0B,EAC1B,EAA2B,EAC3B,cAA8B,EAC9B,aAA6B,EAC7B,qBAA4C,EAAA;QAE/D,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,cAAc,EAAE,aAAa,EAAE,qBAAqB,CAAC,CAAC;QANnD,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAsB;QAC1B,IAAE,CAAA,EAAA,GAAF,EAAE,CAAyB;QAC3B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAgB;QAC7B,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;KAGhE;AAED;;AAEG;AACH,IAAA,MAAM,CAAC,EAAU,EAAA;AACf,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAU,IAAI,CAAC,SAAS,GAAG,WAAW,EAAE,CAAA,CAAE,EAAE,EAAE,CAAC,CAAC;KACtE;AAED;;;AAGG;AACH,IAAA,SAAS,CAAkB,OAAqB,EAAA;AAC9C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAI,IAAI,CAAC,SAAS,GAAG,CAAA,UAAA,CAAY,EAAE,OAAO,CAAC,CAAC;KAClE;;AAGD,IAAA,IAAI,YAAY,GAAA;QACd,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACpC,QAAA,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACxE,KAAK,CAAC,aAAa,GAAG,IAAI,sBAAsB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACvE,QAAA,OAAO,KAAK,CAAC;KACd;+GAjCmB,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAArB,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAW,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFxB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEE,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAHrC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCNY,wBAAwB,CAAA;AAWnC,IAAA,WAAA;;AAES,IAAA,SAAA,GAA8C,IAAI;;AAElD,IAAA,SAAA,GAA8C,MAAM;;AAGpD,IAAA,SAAA,GAAuB,IAAI;;AAE3B,IAAA,WAAA,GAAuB,IAAI;AAElC;;;;;AAKG;IACI,QAA4E;;AAE5E,IAAA,QAAA,GAAqB,KAAK;;AAEjC,IAAA,QAAA,GASY,IAAI;;AAET,IAAA,kBAAA,GAAqD,IAAI,EAAA;QA9BzD,IAAS,CAAA,SAAA,GAAT,SAAS,CAAyC;QAElD,IAAS,CAAA,SAAA,GAAT,SAAS,CAA2C;QAGpD,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAE3B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAgB;QAQ3B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAoE;QAE5E,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;QAa1B,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAuC;QA1ClE,IAAW,CAAA,WAAA,GAAgB,sBAAsB,CAAA;QACjD,IAAgB,CAAA,gBAAA,GAAW,0BAA0B,CAAA;QAO9C,IAAQ,CAAA,QAAA,GAAuB,IAAI,CAAC;AAoCzC,QAAA,IAAI,CAAC,SAAS,GAAK,SAAS,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,GAAM,QAAQ,CAAC;AAE5B,QAAA,IAAG,QAAQ,IAAI,IAAI,EAAC;YAClB,MAAM,CAAC,GAAG,QAAQ,CAAC;AACnB,YAAA,IAAG,CAAC,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,SAAS,EAAC;AAAE,gBAAA,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;aAAE;YAC1E,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;YACrF,IAAI,CAAC,QAAwB,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;SAClD;QAED,IAAG,QAAQ,EAAC;AACV,YAAA,IAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAC;AACzB,gBAAA,IAAI,CAAC,aAAa,GAAM,QAAQ,CAAC;aAClC;iBACD,IAAG,QAAQ,YAAY,WAAW,IAAI,QAAQ,YAAY,gBAAgB,EAAC;AACzE,gBAAA,IAAI,CAAC,eAAe,GAAI,QAAQ,CAAC;aAClC;iBAAM;AACL,gBAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;aAClC;SACF;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;KAC/C;AACF,CAAA;MAEY,qBAAqB,CAAA;AAShC,IAAA,WAAA,CAAY,aAAuC,EAAA;QARnD,IAAa,CAAA,aAAA,GAAc,EAAE,CAAC;;QAIvB,IAAS,CAAA,SAAA,GAAiC,IAAI,CAAC;;QAE/C,IAAS,CAAA,SAAA,GAAiC,IAAI,CAAC;QAmB9C,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAyBnC,IAAK,CAAA,KAAA,GAAU,EAAE,CAAC;AAzChB,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACnC,QAAA,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAA;AAChD,QAAA,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAA;KACjD;AAEM,IAAA,QAAQ,CAAC,KAAU,EAAA;AACxB,QAAA,IAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,EAAC;AAAE,YAAA,OAAO,EAAE,CAAC;SAAE;QACnE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;QAC9D,IAAG,CAAC,IAAI,EAAC;AAAE,YAAA,OAAO,EAAE,CAAE;SAAC;AACvB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAC7B;AAED,IAAA,YAAY,CAAC,SAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACpC;IAID,MAAM,OAAO,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,IAAG,EAAG,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;AAEjF,QAAA,IAAG,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAC;AACtK,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,IAAG,EAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SAC/E;AAED,QAAA,IAAG;AACD,YAAA,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,IAAG,EAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SAC/E;gBACM;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,IAAG,EAAG,SAAS,CAAC,iBAAiB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;SACnF;KACF;IAEO,yBAAyB,GAAA;QAC/B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,IAAM,EAAA,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;KACvF;AAGD,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,IAAG,IAAI,CAAC,SAAS,EAAC;YAChB,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,OAAO;SACR;;AAGD,QAAA,IAAG,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,EAAC;YAC1F,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;YAC9C,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,OAAO;SACR;;AAGD,QAAA,IAAI,QAAQ,GAAuB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC/D,QAAA,IAAG;YACD,IAAI,QAAQ,GAAU,EAAE,CAAC;AAEzB,YAAA,IAAG,IAAI,CAAC,aAAa,CAAC,eAAe,EAAC;AACpC,gBAAA,QAAQ,GAAG,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAA;aAC9F;iBAAI;AACH,gBAAA,QAAQ,GAAG,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC;aACjF;AAED,YAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;YACtB,IAAI,CAAC,yBAAyB,EAAE,CAAC;SAClC;gBAAO;YAAE,OAAO;SAAE;KACpB;AACF,CAAA;AAEK,SAAU,gBAAgB,CAAC,aAAuC,EAAA;AACtE,IAAA,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC;IAC3C,IAAI,SAAS,GAAyB,IAAI,CAAC;AAC3C,IAAA,IAAG,QAAO,UAAU,CAAC,IAAI,QAAQ,EAAC;QAChC,IAAI,GAAG,GAAyB,UAAU,CAAC;AAC3C,QAAA,SAAS,IAAI,CAAC,GAAQ,KAAY,EAAA,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;KACvD;SAAI;QACH,IAAI,GAAG,GAAyB,UAAU,CAAC;AAC3C,QAAA,SAAS,IAAI,CAAC,GAAQ,KAAY,EAAA,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;KACvD;AACD,IAAA,OAAO,SAAS,CAAC;AACnB,CAAC;AAEK,SAAU,gBAAgB,CAAC,aAAuC,EAAA;AACtE,IAAA,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC;IAC3C,IAAI,SAAS,GAA4B,IAAI,CAAC;AAC9C,IAAA,IAAG,QAAO,UAAU,CAAC,IAAI,QAAQ,EAAC;QAChC,IAAI,GAAG,GAAyB,UAAU,CAAC;AAC3C,QAAA,SAAS,IAAI,CAAC,GAAQ,OAAe,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;KAC/D;SAAI;QACH,IAAI,GAAG,GAAyB,UAAU,CAAC;AAC3C,QAAA,SAAS,IAAI,CAAC,GAAQ,OAAe,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;KAC/D;AACD,IAAA,OAAO,SAAS,CAAC;AACnB;;MCxLsB,OAAO,CAAA;AAS5B,CAAA;MACqB,aAAa,CAAA;AAAnC,IAAA,WAAA,GAAA;QACE,IAAM,CAAA,MAAA,GAAc,KAAK,CAAC;QAC1B,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAQ1B,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;QAC5B,IAAO,CAAA,OAAA,GAAe,KAAK,CAAC;KAC7B;AAAA;;MCdY,0BAA0B,CAAA;IAUrC,WACY,CAAA,eAAwB,EAC1B,UAAmC,EAAA;QADjC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAS;QAC1B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;;QATpC,IAAM,CAAA,MAAA,GAAc,KAAK,CAAC;;QAE1B,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;;QAoBnC,IAAK,CAAA,KAAA,GAAwB,KAAK,EAAU,CAAC;AAEtC,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAsB,MAAK;AAChD,YAAA,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAA;AACnD,SAAC,CAAC,CAAC;QAMH,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;QAC5B,IAAO,CAAA,OAAA,GAAe,KAAK,CAAC;QAtB1B,MAAM,CAAC,MAAK;YACV,eAAe,CAAC,4BAA4B,EAAE,CAAC;YAC/C,eAAe,CAAC,MAAM,EAAE,CAAC;AAC3B,SAAC,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAA;KAChC;IAEM,gBAAgB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAA;KACrC;IASS,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;KACjD;+GAjCU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,ylBCXvC,m1BAcW,EAAA,MAAA,EAAA,CAAA,EAAA,EAAA,49DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDHE,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACE,qBAAqB,EAAA,QAAA,EAAA,m1BAAA,EAAA,MAAA,EAAA,CAAA,49DAAA,CAAA,EAAA,CAAA;kGAOtB,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;;;MEVK,kCAAkC,CAAA;IAK7C,WACY,CAAA,eAAwB,EAC1B,UAAmC,EAAA;QADjC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAS;QAC1B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;QALpC,IAAM,CAAA,MAAA,GAAc,KAAK,CAAC;QAC1B,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAgBnC,IAAK,CAAA,KAAA,GAAwB,KAAK,EAAU,CAAC;QAQpC,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;QACrC,IAAO,CAAA,OAAA,GAAe,KAAK,CAAC;QAnB1B,MAAM,CAAC,MAAK;YACV,eAAe,CAAC,4BAA4B,EAAE,CAAC;YAC/C,eAAe,CAAC,MAAM,EAAE,CAAC;AAC3B,SAAC,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAA;KAChC;IAEM,gBAAgB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAA;KACrC;IAMS,WAAW,GAAA;QACnB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KAChD;+GAzBU,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,0uBCR/C,k1BAeW,EAAA,MAAA,EAAA,CAAA,EAAA,EAAA,49DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDPE,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAL9C,SAAS;+BACE,8BAA8B,EAAA,QAAA,EAAA,k1BAAA,EAAA,MAAA,EAAA,CAAA,49DAAA,CAAA,EAAA,CAAA;kGAM/B,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAkBG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAMG,UAAU,EAAA,CAAA;sBAAlB,KAAK;;;AEdF,MAAO,oBAAqB,SAAQ,iBAAsB,CAAA;IAsB9D,WAEW,CAAA,gBAAkC,EAClC,UAA4B,EAAA;AACnC,QAAA,KAAK,EAAE,CAAC;QAFD,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAkB;;AAtBhC,QAAA,IAAA,CAAA,KAAK,GAAsD,KAAK,CAAQ,EAAE,CAAC,CAAC;;AAE5E,QAAA,IAAA,CAAA,aAAa,GAA8C,KAAK,CAA2B,IAAI,wBAAwB,EAAE,CAAC,CAAC;QAC3H,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;AAMlC,QAAA,IAAA,CAAA,sBAAsB,GAA4B,MAAM,CAAU,KAAK,CAAC,CAAC;AACvE,QAAA,IAAA,CAAA,SAAS,GAAyC,QAAQ,CAAC,MAAK;AACxE,YAAA,IAAG,IAAI,CAAC,sBAAsB,EAAE,EAAC;AAAE,gBAAA,QAAQ,CAAC,GAAwB,KAAe,EAAA,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE;aAAE;AAC1G,YAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;AAChD,SAAC,CAAC,CAAC;AACO,QAAA,IAAA,CAAA,SAAS,GAAyC,QAAQ,CAAC,MAAK;AACxE,YAAA,IAAG,IAAI,CAAC,sBAAsB,EAAE,EAAC;AAAE,gBAAA,QAAQ,CAAC,GAAwB,KAAe,EAAA,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE;aAAE;AAC1G,YAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;AAChD,SAAC,CAAC,CAAC;QAyBH,IAAY,CAAA,YAAA,GAAkB,IAAI,CAAC;QAczB,IAAY,CAAA,YAAA,GAAkB,EAAE,CAAC;QACjC,IAAgB,CAAA,gBAAA,GAAc,IAAI,CAAC;;QA8DpC,IAAM,CAAA,MAAA,GAAQ,IAAI,CAAC;AAgElB,QAAA,IAAA,CAAA,gBAAgB,GAAG,EAAE,QAAQ,EAAG,eAAe,EAAE,CAAA;AA+BjD,QAAA,IAAA,CAAA,MAAM,GAAgC,KAAK,CAAS,EAAE,CAAC,CAAC;AACxD,QAAA,IAAA,CAAA,cAAc,GAAwB,QAAQ,CAAQ,MAAK,EAAG,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;AA/LtI,QAAA,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;AAE9D,QAAA,IAAI,CAAC,cAAc,GAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAK;YAC3D,IAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAC;gBAC1C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;gBACxC,IAAI,CAAC,MAAM,EAAE,CAAC;aACf;AACH,SAAC,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;KACvC;IAOQ,QAAQ,GAAA;QACf,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjB,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KACnD;IAEM,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;IAKM,MAAM,GAAA;QACX,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;IACO,kBAAkB,GAAA;AACxB,QAAA,IAAG,IAAI,CAAC,MAAM,IAAI,IAAI,EAAC;YACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,CAAC;AACrD,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,OAAO;SACR;QACD,IAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAC;YAChC,MAAM,CAAC,GAAe,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;YACjF,IAAG,CAAC,EAAC;gBACH,IAAI,CAAC,YAAY,GAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5C,gBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;aAC/B;YACD,OAAO;SACR;aAAI;AACH,YAAA,IAAG,CAAC,IAAI,CAAC,MAAM,EAAC;gBACd,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,CAAC;AACrD,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAC7B,OAAO;aACR;AACD,iBAAA,IAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAC;gBACjD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,CAAC;AACrD,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAC7B,OAAO;aACR;AACD,YAAA,IAAI,CAAC,YAAY,GAAO,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,OAAO;SACR;KACF;IACO,cAAc,GAAA;QACpB,IAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAC;AAC3C,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;YACnD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;SACpJ;KACF;AAED,IAAA,UAAU,CAAC,IAAS,EAAA;QAClB,IAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC;AAC5B,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;SACrD;QACD,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC;KAC9C;;IAGS,gBAAgB,GAAA;QACxB,IAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAC;YACvC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;SACtE;QACD,IAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,EAAC;YAC7B,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9I;AAED,QAAA,OAAO,EAAE,CAAC;KACX;IAID,IAAa,KAAK,KAAe,OAAO,IAAI,CAAC,MAAM,CAAC,EAAG;IACvD,IAAa,KAAK,CAAC,KAAU,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACnC;AACS,IAAA,QAAQ,CAAC,KAAU,EAAA;AAC3B,QAAA,IAAG,KAAK,IAAI,IAAI,EAAE;AAAE,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YAAC,OAAO;SAAE;AAEjD,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO;KACR;IAES,aAAa,GAAA;AACrB,QAAA,IAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAC;AACxB,YAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,YAAA,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACvF,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;SAClE;KACF;IAES,yBAAyB,GAAA;QACjC,IAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAC;AAAE,YAAA,OAAO,IAAI,CAAC;SAAE;AAC7D,QAAA,OAAO,KAAK,CAAC;KACd;IAEM,4BAA4B,GAAA;QACjC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;AAClE,QAAA,IAAG,IAAI,CAAC,sBAAsB,EAAE,EAAC;AAC/B,YAAA,IAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAC;gBAC/C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACrD;SACF;KACF;;IAGQ,UAAU,CAAC,GAAQ,EAAA,EAAU,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AAEpD,IAAA,MAAM,CAAC,IAAS,EAAA;QACrB,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAEpC,IAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAC;YAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC;SACrC;aACG;YACF,IAAI,KAAK,GAAI,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC;AAEpC,YAAA,IAAG,IAAI,CAAC,MAAM,EAAC;gBACb,IAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAC;oBAC7B,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;iBACvD;qBACG;oBACF,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;iBACtC;gBACD,OAAO;aACR;AAED,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO;SACR;KACF;IASM,MAAM,cAAc,CAAC,MAAkB,EAAA;QAC5C,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC;AACvG,QAAA,MAAM,OAAO,GAAU,IAAI,CAAC,mBAAmB,CAAC;AAChD,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAA4B,CAAC;QAE3E,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAC/B,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CACjD,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAC7C,CAAC,QAAQ,CACX,CAAC,IAAI,CACJ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAC9B,CAAA;AAChB,QAAA,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC;AAClF,QAAA,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;AAEnC,QAAA,IAAG,IAAI,CAAC,wBAAwB,EAAC;AAC/B,YAAA,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;SACpF;AAED,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,4BAA4B,EAAE,CAAC;KACrC;;IASD,MAAM,mBAAmB,CAAC,KAAoB,EAAA;QAC5C,IAAG,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAC;YAAE,OAAO;SAAE;QAE/D,MAAM,cAAc,GAAO,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;QACvE,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC;AAE3E,QAAA,IAAG,KAAK,CAAC,MAAM,IAAI,cAAc,IAAI,KAAK,CAAC,GAAG,IAAI,WAAW,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,EAAC;AAChG,YAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YACzC,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;AACD,aAAA,IAAG,KAAK,CAAC,MAAM,IAAI,kBAAkB,EAAC;YACpC,IAAI,CAAC,4BAA4B,EAAE,CAAC;AAEpC,YAAA,MAAM,KAAK,GAAI,IAAI,CAAC,cAAc,EAAE,CAAC;AACrC,YAAA,IAAG,KAAK,CAAC,GAAG,IAAI,WAAW,EAAC;AAC1B,gBAAA,IAAG,IAAI,CAAC,YAAY,EAAC;oBACnB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAE/C,oBAAA,IAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAC;wBAClB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;qBAC1C;yBAAI;wBACH,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;qBAClC;iBACF;qBAAI;AACH,oBAAA,IAAG,KAAK,CAAC,CAAC,CAAC,EAAC;wBACV,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;qBAClC;iBACF;aACF;AACD,iBAAA,IAAG,KAAK,CAAC,GAAG,IAAI,SAAS,EAAC;AACxB,gBAAA,IAAG,IAAI,CAAC,YAAY,EAAC;oBACnB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAE/C,oBAAA,IAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAC;wBAClB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;qBAC1C;yBAAI;AACH,wBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAE,CAAC,CAAC,CAAC,CAAC;qBAChD;iBACF;aACF;AACD,iBAAA,IAAG,KAAK,CAAC,GAAG,IAAI,OAAO,EAAC;AACtB,gBAAA,IAAI,MAAqB,CAAC;AAC1B,gBAAA,IAAG,IAAI,CAAC,sBAAsB,EAAE,EAAC;oBAC/B,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;iBACpE;qBAAI;AACH,oBAAA,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;iBAC1E;AACD,gBAAA,IAAG,CAAC,MAAM,CAAC,QAAQ,EAAC;AAClB,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBAChC;aACF;SACF;KACF;AACD,IAAA,iBAAiB,CAAC,YAAiB,EAAE,MAAA,GAAkB,IAAI,EAAA;AACzD,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AAEjC,QAAA,IAAI,MAAqB,CAAC;AAC1B,QAAA,IAAG,IAAI,CAAC,sBAAsB,EAAE,EAAC;AAC/B,YAAA,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,YAAY,CAAC,CAAC;YAC9D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;AACvE,YAAA,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;SACvB;aAAI;AACH,YAAA,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC;YACpE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;AAC/E,YAAA,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;SACvB;QAED,IAAG,MAAM,EAAC;AAAE,YAAA,MAAM,CAAC,gBAAgB,EAAE,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;SAAE;KAChF;+GApSU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAApB,oBAAoB,EAAA,QAAA,EAAA,cAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,kBAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,SAAA,EAJpB,CAAC,GAAG,oBAAoB,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAE;gBACrE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;aACtE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAUe,0BAA0B,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEhC,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,GAAU,UAAe,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAkL5B,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAC/B,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACV,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAC9B,YAAY,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA8BZ,QAAQ,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACR,OAAO,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,SAAA,EArNxB,kCAAkC,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BlD,4vHAiEc,EAAA,MAAA,EAAA,CAAA,uWAAA,EAAA,49DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kCAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD5CD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,aAGb,CAAC,GAAG,oBAAoB,CAAC,WAAW,sBAAsB,EAAE;4BACrE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,oBAAqB,CAAC;yBACtE,CAAC,EAAA,QAAA,EAAA,4vHAAA,EAAA,MAAA,EAAA,CAAA,uWAAA,EAAA,49DAAA,CAAA,EAAA,CAAA;;0BAyBC,QAAQ;;0BAAI,IAAI;;0BAAI,QAAQ;kEAfc,UAAU,EAAA,CAAA;sBAAtD,eAAe;uBAAC,0BAA0B,CAAA;gBACO,kBAAkB,EAAA,CAAA;sBAAnE,YAAY;uBAAC,kCAAkC,CAAA;gBACgB,wBAAwB,EAAA,CAAA;sBAAvF,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,wBAAwB,EAAE,EAAE,IAAI,GAAE,UAAe,CAAA,EAAE,CAAA;gBAkLhB,cAAc,EAAA,CAAA;sBAA3D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBACrB,mBAAmB,EAAA,CAAA;sBAAzC,SAAS;uBAAC,UAAU,CAAA;gBACwB,iBAAiB,EAAA,CAAA;sBAA7D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBAClB,kBAAkB,EAAA,CAAA;sBAA1C,SAAS;uBAAC,YAAY,CAAA;gBA8BF,cAAc,EAAA,CAAA;sBAAlC,SAAS;uBAAC,QAAQ,CAAA;gBACwB,aAAa,EAAA,CAAA;sBAAvD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBAElC,mBAAmB,EAAA,CAAA;sBADxB,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AEzOxC,MAAO,oBAAqB,SAAQ,WAAmB,CAAA;IAK3D,WAEW,CAAA,gBAAkC,EAClC,UAAsB,EAAA;AAC7B,QAAA,KAAK,EAAE,CAAC;QAFD,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AANxB,QAAA,IAAA,CAAA,aAAa,GAA6B,IAAI,wBAAwB,EAAE,CAAC;QACzE,IAAI,CAAA,IAAA,GAAwB,MAAM,CAAC;KAM9B;AAEL,IAAA,MAAM,QAAQ,GAAA;QACrB,KAAK,CAAC,QAAQ,EAAE,CAAC;KAClB;IAEQ,UAAU,CAAC,KAAa,EAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA,EAAE;IAC1D,IAAa,KAAK,KAAkB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAG;IAC1D,IAAa,KAAK,CAAC,KAAa,EAAA,EAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;AAE9F,IAAA,QAAQ,CAAC,KAAK,EAAA;AACZ,QAAA,IAAG,KAAK,IAAI,IAAI,EAAC;AAAE,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;SAAE;aAAM;AAAE,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,EAAE,CAAA;SAAE;KACxE;+GArBU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAApB,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAFpB,oBAAoB,CAAC,WAAW,CAAC,oBAAoB,CAAC,iDCTnE,o9BAsBA,EAAA,MAAA,EAAA,CAAA,EAAA,EAAA,49DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,yDAAA,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,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtB,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDXa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAGb,SAAA,EAAA,oBAAoB,CAAC,WAAW,CAAsB,oBAAA,CAAA,EAAA,QAAA,EAAA,o9BAAA,EAAA,MAAA,EAAA,CAAA,49DAAA,CAAA,EAAA,CAAA;;0BAQ9D,QAAQ;;0BAAI,IAAI;;0BAAI,QAAQ;kEAJtB,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;AEHF,MAAO,sBAAuB,SAAQ,WAAmB,CAAA;IAI7D,WAEW,CAAA,gBAAkC,EAClC,UAAsB,EAAA;AAC7B,QAAA,KAAK,EAAE,CAAC;QAFD,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AALxB,QAAA,IAAA,CAAA,aAAa,GAA6B,IAAI,wBAAwB,EAAE,CAAC;KAMpE;AAEL,IAAA,MAAM,QAAQ,GAAA;QACrB,KAAK,CAAC,QAAQ,EAAE,CAAC;KAClB;IAEQ,UAAU,CAAC,KAAa,EAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA,EAAE;IAC1D,IAAa,KAAK,KAAkB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAG;IAC1D,IAAa,KAAK,CAAC,KAAa,EAAA,EAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;AAE9F,IAAA,QAAQ,CAAC,KAAK,EAAA;AACZ,QAAA,IAAG,KAAK,IAAI,IAAI,EAAC;AAAE,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;SAAE;aAAM;AAAE,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,EAAE,CAAA;SAAE;KACxE;+GApBU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAtB,sBAAsB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAFtB,oBAAoB,CAAC,WAAW,CAAC,sBAAsB,CAAC,iDCTrE,8iCAwBM,EAAA,MAAA,EAAA,CAAA,EAAA,EAAA,49DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,yDAAA,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,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDbO,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAGf,SAAA,EAAA,oBAAoB,CAAC,WAAW,CAAwB,sBAAA,CAAA,EAAA,QAAA,EAAA,8iCAAA,EAAA,MAAA,EAAA,CAAA,49DAAA,CAAA,EAAA,CAAA;;0BAOhE,QAAQ;;0BAAI,IAAI;;0BAAI,QAAQ;kEAHtB,aAAa,EAAA,CAAA;sBAArB,KAAK;;;AEGF,MAAO,mBAAoB,SAAQ,iBAAyB,CAAA;AAEhE,IAAA,WAAA,CACU,cAA8B,EAAA;AACpC,QAAA,KAAK,EAAE,CAAC;QADF,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAwBxC,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;QAclB,IAAW,CAAA,WAAA,GAAW,CAAC,CAAC;QACxB,IAAY,CAAA,YAAA,GAAW,CAAC,CAAC;QAGzB,IAAc,CAAA,cAAA,GAAW,CAAC,CAAC;QAC3B,IAAe,CAAA,eAAA,GAAW,CAAC,CAAC;QAG5B,IAAgB,CAAA,gBAAA,GAAW,CAAC,CAAC;QAC7B,IAAiB,CAAA,iBAAA,GAAW,CAAC,CAAC;QAE9B,IAAU,CAAA,UAAA,GAAG,KAAK,CAAA;QAClB,IAAa,CAAA,aAAA,GAAG,KAAK,CAAA;QACrB,IAAe,CAAA,eAAA,GAAG,KAAK,CAAA;AAE/B,QAAA,IAAA,CAAA,QAAQ,GAAS,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxC,QAAA,IAAA,CAAA,QAAQ,GAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;QACzC,IAAK,CAAA,KAAA,GAAe,CAAC,CAAA;QAErB,IAAU,CAAA,UAAA,GAAW,GAAG,CAAA;QACxB,IAAU,CAAA,UAAA,GAAW,CAAC,CAAA;KAzDR;AAOL,IAAA,UAAU,CAAC,KAAa,EAAG,EAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA,EAAE;IAChE,IAAa,KAAK,KAAkB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAG;IAC1D,IAAa,KAAK,CAAC,KAAa,EAAA,EAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;AAE9F,IAAA,QAAQ,CAAC,KAAa,EAAE,MAAA,GAAkB,KAAK,EAAA;QAC7C,IAAG,KAAK,EAAC;AACP,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACnC,YAAA,IAAG,IAAI,CAAC,SAAS,IAAI,MAAM,EAAC;gBAC1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,IAAI,CAAC,iBAAiB,EAAE,CAAA;aACzB;SACF;KACF;IAID,MAAM,OAAO,CAAC,MAAM,EAAA;AAClB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEnC,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,IAAI,CAAC,aAAa,EAAE,CAAA;QACpB,IAAI,CAAC,eAAe,EAAE,CAAA;QACtB,IAAI,CAAC,iBAAiB,EAAE,CAAA;QACxB,IAAI,CAAC,aAAa,EAAE,CAAA;QACpB,IAAI,CAAC,eAAe,EAAE,CAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;IAwBD,UAAU,GAAA;AACR,QAAA,MAAM,MAAM,GAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;AAC9C,QAAA,IAAI,CAAC,WAAW,GAAI,MAAM,CAAC,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,SAAS,GAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAE5C,QAAA,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,QAAA,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,QAAA,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,QAAA,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;;AAG/D,QAAA,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,QAAA,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,QAAA,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAChE;IAED,aAAa,GAAA;AACX,QAAA,MAAM,SAAS,GAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAA;AAC/C,QAAA,IAAI,CAAC,cAAc,GAAI,SAAS,CAAC,KAAK,CAAC;AACvC,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AAExC,QAAA,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AACtE,QAAA,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AACjE,QAAA,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AACpE,QAAA,SAAS,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;;AAGpE,QAAA,SAAS,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AACxE,QAAA,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AACxE,QAAA,SAAS,CAAC,gBAAgB,CAAC,UAAU,EAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;KACrE;IAED,eAAe,GAAA;AACb,QAAA,MAAM,WAAW,GAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AACxD,QAAA,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC;AAC5C,QAAA,IAAI,CAAC,gBAAgB,GAAI,WAAW,CAAC,KAAK,CAAC;QAE3C,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AAE5C,QAAA,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AAC1E,QAAA,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AACrE,QAAA,WAAW,CAAC,gBAAgB,CAAC,SAAS,EAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AACxE,QAAA,WAAW,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;;AAGxE,QAAA,WAAW,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AAC5E,QAAA,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AAC5E,QAAA,WAAW,CAAC,gBAAgB,CAAC,UAAU,EAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;KACzE;IAED,iBAAiB,GAAA;AACf,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;;AAG3B,QAAA,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;;QAGxD,GAAG,CAAC,SAAS,GAAG,CAAO,IAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA,YAAA,CAAc,CAAA;AACpD,QAAA,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;;AAGvD,QAAA,MAAM,aAAa,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;AACzE,QAAA,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;AACtC,QAAA,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAA;AACvD,QAAA,GAAG,CAAC,SAAS,GAAG,aAAa,CAAA;AAC7B,QAAA,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;;AAGvD,QAAA,MAAM,aAAa,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;AAC1E,QAAA,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAA;AACjD,QAAA,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;AACtC,QAAA,GAAG,CAAC,SAAS,GAAG,aAAa,CAAA;AAC7B,QAAA,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;KACxD;IAED,aAAa,GAAA;AACX,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;;AAGvB,QAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAA;AACvE,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;YACjC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,GAAG,EAAE,CAAO,IAAA,EAAA,CAAC,CAAc,YAAA,CAAA,CAAC,CAAA;SACvD;AAED,QAAA,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAA;AACxB,QAAA,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;KAC9D;IAED,eAAe,GAAA;AACb,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAA;AACzB,QAAA,MAAM,KAAK,GAAI,IAAI,CAAC,gBAAgB,CAAA;AACpC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAA;;QAGrC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;;QAGlC,MAAM,UAAU,GAAG,CAAC,CAAA;AACpB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,UAAU,EAAE;AAC1C,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE;AAC3C,gBAAA,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,GAAG,UAAU,IAAI,CAAC,KAAK,CAAC,CAAA;AAC1D,gBAAA,GAAG,CAAC,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;gBAC9C,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;aAC3C;SACF;;AAID,QAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAEzC,QAAA,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAA,KAAA,EAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAK,EAAA,EAAA,GAAG,CAAC,CAAC,CAAA,IAAA,CAAM,CAAC,CAAA;AACjE,QAAA,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAA,KAAA,EAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAK,EAAA,EAAA,GAAG,CAAC,CAAC,CAAA,IAAA,CAAM,CAAC,CAAA;AAEjE,QAAA,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAA;QACxB,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;KAClC;AAED,IAAA,SAAS,CAAC,CAAa,EAAA;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QACtB,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;KAChD;AAED,IAAA,IAAI,CAAC,CAAa,EAAA;AAChB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;SAChD;KACF;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;KACxB;AAED,IAAA,WAAW,CAAC,CAAa,EAAA;QACvB,CAAC,CAAC,cAAc,EAAE,CAAA;AAClB,QAAA,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;SACvB;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAA;YAC9D,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YAC1B,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;YACnC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAA;AAClC,YAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;SAChC;KACF;AAED,IAAA,YAAY,CAAC,CAAa,EAAA;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;AACzB,QAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;KACnC;AAED,IAAA,OAAO,CAAC,CAAa,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;SACnC;KACF;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAA;KAC3B;AAED,IAAA,cAAc,CAAC,CAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;AAC3B,QAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;KACrC;AAED,IAAA,SAAS,CAAC,CAAa,EAAA;AACrB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;SACrC;KACF;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAA;KAC7B;AAED,IAAA,gBAAgB,CAAC,CAAa,EAAA;QAC5B,CAAC,CAAC,cAAc,EAAE,CAAA;AAClB,QAAA,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE;AAC3B,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;SAC5B;AAED,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAA;YACnE,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YAC1B,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;AACnC,YAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAA;SAC7B;KACF;AAED,IAAA,cAAc,CAAC,CAAa,EAAA;QAC1B,CAAC,CAAC,cAAc,EAAE,CAAA;AAClB,QAAA,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE;AAC3B,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;SAC1B;AAED,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAA;YACjE,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YAC1B,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;AACnC,YAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAA;SAC3B;KACF;AAED,IAAA,kBAAkB,CAAC,CAAS,EAAA;;AAE1B,QAAA,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;;AAGjD,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC,CAAA;;QAG7D,IAAI,CAAC,iBAAiB,EAAE,CAAA;;QAGxB,IAAI,CAAC,eAAe,EAAE,CAAA;;AAGtB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;KACjE;AAED,IAAA,oBAAoB,CAAC,CAAS,EAAA;;AAE5B,QAAA,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAA;;AAGnD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,IAAI,GAAG,CAAC,CAAA;;AAG1D,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;KACjE;IAED,oBAAoB,CAAC,CAAS,EAAE,CAAS,EAAA;;AAEvC,QAAA,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;AAC9C,QAAA,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAA;;AAG/C,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,IAAI,GAAG,CAAA;AAC9C,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,IAAI,GAAG,CAAA;;AAG/C,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;;;;QAI7C,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE;;AAEzB,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAA;SACpD;aAAM;;YAEL,MAAM,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAA;YAC9C,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,IAAI,YAAY,CAAC,CAAA;SACpF;;AAGD,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;;QAGhE,IAAI,CAAC,eAAe,EAAE,CAAA;KACvB;IAED,mBAAmB,CAAC,aAA4B,IAAI,EAAE,YAA2B,IAAI,EAAE,cAAuB,KAAK,EAAA;;AAGjH,QAAA,IAAG,UAAU,IAAI,IAAI,EAAC;AACpB,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAA;SAC7B;AACD,QAAA,IAAG,SAAS,IAAI,IAAI,EAAC;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAA;SAC5B;;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAEzC,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAA;;AAGnB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;QACjD,IAAG,WAAW,EAAC;AAAE,YAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAA;SAAE;aAAI;AAAE,YAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAA;SAAE;;;KAI7D;IAED,wBAAwB,GAAA;;QAEtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;;;;AAKlC,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;KAC9C;AAED,IAAA,QAAQ,CAAC,GAAQ,EAAA;AACf,QAAA,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AACpB,QAAA,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AACpB,QAAA,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAEpB,QAAA,IAAI,CAAS,EAAE,CAAS,EAAE,CAAS,CAAA;AAEnC,QAAA,IAAI,CAAC,KAAK,CAAC,EAAE;YACX,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;SACd;aAAM;YACL,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,KAAI;gBAClD,IAAI,CAAC,GAAG,CAAC;oBAAE,CAAC,IAAI,CAAC,CAAA;gBACjB,IAAI,CAAC,GAAG,CAAC;oBAAE,CAAC,IAAI,CAAC,CAAA;AACjB,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACzC,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAAE,oBAAA,OAAO,CAAC,CAAA;AACvB,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAAE,oBAAA,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;AACnD,gBAAA,OAAO,CAAC,CAAA;AACV,aAAC,CAAA;YAED,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAC/C,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAEnB,YAAA,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YAC5B,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AACpB,YAAA,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;SAC7B;QAED,OAAO;YACL,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;YACtB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;YACtB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;SACvB,CAAA;KACF;AAED,IAAA,eAAe,CAAC,QAAgB,EAAE,eAAwB,IAAI,EAAE,cAAuB,KAAK,EAAA;;QAE1F,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAErC,IAAI,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAC,GAAG,CAAC,CAAA;;AAG1C,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;;YAEzB,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAChE,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAChE,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;SACjE;AAAM,aAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;;AAEhC,YAAA,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACjD,YAAA,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACjD,YAAA,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;SAClD;AAAM,aAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;;AAEhC,YAAA,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACjD,YAAA,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACjD,YAAA,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACjD,YAAA,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAA;SACxD;aAAM;;AAEL,YAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;YACzC,OAAM;SACP;;QAGD,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;;QAG3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;;QAG5C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;;AAGhC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;QAC3C,IAAG,WAAW,EAAC;AAAE,YAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAA;SAAE;aAAI;AAAE,YAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAA;SAAE;QAE5D,IAAG,YAAY,EAAC;;YAEd,IAAI,CAAC,uBAAuB,EAAE,CAAA;;YAG9B,IAAI,CAAC,iBAAiB,EAAE,CAAA;YACxB,IAAI,CAAC,eAAe,EAAE,CAAA;SACvB;KACF;IAED,uBAAuB,GAAA;;QAErB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;;QAGjC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE;;YAExB,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;SACxC;aAAM;;YAEL,MAAM,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAA;;AAG9C,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;;AAGjE,YAAA,IAAI,YAAY,IAAI,CAAC,EAAE;AACrB,gBAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAA;aACtB;iBAAM;AACL,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,YAAY,GAAG,iBAAiB,IAAI,YAAY,IAAI,GAAG,CAAA;aAC5E;;YAGD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;SAC9D;KACF;AAED,IAAA,QAAQ,CAAC,GAAQ,EAAA;AACf,QAAA,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;AACnB,QAAA,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;AACnB,QAAA,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;AAEnB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAC7B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAC7B,QAAA,IAAI,CAAC,GAAG,CAAC,EACP,CAAC,GAAG,CAAC,CAAA;QACP,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAA;AAEzB,QAAA,IAAI,GAAG,KAAK,GAAG,EAAE;AACf,YAAA,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,CAAA;YACnB,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAA;YAEnD,QAAQ,GAAG;AACT,gBAAA,KAAK,CAAC;oBACJ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;oBACvC,MAAK;AACP,gBAAA,KAAK,CAAC;AACJ,oBAAA,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;oBACzB,MAAK;AACP,gBAAA,KAAK,CAAC;AACJ,oBAAA,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;oBACzB,MAAK;aACR;SACF;QAED,OAAO;YACL,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;YACtB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;YACtB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;SACvB,CAAA;KACF;AAED,IAAA,QAAQ,CAAC,GAAQ,EAAG,CAAC,GAAG,CAAC,EAAA;QACvB,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAA;QAErB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;aACjC,QAAQ,CAAC,EAAE,CAAC;AACZ,aAAA,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AACnB,QAAA,OAAO,CACL,GAAG;AACH,YAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACN,iBAAA,GAAG,CAAC,CAAC,CAAC,KAAI;gBACT,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;AAC1B,gBAAA,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAC3C,aAAC,CAAC;iBACD,IAAI,CAAC,EAAE,CAAC;AACX,aAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,EAAE,CAAC,EACvB,WAAW,EAAE,CAAC;KACjB;IAED,aAAa,GAAA;QACX,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA;AACjC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAA;QAC1B,OAAO,CAAA,KAAA,EAAQ,CAAC,CAAK,EAAA,EAAA,CAAC,KAAK,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,CAAG,CAAA;KACtC;IAED,aAAa,GAAA;QACX,OAAO,CAAA,KAAA,EAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAK,EAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA,GAAA,EAAM,IAAI,CAAC,KAAK,GAAG,GAAG,CAAA,CAAA,CAAG,CAAA;KACjG;AAED,IAAA,MAAM,eAAe,GAAA;QACnB,MAAM,SAAS,CAAC,KAAK,CAAC;YACpB,MAAM,EAAE,IAAI,CAAC,KAAK;AACnB,SAAA,CAAC,CAAC;AACH,QAAA,MAAM,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAG,EAAA,IAAI,CAAC,KAAK,CAAwC,sCAAA,CAAA,CAAC,CAAC;KACtG;+GA9hBU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAuB,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAnB,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAFnB,oBAAoB,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA4BrD,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1CvB,gxPAoIA,EAAA,MAAA,EAAA,CAAA,oyBAAA,EAAA,49DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDpHa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAGZ,SAAA,EAAA,oBAAoB,CAAC,WAAW,CAAqB,mBAAA,CAAA,EAAA,QAAA,EAAA,gxPAAA,EAAA,MAAA,EAAA,CAAA,oyBAAA,EAAA,49DAAA,CAAA,EAAA,CAAA;gFAStC,MAAM,EAAA,CAAA;sBAA/B,SAAS;uBAAC,QAAQ,CAAA;gBACO,SAAS,EAAA,CAAA;sBAAlC,SAAS;uBAAC,WAAW,CAAA;gBACI,WAAW,EAAA,CAAA;sBAApC,SAAS;uBAAC,aAAa,CAAA;gBAiBD,OAAO,EAAA,CAAA;sBAA7B,SAAS;uBAAC,UAAU,CAAA;;;AE5BjB,MAAO,qBAAsB,SAAQ,WAAmB,CAAA;IAI5D,WAEW,CAAA,gBAAkC,EAClC,UAAsB,EAAA;AAC7B,QAAA,KAAK,EAAE,CAAC;QAFD,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AALxB,QAAA,IAAA,CAAA,aAAa,GAA8B,IAAI,yBAAyB,CAAC,UAAU,CAAC,CAAA;AAgCpF,QAAA,IAAA,CAAA,OAAO,GAA2B,CAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAG,CAAC;AACvH,QAAA,IAAA,CAAA,QAAQ,GAA0B,CAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE5I,QAAA,IAAA,CAAA,IAAI,GAAmB;AAC9B,YAAA,IAAI,EAAE,CAAC,YAAY,KAAI;gBACrB,IAAG,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,UAAU,EAAC;AACvC,oBAAA,IAAG,CAAC,YAAY,CAAC,KAAK,EAAC;wBACrB,OAAO,IAAI,CAAC,OAAO,CAAC;qBACrB;yBAAI;wBACH,IAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAC;4BAClC,IAAG,YAAY,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE;gCAClC,OAAO,IAAI,CAAC,OAAO,CAAC;6BACrB;4BACD,OAAO,IAAI,CAAC,QAAQ,CAAC;yBACtB;6BAAI;4BACH,IAAG,YAAY,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE;gCAClC,OAAO,IAAI,CAAC,OAAO,CAAC;6BACrB;4BACD,OAAO,IAAI,CAAC,QAAQ,CAAC;yBACtB;qBACF;iBACF;gBACD,IAAG,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,MAAM,EAAC;oBAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;iBAAE;gBAC9D,IAAG,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,KAAK,EAAE;oBAAE,OAAO,IAAI,CAAC,OAAO,CAAC;iBAAG;aAC/D;SACF,CAAC;QACO,IAAa,CAAA,aAAA,GAA4B,OAAO,EAAE,KAAM,EAA0B,CAAC,eAAe,EAAE,CAAC;KApDhG;AAEL,IAAA,MAAM,QAAQ,GAAA;QACrB,KAAK,CAAC,QAAQ,EAAE,CAAC;AAEjB,QAAA,IAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,gBAAgB,EAAC;AACzE,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,yBAAyB,EAAE,CAAC;SACtD;aAAI;YACH,MAAM,QAAQ,GAAW,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3F,YAAA,IAAG,QAAQ,IAAI,KAAK,EAAE;gBAAE,IAAI,CAAC,aAAa,GAAG,IAAI,yBAAyB,CAAC,KAAK,CAAC,CAAA;aAAG;AACpF,iBAAA,IAAG,QAAQ,IAAI,MAAM,EAAC;gBAAE,IAAI,CAAC,aAAa,GAAG,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAA;aAAE;SACrF;KACF;IAEQ,UAAU,CAAC,KAAa,EAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA,EAAE;IAC1D,IAAa,KAAK,KAAkB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAG;AAC1D,IAAA,IAAa,KAAK,CAAC,KAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;AAE1J,IAAA,QAAQ,CAAC,KAAK,EAAA;AACZ,QAAA,IAAG,KAAK,IAAI,IAAI,EAAC;AACf,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;SACjB;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SAClD;KACF;+GAhCU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAArB,qBAAqB,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAFrB,oBAAoB,CAAC,WAAW,CAAC,qBAAqB,CAAC,iDCZpE,w8BAyBM,EAAA,MAAA,EAAA,CAAA,EAAA,EAAA,49DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDXO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uCAAuC,EAGtC,SAAA,EAAA,oBAAoB,CAAC,WAAW,CAAuB,qBAAA,CAAA,EAAA,QAAA,EAAA,w8BAAA,EAAA,MAAA,EAAA,CAAA,49DAAA,CAAA,EAAA,CAAA;;0BAO/D,QAAQ;;0BAAI,IAAI;;0BAAI,QAAQ;kEAHtB,aAAa,EAAA,CAAA;sBAArB,KAAK;;;MEXK,4BAA4B,CAAA;AACvC,IAAA,WAAA,CAAmB,QAA0B,EAAA;QAA1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;KAAK;+GADvC,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA5B,4BAA4B,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAHxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACpC,iBAAA,CAAA;;;MCSY,oBAAoB,CAAA;IAIvB,oBAAoB,GAAA;AAC1B,QAAA,IAAG,IAAI,CAAC,IAAI,EAAC;AAAE,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;SAAE;KACjH;;AAKD,IAAA,WAAA,GAAA;QAVA,IAAa,CAAA,aAAA,GAAY,IAAI,CAAC;QAOrB,IAAK,CAAA,KAAA,GAAwC,OAAO,CAAC;QACrD,IAAK,CAAA,KAAA,GAAU,WAAW,CAAC;KAGnC;IAGD,YAAY,GAAA;QACV,IAAI,CAAC,oBAAoB,EAAE,CAAA;KAC5B;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,UAAU,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,EAAE,GAAG,CAAC,CAAA;KACnD;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;IAGD,QAAQ,GAAA;QACN,IAAI,CAAC,oBAAoB,EAAE,CAAA;KAC5B;+GA9BU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,+TCbjC,mXAOM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDEM,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvB,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,+BAAE,gBAAgB,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAI1C,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,mXAAA,EAAA,CAAA;wDAOnC,IAAI,EAAA,CAAA;sBAAtB,SAAS;uBAAC,MAAM,CAAA;gBAKR,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAMN,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY,CAAA;gBAc1B,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,eAAe,CAAA;;;AEX/B,MAAM,cAAc,GAAG;IACrB,kBAAkB;IAClB,kBAAkB;IAClB,qBAAqB;IACrB,kBAAkB;IAClB,uBAAuB;IAEvB,oBAAoB;IACpB,0BAA0B;IAC1B,4BAA4B;IAE5B,oBAAoB;IACpB,sBAAsB;IACtB,qBAAqB;IACrB,mBAAmB;IACnB,qBAAqB;CACtB,CAAA;MAiBY,YAAY,CAAA;+GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,iBAhCvB,kBAAkB;YAClB,kBAAkB;YAClB,qBAAqB;YACrB,kBAAkB;YAClB,uBAAuB;YAEvB,oBAAoB;YACpB,0BAA0B;YAC1B,4BAA4B;YAE5B,oBAAoB;YACpB,sBAAsB;YACtB,qBAAqB;YACrB,mBAAmB;YACnB,qBAAqB,EAIc,kCAAkC,CAAA,EAAA,OAAA,EAAA,CAGnE,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,WAAW;YACX,cAAc;YACd,gBAAgB;YAChB,gBAAgB;YAChB,eAAe;AACf,YAAA,oBAAoB,aA7BtB,kBAAkB;YAClB,kBAAkB;YAClB,qBAAqB;YACrB,kBAAkB;YAClB,uBAAuB;YAEvB,oBAAoB;YACpB,0BAA0B;YAC1B,4BAA4B;YAE5B,oBAAoB;YACpB,sBAAsB;YACtB,qBAAqB;YACrB,mBAAmB;YACnB,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;AAkBV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAXrB,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,WAAW;YAEX,gBAAgB;YAEhB,eAAe;YACf,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGX,YAAY,EAAA,UAAA,EAAA,CAAA;kBAfxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAE,GAAG,cAAc,EAAE,kCAAkC,CAAE;AACvE,oBAAA,OAAO,EAAO,CAAE,GAAG,cAAc,CAAE;AACnC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,WAAW;wBACX,cAAc;wBACd,gBAAgB;wBAChB,gBAAgB;wBAChB,eAAe;wBACf,oBAAoB;AACrB,qBAAA;AACF,iBAAA,CAAA;;;MC3DY,YAAY,CAAA;AACvB,IAAA,WAAA,CAAmB,OAAe,EAAA;QAAf,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;KAAG;AACtC,CAAA;MAEY,cAAc,CAAA;AACT,IAAA,SAAA,IAAA,CAAA,QAAQ,GAAqB,IAAI,YAAY,CAAC,gBAAgB,CAAC,CAAC,EAAA;AAChE,IAAA,SAAA,IAAA,CAAA,SAAS,GAAoB,IAAI,YAAY,CAAC,iBAAiB,CAAC,CAAC,EAAA;AACjE,IAAA,SAAA,IAAA,CAAA,YAAY,GAAiB,IAAI,YAAY,CAAC,uBAAuB,CAAC,CAAC,EAAA;IACvF,OAAO,YAAY,CAAC,OAAwB,EAAA;AAC1C,QAAA,IAAG,OAAO,CAAC,KAAK,IAAI,IAAI,EAAC;YACvB,IAAG,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,EAAC;gBAAE,OAAO,cAAc,CAAC,QAAQ,CAAC;aAAE;AACjE,YAAA,OAAO,IAAI,CAAC;SACb;QACD,OAAO,cAAc,CAAC,QAAQ,CAAC;KAChC;IACD,OAAO,aAAa,CAAC,OAAwB,EAAA;AAC3C,QAAA,IAAG,OAAO,CAAC,KAAK,IAAI,IAAI,EAAC;YACvB,IAAG,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,EAAC;gBAAE,OAAO,cAAc,CAAC,SAAS,CAAC;aAAE;AAClE,YAAA,OAAO,IAAI,CAAC;SACb;QACD,OAAO,cAAc,CAAC,SAAS,CAAC;KACjC;IACD,OAAO,gBAAgB,CAAC,OAAwB,EAAA;AAC9C,QAAA,IAAG,OAAO,CAAC,KAAK,IAAI,IAAI,EAAC;YACvB,IAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,EAAC;gBAC3B,OAAO,cAAc,CAAC,QAAQ,CAAC;aAChC;AACD,iBAAA,IAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,EAAC;gBACzD,OAAO,cAAc,CAAC,SAAS,CAAC;aACjC;AACD,YAAA,OAAO,IAAI,CAAC;SACb;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAEe,IAAA,SAAA,IAAA,CAAA,0BAA0B,GAAiB,IAAI,YAAY,CAAC,mCAAmC,CAAC,CAAC,EAAA;IACjH,OAAO,8BAA8B,CAAC,SAAiB,EAAA;AACrD,QAAA,QAAQ,CAAC,OAAwB,KAAyB;AACxD,YAAA,MAAM,KAAK,GAAG,cAAc,CAAC,0BAA0B,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AAClG,YAAA,IAAG,OAAO,CAAC,KAAK,IAAI,IAAI,EAAC;AACvB,gBAAA,IAAG,OAAO,CAAC,KAAK,IAAI,CAAC,EAAC;AAAE,oBAAA,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;iBAAE;AACzD,gBAAA,OAAO,IAAI,CAAC;aACb;AACD,YAAA,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;YAAA,CAAC;AAClC,SAAC,EAAC;KACH;AAEe,IAAA,SAAA,IAAA,CAAA,mBAAmB,GAAiB,IAAI,YAAY,CAAC,4CAA4C,CAAC,CAAC,EAAA;IACnH,OAAO,uBAAuB,CAAC,SAAiB,EAAA;AAC9C,QAAA,QAAQ,CAAC,OAAwB,KAAyB;AACxD,YAAA,MAAM,KAAK,GAAG,cAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AAC3F,YAAA,IAAG,OAAO,CAAC,KAAK,IAAI,IAAI,EAAC;AACvB,gBAAA,IAAG,OAAO,CAAC,KAAK,GAAG,CAAC,EAAC;AAAE,oBAAA,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;iBAAE;AACxD,gBAAA,OAAO,IAAI,CAAC;aACb;AACD,YAAA,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,SAAC,EAAC;KACH;AAEe,IAAA,SAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,CAAC,sEAAsE,CAAC,CAAC,EAAA;AAC7H,IAAA,OAAO,qBAAqB,CAAC,GAAW,EAAE,GAAW,EAAE,SAAiB,EAAE,QAAA,GAAoB,IAAI,EAAE,WAAoB,IAAI,EAAA;AAC1H,QAAA,QAAQ,CAAC,OAAwB,KAAyB;AACxD,YAAA,MAAM,KAAK,GAAG,cAAc,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3J,YAAA,IAAG,OAAO,CAAC,KAAK,IAAI,IAAI,EAAC;gBACvB,IAAG,OAAO,CAAC,KAAK,GAAG,GAAG,IAAI,QAAQ,EAAC;AAAE,oBAAA,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;iBAAE;qBACtE,IAAG,OAAO,CAAC,KAAK,GAAG,GAAG,IAAI,QAAQ,EAAC;AAAE,oBAAA,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;iBAAE;qBACtE,IAAG,OAAO,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAC;AAAE,oBAAA,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;iBAAE;qBACxE,IAAG,OAAO,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAC;AAAE,oBAAA,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;iBAAE;AACxE,gBAAA,OAAO,IAAI,CAAC;aACb;AACD,YAAA,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,SAAC,EAAE;KACJ;;;MCxEU,2BAA2B,CAAA;aACtB,IAA8B,CAAA,8BAAA,GAA8B,IAAI,yBAAyB,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,EAAA;aACxG,IAA0B,CAAA,0BAAA,GAAkC,IAAI,yBAAyB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAA;aACzG,IAAuB,CAAA,uBAAA,GAAqC,IAAI,yBAAyB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAAA;aAC3G,IAA0B,CAAA,0BAAA,GAAkC,IAAI,yBAAyB,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,EAAA;aACxG,IAA8B,CAAA,8BAAA,GAA8B,IAAI,yBAAyB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAA;aAEzG,IAA6B,CAAA,6BAAA,GAA6B,IAAI,wBAAwB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAA;aAClG,IAAyB,CAAA,yBAAA,GAAiC,IAAI,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAA;aACnG,IAAsB,CAAA,sBAAA,GAAoC,IAAI,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAA;aACrG,IAAyB,CAAA,yBAAA,GAAiC,IAAI,wBAAwB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAA;aAClG,IAA6B,CAAA,6BAAA,GAA6B,IAAI,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAA;;;MCXxG,iBAAiB,CAAA;AAA9B,IAAA,WAAA,GAAA;QACU,IAAU,CAAA,UAAA,GAAkB,IAAI,CAAC;KAa1C;IAXC,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;AAED,IAAA,aAAa,CAAC,IAAY,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KACxB;IAED,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;KAChC;AACF;;MCPY,oBAAoB,CAAA;AAM/B,IAAA,WAAA,GAAA;QAJA,IAAQ,CAAA,QAAA,GAAgC,EAAE,CAAC;AACnC,QAAA,IAAA,CAAA,iBAAiB,GAAsB,IAAI,iBAAiB,EAAE,CAAC;QAC/D,IAAQ,CAAA,QAAA,GAA8B,IAAI,CAAC;KAG9C;IAIL,OAAO,GAAA;;AAEL,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;QAED,IAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAC;YAC9B,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACrD;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;QAE1D,IAAI,UAAU,EAAE;AACd,YAAA,OAAO,IAAI,UAAU,CAAC,QAAQ,IAAG;AAC/B,gBAAA,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC1B,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACtB,aAAC,CAAC,CAAC;SACJ;aAAM;;AAEL,YAAA,IAAI,CAAC,QAAQ,GAAI,IAAI,CAAC,QAA+B,CAAC,IAAI,CACxD,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EACvD,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EACpC,KAAK,EAAE;aACR,CAAC;YAEF,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;KACF;+GAtCU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACOD;MAgBa,WAAW,CAAA;AAQtB,IAAA,WAAA,CACU,KAAqB,EACrB,WAA+B,EAC/B,cAA8B,EAC9B,oBAA0C,EAAA;QAH1C,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;QAC/B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAVpD,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;AAChC,QAAA,IAAA,CAAA,iBAAiB,GAAQ;AACvB,YAAA,SAAS,EAAO,qBAAqB;AACrC,YAAA,cAAc,EAAE,0BAA0B;SAC3C,CAAC;QAUF,IAAK,CAAA,KAAA,GAAW,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC;QAE7D,IAAO,CAAA,OAAA,GAAW,EAAE,CAAA;QACpB,IAAa,CAAA,aAAA,GAAoC,IAAI,CAAC;KALrD;AAMD,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAA6B,CAAC;AACvF,QAAA,IAAI,CAAC,OAAO,GAAS,MAAM,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtB;AAED,IAAA,QAAQ,CAAC,IAAU,EAAA;QACjB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1C;+GA7BU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA4B,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAtB,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAuB,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,WAAW,EC/BxB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,i2FAoDc,EDhCV,MAAA,EAAA,CAAA,+CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,2JACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,EAClB,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,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,wFAChB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAKN,WAAW,EAAA,UAAA,EAAA,CAAA;kBAfvB,SAAS;iCACI,IAAI,EAAA,QAAA,EACN,aAAa,EACd,OAAA,EAAA;wBACP,YAAY;wBACZ,WAAW;wBACX,WAAW;wBACX,YAAY;wBACZ,kBAAkB;wBAClB,gBAAgB;wBAChB,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,i2FAAA,EAAA,MAAA,EAAA,CAAA,+CAAA,CAAA,EAAA,CAAA;;MAoCU,wBAAwB,CAAA;AACnC,IAAA,WAAA,CACS,KAAiC,GAAA,IAAI,EACrC,cAAA,GAA0B,KAAK,EAAA;QAD/B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgC;QACrC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAiB;KAEvC;AACF,CAAA;MAEY,gBAAgB,CAAA;AAC3B,IAAA,WAAA,CACS,GAAqB,GAAA,IAAI,EACzB,OAAA,GAAkB,EAAE,EAAA;QADpB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAsB;QACzB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAa;KAC1B;AACJ;;ME9DY,WAAW,CAAA;AAEtB,IAAA,WAAA,CACU,IAAgB,EAChB,aAA4B,EAC5B,WAA+B,EAC/B,qBAA4C,EAAA;QAH5C,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAChB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;QAC/B,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;AAK9C,QAAA,IAAA,CAAA,YAAY,GAAiB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC;AACtG,QAAA,IAAA,CAAA,aAAa,GAAgB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC,WAAW,EAAE,GAAG,YAAY,CAAC;QACvG,IAAY,CAAA,YAAA,GAAkB,IAAI,CAAC;QAyB3C,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QA9BxB,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;AAMD,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,MAAM,KAAK,GAAQ,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;AAC1C,QAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAC/C,QAAA,IAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAC;YAC1B,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;SAC1C;aAAI;AACH,YAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;SACvB;QAED,IAAG,UAAU,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAC;AAC7C,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACtB;QAED,OAAO;KACR;AAED,IAAA,MAAM,OAAO,GAAA;AACX,QAAA,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACrD,QAAA,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;KAC1C;IAGD,IAAI,OAAO,KAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAG;IAEvC,MAAM,KAAK,CAAC,WAA2B,EAAA;AACrC,QAAA,IAAG;AACD,YAAA,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;AACjE,YAAA,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC9B,YAAA,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;AACtB,YAAA,QAAQ,SAAS,CAAC,OAAO,CAAC,EAAE;SAC7B;QACD,OAAO,KAAK,EAAC;AACX,YAAA,MAAM,KAAK,CAAC;SACb;KACF;IAED,MAAM,WAAW,CAAC,EAAU,EAAA;AAC1B,QAAA,IAAG;AACD,YAAA,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,YAAA,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC9B,YAAA,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;AACtB,YAAA,QAAQ,SAAS,CAAC,OAAO,CAAC,EAAE;SAC7B;QACD,OAAO,KAAK,EAAC;AACX,YAAA,MAAM,KAAK,CAAC;SACb;KACF;AAED,IAAA,QAAQ,CAAC,WAA2B,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAS,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,MAAM,EAAE,WAAW,CAAC,CAAC;KACxF;AACD,IAAA,cAAc,CAAC,EAAU,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAA,KAAA,EAAQ,EAAE,CAAA,CAAE,CAAC,CAAC;KAChF;IAED,MAAM,SAAS,CAAC,OAAe,EAAA;QAC7B,IAAI,SAAS,CAAC,OAAO,CAAW,CAAC,EAAE,IAAI,CAAC,EAAC;AACvC,YAAA,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC,CAAC;SACnE;AACD,QAAA,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;KAClE;AAED,IAAA,MAAM,SAAS,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,CAAC,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,EAAC,CAAC,EAAE,KAAK,CAAC;QACzE,IAAG,OAAO,EAAC;AACT,YAAA,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;AACxC,YAAA,OAAO,YAAY,CAAC;SACrB;aAAI;AACH,YAAA,OAAO,IAAI,CAAC;SACb;KACF;AACD,IAAA,MAAM,cAAc,GAAA;AAClB,QAAA,MAAM,OAAO,GAAG,CAAC,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,aAAa,EAAC,CAAC,EAAE,KAAK,CAAC;QAC1E,IAAG,OAAO,EAAC;AACT,YAAA,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;AACxC,YAAA,OAAO,YAAY,CAAC;SACrB;aAAI;AACH,YAAA,OAAO,IAAI,CAAC;SACb;KACF;AAED,IAAA,MAAM,OAAO,GAAA;AACX,QAAA,MAAM,OAAO,GAAW,CAAC,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC;AAClF,QAAA,OAAO,OAAO,CAAC;KAChB;AAED,IAAA,MAAM,SAAS,GAAA;AACb,QAAA,OAAO,UAAU,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,CAAA;KACxC;AAEM,IAAA,YAAY,CAAC,KAAU,EAAA;QAC5B,IAAG,CAAC,KAAK,EAAC;AAAE,YAAA,OAAO,KAAK,CAAC;SAAE;;AAC3B,YAAA,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,CAAA;KACnD;+GA9GU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAX,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA2B,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAX,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;AAkHD,MAAM,cAAc,CAAA;AAApB,IAAA,WAAA,GAAA;QACS,IAAO,CAAA,OAAA,GAAW,IAAI,CAAC;QACvB,IAAK,CAAA,KAAA,GAAa,IAAI,CAAC;KAC/B;AAAA,CAAA;AAED,MAAM,KAAK,CAAA;AAQT,IAAA,WAAA,GAAA;QANA,IAAM,CAAA,MAAA,GAAc,CAAC,CAAC;QACtB,IAAO,CAAA,OAAA,GAAa,EAAE,CAAC;QACvB,IAAI,CAAA,IAAA,GAAgB,EAAE,CAAC;QACvB,IAAE,CAAA,EAAA,GAAkB,CAAC,CAAC;QACtB,IAAS,CAAA,SAAA,GAAW,CAAC,CAAC;KAEP;AAEf,IAAA,KAAK,CAAC,KAAkB,EAAA;QACtB,KAAI,IAAI,IAAI,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAC;YAChD,IAAG,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjC,SAAS;aACV;YACD,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;SAC1B;KACF;AACF;;MCtJY,IAAI,CAAA;IAOf,WAAY,CAAA,IAA0B,EAAE,KAAa,EAAE,IAAoB,EAAE,OAAkB,GAAA,EAAE,EAAE,KAAA,GAAuB,IAAI,EAAA;AAC5H,QAAA,IAAI,CAAC,IAAI,GAAI,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAG,IAAI,EAAC;AACN,YAAA,IAAI,CAAC,IAAI,GAAI,IAAI,CAAC;SACnB;aAAI;AACH,YAAA,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;SACtB;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KACxB;AACF;;MCHY,oBAAoB,CAAA;AAU/B,IAAA,WAAA,CACS,MAAc,EACb,aAA4B,EAC5B,cAA8B,EAAA;QAF/B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACb,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAXxC,QAAA,IAAA,CAAA,iBAAiB,GAAQ;AACvB,YAAA,SAAS,EAAO,qBAAqB;AACrC,YAAA,cAAc,EAAE,0BAA0B;SAC3C,CAAC;KASG;AAEL,IAAA,QAAQ,MAAK;AAEb,IAAA,SAAS,CAAC,IAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;KACnD;AACD,IAAA,QAAQ,CAAC,IAAU,EAAA;QACjB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1C;+GAxBU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA9B,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,SAAA,EA0BjB,iBAAiB,EC1CjC,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,mhGA6DA,itBDlDY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAkB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAS,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAKzD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;iCACI,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,CAAC,EAAA,QAAA,EAC3D,cAAc,EAAA,QAAA,EAAA,mhGAAA,EAAA,MAAA,EAAA,CAAA,0pBAAA,CAAA,EAAA,CAAA;mIAUf,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAkB2B,mBAAmB,EAAA,CAAA;sBAAnD,YAAY;uBAAC,iBAAiB,CAAA;;;MEjBpB,eAAe,CAAA;AAgB1B,IAAA,WAAA,CACU,cAA8B,EAAA;QAA9B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAfxC,QAAA,IAAA,CAAA,iBAAiB,GAAQ;AACvB,YAAA,SAAS,EAAO,qBAAqB;AACrC,YAAA,cAAc,EAAE,0BAA0B;SAC3C,CAAC;QAEO,IAAO,CAAA,OAAA,GAAY,IAAI,CAAC;QACjC,IAAO,CAAA,OAAA,GAAwB,KAAK,EAAU,CAAA;AAC9C,QAAA,IAAA,CAAA,cAAc,GAAmB,QAAQ,CAAC,MAAK,EAAG,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA,EAAE,CAAC,CAAC;QAEhF,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QACzB,IAAc,CAAA,cAAA,GAA0B,IAAI,YAAqB,CAAC;QAEnE,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;QAkBzC,IAAkB,CAAA,kBAAA,GAAS,IAAI,CAAC;QAOhC,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;QApB9B,MAAM,CAAC,MAAK;;AAEV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACxF,MAAM,KAAK,GAAgB,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;YACvE,IAAG,KAAK,EAAC;AACP,gBAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;aACjC;iBACG;gBACF,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;aAC7C;AACH,SAAC,CAAC,CAAC;KACJ;IAGD,eAAe,GAAA;QACb,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC7B;IAGD,YAAY,GAAA;AACV,QAAA,IAAG,IAAI,CAAC,QAAQ,EAAC;AACf,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjC;KACF;IACD,YAAY,GAAA;AACV,QAAA,IAAG,IAAI,CAAC,cAAc,EAAC;AACrB,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAChC;KACF;+GAnDU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAe,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzB5B,83GAwDA,EAAA,MAAA,EAAA,CAAA,o3CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzCI,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,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,gBAAgB,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAMN,eAAe,EAAA,UAAA,EAAA,CAAA;kBAb3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,WAAW;wBACX,gBAAgB;wBAChB,oBAAoB;wBACpB,eAAe;AAChB,qBAAA,EAAA,QAAA,EACS,QAAQ,EAAA,QAAA,EAAA,83GAAA,EAAA,MAAA,EAAA,CAAA,o3CAAA,CAAA,EAAA,CAAA;gFAWT,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAIG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACI,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBACE,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;;AAwCR;;;;;AAKG;AACH,SAAS,YAAY,CAAC,KAAa,EAAA;IACjC,MAAM,MAAM,GAAW,EAAE,CAAC;IAE1B,SAAS,YAAY,CAAC,KAAa,EAAA;AACjC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;;AAExB,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAGlB,YAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,gBAAA,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC5B;SACF;KACF;IAED,YAAY,CAAC,KAAK,CAAC,CAAC;AACpB,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,UAAgB,EAAA;AACrD,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;;AAExB,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,EAAE;AAC5D,YAAA,OAAO,IAAI,CAAC;SACb;;AAGD,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3C,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YACxD,IAAI,MAAM,EAAE;AACV,gBAAA,OAAO,MAAM,CAAC;aACf;SACF;KACF;AAED,IAAA,OAAO,IAAI,CAAC;AACd;;ME3Ga,oBAAoB,CAAA;AAK/B,IAAA,WAAA,CACS,WAAwB,EAAA;QAAxB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QAJxB,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;KAK9B;IAGL,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAI;AACxC,YAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;AACnB,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,IAAG,QAAQ,CAAC,iBAAiB,IAAI,IAAI,EAAC;AACpC,YAAA,OAAO,IAAI,CAAC;SACb;AACD,QAAA,OAAO,KAAK,CAAC;KACd;;IAED,UAAU,GAAA;AACR,QAAA,IAAG,CAAC,IAAI,CAAC,UAAU,EAAC;AAClB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC;AAEpD,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B;AAAM,iBAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBACnC,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAC5B;AAAM,iBAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBACpC,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC7B;AAAM,iBAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBACvC,IAAI,CAAC,uBAAuB,EAAE,CAAC;aAChC;SACF;aAAI;YACH,QAAQ,CAAC,cAAc,EAAE,CAAA;SAC1B;KACF;+GAvCU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAc,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,6PCdjC,q4GA4DM,EAAA,MAAA,EAAA,CAAA,uLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnDO,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,WAAW,yyCAAE,kBAAkB,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,CAAA,EAAA;;4FAK7C,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;iCACI,IAAI,EAAA,OAAA,EACP,CAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,CAAE,EAAA,QAAA,EAChD,cAAc,EAAA,QAAA,EAAA,q4GAAA,EAAA,MAAA,EAAA,CAAA,uLAAA,CAAA,EAAA,CAAA;6EAMf,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAmBe,mBAAmB,EAAA,CAAA;sBAAvC,SAAS;uBAAC,QAAQ,CAAA;;;MEnBR,yBAAyB,CAAA;AAEpC,IAAA,WAAA,CACS,WAAwB,EAAA;QAAxB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QAGxB,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;KAF9B;IAKL,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAI;AACxC,YAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;AACnB,SAAC,CAAC,CAAA;KACH;IAGD,OAAO,GAAA,EAAW,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE;+GAhBpC,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,ECjBtC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,6xBAWM,EDFF,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,4HACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAOF,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAXrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,WAAW;wBACX,kBAAkB;AACnB,qBAAA,EAAA,QAAA,EACS,oBAAoB,EAAA,QAAA,EAAA,6xBAAA,EAAA,CAAA;6EAUrB,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;AEPF,MAAO,cAAe,SAAQ,gBAAgB,CAAA;IAKlD,WACqB,CAAA,IAAgB,EAChB,EAAe,EACf,cAA8B,EAC9B,aAA6B,EAC7B,qBAA6C,EAAA;QAEhE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,cAAc,EAAE,aAAa,EAAE,qBAAqB,CAAC,CAAC;QANnD,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAChB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QACf,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAgB;QAC7B,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAwB;QARlD,IAAK,CAAA,KAAA,GAAW,SAAS,CAAC;QAC1B,IAAK,CAAA,KAAA,GAAW,SAAS,CAAC;KAUzC;AAED,IAAA,IAAa,cAAc,GAAA;QACzB,IAAI,GAAG,GAAiB,EAAE,CAAC;AAE3B,QAAA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;AACxB,QAAA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,MAAM,EAAK,MAAM,EAAK,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;AAC3G,QAAA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;AAC3G,QAAA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,OAAO,EAAI,OAAO,EAAI,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;AAC3G,QAAA,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;AACzB,QAAA,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,IAAI,wBAAwB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAC9E,QAAA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;AAE3B,QAAA,OAAO,GAAG,CAAC;KACZ;;+GA3BU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA/B,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAW,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCUY,mBAAmB,CAAA;AAE9B,IAAA,WAAA,CACS,qBAA4C,EAC5C,WAAwB,EACvB,cAA8B,EAAA;QAF/B,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QAC5C,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACvB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAWjC,QAAA,IAAA,CAAA,uBAAuB,GAA6B,IAAI,wBAAwB,CAAC,IAAI,GAAG,CAAC,CAAC,KAAI,EAAG,OAAO,CAAC,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAKjL,QAAA,IAAA,CAAA,MAAM,GAAW,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;KAf9C;AAIL,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,IAAG;AACD,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC;SAC1D;QAAA,MAAK,GAAE;KACT;AAGD,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAG,KAAK,EAAC;YAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAE,CAAA;SAAE;KACvF;IAGD,SAAS,GAAA;QACP,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;KACjD;+GAxBU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAW,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzBhC,+rCA2BC,EAAA,MAAA,EAAA,CAAA,kCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDZG,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyB,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,qBAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAMH,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAb/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,WAAW;wBACX,WAAW;wBACX,mBAAmB;wBACnB,YAAY;AACb,qBAAA,EAAA,QAAA,EACS,aAAa,EAAA,QAAA,EAAA,+rCAAA,EAAA,MAAA,EAAA,CAAA,kCAAA,CAAA,EAAA,CAAA;;;MEIZ,qBAAqB,CAAA;AAEhC,IAAA,WAAA,CACU,EAAe,EACf,cAA8B,EAC9B,aAA4B,EAC5B,WAAwB,EACzB,qBAA4C,EAC5C,WAA+B,EAC9B,MAAc,EAAA;QANd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QACf,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACzB,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QAC5C,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;QAC9B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QA0BxB,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AAEjB,QAAA,IAAA,CAAA,OAAO,GAAsB,IAAI,YAAY,EAAO,CAAC;AA1B7D,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KACvC;AAED,IAAA,MAAM,QAAQ,GAAA;QACZ,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,EAAC;AAC1C,YAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;SACtE;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAA;QAChD,IAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,EAAC;YACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SAC7B;KACF;IAGD,UAAU,GAAA;QACR,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACvB,YAAA,OAAO,EAAG,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;AACrC,YAAA,KAAK,EAAK,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;AACtC,SAAA,CAAC,CAAC;KACJ;IAQD,MAAM,KAAK,CAAC,MAAsB,EAAA;QAChC,IAAG,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,OAAO,EAAC;YAAE,OAAO;SAAE;AAE9C,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,OAAO,GAAK,IAAI,CAAC;AAEtB,QAAA,IAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAC;AACjB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,gCAAgC,CAAC,CAAC;YAAC,OAAO;SAC5E;AAED,QAAA,IAAG;AACD,YAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAE3D,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;AAC5E,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC1B;QACD,OAAO,MAAM,EAAC;AACZ,YAAA,IAAG,MAAM,IAAI,GAAG,EAAC;AACf,gBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,+BAA+B,CAAC,CAAC;aACnE;iBAAI;AACH,gBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,sCAAsC,CAAC,CAAC;aAC1E;AACD,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB;KACF;+GAnEU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAhB,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAiB,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzBlC,4rHAiDM,EDlCF,MAAA,EAAA,CAAA,41CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,gOACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,WAAW,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,UAAA,EAAA,IAAA,EACX,mBAAmB,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,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAOV,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAbjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,WAAW;wBACX,WAAW;wBACX,mBAAmB;wBACnB,mBAAmB;AACpB,qBAAA,EAAA,QAAA,EACS,OAAO,EAAA,QAAA,EAAA,4rHAAA,EAAA,MAAA,EAAA,CAAA,41CAAA,CAAA,EAAA,CAAA;mPAyCP,OAAO,EAAA,CAAA;sBAAhB,MAAM;gBAGD,KAAK,EAAA,CAAA;sBADV,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ME7DtB,aAAa,CAAA;AADnC,IAAA,WAAA,GAAA;AAEE,QAAA,IAAA,CAAA,KAAK,GAA2B,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,aAAa,GAAmB,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,KAAK,GAA2B,KAAK,CAAM,SAAS,CAAC,CAAA;AACtD,KAAA;+GAJqB,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,2NADZ,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FACH,aAAa,EAAA,UAAA,EAAA,CAAA;kBADlC,SAAS;mBAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;;;MCWd,iBAAiB,CAAA;AAM5B,IAAA,WAAA,GAAA;AAHA,QAAA,IAAA,CAAA,GAAG,GAAqC,eAAe,CAAC,aAAa,CAAC,CAAC;QAEvE,IAAK,CAAA,KAAA,GAAqB,KAAK,EAAO,CAAC;AAiBvC,QAAA,IAAA,CAAA,KAAK,GAA2B,MAAM,CAAS,CAAC,CAAC,CAAC;QA6BxC,IAAM,CAAA,MAAA,GAAe,IAAI,CAAC;;;QASpC,IAAI,CAAA,IAAA,GAA4B,MAAM,EAAO,CAAC;;QAE9C,IAAM,CAAA,MAAA,GAA0B,MAAM,EAAO,CAAC;QAG9C,IAAQ,CAAA,QAAA,GAAyB,CAAC,CAAM,KAAO,EAAA,OAAO,EAAE,CAAA;QACxD,IAAO,CAAA,OAAA,GAA0B,CAAC,CAAM,KAAO,EAAA,OAAO,EAAE,CAAA;QA3DtD,MAAM,CAAC,MAAK;AACV,YAAA,IAAG,IAAI,CAAC,KAAK,EAAE,EAAC;AACd,gBAAA,IAAI,CAAC,MAAM,GAAI,IAAI,CAAC,KAAK,EAAE,CAAC;AAC5B,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;aACzE;iBACG;AACF,gBAAA,IAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,EAAC;AACnB,oBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;iBACpC;aACF;YACD,IAAI,CAAC,WAAW,EAAE,CAAC;AAErB,SAAC,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;KACjC;IAID,kBAAkB,GAAA;QAChB,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAED,WAAW,GAAA;AACT,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACvB,QAAA,KAAI,IAAI,YAAY,IAAI,GAAG,EAAC;AAC1B,YAAA,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AAClD,YAAA,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;SACzC;KACF;AACD,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IACD,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IACD,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IACD,WAAW,GAAA;QACT,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;KACvE;IAGD,IAAI,KAAK,KAAe,OAAO,IAAI,CAAC,MAAM,CAAC,EAAG;IAC9C,IAAI,KAAK,CAAC,KAAU,EAAA,EAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;IAGjF,UAAU,CAAC,KAAa,EAAA,EAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE;IAOhD,eAAe,CAAC,GAAQ,EAAS,EAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA,CAAC,EAAE;IAI9E,gBAAgB,CAAE,EAAwB,EAAA,EAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA,EAAE;IAClE,iBAAiB,CAAC,EAAwB,EAAA,EAAI,IAAI,CAAC,OAAO,GAAI,EAAE,CAAA,EAAE;+GApEvD,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EALjB,QAAA,EAAA,UAAA,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,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAM,iBAAiB;AAC9B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE,IAAI;AACxB,aAAA,CAAC,EAKsD,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,KAAA,EAAA,SAAA,EAAA,aAAa,EADpD,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,aAAa,6BCfhC,o/CAqBW,EAAA,MAAA,EAAA,CAAA,6UAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDRE,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAT7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAGT,SAAA,EAAA,CAAC,EAAE,OAAO,EAAM,iBAAiB;AAC9B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;4BAChD,KAAK,EAAE,IAAI,EACxB,CAAC,EAAA,QAAA,EAAA,o/CAAA,EAAA,MAAA,EAAA,CAAA,6UAAA,CAAA,EAAA,CAAA;wDAI8B,UAAU,EAAA,CAAA;sBAAzC,eAAe;uBAAC,aAAa,CAAA;;;MELnB,UAAU,CAAA;AAErB,IAAA,WAAA,CACU,IAAgB,EAChB,IAAiB,EACjB,qBAA4C,EAAA;QAF5C,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAChB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;QACjB,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;KAClD;AAEJ,IAAA,SAAS,CAAC,GAAW,EAAA;QACnB,IAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAC;;YAEnD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjC,iBAAA,IAAI,CACH,SAAS,CAAC,CAAC,MAAc,KAAI;AAC3B,gBAAA,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,eAAe,EAAE,CAAU,OAAA,EAAA,MAAM,CAAE,CAAA,EAAE,CAAC,CAAC;AACzE,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;AAC/D,aAAC,CAAC,EACF,SAAS,CAAC,CAAC,IAAU,KAAI;gBACvB,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBACtC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;aACnC,CAAC,CACH,CAAC;SACH;aACG;AACF,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SAC7B;KACF;+GA1BU,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAiC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAzB,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;6GAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,CAAA,EAAA;;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;MCKY,cAAc,CAAA;IAQzB,YAAY,GAAA;AACV,QAAA,QAAO,IAAI,CAAC,IAAI;AACd,YAAA,MAAK,OAAO,GAAE;AACZ,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;gBACnB,MAAM;aACP;AACD,YAAA,MAAK,SAAS,GAAE;AACd,gBAAA,IAAI,CAAC,SAAS,GAAG,mCAAmC,CAAA;gBACpD,MAAM;aACP;AACD,YAAA,MAAK,OAAO,GAAE;AACZ,gBAAA,IAAI,CAAC,SAAS,GAAG,gDAAgD,CAAA;gBACjE,MAAM;aACP;SACF;KACF;IAED,cAAc,GAAA;AACZ,QAAA,QAAO,IAAI,CAAC,MAAM;AAChB,YAAA,MAAK,SAAS,GAAE;AACd,gBAAA,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAA;gBACjC,MAAM;aACP;AACD,YAAA,MAAK,OAAO,GAAE;AACZ,gBAAA,IAAI,CAAC,SAAS,GAAG,cAAc,CAAA;gBAC/B,MAAM;aACP;AACD,YAAA,MAAK,MAAM,GAAE;AACX,gBAAA,IAAI,CAAC,SAAS,GAAG,aAAa,CAAA;gBAC9B,MAAM;aACP;AACD,YAAA,MAAK,MAAM,GAAE;AACX,gBAAA,IAAI,CAAC,SAAS,GAAG,aAAa,CAAA;gBAC9B,MAAM;aACP;AACD,YAAA,MAAK,YAAY,GAAE;AACjB,gBAAA,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAA;gBACpC,MAAM;aACP;SACF;KACF;AAoBD,IAAA,WAAA,CACS,qBAA4C,EAAA;QAA5C,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;;QAlE5C,IAAI,CAAA,IAAA,GAAiC,SAAS,CAAC;;QAE/C,IAAM,CAAA,MAAA,GAAyD,SAAS,CAAC;;QA8ClF,IAAG,CAAA,GAAA,GAA+B,KAAK,EAAiB,CAAC;AACzD,QAAA,IAAA,CAAA,IAAI,GAAmB,QAAQ,CAAC,MAAK;YACnC,IAAG,IAAI,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,EAAC;AAChC,gBAAA,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;aACnB;iBAED,IAAG,IAAI,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAC;gBAClC,OAAO,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;aACxC;iBACG;gBACF,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;aACtD;AACH,SAAC,CAAC,CAAC;QAEH,IAAG,CAAA,GAAA,GAAY,KAAK,CAAC;QACrB,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;QAKvB,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACzB,SAAC,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;+GA9EU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAwB,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd3B,27BAgBC,EDPW,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,wRAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,UAAU,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAKtD,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;iCACI,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAA,QAAA,EACxD,OAAO,EAAA,QAAA,EAAA,27BAAA,EAAA,CAAA;uFAOR,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEG,MAAM,EAAA,CAAA;sBAAd,KAAK;;;AEVF,MAAO,sBAAuB,SAAQ,aAAa,CAAA;AAEvD,IAAA,WAAA,GAAA,EAAgB,KAAK,EAAE,CAAC,EAAE;AAE1B,IAAA,QAAQ,MAAK;+GAJF,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAFtB,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC,iDCP9E,kRAGS,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwC,cAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDMI,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;+BACE,gBAAgB,EAAA,SAAA,EAGf,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAwB,sBAAA,EAAE,CAAC,EAAA,QAAA,EAAA,kRAAA,EAAA,CAAA;wDAGnE,GAAG,EAAA,CAAA;sBAAX,KAAK;;;AEDF,MAAO,qBAAsB,SAAQ,aAAa,CAAA;AACtD,IAAA,WAAA,GAAA,EAAgB,KAAK,EAAE,CAAC,EAAE;AAE1B,IAAA,QAAQ,MAAK;+GAHF,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAFrB,QAAA,EAAA,eAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC,iDCP7E,6PAEM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAxC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDOO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACE,eAAe,EAAA,SAAA,EAGd,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAuB,qBAAA,EAAE,CAAC,EAAA,QAAA,EAAA,6PAAA,EAAA,CAAA;;;AEC7E,MAAMyC,eAAa,GAAG,CAAE,iBAAiB,EAAE,sBAAsB,EAAE,qBAAqB,CAAE,CAAA;MAW7E,cAAc,CAAA;+GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBAXH,iBAAiB,EAAE,sBAAsB,EAAE,qBAAqB,aAMpF,YAAY;YACZ,WAAW;AACX,YAAA,cAAc,CARM,EAAA,OAAA,EAAA,CAAA,iBAAiB,EAAE,sBAAsB,EAAE,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;AAW3E,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YALvB,YAAY;YACZ,WAAW;YACX,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGL,cAAc,EAAA,UAAA,EAAA,CAAA;kBAT1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,GAAGA,eAAa,CAAC;AAChC,oBAAA,OAAO,EAAO,CAAC,GAAGA,eAAa,CAAC;AAChC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,cAAc;AACf,qBAAA;AACF,iBAAA,CAAA;;;ACfD;;AAEG;MAQU,qBAAqB,CAAA;AAOhC,IAAA,WAAA,GAAA;;QAJS,IAAI,CAAA,IAAA,GAAY,kCAAkC,CAAC;;QAEnD,IAAK,CAAA,KAAA,GAAY,IAAI,CAAC;KAEd;AAEjB,IAAA,QAAQ,MAAK;+GATF,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECblC,iVAKM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDGO,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAzC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAKZ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAE,YAAY,CAAE,YACf,eAAe,EAAA,QAAA,EAAA,iVAAA,EAAA,CAAA;wDAOhB,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;;;METK,YAAY,CAAA;AAWvB,IAAA,WAAA,GAAA;QAVS,IAAE,CAAA,EAAA,GAAe,IAAI,CAAC;QAEtB,IAAK,CAAA,KAAA,GAAY,OAAO,CAAC;;QAEzB,IAAI,CAAA,IAAA,GAAa,SAAS,CAAC;;QAEpB,IAAK,CAAA,KAAA,GAAmB,IAAI,CAAC;QACpC,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;QACxB,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAKnC,IAAY,CAAA,YAAA,GAAwB,IAAI,CAAC;AAEzC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;KALX;+GAXN,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAZ,YAAY,EAAA,QAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAaY,gBAAgB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBrD,wVAOM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDEO,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;+BACE,KAAK,EAAA,QAAA,EAAA,wVAAA,EAAA,CAAA;wDAKN,EAAE,EAAA,CAAA;sBAAV,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEU,KAAK,EAAA,CAAA;sBAApB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAIgD,aAAa,EAAA,CAAA;sBAAlE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAC,IAAI,EAAE,gBAAgB,EAAC,CAAA;;;MEbzC,aAAa,CAAA;AAQxB,IAAA,WAAA,GAAA;;AAFkB,QAAA,IAAA,CAAA,aAAa,GAAyB,IAAI,YAAY,EAAU,CAAC;QAanF,IAAS,CAAA,SAAA,GAAwB,IAAI,CAAC;QAQtC,IAAW,CAAA,WAAA,GAAY,IAAI,CAAC;KAlBvB;IAEL,kBAAkB,GAAA;AAChB,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;AAC1D,QAAA,IAAG,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAAE;QAEhG,IAAI,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;AACxK,QAAA,IAAG,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAC;YAAE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;SAAE;KACjF;AAGD,IAAA,YAAY,CAAC,GAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;AAChD,QAAA,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;AACrB,QAAA,IAAG,GAAG,CAAC,KAAK,EAAC;AAAE,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAAE;aAAK;AAAE,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SAAE;QAC3E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;KAC5C;IAGD,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAA;KAClE;+GA/BU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAGV,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,YAAY,EADT,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,YAAY,6BCX/B,uxBAaM,EAAA,MAAA,EAAA,CAAA,4uBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,IAAA,CAAA,UAAA,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,CAAA,EAAA;;4FDJO,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,SAAS;+BACE,MAAM,EAAA,QAAA,EAAA,uxBAAA,EAAA,MAAA,EAAA,CAAA,4uBAAA,CAAA,EAAA,CAAA;wDAMe,OAAO,EAAA,CAAA;sBAArC,eAAe;uBAAC,YAAY,CAAA;gBACA,MAAM,EAAA,CAAA;sBAAlC,YAAY;uBAAC,YAAY,CAAA;gBAGR,aAAa,EAAA,CAAA;sBAA9B,MAAM;uBAAC,QAAQ,CAAA;;;MEFL,UAAU,CAAA;+GAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,iBAJL,aAAa,EAAE,YAAY,CAAA,EAAA,OAAA,EAAA,CAEhC,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,CADtE,EAAA,OAAA,EAAA,CAAA,aAAa,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;AAGhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,EAFV,OAAA,EAAA,CAAA,YAAY,EAAE,WAAW,EAAsC,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAE3E,UAAU,EAAA,UAAA,EAAA,CAAA;kBALtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAE,aAAa,EAAE,YAAY,CAAE;AAC7C,oBAAA,OAAO,EAAO,CAAE,aAAa,EAAE,YAAY,CAAE;oBAC7C,OAAO,EAAE,CAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,CAAE;AACzF,iBAAA,CAAA;;;MCJY,aAAa,CAAA;AAIxB,IAAA,WAAA,GAAA;QAFgB,IAAK,CAAA,KAAA,GAAc,OAAO,CAAC;KAE1B;IAEjB,QAAQ,GAAA;KACP;AAID,IAAA,IAAI,KAAK,GAAA;QACP,IAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAC;AACrC,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACrD;AACD,QAAA,OAAO,CAAC,CAAC;KACV;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,IAAG,IAAI,CAAC,MAAM,EAAC;AACb,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;SAC3E;AACD,QAAA,OAAO,KAAK,CAAC;KACd;;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,IAAG,IAAI,CAAC,MAAM,EAAC;AACb,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;SAC3E;AACD,QAAA,OAAO,KAAK,CAAC;KACd;;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;KAC1B;+GAlCU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,wECR1B,ulBAUM,EAAA,MAAA,EAAA,CAAA,mnBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDFO,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,SAAS;+BACE,MAAM,EAAA,QAAA,EAAA,ulBAAA,EAAA,MAAA,EAAA,CAAA,mnBAAA,CAAA,EAAA,CAAA;wDAMA,KAAK,EAAA,CAAA;sBAApB,KAAK;;;AEAF,MAAO,gBAAiB,SAAQ,WAAgB,CAAA;AAEpD,IAAA,WAAA,GAAA;AAAgB,QAAA,KAAK,EAAE,CAAC;QAiBf,IAAM,CAAA,MAAA,GAAW,CAAC,CAAC;KAjBF;IAC1B,kBAAkB,GAAA;AAChB,QAAA,IAAG,IAAI,CAAC,QAAQ,EAAC;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG,EAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;SAC/E;KACF;AAEQ,IAAA,MAAM,QAAQ,GAAA;QACrB,KAAK,CAAC,QAAQ,EAAE,CAAC;KAClB;IAIQ,UAAU,CAAC,KAAU,EAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA,EAAE;IACvD,IAAa,KAAK,KAAe,OAAO,IAAI,CAAC,MAAM,CAAC,EAAG;IACvD,IAAa,KAAK,CAAC,KAAU,EAAA,EAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;AAG3F,IAAA,QAAQ,CAAC,KAAK,EAAA;AACZ,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;+GAvBU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAhB,gBAAgB,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAFhB,oBAAoB,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAe5C,aAAa,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvBhC,wHAEM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDQO,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAGR,SAAA,EAAA,oBAAoB,CAAC,WAAW,CAAkB,gBAAA,CAAA,EAAA,QAAA,EAAA,wHAAA,EAAA,CAAA;wDAe7B,QAAQ,EAAA,CAAA;sBAAvC,eAAe;uBAAC,aAAa,CAAA;;;METnB,aAAa,CAAA;+GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,EAPR,YAAA,EAAA,CAAA,aAAa,EAAE,gBAAgB,aAG7C,YAAY;YACZ,WAAW,CAAA,EAAA,OAAA,EAAA,CAHF,aAAa,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;AAM/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAJtB,YAAY;YACZ,WAAW,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGF,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAE,aAAa,EAAE,gBAAgB,CAAE;AACjD,oBAAA,OAAO,EAAE,CAAE,aAAa,EAAE,gBAAgB,CAAE;AAC5C,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;AACZ,qBAAA;AACF,iBAAA,CAAA;;;MCJY,wBAAwB,CAAA;AAEnC,IAAA,WAAA,GAAA,GAAiB;AAEjB,IAAA,QAAQ,MAAK;+GAJF,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,yDCTrC,yWAIM,EAAA,MAAA,EAAA,CAAA,szBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDKO,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,yWAAA,EAAA,MAAA,EAAA,CAAA,szBAAA,CAAA,EAAA,CAAA;;;MEElB,qBAAqB,CAAA;AAEhC,IAAA,WAAA,GAAA;AAGU,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU,CAAC;KAHlC;;AAQqB,IAAA,UAAU,CAAC,GAAc,EAAA;QAC7D,GAAG,CAAC,cAAc,EAAE,CAAC;QACrB,GAAG,CAAC,eAAe,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC;KACtC;;AAG6C,IAAA,WAAW,CAAC,GAAc,EAAA;QACtE,GAAG,CAAC,cAAc,EAAE,CAAC;QACrB,GAAG,CAAC,eAAe,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvC;;AAGwC,IAAA,MAAM,CAAC,GAAc,EAAA;QAC5D,GAAG,CAAC,cAAc,EAAE,CAAC;QACrB,GAAG,CAAC,eAAe,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtC,QAAA,IAAI,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC;AACnC,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SAC1C;KACF;+GAnCU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,wTAOlB,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAP3B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC3B,iBAAA,CAAA;wDAKgC,QAAQ,EAAA,CAAA;sBAAtC,WAAW;uBAAC,gBAAgB,CAAA;gBACnB,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAEiC,eAAe,EAAA,CAAA;sBAAtD,YAAY;uBAAC,wBAAwB,CAAA;gBAGA,UAAU,EAAA,CAAA;sBAA/C,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAQU,WAAW,EAAA,CAAA;sBAAxD,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAQI,MAAM,EAAA,CAAA;sBAA9C,YAAY;uBAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AC3BlC,MAAM,MAAM,GAAG;IACb,qBAAqB;IACrB,wBAAwB;CACzB,CAAA;MAWY,kBAAkB,CAAA;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBAb7B,qBAAqB;AACrB,YAAA,wBAAwB,aAQtB,YAAY;AACZ,YAAA,WAAW,aAVb,qBAAqB;YACrB,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;AAYb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAJ3B,YAAY;YACZ,WAAW,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGF,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAE,GAAG,MAAM,CAAE;AAC3B,oBAAA,OAAO,EAAO,CAAE,GAAG,MAAM,CAAE;AAC3B,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;AACZ,qBAAA;AACF,iBAAA,CAAA;;;MC6BY,UAAU,CAAA;AACrB,IAAA,WAAA,CACS,IAAoB;;IAEpB,MAAe;;IAEf,MAAe;;IAEf,UAA+B;;IAE/B,UAA+B;AACtC;;AAEG;IACI,GAAsB,GAAA,KAAK,EAC3B,aAAA,GAAyB,KAAK,EAAA;QAb9B,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAgB;QAEpB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAS;QAEf,IAAM,CAAA,MAAA,GAAN,MAAM,CAAS;QAEf,IAAU,CAAA,UAAA,GAAV,UAAU,CAAqB;QAE/B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAqB;QAI/B,IAAG,CAAA,GAAA,GAAH,GAAG,CAAwB;QAC3B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAiB;KACpC;AAEH,IAAA,QAAQ,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;IACD,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,YAAY,GAAA,EAAI,OAAQ,IAAI,CAAC,MAA0B,CAAC,IAAI,CAAC,EAAE;IAC/D,YAAY,GAAA,EAAI,OAAQ,IAAI,CAAC,MAA0B,CAAC,IAAI,CAAC,EAAE;AAE/D,IAAA,QAAQ,KAAI,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE;AACrC,IAAA,QAAQ,KAAI,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE;AAErC,IAAA,GAAG,CAAS,UAA8B,EAAA;AACxC,QAAA,OAAO,IAAI,UAAU,CAAyC,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC;KACrK;AAED,IAAA,EAAE,CAAS,UAA8B,EAAA;AACvC,QAAA,OAAO,IAAI,UAAU,CAAyC,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC;KACrK;AACF,CAAA;AAGD;;AAEG;AACG,SAAU,GAAG,CAAS,UAA8B,EAAA;AACxD,IAAA,OAAO,IAAI,UAAU,CAAS,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;AAChL,CAAC;AAED;;;;AAIG;AACG,SAAU,oBAAoB,CAAC,cAA4B,EAAA;IAC/D,IAAI,UAAU,GAAuB,IAAI,CAAC;AAC1C,IAAA,cAAc,CAAC,OAAO,CAAC,CAAC,EAAc,KAAI;AACxC,QAAA,IAAG,EAAE,CAAC,MAAM,EAAC;YACX,IAAG,UAAU,EAAC;gBACZ,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;aACxC;iBAAI;AACH,gBAAA,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC;aACxB;SACF;AACH,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;AAIG;AACG,SAAU,cAAc,CAAC,SAAwB,EAAA;IACrD,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AACpC,IAAA,IAAI,UAAU,GAAgB,SAAS,CAAC,CAAC,CAAC,CAAC;AAE3C,IAAA,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAE,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;QACtC,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3C;AAED,IAAA,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;AACA,IAAK,mBAaJ,CAAA;AAbD,CAAA,UAAK,mBAAmB,EAAA;AACtB,IAAA,mBAAA,CAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAc,CAAA;AACd,IAAA,mBAAA,CAAA,mBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;AACd,IAAA,mBAAA,CAAA,mBAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAc,CAAA;AACd,IAAA,mBAAA,CAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAc,CAAA;AACd,IAAA,mBAAA,CAAA,mBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAc,CAAA;AACd,IAAA,mBAAA,CAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAc,CAAA;AACd,IAAA,mBAAA,CAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAc,CAAA;AACd,IAAA,mBAAA,CAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAc,CAAA;AACd,IAAA,mBAAA,CAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAc,CAAA;AACd,IAAA,mBAAA,CAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAc,CAAA;AAEd,IAAA,mBAAA,CAAA,mBAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAe,CAAA;AACjB,CAAC,EAbI,mBAAmB,KAAnB,mBAAmB,GAavB,EAAA,CAAA,CAAA,CAAA;IAEW,eAmBX;AAnBD,CAAA,UAAY,cAAc,EAAA;;AAExB,IAAA,cAAA,CAAA,cAAA,CAAA,KAAA,CAAA,GAAA,GAAA,CAAA,GAAA,KAAU,CAAA;AACV,IAAA,cAAA,CAAA,cAAA,CAAA,IAAA,CAAA,GAAA,GAAA,CAAA,GAAA,IAAU,CAAA;;;;;AAKV,IAAA,cAAA,CAAA,cAAA,CAAA,KAAA,CAAA,GAAA,GAAA,CAAA,GAAA,KAAU,CAAA;;AAEV,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,GAAA,CAAA,GAAA,QAAwB,CAAA;AACxB,IAAA,cAAA,CAAA,cAAA,CAAA,YAAA,CAAA,GAAA,GAAA,CAAA,GAAA,YAAwB,CAAA;AACxB,IAAA,cAAA,CAAA,cAAA,CAAA,mBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,mBAAwB,CAAA;AACxB,IAAA,cAAA,CAAA,cAAA,CAAA,aAAA,CAAA,GAAA,GAAA,CAAA,GAAA,aAAwB,CAAA;AACxB,IAAA,cAAA,CAAA,cAAA,CAAA,oBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,oBAAwB,CAAA;AAExB,IAAA,cAAA,CAAA,cAAA,CAAA,uBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,uBAA2B,CAAA;AAC3B,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,GAAA,CAAA,GAAA,UAA2B,CAAA;;AAE7B,CAAC,EAnBW,cAAc,KAAd,cAAc,GAmBzB,EAAA,CAAA,CAAA,CAAA;MAEY,eAAe,CAAA;IAAE,WAAmB,CAAA,IAAY,EAAS,IAAyB,EAAA;QAA9C,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAAS,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAqB;KAAI;AAAE,CAAA;AAErG;AACM,MAAO,cAAe,SAAQ,eAAe,CAAA;AACjD,IAAA,WAAA,CAAY,IAAY,EAAE,IAA4B,GAAA,mBAAmB,CAAC,OAAO,EAAA;AAC/E,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACnB;AAED,IAAA,MAAM,CAAC,CAAgB,EAAA;AACrB,QAAA,OAAO,IAAI,UAAU,CAAgC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/H;AACD,IAAA,UAAU,CAAC,CAAgB,EAAA;AACzB,QAAA,OAAO,IAAI,UAAU,CAAgC,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACnI;AACD,IAAA,iBAAiB,CAAC,CAAgB,EAAA;AAChC,QAAA,OAAO,IAAI,UAAU,CAAgC,cAAc,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1I;AACD,IAAA,WAAW,CAAC,CAAgB,EAAA;AAC1B,QAAA,OAAO,IAAI,UAAU,CAAgC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACpI;AACD,IAAA,kBAAkB,CAAC,CAAgB,EAAA;AACjC,QAAA,OAAO,IAAI,UAAU,CAAgC,cAAc,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3I;AACF,CAAA;AAED;AACM,MAAO,WAAY,SAAQ,cAAc,CAAA;AAC7C,IAAA,WAAA,CAAY,IAAY,EAAA,EAAI,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE;AACnE,IAAA,QAAQ,CAAC,GAAwB,EAAA;AAC/B,QAAA,OAAO,IAAI,UAAU,CAAmC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACtI;AACF,CAAA;AACD;AACM,MAAO,YAAa,SAAQ,cAAc,CAAA;AAC9C,IAAA,WAAA,CAAY,IAAY,EAAA,EAAI,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE;AAEpE,IAAA,QAAQ,CAAC,GAAwB,EAAA;AAC/B,QAAA,OAAO,IAAI,UAAU,CAAoC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACvI;AACF,CAAA;AACD;AACM,MAAO,eAAgB,SAAQ,cAAc,CAAA;AACjD,IAAA,WAAA,CAAY,IAAY,EAAA,EAAI,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,EAAE;AACxE,CAAA;AAED;AACM,MAAO,kBAAmB,SAAQ,cAAc,CAAA;AACpD,IAAA,WAAA,CAAY,IAAY,EAAA,EAAI,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,EAAE;AACxE,CAAA;AACD;AACM,MAAO,gBAAiB,SAAQ,cAAc,CAAA;AAClD,IAAA,WAAA,CAAY,IAAY,EAAA,EAAI,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC,EAAE;AACzE,CAAA;AAED;AACM,MAAO,cAAe,SAAQ,eAAe,CAAA;AACjD,IAAA,WAAA,CAAY,IAAY,EAAA,EAAI,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC,EAAE;AAEtE,IAAA,MAAM,CAAC,MAAqB,EAAA;AAC1B,QAAA,OAAO,IAAI,UAAU,CAAgC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACpI;AACD,IAAA,QAAQ,CAAC,MAAqB,EAAA;AAC5B,QAAA,OAAO,IAAI,UAAU,CAAgC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACtI;AACD,IAAA,qBAAqB,CAAC,MAAqB,EAAA;AACzC,QAAA,OAAO,IAAI,UAAU,CAAgC,cAAc,CAAC,qBAAqB,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACnJ;AAIF,CAAA;AAED;AACM,MAAO,YAAa,SAAQ,eAAe,CAAA;AAC/C,IAAA,WAAA,CAAY,IAAY,EAAA,EAAI,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE;AAEpE,IAAA,MAAM,CAAC,MAAsB,EAAA;AAC3B,QAAA,OAAO,IAAI,UAAU,CAA+B,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACnI;AACF,CAAA;AAED;AACM,MAAO,YAAa,SAAQ,eAAe,CAAA;AAC/C,IAAA,WAAA,CAAY,IAAY,EAAE,IAA4B,GAAA,mBAAmB,CAAC,QAAQ,EAAA;AAChF,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACnB;AAED,IAAA,MAAM,CAAC,CAAgB,EAAA;AACrB,QAAA,OAAO,IAAI,UAAU,CAA8B,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7H;AACD,IAAA,UAAU,CAAC,CAAgB,EAAA;AACzB,QAAA,OAAO,IAAI,UAAU,CAA8B,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACjI;AACD,IAAA,iBAAiB,CAAC,CAAgB,EAAA;AAChC,QAAA,OAAO,IAAI,UAAU,CAA8B,cAAc,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACxI;AACD,IAAA,WAAW,CAAC,CAAgB,EAAA;AAC1B,QAAA,OAAO,IAAI,UAAU,CAA8B,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KAClI;AACD,IAAA,kBAAkB,CAAC,CAAgB,EAAA;AACjC,QAAA,OAAO,IAAI,UAAU,CAA8B,cAAc,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACzI;AACF,CAAA;AAED;AACM,MAAO,gBAAiB,SAAQ,YAAY,CAAA;AAChD,IAAA,WAAA,CAAY,IAAY,EAAA,EAAI,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC,EAAE;AACzE,CAAA;AAED;AACM,MAAO,SAAU,SAAQ,eAAe,CAAA;AAC5C,IAAA,WAAA,CAAmB,KAA0B,EAAA;AAAI,QAAA,KAAK,CAAC,aAAa,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAA7E,IAAK,CAAA,KAAA,GAAL,KAAK,CAAqB;KAAqD;IAElG,QAAQ,CAAC,CAAoC,EAAE,UAAgC,EAAA;AAC7E,QAAA,IAAG,CAAC,YAAY,eAAe,EAAC;AAC9B,YAAA,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC;SAC3C;AACD,QAAA,OAAO,IAAI,UAAU,CAA+C,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;KAC5H;AACF;;AClRD;MAEsB,IAAI,CAAA;AAOxB,IAAA,WAAA,GAAA;;AAOA,QAAA,IAAA,CAAA,aAAa,GAAoC,KAAK,CAAqB,IAAI,CAAC,CAAC;QAOjF,IAAQ,CAAA,QAAA,GAAQ,EAAE,CAAC;QAEnB,IAAM,CAAA,MAAA,GAAc,KAAK,CAAC;QAC1B,IAAO,CAAA,OAAA,GAAa,IAAI,CAAC;;AAGhB,QAAA,IAAA,CAAA,GAAG,GAAgB,IAAI,WAAW,EAAE,CAAC;;QAGrC,IAAc,CAAA,cAAA,GAAiB,EAAE,CAAC;QAtBzC,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,UAAU,EAAE,CAAC;AACpB,SAAC,CAAC,CAAC;KACJ;AAqBD,IAAA,MAAM,QAAQ,GAAA;QACZ,IAAG,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,EAAC;YACjC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;SACnD;AACD,QAAA,IAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAC;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAA;SAAC;AAC3E,QAAA,IAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAC;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAA;SAAC;;QAG9E,IAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,EAAC;AAC7C,YAAA,IAAI,CAAC,MAAM,GAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,OAAkB,CAAC,WAAW,EAAE,IAAI,aAAa,CAAC;SAC9G;aAAI;AACH,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;AAED,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACxB,QAAA,IAAG,IAAI,CAAC,MAAM,EAAC;YAAE,IAAI,CAAC,OAAO,EAAE,CAAC;SAAE;KACnC;AAES,IAAA,MAAM,UAAU,GAAA;AACxB,QAAA,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAQ,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAChE,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AAC3C,QAAA,MAAM,OAAO,GAAkB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AACzD,QAAA,KAAI,MAAM,KAAK,IAAI,OAAO,EAAC;YACzB,IAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAC;AAC1B,gBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aAC9C;iBAED,IAAG,KAAK,EAAC;AACP,gBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;aACzB;SACF;KACF;AAED,IAAA,MAAM,gBAAgB,GAAA;AACpB,QAAA,IAAG;AACD,YAAA,MAAM,IAAI,IAAe,MAAM,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAc,CAAC;AAEtF,YAAA,MAAM,EAAE,GAAK,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;AACtG,YAAA,IAAI,KAAK,GAAW,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1I,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,GAAkB,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxG,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,GAAI,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC;SACpG;gBAAO;YACN,OAAO;SACR;KACF;IAED,MAAM,OAAO,CAAC,KAA4B,EAAA;AACxC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAG;AACD,YAAA,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;SACnB;gBACM;YACL,IAAG,KAAK,EAAC;AAAE,gBAAA,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;aAAE;AACrC,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB;KACF;AAED,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,IAAI,QAAqB,CAAC;AAE1B,QAAA,IAAG;AACD,YAAA,IAAG,IAAI,CAAC,QAAQ,EAAC;gBACf,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;aAC7E;iBACG;AACF,gBAAA,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;aAC9D;AACD,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;AAClC,YAAA,IAAI,CAAC,KAAK,GAAM,QAAQ,CAAC,KAAK,CAAC;SAChC;gBAAQ;YACP,OAAO;SACR;KACF;+GAzGmB,IAAI,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAJ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,IAAI,2wBADH,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FACH,IAAI,EAAA,UAAA,EAAA,CAAA;kBADzB,SAAS;+BAAa,EAAE,EAAA,CAAA;wDAMd,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAaG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBASG,GAAG,EAAA,CAAA;sBAAX,KAAK;gBAGG,cAAc,EAAA,CAAA;sBAAtB,KAAK;;;ACtCR;MAMa,mBAAmB,CAAA;IAuC9B,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC1B;AAED,IAAA,WAAA,CAAoB,WAA+B,EAAA;QAA/B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;AAvCzC,QAAA,IAAA,CAAA,WAAW,GAAgC,IAAI,YAAY,EAAiB,CAAC;AAI7E,QAAA,IAAA,CAAA,UAAU,GAAyB,IAAI,YAAY,EAAU,CAAC;AAI9D,QAAA,IAAA,CAAA,YAAY,GAAgC,IAAI,YAAY,EAAiB,CAAC;AAIxF;;;;AAIG;AACgB,QAAA,IAAA,CAAA,cAAc,GAAuB,IAAI,YAAY,EAAQ,CAAC;;QAGxE,IAAI,CAAA,IAAA,GAAY,MAAM,CAAC;;QAGvB,IAAK,CAAA,KAAA,GAAY,KAAK,CAAC;;QAEvB,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;;QAExB,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;;QAI1B,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;;AAErB,QAAA,IAAA,CAAA,YAAY,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAW7E,IAAS,CAAA,SAAA,GAAiB,EAAE,CAAA;QAJ1B,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC;QAC3D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;KACrC;IAGD,UAAU,GAAA;QACR,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAED,SAAS,GAAA;QACP,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAExB,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC5B;AAGD,IAAA,UAAU,CAAC,MAAqB,EAAA;QAC9B,IAAG,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,MAAM,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,EAAC;YAC/E,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAyB,CAAC,QAAQ,EAAE,CAAC;YAC3E,MAAM,CAAC,cAAc,EAAE,CAAC;SACzB;KACF;+GAvEU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,ybCbhC,yiDA+BM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,OAAA,EAAA,YAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,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,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDlBO,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,aAAa,EAAA,QAAA,EAAA,yiDAAA,EAAA,CAAA;oFAOb,KAAK,EAAA,CAAA;sBAAd,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAGE,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAGE,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACI,YAAY,EAAA,CAAA;sBAArB,MAAM;gBAEE,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAOa,cAAc,EAAA,CAAA;sBAAhC,MAAM;uBAAC,SAAS,CAAA;gBAGR,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAGG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAIG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEW,YAAY,EAAA,CAAA;sBAA5B,MAAM;uBAAC,OAAO,CAAA;gBA6Bf,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,gBAAgB,EAAC,CAAC,QAAQ,CAAC,CAAA;;;AE1E3C;MAMa,0BAA0B,CAAA;;IAMrC,IAAoB,MAAM,CAAC,KAAa,EAAA;AACtC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;KACpC;;;IAED,IAAoB,MAAM,CAAC,KAAoB,EAAA;AAC7C,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;KACpC;;AAaD,IAAA,WAAA,CACU,cAA8B,EAAA;QAA9B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QA3BxC,IAAK,CAAA,KAAA,GAAW,CAAC,CAAC;QAClB,IAAK,CAAA,KAAA,GAAkB,CAAC,CAAC;AAoBf,QAAA,IAAA,CAAA,UAAU,GAAyB,IAAI,YAAY,EAAU,CAAC;;AAGtD,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAO/E,QAAA,IAAA,CAAA,MAAM,GAAW,aAAa,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QAoCtD,IAAQ,CAAA,QAAA,GAAe,EAAE,CAAC;QAC1B,IAAU,CAAA,UAAA,GAAW,CAAC,CAAC;KAxClB;AAEL,IAAA,QAAQ,MAAK;IAGb,WAAW,GAAA;AACT,QAAA,IAAG,CAAC,IAAI,CAAC,UAAU,EAAC;AAAE,YAAA,OAAO,EAAE,CAAC;SAAE;AAClC,QAAA,IAAI,UAAkB,CAAC;QACvB,IAAI,KAAK,GAAa,EAAE,CAAC;AAEzB,QAAA,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAE3B,IAAI,CAAC,GAAa,EAAE,CAAC;AACrB,QAAA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAG,CAAC,EAAE,EAAC;AAC1D,YAAA,IAAG,CAAC,GAAG,CAAC,EAAC;AACP,gBAAA,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACX;SACF;QAED,KAAI,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,EAAE,EAAC;AACtE,YAAA,IAAG,CAAC,GAAG,CAAC,EAAC;AACP,gBAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACf;SACF;QACD,IAAG,UAAU,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAC;AACzC,YAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACf;QAED,IAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC;AACjB,YAAA,OAAO,CAAC,CAAC;SACV;AAED,QAAA,OAAO,KAAK,CAAC;KACd;IAED,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;KAC5F;IAKD,OAAO,GAAA;QACL,IAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAC;YAAE,OAAO;SAAE;QAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;KAC7B;IAED,OAAO,GAAA;QACL,IAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAC;YAAE,OAAO;SAAE;QAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;KAC7B;AAED,IAAA,OAAO,CAAC,KAAa,EAAA;AACnB,QAAA,IAAG,KAAK,IAAI,IAAI,CAAC,IAAI,EAAC;AACpB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,CAAC,UAAU,EAAE,CAAA;YAEjB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACvC,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;aACpC,EAAE,GAAG,CAAC,CAAC;SACT;KACF;IAGD,aAAa,GAAA;AACX,QAAA,IAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,EAAC;AAC/D,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC1B;aAAI;AACH,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAA;SACpD;KACF;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC3B;+GA1GU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAS,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,oPCVvC,ysFAmDM,EAAA,MAAA,EAAA,CAAA,4pBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAxB,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDzCO,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,ysFAAA,EAAA,MAAA,EAAA,CAAA,4pBAAA,CAAA,EAAA,CAAA;gFAUV,MAAM,EAAA,CAAA;sBAAzB,KAAK;uBAAC,OAAO,CAAA;gBAMM,MAAM,EAAA,CAAA;sBAAzB,KAAK;uBAAC,OAAO,CAAA;gBAOL,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAGG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAGW,aAAa,EAAA,CAAA;sBAA9B,MAAM;uBAAC,QAAQ,CAAA;;;MExBL,iBAAiB,CAAA;AAO5B,IAAA,WAAA,GAAA;AAHA,QAAA,IAAA,CAAA,IAAI,GAAW,KAAK,CAAC,YAAY,EAAE,CAAC;QAwDpC,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;QAEhC,IAAK,CAAA,KAAA,GAAe,IAAI,CAAC;QACzB,IAAY,CAAA,YAAA,GAAe,IAAI,CAAC;QAChC,IAAY,CAAA,YAAA,GAAe,IAAI,CAAC;AACd,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;KA1D9D;IAEjB,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;AAE9C,QAAA,IAAG,CAAC,IAAI,CAAC,aAAa,EAAC;YACrB,IAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC;AAAE,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,sBAAsB,EAAE,CAAA;aAAE;iBACvI,IAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,EAAK;AAAE,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,sBAAsB,EAAE,CAAA;aAAM;iBAClG,IAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,EAAG;AAAE,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,wBAAwB,EAAE,CAAA;aAAI;iBAClG,IAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,OAAO,EAAE;AAAE,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,yBAAyB,EAAE,CAAA;aAAG;iBAClG,IAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAC;AAAE,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,0BAA0B,EAAE,CAAA;aAAE;iBAClG,IAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,EAAG;AAAE,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,wBAAwB,EAAE,CAAA;aAAI;iBAClG,IAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,EAAG;AAAE,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,wBAAwB,EAAE,CAAA;aAAI;iBAClG,IAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAC;AACvC,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,wBAAwB,EAAE,CAAC;aACrD;iBACD,IAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,EAAK;AACvC,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,sBAAsB,EAAE,CAAC;aACnD;SACF;AAED,QAAA,IAAG,IAAI,CAAC,aAAa,YAAY,wBAAwB,EAAC;AACxD,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,wBAAwB,CAC/C,IAAI,CAAC,aAAa,CAAC,SAAS,EAC5B,IAAI,CAAC,aAAa,CAAC,SAAS,EAC5B,IAAI,EACJ,IAAI,EACJ,IAAI,CAAC,aAAa,CAAC,QAAQ,EAC3B,IAAI,CACL,CAAC;SACH;AAED,QAAA,IAAG,IAAI,CAAC,aAAa,YAAY,sBAAsB,EAAC;YACtD,IAAI,CAAC,aAAa,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;SACvD;QAED,IAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,EAAC;YACnC,IAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,EAAC;AAC7B,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;AACnG,oBAAA,EAAE,KAAK,EAAE,gBAAgB,EAAM,KAAK,EAAE,IAAI,EAAG;AAC7C,oBAAA,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE;AAC9C,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;aACnB;iBACG;AACF,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;AAC/E,oBAAA,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAG;AAC9B,oBAAA,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AAC/B,iBAAA,CAAC,CAAA;aACH;SACF;KACF;IASD,MAAM,GAAA;QACJ,IAAG,CAAC,CAAC,QAAO,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,EAAC;YAC9K,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO;SACR;QAED,IAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC;AACrF,YAAA,IAAI,MAAM,GAAI,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACxF,YAAA,IAAI,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzF,IAAI,UAAU,GAAuB,IAAI,CAAC;AAC1C,YAAA,IAAG,IAAI,CAAC,YAAY,EAAC;gBACnB,UAAU,GAAG,MAAM,CAAC;aACrB;AACD,YAAA,IAAG,IAAI,CAAC,YAAY,EAAC;gBACnB,IAAG,UAAU,EAAC;AAAE,oBAAA,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;iBAAE;qBAAK;oBAAE,UAAU,GAAG,OAAO,CAAC;iBAAE;aACtF;AAED,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;AAC/B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAC1B,OAAO;SACR;AACD,aAAA,IAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9E,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAC1B,OAAO;SACR;aACD,IAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,EAAC;YACrC,MAAM,QAAQ,GAAqB,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AACzE,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACjE,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAC1B,OAAO;SACR;aACD,IAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,EAAC;YACnC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1E,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAC1B,OAAO;SACR;aACD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAC;AAC7E,YAAA,IAAG,IAAI,CAAC,YAAY,EAAC;gBACnB,IAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,EAAC;AAAE,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAA;iBAAE;aAC3G;AACD,YAAA,IAAG,IAAI,CAAC,YAAY,EAAC;gBACnB,IAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,EAAC;AAAE,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAA;iBAAE;aAC3G;AAED,YAAA,IAAI,UAAU,GAAI,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC1F,YAAA,IAAI,WAAW,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3F,IAAI,UAAU,GAAuB,IAAI,CAAC;AAC1C,YAAA,IAAG,IAAI,CAAC,YAAY,EAAC;gBACnB,UAAU,GAAG,UAAU,CAAC;aACzB;AACD,YAAA,IAAG,IAAI,CAAC,YAAY,EAAC;gBACnB,IAAG,UAAU,EAAC;AAAE,oBAAA,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;iBAAE;qBAAK;oBAAE,UAAU,GAAG,WAAW,CAAC;iBAAE;aAC9F;AAED,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;AAC/B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAC1B,OAAO;SACR;AAGD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC3B;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,OAAO;KACR;+GA7IU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,mHCb9B,63HA6DA,EAAA,MAAA,EAAA,CAAA,6cAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,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,EAAA0C,kBAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,+DAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,qBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDhDa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACE,WAAW,EAAA,QAAA,EAAA,63HAAA,EAAA,MAAA,EAAA,CAAA,6cAAA,CAAA,EAAA,CAAA;wDAMZ,KAAK,EAAA,CAAA;sBAAb,KAAK;gBA+DY,aAAa,EAAA,CAAA;sBAA9B,MAAM;uBAAC,QAAQ,CAAA;;;AE9DlB;MAMa,qBAAqB,CAAA;AA0DhC,IAAA,WAAA,CACS,cAA+B,EAC9B,cAA8B,EAC9B,MAAsB,EAAA;QAFvB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAiB;QAC9B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;AAhDtB,QAAA,IAAA,CAAA,WAAW,GAAyB,IAAI,YAAY,EAAU,CAAC;AAI/D,QAAA,IAAA,CAAA,UAAU,GAAyB,IAAI,YAAY,EAAU,CAAC;AAI9D,QAAA,IAAA,CAAA,qBAAqB,GAAgC,IAAI,YAAY,EAAiB,CAAC;AAMvF,QAAA,IAAA,CAAA,eAAe,GAA0B,IAAI,YAAY,EAAW,CAAC;AAKrE,QAAA,IAAA,CAAA,YAAY,GAA8B,IAAI,YAAY,EAAe,CAAC;;QAGlE,IAAa,CAAA,aAAA,GAAyB,IAAI,YAAoB,CAAC;AAC9D,QAAA,IAAA,CAAA,cAAc,GAAuB,IAAI,YAAY,EAAQ,CAAC;;QAIxE,IAAK,CAAA,KAAA,GAAU,EAAE,CAAC;;QAGlB,IAAc,CAAA,cAAA,GAAiB,EAAE,CAAC;;QAGlC,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;;QAG3B,IAAW,CAAA,WAAA,GAAmD,IAAI,CAAC;;QAEnE,IAAW,CAAA,WAAA,GAAmD,IAAI,CAAC;;QAEnE,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;;QAE9B,IAAQ,CAAA,QAAA,GAAkB,UAAU,CAAA;AAC7C,QAAA,IAAA,CAAA,aAAa,GAAG,SAAS,CAAC,IAAI,CAAA;KAMzB;IAEL,QAAQ,CAAC,KAAiB,EAAE,IAAS,EAAA;AACnC,QAAA,IAAG,CAAC,IAAI,CAAC,cAAc,EAAC;YACtB,OAAO;SACR;AACD,aAAA,IAAG,KAAK,CAAC,KAAK,IAAI,OAAO,EAAC;YACxB,OAAO;SACR;AACD,aAAA,IAAG,KAAK,CAAC,IAAI,IAAK,MAAM,EAAC;YACvB,OAAO;SACR;aAAI;AACH,YAAA,IAAG,IAAI,CAAC,QAAQ,EAAC;AACf,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AACnB,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzD,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,CAAA,CAAE,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAA;aACzE;SACF;KACF;IAED,QAAQ,GAAA;AACN,QAAA,IAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,EAAC;YACxD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC;SAC1D;QACD,IAAG,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,EAAC;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAA;SAAE;AAEnG,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,aAAa,YAAY,wBAAwB,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;KACzI;AAED,IAAA,WAAW,CAAC,KAAiB,EAAA;QAC3B,IAAG,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAC;AACrC,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC;AACnC,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB;AACI,aAAA,IAAG,IAAI,CAAC,SAAS,EAAC;AACrB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SACxB;aACG;AAAE,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAAE;QAEpC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QACrD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE1C,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;AAED,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU,EAAE,CAAA;KAClB;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC5B;IAED,QAAQ,CAAC,IAAS,EAAE,KAAkB,EAAA;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAChC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AACxB,QAAA,IAAG,CAAC,QAAQ,EAAC,SAAS,EAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAC;AAChD,YAAA,MAAM,MAAM,GAA+B,KAAK,CAAC,aAA2C,CAAA;AAC5F,YAAA,OAAO,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,CAAK,EAAA,EAAA,MAAM,CAAC,SAAS,CAAI,CAAA,EAAA,MAAM,CAAC,SAAS,CAAE,CAAA,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;SAC7H;AACD,aAAA,IAAG,IAAI,IAAI,UAAU,EAAC;YACpB,IAAG,CAAC,KAAK,EAAC;AAAE,gBAAA,OAAO,GAAG,CAAC;aAAE;AACzB,YAAA,OAAO,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;SAC3C;AACD,aAAA,IAAG,IAAI,IAAI,MAAM,EAAC;YAChB,IAAG,CAAC,KAAK,EAAC;AAAE,gBAAA,OAAO,GAAG,CAAC;aAAE;AACzB,YAAA,OAAO,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;SACvC;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAED,cAAc,CAAC,IAAS,EAAE,MAAkB,EAAA;AAC1C,QAAA,MAAM,aAAa,GAA6B,MAAM,CAAC,aAAa,CAAC;AACrE,QAAA,OAAO,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;KACnE;AAED,IAAA,SAAS,CAAC,GAAG,EAAA;AACX,QAAA,OAAO,QAAO,GAAG,CAAC,CAAA;KACnB;AAED,IAAA,MAAM,CAAC,EAAE,EAAA;AACP,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC7B;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC5B;IAED,YAAY,CAAC,KAAK,EAAE,IAAI,EAAA;QACtB,IAAI,OAAO,GAAY,EAAE,CAAC;AAC1B,QAAA,IAAG,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC;YACnD,OAAO,IAAI,YAAY,CAAC;SACzB;AACD,QAAA,IAAG,IAAI,CAAC,WAAW,EAAC;YAClB,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SAChD;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;IACD,UAAU,CAAC,KAAK,EAAE,IAAI,EAAA;AACpB,QAAA,IAAG,IAAI,CAAC,WAAW,EAAC;YAClB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SACtC;AACD,QAAA,OAAO,EAAE,CAAC;KACX;+GAvKU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAxB,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAd,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,+rBCtBlC,01MAyGA,EAAA,MAAA,EAAA,CAAA,i3CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6B,uBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,UAAA,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,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoC,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDnFa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,01MAAA,EAAA,MAAA,EAAA,CAAA,i3CAAA,CAAA,EAAA,CAAA;sIAOP,cAAc,EAAA,CAAA;sBAA/B,KAAK;uBAAC,SAAS,CAAA;gBAEP,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAIG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAGG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAGE,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAGE,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACI,qBAAqB,EAAA,CAAA;sBAA9B,MAAM;gBAKE,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACI,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBAIU,MAAM,EAAA,CAAA;sBAAtB,KAAK;uBAAC,QAAQ,CAAA;gBACL,YAAY,EAAA,CAAA;sBAArB,MAAM;gBAGW,aAAa,EAAA,CAAA;sBAA9B,MAAM;uBAAC,QAAQ,CAAA;gBACG,cAAc,EAAA,CAAA;sBAAhC,MAAM;uBAAC,SAAS,CAAA;gBACR,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAGG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAGG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAGG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAGG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;AErER;;;AAGG;AAMG,MAAO,oBAA+D,SAAQ,IAAO,CAAA;AA8BzF,IAAA,WAAA,CACkB,UAA0B,EAC1B,cAA8B,EAC9B,cAA8B,EAAA;AAC5C,QAAA,KAAK,EAAE,CAAC;QAHM,IAAU,CAAA,UAAA,GAAV,UAAU,CAAgB;QAC1B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;;;QA7BvC,IAAK,CAAA,KAAA,GAAY,KAAK,CAAC;;QAEvB,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;;QAExB,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;;QAG1B,IAAW,CAAA,WAAA,GAAmD,IAAI,CAAC;;QAEnE,IAAW,CAAA,WAAA,GAAmD,IAAI,CAAC;;QAGnE,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;;AAErB,QAAA,IAAA,CAAA,YAAY,GAAuB,IAAI,YAAY,EAAQ,CAAC;;;QAMpE,IAAY,CAAA,YAAA,GAAa,KAAK,CAAC;;QAE/B,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;;QAE/B,IAAQ,CAAA,QAAA,GAAkB,UAAU,CAAA;KAM/B;IAEP,MAAM,MAAM,CAAC,EAAU,EAAA;QAC5B,IAAG,EAAE,IAAI,CAAC,OAAO,YAAY,gBAAgB,CAAC,EAAC;YAAE,OAAO;SAAE;AAC1D,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAG;YACD,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;AAAA,QAAA,MAAK;AACJ,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB;KACF;AAEQ,IAAA,MAAM,QAAQ,GAAA;AACrB,QAAA,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;KACxB;+GAjDU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAjD,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAoC,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,kcCjBjC,k6EA0Dc,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,IAAA,CAAA,UAAA,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,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkD,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,eAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,QAAA,EAAA,SAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDzCD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,cAAc,EAAA,QAAA,EAAA,k6EAAA,EAAA,CAAA;wIAQf,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAGG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAGG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEW,YAAY,EAAA,CAAA;sBAA5B,MAAM;uBAAC,OAAO,CAAA;gBAE8B,aAAa,EAAA,CAAA;sBAAzD,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAIlC,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAEG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MEpCK,mBAAmB,CAAA;IAW9B,WACU,CAAA,aAA4B,EAC5B,cAA8B,EAAA;QAD9B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAX/B,IAAI,CAAA,IAAA,GAAY,KAAK,CAAC;QAEtB,IAAQ,CAAA,QAAA,GAAkB,IAAI,CAAC;AACxB,QAAA,IAAA,CAAA,WAAW,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAElE,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;QACxB,IAAK,CAAA,KAAA,GAAa,KAAK,CAAC;QACxB,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;KAKvC;AAEL,IAAA,QAAQ,MAAK;AAEb,IAAA,IAAc,SAAS,GAAA;AACrB,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAErD,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI,MAAM,GAAG,CAAC,CAAC;AACf,QAAA,IAAG,MAAM,CAAC,EAAE,CAAC,EAAC;AAAE,YAAA,MAAM,EAAE,CAAC;SAAE;QAC3B,IAAI,KAAK,GAAa,EAAE,CAAA;AACxB,QAAA,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,EAAC;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SAAE;AAC/E,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACxB;IAGM,IAAI,CAAC,MAAM,GAAG,IAAI,EAAA;AACvB,QAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;KAC1C;IAEM,GAAG,GAAA;AACR,QAAA,IAAG,CAAC,IAAI,CAAC,IAAI,EAAC;AACZ,YAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,cAAc,EAAC,CAAC,CAAC;SACjF;KACF;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACzB;+GA1CU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAnD,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAnB,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA6BnB,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,KAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtC1B,kgFAqDM,EAAA,MAAA,EAAA,CAAA,yIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,IAAA,CAAA,UAAA,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,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAe,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD5CO,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,aAAa,EAAA,QAAA,EAAA,kgFAAA,EAAA,MAAA,EAAA,CAAA,yIAAA,CAAA,EAAA,CAAA;iHAMd,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACU,WAAW,EAAA,CAAA;sBAA1B,MAAM;uBAAC,MAAM,CAAA;gBAEL,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAoBoB,oBAAoB,EAAA,CAAA;sBAA7C,SAAS;uBAAC,aAAa,CAAA;gBAIN,mBAAmB,EAAA,CAAA;sBAApC,SAAS;uBAAC,KAAK,CAAA;;;ME3BI,IAAI,CAAA;AAiBxB,IAAA,WAAA,GAAA;;QAfS,IAAE,CAAA,EAAA,GAAyB,IAAI,CAAC;QAChC,IAAO,CAAA,OAAA,GAAc,KAAK,CAAC;QAC3B,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAW1B,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;AASlC;;AAEI;QACK,IAAc,CAAA,cAAA,GAAiB,EAAE,CAAC;QAC3B,IAAY,CAAA,YAAA,GAAkB,WAAW,CAAA;;AAqEzC,QAAA,IAAA,CAAA,WAAW,GAAyB,IAAI,YAAY,EAAU,CAAC;AA/E7E,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAA;AAC5C,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAA;AAC5C,QAAA,IAAI,CAAC,UAAU,GAAO,MAAM,CAAC,UAAU,CAAC,CAAA;AACxC,QAAA,IAAI,CAAC,EAAE,GAAe,MAAM,CAAC,WAAW,CAAC,CAAA;KAC1C;AAUD,IAAA,MAAM,QAAQ,GAAA;QACZ,IAAG,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,EAAC;YACjC,IAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,EAAC;gBAC7C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;aACvD;iBAAI;gBACH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;aACnD;SACF;AAED,QAAA,IAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAC;AACjB,YAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;SAC7D;AAED,QAAA,IAAG,CAAC,IAAI,CAAC,OAAO,EAAC;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;SAAE;AACpE,QAAA,IAAI,4BAA4B,CAAC,IAAI,CAAC,EAAE;YAAE,IAAI,CAAC,oBAAoB,EAAE,CAAA;SAAE;AACvE,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACxB,QAAA,IAAI,2BAA2B,CAAC,IAAI,CAAC,EAAE;YAAE,IAAI,CAAC,mBAAmB,EAAE,CAAA;SAAE;AAErE,QAAA,IAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,EAAC;AACjG,YAAA,IAAI,CAAC,MAAM,GAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,OAAkB,CAAC,WAAW,EAAE,IAAI,aAAa,CAAC;SAC9G;aAAI;AACH,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;AAED,IAAA,MAAM,OAAO,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAG;AACD,YAAA,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;SACnB;AAAO,gBAAA,GAAG;AACX,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtB;IAED,IAAI,GAAA;QACF,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;AAC3C,YAAA,IAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAC;AAAE,gBAAA,OAAO,EAAE,CAAC;aAAE;;gBAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;oBAClC,IAAI,EAAE,CAAC,GAAG,KAAO,EAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE;oBACvD,KAAK,EAAC,CAAC,GAAG,OAAO,MAAM,EAAE,CAAC,EAAE;AAC7B,iBAAA,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;AAGD,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,IAAI,CAAC,GAAG,GAAG,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACtE,QAAA,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC/B;AACD,IAAA,MAAM,gBAAgB,GAAA;AACpB,QAAA,IAAG;YACD,MAAM,IAAI,GAAc,MAAM,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAc,CAAC;YACpF,IAAG,IAAI,EAAC;AACN,gBAAA,MAAM,EAAE,GAAK,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;gBAEtG,IAAG,EAAE,EAAC;AACJ,oBAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC/E,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;iBAC1G;aACF;SACF;QAAA,MAAK,GAAG;KACV;AAID,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,MAAM,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAChC;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAErD,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI,MAAM,GAAG,CAAC,CAAC;AACf,QAAA,IAAG,MAAM,CAAC,EAAE,CAAC,EAAC;AAAE,YAAA,MAAM,EAAE,CAAC;SAAE;QAC3B,IAAI,KAAK,GAAa,EAAE,CAAA;AACxB,QAAA,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,EAAC;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SAAE;AAC/E,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACxB;AAEM,IAAA,iBAAiB,KAAqB,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE;AAGhE,IAAA,cAAc,GAAU,EAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE;AAMpF,IAAA,UAAU,CAAC,MAAqB,EAAA;QAC9B,IAAG,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAC;YAC9H,OAAO;SACR;AACD,QAAA,IAAG,MAAM,CAAC,GAAG,IAAI,QAAQ,EAAC;AACxB,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,CAAC,cAAc,EAAE,CAAC;YACxB,OAAO;SACR;AACD,QAAA,IAAG,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,MAAM,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,EAAC;YAC/D,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,MAAM,CAAC,cAAc,EAAE,CAAC;YACxB,OAAO;SACR;QACD,IAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,QAAQ,EAAC;AACzC,YAAA,IAAI,CAAC,0BAA0B,CAAC,GAAG,EAAE,CAAC;YACtC,MAAM,CAAC,cAAc,EAAE,CAAC;YACxB,OAAO;SACR;KACF;+GA9ImB,IAAI,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAJ,IAAI,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAwHb,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAzHT,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FACH,IAAI,EAAA,UAAA,EAAA,CAAA;kBADzB,SAAS;+BAAa,EAAE,EAAA,CAAA;wDAGd,EAAE,EAAA,CAAA;sBAAV,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAmBG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACU,YAAY,EAAA,CAAA;sBAA3B,KAAK;gBAGiB,OAAO,EAAA,CAAA;sBAA7B,SAAS;uBAAC,UAAU,CAAA;gBAkEL,WAAW,EAAA,CAAA;sBAA1B,MAAM;uBAAC,MAAM,CAAA;gBAuBkB,0BAA0B,EAAA,CAAA;sBAAzD,SAAS;uBAAC,mBAAmB,CAAA;gBAG9B,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,gBAAgB,EAAC,CAAC,QAAQ,CAAC,CAAA;;AA2B3C;MAEsB,YAAY,CAAA;IAOhC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;KAC7D;IAEM,OAAO,WAAW,CAAC,SAAS,EAAA;QACjC,OAAO,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAA;KAC3D;+GAbmB,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,oDADX,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FACH,YAAY,EAAA,UAAA,EAAA,CAAA;kBADjC,SAAS;+BAAa,EAAE,EAAA,CAAA;;AAoBzB,SAAS,4BAA4B,CAAC,MAAW,EAAA;IAC/C,OAAO,sBAAsB,IAAI,MAAM,CAAC;AAC1C,CAAC;AAID,SAAS,2BAA2B,CAAC,MAAW,EAAA;IAC9C,OAAO,qBAAqB,IAAI,MAAM,CAAC;AACzC;;ACtLA;AAMM,MAAO,oBAA+D,SAAQ,IAAO,CAAA;IASzF,WACkB,CAAA,EAAe,EACf,UAAsB,EACtB,cAA8B,EAC9B,cAA8B,EAC9B,aAA4B,EAAA;AAC1C,QAAA,KAAK,EAAE,CAAC;QALM,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QACf,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;;QAXrC,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;;QAExB,IAAK,CAAA,KAAA,GAAa,KAAK,CAAC;;QAExB,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;KAQ1B;+GAfH,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAf,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAW,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,yJCjBjC,ijMAgFc,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA0C,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,+DAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,qBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,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,EAAAC,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD/DD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,cAAc,EAAA,QAAA,EAAA,ijMAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA,CAAA;8LAOf,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,aAAa,EAAA,CAAA;sBAArB,KAAK;;;AENR,MAAM,aAAa,GAAG;IACpB,mBAAmB;IACnB,oBAAoB;IAEpB,oBAAoB;IACpB,mBAAmB;IACnB,qBAAqB;IACrB,0BAA0B;IAC1B,iBAAiB;CAClB,CAAA;AAED;;;;;;;AAOG;MAkBU,aAAa,CAAA;+GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,iBAnCxB,mBAAmB;YACnB,oBAAoB;YAEpB,oBAAoB;YACpB,mBAAmB;YACnB,qBAAqB;YACrB,0BAA0B;AAC1B,YAAA,iBAAiB,aAef,WAAW;YACX,YAAY;YACZ,YAAY;YACZ,mBAAmB;YACnB,kBAAkB;YAClB,WAAW;YACX,YAAY;YACZ,YAAY;YACZ,UAAU;YACV,gBAAgB;AAChB,YAAA,cAAc,aAhChB,mBAAmB;YACnB,oBAAoB;YAEpB,oBAAoB;YACpB,mBAAmB;YACnB,qBAAqB;YACrB,0BAA0B;YAC1B,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;AA4BN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAbtB,WAAW;YACX,YAAY;YACZ,YAAY;YACZ,mBAAmB;YAEnB,WAAW;YACX,YAAY;YAGZ,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAjBzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,GAAG,aAAa,CAAC;AAChC,oBAAA,OAAO,EAAO,CAAC,GAAG,aAAa,CAAC;AAChC,oBAAA,OAAO,EAAE;wBACP,WAAW;wBACX,YAAY;wBACZ,YAAY;wBACZ,mBAAmB;wBACnB,kBAAkB;wBAClB,WAAW;wBACX,YAAY;wBACZ,YAAY;wBACZ,UAAU;wBACV,gBAAgB;wBAChB,cAAc;AACf,qBAAA;AACF,iBAAA,CAAA;;;ACzCD;MASa,eAAe,CAAA;AAgB1B,IAAA,WAAA,GAAA;;QAXA,IAAM,CAAA,MAAA,GAA6B,KAAK,EAAe,CAAC;AAKxD,QAAA,IAAA,CAAA,IAAI,GAAW,KAAK,CAAC,YAAY,EAAE,CAAC;;QAGpC,IAAc,CAAA,cAAA,GAA8B,IAAI,CAAC;AACjD,QAAA,IAAA,CAAA,aAAa,GAA2C,KAAK,CAA4B,IAAI,CAAC,CAAC;QA8D/F,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;QAEhC,IAAK,CAAA,KAAA,GAAe,IAAI,CAAC;;AAEP,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;QA/D7E,MAAM,CAAC,MAAK;AACV,YAAA,IAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC;AAC1D,gBAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;gBAC5E,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACpC;iBAAI;gBACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;aACvC;YACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1B,SAAC,CAAC,CAAA;KACH;AAED,IAAA,IAAI,KAAK,GAAA,EAAK,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE;IAEpD,gBAAgB,GAAA;AACd,QAAA,IAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAC;YACvB,IAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC;gBACvC,IAAI,CAAC,cAAc,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAA;aAAE;iBAC7F,IAAG,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,EAAK;AAAE,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,sBAAsB,EAAE,CAAA;aAAM;iBAC7F,IAAG,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,EAAG;AAAE,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,wBAAwB,EAAE,CAAA;aAAI;iBAC7F,IAAG,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,OAAO,EAAE;AAAE,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,yBAAyB,EAAE,CAAA;aAAG;iBAC7F,IAAG,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAC;AAAE,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,0BAA0B,EAAE,CAAA;aAAE;iBAC7F,IAAG,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,EAAG;AAAE,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,wBAAwB,EAAE,CAAA;aAAI;iBAC7F,IAAG,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,EAAG;AAAE,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,wBAAwB,EAAE,CAAA;aAAI;iBAC7F,IAAG,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAC;AAAE,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,wBAAwB,EAAE,CAAC;aAAG;iBAC7F,IAAG,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,EAAK;AAAE,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,sBAAsB,EAAE,CAAC;aAAK;SAC9F;AAED,QAAA,IAAG,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,YAAY,wBAAwB,EAAC;AAClF,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,wBAAwB,CAChD,IAAI,CAAC,aAAa,EAAE,CAAC,SAAS,EAC9B,IAAI,CAAC,aAAa,EAAE,CAAC,SAAS,EAC9B,IAAI,EACJ,IAAI,EACJ,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,EAC7B,IAAI,CACL,CAAC;SACH;AAED,QAAA,IAAG,IAAI,CAAC,aAAa,EAAE,YAAY,sBAAsB,EAAC;YACxD,IAAI,CAAC,cAAc,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;SACxD;QAED,IAAG,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,EAAC;AAC7B,YAAA,IAAG,IAAI,CAAC,KAAK,IAAI,OAAO,EAAC;AACvB,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;AAC/E,oBAAA,EAAE,KAAK,EAAE,gBAAgB,EAAM,KAAK,EAAE,IAAI,EAAG;AAC7C,oBAAA,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE;AAC9C,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;aACnB;iBACG;AACF,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;AAChF,oBAAA,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAG;AAC9B,oBAAA,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AAC/B,iBAAA,CAAC,CAAC;aACJ;SACF;KACF;IAQD,MAAM,GAAA;AACJ,QAAA,IAAG,IAAI,CAAC,KAAK,EAAC;AACZ,YAAA,IAAG,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,cAAc,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,cAAc,CAAC,kBAAkB,CAAC,EAAC;gBAC9I,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;aAClF;SACF;QACD,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC3B;AAED,IAAA,eAAe,CAAC,KAAa,EAAA;QAC3B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;KACpD;+GA/FU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrB5B,2kDA8BC,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDfW,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,+DAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,qBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtD,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAMxE,eAAe,EAAA,UAAA,EAAA,CAAA;kBAR3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,mBAAmB,EAAE,WAAW,CAAC,YAC1E,QAAQ,EAAA,QAAA,EAAA,2kDAAA,EAAA,CAAA;wDAQT,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAKG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAwEY,aAAa,EAAA,CAAA;sBAA9B,MAAM;uBAAC,QAAQ,CAAA;;;AE3FlB;MAEsB,YAAY,CAAA;IAQhC,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,EAAE,CAAC;AACd,QAAA,IAAG,IAAI,CAAC,cAAc,EAAC;YAAE,IAAI,CAAC,MAAM,EAAE,CAAC;SAAE;KAC1C;;AAGD,IAAA,MAAM,MAAM,GAAA;AACV,QAAA,IAAG,IAAI,CAAC,cAAc,EAAC;AACrB,YAAA,MAAM,IAAI,IAAe,MAAM,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAc,CAAC;AACtF,YAAA,IAAG,IAAI,IAAI,IAAI,CAAC,wBAAwB,EAAC;AACvC,gBAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;aACpG;SACF;KACF;IAGD,gBAAgB,GAAA;AACd,QAAA,IAAG,IAAI,CAAC,WAAW,EAAC;AAClB,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;SAC5B;KACF;AAED,IAAA,MAAM,CAAC,EAAU,EAAA;AACf,QAAA,MAAM,OAAO,GAAkB;AAC7B,YAAA,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE;AACpC,YAAA,EAAE,IAAI,EAAE,IAAI,EAAQ,IAAI,EAAE,SAAS,EAAE,OAAO,GAAG,MAAK;oBAChD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;wBAChC,IAAI,GAAG,MAAK,EAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC;AAChH,qBAAA,CAAC,CAAC;AACL,iBAAC,CAAC;AACH,aAAA;SACF,CAAA;QAED,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,UAAU,EAAE,wCAAwC,EAAE,OAAO,CAAC,CAAA;KAChG;+GA1CmB,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,4JADX,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FACH,YAAY,EAAA,UAAA,EAAA,CAAA;kBADjC,SAAS;+BAAa,EAAE,EAAA,CAAA;8BAwBD,WAAW,EAAA,CAAA;sBAAhC,SAAS;uBAAC,SAAS,CAAA;;;MChCT,qBAAqB,CAAA;AAChC;;;AAGG;AACI,IAAA,OAAO,SAAS,CAAC,aAAa,EAAE,YAAY,EAAA;QACjD,OAAO;AACL,YAAA;AACE,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,SAAS,EAAE,aAAa;AACzB,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,SAAS,EAAE,YAAY;AACxB,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,SAAS,EAAE,YAAY;AACxB,aAAA;SACF,CAAA;KACF;AACF,CAAA;AAED;MACa,SAAS,CAAA;AAGpB,IAAA,WAAA,CAAY,IAAwB,EAAA;QAFpC,IAAwB,CAAA,wBAAA,GAAoC,IAAI,CAAC;AAG/D,QAAA,IAAG,IAAI,CAAC,wBAAwB,EAAC;AAAE,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAA;SAAE;KACnG;AACF,CAAA;AACD;;AAEG;MACU,wBAAwB,CAAA;AACnC,IAAA,WAAA;;IAES,WAA+B;AACtC;;;AAGK;AACE,IAAA,iBAAA,GAA6B,KAAK;AAEzC;;AAEG;AACI,IAAA,UAAA,GAA4B,CAAC,EAAA;QAV7B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;QAK/B,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAiB;QAKlC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;KAClC;AACL;;AClDD;;AAEG;MACU,cAAc,CAAA;AAKzB,IAAA,WAAA,CAAY,aAA0C,EAAA;QAQ9C,IAAa,CAAA,aAAA,GAAU,EAAE,CAAC;QAC3B,IAAa,CAAA,aAAA,GAAU,EAAE,CAAC;QAE1B,IAAK,CAAA,KAAA,GAAU,EAAE,CAAC;QA2BlB,IAAM,CAAA,MAAA,GAAW,EAAE,CAAC;AArCzB,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,IAAI,CAAC,OAAO,GAAG,IAAI,qBAAqB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KACjE;IAED,IAAI,aAAa,GAAa,EAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAA,EAAE;AAOtE,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAA;KACtD;AACD,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;KAC/B;AAEM,IAAA,SAAS,CAAC,KAAkC,EAAA;AACjD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAClC,MAAM,IAAI,GAAM,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;AAEvD,QAAA,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;AACnC,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;YAC9E,IAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAC;AAC/B,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;gBACpD,MAAM;aACP;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACnC,IAAG,IAAI,EAAC;AAAE,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAAE;SACnC;QAED,IAAG,KAAK,EAAC;AAAE,YAAA,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;SAAE;KACtC;AAIM,IAAA,QAAQ,CAAC,KAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAU,EAAE,CAAC;KACxB;IAEM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,KAAK,GAAW,EAAE,CAAC;QAExB,IAAI,MAAM,GAAW,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AAE/C,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,IAAG;YAC9B,IAAI,MAAM,GAAY,IAAI,CAAC;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAC5C,YAAA,IAAG;gBACD,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aAChC;AAAA,YAAA,MAAK;AACJ,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,kCAAkC,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;aAC9E;YAED,IAAG,CAAC,MAAM,EAAC;AAAE,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAAE;AAC7C,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAEO,IAAA,QAAQ,CAAC,IAAS,EAAA;AACxB,QAAA,OAAO,QAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,EAAE,CAAA;KAC9I;AACF,CAAA;MAEY,2BAA2B,CAAA;AAItC,IAAA,WAAA,CAAY,YAAmD,MAAM,EAAE,eAAuB,EAAE,EAAE,UAAmB,KAAK,EAAA;QAF1H,IAAY,CAAA,YAAA,GAAc,EAAE,CAAC;QAC7B,IAAO,CAAA,OAAA,GAAkB,KAAK,CAAC;AAE7B,QAAA,IAAI,CAAC,SAAS,GAAM,SAAS,CAAA;AAC7B,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;AAChC,QAAA,IAAI,CAAC,OAAO,GAAQ,OAAO,CAAA;KAC5B;AACF,CAAA;AAED,MAAM,qBAAqB,CAAA;AAEzB,IAAA,WAAA,CAAY,OAAgB,EAAA;QADpB,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;AAE/B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,MAAM,CAAC,IAAI,CAAC,GAAG,IAAW,KAAc,EAAA,OAAO,EAAE,CAAC,CAAA;AAClD,QAAA,IAAI,CAAC,IAAI,GAAI,CAAC,CAAC;AACf,QAAA,IAAI,CAAC,GAAG,GAAK,CAAC,CAAC;AACf,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAG,OAAO,EAAC;AACT,YAAA,IAAI,CAAC,GAAG,GAAK,OAAO,CAAC,GAAG,CAAC;AACzB,YAAA,IAAI,CAAC,IAAI,GAAI,OAAO,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;SAC5B;KACF;AAKF;;MClGY,gBAAgB,CAAA;IAE3B,WACU,CAAA,IAAiB,EACjB,IAAgB,EAChB,cAA8B,EAC9B,eAAgC,EAChC,qBAA4C,EAC5C,MAAc,EAAA;QALd,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;QACjB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAChB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QAC5C,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAuBhB,IAAY,CAAA,YAAA,GAAW,qBAAqB,CAAC;QAC7C,IAAa,CAAA,aAAA,GAAW,sBAAsB,CAAC;KAvBnD;IAEJ,SAAS,CAAC,GAAqB,EAAE,IAAiB,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAC1B,UAAU,CAAC,CAAC,KAAwB,KAAI;;;;AAItC,YAAA,IAAG,KAAK,CAAC,MAAM,IAAI,GAAG,EAAC;AACrB,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;aACrB;AACD,iBAAA,IAAG,KAAK,CAAC,MAAM,IAAI,GAAG,EAAC;gBACrB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;aACjD;AACD,YAAA,IAAG,KAAK,CAAC,MAAM,IAAI,GAAG,EAAC;gBACrB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;aAC/B;AACD,YAAA,MAAM,KAAK,CAAC;SACb,CAAC,CACH,CAAC;KACH;AAID,IAAA,MAAM,iBAAiB,CAAC,IAAY,EAAE,OAAY,EAAE,SAAc,EAAA;QAChE,IAAI,GAAG,GAAmB,IAAI,CAAC;AAC/B,QAAA,IAAG;AACD,YAAA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmB,CAAA;SACzC;AAAA,QAAA,MAAK;AACJ,YAAA,GAAG,GAAG,EAAE,IAAI,EAAE,+CAA+C,EAAE,QAAQ,EAAE,6BAA6B,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;SACpH;AACD,QAAA,GAAG,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAEnD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;YAC9C,OAAO,EAAE,GAAG,CAAC,QAAQ;AACrB,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,IAAI,EAAE,KAAK;oBACX,OAAO,EAAE,MAAK;AACZ,wBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;qBAClB;AACF,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;KACvB;AAED,IAAA,IAAc,SAAS,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,OAAO,CAAA;KACnD;AACD,IAAA,MAAM,CAAC,GAAmB,EAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC;AAC5C,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI,EAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,6BAA6B,EAAE,kBAAkB,CAAC,CAAC,EAAE;AACvG,YAAA,KAAK,EAAC,CAAC,GAAG,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,gDAAgD,CAAC,CAAC,EAAE;AACvG,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,MAAM,OAAO,CAAC,OAAY,EAAE,SAAc,EAAA;QACxC,OAAO,IAAI,CAAC,SAAS,CAAC;AACpB,YAAA,KAAK,EAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACjC,YAAA,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACtC,YAAA,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;YAChC,MAAM,EAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE;YAC5C,QAAQ,EAAI,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;YACpD,OAAO,EAAK,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AACnD,YAAA,OAAO,EAAK,OAAO;AACnB,YAAA,KAAK,EAAO,SAAS;AACrB,YAAA,MAAM,EAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM;AAC9C,SAAA,CAAC,CAAC;KACJ;+GAtFU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAqB,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA9B,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAW,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;AA0FD,MAAM,cAAc,CAAA;AAInB;;MC7FY,gBAAgB,CAAA;AAE3B,IAAA,WAAA,CACU,IAAiB,EAAA;QAAjB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;KACvB;IAEJ,SAAS,CAAC,OAA6B,EAAE,IAAiB,EAAA;AACxD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACnC,SAAS,CAAC,CAAC,SAAiB,KAAI;AAC9B,YAAA,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAE,aAAa,EAAE,CAAU,OAAA,EAAA,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;AACxF,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC7B,CAAC,CACH,CAAC;KACH;+GAbU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAoB,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCPY,SAAS,CAAA;IAEpB,WAAoB,CAAA,IAAiB,EAAU,MAAc,EAAA;QAAzC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;QAAU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;KAAI;AAEjE,IAAA,MAAM,WAAW,CAAC,KAA4B,EAAE,KAA0B,EAAA;QACxE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACpD,IAAG,CAAC,aAAa,EAAC;AAChB,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SACrB;AACD,QAAA,OAAO,aAAa,CAAC;KACtB;+GAXU,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA9B,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAAT,SAAS,EAAA,CAAA,CAAA,EAAA;;4FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB,UAAU;;;ACJX;;AAEG;AAEH;;ACJA;;AAEG;;;;"}