{"version":3,"file":"valtimo-object.mjs","sources":["../../../../projects/valtimo/object/src/lib/services/object.service.ts","../../../../projects/valtimo/object/src/lib/models/object.model.ts","../../../../projects/valtimo/object/src/lib/services/object-column.service.ts","../../../../projects/valtimo/object/src/lib/components/object-list/object-list.component.ts","../../../../projects/valtimo/object/src/lib/components/object-list/object-list.component.html","../../../../projects/valtimo/object/src/lib/services/tab.enum.ts","../../../../projects/valtimo/object/src/lib/services/object-state.service.ts","../../../../projects/valtimo/object/src/lib/services/tab.service.ts","../../../../projects/valtimo/object/src/lib/components/object-detail-container/tabs/object-detail/object-detail.component.ts","../../../../projects/valtimo/object/src/lib/components/object-detail-container/tabs/object-detail/object-detail.component.html","../../../../projects/valtimo/object/src/lib/components/object-detail-container/object-detail-container.component.ts","../../../../projects/valtimo/object/src/lib/components/object-detail-container/object-detail-container.component.html","../../../../projects/valtimo/object/src/lib/object-routing.module.ts","../../../../projects/valtimo/object/src/lib/services/object-menu.service.ts","../../../../projects/valtimo/object/src/lib/services/index.ts","../../../../projects/valtimo/object/src/lib/object.module.ts","../../../../projects/valtimo/object/src/public-api.ts","../../../../projects/valtimo/object/src/valtimo-object.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {HttpClient} from '@angular/common/http';\nimport {ConfigService} from '@valtimo/shared';\nimport {ObjectConfiguration} from '../models/object.model';\nimport {FormDefinition} from '@valtimo/form-management';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ObjectService {\n  private readonly valtimoEndpointUri: string;\n\n  constructor(\n    private http: HttpClient,\n    configService: ConfigService\n  ) {\n    this.valtimoEndpointUri = configService.config.valtimoApi.endpointUri;\n  }\n\n  public getObjectsByObjectManagementId(\n    objectManagementId: string,\n    params?: any\n  ): Observable<ObjectConfiguration> {\n    return this.http.get<ObjectConfiguration>(\n      `${this.valtimoEndpointUri}v1/object/management/configuration/${objectManagementId}/object`,\n      {params}\n    );\n  }\n\n  public postObjectsByObjectManagementId(\n    objectManagementId: string,\n    params?: any,\n    payload?: any\n  ): Observable<ObjectConfiguration> {\n    return this.http.post<ObjectConfiguration>(\n      `${this.valtimoEndpointUri}v1/object/management/configuration/${objectManagementId}/object`,\n      payload,\n      {params}\n    );\n  }\n\n  public createObject(params: {objectManagementId: string}, payload: object): Observable<any> {\n    return this.http.post<any>(`${this.valtimoEndpointUri}v1/object`, payload, {params});\n  }\n\n  public updateObject(\n    params: {objectManagementId: string; objectId: string},\n    payload: object\n  ): Observable<any> {\n    return this.http.patch<any>(`${this.valtimoEndpointUri}v1/object`, payload, {params});\n  }\n\n  public deleteObject(params: {objectManagementId: string; objectId: string}): Observable<any> {\n    return this.http.delete<any>(`${this.valtimoEndpointUri}v1/object`, {params});\n  }\n\n  public getPrefilledObjectFromObjectUrl(params: any): Observable<FormDefinition> {\n    return this.http.get<FormDefinition>(`${this.valtimoEndpointUri}v1/object/form`, {params});\n  }\n\n  public removeEmptyStringValuesFromSubmission(submission) {\n    return Object.fromEntries(Object.entries(submission).filter(([_, value]) => value !== ''));\n  }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ninterface ObjectConfiguration {\n  content: ObjectConfigurationItem[];\n}\n\ninterface ObjectConfigurationItem {\n  id: string;\n  items: Item[];\n}\n\ninterface Item {\n  key: string;\n  value: string;\n}\n\nenum FormType {\n  SUMMARY = 'SUMMARY',\n  EDITFORM = 'EDITFORM',\n}\n\nenum ColumnType {\n  DEFAULT = 'DEFAULT',\n  CUSTOM = 'CUSTOM',\n}\n\nexport {ObjectConfiguration, ObjectConfigurationItem, Item, FormType, ColumnType};\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {ConfigService} from '@valtimo/shared';\nimport {map, Observable} from 'rxjs';\nimport {ObjectManagementService, SearchColumn, SearchListColumn} from '@valtimo/object-management';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ObjectColumnService {\n  constructor(\n    private readonly configService: ConfigService,\n    private readonly objectManagementService: ObjectManagementService\n  ) {}\n\n  getObjectColumns(configurationId: string): Observable<Array<SearchColumn>> {\n    return this.objectManagementService\n      .getSearchList(configurationId)\n      .pipe(\n        map(\n          objectListColumns =>\n            objectListColumns &&\n            Array.isArray(objectListColumns) &&\n            objectListColumns.length > 0 &&\n            this.mapObjectListColumnsToSearchColumns(objectListColumns)\n        )\n      );\n  }\n\n  private mapObjectListColumnsToSearchColumns(\n    searchListColumns: Array<SearchListColumn>\n  ): Array<SearchColumn> {\n    return searchListColumns.map(searchListColumn => ({\n      translationKey: searchListColumn.key,\n      sortable: searchListColumn.sortable,\n      defaultSort: searchListColumn.defaultSort,\n      viewType: this.getDisplayType(searchListColumn.displayType.type),\n      propertyName: searchListColumn.path,\n      ...(searchListColumn.title && {title: searchListColumn.title}),\n      ...(searchListColumn?.displayType?.displayTypeParameters?.enum && {\n        enum: searchListColumn.displayType.displayTypeParameters.enum as any,\n      }),\n      ...(searchListColumn.displayType?.displayTypeParameters?.dateFormat && {\n        format: searchListColumn.displayType?.displayTypeParameters?.dateFormat,\n      }),\n    }));\n  }\n\n  private getDisplayType(searchListColumnDisplayType: string): string {\n    switch (searchListColumnDisplayType) {\n      default:\n        return searchListColumnDisplayType;\n    }\n  }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ListField, PageTitleService, Pagination} from '@valtimo/components';\nimport {\n  GlobalNotificationService,\n  SearchField,\n  SearchFieldValues,\n  SearchFilter,\n  SearchFilterRange,\n} from '@valtimo/shared';\nimport {ObjectManagementService, SearchColumn} from '@valtimo/object-management';\nimport {\n  BehaviorSubject,\n  combineLatest,\n  distinctUntilChanged,\n  filter,\n  map,\n  Observable,\n  of,\n  startWith,\n  throwError,\n} from 'rxjs';\nimport {catchError, finalize, switchMap, take, tap} from 'rxjs/operators';\nimport {ColumnType, FormType} from '../../models/object.model';\nimport {ObjectColumnService} from '../../services/object-column.service';\nimport {ObjectService} from '../../services/object.service';\n\n@Component({\n  standalone: false,\n  selector: 'valtimo-object-list',\n  templateUrl: './object-list.component.html',\n  styleUrls: ['./object-list.component.scss'],\n})\nexport class ObjectListComponent {\n  readonly loading$ = new BehaviorSubject<boolean>(true);\n  readonly submission$ = new BehaviorSubject<any>({});\n  readonly formValid$ = new BehaviorSubject<boolean>(false);\n  readonly showModal$ = new BehaviorSubject<boolean>(false);\n  readonly disableInput$ = new BehaviorSubject<boolean>(false);\n  readonly clearForm$ = new BehaviorSubject<boolean>(false);\n  readonly columnType$ = new BehaviorSubject<ColumnType>(ColumnType.DEFAULT);\n\n  readonly objectManagementId$: Observable<string> = this.route.params.pipe(\n    map(params => params.objectManagementId),\n    tap(objectManagementId => {\n      if (objectManagementId) {\n        this.objectManagementService.getObjectById(objectManagementId).subscribe(objectType => {\n          if (objectType.title) {\n            this.pageTitleService.setCustomPageTitle(objectType.title);\n          }\n        });\n      }\n    })\n  );\n\n  private readonly refreshObjectList$ = new BehaviorSubject<null>(null);\n\n  readonly currentPageAndSize$ = new BehaviorSubject<Partial<Pagination>>({\n    page: 0,\n    size: 10,\n  });\n\n  readonly pageSizes$ = new BehaviorSubject<Partial<Pagination>>({\n    collectionSize: 0,\n  });\n\n  readonly pagination$: Observable<Pagination> = combineLatest([\n    this.currentPageAndSize$,\n    this.pageSizes$,\n  ]).pipe(\n    map(\n      ([currentPage, sizes]) =>\n        ({...currentPage, ...sizes, page: currentPage.page + 1}) as Pagination\n    )\n  );\n\n  paginationClicked(newPageNumber): void {\n    this.currentPageAndSize$.pipe(take(1)).subscribe(currentPage => {\n      this.currentPageAndSize$.next({...currentPage, page: newPageNumber - 1});\n    });\n  }\n\n  paginationSet(newPageSize): void {\n    if (newPageSize) {\n      this.currentPageAndSize$.pipe(take(1)).subscribe(currentPage => {\n        this.currentPageAndSize$.next({...currentPage, size: newPageSize});\n      });\n    }\n  }\n\n  private readonly searchFieldValues$ = new BehaviorSubject<SearchFieldValues>({});\n  readonly objectSearchFields$: Observable<Array<SearchField> | null> =\n    this.objectManagementId$.pipe(\n      distinctUntilChanged(),\n      switchMap(objectManagementId =>\n        this.objectManagementService.getSearchField(objectManagementId)\n      ),\n      map(searchFields =>\n        searchFields.map(searchField => {\n          // @ts-ignore\n          searchField.dataType = searchField.dataType.toLowerCase();\n          // @ts-ignore\n          searchField.fieldType = searchField.fieldType.toLowerCase();\n          return searchField;\n        })\n      )\n    );\n\n  readonly objectConfiguration$: Observable<Array<any>> = combineLatest([\n    this.objectManagementId$,\n    this.currentPageAndSize$,\n    this.columnType$,\n    this.searchFieldValues$,\n    this.translateService.stream('key'),\n    this.refreshObjectList$,\n  ]).pipe(\n    switchMap(([objectManagementId, currentPage, columnType, searchFieldValues]) => {\n      const handleError = () => {\n        this.disableInput();\n        return of(null);\n      };\n\n      if (columnType === ColumnType.CUSTOM) {\n        return this.objectService\n          .postObjectsByObjectManagementId(\n            objectManagementId,\n            {\n              page: currentPage.page,\n              size: currentPage.size,\n            },\n            Object.keys(searchFieldValues).length > 0\n              ? {otherFilters: this.mapSearchValuesToFilters(searchFieldValues)}\n              : {}\n          )\n          .pipe(catchError(() => handleError()));\n      }\n\n      return this.objectService\n        .getObjectsByObjectManagementId(objectManagementId, {\n          page: currentPage.page,\n          size: currentPage.size,\n        })\n        .pipe(catchError(() => handleError()));\n    }),\n    tap(instanceRes => {\n      if (instanceRes != null) {\n        this.pageSizes$.pipe(take(1)).subscribe(sizes => {\n          // @ts-ignore\n          this.pageSizes$.next({...sizes, collectionSize: instanceRes.totalElements});\n        });\n      }\n    }),\n    map(res =>\n      res?.content?.map(record =>\n        record?.items?.reduce(\n          (obj, item) => Object.assign(obj, {objectId: record.id}, {[item.key]: item.value}),\n          {}\n        )\n      )\n    ),\n    tap(() => this.loading$.next(false))\n  );\n\n  readonly formDefinition$: Observable<any> = combineLatest([\n    this.objectManagementId$,\n    this.clearForm$,\n  ]).pipe(\n    switchMap(([objectManagementId]) =>\n      this.objectService\n        .getPrefilledObjectFromObjectUrl({objectManagementId, formType: FormType.EDITFORM})\n        .pipe(\n          catchError(error => {\n            this.handleRetrievingFormError(error);\n            this.disableInput();\n            return of(null).pipe(startWith(null));\n          })\n        )\n    ),\n    map(res => {\n      if (res != null) {\n        this.enableInput();\n      }\n\n      return res?.formDefinition;\n    }),\n    startWith(null),\n    finalize(() => this.loading$.next(false))\n  );\n\n  private readonly columns$: Observable<Array<SearchColumn>> = this.objectManagementId$.pipe(\n    switchMap(objectManagementId => this.objectColumnService.getObjectColumns(objectManagementId)),\n    map(res => res)\n  );\n\n  readonly fields$: Observable<Array<ListField>> = combineLatest([\n    this.columns$,\n    this.translateService.stream('key'),\n  ]).pipe(\n    map(([columns]) => {\n      if (columns?.length > 0) {\n        this.columnType$.next(ColumnType.CUSTOM);\n\n        return [\n          ...columns.map(column => {\n            const translationKey = `fieldLabels.${column.translationKey}`;\n            const translation = this.translateService.instant(translationKey);\n            const validTranslation = translation !== translationKey && translation;\n            return {\n              key: column.translationKey,\n              label: column.title || validTranslation || column.translationKey,\n              sortable: column.sortable,\n              ...(column.viewType && {viewType: column.viewType || ''}),\n              ...(column.enum && {enum: column.enum}),\n              ...(column.format && {format: column.format}),\n            };\n          }),\n        ];\n      }\n\n      this.columnType$.next(ColumnType.DEFAULT);\n      return this.setDefaultFields();\n    })\n  );\n\n  constructor(\n    private readonly globalNotificationService: GlobalNotificationService,\n    private readonly objectColumnService: ObjectColumnService,\n    private readonly objectManagementService: ObjectManagementService,\n    private readonly objectService: ObjectService,\n    private readonly pageTitleService: PageTitleService,\n    private readonly route: ActivatedRoute,\n    private readonly router: Router,\n    private readonly translate: TranslateService,\n    private readonly translateService: TranslateService\n  ) {}\n\n  openModal(): void {\n    this.showModal$.next(true);\n  }\n\n  closeModal(): void {\n    this.showModal$.next(false);\n    this.clearForm$.next(true);\n  }\n\n  onFormioChange(formio): void {\n    if (formio.data != null) {\n      this.submission$.next(formio.data);\n      this.formValid$.next(formio.isValid);\n    }\n  }\n\n  public addObject(): void {\n    this.disableInput();\n    combineLatest([this.objectManagementId$, this.submission$, this.formValid$])\n      .pipe(\n        take(1),\n        filter(([objectManagementId, submission, formValid]) => formValid),\n        switchMap(([objectManagementId, submission]) =>\n          this.objectService\n            .createObject(\n              {objectManagementId},\n              {...this.objectService.removeEmptyStringValuesFromSubmission(submission)}\n            )\n            .pipe(\n              take(1),\n              catchError((error: any) => {\n                this.handleCreateObjectError(error);\n                return throwError(error);\n              })\n            )\n        ),\n        finalize(() => {\n          this.enableInput();\n        })\n      )\n      .subscribe({\n        next: () => {\n          this.closeModal();\n          this.refreshObjectList();\n          this.clearForm$.next(true);\n          this.globalNotificationService.showToast({\n            title: this.translate.instant('object.messages.objectCreated'),\n            type: 'success',\n          });\n        },\n      });\n  }\n\n  redirectToDetails(record): void {\n    const objectId = record.objectUrl ? record.objectUrl.split('/').pop() : record.objectId;\n    this.objectManagementId$.pipe(take(1)).subscribe(configurationId => {\n      this.router.navigate([`/objects/${configurationId}/${objectId}`]);\n    });\n  }\n\n  search(searchFieldValues: SearchFieldValues): void {\n    this.searchFieldValues$.next(searchFieldValues || {});\n  }\n\n  private refreshObjectList(): void {\n    this.refreshObjectList$.next(null);\n  }\n\n  private disableInput(): void {\n    this.disableInput$.next(true);\n  }\n\n  private enableInput(): void {\n    this.disableInput$.next(false);\n  }\n\n  private setDefaultFields() {\n    const keys: Array<string> = ['recordIndex', 'objectUrl'];\n    return keys.map(key => ({\n      label: `${this.translateService.instant(`object.labels.${key}`)}`,\n      key,\n      sortable: false,\n      type: 'string',\n    }));\n  }\n\n  private handleRetrievingFormError(error: any) {\n    this.globalNotificationService.showToast({\n      title: this.translate.instant('object.messages.objectRetrievingFormError'),\n      type: 'error',\n    });\n    return throwError(error);\n  }\n\n  private handleCreateObjectError(error: any) {\n    this.globalNotificationService.showToast({\n      title: this.translate.instant('object.messages.objectCreationError'),\n      type: 'error',\n    });\n    return throwError(error);\n  }\n\n  private mapSearchValuesToFilters(\n    values: SearchFieldValues\n  ): Array<SearchFilter | SearchFilterRange> {\n    const filters: Array<SearchFilter | SearchFilterRange> = [];\n\n    Object.keys(values).forEach(valueKey => {\n      const searchValue = values[valueKey] as any;\n      if (searchValue.start) {\n        filters.push({key: valueKey, rangeFrom: searchValue.start, rangeTo: searchValue.end});\n      } else if (Array.isArray(searchValue)) {\n        filters.push({key: valueKey, values: searchValue});\n      } else {\n        // @ts-ignore\n        filters.push({key: valueKey, values: [searchValue]});\n      }\n    });\n\n    return filters;\n  }\n}\n","<!--\n  ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n  ~\n  ~ Licensed under EUPL, Version 1.2 (the \"License\");\n  ~ you may not use this file except in compliance with the License.\n  ~ You may obtain a copy of the License at\n  ~\n  ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" basis,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the License for the specific language governing permissions and\n  ~ limitations under the License.\n  -->\n<ng-container\n  *ngIf=\"{\n    loading: loading$ | async,\n    pagination: pagination$ | async,\n    disableInput: disableInput$ | async,\n    fields: fields$ | async,\n    objectConfiguration: objectConfiguration$ | async,\n  } as obs\"\n>\n  <div class=\"main-content pt-0\">\n    <div class=\"container-fluid\">\n      <div class=\"col-12 px-0 mb-5\">\n        <ng-container *ngIf=\"obs.loading === false; else loading\">\n          <ng-container *ngTemplateOutlet=\"searchFields; context: {obs: obs}\"></ng-container>\n          <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n        </ng-container>\n      </div>\n    </div>\n  </div>\n  <ng-container *ngTemplateOutlet=\"createNewModal\"></ng-container>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n  <button\n    (click)=\"openModal()\"\n    cdsButton=\"primary\"\n    size=\"md\"\n    class=\"ml-3\"\n    [disabled]=\"obs.disableInput || obs.loading\"\n  >\n    {{ 'object.createObject' | translate }}\n    <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n  </button>\n</ng-template>\n\n<ng-template #searchFields let-obs=\"obs\">\n  <div class=\"mb-3\">\n    <valtimo-search-fields\n      [loading]=\"obs.loading\"\n      [searchFields]=\"objectSearchFields$ | async\"\n      (doSearch)=\"search($event)\"\n      [objectManagementId]=\"objectManagementId$ | async\"\n      [setValuesSubject$]=\"null\"\n    ></valtimo-search-fields>\n  </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n  <valtimo-carbon-list\n    [items]=\"obs.objectConfiguration\"\n    [fields]=\"obs.fields\"\n    [header]=\"false\"\n    [pagination]=\"obs.pagination\"\n    paginationIdentifier=\"objectConfigurationList\"\n    (paginationClicked)=\"paginationClicked($event)\"\n    (paginationSet)=\"paginationSet($event)\"\n    (rowClicked)=\"redirectToDetails($event)\"\n  >\n    <ng-container carbonToolbarContent>\n      <button cdsButton=\"primary\" (click)=\"openModal()\">\n        {{ 'object.createObject' | translate }}\n\n        <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n      </button>\n    </ng-container>\n  </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #createNewModal>\n  <cds-modal\n    valtimoCdsModal\n    *ngIf=\"{\n      show: showModal$ | async,\n      formValid: formValid$ | async,\n      formDefinition: formDefinition$ | async,\n      disableInput: disableInput$ | async,\n    } as modalObs\"\n    [open]=\"modalObs.show\"\n    (close)=\"closeModal()\"\n  >\n    <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n      <h3 cdsModalHeaderHeading>\n        {{ 'object.createObject' | translate }}\n      </h3>\n    </cds-modal-header>\n    <section cdsModalContent>\n      <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n    </section>\n    <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n  </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n  <valtimo-form-io\n    [form]=\"modalObs.formDefinition\"\n    (change)=\"onFormioChange($event)\"\n  ></valtimo-form-io>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n  <cds-modal-footer>\n    <ng-container>\n      <button\n        cdsButton=\"ghost\"\n        [attr.modal-primary-focus]=\"true\"\n        (click)=\"closeModal()\"\n        [disabled]=\"modalObs.disableInput\"\n      >\n        {{ 'object.close' | translate }}\n      </button>\n      <button\n        cdsButton=\"primary\"\n        [attr.modal-primary-focus]=\"true\"\n        (click)=\"addObject()\"\n        [disabled]=\"modalObs.disableInput || modalObs.formValid === false\"\n      >\n        {{ 'object.save' | translate }}\n      </button>\n    </ng-container>\n  </cds-modal-footer>\n</ng-template>\n\n<ng-template #loading>\n  <valtimo-carbon-list [loading]=\"true\"> </valtimo-carbon-list>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport enum TabEnum {\n  GENERAL = 'general',\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ObjectStateService {\n  private readonly _showModal$ = new Subject();\n  private readonly _hideModal$ = new Subject();\n  private readonly _refresh$ = new BehaviorSubject<null>(null);\n  private readonly _modalType$ = new BehaviorSubject<any>('add');\n\n  constructor() {}\n\n  get showModal$(): Observable<any> {\n    return this._showModal$.asObservable();\n  }\n\n  get hideModal$(): Observable<any> {\n    return this._hideModal$.asObservable();\n  }\n\n  get refresh$(): Observable<any> {\n    return this._refresh$.asObservable();\n  }\n\n  get modalType$(): Observable<any> {\n    return this._modalType$.asObservable();\n  }\n\n  showModal(): void {\n    this._showModal$.next(null);\n  }\n\n  hideModal(): void {\n    this._hideModal$.next(null);\n  }\n\n  refresh(): void {\n    this._refresh$.next(null);\n  }\n\n  setModalType(type: any): void {\n    this._modalType$.next(type);\n  }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {TabEnum} from './tab.enum';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TabService {\n  private _currentTab$ = new BehaviorSubject<TabEnum>(TabEnum.GENERAL);\n\n  public get currentTab$(): Observable<TabEnum> {\n    return this._currentTab$.asObservable();\n  }\n\n  public set currentTab(tab: TabEnum) {\n    this._currentTab$.next(tab);\n  }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {Component, OnDestroy} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport {BreadcrumbService} from '@valtimo/components';\nimport {GlobalNotificationService} from '@valtimo/shared';\nimport {ObjectManagementService} from '@valtimo/object-management';\nimport {BehaviorSubject, combineLatest, map, Observable, of, Subject, throwError} from 'rxjs';\nimport {catchError, finalize, switchMap, take, tap} from 'rxjs/operators';\nimport {FormType} from '../../../../models/object.model';\nimport {ObjectService} from '../../../../services/object.service';\n\n@Component({\n  standalone: false,\n  selector: 'valtimo-object-detail',\n  templateUrl: './object-detail.component.html',\n  styleUrls: ['./object-detail.component.scss'],\n})\nexport class ObjectDetailComponent implements OnDestroy {\n  readonly loading$ = new BehaviorSubject<boolean>(true);\n  readonly submission$ = new BehaviorSubject<any>({});\n  readonly formValid$ = new BehaviorSubject<boolean>(false);\n  readonly showModal$ = new BehaviorSubject<boolean>(false);\n  readonly disableInput$ = new BehaviorSubject<boolean>(false);\n  readonly showDeleteModal$ = new Subject<boolean>();\n  readonly deleteObjectUrl$ = new BehaviorSubject<string>('');\n\n  private readonly refreshObject$ = new BehaviorSubject<null>(null);\n\n  readonly objectManagementId$: Observable<string> = this.route.params.pipe(\n    map(params => params.objectManagementId),\n    tap(objectManagementId => {\n      if (!this._settingBreadcrumb && objectManagementId) {\n        this._settingBreadcrumb = true;\n        this.objectManagementService.getObjectById(objectManagementId).subscribe(objectType => {\n          if (objectType.id && objectType.title) {\n            this.setBreadcrumb(objectType.id, objectType.title);\n          }\n        });\n      }\n    })\n  );\n  readonly objectId$: Observable<string> = this.route.params.pipe(map(params => params.objectId));\n\n  readonly formioFormSummary$: Observable<any> = combineLatest([\n    this.objectManagementId$,\n    this.objectId$,\n    this.refreshObject$,\n  ]).pipe(\n    switchMap(([objectManagementId, objectId]) =>\n      this.objectService\n        .getPrefilledObjectFromObjectUrl({objectManagementId, objectId, formType: FormType.SUMMARY})\n        .pipe(catchError(() => this.handleRetrievingFormError()))\n    ),\n    map(res => res?.formDefinition),\n    tap(() => this.loading$.next(false))\n  );\n\n  readonly formioFormEdit$: Observable<any> = combineLatest([\n    this.objectManagementId$,\n    this.objectId$,\n    this.refreshObject$,\n  ]).pipe(\n    switchMap(([objectManagementId, objectId]) =>\n      this.objectService\n        .getPrefilledObjectFromObjectUrl({\n          objectManagementId,\n          objectId,\n          formType: FormType.EDITFORM,\n        })\n        .pipe(\n          catchError(() => {\n            this.disableInput();\n            return this.handleRetrievingFormError();\n          })\n        )\n    ),\n    map(res => res?.formDefinition),\n    tap(() => this.loading$.next(false))\n  );\n\n  private _settingBreadcrumb = false;\n\n  constructor(\n    private readonly breadcrumbService: BreadcrumbService,\n    private readonly globalNotificationService: GlobalNotificationService,\n    private readonly objectManagementService: ObjectManagementService,\n    private readonly objectService: ObjectService,\n    private readonly route: ActivatedRoute,\n    private readonly router: Router,\n    private readonly translate: TranslateService\n  ) {}\n\n  public ngOnDestroy(): void {\n    this.breadcrumbService.clearSecondBreadcrumb();\n  }\n\n  saveObject(): void {\n    this.disableInput();\n\n    this.updateObject();\n  }\n\n  deleteObject(): void {\n    this.showDeleteModal$.next(true);\n  }\n\n  deleteObjectConfirmation(): void {\n    this.disableInput();\n    combineLatest([this.objectManagementId$, this.objectId$])\n      .pipe(take(1))\n      .subscribe(([objectManagementId, objectId]) => {\n        this.objectService\n          .deleteObject({objectManagementId, objectId})\n          .pipe(\n            take(1),\n            catchError((error: any) => this.handleDeleteObjectError(error)),\n            finalize(() => {\n              this.enableInput();\n            })\n          )\n          .subscribe(() => {\n            this.closeModal();\n            this.globalNotificationService.showToast({\n              title: this.translate.instant('object.messages.objectDeleted'),\n              type: 'success',\n            });\n            this.router.navigate([`/objects/${objectManagementId}`]);\n          });\n      });\n  }\n\n  openModal(): void {\n    this.showModal$.next(true);\n    this.enableInput();\n  }\n\n  onFormioChange(formio): void {\n    if (formio.data != null) {\n      this.submission$.next(formio.data);\n      this.formValid$.next(formio.isValid);\n    }\n  }\n\n  closeModal(): void {\n    this.showModal$.next(false);\n  }\n\n  private updateObject(): void {\n    this.disableInput();\n    combineLatest([this.objectManagementId$, this.objectId$, this.submission$, this.formValid$])\n      .pipe(take(1))\n      .subscribe(([objectManagementId, objectId, submission, formValid]) => {\n        if (formValid) {\n          submission = this.objectService.removeEmptyStringValuesFromSubmission(submission);\n          this.objectService\n            .updateObject({objectManagementId, objectId}, {...submission})\n            .pipe(\n              take(1),\n              catchError((error: any) => this.handleUpdateObjectError(error)),\n              finalize(() => {\n                this.enableInput();\n              })\n            )\n            .subscribe(() => {\n              this.closeModal();\n              this.refreshObject();\n              this.globalNotificationService.showToast({\n                title: this.translate.instant('object.messages.objectUpdated'),\n                type: 'success',\n              });\n            });\n        }\n      });\n  }\n\n  private refreshObject(): void {\n    this.refreshObject$.next(null);\n  }\n\n  private disableInput(): void {\n    this.disableInput$.next(true);\n  }\n\n  private enableInput(): void {\n    this.disableInput$.next(false);\n  }\n\n  private handleRetrievingFormError() {\n    this.globalNotificationService.showToast({\n      title: this.translate.instant('object.messages.objectRetrievingFormError'),\n      type: 'error',\n    });\n    this.loading$.next(false);\n    return of(null);\n  }\n\n  private handleUpdateObjectError(error: any) {\n    this.closeModal();\n    this.globalNotificationService.showToast({\n      title: this.translate.instant('object.messages.objectUpdateError'),\n      type: 'error',\n    });\n    return throwError(error);\n  }\n\n  private handleDeleteObjectError(error: any) {\n    this.closeModal();\n    this.globalNotificationService.showToast({\n      title: this.translate.instant('object.messages.objectDeleteError'),\n      type: 'error',\n    });\n    return throwError(error);\n  }\n\n  private setBreadcrumb(objectTypeId: string, title: string): void {\n    this.breadcrumbService.setSecondBreadcrumb({\n      route: [`/objects/${objectTypeId}`],\n      content: title,\n      href: `/objects/${objectTypeId}`,\n    });\n  }\n}\n","<!--\n  ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n  ~\n  ~ Licensed under EUPL, Version 1.2 (the \"License\");\n  ~ you may not use this file except in compliance with the License.\n  ~ You may obtain a copy of the License at\n  ~\n  ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" basis,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the License for the specific language governing permissions and\n  ~ limitations under the License.\n  -->\n<ng-container\n  *ngIf=\"{\n    formioFormSummary: formioFormSummary$ | async,\n    disableInput: disableInput$ | async,\n  } as obs\"\n>\n  <div class=\"container-fluid pr-0 pl-0\">\n    <div class=\"row\">\n      <div class=\"col-12\">\n        <div class=\"text-right\">\n          <div class=\"btn-group mb-1\">\n            <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n          </div>\n        </div>\n      </div>\n      <div class=\"col-12\">\n        <ng-container *ngTemplateOutlet=\"widget; context: {obs: obs}\"></ng-container>\n      </div>\n    </div>\n  </div>\n  <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n  <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n  <button [disabled]=\"obs.disableInput\" (click)=\"openModal()\" cdsButton=\"primary\" size=\"md\">\n    {{ 'object.editObject' | translate }}\n    <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n  </button>\n\n  <button (click)=\"deleteObject()\" cdsButton=\"danger\" size=\"md\" class=\"ml-3\">\n    {{ 'object.deleteObject' | translate }}\n    <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n  </button>\n</ng-template>\n\n<ng-template #widget let-obs=\"obs\">\n  <valtimo-form-io\n    *ngIf=\"obs.formioFormSummary\"\n    [form]=\"obs.formioFormSummary\"\n    [readOnly]=\"true\"\n  ></valtimo-form-io>\n</ng-template>\n\n<ng-template #createEditModal>\n  <cds-modal\n    valtimoCdsModal\n    *ngIf=\"{\n      show: showModal$ | async,\n      formValid: formValid$ | async,\n      disableInput: disableInput$ | async,\n      formioFormEdit: formioFormEdit$ | async,\n    } as modalObs\"\n    [open]=\"modalObs.show\"\n    (close)=\"closeModal()\"\n  >\n    <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n      <h3 cdsModalHeaderHeading>\n        {{ 'object.editObject' | translate }}\n      </h3>\n    </cds-modal-header>\n    <section cdsModalContent>\n      <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n    </section>\n    <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n  </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n  <valtimo-form-io\n    [form]=\"modalObs.formioFormEdit\"\n    (change)=\"onFormioChange($event)\"\n  ></valtimo-form-io>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n  <cds-modal-footer>\n    <ng-container>\n      <button\n        cdsButton=\"ghost\"\n        [attr.modal-primary-focus]=\"true\"\n        (click)=\"closeModal()\"\n        [disabled]=\"modalObs.disableInput\"\n      >\n        {{ 'object.close' | translate }}\n      </button>\n      <button\n        cdsButton=\"primary\"\n        [attr.modal-primary-focus]=\"true\"\n        (click)=\"saveObject()\"\n        [disabled]=\"modalObs.disableInput || modalObs.formValid === false\"\n      >\n        {{ 'object.save' | translate }}\n      </button>\n    </ng-container>\n  </cds-modal-footer>\n</ng-template>\n\n<ng-template #loading>\n  <div class=\"loading-icon\"><cds-loading></cds-loading></div>\n</ng-template>\n\n<ng-template #deleteModal>\n  <valtimo-confirmation-modal\n    [showModalSubject$]=\"showDeleteModal$\"\n    [outputOnConfirm]=\"deleteObjectUrl$ | async\"\n    (confirmEvent)=\"deleteObjectConfirmation()\"\n    confirmButtonTextTranslationKey=\"object.deleteObject\"\n    titleTranslationKey=\"object.deleteObject\"\n    contentTranslationKey=\"object.deleteObjectConfirmation\"\n  ></valtimo-confirmation-modal>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {map, Observable, Subscription} from 'rxjs';\nimport {ConfigService} from '@valtimo/shared';\nimport {ObjectStateService} from '../../services/object-state.service';\nimport {ObjectService} from '../../services/object.service';\nimport {TabEnum} from '../../services/tab.enum';\nimport {TabService} from '../../services/tab.service';\n\n@Component({\n  standalone: false,\n  selector: 'valtimo-object-detail-container',\n  templateUrl: './object-detail-container.component.html',\n  styleUrls: ['./object-detail-container.component.scss'],\n})\nexport class ObjectDetailContainerComponent implements OnInit, OnDestroy {\n  public currentTab: TabEnum;\n  public readonly caseListColumn$ =\n    this.configService.getFeatureToggleObservable('caseListColumn', true);\n\n  private tabSubscription: Subscription;\n\n  readonly TabEnum = TabEnum;\n\n  readonly objectManagementId$: Observable<string> = this.route.params.pipe(\n    map(params => params.objectManagementId)\n  );\n\n  constructor(\n    private readonly objectState: ObjectStateService,\n    private readonly objectService: ObjectService,\n    private readonly route: ActivatedRoute,\n    private readonly configService: ConfigService,\n    private readonly tabService: TabService\n  ) {\n  }\n\n  ngOnInit(): void {\n    this.openCurrentTabSubscription();\n  }\n\n  displayBodyComponent(tab: TabEnum): void {\n    this.tabService.currentTab = tab;\n  }\n\n  openCurrentTabSubscription(): void {\n    this.tabSubscription = this.tabService.currentTab$.subscribe(\n      value => (this.currentTab = value)\n    );\n  }\n\n  ngOnDestroy(): void {\n    this.tabService.currentTab = TabEnum.GENERAL;\n    this.tabSubscription?.unsubscribe();\n  }\n}\n","<!--\n  ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n  ~\n  ~ Licensed under EUPL, Version 1.2 (the \"License\");\n  ~ you may not use this file except in compliance with the License.\n  ~ You may obtain a copy of the License at\n  ~\n  ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n  ~\n  ~ Unless required by applicable law or agreed to in writing, software\n  ~ distributed under the License is distributed on an \"AS IS\" basis,\n  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  ~ See the License for the specific language governing permissions and\n  ~ limitations under the License.\n  -->\n\n<div class=\"main-content\">\n  <div class=\"container-fluid\">\n    <div class=\"col-12 px-0 mb-5\">\n      <valtimo-widget>\n        <ng-container *ngTemplateOutlet=\"title\"></ng-container>\n        <ng-container *ngTemplateOutlet=\"tabs\"></ng-container>\n        <ng-container *ngTemplateOutlet=\"tabContent\"></ng-container>\n      </valtimo-widget>\n    </div>\n  </div>\n</div>\n\n<ng-template #title>\n  <div class=\"bg-light dossier-header\">\n    <h3 class=\"dossier-title\">\n      {{ 'object.header' | translate }}\n    </h3>\n  </div>\n</ng-template>\n\n<ng-template #tabs>\n  <ul class=\"nav nav-tabs\">\n    <li class=\"nav-item\">\n      <a\n        id=\"general-tab\"\n        class=\"nav-link clickable active\"\n        data-toggle=\"tab\"\n        (click)=\"displayBodyComponent(TabEnum.GENERAL)\"\n      >\n        {{ 'object.tabs.general' | translate }}\n      </a>\n    </li>\n  </ul>\n</ng-template>\n\n<ng-template #tabContent>\n  <div class=\"pl-1 pr-1 pt-3 bg-white position-relative tab-container\">\n    <div *ngIf=\"currentTab && currentTab === TabEnum.GENERAL\">\n      <valtimo-object-detail></valtimo-object-detail>\n    </div>\n  </div>\n</ng-template>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {ROLE_USER} from '@valtimo/shared';\nimport {ObjectListComponent} from './components/object-list/object-list.component';\nimport {ObjectDetailContainerComponent} from './components/object-detail-container/object-detail-container.component';\n\nconst routes: Routes = [\n  {\n    path: 'objects/:objectManagementId',\n    canActivate: [AuthGuardService],\n    component: ObjectListComponent,\n    data: {title: 'Objects', roles: [ROLE_USER], customPageTitle: true},\n  },\n  {\n    path: 'objects/:objectManagementId/:objectId',\n    canActivate: [AuthGuardService],\n    component: ObjectDetailContainerComponent,\n    data: {title: 'object.header', roles: [ROLE_USER]},\n  },\n];\n\n@NgModule({\n  imports: [CommonModule, RouterModule.forChild(routes)],\n  exports: [RouterModule],\n  declarations: [],\n})\nexport class ObjectRoutingModule {}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {ConfigService, MenuItem} from '@valtimo/shared';\n\n@Injectable({providedIn: 'root'})\nexport class ObjectMenuService {\n  constructor(\n    private readonly http: HttpClient,\n    private readonly configService: ConfigService\n  ) {}\n\n  public appendObjectMenuItems = (menuItems: MenuItem[]): Observable<MenuItem[]> => {\n    const apiBaseUrl = this.configService.config.valtimoApi.endpointUri;\n\n    return this.getObjects(apiBaseUrl).pipe(\n      map(objects => {\n        const visibleObjects = objects.filter(obj => obj?.showInDataMenu !== false);\n\n        const objectItems: MenuItem[] = visibleObjects.map((obj, index) => ({\n          link: ['/objects/' + obj.id],\n          title: obj.title,\n          iconClass: 'icon mdi mdi-dot-circle',\n          sequence: index,\n          show: true,\n        }));\n\n        const index = menuItems.findIndex(item => item.title === 'Objects');\n\n        if (index >= 0) {\n          menuItems[index].children = objectItems;\n        }\n\n        return menuItems;\n      })\n    );\n  };\n\n  private getObjects(apiBaseUrl: string): Observable<any[]> {\n    const url = `${apiBaseUrl}v1/object/management/configuration`;\n    return this.http.get<any[]>(url);\n  }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './object-menu.service';\nexport * from './object.service';\nexport * from './object-column.service';\nexport * from './object-state.service';\nexport * from './tab.service';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {ObjectRoutingModule} from './object-routing.module';\nimport {ObjectListComponent} from './components/object-list/object-list.component';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {AsyncPipe, CommonModule} from '@angular/common';\nimport {\n  CarbonListModule,\n  ConfirmationModalModule,\n  FormIoModule,\n  MenuService,\n  SearchFieldsModule,\n  SpinnerModule,\n  TooltipIconModule,\n  ValtimoCdsModalDirective,\n  WidgetModule,\n} from '@valtimo/components';\nimport {ObjectDetailContainerComponent} from './components/object-detail-container/object-detail-container.component';\nimport {ObjectDetailComponent} from './components/object-detail-container/tabs/object-detail/object-detail.component';\nimport {\n  ButtonModule,\n  IconModule,\n  InputModule,\n  LoadingModule,\n  ModalModule,\n} from 'carbon-components-angular';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {ConfigService} from '@valtimo/shared';\nimport {ObjectMenuService} from './services';\n\n@NgModule({\n  declarations: [ObjectListComponent, ObjectDetailContainerComponent, ObjectDetailComponent],\n  imports: [\n    CommonModule,\n    ObjectRoutingModule,\n    TranslateModule,\n    AsyncPipe,\n    WidgetModule,\n    ButtonModule,\n    IconModule,\n    SpinnerModule,\n    LoadingModule,\n    FormIoModule,\n    ModalModule,\n    ReactiveFormsModule,\n    InputModule,\n    TooltipIconModule,\n    ConfirmationModalModule,\n    SearchFieldsModule,\n    ValtimoCdsModalDirective,\n    CarbonListModule,\n  ],\n  exports: [],\n})\nexport class ObjectModule {\n  constructor(\n    private readonly menuService: MenuService,\n    private readonly configService: ConfigService,\n    private readonly objectMenuService: ObjectMenuService\n  ) {\n    const enabled = this.configService.config?.featureToggles?.enableObjectManagement;\n\n    if (!enabled) return;\n\n    this.menuService.registerAppendMenuItemsFunction(this.objectMenuService.appendObjectMenuItems);\n  }\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of object\n */\n\nexport * from './lib/services/object.service';\nexport * from './lib/object.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i2.ObjectColumnService","i4.ObjectService","i5","i9","i6","i7","i8","i1.ObjectStateService","i2.ObjectService","i3","i4","i5.TabService","i8.ObjectDetailComponent","map","i3.ObjectMenuService"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;AAcG;MAYU,aAAa,CAAA;IAGxB,WACU,CAAA,IAAgB,EACxB,aAA4B,EAAA;QADpB,IAAI,CAAA,IAAA,GAAJ,IAAI;QAGZ,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW;;IAGhE,8BAA8B,CACnC,kBAA0B,EAC1B,MAAY,EAAA;AAEZ,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,GAAG,IAAI,CAAC,kBAAkB,CAAA,mCAAA,EAAsC,kBAAkB,CAAS,OAAA,CAAA,EAC3F,EAAC,MAAM,EAAC,CACT;;AAGI,IAAA,+BAA+B,CACpC,kBAA0B,EAC1B,MAAY,EACZ,OAAa,EAAA;QAEb,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,CAAA,EAAG,IAAI,CAAC,kBAAkB,sCAAsC,kBAAkB,CAAA,OAAA,CAAS,EAC3F,OAAO,EACP,EAAC,MAAM,EAAC,CACT;;IAGI,YAAY,CAAC,MAAoC,EAAE,OAAe,EAAA;AACvE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,GAAG,IAAI,CAAC,kBAAkB,CAAA,SAAA,CAAW,EAAE,OAAO,EAAE,EAAC,MAAM,EAAC,CAAC;;IAG/E,YAAY,CACjB,MAAsD,EACtD,OAAe,EAAA;AAEf,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAM,GAAG,IAAI,CAAC,kBAAkB,CAAA,SAAA,CAAW,EAAE,OAAO,EAAE,EAAC,MAAM,EAAC,CAAC;;AAGhF,IAAA,YAAY,CAAC,MAAsD,EAAA;AACxE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAM,CAAG,EAAA,IAAI,CAAC,kBAAkB,WAAW,EAAE,EAAC,MAAM,EAAC,CAAC;;AAGxE,IAAA,+BAA+B,CAAC,MAAW,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiB,CAAG,EAAA,IAAI,CAAC,kBAAkB,gBAAgB,EAAE,EAAC,MAAM,EAAC,CAAC;;AAGrF,IAAA,qCAAqC,CAAC,UAAU,EAAA;QACrD,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC;;+GApDjF,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;;4FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACzBD;;;;;;;;;;;;;;AAcG;AAgBH,IAAK,QAGJ;AAHD,CAAA,UAAK,QAAQ,EAAA;AACX,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,QAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EAHI,QAAQ,KAAR,QAAQ,GAGZ,EAAA,CAAA,CAAA;AAED,IAAK,UAGJ;AAHD,CAAA,UAAK,UAAU,EAAA;AACb,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EAHI,UAAU,KAAV,UAAU,GAGd,EAAA,CAAA,CAAA;;ACtCD;;;;;;;;;;;;;;AAcG;MAUU,mBAAmB,CAAA;IAC9B,WACmB,CAAA,aAA4B,EAC5B,uBAAgD,EAAA;QADhD,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;;AAG1C,IAAA,gBAAgB,CAAC,eAAuB,EAAA;QACtC,OAAO,IAAI,CAAC;aACT,aAAa,CAAC,eAAe;AAC7B,aAAA,IAAI,CACH,GAAG,CACD,iBAAiB,IACf,iBAAiB;AACjB,YAAA,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC;YAChC,iBAAiB,CAAC,MAAM,GAAG,CAAC;AAC5B,YAAA,IAAI,CAAC,mCAAmC,CAAC,iBAAiB,CAAC,CAC9D,CACF;;AAGG,IAAA,mCAAmC,CACzC,iBAA0C,EAAA;QAE1C,OAAO,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,KAAK;YAChD,cAAc,EAAE,gBAAgB,CAAC,GAAG;YACpC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;YACnC,WAAW,EAAE,gBAAgB,CAAC,WAAW;YACzC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC;YAChE,YAAY,EAAE,gBAAgB,CAAC,IAAI;AACnC,YAAA,IAAI,gBAAgB,CAAC,KAAK,IAAI,EAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAC,CAAC;YAC9D,IAAI,gBAAgB,EAAE,WAAW,EAAE,qBAAqB,EAAE,IAAI,IAAI;AAChE,gBAAA,IAAI,EAAE,gBAAgB,CAAC,WAAW,CAAC,qBAAqB,CAAC,IAAW;aACrE,CAAC;YACF,IAAI,gBAAgB,CAAC,WAAW,EAAE,qBAAqB,EAAE,UAAU,IAAI;AACrE,gBAAA,MAAM,EAAE,gBAAgB,CAAC,WAAW,EAAE,qBAAqB,EAAE,UAAU;aACxE,CAAC;AACH,SAAA,CAAC,CAAC;;AAGG,IAAA,cAAc,CAAC,2BAAmC,EAAA;QACxD,QAAQ,2BAA2B;AACjC,YAAA;AACE,gBAAA,OAAO,2BAA2B;;;+GA1C7B,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACvBD;;;;;;;;;;;;;;AAcG;MAmCU,mBAAmB,CAAA;AA2C9B,IAAA,iBAAiB,CAAC,aAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,IAAG;AAC7D,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAC,GAAG,WAAW,EAAE,IAAI,EAAE,aAAa,GAAG,CAAC,EAAC,CAAC;AAC1E,SAAC,CAAC;;AAGJ,IAAA,aAAa,CAAC,WAAW,EAAA;QACvB,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,IAAG;AAC7D,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAC,GAAG,WAAW,EAAE,IAAI,EAAE,WAAW,EAAC,CAAC;AACpE,aAAC,CAAC;;;AA0IN,IAAA,WAAA,CACmB,yBAAoD,EACpD,mBAAwC,EACxC,uBAAgD,EAChD,aAA4B,EAC5B,gBAAkC,EAClC,KAAqB,EACrB,MAAc,EACd,SAA2B,EAC3B,gBAAkC,EAAA;QARlC,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB;QACzB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;QACvB,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;AAvM1B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAC7C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAM,EAAE,CAAC;AAC1C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAChD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAChD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACnD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;QAChD,IAAW,CAAA,WAAA,GAAG,IAAI,eAAe,CAAa,UAAU,CAAC,OAAO,CAAC;QAEjE,IAAmB,CAAA,mBAAA,GAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CACvE,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,kBAAkB,CAAC,EACxC,GAAG,CAAC,kBAAkB,IAAG;YACvB,IAAI,kBAAkB,EAAE;AACtB,gBAAA,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,UAAU,IAAG;AACpF,oBAAA,IAAI,UAAU,CAAC,KAAK,EAAE;wBACpB,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,UAAU,CAAC,KAAK,CAAC;;AAE9D,iBAAC,CAAC;;SAEL,CAAC,CACH;AAEgB,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;QAE5D,IAAmB,CAAA,mBAAA,GAAG,IAAI,eAAe,CAAsB;AACtE,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,EAAE;AACT,SAAA,CAAC;QAEO,IAAU,CAAA,UAAA,GAAG,IAAI,eAAe,CAAsB;AAC7D,YAAA,cAAc,EAAE,CAAC;AAClB,SAAA,CAAC;QAEO,IAAW,CAAA,WAAA,GAA2B,aAAa,CAAC;AAC3D,YAAA,IAAI,CAAC,mBAAmB;AACxB,YAAA,IAAI,CAAC,UAAU;AAChB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CACD,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,MAClB,EAAC,GAAG,WAAW,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,GAAG,CAAC,EAAC,CAAe,CACzE,CACF;AAgBgB,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAoB,EAAE,CAAC;AACvE,QAAA,IAAA,CAAA,mBAAmB,GAC1B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAC3B,oBAAoB,EAAE,EACtB,SAAS,CAAC,kBAAkB,IAC1B,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAChE,EACD,GAAG,CAAC,YAAY,IACd,YAAY,CAAC,GAAG,CAAC,WAAW,IAAG;;YAE7B,WAAW,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE;;YAEzD,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,WAAW,EAAE;AAC3D,YAAA,OAAO,WAAW;SACnB,CAAC,CACH,CACF;QAEM,IAAoB,CAAA,oBAAA,GAA2B,aAAa,CAAC;AACpE,YAAA,IAAI,CAAC,mBAAmB;AACxB,YAAA,IAAI,CAAC,mBAAmB;AACxB,YAAA,IAAI,CAAC,WAAW;AAChB,YAAA,IAAI,CAAC,kBAAkB;AACvB,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;AACnC,YAAA,IAAI,CAAC,kBAAkB;AACxB,SAAA,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,CAAC,KAAI;YAC7E,MAAM,WAAW,GAAG,MAAK;gBACvB,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AACjB,aAAC;AAED,YAAA,IAAI,UAAU,KAAK,UAAU,CAAC,MAAM,EAAE;gBACpC,OAAO,IAAI,CAAC;qBACT,+BAA+B,CAC9B,kBAAkB,EAClB;oBACE,IAAI,EAAE,WAAW,CAAC,IAAI;oBACtB,IAAI,EAAE,WAAW,CAAC,IAAI;iBACvB,EACD,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG;sBACpC,EAAC,YAAY,EAAE,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC;sBAC/D,EAAE;qBAEP,IAAI,CAAC,UAAU,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC;;YAG1C,OAAO,IAAI,CAAC;iBACT,8BAA8B,CAAC,kBAAkB,EAAE;gBAClD,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,IAAI,EAAE,WAAW,CAAC,IAAI;aACvB;iBACA,IAAI,CAAC,UAAU,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC;AAC1C,SAAC,CAAC,EACF,GAAG,CAAC,WAAW,IAAG;AAChB,YAAA,IAAI,WAAW,IAAI,IAAI,EAAE;AACvB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;;AAE9C,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAC,GAAG,KAAK,EAAE,cAAc,EAAE,WAAW,CAAC,aAAa,EAAC,CAAC;AAC7E,iBAAC,CAAC;;AAEN,SAAC,CAAC,EACF,GAAG,CAAC,GAAG,IACL,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,IACtB,MAAM,EAAE,KAAK,EAAE,MAAM,CACnB,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAC,EAAE,EAAC,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAC,CAAC,EAClF,EAAE,CACH,CACF,CACF,EACD,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACrC;QAEQ,IAAe,CAAA,eAAA,GAAoB,aAAa,CAAC;AACxD,YAAA,IAAI,CAAC,mBAAmB;AACxB,YAAA,IAAI,CAAC,UAAU;AAChB,SAAA,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAC7B,IAAI,CAAC;aACF,+BAA+B,CAAC,EAAC,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAC;AACjF,aAAA,IAAI,CACH,UAAU,CAAC,KAAK,IAAG;AACjB,YAAA,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;YACrC,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SACtC,CAAC,CACH,CACJ,EACD,GAAG,CAAC,GAAG,IAAG;AACR,YAAA,IAAI,GAAG,IAAI,IAAI,EAAE;gBACf,IAAI,CAAC,WAAW,EAAE;;YAGpB,OAAO,GAAG,EAAE,cAAc;SAC3B,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,EACf,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAC1C;AAEgB,QAAA,IAAA,CAAA,QAAQ,GAAoC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CACxF,SAAS,CAAC,kBAAkB,IAAI,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,EAC9F,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAChB;QAEQ,IAAO,CAAA,OAAA,GAAiC,aAAa,CAAC;AAC7D,YAAA,IAAI,CAAC,QAAQ;AACb,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAI;AAChB,YAAA,IAAI,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE;gBACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBAExC,OAAO;AACL,oBAAA,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAG;AACtB,wBAAA,MAAM,cAAc,GAAG,CAAA,YAAA,EAAe,MAAM,CAAC,cAAc,EAAE;wBAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,cAAc,CAAC;AACjE,wBAAA,MAAM,gBAAgB,GAAG,WAAW,KAAK,cAAc,IAAI,WAAW;wBACtE,OAAO;4BACL,GAAG,EAAE,MAAM,CAAC,cAAc;4BAC1B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,gBAAgB,IAAI,MAAM,CAAC,cAAc;4BAChE,QAAQ,EAAE,MAAM,CAAC,QAAQ;AACzB,4BAAA,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAC,CAAC;AACzD,4BAAA,IAAI,MAAM,CAAC,IAAI,IAAI,EAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAC,CAAC;AACvC,4BAAA,IAAI,MAAM,CAAC,MAAM,IAAI,EAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAC,CAAC;yBAC9C;AACH,qBAAC,CAAC;iBACH;;YAGH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AACzC,YAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE;SAC/B,CAAC,CACH;;IAcD,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG5B,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG5B,IAAA,cAAc,CAAC,MAAM,EAAA;AACnB,QAAA,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE;YACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;;;IAIjC,SAAS,GAAA;QACd,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,aAAa,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC;AACxE,aAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,MAAM,CAAC,CAAC,CAAC,kBAAkB,EAAE,UAAU,EAAE,SAAS,CAAC,KAAK,SAAS,CAAC,EAClE,SAAS,CAAC,CAAC,CAAC,kBAAkB,EAAE,UAAU,CAAC,KACzC,IAAI,CAAC;AACF,aAAA,YAAY,CACX,EAAC,kBAAkB,EAAC,EACpB,EAAC,GAAG,IAAI,CAAC,aAAa,CAAC,qCAAqC,CAAC,UAAU,CAAC,EAAC;aAE1E,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,UAAU,CAAC,CAAC,KAAU,KAAI;AACxB,YAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACnC,YAAA,OAAO,UAAU,CAAC,KAAK,CAAC;AAC1B,SAAC,CAAC,CACH,CACJ,EACD,QAAQ,CAAC,MAAK;YACZ,IAAI,CAAC,WAAW,EAAE;AACpB,SAAC,CAAC;AAEH,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;gBACT,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,iBAAiB,EAAE;AACxB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,gBAAA,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC;oBACvC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,+BAA+B,CAAC;AAC9D,oBAAA,IAAI,EAAE,SAAS;AAChB,iBAAA,CAAC;aACH;AACF,SAAA,CAAC;;AAGN,IAAA,iBAAiB,CAAC,MAAM,EAAA;QACtB,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ;AACvF,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,IAAG;AACjE,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAY,SAAA,EAAA,eAAe,CAAI,CAAA,EAAA,QAAQ,CAAE,CAAA,CAAC,CAAC;AACnE,SAAC,CAAC;;AAGJ,IAAA,MAAM,CAAC,iBAAoC,EAAA;QACzC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC;;IAG/C,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG5B,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGvB,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGxB,gBAAgB,GAAA;AACtB,QAAA,MAAM,IAAI,GAAkB,CAAC,aAAa,EAAE,WAAW,CAAC;QACxD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK;AACtB,YAAA,KAAK,EAAE,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAiB,cAAA,EAAA,GAAG,CAAE,CAAA,CAAC,CAAE,CAAA;YACjE,GAAG;AACH,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,IAAI,EAAE,QAAQ;AACf,SAAA,CAAC,CAAC;;AAGG,IAAA,yBAAyB,CAAC,KAAU,EAAA;AAC1C,QAAA,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC;YACvC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,2CAA2C,CAAC;AAC1E,YAAA,IAAI,EAAE,OAAO;AACd,SAAA,CAAC;AACF,QAAA,OAAO,UAAU,CAAC,KAAK,CAAC;;AAGlB,IAAA,uBAAuB,CAAC,KAAU,EAAA;AACxC,QAAA,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC;YACvC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,qCAAqC,CAAC;AACpE,YAAA,IAAI,EAAE,OAAO;AACd,SAAA,CAAC;AACF,QAAA,OAAO,UAAU,CAAC,KAAK,CAAC;;AAGlB,IAAA,wBAAwB,CAC9B,MAAyB,EAAA;QAEzB,MAAM,OAAO,GAA4C,EAAE;QAE3D,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAG;AACrC,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAQ;AAC3C,YAAA,IAAI,WAAW,CAAC,KAAK,EAAE;gBACrB,OAAO,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,EAAC,CAAC;;AAChF,iBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AACrC,gBAAA,OAAO,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAC,CAAC;;iBAC7C;;AAEL,gBAAA,OAAO,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAC,CAAC;;AAExD,SAAC,CAAC;AAEF,QAAA,OAAO,OAAO;;+GAlUL,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,gFCjDhC,8hJA4IA,EAAA,MAAA,EAAA,CAAA,orBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,EAAA,UAAA,EAAA,QAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD3Fa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,qBAAqB,EAAA,QAAA,EAAA,8hJAAA,EAAA,MAAA,EAAA,CAAA,orBAAA,CAAA,EAAA;;;AE7CjC;;;;;;;;;;;;;;AAcG;AAEH,IAAY,OAEX;AAFD,CAAA,UAAY,OAAO,EAAA;AACjB,IAAA,OAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACrB,CAAC,EAFW,OAAO,KAAP,OAAO,GAElB,EAAA,CAAA,CAAA;;AClBD;;;;;;;;;;;;;;AAcG;MAQU,kBAAkB,CAAA;AAM7B,IAAA,WAAA,GAAA;AALiB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAE;AAC3B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAE;AAC3B,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;AAC3C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAM,KAAK,CAAC;;AAI9D,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;;AAGxC,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;;AAGxC,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;;AAGtC,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;;IAGxC,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG7B,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG7B,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG3B,IAAA,YAAY,CAAC,IAAS,EAAA;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;+GArClB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;;4FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACrBD;;;;;;;;;;;;;;AAcG;MASU,UAAU,CAAA;AAHvB,IAAA,WAAA,GAAA;QAIU,IAAY,CAAA,YAAA,GAAG,IAAI,eAAe,CAAU,OAAO,CAAC,OAAO,CAAC;AASrE;AAPC,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;;IAGzC,IAAW,UAAU,CAAC,GAAY,EAAA;AAChC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;;+GARlB,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA;;4FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACtBD;;;;;;;;;;;;;;AAcG;MAkBU,qBAAqB,CAAA;AAiEhC,IAAA,WAAA,CACmB,iBAAoC,EACpC,yBAAoD,EACpD,uBAAgD,EAChD,aAA4B,EAC5B,KAAqB,EACrB,MAAc,EACd,SAA2B,EAAA;QAN3B,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB;QACzB,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;QACvB,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAS,CAAA,SAAA,GAAT,SAAS;AAvEnB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;AAC7C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAM,EAAE,CAAC;AAC1C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAChD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAChD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AACnD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAW;AACzC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAE1C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC;QAExD,IAAmB,CAAA,mBAAA,GAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CACvE,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,kBAAkB,CAAC,EACxC,GAAG,CAAC,kBAAkB,IAAG;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,EAAE;AAClD,gBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC9B,gBAAA,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,UAAU,IAAG;oBACpF,IAAI,UAAU,CAAC,EAAE,IAAI,UAAU,CAAC,KAAK,EAAE;wBACrC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC;;AAEvD,iBAAC,CAAC;;SAEL,CAAC,CACH;QACQ,IAAS,CAAA,SAAA,GAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEtF,IAAkB,CAAA,kBAAA,GAAoB,aAAa,CAAC;AAC3D,YAAA,IAAI,CAAC,mBAAmB;AACxB,YAAA,IAAI,CAAC,SAAS;AACd,YAAA,IAAI,CAAC,cAAc;AACpB,SAAA,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,kBAAkB,EAAE,QAAQ,CAAC,KACvC,IAAI,CAAC;AACF,aAAA,+BAA+B,CAAC,EAAC,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAC;AAC1F,aAAA,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAC5D,EACD,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,cAAc,CAAC,EAC/B,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACrC;QAEQ,IAAe,CAAA,eAAA,GAAoB,aAAa,CAAC;AACxD,YAAA,IAAI,CAAC,mBAAmB;AACxB,YAAA,IAAI,CAAC,SAAS;AACd,YAAA,IAAI,CAAC,cAAc;AACpB,SAAA,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,kBAAkB,EAAE,QAAQ,CAAC,KACvC,IAAI,CAAC;AACF,aAAA,+BAA+B,CAAC;YAC/B,kBAAkB;YAClB,QAAQ;YACR,QAAQ,EAAE,QAAQ,CAAC,QAAQ;SAC5B;AACA,aAAA,IAAI,CACH,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,OAAO,IAAI,CAAC,yBAAyB,EAAE;AACzC,SAAC,CAAC,CACH,CACJ,EACD,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,cAAc,CAAC,EAC/B,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACrC;QAEO,IAAkB,CAAA,kBAAA,GAAG,KAAK;;IAY3B,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE;;IAGhD,UAAU,GAAA;QACR,IAAI,CAAC,YAAY,EAAE;QAEnB,IAAI,CAAC,YAAY,EAAE;;IAGrB,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGlC,wBAAwB,GAAA;QACtB,IAAI,CAAC,YAAY,EAAE;QACnB,aAAa,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC;AACrD,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,CAAC,CAAC,kBAAkB,EAAE,QAAQ,CAAC,KAAI;AAC5C,YAAA,IAAI,CAAC;AACF,iBAAA,YAAY,CAAC,EAAC,kBAAkB,EAAE,QAAQ,EAAC;iBAC3C,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,UAAU,CAAC,CAAC,KAAU,KAAK,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,EAC/D,QAAQ,CAAC,MAAK;gBACZ,IAAI,CAAC,WAAW,EAAE;AACpB,aAAC,CAAC;iBAEH,SAAS,CAAC,MAAK;gBACd,IAAI,CAAC,UAAU,EAAE;AACjB,gBAAA,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC;oBACvC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,+BAA+B,CAAC;AAC9D,oBAAA,IAAI,EAAE,SAAS;AAChB,iBAAA,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA,SAAA,EAAY,kBAAkB,CAAA,CAAE,CAAC,CAAC;AAC1D,aAAC,CAAC;AACN,SAAC,CAAC;;IAGN,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,WAAW,EAAE;;AAGpB,IAAA,cAAc,CAAC,MAAM,EAAA;AACnB,QAAA,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE;YACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;;;IAIxC,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGrB,YAAY,GAAA;QAClB,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,aAAa,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC;AACxF,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,aAAA,SAAS,CAAC,CAAC,CAAC,kBAAkB,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,KAAI;YACnE,IAAI,SAAS,EAAE;gBACb,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,qCAAqC,CAAC,UAAU,CAAC;AACjF,gBAAA,IAAI,CAAC;qBACF,YAAY,CAAC,EAAC,kBAAkB,EAAE,QAAQ,EAAC,EAAE,EAAC,GAAG,UAAU,EAAC;qBAC5D,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,UAAU,CAAC,CAAC,KAAU,KAAK,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,EAC/D,QAAQ,CAAC,MAAK;oBACZ,IAAI,CAAC,WAAW,EAAE;AACpB,iBAAC,CAAC;qBAEH,SAAS,CAAC,MAAK;oBACd,IAAI,CAAC,UAAU,EAAE;oBACjB,IAAI,CAAC,aAAa,EAAE;AACpB,oBAAA,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC;wBACvC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,+BAA+B,CAAC;AAC9D,wBAAA,IAAI,EAAE,SAAS;AAChB,qBAAA,CAAC;AACJ,iBAAC,CAAC;;AAER,SAAC,CAAC;;IAGE,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGxB,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGvB,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGxB,yBAAyB,GAAA;AAC/B,QAAA,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC;YACvC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,2CAA2C,CAAC;AAC1E,YAAA,IAAI,EAAE,OAAO;AACd,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC;;AAGT,IAAA,uBAAuB,CAAC,KAAU,EAAA;QACxC,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC;YACvC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,mCAAmC,CAAC;AAClE,YAAA,IAAI,EAAE,OAAO;AACd,SAAA,CAAC;AACF,QAAA,OAAO,UAAU,CAAC,KAAK,CAAC;;AAGlB,IAAA,uBAAuB,CAAC,KAAU,EAAA;QACxC,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC;YACvC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,mCAAmC,CAAC;AAClE,YAAA,IAAI,EAAE,OAAO;AACd,SAAA,CAAC;AACF,QAAA,OAAO,UAAU,CAAC,KAAK,CAAC;;IAGlB,aAAa,CAAC,YAAoB,EAAE,KAAa,EAAA;AACvD,QAAA,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC;AACzC,YAAA,KAAK,EAAE,CAAC,CAAY,SAAA,EAAA,YAAY,EAAE,CAAC;AACnC,YAAA,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,CAAY,SAAA,EAAA,YAAY,CAAE,CAAA;AACjC,SAAA,CAAC;;+GA1MO,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,kFChClC,gwIA+HA,EAAA,MAAA,EAAA,CAAA,8uBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,EAAA,UAAA,EAAA,QAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD/Fa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,uBAAuB,EAAA,QAAA,EAAA,gwIAAA,EAAA,MAAA,EAAA,CAAA,8uBAAA,CAAA,EAAA;;;AE5BnC;;;;;;;;;;;;;;AAcG;MAiBU,8BAA8B,CAAA;IAazC,WACmB,CAAA,WAA+B,EAC/B,aAA4B,EAC5B,KAAqB,EACrB,aAA4B,EAC5B,UAAsB,EAAA;QAJtB,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAU,CAAA,UAAA,GAAV,UAAU;QAhBb,IAAe,CAAA,eAAA,GAC7B,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,gBAAgB,EAAE,IAAI,CAAC;QAI9D,IAAO,CAAA,OAAA,GAAG,OAAO;QAEjB,IAAmB,CAAA,mBAAA,GAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CACvE,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,kBAAkB,CAAC,CACzC;;IAWD,QAAQ,GAAA;QACN,IAAI,CAAC,0BAA0B,EAAE;;AAGnC,IAAA,oBAAoB,CAAC,GAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,GAAG;;IAGlC,0BAA0B,GAAA;QACxB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAC1D,KAAK,KAAK,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CACnC;;IAGH,WAAW,GAAA;QACT,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO;AAC5C,QAAA,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE;;+GAtC1B,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,4FC/B3C,uzDA0DA,EAAA,MAAA,EAAA,CAAA,20BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,qBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD3Ba,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,iCAAiC,EAAA,QAAA,EAAA,uzDAAA,EAAA,MAAA,EAAA,CAAA,20BAAA,CAAA,EAAA;;;AE3B7C;;;;;;;;;;;;;;AAcG;AAUH,MAAM,MAAM,GAAW;AACrB,IAAA;AACE,QAAA,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAC/B,QAAA,SAAS,EAAE,mBAAmB;AAC9B,QAAA,IAAI,EAAE,EAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,IAAI,EAAC;AACpE,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,uCAAuC;QAC7C,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAC/B,QAAA,SAAS,EAAE,8BAA8B;QACzC,IAAI,EAAE,EAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAC;AACnD,KAAA;CACF;MAOY,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAnB,mBAAmB,EAAA,OAAA,EAAA,CAJpB,YAAY,EAAAL,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CACZ,YAAY,CAAA,EAAA,CAAA,CAAA;gHAGX,mBAAmB,EAAA,OAAA,EAAA,CAJpB,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC3C,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAGX,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACtD,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,YAAY,EAAE,EAAE;AACjB,iBAAA;;;AC3CD;;;;;;;;;;;;;;AAcG;MASU,iBAAiB,CAAA;IAC5B,WACmB,CAAA,IAAgB,EAChB,aAA4B,EAAA;QAD5B,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAa,CAAA,aAAA,GAAb,aAAa;AAGzB,QAAA,IAAA,CAAA,qBAAqB,GAAG,CAAC,SAAqB,KAA4B;YAC/E,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW;AAEnE,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CACrCe,KAAG,CAAC,OAAO,IAAG;AACZ,gBAAA,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,EAAE,cAAc,KAAK,KAAK,CAAC;AAE3E,gBAAA,MAAM,WAAW,GAAe,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,MAAM;AAClE,oBAAA,IAAI,EAAE,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE,CAAC;oBAC5B,KAAK,EAAE,GAAG,CAAC,KAAK;AAChB,oBAAA,SAAS,EAAE,yBAAyB;AACpC,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA,CAAC,CAAC;AAEH,gBAAA,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;AAEnE,gBAAA,IAAI,KAAK,IAAI,CAAC,EAAE;AACd,oBAAA,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,WAAW;;AAGzC,gBAAA,OAAO,SAAS;aACjB,CAAC,CACH;AACH,SAAC;;AAEO,IAAA,UAAU,CAAC,UAAkB,EAAA;AACnC,QAAA,MAAM,GAAG,GAAG,CAAG,EAAA,UAAU,oCAAoC;QAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,GAAG,CAAC;;+GAlCvB,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADL,MAAM,EAAA,CAAA,CAAA;;4FAClB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;ACtBhC;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;MAuDU,YAAY,CAAA;AACvB,IAAA,WAAA,CACmB,WAAwB,EACxB,aAA4B,EAC5B,iBAAoC,EAAA;QAFpC,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QAElC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,sBAAsB;AAEjF,QAAA,IAAI,CAAC,OAAO;YAAE;QAEd,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC;;+GAVrF,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAgB,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,iBAvBR,mBAAmB,EAAE,8BAA8B,EAAE,qBAAqB,aAEvF,YAAY;YACZ,mBAAmB;YACnB,eAAe;YACf,SAAS;YACT,YAAY;YACZ,YAAY;YACZ,UAAU;YACV,aAAa;YACb,aAAa;YACb,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,WAAW;YACX,iBAAiB;YACjB,uBAAuB;YACvB,kBAAkB;YAClB,wBAAwB;YACxB,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAIP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YArBrB,YAAY;YACZ,mBAAmB;YACnB,eAAe;YAEf,YAAY;YACZ,YAAY;YACZ,UAAU;YACV,aAAa;YACb,aAAa;YACb,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,WAAW;YACX,iBAAiB;YACjB,uBAAuB;YACvB,kBAAkB;YAElB,gBAAgB,CAAA,EAAA,CAAA,CAAA;;4FAIP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAxBxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,mBAAmB,EAAE,8BAA8B,EAAE,qBAAqB,CAAC;AAC1F,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,eAAe;wBACf,SAAS;wBACT,YAAY;wBACZ,YAAY;wBACZ,UAAU;wBACV,aAAa;wBACb,aAAa;wBACb,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,WAAW;wBACX,iBAAiB;wBACjB,uBAAuB;wBACvB,kBAAkB;wBAClB,wBAAwB;wBACxB,gBAAgB;AACjB,qBAAA;AACD,oBAAA,OAAO,EAAE,EAAE;AACZ,iBAAA;;;ACpED;;;;;;;;;;;;;;AAcG;AAEH;;AAEG;;AClBH;;AAEG;;;;"}