axioma-material 6.1.21 → 6.1.22

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.
@@ -1 +1 @@
1
- {"version":3,"file":"axioma-material.mjs","sources":["../../../projects/material/src/lib/snack.service.ts","../../../projects/material/src/state/shared/shared.actions.ts","../../../projects/material/src/lib/loading.interceptor.ts","../../../projects/material/src/lib/confirmation-dialog/confirmation-dialog.component.ts","../../../projects/material/src/lib/confirmation-dialog/confirmation-dialog.component.html","../../../projects/material/src/lib/confirmation.service.ts","../../../projects/material/src/lib/smart-select/smart-select.component.ts","../../../projects/material/src/lib/smart-select/smart-select.component.html","../../../projects/material/src/lib/smart-select/display-presets.ts","../../../projects/material/src/lib/detail-actions/detail-actions.component.ts","../../../projects/material/src/lib/detail-actions/detail-actions.component.html","../../../projects/material/src/lib/email/email.component.ts","../../../projects/material/src/lib/email/email.component.html","../../../projects/material/src/state/grid/grid.actions.ts","../../../projects/material/src/state/grid/grid.reducer.ts","../../../projects/material/src/state/grid/models.ts","../../../projects/material/src/state/router/router.selectors.ts","../../../projects/material/src/state/grid/grid.selectors.ts","../../../projects/material/src/lib/grid/grid.component.ts","../../../projects/material/src/lib/grid/grid.component.html","../../../projects/material/src/state/router/router.actions.ts","../../../projects/material/src/state/router/router.effects.ts","../../../projects/material/src/state/router/router.module.ts","../../../projects/material/src/state/grid/grid.effects.ts","../../../projects/material/src/state/grid/grid.module.ts","../../../projects/material/src/state/crud/crud.actions.ts","../../../projects/material/src/state/crud/crud.reducer.ts","../../../projects/material/src/state/crud/crud.selectors.ts","../../../projects/material/src/state/crud/crud.effects.ts","../../../projects/material/src/state/crud/crud.module.ts","../../../projects/material/src/state/shared/shared.effects.ts","../../../projects/material/src/state/shared/shared.reducer.ts","../../../projects/material/src/state/shared/shared.module.ts","../../../projects/material/src/state/shared/shared.selectors.ts","../../../projects/material/src/state/router/store-route-serializer.ts","../../../projects/material/src/lib/host-control-directive.directive.ts","../../../projects/material/src/lib/shared/forms.utility.ts","../../../projects/material/src/public-api.ts","../../../projects/material/src/axioma-material.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SnackService {\n snackBar = inject(MatSnackBar);\n info(message: string, action: string = 'Dismiss', duration: number = 3000) {\n this.snackBar.open(message, action, { duration });\n }\n}\n","import { createActionGroup, emptyProps, props } from '@ngrx/store';\n\nexport const SharedActions = createActionGroup({\n source: 'Shared',\n events: {\n 'Set Mobile': props<{ isMobile: boolean }>(),\n 'Back': emptyProps(),\n 'Init': emptyProps(),\n 'Init Success': props<{ build: string }>(),\n 'Noop': emptyProps(),\n 'Start Request': emptyProps(),\n 'End Request': emptyProps(),\n 'Transient Error': props<{ source: string, error: any }>(),\n 'Bad Error': props<{ source: string, error: any }>(),\n 'Navigate': props<{ url: string, replaceUrl?: boolean }>(),\n 'Access Denied': emptyProps(),\n 'Login': emptyProps(),\n }\n});\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { SharedActions } from '../state/shared/shared.actions';\nimport { finalize } from 'rxjs';\n\nexport const loadingInterceptor: HttpInterceptorFn = (req, next) => {\n let store = inject(Store);\n store.dispatch(SharedActions.startRequest())\n try {\n return next(req)\n .pipe(\n finalize(() => store.dispatch(SharedActions.endRequest()))\n );\n } catch (err) {\n console.log('error', err);\n store.dispatch(SharedActions.endRequest());\n throw err;\n }\n};\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n MatDialogRef,\n MAT_DIALOG_DATA,\n MatDialogContent,\n MatDialogActions,\n MatDialogTitle\n \n} from '@angular/material/dialog';\nimport { ButtonData, ConfirmationData } from './confirmation-data';\n@Component({\n selector: 'x-confirmation-dialog',\n imports: [NgTemplateOutlet, MatButtonModule, MatDialogContent, MatDialogActions, MatDialogTitle],\n templateUrl: './confirmation-dialog.component.html',\n styleUrl: './confirmation-dialog.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ConfirmationDialogComponent {\n data: ConfirmationData = inject(MAT_DIALOG_DATA);\n dialogRef = inject(MatDialogRef<ConfirmationDialogComponent>);\n \n constructor() {\n this.data.buttons ??= [{\n text: 'Yes',\n value: true,\n default: true,\n color: 'primary'\n }, {\n text: 'No',\n value: false,\n default: false,\n }]\n }\n clickButton(button: ButtonData) {\n this.dialogRef.close(button.value);\n }\n\n \n\n}\n","<h2 mat-dialog-title>{{data.title}}</h2>\n<mat-dialog-content cdkTrapFocus class=\"mat-typography\">\n @if(data.message){\n <p>{{data.message}}</p>\n } @else if (data.messageRef) {\n <ng-container *ngTemplateOutlet=\"data.messageRef\"></ng-container>\n }\n</mat-dialog-content>\n<mat-dialog-actions>\n @for(button of data.buttons; track button){\n @if(button.default){\n <button mat-button (click)=\"clickButton(button)\" cdkFocusInitial>{{button.text}}</button>\n } @else {\n <button mat-button (click)=\"clickButton(button)\">{{button.text}}</button>\n }\n }\n</mat-dialog-actions>","import { inject, Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ConfirmationDialogComponent } from './confirmation-dialog/confirmation-dialog.component';\nimport { Observable } from 'rxjs';\nimport { ConfirmationData } from './confirmation-dialog/confirmation-data';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfirmationService {\n private dialog = inject(MatDialog);\n confirm(config: ConfirmationData): Observable<any> {\n let ref = this.dialog.open(ConfirmationDialogComponent, {\n data: config\n });\n return ref.afterClosed();\n } \n}\n","import {\n booleanAttribute, ChangeDetectionStrategy, Component, computed, effect, ElementRef,\n inject, Injector, input, Input, OnInit, output, signal, ViewChild\n} from '@angular/core';\nimport { MatAutocomplete, MatAutocompleteModule, MatAutocompleteSelectedEvent }\n from '@angular/material/autocomplete';\nimport {\n NG_VALUE_ACCESSOR, ControlValueAccessor,\n FormControl, ReactiveFormsModule,\n NgControl\n} from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'x-smart-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatAutocompleteModule, MatInputModule, ReactiveFormsModule, MatIconModule,\n MatTooltipModule, MatButtonModule],\n templateUrl: './smart-select.component.html',\n styleUrl: './smart-select.component.scss',\n host: {\n '(blur)': 'onTouched($event)'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: SmartSelectComponent\n }\n ]\n})\nexport class SmartSelectComponent implements ControlValueAccessor, OnInit {\n private injector = inject(Injector);\n @ViewChild('input') input?: ElementRef<HTMLInputElement>;\n @ViewChild('auto') auto?: MatAutocomplete;\n inputValue = '';\n $displayFn = input((v?: any) => v?.name ?? '', { alias: 'display' });\n $hint = input<string | undefined>('Type to search', { alias: 'hint' });\n $label = input.required<string | undefined>({ alias: 'label' });\n $options = input<any[] | undefined | null>([], { alias: 'options' });\n $toolbar = input(false, { transform: booleanAttribute, alias: 'toolbar' });\n $new = input(false, { transform: booleanAttribute, alias: 'new' });\n newClick = output<void>();\n change = output<string>();\n $required = input(false, { alias: 'required', transform: booleanAttribute });\n control = new FormControl();\n outerControl?:FormControl;\n filter = output<string | undefined>();\n $filter = signal<string | undefined>(undefined);\n $filtered = computed(() => {\n let filter = this.$filter()?.toLowerCase();\n let options = this.$options();\n let res = filter ? options?.filter(c => c.name?.toLowerCase().includes(filter)\n || c.name?.toLowerCase().includes(filter) || typeof c?.id === 'string' && c.id.toLowerCase().includes(filter)) : options;\n return res;\n });\n\n $touched = signal(false, { equal: (a, b) => false });\n @Input({ transform: booleanAttribute }) set touched(value: boolean) {\n this.$touched.set(value);\n }\n\n onChange = (_: any) => { };\n\n onTouched = () => { };\n\n writeValue(obj: any): void {\n let options = this.$options();\n this.setValueFromId(obj, options);\n }\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n isDisabled ? this.control.disable() : this.control.enable();\n }\n\n onInputChange(e: any) {\n this.change.emit(e.option.value?.id);\n }\n onAutoCompleteChange(e: MatAutocompleteSelectedEvent) {\n this.onChange(e.option.value?.id);\n this.change.emit(e.option.value?.id);\n }\n\n setValue(id: any, obj: any, emit: boolean = true) {\n let val = obj ?? id;\n if (this.control.value == val)\n return;\n this.control.setValue(obj ?? id, { emitEvent: emit });\n this.onChange(id);\n this.change.emit(id);\n }\n setFilter() {\n const filterValue = this.input?.nativeElement.value;\n this.$filter.set(filterValue?.toLowerCase() == this.display(this.control.value).toLowerCase() ? undefined : filterValue);\n this.filter.emit(filterValue);\n }\n\n display(v: any): string {\n return this.$displayFn()(v);\n }\n\n onTouch(e: any) {\n this.control.markAllAsTouched();\n this.onTouched();\n }\n getErrorMessage() {\n if (!this.outerControl?.errors) return null;\n\n if (this.control.hasError('required')) {\n return this.$label() + ' is required';\n }\n let keys = Object.keys(this.control.errors ?? {});\n if (keys.length > 0) {\n return this.outerControl.errors[keys[0]];\n }\n }\n constructor() {\n effect(() => {\n if (this.$touched())\n this.control.markAsTouched();\n else {\n this.control.markAsUntouched();\n this.control.markAsPristine();\n }\n });\n effect(() => {\n let options = this.$options();\n let value = this.control.value\n if (value && options?.find(c => c?.id == value))\n this.setValueFromId(value, options);\n });\n }\n ngOnInit(): void {\n const ngControl = this.injector.get(NgControl, null, { self: true, optional: true });\n if (ngControl?.control) {\n this.outerControl = ngControl.control as FormControl;\n this.outerControl.statusChanges.subscribe(v => {\n this.control.setErrors(this.outerControl!.errors);\n });\n }\n }\n setValueFromId(id: any, options?: any[] | null) {\n let obj = options?.find(c => c?.id == id);\n this.setValue(obj?.id ?? id, obj, false);\n }\n\n onNew(e: MouseEvent) {\n e.stopPropagation();\n this.newClick.emit();\n }\n}\n","<mat-form-field class=\"w-full\">\n <mat-label>{{$label()}}</mat-label>\n <input #input [formControl]=\"control\" [required]=\"$required()\" type=\"text\" (input)=\"setFilter()\" (focus)=\"setFilter()\"\n placeholder=\"Select {{$label()}}\" [attr.aria-label]=\"$label()\" matInput [matAutocomplete]=\"auto\">\n @if($new()){\n <button type=\"button\" matSuffix matTooltipPositionAtOrigin=\"true\" matTooltip=\"Create new\" (click)=\"onNew($event)\" mat-icon-button>\n <mat-icon>add</mat-icon>\n </button>\n }\n <mat-error>{{getErrorMessage()}}</mat-error>\n @if (!$toolbar()){\n <mat-hint>{{$hint()}}</mat-hint>\n }\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"onAutoCompleteChange($event)\"\n [displayWith]=\"$displayFn()\">\n @if(!$required()){\n <mat-option>None</mat-option>\n }\n @for (opt of $filtered(); track opt) {\n <mat-option [value]=\"opt\">{{display(opt)}}</mat-option>\n }\n </mat-autocomplete>\n</mat-form-field>","export class DisplayPresets{\n public static WithId = (v?: any) => v ? `${v?.name} (${v?.id})` : '';\n public static Name = (v?: any) => v ? `${v?.name}` : '';\n}","import { booleanAttribute, ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { take } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { SharedActions } from '../../public-api';\n@Component({\n selector: 'x-detail-actions',\n imports: [MatToolbarModule, MatIconModule, MatButtonModule],\n templateUrl: './detail-actions.component.html',\n styleUrl: './detail-actions.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DetailActionsComponent {\n @Input({ transform: booleanAttribute, alias: 'no-routing' }) dontRoute = false;\n @Output() cancel = new EventEmitter<void>();\n private store = inject(Store);\n constructor() {\n this.cancel.pipe(take(1)).subscribe(() =>\n this.dontRoute || this.store.dispatch(SharedActions.back())\n );\n }\n}\n","<mat-toolbar class=\"flex flex-row gap-2 p-2\">\n <button mat-stroked-button type=\"submit\"><mat-icon>save</mat-icon> Save</button>\n <button mat-button type=\"button\" (click)=\"cancel.emit()\"><mat-icon>cancel</mat-icon> Cancel</button>\n <div class=\"flex-grow\"></div>\n <ng-content select=\"[right]\"></ng-content>\n</mat-toolbar>","import { toSignal } from '@angular/core/rxjs-interop';\nimport {\n booleanAttribute, ChangeDetectionStrategy, Component, effect, EventEmitter, \n forwardRef, Input, input, Output} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR, NG_VALIDATORS, ControlValueAccessor, Validator, AbstractControl,\n ValidationErrors, FormControl, Validators, ReactiveFormsModule\n} from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { first, map, of } from 'rxjs';\nimport { RouterModule } from '@angular/router';\nimport { CheckUserExistsFn } from './checkUserExistsFn';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'x-email',\n imports: [ReactiveFormsModule, MatFormFieldModule, MatIconModule,\n MatInputModule, RouterModule],\n templateUrl: './email.component.html',\n styleUrl: './email.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(blur)': 'onTouch($event)'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: EmailComponent\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => EmailComponent),\n multi: true,\n },\n ]\n})\nexport class EmailComponent implements ControlValueAccessor, Validator {\n @Input({transform: booleanAttribute}) icons = false;\n @Input({ required: true }) checkUserExistsFn?: CheckUserExistsFn;\n @Output() login = new EventEmitter<void>();\n @Input() label = 'Email';\n @Output() exists = new EventEmitter<boolean>();\n $touched = input(false, { transform: booleanAttribute, alias: 'touched' });\n $existing = input(<boolean | undefined>false, { transform: booleanAttribute, alias: 'existing' });\n control = new FormControl('', [Validators.required, Validators.email]);\n onChange = (_: any) => { };\n onTouch = (_: any) => { };\n onValidationChange = () => { };\n writeValue(obj: any): void {\n this.control.setValue(obj);\n }\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n isDisabled\n ? this.control.disable()\n : this.control.enable();\n }\n validate(_: AbstractControl): ValidationErrors | null {\n return this.control.errors\n }\n registerOnValidatorChange?(fn: () => void): void {\n this.onValidationChange = fn;\n }\n constructor() {\n\n let $valid = toSignal(this.control.statusChanges);\n effect(() => {\n this.onValidationChange();\n });\n\n let $value = toSignal(this.control.valueChanges);\n effect(() => {\n this.onChange($value());\n });\n\n this.control.setAsyncValidators(() => {\n let existing = this.$existing();\n let value = this.control.value;\n if (!value || typeof existing === 'undefined') {\n return of(null);\n }\n return this.checkUserExistsFn!(value).pipe(\n map(exists =>{\n this.exists.emit(exists);\n return exists === existing ? null : existing ? { missing: true } : { exists: true };\n }),\n first()\n );\n });\n\n effect(() => {\n let touched = this.$touched();\n if (touched) {\n this.control.markAsTouched();\n } else {\n this.control.markAsUntouched();\n }\n })\n }\n}\n","<mat-form-field >\n <mat-label>{{label}}</mat-label>\n @if(icons){\n <mat-icon matPrefix>mail</mat-icon>\n }\n <input autocapitalize=\"off\" matInput type=\"email\" [formControl]=\"control\" required>\n <mat-hint><ng-content></ng-content></mat-hint>\n @if (control.hasError('required')){\n <mat-error>Email is required</mat-error>\n } @else if (control.hasError('email')){\n <mat-error>Email is invalid</mat-error>\n } @else if (control.hasError('exists')){\n <mat-error>Email already exists: <a (click)=\"login.emit()\">sign in</a>.</mat-error>\n } @else if (control.hasError('missing')){\n <mat-error>Email is missing</mat-error>\n }\n</mat-form-field>","import { createActionGroup, emptyProps, props } from '@ngrx/store';\nimport { GenericDataRequest, GroupFilter } from './models';\n\nexport const GridActions = createActionGroup({\n source: 'Grid',\n events: {\n 'Refresh': emptyProps(),\n 'Implicit Load': props<{ name:string, dataUrl?: string, request?: GenericDataRequest }>(),\n 'Load': props<{ name: string, request?: GenericDataRequest }>(),\n 'Load Success': props<{ name: string, count?: number, data?: any[] }>(),\n 'Change Paging': props<{ pageIndex: number, pageSize: number }>(),\n 'Change Sort': props<{ sort: string, dir: string }>(),\n 'Change Filter': props<{ filter: string }>(),\n 'Update Request': props<{ request: GenericDataRequest }>(),\n 'Go To': props<{ filter: GroupFilter, url?: string, replaceUrl?: boolean }>(),\n 'Bulk Delete': props<{ ids: number[] | undefined }>(),\n 'Bulk Delete Success': emptyProps(),\n }\n});\n","import { createFeature, createReducer, on } from '@ngrx/store';\nimport { GridActions } from './grid.actions';\nexport const gridFeatureKey = 'grid';\n\nexport interface GridMap {\n [key: string]: GridData;\n}\n\nexport interface GridData extends GenericGridData<any>{}\n\nexport interface GenericGridData<T> {\n dataUrl: string | undefined;\n count: number | undefined;\n data: T[] | undefined;\n loading: boolean;\n}\n\nexport interface State {\n grids: GridMap;\n}\n\nexport const initialState: State = {\n grids: {} as GridMap\n};\n\nexport const reducer = createReducer(\n initialState,\n on(GridActions.loadSuccess, (state, { name, data, count }) => ({\n ...state,\n grids: { ...state.grids, [name]: { ...state.grids[name], data, count, loading: false } }\n })),\n on(GridActions.implicitLoad, (state, { name, dataUrl }) => ({\n ...state,\n grids: { ...state.grids, [name]: { ...state.grids[name], \n dataUrl,\n data: undefined,\n count: undefined,\n loading: true } }\n })),\n);\n\nexport const gridFeature = createFeature({\n name: gridFeatureKey,\n reducer,\n});\n\n","export enum FilterLogic {\n Or = 0,\n And = 1,\n}\n\nexport interface GroupFilter {\n /** Logical composition in the group */\n logic?: FilterLogic;\n /** Nested groups */\n groups?: GroupFilter[] | undefined;\n /** Filters */\n fields?: FieldFilter[] | undefined;\n}\n\nexport interface GenericDataRequest {\n filters?: GroupFilter | undefined;\n sortBy?: string | undefined;\n sortDir?: SortDir | undefined;\n paging?: Paging | undefined;\n}\n\nexport interface FieldFilter {\n names?: string[] | undefined;\n operator?: FilterOperator | undefined;\n values?: string[] | undefined;\n}\n\nexport enum SearchOperator{\n Contains = 0,\n In = 4,\n FullText = 5,\n}\n\nexport enum FilterOperator {\n Contains = 0,\n Equals = 1,\n Greater = 2,\n Less = 3,\n In = 4,\n FullText = 5\n}\n\nexport enum SortDir {\n Asc = 0,\n Desc = 1,\n}\n\n/** Paging data */\nexport interface Paging {\n /** 1-based page number */\n page: number;\n /** Page size */\n pageSize: number;\n}\n\n","import { RouterReducerState } from \"@ngrx/router-store\";\nimport { createFeatureSelector, createSelector } from \"@ngrx/store\";\nimport { RouterState } from \"./store-route-serializer\";\n\nexport const selectRouter = createFeatureSelector<RouterReducerState<RouterState>>('router');\n\nexport const selectRouterState = createSelector(\n selectRouter,\n state => state?.state\n);\n\nexport const selectRouteParams = createSelector(\n selectRouterState,\n state => state?.params\n);\n\nexport const selectRouteParam = (name?: string) => createSelector(\n selectRouteParams,\n params => (params && name) ? params[name] : undefined\n);\n\nexport const selectUrl = createSelector(\n selectRouterState,\n state => decodeUriInternal(state?.url)!\n);\n\nexport const selectSiteSlugParam = createSelector(\n selectRouteParam('site-slug'),\n selectUrl,\n (s, u) => s ?? (!!u ? null : undefined)\n)\n\nexport const selectQueryParams = createSelector(\n selectRouterState,\n state => state?.queryParams\n);\n\nexport const selectQueryParam = (name: string) => createSelector(\n selectQueryParams,\n params => params ? params[name] : undefined\n);\n\nexport const selectQueryParamArray = (name: string) => createSelector(\n selectQueryParam(name),\n value => value ? value.toString().split(',') : undefined\n);\n\nexport const selectDataParam = (name: string) => createSelector(\n selectRouterState,\n state => state?.data[name]\n);\n\nexport const selectUrlWithoutQuery = createSelector(\n selectRouterState,\n state => decodeUriInternal(state?.url?.split('?')[0])!\n);\n\nexport const selectUrlSegments = (count: number) => createSelector(\n selectUrlWithoutQuery,\n url => {\n let segs = url.split('/');\n return segs.slice(0, Math.min(segs.length, count)).join('/');\n }\n);\n\nconst decodeUriInternal = (source?: string): string | undefined => {\n return !!source ? decodeURI(source) : source;\n}","import { createSelector } from '@ngrx/store';\nimport { GridData, gridFeature } from './grid.reducer';\nimport { FilterLogic, GenericDataRequest, GroupFilter, SortDir } from './models';\nimport { selectQueryParam, selectRouterState } from '../router/router.selectors';\nimport { GridSetup } from './grid-setup';\n\nexport const selectGridData = (name: string) => createSelector(\n gridFeature.selectGrids,\n (grids): GridData | undefined => grids ? grids[name] : undefined\n);\n\nexport const selectPageIndex = createSelector(\n selectQueryParam('page'),\n (p): number => (p ? +p : 1) - 1\n);\nexport const selectPageSize = createSelector(\n selectQueryParam('size'),\n (s): number => s ? +s : 25\n);\n\nexport const selectGridFilters = (name: string) => createSelector(\n selectQueryParam(name),\n (params): GroupFilter | undefined => params ? JSON.parse(atob(params)) : undefined\n);\n\nexport const selectBaseFilters = createSelector(\n selectGridFilters('base-filter'),\n f => f\n);\n\nexport const selectTotalCount = (name: string) => createSelector(\n selectGridData(name),\n data => data?.count ?? 0\n);\n\nexport const selectGridSetup = createSelector(\n selectRouterState,\n s => s?.data['grid'] ? (s.data['grid'] as GridSetup) : undefined\n);\n\nexport const selectWaitForFilters = createSelector(\n selectGridSetup,\n s => s?.waitForFilters ?? false\n);\n\nexport const selectSortBy = createSelector(\n selectGridSetup,\n selectQueryParam('sort-by'),\n (s, q) => q ? q : s?.sortBy\n);\n\nexport const selectSortDir = createSelector(\n selectGridSetup,\n selectQueryParam('sort-dir'),\n (s, q) => {\n q = (q ?? s?.sortDir)?.toLowerCase();\n return q == 'desc' ? SortDir.Desc : SortDir.Asc\n }\n);\n\nexport const selectSearchFields = createSelector(\n selectGridSetup,\n d => d?.searchFields\n);\n\nexport const selectIsGrid = createSelector(\n selectGridSetup,\n s => !!s\n);\n\nexport const selectGridName = createSelector(\n selectGridSetup,\n s => s?.controllerMethod\n);\n\n\nexport const selectDataUrl = (name:string) => createSelector(\n selectGridSetup,\n selectGridData(name),\n (s,d) => s?.controllerMethod ? `/api/${s?.controllerMethod}` : d?.dataUrl\n);\n\n\nexport const selectFilterText = createSelector(\n selectGridFilters('filter'),\n f => f?.fields?.at(0)?.values?.at(0) ?? ''\n);\nexport const selectDataRequest = createSelector(\n selectPageIndex,\n selectPageSize,\n selectSortBy,\n selectSortDir,\n selectBaseFilters,\n selectGridFilters('filter'),\n (pageIndex, pageSize, sortBy, sortDir, baseFilters, filters): GenericDataRequest => ({\n paging: { page: pageIndex + 1, pageSize },\n sortBy,\n sortDir,\n filters: combineFilters([baseFilters, filters])\n })\n)\n\nfunction combineFilters(filters: (GroupFilter | undefined)[]): GroupFilter | undefined {\n let filtered = filters.filter(f => !!f) as GroupFilter[];\n if (filtered.length == 0) {\n return undefined;\n }\n if (filtered.length == 1) {\n return filtered[0];\n }\n return { logic: FilterLogic.And, groups: filtered };\n}\n\n","import {\n booleanAttribute, ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject,\n input, Input, output, Signal, signal, TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { ActionConfig, GridColumn, GridConfig } from './grid-config';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSortModule, Sort, SortDirection } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { GridActions } from '../../state/grid/grid.actions';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { filter, mergeMap } from 'rxjs';\nimport {\n selectDataRequest, selectFilterText, selectGridData, selectGridName, selectPageIndex,\n selectPageSize,\n selectSearchFields,\n selectSortBy,\n selectSortDir\n} from '../../state/grid/grid.selectors';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatCheckboxChange, MatCheckboxModule } from '@angular/material/checkbox';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { Actions, ofType } from '@ngrx/effects';\nimport { SortDir } from '../../state/grid/models';\nimport { ActionEvent } from './action-event';\nimport { GenericGridData, GridData } from '../../state/grid/grid.reducer';\n\n@Component({\n selector: 'x-grid',\n imports: [MatInputModule, MatTableModule, MatToolbarModule, MatButtonModule,\n MatCheckboxModule, MatTooltipModule, MatIconModule, RouterModule,\n MatSortModule, MatPaginatorModule, NgTemplateOutlet, NgTemplateOutlet],\n templateUrl: './grid.component.html',\n styleUrl: './grid.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GridComponent<T> {\n @ViewChild('toolbar', { read: ElementRef }) toolbar?: ElementRef;\n get hasToolbar() {\n return (this.toolbar?.nativeElement.childElementCount ?? 0) > 1;\n }\n private $deleteSuccess = toSignal(inject(Actions).pipe(ofType(GridActions.bulkDeleteSuccess)));\n private route = inject(ActivatedRoute);\n private router = inject(Router);\n private store = inject(Store);\n selection = new SelectionModel<T>(true, [], true, (a, b) => ((<any>a).id ?? a) === ((<any>b).id ?? b));\n $config = signal<GridConfig<T> | undefined>(undefined);\n action = output<ActionEvent<T>>();\n @Input() set config(val: GridConfig<T> | undefined) {\n this.$config.set(val);\n };\n $view = input<TemplateRef<any> | undefined>(undefined, { alias: 'view' });\n dataChange = output<GridData | undefined>();\n $sort = this.store.selectSignal(selectSortBy);\n $dir: Signal<SortDirection>;\n $bulk = input(false, { alias: 'bulk', transform: booleanAttribute });\n $allSelected = signal(false);\n $gridName = this.store.selectSignal(selectGridName);\n $columns = computed(() => this.$config()?.columns);\n $buttons = computed(() => this.$config()?.buttons);\n $displayedColumns = computed(() => {\n let res = this.$columns()?.map(c => c.name);\n if (res && this.$hasActions()) {\n res.push('actions');\n }\n if (res && this.$bulk()) {\n res.unshift('select');\n }\n return res;\n });\n $data = input<GenericGridData<T> | undefined>(undefined, { alias: 'data' });\n $storeData = toSignal(toObservable(this.$gridName).pipe(\n filter(name => !!name),\n mergeMap(name => this.store.select(selectGridData(name!)))));\n $gridData = computed(() => {\n let data = this.$data();\n let storeData = this.$storeData();\n return data ?? storeData;\n });\n $hasPaging = computed(() => {\n let gridData = this.$gridData();\n return gridData?.data && typeof gridData.count === 'number';\n });\n $filter = this.store.selectSignal(selectFilterText);\n $pageIndex = this.store.selectSignal(selectPageIndex);\n $pageSizeRouter = this.store.selectSignal(selectPageSize);\n $pageSizeInput = input<number | undefined>(undefined, { alias: 'pageSize' });\n $pageSize = computed(() => this.$pageSizeInput() ?? this.$pageSizeRouter());\n $dataSource = computed(() => this.$gridData()?.data ?? []);\n $searchColumns = this.store.selectSignal(selectSearchFields);\n $hasSearch = computed(() => this.$searchColumns()?.length ?? 0);\n $actions = computed(() => this.$config()?.actions);\n $hasActions = computed(() => this.$actions()?.length ?? 0);\n $selectedCount: Signal<number | undefined>;\n toggleAll() {\n this.selection.clear();\n this.$allSelected.set(!this.$allSelected());\n }\n toggleOne(e: MatCheckboxChange, row: T) {\n if (this.$allSelected()) {\n this.selection.clear();\n this.$allSelected.set(false);\n this.selection.select(row);\n } else\n this.selection.toggle(row);\n if (e.checked != this.selection.isSelected(row))\n e.source.checked = this.selection.isSelected(row);\n }\n deleteSelected() {\n this.store.dispatch(GridActions.bulkDelete({ ids: this.selection.selected.map(s => (<any>s).id) }));\n }\n pageChange(e: PageEvent) {\n this.store.dispatch(GridActions.changePaging({ pageIndex: e.pageIndex, pageSize: e.pageSize }));\n }\n sortChange(e: Sort) {\n this.store.dispatch(GridActions.changeSort({ sort: e.active, dir: e.direction }));\n }\n\n refresh() {\n this.selection.clear();\n this.store.dispatch(GridActions.refresh());\n }\n setFilter(filter: string) {\n this.store.dispatch(GridActions.changeFilter({ filter }));\n }\n filterKeyUp(event: KeyboardEvent) {\n this.setFilter((event.target as HTMLInputElement).value);\n }\n getDisplayRef(col: GridColumn<T>): TemplateRef<any> | null {\n if (col.display instanceof TemplateRef)\n return col.display as TemplateRef<any>;\n return null;\n }\n getDisplayFunc(col: GridColumn<T>): ((row: T) => string | null) | null {\n if (col.display instanceof Function)\n return col.display as (row: T) => string | null;\n return null;\n }\n\n display(col: GridColumn<T>, row: T) {\n let func = this.getDisplayFunc(col);\n if (func)\n return func(row);\n return (<any>row)[col.name];\n }\n\n onRowClick(row: T) {\n const defaultAction = this.$config()?.defaultAction;\n if (!defaultAction)\n return;\n let action = this.$actions()?.find(a => a.name === defaultAction);\n if (action?.routerLink) {\n let link = action.routerLink(row);\n if (!Array.isArray(link))\n link = [link];\n this.router.navigate(link, { relativeTo: this.route });\n } else if (action?.action) {\n action.action(row);\n }\n this.action.emit({ action: defaultAction, row });\n }\n\n onAction(e: MouseEvent, row: any, action: ActionConfig<T>) {\n e.stopPropagation();\n if (action.action)\n action.action(row);\n this.action.emit({ action: action.name, row });\n }\n\n getStyle(col: GridColumn<T>) {\n return { 'max-width': col.width ?? 'auto' };\n }\n\n getActionStyle() {\n let width = (this.$actions()?.length ?? 0) * 48 + 32;\n return { 'max-width': `${width}px` };\n }\n\n $request = this.store.selectSignal(selectDataRequest);\n\n constructor() {\n let $dir = this.store.selectSignal(selectSortDir);\n this.$dir = computed(() => $dir() == SortDir.Desc ? 'desc' : 'asc');\n effect(() => {\n this.$deleteSuccess();\n this.selection.clear();\n this.$allSelected.set(false);\n });\n\n effect(() => {\n this.dataChange.emit(this.$gridData());\n });\n\n let $selectionChanged = toSignal(this.selection.changed);\n this.$selectedCount = computed(() => {\n let selection = $selectionChanged()?.source;\n let total = this.$gridData()?.count;\n return this.$allSelected() && !selection?.hasValue() ? total : selection?.selected.length;\n });\n }\n\n onClick($event: PointerEvent, row: T, column: GridColumn<T>) {\n $event.stopPropagation();\n if (column.action)\n column.action(row);\n }\n}\n","<mat-toolbar #toolbar class=\"flex flex-row gap-2 p-2\" [style.display]=\"hasToolbar?undefined:' none'\">\n @if($hasSearch()){\n <div class=\"h-full\">\n <mat-form-field>\n <mat-label>Search</mat-label>\n <mat-icon matPrefix>search</mat-icon>\n <input matInput type=\"text\" [value]=\"$filter()\" (keyup)=\"filterKeyUp($event)\">\n @if ($filter()) {\n <button matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"setFilter('')\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n </div>\n }\n <ng-content select=\"[toolbar]\"></ng-content>\n @for(button of $buttons(); track button.name){\n @if (!button.visible || button.visible()){\n <button mat-button [routerLink]=\"button.routerLink?button.routerLink():undefined\" \n [matTooltip]=\"button.text\" [disabled]=\"button.disabled?button.disabled():undefined\"\n (click)=\"onAction($event,undefined,button)\"><mat-icon>{{button.icon}}</mat-icon> {{button.text}}</button>\n }\n }\n @if ($config()?.new){\n <a mat-button routerLink=\"../new\"><mat-icon>add</mat-icon> New</a>\n }\n @if($config()?.refresh)\n {\n <button mat-button (click)=\"refresh()\"><mat-icon>sync</mat-icon> Refresh</button>\n }\n @if($bulk()){\n <button mat-button [disabled]=\"!$selectedCount()\" (click)=\"deleteSelected()\"><mat-icon>delete</mat-icon>\n Delete</button>\n }\n <span class=\"flex-grow\"></span>\n @if ($selectedCount() || $allSelected()){\n <span class=\"count\"> {{$selectedCount()??0}} items selected</span>\n }\n</mat-toolbar>\n@if($view(); as view){\n<ng-container *ngTemplateOutlet=\"view; context:{ $implicit: $gridData() }\"></ng-container>\n} @else {\n<mat-table [dataSource]=\"$dataSource()\" matSort (matSortChange)=\"sortChange($event)\" [matSortActive]=\"$sort()\"\n [matSortDirection]=\"$dir()\" matSortDisableClear>\n @if ($bulk()){\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef class=\"select\" matTooltip=\"Select all\">\n <mat-checkbox (change)=\"$event ? toggleAll() : null\" [checked]=\"!selection.hasValue() && $allSelected()\"\n [indeterminate]=\"selection.hasValue() && !$allSelected()\">\n </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" class=\"select\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"toggleOne($event, row)\"\n [checked]=\"selection.isSelected(row) || $allSelected() && !selection.hasValue()\">\n </mat-checkbox>\n </mat-cell>\n </ng-container>\n }\n @for(column of $columns(); track column.name){\n <ng-container [matColumnDef]=\"column.name\">\n @if (column.sort){\n <mat-header-cell [style]=\"getStyle(column)\" *matHeaderCellDef\n mat-sort-header>{{column.header}}</mat-header-cell>\n } @else {\n <mat-header-cell [style]=\"getStyle(column)\" *matHeaderCellDef>{{column.header}}</mat-header-cell>\n }\n <mat-cell [style]=\"getStyle(column)\" *matCellDef=\"let row\">\n @if (column.icon) {\n <mat-icon>{{column.icon(row)}}</mat-icon>\n } @else if(column.href || column.routerLink || column.action){\n <a [routerLink]=\"column.routerLink?column.routerLink(row):undefined\"\n [queryParams]=\"column.queryParams?column.queryParams(row):undefined\"\n [attr.href]=\"column.href?column.href(row):'#'\" (click)=\"onClick($event, row, column)\">\n {{ display(column,row) }}\n </a>\n } @else if (getDisplayRef(column)) {\n <ng-container *ngTemplateOutlet=\"getDisplayRef(column); context: { $implicit: row}\"></ng-container>\n } @else {\n {{ display(column,row)}}\n }\n </mat-cell>\n </ng-container>\n }\n @if($hasActions()){\n <ng-container matColumnDef=\"actions\">\n <mat-header-cell [style]=\"getActionStyle()\" *matHeaderCellDef>Actions</mat-header-cell>\n <mat-cell [style]=\"getActionStyle()\" *matCellDef=\"let row\">\n @for(action of $actions(); track action.name){\n @if(!action.visible || action.visible(row)){\n <button type=\"button\" mat-icon-button [disabled]=\"action.disabled?action.disabled(row):undefined\"\n [matTooltip]=\"action.text\" (click)=\"onAction($event, row, action)\"\n [queryParams]=\"action.queryParams?action.queryParams(row):undefined\"\n [routerLink]=\"action.routerLink?action.routerLink(row):undefined\">\n <mat-icon>{{action.icon}}</mat-icon>\n </button>\n }\n }\n </mat-cell>\n </ng-container>\n }\n <mat-header-row *matHeaderRowDef=\"$displayedColumns()\"></mat-header-row>\n <mat-row [class.clickable]=\"!!$config()?.defaultAction\" *matRowDef=\"let row; columns: $displayedColumns()\"\n (click)=\"onRowClick(row)\"></mat-row>\n</mat-table>\n}\n@if($hasPaging()){\n<mat-paginator [pageIndex]=\"$pageIndex()\" [length]=\"$gridData()?.count\" [pageSize]=\"$pageSize()\"\n (page)=\"pageChange($event)\" aria-label=\"Select page\"></mat-paginator>\n}","import { createActionGroup, props } from \"@ngrx/store\";\n\nexport const RouterActions = createActionGroup({\n source: 'Router',\n events: {\n 'Set Query Params': props<{ queryParams:{[key:string]:string}}>()\n }\n});\n","import { Injectable, inject } from \"@angular/core\";\nimport { Actions, createEffect, ofType } from \"@ngrx/effects\";\nimport { RouterActions } from \"./router.actions\";\nimport { Router } from \"@angular/router\";\nimport { tap } from \"rxjs\";\nimport { concatLatestFrom } from \"@ngrx/operators\";\nimport { Store } from \"@ngrx/store\";\nimport { selectQueryParams } from \"./router.selectors\";\n\n@Injectable()\nexport class RouterEffects {\n private store = inject(Store);\n private actions$ = inject(Actions);\n private router = inject(Router);\n $set = createEffect(() => this.actions$.pipe(\n ofType(RouterActions.setQueryParams),\n concatLatestFrom(() => this.store.select(selectQueryParams)),\n tap(([{ queryParams }, params]) => {\n this.router.navigate([], { queryParams: Object.assign({...params},queryParams) });\n })\n ), { dispatch: false });\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { provideEffects } from '@ngrx/effects';\nimport { RouterEffects } from './router.effects';\n\n\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule\n ], \n providers: [\n provideEffects(RouterEffects)\n ]\n})\nexport class StateRouterModule { }\n","import { inject, Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { debounceTime, catchError, concatMap, filter, map, mergeMap, switchMap, tap } from 'rxjs/operators';\nimport { concatLatestFrom } from '@ngrx/operators';\nimport { GridActions } from './grid.actions';\nimport { Store } from '@ngrx/store';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { selectBaseFilters, selectDataRequest, selectDataUrl, selectGridName, selectIsGrid, selectSearchFields, selectTotalCount, selectWaitForFilters } from './grid.selectors';\nimport { SharedActions } from '../shared/shared.actions';\nimport { of } from 'rxjs';\nimport { GridData } from './grid.reducer';\nimport { FilterLogic, FilterOperator, GroupFilter, SearchOperator, SortDir } from './models';\nimport { selectQueryParam, selectUrl, selectUrlWithoutQuery } from '../router/router.selectors';\nimport { ConfirmationService } from '../../lib/confirmation.service';\nimport { SnackService } from '../../lib/snack.service';\nimport { ROUTER_NAVIGATION } from '@ngrx/router-store';\nimport { DefaultUrlSerializer, Router } from '@angular/router';\nimport { SearchField } from './grid-setup';\n\n@Injectable()\nexport class GridEffects {\n private router = inject(Router);\n private snack = inject(SnackService);\n private client = inject(HttpClient);\n private store = inject(Store);\n private actions$ = inject(Actions);\n private confirmation = inject(ConfirmationService);\n\n changePaging$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(GridActions.changePaging),\n concatLatestFrom(() => this.store.select(selectDataRequest)),\n map(([{ pageIndex, pageSize }, req]) => GridActions.updateRequest({ request: { ...req, paging: { page: pageIndex + 1, pageSize } } }))\n );\n });\n\n changeSort$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(GridActions.changeSort),\n concatLatestFrom(() => this.store.select(selectDataRequest)),\n map(([{ sort, dir }, req]) => GridActions.updateRequest({ request: { ...req, sortBy: sort, sortDir: dir == \"asc\" ? SortDir.Asc : SortDir.Desc } }))\n );\n });\n\n updateRequest$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(GridActions.updateRequest),\n concatLatestFrom(_ => [\n this.store.select(selectUrl),\n this.store.select(selectUrlWithoutQuery),\n this.store.select(selectQueryParam('base-filter'))\n ]),\n mergeMap(([{ request }, oldUrl, urlWithoutQuery, filter]) => {\n let url = `${urlWithoutQuery}?page=${request.paging?.page}&size=${request.paging?.pageSize}&sort-by=${request.sortBy ?? ''}&sort-dir=${request.sortDir == SortDir.Desc ? 'desc' : 'asc'}&filter=${request.filters ? btoa(JSON.stringify(request.filters)) : ''}&base-filter=${filter ?? ''}`;\n return oldUrl == url\n ? []\n : [SharedActions.navigate({ url })];\n })\n );\n });\n\n loadFromUrl$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(ROUTER_NAVIGATION),\n concatLatestFrom(() => [\n this.store.select(selectIsGrid),\n this.store.select(selectWaitForFilters),\n this.store.select(selectBaseFilters)\n ]),\n filter(([_, isGrid, wait, filters]) => !!isGrid && (!wait || !!filters)),\n map(() => GridActions.refresh())\n );\n });\n\n changeFilter$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(GridActions.changeFilter),\n concatLatestFrom(() => [\n this.store.select(selectDataRequest),\n this.store.select(selectSearchFields)\n ]),\n debounceTime(300),\n map(([{ filter }, req, fields]) => GridActions.updateRequest({\n request: {\n ...req, filters: filter\n ? buildFilters(filter, fields)\n : undefined\n }\n }))\n );\n });\n\n goTo$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(GridActions.goTo),\n mergeMap(({ url, filter, replaceUrl }) => {\n\n let baseFilter = filter ? btoa(JSON.stringify(filter)) : undefined;\n\n if (!url) {\n this.router.navigate([], { queryParams: { 'base-filter': baseFilter }, replaceUrl });\n return [];\n }\n\n let dus = new DefaultUrlSerializer();\n let parsed = dus.parse(url);\n\n parsed.queryParams['base-filter'] = filter ? btoa(JSON.stringify(filter)) : undefined;\n return [SharedActions.navigate({\n replaceUrl,\n url: dus.serialize(parsed)\n })];\n })\n );\n });\n\n loadData$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(GridActions.load),\n concatLatestFrom(({ name }) => [\n this.store.select(selectDataUrl(name))\n ]),\n map(([{ name, request }, dataUrl]) => GridActions.implicitLoad({ name, dataUrl, request }))\n );\n });\n\n implicitLoad$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(GridActions.implicitLoad),\n concatLatestFrom(() => [\n this.store.select(selectDataRequest)\n ]),\n filter(([{ dataUrl }]) => !!dataUrl),\n switchMap(([{ type, name, dataUrl, request }, urlRequest]) => {\n return this.client.post<GridData>(dataUrl!, request ?? urlRequest).pipe(\n map(data => GridActions.loadSuccess({ name, ...data })),\n catchError(error => of(SharedActions.badError({ source: type, error }))));\n })\n );\n });\n\n bulkDelete$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(GridActions.bulkDelete),\n concatLatestFrom(() => [\n this.store.select(selectGridName),\n this.store.select(selectDataRequest)\n ]),\n concatLatestFrom(([, name]) => [\n this.store.select(selectDataUrl(name!)),\n this.store.select(selectTotalCount(name!))]),\n filter(([[], url]) => !!url),\n mergeMap(([[{ type, ids }, _, request], url, totalCount]) =>\n this.confirmation.confirm({\n title: 'Delete', message:\n `Are you sure you want to delete ${ids?.length ? ids.length : totalCount} items?`\n }).pipe(\n filter(c => c),\n concatMap(_ => {\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\n let body = {\n ...request,\n paging: undefined,\n sortBy: undefined,\n sortDir: undefined,\n filters: ids?.length ? {\n logic: FilterLogic.And,\n fields: [{\n names: ['id'], operator: FilterOperator.In, values: ids.map(id => id.toString())\n }]\n } : request.filters\n };\n return this.client.delete(url!, { headers, body }).pipe(\n map(() => GridActions.bulkDeleteSuccess()),\n catchError(error => of(SharedActions.badError({ source: type, error }))));\n }\n )\n )\n )\n )\n });\n\n refresh$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(GridActions.refresh),\n concatLatestFrom(() => this.store.select(selectGridName)),\n map(([_, name]) => GridActions.load({ name: name! }))\n );\n });\n\n bulkDeleteSuccess$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(GridActions.bulkDeleteSuccess),\n tap(() => this.snack.info('Deleted!')),\n map(() => GridActions.refresh())\n );\n });\n\n constructor() { }\n}\n\n\nfunction buildFilters(filter: string, fields: SearchField[] | undefined): GroupFilter | undefined {\n const expandedFields = fields?.map(f => typeof f === 'string' ? { field: f, operator: SearchOperator.Contains } : f) ?? [];\n const byOperator = expandedFields.reduce(\n (acc, cur) => {\n (acc[cur.operator] = acc[cur.operator] ?? []).push(cur.field);\n return acc;\n }, {} as { [key in SearchOperator]: string[] }\n );\n const groupFilters: GroupFilter[] = Object.entries(byOperator).map(([op, fieldNames]) => ({\n logic: FilterLogic.And,\n fields: [{ names: fieldNames, operator: op as unknown as FilterOperator, values: [filter] }]\n }));\n return groupFilters.length === 1 ? groupFilters[0] : { logic: FilterLogic.Or, groups: groupFilters };\n}\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GridEffects } from './grid.effects';\nimport { provideState } from '@ngrx/store';\nimport { gridFeature } from './grid.reducer';\nimport { provideEffects } from '@ngrx/effects';\n\n\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule\n ],\n providers: [\n provideState(gridFeature),\n provideEffects([GridEffects])\n ]\n})\nexport class GridModule { }\n","import { createActionGroup, props } from '@ngrx/store';\nimport { NamedItem } from './crud.reducer';\n\nexport const CrudActions = createActionGroup({\n source: 'Crud',\n events: {\n 'Load All': props<{ name: string }>(),\n 'Load All Success': props<{ name: string, all: NamedItem[] }>(),\n 'Configure': props<{ name: string, param: string }>(),\n 'Delete': props<{ name: string, value: any }>(),\n 'Save': props<{ name: string, value: any, stay?:boolean, id: any }>(),\n 'Save Success': props<{ name: string, value: any, stay?:boolean }>(),\n 'Clear Saved': props<{ name: string }>(),\n 'Load': props<{ name: string }>(),\n 'Load Success': props<{ name: string, value: any }>()\n }\n});\n","import { createFeature, createReducer, on } from '@ngrx/store';\nimport { CrudActions } from './crud.actions';\n\nexport interface NamedItem {\n id: number,\n name: string\n}\n\nexport const crudFeatureKey = 'crud';\n\nexport interface State {\n urlPrefix: string,\n map: {\n [key: string]: {\n param?: string,\n all: NamedItem[],\n value?: any\n }\n },\n}\n\nexport const initialState: State = {\n urlPrefix: '/api',\n map: {}\n};\n\nexport const reducer = createReducer(\n initialState,\n on(CrudActions.load, CrudActions.clearSaved, (state, { name }) => ({ ...state, map: { ...state.map, [name]: { ...state.map[name], value: undefined } } })), \n on(CrudActions.configure, (state, { name, param }) => ({ ...state, map: { ...state.map, [name]: { ...state.map[name], param } } })),\n on(CrudActions.loadSuccess, (state, { name, value }) => ({ ...state, map: { ...state.map, [name]: { ...state.map[name], value } } })),\n on(CrudActions.saveSuccess, (state, { name, value }) => ({ ...state, map: { ...state.map, [name]: { ...state.map[name], value } } })),\n on(CrudActions.loadAllSuccess, (state, { name, all }) => ({ ...state, map: { ...state.map, [name]: { ...state.map[name], all } } })),\n);\n\nexport const crudFeature = createFeature({\n name: crudFeatureKey,\n reducer,\n});\n\n","import { createSelector } from '@ngrx/store';\nimport { crudFeature } from './crud.reducer';\n\nexport const selectParamName = (name: string) => createSelector(\n crudFeature.selectMap,\n map => map[name]?.param\n);\n\nexport const selectValue = (name: string) => createSelector(\n crudFeature.selectMap,\n map => map ? map[name]?.value : undefined\n);\n\nexport const selectAll = (name: string) => createSelector(\n crudFeature.selectMap,\n map => map ? map[name]?.all : undefined\n);\n\n\n","import { inject, Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { concatLatestFrom } from '@ngrx/operators';\nimport { catchError, concatMap, filter, map, mergeMap, tap } from 'rxjs/operators';\nimport { CrudActions } from './crud.actions';\nimport { Store } from '@ngrx/store';\nimport { HttpClient } from '@angular/common/http';\nimport { ConfirmationService } from '../../lib/confirmation.service';\nimport { selectParamName } from './crud.selectors';\nimport { selectRouteParam } from '../router/router.selectors';\nimport { crudFeature, NamedItem } from './crud.reducer';\nimport { of } from 'rxjs';\nimport { SharedActions } from '../shared/shared.actions';\nimport { Location } from '@angular/common';\nimport { GridActions } from '../grid/grid.actions';\nimport { SnackService } from '../../lib/snack.service';\n\n@Injectable()\nexport class CrudEffects {\n confirmation = inject(ConfirmationService);\n private snack = inject(SnackService);\n private store = inject(Store);\n private actions$ = inject(Actions);\n private client = inject(HttpClient);\n private location = inject(Location);\n\n load$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(CrudActions.load),\n concatLatestFrom(({ name }) =>\n this.store.select(selectParamName(name))\n ),\n concatLatestFrom(([_, param]) => [\n this.store.select(crudFeature.selectUrlPrefix),\n this.store.select(selectRouteParam(param)),\n ]),\n concatMap(([[{ type, name }], prefix, id]) =>\n id ? this.client.post<any>(`${prefix}/${name}/get`, id, {\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n }).pipe(\n map(value => CrudActions.loadSuccess({ name, value })),\n catchError(error => of(SharedActions.badError({ source: type, error }))))\n : of(CrudActions.loadSuccess({ name, value: undefined }))\n ));\n });\n\n loadAll$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(CrudActions.loadAll),\n concatLatestFrom(() => [\n this.store.select(crudFeature.selectUrlPrefix)\n ]),\n concatMap(([{ type, name }, prefix]) =>\n this.client.get<NamedItem[]>(`${prefix}/${name}/all`).pipe(\n map(all => CrudActions.loadAllSuccess({ name, all })),\n catchError(error => of(SharedActions.badError({ source: type, error }))))\n ));\n });\n\n save$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(CrudActions.save),\n concatLatestFrom(() => [\n this.store.select(crudFeature.selectUrlPrefix)\n ]),\n mergeMap(([{ type, name, value, stay, id }, prefix]) =>\n (value.id\n ? this.client.put(`${prefix}/${name}`, { id: id ?? value.id, value })\n : this.client.post(`${prefix}/${name}`, value))\n .pipe(\n map(value => CrudActions.saveSuccess({ name, value, stay })),\n catchError(error => of(SharedActions.badError({ source: type, error }))))\n )\n );\n });\n\n saveSuccess$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(CrudActions.saveSuccess),\n tap(() => this.snack.info('Saved!')),\n filter(({ stay }) => !stay),\n map(() => SharedActions.back())\n );\n });\n\n delete$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(CrudActions.delete),\n concatLatestFrom(() => [\n this.store.select(crudFeature.selectUrlPrefix)\n ]),\n concatMap(([{ type, name, value }, prefix]) => {\n let nameStr = value.name ?? `the ${name.toLowerCase()}`;\n return this.confirmation.confirm({\n message: `Are you sure you want to delete ${nameStr}?`,\n title: 'Delete'\n }).pipe(\n filter(confirmed => confirmed),\n mergeMap(() => this.client.post(`${prefix}/${name}/delete`, value.id, {\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n }).pipe(\n map(() => GridActions.refresh()),\n tap(() => this.snack.info('Deleted!')),\n catchError(error => of(SharedActions.badError({ source: type, error })))\n ))\n );\n })\n );\n });\n\n\n constructor() { }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { provideState } from '@ngrx/store';\nimport { crudFeature } from './crud.reducer';\nimport { provideEffects } from '@ngrx/effects';\nimport { CrudEffects } from './crud.effects';\n\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule\n ],\n providers: [\n provideState(crudFeature),\n provideEffects(CrudEffects) \n ]\n})\nexport class CrudModule { }\n","import { inject, Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType, OnInitEffects } from '@ngrx/effects';\nimport { catchError, map, mergeMap, startWith, tap } from 'rxjs/operators';\nimport { SharedActions } from './shared.actions';\nimport { Router } from '@angular/router';\nimport { Action, Store } from '@ngrx/store';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { Location } from '@angular/common';\nimport { MediaMatcher } from '@angular/cdk/layout';\n\n@Injectable()\nexport class SharedEffects implements OnInitEffects {\n private media = inject(MediaMatcher);\n private mobileQuery = this.media.matchMedia('(max-width: 768px)');\n private location = inject(Location);\n private store = inject(Store);\n private actions$ = inject(Actions);\n \n init$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(SharedActions.init),\n mergeMap(() => \n new Observable<boolean>(observer =>this.mobileQuery\n .addEventListener('change', () => observer.next(this.mobileQuery.matches)))),\n startWith(this.mobileQuery.matches),\n map(m => SharedActions.setMobile({ isMobile: m }))\n );\n });\n\n initBuild$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(SharedActions.init),\n mergeMap(() => this.http.get<string>('/build.txt').pipe(\n map(build => SharedActions.initSuccess({ build })),\n catchError(error => of(SharedActions.transientError({ source: 'init', error }))))\n ));\n });\n badError$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(SharedActions.badError),\n tap(({ error }) => {\n switch (error.status) {\n case 401:\n this.store.dispatch(SharedActions.login());\n break;\n case 404:\n this.router.navigate(['/', 'error', 'not-found']);\n break;\n case 403:\n this.router.navigate(['/', 'error', 'access-denied']);\n break;\n default:\n this.router.navigate(['/', 'error']);\n break;\n }\n }))\n }, { dispatch: false });\n\n accessDenied$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(SharedActions.accessDenied),\n tap(() => this.router.navigate(['/', 'error', 'access-denied']))\n );\n }, { dispatch: false });\n\n back$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(SharedActions.back),\n map(() => this.location.back())\n );\n }, { dispatch: false });\n\n navigate$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(SharedActions.navigate),\n tap(({ url, replaceUrl }) => this.router.navigateByUrl(url, { replaceUrl }))\n );\n }, { dispatch: false });\n\n constructor(\n private http: HttpClient,\n private router: Router) { }\n\n ngrxOnInitEffects(): Action {\n return SharedActions.init();\n }\n}\n","import { createFeature, createReducer, on } from '@ngrx/store';\nimport { SharedActions } from './shared.actions';\n\nexport const sharedFeatureKey = 'shared';\n\nexport interface State {\n loading: number;\n build: string;\n isMobile: boolean;\n}\n\nexport const initialState: State = {\n isMobile: false,\n loading: 0,\n build: ''\n};\n\nexport const reducer = createReducer(\n initialState,\n on(SharedActions.setMobile, (state, { isMobile }) => ({ ...state, isMobile })),\n on(SharedActions.initSuccess, (state, { build }) => ({ ...state, build })),\n on(SharedActions.startRequest, state => ({ ...state, loading: state.loading + 1 })),\n on(SharedActions.endRequest, state => ({ ...state, loading: state.loading - 1 })),\n);\n\nexport const sharedFeature = createFeature({\n name: sharedFeatureKey,\n reducer,\n});\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { provideState, StoreModule } from '@ngrx/store';\nimport { SharedEffects } from './shared.effects';\nimport { sharedFeature } from './shared.reducer';\nimport { provideEffects } from '@ngrx/effects';\n\n\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule\n ],\n providers: [\n provideState(sharedFeature),\n provideEffects([SharedEffects])\n ]\n})\nexport class SharedModule { }\n","import { createSelector } from \"@ngrx/store\";\nimport { selectDataParam } from \"../router/router.selectors\";\n\nexport const selectTitle = createSelector(\n selectDataParam('title'),\n selectDataParam('hideTitle'),\n (title, hideTitle) => hideTitle ? undefined : title\n)","import { Data, Params, RouterStateSnapshot } from \"@angular/router\";\nimport { BaseRouterStoreState, RouterStateSerializer } from \"@ngrx/router-store\";\n\nexport interface RouterState extends BaseRouterStoreState {\n params: Params;\n queryParams: Params;\n data: Data;\n}\n\nexport class StoreRouteSerializer implements RouterStateSerializer<RouterState> {\n serialize(routerState: RouterStateSnapshot): RouterState {\n let route = routerState.root;\n let allData: Data = {};\n let allParams: any = {};\n allData = { ...allData, ...route.data };\n allParams = { ...allParams, ...route.params };\n while (route.firstChild) {\n route = route.firstChild;\n allData = { ...allData, ...route.data };\n allParams = { ...allParams, ...route.params };\n }\n\n const {\n url,\n root: { queryParams },\n } = routerState;\n\n return { url, params: allParams, queryParams, data: allData };\n }\n}","import { Directive, EventEmitter, inject, Injector } from \"@angular/core\";\nimport { ControlContainer, ControlValueAccessor, FormControl, FormControlDirective, FormControlName, FormGroup, NG_VALUE_ACCESSOR, NgControl, NgModel } from \"@angular/forms\";\nimport { Subscription } from \"rxjs\";\n\n\n@Directive({\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: HostControlDirective,\n },\n ],\n})\nexport class HostControlDirective implements ControlValueAccessor {\n setValue = new EventEmitter<any>();\n control!: FormControl;\n private injector = inject(Injector);\n private subscription = new Subscription();\n\n ngOnInit() {\n const ngControl = this.injector.get(NgControl, null, { self: true, optional: true });\n\n if (ngControl instanceof NgModel) {\n this.control = ngControl.control;\n this.subscription.add(ngControl.control.valueChanges.subscribe((value) => {\n if (ngControl.model !== value || ngControl.viewModel !== value) {\n ngControl.viewToModelUpdate(value);\n }\n }));\n\n } else if (ngControl instanceof FormControlDirective) {\n this.control = ngControl.control;\n } else if (ngControl instanceof FormControlName) {\n const container = this.injector.get(ControlContainer).control as FormGroup;\n if (ngControl.name)\n this.control = container.controls[ngControl.name] as FormControl;\n }\n this.control ??= new FormControl();\n this.subscription.add(this.control.valueChanges.subscribe((value) => {\n this.setValue.emit(value);\n }));\n this.setValue.emit(this.control.value);\n }\n\n writeValue() { }\n registerOnChange() { }\n registerOnTouched() { }\n\n ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n}\n\n\n","import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms';\n\nexport function markAllControlsTouched(control: AbstractControl | null): void {\n if (!control) return;\n\n if (control instanceof FormGroup) {\n Object.values(control.controls).forEach(ctrl => markAllControlsTouched(ctrl));\n } else if (control instanceof FormArray) {\n control.controls.forEach(ctrl => markAllControlsTouched(ctrl));\n } else if (control instanceof FormControl) {\n control.markAsTouched({ onlySelf: true });\n }\n}","/*\n * Public API Surface of the library\n */\n\nexport * from './lib/snack.service';\nexport * from './lib/loading.interceptor';\nexport * from './lib/confirmation.service';\nexport * from './lib/confirmation-dialog/confirmation-dialog.component';\nexport * from './lib/smart-select/smart-select.component';\nexport * from './lib/smart-select/display-presets';\nexport * from './lib/detail-actions/detail-actions.component';\nexport * from './lib/email/email.component';\nexport * from './lib/grid/grid.component';\nexport * from './lib/grid/grid-config';\nexport * from './state/router/router.module';\nexport * from './state/router/router.actions';\nexport * from './state/router/router.selectors';\nexport * from './state/grid/grid.module';\nexport * from './state/grid/grid.actions';\nexport * from './state/grid/models';\nexport { gridFeature } from './state/grid/grid.reducer';\nexport type { GridData, GenericGridData } from './state/grid/grid.reducer';\nexport * from './state/grid/grid.selectors';\nexport * from './state/crud/crud.module';\nexport * from './state/crud/crud.actions';\nexport { crudFeature } from './state/crud/crud.reducer';\nexport * from './state/crud/crud.selectors'; \nexport * from './state/shared/shared.module';\nexport * from './state/shared/shared.actions';\nexport { sharedFeature } from './state/shared/shared.reducer';\nexport * from './state/shared/shared.selectors';\nexport * from './state/router/store-route-serializer';\nexport { HostControlDirective } from './lib/host-control-directive.directive';\nexport * from './lib/grid/action-event';\nexport * from './lib/shared/forms.utility';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i4","i6","i2","i3","initialState","reducer","i5","i7","i8","map","mergeMap","filter","tap"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAMa,YAAY,CAAA;AACvB,IAAA,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;AAC9B,IAAA,IAAI,CAAC,OAAe,EAAE,SAAiB,SAAS,EAAE,WAAmB,IAAI,EAAA;AACvE,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC;IACnD;wGAJW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA;;4FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACHM,MAAM,aAAa,GAAG,iBAAiB,CAAC;AAC7C,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,MAAM,EAAE;QACN,YAAY,EAAE,KAAK,EAAyB;QAC5C,MAAM,EAAE,UAAU,EAAE;QACpB,MAAM,EAAE,UAAU,EAAE;QACpB,cAAc,EAAE,KAAK,EAAqB;QAC1C,MAAM,EAAE,UAAU,EAAE;QACpB,eAAe,EAAE,UAAU,EAAE;QAC7B,aAAa,EAAE,UAAU,EAAE;QAC3B,iBAAiB,EAAE,KAAK,EAAkC;QAC1D,WAAW,EAAE,KAAK,EAAkC;QACpD,UAAU,EAAE,KAAK,EAAyC;QAC1D,eAAe,EAAE,UAAU,EAAE;QAC7B,OAAO,EAAE,UAAU,EAAE;AACtB;AACF,CAAA;;MCZY,kBAAkB,GAAsB,CAAC,GAAG,EAAE,IAAI,KAAI;AACjE,IAAA,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACzB,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;AAC5C,IAAA,IAAI;QACF,OAAO,IAAI,CAAC,GAAG;AACZ,aAAA,IAAI,CACH,QAAQ,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAC3D;IACL;IAAE,OAAO,GAAG,EAAE;AACZ,QAAA,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC;QACzB,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;AAC1C,QAAA,MAAM,GAAG;IACX;AACF;;MCAa,2BAA2B,CAAA;AACtC,IAAA,IAAI,GAAqB,MAAM,CAAC,eAAe,CAAC;AAChD,IAAA,SAAS,GAAG,MAAM,EAAC,YAAyC,EAAC;AAE7D,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC;AACrB,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,KAAK,EAAE;aACR,EAAE;AACD,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,OAAO,EAAE,KAAK;AACf,aAAA,CAAC;IACJ;AACA,IAAA,WAAW,CAAC,MAAkB,EAAA;QAC5B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IACpC;wGAlBW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBxC,yoBAgBqB,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDFP,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAKtF,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,OAAA,EACxB,CAAC,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,CAAC,EAAA,eAAA,EAG/E,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,yoBAAA,EAAA;;;MERtC,mBAAmB,CAAA;AACtB,IAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;AAClC,IAAA,OAAO,CAAC,MAAwB,EAAA;QAC9B,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;AACtD,YAAA,IAAI,EAAE;AACP,SAAA,CAAC;AACF,QAAA,OAAO,GAAG,CAAC,WAAW,EAAE;IAC1B;wGAPW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MC0BY,oBAAoB,CAAA;AACrB,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACf,IAAA,KAAK;AACN,IAAA,IAAI;IACvB,UAAU,GAAG,EAAE;IACf,UAAU,GAAG,KAAK,CAAC,CAAC,CAAO,KAAK,CAAC,EAAE,IAAI,IAAI,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAI,KAAK,EAAE,SAAS,EAAA,CAAA,GAAA,CAAlB,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA,CAAA,CAAC;AACpE,IAAA,KAAK,GAAG,KAAK,CAAqB,gBAAgB,yCAAI,KAAK,EAAE,MAAM,EAAA,CAAA,GAAA,CAAf,EAAE,KAAK,EAAE,MAAM,EAAE,GAAC;AACtE,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,yCAAuB,KAAK,EAAE,OAAO,EAAA,CAAA,GAAA,CAAhB,EAAE,KAAK,EAAE,OAAO,EAAE,GAAC;AAC/D,IAAA,QAAQ,GAAG,KAAK,CAA2B,EAAE,4CAAI,KAAK,EAAE,SAAS,EAAA,CAAA,GAAA,CAAlB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAC;IACpE,QAAQ,GAAG,KAAK,CAAC,KAAK,4CAAI,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAA,CAAA,GAAA,CAA/C,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA,CAAA,CAAC;IAC1E,IAAI,GAAG,KAAK,CAAC,KAAK,wCAAI,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAA,CAAA,GAAA,CAA3C,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA,CAAA,CAAC;IAClE,QAAQ,GAAG,MAAM,EAAQ;IACzB,MAAM,GAAG,MAAM,EAAU;IACzB,SAAS,GAAG,KAAK,CAAC,KAAK,6CAAI,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAAhD,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA,CAAA,CAAC;AAC5E,IAAA,OAAO,GAAG,IAAI,WAAW,EAAE;AAC3B,IAAA,YAAY;IACZ,MAAM,GAAG,MAAM,EAAsB;AACrC,IAAA,OAAO,GAAG,MAAM,CAAqB,SAAS,mDAAC;AAC/C,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;QACtB,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE;AAC1C,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC7B,IAAI,GAAG,GAAG,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM;AACtE,eAAA,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,EAAE,EAAE,KAAK,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO;AAC5H,QAAA,OAAO,GAAG;AACd,IAAA,CAAC,qDAAC;AAEF,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAI,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,EAAA,CAAA,GAAA,CAAxB,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,EAAE,GAAC;IACpD,IAA4C,OAAO,CAAC,KAAc,EAAA;AAC9D,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;IAC5B;AAEA,IAAA,QAAQ,GAAG,CAAC,CAAM,KAAI,EAAG,CAAC;AAE1B,IAAA,SAAS,GAAG,MAAK,EAAG,CAAC;AAErB,IAAA,UAAU,CAAC,GAAQ,EAAA;AACf,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC7B,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC;IACrC;AACA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACtB;AACA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACvB;AACA,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACjC,QAAA,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;IAC/D;AAEA,IAAA,aAAa,CAAC,CAAM,EAAA;AAChB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;IACxC;AACA,IAAA,oBAAoB,CAAC,CAA+B,EAAA;QAChD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;IACxC;AAEA,IAAA,QAAQ,CAAC,EAAO,EAAE,GAAQ,EAAE,OAAgB,IAAI,EAAA;AAC5C,QAAA,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE;AACnB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG;YACzB;AACJ,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACrD,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB;IACA,SAAS,GAAA;QACL,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK;AACnD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,GAAG,WAAW,CAAC;AACxH,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;IACjC;AAEA,IAAA,OAAO,CAAC,CAAM,EAAA;AACV,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC/B;AAEA,IAAA,OAAO,CAAC,CAAM,EAAA;AACV,QAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;QAC/B,IAAI,CAAC,SAAS,EAAE;IACpB;IACA,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM;AAAE,YAAA,OAAO,IAAI;QAE3C,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,cAAc;QACzC;AACA,QAAA,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;AACjD,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5C;IACJ;AACA,IAAA,WAAA,GAAA;QACI,MAAM,CAAC,MAAK;YACR,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;iBAC3B;AACD,gBAAA,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;AAC9B,gBAAA,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YACjC;AACJ,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC7B,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;AAC9B,YAAA,IAAI,KAAK,IAAI,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,KAAK,CAAC;AAC3C,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC;AAC3C,QAAA,CAAC,CAAC;IACN;IACA,QAAQ,GAAA;QACJ,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACpF,QAAA,IAAI,SAAS,EAAE,OAAO,EAAE;AACpB,YAAA,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,OAAsB;YACpD,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAG;gBAC1C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,YAAa,CAAC,MAAM,CAAC;AACrD,YAAA,CAAC,CAAC;QACN;IACJ;IACA,cAAc,CAAC,EAAO,EAAE,OAAsB,EAAA;AAC1C,QAAA,IAAI,GAAG,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC;AACzC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5C;AAEA,IAAA,KAAK,CAAC,CAAa,EAAA;QACf,CAAC,CAAC,eAAe,EAAE;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IACxB;wGA3HS,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EA2BT,gBAAgB,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,SAAA,EAnCzB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE;AAChB;AACJ,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChCL,8iCAsBiB,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDHH,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,EAAE,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,EAAA,qBAAA,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,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,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,EAC/E,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAc5B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAlBhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,eAAA,EACT,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,qBAAqB,EAAE,cAAc,EAAE,mBAAmB,EAAE,aAAa;wBAC/E,gBAAgB,EAAE,eAAe,CAAC,EAAA,IAAA,EAGhC;AACF,wBAAA,QAAQ,EAAE;qBACb,EAAA,SAAA,EACU;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAA;AACd;AACJ,qBAAA,EAAA,QAAA,EAAA,8iCAAA,EAAA;;sBAIA,SAAS;uBAAC,OAAO;;sBACjB,SAAS;uBAAC,MAAM;;sBAwBhB,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;;ME7D7B,cAAc,CAAA;IAChB,OAAO,MAAM,GAAG,CAAC,CAAO,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAA,EAAA,EAAK,CAAC,EAAE,EAAE,CAAA,CAAA,CAAG,GAAG,EAAE;IAC7D,OAAO,IAAI,GAAG,CAAC,CAAO,KAAK,CAAC,GAAG,CAAA,EAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE;;;MCY9C,sBAAsB,CAAA;IAC4B,SAAS,GAAG,KAAK;AACpE,IAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;AACnC,IAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC7B,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAClC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAC5D;IACH;wGARW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,YAAA,EAAA,WAAA,EACb,gBAAgB,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECftC,8VAKc,yDDIF,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,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,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAK/C,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;+BACE,kBAAkB,EAAA,OAAA,EACnB,CAAC,gBAAgB,EAAE,aAAa,EAAE,eAAe,CAAC,EAAA,eAAA,EAG1C,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8VAAA,EAAA;;sBAG9C,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,EAAE;;sBAC1D;;;MEsBU,cAAc,CAAA;IACa,KAAK,GAAG,KAAK;AACxB,IAAA,iBAAiB;AAClC,IAAA,KAAK,GAAG,IAAI,YAAY,EAAQ;IACjC,KAAK,GAAG,OAAO;AACd,IAAA,MAAM,GAAG,IAAI,YAAY,EAAW;IAC9C,QAAQ,GAAG,KAAK,CAAC,KAAK,4CAAI,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAA,CAAA,GAAA,CAA/C,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA,CAAA,CAAC;IAC1E,SAAS,GAAG,KAAK,CAAsB,KAAK,6CAAI,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,EAAA,CAAA,GAAA,CAAhD,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA,CAAA,CAAC;AACjG,IAAA,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;AACtE,IAAA,QAAQ,GAAG,CAAC,CAAM,KAAI,EAAG,CAAC;AAC1B,IAAA,OAAO,GAAG,CAAC,CAAM,KAAI,EAAG,CAAC;AACzB,IAAA,kBAAkB,GAAG,MAAK,EAAG,CAAC;AAC9B,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;IAC5B;AACA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AACA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;IACnB;AACA,IAAA,gBAAgB,CAAE,UAAmB,EAAA;QACnC;AACE,cAAE,IAAI,CAAC,OAAO,CAAC,OAAO;AACtB,cAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;IAC3B;AACA,IAAA,QAAQ,CAAC,CAAkB,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;IAC5B;AACA,IAAA,yBAAyB,CAAE,EAAc,EAAA;AACvC,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;IAC9B;AACA,IAAA,WAAA,GAAA;QAEE,IAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACjD,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,kBAAkB,EAAE;AAC3B,QAAA,CAAC,CAAC;QAEF,IAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QAChD,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AACzB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAK;AACnC,YAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE;AAC/B,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;YAC9B,IAAI,CAAC,KAAK,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AAC7C,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;YACjB;AACA,YAAA,OAAO,IAAI,CAAC,iBAAkB,CAAC,KAAK,CAAC,CAAC,IAAI,CACxC,GAAG,CAAC,MAAM,IAAG;AACX,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;gBACxB,OAAO,MAAM,KAAK,QAAQ,GAAG,IAAI,GAAG,QAAQ,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;AACrF,YAAA,CAAC,CAAC,EACF,KAAK,EAAE,CACR;AACH,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC7B,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YAC9B;iBAAO;AACL,gBAAA,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YAChC;AACF,QAAA,CAAC,CAAC;IACJ;wGAnEW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EACN,gBAAgB,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EAdxB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE;AACd,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAC7C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpCH,6rBAgBiB,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDCL,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,kBAAkB,gmBAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,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,EAC9D,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,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAoBnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAvB1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,WACV,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,aAAa;AAC9D,wBAAA,cAAc,EAAE,YAAY,CAAC,mBAGd,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,QAAQ,EAAE;qBACX,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAA;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,oBAAoB,CAAC;AAC7C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,6rBAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA;;sBAGA,KAAK;uBAAC,EAAC,SAAS,EAAE,gBAAgB,EAAC;;sBACnC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;sBACA;;;AExCI,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAC3C,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE;QACN,SAAS,EAAE,UAAU,EAAE;QACvB,eAAe,EAAE,KAAK,EAAmE;QACzF,MAAM,EAAE,KAAK,EAAkD;QAC/D,cAAc,EAAE,KAAK,EAAkD;QACvE,eAAe,EAAE,KAAK,EAA2C;QACjE,aAAa,EAAE,KAAK,EAAiC;QACrD,eAAe,EAAE,KAAK,EAAsB;QAC5C,gBAAgB,EAAE,KAAK,EAAmC;QAC1D,OAAO,EAAE,KAAK,EAA+D;QAC7E,aAAa,EAAE,KAAK,EAAiC;QACrD,qBAAqB,EAAE,UAAU,EAAE;AACpC;AACF,CAAA;;AChBM,MAAM,cAAc,GAAG,MAAM;AAmB7B,MAAMC,cAAY,GAAU;AACjC,IAAA,KAAK,EAAE;CACR;AAEM,MAAMC,SAAO,GAAG,aAAa,CAClCD,cAAY,EACZ,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM;AAC7D,IAAA,GAAG,KAAK;AACR,IAAA,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;AACvF,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM;AAC1D,IAAA,GAAG,KAAK;AACR,IAAA,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;YACrD,OAAO;AACP,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,IAAI,EAAE;CAClB,CAAC,CAAC,CACJ;AAEM,MAAM,WAAW,GAAG,aAAa,CAAC;AACvC,IAAA,IAAI,EAAE,cAAc;aACpBC,SAAO;AACR,CAAA;;IC5CW;AAAZ,CAAA,UAAY,WAAW,EAAA;AACnB,IAAA,WAAA,CAAA,WAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAM;AACN,IAAA,WAAA,CAAA,WAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO;AACX,CAAC,EAHW,WAAW,KAAX,WAAW,GAAA,EAAA,CAAA,CAAA;IA2BX;AAAZ,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY;AACZ,IAAA,cAAA,CAAA,cAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAM;AACN,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY;AAChB,CAAC,EAJW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;IAMd;AAAZ,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY;AACZ,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,cAAA,CAAA,cAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;AACX,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ;AACR,IAAA,cAAA,CAAA,cAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAM;AACN,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY;AAChB,CAAC,EAPW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;IASd;AAAZ,CAAA,UAAY,OAAO,EAAA;AACf,IAAA,OAAA,CAAA,OAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO;AACP,IAAA,OAAA,CAAA,OAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ;AACZ,CAAC,EAHW,OAAO,KAAP,OAAO,GAAA,EAAA,CAAA,CAAA;;MCtCN,YAAY,GAAG,qBAAqB,CAAkC,QAAQ;AAEpF,MAAM,iBAAiB,GAAG,cAAc,CAC3C,YAAY,EACZ,KAAK,IAAI,KAAK,EAAE,KAAK;AAGlB,MAAM,iBAAiB,GAAG,cAAc,CAC3C,iBAAiB,EACjB,KAAK,IAAI,KAAK,EAAE,MAAM;AAGnB,MAAM,gBAAgB,GAAG,CAAC,IAAa,KAAK,cAAc,CAC7D,iBAAiB,EACjB,MAAM,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS;AAGlD,MAAM,SAAS,GAAG,cAAc,CACnC,iBAAiB,EACjB,KAAK,IAAI,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAE;AAGpC,MAAM,mBAAmB,GAAG,cAAc,CAC7C,gBAAgB,CAAC,WAAW,CAAC,EAC7B,SAAS,EACT,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AAGpC,MAAM,iBAAiB,GAAG,cAAc,CAC3C,iBAAiB,EACjB,KAAK,IAAI,KAAK,EAAE,WAAW;AAGxB,MAAM,gBAAgB,GAAG,CAAC,IAAY,KAAK,cAAc,CAC5D,iBAAiB,EACjB,MAAM,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS;AAGxC,MAAM,qBAAqB,GAAG,CAAC,IAAY,KAAK,cAAc,CACjE,gBAAgB,CAAC,IAAI,CAAC,EACtB,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS;AAGrD,MAAM,eAAe,GAAG,CAAC,IAAY,KAAK,cAAc,CAC3D,iBAAiB,EACjB,KAAK,IAAI,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;AAGvB,MAAM,qBAAqB,GAAG,cAAc,CAC/C,iBAAiB,EACjB,KAAK,IAAI,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE;AAGnD,MAAM,iBAAiB,GAAG,CAAC,KAAa,KAAK,cAAc,CAC9D,qBAAqB,EACrB,GAAG,IAAG;IACF,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;IACzB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAChE,CAAC;AAGL,MAAM,iBAAiB,GAAG,CAAC,MAAe,KAAwB;AAC9D,IAAA,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM;AAChD,CAAC;;AC7DM,MAAM,cAAc,GAAG,CAAC,IAAY,KAAK,cAAc,CAC5D,WAAW,CAAC,WAAW,EACvB,CAAC,KAAK,KAA2B,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS;AAG3D,MAAM,eAAe,GAAG,cAAc,CAC3C,gBAAgB,CAAC,MAAM,CAAC,EACxB,CAAC,CAAC,KAAa,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AAE1B,MAAM,cAAc,GAAG,cAAc,CAC1C,gBAAgB,CAAC,MAAM,CAAC,EACxB,CAAC,CAAC,KAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;AAGrB,MAAM,iBAAiB,GAAG,CAAC,IAAY,KAAK,cAAc,CAC/D,gBAAgB,CAAC,IAAI,CAAC,EACtB,CAAC,MAAM,KAA8B,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS;AAG7E,MAAM,iBAAiB,GAAG,cAAc,CAC7C,iBAAiB,CAAC,aAAa,CAAC,EAChC,CAAC,IAAI,CAAC;AAGD,MAAM,gBAAgB,GAAG,CAAC,IAAY,KAAK,cAAc,CAC9D,cAAc,CAAC,IAAI,CAAC,EACpB,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC;AAGnB,MAAM,eAAe,GAAG,cAAc,CAC3C,iBAAiB,EACjB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAe,GAAG,SAAS;AAG3D,MAAM,oBAAoB,GAAG,cAAc,CAChD,eAAe,EACf,CAAC,IAAI,CAAC,EAAE,cAAc,IAAI,KAAK;AAG1B,MAAM,YAAY,GAAG,cAAc,CACxC,eAAe,EACf,gBAAgB,CAAC,SAAS,CAAC,EAC3B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM;AAGtB,MAAM,aAAa,GAAG,cAAc,CACzC,eAAe,EACf,gBAAgB,CAAC,UAAU,CAAC,EAC5B,CAAC,CAAC,EAAE,CAAC,KAAI;IACP,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE;AACpC,IAAA,OAAO,CAAC,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG;AACjD,CAAC;AAGI,MAAM,kBAAkB,GAAG,cAAc,CAC9C,eAAe,EACf,CAAC,IAAI,CAAC,EAAE,YAAY;AAGf,MAAM,YAAY,GAAG,cAAc,CACxC,eAAe,EACf,CAAC,IAAI,CAAC,CAAC,CAAC;AAGH,MAAM,cAAc,GAAG,cAAc,CAC1C,eAAe,EACf,CAAC,IAAI,CAAC,EAAE,gBAAgB;AAInB,MAAM,aAAa,GAAG,CAAC,IAAW,KAAM,cAAc,CAC3D,eAAe,EACf,cAAc,CAAC,IAAI,CAAC,EACpB,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,EAAE,gBAAgB,GAAG,CAAA,KAAA,EAAQ,CAAC,EAAE,gBAAgB,CAAA,CAAE,GAAG,CAAC,EAAE,OAAO;AAIpE,MAAM,gBAAgB,GAAG,cAAc,CAC5C,iBAAiB,CAAC,QAAQ,CAAC,EAC3B,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;AAErC,MAAM,iBAAiB,GAAG,cAAc,CAC7C,eAAe,EACf,cAAc,EACd,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,iBAAiB,CAAC,QAAQ,CAAC,EAC3B,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,MAA0B;IACnF,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,EAAE,QAAQ,EAAE;IACzC,MAAM;IACN,OAAO;IACP,OAAO,EAAE,cAAc,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC;AAC/C,CAAA,CAAC;AAGJ,SAAS,cAAc,CAAC,OAAoC,EAAA;AAC1D,IAAA,IAAI,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAkB;AACxD,IAAA,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;AACxB,QAAA,OAAO,SAAS;IAClB;AACA,IAAA,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;AACxB,QAAA,OAAO,QAAQ,CAAC,CAAC,CAAC;IACpB;IACA,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE;AACrD;;MCpEa,aAAa,CAAA;AACoB,IAAA,OAAO;AACnD,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC;IACjE;AACQ,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACtF,IAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9B,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC7B,IAAA,SAAS,GAAG,IAAI,cAAc,CAAI,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAO,CAAE,CAAC,EAAE,IAAI,CAAC,OAAa,CAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACtG,IAAA,OAAO,GAAG,MAAM,CAA4B,SAAS,mDAAC;IACtD,MAAM,GAAG,MAAM,EAAkB;IACjC,IAAa,MAAM,CAAC,GAA8B,EAAA;AAChD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;IACvB;;AACA,IAAA,KAAK,GAAG,KAAK,CAA+B,SAAS,yCAAI,KAAK,EAAE,MAAM,EAAA,CAAA,GAAA,CAAf,EAAE,KAAK,EAAE,MAAM,EAAE,GAAC;IACzE,UAAU,GAAG,MAAM,EAAwB;IAC3C,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC;AAC7C,IAAA,IAAI;IACJ,KAAK,GAAG,KAAK,CAAC,KAAK,yCAAI,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA5C,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA,CAAA,CAAC;AACpE,IAAA,YAAY,GAAG,MAAM,CAAC,KAAK,wDAAC;IAC5B,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC;AACnD,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,oDAAC;AAClD,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,oDAAC;AAClD,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AAChC,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;AAC3C,QAAA,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AAC7B,YAAA,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;QACrB;AACA,QAAA,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AACvB,YAAA,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;QACvB;AACA,QAAA,OAAO,GAAG;AACZ,IAAA,CAAC,6DAAC;AACF,IAAA,KAAK,GAAG,KAAK,CAAiC,SAAS,yCAAI,KAAK,EAAE,MAAM,EAAA,CAAA,GAAA,CAAf,EAAE,KAAK,EAAE,MAAM,EAAE,GAAC;AAC3E,IAAA,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CACrD,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EACtB,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACxB,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;AACvB,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE;QACjC,OAAO,IAAI,IAAI,SAAS;AAC1B,IAAA,CAAC,qDAAC;AACF,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE;QAC/B,OAAO,QAAQ,EAAE,IAAI,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ;AAC7D,IAAA,CAAC,sDAAC;IACF,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC;IACnD,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC;IACrD,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC;AACzD,IAAA,cAAc,GAAG,KAAK,CAAqB,SAAS,kDAAI,KAAK,EAAE,UAAU,EAAA,CAAA,GAAA,CAAnB,EAAE,KAAK,EAAE,UAAU,EAAE,GAAC;AAC5E,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,qDAAC;AAC3E,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,IAAI,EAAE,uDAAC;IAC1D,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,kBAAkB,CAAC;AAC5D,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,IAAI,CAAC,sDAAC;AAC/D,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,oDAAC;AAClD,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,IAAI,CAAC,uDAAC;AAC1D,IAAA,cAAc;IACd,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;QACtB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7C;IACA,SAAS,CAAC,CAAoB,EAAE,GAAM,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;QAC5B;;AACE,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;QAC5B,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;AAC7C,YAAA,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;IACrD;IACA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAU,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACrG;AACA,IAAA,UAAU,CAAC,CAAY,EAAA;QACrB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjG;AACA,IAAA,UAAU,CAAC,CAAO,EAAA;QAChB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IACnF;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;QACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;IAC5C;AACA,IAAA,SAAS,CAAC,MAAc,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3D;AACA,IAAA,WAAW,CAAC,KAAoB,EAAA;QAC9B,IAAI,CAAC,SAAS,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;IAC1D;AACA,IAAA,aAAa,CAAC,GAAkB,EAAA;AAC9B,QAAA,IAAI,GAAG,CAAC,OAAO,YAAY,WAAW;YACpC,OAAO,GAAG,CAAC,OAA2B;AACxC,QAAA,OAAO,IAAI;IACb;AACA,IAAA,cAAc,CAAC,GAAkB,EAAA;AAC/B,QAAA,IAAI,GAAG,CAAC,OAAO,YAAY,QAAQ;YACjC,OAAO,GAAG,CAAC,OAAoC;AACjD,QAAA,OAAO,IAAI;IACb;IAEA,OAAO,CAAC,GAAkB,EAAE,GAAM,EAAA;QAChC,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACnC,QAAA,IAAI,IAAI;AACN,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC;AAClB,QAAA,OAAa,GAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IAC7B;AAEA,IAAA,UAAU,CAAC,GAAM,EAAA;QACf,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;AACnD,QAAA,IAAI,CAAC,aAAa;YAChB;AACF,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC;AACjE,QAAA,IAAI,MAAM,EAAE,UAAU,EAAE;YACtB,IAAI,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;AACjC,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;AACtB,gBAAA,IAAI,GAAG,CAAC,IAAI,CAAC;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QACxD;AAAO,aAAA,IAAI,MAAM,EAAE,MAAM,EAAE;AACzB,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;QACpB;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC;IAClD;AAEA,IAAA,QAAQ,CAAC,CAAa,EAAE,GAAQ,EAAE,MAAuB,EAAA;QACvD,CAAC,CAAC,eAAe,EAAE;QACnB,IAAI,MAAM,CAAC,MAAM;AACf,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;IAChD;AAEA,IAAA,QAAQ,CAAC,GAAkB,EAAA;QACzB,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,KAAK,IAAI,MAAM,EAAE;IAC7C;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;AACpD,QAAA,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA,EAAA,CAAI,EAAE;IACtC;IAEA,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC;AAErD,IAAA,WAAA,GAAA;QACE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,EAAE,IAAI,OAAO,CAAC,IAAI,GAAG,MAAM,GAAG,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACnE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AACxC,QAAA,CAAC,CAAC;QAEF,IAAI,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AACxD,QAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,MAAK;AAClC,YAAA,IAAI,SAAS,GAAG,iBAAiB,EAAE,EAAE,MAAM;YAC3C,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK;YACnC,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,GAAG,SAAS,EAAE,QAAQ,CAAC,MAAM;AAC3F,QAAA,CAAC,0DAAC;IACJ;AAEA,IAAA,OAAO,CAAC,MAAoB,EAAE,GAAM,EAAE,MAAqB,EAAA;QACzD,MAAM,CAAC,eAAe,EAAE;QACxB,IAAI,MAAM,CAAC,MAAM;AACf,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;IACtB;wGAzKW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACM,UAAU,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5C1C,+vKA4GC,EAAA,MAAA,EAAA,CAAA,4IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDxEW,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,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,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,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,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,0iBACzE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,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,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,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,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAK1C,aAAa,EAAA,UAAA,EAAA,CAAA;kBATzB,SAAS;+BACE,QAAQ,EAAA,OAAA,EACT,CAAC,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe;AACzE,wBAAA,iBAAiB,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY;wBAChE,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,EAAA,eAAA,EAGvD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+vKAAA,EAAA,MAAA,EAAA,CAAA,4IAAA,CAAA,EAAA;;sBAG9C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;sBAWzC;;;AErDI,MAAM,aAAa,GAAG,iBAAiB,CAAC;AAC3C,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,MAAM,EAAE;QACJ,kBAAkB,EAAE,KAAK;AAC5B;AACJ,CAAA;;MCGY,aAAa,CAAA;AACd,IAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACrB,IAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;AAC1B,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/B,IAAI,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACxC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,EACpC,gBAAgB,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAC5D,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC,KAAI;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,EAAC,GAAG,MAAM,EAAC,EAAC,WAAW,CAAC,EAAE,CAAC;IACrF,CAAC,CAAC,CACL,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;wGAVd,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAb,aAAa,EAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;;MCOY,iBAAiB,CAAA;wGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAN1B,YAAY,CAAA,EAAA,CAAA;AAMH,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,SAAA,EAJjB;YACT,cAAc,CAAC,aAAa;AAC7B,SAAA,EAAA,OAAA,EAAA,CAJC,YAAY,CAAA,EAAA,CAAA;;4FAMH,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAT7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,cAAc,CAAC,aAAa;AAC7B;AACF,iBAAA;;;MCKY,WAAW,CAAA;AACd,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAC5B,IAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAC3B,IAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACrB,IAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;AAC1B,IAAA,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAElD,IAAA,aAAa,GAAG,YAAY,CAAC,MAAK;AAChC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,EAChC,gBAAgB,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAC5DC,KAAG,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,GAAG,CAAC,KAAK,WAAW,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CACvI;AACH,IAAA,CAAC,CAAC;AAEF,IAAA,WAAW,GAAG,YAAY,CAAC,MAAK;AAC9B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,EAC9B,gBAAgB,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAC5DA,KAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,KAAK,WAAW,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CACpJ;AACH,IAAA,CAAC,CAAC;AAEF,IAAA,cAAc,GAAG,YAAY,CAAC,MAAK;AACjC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,EACjC,gBAAgB,CAAC,CAAC,IAAI;AACpB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;AAC5B,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;AAClD,SAAA,CAAC,EACFC,UAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,KAAI;AAC1D,YAAA,IAAI,GAAG,GAAG,CAAA,EAAG,eAAe,CAAA,MAAA,EAAS,OAAO,CAAC,MAAM,EAAE,IAAI,CAAA,MAAA,EAAS,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAA,SAAA,EAAY,OAAO,CAAC,MAAM,IAAI,EAAE,CAAA,UAAA,EAAa,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,GAAG,MAAM,GAAG,KAAK,CAAA,QAAA,EAAW,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAA,aAAA,EAAgB,MAAM,IAAI,EAAE,EAAE;YAC5R,OAAO,MAAM,IAAI;AACf,kBAAE;kBACA,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC,CACH;AACH,IAAA,CAAC,CAAC;AAEF,IAAA,YAAY,GAAG,YAAY,CAAC,MAAK;AAC/B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,iBAAiB,CAAC,EACzB,gBAAgB,CAAC,MAAM;AACrB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;AAC/B,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC;AACvC,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB;AACpC,SAAA,CAAC,EACFC,QAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EACxEF,KAAG,CAAC,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC,CACjC;AACH,IAAA,CAAC,CAAC;AAEF,IAAA,aAAa,GAAG,YAAY,CAAC,MAAK;AAChC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,EAChC,gBAAgB,CAAC,MAAM;AACrB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC;AACpC,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB;SACrC,CAAC,EACF,YAAY,CAAC,GAAG,CAAC,EACjBA,KAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,WAAW,CAAC,aAAa,CAAC;AAC3D,YAAA,OAAO,EAAE;AACP,gBAAA,GAAG,GAAG,EAAE,OAAO,EAAE;AACf,sBAAE,YAAY,CAAC,MAAM,EAAE,MAAM;AAC7B,sBAAE;AACL;SACF,CAAC,CAAC,CACJ;AACH,IAAA,CAAC,CAAC;AAEF,IAAA,KAAK,GAAG,YAAY,CAAC,MAAK;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EACxBC,UAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,KAAI;AAEvC,YAAA,IAAI,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS;YAElE,IAAI,CAAC,GAAG,EAAE;AACR,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC;AACpF,gBAAA,OAAO,EAAE;YACX;AAEA,YAAA,IAAI,GAAG,GAAG,IAAI,oBAAoB,EAAE;YACpC,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;YAE3B,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS;AACrF,YAAA,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC;oBAC7B,UAAU;AACV,oBAAA,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM;AAC1B,iBAAA,CAAC,CAAC;QACL,CAAC,CAAC,CACH;AACH,IAAA,CAAC,CAAC;AAEF,IAAA,SAAS,GAAG,YAAY,CAAC,MAAK;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EACxB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK;YAC7B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;AACtC,SAAA,CAAC,EACFD,KAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,WAAW,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAC5F;AACH,IAAA,CAAC,CAAC;AAEF,IAAA,aAAa,GAAG,YAAY,CAAC,MAAK;AAChC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,EAChC,gBAAgB,CAAC,MAAM;AACrB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB;AACpC,SAAA,CAAC,EACFE,QAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EACpC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,KAAI;YAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAW,OAAQ,EAAE,OAAO,IAAI,UAAU,CAAC,CAAC,IAAI,CACrEF,KAAG,CAAC,IAAI,IAAI,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,EACvD,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7E,CAAC,CAAC,CACH;AACH,IAAA,CAAC,CAAC;AAEF,IAAA,WAAW,GAAG,YAAY,CAAC,MAAK;AAC9B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,EAC9B,gBAAgB,CAAC,MAAM;AACrB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC;AACjC,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB;SACpC,CAAC,EACF,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK;YAC7B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAK,CAAC,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAK,CAAC;SAAE,CAAC,EAC9CE,QAAM,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAC5BD,UAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,KACtD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;AACxB,YAAA,KAAK,EAAE,QAAQ,EAAE,OAAO,EACtB,CAAA,gCAAA,EAAmC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,UAAU,CAAA,OAAA;AAC3E,SAAA,CAAC,CAAC,IAAI,CACLC,QAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EACd,SAAS,CAAC,CAAC,IAAG;YACZ,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;AACrE,YAAA,IAAI,IAAI,GAAG;AACT,gBAAA,GAAG,OAAO;AACV,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG;oBACrB,KAAK,EAAE,WAAW,CAAC,GAAG;AACtB,oBAAA,MAAM,EAAE,CAAC;4BACP,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE;yBAChF;AACF,iBAAA,GAAG,OAAO,CAAC;aACb;YACD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CACrDF,KAAG,CAAC,MAAM,WAAW,CAAC,iBAAiB,EAAE,CAAC,EAC1C,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7E,QAAA,CAAC,CACA,CACF,CACF,CACF;AACH,IAAA,CAAC,CAAC;AAEF,IAAA,QAAQ,GAAG,YAAY,CAAC,MAAK;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAC3B,gBAAgB,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EACzDA,KAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAK,EAAE,CAAC,CAAC,CACtD;AACH,IAAA,CAAC,CAAC;AAEF,IAAA,kBAAkB,GAAG,YAAY,CAAC,MAAK;AACrC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,EACrCG,KAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EACtCH,KAAG,CAAC,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC,CACjC;AACH,IAAA,CAAC,CAAC;AAEF,IAAA,WAAA,GAAA,EAAgB;wGAlLL,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAX,WAAW,EAAA,CAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;AAuLD,SAAS,YAAY,CAAC,MAAc,EAAE,MAAiC,EAAA;AACrE,IAAA,MAAM,cAAc,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;IAC1H,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CACtC,CAAC,GAAG,EAAE,GAAG,KAAI;QACX,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7D,QAAA,OAAO,GAAG;IACZ,CAAC,EAAE,EAA2C,CAC/C;IACD,MAAM,YAAY,GAAkB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,MAAM;QACxF,KAAK,EAAE,WAAW,CAAC,GAAG;AACtB,QAAA,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAA+B,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE;AAC5F,KAAA,CAAC,CAAC;IACH,OAAO,YAAY,CAAC,MAAM,KAAK,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE;AACtG;;MCpMa,UAAU,CAAA;wGAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAPnB,YAAY,CAAA,EAAA,CAAA;AAOH,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,EAAA,SAAA,EALV;YACT,YAAY,CAAC,WAAW,CAAC;AACzB,YAAA,cAAc,CAAC,CAAC,WAAW,CAAC;AAC7B,SAAA,EAAA,OAAA,EAAA,CALC,YAAY,CAAA,EAAA,CAAA;;4FAOH,UAAU,EAAA,UAAA,EAAA,CAAA;kBAVtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,YAAY,CAAC,WAAW,CAAC;AACzB,wBAAA,cAAc,CAAC,CAAC,WAAW,CAAC;AAC7B;AACF,iBAAA;;;ACfM,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAC3C,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE;QACN,UAAU,EAAE,KAAK,EAAoB;QACrC,kBAAkB,EAAE,KAAK,EAAsC;QAC/D,WAAW,EAAE,KAAK,EAAmC;QACrD,QAAQ,EAAE,KAAK,EAAgC;QAC/C,MAAM,EAAE,KAAK,EAAwD;QACrE,cAAc,EAAE,KAAK,EAA+C;QACpE,aAAa,EAAE,KAAK,EAAoB;QACxC,MAAM,EAAE,KAAK,EAAoB;QACjC,cAAc,EAAE,KAAK;AACtB;AACF,CAAA;;ACRM,MAAM,cAAc,GAAG,MAAM;AAa7B,MAAML,cAAY,GAAU;AACjC,IAAA,SAAS,EAAE,MAAM;AACjB,IAAA,GAAG,EAAE;CACN;AAEM,MAAMC,SAAO,GAAG,aAAa,CAClCD,cAAY,EACZ,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,EAC1J,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EACnI,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EACrI,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EACrI,EAAE,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CACrI;AAEM,MAAM,WAAW,GAAG,aAAa,CAAC;AACvC,IAAA,IAAI,EAAE,cAAc;aACpBC,SAAO;AACR,CAAA;;ACnCM,MAAM,eAAe,GAAG,CAAC,IAAY,KAAK,cAAc,CAC7D,WAAW,CAAC,SAAS,EACrB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK;AAGlB,MAAM,WAAW,GAAG,CAAC,IAAY,KAAK,cAAc,CACzD,WAAW,CAAC,SAAS,EACrB,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,SAAS;AAGpC,MAAM,SAAS,GAAG,CAAC,IAAY,KAAK,cAAc,CACvD,WAAW,CAAC,SAAS,EACrB,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,SAAS;;MCG5B,WAAW,CAAA;AACtB,IAAA,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAClC,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAC5B,IAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACrB,IAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;AAC1B,IAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAC3B,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEnC,IAAA,KAAK,GAAG,YAAY,CAAC,MAAK;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EACxB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,KACxB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CACzC,EACD,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK;YAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC3C,SAAA,CAAC,EACF,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,KACvC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAM,GAAG,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA,IAAA,CAAM,EAAE,EAAE,EAAE;AACtD,YAAA,OAAO,EAAE;AACP,gBAAA,cAAc,EAAE,kBAAkB;AAClC,gBAAA,QAAQ,EAAE;AACX;AACF,SAAA,CAAC,CAAC,IAAI,CACLI,KAAG,CAAC,KAAK,IAAI,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EACtD,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACxE,cAAE,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAC5D,CAAC;AACN,IAAA,CAAC,CAAC;AAEF,IAAA,QAAQ,GAAG,YAAY,CAAC,MAAK;AAC3B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAC3B,gBAAgB,CAAC,MAAM;YACrB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,eAAe;AAC9C,SAAA,CAAC,EACF,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,KACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAc,CAAA,EAAG,MAAM,IAAI,IAAI,CAAA,IAAA,CAAM,CAAC,CAAC,IAAI,CACxDA,KAAG,CAAC,GAAG,IAAI,WAAW,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EACrD,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAC5E,CAAC;AACN,IAAA,CAAC,CAAC;AAEF,IAAA,KAAK,GAAG,YAAY,CAAC,MAAK;AACxB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EACxB,gBAAgB,CAAC,MAAM;YACrB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,eAAe;SAC9C,CAAC,EACFC,UAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,KACjD,CAAC,KAAK,CAAC;cACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE;AACpE,cAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,EAAG,MAAM,IAAI,IAAI,CAAA,CAAE,EAAE,KAAK,CAAC;aAC7C,IAAI,CACHD,KAAG,CAAC,KAAK,IAAI,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAC5D,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAC9E,CACF;AACH,IAAA,CAAC,CAAC;AAEF,IAAA,YAAY,GAAG,YAAY,CAAC,MAAK;QAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,EAC/BG,KAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EACpCD,QAAM,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAC3BF,KAAG,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,CAChC;AACH,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,GAAG,YAAY,CAAC,MAAK;AAC1B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAC1B,gBAAgB,CAAC,MAAM;YACrB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,eAAe;AAC9C,SAAA,CAAC,EACF,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,KAAI;AAC5C,YAAA,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,IAAI,CAAA,IAAA,EAAO,IAAI,CAAC,WAAW,EAAE,CAAA,CAAE;AACvD,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;gBAC/B,OAAO,EAAE,CAAA,gCAAA,EAAmC,OAAO,CAAA,CAAA,CAAG;AACtD,gBAAA,KAAK,EAAE;AACR,aAAA,CAAC,CAAC,IAAI,CACLE,QAAM,CAAC,SAAS,IAAI,SAAS,CAAC,EAC9BD,UAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA,OAAA,CAAS,EAAE,KAAK,CAAC,EAAE,EAAE;AACpE,gBAAA,OAAO,EAAE;AACP,oBAAA,cAAc,EAAE,kBAAkB;AAClC,oBAAA,QAAQ,EAAE;AACX;aACF,CAAC,CAAC,IAAI,CACLD,KAAG,CAAC,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC,EAChCG,KAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EACtC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACzE,CAAC,CACH;QACH,CAAC,CAAC,CACH;AACH,IAAA,CAAC,CAAC;AAGF,IAAA,WAAA,GAAA,EAAgB;wGAnGL,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAX,WAAW,EAAA,CAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;MCCY,UAAU,CAAA;wGAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAPnB,YAAY,CAAA,EAAA,CAAA;AAOH,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,EAAA,SAAA,EALV;YACT,YAAY,CAAC,WAAW,CAAC;YACzB,cAAc,CAAC,WAAW;AAC3B,SAAA,EAAA,OAAA,EAAA,CALC,YAAY,CAAA,EAAA,CAAA;;4FAOH,UAAU,EAAA,UAAA,EAAA,CAAA;kBAVtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,YAAY,CAAC,WAAW,CAAC;wBACzB,cAAc,CAAC,WAAW;AAC3B;AACF,iBAAA;;;MCLY,aAAa,CAAA;AAqEd,IAAA,IAAA;AACA,IAAA,MAAA;AArEF,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;IAC5B,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC;AACzD,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACrB,IAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;AAElC,IAAA,KAAK,GAAG,YAAY,CAAC,MAAK;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAC1BF,UAAQ,CAAC,MACP,IAAI,UAAU,CAAU,QAAQ,IAAG,IAAI,CAAC;aACrC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAChF,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EACnCD,KAAG,CAAC,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CACnD;AACH,IAAA,CAAC,CAAC;AAEF,IAAA,UAAU,GAAG,YAAY,CAAC,MAAK;AAC7B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAC1BC,UAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,YAAY,CAAC,CAAC,IAAI,CACrDD,KAAG,CAAC,KAAK,IAAI,aAAa,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAClD,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAClF,CAAC;AACN,IAAA,CAAC,CAAC;AACF,IAAA,SAAS,GAAG,YAAY,CAAC,MAAK;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAC9BG,KAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAI;AAChB,YAAA,QAAQ,KAAK,CAAC,MAAM;AAClB,gBAAA,KAAK,GAAG;oBACN,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;oBAC1C;AACF,gBAAA,KAAK,GAAG;AACN,oBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;oBACjD;AACF,gBAAA,KAAK,GAAG;AACN,oBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;oBACrD;AACF,gBAAA;oBACE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;oBACpC;;QAEN,CAAC,CAAC,CAAC;AACP,IAAA,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAEvB,IAAA,aAAa,GAAG,YAAY,CAAC,MAAK;AAChC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,EAClCA,KAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,CACjE;AACH,IAAA,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAEvB,IAAA,KAAK,GAAG,YAAY,CAAC,MAAK;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAC1BH,KAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAChC;AACH,IAAA,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAEvB,IAAA,SAAS,GAAG,YAAY,CAAC,MAAK;AAC5B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAC9BG,KAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,CAC7E;AACH,IAAA,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAEvB,WAAA,CACU,IAAgB,EAChB,MAAc,EAAA;QADd,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,MAAM,GAAN,MAAM;IAAY;IAE5B,iBAAiB,GAAA;AACf,QAAA,OAAO,aAAa,CAAC,IAAI,EAAE;IAC7B;wGA1EW,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAb,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAb,aAAa,EAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;;ACRM,MAAM,gBAAgB,GAAG,QAAQ;AAQjC,MAAM,YAAY,GAAU;AACjC,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,KAAK,EAAE;CACR;AAEM,MAAM,OAAO,GAAG,aAAa,CAClC,YAAY,EACZ,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,EAC9E,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAC1E,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,KAAK,KAAK,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,EACnF,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,KAAK,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAClF;AAEM,MAAM,aAAa,GAAG,aAAa,CAAC;AACzC,IAAA,IAAI,EAAE,gBAAgB;IACtB,OAAO;AACR,CAAA;;MCTY,YAAY,CAAA;wGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAPrB,YAAY,CAAA,EAAA,CAAA;AAOH,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,EAAA,SAAA,EALZ;YACT,YAAY,CAAC,aAAa,CAAC;AAC3B,YAAA,cAAc,CAAC,CAAC,aAAa,CAAC;AAC/B,SAAA,EAAA,OAAA,EAAA,CALC,YAAY,CAAA,EAAA,CAAA;;4FAOH,YAAY,EAAA,UAAA,EAAA,CAAA;kBAVxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,YAAY,CAAC,aAAa,CAAC;AAC3B,wBAAA,cAAc,CAAC,CAAC,aAAa,CAAC;AAC/B;AACF,iBAAA;;;ACfM,MAAM,WAAW,GAAG,cAAc,CACrC,eAAe,CAAC,OAAO,CAAC,EACxB,eAAe,CAAC,WAAW,CAAC,EAC5B,CAAC,KAAK,EAAE,SAAS,KAAK,SAAS,GAAG,SAAS,GAAG,KAAK;;MCG1C,oBAAoB,CAAA;AAC7B,IAAA,SAAS,CAAC,WAAgC,EAAA;AACtC,QAAA,IAAI,KAAK,GAAG,WAAW,CAAC,IAAI;QAC5B,IAAI,OAAO,GAAS,EAAE;QACtB,IAAI,SAAS,GAAQ,EAAE;QACvB,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE;QACvC,SAAS,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE;AAC7C,QAAA,OAAO,KAAK,CAAC,UAAU,EAAE;AACrB,YAAA,KAAK,GAAG,KAAK,CAAC,UAAU;YACxB,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE;YACvC,SAAS,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE;QACjD;QAEA,MAAM,EACF,GAAG,EACH,IAAI,EAAE,EAAE,WAAW,EAAE,GACxB,GAAG,WAAW;AAEf,QAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE;IACjE;AACH;;MCdY,oBAAoB,CAAA;AAC/B,IAAA,QAAQ,GAAG,IAAI,YAAY,EAAO;AAClC,IAAA,OAAO;AACC,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAA,YAAY,GAAG,IAAI,YAAY,EAAE;IAEzC,QAAQ,GAAA;QACN,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEpF,QAAA,IAAI,SAAS,YAAY,OAAO,EAAE;AAChC,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO;AAChC,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACvE,gBAAA,IAAI,SAAS,CAAC,KAAK,KAAK,KAAK,IAAI,SAAS,CAAC,SAAS,KAAK,KAAK,EAAE;AAC9D,oBAAA,SAAS,CAAC,iBAAiB,CAAC,KAAK,CAAC;gBACpC;YACF,CAAC,CAAC,CAAC;QAEL;AAAO,aAAA,IAAI,SAAS,YAAY,oBAAoB,EAAE;AACpD,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO;QAClC;AAAO,aAAA,IAAI,SAAS,YAAY,eAAe,EAAE;AAC/C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,OAAoB;YAC1E,IAAI,SAAS,CAAC,IAAI;gBAChB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAgB;QACpE;AACA,QAAA,IAAI,CAAC,OAAO,KAAK,IAAI,WAAW,EAAE;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAClE,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IACxC;AAEA,IAAA,UAAU,KAAK;AACf,IAAA,gBAAgB,KAAK;AACrB,IAAA,iBAAiB,KAAK;IAEtB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE;IAClC;wGArCW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,SAAA,EARpB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE,oBAAoB;AAClC,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAEU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAVhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAA,oBAAsB;AAClC,yBAAA;AACF,qBAAA;AACF,iBAAA;;;ACZK,SAAU,sBAAsB,CAAC,OAA+B,EAAA;AAClE,IAAA,IAAI,CAAC,OAAO;QAAE;AAEd,IAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AAC9B,QAAA,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACjF;AAAO,SAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AACrC,QAAA,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAClE;AAAO,SAAA,IAAI,OAAO,YAAY,WAAW,EAAE;QACvC,OAAO,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC7C;AACJ;;ACZA;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"axioma-material.mjs","sources":["../../../projects/material/src/lib/snack.service.ts","../../../projects/material/src/state/shared/shared.actions.ts","../../../projects/material/src/lib/loading.interceptor.ts","../../../projects/material/src/lib/confirmation-dialog/confirmation-dialog.component.ts","../../../projects/material/src/lib/confirmation-dialog/confirmation-dialog.component.html","../../../projects/material/src/lib/confirmation.service.ts","../../../projects/material/src/lib/smart-select/smart-select.component.ts","../../../projects/material/src/lib/smart-select/smart-select.component.html","../../../projects/material/src/lib/smart-select/display-presets.ts","../../../projects/material/src/lib/detail-actions/detail-actions.component.ts","../../../projects/material/src/lib/detail-actions/detail-actions.component.html","../../../projects/material/src/lib/email/email.component.ts","../../../projects/material/src/lib/email/email.component.html","../../../projects/material/src/state/grid/grid.actions.ts","../../../projects/material/src/state/grid/grid.reducer.ts","../../../projects/material/src/state/grid/models.ts","../../../projects/material/src/state/router/router.selectors.ts","../../../projects/material/src/state/grid/grid.selectors.ts","../../../projects/material/src/lib/grid/grid.component.ts","../../../projects/material/src/lib/grid/grid.component.html","../../../projects/material/src/state/router/router.actions.ts","../../../projects/material/src/state/router/router.effects.ts","../../../projects/material/src/state/router/router.module.ts","../../../projects/material/src/state/grid/grid.effects.ts","../../../projects/material/src/state/grid/grid.module.ts","../../../projects/material/src/state/crud/crud.actions.ts","../../../projects/material/src/state/crud/crud.reducer.ts","../../../projects/material/src/state/crud/crud.selectors.ts","../../../projects/material/src/state/crud/crud.effects.ts","../../../projects/material/src/state/crud/crud.module.ts","../../../projects/material/src/state/shared/shared.effects.ts","../../../projects/material/src/state/shared/shared.reducer.ts","../../../projects/material/src/state/shared/shared.module.ts","../../../projects/material/src/state/shared/shared.selectors.ts","../../../projects/material/src/state/router/store-route-serializer.ts","../../../projects/material/src/lib/host-control-directive.directive.ts","../../../projects/material/src/lib/shared/forms.utility.ts","../../../projects/material/src/public-api.ts","../../../projects/material/src/axioma-material.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SnackService {\n snackBar = inject(MatSnackBar);\n info(message: string, action: string = 'Dismiss', duration: number = 3000) {\n this.snackBar.open(message, action, { duration });\n }\n}\n","import { createActionGroup, emptyProps, props } from '@ngrx/store';\n\nexport const SharedActions = createActionGroup({\n source: 'Shared',\n events: {\n 'Set Mobile': props<{ isMobile: boolean }>(),\n 'Back': emptyProps(),\n 'Init': emptyProps(),\n 'Init Success': props<{ build: string }>(),\n 'Noop': emptyProps(),\n 'Start Request': emptyProps(),\n 'End Request': emptyProps(),\n 'Transient Error': props<{ source: string, error: any }>(),\n 'Bad Error': props<{ source: string, error: any }>(),\n 'Navigate': props<{ url: string, replaceUrl?: boolean }>(),\n 'Access Denied': emptyProps(),\n 'Login': emptyProps(),\n }\n});\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { SharedActions } from '../state/shared/shared.actions';\nimport { finalize } from 'rxjs';\n\nexport const loadingInterceptor: HttpInterceptorFn = (req, next) => {\n let store = inject(Store);\n store.dispatch(SharedActions.startRequest())\n try {\n return next(req)\n .pipe(\n finalize(() => store.dispatch(SharedActions.endRequest()))\n );\n } catch (err) {\n console.log('error', err);\n store.dispatch(SharedActions.endRequest());\n throw err;\n }\n};\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n MatDialogRef,\n MAT_DIALOG_DATA,\n MatDialogContent,\n MatDialogActions,\n MatDialogTitle\n \n} from '@angular/material/dialog';\nimport { ButtonData, ConfirmationData } from './confirmation-data';\n@Component({\n selector: 'x-confirmation-dialog',\n imports: [NgTemplateOutlet, MatButtonModule, MatDialogContent, MatDialogActions, MatDialogTitle],\n templateUrl: './confirmation-dialog.component.html',\n styleUrl: './confirmation-dialog.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ConfirmationDialogComponent {\n data: ConfirmationData = inject(MAT_DIALOG_DATA);\n dialogRef = inject(MatDialogRef<ConfirmationDialogComponent>);\n \n constructor() {\n this.data.buttons ??= [{\n text: 'Yes',\n value: true,\n default: true,\n color: 'primary'\n }, {\n text: 'No',\n value: false,\n default: false,\n }]\n }\n clickButton(button: ButtonData) {\n this.dialogRef.close(button.value);\n }\n\n \n\n}\n","<h2 mat-dialog-title>{{data.title}}</h2>\n<mat-dialog-content cdkTrapFocus class=\"mat-typography\">\n @if(data.message){\n <p>{{data.message}}</p>\n } @else if (data.messageRef) {\n <ng-container *ngTemplateOutlet=\"data.messageRef\"></ng-container>\n }\n</mat-dialog-content>\n<mat-dialog-actions>\n @for(button of data.buttons; track button){\n @if(button.default){\n <button mat-button (click)=\"clickButton(button)\" cdkFocusInitial>{{button.text}}</button>\n } @else {\n <button mat-button (click)=\"clickButton(button)\">{{button.text}}</button>\n }\n }\n</mat-dialog-actions>","import { inject, Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ConfirmationDialogComponent } from './confirmation-dialog/confirmation-dialog.component';\nimport { Observable } from 'rxjs';\nimport { ConfirmationData } from './confirmation-dialog/confirmation-data';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfirmationService {\n private dialog = inject(MatDialog);\n confirm(config: ConfirmationData): Observable<any> {\n let ref = this.dialog.open(ConfirmationDialogComponent, {\n data: config\n });\n return ref.afterClosed();\n } \n}\n","import {\n booleanAttribute, ChangeDetectionStrategy, Component, computed, effect, ElementRef,\n inject, Injector, input, Input, OnInit, output, signal, ViewChild\n} from '@angular/core';\nimport { MatAutocomplete, MatAutocompleteModule, MatAutocompleteSelectedEvent }\n from '@angular/material/autocomplete';\nimport {\n NG_VALUE_ACCESSOR, ControlValueAccessor,\n FormControl, ReactiveFormsModule,\n NgControl\n} from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'x-smart-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatAutocompleteModule, MatInputModule, ReactiveFormsModule, MatIconModule,\n MatTooltipModule, MatButtonModule],\n templateUrl: './smart-select.component.html',\n styleUrl: './smart-select.component.scss',\n host: {\n '(blur)': 'onTouched($event)'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: SmartSelectComponent\n }\n ]\n})\nexport class SmartSelectComponent implements ControlValueAccessor, OnInit {\n private injector = inject(Injector);\n @ViewChild('input') input?: ElementRef<HTMLInputElement>;\n @ViewChild('auto') auto?: MatAutocomplete;\n inputValue = '';\n $displayFn = input((v?: any) => v?.name ?? '', { alias: 'display' });\n $hint = input<string | undefined>('Type to search', { alias: 'hint' });\n $label = input.required<string | undefined>({ alias: 'label' });\n $options = input<any[] | undefined | null>([], { alias: 'options' });\n $toolbar = input(false, { transform: booleanAttribute, alias: 'toolbar' });\n $new = input(false, { transform: booleanAttribute, alias: 'new' });\n newClick = output<void>();\n change = output<string>();\n $required = input(false, { alias: 'required', transform: booleanAttribute });\n control = new FormControl();\n outerControl?:FormControl;\n filter = output<string | undefined>();\n $filter = signal<string | undefined>(undefined);\n $filtered = computed(() => {\n let filter = this.$filter()?.toLowerCase();\n let options = this.$options();\n let res = filter ? options?.filter(c => c.name?.toLowerCase().includes(filter)\n || c.name?.toLowerCase().includes(filter) || typeof c?.id === 'string' && c.id.toLowerCase().includes(filter)) : options;\n return res;\n });\n\n $touched = signal(false, { equal: (a, b) => false });\n @Input({ transform: booleanAttribute }) set touched(value: boolean) {\n this.$touched.set(value);\n }\n\n onChange = (_: any) => { };\n\n onTouched = () => { };\n\n writeValue(obj: any): void {\n let options = this.$options();\n this.setValueFromId(obj, options);\n }\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n isDisabled ? this.control.disable() : this.control.enable();\n }\n\n onInputChange(e: any) {\n this.change.emit(e.option.value?.id);\n }\n onAutoCompleteChange(e: MatAutocompleteSelectedEvent) {\n this.onChange(e.option.value?.id);\n this.change.emit(e.option.value?.id);\n }\n\n setValue(id: any, obj: any, emit: boolean = true) {\n let val = obj ?? id;\n if (this.control.value == val)\n return;\n this.control.setValue(obj ?? id, { emitEvent: emit });\n this.onChange(id);\n this.change.emit(id);\n }\n setFilter() {\n const filterValue = this.input?.nativeElement.value;\n this.$filter.set(filterValue?.toLowerCase() == this.display(this.control.value).toLowerCase() ? undefined : filterValue);\n this.filter.emit(filterValue);\n }\n\n display(v: any): string {\n return this.$displayFn()(v);\n }\n\n onTouch(e: any) {\n this.control.markAllAsTouched();\n this.onTouched();\n }\n getErrorMessage() {\n if (!this.outerControl?.errors) return null;\n\n if (this.control.hasError('required')) {\n return this.$label() + ' is required';\n }\n let keys = Object.keys(this.control.errors ?? {});\n if (keys.length > 0) {\n return this.outerControl.errors[keys[0]];\n }\n }\n constructor() {\n effect(() => {\n if (this.$touched())\n this.control.markAsTouched();\n else {\n this.control.markAsUntouched();\n this.control.markAsPristine();\n }\n });\n effect(() => {\n let options = this.$options();\n let value = this.control.value\n if (value && options?.find(c => c?.id == value))\n this.setValueFromId(value, options);\n });\n }\n ngOnInit(): void {\n const ngControl = this.injector.get(NgControl, null, { self: true, optional: true });\n if (ngControl?.control) {\n this.outerControl = ngControl.control as FormControl;\n this.outerControl.statusChanges.subscribe(v => {\n this.control.setErrors(this.outerControl!.errors);\n });\n }\n }\n setValueFromId(id: any, options?: any[] | null) {\n let obj = options?.find(c => c?.id == id);\n this.setValue(obj?.id ?? id, obj, false);\n }\n\n onNew(e: MouseEvent) {\n e.stopPropagation();\n this.newClick.emit();\n }\n}\n","<mat-form-field class=\"w-full\">\n <mat-label>{{$label()}}</mat-label>\n <input #input [formControl]=\"control\" [required]=\"$required()\" type=\"text\" (input)=\"setFilter()\" (focus)=\"setFilter()\"\n placeholder=\"Select {{$label()}}\" [attr.aria-label]=\"$label()\" matInput [matAutocomplete]=\"auto\">\n @if($new()){\n <button type=\"button\" matSuffix matTooltipPositionAtOrigin=\"true\" matTooltip=\"Create new\" (click)=\"onNew($event)\" mat-icon-button>\n <mat-icon>add</mat-icon>\n </button>\n }\n <mat-error>{{getErrorMessage()}}</mat-error>\n @if (!$toolbar()){\n <mat-hint>{{$hint()}}</mat-hint>\n }\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"onAutoCompleteChange($event)\"\n [displayWith]=\"$displayFn()\">\n @if(!$required()){\n <mat-option>None</mat-option>\n }\n @for (opt of $filtered(); track opt) {\n <mat-option [value]=\"opt\">{{display(opt)}}</mat-option>\n }\n </mat-autocomplete>\n</mat-form-field>","export class DisplayPresets{\n public static WithId = (v?: any) => v ? `${v?.name} (${v?.id})` : '';\n public static Name = (v?: any) => v ? `${v?.name}` : '';\n}","import { booleanAttribute, ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { take } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { SharedActions } from '../../public-api';\n@Component({\n selector: 'x-detail-actions',\n imports: [MatToolbarModule, MatIconModule, MatButtonModule],\n templateUrl: './detail-actions.component.html',\n styleUrl: './detail-actions.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DetailActionsComponent {\n @Input({ transform: booleanAttribute, alias: 'no-routing' }) dontRoute = false;\n @Output() cancel = new EventEmitter<void>();\n private store = inject(Store);\n constructor() {\n this.cancel.pipe(take(1)).subscribe(() =>\n this.dontRoute || this.store.dispatch(SharedActions.back())\n );\n }\n}\n","<mat-toolbar class=\"flex flex-row gap-2 p-2\">\n <button mat-stroked-button type=\"submit\"><mat-icon>save</mat-icon> Save</button>\n <button mat-button type=\"button\" (click)=\"cancel.emit()\"><mat-icon>cancel</mat-icon> Cancel</button>\n <div class=\"flex-grow\"></div>\n <ng-content select=\"[right]\"></ng-content>\n</mat-toolbar>","import { toSignal } from '@angular/core/rxjs-interop';\nimport {\n booleanAttribute, ChangeDetectionStrategy, Component, effect, EventEmitter, \n forwardRef, Input, input, Output} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR, NG_VALIDATORS, ControlValueAccessor, Validator, AbstractControl,\n ValidationErrors, FormControl, Validators, ReactiveFormsModule\n} from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { first, map, of } from 'rxjs';\nimport { RouterModule } from '@angular/router';\nimport { CheckUserExistsFn } from './checkUserExistsFn';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'x-email',\n imports: [ReactiveFormsModule, MatFormFieldModule, MatIconModule,\n MatInputModule, RouterModule],\n templateUrl: './email.component.html',\n styleUrl: './email.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(blur)': 'onTouch($event)'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: EmailComponent\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => EmailComponent),\n multi: true,\n },\n ]\n})\nexport class EmailComponent implements ControlValueAccessor, Validator {\n @Input({transform: booleanAttribute}) icons = false;\n @Input({ required: true }) checkUserExistsFn?: CheckUserExistsFn;\n @Output() login = new EventEmitter<void>();\n @Input() label = 'Email';\n @Output() exists = new EventEmitter<boolean>();\n $touched = input(false, { transform: booleanAttribute, alias: 'touched' });\n $existing = input(<boolean | undefined>false, { transform: booleanAttribute, alias: 'existing' });\n control = new FormControl('', [Validators.required, Validators.email]);\n onChange = (_: any) => { };\n onTouch = (_: any) => { };\n onValidationChange = () => { };\n writeValue(obj: any): void {\n this.control.setValue(obj);\n }\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n isDisabled\n ? this.control.disable()\n : this.control.enable();\n }\n validate(_: AbstractControl): ValidationErrors | null {\n return this.control.errors\n }\n registerOnValidatorChange?(fn: () => void): void {\n this.onValidationChange = fn;\n }\n constructor() {\n\n let $valid = toSignal(this.control.statusChanges);\n effect(() => {\n this.onValidationChange();\n });\n\n let $value = toSignal(this.control.valueChanges);\n effect(() => {\n this.onChange($value());\n });\n\n this.control.setAsyncValidators(() => {\n let existing = this.$existing();\n let value = this.control.value;\n if (!value || typeof existing === 'undefined') {\n return of(null);\n }\n return this.checkUserExistsFn!(value).pipe(\n map(exists =>{\n this.exists.emit(exists);\n return exists === existing ? null : existing ? { missing: true } : { exists: true };\n }),\n first()\n );\n });\n\n effect(() => {\n let touched = this.$touched();\n if (touched) {\n this.control.markAsTouched();\n } else {\n this.control.markAsUntouched();\n }\n })\n }\n}\n","<mat-form-field >\n <mat-label>{{label}}</mat-label>\n @if(icons){\n <mat-icon matPrefix>mail</mat-icon>\n }\n <input autocapitalize=\"off\" matInput type=\"email\" [formControl]=\"control\" required>\n <mat-hint><ng-content></ng-content></mat-hint>\n @if (control.hasError('required')){\n <mat-error>Email is required</mat-error>\n } @else if (control.hasError('email')){\n <mat-error>Email is invalid</mat-error>\n } @else if (control.hasError('exists')){\n <mat-error>Email already exists: <a (click)=\"login.emit()\">sign in</a>.</mat-error>\n } @else if (control.hasError('missing')){\n <mat-error>Email is missing</mat-error>\n }\n</mat-form-field>","import { createActionGroup, emptyProps, props } from '@ngrx/store';\nimport { GenericDataRequest, GroupFilter } from './models';\n\nexport const GridActions = createActionGroup({\n source: 'Grid',\n events: {\n 'Refresh': emptyProps(),\n 'Implicit Load': props<{ name:string, dataUrl?: string, request?: GenericDataRequest }>(),\n 'Load': props<{ name: string, request?: GenericDataRequest }>(),\n 'Load Success': props<{ name: string, count?: number, data?: any[] }>(),\n 'Change Paging': props<{ pageIndex: number, pageSize: number }>(),\n 'Change Sort': props<{ sort: string, dir: string }>(),\n 'Change Filter': props<{ filter: string }>(),\n 'Update Request': props<{ request: GenericDataRequest }>(),\n 'Go To': props<{ filter: GroupFilter, url?: string, replaceUrl?: boolean }>(),\n 'Bulk Delete': props<{ ids: number[] | undefined }>(),\n 'Bulk Delete Success': emptyProps(),\n }\n});\n","import { createFeature, createReducer, on } from '@ngrx/store';\nimport { GridActions } from './grid.actions';\nexport const gridFeatureKey = 'grid';\n\nexport interface GridMap {\n [key: string]: GridData;\n}\n\nexport interface GridData extends GenericGridData<any>{}\n\nexport interface GenericGridData<T> {\n dataUrl: string | undefined;\n count: number | undefined;\n data: T[] | undefined;\n loading: boolean;\n}\n\nexport interface State {\n grids: GridMap;\n}\n\nexport const initialState: State = {\n grids: {} as GridMap\n};\n\nexport const reducer = createReducer(\n initialState,\n on(GridActions.loadSuccess, (state, { name, data, count }) => ({\n ...state,\n grids: { ...state.grids, [name]: { ...state.grids[name], data, count, loading: false } }\n })),\n on(GridActions.implicitLoad, (state, { name, dataUrl }) => ({\n ...state,\n grids: { ...state.grids, [name]: { ...state.grids[name], \n dataUrl,\n data: undefined,\n count: undefined,\n loading: true } }\n })),\n);\n\nexport const gridFeature = createFeature({\n name: gridFeatureKey,\n reducer,\n});\n\n","export enum FilterLogic {\n Or = 0,\n And = 1,\n}\n\nexport interface GroupFilter {\n /** Logical composition in the group */\n logic?: FilterLogic;\n /** Nested groups */\n groups?: GroupFilter[] | undefined;\n /** Filters */\n fields?: FieldFilter[] | undefined;\n}\n\nexport interface GenericDataRequest {\n filters?: GroupFilter | undefined;\n sortBy?: string | undefined;\n sortDir?: SortDir | undefined;\n paging?: Paging | undefined;\n}\n\nexport interface FieldFilter {\n names?: string[] | undefined;\n operator?: FilterOperator | undefined;\n values?: string[] | undefined;\n}\n\nexport enum SearchOperator{\n Contains = 0,\n In = 4,\n FullText = 5,\n}\n\nexport enum FilterOperator {\n Contains = 0,\n Equals = 1,\n Greater = 2,\n Less = 3,\n In = 4,\n FullText = 5\n}\n\nexport enum SortDir {\n Asc = 0,\n Desc = 1,\n}\n\n/** Paging data */\nexport interface Paging {\n /** 1-based page number */\n page: number;\n /** Page size */\n pageSize: number;\n}\n\n","import { RouterReducerState } from \"@ngrx/router-store\";\nimport { createFeatureSelector, createSelector } from \"@ngrx/store\";\nimport { RouterState } from \"./store-route-serializer\";\n\nexport const selectRouter = createFeatureSelector<RouterReducerState<RouterState>>('router');\n\nexport const selectRouterState = createSelector(\n selectRouter,\n state => state?.state\n);\n\nexport const selectRouteParams = createSelector(\n selectRouterState,\n state => state?.params\n);\n\nexport const selectRouteParam = (name?: string) => createSelector(\n selectRouteParams,\n params => (params && name) ? params[name] : undefined\n);\n\nexport const selectUrl = createSelector(\n selectRouterState,\n state => decodeUriInternal(state?.url)!\n);\n\nexport const selectSiteSlugParam = createSelector(\n selectRouteParam('site-slug'),\n selectUrl,\n (s, u) => s ?? (!!u ? null : undefined)\n)\n\nexport const selectQueryParams = createSelector(\n selectRouterState,\n state => state?.queryParams\n);\n\nexport const selectQueryParam = (name: string) => createSelector(\n selectQueryParams,\n params => params ? params[name] : undefined\n);\n\nexport const selectQueryParamArray = (name: string) => createSelector(\n selectQueryParam(name),\n value => value ? value.toString().split(',') : undefined\n);\n\nexport const selectDataParam = (name: string) => createSelector(\n selectRouterState,\n state => state?.data[name]\n);\n\nexport const selectUrlWithoutQuery = createSelector(\n selectRouterState,\n state => decodeUriInternal(state?.url?.split('?')[0])!\n);\n\nexport const selectUrlSegments = (count: number) => createSelector(\n selectUrlWithoutQuery,\n url => {\n let segs = url.split('/');\n return segs.slice(0, Math.min(segs.length, count)).join('/');\n }\n);\n\nconst decodeUriInternal = (source?: string): string | undefined => {\n return !!source ? decodeURI(source) : source;\n}","import { createSelector } from '@ngrx/store';\nimport { GridData, gridFeature } from './grid.reducer';\nimport { FilterLogic, GenericDataRequest, GroupFilter, SortDir } from './models';\nimport { selectQueryParam, selectRouterState } from '../router/router.selectors';\nimport { GridSetup } from './grid-setup';\n\nexport const selectGridData = (name: string) => createSelector(\n gridFeature.selectGrids,\n (grids): GridData | undefined => grids ? grids[name] : undefined\n);\n\nexport const selectPageIndex = createSelector(\n selectQueryParam('page'),\n (p): number => (p ? +p : 1) - 1\n);\nexport const selectPageSize = createSelector(\n selectQueryParam('size'),\n (s): number => s ? +s : 25\n);\n\nexport const selectGridFilters = (name: string) => createSelector(\n selectQueryParam(name),\n (params): GroupFilter | undefined => params ? JSON.parse(atob(params)) : undefined\n);\n\nexport const selectBaseFilters = createSelector(\n selectGridFilters('base-filter'),\n f => f\n);\n\nexport const selectTotalCount = (name: string) => createSelector(\n selectGridData(name),\n data => data?.count ?? 0\n);\n\nexport const selectGridSetup = createSelector(\n selectRouterState,\n s => s?.data['grid'] ? (s.data['grid'] as GridSetup) : undefined\n);\n\nexport const selectWaitForFilters = createSelector(\n selectGridSetup,\n s => s?.waitForFilters ?? false\n);\n\nexport const selectSortBy = createSelector(\n selectGridSetup,\n selectQueryParam('sort-by'),\n (s, q) => q ? q : s?.sortBy\n);\n\nexport const selectSortDir = createSelector(\n selectGridSetup,\n selectQueryParam('sort-dir'),\n (s, q) => {\n q = (q ?? s?.sortDir)?.toLowerCase();\n return q == 'desc' ? SortDir.Desc : SortDir.Asc\n }\n);\n\nexport const selectSearchFields = createSelector(\n selectGridSetup,\n d => d?.searchFields\n);\n\nexport const selectIsGrid = createSelector(\n selectGridSetup,\n s => !!s\n);\n\nexport const selectGridName = createSelector(\n selectGridSetup,\n s => s?.controllerMethod\n);\n\n\nexport const selectDataUrl = (name:string) => createSelector(\n selectGridSetup,\n selectGridData(name),\n (s,d) => s?.controllerMethod ? `/api/${s?.controllerMethod}` : d?.dataUrl\n);\n\n\nexport const selectFilterText = createSelector(\n selectGridFilters('filter'),\n f => f?.fields?.at(0)?.values?.at(0) ?? ''\n);\nexport const selectDataRequest = createSelector(\n selectPageIndex,\n selectPageSize,\n selectSortBy,\n selectSortDir,\n selectBaseFilters,\n selectGridFilters('filter'),\n (pageIndex, pageSize, sortBy, sortDir, baseFilters, filters): GenericDataRequest => ({\n paging: { page: pageIndex + 1, pageSize },\n sortBy,\n sortDir,\n filters: combineFilters([baseFilters, filters])\n })\n)\n\nfunction combineFilters(filters: (GroupFilter | undefined)[]): GroupFilter | undefined {\n let filtered = filters.filter(f => !!f) as GroupFilter[];\n if (filtered.length == 0) {\n return undefined;\n }\n if (filtered.length == 1) {\n return filtered[0];\n }\n return { logic: FilterLogic.And, groups: filtered };\n}\n\n","import {\n booleanAttribute, ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject,\n input, Input, output, Signal, signal, TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { ActionConfig, GridColumn, GridConfig } from './grid-config';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSortModule, Sort, SortDirection } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { GridActions } from '../../state/grid/grid.actions';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { filter, mergeMap } from 'rxjs';\nimport {\n selectDataRequest, selectFilterText, selectGridData, selectGridName, selectPageIndex,\n selectPageSize,\n selectSearchFields,\n selectSortBy,\n selectSortDir\n} from '../../state/grid/grid.selectors';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatCheckboxChange, MatCheckboxModule } from '@angular/material/checkbox';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { Actions, ofType } from '@ngrx/effects';\nimport { SortDir } from '../../state/grid/models';\nimport { ActionEvent } from './action-event';\nimport { GenericGridData, GridData } from '../../state/grid/grid.reducer';\n\n@Component({\n selector: 'x-grid',\n imports: [MatInputModule, MatTableModule, MatToolbarModule, MatButtonModule,\n MatCheckboxModule, MatTooltipModule, MatIconModule, RouterModule,\n MatSortModule, MatPaginatorModule, NgTemplateOutlet, NgTemplateOutlet],\n templateUrl: './grid.component.html',\n styleUrl: './grid.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GridComponent<T> {\n @ViewChild('toolbar', { read: ElementRef }) toolbar?: ElementRef;\n get hasToolbar() {\n return (this.toolbar?.nativeElement.childElementCount ?? 0) > 1;\n }\n private $deleteSuccess = toSignal(inject(Actions).pipe(ofType(GridActions.bulkDeleteSuccess)));\n private route = inject(ActivatedRoute);\n private router = inject(Router);\n private store = inject(Store);\n selection = new SelectionModel<T>(true, [], true, (a, b) => ((<any>a).id ?? a) === ((<any>b).id ?? b));\n $config = signal<GridConfig<T> | undefined>(undefined);\n action = output<ActionEvent<T>>();\n @Input() set config(val: GridConfig<T> | undefined) {\n this.$config.set(val);\n };\n $view = input<TemplateRef<any> | undefined>(undefined, { alias: 'view' });\n dataChange = output<GridData | undefined>();\n $sort = this.store.selectSignal(selectSortBy);\n $dir: Signal<SortDirection>;\n $bulk = input(false, { alias: 'bulk', transform: booleanAttribute });\n $allSelected = signal(false);\n $gridName = this.store.selectSignal(selectGridName);\n $columns = computed(() => this.$config()?.columns);\n $buttons = computed(() => this.$config()?.buttons);\n $displayedColumns = computed(() => {\n let res = this.$columns()?.map(c => c.name);\n if (res && this.$hasActions()) {\n res.push('actions');\n }\n if (res && this.$bulk()) {\n res.unshift('select');\n }\n return res;\n });\n $data = input<GenericGridData<T> | undefined>(undefined, { alias: 'data' });\n $storeData = toSignal(toObservable(this.$gridName).pipe(\n filter(name => !!name),\n mergeMap(name => this.store.select(selectGridData(name!)))));\n $gridData = computed(() => {\n let data = this.$data();\n let storeData = this.$storeData();\n return data ?? storeData;\n });\n $hasPaging = computed(() => {\n let gridData = this.$gridData();\n return gridData?.data && typeof gridData.count === 'number';\n });\n $filter = this.store.selectSignal(selectFilterText);\n $pageIndex = this.store.selectSignal(selectPageIndex);\n $pageSizeRouter = this.store.selectSignal(selectPageSize);\n $pageSizeInput = input<number | undefined>(undefined, { alias: 'pageSize' });\n $pageSize = computed(() => this.$pageSizeInput() ?? this.$pageSizeRouter());\n $dataSource = computed(() => this.$gridData()?.data ?? []);\n $searchColumns = this.store.selectSignal(selectSearchFields);\n $hasSearch = computed(() => this.$searchColumns()?.length ?? 0);\n $actions = computed(() => this.$config()?.actions);\n $hasActions = computed(() => this.$actions()?.length ?? 0);\n $selectedCount: Signal<number | undefined>;\n toggleAll() {\n this.selection.clear();\n this.$allSelected.set(!this.$allSelected());\n }\n toggleOne(e: MatCheckboxChange, row: T) {\n if (this.$allSelected()) {\n this.selection.clear();\n this.$allSelected.set(false);\n this.selection.select(row);\n } else\n this.selection.toggle(row);\n if (e.checked != this.selection.isSelected(row))\n e.source.checked = this.selection.isSelected(row);\n }\n deleteSelected() {\n this.store.dispatch(GridActions.bulkDelete({ ids: this.selection.selected.map(s => (<any>s).id) }));\n }\n pageChange(e: PageEvent) {\n this.store.dispatch(GridActions.changePaging({ pageIndex: e.pageIndex, pageSize: e.pageSize }));\n }\n sortChange(e: Sort) {\n this.store.dispatch(GridActions.changeSort({ sort: e.active, dir: e.direction }));\n }\n\n refresh() {\n this.selection.clear();\n this.store.dispatch(GridActions.refresh());\n }\n setFilter(filter: string) {\n this.store.dispatch(GridActions.changeFilter({ filter }));\n }\n filterKeyUp(event: KeyboardEvent) {\n this.setFilter((event.target as HTMLInputElement).value);\n }\n getDisplayRef(col: GridColumn<T>): TemplateRef<any> | null {\n if (col.display instanceof TemplateRef)\n return col.display as TemplateRef<any>;\n return null;\n }\n getDisplayFunc(col: GridColumn<T>): ((row: T) => string | null) | null {\n if (col.display instanceof Function)\n return col.display as (row: T) => string | null;\n return null;\n }\n\n display(col: GridColumn<T>, row: T) {\n let func = this.getDisplayFunc(col);\n if (func)\n return func(row);\n return (<any>row)[col.name];\n }\n\n onRowClick(row: T) {\n const defaultAction = this.$config()?.defaultAction;\n if (!defaultAction)\n return;\n let action = this.$actions()?.find(a => a.name === defaultAction);\n if (action?.routerLink) {\n let link = action.routerLink(row);\n if (!Array.isArray(link))\n link = [link];\n this.router.navigate(link, { relativeTo: this.route });\n } else if (action?.action) {\n action.action(row);\n }\n this.action.emit({ action: defaultAction, row });\n }\n\n onAction(e: MouseEvent, row: any, action: ActionConfig<T>) {\n e.stopPropagation();\n if (action.action)\n action.action(row);\n this.action.emit({ action: action.name, row });\n }\n\n getStyle(col: GridColumn<T>) {\n return { 'max-width': col.width ?? 'auto' };\n }\n\n getActionStyle() {\n let width = (this.$actions()?.length ?? 0) * 48 + 32;\n return { 'max-width': `${width}px` };\n }\n\n $request = this.store.selectSignal(selectDataRequest);\n\n constructor() {\n let $dir = this.store.selectSignal(selectSortDir);\n this.$dir = computed(() => $dir() == SortDir.Desc ? 'desc' : 'asc');\n effect(() => {\n this.$deleteSuccess();\n this.selection.clear();\n this.$allSelected.set(false);\n });\n\n effect(() => {\n this.dataChange.emit(this.$gridData());\n });\n\n let $selectionChanged = toSignal(this.selection.changed);\n this.$selectedCount = computed(() => {\n let selection = $selectionChanged()?.source;\n let total = this.$gridData()?.count;\n return this.$allSelected() && !selection?.hasValue() ? total : selection?.selected.length;\n });\n }\n\n onClick($event: PointerEvent, row: T, column: GridColumn<T>) {\n $event.stopPropagation();\n if (column.action)\n column.action(row);\n }\n}\n","<mat-toolbar #toolbar class=\"flex flex-row gap-2 p-2\" [style.display]=\"hasToolbar?undefined:' none'\">\n @if($hasSearch()){\n <div class=\"h-full\">\n <mat-form-field>\n <mat-label>Search</mat-label>\n <mat-icon matPrefix>search</mat-icon>\n <input matInput type=\"text\" [value]=\"$filter()\" (keyup)=\"filterKeyUp($event)\">\n @if ($filter()) {\n <button matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"setFilter('')\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n </div>\n }\n <ng-content select=\"[toolbar]\"></ng-content>\n @for(button of $buttons(); track button.name){\n @if (!button.visible || button.visible()){\n <button mat-button [routerLink]=\"button.routerLink?button.routerLink():undefined\" \n [matTooltip]=\"button.text\" [disabled]=\"button.disabled?button.disabled():undefined\"\n (click)=\"onAction($event,undefined,button)\"><mat-icon>{{button.icon}}</mat-icon> {{button.text}}</button>\n }\n }\n @if ($config()?.new){\n <a mat-button routerLink=\"../new\"><mat-icon>add</mat-icon> New</a>\n }\n @if($config()?.refresh)\n {\n <button mat-button (click)=\"refresh()\"><mat-icon>sync</mat-icon> Refresh</button>\n }\n @if($bulk()){\n <button mat-button [disabled]=\"!$selectedCount()\" (click)=\"deleteSelected()\"><mat-icon>delete</mat-icon>\n Delete</button>\n }\n <span class=\"flex-grow\"></span>\n @if ($selectedCount() || $allSelected()){\n <span class=\"count\"> {{$selectedCount()??0}} items selected</span>\n }\n</mat-toolbar>\n@if($view(); as view){\n<ng-container *ngTemplateOutlet=\"view; context:{ $implicit: $gridData() }\"></ng-container>\n} @else {\n<mat-table [dataSource]=\"$dataSource()\" matSort (matSortChange)=\"sortChange($event)\" [matSortActive]=\"$sort()\"\n [matSortDirection]=\"$dir()\" matSortDisableClear>\n @if ($bulk()){\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef class=\"select\" matTooltip=\"Select all\">\n <mat-checkbox (change)=\"$event ? toggleAll() : null\" [checked]=\"!selection.hasValue() && $allSelected()\"\n [indeterminate]=\"selection.hasValue() && !$allSelected()\">\n </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" class=\"select\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"toggleOne($event, row)\"\n [checked]=\"selection.isSelected(row) || $allSelected() && !selection.hasValue()\">\n </mat-checkbox>\n </mat-cell>\n </ng-container>\n }\n @for(column of $columns(); track column.name){\n <ng-container [matColumnDef]=\"column.name\">\n @if (column.sort){\n <mat-header-cell [style]=\"getStyle(column)\" *matHeaderCellDef\n mat-sort-header>{{column.header}}</mat-header-cell>\n } @else {\n <mat-header-cell [style]=\"getStyle(column)\" *matHeaderCellDef>{{column.header}}</mat-header-cell>\n }\n <mat-cell [style]=\"getStyle(column)\" *matCellDef=\"let row\">\n @if (column.icon) {\n <mat-icon>{{column.icon(row)}}</mat-icon>\n } @else if(column.href || column.routerLink || column.action){\n <a [routerLink]=\"column.routerLink?column.routerLink(row):undefined\"\n [queryParams]=\"column.queryParams?column.queryParams(row):undefined\"\n [attr.href]=\"column.href?column.href(row):'#'\" (click)=\"onClick($event, row, column)\">\n {{ display(column,row) }}\n </a>\n } @else if (getDisplayRef(column)) {\n <ng-container *ngTemplateOutlet=\"getDisplayRef(column); context: { $implicit: row}\"></ng-container>\n } @else {\n {{ display(column,row)}}\n }\n </mat-cell>\n </ng-container>\n }\n @if($hasActions()){\n <ng-container matColumnDef=\"actions\">\n <mat-header-cell [style]=\"getActionStyle()\" *matHeaderCellDef>Actions</mat-header-cell>\n <mat-cell [style]=\"getActionStyle()\" *matCellDef=\"let row\">\n @for(action of $actions(); track action.name){\n @if(!action.visible || action.visible(row)){\n <button type=\"button\" mat-icon-button [disabled]=\"action.disabled?action.disabled(row):undefined\"\n [matTooltip]=\"action.text\" (click)=\"onAction($event, row, action)\"\n [queryParams]=\"action.queryParams?action.queryParams(row):undefined\"\n [routerLink]=\"action.routerLink?action.routerLink(row):undefined\">\n <mat-icon>{{action.icon}}</mat-icon>\n </button>\n }\n }\n </mat-cell>\n </ng-container>\n }\n <mat-header-row *matHeaderRowDef=\"$displayedColumns()\"></mat-header-row>\n <mat-row [class.clickable]=\"!!$config()?.defaultAction\" *matRowDef=\"let row; columns: $displayedColumns()\"\n (click)=\"onRowClick(row)\"></mat-row>\n</mat-table>\n}\n@if($hasPaging()){\n<mat-paginator [pageIndex]=\"$pageIndex()\" [length]=\"$gridData()?.count\" [pageSize]=\"$pageSize()\"\n (page)=\"pageChange($event)\" aria-label=\"Select page\"></mat-paginator>\n}","import { createActionGroup, props } from \"@ngrx/store\";\n\nexport const RouterActions = createActionGroup({\n source: 'Router',\n events: {\n 'Set Query Params': props<{ queryParams:{[key:string]:string}}>()\n }\n});\n","import { Injectable, inject } from \"@angular/core\";\nimport { Actions, createEffect, ofType } from \"@ngrx/effects\";\nimport { RouterActions } from \"./router.actions\";\nimport { Router } from \"@angular/router\";\nimport { tap } from \"rxjs\";\nimport { concatLatestFrom } from \"@ngrx/operators\";\nimport { Store } from \"@ngrx/store\";\nimport { selectQueryParams } from \"./router.selectors\";\n\n@Injectable()\nexport class RouterEffects {\n private store = inject(Store);\n private actions$ = inject(Actions);\n private router = inject(Router);\n $set = createEffect(() => this.actions$.pipe(\n ofType(RouterActions.setQueryParams),\n concatLatestFrom(() => this.store.select(selectQueryParams)),\n tap(([{ queryParams }, params]) => {\n this.router.navigate([], { queryParams: Object.assign({...params},queryParams) });\n })\n ), { dispatch: false });\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { provideEffects } from '@ngrx/effects';\nimport { RouterEffects } from './router.effects';\n\n\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule\n ], \n providers: [\n provideEffects(RouterEffects)\n ]\n})\nexport class StateRouterModule { }\n","import { inject, Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { debounceTime, catchError, concatMap, filter, map, mergeMap, switchMap, tap } from 'rxjs/operators';\nimport { concatLatestFrom } from '@ngrx/operators';\nimport { GridActions } from './grid.actions';\nimport { Store } from '@ngrx/store';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { selectBaseFilters, selectDataRequest, selectDataUrl, selectGridName, selectIsGrid, selectSearchFields, selectTotalCount, selectWaitForFilters } from './grid.selectors';\nimport { SharedActions } from '../shared/shared.actions';\nimport { of } from 'rxjs';\nimport { GridData } from './grid.reducer';\nimport { FilterLogic, FilterOperator, GroupFilter, SearchOperator, SortDir } from './models';\nimport { selectQueryParam, selectUrl, selectUrlWithoutQuery } from '../router/router.selectors';\nimport { ConfirmationService } from '../../lib/confirmation.service';\nimport { SnackService } from '../../lib/snack.service';\nimport { ROUTER_NAVIGATION } from '@ngrx/router-store';\nimport { DefaultUrlSerializer, Router } from '@angular/router';\nimport { SearchField } from './grid-setup';\n\n@Injectable()\nexport class GridEffects {\n private router = inject(Router);\n private snack = inject(SnackService);\n private client = inject(HttpClient);\n private store = inject(Store);\n private actions$ = inject(Actions);\n private confirmation = inject(ConfirmationService);\n\n changePaging$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(GridActions.changePaging),\n concatLatestFrom(() => this.store.select(selectDataRequest)),\n map(([{ pageIndex, pageSize }, req]) => GridActions.updateRequest({ request: { ...req, paging: { page: pageIndex + 1, pageSize } } }))\n );\n });\n\n changeSort$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(GridActions.changeSort),\n concatLatestFrom(() => this.store.select(selectDataRequest)),\n map(([{ sort, dir }, req]) => GridActions.updateRequest({ request: { ...req, sortBy: sort, sortDir: dir == \"asc\" ? SortDir.Asc : SortDir.Desc } }))\n );\n });\n\n updateRequest$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(GridActions.updateRequest),\n concatLatestFrom(_ => [\n this.store.select(selectUrl),\n this.store.select(selectUrlWithoutQuery),\n this.store.select(selectQueryParam('base-filter'))\n ]),\n mergeMap(([{ request }, oldUrl, urlWithoutQuery, filter]) => {\n let url = `${urlWithoutQuery}?page=${request.paging?.page}&size=${request.paging?.pageSize}&sort-by=${request.sortBy ?? ''}&sort-dir=${request.sortDir == SortDir.Desc ? 'desc' : 'asc'}&filter=${request.filters ? btoa(JSON.stringify(request.filters)) : ''}&base-filter=${filter ?? ''}`;\n return oldUrl == url\n ? []\n : [SharedActions.navigate({ url })];\n })\n );\n });\n\n loadFromUrl$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(ROUTER_NAVIGATION),\n concatLatestFrom(() => [\n this.store.select(selectIsGrid),\n this.store.select(selectWaitForFilters),\n this.store.select(selectBaseFilters)\n ]),\n filter(([_, isGrid, wait, filters]) => !!isGrid && (!wait || !!filters)),\n map(() => GridActions.refresh())\n );\n });\n\n changeFilter$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(GridActions.changeFilter),\n concatLatestFrom(() => [\n this.store.select(selectDataRequest),\n this.store.select(selectSearchFields)\n ]),\n debounceTime(300),\n map(([{ filter }, req, fields]) => GridActions.updateRequest({\n request: {\n ...req, filters: filter\n ? buildFilters(filter, fields)\n : undefined\n }\n }))\n );\n });\n\n goTo$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(GridActions.goTo),\n mergeMap(({ url, filter, replaceUrl }) => {\n\n let baseFilter = filter ? btoa(JSON.stringify(filter)) : undefined;\n\n if (!url) {\n this.router.navigate([], { queryParams: { 'base-filter': baseFilter }, replaceUrl });\n return [];\n }\n\n let dus = new DefaultUrlSerializer();\n let parsed = dus.parse(url);\n\n parsed.queryParams['base-filter'] = filter ? btoa(JSON.stringify(filter)) : undefined;\n return [SharedActions.navigate({\n replaceUrl,\n url: dus.serialize(parsed)\n })];\n })\n );\n });\n\n loadData$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(GridActions.load),\n concatLatestFrom(({ name }) => [\n this.store.select(selectDataUrl(name))\n ]),\n map(([{ name, request }, dataUrl]) => GridActions.implicitLoad({ name, dataUrl, request }))\n );\n });\n\n implicitLoad$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(GridActions.implicitLoad),\n concatLatestFrom(() => [\n this.store.select(selectDataRequest)\n ]),\n filter(([{ dataUrl }]) => !!dataUrl),\n switchMap(([{ type, name, dataUrl, request }, urlRequest]) => {\n return this.client.post<GridData>(dataUrl!, request ?? urlRequest).pipe(\n map(data => GridActions.loadSuccess({ name, ...data })),\n catchError(error => of(SharedActions.badError({ source: type, error }))));\n })\n );\n });\n\n bulkDelete$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(GridActions.bulkDelete),\n concatLatestFrom(() => [\n this.store.select(selectGridName),\n this.store.select(selectDataRequest)\n ]),\n concatLatestFrom(([, name]) => [\n this.store.select(selectDataUrl(name!)),\n this.store.select(selectTotalCount(name!))]),\n filter(([[], url]) => !!url),\n mergeMap(([[{ type, ids }, _, request], url, totalCount]) =>\n this.confirmation.confirm({\n title: 'Delete', message:\n `Are you sure you want to delete ${ids?.length ? ids.length : totalCount} items?`\n }).pipe(\n filter(c => c),\n concatMap(_ => {\n let headers = new HttpHeaders({ 'Content-Type': 'application/json' });\n let body = {\n ...request,\n paging: undefined,\n sortBy: undefined,\n sortDir: undefined,\n filters: ids?.length ? {\n logic: FilterLogic.And,\n fields: [{\n names: ['id'], operator: FilterOperator.In, values: ids.map(id => id.toString())\n }]\n } : request.filters\n };\n return this.client.delete(url!, { headers, body }).pipe(\n map(() => GridActions.bulkDeleteSuccess()),\n catchError(error => of(SharedActions.badError({ source: type, error }))));\n }\n )\n )\n )\n )\n });\n\n refresh$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(GridActions.refresh),\n concatLatestFrom(() => this.store.select(selectGridName)),\n map(([_, name]) => GridActions.load({ name: name! }))\n );\n });\n\n bulkDeleteSuccess$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(GridActions.bulkDeleteSuccess),\n tap(() => this.snack.info('Deleted!')),\n map(() => GridActions.refresh())\n );\n });\n\n constructor() { }\n}\n\n\nfunction buildFilters(filter: string, fields: SearchField[] | undefined): GroupFilter | undefined {\n const expandedFields = fields?.map(f => typeof f === 'string' ? { field: f, operator: SearchOperator.Contains } : f) ?? [];\n const byOperator = expandedFields.reduce(\n (acc, cur) => {\n (acc[cur.operator] = acc[cur.operator] ?? []).push(cur.field);\n return acc;\n }, {} as { [key in SearchOperator]: string[] }\n );\n const groupFilters: GroupFilter[] = Object.entries(byOperator).map(([op, fieldNames]) => ({\n logic: FilterLogic.And,\n fields: [{ names: fieldNames, operator: op as unknown as FilterOperator, values: [filter] }]\n }));\n return groupFilters.length === 1 ? groupFilters[0] : { logic: FilterLogic.Or, groups: groupFilters };\n}\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GridEffects } from './grid.effects';\nimport { provideState } from '@ngrx/store';\nimport { gridFeature } from './grid.reducer';\nimport { provideEffects } from '@ngrx/effects';\n\n\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule\n ],\n providers: [\n provideState(gridFeature),\n provideEffects([GridEffects])\n ]\n})\nexport class GridModule { }\n","import { createActionGroup, props } from '@ngrx/store';\nimport { NamedItem } from './crud.reducer';\n\nexport const CrudActions = createActionGroup({\n source: 'Crud',\n events: {\n 'Load All': props<{ name: string }>(),\n 'Load All Success': props<{ name: string, all: NamedItem[] }>(),\n 'Configure': props<{ name: string, param: string }>(),\n 'Delete': props<{ name: string, value: any }>(),\n 'Save': props<{ name: string, value: any, stay?:boolean, id?: any }>(),\n 'Save Success': props<{ name: string, value: any, stay?:boolean }>(),\n 'Clear Saved': props<{ name: string }>(),\n 'Load': props<{ name: string }>(),\n 'Load Success': props<{ name: string, value: any }>()\n }\n});\n","import { createFeature, createReducer, on } from '@ngrx/store';\nimport { CrudActions } from './crud.actions';\n\nexport interface NamedItem {\n id: number,\n name: string\n}\n\nexport const crudFeatureKey = 'crud';\n\nexport interface State {\n urlPrefix: string,\n map: {\n [key: string]: {\n param?: string,\n all: NamedItem[],\n value?: any\n }\n },\n}\n\nexport const initialState: State = {\n urlPrefix: '/api',\n map: {}\n};\n\nexport const reducer = createReducer(\n initialState,\n on(CrudActions.load, CrudActions.clearSaved, (state, { name }) => ({ ...state, map: { ...state.map, [name]: { ...state.map[name], value: undefined } } })), \n on(CrudActions.configure, (state, { name, param }) => ({ ...state, map: { ...state.map, [name]: { ...state.map[name], param } } })),\n on(CrudActions.loadSuccess, (state, { name, value }) => ({ ...state, map: { ...state.map, [name]: { ...state.map[name], value } } })),\n on(CrudActions.saveSuccess, (state, { name, value }) => ({ ...state, map: { ...state.map, [name]: { ...state.map[name], value } } })),\n on(CrudActions.loadAllSuccess, (state, { name, all }) => ({ ...state, map: { ...state.map, [name]: { ...state.map[name], all } } })),\n);\n\nexport const crudFeature = createFeature({\n name: crudFeatureKey,\n reducer,\n});\n\n","import { createSelector } from '@ngrx/store';\nimport { crudFeature } from './crud.reducer';\n\nexport const selectParamName = (name: string) => createSelector(\n crudFeature.selectMap,\n map => map[name]?.param\n);\n\nexport const selectValue = (name: string) => createSelector(\n crudFeature.selectMap,\n map => map ? map[name]?.value : undefined\n);\n\nexport const selectAll = (name: string) => createSelector(\n crudFeature.selectMap,\n map => map ? map[name]?.all : undefined\n);\n\n\n","import { inject, Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { concatLatestFrom } from '@ngrx/operators';\nimport { catchError, concatMap, filter, map, mergeMap, tap } from 'rxjs/operators';\nimport { CrudActions } from './crud.actions';\nimport { Store } from '@ngrx/store';\nimport { HttpClient } from '@angular/common/http';\nimport { ConfirmationService } from '../../lib/confirmation.service';\nimport { selectParamName } from './crud.selectors';\nimport { selectRouteParam } from '../router/router.selectors';\nimport { crudFeature, NamedItem } from './crud.reducer';\nimport { of } from 'rxjs';\nimport { SharedActions } from '../shared/shared.actions';\nimport { Location } from '@angular/common';\nimport { GridActions } from '../grid/grid.actions';\nimport { SnackService } from '../../lib/snack.service';\n\n@Injectable()\nexport class CrudEffects {\n confirmation = inject(ConfirmationService);\n private snack = inject(SnackService);\n private store = inject(Store);\n private actions$ = inject(Actions);\n private client = inject(HttpClient);\n private location = inject(Location);\n\n load$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(CrudActions.load),\n concatLatestFrom(({ name }) =>\n this.store.select(selectParamName(name))\n ),\n concatLatestFrom(([_, param]) => [\n this.store.select(crudFeature.selectUrlPrefix),\n this.store.select(selectRouteParam(param)),\n ]),\n concatMap(([[{ type, name }], prefix, id]) =>\n id ? this.client.post<any>(`${prefix}/${name}/get`, id, {\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n }).pipe(\n map(value => CrudActions.loadSuccess({ name, value })),\n catchError(error => of(SharedActions.badError({ source: type, error }))))\n : of(CrudActions.loadSuccess({ name, value: undefined }))\n ));\n });\n\n loadAll$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(CrudActions.loadAll),\n concatLatestFrom(() => [\n this.store.select(crudFeature.selectUrlPrefix)\n ]),\n concatMap(([{ type, name }, prefix]) =>\n this.client.get<NamedItem[]>(`${prefix}/${name}/all`).pipe(\n map(all => CrudActions.loadAllSuccess({ name, all })),\n catchError(error => of(SharedActions.badError({ source: type, error }))))\n ));\n });\n\n save$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(CrudActions.save),\n concatLatestFrom(() => [\n this.store.select(crudFeature.selectUrlPrefix)\n ]),\n mergeMap(([{ type, name, value, stay, id }, prefix]) =>\n (value.id\n ? this.client.put(`${prefix}/${name}`, { id: id ?? value.id, value })\n : this.client.post(`${prefix}/${name}`, value))\n .pipe(\n map(value => CrudActions.saveSuccess({ name, value, stay })),\n catchError(error => of(SharedActions.badError({ source: type, error }))))\n )\n );\n });\n\n saveSuccess$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(CrudActions.saveSuccess),\n tap(() => this.snack.info('Saved!')),\n filter(({ stay }) => !stay),\n map(() => SharedActions.back())\n );\n });\n\n delete$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(CrudActions.delete),\n concatLatestFrom(() => [\n this.store.select(crudFeature.selectUrlPrefix)\n ]),\n concatMap(([{ type, name, value }, prefix]) => {\n let nameStr = value.name ?? `the ${name.toLowerCase()}`;\n return this.confirmation.confirm({\n message: `Are you sure you want to delete ${nameStr}?`,\n title: 'Delete'\n }).pipe(\n filter(confirmed => confirmed),\n mergeMap(() => this.client.post(`${prefix}/${name}/delete`, value.id, {\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n }).pipe(\n map(() => GridActions.refresh()),\n tap(() => this.snack.info('Deleted!')),\n catchError(error => of(SharedActions.badError({ source: type, error })))\n ))\n );\n })\n );\n });\n\n\n constructor() { }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { provideState } from '@ngrx/store';\nimport { crudFeature } from './crud.reducer';\nimport { provideEffects } from '@ngrx/effects';\nimport { CrudEffects } from './crud.effects';\n\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule\n ],\n providers: [\n provideState(crudFeature),\n provideEffects(CrudEffects) \n ]\n})\nexport class CrudModule { }\n","import { inject, Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType, OnInitEffects } from '@ngrx/effects';\nimport { catchError, map, mergeMap, startWith, tap } from 'rxjs/operators';\nimport { SharedActions } from './shared.actions';\nimport { Router } from '@angular/router';\nimport { Action, Store } from '@ngrx/store';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { Location } from '@angular/common';\nimport { MediaMatcher } from '@angular/cdk/layout';\n\n@Injectable()\nexport class SharedEffects implements OnInitEffects {\n private media = inject(MediaMatcher);\n private mobileQuery = this.media.matchMedia('(max-width: 768px)');\n private location = inject(Location);\n private store = inject(Store);\n private actions$ = inject(Actions);\n \n init$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(SharedActions.init),\n mergeMap(() => \n new Observable<boolean>(observer =>this.mobileQuery\n .addEventListener('change', () => observer.next(this.mobileQuery.matches)))),\n startWith(this.mobileQuery.matches),\n map(m => SharedActions.setMobile({ isMobile: m }))\n );\n });\n\n initBuild$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(SharedActions.init),\n mergeMap(() => this.http.get<string>('/build.txt').pipe(\n map(build => SharedActions.initSuccess({ build })),\n catchError(error => of(SharedActions.transientError({ source: 'init', error }))))\n ));\n });\n badError$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(SharedActions.badError),\n tap(({ error }) => {\n switch (error.status) {\n case 401:\n this.store.dispatch(SharedActions.login());\n break;\n case 404:\n this.router.navigate(['/', 'error', 'not-found']);\n break;\n case 403:\n this.router.navigate(['/', 'error', 'access-denied']);\n break;\n default:\n this.router.navigate(['/', 'error']);\n break;\n }\n }))\n }, { dispatch: false });\n\n accessDenied$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(SharedActions.accessDenied),\n tap(() => this.router.navigate(['/', 'error', 'access-denied']))\n );\n }, { dispatch: false });\n\n back$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(SharedActions.back),\n map(() => this.location.back())\n );\n }, { dispatch: false });\n\n navigate$ = createEffect(() => {\n return this.actions$.pipe(\n ofType(SharedActions.navigate),\n tap(({ url, replaceUrl }) => this.router.navigateByUrl(url, { replaceUrl }))\n );\n }, { dispatch: false });\n\n constructor(\n private http: HttpClient,\n private router: Router) { }\n\n ngrxOnInitEffects(): Action {\n return SharedActions.init();\n }\n}\n","import { createFeature, createReducer, on } from '@ngrx/store';\nimport { SharedActions } from './shared.actions';\n\nexport const sharedFeatureKey = 'shared';\n\nexport interface State {\n loading: number;\n build: string;\n isMobile: boolean;\n}\n\nexport const initialState: State = {\n isMobile: false,\n loading: 0,\n build: ''\n};\n\nexport const reducer = createReducer(\n initialState,\n on(SharedActions.setMobile, (state, { isMobile }) => ({ ...state, isMobile })),\n on(SharedActions.initSuccess, (state, { build }) => ({ ...state, build })),\n on(SharedActions.startRequest, state => ({ ...state, loading: state.loading + 1 })),\n on(SharedActions.endRequest, state => ({ ...state, loading: state.loading - 1 })),\n);\n\nexport const sharedFeature = createFeature({\n name: sharedFeatureKey,\n reducer,\n});\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { provideState, StoreModule } from '@ngrx/store';\nimport { SharedEffects } from './shared.effects';\nimport { sharedFeature } from './shared.reducer';\nimport { provideEffects } from '@ngrx/effects';\n\n\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule\n ],\n providers: [\n provideState(sharedFeature),\n provideEffects([SharedEffects])\n ]\n})\nexport class SharedModule { }\n","import { createSelector } from \"@ngrx/store\";\nimport { selectDataParam } from \"../router/router.selectors\";\n\nexport const selectTitle = createSelector(\n selectDataParam('title'),\n selectDataParam('hideTitle'),\n (title, hideTitle) => hideTitle ? undefined : title\n)","import { Data, Params, RouterStateSnapshot } from \"@angular/router\";\nimport { BaseRouterStoreState, RouterStateSerializer } from \"@ngrx/router-store\";\n\nexport interface RouterState extends BaseRouterStoreState {\n params: Params;\n queryParams: Params;\n data: Data;\n}\n\nexport class StoreRouteSerializer implements RouterStateSerializer<RouterState> {\n serialize(routerState: RouterStateSnapshot): RouterState {\n let route = routerState.root;\n let allData: Data = {};\n let allParams: any = {};\n allData = { ...allData, ...route.data };\n allParams = { ...allParams, ...route.params };\n while (route.firstChild) {\n route = route.firstChild;\n allData = { ...allData, ...route.data };\n allParams = { ...allParams, ...route.params };\n }\n\n const {\n url,\n root: { queryParams },\n } = routerState;\n\n return { url, params: allParams, queryParams, data: allData };\n }\n}","import { Directive, EventEmitter, inject, Injector } from \"@angular/core\";\nimport { ControlContainer, ControlValueAccessor, FormControl, FormControlDirective, FormControlName, FormGroup, NG_VALUE_ACCESSOR, NgControl, NgModel } from \"@angular/forms\";\nimport { Subscription } from \"rxjs\";\n\n\n@Directive({\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: HostControlDirective,\n },\n ],\n})\nexport class HostControlDirective implements ControlValueAccessor {\n setValue = new EventEmitter<any>();\n control!: FormControl;\n private injector = inject(Injector);\n private subscription = new Subscription();\n\n ngOnInit() {\n const ngControl = this.injector.get(NgControl, null, { self: true, optional: true });\n\n if (ngControl instanceof NgModel) {\n this.control = ngControl.control;\n this.subscription.add(ngControl.control.valueChanges.subscribe((value) => {\n if (ngControl.model !== value || ngControl.viewModel !== value) {\n ngControl.viewToModelUpdate(value);\n }\n }));\n\n } else if (ngControl instanceof FormControlDirective) {\n this.control = ngControl.control;\n } else if (ngControl instanceof FormControlName) {\n const container = this.injector.get(ControlContainer).control as FormGroup;\n if (ngControl.name)\n this.control = container.controls[ngControl.name] as FormControl;\n }\n this.control ??= new FormControl();\n this.subscription.add(this.control.valueChanges.subscribe((value) => {\n this.setValue.emit(value);\n }));\n this.setValue.emit(this.control.value);\n }\n\n writeValue() { }\n registerOnChange() { }\n registerOnTouched() { }\n\n ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n}\n\n\n","import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms';\n\nexport function markAllControlsTouched(control: AbstractControl | null): void {\n if (!control) return;\n\n if (control instanceof FormGroup) {\n Object.values(control.controls).forEach(ctrl => markAllControlsTouched(ctrl));\n } else if (control instanceof FormArray) {\n control.controls.forEach(ctrl => markAllControlsTouched(ctrl));\n } else if (control instanceof FormControl) {\n control.markAsTouched({ onlySelf: true });\n }\n}","/*\n * Public API Surface of the library\n */\n\nexport * from './lib/snack.service';\nexport * from './lib/loading.interceptor';\nexport * from './lib/confirmation.service';\nexport * from './lib/confirmation-dialog/confirmation-dialog.component';\nexport * from './lib/smart-select/smart-select.component';\nexport * from './lib/smart-select/display-presets';\nexport * from './lib/detail-actions/detail-actions.component';\nexport * from './lib/email/email.component';\nexport * from './lib/grid/grid.component';\nexport * from './lib/grid/grid-config';\nexport * from './state/router/router.module';\nexport * from './state/router/router.actions';\nexport * from './state/router/router.selectors';\nexport * from './state/grid/grid.module';\nexport * from './state/grid/grid.actions';\nexport * from './state/grid/models';\nexport { gridFeature } from './state/grid/grid.reducer';\nexport type { GridData, GenericGridData } from './state/grid/grid.reducer';\nexport * from './state/grid/grid.selectors';\nexport * from './state/crud/crud.module';\nexport * from './state/crud/crud.actions';\nexport { crudFeature } from './state/crud/crud.reducer';\nexport * from './state/crud/crud.selectors'; \nexport * from './state/shared/shared.module';\nexport * from './state/shared/shared.actions';\nexport { sharedFeature } from './state/shared/shared.reducer';\nexport * from './state/shared/shared.selectors';\nexport * from './state/router/store-route-serializer';\nexport { HostControlDirective } from './lib/host-control-directive.directive';\nexport * from './lib/grid/action-event';\nexport * from './lib/shared/forms.utility';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i4","i6","i2","i3","initialState","reducer","i5","i7","i8","map","mergeMap","filter","tap"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -521,12 +521,12 @@ declare const CrudActions: {
521
521
  name: string;
522
522
  value: any;
523
523
  stay?: boolean;
524
- id: any;
524
+ id?: any;
525
525
  }) => {
526
526
  name: string;
527
527
  value: any;
528
528
  stay?: boolean;
529
- id: any;
529
+ id?: any;
530
530
  } & _ngrx_store.Action<"[Crud] Save">>;
531
531
  saveSuccess: _ngrx_store.ActionCreator<"[Crud] Save Success", (props: {
532
532
  name: string;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "axioma-material",
3
3
  "author": "Petr Shelomovskiy",
4
4
  "license": "MIT",
5
- "version": "6.1.21",
5
+ "version": "6.1.22",
6
6
  "peerDependencies": {
7
7
  "@angular/common": "^20.0.2",
8
8
  "@angular/core": "^20.0.2"