@elite.framework/ng.ui.core 1.0.68 → 1.0.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/base-crud/index.d.ts +2 -1
- package/deactivation-reason/index.d.ts +1 -0
- package/fesm2022/elite.framework-ng.ui.core-base-crud.mjs +13 -11
- package/fesm2022/elite.framework-ng.ui.core-base-crud.mjs.map +1 -1
- package/fesm2022/elite.framework-ng.ui.core-deactivation-reason.mjs +5 -2
- package/fesm2022/elite.framework-ng.ui.core-deactivation-reason.mjs.map +1 -1
- package/fesm2022/elite.framework-ng.ui.core-generic-dialog.mjs +6 -2
- package/fesm2022/elite.framework-ng.ui.core-generic-dialog.mjs.map +1 -1
- package/fesm2022/elite.framework-ng.ui.core-generic-view.mjs +4 -2
- package/fesm2022/elite.framework-ng.ui.core-generic-view.mjs.map +1 -1
- package/generic-dialog/index.d.ts +1 -0
- package/generic-view/index.d.ts +1 -0
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elite.framework-ng.ui.core-generic-view.mjs","sources":["../tmp-esm2022/generic-view/lib/generic-view.js","../tmp-esm2022/generic-view/lib/generic-view-module.js","../tmp-esm2022/generic-view/elite.framework-ng.ui.core-generic-view.js"],"sourcesContent":["import { TooltipModule } from 'primeng/tooltip';\nimport { Component, EventEmitter, inject, Input, Output, ViewChild } from '@angular/core';\nimport { CommonModule, Location } from '@angular/common';\nimport { ToolbarModule } from 'primeng/toolbar';\nimport { ButtonModule } from 'primeng/button';\nimport { FormlyForm } from '@ngx-formly/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\nimport { TabsModule } from 'primeng/tabs';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BreadcrumbComponent } from '@elite.framework/ng.ui.core/breadcrumb';\nimport { BaseService, SwalService } from '@elite.framework/ng.core/services';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\nimport { GenericDialogComponent } from '@elite.framework/ng.ui.core/generic-dialog';\nimport { GenericButton } from '@elite.framework/ng.ui.core/generic-button';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"primeng/toolbar\";\nimport * as i3 from \"primeng/api\";\nimport * as i4 from \"primeng/button\";\nimport * as i5 from \"primeng/tabs\";\nimport * as i6 from \"@angular/forms\";\nimport * as i7 from \"primeng/tooltip\";\nimport * as i8 from \"primeng/progressspinner\";\nimport * as i9 from \"@ngx-translate/core\";\nexport class GenericViewComponent {\n route = inject(ActivatedRoute);\n router = inject(Router);\n form = new UntypedFormGroup({});\n title = '';\n actions = [];\n createEditActions = [];\n actions_ = [];\n tabs = [];\n viewMode = true;\n breadcrumb;\n service = inject(BaseService);\n formFields = [];\n apiName = '';\n idField = 'id';\n standaloneMode = false;\n isViewMode = true; // وضع المشاهدة فقط\n isCreateMode = false; // وضع الاضافة فقط\n isEditMode = false; // وضع التعديل\n model = {};\n displayMode = 'drawer';\n mode = 'full';\n action = new EventEmitter();\n afterDelete = new EventEmitter();\n dialog;\n inlineForm;\n tabs_ = [];\n model_ = {};\n currentId;\n list = [];\n totalRecords = 0;\n loading = false;\n // pagination state\n pageSize = 10;\n pageIndex = 0;\n sort = '';\n currentFilters = {};\n pageFilters = {};\n searchGlobal = '';\n swalService = inject(SwalService);\n _location = inject(Location);\n ngOnInit() {\n this.loading = true;\n if (this.apiName) {\n this.service.apiName = this.apiName;\n }\n this.actions_ = this.actions.filter(c => c.name != 'view');\n this.route.paramMap.subscribe(params => {\n const id = params.get(this.idField);\n if (id) {\n this.currentId = id;\n if (this.standaloneMode) {\n this.loadList();\n }\n }\n this.refresh();\n });\n }\n refresh() {\n // detect mode based on route\n const url = this.router.url.toLowerCase();\n this.isViewMode = url.includes('/view');\n this.isEditMode = url.includes('/edit');\n this.isCreateMode = url.includes('/create') || url.endsWith('/new') || url.endsWith('/add');\n this.tabs_ = [];\n for (let i = 0; i < this.tabs.length; i++) {\n const t = this.tabs[i];\n this.tabs_.push({\n ...t,\n fields: [\n {\n props: { label: '' },\n fieldGroupClassName: 'grid grid-cols-1 md:grid-cols-2 gap-3',\n fieldGroup: this.isCreateMode || this.isEditMode\n ? this.getCreateEditFields(i == 0 ? this.formFields : t.fields)\n : this.getViewFields(i == 0 ? this.formFields : t.fields),\n },\n ],\n });\n }\n this.loading = false;\n }\n // as form\n getCreateEditFields(fields = []) {\n return fields.map(f => ({\n ...f,\n props: { ...f.props, readonly: this.viewMode, disabled: this.viewMode },\n }));\n }\n getViewFields(fields = []) {\n const flatten = (fields) => fields.flatMap(field => {\n if (field.fieldGroup?.length)\n return flatten(field.fieldGroup);\n if (!field.props\n || field.props['view']?.hidden\n // || field.props['table']?.hidden\n )\n return [];\n const type = field.props['view']?.type || field.props['table']?.type || 'custom-label-type';\n return [{\n type,\n key: field['key'],\n readonly: this.viewMode,\n disabled: this.viewMode,\n wrappers: field.wrappers ?? ['field-wrapper'],\n props: {\n ...field.props,\n ...(field.props['view']?.props || field.props['table']?.props),\n },\n expressions: field.props['view']?.expressions || field.props['view']?.expressions,\n }];\n });\n return flatten(fields);\n }\n // Use a map to store form groups for each row and column\n cellForms = new Map();\n getForm(rowIndex) {\n const key = `${rowIndex}_`;\n let form = this.cellForms.get(key);\n if (!form) {\n form = new FormGroup({});\n this.cellForms.set(key, form);\n }\n return form;\n }\n async handleCreateEditAction(btn) {\n try {\n if (btn.action) {\n // Execute the provided action\n await btn.action(null); // You can pass row or context here\n }\n else {\n // Fallback to emitting event\n if (btn.actionName == 'cancel') {\n this.back();\n }\n else {\n this.action.emit({\n name: btn.actionName ?? 'cancel',\n row: null, // provide row if available\n });\n }\n }\n }\n catch (err) {\n console.error('Button action error', err);\n }\n }\n onAction(act, model) {\n if (act.action) {\n act.action(model);\n }\n else {\n // this.action.emit({ name: act.name, row:model });\n this.emitAction({ name: act.name, row: model });\n }\n }\n emitAction(event) {\n switch (event.name) {\n case 'edit':\n this.dialog.openForm(\"edit\", event.row);\n break;\n case 'delete':\n this.onDelete(event.row);\n break;\n default:\n this.action.emit(event);\n break;\n }\n }\n onDelete(item) {\n const id = item[this.idField];\n this.swalService.confirm('تأكيد الحذف', 'هل تريد حذف هذا السجل فعلاً؟', 'نعم، احذف', 'إلغاء').then((result) => {\n if (result.isConfirmed) {\n this.service.delete(id).subscribe({\n next: () => {\n this.swalService.success('تم الحذف بنجاح');\n this.back();\n },\n error: (err) => {\n this.loading = false;\n }\n });\n }\n });\n }\n afterSave(event) {\n this.model = event.response;\n // set the id from backend response\n this.currentId = event.response[this.idField];\n if (this.isCreateMode) {\n this.goToMode('view');\n }\n else if (this.isEditMode) {\n this.goToMode('view');\n }\n }\n goToMode(mode) {\n const tree = this.router.parseUrl(this.router.url);\n const segments = tree.root.children['primary']?.segments.map(s => s.path) ?? [];\n let newSegments;\n if (mode === 'create') {\n // always navigate to \"add\"\n newSegments = [\n ...segments.filter(s => !['view', 'edit', 'add'].includes(s)),\n 'add',\n ];\n }\n else {\n // if in \"add\" mode, replace it with the new id\n if (segments.includes('add')) {\n newSegments = [\n ...segments.filter(s => s !== 'add'),\n String(this.currentId),\n mode,\n ];\n }\n else {\n const idIndex = segments.findIndex(s => s === String(this.currentId));\n if (idIndex === -1) {\n newSegments = [...segments, String(this.currentId), mode];\n }\n else {\n newSegments = segments.slice(0, idIndex + 1);\n newSegments.push(mode);\n }\n }\n }\n this.router.navigate(newSegments);\n this.refresh();\n }\n backToList() {\n this.router.navigate(['../']);\n }\n back() {\n // this.router.navigate(['..']);\n this._location.back();\n }\n loadList() {\n this.loading = true;\n const filters = {\n maxResultCount: this.pageSize,\n skipCount: this.pageIndex * this.pageSize,\n sorting: this.sort,\n ...this.currentFilters,\n ...this.pageFilters,\n ...(this.searchGlobal ? { filter: this.searchGlobal } : {}),\n };\n this.service.getList(filters).subscribe({\n next: (res) => {\n this.list = res.items;\n this.totalRecords = res.totalCount;\n this.loading = false;\n // set model_ to current id item\n const found = this.list.find(x => x[this.idField] == this.currentId);\n if (found) {\n this.model_ = found;\n }\n },\n error: err => {\n console.error('Error loading list', err);\n this.loading = false;\n }\n });\n }\n next() {\n if (!this.currentId)\n return;\n // increment currentId numerically\n // const newId = Number(this.currentId) + 1;\n // this.currentId = newId;\n // use goToMode to navigate and keep mode\n const currentMode = this.isEditMode ? 'edit' : 'view';\n // this.goToMode(currentMode);\n }\n previous() {\n if (!this.currentId)\n return;\n // decrement currentId numerically\n // const newId = Number(this.currentId) - 1;\n // if (newId <= 0) return;\n // this.currentId = newId;\n // use goToMode to navigate and keep mode\n const currentMode = this.isEditMode ? 'edit' : 'view';\n // this.goToMode(currentMode);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: GenericViewComponent, isStandalone: true, selector: \"app-detail-view\", inputs: { title: \"title\", actions: \"actions\", createEditActions: \"createEditActions\", tabs: \"tabs\", viewMode: \"viewMode\", breadcrumb: \"breadcrumb\", service: \"service\", formFields: \"formFields\", apiName: \"apiName\", idField: \"idField\", standaloneMode: \"standaloneMode\", isViewMode: \"isViewMode\", isCreateMode: \"isCreateMode\", isEditMode: \"isEditMode\", model: \"model\", displayMode: \"displayMode\", mode: \"mode\", loading: \"loading\" }, outputs: { action: \"action\", afterDelete: \"afterDelete\" }, viewQueries: [{ propertyName: \"dialog\", first: true, predicate: [\"dialog\"], descendants: true }, { propertyName: \"inlineForm\", first: true, predicate: [\"inlineForm\"], descendants: true }], ngImport: i0, template: \"\\r\\n@if (mode === 'detail') {\\r\\n<div class=\\\"w-full flex flex-col gap-3\\\">\\r\\n <!-- overlay -->\\r\\n <div *ngIf=\\\"loading\\\"\\r\\n class=\\\"absolute inset-0 bg-white/70 flex items-center justify-center z-50\\\">\\r\\n <p-progress-spinner/>\\r\\n </div>\\r\\n\\r\\n <!-- actual content -->\\r\\n <!-- Toolbar -->\\r\\n <p-toolbar style=\\\"background: transparent;border: 0px;box-shadow: none;\\\" class=\\\"bg-transparent shadow-none border-none rounded-md px-3\\\">\\r\\n <ng-template pTemplate=\\\"left\\\">\\r\\n <!-- <span class=\\\"font-semibold text-lg xs:hidden block\\\">{{ title }}</span> -->\\r\\n <app-breadcrumb class=\\\"xs:block\\\" [breadcrumb]=\\\"breadcrumb\\\"></app-breadcrumb> <!-- xs:block hidden -->\\r\\n </ng-template>\\r\\n <ng-template pTemplate=\\\"right\\\">\\r\\n <div class=\\\"flex gap-2\\\">\\r\\n\\r\\n <button\\r\\n pButton pRipple\\r\\n icon=\\\"pi pi-chevron-right\\\"\\r\\n class=\\\"p-button-text p-button-sm fd-btn\\\"\\r\\n pTooltip=\\\"\\u0627\\u0644\\u062A\\u0627\\u0644\\u064A\\\"\\r\\n (click)=\\\"next()\\\"\\r\\n ></button>\\r\\n <button\\r\\n pButton pRipple\\r\\n icon=\\\"pi pi-chevron-left\\\"\\r\\n class=\\\"p-button-text p-button-sm fd-btn\\\"\\r\\n pTooltip=\\\"\\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\\\"\\r\\n (click)=\\\"previous()\\\"\\r\\n ></button>\\r\\n </div>\\r\\n </ng-template>\\r\\n </p-toolbar>\\r\\n <p-toolbar class=\\\"bg-white shadow rounded-md px-3\\\">\\r\\n\\r\\n <ng-template pTemplate=\\\"left\\\">\\r\\n @if (isViewMode) {\\r\\n <div class=\\\"flex gap-1\\\">\\r\\n @for (action of actions_; track $index) {\\r\\n <button\\r\\n pButton pRipple\\r\\n [icon]=\\\"action.icon ?? ''\\\"\\r\\n [label]=\\\"(action.label ?? '') | translate\\\"\\r\\n class=\\\"fd-btn\\\"\\r\\n (click)=\\\"onAction(action,model)\\\"\\r\\n ></button>\\r\\n }\\r\\n </div>\\r\\n }\\r\\n </ng-template>\\r\\n <ng-template pTemplate=\\\"right\\\">\\r\\n @if (isEditMode || isCreateMode) {\\r\\n <div class=\\\"flex gap-1\\\">\\r\\n @for (btn of createEditActions; track $index) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n @if (btn.type == 'submit' && inlineForm) {\\r\\n <lib-generic-button\\r\\n [type]=\\\"'submit'\\\"\\r\\n [loading]=\\\"inlineForm.loading\\\"\\r\\n [disabled]=\\\"inlineForm.loading || form.invalid\\\"\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"inlineForm.onSubmit()\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n @else{\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"handleCreateEditAction(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n </div>\\r\\n }\\r\\n </ng-template>\\r\\n\\r\\n </p-toolbar>\\r\\n\\r\\n <!-- Tabs -->\\r\\n <p-tabs value=\\\"0\\\">\\r\\n <p-tablist>\\r\\n @for (tab of tabs_; track $index) {\\r\\n <p-tab value=\\\"{{$index}}\\\">\\r\\n <i [class]=\\\"tab.icon\\\"></i>\\r\\n <span class=\\\"mr-1 ml-1\\\">{{ tab.header }}</span>\\r\\n </p-tab>\\r\\n }\\r\\n </p-tablist>\\r\\n <p-tabpanels>\\r\\n @for (tab of tabs_; track $index) {\\r\\n <p-tabpanel value=\\\"{{$index}}\\\">\\r\\n\\r\\n <!-- Formly fields -->\\r\\n <!-- p-4 grid grid-cols-1 md:grid-cols-2 gap-4 -->\\r\\n <div class=\\\"border border-surface p-4\\\">\\r\\n @if (tab.fields.length && $index == 0) {\\r\\n\\r\\n <form *ngIf=\\\"form\\\" [formGroup]=\\\"form\\\">\\r\\n @if (tab.fields.length && $index == 0 ) {\\r\\n @if (isEditMode || isCreateMode) {\\r\\n <app-generic-dialog\\r\\n #inlineForm\\r\\n [form]=\\\"form\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [formFields]=\\\"formFields ?? []\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField ??'id'\\\"\\r\\n [displayMode]=\\\"'inline'\\\"\\r\\n [mode]=\\\"'form-only'\\\"\\r\\n [forceState]=\\\"isCreateMode ? 'create':'edit'\\\"\\r\\n (afterSave)=\\\"afterSave($event)\\\"\\r\\n >\\r\\n </app-generic-dialog>\\r\\n}\\r\\n@else if(isViewMode){\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"tab.fields\\\"\\r\\n [model]=\\\"model\\\"\\r\\n ></formly-form>\\r\\n}\\r\\n}\\r\\n </form>\\r\\n\\r\\n }\\r\\n @if (tab.fields.length && $index > 0) {\\r\\n\\r\\n\\r\\n <formly-form\\r\\n [form]=\\\"getForm($index)\\\"\\r\\n [fields]=\\\"tab.fields\\\"\\r\\n [model]=\\\"tab.model || model\\\"\\r\\n ></formly-form>\\r\\n\\r\\n }\\r\\n\\r\\n <!-- Custom template -->\\r\\n @if (tab.content) {\\r\\n <ng-container *ngTemplateOutlet=\\\"tab.content\\\"></ng-container>\\r\\n }\\r\\n </div>\\r\\n </p-tabpanel>\\r\\n }\\r\\n </p-tabpanels>\\r\\n </p-tabs>\\r\\n</div>\\r\\n\\r\\n<!-- [model]=\\\"model\\\" -->\\r\\n <app-generic-dialog\\r\\n #dialog\\r\\n [formFields]=\\\"formFields ?? []\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField ??'id'\\\"\\r\\n [displayMode]=\\\"displayMode ?? 'dialog'\\\"\\r\\n (afterSave)=\\\"afterSave($event)\\\"\\r\\n >\\r\\n </app-generic-dialog>\\r\\n}\\r\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: ToolbarModule }, { kind: \"component\", type: i2.Toolbar, selector: \"p-toolbar\", inputs: [\"styleClass\", \"ariaLabelledBy\"] }, { kind: \"directive\", type: i3.PrimeTemplate, selector: \"[pTemplate]\", inputs: [\"type\", \"pTemplate\"] }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"directive\", type: i4.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"loading\", \"severity\", \"raised\", \"rounded\", \"text\", \"outlined\", \"size\", \"plain\", \"fluid\", \"label\", \"icon\", \"buttonProps\"] }, { kind: \"ngmodule\", type: TabsModule }, { kind: \"component\", type: i5.Tabs, selector: \"p-tabs\", inputs: [\"value\", \"scrollable\", \"lazy\", \"selectOnFocus\", \"showNavigators\", \"tabindex\"], outputs: [\"valueChange\"] }, { kind: \"component\", type: i5.TabPanels, selector: \"p-tabpanels\" }, { kind: \"component\", type: i5.TabPanel, selector: \"p-tabpanel\", inputs: [\"value\"], outputs: [\"valueChange\"] }, { kind: \"component\", type: i5.TabList, selector: \"p-tablist\" }, { kind: \"component\", type: i5.Tab, selector: \"p-tab\", inputs: [\"value\", \"disabled\"], outputs: [\"valueChange\"] }, { kind: \"component\", type: FormlyForm, selector: \"formly-form\", inputs: [\"form\", \"model\", \"fields\", \"options\"], outputs: [\"modelChange\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i6.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { kind: \"directive\", type: i6.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i6.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"component\", type: BreadcrumbComponent, selector: \"app-breadcrumb\", inputs: [\"breadcrumb\"] }, { kind: \"ngmodule\", type: TooltipModule }, { kind: \"directive\", type: i7.Tooltip, selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\", \"appendTo\"] }, { kind: \"component\", type: GenericDialogComponent, selector: \"app-generic-dialog\", inputs: [\"form\", \"service\", \"formFields\", \"model\", \"apiName\", \"idField\", \"dialogMaxWidth\", \"displayMode\", \"mode\", \"forceState\", \"drawerVisible\", \"dialogVisible\", \"isViewMode\", \"isEditMode\", \"useConfirmOnSave\", \"loading\", \"errorMsg\", \"errorMessage\", \"beforeSaveTransform\", \"hideTable\", \"autoShowForm\"], outputs: [\"action\", \"afterSave\", \"afterDelete\", \"beforeSave\", \"beforeDelete\", \"formCancel\", \"formInit\", \"dataLoaded\", \"selectionChange\", \"error\", \"visibleChange\"] }, { kind: \"component\", type: GenericButton, selector: \"lib-generic-button\", inputs: [\"model\", \"type\", \"icon\", \"label\", \"variant\", \"severity\", \"size\", \"iconPosition\", \"disabled\", \"loading\", \"ariaLabel\", \"extraClasses\", \"permission\"], outputs: [\"clicked\", \"itemClick\"] }, { kind: \"ngmodule\", type: ProgressSpinnerModule }, { kind: \"component\", type: i8.ProgressSpinner, selector: \"p-progressSpinner, p-progress-spinner, p-progressspinner\", inputs: [\"styleClass\", \"strokeWidth\", \"fill\", \"animationDuration\", \"ariaLabel\"] }, { kind: \"pipe\", type: i9.TranslatePipe, name: \"translate\" }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'app-detail-view', standalone: true, imports: [\n CommonModule,\n ToolbarModule,\n ButtonModule,\n TabsModule,\n FormlyForm,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n BreadcrumbComponent,\n TooltipModule,\n GenericDialogComponent,\n GenericButton,\n ProgressSpinnerModule\n ], template: \"\\r\\n@if (mode === 'detail') {\\r\\n<div class=\\\"w-full flex flex-col gap-3\\\">\\r\\n <!-- overlay -->\\r\\n <div *ngIf=\\\"loading\\\"\\r\\n class=\\\"absolute inset-0 bg-white/70 flex items-center justify-center z-50\\\">\\r\\n <p-progress-spinner/>\\r\\n </div>\\r\\n\\r\\n <!-- actual content -->\\r\\n <!-- Toolbar -->\\r\\n <p-toolbar style=\\\"background: transparent;border: 0px;box-shadow: none;\\\" class=\\\"bg-transparent shadow-none border-none rounded-md px-3\\\">\\r\\n <ng-template pTemplate=\\\"left\\\">\\r\\n <!-- <span class=\\\"font-semibold text-lg xs:hidden block\\\">{{ title }}</span> -->\\r\\n <app-breadcrumb class=\\\"xs:block\\\" [breadcrumb]=\\\"breadcrumb\\\"></app-breadcrumb> <!-- xs:block hidden -->\\r\\n </ng-template>\\r\\n <ng-template pTemplate=\\\"right\\\">\\r\\n <div class=\\\"flex gap-2\\\">\\r\\n\\r\\n <button\\r\\n pButton pRipple\\r\\n icon=\\\"pi pi-chevron-right\\\"\\r\\n class=\\\"p-button-text p-button-sm fd-btn\\\"\\r\\n pTooltip=\\\"\\u0627\\u0644\\u062A\\u0627\\u0644\\u064A\\\"\\r\\n (click)=\\\"next()\\\"\\r\\n ></button>\\r\\n <button\\r\\n pButton pRipple\\r\\n icon=\\\"pi pi-chevron-left\\\"\\r\\n class=\\\"p-button-text p-button-sm fd-btn\\\"\\r\\n pTooltip=\\\"\\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\\\"\\r\\n (click)=\\\"previous()\\\"\\r\\n ></button>\\r\\n </div>\\r\\n </ng-template>\\r\\n </p-toolbar>\\r\\n <p-toolbar class=\\\"bg-white shadow rounded-md px-3\\\">\\r\\n\\r\\n <ng-template pTemplate=\\\"left\\\">\\r\\n @if (isViewMode) {\\r\\n <div class=\\\"flex gap-1\\\">\\r\\n @for (action of actions_; track $index) {\\r\\n <button\\r\\n pButton pRipple\\r\\n [icon]=\\\"action.icon ?? ''\\\"\\r\\n [label]=\\\"(action.label ?? '') | translate\\\"\\r\\n class=\\\"fd-btn\\\"\\r\\n (click)=\\\"onAction(action,model)\\\"\\r\\n ></button>\\r\\n }\\r\\n </div>\\r\\n }\\r\\n </ng-template>\\r\\n <ng-template pTemplate=\\\"right\\\">\\r\\n @if (isEditMode || isCreateMode) {\\r\\n <div class=\\\"flex gap-1\\\">\\r\\n @for (btn of createEditActions; track $index) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n @if (btn.type == 'submit' && inlineForm) {\\r\\n <lib-generic-button\\r\\n [type]=\\\"'submit'\\\"\\r\\n [loading]=\\\"inlineForm.loading\\\"\\r\\n [disabled]=\\\"inlineForm.loading || form.invalid\\\"\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"inlineForm.onSubmit()\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n @else{\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"handleCreateEditAction(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n </div>\\r\\n }\\r\\n </ng-template>\\r\\n\\r\\n </p-toolbar>\\r\\n\\r\\n <!-- Tabs -->\\r\\n <p-tabs value=\\\"0\\\">\\r\\n <p-tablist>\\r\\n @for (tab of tabs_; track $index) {\\r\\n <p-tab value=\\\"{{$index}}\\\">\\r\\n <i [class]=\\\"tab.icon\\\"></i>\\r\\n <span class=\\\"mr-1 ml-1\\\">{{ tab.header }}</span>\\r\\n </p-tab>\\r\\n }\\r\\n </p-tablist>\\r\\n <p-tabpanels>\\r\\n @for (tab of tabs_; track $index) {\\r\\n <p-tabpanel value=\\\"{{$index}}\\\">\\r\\n\\r\\n <!-- Formly fields -->\\r\\n <!-- p-4 grid grid-cols-1 md:grid-cols-2 gap-4 -->\\r\\n <div class=\\\"border border-surface p-4\\\">\\r\\n @if (tab.fields.length && $index == 0) {\\r\\n\\r\\n <form *ngIf=\\\"form\\\" [formGroup]=\\\"form\\\">\\r\\n @if (tab.fields.length && $index == 0 ) {\\r\\n @if (isEditMode || isCreateMode) {\\r\\n <app-generic-dialog\\r\\n #inlineForm\\r\\n [form]=\\\"form\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [formFields]=\\\"formFields ?? []\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField ??'id'\\\"\\r\\n [displayMode]=\\\"'inline'\\\"\\r\\n [mode]=\\\"'form-only'\\\"\\r\\n [forceState]=\\\"isCreateMode ? 'create':'edit'\\\"\\r\\n (afterSave)=\\\"afterSave($event)\\\"\\r\\n >\\r\\n </app-generic-dialog>\\r\\n}\\r\\n@else if(isViewMode){\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"tab.fields\\\"\\r\\n [model]=\\\"model\\\"\\r\\n ></formly-form>\\r\\n}\\r\\n}\\r\\n </form>\\r\\n\\r\\n }\\r\\n @if (tab.fields.length && $index > 0) {\\r\\n\\r\\n\\r\\n <formly-form\\r\\n [form]=\\\"getForm($index)\\\"\\r\\n [fields]=\\\"tab.fields\\\"\\r\\n [model]=\\\"tab.model || model\\\"\\r\\n ></formly-form>\\r\\n\\r\\n }\\r\\n\\r\\n <!-- Custom template -->\\r\\n @if (tab.content) {\\r\\n <ng-container *ngTemplateOutlet=\\\"tab.content\\\"></ng-container>\\r\\n }\\r\\n </div>\\r\\n </p-tabpanel>\\r\\n }\\r\\n </p-tabpanels>\\r\\n </p-tabs>\\r\\n</div>\\r\\n\\r\\n<!-- [model]=\\\"model\\\" -->\\r\\n <app-generic-dialog\\r\\n #dialog\\r\\n [formFields]=\\\"formFields ?? []\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField ??'id'\\\"\\r\\n [displayMode]=\\\"displayMode ?? 'dialog'\\\"\\r\\n (afterSave)=\\\"afterSave($event)\\\"\\r\\n >\\r\\n </app-generic-dialog>\\r\\n}\\r\\n\" }]\n }], propDecorators: { title: [{\n type: Input\n }], actions: [{\n type: Input\n }], createEditActions: [{\n type: Input\n }], tabs: [{\n type: Input\n }], viewMode: [{\n type: Input\n }], breadcrumb: [{\n type: Input\n }], service: [{\n type: Input\n }], formFields: [{\n type: Input\n }], apiName: [{\n type: Input\n }], idField: [{\n type: Input\n }], standaloneMode: [{\n type: Input\n }], isViewMode: [{\n type: Input\n }], isCreateMode: [{\n type: Input\n }], isEditMode: [{\n type: Input\n }], model: [{\n type: Input\n }], displayMode: [{\n type: Input\n }], mode: [{\n type: Input\n }], action: [{\n type: Output\n }], afterDelete: [{\n type: Output\n }], dialog: [{\n type: ViewChild,\n args: ['dialog']\n }], inlineForm: [{\n type: ViewChild,\n args: ['inlineForm']\n }], loading: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy12aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtdmlldy9zcmMvbGliL2dlbmVyaWMtdmlldy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLXZpZXcvc3JjL2xpYi9nZW5lcmljLXZpZXcuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFxQixNQUFNLGtCQUFrQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlC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LGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNJLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0UsS0FBSztzQkFBYixLQUFLO2dCQUNJLFdBQVc7c0JBQW5CLEtBQUs7Z0JBV0MsSUFBSTtzQkFBWixLQUFLO2dCQUVPLE1BQU07c0JBQWYsTUFBTTtnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUVjLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFDTSxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBUWhCLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFRvb2xiYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2xiYXInO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7IEZvcm1seUZvcm0sIEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRhYnNNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYnMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IEJyZWFkY3J1bWJDb21wb25lbnQgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLnVpLmNvcmUvYnJlYWRjcnVtYic7XHJcbmltcG9ydCB7IEJhc2VTZXJ2aWNlLCBTd2FsU2VydmljZSB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBBY3Rpb25EZWYsIEJ1dHRvbkNvbmZpZywgUGFnaW5hdGVkUmVzdWx0IH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcHJvZ3Jlc3NzcGlubmVyJztcclxuaW1wb3J0IHsgR2VuZXJpY0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcudWkuY29yZS9nZW5lcmljLWRpYWxvZyc7XHJcbmltcG9ydCB7IEdlbmVyaWNCdXR0b24gfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLnVpLmNvcmUvZ2VuZXJpYy1idXR0b24nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEZXRhaWxUYWIge1xyXG4gIGhlYWRlcjogc3RyaW5nO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdO1xyXG4gIG1vZGVsPzogYW55O1xyXG4gIGNvbnRlbnQ/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1kZXRhaWwtdmlldycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBUb29sYmFyTW9kdWxlLFxyXG4gICAgQnV0dG9uTW9kdWxlLFxyXG4gICAgVGFic01vZHVsZSxcclxuICAgIEZvcm1seUZvcm0sXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBCcmVhZGNydW1iQ29tcG9uZW50LFxyXG4gICAgVG9vbHRpcE1vZHVsZSxcclxuICAgIEdlbmVyaWNEaWFsb2dDb21wb25lbnQsXHJcbiAgICBHZW5lcmljQnV0dG9uLFxyXG4gICAgUHJvZ3Jlc3NTcGlubmVyTW9kdWxlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJpYy12aWV3Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR2VuZXJpY1ZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xyXG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblxyXG4gIGZvcm0gPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XHJcblxyXG4gIEBJbnB1dCgpIHRpdGxlID0gJyc7XHJcbiAgQElucHV0KCkgYWN0aW9uczogQWN0aW9uRGVmPGFueT5bXSA9IFtdO1xyXG4gICBASW5wdXQoKSBjcmVhdGVFZGl0QWN0aW9uczogQnV0dG9uQ29uZmlnW10gPSBbXTtcclxuICAgYWN0aW9uc186IEFjdGlvbkRlZjxhbnk+W10gPSBbXTtcclxuICBASW5wdXQoKSB0YWJzOiBEZXRhaWxUYWJbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHZpZXdNb2RlID0gdHJ1ZTtcclxuICBASW5wdXQoKSBicmVhZGNydW1iOiBNZW51SXRlbVtdIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHNlcnZpY2U6IEJhc2VTZXJ2aWNlID0gaW5qZWN0KEJhc2VTZXJ2aWNlKTtcclxuICBASW5wdXQoKSBmb3JtRmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107XHJcbiAgQElucHV0KCkgYXBpTmFtZSA9ICcnO1xyXG4gIEBJbnB1dCgpIGlkRmllbGQgPSAnaWQnO1xyXG4gQElucHV0KCkgc3RhbmRhbG9uZU1vZGUgPSBmYWxzZTtcclxuIEBJbnB1dCgpIGlzVmlld01vZGUgPSB0cnVlOyAvLyDZiNi22Lkg2KfZhNmF2LTYp9mH2K/YqSDZgdmC2LdcclxuIEBJbnB1dCgpIGlzQ3JlYXRlTW9kZSA9IGZhbHNlOyAvLyDZiNi22Lkg2KfZhNin2LbYp9mB2Kkg2YHZgti3XHJcbiAgQElucHV0KCkgaXNFZGl0TW9kZSA9IGZhbHNlOyAvLyDZiNi22Lkg2KfZhNiq2LnYr9mK2YRcclxuIEBJbnB1dCgpIG1vZGVsID0ge307XHJcbiAgQElucHV0KCkgZGlzcGxheU1vZGU6XHJcbiAgICB8ICdkcmF3ZXInXHJcbiAgICB8ICdkaWFsb2cnXHJcbiAgICB8ICdyb3V0ZSdcclxuICAgIHwgJ2lubGluZSdcclxuICAgIHwgUGFydGlhbDxcclxuICAgICAgUmVjb3JkPFxyXG4gICAgICAgICdhZGQnIHwgJ2VkaXQnIHwgJ3ZpZXcnLFxyXG4gICAgICAgICdkcmF3ZXInIHwgJ2RpYWxvZycgfCAncm91dGUnIHwgJ2lubGluZSdcclxuICAgICAgPlxyXG4gICAgPiA9ICdkcmF3ZXInO1xyXG5ASW5wdXQoKSBtb2RlOiAnZnVsbCcgfCAnZm9ybS1vbmx5JyB8ICd0YWJsZS1vbmx5JyB8ICdkZXRhaWwnID0gJ2Z1bGwnO1xyXG5cclxuICAgQE91dHB1dCgpIGFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBuYW1lOiBzdHJpbmc7IHJvdzogYW55IH0+KCk7XHJcbiAgICBAT3V0cHV0KCkgYWZ0ZXJEZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcmVjb3JkOiBhbnk7IHJlc3BvbnNlPzogYW55IH0+KCk7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnZGlhbG9nJykgZGlhbG9nITogR2VuZXJpY0RpYWxvZ0NvbXBvbmVudDtcclxuICAgIEBWaWV3Q2hpbGQoJ2lubGluZUZvcm0nKSBpbmxpbmVGb3JtITogR2VuZXJpY0RpYWxvZ0NvbXBvbmVudDtcclxuXHJcbiAgdGFic186IERldGFpbFRhYltdID0gW107XHJcbiAgbW9kZWxfOiBhbnkgPSB7fTtcclxuXHJcbiAgY3VycmVudElkITogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIGxpc3Q6IGFueVtdID0gW107XHJcbiAgdG90YWxSZWNvcmRzID0gMDtcclxuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIC8vIHBhZ2luYXRpb24gc3RhdGVcclxuICBwYWdlU2l6ZSA9IDEwO1xyXG4gIHBhZ2VJbmRleCA9IDA7XHJcbiAgc29ydCA9ICcnO1xyXG4gIGN1cnJlbnRGaWx0ZXJzOiBhbnkgPSB7fTtcclxuICBwYWdlRmlsdGVyczogYW55ID0ge307XHJcbiAgc2VhcmNoR2xvYmFsID0gJyc7XHJcbiBwcml2YXRlIHN3YWxTZXJ2aWNlID0gaW5qZWN0KFN3YWxTZXJ2aWNlKTtcclxuXHJcbiBfbG9jYXRpb246IExvY2F0aW9uID0gaW5qZWN0KExvY2F0aW9uKTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuYXBpTmFtZSkge1xyXG4gICAgICB0aGlzLnNlcnZpY2UuYXBpTmFtZSA9IHRoaXMuYXBpTmFtZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgdGhpcy5hY3Rpb25zXyA9IHRoaXMuYWN0aW9ucy5maWx0ZXIoYz0+Yy5uYW1lICE9ICd2aWV3Jyk7XHJcblxyXG4gICAgICB0aGlzLnJvdXRlLnBhcmFtTWFwLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpZCA9IHBhcmFtcy5nZXQodGhpcy5pZEZpZWxkKTtcclxuICAgICAgICAgICAgaWYgKGlkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jdXJyZW50SWQgPSBpZDtcclxuICAgICAgICAgICAgICAgaWYodGhpcy5zdGFuZGFsb25lTW9kZSl7XHJcbiAgICAgICAgICAgICAgdGhpcy5sb2FkTGlzdCgpO1xyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcblxyXG4gICAgICAgICAgfSk7XHJcblxyXG5cclxuICB9XHJcblxyXG4gIHJlZnJlc2goKXtcclxuXHJcbiAgICAvLyBkZXRlY3QgbW9kZSBiYXNlZCBvbiByb3V0ZVxyXG4gIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLnVybC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgIHRoaXMuaXNWaWV3TW9kZSA9IHVybC5pbmNsdWRlcygnL3ZpZXcnKTtcclxuICB0aGlzLmlzRWRpdE1vZGUgPSB1cmwuaW5jbHVkZXMoJy9lZGl0Jyk7XHJcbiAgdGhpcy5pc0NyZWF0ZU1vZGUgPSB1cmwuaW5jbHVkZXMoJy9jcmVhdGUnKSB8fCB1cmwuZW5kc1dpdGgoJy9uZXcnKSB8fCB1cmwuZW5kc1dpdGgoJy9hZGQnKTtcclxuXHJcbiAgdGhpcy50YWJzXyA9IFtdO1xyXG5mb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudGFicy5sZW5ndGg7IGkrKykge1xyXG4gIGNvbnN0IHQgPSB0aGlzLnRhYnNbaV07XHJcbiAgdGhpcy50YWJzXy5wdXNoKHtcclxuICAgIC4uLnQsXHJcbiAgICBmaWVsZHM6IFtcclxuICAgICAge1xyXG4gICAgICAgIHByb3BzOiB7IGxhYmVsOiAnJyB9LFxyXG4gICAgICAgIGZpZWxkR3JvdXBDbGFzc05hbWU6ICdncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGdhcC0zJyxcclxuICAgICAgICBmaWVsZEdyb3VwOlxyXG4gICAgICAgICAgdGhpcy5pc0NyZWF0ZU1vZGUgfHwgdGhpcy5pc0VkaXRNb2RlXHJcbiAgICAgICAgICAgID8gdGhpcy5nZXRDcmVhdGVFZGl0RmllbGRzKGkgPT0gMCA/IHRoaXMuZm9ybUZpZWxkczogdC5maWVsZHMpXHJcbiAgICAgICAgICAgIDogdGhpcy5nZXRWaWV3RmllbGRzKGkgPT0gMCA/IHRoaXMuZm9ybUZpZWxkcyA6IHQuZmllbGRzKSxcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgfSk7XHJcbn1cclxudGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG4gIC8vIGFzIGZvcm1cclxuICAgZ2V0Q3JlYXRlRWRpdEZpZWxkcyhmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXSk6IEZvcm1seUZpZWxkQ29uZmlnW10ge1xyXG4gICAgcmV0dXJuIGZpZWxkcy5tYXAoZiA9PiAoe1xyXG4gICAgICAuLi5mLFxyXG4gICAgICBwcm9wczogeyAuLi5mLnByb3BzLCByZWFkb25seTogdGhpcy52aWV3TW9kZSwgZGlzYWJsZWQ6IHRoaXMudmlld01vZGUgfSxcclxuICAgIH0pKTtcclxuICB9XHJcbiAgZ2V0Vmlld0ZpZWxkcyhmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXSk6IEZvcm1seUZpZWxkQ29uZmlnW10ge1xyXG4gICAgY29uc3QgZmxhdHRlbiA9IChmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10pOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0+XHJcbiAgICAgIGZpZWxkcy5mbGF0TWFwKGZpZWxkID0+IHtcclxuICAgICAgICBpZiAoZmllbGQuZmllbGRHcm91cD8ubGVuZ3RoKSByZXR1cm4gZmxhdHRlbihmaWVsZC5maWVsZEdyb3VwKTtcclxuICAgICAgICBpZiAoIWZpZWxkLnByb3BzXHJcbiAgICAgICAgICB8fCBmaWVsZC5wcm9wc1sndmlldyddPy5oaWRkZW5cclxuICAgICAgICAgIC8vIHx8IGZpZWxkLnByb3BzWyd0YWJsZSddPy5oaWRkZW5cclxuICAgICAgICAgKSByZXR1cm4gW107XHJcblxyXG4gICAgICAgIGNvbnN0IHR5cGUgPSBmaWVsZC5wcm9wc1sndmlldyddPy50eXBlIHx8IGZpZWxkLnByb3BzWyd0YWJsZSddPy50eXBlIHx8ICdjdXN0b20tbGFiZWwtdHlwZSc7XHJcbiAgICAgICAgcmV0dXJuIFt7XHJcbiAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAga2V5OiBmaWVsZFsna2V5J10sXHJcbiAgICAgICAgICByZWFkb25seTogdGhpcy52aWV3TW9kZSxcclxuICAgICAgICAgIGRpc2FibGVkOiB0aGlzLnZpZXdNb2RlLFxyXG4gICAgICAgICAgd3JhcHBlcnM6IGZpZWxkLndyYXBwZXJzID8/IFsnZmllbGQtd3JhcHBlciddLFxyXG4gICAgICAgICAgcHJvcHM6IHtcclxuICAgICAgICAgICAgLi4uZmllbGQucHJvcHMsXHJcbiAgICAgICAgICAgIC4uLihmaWVsZC5wcm9wc1sndmlldyddPy5wcm9wcyB8fCBmaWVsZC5wcm9wc1sndGFibGUnXT8ucHJvcHMpLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGV4cHJlc3Npb25zOiBmaWVsZC5wcm9wc1sndmlldyddPy5leHByZXNzaW9ucyB8fCBmaWVsZC5wcm9wc1sndmlldyddPy5leHByZXNzaW9ucyxcclxuICAgICAgICB9XTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGZsYXR0ZW4oZmllbGRzKTtcclxuICB9XHJcblxyXG4gICAgIC8vIFVzZSBhIG1hcCB0byBzdG9yZSBmb3JtIGdyb3VwcyBmb3IgZWFjaCByb3cgYW5kIGNvbHVtblxyXG4gIHByaXZhdGUgY2VsbEZvcm1zOiBNYXA8c3RyaW5nLCBGb3JtR3JvdXA+ID0gbmV3IE1hcCgpO1xyXG4gICAgZ2V0Rm9ybShyb3dJbmRleDogbnVtYmVyKTogRm9ybUdyb3VwIHtcclxuICAgIGNvbnN0IGtleSA9IGAke3Jvd0luZGV4fV9gO1xyXG4gICAgbGV0IGZvcm0gPSB0aGlzLmNlbGxGb3Jtcy5nZXQoa2V5KTtcclxuXHJcbiAgICBpZiAoIWZvcm0pIHtcclxuICAgICAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICB0aGlzLmNlbGxGb3Jtcy5zZXQoa2V5LCBmb3JtKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3JtO1xyXG4gIH1cclxuXHJcblxyXG4gICBhc3luYyBoYW5kbGVDcmVhdGVFZGl0QWN0aW9uKGJ0bjogQnV0dG9uQ29uZmlnKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoYnRuLmFjdGlvbikge1xyXG4gICAgICAgIC8vIEV4ZWN1dGUgdGhlIHByb3ZpZGVkIGFjdGlvblxyXG4gICAgICAgIGF3YWl0IGJ0bi5hY3Rpb24obnVsbCk7IC8vIFlvdSBjYW4gcGFzcyByb3cgb3IgY29udGV4dCBoZXJlXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gRmFsbGJhY2sgdG8gZW1pdHRpbmcgZXZlbnRcclxuICAgICAgICBpZihidG4uYWN0aW9uTmFtZSA9PSAnY2FuY2VsJyl7XHJcbiAgICAgICAgICB0aGlzLmJhY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICB0aGlzLmFjdGlvbi5lbWl0KHtcclxuICAgICAgICAgIG5hbWU6IGJ0bi5hY3Rpb25OYW1lID8/ICdjYW5jZWwnLFxyXG4gICAgICAgICAgcm93OiBudWxsISwgLy8gcHJvdmlkZSByb3cgaWYgYXZhaWxhYmxlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0J1dHRvbiBhY3Rpb24gZXJyb3InLCBlcnIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5vbkFjdGlvbihhY3Q6IEFjdGlvbkRlZjxhbnk+LCBtb2RlbDogYW55KSB7XHJcbiAgICBpZiAoYWN0LmFjdGlvbikge1xyXG4gICAgICBhY3QuYWN0aW9uKG1vZGVsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHRoaXMuYWN0aW9uLmVtaXQoeyBuYW1lOiBhY3QubmFtZSwgcm93Om1vZGVsIH0pO1xyXG4gICAgICB0aGlzLmVtaXRBY3Rpb24oeyBuYW1lOiBhY3QubmFtZSwgcm93Om1vZGVsIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgICBlbWl0QWN0aW9uKGV2ZW50OiB7IG5hbWU6IHN0cmluZzsgcm93OiBhbnkgfCBudWxsIH0pOiB2b2lkIHtcclxuICBzd2l0Y2ggKGV2ZW50Lm5hbWUpIHtcclxuICAgIGNhc2UgJ2VkaXQnOlxyXG4gICAgICB0aGlzLmRpYWxvZy5vcGVuRm9ybShcImVkaXRcIixldmVudC5yb3cpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ2RlbGV0ZSc6XHJcbiAgICAgIHRoaXMub25EZWxldGUoZXZlbnQucm93ISk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgZGVmYXVsdCA6XHJcbiAgICAgIHRoaXMuYWN0aW9uLmVtaXQoZXZlbnQpO1xyXG4gICAgICBicmVhaztcclxuICB9XHJcbn1cclxuXHJcbm9uRGVsZXRlKGl0ZW06IGFueSk6IHZvaWQge1xyXG4gIGNvbnN0IGlkID0gaXRlbVt0aGlzLmlkRmllbGRdO1xyXG5cclxuICB0aGlzLnN3YWxTZXJ2aWNlLmNvbmZpcm0oXHJcbiAgICAn2KrYo9mD2YrYryDYp9mE2K3YsNmBJyxcclxuICAgICfZh9mEINiq2LHZitivINit2LDZgSDZh9iw2Kcg2KfZhNiz2KzZhCDZgdi52YTYp9mL2J8nLFxyXG4gICAgJ9mG2LnZhdiMINin2K3YsNmBJyxcclxuICAgICfYpdmE2LrYp9ihJ1xyXG4gICkudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICBpZiAocmVzdWx0LmlzQ29uZmlybWVkKSB7XHJcbiAgICAgIHRoaXMuc2VydmljZS5kZWxldGUoaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zd2FsU2VydmljZS5zdWNjZXNzKCfYqtmFINin2YTYrdiw2YEg2KjZhtis2KfYrScpO1xyXG4gICAgICAgICAgdGhpcy5iYWNrKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG4gYWZ0ZXJTYXZlKGV2ZW50OiBhbnkpIHtcclxuICB0aGlzLm1vZGVsID0gZXZlbnQucmVzcG9uc2U7XHJcblxyXG4gIC8vIHNldCB0aGUgaWQgZnJvbSBiYWNrZW5kIHJlc3BvbnNlXHJcbiAgdGhpcy5jdXJyZW50SWQgPSBldmVudC5yZXNwb25zZVt0aGlzLmlkRmllbGRdO1xyXG5cclxuICBpZiAodGhpcy5pc0NyZWF0ZU1vZGUpIHtcclxuICAgIHRoaXMuZ29Ub01vZGUoJ3ZpZXcnKTtcclxuICB9IGVsc2UgaWYgKHRoaXMuaXNFZGl0TW9kZSkge1xyXG4gICAgdGhpcy5nb1RvTW9kZSgndmlldycpO1xyXG4gIH1cclxufVxyXG5cclxuXHJcblxyXG5nb1RvTW9kZShtb2RlOiAndmlldycgfCAnZWRpdCcgfCAnY3JlYXRlJykge1xyXG4gIGNvbnN0IHRyZWUgPSB0aGlzLnJvdXRlci5wYXJzZVVybCh0aGlzLnJvdXRlci51cmwpO1xyXG4gIGNvbnN0IHNlZ21lbnRzID0gdHJlZS5yb290LmNoaWxkcmVuWydwcmltYXJ5J10/LnNlZ21lbnRzLm1hcChzID0+IHMucGF0aCkgPz8gW107XHJcblxyXG4gIGxldCBuZXdTZWdtZW50czogc3RyaW5nW107XHJcblxyXG4gIGlmIChtb2RlID09PSAnY3JlYXRlJykge1xyXG4gICAgLy8gYWx3YXlzIG5hdmlnYXRlIHRvIFwiYWRkXCJcclxuICAgIG5ld1NlZ21lbnRzID0gW1xyXG4gICAgICAuLi5zZWdtZW50cy5maWx0ZXIocyA9PiAhWyd2aWV3JywgJ2VkaXQnLCAnYWRkJ10uaW5jbHVkZXMocykpLFxyXG4gICAgICAnYWRkJyxcclxuICAgIF07XHJcbiAgfSBlbHNlIHtcclxuICAgIC8vIGlmIGluIFwiYWRkXCIgbW9kZSwgcmVwbGFjZSBpdCB3aXRoIHRoZSBuZXcgaWRcclxuICAgIGlmIChzZWdtZW50cy5pbmNsdWRlcygnYWRkJykpIHtcclxuICAgICAgbmV3U2VnbWVudHMgPSBbXHJcbiAgICAgICAgLi4uc2VnbWVudHMuZmlsdGVyKHMgPT4gcyAhPT0gJ2FkZCcpLFxyXG4gICAgICAgIFN0cmluZyh0aGlzLmN1cnJlbnRJZCksXHJcbiAgICAgICAgbW9kZSxcclxuICAgICAgXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGlkSW5kZXggPSBzZWdtZW50cy5maW5kSW5kZXgocyA9PiBzID09PSBTdHJpbmcodGhpcy5jdXJyZW50SWQpKTtcclxuICAgICAgaWYgKGlkSW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgbmV3U2VnbWVudHMgPSBbLi4uc2VnbWVudHMsIFN0cmluZyh0aGlzLmN1cnJlbnRJZCksIG1vZGVdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld1NlZ21lbnRzID0gc2VnbWVudHMuc2xpY2UoMCwgaWRJbmRleCArIDEpO1xyXG4gICAgICAgIG5ld1NlZ21lbnRzLnB1c2gobW9kZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRoaXMucm91dGVyLm5hdmlnYXRlKG5ld1NlZ21lbnRzKTtcclxuICB0aGlzLnJlZnJlc2goKTtcclxufVxyXG5cclxuXHJcbmJhY2tUb0xpc3QoKXtcclxuICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vJ10pO1xyXG4gICAgfVxyXG5iYWNrKCl7XHJcbiAgICAgIC8vICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uJ10pO1xyXG4gICAgICAgdGhpcy5fbG9jYXRpb24uYmFjaygpXHJcbiAgICB9XHJcbiAgbG9hZExpc3QoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgY29uc3QgZmlsdGVycyA9IHtcclxuICAgICAgbWF4UmVzdWx0Q291bnQ6IHRoaXMucGFnZVNpemUsXHJcbiAgICAgIHNraXBDb3VudDogdGhpcy5wYWdlSW5kZXggKiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICBzb3J0aW5nOiB0aGlzLnNvcnQsXHJcbiAgICAgIC4uLnRoaXMuY3VycmVudEZpbHRlcnMsXHJcbiAgICAgIC4uLnRoaXMucGFnZUZpbHRlcnMsXHJcbiAgICAgIC4uLih0aGlzLnNlYXJjaEdsb2JhbCA/IHsgZmlsdGVyOiB0aGlzLnNlYXJjaEdsb2JhbCB9IDoge30pLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnNlcnZpY2UuZ2V0TGlzdChmaWx0ZXJzKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBQYWdpbmF0ZWRSZXN1bHQ8YW55PikgPT4ge1xyXG4gICAgICAgIHRoaXMubGlzdCA9IHJlcy5pdGVtcztcclxuICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHJlcy50b3RhbENvdW50O1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICAvLyBzZXQgbW9kZWxfIHRvIGN1cnJlbnQgaWQgaXRlbVxyXG4gICAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5saXN0LmZpbmQoeCA9PiB4W3RoaXMuaWRGaWVsZF0gPT0gdGhpcy5jdXJyZW50SWQpO1xyXG4gICAgICAgIGlmIChmb3VuZCkge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbF8gPSBmb3VuZDtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiBlcnIgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgbGlzdCcsIGVycik7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuIG5leHQoKSB7XHJcbiAgaWYgKCF0aGlzLmN1cnJlbnRJZCkgcmV0dXJuO1xyXG5cclxuICAvLyBpbmNyZW1lbnQgY3VycmVudElkIG51bWVyaWNhbGx5XHJcbiAgLy8gY29uc3QgbmV3SWQgPSBOdW1iZXIodGhpcy5jdXJyZW50SWQpICsgMTtcclxuICAvLyB0aGlzLmN1cnJlbnRJZCA9IG5ld0lkO1xyXG4gIC8vIHVzZSBnb1RvTW9kZSB0byBuYXZpZ2F0ZSBhbmQga2VlcCBtb2RlXHJcbiAgY29uc3QgY3VycmVudE1vZGUgPSB0aGlzLmlzRWRpdE1vZGUgPyAnZWRpdCcgOiAndmlldyc7XHJcbiAgLy8gdGhpcy5nb1RvTW9kZShjdXJyZW50TW9kZSk7XHJcbn1cclxuXHJcbnByZXZpb3VzKCkge1xyXG4gIGlmICghdGhpcy5jdXJyZW50SWQpIHJldHVybjtcclxuXHJcbiAgLy8gZGVjcmVtZW50IGN1cnJlbnRJZCBudW1lcmljYWxseVxyXG4gIC8vIGNvbnN0IG5ld0lkID0gTnVtYmVyKHRoaXMuY3VycmVudElkKSAtIDE7XHJcbiAgLy8gaWYgKG5ld0lkIDw9IDApIHJldHVybjtcclxuXHJcbiAgLy8gdGhpcy5jdXJyZW50SWQgPSBuZXdJZDtcclxuXHJcbiAgLy8gdXNlIGdvVG9Nb2RlIHRvIG5hdmlnYXRlIGFuZCBrZWVwIG1vZGVcclxuICBjb25zdCBjdXJyZW50TW9kZSA9IHRoaXMuaXNFZGl0TW9kZSA/ICdlZGl0JyA6ICd2aWV3JztcclxuICAvLyB0aGlzLmdvVG9Nb2RlKGN1cnJlbnRNb2RlKTtcclxufVxyXG5cclxuXHJcbiAgLy8gbmV4dCgpIHtcclxuICAvLyAgIGNvbnN0IGlkeCA9IHRoaXMubGlzdC5maW5kSW5kZXgoeCA9PiB4W3RoaXMuaWRGaWVsZF0gPT0gdGhpcy5jdXJyZW50SWQpO1xyXG4gIC8vICAgaWYgKGlkeCA+PSAwICYmIGlkeCA8IHRoaXMubGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgLy8gICAgIGNvbnN0IG5ld0lkID0gdGhpcy5saXN0W2lkeCArIDFdW3RoaXMuaWRGaWVsZF07XHJcbiAgLy8gICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vJywgbmV3SWRdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICAvLyBwcmV2aW91cygpIHtcclxuICAvLyAgIGNvbnN0IGlkeCA9IHRoaXMubGlzdC5maW5kSW5kZXgoeCA9PiB4W3RoaXMuaWRGaWVsZF0gPT0gdGhpcy5jdXJyZW50SWQpO1xyXG4gIC8vICAgaWYgKGlkeCA+IDApIHtcclxuICAvLyAgICAgY29uc3QgbmV3SWQgPSB0aGlzLmxpc3RbaWR4IC0gMV1bdGhpcy5pZEZpZWxkXTtcclxuICAvLyAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLi8nLCBuZXdJZF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcbn1cclxuXHJcbiIsIlxyXG5AaWYgKG1vZGUgPT09ICdkZXRhaWwnKSB7XHJcbjxkaXYgIGNsYXNzPVwidy1mdWxsIGZsZXggZmxleC1jb2wgZ2FwLTNcIj5cclxuICA8IS0tIG92ZXJsYXkgLS0+XHJcbiAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIlxyXG4gICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC0wIGJnLXdoaXRlLzcwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHotNTBcIj5cclxuICAgIDxwLXByb2dyZXNzLXNwaW5uZXIvPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIGFjdHVhbCBjb250ZW50IC0tPlxyXG4gIDwhLS0gVG9vbGJhciAtLT5cclxuICA8cC10b29sYmFyIHN0eWxlPVwiYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Ym9yZGVyOiAwcHg7Ym94LXNoYWRvdzogbm9uZTtcIiBjbGFzcz1cImJnLXRyYW5zcGFyZW50IHNoYWRvdy1ub25lIGJvcmRlci1ub25lIHJvdW5kZWQtbWQgcHgtM1wiPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImxlZnRcIj5cclxuICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1sZyB4czpoaWRkZW4gYmxvY2tcIj57eyB0aXRsZSB9fTwvc3Bhbj4gLS0+XHJcbiAgICAgIDxhcHAtYnJlYWRjcnVtYiBjbGFzcz1cInhzOmJsb2NrXCIgW2JyZWFkY3J1bWJdPVwiYnJlYWRjcnVtYlwiPjwvYXBwLWJyZWFkY3J1bWI+IDwhLS0geHM6YmxvY2sgaGlkZGVuIC0tPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJyaWdodFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMlwiPlxyXG5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHBCdXR0b24gcFJpcHBsZVxyXG4gICAgICAgIGljb249XCJwaSBwaS1jaGV2cm9uLXJpZ2h0XCJcclxuICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tc20gZmQtYnRuXCJcclxuICAgICAgICBwVG9vbHRpcD1cItin2YTYqtin2YTZilwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm5leHQoKVwiXHJcbiAgICAgID48L2J1dHRvbj5cclxuICAgICAgIDxidXR0b25cclxuICAgICAgICBwQnV0dG9uIHBSaXBwbGVcclxuICAgICAgICBpY29uPVwicGkgcGktY2hldnJvbi1sZWZ0XCJcclxuICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tc20gZmQtYnRuXCJcclxuICAgICAgICBwVG9vbHRpcD1cItin2YTYs9in2KjZglwiXHJcbiAgICAgICAgKGNsaWNrKT1cInByZXZpb3VzKClcIlxyXG4gICAgICA+PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L3AtdG9vbGJhcj5cclxuICAgPHAtdG9vbGJhciBjbGFzcz1cImJnLXdoaXRlIHNoYWRvdyByb3VuZGVkLW1kIHB4LTNcIj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwibGVmdFwiPlxyXG4gICAgICAgQGlmIChpc1ZpZXdNb2RlKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0xXCI+XHJcbiAgICAgICAgICBAZm9yIChhY3Rpb24gb2YgYWN0aW9uc187IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICBwQnV0dG9uIHBSaXBwbGVcclxuICAgICAgW2ljb25dPVwiYWN0aW9uLmljb24gPz8gJydcIlxyXG4gICAgICAgICAgW2xhYmVsXT1cIihhY3Rpb24ubGFiZWwgPz8gJycpIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICBjbGFzcz1cImZkLWJ0blwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uKGFjdGlvbixtb2RlbClcIlxyXG4gICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJyaWdodFwiPlxyXG4gICAgICBAaWYgKGlzRWRpdE1vZGUgfHwgaXNDcmVhdGVNb2RlKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0xXCI+XHJcbiAgICAgICBAZm9yIChidG4gb2YgY3JlYXRlRWRpdEFjdGlvbnM7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICBAaWYgKCFidG4udmlzaWJsZSB8fCAoYnRuLnZpc2libGUgJiYgYnRuLnZpc2libGUgPT09IHRydWUpKSB7XHJcbiAgICAgICAgICAgICAgIEBpZiAoYnRuLnR5cGUgPT0gJ3N1Ym1pdCcgJiYgaW5saW5lRm9ybSkge1xyXG4gICAgICAgICAgICAgIDxsaWItZ2VuZXJpYy1idXR0b25cclxuICAgICAgICAgICAgICAgIFt0eXBlXT1cIidzdWJtaXQnXCJcclxuICAgICAgICAgICAgICAgIFtsb2FkaW5nXT1cImlubGluZUZvcm0ubG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaW5saW5lRm9ybS5sb2FkaW5nIHx8IGZvcm0uaW52YWxpZFwiXHJcbiAgICAgICAgICAgICAgICBbaWNvbl09XCJidG4uaWNvblwiXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiYnRuLmxhYmVsIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgIFt2YXJpYW50XT1cImJ0bi52YXJpYW50XCJcclxuICAgICAgICAgICAgICAgIFtzZXZlcml0eV09XCJidG4uc2V2ZXJpdHlcIlxyXG4gICAgICAgICAgICAgICAgW3NpemVdPVwiYnRuLnNpemVcIlxyXG4gICAgICAgICAgICAgICAgW21vZGVsXT1cImJ0bi5zcGxpdEFjdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgW3Blcm1pc3Npb25dPVwiYnRuLnBlcm1pc3Npb25cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwiaW5saW5lRm9ybS5vblN1Ym1pdCgpXCJcclxuICAgICAgICAgICAgICA+PC9saWItZ2VuZXJpYy1idXR0b24+XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgQGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgPGxpYi1nZW5lcmljLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiYnRuLmljb25cIlxyXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cImJ0bi5sYWJlbCB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbdmFyaWFudF09XCJidG4udmFyaWFudFwiXHJcbiAgICAgICAgICAgICAgICBbc2V2ZXJpdHldPVwiYnRuLnNldmVyaXR5XCJcclxuICAgICAgICAgICAgICAgIFtzaXplXT1cImJ0bi5zaXplXCJcclxuICAgICAgICAgICAgICAgIFttb2RlbF09XCJidG4uc3BsaXRBY3Rpb25zXCJcclxuICAgICAgICAgICAgICAgIFtwZXJtaXNzaW9uXT1cImJ0bi5wZXJtaXNzaW9uXCJcclxuICAgICAgICAgICAgICAgIChjbGlja2VkKT1cImhhbmRsZUNyZWF0ZUVkaXRBY3Rpb24oYnRuKVwiXHJcbiAgICAgICAgICAgICAgPjwvbGliLWdlbmVyaWMtYnV0dG9uPlxyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDwvcC10b29sYmFyPlxyXG5cclxuICA8IS0tIFRhYnMgLS0+XHJcbiAgPHAtdGFicyB2YWx1ZT1cIjBcIj5cclxuICAgIDxwLXRhYmxpc3Q+XHJcbiAgICAgICBAZm9yICh0YWIgb2YgdGFic187IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgIDxwLXRhYiB2YWx1ZT1cInt7JGluZGV4fX1cIj5cclxuICAgICAgICAgIDxpIFtjbGFzc109XCJ0YWIuaWNvblwiPjwvaT5cclxuICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yLTEgbWwtMVwiPnt7IHRhYi5oZWFkZXIgfX08L3NwYW4+XHJcbiAgICAgICAgPC9wLXRhYj5cclxuICAgICAgIH1cclxuICAgIDwvcC10YWJsaXN0PlxyXG4gICAgPHAtdGFicGFuZWxzPlxyXG4gICAgICBAZm9yICh0YWIgb2YgdGFic187IHRyYWNrICRpbmRleCkge1xyXG4gPHAtdGFicGFuZWwgdmFsdWU9XCJ7eyRpbmRleH19XCI+XHJcblxyXG4gICAgICA8IS0tIEZvcm1seSBmaWVsZHMgLS0+XHJcbiAgICAgIDwhLS0gcC00IGdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgZ2FwLTQgLS0+XHJcbiAgICAgIDxkaXYgIGNsYXNzPVwiYm9yZGVyIGJvcmRlci1zdXJmYWNlIHAtNFwiPlxyXG4gICAgICAgIEBpZiAodGFiLmZpZWxkcy5sZW5ndGggJiYgJGluZGV4ID09IDApIHtcclxuXHJcbiAgICAgICA8Zm9ybSAqbmdJZj1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cclxuICAgICAgICAgQGlmICh0YWIuZmllbGRzLmxlbmd0aCAmJiAkaW5kZXggPT0gMCApIHtcclxuIEBpZiAoaXNFZGl0TW9kZSB8fCBpc0NyZWF0ZU1vZGUpIHtcclxuICAgICAgICAgPGFwcC1nZW5lcmljLWRpYWxvZ1xyXG4gICAgICAgICAjaW5saW5lRm9ybVxyXG4gICAgICAgICBbZm9ybV09XCJmb3JtXCJcclxuICAgICAgICAgW21vZGVsXT1cIm1vZGVsXCJcclxuICAgIFtmb3JtRmllbGRzXT1cImZvcm1GaWVsZHMgPz8gW11cIlxyXG4gICAgW2FwaU5hbWVdPVwiYXBpTmFtZVwiXHJcbiAgICBbaWRGaWVsZF09XCJpZEZpZWxkID8/J2lkJ1wiXHJcbiAgICBbZGlzcGxheU1vZGVdPVwiJ2lubGluZSdcIlxyXG4gICAgIFttb2RlXT1cIidmb3JtLW9ubHknXCJcclxuICAgICBbZm9yY2VTdGF0ZV09XCJpc0NyZWF0ZU1vZGUgPyAnY3JlYXRlJzonZWRpdCdcIlxyXG4gICAgKGFmdGVyU2F2ZSk9XCJhZnRlclNhdmUoJGV2ZW50KVwiXHJcbiAgPlxyXG4gIDwvYXBwLWdlbmVyaWMtZGlhbG9nPlxyXG59XHJcbkBlbHNlIGlmKGlzVmlld01vZGUpe1xyXG4gPGZvcm1seS1mb3JtXHJcbiAgICAgICAgICBbZm9ybV09XCJmb3JtXCJcclxuICAgICAgICAgIFtmaWVsZHNdPVwidGFiLmZpZWxkc1wiXHJcbiAgICAgICAgICBbbW9kZWxdPVwibW9kZWxcIlxyXG4gICAgICAgID48L2Zvcm1seS1mb3JtPlxyXG59XHJcbn1cclxuICAgICAgICA8L2Zvcm0+XHJcblxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAodGFiLmZpZWxkcy5sZW5ndGggJiYgJGluZGV4ID4gMCkge1xyXG5cclxuXHJcbiAgICAgICAgPGZvcm1seS1mb3JtXHJcbiAgICAgICAgICBbZm9ybV09XCJnZXRGb3JtKCRpbmRleClcIlxyXG4gICAgICAgICAgW2ZpZWxkc109XCJ0YWIuZmllbGRzXCJcclxuICAgICAgICAgIFttb2RlbF09XCJ0YWIubW9kZWwgfHwgbW9kZWxcIlxyXG4gICAgICAgID48L2Zvcm1seS1mb3JtPlxyXG5cclxuICAgICAgfVxyXG5cclxuICAgICAgPCEtLSBDdXN0b20gdGVtcGxhdGUgLS0+XHJcbiAgICAgIEBpZiAodGFiLmNvbnRlbnQpIHtcclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFiLmNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICAgIDwvcC10YWJwYW5lbD5cclxuICAgIH1cclxuICAgIDwvcC10YWJwYW5lbHM+XHJcbiAgPC9wLXRhYnM+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBbbW9kZWxdPVwibW9kZWxcIiAtLT5cclxuICA8YXBwLWdlbmVyaWMtZGlhbG9nXHJcbiAgICAjZGlhbG9nXHJcbiAgICBbZm9ybUZpZWxkc109XCJmb3JtRmllbGRzID8/IFtdXCJcclxuICAgIFthcGlOYW1lXT1cImFwaU5hbWVcIlxyXG4gICAgW2lkRmllbGRdPVwiaWRGaWVsZCA/PydpZCdcIlxyXG4gICAgW2Rpc3BsYXlNb2RlXT1cImRpc3BsYXlNb2RlID8/ICdkaWFsb2cnXCJcclxuICAgIChhZnRlclNhdmUpPVwiYWZ0ZXJTYXZlKCRldmVudClcIlxyXG4gID5cclxuICA8L2FwcC1nZW5lcmljLWRpYWxvZz5cclxufVxyXG4iXX0=","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class GenericViewModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericViewModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericViewModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericViewModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy12aWV3LW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLXZpZXcvc3JjL2xpYi9nZW5lcmljLXZpZXctbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8saUJBQWlCO3VHQUFqQixpQkFBaUI7d0dBQWpCLGlCQUFpQixZQUZsQixZQUFZO3dHQUVYLGlCQUFpQixZQUZsQixZQUFZOzsyRkFFWCxpQkFBaUI7a0JBSDdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY1ZpZXdNb2R1bGUge31cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy12aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtdmlldy9zcmMvZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy12aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"elite.framework-ng.ui.core-generic-view.mjs","sources":["../tmp-esm2022/generic-view/lib/generic-view.js","../tmp-esm2022/generic-view/lib/generic-view-module.js","../tmp-esm2022/generic-view/elite.framework-ng.ui.core-generic-view.js"],"sourcesContent":["import { TooltipModule } from 'primeng/tooltip';\nimport { Component, EventEmitter, inject, Input, Output, ViewChild } from '@angular/core';\nimport { CommonModule, Location } from '@angular/common';\nimport { ToolbarModule } from 'primeng/toolbar';\nimport { ButtonModule } from 'primeng/button';\nimport { FormlyForm } from '@ngx-formly/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\nimport { TabsModule } from 'primeng/tabs';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BreadcrumbComponent } from '@elite.framework/ng.ui.core/breadcrumb';\nimport { BaseService, IdParserService, SwalService } from '@elite.framework/ng.core/services';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\nimport { GenericDialogComponent } from '@elite.framework/ng.ui.core/generic-dialog';\nimport { GenericButton } from '@elite.framework/ng.ui.core/generic-button';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"primeng/toolbar\";\nimport * as i3 from \"primeng/api\";\nimport * as i4 from \"primeng/button\";\nimport * as i5 from \"primeng/tabs\";\nimport * as i6 from \"@angular/forms\";\nimport * as i7 from \"primeng/tooltip\";\nimport * as i8 from \"primeng/progressspinner\";\nimport * as i9 from \"@ngx-translate/core\";\nexport class GenericViewComponent {\n route = inject(ActivatedRoute);\n router = inject(Router);\n idParser = inject(IdParserService);\n form = new UntypedFormGroup({});\n title = '';\n actions = [];\n createEditActions = [];\n actions_ = [];\n tabs = [];\n viewMode = true;\n breadcrumb;\n service = inject(BaseService);\n formFields = [];\n apiName = '';\n idField = 'id';\n standaloneMode = false;\n isViewMode = true; // وضع المشاهدة فقط\n isCreateMode = false; // وضع الاضافة فقط\n isEditMode = false; // وضع التعديل\n model = {};\n displayMode = 'drawer';\n mode = 'full';\n action = new EventEmitter();\n afterDelete = new EventEmitter();\n dialog;\n inlineForm;\n tabs_ = [];\n model_ = {};\n currentId;\n list = [];\n totalRecords = 0;\n loading = false;\n // pagination state\n pageSize = 10;\n pageIndex = 0;\n sort = '';\n currentFilters = {};\n pageFilters = {};\n searchGlobal = '';\n swalService = inject(SwalService);\n _location = inject(Location);\n ngOnInit() {\n this.loading = true;\n if (this.apiName) {\n this.service.apiName = this.apiName;\n }\n this.actions_ = this.actions.filter(c => c.name != 'view');\n this.route.paramMap.subscribe(params => {\n const id = params.get(this.idField);\n if (id) {\n this.currentId = id;\n if (this.standaloneMode) {\n this.loadList();\n }\n }\n this.refresh();\n });\n }\n refresh() {\n // detect mode based on route\n const url = this.router.url.toLowerCase();\n this.isViewMode = url.includes('/view');\n this.isEditMode = url.includes('/edit');\n this.isCreateMode = url.includes('/create') || url.endsWith('/new') || url.endsWith('/add');\n this.tabs_ = [];\n for (let i = 0; i < this.tabs.length; i++) {\n const t = this.tabs[i];\n this.tabs_.push({\n ...t,\n fields: [\n {\n props: { label: '' },\n fieldGroupClassName: 'grid grid-cols-1 md:grid-cols-2 gap-3',\n fieldGroup: this.isCreateMode || this.isEditMode\n ? this.getCreateEditFields(i == 0 ? this.formFields : t.fields)\n : this.getViewFields(i == 0 ? this.formFields : t.fields),\n },\n ],\n });\n }\n this.loading = false;\n }\n // as form\n getCreateEditFields(fields = []) {\n return fields.map(f => ({\n ...f,\n props: { ...f.props, readonly: this.viewMode, disabled: this.viewMode },\n }));\n }\n getViewFields(fields = []) {\n const flatten = (fields) => fields.flatMap(field => {\n if (field.fieldGroup?.length)\n return flatten(field.fieldGroup);\n if (!field.props\n || field.props['view']?.hidden\n // || field.props['table']?.hidden\n )\n return [];\n const type = field.props['view']?.type || field.props['table']?.type || 'custom-label-type';\n return [{\n type,\n key: field['key'],\n readonly: this.viewMode,\n disabled: this.viewMode,\n wrappers: field.wrappers ?? ['field-wrapper'],\n props: {\n ...field.props,\n ...(field.props['view']?.props || field.props['table']?.props),\n },\n expressions: field.props['view']?.expressions || field.props['view']?.expressions,\n }];\n });\n return flatten(fields);\n }\n // Use a map to store form groups for each row and column\n cellForms = new Map();\n getForm(rowIndex) {\n const key = `${rowIndex}_`;\n let form = this.cellForms.get(key);\n if (!form) {\n form = new FormGroup({});\n this.cellForms.set(key, form);\n }\n return form;\n }\n async handleCreateEditAction(btn) {\n try {\n if (btn.action) {\n // Execute the provided action\n await btn.action(null); // You can pass row or context here\n }\n else {\n // Fallback to emitting event\n if (btn.actionName == 'cancel') {\n this.back();\n }\n else {\n this.action.emit({\n name: btn.actionName ?? 'cancel',\n row: null, // provide row if available\n });\n }\n }\n }\n catch (err) {\n console.error('Button action error', err);\n }\n }\n onAction(act, model) {\n if (act.action) {\n act.action(model);\n }\n else {\n // this.action.emit({ name: act.name, row:model });\n this.emitAction({ name: act.name, row: model });\n }\n }\n emitAction(event) {\n switch (event.name) {\n case 'edit':\n this.dialog.openForm(\"edit\", event.row);\n break;\n case 'delete':\n this.onDelete(event.row);\n break;\n default:\n this.action.emit(event);\n break;\n }\n }\n onDelete(item) {\n // const id = item[this.idField];\n const id = this.idParser.parseIds(item, this.idField);\n this.swalService.confirm('تأكيد الحذف', 'هل تريد حذف هذا السجل فعلاً؟', 'نعم، احذف', 'إلغاء').then((result) => {\n if (result.isConfirmed) {\n this.service.delete(id).subscribe({\n next: () => {\n this.swalService.success('تم الحذف بنجاح');\n this.back();\n },\n error: (err) => {\n this.loading = false;\n }\n });\n }\n });\n }\n afterSave(event) {\n this.model = event.response;\n // set the id from backend response\n this.currentId = event.response[this.idField];\n if (this.isCreateMode) {\n this.goToMode('view');\n }\n else if (this.isEditMode) {\n this.goToMode('view');\n }\n }\n goToMode(mode) {\n const tree = this.router.parseUrl(this.router.url);\n const segments = tree.root.children['primary']?.segments.map(s => s.path) ?? [];\n let newSegments;\n if (mode === 'create') {\n // always navigate to \"add\"\n newSegments = [\n ...segments.filter(s => !['view', 'edit', 'add'].includes(s)),\n 'add',\n ];\n }\n else {\n // if in \"add\" mode, replace it with the new id\n if (segments.includes('add')) {\n newSegments = [\n ...segments.filter(s => s !== 'add'),\n String(this.currentId),\n mode,\n ];\n }\n else {\n const idIndex = segments.findIndex(s => s === String(this.currentId));\n if (idIndex === -1) {\n newSegments = [...segments, String(this.currentId), mode];\n }\n else {\n newSegments = segments.slice(0, idIndex + 1);\n newSegments.push(mode);\n }\n }\n }\n this.router.navigate(newSegments);\n this.refresh();\n }\n backToList() {\n this.router.navigate(['../']);\n }\n back() {\n // this.router.navigate(['..']);\n this._location.back();\n }\n loadList() {\n this.loading = true;\n const filters = {\n maxResultCount: this.pageSize,\n skipCount: this.pageIndex * this.pageSize,\n sorting: this.sort,\n ...this.currentFilters,\n ...this.pageFilters,\n ...(this.searchGlobal ? { filter: this.searchGlobal } : {}),\n };\n this.service.getList(filters).subscribe({\n next: (res) => {\n this.list = res.items;\n this.totalRecords = res.totalCount;\n this.loading = false;\n // set model_ to current id item\n const found = this.list.find(x => x[this.idField] == this.currentId);\n if (found) {\n this.model_ = found;\n }\n },\n error: err => {\n console.error('Error loading list', err);\n this.loading = false;\n }\n });\n }\n next() {\n if (!this.currentId)\n return;\n // increment currentId numerically\n // const newId = Number(this.currentId) + 1;\n // this.currentId = newId;\n // use goToMode to navigate and keep mode\n const currentMode = this.isEditMode ? 'edit' : 'view';\n // this.goToMode(currentMode);\n }\n previous() {\n if (!this.currentId)\n return;\n // decrement currentId numerically\n // const newId = Number(this.currentId) - 1;\n // if (newId <= 0) return;\n // this.currentId = newId;\n // use goToMode to navigate and keep mode\n const currentMode = this.isEditMode ? 'edit' : 'view';\n // this.goToMode(currentMode);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: GenericViewComponent, isStandalone: true, selector: \"app-detail-view\", inputs: { title: \"title\", actions: \"actions\", createEditActions: \"createEditActions\", tabs: \"tabs\", viewMode: \"viewMode\", breadcrumb: \"breadcrumb\", service: \"service\", formFields: \"formFields\", apiName: \"apiName\", idField: \"idField\", standaloneMode: \"standaloneMode\", isViewMode: \"isViewMode\", isCreateMode: \"isCreateMode\", isEditMode: \"isEditMode\", model: \"model\", displayMode: \"displayMode\", mode: \"mode\", loading: \"loading\" }, outputs: { action: \"action\", afterDelete: \"afterDelete\" }, viewQueries: [{ propertyName: \"dialog\", first: true, predicate: [\"dialog\"], descendants: true }, { propertyName: \"inlineForm\", first: true, predicate: [\"inlineForm\"], descendants: true }], ngImport: i0, template: \"\\r\\n@if (mode === 'detail') {\\r\\n<div class=\\\"w-full flex flex-col gap-3\\\">\\r\\n <!-- overlay -->\\r\\n <div *ngIf=\\\"loading\\\"\\r\\n class=\\\"absolute inset-0 bg-white/70 flex items-center justify-center z-50\\\">\\r\\n <p-progress-spinner/>\\r\\n </div>\\r\\n\\r\\n <!-- actual content -->\\r\\n <!-- Toolbar -->\\r\\n <p-toolbar style=\\\"background: transparent;border: 0px;box-shadow: none;\\\" class=\\\"bg-transparent shadow-none border-none rounded-md px-3\\\">\\r\\n <ng-template pTemplate=\\\"left\\\">\\r\\n <!-- <span class=\\\"font-semibold text-lg xs:hidden block\\\">{{ title }}</span> -->\\r\\n <app-breadcrumb class=\\\"xs:block\\\" [breadcrumb]=\\\"breadcrumb\\\"></app-breadcrumb> <!-- xs:block hidden -->\\r\\n </ng-template>\\r\\n <ng-template pTemplate=\\\"right\\\">\\r\\n <div class=\\\"flex gap-2\\\">\\r\\n\\r\\n <button\\r\\n pButton pRipple\\r\\n icon=\\\"pi pi-chevron-right\\\"\\r\\n class=\\\"p-button-text p-button-sm fd-btn\\\"\\r\\n pTooltip=\\\"\\u0627\\u0644\\u062A\\u0627\\u0644\\u064A\\\"\\r\\n (click)=\\\"next()\\\"\\r\\n ></button>\\r\\n <button\\r\\n pButton pRipple\\r\\n icon=\\\"pi pi-chevron-left\\\"\\r\\n class=\\\"p-button-text p-button-sm fd-btn\\\"\\r\\n pTooltip=\\\"\\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\\\"\\r\\n (click)=\\\"previous()\\\"\\r\\n ></button>\\r\\n </div>\\r\\n </ng-template>\\r\\n </p-toolbar>\\r\\n <p-toolbar class=\\\"bg-white shadow rounded-md px-3\\\">\\r\\n\\r\\n <ng-template pTemplate=\\\"left\\\">\\r\\n @if (isViewMode) {\\r\\n <div class=\\\"flex gap-1\\\">\\r\\n @for (action of actions_; track $index) {\\r\\n <button\\r\\n pButton pRipple\\r\\n [icon]=\\\"action.icon ?? ''\\\"\\r\\n [label]=\\\"(action.label ?? '') | translate\\\"\\r\\n class=\\\"fd-btn\\\"\\r\\n (click)=\\\"onAction(action,model)\\\"\\r\\n ></button>\\r\\n }\\r\\n </div>\\r\\n }\\r\\n </ng-template>\\r\\n <ng-template pTemplate=\\\"right\\\">\\r\\n @if (isEditMode || isCreateMode) {\\r\\n <div class=\\\"flex gap-1\\\">\\r\\n @for (btn of createEditActions; track $index) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n @if (btn.type == 'submit' && inlineForm) {\\r\\n <lib-generic-button\\r\\n [type]=\\\"'submit'\\\"\\r\\n [loading]=\\\"inlineForm.loading\\\"\\r\\n [disabled]=\\\"inlineForm.loading || form.invalid\\\"\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"inlineForm.onSubmit()\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n @else{\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"handleCreateEditAction(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n </div>\\r\\n }\\r\\n </ng-template>\\r\\n\\r\\n </p-toolbar>\\r\\n\\r\\n <!-- Tabs -->\\r\\n <p-tabs value=\\\"0\\\">\\r\\n <p-tablist>\\r\\n @for (tab of tabs_; track $index) {\\r\\n <p-tab value=\\\"{{$index}}\\\">\\r\\n <i [class]=\\\"tab.icon\\\"></i>\\r\\n <span class=\\\"mr-1 ml-1\\\">{{ tab.header }}</span>\\r\\n </p-tab>\\r\\n }\\r\\n </p-tablist>\\r\\n <p-tabpanels>\\r\\n @for (tab of tabs_; track $index) {\\r\\n <p-tabpanel value=\\\"{{$index}}\\\">\\r\\n\\r\\n <!-- Formly fields -->\\r\\n <!-- p-4 grid grid-cols-1 md:grid-cols-2 gap-4 -->\\r\\n <div class=\\\"border border-surface p-4\\\">\\r\\n @if (tab.fields.length && $index == 0) {\\r\\n\\r\\n <form *ngIf=\\\"form\\\" [formGroup]=\\\"form\\\">\\r\\n @if (tab.fields.length && $index == 0 ) {\\r\\n @if (isEditMode || isCreateMode) {\\r\\n <app-generic-dialog\\r\\n #inlineForm\\r\\n [form]=\\\"form\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [formFields]=\\\"formFields ?? []\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField ??'id'\\\"\\r\\n [displayMode]=\\\"'inline'\\\"\\r\\n [mode]=\\\"'form-only'\\\"\\r\\n [forceState]=\\\"isCreateMode ? 'create':'edit'\\\"\\r\\n (afterSave)=\\\"afterSave($event)\\\"\\r\\n >\\r\\n </app-generic-dialog>\\r\\n}\\r\\n@else if(isViewMode){\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"tab.fields\\\"\\r\\n [model]=\\\"model\\\"\\r\\n ></formly-form>\\r\\n}\\r\\n}\\r\\n </form>\\r\\n\\r\\n }\\r\\n @if (tab.fields.length && $index > 0) {\\r\\n\\r\\n\\r\\n <formly-form\\r\\n [form]=\\\"getForm($index)\\\"\\r\\n [fields]=\\\"tab.fields\\\"\\r\\n [model]=\\\"tab.model || model\\\"\\r\\n ></formly-form>\\r\\n\\r\\n }\\r\\n\\r\\n <!-- Custom template -->\\r\\n @if (tab.content) {\\r\\n <ng-container *ngTemplateOutlet=\\\"tab.content\\\"></ng-container>\\r\\n }\\r\\n </div>\\r\\n </p-tabpanel>\\r\\n }\\r\\n </p-tabpanels>\\r\\n </p-tabs>\\r\\n</div>\\r\\n\\r\\n<!-- [model]=\\\"model\\\" -->\\r\\n <app-generic-dialog\\r\\n #dialog\\r\\n [formFields]=\\\"formFields ?? []\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField ??'id'\\\"\\r\\n [displayMode]=\\\"displayMode ?? 'dialog'\\\"\\r\\n (afterSave)=\\\"afterSave($event)\\\"\\r\\n >\\r\\n </app-generic-dialog>\\r\\n}\\r\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: ToolbarModule }, { kind: \"component\", type: i2.Toolbar, selector: \"p-toolbar\", inputs: [\"styleClass\", \"ariaLabelledBy\"] }, { kind: \"directive\", type: i3.PrimeTemplate, selector: \"[pTemplate]\", inputs: [\"type\", \"pTemplate\"] }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"directive\", type: i4.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"loading\", \"severity\", \"raised\", \"rounded\", \"text\", \"outlined\", \"size\", \"plain\", \"fluid\", \"label\", \"icon\", \"buttonProps\"] }, { kind: \"ngmodule\", type: TabsModule }, { kind: \"component\", type: i5.Tabs, selector: \"p-tabs\", inputs: [\"value\", \"scrollable\", \"lazy\", \"selectOnFocus\", \"showNavigators\", \"tabindex\"], outputs: [\"valueChange\"] }, { kind: \"component\", type: i5.TabPanels, selector: \"p-tabpanels\" }, { kind: \"component\", type: i5.TabPanel, selector: \"p-tabpanel\", inputs: [\"value\"], outputs: [\"valueChange\"] }, { kind: \"component\", type: i5.TabList, selector: \"p-tablist\" }, { kind: \"component\", type: i5.Tab, selector: \"p-tab\", inputs: [\"value\", \"disabled\"], outputs: [\"valueChange\"] }, { kind: \"component\", type: FormlyForm, selector: \"formly-form\", inputs: [\"form\", \"model\", \"fields\", \"options\"], outputs: [\"modelChange\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i6.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { kind: \"directive\", type: i6.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i6.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"component\", type: BreadcrumbComponent, selector: \"app-breadcrumb\", inputs: [\"breadcrumb\"] }, { kind: \"ngmodule\", type: TooltipModule }, { kind: \"directive\", type: i7.Tooltip, selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\", \"appendTo\"] }, { kind: \"component\", type: GenericDialogComponent, selector: \"app-generic-dialog\", inputs: [\"form\", \"service\", \"formFields\", \"model\", \"apiName\", \"idField\", \"dialogMaxWidth\", \"displayMode\", \"mode\", \"forceState\", \"drawerVisible\", \"dialogVisible\", \"isViewMode\", \"isEditMode\", \"useConfirmOnSave\", \"loading\", \"errorMsg\", \"errorMessage\", \"beforeSaveTransform\", \"hideTable\", \"autoShowForm\"], outputs: [\"action\", \"afterSave\", \"afterDelete\", \"beforeSave\", \"beforeDelete\", \"formCancel\", \"formInit\", \"dataLoaded\", \"selectionChange\", \"error\", \"visibleChange\"] }, { kind: \"component\", type: GenericButton, selector: \"lib-generic-button\", inputs: [\"model\", \"type\", \"icon\", \"label\", \"variant\", \"severity\", \"size\", \"iconPosition\", \"disabled\", \"loading\", \"ariaLabel\", \"extraClasses\", \"permission\"], outputs: [\"clicked\", \"itemClick\"] }, { kind: \"ngmodule\", type: ProgressSpinnerModule }, { kind: \"component\", type: i8.ProgressSpinner, selector: \"p-progressSpinner, p-progress-spinner, p-progressspinner\", inputs: [\"styleClass\", \"strokeWidth\", \"fill\", \"animationDuration\", \"ariaLabel\"] }, { kind: \"pipe\", type: i9.TranslatePipe, name: \"translate\" }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'app-detail-view', standalone: true, imports: [\n CommonModule,\n ToolbarModule,\n ButtonModule,\n TabsModule,\n FormlyForm,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n BreadcrumbComponent,\n TooltipModule,\n GenericDialogComponent,\n GenericButton,\n ProgressSpinnerModule\n ], template: \"\\r\\n@if (mode === 'detail') {\\r\\n<div class=\\\"w-full flex flex-col gap-3\\\">\\r\\n <!-- overlay -->\\r\\n <div *ngIf=\\\"loading\\\"\\r\\n class=\\\"absolute inset-0 bg-white/70 flex items-center justify-center z-50\\\">\\r\\n <p-progress-spinner/>\\r\\n </div>\\r\\n\\r\\n <!-- actual content -->\\r\\n <!-- Toolbar -->\\r\\n <p-toolbar style=\\\"background: transparent;border: 0px;box-shadow: none;\\\" class=\\\"bg-transparent shadow-none border-none rounded-md px-3\\\">\\r\\n <ng-template pTemplate=\\\"left\\\">\\r\\n <!-- <span class=\\\"font-semibold text-lg xs:hidden block\\\">{{ title }}</span> -->\\r\\n <app-breadcrumb class=\\\"xs:block\\\" [breadcrumb]=\\\"breadcrumb\\\"></app-breadcrumb> <!-- xs:block hidden -->\\r\\n </ng-template>\\r\\n <ng-template pTemplate=\\\"right\\\">\\r\\n <div class=\\\"flex gap-2\\\">\\r\\n\\r\\n <button\\r\\n pButton pRipple\\r\\n icon=\\\"pi pi-chevron-right\\\"\\r\\n class=\\\"p-button-text p-button-sm fd-btn\\\"\\r\\n pTooltip=\\\"\\u0627\\u0644\\u062A\\u0627\\u0644\\u064A\\\"\\r\\n (click)=\\\"next()\\\"\\r\\n ></button>\\r\\n <button\\r\\n pButton pRipple\\r\\n icon=\\\"pi pi-chevron-left\\\"\\r\\n class=\\\"p-button-text p-button-sm fd-btn\\\"\\r\\n pTooltip=\\\"\\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\\\"\\r\\n (click)=\\\"previous()\\\"\\r\\n ></button>\\r\\n </div>\\r\\n </ng-template>\\r\\n </p-toolbar>\\r\\n <p-toolbar class=\\\"bg-white shadow rounded-md px-3\\\">\\r\\n\\r\\n <ng-template pTemplate=\\\"left\\\">\\r\\n @if (isViewMode) {\\r\\n <div class=\\\"flex gap-1\\\">\\r\\n @for (action of actions_; track $index) {\\r\\n <button\\r\\n pButton pRipple\\r\\n [icon]=\\\"action.icon ?? ''\\\"\\r\\n [label]=\\\"(action.label ?? '') | translate\\\"\\r\\n class=\\\"fd-btn\\\"\\r\\n (click)=\\\"onAction(action,model)\\\"\\r\\n ></button>\\r\\n }\\r\\n </div>\\r\\n }\\r\\n </ng-template>\\r\\n <ng-template pTemplate=\\\"right\\\">\\r\\n @if (isEditMode || isCreateMode) {\\r\\n <div class=\\\"flex gap-1\\\">\\r\\n @for (btn of createEditActions; track $index) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n @if (btn.type == 'submit' && inlineForm) {\\r\\n <lib-generic-button\\r\\n [type]=\\\"'submit'\\\"\\r\\n [loading]=\\\"inlineForm.loading\\\"\\r\\n [disabled]=\\\"inlineForm.loading || form.invalid\\\"\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"inlineForm.onSubmit()\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n @else{\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"handleCreateEditAction(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n </div>\\r\\n }\\r\\n </ng-template>\\r\\n\\r\\n </p-toolbar>\\r\\n\\r\\n <!-- Tabs -->\\r\\n <p-tabs value=\\\"0\\\">\\r\\n <p-tablist>\\r\\n @for (tab of tabs_; track $index) {\\r\\n <p-tab value=\\\"{{$index}}\\\">\\r\\n <i [class]=\\\"tab.icon\\\"></i>\\r\\n <span class=\\\"mr-1 ml-1\\\">{{ tab.header }}</span>\\r\\n </p-tab>\\r\\n }\\r\\n </p-tablist>\\r\\n <p-tabpanels>\\r\\n @for (tab of tabs_; track $index) {\\r\\n <p-tabpanel value=\\\"{{$index}}\\\">\\r\\n\\r\\n <!-- Formly fields -->\\r\\n <!-- p-4 grid grid-cols-1 md:grid-cols-2 gap-4 -->\\r\\n <div class=\\\"border border-surface p-4\\\">\\r\\n @if (tab.fields.length && $index == 0) {\\r\\n\\r\\n <form *ngIf=\\\"form\\\" [formGroup]=\\\"form\\\">\\r\\n @if (tab.fields.length && $index == 0 ) {\\r\\n @if (isEditMode || isCreateMode) {\\r\\n <app-generic-dialog\\r\\n #inlineForm\\r\\n [form]=\\\"form\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [formFields]=\\\"formFields ?? []\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField ??'id'\\\"\\r\\n [displayMode]=\\\"'inline'\\\"\\r\\n [mode]=\\\"'form-only'\\\"\\r\\n [forceState]=\\\"isCreateMode ? 'create':'edit'\\\"\\r\\n (afterSave)=\\\"afterSave($event)\\\"\\r\\n >\\r\\n </app-generic-dialog>\\r\\n}\\r\\n@else if(isViewMode){\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"tab.fields\\\"\\r\\n [model]=\\\"model\\\"\\r\\n ></formly-form>\\r\\n}\\r\\n}\\r\\n </form>\\r\\n\\r\\n }\\r\\n @if (tab.fields.length && $index > 0) {\\r\\n\\r\\n\\r\\n <formly-form\\r\\n [form]=\\\"getForm($index)\\\"\\r\\n [fields]=\\\"tab.fields\\\"\\r\\n [model]=\\\"tab.model || model\\\"\\r\\n ></formly-form>\\r\\n\\r\\n }\\r\\n\\r\\n <!-- Custom template -->\\r\\n @if (tab.content) {\\r\\n <ng-container *ngTemplateOutlet=\\\"tab.content\\\"></ng-container>\\r\\n }\\r\\n </div>\\r\\n </p-tabpanel>\\r\\n }\\r\\n </p-tabpanels>\\r\\n </p-tabs>\\r\\n</div>\\r\\n\\r\\n<!-- [model]=\\\"model\\\" -->\\r\\n <app-generic-dialog\\r\\n #dialog\\r\\n [formFields]=\\\"formFields ?? []\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField ??'id'\\\"\\r\\n [displayMode]=\\\"displayMode ?? 'dialog'\\\"\\r\\n (afterSave)=\\\"afterSave($event)\\\"\\r\\n >\\r\\n </app-generic-dialog>\\r\\n}\\r\\n\" }]\n }], propDecorators: { title: [{\n type: Input\n }], actions: [{\n type: Input\n }], createEditActions: [{\n type: Input\n }], tabs: [{\n type: Input\n }], viewMode: [{\n type: Input\n }], breadcrumb: [{\n type: Input\n }], service: [{\n type: Input\n }], formFields: [{\n type: Input\n }], apiName: [{\n type: Input\n }], idField: [{\n type: Input\n }], standaloneMode: [{\n type: Input\n }], isViewMode: [{\n type: Input\n }], isCreateMode: [{\n type: Input\n }], isEditMode: [{\n type: Input\n }], model: [{\n type: Input\n }], displayMode: [{\n type: Input\n }], mode: [{\n type: Input\n }], action: [{\n type: Output\n }], afterDelete: [{\n type: Output\n }], dialog: [{\n type: ViewChild,\n args: ['dialog']\n }], inlineForm: [{\n type: ViewChild,\n args: ['inlineForm']\n }], loading: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy12aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtdmlldy9zcmMvbGliL2dlbmVyaWMtdmlldy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLXZpZXcvc3JjL2xpYi9nZW5lcmljLXZpZXcuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFxQixNQUFNLGtCQUFrQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDOUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUscUJBQXFCLEVB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Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRSxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxVQUFVO3NCQUFsQixLQUFLO2dCQUNFLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFuQixLQUFLO2dCQVdDLElBQUk7c0JBQVosS0FBSztnQkFFTyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFYyxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBQ00sVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQVFoQixPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUb29sYmFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sYmFyJztcclxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xyXG5pbXBvcnQgeyBGb3JtbHlGb3JtLCBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUYWJzTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1iQ29tcG9uZW50IH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy51aS5jb3JlL2JyZWFkY3J1bWInO1xyXG5pbXBvcnQgeyBCYXNlU2VydmljZSwgSWRQYXJzZXJTZXJ2aWNlLCBTd2FsU2VydmljZSB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBBY3Rpb25EZWYsIEJ1dHRvbkNvbmZpZywgUGFnaW5hdGVkUmVzdWx0IH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcHJvZ3Jlc3NzcGlubmVyJztcclxuaW1wb3J0IHsgR2VuZXJpY0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcudWkuY29yZS9nZW5lcmljLWRpYWxvZyc7XHJcbmltcG9ydCB7IEdlbmVyaWNCdXR0b24gfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLnVpLmNvcmUvZ2VuZXJpYy1idXR0b24nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEZXRhaWxUYWIge1xyXG4gIGhlYWRlcjogc3RyaW5nO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdO1xyXG4gIG1vZGVsPzogYW55O1xyXG4gIGNvbnRlbnQ/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1kZXRhaWwtdmlldycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBUb29sYmFyTW9kdWxlLFxyXG4gICAgQnV0dG9uTW9kdWxlLFxyXG4gICAgVGFic01vZHVsZSxcclxuICAgIEZvcm1seUZvcm0sXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBCcmVhZGNydW1iQ29tcG9uZW50LFxyXG4gICAgVG9vbHRpcE1vZHVsZSxcclxuICAgIEdlbmVyaWNEaWFsb2dDb21wb25lbnQsXHJcbiAgICBHZW5lcmljQnV0dG9uLFxyXG4gICAgUHJvZ3Jlc3NTcGlubmVyTW9kdWxlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJpYy12aWV3Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR2VuZXJpY1ZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xyXG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgIHByaXZhdGUgaWRQYXJzZXI9IGluamVjdChJZFBhcnNlclNlcnZpY2UpO1xyXG5cclxuICBmb3JtID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe30pO1xyXG5cclxuICBASW5wdXQoKSB0aXRsZSA9ICcnO1xyXG4gIEBJbnB1dCgpIGFjdGlvbnM6IEFjdGlvbkRlZjxhbnk+W10gPSBbXTtcclxuICAgQElucHV0KCkgY3JlYXRlRWRpdEFjdGlvbnM6IEJ1dHRvbkNvbmZpZ1tdID0gW107XHJcbiAgIGFjdGlvbnNfOiBBY3Rpb25EZWY8YW55PltdID0gW107XHJcbiAgQElucHV0KCkgdGFiczogRGV0YWlsVGFiW10gPSBbXTtcclxuICBASW5wdXQoKSB2aWV3TW9kZSA9IHRydWU7XHJcbiAgQElucHV0KCkgYnJlYWRjcnVtYjogTWVudUl0ZW1bXSB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBzZXJ2aWNlOiBCYXNlU2VydmljZSA9IGluamVjdChCYXNlU2VydmljZSk7XHJcbiAgQElucHV0KCkgZm9ybUZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGFwaU5hbWUgPSAnJztcclxuICBASW5wdXQoKSBpZEZpZWxkID0gJ2lkJztcclxuIEBJbnB1dCgpIHN0YW5kYWxvbmVNb2RlID0gZmFsc2U7XHJcbiBASW5wdXQoKSBpc1ZpZXdNb2RlID0gdHJ1ZTsgLy8g2YjYtti5INin2YTZhdi02KfZh9iv2Kkg2YHZgti3XHJcbiBASW5wdXQoKSBpc0NyZWF0ZU1vZGUgPSBmYWxzZTsgLy8g2YjYtti5INin2YTYp9i22KfZgdipINmB2YLYt1xyXG4gIEBJbnB1dCgpIGlzRWRpdE1vZGUgPSBmYWxzZTsgLy8g2YjYtti5INin2YTYqti52K/ZitmEXHJcbiBASW5wdXQoKSBtb2RlbCA9IHt9O1xyXG4gIEBJbnB1dCgpIGRpc3BsYXlNb2RlOlxyXG4gICAgfCAnZHJhd2VyJ1xyXG4gICAgfCAnZGlhbG9nJ1xyXG4gICAgfCAncm91dGUnXHJcbiAgICB8ICdpbmxpbmUnXHJcbiAgICB8IFBhcnRpYWw8XHJcbiAgICAgIFJlY29yZDxcclxuICAgICAgICAnYWRkJyB8ICdlZGl0JyB8ICd2aWV3JyxcclxuICAgICAgICAnZHJhd2VyJyB8ICdkaWFsb2cnIHwgJ3JvdXRlJyB8ICdpbmxpbmUnXHJcbiAgICAgID5cclxuICAgID4gPSAnZHJhd2VyJztcclxuQElucHV0KCkgbW9kZTogJ2Z1bGwnIHwgJ2Zvcm0tb25seScgfCAndGFibGUtb25seScgfCAnZGV0YWlsJyA9ICdmdWxsJztcclxuXHJcbiAgIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgbmFtZTogc3RyaW5nOyByb3c6IGFueSB9PigpO1xyXG4gICAgQE91dHB1dCgpIGFmdGVyRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHJlY29yZDogYW55OyByZXNwb25zZT86IGFueSB9PigpO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2RpYWxvZycpIGRpYWxvZyE6IEdlbmVyaWNEaWFsb2dDb21wb25lbnQ7XHJcbiAgICBAVmlld0NoaWxkKCdpbmxpbmVGb3JtJykgaW5saW5lRm9ybSE6IEdlbmVyaWNEaWFsb2dDb21wb25lbnQ7XHJcblxyXG4gIHRhYnNfOiBEZXRhaWxUYWJbXSA9IFtdO1xyXG4gIG1vZGVsXzogYW55ID0ge307XHJcblxyXG4gIGN1cnJlbnRJZCE6IHN0cmluZyB8IG51bWJlcjtcclxuICBsaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHRvdGFsUmVjb3JkcyA9IDA7XHJcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAvLyBwYWdpbmF0aW9uIHN0YXRlXHJcbiAgcGFnZVNpemUgPSAxMDtcclxuICBwYWdlSW5kZXggPSAwO1xyXG4gIHNvcnQgPSAnJztcclxuICBjdXJyZW50RmlsdGVyczogYW55ID0ge307XHJcbiAgcGFnZUZpbHRlcnM6IGFueSA9IHt9O1xyXG4gIHNlYXJjaEdsb2JhbCA9ICcnO1xyXG4gcHJpdmF0ZSBzd2FsU2VydmljZSA9IGluamVjdChTd2FsU2VydmljZSk7XHJcblxyXG4gX2xvY2F0aW9uOiBMb2NhdGlvbiA9IGluamVjdChMb2NhdGlvbik7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmFwaU5hbWUpIHtcclxuICAgICAgdGhpcy5zZXJ2aWNlLmFwaU5hbWUgPSB0aGlzLmFwaU5hbWU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMuYWN0aW9uc18gPSB0aGlzLmFjdGlvbnMuZmlsdGVyKGM9PmMubmFtZSAhPSAndmlldycpO1xyXG5cclxuICAgICAgdGhpcy5yb3V0ZS5wYXJhbU1hcC5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaWQgPSBwYXJhbXMuZ2V0KHRoaXMuaWRGaWVsZCk7XHJcbiAgICAgICAgICAgIGlmIChpZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY3VycmVudElkID0gaWQ7XHJcbiAgICAgICAgICAgICAgIGlmKHRoaXMuc3RhbmRhbG9uZU1vZGUpe1xyXG4gICAgICAgICAgICAgIHRoaXMubG9hZExpc3QoKTtcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG5cclxuICAgICAgICAgIH0pO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICByZWZyZXNoKCl7XHJcblxyXG4gICAgLy8gZGV0ZWN0IG1vZGUgYmFzZWQgb24gcm91dGVcclxuICBjb25zdCB1cmwgPSB0aGlzLnJvdXRlci51cmwudG9Mb3dlckNhc2UoKTtcclxuICAgICB0aGlzLmlzVmlld01vZGUgPSB1cmwuaW5jbHVkZXMoJy92aWV3Jyk7XHJcbiAgdGhpcy5pc0VkaXRNb2RlID0gdXJsLmluY2x1ZGVzKCcvZWRpdCcpO1xyXG4gIHRoaXMuaXNDcmVhdGVNb2RlID0gdXJsLmluY2x1ZGVzKCcvY3JlYXRlJykgfHwgdXJsLmVuZHNXaXRoKCcvbmV3JykgfHwgdXJsLmVuZHNXaXRoKCcvYWRkJyk7XHJcblxyXG4gIHRoaXMudGFic18gPSBbXTtcclxuZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRhYnMubGVuZ3RoOyBpKyspIHtcclxuICBjb25zdCB0ID0gdGhpcy50YWJzW2ldO1xyXG4gIHRoaXMudGFic18ucHVzaCh7XHJcbiAgICAuLi50LFxyXG4gICAgZmllbGRzOiBbXHJcbiAgICAgIHtcclxuICAgICAgICBwcm9wczogeyBsYWJlbDogJycgfSxcclxuICAgICAgICBmaWVsZEdyb3VwQ2xhc3NOYW1lOiAnZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiBnYXAtMycsXHJcbiAgICAgICAgZmllbGRHcm91cDpcclxuICAgICAgICAgIHRoaXMuaXNDcmVhdGVNb2RlIHx8IHRoaXMuaXNFZGl0TW9kZVxyXG4gICAgICAgICAgICA/IHRoaXMuZ2V0Q3JlYXRlRWRpdEZpZWxkcyhpID09IDAgPyB0aGlzLmZvcm1GaWVsZHM6IHQuZmllbGRzKVxyXG4gICAgICAgICAgICA6IHRoaXMuZ2V0Vmlld0ZpZWxkcyhpID09IDAgPyB0aGlzLmZvcm1GaWVsZHMgOiB0LmZpZWxkcyksXHJcbiAgICAgIH0sXHJcbiAgICBdLFxyXG4gIH0pO1xyXG59XHJcbnRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuICAvLyBhcyBmb3JtXHJcbiAgIGdldENyZWF0ZUVkaXRGaWVsZHMoZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW10pOiBGb3JtbHlGaWVsZENvbmZpZ1tdIHtcclxuICAgIHJldHVybiBmaWVsZHMubWFwKGYgPT4gKHtcclxuICAgICAgLi4uZixcclxuICAgICAgcHJvcHM6IHsgLi4uZi5wcm9wcywgcmVhZG9ubHk6IHRoaXMudmlld01vZGUsIGRpc2FibGVkOiB0aGlzLnZpZXdNb2RlIH0sXHJcbiAgICB9KSk7XHJcbiAgfVxyXG4gIGdldFZpZXdGaWVsZHMoZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW10pOiBGb3JtbHlGaWVsZENvbmZpZ1tdIHtcclxuICAgIGNvbnN0IGZsYXR0ZW4gPSAoZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdKTogRm9ybWx5RmllbGRDb25maWdbXSA9PlxyXG4gICAgICBmaWVsZHMuZmxhdE1hcChmaWVsZCA9PiB7XHJcbiAgICAgICAgaWYgKGZpZWxkLmZpZWxkR3JvdXA/Lmxlbmd0aCkgcmV0dXJuIGZsYXR0ZW4oZmllbGQuZmllbGRHcm91cCk7XHJcbiAgICAgICAgaWYgKCFmaWVsZC5wcm9wc1xyXG4gICAgICAgICAgfHwgZmllbGQucHJvcHNbJ3ZpZXcnXT8uaGlkZGVuXHJcbiAgICAgICAgICAvLyB8fCBmaWVsZC5wcm9wc1sndGFibGUnXT8uaGlkZGVuXHJcbiAgICAgICAgICkgcmV0dXJuIFtdO1xyXG5cclxuICAgICAgICBjb25zdCB0eXBlID0gZmllbGQucHJvcHNbJ3ZpZXcnXT8udHlwZSB8fCBmaWVsZC5wcm9wc1sndGFibGUnXT8udHlwZSB8fCAnY3VzdG9tLWxhYmVsLXR5cGUnO1xyXG4gICAgICAgIHJldHVybiBbe1xyXG4gICAgICAgICAgdHlwZSxcclxuICAgICAgICAgIGtleTogZmllbGRbJ2tleSddLFxyXG4gICAgICAgICAgcmVhZG9ubHk6IHRoaXMudmlld01vZGUsXHJcbiAgICAgICAgICBkaXNhYmxlZDogdGhpcy52aWV3TW9kZSxcclxuICAgICAgICAgIHdyYXBwZXJzOiBmaWVsZC53cmFwcGVycyA/PyBbJ2ZpZWxkLXdyYXBwZXInXSxcclxuICAgICAgICAgIHByb3BzOiB7XHJcbiAgICAgICAgICAgIC4uLmZpZWxkLnByb3BzLFxyXG4gICAgICAgICAgICAuLi4oZmllbGQucHJvcHNbJ3ZpZXcnXT8ucHJvcHMgfHwgZmllbGQucHJvcHNbJ3RhYmxlJ10/LnByb3BzKSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBleHByZXNzaW9uczogZmllbGQucHJvcHNbJ3ZpZXcnXT8uZXhwcmVzc2lvbnMgfHwgZmllbGQucHJvcHNbJ3ZpZXcnXT8uZXhwcmVzc2lvbnMsXHJcbiAgICAgICAgfV07XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmbGF0dGVuKGZpZWxkcyk7XHJcbiAgfVxyXG5cclxuICAgICAvLyBVc2UgYSBtYXAgdG8gc3RvcmUgZm9ybSBncm91cHMgZm9yIGVhY2ggcm93IGFuZCBjb2x1bW5cclxuICBwcml2YXRlIGNlbGxGb3JtczogTWFwPHN0cmluZywgRm9ybUdyb3VwPiA9IG5ldyBNYXAoKTtcclxuICAgIGdldEZvcm0ocm93SW5kZXg6IG51bWJlcik6IEZvcm1Hcm91cCB7XHJcbiAgICBjb25zdCBrZXkgPSBgJHtyb3dJbmRleH1fYDtcclxuICAgIGxldCBmb3JtID0gdGhpcy5jZWxsRm9ybXMuZ2V0KGtleSk7XHJcblxyXG4gICAgaWYgKCFmb3JtKSB7XHJcbiAgICAgIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgICAgdGhpcy5jZWxsRm9ybXMuc2V0KGtleSwgZm9ybSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9ybTtcclxuICB9XHJcblxyXG5cclxuICAgYXN5bmMgaGFuZGxlQ3JlYXRlRWRpdEFjdGlvbihidG46IEJ1dHRvbkNvbmZpZykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGJ0bi5hY3Rpb24pIHtcclxuICAgICAgICAvLyBFeGVjdXRlIHRoZSBwcm92aWRlZCBhY3Rpb25cclxuICAgICAgICBhd2FpdCBidG4uYWN0aW9uKG51bGwpOyAvLyBZb3UgY2FuIHBhc3Mgcm93IG9yIGNvbnRleHQgaGVyZVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIEZhbGxiYWNrIHRvIGVtaXR0aW5nIGV2ZW50XHJcbiAgICAgICAgaWYoYnRuLmFjdGlvbk5hbWUgPT0gJ2NhbmNlbCcpe1xyXG4gICAgICAgICAgdGhpcy5iYWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgdGhpcy5hY3Rpb24uZW1pdCh7XHJcbiAgICAgICAgICBuYW1lOiBidG4uYWN0aW9uTmFtZSA/PyAnY2FuY2VsJyxcclxuICAgICAgICAgIHJvdzogbnVsbCEsIC8vIHByb3ZpZGUgcm93IGlmIGF2YWlsYWJsZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdCdXR0b24gYWN0aW9uIGVycm9yJywgZXJyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxub25BY3Rpb24oYWN0OiBBY3Rpb25EZWY8YW55PiwgbW9kZWw6IGFueSkge1xyXG4gICAgaWYgKGFjdC5hY3Rpb24pIHtcclxuICAgICAgYWN0LmFjdGlvbihtb2RlbCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyB0aGlzLmFjdGlvbi5lbWl0KHsgbmFtZTogYWN0Lm5hbWUsIHJvdzptb2RlbCB9KTtcclxuICAgICAgdGhpcy5lbWl0QWN0aW9uKHsgbmFtZTogYWN0Lm5hbWUsIHJvdzptb2RlbCB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICAgZW1pdEFjdGlvbihldmVudDogeyBuYW1lOiBzdHJpbmc7IHJvdzogYW55IHwgbnVsbCB9KTogdm9pZCB7XHJcbiAgc3dpdGNoIChldmVudC5uYW1lKSB7XHJcbiAgICBjYXNlICdlZGl0JzpcclxuICAgICAgdGhpcy5kaWFsb2cub3BlbkZvcm0oXCJlZGl0XCIsZXZlbnQucm93KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdkZWxldGUnOlxyXG4gICAgICB0aGlzLm9uRGVsZXRlKGV2ZW50LnJvdyEpO1xyXG4gICAgICBicmVhaztcclxuICAgIGRlZmF1bHQgOlxyXG4gICAgICB0aGlzLmFjdGlvbi5lbWl0KGV2ZW50KTtcclxuICAgICAgYnJlYWs7XHJcbiAgfVxyXG59XHJcblxyXG5vbkRlbGV0ZShpdGVtOiBhbnkpOiB2b2lkIHtcclxuICAvLyBjb25zdCBpZCA9IGl0ZW1bdGhpcy5pZEZpZWxkXTtcclxuICBjb25zdCBpZCA9IHRoaXMuaWRQYXJzZXIucGFyc2VJZHMoaXRlbSwgdGhpcy5pZEZpZWxkKTtcclxuXHJcbiAgdGhpcy5zd2FsU2VydmljZS5jb25maXJtKFxyXG4gICAgJ9iq2KPZg9mK2K8g2KfZhNit2LDZgScsXHJcbiAgICAn2YfZhCDYqtix2YrYryDYrdiw2YEg2YfYsNinINin2YTYs9is2YQg2YHYudmE2KfZi9ifJyxcclxuICAgICfZhti52YXYjCDYp9it2LDZgScsXHJcbiAgICAn2KXZhNi62KfYoSdcclxuICApLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgaWYgKHJlc3VsdC5pc0NvbmZpcm1lZCkge1xyXG4gICAgICB0aGlzLnNlcnZpY2UuZGVsZXRlKGlkKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc3dhbFNlcnZpY2Uuc3VjY2Vzcygn2KrZhSDYp9mE2K3YsNmBINio2YbYrNin2K0nKTtcclxuICAgICAgICAgIHRoaXMuYmFjaygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuIGFmdGVyU2F2ZShldmVudDogYW55KSB7XHJcbiAgdGhpcy5tb2RlbCA9IGV2ZW50LnJlc3BvbnNlO1xyXG5cclxuICAvLyBzZXQgdGhlIGlkIGZyb20gYmFja2VuZCByZXNwb25zZVxyXG4gIHRoaXMuY3VycmVudElkID0gZXZlbnQucmVzcG9uc2VbdGhpcy5pZEZpZWxkXTtcclxuXHJcbiAgaWYgKHRoaXMuaXNDcmVhdGVNb2RlKSB7XHJcbiAgICB0aGlzLmdvVG9Nb2RlKCd2aWV3Jyk7XHJcbiAgfSBlbHNlIGlmICh0aGlzLmlzRWRpdE1vZGUpIHtcclxuICAgIHRoaXMuZ29Ub01vZGUoJ3ZpZXcnKTtcclxuICB9XHJcbn1cclxuXHJcblxyXG5cclxuZ29Ub01vZGUobW9kZTogJ3ZpZXcnIHwgJ2VkaXQnIHwgJ2NyZWF0ZScpIHtcclxuICBjb25zdCB0cmVlID0gdGhpcy5yb3V0ZXIucGFyc2VVcmwodGhpcy5yb3V0ZXIudXJsKTtcclxuICBjb25zdCBzZWdtZW50cyA9IHRyZWUucm9vdC5jaGlsZHJlblsncHJpbWFyeSddPy5zZWdtZW50cy5tYXAocyA9PiBzLnBhdGgpID8/IFtdO1xyXG5cclxuICBsZXQgbmV3U2VnbWVudHM6IHN0cmluZ1tdO1xyXG5cclxuICBpZiAobW9kZSA9PT0gJ2NyZWF0ZScpIHtcclxuICAgIC8vIGFsd2F5cyBuYXZpZ2F0ZSB0byBcImFkZFwiXHJcbiAgICBuZXdTZWdtZW50cyA9IFtcclxuICAgICAgLi4uc2VnbWVudHMuZmlsdGVyKHMgPT4gIVsndmlldycsICdlZGl0JywgJ2FkZCddLmluY2x1ZGVzKHMpKSxcclxuICAgICAgJ2FkZCcsXHJcbiAgICBdO1xyXG4gIH0gZWxzZSB7XHJcbiAgICAvLyBpZiBpbiBcImFkZFwiIG1vZGUsIHJlcGxhY2UgaXQgd2l0aCB0aGUgbmV3IGlkXHJcbiAgICBpZiAoc2VnbWVudHMuaW5jbHVkZXMoJ2FkZCcpKSB7XHJcbiAgICAgIG5ld1NlZ21lbnRzID0gW1xyXG4gICAgICAgIC4uLnNlZ21lbnRzLmZpbHRlcihzID0+IHMgIT09ICdhZGQnKSxcclxuICAgICAgICBTdHJpbmcodGhpcy5jdXJyZW50SWQpLFxyXG4gICAgICAgIG1vZGUsXHJcbiAgICAgIF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBpZEluZGV4ID0gc2VnbWVudHMuZmluZEluZGV4KHMgPT4gcyA9PT0gU3RyaW5nKHRoaXMuY3VycmVudElkKSk7XHJcbiAgICAgIGlmIChpZEluZGV4ID09PSAtMSkge1xyXG4gICAgICAgIG5ld1NlZ21lbnRzID0gWy4uLnNlZ21lbnRzLCBTdHJpbmcodGhpcy5jdXJyZW50SWQpLCBtb2RlXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdTZWdtZW50cyA9IHNlZ21lbnRzLnNsaWNlKDAsIGlkSW5kZXggKyAxKTtcclxuICAgICAgICBuZXdTZWdtZW50cy5wdXNoKG1vZGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShuZXdTZWdtZW50cyk7XHJcbiAgdGhpcy5yZWZyZXNoKCk7XHJcbn1cclxuXHJcblxyXG5iYWNrVG9MaXN0KCl7XHJcbiAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLyddKTtcclxuICAgIH1cclxuYmFjaygpe1xyXG4gICAgICAvLyAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLiddKTtcclxuICAgICAgIHRoaXMuX2xvY2F0aW9uLmJhY2soKVxyXG4gICAgfVxyXG4gIGxvYWRMaXN0KCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IGZpbHRlcnMgPSB7XHJcbiAgICAgIG1heFJlc3VsdENvdW50OiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICBza2lwQ291bnQ6IHRoaXMucGFnZUluZGV4ICogdGhpcy5wYWdlU2l6ZSxcclxuICAgICAgc29ydGluZzogdGhpcy5zb3J0LFxyXG4gICAgICAuLi50aGlzLmN1cnJlbnRGaWx0ZXJzLFxyXG4gICAgICAuLi50aGlzLnBhZ2VGaWx0ZXJzLFxyXG4gICAgICAuLi4odGhpcy5zZWFyY2hHbG9iYWwgPyB7IGZpbHRlcjogdGhpcy5zZWFyY2hHbG9iYWwgfSA6IHt9KSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5zZXJ2aWNlLmdldExpc3QoZmlsdGVycykuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogUGFnaW5hdGVkUmVzdWx0PGFueT4pID0+IHtcclxuICAgICAgICB0aGlzLmxpc3QgPSByZXMuaXRlbXM7XHJcbiAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSByZXMudG90YWxDb3VudDtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgLy8gc2V0IG1vZGVsXyB0byBjdXJyZW50IGlkIGl0ZW1cclxuICAgICAgICBjb25zdCBmb3VuZCA9IHRoaXMubGlzdC5maW5kKHggPT4geFt0aGlzLmlkRmllbGRdID09IHRoaXMuY3VycmVudElkKTtcclxuICAgICAgICBpZiAoZm91bmQpIHtcclxuICAgICAgICAgIHRoaXMubW9kZWxfID0gZm91bmQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogZXJyID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIGxpc3QnLCBlcnIpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiBuZXh0KCkge1xyXG4gIGlmICghdGhpcy5jdXJyZW50SWQpIHJldHVybjtcclxuXHJcbiAgLy8gaW5jcmVtZW50IGN1cnJlbnRJZCBudW1lcmljYWxseVxyXG4gIC8vIGNvbnN0IG5ld0lkID0gTnVtYmVyKHRoaXMuY3VycmVudElkKSArIDE7XHJcbiAgLy8gdGhpcy5jdXJyZW50SWQgPSBuZXdJZDtcclxuICAvLyB1c2UgZ29Ub01vZGUgdG8gbmF2aWdhdGUgYW5kIGtlZXAgbW9kZVxyXG4gIGNvbnN0IGN1cnJlbnRNb2RlID0gdGhpcy5pc0VkaXRNb2RlID8gJ2VkaXQnIDogJ3ZpZXcnO1xyXG4gIC8vIHRoaXMuZ29Ub01vZGUoY3VycmVudE1vZGUpO1xyXG59XHJcblxyXG5wcmV2aW91cygpIHtcclxuICBpZiAoIXRoaXMuY3VycmVudElkKSByZXR1cm47XHJcblxyXG4gIC8vIGRlY3JlbWVudCBjdXJyZW50SWQgbnVtZXJpY2FsbHlcclxuICAvLyBjb25zdCBuZXdJZCA9IE51bWJlcih0aGlzLmN1cnJlbnRJZCkgLSAxO1xyXG4gIC8vIGlmIChuZXdJZCA8PSAwKSByZXR1cm47XHJcblxyXG4gIC8vIHRoaXMuY3VycmVudElkID0gbmV3SWQ7XHJcblxyXG4gIC8vIHVzZSBnb1RvTW9kZSB0byBuYXZpZ2F0ZSBhbmQga2VlcCBtb2RlXHJcbiAgY29uc3QgY3VycmVudE1vZGUgPSB0aGlzLmlzRWRpdE1vZGUgPyAnZWRpdCcgOiAndmlldyc7XHJcbiAgLy8gdGhpcy5nb1RvTW9kZShjdXJyZW50TW9kZSk7XHJcbn1cclxuXHJcblxyXG4gIC8vIG5leHQoKSB7XHJcbiAgLy8gICBjb25zdCBpZHggPSB0aGlzLmxpc3QuZmluZEluZGV4KHggPT4geFt0aGlzLmlkRmllbGRdID09IHRoaXMuY3VycmVudElkKTtcclxuICAvLyAgIGlmIChpZHggPj0gMCAmJiBpZHggPCB0aGlzLmxpc3QubGVuZ3RoIC0gMSkge1xyXG4gIC8vICAgICBjb25zdCBuZXdJZCA9IHRoaXMubGlzdFtpZHggKyAxXVt0aGlzLmlkRmllbGRdO1xyXG4gIC8vICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLycsIG5ld0lkXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gcHJldmlvdXMoKSB7XHJcbiAgLy8gICBjb25zdCBpZHggPSB0aGlzLmxpc3QuZmluZEluZGV4KHggPT4geFt0aGlzLmlkRmllbGRdID09IHRoaXMuY3VycmVudElkKTtcclxuICAvLyAgIGlmIChpZHggPiAwKSB7XHJcbiAgLy8gICAgIGNvbnN0IG5ld0lkID0gdGhpcy5saXN0W2lkeCAtIDFdW3RoaXMuaWRGaWVsZF07XHJcbiAgLy8gICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vJywgbmV3SWRdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG59XHJcblxyXG4iLCJcclxuQGlmIChtb2RlID09PSAnZGV0YWlsJykge1xyXG48ZGl2ICBjbGFzcz1cInctZnVsbCBmbGV4IGZsZXgtY29sIGdhcC0zXCI+XHJcbiAgPCEtLSBvdmVybGF5IC0tPlxyXG4gIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCJcclxuICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQtMCBiZy13aGl0ZS83MCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB6LTUwXCI+XHJcbiAgICA8cC1wcm9ncmVzcy1zcGlubmVyLz5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBhY3R1YWwgY29udGVudCAtLT5cclxuICA8IS0tIFRvb2xiYXIgLS0+XHJcbiAgPHAtdG9vbGJhciBzdHlsZT1cImJhY2tncm91bmQ6IHRyYW5zcGFyZW50O2JvcmRlcjogMHB4O2JveC1zaGFkb3c6IG5vbmU7XCIgY2xhc3M9XCJiZy10cmFuc3BhcmVudCBzaGFkb3ctbm9uZSBib3JkZXItbm9uZSByb3VuZGVkLW1kIHB4LTNcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJsZWZ0XCI+XHJcbiAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtbGcgeHM6aGlkZGVuIGJsb2NrXCI+e3sgdGl0bGUgfX08L3NwYW4+IC0tPlxyXG4gICAgICA8YXBwLWJyZWFkY3J1bWIgY2xhc3M9XCJ4czpibG9ja1wiIFticmVhZGNydW1iXT1cImJyZWFkY3J1bWJcIj48L2FwcC1icmVhZGNydW1iPiA8IS0tIHhzOmJsb2NrIGhpZGRlbiAtLT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTJcIj5cclxuXHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBwQnV0dG9uIHBSaXBwbGVcclxuICAgICAgICBpY29uPVwicGkgcGktY2hldnJvbi1yaWdodFwiXHJcbiAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXNtIGZkLWJ0blwiXHJcbiAgICAgICAgcFRvb2x0aXA9XCLYp9mE2KrYp9mE2YpcIlxyXG4gICAgICAgIChjbGljayk9XCJuZXh0KClcIlxyXG4gICAgICA+PC9idXR0b24+XHJcbiAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgcEJ1dHRvbiBwUmlwcGxlXHJcbiAgICAgICAgaWNvbj1cInBpIHBpLWNoZXZyb24tbGVmdFwiXHJcbiAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXNtIGZkLWJ0blwiXHJcbiAgICAgICAgcFRvb2x0aXA9XCLYp9mE2LPYp9io2YJcIlxyXG4gICAgICAgIChjbGljayk9XCJwcmV2aW91cygpXCJcclxuICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9wLXRvb2xiYXI+XHJcbiAgIDxwLXRvb2xiYXIgY2xhc3M9XCJiZy13aGl0ZSBzaGFkb3cgcm91bmRlZC1tZCBweC0zXCI+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImxlZnRcIj5cclxuICAgICAgIEBpZiAoaXNWaWV3TW9kZSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMVwiPlxyXG4gICAgICAgICAgQGZvciAoYWN0aW9uIG9mIGFjdGlvbnNfOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgcEJ1dHRvbiBwUmlwcGxlXHJcbiAgICAgIFtpY29uXT1cImFjdGlvbi5pY29uID8/ICcnXCJcclxuICAgICAgICAgIFtsYWJlbF09XCIoYWN0aW9uLmxhYmVsID8/ICcnKSB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgY2xhc3M9XCJmZC1idG5cIlxyXG4gICAgICAgIChjbGljayk9XCJvbkFjdGlvbihhY3Rpb24sbW9kZWwpXCJcclxuICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicmlnaHRcIj5cclxuICAgICAgQGlmIChpc0VkaXRNb2RlIHx8IGlzQ3JlYXRlTW9kZSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMVwiPlxyXG4gICAgICAgQGZvciAoYnRuIG9mIGNyZWF0ZUVkaXRBY3Rpb25zOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgQGlmICghYnRuLnZpc2libGUgfHwgKGJ0bi52aXNpYmxlICYmIGJ0bi52aXNpYmxlID09PSB0cnVlKSkge1xyXG4gICAgICAgICAgICAgICBAaWYgKGJ0bi50eXBlID09ICdzdWJtaXQnICYmIGlubGluZUZvcm0pIHtcclxuICAgICAgICAgICAgICA8bGliLWdlbmVyaWMtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCInc3VibWl0J1wiXHJcbiAgICAgICAgICAgICAgICBbbG9hZGluZ109XCJpbmxpbmVGb3JtLmxvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlubGluZUZvcm0ubG9hZGluZyB8fCBmb3JtLmludmFsaWRcIlxyXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiYnRuLmljb25cIlxyXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cImJ0bi5sYWJlbCB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbdmFyaWFudF09XCJidG4udmFyaWFudFwiXHJcbiAgICAgICAgICAgICAgICBbc2V2ZXJpdHldPVwiYnRuLnNldmVyaXR5XCJcclxuICAgICAgICAgICAgICAgIFtzaXplXT1cImJ0bi5zaXplXCJcclxuICAgICAgICAgICAgICAgIFttb2RlbF09XCJidG4uc3BsaXRBY3Rpb25zXCJcclxuICAgICAgICAgICAgICAgIFtwZXJtaXNzaW9uXT1cImJ0bi5wZXJtaXNzaW9uXCJcclxuICAgICAgICAgICAgICAgIChjbGlja2VkKT1cImlubGluZUZvcm0ub25TdWJtaXQoKVwiXHJcbiAgICAgICAgICAgICAgPjwvbGliLWdlbmVyaWMtYnV0dG9uPlxyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIEBlbHNle1xyXG4gICAgICAgICAgICAgICAgIDxsaWItZ2VuZXJpYy1idXR0b25cclxuICAgICAgICAgICAgICAgIFtpY29uXT1cImJ0bi5pY29uXCJcclxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJidG4ubGFiZWwgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgW3ZhcmlhbnRdPVwiYnRuLnZhcmlhbnRcIlxyXG4gICAgICAgICAgICAgICAgW3NldmVyaXR5XT1cImJ0bi5zZXZlcml0eVwiXHJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCJidG4uc2l6ZVwiXHJcbiAgICAgICAgICAgICAgICBbbW9kZWxdPVwiYnRuLnNwbGl0QWN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICBbcGVybWlzc2lvbl09XCJidG4ucGVybWlzc2lvblwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJoYW5kbGVDcmVhdGVFZGl0QWN0aW9uKGJ0bilcIlxyXG4gICAgICAgICAgICAgID48L2xpYi1nZW5lcmljLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8L3AtdG9vbGJhcj5cclxuXHJcbiAgPCEtLSBUYWJzIC0tPlxyXG4gIDxwLXRhYnMgdmFsdWU9XCIwXCI+XHJcbiAgICA8cC10YWJsaXN0PlxyXG4gICAgICAgQGZvciAodGFiIG9mIHRhYnNfOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICA8cC10YWIgdmFsdWU9XCJ7eyRpbmRleH19XCI+XHJcbiAgICAgICAgICA8aSBbY2xhc3NdPVwidGFiLmljb25cIj48L2k+XHJcbiAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtci0xIG1sLTFcIj57eyB0YWIuaGVhZGVyIH19PC9zcGFuPlxyXG4gICAgICAgIDwvcC10YWI+XHJcbiAgICAgICB9XHJcbiAgICA8L3AtdGFibGlzdD5cclxuICAgIDxwLXRhYnBhbmVscz5cclxuICAgICAgQGZvciAodGFiIG9mIHRhYnNfOyB0cmFjayAkaW5kZXgpIHtcclxuIDxwLXRhYnBhbmVsIHZhbHVlPVwie3skaW5kZXh9fVwiPlxyXG5cclxuICAgICAgPCEtLSBGb3JtbHkgZmllbGRzIC0tPlxyXG4gICAgICA8IS0tIHAtNCBncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGdhcC00IC0tPlxyXG4gICAgICA8ZGl2ICBjbGFzcz1cImJvcmRlciBib3JkZXItc3VyZmFjZSBwLTRcIj5cclxuICAgICAgICBAaWYgKHRhYi5maWVsZHMubGVuZ3RoICYmICRpbmRleCA9PSAwKSB7XHJcblxyXG4gICAgICAgPGZvcm0gKm5nSWY9XCJmb3JtXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XHJcbiAgICAgICAgIEBpZiAodGFiLmZpZWxkcy5sZW5ndGggJiYgJGluZGV4ID09IDAgKSB7XHJcbiBAaWYgKGlzRWRpdE1vZGUgfHwgaXNDcmVhdGVNb2RlKSB7XHJcbiAgICAgICAgIDxhcHAtZ2VuZXJpYy1kaWFsb2dcclxuICAgICAgICAgI2lubGluZUZvcm1cclxuICAgICAgICAgW2Zvcm1dPVwiZm9ybVwiXHJcbiAgICAgICAgIFttb2RlbF09XCJtb2RlbFwiXHJcbiAgICBbZm9ybUZpZWxkc109XCJmb3JtRmllbGRzID8/IFtdXCJcclxuICAgIFthcGlOYW1lXT1cImFwaU5hbWVcIlxyXG4gICAgW2lkRmllbGRdPVwiaWRGaWVsZCA/PydpZCdcIlxyXG4gICAgW2Rpc3BsYXlNb2RlXT1cIidpbmxpbmUnXCJcclxuICAgICBbbW9kZV09XCInZm9ybS1vbmx5J1wiXHJcbiAgICAgW2ZvcmNlU3RhdGVdPVwiaXNDcmVhdGVNb2RlID8gJ2NyZWF0ZSc6J2VkaXQnXCJcclxuICAgIChhZnRlclNhdmUpPVwiYWZ0ZXJTYXZlKCRldmVudClcIlxyXG4gID5cclxuICA8L2FwcC1nZW5lcmljLWRpYWxvZz5cclxufVxyXG5AZWxzZSBpZihpc1ZpZXdNb2RlKXtcclxuIDxmb3JtbHktZm9ybVxyXG4gICAgICAgICAgW2Zvcm1dPVwiZm9ybVwiXHJcbiAgICAgICAgICBbZmllbGRzXT1cInRhYi5maWVsZHNcIlxyXG4gICAgICAgICAgW21vZGVsXT1cIm1vZGVsXCJcclxuICAgICAgICA+PC9mb3JtbHktZm9ybT5cclxufVxyXG59XHJcbiAgICAgICAgPC9mb3JtPlxyXG5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKHRhYi5maWVsZHMubGVuZ3RoICYmICRpbmRleCA+IDApIHtcclxuXHJcblxyXG4gICAgICAgIDxmb3JtbHktZm9ybVxyXG4gICAgICAgICAgW2Zvcm1dPVwiZ2V0Rm9ybSgkaW5kZXgpXCJcclxuICAgICAgICAgIFtmaWVsZHNdPVwidGFiLmZpZWxkc1wiXHJcbiAgICAgICAgICBbbW9kZWxdPVwidGFiLm1vZGVsIHx8IG1vZGVsXCJcclxuICAgICAgICA+PC9mb3JtbHktZm9ybT5cclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIDwhLS0gQ3VzdG9tIHRlbXBsYXRlIC0tPlxyXG4gICAgICBAaWYgKHRhYi5jb250ZW50KSB7XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYi5jb250ZW50XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gICAgICA8L3AtdGFicGFuZWw+XHJcbiAgICB9XHJcbiAgICA8L3AtdGFicGFuZWxzPlxyXG4gIDwvcC10YWJzPlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gW21vZGVsXT1cIm1vZGVsXCIgLS0+XHJcbiAgPGFwcC1nZW5lcmljLWRpYWxvZ1xyXG4gICAgI2RpYWxvZ1xyXG4gICAgW2Zvcm1GaWVsZHNdPVwiZm9ybUZpZWxkcyA/PyBbXVwiXHJcbiAgICBbYXBpTmFtZV09XCJhcGlOYW1lXCJcclxuICAgIFtpZEZpZWxkXT1cImlkRmllbGQgPz8naWQnXCJcclxuICAgIFtkaXNwbGF5TW9kZV09XCJkaXNwbGF5TW9kZSA/PyAnZGlhbG9nJ1wiXHJcbiAgICAoYWZ0ZXJTYXZlKT1cImFmdGVyU2F2ZSgkZXZlbnQpXCJcclxuICA+XHJcbiAgPC9hcHAtZ2VuZXJpYy1kaWFsb2c+XHJcbn1cclxuIl19","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class GenericViewModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericViewModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericViewModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericViewModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy12aWV3LW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLXZpZXcvc3JjL2xpYi9nZW5lcmljLXZpZXctbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8saUJBQWlCO3VHQUFqQixpQkFBaUI7d0dBQWpCLGlCQUFpQixZQUZsQixZQUFZO3dHQUVYLGlCQUFpQixZQUZsQixZQUFZOzsyRkFFWCxpQkFBaUI7a0JBSDdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY1ZpZXdNb2R1bGUge31cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy12aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtdmlldy9zcmMvZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy12aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAyBO,MAAM,oBAAoB,CAAC;AAClC,IAAI,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAClC,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3B,IAAI,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC;AACtC,IAAI,IAAI,GAAG,IAAI,gBAAgB,CAAC,EAAE,CAAC;AACnC,IAAI,KAAK,GAAG,EAAE;AACd,IAAI,OAAO,GAAG,EAAE;AAChB,IAAI,iBAAiB,GAAG,EAAE;AAC1B,IAAI,QAAQ,GAAG,EAAE;AACjB,IAAI,IAAI,GAAG,EAAE;AACb,IAAI,QAAQ,GAAG,IAAI;AACnB,IAAI,UAAU;AACd,IAAI,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,IAAI,UAAU,GAAG,EAAE;AACnB,IAAI,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,GAAG,IAAI;AAClB,IAAI,cAAc,GAAG,KAAK;AAC1B,IAAI,UAAU,GAAG,IAAI,CAAC;AACtB,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,IAAI,UAAU,GAAG,KAAK,CAAC;AACvB,IAAI,KAAK,GAAG,EAAE;AACd,IAAI,WAAW,GAAG,QAAQ;AAC1B,IAAI,IAAI,GAAG,MAAM;AACjB,IAAI,MAAM,GAAG,IAAI,YAAY,EAAE;AAC/B,IAAI,WAAW,GAAG,IAAI,YAAY,EAAE;AACpC,IAAI,MAAM;AACV,IAAI,UAAU;AACd,IAAI,KAAK,GAAG,EAAE;AACd,IAAI,MAAM,GAAG,EAAE;AACf,IAAI,SAAS;AACb,IAAI,IAAI,GAAG,EAAE;AACb,IAAI,YAAY,GAAG,CAAC;AACpB,IAAI,OAAO,GAAG,KAAK;AACnB;AACA,IAAI,QAAQ,GAAG,EAAE;AACjB,IAAI,SAAS,GAAG,CAAC;AACjB,IAAI,IAAI,GAAG,EAAE;AACb,IAAI,cAAc,GAAG,EAAE;AACvB,IAAI,WAAW,GAAG,EAAE;AACpB,IAAI,YAAY,GAAG,EAAE;AACrB,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACrC,IAAI,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAChC,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI;AAC3B,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;AAC/C;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC;AAClE,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,IAAI;AAChD,YAAY,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AAC/C,YAAY,IAAI,EAAE,EAAE;AACpB,gBAAgB,IAAI,CAAC,SAAS,GAAG,EAAE;AACnC,gBAAgB,IAAI,IAAI,CAAC,cAAc,EAAE;AACzC,oBAAoB,IAAI,CAAC,QAAQ,EAAE;AACnC;AACA;AACA,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,SAAS,CAAC;AACV;AACA,IAAI,OAAO,GAAG;AACd;AACA,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE;AACjD,QAAQ,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC/C,QAAQ,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC/C,QAAQ,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;AACnG,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE;AACvB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC5B,gBAAgB,GAAG,CAAC;AACpB,gBAAgB,MAAM,EAAE;AACxB,oBAAoB;AACpB,wBAAwB,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;AAC5C,wBAAwB,mBAAmB,EAAE,uCAAuC;AACpF,wBAAwB,UAAU,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;AAC9D,8BAA8B,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,MAAM;AAC1F,8BAA8B,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;AACrF,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,CAAC;AACd;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK;AAC5B;AACA;AACA,IAAI,mBAAmB,CAAC,MAAM,GAAG,EAAE,EAAE;AACrC,QAAQ,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK;AAChC,YAAY,GAAG,CAAC;AAChB,YAAY,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACnF,SAAS,CAAC,CAAC;AACX;AACA,IAAI,aAAa,CAAC,MAAM,GAAG,EAAE,EAAE;AAC/B,QAAQ,MAAM,OAAO,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI;AAC5D,YAAY,IAAI,KAAK,CAAC,UAAU,EAAE,MAAM;AACxC,gBAAgB,OAAO,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;AAChD,YAAY,IAAI,CAAC,KAAK,CAAC;AACvB,mBAAmB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxC;AACA;AACA,gBAAgB,OAAO,EAAE;AACzB,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI,mBAAmB;AACvG,YAAY,OAAO,CAAC;AACpB,oBAAoB,IAAI;AACxB,oBAAoB,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC;AACrC,oBAAoB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC3C,oBAAoB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC3C,oBAAoB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,eAAe,CAAC;AACjE,oBAAoB,KAAK,EAAE;AAC3B,wBAAwB,GAAG,KAAK,CAAC,KAAK;AACtC,wBAAwB,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC;AACtF,qBAAqB;AACrB,oBAAoB,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW;AACrG,iBAAiB,CAAC;AAClB,SAAS,CAAC;AACV,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC;AAC9B;AACA;AACA,IAAI,SAAS,GAAG,IAAI,GAAG,EAAE;AACzB,IAAI,OAAO,CAAC,QAAQ,EAAE;AACtB,QAAQ,MAAM,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1C,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,IAAI,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC;AACpC,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;AACzC;AACA,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,MAAM,sBAAsB,CAAC,GAAG,EAAE;AACtC,QAAQ,IAAI;AACZ,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE;AAC5B;AACA,gBAAgB,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACvC;AACA,iBAAiB;AACjB;AACA,gBAAgB,IAAI,GAAG,CAAC,UAAU,IAAI,QAAQ,EAAE;AAChD,oBAAoB,IAAI,CAAC,IAAI,EAAE;AAC/B;AACA,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACrC,wBAAwB,IAAI,EAAE,GAAG,CAAC,UAAU,IAAI,QAAQ;AACxD,wBAAwB,GAAG,EAAE,IAAI;AACjC,qBAAqB,CAAC;AACtB;AACA;AACA;AACA,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC;AACrD;AACA;AACA,IAAI,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE;AACzB,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE;AACxB,YAAY,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AAC7B;AACA,aAAa;AACb;AACA,YAAY,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAC3D;AACA;AACA,IAAI,UAAU,CAAC,KAAK,EAAE;AACtB,QAAQ,QAAQ,KAAK,CAAC,IAAI;AAC1B,YAAY,KAAK,MAAM;AACvB,gBAAgB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC;AACvD,gBAAgB;AAChB,YAAY,KAAK,QAAQ;AACzB,gBAAgB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AACxC,gBAAgB;AAChB,YAAY;AACZ,gBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACvC,gBAAgB;AAChB;AACA;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACnB;AACA,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;AAC7D,QAAQ,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,EAAE,8BAA8B,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK;AACvH,YAAY,IAAI,MAAM,CAAC,WAAW,EAAE;AACpC,gBAAgB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AAClD,oBAAoB,IAAI,EAAE,MAAM;AAChC,wBAAwB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAClE,wBAAwB,IAAI,CAAC,IAAI,EAAE;AACnC,qBAAqB;AACrB,oBAAoB,KAAK,EAAE,CAAC,GAAG,KAAK;AACpC,wBAAwB,IAAI,CAAC,OAAO,GAAG,KAAK;AAC5C;AACA,iBAAiB,CAAC;AAClB;AACA,SAAS,CAAC;AACV;AACA,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ;AACnC;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC/B,YAAY,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACjC;AACA,aAAa,IAAI,IAAI,CAAC,UAAU,EAAE;AAClC,YAAY,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACjC;AACA;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACnB,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAC1D,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;AACvF,QAAQ,IAAI,WAAW;AACvB,QAAQ,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC/B;AACA,YAAY,WAAW,GAAG;AAC1B,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC7E,gBAAgB,KAAK;AACrB,aAAa;AACb;AACA,aAAa;AACb;AACA,YAAY,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC1C,gBAAgB,WAAW,GAAG;AAC9B,oBAAoB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACxD,oBAAoB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AAC1C,oBAAoB,IAAI;AACxB,iBAAiB;AACjB;AACA,iBAAiB;AACjB,gBAAgB,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACrF,gBAAgB,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE;AACpC,oBAAoB,WAAW,GAAG,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;AAC7E;AACA,qBAAqB;AACrB,oBAAoB,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC;AAChE,oBAAoB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C;AACA;AACA;AACA,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;AACzC,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB;AACA,IAAI,UAAU,GAAG;AACjB,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;AACrC;AACA,IAAI,IAAI,GAAG;AACX;AACA,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AAC7B;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI;AAC3B,QAAQ,MAAM,OAAO,GAAG;AACxB,YAAY,cAAc,EAAE,IAAI,CAAC,QAAQ;AACzC,YAAY,SAAS,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ;AACrD,YAAY,OAAO,EAAE,IAAI,CAAC,IAAI;AAC9B,YAAY,GAAG,IAAI,CAAC,cAAc;AAClC,YAAY,GAAG,IAAI,CAAC,WAAW;AAC/B,YAAY,IAAI,IAAI,CAAC,YAAY,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC;AACvE,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;AAChD,YAAY,IAAI,EAAE,CAAC,GAAG,KAAK;AAC3B,gBAAgB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK;AACrC,gBAAgB,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,UAAU;AAClD,gBAAgB,IAAI,CAAC,OAAO,GAAG,KAAK;AACpC;AACA,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC;AACpF,gBAAgB,IAAI,KAAK,EAAE;AAC3B,oBAAoB,IAAI,CAAC,MAAM,GAAG,KAAK;AACvC;AACA,aAAa;AACb,YAAY,KAAK,EAAE,GAAG,IAAI;AAC1B,gBAAgB,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,CAAC;AACxD,gBAAgB,IAAI,CAAC,OAAO,GAAG,KAAK;AACpC;AACA,SAAS,CAAC;AACV;AACA,IAAI,IAAI,GAAG;AACX,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,MAAM,GAAG,MAAM;AAC7D;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS;AAC3B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,MAAM,GAAG,MAAM;AAC7D;AACA;AACA,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;AAC9K,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,oBAAoB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,ihLAAihL,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,yBAAyB,EAAE,kBAAkB,EAAE,0BAA0B,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,8CAA8C,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,oBAAoB,EAAE,QAAQ,EAAE,0FAA0F,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,qBAAqB,EAAE,WAAW,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,qBAAqB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,0DAA0D,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,mBAAmB,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;AACz/T;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC;AAC9H,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;AAC7E,wBAAwB,YAAY;AACpC,wBAAwB,aAAa;AACrC,wBAAwB,YAAY;AACpC,wBAAwB,UAAU;AAClC,wBAAwB,UAAU;AAClC,wBAAwB,WAAW;AACnC,wBAAwB,mBAAmB;AAC3C,wBAAwB,eAAe;AACvC,wBAAwB,mBAAmB;AAC3C,wBAAwB,aAAa;AACrC,wBAAwB,sBAAsB;AAC9C,wBAAwB,aAAa;AACrC,wBAAwB;AACxB,qBAAqB,EAAE,QAAQ,EAAE,ihLAAihL,EAAE;AACpjL,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC;AACtC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;AAC1B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;AACpC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;AACvB,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC3B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;AAC1B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;AAC1B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;AAC1B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;AACjC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;AAC/B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;AACxB,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;AACvB,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;AACzB,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;AACzB,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,QAAQ;AAC/B,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,YAAY;AACnC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;AAC1B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,EAAE,CAAC;;ACxXZ,MAAM,iBAAiB,CAAC;AAC/B,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;AAC1K,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;AACrJ,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;AACrJ;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AAC3H,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,OAAO,EAAE,CAAC,YAAY,CAAC;AAC3C,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACbb;AACA;AACA;;;;"}
|
package/generic-view/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elite.framework/ng.ui.core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.70",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^20.1.0",
|
|
6
6
|
"@angular/core": "^20.1.0"
|
|
@@ -44,14 +44,14 @@
|
|
|
44
44
|
"types": "./column-settings-popover/index.d.ts",
|
|
45
45
|
"default": "./fesm2022/elite.framework-ng.ui.core-column-settings-popover.mjs"
|
|
46
46
|
},
|
|
47
|
-
"./condition-editor": {
|
|
48
|
-
"types": "./condition-editor/index.d.ts",
|
|
49
|
-
"default": "./fesm2022/elite.framework-ng.ui.core-condition-editor.mjs"
|
|
50
|
-
},
|
|
51
47
|
"./custom-switch": {
|
|
52
48
|
"types": "./custom-switch/index.d.ts",
|
|
53
49
|
"default": "./fesm2022/elite.framework-ng.ui.core-custom-switch.mjs"
|
|
54
50
|
},
|
|
51
|
+
"./condition-editor": {
|
|
52
|
+
"types": "./condition-editor/index.d.ts",
|
|
53
|
+
"default": "./fesm2022/elite.framework-ng.ui.core-condition-editor.mjs"
|
|
54
|
+
},
|
|
55
55
|
"./datepicker": {
|
|
56
56
|
"types": "./datepicker/index.d.ts",
|
|
57
57
|
"default": "./fesm2022/elite.framework-ng.ui.core-datepicker.mjs"
|
|
@@ -136,14 +136,14 @@
|
|
|
136
136
|
"types": "./generic-errormessage/index.d.ts",
|
|
137
137
|
"default": "./fesm2022/elite.framework-ng.ui.core-generic-errormessage.mjs"
|
|
138
138
|
},
|
|
139
|
-
"./generic-formly-fields": {
|
|
140
|
-
"types": "./generic-formly-fields/index.d.ts",
|
|
141
|
-
"default": "./fesm2022/elite.framework-ng.ui.core-generic-formly-fields.mjs"
|
|
142
|
-
},
|
|
143
139
|
"./generic-loadingspinner": {
|
|
144
140
|
"types": "./generic-loadingspinner/index.d.ts",
|
|
145
141
|
"default": "./fesm2022/elite.framework-ng.ui.core-generic-loadingspinner.mjs"
|
|
146
142
|
},
|
|
143
|
+
"./generic-formly-fields": {
|
|
144
|
+
"types": "./generic-formly-fields/index.d.ts",
|
|
145
|
+
"default": "./fesm2022/elite.framework-ng.ui.core-generic-formly-fields.mjs"
|
|
146
|
+
},
|
|
147
147
|
"./generic-search": {
|
|
148
148
|
"types": "./generic-search/index.d.ts",
|
|
149
149
|
"default": "./fesm2022/elite.framework-ng.ui.core-generic-search.mjs"
|