@elite.framework/ng.ui.core 2.0.4 → 2.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"elite.framework-ng.ui.core-excel-import.mjs","sources":["../tmp-esm2022/excel-import/lib/excel-import-module.js","../tmp-esm2022/excel-import/lib/excel-import.js","../tmp-esm2022/excel-import/elite.framework-ng.ui.core-excel-import.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class ExcelImportModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: ExcelImportModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: ExcelImportModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: ExcelImportModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: ExcelImportModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwtaW1wb3J0LW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9leGNlbC1pbXBvcnQvc3JjL2xpYi9leGNlbC1pbXBvcnQtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8saUJBQWlCO3VHQUFqQixpQkFBaUI7d0dBQWpCLGlCQUFpQixZQUZsQixZQUFZO3dHQUVYLGlCQUFpQixZQUZsQixZQUFZOzsyRkFFWCxpQkFBaUI7a0JBSDdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgRXhjZWxJbXBvcnRNb2R1bGUge31cbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { Component, inject, Input, Output, EventEmitter } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule, FormBuilder, Validators } from '@angular/forms';\nimport { RestService } from '@elite.framework/ng.core/services';\nimport { FormlyForm } from '@ngx-formly/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { ButtonModule } from 'primeng/button';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\nimport { Subject, takeUntil } from 'rxjs';\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { StepsModule } from 'primeng/steps';\nimport { MessageService } from 'primeng/api';\nimport { ToastModule } from 'primeng/toast';\nimport { read, utils } from 'xlsx';\nimport { ENVIRONMENT } from '@elite.framework/ng.core/tokens';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"primeng/dynamicdialog\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@angular/forms\";\nimport * as i4 from \"primeng/button\";\nimport * as i5 from \"primeng/fileupload\";\nimport * as i6 from \"primeng/steps\";\nimport * as i7 from \"primeng/toast\";\nimport * as i8 from \"@ngx-translate/core\";\nexport class ExcelImportComponent {\n ref;\n dialogConfig;\n config;\n importComplete = new EventEmitter();\n importError = new EventEmitter();\n form;\n model = {};\n loading = false;\n uploadedFileName = null;\n uploadError = null;\n excelHeaders = [];\n destroy$ = new Subject();\n restService = inject(RestService);\n messageService = inject(MessageService);\n translateService = inject(TranslateService);\n fb = inject(FormBuilder);\n env = inject(ENVIRONMENT);\n steps = [\n { label: this.translateService.instant('uploadFile') },\n { label: this.translateService.instant('columnMapping') },\n { label: this.translateService.instant('review') },\n ];\n activeStep = 0;\n mappingFields = [];\n constructor(ref, dialogConfig) {\n this.ref = ref;\n this.dialogConfig = dialogConfig;\n this.form = this.fb.group({});\n // Initialize from dialog config if provided\n if (this.dialogConfig?.data?.config) {\n this.config = this.dialogConfig.data.config;\n }\n }\n ngOnInit() {\n if (!this.config) {\n throw new Error('ExcelImportConfig is required');\n }\n this.mappingFields = this.config.mappingFields.map(field => ({\n ...field,\n props: {\n ...field.props,\n options: []\n }\n }));\n this.steps = this.config.steps || this.steps;\n }\n nextStep() {\n if (this.activeStep < 2)\n this.activeStep++;\n }\n prevStep() {\n if (this.activeStep > 0)\n this.activeStep--;\n }\n canProceed() {\n switch (this.activeStep) {\n case 0:\n return !!this.uploadedFileName;\n case 1:\n return this.form.valid;\n case 2:\n return true;\n default:\n return false;\n }\n }\n getModelValue(field, model) {\n if (!field.key)\n return null;\n if (Array.isArray(field.key)) {\n // Walk through nested keys like ['address', 'street']\n return field.key.reduce((acc, k) => (acc ? acc[k] : undefined), model);\n }\n return model[field.key];\n }\n // Add this property to store the file content\n fileContent = null;\n // Update the onFileUpload method to store the file content\n onFileUpload(event) {\n this.uploadError = null;\n const file = event.files[0];\n if (!file) {\n this.uploadError = 'noFileSelected';\n return;\n }\n // Validate file type\n const validExtensions = ['.xlsx', '.xls', '.csv'];\n const fileExtension = file.name.toLowerCase().substring(file.name.lastIndexOf('.'));\n if (!validExtensions.includes(fileExtension)) {\n this.uploadError = 'invalidFileType';\n this.clearFileUpload(event);\n return;\n }\n this.uploadedFileName = file.name;\n const reader = new FileReader();\n reader.onload = (e) => {\n try {\n const arrayBuffer = e.target?.result;\n this.fileContent = arrayBuffer; // Store the file content\n const data = new Uint8Array(arrayBuffer);\n const workbook = read(data, { type: 'array' });\n if (workbook.SheetNames.length === 0) {\n this.uploadError = 'noSheetsFound';\n this.clearFileUpload(event);\n return;\n }\n const sheetName = workbook.SheetNames[0];\n const worksheet = workbook.Sheets[sheetName];\n const rows = utils.sheet_to_json(worksheet, { header: 1 });\n if (rows.length === 0) {\n this.uploadError = 'noDataFound';\n this.clearFileUpload(event);\n return;\n }\n this.excelHeaders = rows[0];\n // Update mapping fields with header options\n this.mappingFields.forEach(field => {\n if (field.props) {\n field.props.options = this.excelHeaders.map(h => ({\n value: h,\n label: h,\n }));\n }\n });\n // Initialize form with default values if not set\n this.initializeForm();\n }\n catch (error) {\n console.error('Error processing Excel file:', error);\n this.uploadError = 'fileProcessingError';\n this.clearFileUpload(event);\n }\n };\n reader.onerror = (error) => {\n console.error('File reading error:', error);\n this.uploadError = 'fileReadError';\n this.clearFileUpload(event);\n };\n reader.readAsArrayBuffer(file);\n }\n // Add this method to convert ArrayBuffer to base64\n arrayBufferToBase64(buffer) {\n const bytes = new Uint8Array(buffer);\n let binary = '';\n const len = bytes.byteLength;\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\n }\n // Add this method to get file extension\n getFileExtension(filename) {\n const index = filename.lastIndexOf('.');\n return index !== -1 ? filename.slice(index) : '';\n }\n // Updated onSubmit method\n onSubmit() {\n if (this.form.invalid || !this.uploadedFileName || !this.fileContent) {\n this.form.markAllAsTouched();\n if (!this.fileContent) {\n this.messageService.add({\n severity: 'error',\n summary: 'Error',\n detail: 'File content is missing. Please upload the file again.'\n });\n }\n return;\n }\n this.loading = true;\n // Convert file content to base64\n let fileBase64;\n try {\n if (this.fileContent instanceof ArrayBuffer) {\n fileBase64 = this.arrayBufferToBase64(this.fileContent);\n }\n else if (typeof this.fileContent === 'string') {\n // If it's already a string (base64), use it directly\n fileBase64 = this.fileContent;\n }\n else {\n throw new Error('Unsupported file content type');\n }\n }\n catch (error) {\n this.loading = false;\n console.error('Error converting file to base64:', error);\n this.messageService.add({\n severity: 'error',\n summary: 'Error',\n detail: 'Failed to process file content'\n });\n return;\n }\n const requestBody = {\n fileName: this.uploadedFileName,\n fileExtension: this.getFileExtension(this.uploadedFileName),\n fileContent: fileBase64,\n mappings: this.form.value,\n headers: this.excelHeaders,\n fileSize: this.fileContent instanceof ArrayBuffer ? this.fileContent.byteLength : 0\n };\n this.restService\n .request({\n method: 'POST',\n url: this.config.apiUrl,\n body: requestBody,\n headers: {\n 'Content-Type': 'application/json'\n }\n }, { apiName: this.config.apiName })\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: (response) => {\n this.loading = false;\n this.messageService.add({\n severity: 'success',\n summary: 'Success',\n detail: 'File imported successfully'\n });\n this.importComplete.emit(response);\n this.ref.close(response);\n },\n error: (err) => {\n this.loading = false;\n console.error('Import error:', err);\n this.messageService.add({\n severity: 'error',\n summary: 'Error',\n detail: 'Failed to import file'\n });\n this.importError.emit(err);\n },\n });\n }\n // Update clearFileUpload to also clear file content\n clearFileUpload(event) {\n if (event.options && typeof event.options.clear === 'function') {\n event.options.clear();\n }\n this.uploadedFileName = null;\n this.fileContent = null;\n }\n initializeForm() {\n const formConfig = {};\n this.mappingFields.forEach(field => {\n if (field.key) {\n // Set default value to first header if available\n formConfig[field.key] = [this.excelHeaders[0] || '', Validators.required];\n }\n });\n this.form = this.fb.group(formConfig);\n }\n onCancel() {\n if (!this.loading) {\n this.ref.close(false);\n }\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: ExcelImportComponent, deps: [{ token: i1.DynamicDialogRef }, { token: i1.DynamicDialogConfig }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.8\", type: ExcelImportComponent, isStandalone: true, selector: \"app-excel-import\", inputs: { config: \"config\" }, outputs: { importComplete: \"importComplete\", importError: \"importError\" }, providers: [MessageService], ngImport: i0, template: `\r\n <p-toast></p-toast>\r\n <div class=\"p-4 space-y-4\">\r\n <p-steps [model]=\"steps\" [(activeIndex)]=\"activeStep\" class=\"mb-4\"></p-steps>\r\n\r\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\r\n <ng-container [ngSwitch]=\"activeStep\">\r\n <!-- Step 1: Upload File -->\r\n <div *ngSwitchCase=\"0\" class=\"p-4\">\r\n <!-- Download template link -->\r\n\r\n\r\n <!-- File upload -->\r\n <p-fileUpload\r\n name=\"excelFile\"\r\n mode=\"basic\"\r\n chooseIcon=\"pi pi-upload\"\r\n chooseLabel=\"{{ 'chooseFile' | translate }}\"\r\n (onSelect)=\"onFileUpload($event)\"\r\n [accept]=\"config.acceptedFileTypes || '.xls,.xlsx,.csv'\"\r\n [maxFileSize]=\"config.maxFileSize || 10000000\"\r\n [showUploadButton]=\"false\"\r\n [showCancelButton]=\"false\"\r\n >\r\n </p-fileUpload>\r\n\r\n <!-- Upload status -->\r\n <p *ngIf=\"uploadedFileName\" class=\"mt-2 text-green-600\">\r\n {{ uploadedFileName }}\r\n </p>\r\n <p *ngIf=\"uploadError\" class=\"mt-2 text-red-600\">\r\n {{ uploadError }}\r\n </p>\r\n </div>\r\n <p>\r\n <a\r\n [href]=\"env.apiUrl+config.templateUrl\"\r\n download\r\n class=\"text-blue-600 hover:underline flex items-center gap-1\"\r\n >\r\n <i class=\"pi pi-download\"></i>\r\n {{ 'downloadTemplate' | translate }}\r\n </a>\r\n </p>\r\n\r\n\r\n <!-- Step 2: Column Mapping -->\r\n <div *ngSwitchCase=\"1\" class=\"p-4\">\r\n <formly-form [form]=\"form\" [fields]=\"mappingFields\" [model]=\"model\"></formly-form>\r\n </div>\r\n\r\n <!-- Step 3: Review -->\r\n <div *ngSwitchCase=\"2\" class=\"p-4\">\r\n <p class=\"text-gray-700 mb-4\">\r\n {{ 'importReviewMessage' | translate }}\r\n </p>\r\n <div class=\"bg-gray-100 p-3 rounded\">\r\n <p><strong>{{ 'fileName' | translate }}:</strong> {{ uploadedFileName }}</p>\r\n <p><strong>{{ 'selectedMappings' | translate }}:</strong></p>\r\n <ul class=\"list-disc list-inside ml-4\">\r\n <li *ngFor=\"let field of mappingFields\">\r\n {{ field.props?.label }}: {{ getModelValue(field, model) }}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Footer Buttons -->\r\n <div class=\"flex justify-between mt-6 pt-4 border-t\">\r\n <div>\r\n <button\r\n pButton\r\n type=\"button\"\r\n [label]=\"'back' | translate\"\r\n icon=\"pi pi-arrow-left\"\r\n (click)=\"prevStep()\"\r\n [disabled]=\"activeStep === 0 || loading\"\r\n class=\"p-button-text\"\r\n ></button>\r\n </div>\r\n\r\n <div class=\"flex gap-2\">\r\n <button\r\n pButton\r\n type=\"button\"\r\n [label]=\"'next' | translate\"\r\n icon=\"pi pi-arrow-right\"\r\n iconPos=\"right\"\r\n (click)=\"nextStep()\"\r\n *ngIf=\"activeStep < 2\"\r\n [disabled]=\"!canProceed() || loading\"\r\n ></button>\r\n\r\n <button\r\n pButton\r\n type=\"submit\"\r\n [label]=\"loading ? ('uploading' | translate) : ('save' | translate)\"\r\n icon=\"pi pi-check\"\r\n *ngIf=\"activeStep === 2\"\r\n [disabled]=\"loading\"\r\n [loading]=\"loading\"\r\n class=\"p-button-primary\"\r\n ></button>\r\n\r\n <button\r\n pButton\r\n type=\"button\"\r\n [label]=\"'cancel' | translate\"\r\n severity=\"secondary\"\r\n (click)=\"onCancel()\"\r\n [disabled]=\"loading\"\r\n ></button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { kind: \"directive\", type: i2.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i3.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { kind: \"directive\", type: i3.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"directive\", type: i3.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"component\", type: FormlyForm, selector: \"formly-form\", inputs: [\"form\", \"model\", \"fields\", \"options\"], outputs: [\"modelChange\"] }, { kind: \"ngmodule\", type: TranslateModule }, { 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: FileUploadModule }, { kind: \"component\", type: i5.FileUpload, selector: \"p-fileupload, p-fileUpload\", inputs: [\"name\", \"url\", \"method\", \"multiple\", \"accept\", \"disabled\", \"auto\", \"withCredentials\", \"maxFileSize\", \"invalidFileSizeMessageSummary\", \"invalidFileSizeMessageDetail\", \"invalidFileTypeMessageSummary\", \"invalidFileTypeMessageDetail\", \"invalidFileLimitMessageDetail\", \"invalidFileLimitMessageSummary\", \"style\", \"styleClass\", \"previewWidth\", \"chooseLabel\", \"uploadLabel\", \"cancelLabel\", \"chooseIcon\", \"uploadIcon\", \"cancelIcon\", \"showUploadButton\", \"showCancelButton\", \"mode\", \"headers\", \"customUpload\", \"fileLimit\", \"uploadStyleClass\", \"cancelStyleClass\", \"removeStyleClass\", \"chooseStyleClass\", \"chooseButtonProps\", \"uploadButtonProps\", \"cancelButtonProps\", \"files\"], outputs: [\"onBeforeUpload\", \"onSend\", \"onUpload\", \"onError\", \"onClear\", \"onRemove\", \"onSelect\", \"onProgress\", \"uploadHandler\", \"onImageError\", \"onRemoveUploadedFile\"] }, { kind: \"ngmodule\", type: StepsModule }, { kind: \"component\", type: i6.Steps, selector: \"p-steps\", inputs: [\"activeIndex\", \"model\", \"readonly\", \"style\", \"styleClass\", \"exact\"], outputs: [\"activeIndexChange\"] }, { kind: \"ngmodule\", type: ToastModule }, { kind: \"component\", type: i7.Toast, selector: \"p-toast\", inputs: [\"key\", \"autoZIndex\", \"baseZIndex\", \"life\", \"styleClass\", \"position\", \"preventOpenDuplicates\", \"preventDuplicates\", \"showTransformOptions\", \"hideTransformOptions\", \"showTransitionOptions\", \"hideTransitionOptions\", \"breakpoints\"], outputs: [\"onClose\"] }, { kind: \"pipe\", type: i8.TranslatePipe, name: \"translate\" }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: ExcelImportComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'app-excel-import',\n standalone: true,\n providers: [MessageService],\n template: `\r\n <p-toast></p-toast>\r\n <div class=\"p-4 space-y-4\">\r\n <p-steps [model]=\"steps\" [(activeIndex)]=\"activeStep\" class=\"mb-4\"></p-steps>\r\n\r\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\r\n <ng-container [ngSwitch]=\"activeStep\">\r\n <!-- Step 1: Upload File -->\r\n <div *ngSwitchCase=\"0\" class=\"p-4\">\r\n <!-- Download template link -->\r\n\r\n\r\n <!-- File upload -->\r\n <p-fileUpload\r\n name=\"excelFile\"\r\n mode=\"basic\"\r\n chooseIcon=\"pi pi-upload\"\r\n chooseLabel=\"{{ 'chooseFile' | translate }}\"\r\n (onSelect)=\"onFileUpload($event)\"\r\n [accept]=\"config.acceptedFileTypes || '.xls,.xlsx,.csv'\"\r\n [maxFileSize]=\"config.maxFileSize || 10000000\"\r\n [showUploadButton]=\"false\"\r\n [showCancelButton]=\"false\"\r\n >\r\n </p-fileUpload>\r\n\r\n <!-- Upload status -->\r\n <p *ngIf=\"uploadedFileName\" class=\"mt-2 text-green-600\">\r\n {{ uploadedFileName }}\r\n </p>\r\n <p *ngIf=\"uploadError\" class=\"mt-2 text-red-600\">\r\n {{ uploadError }}\r\n </p>\r\n </div>\r\n <p>\r\n <a\r\n [href]=\"env.apiUrl+config.templateUrl\"\r\n download\r\n class=\"text-blue-600 hover:underline flex items-center gap-1\"\r\n >\r\n <i class=\"pi pi-download\"></i>\r\n {{ 'downloadTemplate' | translate }}\r\n </a>\r\n </p>\r\n\r\n\r\n <!-- Step 2: Column Mapping -->\r\n <div *ngSwitchCase=\"1\" class=\"p-4\">\r\n <formly-form [form]=\"form\" [fields]=\"mappingFields\" [model]=\"model\"></formly-form>\r\n </div>\r\n\r\n <!-- Step 3: Review -->\r\n <div *ngSwitchCase=\"2\" class=\"p-4\">\r\n <p class=\"text-gray-700 mb-4\">\r\n {{ 'importReviewMessage' | translate }}\r\n </p>\r\n <div class=\"bg-gray-100 p-3 rounded\">\r\n <p><strong>{{ 'fileName' | translate }}:</strong> {{ uploadedFileName }}</p>\r\n <p><strong>{{ 'selectedMappings' | translate }}:</strong></p>\r\n <ul class=\"list-disc list-inside ml-4\">\r\n <li *ngFor=\"let field of mappingFields\">\r\n {{ field.props?.label }}: {{ getModelValue(field, model) }}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Footer Buttons -->\r\n <div class=\"flex justify-between mt-6 pt-4 border-t\">\r\n <div>\r\n <button\r\n pButton\r\n type=\"button\"\r\n [label]=\"'back' | translate\"\r\n icon=\"pi pi-arrow-left\"\r\n (click)=\"prevStep()\"\r\n [disabled]=\"activeStep === 0 || loading\"\r\n class=\"p-button-text\"\r\n ></button>\r\n </div>\r\n\r\n <div class=\"flex gap-2\">\r\n <button\r\n pButton\r\n type=\"button\"\r\n [label]=\"'next' | translate\"\r\n icon=\"pi pi-arrow-right\"\r\n iconPos=\"right\"\r\n (click)=\"nextStep()\"\r\n *ngIf=\"activeStep < 2\"\r\n [disabled]=\"!canProceed() || loading\"\r\n ></button>\r\n\r\n <button\r\n pButton\r\n type=\"submit\"\r\n [label]=\"loading ? ('uploading' | translate) : ('save' | translate)\"\r\n icon=\"pi pi-check\"\r\n *ngIf=\"activeStep === 2\"\r\n [disabled]=\"loading\"\r\n [loading]=\"loading\"\r\n class=\"p-button-primary\"\r\n ></button>\r\n\r\n <button\r\n pButton\r\n type=\"button\"\r\n [label]=\"'cancel' | translate\"\r\n severity=\"secondary\"\r\n (click)=\"onCancel()\"\r\n [disabled]=\"loading\"\r\n ></button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n `,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n FormlyForm,\n TranslateModule,\n ButtonModule,\n FileUploadModule,\n StepsModule,\n ToastModule\n ],\n }]\n }], ctorParameters: () => [{ type: i1.DynamicDialogRef }, { type: i1.DynamicDialogConfig }], propDecorators: { config: [{\n type: Input\n }], importComplete: [{\n type: Output\n }], importError: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwtaW1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2V4Y2VsLWltcG9ydC9zcmMvbGliL2V4Y2VsLWltcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQWEsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFhLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2hFLE9BQU8sRUFBcUIsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQW1CLE1BQU0sb0JBQW9CLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQVksTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7O0FBa0o5RCxNQUFNLE9BQU8sb0JBQW9CO0lBMkJaO0lBQThCO0lBMUJ4QyxNQUFNLENBQXFCO0lBQzFCLGNBQWMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBQ3pDLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBRWxELElBQUksQ0FBWTtJQUNoQixLQUFLLEdBQVEsRUFBRSxDQUFDO0lBQ2hCLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDaEIsZ0JBQWdCLEdBQWtCLElBQUksQ0FBQztJQUN2QyxXQUFXLEdBQWtCLElBQUksQ0FBQztJQUNsQyxZQUFZLEdBQWEsRUFBRSxDQUFDO0lBQ3BCLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQy9CLFdBQVcsR0FBZ0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9DLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDNUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxQixHQUFHLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRWpDLEtBQUssR0FBRztRQUNOLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBRSxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUU7UUFDdkQsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRTtRQUMxRCxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0tBQ3BELENBQUM7SUFFRixVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsYUFBYSxHQUF3QixFQUFFLENBQUM7SUFFeEMsWUFBbUIsR0FBcUIsRUFBUyxZQUFpQztRQUEvRCxRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUFTLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNoRixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTlCLDRDQUE0QztRQUM1QyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0QsR0FBRyxLQUFLO1lBQ1IsS0FBSyxFQUFFO2dCQUNMLEdBQUcsS0FBSyxDQUFDLEtBQUs7Z0JBQ2QsT0FBTyxFQUFFLEVBQUU7YUFDWjtTQUNGLENBQUMsQ0FBQyxDQUFDO1FBRUosSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQy9DLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUM7WUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQztZQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsVUFBVTtRQUNSLFFBQVEsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3hCLEtBQUssQ0FBQztnQkFDSixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDakMsS0FBSyxDQUFDO2dCQUNKLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDekIsS0FBSyxDQUFDO2dCQUNKLE9BQU8sSUFBSSxDQUFDO1lBQ2Q7Z0JBQ0UsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7SUFDRCxhQUFhLENBQUMsS0FBd0IsRUFBRSxLQUFVO1FBQ2xELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRTVCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QixzREFBc0Q7WUFDdEQsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVDLDhDQUE4QztJQUN4QyxXQUFXLEdBQWdDLElBQUksQ0FBQztJQUV4RCwyREFBMkQ7SUFDM0QsWUFBWSxDQUFDLEtBQVU7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsTUFBTSxJQUFJLEdBQVMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVsQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsV0FBVyxHQUFHLGdCQUFnQixDQUFDO1lBQ3BDLE9BQU87UUFDVCxDQUFDO1FBRUQscUJBQXFCO1FBQ3JCLE1BQU0sZUFBZSxHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXBGLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQztZQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFbEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUVoQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBNEIsRUFBRSxFQUFFO1lBQy9DLElBQUksQ0FBQztnQkFDSCxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQXFCLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDLENBQUMseUJBQXlCO2dCQUN6RCxNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFFekMsTUFBTSxRQUFRLEdBQWEsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUV6RCxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDNUIsT0FBTztnQkFDVCxDQUFDO2dCQUVELE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBRTdDLE1BQU0sSUFBSSxHQUFZLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBRXBFLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxhQUFhLENBQUM7b0JBQ2pDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzVCLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQWEsQ0FBQztnQkFFeEMsNENBQTRDO2dCQUM1QyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDakMsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQ2hCLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDaEQsS0FBSyxFQUFFLENBQUM7NEJBQ1IsS0FBSyxFQUFFLENBQUM7eUJBQ1QsQ0FBQyxDQUFDLENBQUM7b0JBQ04sQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFFSCxpREFBaUQ7Z0JBQ2pELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUV4QixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixPQUFPLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLENBQUMsV0FBVyxHQUFHLHFCQUFxQixDQUFDO2dCQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDLENBQUM7UUFFRixNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDekIsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQztZQUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQztRQUVGLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsbURBQW1EO0lBQzNDLG1CQUFtQixDQUFDLE1BQW1CO1FBQzdDLE1BQU0sS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBRTdCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCx3Q0FBd0M7SUFDaEMsZ0JBQWdCLENBQUMsUUFBZ0I7UUFDdkMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCwwQkFBMEI7SUFDMUIsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckUsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBRTdCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO29CQUN0QixRQUFRLEVBQUUsT0FBTztvQkFDakIsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLE1BQU0sRUFBRSx3REFBd0Q7aUJBQ2pFLENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBRXBCLGlDQUFpQztRQUNqQyxJQUFJLFVBQWtCLENBQUM7UUFFdkIsSUFBSSxDQUFDO1lBQ0gsSUFBSSxJQUFJLENBQUMsV0FBVyxZQUFZLFdBQVcsRUFBRSxDQUFDO2dCQUM1QyxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMxRCxDQUFDO2lCQUFNLElBQUksT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNoRCxxREFBcUQ7Z0JBQ3JELFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ2hDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7WUFDbkQsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztnQkFDdEIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixNQUFNLEVBQUUsZ0NBQWdDO2FBQ3pDLENBQUMsQ0FBQztZQUNILE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUc7WUFDbEIsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDL0IsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDM0QsV0FBVyxFQUFFLFVBQVU7WUFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDMUIsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLFlBQVksV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwRixDQUFDO1FBRUYsSUFBSSxDQUFDLFdBQVc7YUFDYixPQUFPLENBQ047WUFDRSxNQUFNLEVBQUUsTUFBTTtZQUNkLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDdkIsSUFBSSxFQUFFLFdBQVc7WUFDakIsT0FBTyxFQUFFO2dCQUNQLGNBQWMsRUFBRSxrQkFBa0I7YUFDbkM7U0FDRixFQUNELEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQ2pDO2FBQ0EsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztvQkFDdEIsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLE9BQU8sRUFBRSxTQUFTO29CQUNsQixNQUFNLEVBQUUsNEJBQTRCO2lCQUNyQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNCLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDYixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO29CQUN0QixRQUFRLEVBQUUsT0FBTztvQkFDakIsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLE1BQU0sRUFBRSx1QkFBdUI7aUJBQ2hDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELG9EQUFvRDtJQUM1QyxlQUFlLENBQUMsS0FBVTtRQUNoQyxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUMvRCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hCLENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFUyxjQUFjO1FBQ3BCLE1BQU0sVUFBVSxHQUFRLEVBQUUsQ0FBQztRQUUzQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQyxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDZCxpREFBaUQ7Z0JBQ2pELFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFdEYsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBTUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7dUdBcFRVLG9CQUFvQjsyRkFBcEIsb0JBQW9CLHdLQW5JckIsQ0FBQyxjQUFjLENBQUMsMEJBQ2hCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxSFQsMkRBRUMsWUFBWSwyYkFDWixtQkFBbUIsb2JBQ25CLFdBQVcsK0JBQ1gsVUFBVSxpSUFDVixlQUFlLDhCQUNmLFlBQVksb1FBQ1osZ0JBQWdCLDQ3QkFDaEIsV0FBVyx3TUFDWCxXQUFXOzsyRkFHRixvQkFBb0I7a0JBdEloQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUMsQ0FBQyxjQUFjLENBQUM7b0JBQzFCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUhUO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxVQUFVO3dCQUNWLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLFdBQVc7d0JBQ1gsV0FBVztxQkFDWjtpQkFDRjt1SEFFVSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIE9uRGVzdHJveSwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnLCBGb3JtbHlGb3JtIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dDb25maWcsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZE1vZHVsZSwgRmlsZVVwbG9hZEV2ZW50IH0gZnJvbSAncHJpbWVuZy9maWxldXBsb2FkJztcclxuaW1wb3J0IHsgU3RlcHNNb2R1bGUgfSBmcm9tICdwcmltZW5nL3N0ZXBzJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IHJlYWQsIHV0aWxzLCBXb3JrQm9vayB9IGZyb20gJ3hsc3gnO1xyXG5pbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS90b2tlbnMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFeGNlbEltcG9ydENvbmZpZyB7XHJcbiAgdGVtcGxhdGVVcmw6IHN0cmluZztcclxuICBhcGlVcmw6IHN0cmluZztcclxuICBhcGlOYW1lOiBzdHJpbmc7XHJcbiAgbWFwcGluZ0ZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXTtcclxuICBhY2NlcHRlZEZpbGVUeXBlcz86IHN0cmluZztcclxuICBtYXhGaWxlU2l6ZT86IG51bWJlcjtcclxuICBzdGVwcz86IHsgbGFiZWw6IHN0cmluZyB9W107XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWV4Y2VsLWltcG9ydCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBwcm92aWRlcnM6W01lc3NhZ2VTZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPHAtdG9hc3Q+PC9wLXRvYXN0PlxyXG4gICAgPGRpdiBjbGFzcz1cInAtNCBzcGFjZS15LTRcIj5cclxuICAgICAgPHAtc3RlcHMgW21vZGVsXT1cInN0ZXBzXCIgWyhhY3RpdmVJbmRleCldPVwiYWN0aXZlU3RlcFwiIGNsYXNzPVwibWItNFwiPjwvcC1zdGVwcz5cclxuXHJcbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdCgpXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiYWN0aXZlU3RlcFwiPlxyXG4gICAgICAgICAgPCEtLSBTdGVwIDE6IFVwbG9hZCBGaWxlIC0tPlxyXG4gICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIjBcIiBjbGFzcz1cInAtNFwiPlxyXG4gICAgICAgICAgPCEtLSBEb3dubG9hZCB0ZW1wbGF0ZSBsaW5rIC0tPlxyXG5cclxuXHJcbiAgICAgICAgICA8IS0tIEZpbGUgdXBsb2FkIC0tPlxyXG4gICAgICAgICAgPHAtZmlsZVVwbG9hZFxyXG4gICAgICAgICAgICBuYW1lPVwiZXhjZWxGaWxlXCJcclxuICAgICAgICAgICAgbW9kZT1cImJhc2ljXCJcclxuICAgICAgICAgICAgY2hvb3NlSWNvbj1cInBpIHBpLXVwbG9hZFwiXHJcbiAgICAgICAgICAgIGNob29zZUxhYmVsPVwie3sgJ2Nob29zZUZpbGUnIHwgdHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgKG9uU2VsZWN0KT1cIm9uRmlsZVVwbG9hZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW2FjY2VwdF09XCJjb25maWcuYWNjZXB0ZWRGaWxlVHlwZXMgfHwgJy54bHMsLnhsc3gsLmNzdidcIlxyXG4gICAgICAgICAgICBbbWF4RmlsZVNpemVdPVwiY29uZmlnLm1heEZpbGVTaXplIHx8IDEwMDAwMDAwXCJcclxuICAgICAgICAgICAgW3Nob3dVcGxvYWRCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbc2hvd0NhbmNlbEJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8L3AtZmlsZVVwbG9hZD5cclxuXHJcbiAgICAgICAgICA8IS0tIFVwbG9hZCBzdGF0dXMgLS0+XHJcbiAgICAgICAgICA8cCAqbmdJZj1cInVwbG9hZGVkRmlsZU5hbWVcIiBjbGFzcz1cIm10LTIgdGV4dC1ncmVlbi02MDBcIj5cclxuICAgICAgICAgICAge3sgdXBsb2FkZWRGaWxlTmFtZSB9fVxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgPHAgKm5nSWY9XCJ1cGxvYWRFcnJvclwiIGNsYXNzPVwibXQtMiB0ZXh0LXJlZC02MDBcIj5cclxuICAgICAgICAgICAge3sgdXBsb2FkRXJyb3IgfX1cclxuICAgICAgICAgIDwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8cD5cclxuICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICBbaHJlZl09XCJlbnYuYXBpVXJsK2NvbmZpZy50ZW1wbGF0ZVVybFwiXHJcbiAgICAgICAgICAgICAgZG93bmxvYWRcclxuICAgICAgICAgICAgICBjbGFzcz1cInRleHQtYmx1ZS02MDAgaG92ZXI6dW5kZXJsaW5lIGZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktZG93bmxvYWRcIj48L2k+XHJcbiAgICAgICAgICAgICAge3sgJ2Rvd25sb2FkVGVtcGxhdGUnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDwvcD5cclxuXHJcblxyXG4gICAgICAgICAgPCEtLSBTdGVwIDI6IENvbHVtbiBNYXBwaW5nIC0tPlxyXG4gICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiMVwiIGNsYXNzPVwicC00XCI+XHJcbiAgICAgICAgICAgIDxmb3JtbHktZm9ybSBbZm9ybV09XCJmb3JtXCIgW2ZpZWxkc109XCJtYXBwaW5nRmllbGRzXCIgW21vZGVsXT1cIm1vZGVsXCI+PC9mb3JtbHktZm9ybT5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gU3RlcCAzOiBSZXZpZXcgLS0+XHJcbiAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCIyXCIgY2xhc3M9XCJwLTRcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWdyYXktNzAwIG1iLTRcIj5cclxuICAgICAgICAgICAgICB7eyAnaW1wb3J0UmV2aWV3TWVzc2FnZScgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctZ3JheS0xMDAgcC0zIHJvdW5kZWRcIj5cclxuICAgICAgICAgICAgICA8cD48c3Ryb25nPnt7ICdmaWxlTmFtZScgfCB0cmFuc2xhdGUgfX06PC9zdHJvbmc+IHt7IHVwbG9hZGVkRmlsZU5hbWUgfX08L3A+XHJcbiAgICAgICAgICAgICAgPHA+PHN0cm9uZz57eyAnc2VsZWN0ZWRNYXBwaW5ncycgfCB0cmFuc2xhdGUgfX06PC9zdHJvbmc+PC9wPlxyXG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtZGlzYyBsaXN0LWluc2lkZSBtbC00XCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGZpZWxkIG9mIG1hcHBpbmdGaWVsZHNcIj5cclxuICAgICAgICAgICAgICAgICAge3sgZmllbGQucHJvcHM/LmxhYmVsIH19OiB7eyBnZXRNb2RlbFZhbHVlKGZpZWxkLCBtb2RlbCkgfX1cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBGb290ZXIgQnV0dG9ucyAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gbXQtNiBwdC00IGJvcmRlci10XCI+XHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCInYmFjaycgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgIGljb249XCJwaSBwaS1hcnJvdy1sZWZ0XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicHJldlN0ZXAoKVwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjdGl2ZVN0ZXAgPT09IDAgfHwgbG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0XCJcclxuICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIHBCdXR0b25cclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICBbbGFiZWxdPVwiJ25leHQnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICBpY29uPVwicGkgcGktYXJyb3ctcmlnaHRcIlxyXG4gICAgICAgICAgICAgIGljb25Qb3M9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRTdGVwKClcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU3RlcCA8IDJcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuUHJvY2VlZCgpIHx8IGxvYWRpbmdcIlxyXG4gICAgICAgICAgICA+PC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJsb2FkaW5nID8gKCd1cGxvYWRpbmcnIHwgdHJhbnNsYXRlKSA6ICgnc2F2ZScgfCB0cmFuc2xhdGUpXCJcclxuICAgICAgICAgICAgICBpY29uPVwicGkgcGktY2hlY2tcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU3RlcCA9PT0gMlwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcHJpbWFyeVwiXHJcbiAgICAgICAgICAgID48L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIidjYW5jZWwnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcclxuICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZm9ybT5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgRm9ybWx5Rm9ybSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIEJ1dHRvbk1vZHVsZSxcclxuICAgIEZpbGVVcGxvYWRNb2R1bGUsXHJcbiAgICBTdGVwc01vZHVsZSxcclxuICAgIFRvYXN0TW9kdWxlXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEV4Y2VsSW1wb3J0Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBjb25maWchOiBFeGNlbEltcG9ydENvbmZpZztcclxuICBAT3V0cHV0KCkgaW1wb3J0Q29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgaW1wb3J0RXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPEVycm9yPigpO1xyXG5cclxuICBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgbW9kZWw6IGFueSA9IHt9O1xyXG4gIGxvYWRpbmcgPSBmYWxzZTtcclxuICB1cGxvYWRlZEZpbGVOYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICB1cGxvYWRFcnJvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgZXhjZWxIZWFkZXJzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlID0gaW5qZWN0KFJlc3RTZXJ2aWNlKTtcclxuICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlID0gaW5qZWN0KE1lc3NhZ2VTZXJ2aWNlKTtcclxuICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XHJcbiAgcHVibGljIGVudiA9IGluamVjdChFTlZJUk9OTUVOVCk7XHJcblxyXG4gIHN0ZXBzID0gW1xyXG4gICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlIC5pbnN0YW50KCd1cGxvYWRGaWxlJykgfSxcclxuICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZSAuaW5zdGFudCgnY29sdW1uTWFwcGluZycpIH0sXHJcbiAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UgLmluc3RhbnQoJ3JldmlldycpIH0sXHJcbiAgXTtcclxuXHJcbiAgYWN0aXZlU3RlcCA9IDA7XHJcbiAgbWFwcGluZ0ZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVmOiBEeW5hbWljRGlhbG9nUmVmLCBwdWJsaWMgZGlhbG9nQ29uZmlnOiBEeW5hbWljRGlhbG9nQ29uZmlnKSB7XHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHt9KTtcclxuXHJcbiAgICAvLyBJbml0aWFsaXplIGZyb20gZGlhbG9nIGNvbmZpZyBpZiBwcm92aWRlZFxyXG4gICAgaWYgKHRoaXMuZGlhbG9nQ29uZmlnPy5kYXRhPy5jb25maWcpIHtcclxuICAgICAgdGhpcy5jb25maWcgPSB0aGlzLmRpYWxvZ0NvbmZpZy5kYXRhLmNvbmZpZztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKCF0aGlzLmNvbmZpZykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4Y2VsSW1wb3J0Q29uZmlnIGlzIHJlcXVpcmVkJyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5tYXBwaW5nRmllbGRzID0gdGhpcy5jb25maWcubWFwcGluZ0ZpZWxkcy5tYXAoZmllbGQgPT4gKHtcclxuICAgICAgLi4uZmllbGQsXHJcbiAgICAgIHByb3BzOiB7XHJcbiAgICAgICAgLi4uZmllbGQucHJvcHMsXHJcbiAgICAgICAgb3B0aW9uczogW11cclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG5cclxuICAgIHRoaXMuc3RlcHMgPSB0aGlzLmNvbmZpZy5zdGVwcyB8fCB0aGlzLnN0ZXBzO1xyXG4gIH1cclxuXHJcbiAgbmV4dFN0ZXAoKSB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVTdGVwIDwgMikgdGhpcy5hY3RpdmVTdGVwKys7XHJcbiAgfVxyXG5cclxuICBwcmV2U3RlcCgpIHtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVN0ZXAgPiAwKSB0aGlzLmFjdGl2ZVN0ZXAtLTtcclxuICB9XHJcblxyXG4gIGNhblByb2NlZWQoKTogYm9vbGVhbiB7XHJcbiAgICBzd2l0Y2ggKHRoaXMuYWN0aXZlU3RlcCkge1xyXG4gICAgICBjYXNlIDA6XHJcbiAgICAgICAgcmV0dXJuICEhdGhpcy51cGxvYWRlZEZpbGVOYW1lO1xyXG4gICAgICBjYXNlIDE6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS52YWxpZDtcclxuICAgICAgY2FzZSAyOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0TW9kZWxWYWx1ZShmaWVsZDogRm9ybWx5RmllbGRDb25maWcsIG1vZGVsOiBhbnkpOiBhbnkge1xyXG4gIGlmICghZmllbGQua2V5KSByZXR1cm4gbnVsbDtcclxuXHJcbiAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQua2V5KSkge1xyXG4gICAgLy8gV2FsayB0aHJvdWdoIG5lc3RlZCBrZXlzIGxpa2UgWydhZGRyZXNzJywgJ3N0cmVldCddXHJcbiAgICByZXR1cm4gZmllbGQua2V5LnJlZHVjZSgoYWNjLCBrKSA9PiAoYWNjID8gYWNjW2tdIDogdW5kZWZpbmVkKSwgbW9kZWwpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIG1vZGVsW2ZpZWxkLmtleV07XHJcbn1cclxuXHJcbiAgLy8gQWRkIHRoaXMgcHJvcGVydHkgdG8gc3RvcmUgdGhlIGZpbGUgY29udGVudFxyXG5wcml2YXRlIGZpbGVDb250ZW50OiBzdHJpbmcgfCBBcnJheUJ1ZmZlciB8IG51bGwgPSBudWxsO1xyXG5cclxuLy8gVXBkYXRlIHRoZSBvbkZpbGVVcGxvYWQgbWV0aG9kIHRvIHN0b3JlIHRoZSBmaWxlIGNvbnRlbnRcclxub25GaWxlVXBsb2FkKGV2ZW50OiBhbnkpIHtcclxuICB0aGlzLnVwbG9hZEVycm9yID0gbnVsbDtcclxuICBjb25zdCBmaWxlOiBGaWxlID0gZXZlbnQuZmlsZXNbMF07XHJcblxyXG4gIGlmICghZmlsZSkge1xyXG4gICAgdGhpcy51cGxvYWRFcnJvciA9ICdub0ZpbGVTZWxlY3RlZCc7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICAvLyBWYWxpZGF0ZSBmaWxlIHR5cGVcclxuICBjb25zdCB2YWxpZEV4dGVuc2lvbnMgPSBbJy54bHN4JywgJy54bHMnLCAnLmNzdiddO1xyXG4gIGNvbnN0IGZpbGVFeHRlbnNpb24gPSBmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5zdWJzdHJpbmcoZmlsZS5uYW1lLmxhc3RJbmRleE9mKCcuJykpO1xyXG5cclxuICBpZiAoIXZhbGlkRXh0ZW5zaW9ucy5pbmNsdWRlcyhmaWxlRXh0ZW5zaW9uKSkge1xyXG4gICAgdGhpcy51cGxvYWRFcnJvciA9ICdpbnZhbGlkRmlsZVR5cGUnO1xyXG4gICAgdGhpcy5jbGVhckZpbGVVcGxvYWQoZXZlbnQpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgdGhpcy51cGxvYWRlZEZpbGVOYW1lID0gZmlsZS5uYW1lO1xyXG5cclxuICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG5cclxuICByZWFkZXIub25sb2FkID0gKGU6IFByb2dyZXNzRXZlbnQ8RmlsZVJlYWRlcj4pID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gZS50YXJnZXQ/LnJlc3VsdCBhcyBBcnJheUJ1ZmZlcjtcclxuICAgICAgdGhpcy5maWxlQ29udGVudCA9IGFycmF5QnVmZmVyOyAvLyBTdG9yZSB0aGUgZmlsZSBjb250ZW50XHJcbiAgICAgIGNvbnN0IGRhdGEgPSBuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcik7XHJcblxyXG4gICAgICBjb25zdCB3b3JrYm9vazogV29ya0Jvb2sgPSByZWFkKGRhdGEsIHsgdHlwZTogJ2FycmF5JyB9KTtcclxuXHJcbiAgICAgIGlmICh3b3JrYm9vay5TaGVldE5hbWVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMudXBsb2FkRXJyb3IgPSAnbm9TaGVldHNGb3VuZCc7XHJcbiAgICAgICAgdGhpcy5jbGVhckZpbGVVcGxvYWQoZXZlbnQpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3Qgc2hlZXROYW1lID0gd29ya2Jvb2suU2hlZXROYW1lc1swXTtcclxuICAgICAgY29uc3Qgd29ya3NoZWV0ID0gd29ya2Jvb2suU2hlZXRzW3NoZWV0TmFtZV07XHJcblxyXG4gICAgICBjb25zdCByb3dzOiBhbnlbXVtdID0gdXRpbHMuc2hlZXRfdG9fanNvbih3b3Jrc2hlZXQsIHsgaGVhZGVyOiAxIH0pO1xyXG5cclxuICAgICAgaWYgKHJvd3MubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy51cGxvYWRFcnJvciA9ICdub0RhdGFGb3VuZCc7XHJcbiAgICAgICAgdGhpcy5jbGVhckZpbGVVcGxvYWQoZXZlbnQpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5leGNlbEhlYWRlcnMgPSByb3dzWzBdIGFzIHN0cmluZ1tdO1xyXG5cclxuICAgICAgLy8gVXBkYXRlIG1hcHBpbmcgZmllbGRzIHdpdGggaGVhZGVyIG9wdGlvbnNcclxuICAgICAgdGhpcy5tYXBwaW5nRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xyXG4gICAgICAgIGlmIChmaWVsZC5wcm9wcykge1xyXG4gICAgICAgICAgZmllbGQucHJvcHMub3B0aW9ucyA9IHRoaXMuZXhjZWxIZWFkZXJzLm1hcChoID0+ICh7XHJcbiAgICAgICAgICAgIHZhbHVlOiBoLFxyXG4gICAgICAgICAgICBsYWJlbDogaCxcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gSW5pdGlhbGl6ZSBmb3JtIHdpdGggZGVmYXVsdCB2YWx1ZXMgaWYgbm90IHNldFxyXG4gICAgICB0aGlzLmluaXRpYWxpemVGb3JtKCk7XHJcblxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcHJvY2Vzc2luZyBFeGNlbCBmaWxlOicsIGVycm9yKTtcclxuICAgICAgdGhpcy51cGxvYWRFcnJvciA9ICdmaWxlUHJvY2Vzc2luZ0Vycm9yJztcclxuICAgICAgdGhpcy5jbGVhckZpbGVVcGxvYWQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHJlYWRlci5vbmVycm9yID0gKGVycm9yKSA9PiB7XHJcbiAgICBjb25zb2xlLmVycm9yKCdGaWxlIHJlYWRpbmcgZXJyb3I6JywgZXJyb3IpO1xyXG4gICAgdGhpcy51cGxvYWRFcnJvciA9ICdmaWxlUmVhZEVycm9yJztcclxuICAgIHRoaXMuY2xlYXJGaWxlVXBsb2FkKGV2ZW50KTtcclxuICB9O1xyXG5cclxuICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7XHJcbn1cclxuXHJcbi8vIEFkZCB0aGlzIG1ldGhvZCB0byBjb252ZXJ0IEFycmF5QnVmZmVyIHRvIGJhc2U2NFxyXG5wcml2YXRlIGFycmF5QnVmZmVyVG9CYXNlNjQoYnVmZmVyOiBBcnJheUJ1ZmZlcik6IHN0cmluZyB7XHJcbiAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShidWZmZXIpO1xyXG4gIGxldCBiaW5hcnkgPSAnJztcclxuICBjb25zdCBsZW4gPSBieXRlcy5ieXRlTGVuZ3RoO1xyXG5cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICBiaW5hcnkgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tpXSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gd2luZG93LmJ0b2EoYmluYXJ5KTtcclxufVxyXG5cclxuLy8gQWRkIHRoaXMgbWV0aG9kIHRvIGdldCBmaWxlIGV4dGVuc2lvblxyXG5wcml2YXRlIGdldEZpbGVFeHRlbnNpb24oZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgY29uc3QgaW5kZXggPSBmaWxlbmFtZS5sYXN0SW5kZXhPZignLicpO1xyXG4gIHJldHVybiBpbmRleCAhPT0gLTEgPyBmaWxlbmFtZS5zbGljZShpbmRleCkgOiAnJztcclxufVxyXG5cclxuLy8gVXBkYXRlZCBvblN1Ym1pdCBtZXRob2Rcclxub25TdWJtaXQoKSB7XHJcbiAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkIHx8ICF0aGlzLnVwbG9hZGVkRmlsZU5hbWUgfHwgIXRoaXMuZmlsZUNvbnRlbnQpIHtcclxuICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmZpbGVDb250ZW50KSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICBzdW1tYXJ5OiAnRXJyb3InLFxyXG4gICAgICAgIGRldGFpbDogJ0ZpbGUgY29udGVudCBpcyBtaXNzaW5nLiBQbGVhc2UgdXBsb2FkIHRoZSBmaWxlIGFnYWluLidcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgLy8gQ29udmVydCBmaWxlIGNvbnRlbnQgdG8gYmFzZTY0XHJcbiAgbGV0IGZpbGVCYXNlNjQ6IHN0cmluZztcclxuXHJcbiAgdHJ5IHtcclxuICAgIGlmICh0aGlzLmZpbGVDb250ZW50IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcclxuICAgICAgZmlsZUJhc2U2NCA9IHRoaXMuYXJyYXlCdWZmZXJUb0Jhc2U2NCh0aGlzLmZpbGVDb250ZW50KTtcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuZmlsZUNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIC8vIElmIGl0J3MgYWxyZWFkeSBhIHN0cmluZyAoYmFzZTY0KSwgdXNlIGl0IGRpcmVjdGx5XHJcbiAgICAgIGZpbGVCYXNlNjQgPSB0aGlzLmZpbGVDb250ZW50O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBmaWxlIGNvbnRlbnQgdHlwZScpO1xyXG4gICAgfVxyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNvbnZlcnRpbmcgZmlsZSB0byBiYXNlNjQ6JywgZXJyb3IpO1xyXG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgc3VtbWFyeTogJ0Vycm9yJyxcclxuICAgICAgZGV0YWlsOiAnRmFpbGVkIHRvIHByb2Nlc3MgZmlsZSBjb250ZW50J1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBjb25zdCByZXF1ZXN0Qm9keSA9IHtcclxuICAgIGZpbGVOYW1lOiB0aGlzLnVwbG9hZGVkRmlsZU5hbWUsXHJcbiAgICBmaWxlRXh0ZW5zaW9uOiB0aGlzLmdldEZpbGVFeHRlbnNpb24odGhpcy51cGxvYWRlZEZpbGVOYW1lKSxcclxuICAgIGZpbGVDb250ZW50OiBmaWxlQmFzZTY0LFxyXG4gICAgbWFwcGluZ3M6IHRoaXMuZm9ybS52YWx1ZSxcclxuICAgIGhlYWRlcnM6IHRoaXMuZXhjZWxIZWFkZXJzLFxyXG4gICAgZmlsZVNpemU6IHRoaXMuZmlsZUNvbnRlbnQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciA/IHRoaXMuZmlsZUNvbnRlbnQuYnl0ZUxlbmd0aCA6IDBcclxuICB9O1xyXG5cclxuICB0aGlzLnJlc3RTZXJ2aWNlXHJcbiAgICAucmVxdWVzdDxhbnksIGFueT4oXHJcbiAgICAgIHtcclxuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgICB1cmw6IHRoaXMuY29uZmlnLmFwaVVybCxcclxuICAgICAgICBib2R5OiByZXF1ZXN0Qm9keSxcclxuICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7IGFwaU5hbWU6IHRoaXMuY29uZmlnLmFwaU5hbWUgfVxyXG4gICAgKVxyXG4gICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgIHNldmVyaXR5OiAnc3VjY2VzcycsXHJcbiAgICAgICAgICBzdW1tYXJ5OiAnU3VjY2VzcycsXHJcbiAgICAgICAgICBkZXRhaWw6ICdGaWxlIGltcG9ydGVkIHN1Y2Nlc3NmdWxseSdcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmltcG9ydENvbXBsZXRlLmVtaXQocmVzcG9uc2UpO1xyXG4gICAgICAgIHRoaXMucmVmLmNsb3NlKHJlc3BvbnNlKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdJbXBvcnQgZXJyb3I6JywgZXJyKTtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdFcnJvcicsXHJcbiAgICAgICAgICBkZXRhaWw6ICdGYWlsZWQgdG8gaW1wb3J0IGZpbGUnXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5pbXBvcnRFcnJvci5lbWl0KGVycik7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxufVxyXG5cclxuLy8gVXBkYXRlIGNsZWFyRmlsZVVwbG9hZCB0byBhbHNvIGNsZWFyIGZpbGUgY29udGVudFxyXG5wcml2YXRlIGNsZWFyRmlsZVVwbG9hZChldmVudDogYW55KSB7XHJcbiAgaWYgKGV2ZW50Lm9wdGlvbnMgJiYgdHlwZW9mIGV2ZW50Lm9wdGlvbnMuY2xlYXIgPT09ICdmdW5jdGlvbicpIHtcclxuICAgIGV2ZW50Lm9wdGlvbnMuY2xlYXIoKTtcclxuICB9XHJcbiAgdGhpcy51cGxvYWRlZEZpbGVOYW1lID0gbnVsbDtcclxuICB0aGlzLmZpbGVDb250ZW50ID0gbnVsbDtcclxufVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVGb3JtKCkge1xyXG4gICAgY29uc3QgZm9ybUNvbmZpZzogYW55ID0ge307XHJcblxyXG4gICAgdGhpcy5tYXBwaW5nRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xyXG4gICAgICBpZiAoZmllbGQua2V5KSB7XHJcbiAgICAgICAgLy8gU2V0IGRlZmF1bHQgdmFsdWUgdG8gZmlyc3QgaGVhZGVyIGlmIGF2YWlsYWJsZVxyXG4gICAgICAgIGZvcm1Db25maWdbZmllbGQua2V5IGFzIHN0cmluZ10gPSBbdGhpcy5leGNlbEhlYWRlcnNbMF0gfHwgJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdO1xyXG5cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cChmb3JtQ29uZmlnKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuICBvbkNhbmNlbCgpIHtcclxuICAgIGlmICghdGhpcy5sb2FkaW5nKSB7XHJcbiAgICAgIHRoaXMucmVmLmNsb3NlKGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZXhjZWwtaW1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2V4Y2VsLWltcG9ydC9zcmMvZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZXhjZWwtaW1wb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAGO,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;;ACWN,MAAM,oBAAoB,CAAC;AAClC,IAAI,GAAG;AACP,IAAI,YAAY;AAChB,IAAI,MAAM;AACV,IAAI,cAAc,GAAG,IAAI,YAAY,EAAE;AACvC,IAAI,WAAW,GAAG,IAAI,YAAY,EAAE;AACpC,IAAI,IAAI;AACR,IAAI,KAAK,GAAG,EAAE;AACd,IAAI,OAAO,GAAG,KAAK;AACnB,IAAI,gBAAgB,GAAG,IAAI;AAC3B,IAAI,WAAW,GAAG,IAAI;AACtB,IAAI,YAAY,GAAG,EAAE;AACrB,IAAI,QAAQ,GAAG,IAAI,OAAO,EAAE;AAC5B,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACrC,IAAI,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAC3C,IAAI,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC/C,IAAI,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;AAC5B,IAAI,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC;AAC7B,IAAI,KAAK,GAAG;AACZ,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AAC9D,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;AACjE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC1D,KAAK;AACL,IAAI,UAAU,GAAG,CAAC;AAClB,IAAI,aAAa,GAAG,EAAE;AACtB,IAAI,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE;AACnC,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;AACtB,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY;AACxC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AACrC;AACA,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE;AAC7C,YAAY,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM;AACvD;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC1B,YAAY,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC;AAC5D;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,KAAK;AACrE,YAAY,GAAG,KAAK;AACpB,YAAY,KAAK,EAAE;AACnB,gBAAgB,GAAG,KAAK,CAAC,KAAK;AAC9B,gBAAgB,OAAO,EAAE;AACzB;AACA,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK;AACpD;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC;AAC/B,YAAY,IAAI,CAAC,UAAU,EAAE;AAC7B;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC;AAC/B,YAAY,IAAI,CAAC,UAAU,EAAE;AAC7B;AACA,IAAI,UAAU,GAAG;AACjB,QAAQ,QAAQ,IAAI,CAAC,UAAU;AAC/B,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB;AAC9C,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK;AACtC,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,gBAAgB,OAAO,KAAK;AAC5B;AACA;AACA,IAAI,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE;AAChC,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG;AACtB,YAAY,OAAO,IAAI;AACvB,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AACtC;AACA,YAAY,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,KAAK,CAAC;AAClF;AACA,QAAQ,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AAC/B;AACA;AACA,IAAI,WAAW,GAAG,IAAI;AACtB;AACA,IAAI,YAAY,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,IAAI,CAAC,WAAW,GAAG,gBAAgB;AAC/C,YAAY;AACZ;AACA;AACA,QAAQ,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;AACzD,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC3F,QAAQ,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AACtD,YAAY,IAAI,CAAC,WAAW,GAAG,iBAAiB;AAChD,YAAY,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACvC,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI;AACzC,QAAQ,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AACvC,QAAQ,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK;AAC/B,YAAY,IAAI;AAChB,gBAAgB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM;AACpD,gBAAgB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/C,gBAAgB,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC;AACxD,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC9D,gBAAgB,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACtD,oBAAoB,IAAI,CAAC,WAAW,GAAG,eAAe;AACtD,oBAAoB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC/C,oBAAoB;AACpB;AACA,gBAAgB,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AACxD,gBAAgB,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;AAC5D,gBAAgB,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAC1E,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACvC,oBAAoB,IAAI,CAAC,WAAW,GAAG,aAAa;AACpD,oBAAoB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC/C,oBAAoB;AACpB;AACA,gBAAgB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC;AAC3C;AACA,gBAAgB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI;AACpD,oBAAoB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,wBAAwB,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK;AAC1E,4BAA4B,KAAK,EAAE,CAAC;AACpC,4BAA4B,KAAK,EAAE,CAAC;AACpC,yBAAyB,CAAC,CAAC;AAC3B;AACA,iBAAiB,CAAC;AAClB;AACA,gBAAgB,IAAI,CAAC,cAAc,EAAE;AACrC;AACA,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC;AACpE,gBAAgB,IAAI,CAAC,WAAW,GAAG,qBAAqB;AACxD,gBAAgB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC3C;AACA,SAAS;AACT,QAAQ,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK;AACpC,YAAY,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC;AACvD,YAAY,IAAI,CAAC,WAAW,GAAG,eAAe;AAC9C,YAAY,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACvC,SAAS;AACT,QAAQ,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACtC;AACA;AACA,IAAI,mBAAmB,CAAC,MAAM,EAAE;AAChC,QAAQ,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC;AAC5C,QAAQ,IAAI,MAAM,GAAG,EAAE;AACvB,QAAQ,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU;AACpC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACtC,YAAY,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD;AACA,QAAQ,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAClC;AACA;AACA,IAAI,gBAAgB,CAAC,QAAQ,EAAE;AAC/B,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC;AAC/C,QAAQ,OAAO,KAAK,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;AACxD;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC9E,YAAY,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACxC,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnC,gBAAgB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACxC,oBAAoB,QAAQ,EAAE,OAAO;AACrC,oBAAoB,OAAO,EAAE,OAAO;AACpC,oBAAoB,MAAM,EAAE;AAC5B,iBAAiB,CAAC;AAClB;AACA,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI;AAC3B;AACA,QAAQ,IAAI,UAAU;AACtB,QAAQ,IAAI;AACZ,YAAY,IAAI,IAAI,CAAC,WAAW,YAAY,WAAW,EAAE;AACzD,gBAAgB,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC;AACvE;AACA,iBAAiB,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;AAC3D;AACA,gBAAgB,UAAU,GAAG,IAAI,CAAC,WAAW;AAC7C;AACA,iBAAiB;AACjB,gBAAgB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC;AAChE;AACA;AACA,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,IAAI,CAAC,OAAO,GAAG,KAAK;AAChC,YAAY,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC;AACpE,YAAY,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACpC,gBAAgB,QAAQ,EAAE,OAAO;AACjC,gBAAgB,OAAO,EAAE,OAAO;AAChC,gBAAgB,MAAM,EAAE;AACxB,aAAa,CAAC;AACd,YAAY;AACZ;AACA,QAAQ,MAAM,WAAW,GAAG;AAC5B,YAAY,QAAQ,EAAE,IAAI,CAAC,gBAAgB;AAC3C,YAAY,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACvE,YAAY,WAAW,EAAE,UAAU;AACnC,YAAY,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;AACrC,YAAY,OAAO,EAAE,IAAI,CAAC,YAAY;AACtC,YAAY,QAAQ,EAAE,IAAI,CAAC,WAAW,YAAY,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG;AAC9F,SAAS;AACT,QAAQ,IAAI,CAAC;AACb,aAAa,OAAO,CAAC;AACrB,YAAY,MAAM,EAAE,MAAM;AAC1B,YAAY,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;AACnC,YAAY,IAAI,EAAE,WAAW;AAC7B,YAAY,OAAO,EAAE;AACrB,gBAAgB,cAAc,EAAE;AAChC;AACA,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AAC3C,aAAa,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC1C,aAAa,SAAS,CAAC;AACvB,YAAY,IAAI,EAAE,CAAC,QAAQ,KAAK;AAChC,gBAAgB,IAAI,CAAC,OAAO,GAAG,KAAK;AACpC,gBAAgB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACxC,oBAAoB,QAAQ,EAAE,SAAS;AACvC,oBAAoB,OAAO,EAAE,SAAS;AACtC,oBAAoB,MAAM,EAAE;AAC5B,iBAAiB,CAAC;AAClB,gBAAgB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;AAClD,gBAAgB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;AACxC,aAAa;AACb,YAAY,KAAK,EAAE,CAAC,GAAG,KAAK;AAC5B,gBAAgB,IAAI,CAAC,OAAO,GAAG,KAAK;AACpC,gBAAgB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC;AACnD,gBAAgB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACxC,oBAAoB,QAAQ,EAAE,OAAO;AACrC,oBAAoB,OAAO,EAAE,OAAO;AACpC,oBAAoB,MAAM,EAAE;AAC5B,iBAAiB,CAAC;AAClB,gBAAgB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1C,aAAa;AACb,SAAS,CAAC;AACV;AACA;AACA,IAAI,eAAe,CAAC,KAAK,EAAE;AAC3B,QAAQ,IAAI,KAAK,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE;AACxE,YAAY,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE;AACjC;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI;AACpC,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B;AACA,IAAI,cAAc,GAAG;AACrB,QAAQ,MAAM,UAAU,GAAG,EAAE;AAC7B,QAAQ,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI;AAC5C,YAAY,IAAI,KAAK,CAAC,GAAG,EAAE;AAC3B;AACA,gBAAgB,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACzF;AACA,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;AAC7C;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC3B,YAAY,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;AACjC;AACA;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC5B,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAChC;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,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,gBAAgB,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,mBAAmB,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;AAC/O,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,kBAAkB,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AAClU;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,eAAe,CAAC,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,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,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,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,WAAW,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,eAAe,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,gBAAgB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,4BAA4B,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,+BAA+B,EAAE,8BAA8B,EAAE,+BAA+B,EAAE,8BAA8B,EAAE,+BAA+B,EAAE,gCAAgC,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,sBAAsB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;AAC3+F;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;AACnB,oBAAoB,QAAQ,EAAE,kBAAkB;AAChD,oBAAoB,UAAU,EAAE,IAAI;AACpC,oBAAoB,SAAS,EAAE,CAAC,cAAc,CAAC;AAC/C,oBAAoB,QAAQ,EAAE,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC;AACH,oBAAoB,OAAO,EAAE;AAC7B,wBAAwB,YAAY;AACpC,wBAAwB,mBAAmB;AAC3C,wBAAwB,WAAW;AACnC,wBAAwB,UAAU;AAClC,wBAAwB,eAAe;AACvC,wBAAwB,YAAY;AACpC,wBAAwB,gBAAgB;AACxC,wBAAwB,WAAW;AACnC,wBAAwB;AACxB,qBAAqB;AACrB,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,mBAAmB,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC;AAChI,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;AACjC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,EAAE,CAAC;;ACpiBnB;AACA;AACA;;;;"}
1
+ {"version":3,"file":"elite.framework-ng.ui.core-excel-import.mjs","sources":["../tmp-esm2022/excel-import/lib/excel-import-module.js","../tmp-esm2022/excel-import/lib/excel-import.js","../tmp-esm2022/excel-import/elite.framework-ng.ui.core-excel-import.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class ExcelImportModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: ExcelImportModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: ExcelImportModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: ExcelImportModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: ExcelImportModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwtaW1wb3J0LW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9leGNlbC1pbXBvcnQvc3JjL2xpYi9leGNlbC1pbXBvcnQtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8saUJBQWlCO3VHQUFqQixpQkFBaUI7d0dBQWpCLGlCQUFpQixZQUZsQixZQUFZO3dHQUVYLGlCQUFpQixZQUZsQixZQUFZOzsyRkFFWCxpQkFBaUI7a0JBSDdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgRXhjZWxJbXBvcnRNb2R1bGUge31cbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { Component, inject, Input, Output, EventEmitter } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule, FormBuilder, Validators } from '@angular/forms';\nimport { EnvironmentService, RestService } from '@elite.framework/ng.core/services';\nimport { FormlyForm } from '@ngx-formly/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { ButtonModule } from 'primeng/button';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\nimport { Subject, takeUntil } from 'rxjs';\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { StepsModule } from 'primeng/steps';\nimport { MessageService } from 'primeng/api';\nimport { ToastModule } from 'primeng/toast';\nimport { read, utils } from 'xlsx';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"primeng/dynamicdialog\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@angular/forms\";\nimport * as i4 from \"primeng/button\";\nimport * as i5 from \"primeng/fileupload\";\nimport * as i6 from \"primeng/steps\";\nimport * as i7 from \"primeng/toast\";\nimport * as i8 from \"@ngx-translate/core\";\nexport class ExcelImportComponent {\n ref;\n dialogConfig;\n config;\n importComplete = new EventEmitter();\n importError = new EventEmitter();\n form;\n model = {};\n loading = false;\n uploadedFileName = null;\n uploadError = null;\n excelHeaders = [];\n destroy$ = new Subject();\n restService = inject(RestService);\n messageService = inject(MessageService);\n translateService = inject(TranslateService);\n fb = inject(FormBuilder);\n env = inject(EnvironmentService);\n steps = [\n { label: this.translateService.instant('uploadFile') },\n { label: this.translateService.instant('columnMapping') },\n { label: this.translateService.instant('review') },\n ];\n activeStep = 0;\n mappingFields = [];\n constructor(ref, dialogConfig) {\n this.ref = ref;\n this.dialogConfig = dialogConfig;\n this.form = this.fb.group({});\n // Initialize from dialog config if provided\n if (this.dialogConfig?.data?.config) {\n this.config = this.dialogConfig.data.config;\n }\n }\n ngOnInit() {\n if (!this.config) {\n throw new Error('ExcelImportConfig is required');\n }\n this.mappingFields = this.config.mappingFields.map(field => ({\n ...field,\n props: {\n ...field.props,\n options: []\n }\n }));\n this.steps = this.config.steps || this.steps;\n }\n nextStep() {\n if (this.activeStep < 2)\n this.activeStep++;\n }\n prevStep() {\n if (this.activeStep > 0)\n this.activeStep--;\n }\n canProceed() {\n switch (this.activeStep) {\n case 0:\n return !!this.uploadedFileName;\n case 1:\n return this.form.valid;\n case 2:\n return true;\n default:\n return false;\n }\n }\n getModelValue(field, model) {\n if (!field.key)\n return null;\n if (Array.isArray(field.key)) {\n // Walk through nested keys like ['address', 'street']\n return field.key.reduce((acc, k) => (acc ? acc[k] : undefined), model);\n }\n return model[field.key];\n }\n // Add this property to store the file content\n fileContent = null;\n // Update the onFileUpload method to store the file content\n onFileUpload(event) {\n this.uploadError = null;\n const file = event.files[0];\n if (!file) {\n this.uploadError = 'noFileSelected';\n return;\n }\n // Validate file type\n const validExtensions = ['.xlsx', '.xls', '.csv'];\n const fileExtension = file.name.toLowerCase().substring(file.name.lastIndexOf('.'));\n if (!validExtensions.includes(fileExtension)) {\n this.uploadError = 'invalidFileType';\n this.clearFileUpload(event);\n return;\n }\n this.uploadedFileName = file.name;\n const reader = new FileReader();\n reader.onload = (e) => {\n try {\n const arrayBuffer = e.target?.result;\n this.fileContent = arrayBuffer; // Store the file content\n const data = new Uint8Array(arrayBuffer);\n const workbook = read(data, { type: 'array' });\n if (workbook.SheetNames.length === 0) {\n this.uploadError = 'noSheetsFound';\n this.clearFileUpload(event);\n return;\n }\n const sheetName = workbook.SheetNames[0];\n const worksheet = workbook.Sheets[sheetName];\n const rows = utils.sheet_to_json(worksheet, { header: 1 });\n if (rows.length === 0) {\n this.uploadError = 'noDataFound';\n this.clearFileUpload(event);\n return;\n }\n this.excelHeaders = rows[0];\n // Update mapping fields with header options\n this.mappingFields.forEach(field => {\n if (field.props) {\n field.props.options = this.excelHeaders.map(h => ({\n value: h,\n label: h,\n }));\n }\n });\n // Initialize form with default values if not set\n this.initializeForm();\n }\n catch (error) {\n console.error('Error processing Excel file:', error);\n this.uploadError = 'fileProcessingError';\n this.clearFileUpload(event);\n }\n };\n reader.onerror = (error) => {\n console.error('File reading error:', error);\n this.uploadError = 'fileReadError';\n this.clearFileUpload(event);\n };\n reader.readAsArrayBuffer(file);\n }\n // Add this method to convert ArrayBuffer to base64\n arrayBufferToBase64(buffer) {\n const bytes = new Uint8Array(buffer);\n let binary = '';\n const len = bytes.byteLength;\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\n }\n // Add this method to get file extension\n getFileExtension(filename) {\n const index = filename.lastIndexOf('.');\n return index !== -1 ? filename.slice(index) : '';\n }\n // Updated onSubmit method\n onSubmit() {\n if (this.form.invalid || !this.uploadedFileName || !this.fileContent) {\n this.form.markAllAsTouched();\n if (!this.fileContent) {\n this.messageService.add({\n severity: 'error',\n summary: 'Error',\n detail: 'File content is missing. Please upload the file again.'\n });\n }\n return;\n }\n this.loading = true;\n // Convert file content to base64\n let fileBase64;\n try {\n if (this.fileContent instanceof ArrayBuffer) {\n fileBase64 = this.arrayBufferToBase64(this.fileContent);\n }\n else if (typeof this.fileContent === 'string') {\n // If it's already a string (base64), use it directly\n fileBase64 = this.fileContent;\n }\n else {\n throw new Error('Unsupported file content type');\n }\n }\n catch (error) {\n this.loading = false;\n console.error('Error converting file to base64:', error);\n this.messageService.add({\n severity: 'error',\n summary: 'Error',\n detail: 'Failed to process file content'\n });\n return;\n }\n const requestBody = {\n fileName: this.uploadedFileName,\n fileExtension: this.getFileExtension(this.uploadedFileName),\n fileContent: fileBase64,\n mappings: this.form.value,\n headers: this.excelHeaders,\n fileSize: this.fileContent instanceof ArrayBuffer ? this.fileContent.byteLength : 0\n };\n this.restService\n .request({\n method: 'POST',\n url: this.config.apiUrl,\n body: requestBody,\n headers: {\n 'Content-Type': 'application/json'\n }\n }, { apiName: this.config.apiName })\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: (response) => {\n this.loading = false;\n this.messageService.add({\n severity: 'success',\n summary: 'Success',\n detail: 'File imported successfully'\n });\n this.importComplete.emit(response);\n this.ref.close(response);\n },\n error: (err) => {\n this.loading = false;\n console.error('Import error:', err);\n this.messageService.add({\n severity: 'error',\n summary: 'Error',\n detail: 'Failed to import file'\n });\n this.importError.emit(err);\n },\n });\n }\n // Update clearFileUpload to also clear file content\n clearFileUpload(event) {\n if (event.options && typeof event.options.clear === 'function') {\n event.options.clear();\n }\n this.uploadedFileName = null;\n this.fileContent = null;\n }\n initializeForm() {\n const formConfig = {};\n this.mappingFields.forEach(field => {\n if (field.key) {\n // Set default value to first header if available\n formConfig[field.key] = [this.excelHeaders[0] || '', Validators.required];\n }\n });\n this.form = this.fb.group(formConfig);\n }\n onCancel() {\n if (!this.loading) {\n this.ref.close(false);\n }\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: ExcelImportComponent, deps: [{ token: i1.DynamicDialogRef }, { token: i1.DynamicDialogConfig }], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.8\", type: ExcelImportComponent, isStandalone: true, selector: \"app-excel-import\", inputs: { config: \"config\" }, outputs: { importComplete: \"importComplete\", importError: \"importError\" }, providers: [MessageService], ngImport: i0, template: `\r\n <p-toast></p-toast>\r\n <div class=\"p-4 space-y-4\">\r\n <p-steps [model]=\"steps\" [(activeIndex)]=\"activeStep\" class=\"mb-4\"></p-steps>\r\n\r\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\r\n <ng-container [ngSwitch]=\"activeStep\">\r\n <!-- Step 1: Upload File -->\r\n <div *ngSwitchCase=\"0\" class=\"p-4\">\r\n <!-- Download template link -->\r\n\r\n\r\n <!-- File upload -->\r\n <p-fileUpload\r\n name=\"excelFile\"\r\n mode=\"basic\"\r\n chooseIcon=\"pi pi-upload\"\r\n chooseLabel=\"{{ 'chooseFile' | translate }}\"\r\n (onSelect)=\"onFileUpload($event)\"\r\n [accept]=\"config.acceptedFileTypes || '.xls,.xlsx,.csv'\"\r\n [maxFileSize]=\"config.maxFileSize || 10000000\"\r\n [showUploadButton]=\"false\"\r\n [showCancelButton]=\"false\"\r\n >\r\n </p-fileUpload>\r\n\r\n <!-- Upload status -->\r\n <p *ngIf=\"uploadedFileName\" class=\"mt-2 text-green-600\">\r\n {{ uploadedFileName }}\r\n </p>\r\n <p *ngIf=\"uploadError\" class=\"mt-2 text-red-600\">\r\n {{ uploadError }}\r\n </p>\r\n </div>\r\n <p>\r\n <a\r\n [href]=\"env.getEnvironment().apis.default.url+config.templateUrl\"\r\n download\r\n class=\"text-blue-600 hover:underline flex items-center gap-1\"\r\n >\r\n <i class=\"pi pi-download\"></i>\r\n {{ 'downloadTemplate' | translate }}\r\n </a>\r\n </p>\r\n\r\n\r\n <!-- Step 2: Column Mapping -->\r\n <div *ngSwitchCase=\"1\" class=\"p-4\">\r\n <formly-form [form]=\"form\" [fields]=\"mappingFields\" [model]=\"model\"></formly-form>\r\n </div>\r\n\r\n <!-- Step 3: Review -->\r\n <div *ngSwitchCase=\"2\" class=\"p-4\">\r\n <p class=\"text-gray-700 mb-4\">\r\n {{ 'importReviewMessage' | translate }}\r\n </p>\r\n <div class=\"bg-gray-100 p-3 rounded\">\r\n <p><strong>{{ 'fileName' | translate }}:</strong> {{ uploadedFileName }}</p>\r\n <p><strong>{{ 'selectedMappings' | translate }}:</strong></p>\r\n <ul class=\"list-disc list-inside ml-4\">\r\n <li *ngFor=\"let field of mappingFields\">\r\n {{ field.props?.label }}: {{ getModelValue(field, model) }}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Footer Buttons -->\r\n <div class=\"flex justify-between mt-6 pt-4 border-t\">\r\n <div>\r\n <button\r\n pButton\r\n type=\"button\"\r\n [label]=\"'back' | translate\"\r\n icon=\"pi pi-arrow-left\"\r\n (click)=\"prevStep()\"\r\n [disabled]=\"activeStep === 0 || loading\"\r\n class=\"p-button-text\"\r\n ></button>\r\n </div>\r\n\r\n <div class=\"flex gap-2\">\r\n <button\r\n pButton\r\n type=\"button\"\r\n [label]=\"'next' | translate\"\r\n icon=\"pi pi-arrow-right\"\r\n iconPos=\"right\"\r\n (click)=\"nextStep()\"\r\n *ngIf=\"activeStep < 2\"\r\n [disabled]=\"!canProceed() || loading\"\r\n ></button>\r\n\r\n <button\r\n pButton\r\n type=\"submit\"\r\n [label]=\"loading ? ('uploading' | translate) : ('save' | translate)\"\r\n icon=\"pi pi-check\"\r\n *ngIf=\"activeStep === 2\"\r\n [disabled]=\"loading\"\r\n [loading]=\"loading\"\r\n class=\"p-button-primary\"\r\n ></button>\r\n\r\n <button\r\n pButton\r\n type=\"button\"\r\n [label]=\"'cancel' | translate\"\r\n severity=\"secondary\"\r\n (click)=\"onCancel()\"\r\n [disabled]=\"loading\"\r\n ></button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { kind: \"directive\", type: i2.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i3.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { kind: \"directive\", type: i3.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"directive\", type: i3.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"component\", type: FormlyForm, selector: \"formly-form\", inputs: [\"form\", \"model\", \"fields\", \"options\"], outputs: [\"modelChange\"] }, { kind: \"ngmodule\", type: TranslateModule }, { 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: FileUploadModule }, { kind: \"component\", type: i5.FileUpload, selector: \"p-fileupload, p-fileUpload\", inputs: [\"name\", \"url\", \"method\", \"multiple\", \"accept\", \"disabled\", \"auto\", \"withCredentials\", \"maxFileSize\", \"invalidFileSizeMessageSummary\", \"invalidFileSizeMessageDetail\", \"invalidFileTypeMessageSummary\", \"invalidFileTypeMessageDetail\", \"invalidFileLimitMessageDetail\", \"invalidFileLimitMessageSummary\", \"style\", \"styleClass\", \"previewWidth\", \"chooseLabel\", \"uploadLabel\", \"cancelLabel\", \"chooseIcon\", \"uploadIcon\", \"cancelIcon\", \"showUploadButton\", \"showCancelButton\", \"mode\", \"headers\", \"customUpload\", \"fileLimit\", \"uploadStyleClass\", \"cancelStyleClass\", \"removeStyleClass\", \"chooseStyleClass\", \"chooseButtonProps\", \"uploadButtonProps\", \"cancelButtonProps\", \"files\"], outputs: [\"onBeforeUpload\", \"onSend\", \"onUpload\", \"onError\", \"onClear\", \"onRemove\", \"onSelect\", \"onProgress\", \"uploadHandler\", \"onImageError\", \"onRemoveUploadedFile\"] }, { kind: \"ngmodule\", type: StepsModule }, { kind: \"component\", type: i6.Steps, selector: \"p-steps\", inputs: [\"activeIndex\", \"model\", \"readonly\", \"style\", \"styleClass\", \"exact\"], outputs: [\"activeIndexChange\"] }, { kind: \"ngmodule\", type: ToastModule }, { kind: \"component\", type: i7.Toast, selector: \"p-toast\", inputs: [\"key\", \"autoZIndex\", \"baseZIndex\", \"life\", \"styleClass\", \"position\", \"preventOpenDuplicates\", \"preventDuplicates\", \"showTransformOptions\", \"hideTransformOptions\", \"showTransitionOptions\", \"hideTransitionOptions\", \"breakpoints\"], outputs: [\"onClose\"] }, { kind: \"pipe\", type: i8.TranslatePipe, name: \"translate\" }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: ExcelImportComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'app-excel-import',\n standalone: true,\n providers: [MessageService],\n template: `\r\n <p-toast></p-toast>\r\n <div class=\"p-4 space-y-4\">\r\n <p-steps [model]=\"steps\" [(activeIndex)]=\"activeStep\" class=\"mb-4\"></p-steps>\r\n\r\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\r\n <ng-container [ngSwitch]=\"activeStep\">\r\n <!-- Step 1: Upload File -->\r\n <div *ngSwitchCase=\"0\" class=\"p-4\">\r\n <!-- Download template link -->\r\n\r\n\r\n <!-- File upload -->\r\n <p-fileUpload\r\n name=\"excelFile\"\r\n mode=\"basic\"\r\n chooseIcon=\"pi pi-upload\"\r\n chooseLabel=\"{{ 'chooseFile' | translate }}\"\r\n (onSelect)=\"onFileUpload($event)\"\r\n [accept]=\"config.acceptedFileTypes || '.xls,.xlsx,.csv'\"\r\n [maxFileSize]=\"config.maxFileSize || 10000000\"\r\n [showUploadButton]=\"false\"\r\n [showCancelButton]=\"false\"\r\n >\r\n </p-fileUpload>\r\n\r\n <!-- Upload status -->\r\n <p *ngIf=\"uploadedFileName\" class=\"mt-2 text-green-600\">\r\n {{ uploadedFileName }}\r\n </p>\r\n <p *ngIf=\"uploadError\" class=\"mt-2 text-red-600\">\r\n {{ uploadError }}\r\n </p>\r\n </div>\r\n <p>\r\n <a\r\n [href]=\"env.getEnvironment().apis.default.url+config.templateUrl\"\r\n download\r\n class=\"text-blue-600 hover:underline flex items-center gap-1\"\r\n >\r\n <i class=\"pi pi-download\"></i>\r\n {{ 'downloadTemplate' | translate }}\r\n </a>\r\n </p>\r\n\r\n\r\n <!-- Step 2: Column Mapping -->\r\n <div *ngSwitchCase=\"1\" class=\"p-4\">\r\n <formly-form [form]=\"form\" [fields]=\"mappingFields\" [model]=\"model\"></formly-form>\r\n </div>\r\n\r\n <!-- Step 3: Review -->\r\n <div *ngSwitchCase=\"2\" class=\"p-4\">\r\n <p class=\"text-gray-700 mb-4\">\r\n {{ 'importReviewMessage' | translate }}\r\n </p>\r\n <div class=\"bg-gray-100 p-3 rounded\">\r\n <p><strong>{{ 'fileName' | translate }}:</strong> {{ uploadedFileName }}</p>\r\n <p><strong>{{ 'selectedMappings' | translate }}:</strong></p>\r\n <ul class=\"list-disc list-inside ml-4\">\r\n <li *ngFor=\"let field of mappingFields\">\r\n {{ field.props?.label }}: {{ getModelValue(field, model) }}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Footer Buttons -->\r\n <div class=\"flex justify-between mt-6 pt-4 border-t\">\r\n <div>\r\n <button\r\n pButton\r\n type=\"button\"\r\n [label]=\"'back' | translate\"\r\n icon=\"pi pi-arrow-left\"\r\n (click)=\"prevStep()\"\r\n [disabled]=\"activeStep === 0 || loading\"\r\n class=\"p-button-text\"\r\n ></button>\r\n </div>\r\n\r\n <div class=\"flex gap-2\">\r\n <button\r\n pButton\r\n type=\"button\"\r\n [label]=\"'next' | translate\"\r\n icon=\"pi pi-arrow-right\"\r\n iconPos=\"right\"\r\n (click)=\"nextStep()\"\r\n *ngIf=\"activeStep < 2\"\r\n [disabled]=\"!canProceed() || loading\"\r\n ></button>\r\n\r\n <button\r\n pButton\r\n type=\"submit\"\r\n [label]=\"loading ? ('uploading' | translate) : ('save' | translate)\"\r\n icon=\"pi pi-check\"\r\n *ngIf=\"activeStep === 2\"\r\n [disabled]=\"loading\"\r\n [loading]=\"loading\"\r\n class=\"p-button-primary\"\r\n ></button>\r\n\r\n <button\r\n pButton\r\n type=\"button\"\r\n [label]=\"'cancel' | translate\"\r\n severity=\"secondary\"\r\n (click)=\"onCancel()\"\r\n [disabled]=\"loading\"\r\n ></button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n `,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n FormlyForm,\n TranslateModule,\n ButtonModule,\n FileUploadModule,\n StepsModule,\n ToastModule\n ],\n }]\n }], ctorParameters: () => [{ type: i1.DynamicDialogRef }, { type: i1.DynamicDialogConfig }], propDecorators: { config: [{\n type: Input\n }], importComplete: [{\n type: Output\n }], importError: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwtaW1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2V4Y2VsLWltcG9ydC9zcmMvbGliL2V4Y2VsLWltcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQWEsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFhLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BGLE9BQU8sRUFBcUIsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQW1CLE1BQU0sb0JBQW9CLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQVksTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFrSjdD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VztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBPbkRlc3Ryb3ksIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlLCBSZXN0U2VydmljZSB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnLCBGb3JtbHlGb3JtIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dDb25maWcsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZE1vZHVsZSwgRmlsZVVwbG9hZEV2ZW50IH0gZnJvbSAncHJpbWVuZy9maWxldXBsb2FkJztcclxuaW1wb3J0IHsgU3RlcHNNb2R1bGUgfSBmcm9tICdwcmltZW5nL3N0ZXBzJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IHJlYWQsIHV0aWxzLCBXb3JrQm9vayB9IGZyb20gJ3hsc3gnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFeGNlbEltcG9ydENvbmZpZyB7XHJcbiAgdGVtcGxhdGVVcmw6IHN0cmluZztcclxuICBhcGlVcmw6IHN0cmluZztcclxuICBhcGlOYW1lOiBzdHJpbmc7XHJcbiAgbWFwcGluZ0ZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXTtcclxuICBhY2NlcHRlZEZpbGVUeXBlcz86IHN0cmluZztcclxuICBtYXhGaWxlU2l6ZT86IG51bWJlcjtcclxuICBzdGVwcz86IHsgbGFiZWw6IHN0cmluZyB9W107XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWV4Y2VsLWltcG9ydCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBwcm92aWRlcnM6W01lc3NhZ2VTZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPHAtdG9hc3Q+PC9wLXRvYXN0PlxyXG4gICAgPGRpdiBjbGFzcz1cInAtNCBzcGFjZS15LTRcIj5cclxuICAgICAgPHAtc3RlcHMgW21vZGVsXT1cInN0ZXBzXCIgWyhhY3RpdmVJbmRleCldPVwiYWN0aXZlU3RlcFwiIGNsYXNzPVwibWItNFwiPjwvcC1zdGVwcz5cclxuXHJcbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdCgpXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiYWN0aXZlU3RlcFwiPlxyXG4gICAgICAgICAgPCEtLSBTdGVwIDE6IFVwbG9hZCBGaWxlIC0tPlxyXG4gICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIjBcIiBjbGFzcz1cInAtNFwiPlxyXG4gICAgICAgICAgPCEtLSBEb3dubG9hZCB0ZW1wbGF0ZSBsaW5rIC0tPlxyXG5cclxuXHJcbiAgICAgICAgICA8IS0tIEZpbGUgdXBsb2FkIC0tPlxyXG4gICAgICAgICAgPHAtZmlsZVVwbG9hZFxyXG4gICAgICAgICAgICBuYW1lPVwiZXhjZWxGaWxlXCJcclxuICAgICAgICAgICAgbW9kZT1cImJhc2ljXCJcclxuICAgICAgICAgICAgY2hvb3NlSWNvbj1cInBpIHBpLXVwbG9hZFwiXHJcbiAgICAgICAgICAgIGNob29zZUxhYmVsPVwie3sgJ2Nob29zZUZpbGUnIHwgdHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgKG9uU2VsZWN0KT1cIm9uRmlsZVVwbG9hZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW2FjY2VwdF09XCJjb25maWcuYWNjZXB0ZWRGaWxlVHlwZXMgfHwgJy54bHMsLnhsc3gsLmNzdidcIlxyXG4gICAgICAgICAgICBbbWF4RmlsZVNpemVdPVwiY29uZmlnLm1heEZpbGVTaXplIHx8IDEwMDAwMDAwXCJcclxuICAgICAgICAgICAgW3Nob3dVcGxvYWRCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbc2hvd0NhbmNlbEJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8L3AtZmlsZVVwbG9hZD5cclxuXHJcbiAgICAgICAgICA8IS0tIFVwbG9hZCBzdGF0dXMgLS0+XHJcbiAgICAgICAgICA8cCAqbmdJZj1cInVwbG9hZGVkRmlsZU5hbWVcIiBjbGFzcz1cIm10LTIgdGV4dC1ncmVlbi02MDBcIj5cclxuICAgICAgICAgICAge3sgdXBsb2FkZWRGaWxlTmFtZSB9fVxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgPHAgKm5nSWY9XCJ1cGxvYWRFcnJvclwiIGNsYXNzPVwibXQtMiB0ZXh0LXJlZC02MDBcIj5cclxuICAgICAgICAgICAge3sgdXBsb2FkRXJyb3IgfX1cclxuICAgICAgICAgIDwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8cD5cclxuICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICBbaHJlZl09XCJlbnYuZ2V0RW52aXJvbm1lbnQoKS5hcGlzLmRlZmF1bHQudXJsK2NvbmZpZy50ZW1wbGF0ZVVybFwiXHJcbiAgICAgICAgICAgICAgZG93bmxvYWRcclxuICAgICAgICAgICAgICBjbGFzcz1cInRleHQtYmx1ZS02MDAgaG92ZXI6dW5kZXJsaW5lIGZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktZG93bmxvYWRcIj48L2k+XHJcbiAgICAgICAgICAgICAge3sgJ2Rvd25sb2FkVGVtcGxhdGUnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDwvcD5cclxuXHJcblxyXG4gICAgICAgICAgPCEtLSBTdGVwIDI6IENvbHVtbiBNYXBwaW5nIC0tPlxyXG4gICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiMVwiIGNsYXNzPVwicC00XCI+XHJcbiAgICAgICAgICAgIDxmb3JtbHktZm9ybSBbZm9ybV09XCJmb3JtXCIgW2ZpZWxkc109XCJtYXBwaW5nRmllbGRzXCIgW21vZGVsXT1cIm1vZGVsXCI+PC9mb3JtbHktZm9ybT5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gU3RlcCAzOiBSZXZpZXcgLS0+XHJcbiAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCIyXCIgY2xhc3M9XCJwLTRcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWdyYXktNzAwIG1iLTRcIj5cclxuICAgICAgICAgICAgICB7eyAnaW1wb3J0UmV2aWV3TWVzc2FnZScgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctZ3JheS0xMDAgcC0zIHJvdW5kZWRcIj5cclxuICAgICAgICAgICAgICA8cD48c3Ryb25nPnt7ICdmaWxlTmFtZScgfCB0cmFuc2xhdGUgfX06PC9zdHJvbmc+IHt7IHVwbG9hZGVkRmlsZU5hbWUgfX08L3A+XHJcbiAgICAgICAgICAgICAgPHA+PHN0cm9uZz57eyAnc2VsZWN0ZWRNYXBwaW5ncycgfCB0cmFuc2xhdGUgfX06PC9zdHJvbmc+PC9wPlxyXG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtZGlzYyBsaXN0LWluc2lkZSBtbC00XCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGZpZWxkIG9mIG1hcHBpbmdGaWVsZHNcIj5cclxuICAgICAgICAgICAgICAgICAge3sgZmllbGQucHJvcHM/LmxhYmVsIH19OiB7eyBnZXRNb2RlbFZhbHVlKGZpZWxkLCBtb2RlbCkgfX1cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBGb290ZXIgQnV0dG9ucyAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gbXQtNiBwdC00IGJvcmRlci10XCI+XHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCInYmFjaycgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgIGljb249XCJwaSBwaS1hcnJvdy1sZWZ0XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicHJldlN0ZXAoKVwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjdGl2ZVN0ZXAgPT09IDAgfHwgbG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0XCJcclxuICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIHBCdXR0b25cclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICBbbGFiZWxdPVwiJ25leHQnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICBpY29uPVwicGkgcGktYXJyb3ctcmlnaHRcIlxyXG4gICAgICAgICAgICAgIGljb25Qb3M9XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRTdGVwKClcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU3RlcCA8IDJcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuUHJvY2VlZCgpIHx8IGxvYWRpbmdcIlxyXG4gICAgICAgICAgICA+PC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJsb2FkaW5nID8gKCd1cGxvYWRpbmcnIHwgdHJhbnNsYXRlKSA6ICgnc2F2ZScgfCB0cmFuc2xhdGUpXCJcclxuICAgICAgICAgICAgICBpY29uPVwicGkgcGktY2hlY2tcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU3RlcCA9PT0gMlwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcHJpbWFyeVwiXHJcbiAgICAgICAgICAgID48L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIidjYW5jZWwnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcclxuICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZm9ybT5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgRm9ybWx5Rm9ybSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIEJ1dHRvbk1vZHVsZSxcclxuICAgIEZpbGVVcGxvYWRNb2R1bGUsXHJcbiAgICBTdGVwc01vZHVsZSxcclxuICAgIFRvYXN0TW9kdWxlXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEV4Y2VsSW1wb3J0Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBjb25maWchOiBFeGNlbEltcG9ydENvbmZpZztcclxuICBAT3V0cHV0KCkgaW1wb3J0Q29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgaW1wb3J0RXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPEVycm9yPigpO1xyXG5cclxuICBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgbW9kZWw6IGFueSA9IHt9O1xyXG4gIGxvYWRpbmcgPSBmYWxzZTtcclxuICB1cGxvYWRlZEZpbGVOYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICB1cGxvYWRFcnJvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgZXhjZWxIZWFkZXJzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlID0gaW5qZWN0KFJlc3RTZXJ2aWNlKTtcclxuICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlID0gaW5qZWN0KE1lc3NhZ2VTZXJ2aWNlKTtcclxuICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XHJcbiAgcHVibGljIGVudiA9IGluamVjdChFbnZpcm9ubWVudFNlcnZpY2UpO1xyXG5cclxuICBzdGVwcyA9IFtcclxuICAgIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZSAuaW5zdGFudCgndXBsb2FkRmlsZScpIH0sXHJcbiAgICB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UgLmluc3RhbnQoJ2NvbHVtbk1hcHBpbmcnKSB9LFxyXG4gICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlIC5pbnN0YW50KCdyZXZpZXcnKSB9LFxyXG4gIF07XHJcblxyXG4gIGFjdGl2ZVN0ZXAgPSAwO1xyXG4gIG1hcHBpbmdGaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIHJlZjogRHluYW1pY0RpYWxvZ1JlZiwgcHVibGljIGRpYWxvZ0NvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZykge1xyXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7fSk7XHJcblxyXG4gICAgLy8gSW5pdGlhbGl6ZSBmcm9tIGRpYWxvZyBjb25maWcgaWYgcHJvdmlkZWRcclxuICAgIGlmICh0aGlzLmRpYWxvZ0NvbmZpZz8uZGF0YT8uY29uZmlnKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnID0gdGhpcy5kaWFsb2dDb25maWcuZGF0YS5jb25maWc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICghdGhpcy5jb25maWcpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeGNlbEltcG9ydENvbmZpZyBpcyByZXF1aXJlZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubWFwcGluZ0ZpZWxkcyA9IHRoaXMuY29uZmlnLm1hcHBpbmdGaWVsZHMubWFwKGZpZWxkID0+ICh7XHJcbiAgICAgIC4uLmZpZWxkLFxyXG4gICAgICBwcm9wczoge1xyXG4gICAgICAgIC4uLmZpZWxkLnByb3BzLFxyXG4gICAgICAgIG9wdGlvbnM6IFtdXHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuXHJcbiAgICB0aGlzLnN0ZXBzID0gdGhpcy5jb25maWcuc3RlcHMgfHwgdGhpcy5zdGVwcztcclxuICB9XHJcblxyXG4gIG5leHRTdGVwKCkge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlU3RlcCA8IDIpIHRoaXMuYWN0aXZlU3RlcCsrO1xyXG4gIH1cclxuXHJcbiAgcHJldlN0ZXAoKSB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVTdGVwID4gMCkgdGhpcy5hY3RpdmVTdGVwLS07XHJcbiAgfVxyXG5cclxuICBjYW5Qcm9jZWVkKCk6IGJvb2xlYW4ge1xyXG4gICAgc3dpdGNoICh0aGlzLmFjdGl2ZVN0ZXApIHtcclxuICAgICAgY2FzZSAwOlxyXG4gICAgICAgIHJldHVybiAhIXRoaXMudXBsb2FkZWRGaWxlTmFtZTtcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0udmFsaWQ7XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldE1vZGVsVmFsdWUoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnLCBtb2RlbDogYW55KTogYW55IHtcclxuICBpZiAoIWZpZWxkLmtleSkgcmV0dXJuIG51bGw7XHJcblxyXG4gIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLmtleSkpIHtcclxuICAgIC8vIFdhbGsgdGhyb3VnaCBuZXN0ZWQga2V5cyBsaWtlIFsnYWRkcmVzcycsICdzdHJlZXQnXVxyXG4gICAgcmV0dXJuIGZpZWxkLmtleS5yZWR1Y2UoKGFjYywgaykgPT4gKGFjYyA/IGFjY1trXSA6IHVuZGVmaW5lZCksIG1vZGVsKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBtb2RlbFtmaWVsZC5rZXldO1xyXG59XHJcblxyXG4gIC8vIEFkZCB0aGlzIHByb3BlcnR5IHRvIHN0b3JlIHRoZSBmaWxlIGNvbnRlbnRcclxucHJpdmF0ZSBmaWxlQ29udGVudDogc3RyaW5nIHwgQXJyYXlCdWZmZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbi8vIFVwZGF0ZSB0aGUgb25GaWxlVXBsb2FkIG1ldGhvZCB0byBzdG9yZSB0aGUgZmlsZSBjb250ZW50XHJcbm9uRmlsZVVwbG9hZChldmVudDogYW55KSB7XHJcbiAgdGhpcy51cGxvYWRFcnJvciA9IG51bGw7XHJcbiAgY29uc3QgZmlsZTogRmlsZSA9IGV2ZW50LmZpbGVzWzBdO1xyXG5cclxuICBpZiAoIWZpbGUpIHtcclxuICAgIHRoaXMudXBsb2FkRXJyb3IgPSAnbm9GaWxlU2VsZWN0ZWQnO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgLy8gVmFsaWRhdGUgZmlsZSB0eXBlXHJcbiAgY29uc3QgdmFsaWRFeHRlbnNpb25zID0gWycueGxzeCcsICcueGxzJywgJy5jc3YnXTtcclxuICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuc3Vic3RyaW5nKGZpbGUubmFtZS5sYXN0SW5kZXhPZignLicpKTtcclxuXHJcbiAgaWYgKCF2YWxpZEV4dGVuc2lvbnMuaW5jbHVkZXMoZmlsZUV4dGVuc2lvbikpIHtcclxuICAgIHRoaXMudXBsb2FkRXJyb3IgPSAnaW52YWxpZEZpbGVUeXBlJztcclxuICAgIHRoaXMuY2xlYXJGaWxlVXBsb2FkKGV2ZW50KTtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIHRoaXMudXBsb2FkZWRGaWxlTmFtZSA9IGZpbGUubmFtZTtcclxuXHJcbiAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuXHJcbiAgcmVhZGVyLm9ubG9hZCA9IChlOiBQcm9ncmVzc0V2ZW50PEZpbGVSZWFkZXI+KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IGUudGFyZ2V0Py5yZXN1bHQgYXMgQXJyYXlCdWZmZXI7XHJcbiAgICAgIHRoaXMuZmlsZUNvbnRlbnQgPSBhcnJheUJ1ZmZlcjsgLy8gU3RvcmUgdGhlIGZpbGUgY29udGVudFxyXG4gICAgICBjb25zdCBkYXRhID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpO1xyXG5cclxuICAgICAgY29uc3Qgd29ya2Jvb2s6IFdvcmtCb29rID0gcmVhZChkYXRhLCB7IHR5cGU6ICdhcnJheScgfSk7XHJcblxyXG4gICAgICBpZiAod29ya2Jvb2suU2hlZXROYW1lcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLnVwbG9hZEVycm9yID0gJ25vU2hlZXRzRm91bmQnO1xyXG4gICAgICAgIHRoaXMuY2xlYXJGaWxlVXBsb2FkKGV2ZW50KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHNoZWV0TmFtZSA9IHdvcmtib29rLlNoZWV0TmFtZXNbMF07XHJcbiAgICAgIGNvbnN0IHdvcmtzaGVldCA9IHdvcmtib29rLlNoZWV0c1tzaGVldE5hbWVdO1xyXG5cclxuICAgICAgY29uc3Qgcm93czogYW55W11bXSA9IHV0aWxzLnNoZWV0X3RvX2pzb24od29ya3NoZWV0LCB7IGhlYWRlcjogMSB9KTtcclxuXHJcbiAgICAgIGlmIChyb3dzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMudXBsb2FkRXJyb3IgPSAnbm9EYXRhRm91bmQnO1xyXG4gICAgICAgIHRoaXMuY2xlYXJGaWxlVXBsb2FkKGV2ZW50KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZXhjZWxIZWFkZXJzID0gcm93c1swXSBhcyBzdHJpbmdbXTtcclxuXHJcbiAgICAgIC8vIFVwZGF0ZSBtYXBwaW5nIGZpZWxkcyB3aXRoIGhlYWRlciBvcHRpb25zXHJcbiAgICAgIHRoaXMubWFwcGluZ0ZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgICBpZiAoZmllbGQucHJvcHMpIHtcclxuICAgICAgICAgIGZpZWxkLnByb3BzLm9wdGlvbnMgPSB0aGlzLmV4Y2VsSGVhZGVycy5tYXAoaCA9PiAoe1xyXG4gICAgICAgICAgICB2YWx1ZTogaCxcclxuICAgICAgICAgICAgbGFiZWw6IGgsXHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIEluaXRpYWxpemUgZm9ybSB3aXRoIGRlZmF1bHQgdmFsdWVzIGlmIG5vdCBzZXRcclxuICAgICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xyXG5cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHByb2Nlc3NpbmcgRXhjZWwgZmlsZTonLCBlcnJvcik7XHJcbiAgICAgIHRoaXMudXBsb2FkRXJyb3IgPSAnZmlsZVByb2Nlc3NpbmdFcnJvcic7XHJcbiAgICAgIHRoaXMuY2xlYXJGaWxlVXBsb2FkKGV2ZW50KTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICByZWFkZXIub25lcnJvciA9IChlcnJvcikgPT4ge1xyXG4gICAgY29uc29sZS5lcnJvcignRmlsZSByZWFkaW5nIGVycm9yOicsIGVycm9yKTtcclxuICAgIHRoaXMudXBsb2FkRXJyb3IgPSAnZmlsZVJlYWRFcnJvcic7XHJcbiAgICB0aGlzLmNsZWFyRmlsZVVwbG9hZChldmVudCk7XHJcbiAgfTtcclxuXHJcbiAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xyXG59XHJcblxyXG4vLyBBZGQgdGhpcyBtZXRob2QgdG8gY29udmVydCBBcnJheUJ1ZmZlciB0byBiYXNlNjRcclxucHJpdmF0ZSBhcnJheUJ1ZmZlclRvQmFzZTY0KGJ1ZmZlcjogQXJyYXlCdWZmZXIpOiBzdHJpbmcge1xyXG4gIGNvbnN0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcclxuICBsZXQgYmluYXJ5ID0gJyc7XHJcbiAgY29uc3QgbGVuID0gYnl0ZXMuYnl0ZUxlbmd0aDtcclxuXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgYmluYXJ5ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0pO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHdpbmRvdy5idG9hKGJpbmFyeSk7XHJcbn1cclxuXHJcbi8vIEFkZCB0aGlzIG1ldGhvZCB0byBnZXQgZmlsZSBleHRlbnNpb25cclxucHJpdmF0ZSBnZXRGaWxlRXh0ZW5zaW9uKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIGNvbnN0IGluZGV4ID0gZmlsZW5hbWUubGFzdEluZGV4T2YoJy4nKTtcclxuICByZXR1cm4gaW5kZXggIT09IC0xID8gZmlsZW5hbWUuc2xpY2UoaW5kZXgpIDogJyc7XHJcbn1cclxuXHJcbi8vIFVwZGF0ZWQgb25TdWJtaXQgbWV0aG9kXHJcbm9uU3VibWl0KCkge1xyXG4gIGlmICh0aGlzLmZvcm0uaW52YWxpZCB8fCAhdGhpcy51cGxvYWRlZEZpbGVOYW1lIHx8ICF0aGlzLmZpbGVDb250ZW50KSB7XHJcbiAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG5cclxuICAgIGlmICghdGhpcy5maWxlQ29udGVudCkge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgc3VtbWFyeTogJ0Vycm9yJyxcclxuICAgICAgICBkZXRhaWw6ICdGaWxlIGNvbnRlbnQgaXMgbWlzc2luZy4gUGxlYXNlIHVwbG9hZCB0aGUgZmlsZSBhZ2Fpbi4nXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIHRoaXMubG9hZGluZyA9IHRydWU7XHJcblxyXG4gIC8vIENvbnZlcnQgZmlsZSBjb250ZW50IHRvIGJhc2U2NFxyXG4gIGxldCBmaWxlQmFzZTY0OiBzdHJpbmc7XHJcblxyXG4gIHRyeSB7XHJcbiAgICBpZiAodGhpcy5maWxlQ29udGVudCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XHJcbiAgICAgIGZpbGVCYXNlNjQgPSB0aGlzLmFycmF5QnVmZmVyVG9CYXNlNjQodGhpcy5maWxlQ29udGVudCk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLmZpbGVDb250ZW50ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAvLyBJZiBpdCdzIGFscmVhZHkgYSBzdHJpbmcgKGJhc2U2NCksIHVzZSBpdCBkaXJlY3RseVxyXG4gICAgICBmaWxlQmFzZTY0ID0gdGhpcy5maWxlQ29udGVudDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgZmlsZSBjb250ZW50IHR5cGUnKTtcclxuICAgIH1cclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvciBjb252ZXJ0aW5nIGZpbGUgdG8gYmFzZTY0OicsIGVycm9yKTtcclxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgIHN1bW1hcnk6ICdFcnJvcicsXHJcbiAgICAgIGRldGFpbDogJ0ZhaWxlZCB0byBwcm9jZXNzIGZpbGUgY29udGVudCdcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgcmVxdWVzdEJvZHkgPSB7XHJcbiAgICBmaWxlTmFtZTogdGhpcy51cGxvYWRlZEZpbGVOYW1lLFxyXG4gICAgZmlsZUV4dGVuc2lvbjogdGhpcy5nZXRGaWxlRXh0ZW5zaW9uKHRoaXMudXBsb2FkZWRGaWxlTmFtZSksXHJcbiAgICBmaWxlQ29udGVudDogZmlsZUJhc2U2NCxcclxuICAgIG1hcHBpbmdzOiB0aGlzLmZvcm0udmFsdWUsXHJcbiAgICBoZWFkZXJzOiB0aGlzLmV4Y2VsSGVhZGVycyxcclxuICAgIGZpbGVTaXplOiB0aGlzLmZpbGVDb250ZW50IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIgPyB0aGlzLmZpbGVDb250ZW50LmJ5dGVMZW5ndGggOiAwXHJcbiAgfTtcclxuXHJcbiAgdGhpcy5yZXN0U2VydmljZVxyXG4gICAgLnJlcXVlc3Q8YW55LCBhbnk+KFxyXG4gICAgICB7XHJcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICAgICAgdXJsOiB0aGlzLmNvbmZpZy5hcGlVcmwsXHJcbiAgICAgICAgYm9keTogcmVxdWVzdEJvZHksXHJcbiAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgeyBhcGlOYW1lOiB0aGlzLmNvbmZpZy5hcGlOYW1lIH1cclxuICAgIClcclxuICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ3N1Y2Nlc3MnLFxyXG4gICAgICAgICAgc3VtbWFyeTogJ1N1Y2Nlc3MnLFxyXG4gICAgICAgICAgZGV0YWlsOiAnRmlsZSBpbXBvcnRlZCBzdWNjZXNzZnVsbHknXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5pbXBvcnRDb21wbGV0ZS5lbWl0KHJlc3BvbnNlKTtcclxuICAgICAgICB0aGlzLnJlZi5jbG9zZShyZXNwb25zZSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignSW1wb3J0IGVycm9yOicsIGVycik7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICBzdW1tYXJ5OiAnRXJyb3InLFxyXG4gICAgICAgICAgZGV0YWlsOiAnRmFpbGVkIHRvIGltcG9ydCBmaWxlJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuaW1wb3J0RXJyb3IuZW1pdChlcnIpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbn1cclxuXHJcbi8vIFVwZGF0ZSBjbGVhckZpbGVVcGxvYWQgdG8gYWxzbyBjbGVhciBmaWxlIGNvbnRlbnRcclxucHJpdmF0ZSBjbGVhckZpbGVVcGxvYWQoZXZlbnQ6IGFueSkge1xyXG4gIGlmIChldmVudC5vcHRpb25zICYmIHR5cGVvZiBldmVudC5vcHRpb25zLmNsZWFyID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICBldmVudC5vcHRpb25zLmNsZWFyKCk7XHJcbiAgfVxyXG4gIHRoaXMudXBsb2FkZWRGaWxlTmFtZSA9IG51bGw7XHJcbiAgdGhpcy5maWxlQ29udGVudCA9IG51bGw7XHJcbn1cclxuXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplRm9ybSgpIHtcclxuICAgIGNvbnN0IGZvcm1Db25maWc6IGFueSA9IHt9O1xyXG5cclxuICAgIHRoaXMubWFwcGluZ0ZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgaWYgKGZpZWxkLmtleSkge1xyXG4gICAgICAgIC8vIFNldCBkZWZhdWx0IHZhbHVlIHRvIGZpcnN0IGhlYWRlciBpZiBhdmFpbGFibGVcclxuICAgICAgICBmb3JtQ29uZmlnW2ZpZWxkLmtleSBhcyBzdHJpbmddID0gW3RoaXMuZXhjZWxIZWFkZXJzWzBdIHx8ICcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXTtcclxuXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoZm9ybUNvbmZpZyk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgb25DYW5jZWwoKSB7XHJcbiAgICBpZiAoIXRoaXMubG9hZGluZykge1xyXG4gICAgICB0aGlzLnJlZi5jbG9zZShmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZXhjZWwtaW1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2V4Y2VsLWltcG9ydC9zcmMvZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZXhjZWwtaW1wb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAGO,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;;ACUN,MAAM,oBAAoB,CAAC;AAClC,IAAI,GAAG;AACP,IAAI,YAAY;AAChB,IAAI,MAAM;AACV,IAAI,cAAc,GAAG,IAAI,YAAY,EAAE;AACvC,IAAI,WAAW,GAAG,IAAI,YAAY,EAAE;AACpC,IAAI,IAAI;AACR,IAAI,KAAK,GAAG,EAAE;AACd,IAAI,OAAO,GAAG,KAAK;AACnB,IAAI,gBAAgB,GAAG,IAAI;AAC3B,IAAI,WAAW,GAAG,IAAI;AACtB,IAAI,YAAY,GAAG,EAAE;AACrB,IAAI,QAAQ,GAAG,IAAI,OAAO,EAAE;AAC5B,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACrC,IAAI,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAC3C,IAAI,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC/C,IAAI,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;AAC5B,IAAI,GAAG,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACpC,IAAI,KAAK,GAAG;AACZ,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AAC9D,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;AACjE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC1D,KAAK;AACL,IAAI,UAAU,GAAG,CAAC;AAClB,IAAI,aAAa,GAAG,EAAE;AACtB,IAAI,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE;AACnC,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;AACtB,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY;AACxC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AACrC;AACA,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE;AAC7C,YAAY,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM;AACvD;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC1B,YAAY,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC;AAC5D;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,KAAK;AACrE,YAAY,GAAG,KAAK;AACpB,YAAY,KAAK,EAAE;AACnB,gBAAgB,GAAG,KAAK,CAAC,KAAK;AAC9B,gBAAgB,OAAO,EAAE;AACzB;AACA,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK;AACpD;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC;AAC/B,YAAY,IAAI,CAAC,UAAU,EAAE;AAC7B;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC;AAC/B,YAAY,IAAI,CAAC,UAAU,EAAE;AAC7B;AACA,IAAI,UAAU,GAAG;AACjB,QAAQ,QAAQ,IAAI,CAAC,UAAU;AAC/B,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB;AAC9C,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK;AACtC,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,gBAAgB,OAAO,KAAK;AAC5B;AACA;AACA,IAAI,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE;AAChC,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG;AACtB,YAAY,OAAO,IAAI;AACvB,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AACtC;AACA,YAAY,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,KAAK,CAAC;AAClF;AACA,QAAQ,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AAC/B;AACA;AACA,IAAI,WAAW,GAAG,IAAI;AACtB;AACA,IAAI,YAAY,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,IAAI,CAAC,WAAW,GAAG,gBAAgB;AAC/C,YAAY;AACZ;AACA;AACA,QAAQ,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;AACzD,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC3F,QAAQ,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AACtD,YAAY,IAAI,CAAC,WAAW,GAAG,iBAAiB;AAChD,YAAY,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACvC,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI;AACzC,QAAQ,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AACvC,QAAQ,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK;AAC/B,YAAY,IAAI;AAChB,gBAAgB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM;AACpD,gBAAgB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/C,gBAAgB,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC;AACxD,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC9D,gBAAgB,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACtD,oBAAoB,IAAI,CAAC,WAAW,GAAG,eAAe;AACtD,oBAAoB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC/C,oBAAoB;AACpB;AACA,gBAAgB,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AACxD,gBAAgB,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;AAC5D,gBAAgB,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAC1E,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACvC,oBAAoB,IAAI,CAAC,WAAW,GAAG,aAAa;AACpD,oBAAoB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC/C,oBAAoB;AACpB;AACA,gBAAgB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC;AAC3C;AACA,gBAAgB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI;AACpD,oBAAoB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,wBAAwB,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK;AAC1E,4BAA4B,KAAK,EAAE,CAAC;AACpC,4BAA4B,KAAK,EAAE,CAAC;AACpC,yBAAyB,CAAC,CAAC;AAC3B;AACA,iBAAiB,CAAC;AAClB;AACA,gBAAgB,IAAI,CAAC,cAAc,EAAE;AACrC;AACA,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC;AACpE,gBAAgB,IAAI,CAAC,WAAW,GAAG,qBAAqB;AACxD,gBAAgB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC3C;AACA,SAAS;AACT,QAAQ,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK;AACpC,YAAY,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC;AACvD,YAAY,IAAI,CAAC,WAAW,GAAG,eAAe;AAC9C,YAAY,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACvC,SAAS;AACT,QAAQ,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACtC;AACA;AACA,IAAI,mBAAmB,CAAC,MAAM,EAAE;AAChC,QAAQ,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC;AAC5C,QAAQ,IAAI,MAAM,GAAG,EAAE;AACvB,QAAQ,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU;AACpC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACtC,YAAY,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD;AACA,QAAQ,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAClC;AACA;AACA,IAAI,gBAAgB,CAAC,QAAQ,EAAE;AAC/B,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC;AAC/C,QAAQ,OAAO,KAAK,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;AACxD;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC9E,YAAY,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACxC,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnC,gBAAgB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACxC,oBAAoB,QAAQ,EAAE,OAAO;AACrC,oBAAoB,OAAO,EAAE,OAAO;AACpC,oBAAoB,MAAM,EAAE;AAC5B,iBAAiB,CAAC;AAClB;AACA,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI;AAC3B;AACA,QAAQ,IAAI,UAAU;AACtB,QAAQ,IAAI;AACZ,YAAY,IAAI,IAAI,CAAC,WAAW,YAAY,WAAW,EAAE;AACzD,gBAAgB,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC;AACvE;AACA,iBAAiB,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;AAC3D;AACA,gBAAgB,UAAU,GAAG,IAAI,CAAC,WAAW;AAC7C;AACA,iBAAiB;AACjB,gBAAgB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC;AAChE;AACA;AACA,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,IAAI,CAAC,OAAO,GAAG,KAAK;AAChC,YAAY,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC;AACpE,YAAY,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACpC,gBAAgB,QAAQ,EAAE,OAAO;AACjC,gBAAgB,OAAO,EAAE,OAAO;AAChC,gBAAgB,MAAM,EAAE;AACxB,aAAa,CAAC;AACd,YAAY;AACZ;AACA,QAAQ,MAAM,WAAW,GAAG;AAC5B,YAAY,QAAQ,EAAE,IAAI,CAAC,gBAAgB;AAC3C,YAAY,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACvE,YAAY,WAAW,EAAE,UAAU;AACnC,YAAY,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;AACrC,YAAY,OAAO,EAAE,IAAI,CAAC,YAAY;AACtC,YAAY,QAAQ,EAAE,IAAI,CAAC,WAAW,YAAY,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG;AAC9F,SAAS;AACT,QAAQ,IAAI,CAAC;AACb,aAAa,OAAO,CAAC;AACrB,YAAY,MAAM,EAAE,MAAM;AAC1B,YAAY,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;AACnC,YAAY,IAAI,EAAE,WAAW;AAC7B,YAAY,OAAO,EAAE;AACrB,gBAAgB,cAAc,EAAE;AAChC;AACA,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AAC3C,aAAa,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC1C,aAAa,SAAS,CAAC;AACvB,YAAY,IAAI,EAAE,CAAC,QAAQ,KAAK;AAChC,gBAAgB,IAAI,CAAC,OAAO,GAAG,KAAK;AACpC,gBAAgB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACxC,oBAAoB,QAAQ,EAAE,SAAS;AACvC,oBAAoB,OAAO,EAAE,SAAS;AACtC,oBAAoB,MAAM,EAAE;AAC5B,iBAAiB,CAAC;AAClB,gBAAgB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;AAClD,gBAAgB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;AACxC,aAAa;AACb,YAAY,KAAK,EAAE,CAAC,GAAG,KAAK;AAC5B,gBAAgB,IAAI,CAAC,OAAO,GAAG,KAAK;AACpC,gBAAgB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC;AACnD,gBAAgB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACxC,oBAAoB,QAAQ,EAAE,OAAO;AACrC,oBAAoB,OAAO,EAAE,OAAO;AACpC,oBAAoB,MAAM,EAAE;AAC5B,iBAAiB,CAAC;AAClB,gBAAgB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1C,aAAa;AACb,SAAS,CAAC;AACV;AACA;AACA,IAAI,eAAe,CAAC,KAAK,EAAE;AAC3B,QAAQ,IAAI,KAAK,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE;AACxE,YAAY,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE;AACjC;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI;AACpC,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B;AACA,IAAI,cAAc,GAAG;AACrB,QAAQ,MAAM,UAAU,GAAG,EAAE;AAC7B,QAAQ,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI;AAC5C,YAAY,IAAI,KAAK,CAAC,GAAG,EAAE;AAC3B;AACA,gBAAgB,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACzF;AACA,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;AAC7C;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC3B,YAAY,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;AACjC;AACA;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC5B,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAChC;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,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,gBAAgB,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,mBAAmB,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;AAC/O,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,kBAAkB,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AAClU;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,eAAe,CAAC,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,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,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,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,WAAW,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,eAAe,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,gBAAgB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,4BAA4B,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,+BAA+B,EAAE,8BAA8B,EAAE,+BAA+B,EAAE,8BAA8B,EAAE,+BAA+B,EAAE,gCAAgC,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,sBAAsB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;AAC3+F;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;AACnB,oBAAoB,QAAQ,EAAE,kBAAkB;AAChD,oBAAoB,UAAU,EAAE,IAAI;AACpC,oBAAoB,SAAS,EAAE,CAAC,cAAc,CAAC;AAC/C,oBAAoB,QAAQ,EAAE,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC;AACH,oBAAoB,OAAO,EAAE;AAC7B,wBAAwB,YAAY;AACpC,wBAAwB,mBAAmB;AAC3C,wBAAwB,WAAW;AACnC,wBAAwB,UAAU;AAClC,wBAAwB,eAAe;AACvC,wBAAwB,YAAY;AACpC,wBAAwB,gBAAgB;AACxC,wBAAwB,WAAW;AACnC,wBAAwB;AACxB,qBAAqB;AACrB,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,mBAAmB,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC;AAChI,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;AACjC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,EAAE,CAAC;;ACniBnB;AACA;AACA;;;;"}
@@ -13,10 +13,10 @@ import { FormlyForm, FormlyField } from '@ngx-formly/core';
13
13
  import { FormGroup } from '@angular/forms';
14
14
  import { cloneDeep } from 'lodash';
15
15
  import { GenericButton } from '@elite.framework/ng.ui.core/generic-button';
16
- import { PermissionsService } from '@elite.framework/ng.core/services';
17
16
  import { PaginatorModule } from 'primeng/paginator';
18
17
  import * as i2 from 'primeng/overlay';
19
18
  import { OverlayModule } from 'primeng/overlay';
19
+ import { PermissionCheckerService } from '@elite.framework/ng.core/services';
20
20
  import * as i3 from 'primeng/api';
21
21
 
22
22
  class GenericTableModule {
@@ -123,7 +123,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
123
123
 
124
124
  class GenericTable {
125
125
  translateService = inject(TranslateService);
126
- permissionsService = inject(PermissionsService);
126
+ permissionsService = inject(PermissionCheckerService);
127
127
  dt;
128
128
  data = [];
129
129
  data_ = [];