special-forms 17.0.0 → 18.0.0-SNAPSHOT-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/special-autocomplete/special-autocomplete.component.mjs +5 -5
- package/esm2022/lib/components/special-checkbox/special-checkbox.component.mjs +7 -8
- package/esm2022/lib/components/special-datepicker/special-datepicker.component.mjs +6 -7
- package/esm2022/lib/components/special-dropdown/special-dropdown.component.mjs +5 -5
- package/esm2022/lib/components/special-form/special-form.component.mjs +14 -14
- package/esm2022/lib/components/special-form/special-form.module.mjs +4 -4
- package/esm2022/lib/components/special-input/special-input.component.mjs +10 -11
- package/esm2022/lib/components/special-label/special-label.component.mjs +5 -5
- package/esm2022/lib/components/special-multiple-autocomplete/special-multiple-autocomplete.component.mjs +5 -5
- package/esm2022/lib/components/special-richtext/special-richtext.component.mjs +19 -16
- package/esm2022/lib/components/special-richtext/special-richtext.interface.mjs +1 -1
- package/esm2022/lib/components/special-text-area/special-text-area.component.mjs +10 -11
- package/esm2022/lib/components/special-upload/special-upload-viewer.pipe.mjs +93 -0
- package/esm2022/lib/components/special-upload/special-upload.component.mjs +35 -46
- package/esm2022/lib/components/special-upload/special-upload.interface.mjs +1 -1
- package/esm2022/lib/core/forms/special-forms.mjs +1 -1
- package/esm2022/lib/core/pipes/controls-list-pipe/controls-list.pipe.mjs +3 -3
- package/esm2022/lib/core/pipes/error-message-pipe/error.pipe.mjs +4 -4
- package/esm2022/lib/core/pipes/text-by-function/text-by-function.pipe.mjs +4 -4
- package/esm2022/lib/core/services/error-state-matcher/error-matcher.mjs +3 -3
- package/esm2022/lib/core/services/special-form-builder/special-form-builder.service.mjs +4 -4
- package/fesm2022/special-forms.mjs +205 -127
- package/fesm2022/special-forms.mjs.map +1 -1
- package/lib/components/special-richtext/special-richtext.component.d.ts +2 -4
- package/lib/components/special-richtext/special-richtext.interface.d.ts +2 -1
- package/lib/components/special-upload/special-upload-viewer.pipe.d.ts +25 -0
- package/lib/components/special-upload/special-upload.component.d.ts +6 -13
- package/lib/components/special-upload/special-upload.interface.d.ts +2 -1
- package/lib/styles/tailwind-final.scss +144 -7
- package/package.json +10 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"special-forms.mjs","sources":["../../../projects/special-forms/src/lib/core/pipes/error-message-pipe/error.pipe.ts","../../../projects/special-forms/src/lib/core/pipes/text-by-function/text-by-function.pipe.ts","../../../projects/special-forms/src/lib/core/pipes/controls-list-pipe/controls-list.pipe.ts","../../../projects/special-forms/src/lib/components/special-autocomplete/special-autocomplete.component.ts","../../../projects/special-forms/src/lib/components/special-autocomplete/special-autocomplete.component.html","../../../projects/special-forms/src/lib/components/special-input/special-input.component.ts","../../../projects/special-forms/src/lib/components/special-input/special-input.component.html","../../../projects/special-forms/src/lib/components/special-dropdown/special-dropdown.component.ts","../../../projects/special-forms/src/lib/components/special-dropdown/special-dropdown.component.html","../../../projects/special-forms/src/lib/components/special-datepicker/special-datepicker.component.ts","../../../projects/special-forms/src/lib/components/special-datepicker/special-datepicker.component.html","../../../projects/special-forms/src/lib/components/special-multiple-autocomplete/special-multiple-autocomplete.component.ts","../../../projects/special-forms/src/lib/components/special-multiple-autocomplete/special-multiple-autocomplete.component.html","../../../projects/special-forms/src/lib/components/special-checkbox/special-checkbox.component.ts","../../../projects/special-forms/src/lib/components/special-checkbox/special-checkbox.component.html","../../../projects/special-forms/src/lib/components/special-text-area/special-text-area.component.ts","../../../projects/special-forms/src/lib/components/special-text-area/special-text-area.component.html","../../../projects/special-forms/src/lib/components/special-upload/special-upload.component.ts","../../../projects/special-forms/src/lib/components/special-upload/special-upload.component.html","../../../projects/special-forms/src/lib/components/special-label/special-label.component.ts","../../../projects/special-forms/src/lib/components/special-label/special-label.component.html","../../../projects/special-forms/src/lib/core/aux-data/control-types.enum.ts","../../../projects/special-forms/src/lib/components/special-richtext/special-richtext.component.ts","../../../projects/special-forms/src/lib/components/special-richtext/special-richtext.component.html","../../../projects/special-forms/src/lib/components/special-form/special-form.component.ts","../../../projects/special-forms/src/lib/components/special-form/special-form.component.html","../../../projects/special-forms/src/lib/components/special-form/special-form-array.component.html","../../../projects/special-forms/src/lib/components/special-form/special-form.module.ts","../../../projects/special-forms/src/lib/core/forms/special-forms.ts","../../../projects/special-forms/src/lib/core/services/special-form-builder/special-form-builder.service.ts","../../../projects/special-forms/src/lib/core/services/error-state-matcher/error-matcher.ts","../../../projects/special-forms/src/lib/core/interfaces/special-control.interface.ts","../../../projects/special-forms/src/lib/core/masks/currency.mask.ts","../../../projects/special-forms/src/lib/core/masks/number.mask.ts","../../../projects/special-forms/src/public-api.ts","../../../projects/special-forms/src/special-forms.ts"],"sourcesContent":["import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { FormControl } from \"@angular/forms\";\r\n\r\n@Pipe({\r\n name: \"errorMessage\",\r\n standalone:true\r\n})\r\nexport class ErrorMessagePipe implements PipeTransform {\r\n transform(\r\n errorsObj: { [key: string]: any },\r\n errorMessages: { [key: string]: any },\r\n control?: FormControl\r\n ): any {\r\n const errors = errorsObj ? Object.keys(errorsObj) : [];\r\n const error = errors[0];\r\n const message = errorMessages[error] || error;\r\n if (control) {\r\n control.setErrors(errorsObj);\r\n }\r\n return message;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'textByFunction', standalone: true })\r\nexport class TextByFunctionPipe implements PipeTransform {\r\n transform(value: any, field: string | ((value: any) => string)): any {\r\n if (field instanceof Function) {\r\n return field(value);\r\n } else if (value instanceof Object) {\r\n return value[field];\r\n } else {\r\n return value;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { AbstractControl } from '@angular/forms';\r\nimport { SpecialFormControl } from '../../forms/special-forms';\r\n\r\n@Pipe({ name: 'controlsList', standalone: true })\r\nexport class FormControlsListPipe implements PipeTransform {\r\n transform(controls: {\r\n [key: string]: AbstractControl;\r\n }): SpecialFormControl<any>[] {\r\n if (!controls) return [];\r\n return Object.values(controls)\r\n .filter((control: SpecialFormControl<any>) => !control.hidden)\r\n .map((control) => control as SpecialFormControl<any>);\r\n }\r\n}\r\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport {\r\n MatAutocompleteModule,\r\n MatAutocompleteSelectedEvent,\r\n} from '@angular/material/autocomplete';\r\nimport { Subscription } from 'rxjs';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport {\r\n IAutocompleteField,\r\n IAutocompleteSettings,\r\n} from './special-autocomplete.interface';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { ErrorMessagePipe, TextByFunctionPipe } from '../../core/pipes';\r\n@Component({\r\n standalone: true,\r\n selector: 'sp-autocomplete',\r\n templateUrl: './special-autocomplete.component.html',\r\n styleUrls: ['./special-autocomplete.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatInputModule,\r\n CommonModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipe,\r\n TextByFunctionPipe,\r\n ],\r\n})\r\nexport class SpecialAutocompleteComponent {\r\n @Input() control: SpecialFormControl<IAutocompleteField>;\r\n subs = new Subscription();\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n this.init();\r\n }\r\n\r\n get settings(): IAutocompleteSettings<any> {\r\n return this.control.settings;\r\n }\r\n\r\n init() {\r\n this.subs.add(\r\n this.control.valueChanges.pipe(debounceTime(500)).subscribe((value) => {\r\n if (typeof value === 'string') {\r\n this.settings.getData(value, this.control);\r\n }\r\n })\r\n );\r\n }\r\n\r\n configValue = (item: any) => {\r\n if (!item) return '';\r\n const fieldName = this.settings.fieldName;\r\n return fieldName instanceof Function ? fieldName(item) : item[fieldName];\r\n };\r\n\r\n optionSelected(data: MatAutocompleteSelectedEvent) {\r\n this.control.setValue(data.option.value);\r\n if (this.settings.onSelect) this.settings.onSelect(data.option.value);\r\n }\r\n\r\n iconClick(event: Event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\n","<mat-form-field\r\n class=\"special-autocomplete w-full mb-3 {{ control.styleClasses }}\"\r\n [id]=\"control.elementId\"\r\n *ngIf=\"control && !control.hidden\"\r\n [appearance]=\"control.label ? 'outline' : 'fill'\"\r\n>\r\n <mat-label\r\n *ngIf=\"control.label\"\r\n >\r\n {{ control.label }}\r\n </mat-label>\r\n <input\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [required]=\"control.required\"\r\n [readonly]=\"control.readOnly\"\r\n [placeholder]=\"control.placeholder\"\r\n matInput\r\n [formControl]=\"control\"\r\n [matAutocomplete]=\"auto\"\r\n />\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"configValue\"\r\n (optionSelected)=\"optionSelected($event)\"\r\n >\r\n <mat-option\r\n *ngFor=\"let option of settings?.source | async\"\r\n [value]=\"option\"\r\n >\r\n <div class=\"flex items-center\">\r\n <img\r\n *ngIf=\"settings.fieldImage\"\r\n class=\"w-8 pr-2\"\r\n alt=\"\"\r\n [src]=\"option | textByFunction: settings.fieldImage\"\r\n />\r\n <span>\r\n {{ option | textByFunction: settings.fieldName }}\r\n </span>\r\n </div>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }}</mat-icon>\r\n <button\r\n *ngIf=\"settings.icon\"\r\n mat-icon-button\r\n matSuffix\r\n (click)=\"iconClick($event)\"\r\n >\r\n <mat-icon>\r\n {{ settings.icon }}\r\n </mat-icon>\r\n </button>\r\n <mat-hint>{{ control.tooltip }}</mat-hint>\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n</mat-form-field>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { InputMaskModule } from '@ngneat/input-mask';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { ErrorMessagePipe } from '../../core/pipes';\r\nimport { IInputField, IInputSettings } from './special-input.interface';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'sp-input',\r\n templateUrl: './special-input.component.html',\r\n styleUrls: ['./special-input.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipe,\r\n ],\r\n})\r\nexport class SpecialInputComponent implements OnInit {\r\n @Input() control!: SpecialFormControl<IInputField>;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n onEnterClick() {\r\n if (this.settings.onEnter) {\r\n this.settings.onEnter(this.control.value);\r\n }\r\n }\r\n\r\n onBlurAction() {\r\n if (this.settings.onBlur) {\r\n this.settings.onBlur(this.control.value);\r\n }\r\n }\r\n\r\n get settings(): IInputSettings {\r\n return this.control.settings;\r\n }\r\n\r\n iconClick(event: Event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n}\r\n","<mat-form-field\r\n *ngIf=\"control && !control.hidden\"\r\n [id]=\"control.elementId\"\r\n class=\"special-input w-full mb-3 {{ control.styleClasses }}\"\r\n [appearance]=\"control.label ? 'outline' : 'fill'\"\r\n>\r\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\r\n <input\r\n matInput\r\n (blur)=\"onBlurAction()\"\r\n (keydown.enter)=\"onEnterClick()\"\r\n [inputMask]=\"settings?.mask\"\r\n autocomplete=\"off\"\r\n [type]=\"settings?.type || 'text'\"\r\n [readonly]=\"control.readOnly\"\r\n [required]=\"control.required\"\r\n [placeholder]=\"control.placeholder\"\r\n [formControl]=\"control\"\r\n />\r\n <mat-hint>\r\n {{ control.tooltip }}\r\n </mat-hint>\r\n <button\r\n *ngIf=\"settings?.icon\"\r\n mat-icon-button\r\n matSuffix\r\n (click)=\"iconClick($event)\"\r\n >\r\n <mat-icon>\r\n {{ settings.icon }}\r\n </mat-icon>\r\n </button>\r\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }}</mat-icon>\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n</mat-form-field>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n} from '@angular/core';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { IDropdownField, IDropdownSettings } from './special-dropdown.interface';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport {\r\n ErrorMessagePipe,\r\n TextByFunctionPipe,\r\n} from '../../core/pipes';\r\n@Component({\r\n standalone: true,\r\n selector: 'sp-dropdown',\r\n templateUrl: './special-dropdown.component.html',\r\n styleUrls: ['./special-dropdown.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n CommonModule,\r\n MatSelectModule,\r\n ReactiveFormsModule,\r\n ErrorMessagePipe,\r\n MatIconModule,\r\n MatButtonModule,\r\n TextByFunctionPipe,\r\n ],\r\n})\r\nexport class SpecialDropdownComponent {\r\n @Input() control!: SpecialFormControl<IDropdownField>;\r\n\r\n get settings(): IDropdownSettings {\r\n return this.control.settings;\r\n }\r\n\r\n iconClick(event: Event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n optionSelected(value: any) {\r\n console.log(value);\r\n if (this.settings.onSelect) this.settings.onSelect(value);\r\n }\r\n}\r\n","<mat-form-field\r\n *ngIf=\"control && !control.hidden\"\r\n [id]=\"control.elementId\"\r\n class=\"special-dropdown w-full mb-3 {{ control.styleClasses }}\"\r\n [appearance]=\"control.label ? 'outline' : 'fill'\"\r\n>\r\n <mat-label *ngIf=\"control.label\">\r\n {{ control.label }}\r\n </mat-label>\r\n <mat-select\r\n [formControl]=\"control\"\r\n [required]=\"control.required\"\r\n (selectionChange)=\"optionSelected($event.value)\"\r\n [placeholder]=\"control.placeholder\"\r\n >\r\n <mat-option *ngIf=\"!control.required\" [value]=\"null\">\r\n {{ control.placeholder || control.settings.notSelectedText }}\r\n </mat-option>\r\n <mat-option\r\n *ngFor=\"let item of control.settings.source | async\"\r\n [value]=\"item[control.settings.fieldId]\"\r\n >\r\n {{ item | textByFunction: control.settings.fieldName }}\r\n </mat-option>\r\n </mat-select>\r\n <button\r\n *ngIf=\"settings.icon\"\r\n mat-icon-button\r\n matSuffix\r\n (click)=\"iconClick($event)\"\r\n >\r\n <mat-icon>\r\n {{ settings.icon }}\r\n </mat-icon>\r\n </button>\r\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }}</mat-icon>\r\n <mat-hint *ngIf=\"control.tooltip\">{{ control.tooltip }}</mat-hint>\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n</mat-form-field>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { ErrorMessagePipe } from '../../core/pipes';\r\nimport {\r\n IDatePickerField,\r\n IDatePickerSettings,\r\n} from './special-datepicker.interface';\r\n@Component({\r\n standalone: true,\r\n selector: 'sp-datepicker',\r\n templateUrl: './special-datepicker.component.html',\r\n styleUrls: ['./special-datepicker.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatInputModule,\r\n MatDatepickerModule,\r\n CommonModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipe,\r\n MatNativeDateModule,\r\n ],\r\n})\r\nexport class SpecialDatepickerComponent implements OnInit {\r\n @Input() control!: SpecialFormControl<IDatePickerField>;\r\n\r\n constructor() {}\r\n\r\n get settings(): IDatePickerSettings {\r\n return this.control.settings;\r\n }\r\n\r\n get startAt() {\r\n return this.settings?.startAt || new Date();\r\n }\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<mat-form-field\r\n *ngIf=\"control && !control.hidden\"\r\n [id]=\"control.elementId\"\r\n class=\"special-datepicker w-full mb-3 {{ control.styleClasses }}\"\r\n [appearance]=\"control.label ? 'outline' : 'fill'\"\r\n>\r\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\r\n <input\r\n matInput\r\n autocomplete=\"off\"\r\n [readonly]=\"control.readOnly\"\r\n [matDatepicker]=\"picker\"\r\n [required]=\"control.required\"\r\n [placeholder]=\"control.placeholder\"\r\n [formControl]=\"control\"\r\n />\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker startView=\"year\" [startAt]=\"startAt\">\r\n </mat-datepicker>\r\n <mat-hint>\r\n {{ control.tooltip }}\r\n </mat-hint>\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n</mat-form-field>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport {\r\n MatAutocompleteModule,\r\n MatAutocompleteSelectedEvent,\r\n} from '@angular/material/autocomplete';\r\nimport { Subscription } from 'rxjs';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { IMultipleAutocompleteField, IMultipleAutocompleteSettings } from './special-multiple-autocomplete.interface';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { ErrorMessagePipe, TextByFunctionPipe } from '../../core/pipes';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'sp-multiple-autocomplete',\r\n templateUrl: './special-multiple-autocomplete.component.html',\r\n styleUrls: ['./special-multiple-autocomplete.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatInputModule,\r\n CommonModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipe,\r\n TextByFunctionPipe,\r\n MatChipsModule,\r\n ],\r\n})\r\nexport class SpecialMultipleAutocompleteComponent {\r\n @Input() control!: SpecialFormControl<IMultipleAutocompleteField>;\r\n\r\n subs = new Subscription();\r\n internalControl = new FormControl();\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n this.init();\r\n }\r\n\r\n get settings(): IMultipleAutocompleteSettings<any> {\r\n return this.control.settings;\r\n }\r\n\r\n init() {\r\n this.subs.add(\r\n this.internalControl.valueChanges\r\n .pipe(debounceTime(500))\r\n .subscribe((value) => {\r\n if (typeof value === 'string') {\r\n this.control.settings.getData(value, this.control);\r\n }\r\n })\r\n );\r\n }\r\n\r\n optionSelected(data: MatAutocompleteSelectedEvent) {\r\n const newItem = data.option.value;\r\n this.internalControl.reset();\r\n this.control.setValue([\r\n ...(this.control.value || []).filter(\r\n (item: any) =>\r\n item[this.control.settings.fieldId] !==\r\n newItem[this.control.settings.fieldId]\r\n ),\r\n newItem,\r\n ]);\r\n\r\n if (this.settings.onSelect) this.settings.onSelect(newItem);\r\n }\r\n\r\n iconClick(event: Event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n remove(value: any[]): void {\r\n let currentValues = Array.from(this.control.value);\r\n const index = currentValues.indexOf(value);\r\n\r\n if (index > -1) {\r\n currentValues.splice(index, 1);\r\n const value = currentValues;\r\n this.control.markAsDirty();\r\n this.control.setValue(value);\r\n }\r\n }\r\n\r\n configValue = (item: any) => {\r\n if (!item) return '';\r\n const fieldName = this.control.settings.fieldName;\r\n return fieldName instanceof Function ? fieldName(item) : item[fieldName];\r\n };\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\n","<div\r\n class=\"special-multiple-autocomplete w-full mb-3 {{ control.styleClasses }}\"\r\n [id]=\"control.elementId\"\r\n *ngIf=\"control && !control.hidden\"\r\n>\r\n <mat-form-field\r\n class=\"w-full\"\r\n [appearance]=\"control.label ? 'outline' : 'fill'\"\r\n >\r\n <mat-label *ngIf=\"control.label\">\r\n {{ control.label }}\r\n </mat-label>\r\n <input\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [required]=\"control.required && !control.value?.length\"\r\n [readonly]=\"control.readOnly\"\r\n [placeholder]=\"control.placeholder\"\r\n matInput\r\n [formControl]=\"internalControl\"\r\n [matAutocomplete]=\"auto\"\r\n />\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"configValue\"\r\n (optionSelected)=\"optionSelected($event)\"\r\n >\r\n <mat-option\r\n *ngFor=\"let option of settings?.source | async\"\r\n [value]=\"option\"\r\n >\r\n <div class=\"flex items-center\">\r\n <img\r\n *ngIf=\"settings.fieldImage\"\r\n class=\"w-8 pr-2\"\r\n alt=\"\"\r\n [src]=\"option | textByFunction: settings.fieldImage\"\r\n />\r\n <span>\r\n {{ option | textByFunction: settings.fieldName }}\r\n </span>\r\n </div>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }}</mat-icon>\r\n <button\r\n *ngIf=\"settings.icon\"\r\n mat-icon-button\r\n matSuffix\r\n (click)=\"iconClick($event)\"\r\n >\r\n <mat-icon>\r\n {{ settings.icon }}\r\n </mat-icon>\r\n </button>\r\n <mat-hint>{{ control.tooltip }}</mat-hint>\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <mat-chip-listbox>\r\n <mat-chip\r\n *ngFor=\"let chip of control.value\"\r\n [removable]=\"true\"\r\n (removed)=\"remove(chip)\"\r\n >\r\n <div class=\"flex items-center\">\r\n <img\r\n *ngIf=\"settings.fieldImage\"\r\n class=\"w-8 pr-2\"\r\n alt=\"\"\r\n [src]=\"chip | textByFunction: settings.fieldImage\"\r\n />\r\n {{ chip | textByFunction: settings.fieldName }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </div>\r\n </mat-chip>\r\n </mat-chip-listbox>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { ErrorMessagePipe } from '../../core/pipes';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { ICheckboxField, ICheckboxSettings } from './special-checkbox.interface';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'sp-checkbox',\r\n templateUrl: './special-checkbox.component.html',\r\n styleUrls: ['./special-checkbox.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n FormsModule,\r\n MatCheckboxModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipe,\r\n ],\r\n})\r\nexport class SpecialCheckboxComponent implements OnInit {\r\n @Input() control!: SpecialFormControl<ICheckboxField>;\r\n\r\n get settings(): ICheckboxSettings {\r\n return this.control.settings;\r\n }\r\n constructor() {}\r\n ngOnInit(): void {}\r\n\r\n\r\n}\r\n","<div\r\n *ngIf=\"control && !control.hidden\"\r\n [id]=\"control.elementId\"\r\n class=\"special-checkbox w-full mb-3 flex flex-col {{ control.styleClasses }}\"\r\n>\r\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\r\n <mat-checkbox\r\n [required]=\"control.required\"\r\n [ngModel]=\"control.value\"\r\n (ngModelChange)=\"control.setValue($event); control.markAsDirty()\"\r\n [indeterminate]=\"settings.indeterminate\"\r\n [labelPosition]=\"settings.labelPosition\"\r\n [color]=\"settings.color\"\r\n [disabled]=\"control.disabled\"\r\n >\r\n <mat-icon *ngIf=\"control.icon\" matSuffix>{{ control.icon }} </mat-icon>\r\n {{ control.placeholder }}\r\n </mat-checkbox>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy } from '@angular/core';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { InputMaskModule } from '@ngneat/input-mask';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { ErrorMessagePipe } from '../../core/pipes';\r\nimport { ITextAreaField } from './special-text-area.interface';\r\n\r\n@Component({\r\n standalone:true,\r\n selector: 'sp-text-area',\r\n templateUrl: './special-text-area.component.html',\r\n styleUrls: ['./special-text-area.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports:[\r\n InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipe,\r\n ]\r\n})\r\nexport class SpecialTextAreaComponent implements OnInit {\r\n @Input() control!: SpecialFormControl<ITextAreaField>;\r\n\r\n @Output() onBlur: EventEmitter<any> = new EventEmitter();\r\n @Output() onEnter: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<mat-form-field\r\n *ngIf=\"control && !control.hidden\"\r\n [id]=\"control.elementId\"\r\n class=\"special-textarea w-full mb-3 {{ control.styleClasses }}\"\r\n [appearance]=\"control.label ? 'outline' : 'fill'\"\r\n>\r\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\r\n <textarea\r\n cdkTextareaAutosize\r\n #autosize=\"cdkTextareaAutosize\"\r\n cdkAutosizeMinRows=\"1\"\r\n cdkAutosizeMaxRows=\"5\"\r\n matInput\r\n (blur)=\"onBlur.emit(control.value)\"\r\n (keydown.enter)=\"onEnter.emit(control.value)\"\r\n [readonly]=\"control.readOnly\"\r\n [required]=\"control.required\"\r\n [placeholder]=\"control.placeholder\"\r\n [formControl]=\"control\"\r\n ></textarea>\r\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }} </mat-icon>\r\n <mat-hint>\r\n {{ control.tooltip }}\r\n </mat-hint>\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n</mat-form-field>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { IUploadField, IUploadSettings } from './special-upload.interface';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { ChangeDetectionStrategy } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgxDropzoneModule } from 'ngx-dropzone';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { ErrorMessagePipe } from '../../core/pipes';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'sp-upload',\r\n templateUrl: './special-upload.component.html',\r\n styleUrls: ['./special-upload.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n FormsModule,\r\n NgxDropzoneModule,\r\n CommonModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipe,\r\n ],\r\n})\r\nexport class SpecialUploadComponent implements OnInit {\r\n control!: SpecialFormControl<IUploadField>;\r\n\r\n @Input('control') set controlSetter(\r\n control: SpecialFormControl<IUploadField>\r\n ) {\r\n this.control = control;\r\n this.previewImages = control.value;\r\n }\r\n\r\n previewImages: any[] = [];\r\n\r\n constructor(private sanitizer: DomSanitizer) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n onSelectMultiple(event: any) {\r\n this.previewImages = [\r\n ...this.previewImages,\r\n ...event.addedFiles.map((file: File) => ({\r\n lastModified: file.lastModified,\r\n url: this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(file)),\r\n })),\r\n ];\r\n\r\n this.control.setValue([\r\n ...(this.control.value || []),\r\n ...event.addedFiles.map(this.fixFileName),\r\n ]);\r\n this.onselectFile(this.control.value);\r\n this.control.markAsDirty();\r\n }\r\n\r\n onSelectOne(event: any) {\r\n this.previewImages = event.addedFiles.map((file: File) => ({\r\n lastModified: file.lastModified,\r\n url: this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(file)),\r\n }));\r\n\r\n this.control.setValue(event.addedFiles.map(this.fixFileName));\r\n this.onselectFile(this.control.value);\r\n this.control.markAsDirty();\r\n }\r\n\r\n private onselectFile(value) {\r\n if (this.control.settings?.onSelectFile) {\r\n this.control.settings.onSelectFile(value);\r\n }\r\n }\r\n\r\n fixFileName(file: File) {\r\n return Object.defineProperty(file, 'name', {\r\n writable: true,\r\n value: file.name.normalize('NFD').replace(/[\\u0300-\\u036f]/g, ''),\r\n });\r\n }\r\n\r\n clean() {\r\n this.previewImages = [];\r\n }\r\n onRemove(file: File) {\r\n this.control.setValue(\r\n this.control.value.filter(\r\n (fl: any) => fl.lastModified !== file.lastModified\r\n )\r\n );\r\n this.previewImages = this.previewImages.filter(\r\n (fl) => fl.lastModified !== file.lastModified\r\n );\r\n }\r\n}\r\n","<div\r\n *ngIf=\"control && !control.hidden\"\r\n [id]=\"control.elementId\"\r\n class=\"special-upload w-full mb-3 {{ control.styleClasses }}\"\r\n>\r\n <ngx-dropzone\r\n class=\"special-upload__dropzone\"\r\n [ngClass]=\"{\r\n 'special-upload--error-dashed':\r\n !!control.errors && (control.dirty || control.touched)\r\n }\"\r\n [multiple]=\"control.settings?.multiple\"\r\n [accept]=\"\r\n control.settings?.accept\r\n ? control.settings?.accept\r\n : 'image/png, .jpeg, .jpg, image/gif'\r\n \"\r\n (change)=\"\r\n control.settings?.multiple\r\n ? onSelectMultiple($event)\r\n : onSelectOne($event)\r\n \"\r\n >\r\n <ngx-dropzone-label\r\n [ngClass]=\"{\r\n 'special-upload--error':\r\n !!control.errors && (control.dirty || control.touched)\r\n }\"\r\n >\r\n <mat-icon class=\"special-upload__icon\" *ngIf=\"control.icon\"\r\n >{{ control.icon }}\r\n </mat-icon>\r\n <h2 class=\"text-base font-bold\">\r\n {{ control.label }}\r\n </h2>\r\n <h3 class=\"text-base\">\r\n {{ control.placeholder }}\r\n </h3>\r\n </ngx-dropzone-label>\r\n <ngx-dropzone-preview\r\n *ngFor=\"let file of previewImages\"\r\n [removable]=\"true\"\r\n (removed)=\"onRemove(file)\"\r\n >\r\n <ngx-dropzone-label class=\"special-upload__card\">\r\n <img class=\"special-upload__card--image\" [src]=\"file?.url\" alt=\"\" />\r\n </ngx-dropzone-label>\r\n </ngx-dropzone-preview>\r\n </ngx-dropzone>\r\n <div\r\n class=\"special-upload--error mt-2\"\r\n *ngIf=\"!!control.errors && (control.dirty || control.touched)\"\r\n >\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { TextByFunctionPipe } from '../../core/pipes';\r\nimport { ILabelField, ILabelSettings } from './special-label.interface';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'sp-label',\r\n templateUrl: './special-label.component.html',\r\n styleUrls: ['./special-label.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [CommonModule, MatIconModule, TextByFunctionPipe],\r\n})\r\nexport class SpecialLabelComponent implements OnInit {\r\n @Input() control!: SpecialFormControl<ILabelField>;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n get settings(): ILabelSettings {\r\n return this.control.settings || { isLink: false };\r\n }\r\n\r\n onLink() {\r\n if (this.settings.isLink && this.settings.onClickLink) {\r\n this.settings.onClickLink(this.control.value);\r\n }\r\n }\r\n}\r\n","<div\r\n *ngIf=\"control && !control.hidden\"\r\n class=\"special-label px-2 mb-3 {{ control.styleClasses }} {{\r\n control.value | textByFunction: settings.stylesPipe\r\n }}\"\r\n [id]=\"control.elementId\"\r\n>\r\n <div *ngIf=\"!!control.label\" class=\"special-label__title font-bold\">\r\n {{ control.label }}\r\n </div>\r\n <div\r\n class=\"special-label__text\"\r\n [ngClass]=\"{\r\n 'cursor-pointer text-blue-600 hover:text-blue-700': settings.isLink\r\n }\"\r\n (click)=\"onLink()\"\r\n >\r\n {{ control.value | textByFunction: control.settings.pipe }}\r\n </div>\r\n</div>\r\n","export enum EControlTypes {\r\n pkey = 'PRIMARY-KEY',\r\n input = 'INPUT',\r\n richText = 'RICH-TEXT',\r\n textArea = 'TEXT-AREA',\r\n dropdown = 'DROPDOWN',\r\n date = 'DATE',\r\n checkbox = 'CHECKBOX',\r\n upload = 'UPLOAD',\r\n autocomplete = 'AUTOCOMPLETE',\r\n multiple = 'MULTIPLE-AUTOCOMPLETE',\r\n array = 'ARRAY',\r\n form = 'FORM',\r\n label = 'LABEL',\r\n default = 'DEFAULT',\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { IRichTextField } from './special-richtext.interface';\r\nimport { NgxEditorModule, Toolbar, Editor } from 'ngx-editor';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { ErrorMessagePipe } from '../../core/pipes';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'sp-input',\r\n templateUrl: './special-richtext.component.html',\r\n styleUrls: ['./special-richtext.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n NgxEditorModule,\r\n ErrorMessagePipe,\r\n ],\r\n})\r\nexport class SpecialRichtextComponent implements OnInit {\r\n editor: Editor;\r\n formControl: SpecialFormControl<IRichTextField>;\r\n colorPresets = ['red', 'yellow', 'green', 'blue', 'black'];\r\n\r\n @Input() set control(control: SpecialFormControl<IRichTextField>) {\r\n this.formControl = control;\r\n if (control.settings.colorPresets)\r\n this.colorPresets = control.settings.colorPresets;\r\n this.editor = new Editor();\r\n }\r\n\r\n toolbar: Toolbar = [\r\n // default value\r\n ['bold', 'italic'],\r\n ['underline', 'strike'],\r\n ['code', 'blockquote'],\r\n ['ordered_list', 'bullet_list'],\r\n [{ heading: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] }],\r\n ['link', 'image'],\r\n ['text_color', 'background_color'],\r\n ['align_left', 'align_center', 'align_right', 'align_justify'],\r\n ['horizontal_rule', 'format_clear'],\r\n ];\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n ngOnDestroy(): void {\r\n this.editor.destroy();\r\n }\r\n}\r\n","<div\r\n class=\"special-richtext w-full mb-3 {{ formControl.styleClasses }}\"\r\n [id]=\"formControl.elementId\"\r\n *ngIf=\"formControl && !formControl.hidden\"\r\n>\r\n <div class=\"text-md font-medium pl-2 mb-2\" *ngIf=\"formControl.label\">\r\n {{ formControl.label }}\r\n </div>\r\n <ngx-editor-menu\r\n [colorPresets]=\"colorPresets\"\r\n [toolbar]=\"toolbar\"\r\n [editor]=\"editor\"\r\n >\r\n </ngx-editor-menu>\r\n <ngx-editor\r\n [editor]=\"editor\"\r\n [formControl]=\"formControl\"\r\n [required]=\"formControl.required\"\r\n [disabled]=\"false\"\r\n [placeholder]=\"formControl.placeholder\"\r\n ></ngx-editor>\r\n <div class=\"px-5 mt-2\">\r\n <ng-container *ngIf=\"formControl.dirty; else tooltipRef\">\r\n <div\r\n class=\"text-sm text-rose-500\"\r\n *ngIf=\"\r\n formControl.errors\r\n | errorMessage : formControl.errorMessages as error;\r\n else tooltipRef\r\n \"\r\n >\r\n {{ error }}\r\n </div>\r\n </ng-container>\r\n <ng-template #tooltipRef>\r\n <div class=\"text-sm font-medium\">{{ formControl.tooltip }}</div>\r\n </ng-template>\r\n </div>\r\n</div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Directive,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { EControlTypes } from '../../core/aux-data/control-types.enum';\r\nimport {\r\n SpecialFormGroup,\r\n SpecialFormControl,\r\n SpecialFormArray\r\n} from '../../core/forms/special-forms';\r\nimport { SpecialAutocompleteComponent } from '../special-autocomplete/special-autocomplete.component';\r\nimport { SpecialCheckboxComponent } from '../special-checkbox/special-checkbox.component';\r\nimport { SpecialDatepickerComponent } from '../special-datepicker/special-datepicker.component';\r\nimport { SpecialDropdownComponent } from '../special-dropdown/special-dropdown.component';\r\nimport { SpecialInputComponent } from '../special-input/special-input.component';\r\nimport { SpecialLabelComponent } from '../special-label/special-label.component';\r\nimport { SpecialMultipleAutocompleteComponent } from '../special-multiple-autocomplete/special-multiple-autocomplete.component';\r\nimport { SpecialRichtextComponent } from '../special-richtext/special-richtext.component';\r\nimport { SpecialTextAreaComponent } from '../special-text-area/special-text-area.component';\r\nimport { SpecialUploadComponent } from '../special-upload/special-upload.component';\r\n\r\n@Component({\r\n selector: 'sp-form',\r\n templateUrl: './special-form.component.html',\r\n styleUrls: ['./special-form.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SpecialFormComponent implements OnInit {\r\n @Input('control') form: SpecialFormGroup;\r\n set control(form: SpecialFormGroup) {\r\n this.form = form;\r\n }\r\n ngOnInit(): void {}\r\n}\r\n\r\n@Component({\r\n selector: 'sp-array',\r\n templateUrl: './special-form-array.component.html',\r\n styleUrls: ['./special-form-array.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SpecialArrayComponent implements OnInit {\r\n @Input('control') formArray: any;\r\n\r\n set control(formArray: any) {\r\n this.formArray = formArray;\r\n }\r\n\r\n get withFormHeader() {\r\n return this.formArray.settings.withFormHeader;\r\n }\r\n\r\n get settings() {\r\n return this.formArray.settings;\r\n }\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n\r\n removeItem(index: number) {\r\n this.formArray.removeAt(index);\r\n }\r\n addItem() {\r\n this.formArray.addItem();\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: `[controlRender]`,\r\n})\r\nexport class FormControlsRenderDirective {\r\n private readonly componentsBuffer = {\r\n [EControlTypes.autocomplete]: SpecialAutocompleteComponent,\r\n [EControlTypes.checkbox]: SpecialCheckboxComponent,\r\n [EControlTypes.date]: SpecialDatepickerComponent,\r\n [EControlTypes.dropdown]: SpecialDropdownComponent,\r\n [EControlTypes.array]: SpecialArrayComponent,\r\n [EControlTypes.input]: SpecialInputComponent,\r\n [EControlTypes.multiple]: SpecialMultipleAutocompleteComponent,\r\n [EControlTypes.textArea]: SpecialTextAreaComponent,\r\n [EControlTypes.label]: SpecialLabelComponent,\r\n [EControlTypes.upload]: SpecialUploadComponent,\r\n [EControlTypes.form]: SpecialFormComponent,\r\n [EControlTypes.richText]: SpecialRichtextComponent,\r\n };\r\n @Input('control') set controlSetter(control: SpecialFormControl<any>) {\r\n this.viewContainer.clear();\r\n const component = (this.componentsBuffer as any)[control.type];\r\n if (component) {\r\n const componentRef = this.viewContainer.createComponent(component);\r\n (componentRef.instance as any).control = control;\r\n }\r\n }\r\n\r\n constructor(private viewContainer: ViewContainerRef) {}\r\n}\r\n","<div\r\n *ngIf=\"form && !form.hidden\"\r\n [id]=\"form.elementId\"\r\n class=\"special-form w-full box-border p-2 {{ form.styleClasses }}\"\r\n>\r\n <div\r\n *ngIf=\"form\"\r\n [class]=\"\r\n form.label\r\n ? 'w-full mt-2 p-3 border-slate-200 border border-solid box-border'\r\n : 'container'\r\n \"\r\n >\r\n <h1 *ngIf=\"!!form.label\" class=\"font-bold py-3\">{{ form.label }}</h1>\r\n <div class=\"w-full flex flex-wrap\">\r\n <ng-template\r\n *ngFor=\"let control of form.controls | controlsList\"\r\n controlRender\r\n [control]=\"control\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n","<div\r\n *ngIf=\"formArray && !formArray.hidden\"\r\n [id]=\"formArray.elementId\"\r\n class=\"special-form-array w-full box-border p-2 {{ formArray.styleClasses }}\"\r\n>\r\n <div class=\"w-full mt-2 p-3 border-slate-200 border border-solid box-border\">\r\n <h1 *ngIf=\"!!formArray.label\" class=\"font-bold py-3\">\r\n {{ formArray.label }}\r\n </h1>\r\n <div class=\"divide-y divide-x-0 divide-solid divide-slate-200\">\r\n <div\r\n *ngIf=\"formArray.form\"\r\n [ngClass]=\"{ 'md:grid-cols-15': settings.withActionButtons }\"\r\n class=\"grid gap-4 grid-cols-12\"\r\n >\r\n <ng-container *ngIf=\"!withFormHeader; else FORMHEADERREF\">\r\n <h2\r\n [class]=\"item.styleClasses\"\r\n *ngFor=\"let item of formArray.form.controls | controlsList\"\r\n >\r\n {{ item.label }}\r\n </h2>\r\n <div\r\n *ngIf=\"settings.withActionButtons\"\r\n class=\"\r\n col-start-7 col-end-13\r\n md:col-start-13 md:col-end-16\r\n pb-5\r\n my-auto\r\n ml-auto\r\n md:m-auto\r\n \"\r\n ></div>\r\n </ng-container>\r\n <ng-template #FORMHEADERREF>\r\n <ng-template\r\n *ngFor=\"let item of formArray.form.controls | controlsList\"\r\n controlRender\r\n [control]=\"item\"\r\n ></ng-template>\r\n <div\r\n *ngIf=\"settings.withActionButtons\"\r\n class=\"\r\n col-start-7 col-end-13\r\n md:col-start-13 md:col-end-16\r\n pb-5\r\n my-auto\r\n ml-auto\r\n md:m-auto\r\n \"\r\n >\r\n <button\r\n mat-flat-button\r\n color=\"primary\"\r\n [disabled]=\"formArray.form.invalid\"\r\n (click)=\"addItem()\"\r\n >\r\n {{settings.addActionLabel || 'Add'}}\r\n </button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div\r\n class=\"w-full pt-5 grid gap-4 grid-cols-12 md:grid-cols-15\"\r\n *ngFor=\"let formGroup of formArray.controls; let i = index\"\r\n >\r\n <ng-template\r\n *ngFor=\"let item of formGroup.controls | controlsList\"\r\n controlRender\r\n [control]=\"item\"\r\n ></ng-template>\r\n <div\r\n class=\"\r\n col-start-7 col-end-13\r\n md:col-start-13 md:col-end-16\r\n pb-5\r\n my-auto\r\n ml-auto\r\n md:m-auto\r\n \"\r\n >\r\n <button mat-flat-button color=\"warn\" (click)=\"removeItem(i)\">\r\n {{ settings.removeActionLabel || \"Remove\" }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n FormControlsRenderDirective,\r\n SpecialFormComponent,\r\n SpecialArrayComponent,\r\n} from './special-form.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FormControlsListPipe } from '../../core/pipes';\r\nimport { SpecialDropdownComponent } from '../special-dropdown/special-dropdown.component';\r\nimport { SpecialInputComponent } from '../special-input/special-input.component';\r\nimport { SpecialAutocompleteComponent } from '../special-autocomplete/special-autocomplete.component';\r\nimport { SpecialDatepickerComponent } from '../special-datepicker/special-datepicker.component';\r\nimport { SpecialLabelComponent } from '../special-label/special-label.component';\r\nimport { SpecialMultipleAutocompleteComponent } from '../special-multiple-autocomplete/special-multiple-autocomplete.component';\r\nimport { SpecialCheckboxComponent } from '../special-checkbox/special-checkbox.component';\r\nimport { SpecialTextAreaComponent } from '../special-text-area/special-text-area.component';\r\nimport { SpecialUploadComponent } from '../special-upload/special-upload.component';\r\nimport { SpecialRichtextComponent } from '../special-richtext/special-richtext.component';\r\nimport { ErrorStateMatcher } from '@angular/material/core';\r\n\r\n@NgModule({\r\n declarations: [\r\n SpecialArrayComponent,\r\n FormControlsRenderDirective,\r\n SpecialFormComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormControlsListPipe,\r\n MatButtonModule,\r\n SpecialRichtextComponent,\r\n SpecialDropdownComponent,\r\n SpecialInputComponent,\r\n SpecialAutocompleteComponent,\r\n SpecialDatepickerComponent,\r\n SpecialLabelComponent,\r\n SpecialMultipleAutocompleteComponent,\r\n SpecialCheckboxComponent,\r\n SpecialTextAreaComponent,\r\n SpecialUploadComponent,\r\n ],\r\n exports: [\r\n SpecialArrayComponent,\r\n FormControlsRenderDirective,\r\n SpecialFormComponent,\r\n ],\r\n})\r\nexport class SpecialFormModule {}\r\n","import {\r\n AbstractControl,\r\n FormArray,\r\n FormControl,\r\n FormGroup,\r\n} from '@angular/forms';\r\nimport { EControlTypes } from '../aux-data/control-types.enum';\r\nimport { IFieldBasicData } from '../interfaces/field-basics.interfaces';\r\nimport {\r\n IArraySettings,\r\n IFormSettings,\r\n TSpecialFields,\r\n TSpecialForm,\r\n TSpecialArray,\r\n TRawFields,\r\n} from '../interfaces/form.interfaces';\r\nimport * as _ from 'lodash';\r\nexport class SpecialFormControl<T extends TRawFields> extends FormControl {\r\n public name: string;\r\n public placeholder: T['placeholder'];\r\n public label: T['label'];\r\n public tooltip: T['tooltip'];\r\n public icon: T['icon'];\r\n public elementId: T['elementId'];\r\n public styleClasses: T['styleClasses'];\r\n public length: T['length'];\r\n public required: T['required'];\r\n public hidden: T['hidden'];\r\n public readOnly: T['readOnly'];\r\n public settings: T['settings'];\r\n public type: T['type'];\r\n public errorMessages: T['errorMessages'];\r\n\r\n constructor({\r\n name,\r\n settings,\r\n type,\r\n validators,\r\n asyncValidators,\r\n elementId,\r\n styleClasses,\r\n defaultValue,\r\n hidden,\r\n icon,\r\n label,\r\n length,\r\n placeholder,\r\n readOnly,\r\n required,\r\n tooltip,\r\n errorMessages,\r\n disabled,\r\n }: TSpecialFields) {\r\n super(defaultValue, validators, asyncValidators);\r\n\r\n this.name = name;\r\n this.placeholder = placeholder;\r\n this.label = label;\r\n this.tooltip = tooltip;\r\n this.icon = icon;\r\n this.elementId = elementId;\r\n this.settings = settings;\r\n this.type = type;\r\n this.styleClasses = styleClasses;\r\n this.hidden = hidden;\r\n this.length = length;\r\n this.readOnly = readOnly;\r\n this.required = required;\r\n this.errorMessages = errorMessages;\r\n disabled ? this.disable() : this.enable();\r\n }\r\n\r\n setReadOnly(status: boolean = true) {\r\n this.readOnly = status;\r\n }\r\n\r\n setDisabled(status: boolean = true) {\r\n status ? this.disable() : this.enable();\r\n }\r\n\r\n setHidden(status = true) {\r\n this.hidden = status;\r\n }\r\n}\r\nexport class SpecialFormGroup extends FormGroup{\r\n public name: string;\r\n public placeholder: string;\r\n public label: string;\r\n public tooltip: string;\r\n public icon: string;\r\n public elementId: string;\r\n public styleClasses: string;\r\n public length: number;\r\n public required: boolean;\r\n public hidden: boolean;\r\n public readOnly: boolean;\r\n public settings: IFormSettings;\r\n public type: EControlTypes.form;\r\n public defaultValue: any;\r\n public errorMessages: { [key: string]: string };\r\n\r\n constructor(\r\n {\r\n name,\r\n settings,\r\n type,\r\n validators,\r\n asyncValidators,\r\n elementId,\r\n styleClasses,\r\n defaultValue,\r\n hidden,\r\n icon,\r\n label,\r\n length,\r\n placeholder,\r\n readOnly,\r\n required,\r\n tooltip,\r\n disabled,\r\n }: TSpecialForm,\r\n controls: {\r\n [key: string]: SpecialFormControl<any>;\r\n }\r\n ) {\r\n super(controls, validators, asyncValidators);\r\n\r\n this.name = name;\r\n this.placeholder = placeholder;\r\n this.label = label;\r\n this.tooltip = tooltip;\r\n this.icon = icon;\r\n this.elementId = elementId;\r\n this.settings = settings;\r\n this.type = type;\r\n this.styleClasses = styleClasses;\r\n this.hidden = hidden;\r\n this.length = length;\r\n this.readOnly = readOnly;\r\n this.required = required;\r\n this.defaultValue = defaultValue;\r\n disabled ? this.disable() : this.enable();\r\n }\r\n\r\n getDirty() {\r\n this.markAsDirty();\r\n Object.values(this.controls).forEach((control) => {\r\n if (control instanceof SpecialFormControl) {\r\n control.markAsDirty();\r\n } else if (control instanceof SpecialFormGroup) {\r\n control.getDirty();\r\n } else if (control instanceof SpecialFormArray) {\r\n control.getDirty();\r\n }\r\n });\r\n }\r\n\r\n specialReset(value = {}) {\r\n const aux: any = {};\r\n Object.entries(this.controls).map(([key, control]) => {\r\n if (control instanceof SpecialFormControl) {\r\n aux[key] = control.defaultValue;\r\n } else if (control instanceof SpecialFormArray) {\r\n control.clear();\r\n }\r\n });\r\n\r\n this.reset({ ...aux, ...value });\r\n }\r\n\r\n setReadOnly(status: boolean = true) {\r\n Object.values(this.controls).map((value) => {\r\n if (\r\n value instanceof SpecialFormControl ||\r\n value instanceof SpecialFormArray ||\r\n value instanceof SpecialFormGroup\r\n ) {\r\n value.setReadOnly(status);\r\n }\r\n });\r\n }\r\n\r\n setReadOnlyByFields(fieldsObject: { [key: string]: boolean }) {\r\n Object.entries(fieldsObject).map(([key, value]) => {\r\n const control = this.controls[key];\r\n if (control instanceof SpecialFormControl) {\r\n control.readOnly = value;\r\n }\r\n });\r\n }\r\n\r\n setHiddenByFields(fields: { [key: string]: boolean }) {\r\n Object.entries(fields).map(([key, value]) => {\r\n const control = this.controls[key];\r\n if (control instanceof SpecialFormControl) {\r\n control.hidden = value;\r\n }\r\n });\r\n }\r\n\r\n setDisabled(status: boolean) {\r\n Object.values(this.controls).map((value) => {\r\n if (\r\n value instanceof SpecialFormControl ||\r\n value instanceof SpecialFormArray ||\r\n value instanceof SpecialFormGroup\r\n ) {\r\n value.setDisabled(status);\r\n }\r\n });\r\n }\r\n\r\n setDisabledByFields(fieldsObject: any) {\r\n Object.entries(fieldsObject).map((entries) => {\r\n if (this.controls[entries[0]] instanceof SpecialFormControl) {\r\n entries[1]\r\n ? this.controls[entries[0]].enable()\r\n : this.controls[entries[0]].disable();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * donde value es el objeto semilla y detailForm es un arreglo de form key para dar un marco al formarray\r\n */\r\n\r\n setFormValue(value: any) {\r\n this.specialReset(value);\r\n Object.entries(this.controls)\r\n .filter(([_key, control]) => control instanceof SpecialFormArray)\r\n .map(([key, control]) => {\r\n (control as SpecialFormArray).fillFormArray(value[key]);\r\n });\r\n }\r\n\r\n /**\r\n * Método que retorna\r\n */\r\n\r\n getIdPkey(): SpecialFormControl<any> | undefined {\r\n return Object.values(this.controls).find(\r\n (control) =>\r\n control instanceof SpecialFormControl && control.type === 'PRIMARY-KEY'\r\n ) as SpecialFormControl<any> | undefined;\r\n }\r\n}\r\n\r\nexport class SpecialFormArray extends FormArray implements IFieldBasicData {\r\n public name: string;\r\n public placeholder: string;\r\n public label: string;\r\n public tooltip: string;\r\n public icon: string;\r\n public elementId: string;\r\n public styleClasses: string;\r\n public required: boolean;\r\n public hidden: boolean;\r\n public readOnly: boolean;\r\n public settings: IArraySettings;\r\n public type: EControlTypes;\r\n public defaultValue: any;\r\n public form: SpecialFormGroup;\r\n private formCreation: (value?: any) => SpecialFormGroup;\r\n public errorMessages: { [key: string]: string };\r\n\r\n constructor(\r\n {\r\n name,\r\n settings,\r\n type,\r\n validators,\r\n asyncValidators,\r\n elementId,\r\n styleClasses,\r\n defaultValue,\r\n hidden,\r\n icon,\r\n label,\r\n placeholder,\r\n readOnly,\r\n required,\r\n tooltip,\r\n errorMessages,\r\n disabled,\r\n }: TSpecialArray,\r\n formCreation: () => SpecialFormGroup,\r\n controls: AbstractControl[]\r\n ) {\r\n super(controls, validators, asyncValidators);\r\n this.formCreation = formCreation;\r\n this.form = this.formCreation();\r\n this.name = name;\r\n this.placeholder = placeholder;\r\n this.label = label;\r\n this.tooltip = tooltip;\r\n this.icon = icon;\r\n this.elementId = elementId;\r\n this.settings = settings;\r\n this.type = type;\r\n this.styleClasses = styleClasses;\r\n this.hidden = hidden;\r\n this.readOnly = readOnly;\r\n this.required = required;\r\n this.defaultValue = defaultValue;\r\n this.errorMessages = errorMessages;\r\n disabled ? this.disable() : this.enable();\r\n }\r\n\r\n fillFormArray(data: any[]) {\r\n this.form.reset();\r\n this.clear();\r\n data.forEach((item) => {\r\n const form = this.formCreation(item);\r\n this.push(form);\r\n });\r\n }\r\n\r\n addItem() {\r\n const form = this.formCreation(this.form.value);\r\n this.form.specialReset();\r\n this.push(form);\r\n this.markAsDirty();\r\n }\r\n\r\n specialPush(index?: number) {\r\n const form = this.formCreation(this.form.value);\r\n if (!index) this.push(form);\r\n else this.controls[index].reset(this.form.value);\r\n }\r\n\r\n specialInsert(index = 0) {\r\n const form = this.formCreation(this.form.value);\r\n this.insert(index, form);\r\n }\r\n\r\n specialEdit(index: number, newValue: Object) {\r\n this.controls[index].reset({ ...this.controls[index].value, ...newValue });\r\n this.markAsDirty();\r\n }\r\n\r\n /**\r\n * Vuelve todos los controles del formArray de lectura o de sololectura\r\n * @param status\r\n */\r\n\r\n setReadOnly(status: boolean) {\r\n this.readOnly = status;\r\n this.controls.forEach((control) => {\r\n if (control instanceof SpecialFormGroup) {\r\n control.setReadOnly(status);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Vuelve todos los controles del formArray habilitados o deshabilitados\r\n * @param status\r\n */\r\n\r\n setDisabled(status: boolean) {\r\n status ? this.disable() : this.enable();\r\n this.controls.forEach((control) => {\r\n if (control instanceof SpecialFormGroup) {\r\n control.setDisabled(status);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Permite editar un control especifico.\r\n * @param index\r\n */\r\n\r\n editControl(index: number) {\r\n this.form.reset(this.controls[index].value);\r\n }\r\n\r\n getDirty() {\r\n this.markAsDirty();\r\n this.form.getDirty();\r\n this.controls.forEach((item) => {\r\n (<SpecialFormGroup>item).getDirty();\r\n });\r\n }\r\n\r\n recursiveFillForm(form: FormGroup, data: any): FormGroup {\r\n Object.entries(form.controls).map(([key, control]) => {\r\n if (control instanceof FormControl) {\r\n control.setValue(data[key]);\r\n } else if (control instanceof FormArray) {\r\n data[key].forEach(() => {});\r\n } else if (control instanceof FormGroup) {\r\n control.reset(data[key]);\r\n }\r\n });\r\n return form;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AbstractControl, ValidatorFn, Validators } from '@angular/forms';\r\nimport { IAutocompleteField } from '../../../components/special-autocomplete/special-autocomplete.interface';\r\nimport { EControlTypes } from '../../aux-data/control-types.enum';\r\nimport {\r\n SpecialFormArray,\r\n SpecialFormControl,\r\n SpecialFormGroup,\r\n} from '../../forms/special-forms';\r\nimport { IFieldData } from '../../interfaces/field-basics.interfaces';\r\nimport {\r\n IFormStructure,\r\n TRawFields,\r\n TSpecialArray,\r\n TSpecialFields,\r\n TSpecialForm,\r\n TSpecialInput,\r\n} from '../../interfaces/form.interfaces';\r\n\r\ninterface IControlParams {\r\n name: string;\r\n control: SpecialFormArray | SpecialFormGroup | SpecialFormControl<any>;\r\n}\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SpecialFormBuilderService {\r\n private readonly defectField: IFieldData = {\r\n asyncValidators: null,\r\n validators: null,\r\n defaultValue: null,\r\n elementId: '',\r\n hidden: false,\r\n icon: '',\r\n label: '',\r\n disabled: false,\r\n length: 0,\r\n placeholder: '',\r\n readOnly: false,\r\n required: false,\r\n styleClasses: '',\r\n errorMessages: {},\r\n tooltip: '',\r\n };\r\n\r\n private readonly inputDefectField: TSpecialInput = {\r\n ...this.defectField,\r\n settings: {},\r\n type: EControlTypes.input,\r\n name: '',\r\n };\r\n\r\n private readonly formDefectField: TSpecialForm = {\r\n ...this.defectField,\r\n settings: {\r\n formFields: {},\r\n },\r\n type: EControlTypes.form,\r\n name: '',\r\n };\r\n\r\n private readonly arrayDefectField: TSpecialArray = {\r\n ...this.defectField,\r\n settings: {\r\n formFields: {},\r\n },\r\n type: EControlTypes.array,\r\n name: '',\r\n };\r\n\r\n constructor() {}\r\n\r\n public control(field: Partial<TSpecialFields>): SpecialFormControl<any> {\r\n const formField: TSpecialFields = {\r\n ...this.inputDefectField,\r\n ...field,\r\n } as TSpecialFields;\r\n const { control } = this.setFormControl(formField);\r\n return control;\r\n }\r\n\r\n public group(\r\n fields: IFormStructure,\r\n parentField: Partial<TSpecialForm> = {}\r\n ) {\r\n return this.formGenerator(this.fieldDataToArray(fields), parentField);\r\n }\r\n\r\n public array() {}\r\n\r\n public fieldDataToArray(fields: IFormStructure): TSpecialFields[] {\r\n return Object.entries(fields).map(([name, field]) =>\r\n this.setDefectFieldOptions(name, field)\r\n );\r\n }\r\n\r\n private setDefectFieldOptions(\r\n name: string,\r\n field: Partial<TRawFields>\r\n ): TSpecialFields {\r\n return {\r\n ...this.inputDefectField,\r\n ...field,\r\n name,\r\n } as TSpecialFields;\r\n }\r\n\r\n private formGenerator(\r\n fields: TSpecialFields[],\r\n parentField: Partial<TSpecialForm> = {}\r\n ): SpecialFormGroup {\r\n const formField: TSpecialForm = {\r\n ...this.formDefectField,\r\n ...parentField,\r\n };\r\n const structure = fields\r\n .map((field) => this.getControlAndNameByType(field))\r\n .reduce(\r\n (prev, { name, control }: IControlParams) => ({\r\n ...prev,\r\n [name]: control,\r\n }),\r\n {}\r\n );\r\n return new SpecialFormGroup(formField, structure);\r\n }\r\n\r\n private getControlAndNameByType(field: TSpecialFields) {\r\n switch (field.type) {\r\n case EControlTypes.array:\r\n return this.setFormArray(field);\r\n case EControlTypes.form:\r\n return this.setFormGroup(field);\r\n default:\r\n return this.setFormControl(field);\r\n }\r\n }\r\n\r\n private setFormGroup(field: TSpecialForm): {\r\n name: string;\r\n control: SpecialFormGroup;\r\n } {\r\n const control = this.formGenerator(\r\n this.fieldDataToArray(field.settings.formFields),\r\n field\r\n );\r\n return { control, name: field.name };\r\n }\r\n\r\n private setFormArray(field: TSpecialArray): {\r\n name: string;\r\n control: SpecialFormArray;\r\n } {\r\n const auxForm = (value = {}) => {\r\n const auxForm = this.formGenerator(\r\n this.fieldDataToArray(field.settings.formFields),\r\n {}\r\n );\r\n auxForm.reset(value);\r\n return auxForm;\r\n };\r\n\r\n if (field.required) {\r\n field.validators = this.setValidatorsArray(field.validators, [\r\n this.arrayLengthRequired,\r\n ]);\r\n }\r\n\r\n return {\r\n name: field.name,\r\n control: new SpecialFormArray(field, auxForm, []),\r\n };\r\n }\r\n\r\n private setFormControl(field: TSpecialFields): {\r\n name: string;\r\n control: SpecialFormControl<any>;\r\n } {\r\n const validators: ValidatorFn[] = [];\r\n\r\n if (field.required) validators.push(this.setRequiredValidator(field));\r\n if (field.length) validators.push(Validators.maxLength(field.length));\r\n\r\n field.validators = this.setValidatorsArray(field.validators, validators);\r\n\r\n return {\r\n name: field.name,\r\n control: new SpecialFormControl(field),\r\n };\r\n }\r\n\r\n private setRequiredValidator(field: TSpecialFields): ValidatorFn {\r\n if (field.type !== EControlTypes.autocomplete) {\r\n return Validators.required;\r\n }\r\n\r\n return (control: SpecialFormControl<IAutocompleteField>) =>\r\n !!control.value && control.value instanceof Object\r\n ? null\r\n : { required: true };\r\n }\r\n private setValidatorsArray(\r\n validators: ValidatorFn | ValidatorFn[] | null,\r\n newValidators: ValidatorFn[]\r\n ): ValidatorFn[] {\r\n if (!validators) {\r\n return newValidators;\r\n }\r\n return validators instanceof Array\r\n ? [...validators, ...newValidators]\r\n : [validators, ...newValidators];\r\n }\r\n\r\n private arrayLengthRequired(control: AbstractControl) {\r\n if (control.value.length) {\r\n return {};\r\n }\r\n return { noItems: 'NO_SELECTED_ITEM' };\r\n }\r\n}\r\n","import { FormControl, FormGroupDirective, NgForm } from '@angular/forms';\r\nimport { ErrorStateMatcher } from '@angular/material/core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class ErrorStateMatcherService implements ErrorStateMatcher {\r\n isErrorState(control: FormControl): boolean {\r\n return control && control.invalid && control.dirty;\r\n }\r\n}\r\n","import {\r\n SpecialFormControl,\r\n SpecialFormArray,\r\n SpecialFormGroup,\r\n} from '../forms/special-forms';\r\n\r\nexport abstract class ISpecialControl {\r\n control: SpecialFormControl<any> | SpecialFormArray | SpecialFormGroup;\r\n}\r\n","import { createMask } from '@ngneat/input-mask';\r\n\r\nexport const currencyInputMask = createMask({\r\n alias: 'numeric',\r\n groupSeparator: ',',\r\n autoUnmask: true,\r\n digits: 2,\r\n digitsOptional: false,\r\n prefix: '$ ',\r\n placeholder: '0',\r\n});\r\n","import { createMask } from '@ngneat/input-mask';\r\n\r\nexport const numberMask = (max = 1000) =>\r\n createMask({ alias: 'numeric', min: 0, max });\r\n","/*\r\n * Public API Surface of special-forms\r\n */\r\n\r\nexport * from './lib/components';\r\nexport * from './lib/core/services/index';\r\nexport { EControlTypes } from './lib/core/aux-data/control-types.enum';\r\nexport * from './lib/core/forms/special-forms';\r\nexport * from './lib/core/interfaces/field-basics.interfaces';\r\nexport * from './lib/core/interfaces/form.interfaces';\r\nexport * from './lib/core/interfaces/special-control.interface';\r\nexport * from './lib/core/masks/index';\r\nexport * from './lib/core/pipes/index';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i8","i2","i4","i5","i6","i1","i2.FormControlsListPipe"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"special-forms.mjs","sources":["../../../projects/special-forms/src/lib/core/pipes/error-message-pipe/error.pipe.ts","../../../projects/special-forms/src/lib/core/pipes/text-by-function/text-by-function.pipe.ts","../../../projects/special-forms/src/lib/core/pipes/controls-list-pipe/controls-list.pipe.ts","../../../projects/special-forms/src/lib/components/special-autocomplete/special-autocomplete.component.ts","../../../projects/special-forms/src/lib/components/special-autocomplete/special-autocomplete.component.html","../../../projects/special-forms/src/lib/components/special-input/special-input.component.ts","../../../projects/special-forms/src/lib/components/special-input/special-input.component.html","../../../projects/special-forms/src/lib/components/special-dropdown/special-dropdown.component.ts","../../../projects/special-forms/src/lib/components/special-dropdown/special-dropdown.component.html","../../../projects/special-forms/src/lib/components/special-datepicker/special-datepicker.component.ts","../../../projects/special-forms/src/lib/components/special-datepicker/special-datepicker.component.html","../../../projects/special-forms/src/lib/components/special-multiple-autocomplete/special-multiple-autocomplete.component.ts","../../../projects/special-forms/src/lib/components/special-multiple-autocomplete/special-multiple-autocomplete.component.html","../../../projects/special-forms/src/lib/components/special-checkbox/special-checkbox.component.ts","../../../projects/special-forms/src/lib/components/special-checkbox/special-checkbox.component.html","../../../projects/special-forms/src/lib/components/special-text-area/special-text-area.component.ts","../../../projects/special-forms/src/lib/components/special-text-area/special-text-area.component.html","../../../projects/special-forms/src/lib/components/special-upload/special-upload-viewer.pipe.ts","../../../projects/special-forms/src/lib/components/special-upload/special-upload.component.ts","../../../projects/special-forms/src/lib/components/special-upload/special-upload.component.html","../../../projects/special-forms/src/lib/components/special-label/special-label.component.ts","../../../projects/special-forms/src/lib/components/special-label/special-label.component.html","../../../projects/special-forms/src/lib/core/aux-data/control-types.enum.ts","../../../projects/special-forms/src/lib/components/special-richtext/special-richtext.component.ts","../../../projects/special-forms/src/lib/components/special-richtext/special-richtext.component.html","../../../projects/special-forms/src/lib/components/special-form/special-form.component.ts","../../../projects/special-forms/src/lib/components/special-form/special-form.component.html","../../../projects/special-forms/src/lib/components/special-form/special-form-array.component.html","../../../projects/special-forms/src/lib/components/special-form/special-form.module.ts","../../../projects/special-forms/src/lib/core/forms/special-forms.ts","../../../projects/special-forms/src/lib/core/services/special-form-builder/special-form-builder.service.ts","../../../projects/special-forms/src/lib/core/services/error-state-matcher/error-matcher.ts","../../../projects/special-forms/src/lib/core/interfaces/special-control.interface.ts","../../../projects/special-forms/src/lib/core/masks/currency.mask.ts","../../../projects/special-forms/src/lib/core/masks/number.mask.ts","../../../projects/special-forms/src/public-api.ts","../../../projects/special-forms/src/special-forms.ts"],"sourcesContent":["import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { FormControl } from \"@angular/forms\";\r\n\r\n@Pipe({\r\n name: \"errorMessage\",\r\n standalone:true\r\n})\r\nexport class ErrorMessagePipe implements PipeTransform {\r\n transform(\r\n errorsObj: { [key: string]: any },\r\n errorMessages: { [key: string]: any },\r\n control?: FormControl\r\n ): any {\r\n const errors = errorsObj ? Object.keys(errorsObj) : [];\r\n const error = errors[0];\r\n const message = errorMessages[error] || error;\r\n if (control) {\r\n control.setErrors(errorsObj);\r\n }\r\n return message;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'textByFunction', standalone: true })\r\nexport class TextByFunctionPipe implements PipeTransform {\r\n transform(value: any, field: string | ((value: any) => string)): any {\r\n if (field instanceof Function) {\r\n return field(value);\r\n } else if (value instanceof Object) {\r\n return value[field];\r\n } else {\r\n return value;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { AbstractControl } from '@angular/forms';\r\nimport { SpecialFormControl } from '../../forms/special-forms';\r\n\r\n@Pipe({ name: 'controlsList', standalone: true })\r\nexport class FormControlsListPipe implements PipeTransform {\r\n transform(controls: {\r\n [key: string]: AbstractControl;\r\n }): SpecialFormControl<any>[] {\r\n if (!controls) return [];\r\n return Object.values(controls)\r\n .filter((control: SpecialFormControl<any>) => !control.hidden)\r\n .map((control) => control as SpecialFormControl<any>);\r\n }\r\n}\r\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport {\r\n MatAutocompleteModule,\r\n MatAutocompleteSelectedEvent,\r\n} from '@angular/material/autocomplete';\r\nimport { Subscription } from 'rxjs';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport {\r\n IAutocompleteField,\r\n IAutocompleteSettings,\r\n} from './special-autocomplete.interface';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { ErrorMessagePipe, TextByFunctionPipe } from '../../core/pipes';\r\n@Component({\r\n standalone: true,\r\n selector: 'sp-autocomplete',\r\n templateUrl: './special-autocomplete.component.html',\r\n styleUrls: ['./special-autocomplete.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatInputModule,\r\n CommonModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipe,\r\n TextByFunctionPipe,\r\n ],\r\n})\r\nexport class SpecialAutocompleteComponent {\r\n @Input() control: SpecialFormControl<IAutocompleteField>;\r\n subs = new Subscription();\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n this.init();\r\n }\r\n\r\n get settings(): IAutocompleteSettings<any> {\r\n return this.control.settings;\r\n }\r\n\r\n init() {\r\n this.subs.add(\r\n this.control.valueChanges.pipe(debounceTime(500)).subscribe((value) => {\r\n if (typeof value === 'string') {\r\n this.settings.getData(value, this.control);\r\n }\r\n })\r\n );\r\n }\r\n\r\n configValue = (item: any) => {\r\n if (!item) return '';\r\n const fieldName = this.settings.fieldName;\r\n return fieldName instanceof Function ? fieldName(item) : item[fieldName];\r\n };\r\n\r\n optionSelected(data: MatAutocompleteSelectedEvent) {\r\n this.control.setValue(data.option.value);\r\n if (this.settings.onSelect) this.settings.onSelect(data.option.value);\r\n }\r\n\r\n iconClick(event: Event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\n","@if (control && !control.hidden) {\r\n <mat-form-field\r\n class=\"special-autocomplete w-full mb-3 {{ control.styleClasses }}\"\r\n [id]=\"control.elementId\"\r\n [appearance]=\"control.label ? 'outline' : 'fill'\"\r\n >\r\n @if (control.label) {\r\n <mat-label>\r\n {{ control.label }}\r\n </mat-label>\r\n }\r\n <input\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [required]=\"control.required\"\r\n [readonly]=\"control.readOnly\"\r\n [placeholder]=\"control.placeholder\"\r\n matInput\r\n [formControl]=\"control\"\r\n [matAutocomplete]=\"auto\"\r\n />\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"configValue\"\r\n (optionSelected)=\"optionSelected($event)\"\r\n >\r\n @for (\r\n option of settings?.source | async;\r\n track option[settings.fieldId]\r\n ) {\r\n <mat-option [value]=\"option\">\r\n <div class=\"flex items-center\">\r\n @if (settings.fieldImage) {\r\n <img\r\n class=\"w-8 pr-2\"\r\n alt=\"\"\r\n [src]=\"option | textByFunction: settings.fieldImage\"\r\n />\r\n }\r\n <span>\r\n {{ option | textByFunction: settings.fieldName }}\r\n </span>\r\n </div>\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n @if (control.icon) {\r\n <mat-icon matPrefix>{{ control.icon }}</mat-icon>\r\n }\r\n @if (settings.icon) {\r\n <button mat-icon-button matSuffix (click)=\"iconClick($event)\">\r\n <mat-icon>\r\n {{ settings.icon }}\r\n </mat-icon>\r\n </button>\r\n }\r\n @if (control.tooltip) {\r\n <mat-hint>{{ control.tooltip }}</mat-hint>\r\n }\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n </mat-form-field>\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { InputMaskModule } from '@ngneat/input-mask';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { ErrorMessagePipe } from '../../core/pipes';\r\nimport { IInputField, IInputSettings } from './special-input.interface';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'sp-input',\r\n templateUrl: './special-input.component.html',\r\n styleUrls: ['./special-input.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipe,\r\n ],\r\n})\r\nexport class SpecialInputComponent implements OnInit {\r\n @Input() control!: SpecialFormControl<IInputField>;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n onEnterClick() {\r\n if (this.settings.onEnter) {\r\n this.settings.onEnter(this.control.value);\r\n }\r\n }\r\n\r\n onBlurAction() {\r\n if (this.settings.onBlur) {\r\n this.settings.onBlur(this.control.value);\r\n }\r\n }\r\n\r\n get settings(): IInputSettings {\r\n return this.control.settings;\r\n }\r\n\r\n iconClick(event: Event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n}\r\n","@if (control && !control.hidden) {\r\n <mat-form-field\r\n [id]=\"control.elementId\"\r\n class=\"special-input w-full mb-3 {{ control.styleClasses }}\"\r\n [appearance]=\"control.label ? 'outline' : 'fill'\"\r\n >\r\n @if (control.label) {\r\n <mat-label>\r\n {{ control.label }}\r\n </mat-label>\r\n }\r\n <input\r\n matInput\r\n (blur)=\"onBlurAction()\"\r\n (keydown.enter)=\"onEnterClick()\"\r\n [inputMask]=\"settings?.mask\"\r\n autocomplete=\"off\"\r\n [type]=\"settings?.type || 'text'\"\r\n [readonly]=\"control.readOnly\"\r\n [required]=\"control.required\"\r\n [placeholder]=\"control.placeholder\"\r\n [formControl]=\"control\"\r\n />\r\n @if (control.tooltip) {\r\n <mat-hint>{{ control.tooltip }}</mat-hint>\r\n }\r\n @if (settings.icon) {\r\n <button mat-icon-button matSuffix (click)=\"iconClick($event)\">\r\n <mat-icon>\r\n {{ settings.icon }}\r\n </mat-icon>\r\n </button>\r\n }\r\n @if (control.icon) {\r\n <mat-icon matPrefix>{{ control.icon }}</mat-icon>\r\n }\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n} from '@angular/core';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { IDropdownField, IDropdownSettings } from './special-dropdown.interface';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport {\r\n ErrorMessagePipe,\r\n TextByFunctionPipe,\r\n} from '../../core/pipes';\r\n@Component({\r\n standalone: true,\r\n selector: 'sp-dropdown',\r\n templateUrl: './special-dropdown.component.html',\r\n styleUrls: ['./special-dropdown.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n CommonModule,\r\n MatSelectModule,\r\n ReactiveFormsModule,\r\n ErrorMessagePipe,\r\n MatIconModule,\r\n MatButtonModule,\r\n TextByFunctionPipe,\r\n ],\r\n})\r\nexport class SpecialDropdownComponent {\r\n @Input() control!: SpecialFormControl<IDropdownField>;\r\n\r\n get settings(): IDropdownSettings {\r\n return this.control.settings;\r\n }\r\n\r\n iconClick(event: Event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n optionSelected(value: any) {\r\n console.log(value);\r\n if (this.settings.onSelect) this.settings.onSelect(value);\r\n }\r\n}\r\n","@if (control && !control.hidden) {\r\n <mat-form-field\r\n [id]=\"control.elementId\"\r\n class=\"special-dropdown w-full mb-3 {{ control.styleClasses }}\"\r\n [appearance]=\"control.label ? 'outline' : 'fill'\"\r\n >\r\n @if (control.label) {\r\n <mat-label>\r\n {{ control.label }}\r\n </mat-label>\r\n }\r\n <mat-select\r\n [formControl]=\"control\"\r\n [required]=\"control.required\"\r\n (selectionChange)=\"optionSelected($event.value)\"\r\n [placeholder]=\"control.placeholder\"\r\n >\r\n @if (!control.required) {\r\n <mat-option [value]=\"null\">\r\n {{ control.placeholder || settings.notSelectedText }}\r\n </mat-option>\r\n }\r\n @for (item of settings.source | async; track item[settings.fieldId]) {\r\n <mat-option [value]=\"item[settings.fieldId]\">\r\n {{ item | textByFunction: settings.fieldName }}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n @if (settings.icon) {\r\n <button mat-icon-button matSuffix (click)=\"iconClick($event)\">\r\n <mat-icon>\r\n {{ settings.icon }}\r\n </mat-icon>\r\n </button>\r\n }\r\n @if (control.icon) {\r\n <mat-icon matPrefix>{{ control.icon }}</mat-icon>\r\n }\r\n @if (control.tooltip) {\r\n <mat-hint>{{ control.tooltip }}</mat-hint>\r\n }\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n </mat-form-field>\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { ErrorMessagePipe } from '../../core/pipes';\r\nimport {\r\n IDatePickerField,\r\n IDatePickerSettings,\r\n} from './special-datepicker.interface';\r\n@Component({\r\n standalone: true,\r\n selector: 'sp-datepicker',\r\n templateUrl: './special-datepicker.component.html',\r\n styleUrls: ['./special-datepicker.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatInputModule,\r\n MatDatepickerModule,\r\n CommonModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipe,\r\n MatNativeDateModule,\r\n ],\r\n})\r\nexport class SpecialDatepickerComponent implements OnInit {\r\n @Input() control!: SpecialFormControl<IDatePickerField>;\r\n\r\n constructor() {}\r\n\r\n get settings(): IDatePickerSettings {\r\n return this.control.settings;\r\n }\r\n\r\n get startAt() {\r\n return this.settings?.startAt || new Date();\r\n }\r\n\r\n ngOnInit(): void {}\r\n}\r\n","@if (control && !control.hidden) {\r\n <mat-form-field\r\n [id]=\"control.elementId\"\r\n class=\"special-datepicker w-full mb-3 {{ control.styleClasses }}\"\r\n [appearance]=\"control.label ? 'outline' : 'fill'\"\r\n >\r\n @if (control.label) {\r\n <mat-label>\r\n {{ control.label }}\r\n </mat-label>\r\n }\r\n <input\r\n matInput\r\n autocomplete=\"off\"\r\n [readonly]=\"control.readOnly\"\r\n [matDatepicker]=\"picker\"\r\n [required]=\"control.required\"\r\n [placeholder]=\"control.placeholder\"\r\n [formControl]=\"control\"\r\n />\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker startView=\"year\" [startAt]=\"startAt\">\r\n </mat-datepicker>\r\n <mat-hint>\r\n {{ control.tooltip }}\r\n </mat-hint>\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n </mat-form-field>\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport {\r\n MatAutocompleteModule,\r\n MatAutocompleteSelectedEvent,\r\n} from '@angular/material/autocomplete';\r\nimport { Subscription } from 'rxjs';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { IMultipleAutocompleteField, IMultipleAutocompleteSettings } from './special-multiple-autocomplete.interface';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { ErrorMessagePipe, TextByFunctionPipe } from '../../core/pipes';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'sp-multiple-autocomplete',\r\n templateUrl: './special-multiple-autocomplete.component.html',\r\n styleUrls: ['./special-multiple-autocomplete.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatInputModule,\r\n CommonModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipe,\r\n TextByFunctionPipe,\r\n MatChipsModule,\r\n ],\r\n})\r\nexport class SpecialMultipleAutocompleteComponent {\r\n @Input() control!: SpecialFormControl<IMultipleAutocompleteField>;\r\n\r\n subs = new Subscription();\r\n internalControl = new FormControl();\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n this.init();\r\n }\r\n\r\n get settings(): IMultipleAutocompleteSettings<any> {\r\n return this.control.settings;\r\n }\r\n\r\n init() {\r\n this.subs.add(\r\n this.internalControl.valueChanges\r\n .pipe(debounceTime(500))\r\n .subscribe((value) => {\r\n if (typeof value === 'string') {\r\n this.control.settings.getData(value, this.control);\r\n }\r\n })\r\n );\r\n }\r\n\r\n optionSelected(data: MatAutocompleteSelectedEvent) {\r\n const newItem = data.option.value;\r\n this.internalControl.reset();\r\n this.control.setValue([\r\n ...(this.control.value || []).filter(\r\n (item: any) =>\r\n item[this.control.settings.fieldId] !==\r\n newItem[this.control.settings.fieldId]\r\n ),\r\n newItem,\r\n ]);\r\n\r\n if (this.settings.onSelect) this.settings.onSelect(newItem);\r\n }\r\n\r\n iconClick(event: Event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n remove(value: any[]): void {\r\n let currentValues = Array.from(this.control.value);\r\n const index = currentValues.indexOf(value);\r\n\r\n if (index > -1) {\r\n currentValues.splice(index, 1);\r\n const value = currentValues;\r\n this.control.markAsDirty();\r\n this.control.setValue(value);\r\n }\r\n }\r\n\r\n configValue = (item: any) => {\r\n if (!item) return '';\r\n const fieldName = this.control.settings.fieldName;\r\n return fieldName instanceof Function ? fieldName(item) : item[fieldName];\r\n };\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\n","@if (control && !control.hidden) {\r\n <div\r\n class=\"special-multiple-autocomplete w-full mb-3 {{ control.styleClasses }}\"\r\n [id]=\"control.elementId\"\r\n >\r\n <mat-form-field\r\n class=\"w-full\"\r\n [appearance]=\"control.label ? 'outline' : 'fill'\"\r\n >\r\n @if (control.label) {\r\n <mat-label>\r\n {{ control.label }}\r\n </mat-label>\r\n }\r\n <input\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [required]=\"control.required && !control.value?.length\"\r\n [readonly]=\"control.readOnly\"\r\n [placeholder]=\"control.placeholder\"\r\n matInput\r\n [formControl]=\"internalControl\"\r\n [matAutocomplete]=\"auto\"\r\n />\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"configValue\"\r\n (optionSelected)=\"optionSelected($event)\"\r\n >\r\n @for (\r\n option of settings?.source | async;\r\n track option[settings.fieldId]\r\n ) {\r\n <mat-option [value]=\"option\">\r\n <div class=\"flex items-center\">\r\n @if (settings.fieldImage) {\r\n <img\r\n class=\"w-8 pr-2\"\r\n alt=\"\"\r\n [src]=\"option | textByFunction: settings.fieldImage\"\r\n />\r\n }\r\n <span>\r\n {{ option | textByFunction: settings.fieldName }}\r\n </span>\r\n </div>\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n @if (control.icon) {\r\n <mat-icon matPrefix>{{ control.icon }}</mat-icon>\r\n }\r\n @if (settings.icon) {\r\n <button mat-icon-button matSuffix (click)=\"iconClick($event)\">\r\n <mat-icon>\r\n {{ settings.icon }}\r\n </mat-icon>\r\n </button>\r\n }\r\n @if (control.tooltip) {\r\n <mat-hint>{{ control.tooltip }}</mat-hint>\r\n }\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <mat-chip-listbox>\r\n @for (chip of control.value; track chip[settings.fieldId]) {\r\n <mat-chip-row [removable]=\"true\" (removed)=\"remove(chip)\">\r\n <div class=\"flex items-center\">\r\n @if (settings.fieldImage) {\r\n <img\r\n class=\"w-8 pr-2\"\r\n alt=\"\"\r\n [src]=\"chip | textByFunction: settings.fieldImage\"\r\n />\r\n }\r\n {{ chip | textByFunction: settings.fieldName }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </div>\r\n </mat-chip-row>\r\n }\r\n </mat-chip-listbox>\r\n </div>\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { ErrorMessagePipe } from '../../core/pipes';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { ICheckboxField, ICheckboxSettings } from './special-checkbox.interface';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'sp-checkbox',\r\n templateUrl: './special-checkbox.component.html',\r\n styleUrls: ['./special-checkbox.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n FormsModule,\r\n MatCheckboxModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipe,\r\n ],\r\n})\r\nexport class SpecialCheckboxComponent implements OnInit {\r\n @Input() control!: SpecialFormControl<ICheckboxField>;\r\n\r\n get settings(): ICheckboxSettings {\r\n return this.control.settings;\r\n }\r\n constructor() {}\r\n ngOnInit(): void {}\r\n\r\n\r\n}\r\n","@if (control && !control.hidden) {\r\n <div\r\n [id]=\"control.elementId\"\r\n class=\"special-checkbox w-full mb-3 flex flex-col {{\r\n control.styleClasses\r\n }}\"\r\n >\r\n @if (control.label) {\r\n <mat-label>\r\n {{ control.label }}\r\n </mat-label>\r\n }\r\n <mat-checkbox\r\n [required]=\"control.required\"\r\n [ngModel]=\"control.value\"\r\n (ngModelChange)=\"control.setValue($event); control.markAsDirty()\"\r\n [indeterminate]=\"settings.indeterminate\"\r\n [labelPosition]=\"settings.labelPosition\"\r\n [color]=\"settings.color\"\r\n [disabled]=\"control.disabled\"\r\n >\r\n @if (control.icon) {\r\n <mat-icon matSuffix>{{ control.icon }}</mat-icon>\r\n }\r\n {{ control.placeholder }}\r\n </mat-checkbox>\r\n </div>\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy } from '@angular/core';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { InputMaskModule } from '@ngneat/input-mask';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { ErrorMessagePipe } from '../../core/pipes';\r\nimport { ITextAreaField } from './special-text-area.interface';\r\n\r\n@Component({\r\n standalone:true,\r\n selector: 'sp-text-area',\r\n templateUrl: './special-text-area.component.html',\r\n styleUrls: ['./special-text-area.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports:[\r\n InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipe,\r\n ]\r\n})\r\nexport class SpecialTextAreaComponent implements OnInit {\r\n @Input() control!: SpecialFormControl<ITextAreaField>;\r\n\r\n @Output() onBlur: EventEmitter<any> = new EventEmitter();\r\n @Output() onEnter: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","@if (control && !control.hidden) {\r\n <mat-form-field\r\n [id]=\"control.elementId\"\r\n class=\"special-textarea w-full mb-3 {{ control.styleClasses }}\"\r\n [appearance]=\"control.label ? 'outline' : 'fill'\"\r\n >\r\n @if (control.label) {\r\n <mat-label>\r\n {{ control.label }}\r\n </mat-label>\r\n }\r\n <textarea\r\n cdkTextareaAutosize\r\n #autosize=\"cdkTextareaAutosize\"\r\n cdkAutosizeMinRows=\"1\"\r\n cdkAutosizeMaxRows=\"5\"\r\n matInput\r\n (blur)=\"onBlur.emit(control.value)\"\r\n (keydown.enter)=\"onEnter.emit(control.value)\"\r\n [readonly]=\"control.readOnly\"\r\n [required]=\"control.required\"\r\n [placeholder]=\"control.placeholder\"\r\n [formControl]=\"control\"\r\n ></textarea>\r\n @if (control.icon) {\r\n <mat-icon matPrefix>{{ control.icon }}</mat-icon>\r\n }\r\n @if (control.tooltip) {\r\n <mat-hint>{{ control.tooltip }}</mat-hint>\r\n }\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n </mat-form-field>\r\n}\r\n","import { inject, Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\r\n\r\n@Pipe({ name: 'previewImageUrl', standalone: true })\r\nexport class previewImageUrlPipe implements PipeTransform {\r\n private readonly imageTypeFormats = [\r\n 'jpeg',\r\n 'jpg',\r\n 'png',\r\n 'gif',\r\n 'bmp',\r\n 'webp',\r\n 'svg',\r\n ];\r\n\r\n private readonly docFormats = ['doc', 'docx'];\r\n\r\n private readonly pdfIcon = `\r\n <svg version=\"1.1\" id=\"_x34_\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 512 512\" xml:space=\"preserve\" width=\"800px\" height=\"800px\" fill=\"#000000\">\r\n <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"/>\r\n <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <g id=\"SVGRepo_iconCarrier\"> <g> <polygon style=\"fill:#FFFEFE;\" points=\"475.435,117.825 475.435,512 47.791,512 47.791,0.002 357.613,0.002 412.491,54.881 \"/> <rect x=\"36.565\" y=\"34.295\" style=\"fill:#B43331;\" width=\"205.097\" height=\"91.768\"/> <g> <g> <path style=\"fill:#FFFEFE;\" d=\"M110.133,64.379c-0.905-2.186-2.111-4.146-3.769-5.804c-1.659-1.658-3.694-3.015-6.031-3.92 c-2.412-0.98-5.127-1.432-8.141-1.432H69.652v58.195h11.383V89.481h11.157c3.015,0,5.729-0.452,8.141-1.432 c2.337-0.905,4.371-2.261,6.031-3.92c1.658-1.658,2.865-3.543,3.769-5.804c0.828-2.186,1.281-4.523,1.281-6.935 C111.413,68.902,110.961,66.565,110.133,64.379z M97.845,77.118c-1.508,1.432-3.618,2.186-6.182,2.186H81.035V63.323h10.628 c2.564,0,4.674,0.754,6.182,2.261c1.432,1.432,2.185,3.392,2.185,5.804C100.031,73.726,99.277,75.686,97.845,77.118z\"/> <path style=\"fill:#FFFEFE;\" d=\"M164.558,75.761c-0.075-2.035-0.15-3.844-0.377-5.503c-0.225-1.659-0.603-3.166-1.131-4.598 c-0.527-1.357-1.206-2.714-2.111-3.92c-2.035-2.94-4.522-5.126-7.312-6.483c-2.864-1.357-6.256-2.035-10.252-2.035H122.42v58.195 h20.956c3.996,0,7.388-0.678,10.252-2.035c2.79-1.357,5.277-3.543,7.312-6.483c0.905-1.206,1.584-2.563,2.111-3.92 c0.528-1.432,0.905-2.94,1.131-4.598c0.227-1.658,0.301-3.468,0.377-5.503c0.075-1.96,0.075-4.146,0.075-6.558 C164.633,79.908,164.633,77.721,164.558,75.761z M153.175,88.2c0,1.734-0.15,3.091-0.302,4.297 c-0.151,1.131-0.376,2.186-0.678,2.94c-0.301,0.829-0.754,1.583-1.281,2.261c-1.885,2.412-4.749,3.543-8.518,3.543h-8.668V63.323 h8.668c3.769,0,6.634,1.206,8.518,3.618c0.528,0.678,0.98,1.357,1.281,2.186c0.302,0.829,0.528,1.809,0.678,3.015 c0.152,1.131,0.302,2.563,0.302,4.221c0.075,1.659,0.075,3.694,0.075,5.955C153.251,84.581,153.251,86.541,153.175,88.2z\"/> <path style=\"fill:#FFFEFE;\" d=\"M213.18,63.323V53.222h-38.37v58.195h11.383V87.823h22.992V77.646h-22.992V63.323H213.18z\"/> </g> <g> <path style=\"fill:#FFFEFE;\" d=\"M110.133,64.379c-0.905-2.186-2.111-4.146-3.769-5.804c-1.659-1.658-3.694-3.015-6.031-3.92 c-2.412-0.98-5.127-1.432-8.141-1.432H69.652v58.195h11.383V89.481h11.157c3.015,0,5.729-0.452,8.141-1.432 c2.337-0.905,4.371-2.261,6.031-3.92c1.658-1.658,2.865-3.543,3.769-5.804c0.828-2.186,1.281-4.523,1.281-6.935 C111.413,68.902,110.961,66.565,110.133,64.379z M97.845,77.118c-1.508,1.432-3.618,2.186-6.182,2.186H81.035V63.323h10.628 c2.564,0,4.674,0.754,6.182,2.261c1.432,1.432,2.185,3.392,2.185,5.804C100.031,73.726,99.277,75.686,97.845,77.118z\"/> </g> </g> <polygon style=\"opacity:0.08;fill:#040000;\" points=\"475.435,117.825 475.435,512 47.791,512 47.791,419.581 247.706,219.667 259.541,207.832 266.099,201.273 277.029,190.343 289.995,177.377 412.491,54.881 \"/> <polygon style=\"fill:#BBBBBA;\" points=\"475.435,117.836 357.6,117.836 357.6,0 \"/> <g> <path style=\"fill:#B43331;\" d=\"M414.376,370.658c-2.488-4.372-5.88-8.518-10.101-12.287c-3.467-3.166-7.538-6.106-12.137-8.82 c-18.543-10.93-45.003-16.207-80.961-16.207h-3.618c-1.96-1.809-3.996-3.618-6.106-5.503 c-13.644-12.287-24.499-25.63-32.942-40.48c16.583-36.561,24.499-69.126,23.519-96.867c-0.151-4.674-0.83-9.046-2.036-13.117 c-1.808-6.558-4.824-12.363-9.046-17.112c-0.075-0.075-0.075-0.075-0.15-0.151c-6.709-7.538-16.056-11.835-25.555-11.835 c-9.574,0-18.393,4.146-24.802,11.76c-6.331,7.538-9.724,17.866-9.875,30.002c-0.225,18.544,1.282,36.108,4.448,52.315 c0.301,1.282,0.528,2.563,0.829,3.844c3.166,14.7,7.84,28.645,13.871,41.611c-7.086,14.398-14.248,26.836-19.222,35.279 c-3.769,6.408-7.916,13.117-12.213,19.826c-19.373,3.468-35.807,7.689-50.129,12.966c-19.374,7.011-34.903,16.056-46.059,26.836 c-7.238,6.935-12.137,14.323-14.55,22.012c-2.563,7.915-2.411,15.83,0.453,22.916c2.638,6.558,7.387,12.061,13.719,15.83 c1.508,0.905,3.091,1.658,4.749,2.337c4.825,1.96,10.102,3.015,15.604,3.015c12.74,0,25.856-5.503,36.938-15.378 c20.654-18.469,41.988-48.169,54.576-66.94c10.327-1.583,21.559-2.94,34.224-4.297c14.927-1.508,28.118-2.412,40.104-2.865 c3.694,3.317,7.237,6.483,10.63,9.498c18.846,16.81,33.168,28.947,46.134,37.465c0,0.075,0.075,0.075,0.15,0.075 c5.127,3.392,10.026,6.181,14.926,8.443c5.502,2.563,11.081,3.92,16.81,3.92c7.237,0,14.021-2.186,19.675-6.181 c5.729-4.146,9.875-10.101,11.76-16.81C420.181,387.694,418.899,378.724,414.376,370.658z M247.706,219.667 c-1.056-9.348-1.508-19.072-1.357-29.324c0.15-9.724,3.694-16.283,8.895-16.283c3.919,0,8.066,3.543,9.951,10.327 c0.528,2.035,0.905,4.372,0.98,7.01c0.15,3.166,0.075,6.483-0.075,9.875c-0.452,9.574-2.112,19.75-4.976,30.681 c-1.734,7.011-3.995,14.323-6.784,21.936C251.173,243.186,248.911,231.803,247.706,219.667z M121.968,418.073 c-1.282-3.166,0.15-9.272,7.99-16.81c11.985-11.458,30.755-20.504,56.914-27.364c-4.976,6.784-9.875,12.966-14.625,18.619 c-7.237,8.744-14.172,16.132-20.429,21.71c-5.351,4.824-11.232,7.84-16.81,8.594c-0.98,0.151-1.96,0.226-2.94,0.226 C127.169,423.049,123.173,421.089,121.968,418.073z M242.428,337.942l0.528-0.829l-0.829,0.151 c0.15-0.377,0.377-0.754,0.602-1.055c3.167-5.352,7.161-12.212,11.458-20.127l0.377,0.829l0.98-2.035 c3.166,4.523,6.634,8.971,10.252,13.267c1.735,2.035,3.544,3.995,5.352,5.955l-1.205,0.075l1.055,0.98 c-3.09,0.226-6.331,0.528-9.573,0.829c-2.036,0.226-4.147,0.377-6.257,0.603C250.796,337.037,246.499,337.49,242.428,337.942z M369.298,384.98c-8.97-5.729-18.997-13.795-31.36-24.575c17.564,1.809,31.36,5.654,41.159,11.383 c4.297,2.488,7.538,5.051,9.724,7.538c3.619,3.844,4.901,7.312,4.221,9.649c-0.602,2.337-3.241,3.92-6.483,3.92 c-1.885,0-3.844-0.452-5.879-1.432c-3.468-1.658-7.086-3.694-10.931-6.181C369.598,385.282,369.448,385.131,369.298,384.98z\"/> </g> </g> </g>\r\n </svg>\r\n `;\r\n\r\n private readonly wordIcon = `\r\n <svg width=\"800px\" height=\"800px\" viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"#000000\">\r\n <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"/>\r\n <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <g id=\"SVGRepo_iconCarrier\">\r\n <title>file_type_word2</title>\r\n <path d=\"M18.536,2.323V4.868c3.4.019,7.12-.035,10.521.019a.783.783,0,0,1,.912.861c.054,6.266-.013,12.89.032,19.157-.02.4.009,1.118-.053,1.517-.079.509-.306.607-.817.676-.286.039-.764.034-1.045.047-2.792-.014-5.582-.011-8.374-.01l-1.175,0v2.547L2,27.133Q2,16,2,4.873L18.536,2.322\" style=\"fill:#283c82\"/>\r\n <path d=\"M18.536,5.822h10.5V26.18h-10.5V23.635h8.27V22.363h-8.27v-1.59h8.27V19.5h-8.27v-1.59h8.27V16.637h-8.27v-1.59h8.27V13.774h-8.27v-1.59h8.27V10.911h-8.27V9.321h8.27V8.048h-8.27V5.822\" style=\"fill:#fff\"/>\r\n <path d=\"M8.573,11.443c.6-.035,1.209-.06,1.813-.092.423,2.147.856,4.291,1.314,6.429.359-2.208.757-4.409,1.142-6.613.636-.022,1.272-.057,1.905-.1-.719,3.082-1.349,6.19-2.134,9.254-.531.277-1.326-.013-1.956.032-.423-2.106-.916-4.2-1.295-6.314C8.99,16.1,8.506,18.133,8.08,20.175q-.916-.048-1.839-.111c-.528-2.8-1.148-5.579-1.641-8.385.544-.025,1.091-.048,1.635-.067.328,2.026.7,4.043.986,6.072.448-2.08.907-4.161,1.352-6.241\" style=\"fill:#fff\"/>\r\n </g>\r\n </svg>\r\n `;\r\n\r\n private readonly byDefectIcon = `\r\n <svg width=\"800px\" height=\"800px\" viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"#000000\">\r\n<g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"/>\r\n<g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n<g id=\"SVGRepo_iconCarrier\">\r\n<title>file_type_word2</title>\r\n<path d=\"M18.536,2.323V4.868c3.4.019,7.12-.035,10.521.019a.783.783,0,0,1,.912.861c.054,6.266-.013,12.89.032,19.157-.02.4.009,1.118-.053,1.517-.079.509-.306.607-.817.676-.286.039-.764.034-1.045.047-2.792-.014-5.582-.011-8.374-.01l-1.175,0v2.547L2,27.133Q2,16,2,4.873L18.536,2.322\" style=\"fill:#283c82\"/>\r\n<path d=\"M18.536,5.822h10.5V26.18h-10.5V23.635h8.27V22.363h-8.27v-1.59h8.27V19.5h-8.27v-1.59h8.27V16.637h-8.27v-1.59h8.27V13.774h-8.27v-1.59h8.27V10.911h-8.27V9.321h8.27V8.048h-8.27V5.822\" style=\"fill:#fff\"/>\r\n<path d=\"M8.573,11.443c.6-.035,1.209-.06,1.813-.092.423,2.147.856,4.291,1.314,6.429.359-2.208.757-4.409,1.142-6.613.636-.022,1.272-.057,1.905-.1-.719,3.082-1.349,6.19-2.134,9.254-.531.277-1.326-.013-1.956.032-.423-2.106-.916-4.2-1.295-6.314C8.99,16.1,8.506,18.133,8.08,20.175q-.916-.048-1.839-.111c-.528-2.8-1.148-5.579-1.641-8.385.544-.025,1.091-.048,1.635-.067.328,2.026.7,4.043.986,6.072.448-2.08.907-4.161,1.352-6.241\" style=\"fill:#fff\"/>\r\n</g>\r\n</svg>\r\n `;\r\n\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n transform(file: File): SafeUrl {\r\n if (this.imageTypeFormats.some((format) => file.type.includes(format))) {\r\n return this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(file));\r\n }\r\n if (file.type.includes('pdf')) {\r\n return this.svgConfiguration(this.pdfIcon);\r\n }\r\n if (this.docFormats.some((format) => file.type.includes(format))) {\r\n return this.svgConfiguration(this.wordIcon);\r\n }\r\n return this.svgConfiguration(this.byDefectIcon);\r\n }\r\n\r\n svgConfiguration(svg: string) {\r\n return this.sanitizer.bypassSecurityTrustUrl(\r\n 'data:image/svg+xml;base64,' + btoa(this.pdfIcon),\r\n );\r\n }\r\n}\r\n\r\n@Pipe({ name: 'truncate', standalone: true })\r\nexport class TruncatePipe implements PipeTransform {\r\n transform(text: string, lenght = 12, suffix = '...'): string {\r\n return text.slice(0, lenght) + suffix;\r\n }\r\n}\r\n\r\n@Pipe({ name: 'isArray', standalone: true })\r\nexport class IsArrayPipe implements PipeTransform {\r\n transform(input: any): boolean {\r\n return Array.isArray(input);\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { IUploadField, IUploadSettings } from './special-upload.interface';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { ChangeDetectionStrategy } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { ErrorMessagePipe } from '../../core/pipes';\r\nimport { DropzoneCdkModule } from '@ngx-dropzone/cdk';\r\nimport { DropzoneMaterialModule } from '@ngx-dropzone/material';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { IsArrayPipe, previewImageUrlPipe, TruncatePipe } from './special-upload-viewer.pipe';\r\nimport {MatCardModule} from '@angular/material/card';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'sp-upload',\r\n templateUrl: './special-upload.component.html',\r\n styleUrls: ['./special-upload.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n previewImageUrlPipe,\r\n FormsModule,\r\n DropzoneCdkModule,\r\n MatInputModule,\r\n DropzoneMaterialModule,\r\n CommonModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipe,\r\n MatChipsModule,\r\n TruncatePipe,\r\n IsArrayPipe,\r\n MatCardModule\r\n ],\r\n})\r\nexport class SpecialUploadComponent {\r\n @Input() control: SpecialFormControl<IUploadField>;\r\n readonly DEFAULT_ACCEPTED_TYPES = 'image/png, .jpeg, .jpg, image/gif';\r\n get settings(): IUploadSettings {\r\n return this.control.settings;\r\n }\r\n\r\n onSelectOne(event: any) {\r\n this.control.setValue(event.addedFiles.map(this.fixFileName));\r\n this.onSelectFile(this.control.value);\r\n this.control.markAsDirty();\r\n }\r\n\r\n onSelectFile(value) {\r\n if (this.control.settings?.onSelectFile) {\r\n this.control.settings.onSelectFile(value);\r\n }\r\n }\r\n\r\n fixFileName(file: File) {\r\n return Object.defineProperty(file, 'name', {\r\n writable: true,\r\n value: file.name.normalize('NFD').replace(/[\\u0300-\\u036f]/g, ''),\r\n });\r\n }\r\n\r\n onRemove(file: File) {\r\n this.control.setValue(\r\n this.control.value.filter(\r\n (fl: any) => fl.lastModified !== file.lastModified,\r\n ),\r\n );\r\n }\r\n}\r\n","@if (control && !control.hidden) {\r\n <mat-form-field\r\n [id]=\"control.elementId\"\r\n class=\"special-input w-full mb-3 {{ control.styleClasses }}\"\r\n [appearance]=\"control.label ? 'outline' : 'fill'\"\r\n >\r\n @if (control.label) {\r\n <mat-label>\r\n {{ control.label }}\r\n </mat-label>\r\n }\r\n <ngx-mat-dropzone>\r\n <input\r\n [multiple]=\"settings.multiple\"\r\n type=\"file\"\r\n fileInput\r\n [mode]=\"settings.mode\"\r\n [accept]=\"\r\n control.settings?.accept\r\n ? control.settings?.accept\r\n : DEFAULT_ACCEPTED_TYPES\r\n \"\r\n [placeholder]=\"control.placeholder\"\r\n [formControl]=\"control\"\r\n [required]=\"control.required\"\r\n [readonly]=\"control.readOnly\"\r\n (ngModelChange)=\"onSelectFile($event)\"\r\n />\r\n </ngx-mat-dropzone>\r\n @if (control.value | isArray) {\r\n <mat-chip-set>\r\n @for (file of control.value; track file.lastModified) {\r\n <mat-chip-row>\r\n <img\r\n matChipAvatar\r\n [src]=\"file | previewImageUrl\"\r\n alt=\"Photo of a Shiba Inu\"\r\n />\r\n {{ file.name | truncate }}\r\n <button (click)=\"onRemove(file)\" matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip-row>\r\n }\r\n </mat-chip-set>\r\n } @else if (control.value) {\r\n <mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <mat-card-title-group>\r\n <mat-card-title>{{ control.value.name }}</mat-card-title>\r\n <mat-card-subtitle>{{ control.value.type }}</mat-card-subtitle>\r\n <img mat-card-sm-image [src]=\"control.value | previewImageUrl\" />\r\n </mat-card-title-group>\r\n </mat-card-header>\r\n <mat-card-actions align=\"end\">\r\n <button\r\n mat-mini-fab\r\n color=\"warn\"\r\n (click)=\"control.reset(); $event.stopPropagation()\"\r\n >\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n </mat-card-actions>\r\n </mat-card>\r\n }\r\n @if (control.icon) {\r\n <mat-icon matSuffix>{{ control.icon }}</mat-icon>\r\n }\r\n @if (control.tooltip) {\r\n <mat-hint>{{ control.tooltip }}</mat-hint>\r\n }\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n </mat-form-field>\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { TextByFunctionPipe } from '../../core/pipes';\r\nimport { ILabelField, ILabelSettings } from './special-label.interface';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'sp-label',\r\n templateUrl: './special-label.component.html',\r\n styleUrls: ['./special-label.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [CommonModule, MatIconModule, TextByFunctionPipe],\r\n})\r\nexport class SpecialLabelComponent implements OnInit {\r\n @Input() control!: SpecialFormControl<ILabelField>;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n get settings(): ILabelSettings {\r\n return this.control.settings || { isLink: false };\r\n }\r\n\r\n onLink() {\r\n if (this.settings.isLink && this.settings.onClickLink) {\r\n this.settings.onClickLink(this.control.value);\r\n }\r\n }\r\n}\r\n","@if (control && !control.hidden) {\r\n <div\r\n class=\"special-label px-2 mb-3 {{ control.styleClasses }} {{\r\n control.value | textByFunction: settings.stylesPipe\r\n }}\"\r\n [id]=\"control.elementId\"\r\n >\r\n @if (control.label) {\r\n <div class=\"special-label__title font-bold\">\r\n {{ control.label }}\r\n </div>\r\n }\r\n <div\r\n class=\"special-label__text\"\r\n [ngClass]=\"{\r\n 'cursor-pointer text-blue-600 hover:text-blue-700': settings.isLink,\r\n }\"\r\n (click)=\"onLink()\"\r\n >\r\n {{ control.value | textByFunction: control.settings.pipe }}\r\n </div>\r\n </div>\r\n}\r\n","export enum EControlTypes {\r\n pkey = 'PRIMARY-KEY',\r\n input = 'INPUT',\r\n richText = 'RICH-TEXT',\r\n textArea = 'TEXT-AREA',\r\n dropdown = 'DROPDOWN',\r\n date = 'DATE',\r\n checkbox = 'CHECKBOX',\r\n upload = 'UPLOAD',\r\n autocomplete = 'AUTOCOMPLETE',\r\n multiple = 'MULTIPLE-AUTOCOMPLETE',\r\n array = 'ARRAY',\r\n form = 'FORM',\r\n label = 'LABEL',\r\n default = 'DEFAULT',\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { IRichTextField } from './special-richtext.interface';\r\nimport { NgxEditorModule, Toolbar, Editor } from 'ngx-editor';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { ErrorMessagePipe } from '../../core/pipes';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'sp-input',\r\n templateUrl: './special-richtext.component.html',\r\n styleUrls: ['./special-richtext.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n NgxEditorModule,\r\n ErrorMessagePipe,\r\n MatFormFieldModule,\r\n ],\r\n})\r\nexport class SpecialRichtextComponent {\r\n editor: Editor;\r\n formControl: SpecialFormControl<IRichTextField>;\r\n colorPresets = ['red', 'yellow', 'green', 'blue', 'black'];\r\n\r\n @Input() control: SpecialFormControl<IRichTextField>;\r\n toolbar: Toolbar = [\r\n // default value\r\n ['bold', 'italic'],\r\n ['underline', 'strike'],\r\n ['code', 'blockquote'],\r\n ['ordered_list', 'bullet_list'],\r\n [{ heading: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] }],\r\n ['link', 'image'],\r\n ['text_color', 'background_color'],\r\n ['align_left', 'align_center', 'align_right', 'align_justify'],\r\n ['horizontal_rule', 'format_clear'],\r\n ];\r\n\r\n ngOnInit() {\r\n if (this.control.settings.colorPresets)\r\n this.colorPresets = this.control.settings.colorPresets;\r\n this.editor = new Editor();\r\n this.control.valueChanges.subscribe((val) => {\r\n console.log(this.control);\r\n console.log(val);\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.editor.destroy();\r\n }\r\n}\r\n","@if (control && !control.hidden) {\r\n <div\r\n class=\"special-richtext w-full mb-3 {{ control.styleClasses }}\"\r\n [id]=\"control.elementId\"\r\n >\r\n @if (control.label) {\r\n <h4 class=\"text-md font-medium pl-2 mb-2\">\r\n {{ control.label }}\r\n </h4>\r\n }\r\n <ngx-editor-menu\r\n [colorPresets]=\"colorPresets\"\r\n [toolbar]=\"toolbar\"\r\n [editor]=\"editor\"\r\n >\r\n </ngx-editor-menu>\r\n <ngx-editor\r\n [editor]=\"editor\"\r\n [formControl]=\"control\"\r\n [required]=\"control.required\"\r\n [outputFormat]=\"control.settings.outputFormat || 'html'\"\r\n [disabled]=\"false\"\r\n [placeholder]=\"control.placeholder\"\r\n ></ngx-editor>\r\n <div class=\"px-5 mt-2\">\r\n @if (\r\n control.dirty && control.errors | errorMessage: control.errorMessages;\r\n as error\r\n ) {\r\n <div class=\"text-sm text-rose-500\">\r\n {{ error }}\r\n </div>\r\n } @else {\r\n <div class=\"text-sm font-medium\">{{ control.tooltip }}</div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Directive,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { EControlTypes } from '../../core/aux-data/control-types.enum';\r\nimport {\r\n SpecialFormGroup,\r\n SpecialFormControl,\r\n SpecialFormArray\r\n} from '../../core/forms/special-forms';\r\nimport { SpecialAutocompleteComponent } from '../special-autocomplete/special-autocomplete.component';\r\nimport { SpecialCheckboxComponent } from '../special-checkbox/special-checkbox.component';\r\nimport { SpecialDatepickerComponent } from '../special-datepicker/special-datepicker.component';\r\nimport { SpecialDropdownComponent } from '../special-dropdown/special-dropdown.component';\r\nimport { SpecialInputComponent } from '../special-input/special-input.component';\r\nimport { SpecialLabelComponent } from '../special-label/special-label.component';\r\nimport { SpecialMultipleAutocompleteComponent } from '../special-multiple-autocomplete/special-multiple-autocomplete.component';\r\nimport { SpecialRichtextComponent } from '../special-richtext/special-richtext.component';\r\nimport { SpecialTextAreaComponent } from '../special-text-area/special-text-area.component';\r\nimport { SpecialUploadComponent } from '../special-upload/special-upload.component';\r\n\r\n@Component({\r\n selector: 'sp-form',\r\n templateUrl: './special-form.component.html',\r\n styleUrls: ['./special-form.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SpecialFormComponent implements OnInit {\r\n @Input('control') form: SpecialFormGroup;\r\n set control(form: SpecialFormGroup) {\r\n this.form = form;\r\n }\r\n ngOnInit(): void {}\r\n}\r\n\r\n@Component({\r\n selector: 'sp-array',\r\n templateUrl: './special-form-array.component.html',\r\n styleUrls: ['./special-form-array.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SpecialArrayComponent implements OnInit {\r\n @Input('control') formArray: any;\r\n\r\n set control(formArray: any) {\r\n this.formArray = formArray;\r\n }\r\n\r\n get withFormHeader() {\r\n return this.formArray.settings.withFormHeader;\r\n }\r\n\r\n get settings() {\r\n return this.formArray.settings;\r\n }\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n\r\n removeItem(index: number) {\r\n this.formArray.removeAt(index);\r\n }\r\n addItem() {\r\n this.formArray.addItem();\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: `[controlRender]`,\r\n})\r\nexport class FormControlsRenderDirective {\r\n private readonly componentsBuffer = {\r\n [EControlTypes.autocomplete]: SpecialAutocompleteComponent,\r\n [EControlTypes.checkbox]: SpecialCheckboxComponent,\r\n [EControlTypes.date]: SpecialDatepickerComponent,\r\n [EControlTypes.dropdown]: SpecialDropdownComponent,\r\n [EControlTypes.array]: SpecialArrayComponent,\r\n [EControlTypes.input]: SpecialInputComponent,\r\n [EControlTypes.multiple]: SpecialMultipleAutocompleteComponent,\r\n [EControlTypes.textArea]: SpecialTextAreaComponent,\r\n [EControlTypes.label]: SpecialLabelComponent,\r\n [EControlTypes.upload]: SpecialUploadComponent,\r\n [EControlTypes.form]: SpecialFormComponent,\r\n [EControlTypes.richText]: SpecialRichtextComponent,\r\n };\r\n @Input('control') set controlSetter(control: SpecialFormControl<any>) {\r\n this.viewContainer.clear();\r\n const component = (this.componentsBuffer as any)[control.type];\r\n if (component) {\r\n const componentRef = this.viewContainer.createComponent(component);\r\n (componentRef.instance as any).control = control;\r\n }\r\n }\r\n\r\n constructor(private viewContainer: ViewContainerRef) {}\r\n}\r\n","@if (form && !form.hidden) {\r\n <div\r\n [id]=\"form.elementId\"\r\n class=\"special-form w-full box-border p-2 {{ form.styleClasses }}\"\r\n >\r\n @if (form) {\r\n <div\r\n [class]=\"\r\n form.label\r\n ? 'w-full mt-2 p-3 border-slate-200 border border-solid box-border'\r\n : 'container'\r\n \"\r\n >\r\n @if (form.label) {\r\n <h1 class=\"font-bold py-3\">{{ form.label }}</h1>\r\n }\r\n <div class=\"w-full flex flex-wrap\">\r\n @for (control of form.controls | controlsList; track control.name) {\r\n <ng-template controlRender [control]=\"control\"></ng-template>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n}\r\n","@if (formArray && !formArray.hidden) {\r\n <div\r\n [id]=\"formArray.elementId\"\r\n class=\"special-form-array w-full box-border p-2 {{\r\n formArray.styleClasses\r\n }}\"\r\n >\r\n <div\r\n class=\"w-full mt-2 p-3 border-slate-200 border border-solid box-border\"\r\n >\r\n @if (formArray.label) {\r\n <h1 class=\"font-bold py-3\">\r\n {{ formArray.label }}\r\n </h1>\r\n }\r\n <div class=\"divide-y divide-x-0 divide-solid divide-slate-200\">\r\n @if (formArray.form) {\r\n <div\r\n [ngClass]=\"{ 'md:grid-cols-15': settings.withActionButtons }\"\r\n class=\"grid gap-4 grid-cols-12\"\r\n >\r\n @if (!withFormHeader) {\r\n @for (\r\n item of formArray.form.controls | controlsList;\r\n track item.name\r\n ) {\r\n <h2 [class]=\"item.styleClasses\">\r\n {{ item.label }}\r\n </h2>\r\n }\r\n @if (settings.withActionButtons) {\r\n <div\r\n class=\"col-start-7 col-end-13 md:col-start-13 md:col-end-16 pb-5 my-auto ml-auto md:m-auto\"\r\n ></div>\r\n }\r\n } @else {\r\n @for (\r\n item of formArray.form.controls | controlsList;\r\n track item.name\r\n ) {\r\n <ng-template controlRender [control]=\"item\"></ng-template>\r\n }\r\n @if (settings.withActionButtons) {\r\n <div\r\n class=\"col-start-7 col-end-13 md:col-start-13 md:col-end-16 pb-5 my-auto ml-auto md:m-auto\"\r\n >\r\n <button\r\n mat-flat-button\r\n color=\"primary\"\r\n [disabled]=\"formArray.form.invalid\"\r\n (click)=\"addItem()\"\r\n >\r\n {{ settings.addActionLabel || \"Add\" }}\r\n </button>\r\n </div>\r\n }\r\n }\r\n </div>\r\n }\r\n @for (\r\n formGroup of formArray.controls;\r\n track formGroup.name;\r\n let i = $index\r\n ) {\r\n <div class=\"w-full pt-5 grid gap-4 grid-cols-12 md:grid-cols-15\">\r\n @for (item of formGroup.controls | controlsList; track item.name) {\r\n <ng-template controlRender [control]=\"item\"></ng-template>\r\n }\r\n <div\r\n class=\"col-start-7 col-end-13 md:col-start-13 md:col-end-16 pb-5 my-auto ml-auto md:m-auto\"\r\n >\r\n <button mat-flat-button color=\"warn\" (click)=\"removeItem(i)\">\r\n {{ settings.removeActionLabel || \"Remove\" }}\r\n </button>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n FormControlsRenderDirective,\r\n SpecialFormComponent,\r\n SpecialArrayComponent,\r\n} from './special-form.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FormControlsListPipe } from '../../core/pipes';\r\nimport { SpecialDropdownComponent } from '../special-dropdown/special-dropdown.component';\r\nimport { SpecialInputComponent } from '../special-input/special-input.component';\r\nimport { SpecialAutocompleteComponent } from '../special-autocomplete/special-autocomplete.component';\r\nimport { SpecialDatepickerComponent } from '../special-datepicker/special-datepicker.component';\r\nimport { SpecialLabelComponent } from '../special-label/special-label.component';\r\nimport { SpecialMultipleAutocompleteComponent } from '../special-multiple-autocomplete/special-multiple-autocomplete.component';\r\nimport { SpecialCheckboxComponent } from '../special-checkbox/special-checkbox.component';\r\nimport { SpecialTextAreaComponent } from '../special-text-area/special-text-area.component';\r\nimport { SpecialUploadComponent } from '../special-upload/special-upload.component';\r\nimport { SpecialRichtextComponent } from '../special-richtext/special-richtext.component';\r\nimport { ErrorStateMatcher } from '@angular/material/core';\r\n\r\n@NgModule({\r\n declarations: [\r\n SpecialArrayComponent,\r\n FormControlsRenderDirective,\r\n SpecialFormComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormControlsListPipe,\r\n MatButtonModule,\r\n SpecialRichtextComponent,\r\n SpecialDropdownComponent,\r\n SpecialInputComponent,\r\n SpecialAutocompleteComponent,\r\n SpecialDatepickerComponent,\r\n SpecialLabelComponent,\r\n SpecialMultipleAutocompleteComponent,\r\n SpecialCheckboxComponent,\r\n SpecialTextAreaComponent,\r\n SpecialUploadComponent,\r\n ],\r\n exports: [\r\n SpecialArrayComponent,\r\n FormControlsRenderDirective,\r\n SpecialFormComponent,\r\n ],\r\n})\r\nexport class SpecialFormModule {}\r\n","import {\r\n AbstractControl,\r\n FormArray,\r\n FormControl,\r\n FormGroup,\r\n} from '@angular/forms';\r\nimport { EControlTypes } from '../aux-data/control-types.enum';\r\nimport { IFieldBasicData } from '../interfaces/field-basics.interfaces';\r\nimport {\r\n IArraySettings,\r\n IFormSettings,\r\n TSpecialFields,\r\n TSpecialForm,\r\n TSpecialArray,\r\n TRawFields,\r\n} from '../interfaces/form.interfaces';\r\nimport * as _ from 'lodash';\r\nexport class SpecialFormControl<T extends TRawFields> extends FormControl {\r\n public name: string;\r\n public placeholder: T['placeholder'];\r\n public label: T['label'];\r\n public tooltip: T['tooltip'];\r\n public icon: T['icon'];\r\n public elementId: T['elementId'];\r\n public styleClasses: T['styleClasses'];\r\n public length: T['length'];\r\n public required: T['required'];\r\n public hidden: T['hidden'];\r\n public readOnly: T['readOnly'];\r\n public settings: T['settings'];\r\n public type: T['type'];\r\n public errorMessages: T['errorMessages'];\r\n\r\n constructor({\r\n name,\r\n settings,\r\n type,\r\n validators,\r\n asyncValidators,\r\n elementId,\r\n styleClasses,\r\n defaultValue,\r\n hidden,\r\n icon,\r\n label,\r\n length,\r\n placeholder,\r\n readOnly,\r\n required,\r\n tooltip,\r\n errorMessages,\r\n disabled,\r\n }: TSpecialFields) {\r\n super(defaultValue, validators, asyncValidators);\r\n\r\n this.name = name;\r\n this.placeholder = placeholder;\r\n this.label = label;\r\n this.tooltip = tooltip;\r\n this.icon = icon;\r\n this.elementId = elementId;\r\n this.settings = settings;\r\n this.type = type;\r\n this.styleClasses = styleClasses;\r\n this.hidden = hidden;\r\n this.length = length;\r\n this.readOnly = readOnly;\r\n this.required = required;\r\n this.errorMessages = errorMessages;\r\n disabled ? this.disable() : this.enable();\r\n }\r\n\r\n setReadOnly(status: boolean = true) {\r\n this.readOnly = status;\r\n }\r\n\r\n setDisabled(status: boolean = true) {\r\n status ? this.disable() : this.enable();\r\n }\r\n\r\n setHidden(status = true) {\r\n this.hidden = status;\r\n }\r\n}\r\nexport class SpecialFormGroup extends FormGroup{\r\n public name: string;\r\n public placeholder: string;\r\n public label: string;\r\n public tooltip: string;\r\n public icon: string;\r\n public elementId: string;\r\n public styleClasses: string;\r\n public length: number;\r\n public required: boolean;\r\n public hidden: boolean;\r\n public readOnly: boolean;\r\n public settings: IFormSettings;\r\n public type: EControlTypes.form;\r\n public defaultValue: any;\r\n public errorMessages: { [key: string]: string };\r\n\r\n constructor(\r\n {\r\n name,\r\n settings,\r\n type,\r\n validators,\r\n asyncValidators,\r\n elementId,\r\n styleClasses,\r\n defaultValue,\r\n hidden,\r\n icon,\r\n label,\r\n length,\r\n placeholder,\r\n readOnly,\r\n required,\r\n tooltip,\r\n disabled,\r\n }: TSpecialForm,\r\n controls: {\r\n [key: string]: SpecialFormControl<any>;\r\n }\r\n ) {\r\n super(controls, validators, asyncValidators);\r\n\r\n this.name = name;\r\n this.placeholder = placeholder;\r\n this.label = label;\r\n this.tooltip = tooltip;\r\n this.icon = icon;\r\n this.elementId = elementId;\r\n this.settings = settings;\r\n this.type = type;\r\n this.styleClasses = styleClasses;\r\n this.hidden = hidden;\r\n this.length = length;\r\n this.readOnly = readOnly;\r\n this.required = required;\r\n this.defaultValue = defaultValue;\r\n disabled ? this.disable() : this.enable();\r\n }\r\n\r\n getDirty() {\r\n this.markAsDirty();\r\n Object.values(this.controls).forEach((control) => {\r\n if (control instanceof SpecialFormControl) {\r\n control.markAsDirty();\r\n } else if (control instanceof SpecialFormGroup) {\r\n control.getDirty();\r\n } else if (control instanceof SpecialFormArray) {\r\n control.getDirty();\r\n }\r\n });\r\n }\r\n\r\n specialReset(value = {}) {\r\n const aux: any = {};\r\n Object.entries(this.controls).map(([key, control]) => {\r\n if (control instanceof SpecialFormControl) {\r\n aux[key] = control.defaultValue;\r\n } else if (control instanceof SpecialFormArray) {\r\n control.clear();\r\n }\r\n });\r\n\r\n this.reset({ ...aux, ...value });\r\n }\r\n\r\n setReadOnly(status: boolean = true) {\r\n Object.values(this.controls).map((value) => {\r\n if (\r\n value instanceof SpecialFormControl ||\r\n value instanceof SpecialFormArray ||\r\n value instanceof SpecialFormGroup\r\n ) {\r\n value.setReadOnly(status);\r\n }\r\n });\r\n }\r\n\r\n setReadOnlyByFields(fieldsObject: { [key: string]: boolean }) {\r\n Object.entries(fieldsObject).map(([key, value]) => {\r\n const control = this.controls[key];\r\n if (control instanceof SpecialFormControl) {\r\n control.readOnly = value;\r\n }\r\n });\r\n }\r\n\r\n setHiddenByFields(fields: { [key: string]: boolean }) {\r\n Object.entries(fields).map(([key, value]) => {\r\n const control = this.controls[key];\r\n if (control instanceof SpecialFormControl) {\r\n control.hidden = value;\r\n }\r\n });\r\n }\r\n\r\n setDisabled(status: boolean) {\r\n Object.values(this.controls).map((value) => {\r\n if (\r\n value instanceof SpecialFormControl ||\r\n value instanceof SpecialFormArray ||\r\n value instanceof SpecialFormGroup\r\n ) {\r\n value.setDisabled(status);\r\n }\r\n });\r\n }\r\n\r\n setDisabledByFields(fieldsObject: any) {\r\n Object.entries(fieldsObject).map((entries) => {\r\n if (this.controls[entries[0]] instanceof SpecialFormControl) {\r\n entries[1]\r\n ? this.controls[entries[0]].enable()\r\n : this.controls[entries[0]].disable();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * donde value es el objeto semilla y detailForm es un arreglo de form key para dar un marco al formarray\r\n */\r\n\r\n setFormValue(value: any) {\r\n this.specialReset(value);\r\n Object.entries(this.controls)\r\n .filter(([_key, control]) => control instanceof SpecialFormArray)\r\n .map(([key, control]) => {\r\n (control as SpecialFormArray).fillFormArray(value[key]);\r\n });\r\n }\r\n\r\n /**\r\n * Método que retorna\r\n */\r\n\r\n getIdPkey(): SpecialFormControl<any> | undefined {\r\n return Object.values(this.controls).find(\r\n (control) =>\r\n control instanceof SpecialFormControl && control.type === 'PRIMARY-KEY'\r\n ) as SpecialFormControl<any> | undefined;\r\n }\r\n}\r\n\r\nexport class SpecialFormArray extends FormArray implements IFieldBasicData {\r\n public name: string;\r\n public placeholder: string;\r\n public label: string;\r\n public tooltip: string;\r\n public icon: string;\r\n public elementId: string;\r\n public styleClasses: string;\r\n public required: boolean;\r\n public hidden: boolean;\r\n public readOnly: boolean;\r\n public settings: IArraySettings;\r\n public type: EControlTypes;\r\n public defaultValue: any;\r\n public form: SpecialFormGroup;\r\n private formCreation: (value?: any) => SpecialFormGroup;\r\n public errorMessages: { [key: string]: string };\r\n\r\n constructor(\r\n {\r\n name,\r\n settings,\r\n type,\r\n validators,\r\n asyncValidators,\r\n elementId,\r\n styleClasses,\r\n defaultValue,\r\n hidden,\r\n icon,\r\n label,\r\n placeholder,\r\n readOnly,\r\n required,\r\n tooltip,\r\n errorMessages,\r\n disabled,\r\n }: TSpecialArray,\r\n formCreation: () => SpecialFormGroup,\r\n controls: AbstractControl[]\r\n ) {\r\n super(controls, validators, asyncValidators);\r\n this.formCreation = formCreation;\r\n this.form = this.formCreation();\r\n this.name = name;\r\n this.placeholder = placeholder;\r\n this.label = label;\r\n this.tooltip = tooltip;\r\n this.icon = icon;\r\n this.elementId = elementId;\r\n this.settings = settings;\r\n this.type = type;\r\n this.styleClasses = styleClasses;\r\n this.hidden = hidden;\r\n this.readOnly = readOnly;\r\n this.required = required;\r\n this.defaultValue = defaultValue;\r\n this.errorMessages = errorMessages;\r\n disabled ? this.disable() : this.enable();\r\n }\r\n\r\n fillFormArray(data: any[]) {\r\n this.form.reset();\r\n this.clear();\r\n data.forEach((item) => {\r\n const form = this.formCreation(item);\r\n this.push(form);\r\n });\r\n }\r\n\r\n addItem() {\r\n const form = this.formCreation(this.form.value);\r\n this.form.specialReset();\r\n this.push(form);\r\n this.markAsDirty();\r\n }\r\n\r\n specialPush(index?: number) {\r\n const form = this.formCreation(this.form.value);\r\n if (!index) this.push(form);\r\n else this.controls[index].reset(this.form.value);\r\n }\r\n\r\n specialInsert(index = 0) {\r\n const form = this.formCreation(this.form.value);\r\n this.insert(index, form);\r\n }\r\n\r\n specialEdit(index: number, newValue: Object) {\r\n this.controls[index].reset({ ...this.controls[index].value, ...newValue });\r\n this.markAsDirty();\r\n }\r\n\r\n /**\r\n * Vuelve todos los controles del formArray de lectura o de sololectura\r\n * @param status\r\n */\r\n\r\n setReadOnly(status: boolean) {\r\n this.readOnly = status;\r\n this.controls.forEach((control) => {\r\n if (control instanceof SpecialFormGroup) {\r\n control.setReadOnly(status);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Vuelve todos los controles del formArray habilitados o deshabilitados\r\n * @param status\r\n */\r\n\r\n setDisabled(status: boolean) {\r\n status ? this.disable() : this.enable();\r\n this.controls.forEach((control) => {\r\n if (control instanceof SpecialFormGroup) {\r\n control.setDisabled(status);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Permite editar un control especifico.\r\n * @param index\r\n */\r\n\r\n editControl(index: number) {\r\n this.form.reset(this.controls[index].value);\r\n }\r\n\r\n getDirty() {\r\n this.markAsDirty();\r\n this.form.getDirty();\r\n this.controls.forEach((item) => {\r\n (<SpecialFormGroup>item).getDirty();\r\n });\r\n }\r\n\r\n recursiveFillForm(form: FormGroup, data: any): FormGroup {\r\n Object.entries(form.controls).map(([key, control]) => {\r\n if (control instanceof FormControl) {\r\n control.setValue(data[key]);\r\n } else if (control instanceof FormArray) {\r\n data[key].forEach(() => {});\r\n } else if (control instanceof FormGroup) {\r\n control.reset(data[key]);\r\n }\r\n });\r\n return form;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AbstractControl, ValidatorFn, Validators } from '@angular/forms';\r\nimport { IAutocompleteField } from '../../../components/special-autocomplete/special-autocomplete.interface';\r\nimport { EControlTypes } from '../../aux-data/control-types.enum';\r\nimport {\r\n SpecialFormArray,\r\n SpecialFormControl,\r\n SpecialFormGroup,\r\n} from '../../forms/special-forms';\r\nimport { IFieldData } from '../../interfaces/field-basics.interfaces';\r\nimport {\r\n IFormStructure,\r\n TRawFields,\r\n TSpecialArray,\r\n TSpecialFields,\r\n TSpecialForm,\r\n TSpecialInput,\r\n} from '../../interfaces/form.interfaces';\r\n\r\ninterface IControlParams {\r\n name: string;\r\n control: SpecialFormArray | SpecialFormGroup | SpecialFormControl<any>;\r\n}\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SpecialFormBuilderService {\r\n private readonly defectField: IFieldData = {\r\n asyncValidators: null,\r\n validators: null,\r\n defaultValue: null,\r\n elementId: '',\r\n hidden: false,\r\n icon: '',\r\n label: '',\r\n disabled: false,\r\n length: 0,\r\n placeholder: '',\r\n readOnly: false,\r\n required: false,\r\n styleClasses: '',\r\n errorMessages: {},\r\n tooltip: '',\r\n };\r\n\r\n private readonly inputDefectField: TSpecialInput = {\r\n ...this.defectField,\r\n settings: {},\r\n type: EControlTypes.input,\r\n name: '',\r\n };\r\n\r\n private readonly formDefectField: TSpecialForm = {\r\n ...this.defectField,\r\n settings: {\r\n formFields: {},\r\n },\r\n type: EControlTypes.form,\r\n name: '',\r\n };\r\n\r\n private readonly arrayDefectField: TSpecialArray = {\r\n ...this.defectField,\r\n settings: {\r\n formFields: {},\r\n },\r\n type: EControlTypes.array,\r\n name: '',\r\n };\r\n\r\n constructor() {}\r\n\r\n public control(field: Partial<TSpecialFields>): SpecialFormControl<any> {\r\n const formField: TSpecialFields = {\r\n ...this.inputDefectField,\r\n ...field,\r\n } as TSpecialFields;\r\n const { control } = this.setFormControl(formField);\r\n return control;\r\n }\r\n\r\n public group(\r\n fields: IFormStructure,\r\n parentField: Partial<TSpecialForm> = {}\r\n ) {\r\n return this.formGenerator(this.fieldDataToArray(fields), parentField);\r\n }\r\n\r\n public array() {}\r\n\r\n public fieldDataToArray(fields: IFormStructure): TSpecialFields[] {\r\n return Object.entries(fields).map(([name, field]) =>\r\n this.setDefectFieldOptions(name, field)\r\n );\r\n }\r\n\r\n private setDefectFieldOptions(\r\n name: string,\r\n field: Partial<TRawFields>\r\n ): TSpecialFields {\r\n return {\r\n ...this.inputDefectField,\r\n ...field,\r\n name,\r\n } as TSpecialFields;\r\n }\r\n\r\n private formGenerator(\r\n fields: TSpecialFields[],\r\n parentField: Partial<TSpecialForm> = {}\r\n ): SpecialFormGroup {\r\n const formField: TSpecialForm = {\r\n ...this.formDefectField,\r\n ...parentField,\r\n };\r\n const structure = fields\r\n .map((field) => this.getControlAndNameByType(field))\r\n .reduce(\r\n (prev, { name, control }: IControlParams) => ({\r\n ...prev,\r\n [name]: control,\r\n }),\r\n {}\r\n );\r\n return new SpecialFormGroup(formField, structure);\r\n }\r\n\r\n private getControlAndNameByType(field: TSpecialFields) {\r\n switch (field.type) {\r\n case EControlTypes.array:\r\n return this.setFormArray(field);\r\n case EControlTypes.form:\r\n return this.setFormGroup(field);\r\n default:\r\n return this.setFormControl(field);\r\n }\r\n }\r\n\r\n private setFormGroup(field: TSpecialForm): {\r\n name: string;\r\n control: SpecialFormGroup;\r\n } {\r\n const control = this.formGenerator(\r\n this.fieldDataToArray(field.settings.formFields),\r\n field\r\n );\r\n return { control, name: field.name };\r\n }\r\n\r\n private setFormArray(field: TSpecialArray): {\r\n name: string;\r\n control: SpecialFormArray;\r\n } {\r\n const auxForm = (value = {}) => {\r\n const auxForm = this.formGenerator(\r\n this.fieldDataToArray(field.settings.formFields),\r\n {}\r\n );\r\n auxForm.reset(value);\r\n return auxForm;\r\n };\r\n\r\n if (field.required) {\r\n field.validators = this.setValidatorsArray(field.validators, [\r\n this.arrayLengthRequired,\r\n ]);\r\n }\r\n\r\n return {\r\n name: field.name,\r\n control: new SpecialFormArray(field, auxForm, []),\r\n };\r\n }\r\n\r\n private setFormControl(field: TSpecialFields): {\r\n name: string;\r\n control: SpecialFormControl<any>;\r\n } {\r\n const validators: ValidatorFn[] = [];\r\n\r\n if (field.required) validators.push(this.setRequiredValidator(field));\r\n if (field.length) validators.push(Validators.maxLength(field.length));\r\n\r\n field.validators = this.setValidatorsArray(field.validators, validators);\r\n\r\n return {\r\n name: field.name,\r\n control: new SpecialFormControl(field),\r\n };\r\n }\r\n\r\n private setRequiredValidator(field: TSpecialFields): ValidatorFn {\r\n if (field.type !== EControlTypes.autocomplete) {\r\n return Validators.required;\r\n }\r\n return (control: SpecialFormControl<IAutocompleteField>) =>\r\n !!control.value && control.value instanceof Object\r\n ? null\r\n : { required: true };\r\n }\r\n private setValidatorsArray(\r\n validators: ValidatorFn | ValidatorFn[] | null,\r\n newValidators: ValidatorFn[]\r\n ): ValidatorFn[] {\r\n if (!validators) {\r\n return newValidators;\r\n }\r\n return validators instanceof Array\r\n ? [...validators, ...newValidators]\r\n : [validators, ...newValidators];\r\n }\r\n\r\n private arrayLengthRequired(control: AbstractControl) {\r\n if (control.value.length) {\r\n return {};\r\n }\r\n return { noItems: 'NO_SELECTED_ITEM' };\r\n }\r\n}\r\n","import { FormControl, FormGroupDirective, NgForm } from '@angular/forms';\r\nimport { ErrorStateMatcher } from '@angular/material/core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class ErrorStateMatcherService implements ErrorStateMatcher {\r\n isErrorState(control: FormControl): boolean {\r\n return control && control.invalid && control.dirty;\r\n }\r\n}\r\n","import {\r\n SpecialFormControl,\r\n SpecialFormArray,\r\n SpecialFormGroup,\r\n} from '../forms/special-forms';\r\n\r\nexport abstract class ISpecialControl {\r\n control: SpecialFormControl<any> | SpecialFormArray | SpecialFormGroup;\r\n}\r\n","import { createMask } from '@ngneat/input-mask';\r\n\r\nexport const currencyInputMask = createMask({\r\n alias: 'numeric',\r\n groupSeparator: ',',\r\n autoUnmask: true,\r\n digits: 2,\r\n digitsOptional: false,\r\n prefix: '$ ',\r\n placeholder: '0',\r\n});\r\n","import { createMask } from '@ngneat/input-mask';\r\n\r\nexport const numberMask = (max = 1000) =>\r\n createMask({ alias: 'numeric', min: 0, max });\r\n","/*\r\n * Public API Surface of special-forms\r\n */\r\n\r\nexport * from './lib/components';\r\nexport * from './lib/core/services/index';\r\nexport { EControlTypes } from './lib/core/aux-data/control-types.enum';\r\nexport * from './lib/core/forms/special-forms';\r\nexport * from './lib/core/interfaces/field-basics.interfaces';\r\nexport * from './lib/core/interfaces/form.interfaces';\r\nexport * from './lib/core/interfaces/special-control.interface';\r\nexport * from './lib/core/masks/index';\r\nexport * from './lib/core/pipes/index';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i7","i2","i3","i4","i5","i9","i1","i6","i8","i1.FormControlsListPipe"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAOa,gBAAgB,CAAA;AAC3B,IAAA,SAAS,CACP,SAAiC,EACjC,aAAqC,EACrC,OAAqB,EAAA;AAErB,QAAA,MAAM,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AACvD,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;QAC9C,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;SAC9B;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;8GAbU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA,EAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,UAAU,EAAC,IAAI;AAChB,iBAAA,CAAA;;;MCHY,kBAAkB,CAAA;IAC7B,SAAS,CAAC,KAAU,EAAE,KAAwC,EAAA;AAC5D,QAAA,IAAI,KAAK,YAAY,QAAQ,EAAE;AAC7B,YAAA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;SACrB;AAAM,aAAA,IAAI,KAAK,YAAY,MAAM,EAAE;AAClC,YAAA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;SACrB;aAAM;AACL,YAAA,OAAO,KAAK,CAAC;SACd;KACF;8GATU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,CAAA,EAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;;;MCGrC,oBAAoB,CAAA;AAC/B,IAAA,SAAS,CAAC,QAET,EAAA;AACC,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,EAAE,CAAC;AACzB,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;aAC3B,MAAM,CAAC,CAAC,OAAgC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;aAC7D,GAAG,CAAC,CAAC,OAAO,KAAK,OAAkC,CAAC,CAAC;KACzD;8GARU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA,EAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;;;MC+BnC,4BAA4B,CAAA;AAIvC,IAAA,WAAA,GAAA;AAFA,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;AAsB1B,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,IAAS,KAAI;AAC1B,YAAA,IAAI,CAAC,IAAI;AAAE,gBAAA,OAAO,EAAE,CAAC;AACrB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC1C,YAAA,OAAO,SAAS,YAAY,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3E,SAAC,CAAC;KAxBc;IAEhB,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KAC9B;IAED,IAAI,GAAA;QACF,IAAI,CAAC,IAAI,CAAC,GAAG,CACX,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACpE,YAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC7B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aAC5C;SACF,CAAC,CACH,CAAC;KACH;AAQD,IAAA,cAAc,CAAC,IAAkC,EAAA;QAC/C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzC,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACvE;AAED,IAAA,SAAS,CAAC,KAAY,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;YAC5B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7C,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;KACzB;8GA5CU,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,2GCnCzC,+7DAgEA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvCI,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,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,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,qBAAqB,EACrB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,OAAA,EAAA,8BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,mLACb,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,gBAAgB,gDAChB,kBAAkB,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGT,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAjBxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,iBAAiB,EAAA,eAAA,EAGV,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,cAAc;wBACd,YAAY;wBACZ,qBAAqB;wBACrB,aAAa;wBACb,mBAAmB;wBACnB,eAAe;wBACf,gBAAgB;wBAChB,kBAAkB;AACnB,qBAAA,EAAA,QAAA,EAAA,+7DAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;wDAGQ,OAAO,EAAA,CAAA;sBAAf,KAAK;;;MEJK,qBAAqB,CAAA;AAGhC,IAAA,WAAA,GAAA,GAAgB;AAEhB,IAAA,QAAQ,MAAW;IAEnB,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;YACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAC3C;KACF;IAED,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAC1C;KACF;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KAC9B;AAED,IAAA,SAAS,CAAC,KAAY,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;YAC5B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7C,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;KACF;8GA5BU,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,QAAA,EAAA,IAAA,EAAA,qBAAqB,EChClC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+vCA0CA,EDnBI,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,oIACf,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,EAAAC,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,uIACf,gBAAgB,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAhBjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,UAAU,EAAA,eAAA,EAGH,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,eAAe;wBACf,YAAY;wBACZ,cAAc;wBACd,aAAa;wBACb,mBAAmB;wBACnB,eAAe;wBACf,gBAAgB;AACjB,qBAAA,EAAA,QAAA,EAAA,+vCAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;wDAGQ,OAAO,EAAA,CAAA;sBAAf,KAAK;;;MEDK,wBAAwB,CAAA;AAGnC,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KAC9B;AAED,IAAA,SAAS,CAAC,KAAY,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;YAC5B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7C,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;KACF;AAED,IAAA,cAAc,CAAC,KAAU,EAAA;AACvB,QAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACnB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC3D;8GAjBU,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,QAAA,EAAA,IAAA,EAAA,wBAAwB,EChCrC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,q/CA8CA,EDvBI,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,mFACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,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,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,MAAA,EAAA,IAAA,EACnB,gBAAgB,EAChB,IAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EACb,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,UAAA,EAAA,IAAA,EAAA,eAAe,uIACf,kBAAkB,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGT,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAhBpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,aAAa,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,YAAY;wBACZ,eAAe;wBACf,mBAAmB;wBACnB,gBAAgB;wBAChB,aAAa;wBACb,eAAe;wBACf,kBAAkB;AACnB,qBAAA,EAAA,QAAA,EAAA,q/CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;8BAGQ,OAAO,EAAA,CAAA;sBAAf,KAAK;;;MEGK,0BAA0B,CAAA;AAGrC,IAAA,WAAA,GAAA,GAAgB;AAEhB,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KAC9B;AAED,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC;KAC7C;AAED,IAAA,QAAQ,MAAW;8GAbR,0BAA0B,EAAA,IAAA,EAAA,EAAA,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,QAAA,EAAA,IAAA,EAAA,0BAA0B,yGCpCvC,4+BA+BA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLI,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,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,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,8BACb,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,gBAAgB,oDAChB,mBAAmB,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGV,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAjBtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,eAAe,EAAA,eAAA,EAGR,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,cAAc;wBACd,mBAAmB;wBACnB,YAAY;wBACZ,aAAa;wBACb,mBAAmB;wBACnB,eAAe;wBACf,gBAAgB;wBAChB,mBAAmB;AACpB,qBAAA,EAAA,QAAA,EAAA,4+BAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;wDAGQ,OAAO,EAAA,CAAA;sBAAf,KAAK;;;MEDK,oCAAoC,CAAA;AAM/C,IAAA,WAAA,GAAA;AAHA,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;AAC1B,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,WAAW,EAAE,CAAC;AA0DpC,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,IAAS,KAAI;AAC1B,YAAA,IAAI,CAAC,IAAI;AAAE,gBAAA,OAAO,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;AAClD,YAAA,OAAO,SAAS,YAAY,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3E,SAAC,CAAC;KA5Dc;IAEhB,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KAC9B;IAED,IAAI,GAAA;QACF,IAAI,CAAC,IAAI,CAAC,GAAG,CACX,IAAI,CAAC,eAAe,CAAC,YAAY;AAC9B,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACvB,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,gBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aACpD;SACF,CAAC,CACL,CAAC;KACH;AAED,IAAA,cAAc,CAAC,IAAkC,EAAA;AAC/C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAClC,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YACpB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,CAClC,CAAC,IAAS,KACR,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CACzC;YACD,OAAO;AACR,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KAC7D;AAED,IAAA,SAAS,CAAC,KAAY,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;YAC5B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7C,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;KACF;AAED,IAAA,MAAM,CAAC,KAAY,EAAA;AACjB,QAAA,IAAI,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAE3C,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,YAAA,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC/B,MAAM,KAAK,GAAG,aAAa,CAAC;AAC5B,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAC9B;KACF;IAQD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;KACzB;8GAtEU,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,oHCpCjD,mzFAsFA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7DI,cAAc,EACd,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,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,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,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,mFACZ,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,OAAA,EAAA,8BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACrB,aAAa,EACb,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,UAAA,EAAA,IAAA,EAAA,mBAAmB,8yBACnB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACf,gBAAgB,EAChB,IAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,kBAAkB,sDAClB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,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,UAAA,EAAA,QAAA,EAAA,wEAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGL,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAlBhD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,0BAA0B,EAAA,eAAA,EAGnB,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,cAAc;wBACd,YAAY;wBACZ,qBAAqB;wBACrB,aAAa;wBACb,mBAAmB;wBACnB,eAAe;wBACf,gBAAgB;wBAChB,kBAAkB;wBAClB,cAAc;AACf,qBAAA,EAAA,QAAA,EAAA,mzFAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;wDAGQ,OAAO,EAAA,CAAA;sBAAf,KAAK;;;MEJK,wBAAwB,CAAA;AAGnC,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KAC9B;AACD,IAAA,WAAA,GAAA,GAAgB;AAChB,IAAA,QAAQ,MAAW;8GAPR,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,QAAA,EAAA,IAAA,EAAA,wBAAwB,ECjCrC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,i1BA4BA,EDLI,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,ikBACX,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,cAAc,EACd,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,UAAA,EAAA,IAAA,EAAA,mBAAmB,8BACnB,eAAe,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAIN,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAjBpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,aAAa,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,WAAW;wBACX,iBAAiB;wBACjB,YAAY;wBACZ,cAAc;wBACd,aAAa;wBACb,mBAAmB;wBACnB,eAAe;wBACf,gBAAgB;AACjB,qBAAA,EAAA,QAAA,EAAA,i1BAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;wDAGQ,OAAO,EAAA,CAAA;sBAAf,KAAK;;;MENK,wBAAwB,CAAA;AAMnC,IAAA,WAAA,GAAA;AAHU,QAAA,IAAA,CAAA,MAAM,GAAsB,IAAI,YAAY,EAAE,CAAC;AAC/C,QAAA,IAAA,CAAA,OAAO,GAAsB,IAAI,YAAY,EAAE,CAAC;KAE1C;AAEhB,IAAA,QAAQ,MAAW;8GARR,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,QAAA,EAAA,IAAA,EAAA,wBAAwB,EC5BrC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,4mCAmCA,EDhBI,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,8BACf,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,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,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,0BACf,gBAAgB,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGP,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAhBpC,SAAS;AACG,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACL,cAAc,EAAA,eAAA,EAGP,uBAAuB,CAAC,MAAM,EACvC,OAAA,EAAA;wBACN,eAAe;wBACf,YAAY;wBACZ,cAAc;wBACd,aAAa;wBACb,mBAAmB;wBACnB,eAAe;wBACf,gBAAgB;AACjB,qBAAA,EAAA,QAAA,EAAA,4mCAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;wDAGQ,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEI,MAAM,EAAA,CAAA;sBAAf,MAAM;gBACG,OAAO,EAAA,CAAA;sBAAhB,MAAM;;;ME5BI,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,gBAAgB,GAAG;YAClC,MAAM;YACN,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,MAAM;YACN,KAAK;SACN,CAAC;AAEe,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAE7B,QAAA,IAAA,CAAA,OAAO,GAAG,CAAA;;;;;;GAM1B,CAAC;AAEe,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAA;;;;;;;;;;;GAW3B,CAAC;AAEe,QAAA,IAAA,CAAA,YAAY,GAAG,CAAA;;;;;;;;;;;GAW/B,CAAC;AAEM,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAoB1C,KAAA;AAlBC,IAAA,SAAS,CAAC,IAAU,EAAA;QAClB,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE;AACtE,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;SACzE;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC5C;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE;YAChE,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC7C;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACjD;AAED,IAAA,gBAAgB,CAAC,GAAW,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAC1C,4BAA4B,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAClD,CAAC;KACH;8GAlEU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,CAAA,EAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;;MAuEtC,YAAY,CAAA;IACvB,SAAS,CAAC,IAAY,EAAE,MAAM,GAAG,EAAE,EAAE,MAAM,GAAG,KAAK,EAAA;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;KACvC;8GAHU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA,EAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;;MAQ/B,WAAW,CAAA;AACtB,IAAA,SAAS,CAAC,KAAU,EAAA;AAClB,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAC7B;8GAHU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;;;MCxC9B,sBAAsB,CAAA;AAvBnC,IAAA,WAAA,GAAA;QAyBW,IAAsB,CAAA,sBAAA,GAAG,mCAAmC,CAAC;AA+BvE,KAAA;AA9BC,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KAC9B;AAED,IAAA,WAAW,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;KAC5B;AAED,IAAA,YAAY,CAAC,KAAK,EAAA;QAChB,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE;YACvC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SAC3C;KACF;AAED,IAAA,WAAW,CAAC,IAAU,EAAA;AACpB,QAAA,OAAO,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;AACzC,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;AAClE,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,QAAQ,CAAC,IAAU,EAAA;QACjB,IAAI,CAAC,OAAO,CAAC,QAAQ,CACnB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CACvB,CAAC,EAAO,KAAK,EAAE,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,CACnD,CACF,CAAC;KACH;8GAhCU,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,QAAA,EAAA,IAAA,EAAA,sBAAsB,ECxCnC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0iFA4EA,EDpDI,MAAA,EAAA,CAAA,iaAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,IAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAiB,EACjB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,EACd,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,sBAAsB,EACtB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,IAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,EACd,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,wEAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,YAAY,EACZ,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,WAAW,+CACX,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGJ,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAvBlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,WAAW,EAAA,eAAA,EAGJ,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,mBAAmB;wBACnB,WAAW;wBACX,iBAAiB;wBACjB,cAAc;wBACd,sBAAsB;wBACtB,YAAY;wBACZ,aAAa;wBACb,mBAAmB;wBACnB,eAAe;wBACf,gBAAgB;wBAChB,cAAc;wBACd,YAAY;wBACZ,WAAW;wBACX,aAAa;AACd,qBAAA,EAAA,QAAA,EAAA,0iFAAA,EAAA,MAAA,EAAA,CAAA,iaAAA,CAAA,EAAA,CAAA;8BAGQ,OAAO,EAAA,CAAA;sBAAf,KAAK;;;MErBK,qBAAqB,CAAA;AAGhC,IAAA,WAAA,GAAA,GAAgB;AAEhB,IAAA,QAAQ,MAAW;AAEnB,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;KACnD;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;YACrD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAC/C;KACF;8GAfU,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,QAAA,EAAA,IAAA,EAAA,qBAAqB,oGCpBlC,wqBAuBA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLY,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,0BAAE,kBAAkB,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAE9C,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACN,QAAA,EAAA,UAAU,EAGH,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA,CAAC,YAAY,EAAE,aAAa,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,wqBAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;wDAGjD,OAAO,EAAA,CAAA;sBAAf,KAAK;;;IErBI,cAeX;AAfD,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,aAAoB,CAAA;AACpB,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,WAAsB,CAAA;AACtB,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,WAAsB,CAAA;AACtB,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7B,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,uBAAkC,CAAA;AAClC,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACrB,CAAC,EAfW,aAAa,KAAb,aAAa,GAexB,EAAA,CAAA,CAAA;;MCiBY,wBAAwB,CAAA;AAhBrC,IAAA,WAAA,GAAA;AAmBE,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAG3D,QAAA,IAAA,CAAA,OAAO,GAAY;;YAEjB,CAAC,MAAM,EAAE,QAAQ,CAAC;YAClB,CAAC,WAAW,EAAE,QAAQ,CAAC;YACvB,CAAC,MAAM,EAAE,YAAY,CAAC;YACtB,CAAC,cAAc,EAAE,aAAa,CAAC;AAC/B,YAAA,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACnD,CAAC,MAAM,EAAE,OAAO,CAAC;YACjB,CAAC,YAAY,EAAE,kBAAkB,CAAC;AAClC,YAAA,CAAC,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,CAAC;YAC9D,CAAC,iBAAiB,EAAE,cAAc,CAAC;SACpC,CAAC;AAcH,KAAA;IAZC,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY;YACpC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;AACzD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AAC1C,YAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1B,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,SAAC,CAAC,CAAC;KACJ;IACD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;KACvB;8GA9BU,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,QAAA,EAAA,IAAA,EAAA,wBAAwB,EChCrC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,unCAsCA,EDfI,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BACZ,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,UAAA,EAAA,QAAA,EAAA,eAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,gBAAgB,oDAChB,kBAAkB,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGT,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAhBpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,UAAU,EAAA,eAAA,EAGH,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,YAAY;wBACZ,cAAc;wBACd,aAAa;wBACb,mBAAmB;wBACnB,eAAe;wBACf,gBAAgB;wBAChB,kBAAkB;AACnB,qBAAA,EAAA,QAAA,EAAA,unCAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;8BAOQ,OAAO,EAAA,CAAA;sBAAf,KAAK;;;MERK,oBAAoB,CAAA;IAE/B,IAAI,OAAO,CAAC,IAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KAClB;AACD,IAAA,QAAQ,MAAW;8GALR,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApB,oBAAoB,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7BjC,+vBAyBA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MDgDa,2BAA2B,CAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAAQ,oBAAA,CAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FA5C3B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;+BACE,SAAS,EAAA,eAAA,EAGF,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+vBAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;8BAG7B,IAAI,EAAA,CAAA;sBAArB,KAAK;uBAAC,SAAS,CAAA;;MAaL,qBAAqB,CAAA;IAGhC,IAAI,OAAO,CAAC,SAAc,EAAA;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC5B;AAED,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC;KAC/C;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;KAChC;AAED,IAAA,WAAA,GAAA,GAAgB;AAEhB,IAAA,QAAQ,MAAK;AAEb,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAChC;IACD,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;KAC1B;8GAxBU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArB,qBAAqB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,SAAA,EAAA,WAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EE3ClC,g8FAiFA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAAR,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAAC,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MFRa,2BAA2B,CAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAAO,oBAAA,CAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FA9B3B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACE,UAAU,EAAA,eAAA,EAGH,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,g8FAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;wDAG7B,SAAS,EAAA,CAAA;sBAA1B,KAAK;uBAAC,SAAS,CAAA;;MA6BL,2BAA2B,CAAA;IAetC,IAAsB,aAAa,CAAC,OAAgC,EAAA;AAClE,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAI,IAAI,CAAC,gBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,SAAS,EAAE;YACb,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;AAClE,YAAA,YAAY,CAAC,QAAgB,CAAC,OAAO,GAAG,OAAO,CAAC;SAClD;KACF;AAED,IAAA,WAAA,CAAoB,aAA+B,EAAA;QAA/B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;AAvBlC,QAAA,IAAA,CAAA,gBAAgB,GAAG;AAClC,YAAA,CAAC,aAAa,CAAC,YAAY,GAAG,4BAA4B;AAC1D,YAAA,CAAC,aAAa,CAAC,QAAQ,GAAG,wBAAwB;AAClD,YAAA,CAAC,aAAa,CAAC,IAAI,GAAG,0BAA0B;AAChD,YAAA,CAAC,aAAa,CAAC,QAAQ,GAAG,wBAAwB;AAClD,YAAA,CAAC,aAAa,CAAC,KAAK,GAAG,qBAAqB;AAC5C,YAAA,CAAC,aAAa,CAAC,KAAK,GAAG,qBAAqB;AAC5C,YAAA,CAAC,aAAa,CAAC,QAAQ,GAAG,oCAAoC;AAC9D,YAAA,CAAC,aAAa,CAAC,QAAQ,GAAG,wBAAwB;AAClD,YAAA,CAAC,aAAa,CAAC,KAAK,GAAG,qBAAqB;AAC5C,YAAA,CAAC,aAAa,CAAC,MAAM,GAAG,sBAAsB;AAC9C,YAAA,CAAC,aAAa,CAAC,IAAI,GAAG,oBAAoB;AAC1C,YAAA,CAAC,aAAa,CAAC,QAAQ,GAAG,wBAAwB;SACnD,CAAC;KAUqD;8GAxB5C,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA3B,2BAA2B,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,CAAA,SAAA,EAAA,eAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,CAAiB,eAAA,CAAA;AAC5B,iBAAA,CAAA;qFAgBuB,aAAa,EAAA,CAAA;sBAAlC,KAAK;uBAAC,SAAS,CAAA;;;MGxCL,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAzB1B,qBAAqB;YACrB,2BAA2B;AAC3B,YAAA,oBAAoB,aAGpB,YAAY;YACZ,oBAAoB;YACpB,eAAe;YACf,wBAAwB;YACxB,wBAAwB;YACxB,qBAAqB;YACrB,4BAA4B;YAC5B,0BAA0B;YAC1B,qBAAqB;YACrB,oCAAoC;YACpC,wBAAwB;YACxB,wBAAwB;AACxB,YAAA,sBAAsB,aAGtB,qBAAqB;YACrB,2BAA2B;YAC3B,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;AAGX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YApB1B,YAAY;YAEZ,eAAe;YACf,wBAAwB;YACxB,wBAAwB;YACxB,qBAAqB;YACrB,4BAA4B;YAC5B,0BAA0B;YAC1B,qBAAqB;YACrB,oCAAoC;YACpC,wBAAwB;YACxB,wBAAwB;YACxB,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAQb,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA3B7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,qBAAqB;wBACrB,2BAA2B;wBAC3B,oBAAoB;AACrB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,oBAAoB;wBACpB,eAAe;wBACf,wBAAwB;wBACxB,wBAAwB;wBACxB,qBAAqB;wBACrB,4BAA4B;wBAC5B,0BAA0B;wBAC1B,qBAAqB;wBACrB,oCAAoC;wBACpC,wBAAwB;wBACxB,wBAAwB;wBACxB,sBAAsB;AACvB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,qBAAqB;wBACrB,2BAA2B;wBAC3B,oBAAoB;AACrB,qBAAA;AACF,iBAAA,CAAA;;;AC9BK,MAAO,kBAAyC,SAAQ,WAAW,CAAA;AAgBvE,IAAA,WAAA,CAAY,EACV,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,eAAe,EACf,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,MAAM,EACN,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,aAAa,EACb,QAAQ,GACO,EAAA;AACf,QAAA,KAAK,CAAC,YAAY,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;AAEjD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACjC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACnC,QAAA,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;KAC3C;IAED,WAAW,CAAC,SAAkB,IAAI,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;KACxB;IAED,WAAW,CAAC,SAAkB,IAAI,EAAA;AAChC,QAAA,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;KACzC;IAED,SAAS,CAAC,MAAM,GAAG,IAAI,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACtB;AACF,CAAA;AACK,MAAO,gBAAiB,SAAQ,SAAS,CAAA;AAiB7C,IAAA,WAAA,CACE,EACE,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,eAAe,EACf,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,MAAM,EACN,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,GACK,EACf,QAEC,EAAA;AAED,QAAA,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;AAE7C,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACjC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACjC,QAAA,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;KAC3C;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AAC/C,YAAA,IAAI,OAAO,YAAY,kBAAkB,EAAE;gBACzC,OAAO,CAAC,WAAW,EAAE,CAAC;aACvB;AAAM,iBAAA,IAAI,OAAO,YAAY,gBAAgB,EAAE;gBAC9C,OAAO,CAAC,QAAQ,EAAE,CAAC;aACpB;AAAM,iBAAA,IAAI,OAAO,YAAY,gBAAgB,EAAE;gBAC9C,OAAO,CAAC,QAAQ,EAAE,CAAC;aACpB;AACH,SAAC,CAAC,CAAC;KACJ;IAED,YAAY,CAAC,KAAK,GAAG,EAAE,EAAA;QACrB,MAAM,GAAG,GAAQ,EAAE,CAAC;AACpB,QAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,KAAI;AACnD,YAAA,IAAI,OAAO,YAAY,kBAAkB,EAAE;AACzC,gBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;aACjC;AAAM,iBAAA,IAAI,OAAO,YAAY,gBAAgB,EAAE;gBAC9C,OAAO,CAAC,KAAK,EAAE,CAAC;aACjB;AACH,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;KAClC;IAED,WAAW,CAAC,SAAkB,IAAI,EAAA;AAChC,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;YACzC,IACE,KAAK,YAAY,kBAAkB;AACnC,gBAAA,KAAK,YAAY,gBAAgB;gBACjC,KAAK,YAAY,gBAAgB,EACjC;AACA,gBAAA,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;aAC3B;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,mBAAmB,CAAC,YAAwC,EAAA;AAC1D,QAAA,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YAChD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACnC,YAAA,IAAI,OAAO,YAAY,kBAAkB,EAAE;AACzC,gBAAA,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;aAC1B;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,iBAAiB,CAAC,MAAkC,EAAA;AAClD,QAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACnC,YAAA,IAAI,OAAO,YAAY,kBAAkB,EAAE;AACzC,gBAAA,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;aACxB;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,WAAW,CAAC,MAAe,EAAA;AACzB,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;YACzC,IACE,KAAK,YAAY,kBAAkB;AACnC,gBAAA,KAAK,YAAY,gBAAgB;gBACjC,KAAK,YAAY,gBAAgB,EACjC;AACA,gBAAA,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;aAC3B;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,mBAAmB,CAAC,YAAiB,EAAA;QACnC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;AAC3C,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,kBAAkB,EAAE;gBAC3D,OAAO,CAAC,CAAC,CAAC;AACR,sBAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACpC,sBAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;aACzC;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;AAEG;AAEH,IAAA,YAAY,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACzB,QAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC1B,aAAA,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,OAAO,YAAY,gBAAgB,CAAC;aAChE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,KAAI;YACrB,OAA4B,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,SAAC,CAAC,CAAC;KACN;AAED;;AAEG;IAEH,SAAS,GAAA;QACP,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CACtC,CAAC,OAAO,KACN,OAAO,YAAY,kBAAkB,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,CACnC,CAAC;KAC1C;AACF,CAAA;AAEK,MAAO,gBAAiB,SAAQ,SAAS,CAAA;AAkB7C,IAAA,WAAA,CACE,EACE,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,eAAe,EACf,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,aAAa,EACb,QAAQ,GACM,EAChB,YAAoC,EACpC,QAA2B,EAAA;AAE3B,QAAA,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACjC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACjC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACjC,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACnC,QAAA,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;KAC3C;AAED,IAAA,aAAa,CAAC,IAAW,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YACpB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClB,SAAC,CAAC,CAAC;KACJ;IAED,OAAO,GAAA;AACL,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;AAED,IAAA,WAAW,CAAC,KAAc,EAAA;AACxB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClD;IAED,aAAa,CAAC,KAAK,GAAG,CAAC,EAAA;AACrB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAC1B;IAED,WAAW,CAAC,KAAa,EAAE,QAAgB,EAAA;QACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;AAED;;;AAGG;AAEH,IAAA,WAAW,CAAC,MAAe,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AAChC,YAAA,IAAI,OAAO,YAAY,gBAAgB,EAAE;AACvC,gBAAA,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;aAC7B;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;;AAGG;AAEH,IAAA,WAAW,CAAC,MAAe,EAAA;AACzB,QAAA,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AAChC,YAAA,IAAI,OAAO,YAAY,gBAAgB,EAAE;AACvC,gBAAA,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;aAC7B;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;;AAGG;AAEH,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;KAC7C;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YACV,IAAK,CAAC,QAAQ,EAAE,CAAC;AACtC,SAAC,CAAC,CAAC;KACJ;IAED,iBAAiB,CAAC,IAAe,EAAE,IAAS,EAAA;AAC1C,QAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,KAAI;AACnD,YAAA,IAAI,OAAO,YAAY,WAAW,EAAE;gBAClC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;aAC7B;AAAM,iBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;gBACvC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAK,GAAG,CAAC,CAAC;aAC7B;AAAM,iBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;gBACvC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;aAC1B;AACH,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC;KACb;AACF;;MCnXY,yBAAyB,CAAA;AA4CpC,IAAA,WAAA,GAAA;AA3CiB,QAAA,IAAA,CAAA,WAAW,GAAe;AACzC,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,aAAa,EAAE,EAAE;AACjB,YAAA,OAAO,EAAE,EAAE;SACZ,CAAC;AAEe,QAAA,IAAA,CAAA,gBAAgB,GAAkB;YACjD,GAAG,IAAI,CAAC,WAAW;AACnB,YAAA,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,aAAa,CAAC,KAAK;AACzB,YAAA,IAAI,EAAE,EAAE;SACT,CAAC;AAEe,QAAA,IAAA,CAAA,eAAe,GAAiB;YAC/C,GAAG,IAAI,CAAC,WAAW;AACnB,YAAA,QAAQ,EAAE;AACR,gBAAA,UAAU,EAAE,EAAE;AACf,aAAA;YACD,IAAI,EAAE,aAAa,CAAC,IAAI;AACxB,YAAA,IAAI,EAAE,EAAE;SACT,CAAC;AAEe,QAAA,IAAA,CAAA,gBAAgB,GAAkB;YACjD,GAAG,IAAI,CAAC,WAAW;AACnB,YAAA,QAAQ,EAAE;AACR,gBAAA,UAAU,EAAE,EAAE;AACf,aAAA;YACD,IAAI,EAAE,aAAa,CAAC,KAAK;AACzB,YAAA,IAAI,EAAE,EAAE;SACT,CAAC;KAEc;AAET,IAAA,OAAO,CAAC,KAA8B,EAAA;AAC3C,QAAA,MAAM,SAAS,GAAmB;YAChC,GAAG,IAAI,CAAC,gBAAgB;AACxB,YAAA,GAAG,KAAK;SACS,CAAC;QACpB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACnD,QAAA,OAAO,OAAO,CAAC;KAChB;AAEM,IAAA,KAAK,CACV,MAAsB,EACtB,WAAA,GAAqC,EAAE,EAAA;AAEvC,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;KACvE;AAEM,IAAA,KAAK,MAAK;AAEV,IAAA,gBAAgB,CAAC,MAAsB,EAAA;QAC5C,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAC9C,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CACxC,CAAC;KACH;IAEO,qBAAqB,CAC3B,IAAY,EACZ,KAA0B,EAAA;QAE1B,OAAO;YACL,GAAG,IAAI,CAAC,gBAAgB;AACxB,YAAA,GAAG,KAAK;YACR,IAAI;SACa,CAAC;KACrB;AAEO,IAAA,aAAa,CACnB,MAAwB,EACxB,WAAA,GAAqC,EAAE,EAAA;AAEvC,QAAA,MAAM,SAAS,GAAiB;YAC9B,GAAG,IAAI,CAAC,eAAe;AACvB,YAAA,GAAG,WAAW;SACf,CAAC;QACF,MAAM,SAAS,GAAG,MAAM;AACrB,aAAA,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;AACnD,aAAA,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAkB,MAAM;AAC5C,YAAA,GAAG,IAAI;YACP,CAAC,IAAI,GAAG,OAAO;SAChB,CAAC,EACF,EAAE,CACH,CAAC;AACJ,QAAA,OAAO,IAAI,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;KACnD;AAEO,IAAA,uBAAuB,CAAC,KAAqB,EAAA;AACnD,QAAA,QAAQ,KAAK,CAAC,IAAI;YAChB,KAAK,aAAa,CAAC,KAAK;AACtB,gBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAClC,KAAK,aAAa,CAAC,IAAI;AACrB,gBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAClC,YAAA;AACE,gBAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;SACrC;KACF;AAEO,IAAA,YAAY,CAAC,KAAmB,EAAA;AAItC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAChC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAChD,KAAK,CACN,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;KACtC;AAEO,IAAA,YAAY,CAAC,KAAoB,EAAA;AAIvC,QAAA,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,EAAE,KAAI;AAC7B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAChC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAChD,EAAE,CACH,CAAC;AACF,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,YAAA,OAAO,OAAO,CAAC;AACjB,SAAC,CAAC;AAEF,QAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClB,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,UAAU,EAAE;AAC3D,gBAAA,IAAI,CAAC,mBAAmB;AACzB,aAAA,CAAC,CAAC;SACJ;QAED,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,IAAI,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;SAClD,CAAC;KACH;AAEO,IAAA,cAAc,CAAC,KAAqB,EAAA;QAI1C,MAAM,UAAU,GAAkB,EAAE,CAAC;QAErC,IAAI,KAAK,CAAC,QAAQ;YAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,IAAI,KAAK,CAAC,MAAM;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAEtE,QAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAEzE,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,YAAA,OAAO,EAAE,IAAI,kBAAkB,CAAC,KAAK,CAAC;SACvC,CAAC;KACH;AAEO,IAAA,oBAAoB,CAAC,KAAqB,EAAA;QAChD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,YAAY,EAAE;YAC7C,OAAO,UAAU,CAAC,QAAQ,CAAC;SAC5B;AACD,QAAA,OAAO,CAAC,OAA+C,KACrD,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,YAAY,MAAM;AAChD,cAAE,IAAI;AACN,cAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KAC1B;IACO,kBAAkB,CACxB,UAA8C,EAC9C,aAA4B,EAAA;QAE5B,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,OAAO,aAAa,CAAC;SACtB;QACD,OAAO,UAAU,YAAY,KAAK;AAChC,cAAE,CAAC,GAAG,UAAU,EAAE,GAAG,aAAa,CAAC;AACnC,cAAE,CAAC,UAAU,EAAE,GAAG,aAAa,CAAC,CAAC;KACpC;AAEO,IAAA,mBAAmB,CAAC,OAAwB,EAAA;AAClD,QAAA,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;AACxB,YAAA,OAAO,EAAE,CAAC;SACX;AACD,QAAA,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;KACxC;8GA/LU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cAFxB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCpBY,wBAAwB,CAAA;AACnC,IAAA,YAAY,CAAC,OAAoB,EAAA;QAC/B,OAAO,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;KACpD;8GAHU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAxB,wBAAwB,EAAA,CAAA,CAAA,EAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;;;MCEW,eAAe,CAAA;AAEpC;;ACNM,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAC1C,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,cAAc,EAAE,GAAG;AACnB,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,cAAc,EAAE,KAAK;AACrB,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,WAAW,EAAE,GAAG;AACjB,CAAA;;ACRY,MAAA,UAAU,GAAG,CAAC,GAAG,GAAG,IAAI,KACnC,UAAU,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;;ACH9C;;AAEG;;ACFH;;AAEG;;;;"}
|