bpm-core 0.0.55 → 0.0.57

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.
Files changed (68) hide show
  1. package/esm2022/lib/components/app-component-sections/activities/activities.component.mjs +13 -10
  2. package/esm2022/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.mjs +5 -3
  3. package/esm2022/lib/components/app-component-sections/feedback-section/feedback-section.component.mjs +7 -5
  4. package/esm2022/lib/components/app-component-sections/form-section/form-section.component.mjs +5 -3
  5. package/esm2022/lib/components/app-component-sections/previous-requests/previous-requests.component.mjs +196 -36
  6. package/esm2022/lib/components/app-component-sections/service-header/service-header.component.mjs +5 -3
  7. package/esm2022/lib/components/app-component-sections/workflow-section/workflow-section.component.mjs +5 -3
  8. package/esm2022/lib/components/shared-components/action-buttons/action-buttons.component.mjs +6 -4
  9. package/esm2022/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.mjs +10 -6
  10. package/esm2022/lib/components/shared-components/form-field/attachment-section/attachment-section.component.mjs +11 -9
  11. package/esm2022/lib/components/shared-components/form-field/checkbox/checkbox.component.mjs +4 -3
  12. package/esm2022/lib/components/shared-components/form-field/control-value-accessor.directive.mjs +5 -1
  13. package/esm2022/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.mjs +3 -3
  14. package/esm2022/lib/components/shared-components/form-field/date-picker/date-picker.component.mjs +4 -3
  15. package/esm2022/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.mjs +4 -3
  16. package/esm2022/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.mjs +12 -10
  17. package/esm2022/lib/components/shared-components/form-field/form-label/form-label.component.mjs +5 -3
  18. package/esm2022/lib/components/shared-components/form-field/info-item/info-item.component.mjs +6 -4
  19. package/esm2022/lib/components/shared-components/form-field/input-telephone/input-telephone.component.mjs +16 -3
  20. package/esm2022/lib/components/shared-components/form-field/search-employee/search-employee.component.mjs +18 -13
  21. package/esm2022/lib/components/shared-components/form-field/shared-imports.mjs +4 -2
  22. package/esm2022/lib/components/shared-components/form-field/toggle-button/toggle-button.component.mjs +6 -6
  23. package/esm2022/lib/components/shared-components/form-field/validation-errors/validation-errors.component.mjs +5 -5
  24. package/esm2022/lib/components/shared-components/table/table.component.mjs +240 -0
  25. package/esm2022/lib/directives/skip-location.directive.mjs +28 -0
  26. package/esm2022/lib/enums/actions.enum.mjs +21 -0
  27. package/esm2022/lib/enums/colors.enum.mjs +6 -0
  28. package/esm2022/lib/enums/events.enum.mjs +6 -0
  29. package/esm2022/lib/helpers/shared.helper.mjs +26 -0
  30. package/esm2022/lib/interfaces/action.interface.mjs +2 -0
  31. package/esm2022/lib/pipes/translate.pipe.mjs +36 -0
  32. package/esm2022/lib/regex/index.mjs +2 -0
  33. package/esm2022/lib/services/core.service.ts.mjs +7 -5
  34. package/esm2022/lib/testComponent/general-approver-section/general-approver-section.component.mjs +5 -3
  35. package/esm2022/lib/testComponent/request-details-section/request-details-section.component.mjs +90 -54
  36. package/esm2022/public-api.mjs +2 -1
  37. package/fesm2022/bpm-core.mjs +761 -198
  38. package/fesm2022/bpm-core.mjs.map +1 -1
  39. package/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.d.ts +2 -0
  40. package/lib/components/app-component-sections/feedback-section/feedback-section.component.d.ts +2 -1
  41. package/lib/components/app-component-sections/form-section/form-section.component.d.ts +2 -1
  42. package/lib/components/app-component-sections/previous-requests/previous-requests.component.d.ts +123 -1
  43. package/lib/components/app-component-sections/service-header/service-header.component.d.ts +2 -1
  44. package/lib/components/app-component-sections/workflow-section/workflow-section.component.d.ts +2 -1
  45. package/lib/components/shared-components/action-buttons/action-buttons.component.d.ts +2 -1
  46. package/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.d.ts +2 -1
  47. package/lib/components/shared-components/form-field/attachment-section/attachment-section.component.d.ts +2 -1
  48. package/lib/components/shared-components/form-field/control-value-accessor.directive.d.ts +1 -0
  49. package/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.d.ts +2 -1
  50. package/lib/components/shared-components/form-field/input-telephone/input-telephone.component.d.ts +2 -0
  51. package/lib/components/shared-components/form-field/search-employee/search-employee.component.d.ts +2 -1
  52. package/lib/components/shared-components/form-field/shared-imports.d.ts +4 -3
  53. package/lib/components/shared-components/form-field/toggle-button/toggle-button.component.d.ts +2 -2
  54. package/lib/components/shared-components/form-field/validation-errors/validation-errors.component.d.ts +4 -4
  55. package/lib/components/shared-components/table/table.component.d.ts +76 -0
  56. package/lib/directives/skip-location.directive.d.ts +10 -0
  57. package/lib/enums/actions.enum.d.ts +19 -0
  58. package/lib/enums/colors.enum.d.ts +4 -0
  59. package/lib/enums/events.enum.d.ts +4 -0
  60. package/lib/helpers/shared.helper.d.ts +1 -0
  61. package/lib/interfaces/action.interface.d.ts +7 -0
  62. package/lib/pipes/translate.pipe.d.ts +11 -0
  63. package/lib/regex/index.d.ts +1 -0
  64. package/lib/services/core.service.ts.d.ts +2 -0
  65. package/lib/testComponent/general-approver-section/general-approver-section.component.d.ts +2 -1
  66. package/lib/testComponent/request-details-section/request-details-section.component.d.ts +3 -1
  67. package/package.json +1 -1
  68. package/public-api.d.ts +1 -0
@@ -1,10 +1,12 @@
1
- import { Component, CUSTOM_ELEMENTS_SCHEMA, forwardRef, Inject, Input, } from '@angular/core';
1
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, forwardRef, inject, Inject, Input, } from '@angular/core';
2
2
  import { TextareaComponent } from '../textarea/textarea.component';
3
3
  import { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogModule, } from '@angular/material/dialog';
4
4
  import { NgIf } from '@angular/common';
5
5
  import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
6
6
  import { FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators, } from '@angular/forms';
7
7
  import { DocsUploaderComponent } from '../doc-uploader/docs-uploader.component';
8
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
9
+ import { TranslatePipe } from "../../../../pipes/translate.pipe";
8
10
  import * as i0 from "@angular/core";
9
11
  import * as i1 from "../../../../services";
10
12
  import * as i2 from "ngx-toastr";
@@ -21,6 +23,7 @@ export class AttachmentSectionDataComponent extends ControlValueAccessorDirectiv
21
23
  hasColumnBreak;
22
24
  section;
23
25
  formGroup;
26
+ destroyRef = inject(DestroyRef);
24
27
  constructor(injector, i18n, toasterService, coreService, sanitizer, fb, dialogRef, dialogData) {
25
28
  super(injector, i18n, toasterService, coreService, sanitizer, fb);
26
29
  this.dialogRef = dialogRef;
@@ -71,7 +74,7 @@ export class AttachmentSectionDataComponent extends ControlValueAccessorDirectiv
71
74
  fileContents: this.formGroup.controls['file'].value.fileContents,
72
75
  };
73
76
  this.uploading = true;
74
- this.coreService.getAttachments(data).subscribe((Response) => {
77
+ this.coreService.getAttachments(data).pipe(takeUntilDestroyed(this.destroyRef)).subscribe((Response) => {
75
78
  this.uploading = false;
76
79
  if (Response) {
77
80
  const newObj = {
@@ -87,13 +90,13 @@ export class AttachmentSectionDataComponent extends ControlValueAccessorDirectiv
87
90
  });
88
91
  }
89
92
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AttachmentSectionDataComponent, deps: [{ token: i0.Injector }, { token: i1.CoreI18nService }, { token: i2.ToastrService }, { token: i1.CoreService }, { token: i3.DomSanitizer }, { token: i4.FormBuilder }, { token: i5.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
90
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: AttachmentSectionDataComponent, isStandalone: true, selector: "app-add-attachment-section", inputs: { hasColumnBreak: "hasColumnBreak", section: "section" }, providers: [
93
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: AttachmentSectionDataComponent, isStandalone: true, selector: "app-add-attachment-section", inputs: { hasColumnBreak: "hasColumnBreak", section: "section" }, providers: [
91
94
  {
92
95
  provide: NG_VALUE_ACCESSOR,
93
96
  useExisting: forwardRef(() => AttachmentSectionDataComponent),
94
97
  multi: true,
95
98
  },
96
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-end\" mat-dialog-title>\r\n <h3 class=\"mb-0 font-16 fw-medium\">{{i18n.translate('addAttachments')}}</h3>\r\n <ds-button icon matDialogClose>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"px-md-4 mt-3\">\r\n <!-- add [callApi]=\"true\" input mobile issue not able to download it by base 64 -->\r\n<form [formGroup]=\"formGroup\">\r\n <app-file-uploader class=\"section-item full\" [field]=\"popupData\" name=\"file\" [attachments]=\"dialogData?.attachments\"\r\n [labelTextReadMode]=\"i18n.translate('Attachment')\" [labelTextWriteMode]=\"i18n.translate('Attachment')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('Attachment')\" [required]=\"true\" [multiple]=\"false\" [allowedExtensions]=\"dialogData?.data\"\r\n [isReadOnly]=\"section?.header?.readOnly\" [showActions]=\"false\"\r\n formControlName=\"file\"\r\n >\r\n</app-file-uploader>\r\n\r\n<app-textarea class=\"section-item d-block mt-4 mb-4\" [section]=\"section\" [field]=\"popupData?.fileDescription\" name=\"fileDescription\"\r\n [labelTextReadMode]=\"i18n.translate('description')\" [labelTextWriteMode]=\"i18n.translate('description')\"\r\n [hasColumnBreak]=\"false\" (emitedValue)=\"handleEmitValue($event,'fileDescription')\"\r\n [label]=\"i18n.translate('description')\" [required]=\"dialogData?.isRequired\" [minLength]='1' [maxLength]='500'\r\n [isReadOnly]=\"section?.header?.readOnly\" [errorMessage]=\"i18n.translate('lenghtMin1Max500')\"\r\n formControlName=\"description\" >\r\n \r\n</app-textarea>\r\n\r\n<app-textarea class=\"section-item\" [section]=\"section\" [field]=\"popupData?.attachmentcomment\" name=\"attachmentcomment\"\r\n [labelTextReadMode]=\"i18n.translate('comments')\" [labelTextWriteMode]=\"i18n.translate('comments')\"\r\n [hasColumnBreak]=\"false\" (emitedValue)=\"handleEmitValue($event,'attachmentcomment')\" [label]=\"i18n.translate('comments')\"\r\n [required]=\"false\" [minLength]='1' [maxLength]='500' [isReadOnly]=\"section?.header?.readOnly\"\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max500')\"\r\n formControlName=\"comments\">\r\n</app-textarea>\r\n</form>\r\n \r\n\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions class=\"default-footer justify-content-end gap-3\">\r\n <ds-button shape=\"outline\" matDialogClose [disabled]=\"(uploading)\" color=\"red\">{{i18n.translate('cancel')}}\r\n </ds-button>\r\n <ds-button (click)=\"addAttachments()\" [loading]=\"uploading\"\r\n [disabled]=\"(!(formGroup?.value?.file?.fileContents || formGroup?.value?.file?.attachmentId ) ||( dialogData?.isRequired && !formGroup?.value?.description )|| uploading || !formGroup.valid)\">\r\n @if(!editMode){\r\n <span>{{i18n.translate('add')}}</span>\r\n }\r\n @if(editMode){\r\n <span>{{i18n.translate('edit')}}</span>\r\n }\r\n\r\n </ds-button>\r\n </mat-dialog-actions>\r\n\r\n</div>\r\n", styles: ["::ng-deep .add-attachment-dialog{--popup-max-width: 500px !important;--popup-width: 100% !important}::ng-deep .default-footer ds-button::part(base){--btn-min-width: 90px }\n"], dependencies: [{ kind: "component", type: TextareaComponent, selector: "app-textarea", inputs: ["className", "preventSpecailChar"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: DocsUploaderComponent, selector: "app-file-uploader", inputs: ["useCrop", "formKey", "showLabel", "downloadLink", "showActions", "styleHeight", "fileInputHeight", "styleWidth", "hints", "allowedExtensions", "callApi", "display", "attachType", "error", "displayedFiles", "getDataFromTemplate", "allowFileContentsWithMultiAttachments", "accept", "signType", "showSignButton", "printType", "showPrintButton", "downloadType", "showDownloadButton", "preventFileContents", "maxSize"], outputs: ["selectedTemplateAttachment", "addSignatureClicked", "printActionClicked", "emitedValue", "downloadActionClicked"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i5.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i5.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
99
+ ], usesInheritance: true, ngImport: i0, template: "<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-end\" mat-dialog-title>\r\n <h3 class=\"mb-0 font-16 fw-medium\">{{ 'addAttachments' | translate }}</h3>\r\n <ds-button icon matDialogClose>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"px-md-4 mt-3\">\r\n <form [formGroup]=\"formGroup\">\r\n <app-file-uploader class=\"section-item full\" [field]=\"popupData\" name=\"file\" [attachments]=\"dialogData?.attachments\"\r\n [labelTextReadMode]=\"'Attachment' | translate\" [labelTextWriteMode]=\"'Attachment' | translate\"\r\n [hasColumnBreak]=\"false\" [label]=\"'Attachment' | translate\" [required]=\"true\" [multiple]=\"false\" \r\n [allowedExtensions]=\"dialogData?.data\"\r\n [isReadOnly]=\"section?.header?.readOnly\" [showActions]=\"false\"\r\n formControlName=\"file\">\r\n </app-file-uploader>\r\n\r\n <app-textarea class=\"section-item d-block mt-4 mb-4\" [section]=\"section\" [field]=\"popupData?.fileDescription\" name=\"fileDescription\"\r\n [labelTextReadMode]=\"'description' | translate\" [labelTextWriteMode]=\"'description' | translate\"\r\n [hasColumnBreak]=\"false\" (emitedValue)=\"handleEmitValue($event,'fileDescription')\"\r\n [label]=\"'description' | translate\" [required]=\"dialogData?.isRequired\" [minLength]='1' [maxLength]='500'\r\n [isReadOnly]=\"section?.header?.readOnly\" [errorMessage]=\"'lenghtMin1Max500' | translate\"\r\n formControlName=\"description\">\r\n </app-textarea>\r\n\r\n <app-textarea class=\"section-item\" [section]=\"section\" [field]=\"popupData?.attachmentcomment\" name=\"attachmentcomment\"\r\n [labelTextReadMode]=\"'comments' | translate\" [labelTextWriteMode]=\"'comments' | translate\"\r\n [hasColumnBreak]=\"false\" (emitedValue)=\"handleEmitValue($event,'attachmentcomment')\" \r\n [label]=\"'comments' | translate\" [required]=\"false\" [minLength]='1' [maxLength]='500' \r\n [isReadOnly]=\"section?.header?.readOnly\" [errorMessage]=\"'lenghtMin1Max500' | translate\"\r\n formControlName=\"comments\">\r\n </app-textarea>\r\n </form>\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions class=\"default-footer justify-content-end gap-3\">\r\n <ds-button shape=\"outline\" matDialogClose [disabled]=\"uploading\">{{ 'cancel' | translate }}</ds-button>\r\n <ds-button (click)=\"addAttachments()\" [loading]=\"uploading\"\r\n [disabled]=\"(!(formGroup?.value?.file?.fileContents || formGroup?.value?.file?.attachmentId ) || (dialogData?.isRequired && !formGroup?.value?.description) || uploading || !formGroup.valid)\">\r\n <ng-container *ngIf=\"!editMode; else editTemplate\">\r\n <span>{{ 'add' | translate }}</span>\r\n </ng-container>\r\n <ng-template #editTemplate>\r\n <span>{{ 'edit' | translate }}</span>\r\n </ng-template>\r\n </ds-button>\r\n </mat-dialog-actions>\r\n</div>", styles: ["::ng-deep .add-attachment-dialog{--popup-max-width: 500px !important;--popup-width: 100% !important}::ng-deep .default-footer ds-button::part(base){--btn-min-width: 90px }\n"], dependencies: [{ kind: "component", type: TextareaComponent, selector: "app-textarea", inputs: ["className", "preventSpecailChar"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: DocsUploaderComponent, selector: "app-file-uploader", inputs: ["useCrop", "formKey", "showLabel", "downloadLink", "showActions", "styleHeight", "fileInputHeight", "styleWidth", "hints", "allowedExtensions", "callApi", "display", "attachType", "error", "displayedFiles", "getDataFromTemplate", "allowFileContentsWithMultiAttachments", "accept", "signType", "showSignButton", "printType", "showPrintButton", "downloadType", "showDownloadButton", "preventFileContents", "maxSize"], outputs: ["selectedTemplateAttachment", "addSignatureClicked", "printActionClicked", "emitedValue", "downloadActionClicked"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i5.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i5.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
97
100
  }
98
101
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AttachmentSectionDataComponent, decorators: [{
99
102
  type: Component,
@@ -106,13 +109,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
106
109
  MatDialogModule,
107
110
  ReactiveFormsModule,
108
111
  MatDialogClose,
112
+ TranslatePipe
109
113
  ], providers: [
110
114
  {
111
115
  provide: NG_VALUE_ACCESSOR,
112
116
  useExisting: forwardRef(() => AttachmentSectionDataComponent),
113
117
  multi: true,
114
118
  },
115
- ], template: "<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-end\" mat-dialog-title>\r\n <h3 class=\"mb-0 font-16 fw-medium\">{{i18n.translate('addAttachments')}}</h3>\r\n <ds-button icon matDialogClose>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"px-md-4 mt-3\">\r\n <!-- add [callApi]=\"true\" input mobile issue not able to download it by base 64 -->\r\n<form [formGroup]=\"formGroup\">\r\n <app-file-uploader class=\"section-item full\" [field]=\"popupData\" name=\"file\" [attachments]=\"dialogData?.attachments\"\r\n [labelTextReadMode]=\"i18n.translate('Attachment')\" [labelTextWriteMode]=\"i18n.translate('Attachment')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('Attachment')\" [required]=\"true\" [multiple]=\"false\" [allowedExtensions]=\"dialogData?.data\"\r\n [isReadOnly]=\"section?.header?.readOnly\" [showActions]=\"false\"\r\n formControlName=\"file\"\r\n >\r\n</app-file-uploader>\r\n\r\n<app-textarea class=\"section-item d-block mt-4 mb-4\" [section]=\"section\" [field]=\"popupData?.fileDescription\" name=\"fileDescription\"\r\n [labelTextReadMode]=\"i18n.translate('description')\" [labelTextWriteMode]=\"i18n.translate('description')\"\r\n [hasColumnBreak]=\"false\" (emitedValue)=\"handleEmitValue($event,'fileDescription')\"\r\n [label]=\"i18n.translate('description')\" [required]=\"dialogData?.isRequired\" [minLength]='1' [maxLength]='500'\r\n [isReadOnly]=\"section?.header?.readOnly\" [errorMessage]=\"i18n.translate('lenghtMin1Max500')\"\r\n formControlName=\"description\" >\r\n \r\n</app-textarea>\r\n\r\n<app-textarea class=\"section-item\" [section]=\"section\" [field]=\"popupData?.attachmentcomment\" name=\"attachmentcomment\"\r\n [labelTextReadMode]=\"i18n.translate('comments')\" [labelTextWriteMode]=\"i18n.translate('comments')\"\r\n [hasColumnBreak]=\"false\" (emitedValue)=\"handleEmitValue($event,'attachmentcomment')\" [label]=\"i18n.translate('comments')\"\r\n [required]=\"false\" [minLength]='1' [maxLength]='500' [isReadOnly]=\"section?.header?.readOnly\"\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max500')\"\r\n formControlName=\"comments\">\r\n</app-textarea>\r\n</form>\r\n \r\n\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions class=\"default-footer justify-content-end gap-3\">\r\n <ds-button shape=\"outline\" matDialogClose [disabled]=\"(uploading)\" color=\"red\">{{i18n.translate('cancel')}}\r\n </ds-button>\r\n <ds-button (click)=\"addAttachments()\" [loading]=\"uploading\"\r\n [disabled]=\"(!(formGroup?.value?.file?.fileContents || formGroup?.value?.file?.attachmentId ) ||( dialogData?.isRequired && !formGroup?.value?.description )|| uploading || !formGroup.valid)\">\r\n @if(!editMode){\r\n <span>{{i18n.translate('add')}}</span>\r\n }\r\n @if(editMode){\r\n <span>{{i18n.translate('edit')}}</span>\r\n }\r\n\r\n </ds-button>\r\n </mat-dialog-actions>\r\n\r\n</div>\r\n", styles: ["::ng-deep .add-attachment-dialog{--popup-max-width: 500px !important;--popup-width: 100% !important}::ng-deep .default-footer ds-button::part(base){--btn-min-width: 90px }\n"] }]
119
+ ], template: "<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-end\" mat-dialog-title>\r\n <h3 class=\"mb-0 font-16 fw-medium\">{{ 'addAttachments' | translate }}</h3>\r\n <ds-button icon matDialogClose>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"px-md-4 mt-3\">\r\n <form [formGroup]=\"formGroup\">\r\n <app-file-uploader class=\"section-item full\" [field]=\"popupData\" name=\"file\" [attachments]=\"dialogData?.attachments\"\r\n [labelTextReadMode]=\"'Attachment' | translate\" [labelTextWriteMode]=\"'Attachment' | translate\"\r\n [hasColumnBreak]=\"false\" [label]=\"'Attachment' | translate\" [required]=\"true\" [multiple]=\"false\" \r\n [allowedExtensions]=\"dialogData?.data\"\r\n [isReadOnly]=\"section?.header?.readOnly\" [showActions]=\"false\"\r\n formControlName=\"file\">\r\n </app-file-uploader>\r\n\r\n <app-textarea class=\"section-item d-block mt-4 mb-4\" [section]=\"section\" [field]=\"popupData?.fileDescription\" name=\"fileDescription\"\r\n [labelTextReadMode]=\"'description' | translate\" [labelTextWriteMode]=\"'description' | translate\"\r\n [hasColumnBreak]=\"false\" (emitedValue)=\"handleEmitValue($event,'fileDescription')\"\r\n [label]=\"'description' | translate\" [required]=\"dialogData?.isRequired\" [minLength]='1' [maxLength]='500'\r\n [isReadOnly]=\"section?.header?.readOnly\" [errorMessage]=\"'lenghtMin1Max500' | translate\"\r\n formControlName=\"description\">\r\n </app-textarea>\r\n\r\n <app-textarea class=\"section-item\" [section]=\"section\" [field]=\"popupData?.attachmentcomment\" name=\"attachmentcomment\"\r\n [labelTextReadMode]=\"'comments' | translate\" [labelTextWriteMode]=\"'comments' | translate\"\r\n [hasColumnBreak]=\"false\" (emitedValue)=\"handleEmitValue($event,'attachmentcomment')\" \r\n [label]=\"'comments' | translate\" [required]=\"false\" [minLength]='1' [maxLength]='500' \r\n [isReadOnly]=\"section?.header?.readOnly\" [errorMessage]=\"'lenghtMin1Max500' | translate\"\r\n formControlName=\"comments\">\r\n </app-textarea>\r\n </form>\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions class=\"default-footer justify-content-end gap-3\">\r\n <ds-button shape=\"outline\" matDialogClose [disabled]=\"uploading\">{{ 'cancel' | translate }}</ds-button>\r\n <ds-button (click)=\"addAttachments()\" [loading]=\"uploading\"\r\n [disabled]=\"(!(formGroup?.value?.file?.fileContents || formGroup?.value?.file?.attachmentId ) || (dialogData?.isRequired && !formGroup?.value?.description) || uploading || !formGroup.valid)\">\r\n <ng-container *ngIf=\"!editMode; else editTemplate\">\r\n <span>{{ 'add' | translate }}</span>\r\n </ng-container>\r\n <ng-template #editTemplate>\r\n <span>{{ 'edit' | translate }}</span>\r\n </ng-template>\r\n </ds-button>\r\n </mat-dialog-actions>\r\n</div>", styles: ["::ng-deep .add-attachment-dialog{--popup-max-width: 500px !important;--popup-width: 100% !important}::ng-deep .default-footer ds-button::part(base){--btn-min-width: 90px }\n"] }]
116
120
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.CoreI18nService }, { type: i2.ToastrService }, { type: i1.CoreService }, { type: i3.DomSanitizer }, { type: i4.FormBuilder }, { type: i5.MatDialogRef }, { type: undefined, decorators: [{
117
121
  type: Inject,
118
122
  args: [MAT_DIALOG_DATA]
@@ -121,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
121
125
  }], section: [{
122
126
  type: Input
123
127
  }] } });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWF0dGFjaG1lbnQtc2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9hZGQtYXR0YWNobWVudC1zZWN0aW9uL2FkZC1hdHRhY2htZW50LXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvYWRkLWF0dGFjaG1lbnQtc2VjdGlvbi9hZGQtYXR0YWNobWVudC1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLFVBQVUsRUFDVixNQUFNLEVBRU4sS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsZUFBZSxHQUVoQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVwRixPQUFPLEVBRUwsV0FBVyxFQUVYLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7QUE2QmhGLE1BQU0sT0FBTyw4QkFFWCxTQUFRLDZCQUFtQztJQWdCbEM7SUFDeUI7SUFo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QWU7eUNBWmhCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcclxuICBmb3J3YXJkUmVmLFxyXG4gIEluamVjdCxcclxuICBJbmplY3RvcixcclxuICBJbnB1dCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGV4dGFyZWFDb21wb25lbnQgfSBmcm9tICcuLi90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIE1BVF9ESUFMT0dfREFUQSxcclxuICBNYXREaWFsb2dBY3Rpb25zLFxyXG4gIE1hdERpYWxvZ0Nsb3NlLFxyXG4gIE1hdERpYWxvZ0NvbnRlbnQsXHJcbiAgTWF0RGlhbG9nTW9kdWxlLFxyXG4gIE1hdERpYWxvZ1JlZixcclxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmUgfSBmcm9tICcuLi9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHtcclxuICBGb3JtQnVpbGRlcixcclxuICBGb3JtQ29udHJvbCxcclxuICBGb3JtR3JvdXAsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRG9jc1VwbG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZG9jLXVwbG9hZGVyL2RvY3MtdXBsb2FkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHtDb3JlSTE4blNlcnZpY2UsIENvcmVTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vLi4vc2VydmljZXNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWFkZC1hdHRhY2htZW50LXNlY3Rpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtYXR0YWNobWVudC1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hZGQtYXR0YWNobWVudC1zZWN0aW9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgVGV4dGFyZWFDb21wb25lbnQsXHJcbiAgICBNYXREaWFsb2dDb250ZW50LFxyXG4gICAgRG9jc1VwbG9hZGVyQ29tcG9uZW50LFxyXG4gICAgTWF0RGlhbG9nQWN0aW9ucyxcclxuICAgIE5nSWYsXHJcbiAgICBNYXREaWFsb2dNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0RGlhbG9nQ2xvc2UsXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEF0dGFjaG1lbnRTZWN0aW9uRGF0YUNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXR0YWNobWVudFNlY3Rpb25EYXRhQ29tcG9uZW50PFxyXG4gIFR5cGVcclxuPiBleHRlbmRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlPFR5cGU+IHtcclxuICBwb3B1cERhdGE6IGFueSA9IHt9O1xyXG4gIHBvcHVwRGF0YU9yZzogYW55ID0ge307XHJcbiAgdXBsb2FkaW5nOiBib29sZWFuO1xyXG4gIGVkaXRNb2RlOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGhhc0NvbHVtbkJyZWFrOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNlY3Rpb246IFNlY3Rpb247XHJcbiAgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgaTE4bjogQ29yZUkxOG5TZXJ2aWNlLFxyXG4gICAgdG9hc3RlclNlcnZpY2U6IFRvYXN0clNlcnZpY2UsXHJcbiAgICBjb3JlU2VydmljZTogQ29yZVNlcnZpY2UsXHJcbiAgICBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxhbnk+LFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkaWFsb2dEYXRhOiBhbnlcclxuICApIHtcclxuICAgIHN1cGVyKGluamVjdG9yLCBpMThuLCB0b2FzdGVyU2VydmljZSwgY29yZVNlcnZpY2UsIHNhbml0aXplciwgZmIpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBzdXBlci5uZ09uSW5pdCgpXHJcbiAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGE/LmF0dGFjaG1lbnRMaXN0RGF0YSkge1xyXG4gICAgICB0aGlzLnBvcHVwRGF0YSA9IHRoaXMuZGlhbG9nRGF0YS5hdHRhY2htZW50TGlzdERhdGE7XHJcbiAgICAgIHRoaXMucG9wdXBEYXRhT3JnID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5wb3B1cERhdGEpO1xyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snZmlsZSddLnNldFZhbHVlKFxyXG4gICAgICAgIHRoaXMuZGlhbG9nRGF0YS5hdHRhY2htZW50TGlzdERhdGFcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbJ2Rlc2NyaXB0aW9uJ10uc2V0VmFsdWUoXHJcbiAgICAgICAgdGhpcy5kaWFsb2dEYXRhLmF0dGFjaG1lbnRMaXN0RGF0YS5maWxlRGVzY3JpcHRpb25cclxuICAgICAgKTtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbJ2NvbW1lbnRzJ10uc2V0VmFsdWUoXHJcbiAgICAgICAgdGhpcy5kaWFsb2dEYXRhLmF0dGFjaG1lbnRMaXN0RGF0YS5maWxlQ29tbWVudHNcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5lZGl0TW9kZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNyZWF0ZUZvcm0oKSB7XHJcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBmaWxlOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBuZXcgRm9ybUNvbnRyb2wobnVsbCx0aGlzLmRpYWxvZ0RhdGEuZGVzY3JpcHRpb25SZXF1aXJlZCA/IFZhbGlkYXRvcnMucmVxdWlyZWQ6IG51bGwpLFxyXG4gICAgICBjb21tZW50czogbmV3IEZvcm1Db250cm9sKG51bGwsIHRoaXMuZGlhbG9nRGF0YS5jb21tZW50c1JlcXVpcmVkID8gVmFsaWRhdG9ycy5yZXF1aXJlZDogbnVsbCksXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5wb3B1cERhdGFPcmcpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRW1pdFZhbHVlKGRhdGE6IGFueSwgZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMucG9wdXBEYXRhW2ZpZWxkTmFtZV0gPSBkYXRhO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQXR0YWNobWVudEVtaXRWYWx1ZShkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMucG9wdXBEYXRhID0ge1xyXG4gICAgICBmaWxlQ29udGVudHM6IGRhdGE/LmZpbGVDb250ZW50cyxcclxuICAgICAgZmlsZU5hbWU6IGRhdGE/LmZpbGVOYW1lLFxyXG4gICAgICBtaW1lVHlwZTogZGF0YT8ubWltZVR5cGUsXHJcbiAgICAgIGZpbGVEZXNjcmlwdGlvbjogdGhpcy5wb3B1cERhdGE/LmZpbGVEZXNjcmlwdGlvbixcclxuICAgICAgYXR0YWNobWVudGNvbW1lbnQ6IHRoaXMucG9wdXBEYXRhPy5hdHRhY2htZW50Y29tbWVudCxcclxuICAgICAgZmlsZUNvbW1lbnRzOiB0aGlzLnBvcHVwRGF0YT8uYXR0YWNobWVudGNvbW1lbnQsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgYWRkQXR0YWNobWVudHMoKSB7XHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICBmaWxlRGVzY3JpcHRpb246IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWydkZXNjcmlwdGlvbiddLnZhbHVlLFxyXG4gICAgICBhdHRhY2htZW50Y29tbWVudDogdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbJ2NvbW1lbnRzJ10udmFsdWUsXHJcbiAgICAgIGZpbGVDb21tZW50czogdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbJ2NvbW1lbnRzJ10udmFsdWUsXHJcbiAgICAgIGZpbGVOYW1lOiB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snZmlsZSddLnZhbHVlLmZpbGVOYW1lLFxyXG4gICAgICBtaW1lVHlwZTogdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbJ2ZpbGUnXS52YWx1ZS5taW1lVHlwZSxcclxuICAgICAgZmlsZUNvbnRlbnRzOiB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snZmlsZSddLnZhbHVlLmZpbGVDb250ZW50cyxcclxuICAgIH07XHJcbiAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmNvcmVTZXJ2aWNlLmdldEF0dGFjaG1lbnRzKGRhdGEpLnN1YnNjcmliZSgoUmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBpZiAoUmVzcG9uc2UpIHtcclxuICAgICAgICBjb25zdCBuZXdPYmogPSB7XHJcbiAgICAgICAgICBmaWxlRGVzY3JpcHRpb246IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWydkZXNjcmlwdGlvbiddLnZhbHVlLFxyXG4gICAgICAgICAgYXR0YWNobWVudGNvbW1lbnQ6IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWydjb21tZW50cyddLnZhbHVlLFxyXG4gICAgICAgICAgZmlsZUNvbW1lbnRzOiB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snY29tbWVudHMnXS52YWx1ZSxcclxuICAgICAgICAgIGZpbGVOYW1lOiB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snZmlsZSddLnZhbHVlLmZpbGVOYW1lLFxyXG4gICAgICAgICAgYXR0YWNobWVudElkOiBSZXNwb25zZS5hdHRhY2htZW50LmF0dGFjaG1lbnRJZCxcclxuICAgICAgICAgIG1pbWVUeXBlOiB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snZmlsZSddLnZhbHVlLm1pbWVUeXBlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UobmV3T2JqKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJwb3B1cC1jb250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtZW5kXCIgbWF0LWRpYWxvZy10aXRsZT5cclxuICAgIDxoMyBjbGFzcz1cIm1iLTAgZm9udC0xNiBmdy1tZWRpdW1cIj57e2kxOG4udHJhbnNsYXRlKCdhZGRBdHRhY2htZW50cycpfX08L2gzPlxyXG4gICAgPGRzLWJ1dHRvbiAgaWNvbiBtYXREaWFsb2dDbG9zZT5cclxuICAgICAgPGRzLWljb24gaWNvbj1cImNsb3NlXCIgY2xhc3M9XCJmcy0yMCBmYy1ibGFja1wiPjwvZHMtaWNvbj5cclxuICAgIDwvZHMtYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHgtbWQtNCBtdC0zXCI+XHJcbiAgICAgIDwhLS0gYWRkIFtjYWxsQXBpXT1cInRydWVcIiAgaW5wdXQgbW9iaWxlIGlzc3VlIG5vdCBhYmxlIHRvIGRvd25sb2FkIGl0IGJ5IGJhc2UgNjQgLS0+XHJcbjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XHJcbiAgPGFwcC1maWxlLXVwbG9hZGVyIGNsYXNzPVwic2VjdGlvbi1pdGVtIGZ1bGxcIiBbZmllbGRdPVwicG9wdXBEYXRhXCIgbmFtZT1cImZpbGVcIiBbYXR0YWNobWVudHNdPVwiZGlhbG9nRGF0YT8uYXR0YWNobWVudHNcIlxyXG4gIFtsYWJlbFRleHRSZWFkTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnQXR0YWNobWVudCcpXCIgW2xhYmVsVGV4dFdyaXRlTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnQXR0YWNobWVudCcpXCJcclxuICBbaGFzQ29sdW1uQnJlYWtdPVwiZmFsc2VcIiBbbGFiZWxdPVwiaTE4bi50cmFuc2xhdGUoJ0F0dGFjaG1lbnQnKVwiIFtyZXF1aXJlZF09XCJ0cnVlXCIgW211bHRpcGxlXT1cImZhbHNlXCIgW2FsbG93ZWRFeHRlbnNpb25zXT1cImRpYWxvZ0RhdGE/LmRhdGFcIlxyXG4gIFtpc1JlYWRPbmx5XT1cInNlY3Rpb24/LmhlYWRlcj8ucmVhZE9ubHlcIiBbc2hvd0FjdGlvbnNdPVwiZmFsc2VcIlxyXG4gIGZvcm1Db250cm9sTmFtZT1cImZpbGVcIlxyXG4gID5cclxuPC9hcHAtZmlsZS11cGxvYWRlcj5cclxuXHJcbjxhcHAtdGV4dGFyZWEgY2xhc3M9XCJzZWN0aW9uLWl0ZW0gZC1ibG9jayBtdC00IG1iLTRcIiBbc2VjdGlvbl09XCJzZWN0aW9uXCIgW2ZpZWxkXT1cInBvcHVwRGF0YT8uZmlsZURlc2NyaXB0aW9uXCIgbmFtZT1cImZpbGVEZXNjcmlwdGlvblwiXHJcbiAgW2xhYmVsVGV4dFJlYWRNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdkZXNjcmlwdGlvbicpXCIgW2xhYmVsVGV4dFdyaXRlTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnZGVzY3JpcHRpb24nKVwiXHJcbiAgW2hhc0NvbHVtbkJyZWFrXT1cImZhbHNlXCIgKGVtaXRlZFZhbHVlKT1cImhhbmRsZUVtaXRWYWx1ZSgkZXZlbnQsJ2ZpbGVEZXNjcmlwdGlvbicpXCJcclxuICBbbGFiZWxdPVwiaTE4bi50cmFuc2xhdGUoJ2Rlc2NyaXB0aW9uJylcIiBbcmVxdWlyZWRdPVwiZGlhbG9nRGF0YT8uaXNSZXF1aXJlZFwiIFttaW5MZW5ndGhdPScxJyBbbWF4TGVuZ3RoXT0nNTAwJ1xyXG4gIFtpc1JlYWRPbmx5XT1cInNlY3Rpb24/LmhlYWRlcj8ucmVhZE9ubHlcIiBbZXJyb3JNZXNzYWdlXT1cImkxOG4udHJhbnNsYXRlKCdsZW5naHRNaW4xTWF4NTAwJylcIlxyXG4gIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCIgPlxyXG4gIFxyXG48L2FwcC10ZXh0YXJlYT5cclxuXHJcbjxhcHAtdGV4dGFyZWEgY2xhc3M9XCJzZWN0aW9uLWl0ZW1cIiBbc2VjdGlvbl09XCJzZWN0aW9uXCIgW2ZpZWxkXT1cInBvcHVwRGF0YT8uYXR0YWNobWVudGNvbW1lbnRcIiBuYW1lPVwiYXR0YWNobWVudGNvbW1lbnRcIlxyXG4gIFtsYWJlbFRleHRSZWFkTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnY29tbWVudHMnKVwiIFtsYWJlbFRleHRXcml0ZU1vZGVdPVwiaTE4bi50cmFuc2xhdGUoJ2NvbW1lbnRzJylcIlxyXG4gIFtoYXNDb2x1bW5CcmVha109XCJmYWxzZVwiIChlbWl0ZWRWYWx1ZSk9XCJoYW5kbGVFbWl0VmFsdWUoJGV2ZW50LCdhdHRhY2htZW50Y29tbWVudCcpXCIgW2xhYmVsXT1cImkxOG4udHJhbnNsYXRlKCdjb21tZW50cycpXCJcclxuICBbcmVxdWlyZWRdPVwiZmFsc2VcIiBbbWluTGVuZ3RoXT0nMScgW21heExlbmd0aF09JzUwMCcgW2lzUmVhZE9ubHldPVwic2VjdGlvbj8uaGVhZGVyPy5yZWFkT25seVwiXHJcbiAgW2Vycm9yTWVzc2FnZV09XCJpMThuLnRyYW5zbGF0ZSgnbGVuZ2h0TWluMU1heDUwMCcpXCJcclxuICBmb3JtQ29udHJvbE5hbWU9XCJjb21tZW50c1wiPlxyXG48L2FwcC10ZXh0YXJlYT5cclxuPC9mb3JtPlxyXG4gICBcclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1kaWFsb2ctY29udGVudD5cclxuICA8bWF0LWRpYWxvZy1hY3Rpb25zIGNsYXNzPVwiZGVmYXVsdC1mb290ZXIganVzdGlmeS1jb250ZW50LWVuZCBnYXAtM1wiPlxyXG4gICAgPGRzLWJ1dHRvbiAgc2hhcGU9XCJvdXRsaW5lXCIgIG1hdERpYWxvZ0Nsb3NlIFtkaXNhYmxlZF09XCIodXBsb2FkaW5nKVwiIGNvbG9yPVwicmVkXCI+e3tpMThuLnRyYW5zbGF0ZSgnY2FuY2VsJyl9fVxyXG4gICAgPC9kcy1idXR0b24+XHJcbiAgICA8ZHMtYnV0dG9uIChjbGljayk9XCJhZGRBdHRhY2htZW50cygpXCIgW2xvYWRpbmddPVwidXBsb2FkaW5nXCJcclxuICAgICAgW2Rpc2FibGVkXT1cIighKGZvcm1Hcm91cD8udmFsdWU/LmZpbGU/LmZpbGVDb250ZW50cyB8fCBmb3JtR3JvdXA/LnZhbHVlPy5maWxlPy5hdHRhY2htZW50SWQgKSB8fCggZGlhbG9nRGF0YT8uaXNSZXF1aXJlZCAmJiAhZm9ybUdyb3VwPy52YWx1ZT8uZGVzY3JpcHRpb24gKXx8IHVwbG9hZGluZyB8fCAhZm9ybUdyb3VwLnZhbGlkKVwiPlxyXG4gICAgICBAaWYoIWVkaXRNb2RlKXtcclxuICAgICAgPHNwYW4+e3tpMThuLnRyYW5zbGF0ZSgnYWRkJyl9fTwvc3Bhbj5cclxuICAgICAgfVxyXG4gICAgICBAaWYoZWRpdE1vZGUpe1xyXG4gICAgICA8c3Bhbj57e2kxOG4udHJhbnNsYXRlKCdlZGl0Jyl9fTwvc3Bhbj5cclxuICAgICAgfVxyXG5cclxuICAgIDwvZHMtYnV0dG9uPlxyXG4gIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG5cclxuPC9kaXY+XHJcbiJdfQ==
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWF0dGFjaG1lbnQtc2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvZm9ybS1maWVsZC9hZGQtYXR0YWNobWVudC1zZWN0aW9uL2FkZC1hdHRhY2htZW50LXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvYWRkLWF0dGFjaG1lbnQtc2VjdGlvbi9hZGQtYXR0YWNobWVudC1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLFVBQVUsRUFDVixVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFFTixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUNMLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGdCQUFnQixFQUNoQixlQUFlLEdBRWhCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXBGLE9BQU8sRUFFTCxXQUFXLEVBRVgsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUloRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFB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QkFBZ0I7d0JBQ2hCLHFCQUFxQjt3QkFDckIsZ0JBQWdCO3dCQUNoQixJQUFJO3dCQUNKLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGFBQWE7cUJBQ2QsYUFDVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwrQkFBK0IsQ0FBQzs0QkFDN0QsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OzBCQXVCRSxNQUFNOzJCQUFDLGVBQWU7eUNBZGhCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcclxuICBEZXN0cm95UmVmLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgaW5qZWN0LFxyXG4gIEluamVjdCxcclxuICBJbmplY3RvcixcclxuICBJbnB1dCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGV4dGFyZWFDb21wb25lbnQgfSBmcm9tICcuLi90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIE1BVF9ESUFMT0dfREFUQSxcclxuICBNYXREaWFsb2dBY3Rpb25zLFxyXG4gIE1hdERpYWxvZ0Nsb3NlLFxyXG4gIE1hdERpYWxvZ0NvbnRlbnQsXHJcbiAgTWF0RGlhbG9nTW9kdWxlLFxyXG4gIE1hdERpYWxvZ1JlZixcclxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmUgfSBmcm9tICcuLi9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHtcclxuICBGb3JtQnVpbGRlcixcclxuICBGb3JtQ29udHJvbCxcclxuICBGb3JtR3JvdXAsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRG9jc1VwbG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZG9jLXVwbG9hZGVyL2RvY3MtdXBsb2FkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHtDb3JlSTE4blNlcnZpY2UsIENvcmVTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vLi4vc2VydmljZXNcIjtcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQge1RyYW5zbGF0ZVBpcGV9IGZyb20gXCIuLi8uLi8uLi8uLi9waXBlcy90cmFuc2xhdGUucGlwZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYWRkLWF0dGFjaG1lbnQtc2VjdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1hdHRhY2htZW50LXNlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FkZC1hdHRhY2htZW50LXNlY3Rpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBUZXh0YXJlYUNvbXBvbmVudCxcclxuICAgIE1hdERpYWxvZ0NvbnRlbnQsXHJcbiAgICBEb2NzVXBsb2FkZXJDb21wb25lbnQsXHJcbiAgICBNYXREaWFsb2dBY3Rpb25zLFxyXG4gICAgTmdJZixcclxuICAgIE1hdERpYWxvZ01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBNYXREaWFsb2dDbG9zZSxcclxuICAgIFRyYW5zbGF0ZVBpcGVcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXR0YWNobWVudFNlY3Rpb25EYXRhQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdHRhY2htZW50U2VjdGlvbkRhdGFDb21wb25lbnQ8XHJcbiAgVHlwZVxyXG4+IGV4dGVuZHMgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmU8VHlwZT4ge1xyXG4gIHBvcHVwRGF0YTogYW55ID0ge307XHJcbiAgcG9wdXBEYXRhT3JnOiBhbnkgPSB7fTtcclxuICB1cGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgZWRpdE1vZGU6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaGFzQ29sdW1uQnJlYWs6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2VjdGlvbjogU2VjdGlvbjtcclxuICBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcclxuICBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBpMThuOiBDb3JlSTE4blNlcnZpY2UsXHJcbiAgICB0b2FzdGVyU2VydmljZTogVG9hc3RyU2VydmljZSxcclxuICAgIGNvcmVTZXJ2aWNlOiBDb3JlU2VydmljZSxcclxuICAgIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPGFueT4sXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRpYWxvZ0RhdGE6IGFueVxyXG4gICkge1xyXG4gICAgc3VwZXIoaW5qZWN0b3IsIGkxOG4sIHRvYXN0ZXJTZXJ2aWNlLCBjb3JlU2VydmljZSwgc2FuaXRpemVyLCBmYik7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcclxuICAgIC8vIHN1cGVyLm5nT25Jbml0KClcclxuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xyXG4gICAgaWYgKHRoaXMuZGlhbG9nRGF0YT8uYXR0YWNobWVudExpc3REYXRhKSB7XHJcbiAgICAgIHRoaXMucG9wdXBEYXRhID0gdGhpcy5kaWFsb2dEYXRhLmF0dGFjaG1lbnRMaXN0RGF0YTtcclxuICAgICAgdGhpcy5wb3B1cERhdGFPcmcgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnBvcHVwRGF0YSk7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWydmaWxlJ10uc2V0VmFsdWUoXHJcbiAgICAgICAgdGhpcy5kaWFsb2dEYXRhLmF0dGFjaG1lbnRMaXN0RGF0YVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snZGVzY3JpcHRpb24nXS5zZXRWYWx1ZShcclxuICAgICAgICB0aGlzLmRpYWxvZ0RhdGEuYXR0YWNobWVudExpc3REYXRhLmZpbGVEZXNjcmlwdGlvblxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snY29tbWVudHMnXS5zZXRWYWx1ZShcclxuICAgICAgICB0aGlzLmRpYWxvZ0RhdGEuYXR0YWNobWVudExpc3REYXRhLmZpbGVDb21tZW50c1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmVkaXRNb2RlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcbiAgY3JlYXRlRm9ybSgpIHtcclxuICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIGZpbGU6IG5ldyBGb3JtQ29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgZGVzY3JpcHRpb246IG5ldyBGb3JtQ29udHJvbChudWxsLHRoaXMuZGlhbG9nRGF0YS5kZXNjcmlwdGlvblJlcXVpcmVkID8gVmFsaWRhdG9ycy5yZXF1aXJlZDogbnVsbCksXHJcbiAgICAgIGNvbW1lbnRzOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgdGhpcy5kaWFsb2dEYXRhLmNvbW1lbnRzUmVxdWlyZWQgPyBWYWxpZGF0b3JzLnJlcXVpcmVkOiBudWxsKSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0aGlzLnBvcHVwRGF0YU9yZyk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVFbWl0VmFsdWUoZGF0YTogYW55LCBmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5wb3B1cERhdGFbZmllbGROYW1lXSA9IGRhdGE7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVBdHRhY2htZW50RW1pdFZhbHVlKGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5wb3B1cERhdGEgPSB7XHJcbiAgICAgIGZpbGVDb250ZW50czogZGF0YT8uZmlsZUNvbnRlbnRzLFxyXG4gICAgICBmaWxlTmFtZTogZGF0YT8uZmlsZU5hbWUsXHJcbiAgICAgIG1pbWVUeXBlOiBkYXRhPy5taW1lVHlwZSxcclxuICAgICAgZmlsZURlc2NyaXB0aW9uOiB0aGlzLnBvcHVwRGF0YT8uZmlsZURlc2NyaXB0aW9uLFxyXG4gICAgICBhdHRhY2htZW50Y29tbWVudDogdGhpcy5wb3B1cERhdGE/LmF0dGFjaG1lbnRjb21tZW50LFxyXG4gICAgICBmaWxlQ29tbWVudHM6IHRoaXMucG9wdXBEYXRhPy5hdHRhY2htZW50Y29tbWVudCxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBhZGRBdHRhY2htZW50cygpIHtcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIGZpbGVEZXNjcmlwdGlvbjogdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbJ2Rlc2NyaXB0aW9uJ10udmFsdWUsXHJcbiAgICAgIGF0dGFjaG1lbnRjb21tZW50OiB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snY29tbWVudHMnXS52YWx1ZSxcclxuICAgICAgZmlsZUNvbW1lbnRzOiB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snY29tbWVudHMnXS52YWx1ZSxcclxuICAgICAgZmlsZU5hbWU6IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWydmaWxlJ10udmFsdWUuZmlsZU5hbWUsXHJcbiAgICAgIG1pbWVUeXBlOiB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snZmlsZSddLnZhbHVlLm1pbWVUeXBlLFxyXG4gICAgICBmaWxlQ29udGVudHM6IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWydmaWxlJ10udmFsdWUuZmlsZUNvbnRlbnRzLFxyXG4gICAgfTtcclxuICAgIHRoaXMudXBsb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuY29yZVNlcnZpY2UuZ2V0QXR0YWNobWVudHMoZGF0YSkucGlwZShcclxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcclxuICAgICkuc3Vic2NyaWJlKChSZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIGlmIChSZXNwb25zZSkge1xyXG4gICAgICAgIGNvbnN0IG5ld09iaiA9IHtcclxuICAgICAgICAgIGZpbGVEZXNjcmlwdGlvbjogdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbJ2Rlc2NyaXB0aW9uJ10udmFsdWUsXHJcbiAgICAgICAgICBhdHRhY2htZW50Y29tbWVudDogdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbJ2NvbW1lbnRzJ10udmFsdWUsXHJcbiAgICAgICAgICBmaWxlQ29tbWVudHM6IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWydjb21tZW50cyddLnZhbHVlLFxyXG4gICAgICAgICAgZmlsZU5hbWU6IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWydmaWxlJ10udmFsdWUuZmlsZU5hbWUsXHJcbiAgICAgICAgICBhdHRhY2htZW50SWQ6IFJlc3BvbnNlLmF0dGFjaG1lbnQuYXR0YWNobWVudElkLFxyXG4gICAgICAgICAgbWltZVR5cGU6IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWydmaWxlJ10udmFsdWUubWltZVR5cGUsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShuZXdPYmopO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRhaW5lclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmRcIiBtYXQtZGlhbG9nLXRpdGxlPlxyXG4gICAgPGgzIGNsYXNzPVwibWItMCBmb250LTE2IGZ3LW1lZGl1bVwiPnt7ICdhZGRBdHRhY2htZW50cycgfCB0cmFuc2xhdGUgfX08L2gzPlxyXG4gICAgPGRzLWJ1dHRvbiBpY29uIG1hdERpYWxvZ0Nsb3NlPlxyXG4gICAgICA8ZHMtaWNvbiBpY29uPVwiY2xvc2VcIiBjbGFzcz1cImZzLTIwIGZjLWJsYWNrXCI+PC9kcy1pY29uPlxyXG4gICAgPC9kcy1idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPG1hdC1kaWFsb2ctY29udGVudD5cclxuICAgIDxkaXYgY2xhc3M9XCJweC1tZC00IG10LTNcIj5cclxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cclxuICAgICAgICA8YXBwLWZpbGUtdXBsb2FkZXIgY2xhc3M9XCJzZWN0aW9uLWl0ZW0gZnVsbFwiIFtmaWVsZF09XCJwb3B1cERhdGFcIiBuYW1lPVwiZmlsZVwiIFthdHRhY2htZW50c109XCJkaWFsb2dEYXRhPy5hdHRhY2htZW50c1wiXHJcbiAgICAgICAgICBbbGFiZWxUZXh0UmVhZE1vZGVdPVwiJ0F0dGFjaG1lbnQnIHwgdHJhbnNsYXRlXCIgW2xhYmVsVGV4dFdyaXRlTW9kZV09XCInQXR0YWNobWVudCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgW2hhc0NvbHVtbkJyZWFrXT1cImZhbHNlXCIgW2xhYmVsXT1cIidBdHRhY2htZW50JyB8IHRyYW5zbGF0ZVwiIFtyZXF1aXJlZF09XCJ0cnVlXCIgW211bHRpcGxlXT1cImZhbHNlXCIgXHJcbiAgICAgICAgICBbYWxsb3dlZEV4dGVuc2lvbnNdPVwiZGlhbG9nRGF0YT8uZGF0YVwiXHJcbiAgICAgICAgICBbaXNSZWFkT25seV09XCJzZWN0aW9uPy5oZWFkZXI/LnJlYWRPbmx5XCIgW3Nob3dBY3Rpb25zXT1cImZhbHNlXCJcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImZpbGVcIj5cclxuICAgICAgICA8L2FwcC1maWxlLXVwbG9hZGVyPlxyXG5cclxuICAgICAgICA8YXBwLXRleHRhcmVhIGNsYXNzPVwic2VjdGlvbi1pdGVtIGQtYmxvY2sgbXQtNCBtYi00XCIgW3NlY3Rpb25dPVwic2VjdGlvblwiIFtmaWVsZF09XCJwb3B1cERhdGE/LmZpbGVEZXNjcmlwdGlvblwiIG5hbWU9XCJmaWxlRGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgW2xhYmVsVGV4dFJlYWRNb2RlXT1cIidkZXNjcmlwdGlvbicgfCB0cmFuc2xhdGVcIiBbbGFiZWxUZXh0V3JpdGVNb2RlXT1cIidkZXNjcmlwdGlvbicgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgW2hhc0NvbHVtbkJyZWFrXT1cImZhbHNlXCIgKGVtaXRlZFZhbHVlKT1cImhhbmRsZUVtaXRWYWx1ZSgkZXZlbnQsJ2ZpbGVEZXNjcmlwdGlvbicpXCJcclxuICAgICAgICAgIFtsYWJlbF09XCInZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlXCIgW3JlcXVpcmVkXT1cImRpYWxvZ0RhdGE/LmlzUmVxdWlyZWRcIiBbbWluTGVuZ3RoXT0nMScgW21heExlbmd0aF09JzUwMCdcclxuICAgICAgICAgIFtpc1JlYWRPbmx5XT1cInNlY3Rpb24/LmhlYWRlcj8ucmVhZE9ubHlcIiBbZXJyb3JNZXNzYWdlXT1cIidsZW5naHRNaW4xTWF4NTAwJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiPlxyXG4gICAgICAgIDwvYXBwLXRleHRhcmVhPlxyXG5cclxuICAgICAgICA8YXBwLXRleHRhcmVhIGNsYXNzPVwic2VjdGlvbi1pdGVtXCIgW3NlY3Rpb25dPVwic2VjdGlvblwiIFtmaWVsZF09XCJwb3B1cERhdGE/LmF0dGFjaG1lbnRjb21tZW50XCIgbmFtZT1cImF0dGFjaG1lbnRjb21tZW50XCJcclxuICAgICAgICAgIFtsYWJlbFRleHRSZWFkTW9kZV09XCInY29tbWVudHMnIHwgdHJhbnNsYXRlXCIgW2xhYmVsVGV4dFdyaXRlTW9kZV09XCInY29tbWVudHMnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgIFtoYXNDb2x1bW5CcmVha109XCJmYWxzZVwiIChlbWl0ZWRWYWx1ZSk9XCJoYW5kbGVFbWl0VmFsdWUoJGV2ZW50LCdhdHRhY2htZW50Y29tbWVudCcpXCIgXHJcbiAgICAgICAgICBbbGFiZWxdPVwiJ2NvbW1lbnRzJyB8IHRyYW5zbGF0ZVwiIFtyZXF1aXJlZF09XCJmYWxzZVwiIFttaW5MZW5ndGhdPScxJyBbbWF4TGVuZ3RoXT0nNTAwJyBcclxuICAgICAgICAgIFtpc1JlYWRPbmx5XT1cInNlY3Rpb24/LmhlYWRlcj8ucmVhZE9ubHlcIiBbZXJyb3JNZXNzYWdlXT1cIidsZW5naHRNaW4xTWF4NTAwJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb21tZW50c1wiPlxyXG4gICAgICAgIDwvYXBwLXRleHRhcmVhPlxyXG4gICAgICA8L2Zvcm0+XHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1kaWFsb2ctY29udGVudD5cclxuICA8bWF0LWRpYWxvZy1hY3Rpb25zIGNsYXNzPVwiZGVmYXVsdC1mb290ZXIganVzdGlmeS1jb250ZW50LWVuZCBnYXAtM1wiPlxyXG4gICAgPGRzLWJ1dHRvbiBzaGFwZT1cIm91dGxpbmVcIiBtYXREaWFsb2dDbG9zZSBbZGlzYWJsZWRdPVwidXBsb2FkaW5nXCI+e3sgJ2NhbmNlbCcgfCB0cmFuc2xhdGUgfX08L2RzLWJ1dHRvbj5cclxuICAgIDxkcy1idXR0b24gKGNsaWNrKT1cImFkZEF0dGFjaG1lbnRzKClcIiBbbG9hZGluZ109XCJ1cGxvYWRpbmdcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiKCEoZm9ybUdyb3VwPy52YWx1ZT8uZmlsZT8uZmlsZUNvbnRlbnRzIHx8IGZvcm1Hcm91cD8udmFsdWU/LmZpbGU/LmF0dGFjaG1lbnRJZCApIHx8IChkaWFsb2dEYXRhPy5pc1JlcXVpcmVkICYmICFmb3JtR3JvdXA/LnZhbHVlPy5kZXNjcmlwdGlvbikgfHwgdXBsb2FkaW5nIHx8ICFmb3JtR3JvdXAudmFsaWQpXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZWRpdE1vZGU7IGVsc2UgZWRpdFRlbXBsYXRlXCI+XHJcbiAgICAgICAgPHNwYW4+e3sgJ2FkZCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2VkaXRUZW1wbGF0ZT5cclxuICAgICAgICA8c3Bhbj57eyAnZWRpdCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2RzLWJ1dHRvbj5cclxuICA8L21hdC1kaWFsb2ctYWN0aW9ucz5cclxuPC9kaXY+Il19