{"version":3,"file":"angular-extensions-controls-datetime-control.mjs","sources":["../../../projects/angular-extensions/controls/datetime-control/src/datetime-control.component.ts","../../../projects/angular-extensions/controls/datetime-control/src/datetime-control.component.html","../../../projects/angular-extensions/controls/datetime-control/src/datetime-control.module.ts","../../../projects/angular-extensions/controls/datetime-control/src/angular-extensions-controls-datetime-control.ts"],"sourcesContent":["import { switchMap } from \"rxjs/operators\";\r\nimport {\r\n  ChangeDetectionStrategy, ChangeDetectorRef, Component,\r\n  ElementRef, EventEmitter, Inject, Input, OnInit, Output, ViewChild, ViewEncapsulation,\r\n} from \"@angular/core\";\r\nimport { MatDateFormats, MAT_DATE_FORMATS } from \"@angular/material/core\";\r\nimport { MatDatepicker, MatDatepickerContent } from \"@angular/material/datepicker\";\r\nimport { NgxMatTimepickerComponent } from \"@angular-material-components/datetime-picker\";\r\n\r\nimport { overrideFunction } from \"angular-extensions/core\";\r\nimport { AppMatDatepicker, AppNgxMatTimepickerComponent, Field } from \"angular-extensions/models\";\r\nimport { ControlBase, ActionableControl } from \"angular-extensions/controls/base-control\";\r\n\r\nfunction addTimepickerNullableModelSupport() {\r\n  // disable dead-loop of model => view and view <= model change events\r\n  overrideFunction(\r\n    NgxMatTimepickerComponent.prototype,\r\n    timePicker => timePicker.ngOnInit,\r\n    () => { });\r\n\r\n  // ensure timepicker model is set when user performs interaction\r\n  overrideFunction(\r\n    NgxMatTimepickerComponent.prototype as any as AppNgxMatTimepickerComponent<any>,\r\n    timePicker => timePicker._updateModel,\r\n    (updateModel, timePicker) => {\r\n      if (!timePicker._model) {\r\n        timePicker._model = new Date();\r\n      }\r\n\r\n      return updateModel();\r\n    });\r\n\r\n  overrideFunction(\r\n    NgxMatTimepickerComponent.prototype as any as AppNgxMatTimepickerComponent<any>,\r\n    timePicker => timePicker.writeValue,\r\n    (writeValue, timePicker, value) => {\r\n      if (!value) {\r\n        timePicker._model = value;\r\n\r\n        Object.values(timePicker.form.controls).forEach((control, index) => {\r\n          control.setValue(String(timePicker.defaultTime?.[index] || 0).padStart(2, \"0\"));\r\n        });\r\n      }\r\n      else {\r\n        writeValue(value);\r\n      }\r\n    });\r\n}\r\n\r\nfunction improveTimepickerStepper() {\r\n  overrideFunction(\r\n    NgxMatTimepickerComponent.prototype as any as AppNgxMatTimepickerComponent<any>,\r\n    timePicker => timePicker._getNextValueByProp,\r\n    (getNextValueByProp, timePicker, property, up) => {\r\n      let keyProp = property[0].toUpperCase() + property.slice(1);\r\n\r\n      let result = getNextValueByProp(property, up);\r\n\r\n      if (up != null) {\r\n        result -= result % (timePicker as any)[`step${keyProp}`] as number;\r\n      }\r\n\r\n      return result;\r\n    });\r\n}\r\n\r\nimproveTimepickerStepper();\r\n\r\naddTimepickerNullableModelSupport();\r\n\r\n@Component({\r\n  selector: \"datetime-control\",\r\n  templateUrl: \"./datetime-control.component.html\",\r\n  styleUrls: [\"./datetime-control.component.scss\"],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DateTimeControlComponent extends ControlBase<Date> implements ActionableControl, OnInit {\r\n\r\n  @Input()\r\n  public initialTime: number[];\r\n\r\n  @Input()\r\n  public clearable: boolean;\r\n\r\n  @Input()\r\n  public disableMinute = false;\r\n\r\n  @Input()\r\n  public showSeconds = false;\r\n\r\n  @Input()\r\n  public format: string;\r\n\r\n  @Input()\r\n  public actionButtonVisible = true;\r\n\r\n  @Input()\r\n  public actionButtonIcon?: string;\r\n\r\n  @Input()\r\n  public actionButtonTooltip?: string;\r\n\r\n  @Output()\r\n  public actionButton = new EventEmitter<Field<Date>>();\r\n\r\n  @ViewChild(MatDatepicker, { static: true })\r\n  public datePicker: AppMatDatepicker<Date>;\r\n\r\n  @ViewChild(NgxMatTimepickerComponent, { static: true })\r\n  public timePicker: AppNgxMatTimepickerComponent<Date>;\r\n\r\n  private get datepickerContent(): MatDatepickerContent<Date> | null {\r\n    return (this.datePicker._componentRef || this.datePicker._popupComponentRef)?.instance;\r\n  }\r\n\r\n  constructor(\r\n    private elementRef: ElementRef<HTMLElement>,\r\n    private changeDetectorRef: ChangeDetectorRef,\r\n    @Inject(MAT_DATE_FORMATS) dateFormats: MatDateFormats,\r\n  ) {\r\n    super();\r\n\r\n    this.format = `${dateFormats.display.dateInput} HH:mm${this.showSeconds ? \":ss\" : \"\"}`;\r\n\r\n    // avoid datepicker input blur while popup is open\r\n    elementRef\r\n      .nativeElement\r\n      .addEventListener(\"blur\", event => this.datepickerContent && event.stopPropagation(), { capture: true });\r\n  }\r\n\r\n  public ngOnInit() {\r\n    // NgxMatTimepickerComponent updates value without \"emitModelToViewChange\", so this listener propagate those events instead\r\n    this.field$\r\n      .pipe(switchMap(field => field.control.valueChanges))\r\n      .subscribe(value => {\r\n        for (let callback of this.field.control._onChange) {\r\n          callback(value, false);\r\n        }\r\n      });\r\n  }\r\n\r\n  public onFieldClick(event: MouseEvent) {\r\n    if (this.elementRef.nativeElement.querySelector(\".mat-form-field-flex\").contains(event.target as HTMLElement)) {\r\n      this.datePicker.open();\r\n    }\r\n\r\n    event.preventDefault();\r\n  }\r\n\r\n  public onToggle(event: MouseEvent) {\r\n    if (this.clearable && this.field.control.enabled && this.field.value != null) {\r\n      this.field.control.setValue(null);\r\n\r\n      this.field.control.markAsTouched({ onlySelf: true });\r\n\r\n      event.preventDefault();\r\n      event.stopImmediatePropagation();\r\n\r\n      this.changeDetectorRef.markForCheck();\r\n    }\r\n    else {\r\n      this.focus();\r\n    }\r\n  }\r\n\r\n  public datePickerOpened() {\r\n    overrideFunction(\r\n      this.datepickerContent,\r\n      content => content._handleUserSelection,\r\n      (handleUserSelection, _, event) => {\r\n        handleUserSelection(event);\r\n\r\n        let timeValues = [this.timePicker.hour, this.timePicker.minute, this.timePicker.second];\r\n\r\n        this.timePicker._dateAdapter.setTimeByDefaultValues(event.value, timeValues);\r\n\r\n        this.timePicker._model = event.value;\r\n        this.datePicker._model.add(event.value);\r\n      });\r\n  }\r\n}\r\n","<base-control #baseControl\r\n              [control]=\"this\">\r\n  <mat-form-field [appearance]=\"appearance\"\r\n                  [ngClass]=\"fieldClass\"\r\n                  (click)=\"onFieldClick($event)\">\r\n    <mat-label>\r\n      {{ field.label }}\r\n    </mat-label>\r\n\r\n    <mat-hint>\r\n      <ng-container *ngTemplateOutlet=\"baseControl.hintTemplate\"></ng-container>\r\n    </mat-hint>\r\n\r\n    <input matInput\r\n           readonly\r\n           [format]=\"format\"\r\n           [formControl]=\"field.control\"\r\n           [matDatepicker]=\"datePicker\">\r\n\r\n    <a *ngIf=\"actionButtonVisible && actionButtonIcon && actionButton.observed; else toggleTemplate\"\r\n       mat-icon-button\r\n       matSuffix\r\n       [matTooltip]=\"actionButtonTooltip\"\r\n       (click)=\"actionButton.emit(field); $event.preventDefault(); $event.stopImmediatePropagation();\">\r\n      <mat-icon>{{ actionButtonIcon }}</mat-icon>\r\n    </a>\r\n\r\n    <ng-template #toggleTemplate>\r\n      <mat-datepicker-toggle matSuffix\r\n                             [for]=\"datePicker\">\r\n        <mat-icon matDatepickerToggleIcon\r\n                  [matTooltip]=\"clearable && field.control.enabled && field.value != null ? 'Clear' : ''\"\r\n                  (click)=\"onToggle($event)\">\r\n          {{ clearable && field.control.enabled && field.value != null ? 'close' : 'today' }}\r\n        </mat-icon>\r\n      </mat-datepicker-toggle>\r\n    </ng-template>\r\n\r\n    <mat-datepicker panelClass=\"datetime-picker-container\"\r\n                    [restoreFocus]=\"false\"\r\n                    (opened)=\"datePickerOpened()\"\r\n                    (closed)=\"blur(); field.control.markAllAsTouched()\">\r\n      <mat-datepicker-actions>\r\n        <div class=\"w-100 d-flex flex-column align-items-center\">\r\n          <mat-divider class=\"w-100 mb-2\"></mat-divider>\r\n\r\n          <ngx-mat-timepicker [formControl]=\"field.control\"\r\n                              [color]=\"'primary'\"\r\n                              [stepMinute]=\"15\"\r\n                              [disableMinute]=\"disableMinute\"\r\n                              [defaultTime]=\"initialTime\"\r\n                              [showSeconds]=\"showSeconds\"></ngx-mat-timepicker>\r\n        </div>\r\n      </mat-datepicker-actions>\r\n    </mat-datepicker>\r\n\r\n    <mat-error *ngIf=\"baseControl.initialized\">\r\n      <ng-container *ngTemplateOutlet=\"baseControl.errorsTemplate\"></ng-container>\r\n    </mat-error>\r\n  </mat-form-field>\r\n</base-control>\r\n","import { format } from \"date-fns\";\r\nimport { ModuleWithProviders, NgModule, Type } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { Platform } from \"@angular/cdk/platform\";\r\nimport { MAT_DATE_LOCALE } from \"@angular/material/core\";\r\nimport {MatDividerModule} from \"@angular/material/divider\";\r\nimport {\r\n  NgxMatDateAdapter, NgxMatNativeDateAdapter,\r\n  NGX_MAT_DATE_FORMATS, NgxMatTimepickerModule,\r\n} from \"@angular-material-components/datetime-picker\";\r\n\r\nimport { NgxDirectivesModule } from \"angular-extensions/directives\";\r\nimport { NGX_DATE_FORMATS } from \"angular-extensions/models\";\r\nimport { NgxBaseControlModule } from \"angular-extensions/controls/base-control\";\r\nimport { NgxDateControlModule, NgxDateConfig, dateConfigDefaults } from \"angular-extensions/controls/date-control\";\r\n\r\nimport { DateTimeControlComponent } from \"./datetime-control.component\";\r\n\r\n/**\r\n * Configure default behavior of NgxControlsModule like: locale, date adpater, date format, etc.\r\n */\r\nexport interface NgxDateTimeConfig extends NgxDateConfig {\r\n\r\n  /**\r\n   * Date adapter used between AngularMaterial and NgxMatDatePicker, by default {@link NgxDateAdapter}\r\n   */\r\n  dateTimeAdapterType: Type<NgxMatDateAdapter<Date>>;\r\n}\r\n\r\nexport class NgxDateTimeAdapter extends NgxMatNativeDateAdapter {\r\n\r\n  public override getFirstDayOfWeek(): number {\r\n    return 1;\r\n  }\r\n\r\n  public override format(date: Date, displayFormat: string): string {\r\n    return format(date, displayFormat);\r\n  }\r\n}\r\n\r\nexport const dateTimeConfigDefaults: NgxDateTimeConfig = Object.assign({\r\n  dateTimeAdapterType: NgxDateTimeAdapter,\r\n}, dateConfigDefaults);\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,\r\n    MatDividerModule,\r\n    NgxMatTimepickerModule,\r\n\r\n    NgxBaseControlModule,\r\n    NgxDateControlModule,\r\n    NgxDirectivesModule,\r\n  ],\r\n  exports: [\r\n    MatDividerModule,\r\n    NgxMatTimepickerModule,\r\n\r\n    NgxBaseControlModule,\r\n    NgxDateControlModule,\r\n    NgxDirectivesModule,\r\n\r\n    DateTimeControlComponent,\r\n  ],\r\n  declarations: [\r\n    DateTimeControlComponent,\r\n  ],\r\n  providers: [\r\n    {\r\n      provide: NgxMatDateAdapter,\r\n      useClass: NgxDateTimeAdapter,\r\n      deps: [MAT_DATE_LOCALE, Platform]\r\n    },\r\n    {\r\n      provide: NGX_MAT_DATE_FORMATS,\r\n      useValue: dateTimeConfigDefaults.dateFormats\r\n    },\r\n  ]\r\n})\r\nexport class NgxDateTimeControlModule {\r\n\r\n  public static configure(config: Partial<NgxDateTimeConfig>): ModuleWithProviders<NgxDateControlModule> {\r\n\r\n    let moduleConfig = Object.assign<NgxDateTimeConfig, Partial<NgxDateTimeConfig>>(dateTimeConfigDefaults, config);\r\n\r\n    if (config.dateFormats) {\r\n      Object.assign(NGX_DATE_FORMATS, config.dateFormats);\r\n    }\r\n\r\n    return {\r\n      ngModule: NgxDateControlModule,\r\n      providers: [\r\n        ...NgxDateControlModule.configure(moduleConfig).providers,\r\n        {\r\n          provide: NgxMatDateAdapter,\r\n          useClass: NgxDateTimeAdapter,\r\n          deps: [MAT_DATE_LOCALE, Platform]\r\n        },\r\n        {\r\n          provide: NGX_MAT_DATE_FORMATS,\r\n          useValue: moduleConfig.dateFormats\r\n        },\r\n      ]\r\n    };\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,SAAS,iCAAiC,GAAA;;AAExC,IAAA,gBAAgB,CACd,yBAAyB,CAAC,SAAS,EACnC,UAAU,IAAI,UAAU,CAAC,QAAQ,EACjC,MAAQ,GAAC,CAAC,CAAC;;AAGb,IAAA,gBAAgB,CACd,yBAAyB,CAAC,SAAqD,EAC/E,UAAU,IAAI,UAAU,CAAC,YAAY,EACrC,CAAC,WAAW,EAAE,UAAU,KAAI;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AACtB,YAAA,UAAU,CAAC,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;AAChC,SAAA;QAED,OAAO,WAAW,EAAE,CAAC;AACvB,KAAC,CAAC,CAAC;IAEL,gBAAgB,CACd,yBAAyB,CAAC,SAAqD,EAC/E,UAAU,IAAI,UAAU,CAAC,UAAU,EACnC,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,KAAI;QAChC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;AAE1B,YAAA,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,KAAI;;gBACjE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA,CAAA,EAAA,GAAA,UAAU,CAAC,WAAW,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAC,KAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAClF,aAAC,CAAC,CAAC;AACJ,SAAA;AACI,aAAA;YACH,UAAU,CAAC,KAAK,CAAC,CAAC;AACnB,SAAA;AACH,KAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,wBAAwB,GAAA;IAC/B,gBAAgB,CACd,yBAAyB,CAAC,SAAqD,EAC/E,UAAU,IAAI,UAAU,CAAC,mBAAmB,EAC5C,CAAC,kBAAkB,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,KAAI;AAC/C,QAAA,IAAI,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5D,IAAI,MAAM,GAAG,kBAAkB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAE9C,IAAI,EAAE,IAAI,IAAI,EAAE;YACd,MAAM,IAAI,MAAM,GAAI,UAAkB,CAAC,CAAO,IAAA,EAAA,OAAO,CAAE,CAAA,CAAW,CAAC;AACpE,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;AAChB,KAAC,CAAC,CAAC;AACP,CAAC;AAED,wBAAwB,EAAE,CAAC;AAE3B,iCAAiC,EAAE,CAAC;AAS9B,MAAO,wBAAyB,SAAQ,WAAiB,CAAA;AAuC7D,IAAA,WAAA,CACU,UAAmC,EACnC,iBAAoC,EAClB,WAA2B,EAAA;AAErD,QAAA,KAAK,EAAE,CAAC;AAJA,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;AACnC,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AAhCvC,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAGtB,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAMpB,QAAA,IAAmB,CAAA,mBAAA,GAAG,IAAI,CAAC;AAS3B,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAe,CAAC;QAmBpD,IAAI,CAAC,MAAM,GAAG,CAAA,EAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAS,MAAA,EAAA,IAAI,CAAC,WAAW,GAAG,KAAK,GAAG,EAAE,CAAA,CAAE,CAAC;;QAGvF,UAAU;aACP,aAAa;aACb,gBAAgB,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC,iBAAiB,IAAI,KAAK,CAAC,eAAe,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;KAC5G;AAjBD,IAAA,IAAY,iBAAiB,GAAA;;AAC3B,QAAA,OAAO,OAAC,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,CAAC;KACxF;IAiBM,QAAQ,GAAA;;AAEb,QAAA,IAAI,CAAC,MAAM;AACR,aAAA,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;aACpD,SAAS,CAAC,KAAK,IAAG;YACjB,KAAK,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE;AACjD,gBAAA,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACxB,aAAA;AACH,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,YAAY,CAAC,KAAiB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAqB,CAAC,EAAE;AAC7G,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACxB,SAAA;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;KACxB;AAEM,IAAA,QAAQ,CAAC,KAAiB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;YAC5E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAElC,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAErD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,wBAAwB,EAAE,CAAC;AAEjC,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AACvC,SAAA;AACI,aAAA;YACH,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,SAAA;KACF;IAEM,gBAAgB,GAAA;QACrB,gBAAgB,CACd,IAAI,CAAC,iBAAiB,EACtB,OAAO,IAAI,OAAO,CAAC,oBAAoB,EACvC,CAAC,mBAAmB,EAAE,CAAC,EAAE,KAAK,KAAI;YAChC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAE3B,IAAI,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAExF,YAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,sBAAsB,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YAE7E,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;YACrC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1C,SAAC,CAAC,CAAC;KACN;;AAvGU,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,6EA0CzB,gBAAgB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA1Cf,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EA6BxB,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,aAAa,EAGb,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,yBAAyB,qFC7GtC,khFA6DA,EAAA,MAAA,EAAA,CAAA,uWAAA,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,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,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6IAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,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,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,uDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FDgBa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,iBAGb,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,khFAAA,EAAA,MAAA,EAAA,CAAA,uWAAA,CAAA,EAAA,CAAA;;;8BA4C5C,MAAM;+BAAC,gBAAgB,CAAA;;yBAvCnB,WAAW,EAAA,CAAA;sBADjB,KAAK;gBAIC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAIC,aAAa,EAAA,CAAA;sBADnB,KAAK;gBAIC,WAAW,EAAA,CAAA;sBADjB,KAAK;gBAIC,MAAM,EAAA,CAAA;sBADZ,KAAK;gBAIC,mBAAmB,EAAA,CAAA;sBADzB,KAAK;gBAIC,gBAAgB,EAAA,CAAA;sBADtB,KAAK;gBAIC,mBAAmB,EAAA,CAAA;sBADzB,KAAK;gBAIC,YAAY,EAAA,CAAA;sBADlB,MAAM;gBAIA,UAAU,EAAA,CAAA;sBADhB,SAAS;gBAAC,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAInC,UAAU,EAAA,CAAA;sBADhB,SAAS;gBAAC,IAAA,EAAA,CAAA,yBAAyB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;AEhFlD,MAAO,kBAAmB,SAAQ,uBAAuB,CAAA;IAE7C,iBAAiB,GAAA;AAC/B,QAAA,OAAO,CAAC,CAAC;KACV;IAEe,MAAM,CAAC,IAAU,EAAE,aAAqB,EAAA;AACtD,QAAA,OAAO,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;KACpC;AACF,CAAA;AAEY,MAAA,sBAAsB,GAAsB,MAAM,CAAC,MAAM,CAAC;AACrE,IAAA,mBAAmB,EAAE,kBAAkB;CACxC,EAAE,kBAAkB,EAAE;MAqCV,wBAAwB,CAAA;IAE5B,OAAO,SAAS,CAAC,MAAkC,EAAA;QAExD,IAAI,YAAY,GAAG,MAAM,CAAC,MAAM,CAAgD,sBAAsB,EAAE,MAAM,CAAC,CAAC;QAEhH,IAAI,MAAM,CAAC,WAAW,EAAE;YACtB,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AACrD,SAAA;QAED,OAAO;AACL,YAAA,QAAQ,EAAE,oBAAoB;AAC9B,YAAA,SAAS,EAAE;AACT,gBAAA,GAAG,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,SAAS;AACzD,gBAAA;AACE,oBAAA,OAAO,EAAE,iBAAiB;AAC1B,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,IAAI,EAAE,CAAC,eAAe,EAAE,QAAQ,CAAC;AAClC,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE,oBAAoB;oBAC7B,QAAQ,EAAE,YAAY,CAAC,WAAW;AACnC,iBAAA;AACF,aAAA;SACF,CAAC;KACH;;sHAzBU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;uHAAxB,wBAAwB,EAAA,YAAA,EAAA,CAdjC,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAnBxB,YAAY;QACZ,gBAAgB;QAChB,sBAAsB;QAEtB,oBAAoB;QACpB,oBAAoB;AACpB,QAAA,mBAAmB,aAGnB,gBAAgB;QAChB,sBAAsB;QAEtB,oBAAoB;QACpB,oBAAoB;QACpB,mBAAmB;QAEnB,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAiBf,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,EAZxB,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,QAAQ,EAAE,kBAAkB;AAC5B,YAAA,IAAI,EAAE,CAAC,eAAe,EAAE,QAAQ,CAAC;AAClC,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,oBAAoB;YAC7B,QAAQ,EAAE,sBAAsB,CAAC,WAAW;AAC7C,SAAA;KACF,EAAA,OAAA,EAAA,CA/BC,YAAY;QACZ,gBAAgB;QAChB,sBAAsB;QAEtB,oBAAoB;QACpB,oBAAoB;AACpB,QAAA,mBAAmB,EAGnB,gBAAgB;QAChB,sBAAsB;QAEtB,oBAAoB;QACpB,oBAAoB;QACpB,mBAAmB,CAAA,EAAA,CAAA,CAAA;4FAmBV,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAnCpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,gBAAgB;wBAChB,sBAAsB;wBAEtB,oBAAoB;wBACpB,oBAAoB;wBACpB,mBAAmB;AACpB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,gBAAgB;wBAChB,sBAAsB;wBAEtB,oBAAoB;wBACpB,oBAAoB;wBACpB,mBAAmB;wBAEnB,wBAAwB;AACzB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,wBAAwB;AACzB,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,QAAQ,EAAE,kBAAkB;AAC5B,4BAAA,IAAI,EAAE,CAAC,eAAe,EAAE,QAAQ,CAAC;AAClC,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,oBAAoB;4BAC7B,QAAQ,EAAE,sBAAsB,CAAC,WAAW;AAC7C,yBAAA;AACF,qBAAA;iBACF,CAAA;;;AC9ED;;AAEG;;;;"}