master-control 0.4.29 → 0.4.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/master-control.component.mjs +2 -2
- package/esm2022/lib/master.service.mjs +8 -1
- package/esm2022/lib/medial-questions/medial-questions.component.mjs +23 -23
- package/esm2022/lib/upload/upload.component.mjs +75 -10
- package/fesm2022/master-control.mjs +153 -82
- package/fesm2022/master-control.mjs.map +1 -1
- package/lib/master.service.d.ts +1 -0
- package/lib/upload/upload.component.d.ts +11 -5
- package/master-control-0.4.30.tgz +0 -0
- package/package.json +1 -1
- package/master-control-0.4.29.tgz +0 -0
|
@@ -4,17 +4,49 @@ import { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/fo
|
|
|
4
4
|
import { FilePreviewComponent } from '../file-preview/file-preview.component';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "../master-control.service";
|
|
7
|
-
import * as i2 from "
|
|
8
|
-
import * as i3 from "@angular/
|
|
7
|
+
import * as i2 from "../master.service";
|
|
8
|
+
import * as i3 from "@angular/common";
|
|
9
|
+
import * as i4 from "@angular/forms";
|
|
9
10
|
export class UploadComponent {
|
|
10
11
|
masterService;
|
|
11
12
|
appRef;
|
|
12
13
|
injector;
|
|
14
|
+
masterservice;
|
|
13
15
|
documentUploaderField = input();
|
|
14
|
-
|
|
16
|
+
openQuoteImageObj = input();
|
|
17
|
+
http;
|
|
18
|
+
// openQuoteImageObj : any = {
|
|
19
|
+
// documentId: "E1B17401B6604614AC72714AB1C89BEB",
|
|
20
|
+
// documentCode: "LAPIC",
|
|
21
|
+
// documentName: "LAPIC_1687424860972.png",
|
|
22
|
+
// companyCode: "DL"
|
|
23
|
+
// }
|
|
24
|
+
// configData object for api call
|
|
25
|
+
// {
|
|
26
|
+
// "apiUrl" : "https://uat-directportallife.godigit.com/DirectPortalLife/life/document",
|
|
27
|
+
// "sessionStorageApplicationIdParam": "applicationid",
|
|
28
|
+
// "isSendToken" : false,
|
|
29
|
+
// "tokenCookieParam" : "v3Token"
|
|
30
|
+
// }
|
|
31
|
+
constructor(masterService, appRef, injector, masterservice) {
|
|
15
32
|
this.masterService = masterService;
|
|
16
33
|
this.appRef = appRef;
|
|
17
34
|
this.injector = injector;
|
|
35
|
+
this.masterservice = masterservice;
|
|
36
|
+
}
|
|
37
|
+
ngOnChanges(changes) {
|
|
38
|
+
if ((changes['openQuoteImageObj']) && !this.masterService.checkIfValueIsEmpty(changes['openQuoteImageObj'].currentValue)) {
|
|
39
|
+
if (!this.masterService.checkIfValueIsEmpty(this.openQuoteImageObj()) &&
|
|
40
|
+
!this.masterService.checkIfValueIsEmpty(this.openQuoteImageObj().documentId) &&
|
|
41
|
+
!this.masterService.checkIfValueIsEmpty(this.openQuoteImageObj().documentCode) &&
|
|
42
|
+
!this.masterService.checkIfValueIsEmpty(this.openQuoteImageObj().documentName)) {
|
|
43
|
+
this.uploadedFiles = [
|
|
44
|
+
{
|
|
45
|
+
name: this.openQuoteImageObj().documentName
|
|
46
|
+
}
|
|
47
|
+
];
|
|
48
|
+
}
|
|
49
|
+
}
|
|
18
50
|
}
|
|
19
51
|
field = input.required();
|
|
20
52
|
reactiveFormControlobject = input();
|
|
@@ -93,7 +125,40 @@ export class UploadComponent {
|
|
|
93
125
|
this.fileInput.nativeElement.click();
|
|
94
126
|
}
|
|
95
127
|
}
|
|
96
|
-
previewFile(file, index) {
|
|
128
|
+
previewFile(file, index, event) {
|
|
129
|
+
if (event) {
|
|
130
|
+
event.stopPropagation();
|
|
131
|
+
event.preventDefault();
|
|
132
|
+
}
|
|
133
|
+
// Check if the file is newly uploaded or not
|
|
134
|
+
const isActualFile = file instanceof File && file.size > 0;
|
|
135
|
+
if (!isActualFile &&
|
|
136
|
+
!this.masterService.checkIfValueIsEmpty(this.openQuoteImageObj()) &&
|
|
137
|
+
!this.masterService.checkIfValueIsEmpty(this.openQuoteImageObj().documentId) &&
|
|
138
|
+
!this.masterService.checkIfValueIsEmpty(this.openQuoteImageObj().documentCode) &&
|
|
139
|
+
!this.masterService.checkIfValueIsEmpty(this.openQuoteImageObj().documentName)) {
|
|
140
|
+
// This is the initially loaded file from openQuoteImageObj, fetch it from server
|
|
141
|
+
if (!this.masterService.checkIfValueIsEmpty(this.field().configData) && !this.masterService.checkIfValueIsEmpty(this.field().configData['apiUrl']) && !this.masterService.checkIfValueIsEmpty(this.field().configData['sessionStorageApplicationIdParam'])) {
|
|
142
|
+
let req = {
|
|
143
|
+
documentId: this.openQuoteImageObj().documentId,
|
|
144
|
+
documentCode: this.openQuoteImageObj().documentCode,
|
|
145
|
+
companycode: this.openQuoteImageObj().companyCode,
|
|
146
|
+
};
|
|
147
|
+
this.masterservice.getImage(this.field().configData, req).subscribe((response) => {
|
|
148
|
+
if (response) {
|
|
149
|
+
const previewFile = new File([response], this.openQuoteImageObj().documentName, { type: response.type });
|
|
150
|
+
console.log('Downloaded file for preview:', previewFile);
|
|
151
|
+
this.showFilePreview(previewFile);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
this.showFilePreview(file);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// Helper method to show file preview
|
|
161
|
+
showFilePreview(file) {
|
|
97
162
|
this.filePreviewRef = createComponent(FilePreviewComponent, {
|
|
98
163
|
environmentInjector: this.injector
|
|
99
164
|
});
|
|
@@ -119,14 +184,14 @@ export class UploadComponent {
|
|
|
119
184
|
ngOnDestroy() {
|
|
120
185
|
this.closeFilePreview();
|
|
121
186
|
}
|
|
122
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UploadComponent, deps: [{ token: i1.MasterControlService }, { token: i0.ApplicationRef }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Component });
|
|
123
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UploadComponent, isStandalone: true, selector: "lib-upload", inputs: { documentUploaderField: { classPropertyName: "documentUploaderField", publicName: "documentUploaderField", isSignal: true, isRequired: false, transformFunction: null }, field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, reactiveFormControlobject: { classPropertyName: "reactiveFormControlobject", publicName: "reactiveFormControlobject", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filesChanged: "filesChanged", fileRemoved: "fileRemoved", filePreview: "filePreview" }, providers: [
|
|
187
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UploadComponent, deps: [{ token: i1.MasterControlService }, { token: i0.ApplicationRef }, { token: i0.EnvironmentInjector }, { token: i2.MasterService }], target: i0.ɵɵFactoryTarget.Component });
|
|
188
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UploadComponent, isStandalone: true, selector: "lib-upload", inputs: { documentUploaderField: { classPropertyName: "documentUploaderField", publicName: "documentUploaderField", isSignal: true, isRequired: false, transformFunction: null }, openQuoteImageObj: { classPropertyName: "openQuoteImageObj", publicName: "openQuoteImageObj", isSignal: true, isRequired: false, transformFunction: null }, field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, reactiveFormControlobject: { classPropertyName: "reactiveFormControlobject", publicName: "reactiveFormControlobject", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filesChanged: "filesChanged", fileRemoved: "fileRemoved", filePreview: "filePreview" }, providers: [
|
|
124
189
|
{
|
|
125
190
|
provide: NG_VALUE_ACCESSOR,
|
|
126
191
|
useExisting: UploadComponent,
|
|
127
192
|
multi: true
|
|
128
193
|
}
|
|
129
|
-
], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<label class=\"field-lable upload-label\" *ngIf=\"field() && field()?.isVisible && field()?.isShowLabel\">{{field()?.label}}<span style=\"color: red\" *ngIf=\"field() && field()?.validators?.isRequired\">*</span></label>\n @if(reactiveFormControlobject()) {\n <input\n hidden\n [type]=\"field()?.controlType\"\n [name]=\"field()?.fieldName\"\n [id]=\"field()?.fieldName\"\n [multiple]=\"field()?.configData?.multiple\"\n [accept]=\"field()?.configData?.accept\"\n #fileInput\n (change)=\"onFileSelected($event)\"\n (click)=\"fileInput.value = ''\"\n [required]=\"field()?.validators?.isRequired\"\n [disabled]=\"field()?.isDisable\"\n [formControl]=\"reactiveFormControlobject()\"\n />\n }@else {\n <input\n hidden\n [type]=\"field()?.controlType\"\n [name]=\"field()?.fieldName\"\n [id]=\"field()?.fieldName\"\n [multiple]=\"field()?.configData?.multiple\"\n [accept]=\"field()?.configData?.accept\"\n #fileInput\n (change)=\"onFileSelected($event)\"\n (click)=\"fileInput.value = ''\"\n [required]=\"field()?.validators?.isRequired\"\n [disabled]=\"field()?.isDisable\"\n />\n }\n <button\n type=\"button\"\n class=\"upload-btn\"\n (click)=\"triggerFileInput()\"\n [ngClass]=\"field()?.label ? 'lightbackground' : 'successBackground'\"\n *ngIf=\"field() && field()?.isVisible\"\n [disabled]=\"field()?.isDisable\"\n [ngStyle]=\"{\n'--upload-width': field()?.controlStyle?.width ,\n'--upload-border-radius': field()?.controlStyle?.borderRadius ,\n'--upload-border-color': field()?.controlStyle?.borderColor ,\n'--upload-border-width': field()?.controlStyle?.borderWidth ,\n'--upload-border-style': field()?.controlStyle?.borderStyle ,\n'--upload-background-color': field()?.controlStyle?.background ,\n'--upload-focus-border-color': field()?.controlStyle?.focusBorderColor ,\n'--upload-focus-background-color': field()?.controlStyle?.focusBackground ,\n}\"\n >\n <ng-container *ngIf=\"field()?.label && !hasFiles(); else fileUploadedTemplate\">\n <span class=\"upload-icon\">\n <span\n ><img [src]=\"field()?.imageUrl\" alt=\"\"/></span>\n <span class=\"upload-text\" [ngStyle]=\"{\n'--upload-font-color': field()?.controlStyle?.color ,\n'--upload-font-size': field()?.controlStyle?.fontSize ,\n'--upload-font-weight': field()?.controlStyle?.fontWeight,\n'--upload-focus-font-color': field()?.controlStyle?.focusColor ,\n}\">{{ field()?.placeHolder }} <span style=\"color: red\" *ngIf=\"field() && field()?.validators?.isRequired\">*</span></span>\n </span>\n </ng-container>\n <ng-template #fileUploadedTemplate>\n <div *ngFor=\"let file of uploadedFiles; let i = index\" class=\"uploaded-file d-flex gap-4\" style=\"transform: translate(0px, -3px);\">\n <span class=\"mt-2 right-icon\" style=\" white-space: nowrap !important;\n overflow: hidden !important;\n text-overflow: ellipsis !important;\">\n <span><img [src]=\"field()?.imageUrl\" alt=\"\"/></span>\n <span [title]=\"file.name\">{{ file.name }}</span>\n </span>\n <div class=\"mt-2 left-icon\">\n <span (click)=\"previewFile(file, i
|
|
194
|
+
], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<label class=\"field-lable upload-label\" *ngIf=\"field() && field()?.isVisible && field()?.isShowLabel\">{{field()?.label}}<span style=\"color: red\" *ngIf=\"field() && field()?.validators?.isRequired\">*</span></label>\n @if(reactiveFormControlobject()) {\n <input\n hidden\n [type]=\"field()?.controlType\"\n [name]=\"field()?.fieldName\"\n [id]=\"field()?.fieldName\"\n [multiple]=\"field()?.configData?.multiple\"\n [accept]=\"field()?.configData?.accept\"\n #fileInput\n (change)=\"onFileSelected($event)\"\n (click)=\"fileInput.value = ''\"\n [required]=\"field()?.validators?.isRequired\"\n [disabled]=\"field()?.isDisable\"\n [formControl]=\"reactiveFormControlobject()\"\n />\n }@else {\n <input\n hidden\n [type]=\"field()?.controlType\"\n [name]=\"field()?.fieldName\"\n [id]=\"field()?.fieldName\"\n [multiple]=\"field()?.configData?.multiple\"\n [accept]=\"field()?.configData?.accept\"\n #fileInput\n (change)=\"onFileSelected($event)\"\n (click)=\"fileInput.value = ''\"\n [required]=\"field()?.validators?.isRequired\"\n [disabled]=\"field()?.isDisable\"\n />\n }\n <button\n type=\"button\"\n class=\"upload-btn\"\n (click)=\"triggerFileInput()\"\n [ngClass]=\"field()?.label ? 'lightbackground' : 'successBackground'\"\n *ngIf=\"field() && field()?.isVisible\"\n [disabled]=\"field()?.isDisable\"\n [ngStyle]=\"{\n'--upload-width': field()?.controlStyle?.width ,\n'--upload-border-radius': field()?.controlStyle?.borderRadius ,\n'--upload-border-color': field()?.controlStyle?.borderColor ,\n'--upload-border-width': field()?.controlStyle?.borderWidth ,\n'--upload-border-style': field()?.controlStyle?.borderStyle ,\n'--upload-background-color': field()?.controlStyle?.background ,\n'--upload-focus-border-color': field()?.controlStyle?.focusBorderColor ,\n'--upload-focus-background-color': field()?.controlStyle?.focusBackground ,\n}\"\n >\n <ng-container *ngIf=\"field()?.label && !hasFiles(); else fileUploadedTemplate\">\n <span class=\"upload-icon\">\n <span\n ><img [src]=\"field()?.imageUrl\" alt=\"\"/></span>\n <span class=\"upload-text\" [ngStyle]=\"{\n'--upload-font-color': field()?.controlStyle?.color ,\n'--upload-font-size': field()?.controlStyle?.fontSize ,\n'--upload-font-weight': field()?.controlStyle?.fontWeight,\n'--upload-focus-font-color': field()?.controlStyle?.focusColor ,\n}\">{{ field()?.placeHolder }} <span style=\"color: red\" *ngIf=\"field() && field()?.validators?.isRequired\">*</span></span>\n </span>\n </ng-container>\n <ng-template #fileUploadedTemplate>\n <div *ngFor=\"let file of uploadedFiles; let i = index\" class=\"uploaded-file d-flex gap-4\" style=\"transform: translate(0px, -3px);\">\n <span class=\"mt-2 right-icon\" style=\" white-space: nowrap !important;\n overflow: hidden !important;\n text-overflow: ellipsis !important;\">\n <span><img [src]=\"field()?.imageUrl\" alt=\"\"/></span>\n <span [title]=\"file.name\">{{ file.name }}</span>\n </span>\n <div class=\"mt-2 left-icon\">\n <span (click)=\"previewFile(file, i, $event)\" style=\"cursor: pointer;\"><img src=\"https://cdn.godigit.com/retail-life/visibility-oui.svg\" alt=\"\"/></span>\n <span (click)=\"removeFile(i, $event)\" style=\"cursor: pointer;\">\n <img src=\"https://cdn.godigit.com/retail-life/delete-oui.svg\" alt=\"\"/>\n </span>\n </div>\n </div>\n </ng-template>\n </button>\n <div class=\"upload-info\" *ngIf=\"field() && field()?.isVisible && field()?.configData?.subText\">{{field()?.configData?.subText}}</div>\n", styles: ["*{font-family:mulish!important}.field-lable{font-size:12px!important;font-weight:700!important;color:#444!important;margin-bottom:0!important}.upload-label{opacity:1}.upload-btn{width:100%!important;height:48px!important;padding:10px;border-radius:.5rem}.upload-btn{width:var(--upload-width , 100%)!important;border-radius:var(--upload-border-radius , 8px)!important}.lightbackground{border-color:#999;border-width:1px;border-style:dashed;background:#fff;color:#444;font-size:14px;font-weight:700}.lightbackground{border-color:var(--upload-border-color , #999)!important;border-width:var(--upload-border-width , 1px)!important;border-style:var(--upload-border-style , dashed)!important;background:var(--upload-background-color , #ffffff)!important}.successBackground{border-color:var(--upload-focus-border-color , #ddd)!important;background:var(--upload-focus-background-color , #fafafa)!important;color:var(--upload-focus-font-color , #444)!important}.successBackground{border:1px dashed #ddd;background:#fafafa;color:#444;display:flex;justify-content:space-between}.upload-icon{display:flex;justify-content:center;gap:7px}.upload-text{color:#444!important;font-weight:700!important;font-size:14px!important}.upload-text{color:var(--upload-font-color , #444)!important;font-size:var( --upload-font-size , 14px)!important;font-weight:var(--upload-font-weight , 700)!important}.right-icon{display:flex;gap:10px;margin-left:.5em}.left-icon{display:flex;gap:15px;margin-right:1em}.upload-info{font-size:10px;font-weight:500;font-family:Mulish!important;letter-spacing:0px;color:#444}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
130
195
|
}
|
|
131
196
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UploadComponent, decorators: [{
|
|
132
197
|
type: Component,
|
|
@@ -140,8 +205,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
140
205
|
useExisting: UploadComponent,
|
|
141
206
|
multi: true
|
|
142
207
|
}
|
|
143
|
-
], template: "<label class=\"field-lable upload-label\" *ngIf=\"field() && field()?.isVisible && field()?.isShowLabel\">{{field()?.label}}<span style=\"color: red\" *ngIf=\"field() && field()?.validators?.isRequired\">*</span></label>\n @if(reactiveFormControlobject()) {\n <input\n hidden\n [type]=\"field()?.controlType\"\n [name]=\"field()?.fieldName\"\n [id]=\"field()?.fieldName\"\n [multiple]=\"field()?.configData?.multiple\"\n [accept]=\"field()?.configData?.accept\"\n #fileInput\n (change)=\"onFileSelected($event)\"\n (click)=\"fileInput.value = ''\"\n [required]=\"field()?.validators?.isRequired\"\n [disabled]=\"field()?.isDisable\"\n [formControl]=\"reactiveFormControlobject()\"\n />\n }@else {\n <input\n hidden\n [type]=\"field()?.controlType\"\n [name]=\"field()?.fieldName\"\n [id]=\"field()?.fieldName\"\n [multiple]=\"field()?.configData?.multiple\"\n [accept]=\"field()?.configData?.accept\"\n #fileInput\n (change)=\"onFileSelected($event)\"\n (click)=\"fileInput.value = ''\"\n [required]=\"field()?.validators?.isRequired\"\n [disabled]=\"field()?.isDisable\"\n />\n }\n <button\n type=\"button\"\n class=\"upload-btn\"\n (click)=\"triggerFileInput()\"\n [ngClass]=\"field()?.label ? 'lightbackground' : 'successBackground'\"\n *ngIf=\"field() && field()?.isVisible\"\n [disabled]=\"field()?.isDisable\"\n [ngStyle]=\"{\n'--upload-width': field()?.controlStyle?.width ,\n'--upload-border-radius': field()?.controlStyle?.borderRadius ,\n'--upload-border-color': field()?.controlStyle?.borderColor ,\n'--upload-border-width': field()?.controlStyle?.borderWidth ,\n'--upload-border-style': field()?.controlStyle?.borderStyle ,\n'--upload-background-color': field()?.controlStyle?.background ,\n'--upload-focus-border-color': field()?.controlStyle?.focusBorderColor ,\n'--upload-focus-background-color': field()?.controlStyle?.focusBackground ,\n}\"\n >\n <ng-container *ngIf=\"field()?.label && !hasFiles(); else fileUploadedTemplate\">\n <span class=\"upload-icon\">\n <span\n ><img [src]=\"field()?.imageUrl\" alt=\"\"/></span>\n <span class=\"upload-text\" [ngStyle]=\"{\n'--upload-font-color': field()?.controlStyle?.color ,\n'--upload-font-size': field()?.controlStyle?.fontSize ,\n'--upload-font-weight': field()?.controlStyle?.fontWeight,\n'--upload-focus-font-color': field()?.controlStyle?.focusColor ,\n}\">{{ field()?.placeHolder }} <span style=\"color: red\" *ngIf=\"field() && field()?.validators?.isRequired\">*</span></span>\n </span>\n </ng-container>\n <ng-template #fileUploadedTemplate>\n <div *ngFor=\"let file of uploadedFiles; let i = index\" class=\"uploaded-file d-flex gap-4\" style=\"transform: translate(0px, -3px);\">\n <span class=\"mt-2 right-icon\" style=\" white-space: nowrap !important;\n overflow: hidden !important;\n text-overflow: ellipsis !important;\">\n <span><img [src]=\"field()?.imageUrl\" alt=\"\"/></span>\n <span [title]=\"file.name\">{{ file.name }}</span>\n </span>\n <div class=\"mt-2 left-icon\">\n <span (click)=\"previewFile(file, i
|
|
144
|
-
}], ctorParameters: () => [{ type: i1.MasterControlService }, { type: i0.ApplicationRef }, { type: i0.EnvironmentInjector }], propDecorators: { fileInput: [{
|
|
208
|
+
], template: "<label class=\"field-lable upload-label\" *ngIf=\"field() && field()?.isVisible && field()?.isShowLabel\">{{field()?.label}}<span style=\"color: red\" *ngIf=\"field() && field()?.validators?.isRequired\">*</span></label>\n @if(reactiveFormControlobject()) {\n <input\n hidden\n [type]=\"field()?.controlType\"\n [name]=\"field()?.fieldName\"\n [id]=\"field()?.fieldName\"\n [multiple]=\"field()?.configData?.multiple\"\n [accept]=\"field()?.configData?.accept\"\n #fileInput\n (change)=\"onFileSelected($event)\"\n (click)=\"fileInput.value = ''\"\n [required]=\"field()?.validators?.isRequired\"\n [disabled]=\"field()?.isDisable\"\n [formControl]=\"reactiveFormControlobject()\"\n />\n }@else {\n <input\n hidden\n [type]=\"field()?.controlType\"\n [name]=\"field()?.fieldName\"\n [id]=\"field()?.fieldName\"\n [multiple]=\"field()?.configData?.multiple\"\n [accept]=\"field()?.configData?.accept\"\n #fileInput\n (change)=\"onFileSelected($event)\"\n (click)=\"fileInput.value = ''\"\n [required]=\"field()?.validators?.isRequired\"\n [disabled]=\"field()?.isDisable\"\n />\n }\n <button\n type=\"button\"\n class=\"upload-btn\"\n (click)=\"triggerFileInput()\"\n [ngClass]=\"field()?.label ? 'lightbackground' : 'successBackground'\"\n *ngIf=\"field() && field()?.isVisible\"\n [disabled]=\"field()?.isDisable\"\n [ngStyle]=\"{\n'--upload-width': field()?.controlStyle?.width ,\n'--upload-border-radius': field()?.controlStyle?.borderRadius ,\n'--upload-border-color': field()?.controlStyle?.borderColor ,\n'--upload-border-width': field()?.controlStyle?.borderWidth ,\n'--upload-border-style': field()?.controlStyle?.borderStyle ,\n'--upload-background-color': field()?.controlStyle?.background ,\n'--upload-focus-border-color': field()?.controlStyle?.focusBorderColor ,\n'--upload-focus-background-color': field()?.controlStyle?.focusBackground ,\n}\"\n >\n <ng-container *ngIf=\"field()?.label && !hasFiles(); else fileUploadedTemplate\">\n <span class=\"upload-icon\">\n <span\n ><img [src]=\"field()?.imageUrl\" alt=\"\"/></span>\n <span class=\"upload-text\" [ngStyle]=\"{\n'--upload-font-color': field()?.controlStyle?.color ,\n'--upload-font-size': field()?.controlStyle?.fontSize ,\n'--upload-font-weight': field()?.controlStyle?.fontWeight,\n'--upload-focus-font-color': field()?.controlStyle?.focusColor ,\n}\">{{ field()?.placeHolder }} <span style=\"color: red\" *ngIf=\"field() && field()?.validators?.isRequired\">*</span></span>\n </span>\n </ng-container>\n <ng-template #fileUploadedTemplate>\n <div *ngFor=\"let file of uploadedFiles; let i = index\" class=\"uploaded-file d-flex gap-4\" style=\"transform: translate(0px, -3px);\">\n <span class=\"mt-2 right-icon\" style=\" white-space: nowrap !important;\n overflow: hidden !important;\n text-overflow: ellipsis !important;\">\n <span><img [src]=\"field()?.imageUrl\" alt=\"\"/></span>\n <span [title]=\"file.name\">{{ file.name }}</span>\n </span>\n <div class=\"mt-2 left-icon\">\n <span (click)=\"previewFile(file, i, $event)\" style=\"cursor: pointer;\"><img src=\"https://cdn.godigit.com/retail-life/visibility-oui.svg\" alt=\"\"/></span>\n <span (click)=\"removeFile(i, $event)\" style=\"cursor: pointer;\">\n <img src=\"https://cdn.godigit.com/retail-life/delete-oui.svg\" alt=\"\"/>\n </span>\n </div>\n </div>\n </ng-template>\n </button>\n <div class=\"upload-info\" *ngIf=\"field() && field()?.isVisible && field()?.configData?.subText\">{{field()?.configData?.subText}}</div>\n", styles: ["*{font-family:mulish!important}.field-lable{font-size:12px!important;font-weight:700!important;color:#444!important;margin-bottom:0!important}.upload-label{opacity:1}.upload-btn{width:100%!important;height:48px!important;padding:10px;border-radius:.5rem}.upload-btn{width:var(--upload-width , 100%)!important;border-radius:var(--upload-border-radius , 8px)!important}.lightbackground{border-color:#999;border-width:1px;border-style:dashed;background:#fff;color:#444;font-size:14px;font-weight:700}.lightbackground{border-color:var(--upload-border-color , #999)!important;border-width:var(--upload-border-width , 1px)!important;border-style:var(--upload-border-style , dashed)!important;background:var(--upload-background-color , #ffffff)!important}.successBackground{border-color:var(--upload-focus-border-color , #ddd)!important;background:var(--upload-focus-background-color , #fafafa)!important;color:var(--upload-focus-font-color , #444)!important}.successBackground{border:1px dashed #ddd;background:#fafafa;color:#444;display:flex;justify-content:space-between}.upload-icon{display:flex;justify-content:center;gap:7px}.upload-text{color:#444!important;font-weight:700!important;font-size:14px!important}.upload-text{color:var(--upload-font-color , #444)!important;font-size:var( --upload-font-size , 14px)!important;font-weight:var(--upload-font-weight , 700)!important}.right-icon{display:flex;gap:10px;margin-left:.5em}.left-icon{display:flex;gap:15px;margin-right:1em}.upload-info{font-size:10px;font-weight:500;font-family:Mulish!important;letter-spacing:0px;color:#444}\n"] }]
|
|
209
|
+
}], ctorParameters: () => [{ type: i1.MasterControlService }, { type: i0.ApplicationRef }, { type: i0.EnvironmentInjector }, { type: i2.MasterService }], propDecorators: { fileInput: [{
|
|
145
210
|
type: ViewChild,
|
|
146
211
|
args: ['fileInput']
|
|
147
212
|
}], filesChanged: [{
|
|
@@ -151,4 +216,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
151
216
|
}], filePreview: [{
|
|
152
217
|
type: Output
|
|
153
218
|
}] } });
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hc3Rlci1jb250cm9sL3NyYy9saWIvdXBsb2FkL3VwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXN0ZXItY29udHJvbC9zcmMvbGliL3VwbG9hZC91cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQUUsWUFBWSxFQUFxRCxlQUFlLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFMUssT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7QUFvQjlFLE1BQU0sT0FBTyxlQUFlO0lBRVA7SUFBNkM7SUFDekQ7SUFGUCxxQkFBcUIsR0FBRyxLQUFLLEVBQU8sQ0FBQztJQUNyQyxZQUFtQixhQUFvQyxFQUFTLE1BQXNCLEVBQy9FLFFBQTZCO1FBRGpCLGtCQUFhLEdBQWIsYUFBYSxDQUF1QjtRQUFTLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQy9FLGFBQVEsR0FBUixRQUFRLENBQXFCO0lBQUUsQ0FBQztJQUN2QyxLQUFLLEdBQVMsS0FBSyxDQUFDLFFBQVEsRUFBTyxDQUFDO0lBQ3BDLHlCQUF5QixHQUFTLEtBQUssRUFBTyxDQUFDO0lBRXZCLFNBQVMsQ0FBZ0M7SUFFdkQsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFDMUMsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFpQyxDQUFDO0lBQ2hFLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBaUMsQ0FB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LFNBQVM7dUJBQUMsV0FBVztnQkFFWixZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGlucHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDb21wb25lbnRSZWYsIEVudmlyb25tZW50SW5qZWN0b3IsIEFwcGxpY2F0aW9uUmVmLCBjcmVhdGVDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWFzdGVyQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuLi9tYXN0ZXItY29udHJvbC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGaWxlUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uL2ZpbGUtcHJldmlldy9maWxlLXByZXZpZXcuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXVwbG9hZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vdXBsb2FkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3VwbG9hZC5jb21wb25lbnQuY3NzJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogVXBsb2FkQ29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBkb2N1bWVudFVwbG9hZGVyRmllbGQgPSBpbnB1dDxhbnk+KCk7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtYXN0ZXJTZXJ2aWNlIDogTWFzdGVyQ29udHJvbFNlcnZpY2UsIHB1YmxpYyBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICBwdWJsaWMgaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3Ipe31cbiAgZmllbGQgOiBhbnkgPSBpbnB1dC5yZXF1aXJlZDxhbnk+KCk7XG4gIHJlYWN0aXZlRm9ybUNvbnRyb2xvYmplY3QgOiBhbnkgPSBpbnB1dDxhbnk+KCk7XG5cbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JykgZmlsZUlucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBAT3V0cHV0KCkgZmlsZXNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlW10+KCk7XG4gIEBPdXRwdXQoKSBmaWxlUmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmaWxlOiBGaWxlLCBpbmRleDogbnVtYmVyIH0+KCk7XG4gIEBPdXRwdXQoKSBmaWxlUHJldmlldyA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmaWxlOiBGaWxlLCBpbmRleDogbnVtYmVyIH0+KCk7XG4gIHB1YmxpYyBmaWxlUHJldmlld1JlZjogQ29tcG9uZW50UmVmPEZpbGVQcmV2aWV3Q29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvciBwcm9wZXJ0aWVzXG4gIHVwbG9hZGVkRmlsZXM6IEZpbGVbXSA9IFtdO1xuICB2YWx1ZTogYW55ID0gbnVsbDtcbiAgX29uQ2hhbmdlOiBhbnkgPSAodmFsdWU6IGFueSkgPT4ge307XG4gIF9vblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xuICBkaXNhYmxlZDogYW55ID0gZmFsc2U7XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW1wbGVtZW50YXRpb25cbiAgd3JpdGVWYWx1ZShvYmo6IGFueSkge1xuICAgIHRoaXMudmFsdWUgPSBvYmo7XG4gICAgaWYgKG9iaiAmJiBBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IG9iajtcbiAgICB9IGVsc2UgaWYgKG9iaikge1xuICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gW29ial07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGFueSkge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgLy8gRmlsZSB1cGxvYWQgaGFuZGxpbmdcbiAgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGZpbGVzID0gZXZlbnQudGFyZ2V0LmZpbGVzO1xuICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAodGhpcy5maWVsZCgpPy5tdWx0aXBsZSkge1xuICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBBcnJheS5mcm9tKGZpbGVzKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudXBsb2FkZWRGaWxlcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFtmaWxlc1swXV07XG4gICAgICAgIHRoaXMudmFsdWUgPSBmaWxlc1swXTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgfVxuICAgIHRoaXMuZmlsZXNDaGFuZ2VkLmVtaXQodGhpcy51cGxvYWRlZEZpbGVzKTtcbiAgfVxuXG4gIHJlbW92ZUZpbGUoaW5kZXg6IGFueSwgZXZlbnQ/OiBFdmVudCkge1xuICAgIGlmIChldmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cbiAgICBjb25zdCByZW1vdmVkRmlsZSA9IHRoaXMudXBsb2FkZWRGaWxlc1tpbmRleF07XG4gICAgdGhpcy51cGxvYWRlZEZpbGVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgaWYgKHRoaXMuZmllbGQoKT8ubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBbLi4udGhpcy51cGxvYWRlZEZpbGVzXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudXBsb2FkZWRGaWxlcy5sZW5ndGggPiAwID8gdGhpcy51cGxvYWRlZEZpbGVzWzBdIDogbnVsbDtcbiAgICB9XG4gICAgdGhpcy5fb25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5maWxlUmVtb3ZlZC5lbWl0KHsgZmlsZTogcmVtb3ZlZEZpbGUsIGluZGV4IH0pO1xuICAgIHRoaXMuZmlsZXNDaGFuZ2VkLmVtaXQodGhpcy51cGxvYWRlZEZpbGVzKTtcbiAgfVxuXG4gIGhhc0ZpbGVzKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMudXBsb2FkZWRGaWxlcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgdHJpZ2dlckZpbGVJbnB1dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maWxlSW5wdXQpIHtcbiAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG4gIH1cblxucHJldmlld0ZpbGUoZmlsZTogRmlsZSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuZmlsZVByZXZpZXdSZWYgPSBjcmVhdGVDb21wb25lbnQoRmlsZVByZXZpZXdDb21wb25lbnQsIHtcbiAgICAgIGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuaW5qZWN0b3JcbiAgICB9KTtcbiAgICB0aGlzLmZpbGVQcmV2aWV3UmVmLnNldElucHV0KCdmaWVsZCcsIHRoaXMuZmllbGQoKSk7XG4gICAgdGhpcy5maWxlUHJldmlld1JlZi5zZXRJbnB1dCgnZmlsZScsIGZpbGUpO1xuICAgIHRoaXMuZmlsZVByZXZpZXdSZWYuaW5zdGFuY2UuY2xvc2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNsb3NlRmlsZVByZXZpZXcoKTtcbiAgICB9KTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuZmlsZVByZXZpZXdSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyh0aGlzLmZpbGVQcmV2aWV3UmVmLmhvc3RWaWV3KTtcbiAgfVxuXG4gIGNsb3NlRmlsZVByZXZpZXcoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmlsZVByZXZpZXdSZWYpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmZpbGVQcmV2aWV3UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBpZiAoZWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgICAgIGVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtZW50KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYXBwUmVmLmRldGFjaFZpZXcodGhpcy5maWxlUHJldmlld1JlZi5ob3N0Vmlldyk7XG4gICAgICB0aGlzLmZpbGVQcmV2aWV3UmVmLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuZmlsZVByZXZpZXdSZWYgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VGaWxlUHJldmlldygpO1xuICB9XG59XG4iLCI8bGFiZWwgY2xhc3M9XCJmaWVsZC1sYWJsZSB1cGxvYWQtbGFiZWxcIiAqbmdJZj1cImZpZWxkKCkgJiYgZmllbGQoKT8uaXNWaXNpYmxlICYmIGZpZWxkKCk/LmlzU2hvd0xhYmVsXCI+e3tmaWVsZCgpPy5sYWJlbH19PHNwYW4gc3R5bGU9XCJjb2xvcjogcmVkXCIgKm5nSWY9XCJmaWVsZCgpICYmIGZpZWxkKCk/LnZhbGlkYXRvcnM/LmlzUmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XG4gIEBpZihyZWFjdGl2ZUZvcm1Db250cm9sb2JqZWN0KCkpIHtcbiAgPGlucHV0XG4gICAgaGlkZGVuXG4gICAgW3R5cGVdPVwiZmllbGQoKT8uY29udHJvbFR5cGVcIlxuICAgIFtuYW1lXT1cImZpZWxkKCk/LmZpZWxkTmFtZVwiXG4gICAgW2lkXT1cImZpZWxkKCk/LmZpZWxkTmFtZVwiXG4gICAgW211bHRpcGxlXT1cImZpZWxkKCk/LmNvbmZpZ0RhdGE/Lm11bHRpcGxlXCJcbiAgICBbYWNjZXB0XT1cImZpZWxkKCk/LmNvbmZpZ0RhdGE/LmFjY2VwdFwiXG4gICAgI2ZpbGVJbnB1dFxuICAgIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgKGNsaWNrKT1cImZpbGVJbnB1dC52YWx1ZSA9ICcnXCJcbiAgICBbcmVxdWlyZWRdPVwiZmllbGQoKT8udmFsaWRhdG9ycz8uaXNSZXF1aXJlZFwiXG4gICAgW2Rpc2FibGVkXT1cImZpZWxkKCk/LmlzRGlzYWJsZVwiXG4gICAgW2Zvcm1Db250cm9sXT1cInJlYWN0aXZlRm9ybUNvbnRyb2xvYmplY3QoKVwiXG4gIC8+XG4gIH1AZWxzZSB7XG4gIDxpbnB1dFxuICAgIGhpZGRlblxuICAgIFt0eXBlXT1cImZpZWxkKCk/LmNvbnRyb2xUeXBlXCJcbiAgICBbbmFtZV09XCJmaWVsZCgpPy5maWVsZE5hbWVcIlxuICAgIFtpZF09XCJmaWVsZCgpPy5maWVsZE5hbWVcIlxuICAgIFttdWx0aXBsZV09XCJmaWVsZCgpPy5jb25maWdEYXRhPy5tdWx0aXBsZVwiXG4gICAgW2FjY2VwdF09XCJmaWVsZCgpPy5jb25maWdEYXRhPy5hY2NlcHRcIlxuICAgICNmaWxlSW5wdXRcbiAgICAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIlxuICAgIChjbGljayk9XCJmaWxlSW5wdXQudmFsdWUgPSAnJ1wiXG4gICAgW3JlcXVpcmVkXT1cImZpZWxkKCk/LnZhbGlkYXRvcnM/LmlzUmVxdWlyZWRcIlxuICAgIFtkaXNhYmxlZF09XCJmaWVsZCgpPy5pc0Rpc2FibGVcIlxuICAvPlxuICB9XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cInVwbG9hZC1idG5cIlxuICAgIChjbGljayk9XCJ0cmlnZ2VyRmlsZUlucHV0KClcIlxuICAgIFtuZ0NsYXNzXT1cImZpZWxkKCk/LmxhYmVsID8gJ2xpZ2h0YmFja2dyb3VuZCcgOiAnc3VjY2Vzc0JhY2tncm91bmQnXCJcbiAgICAqbmdJZj1cImZpZWxkKCkgJiYgZmllbGQoKT8uaXNWaXNpYmxlXCJcbiAgICBbZGlzYWJsZWRdPVwiZmllbGQoKT8uaXNEaXNhYmxlXCJcbiAgICAgW25nU3R5bGVdPVwie1xuJy0tdXBsb2FkLXdpZHRoJzogZmllbGQoKT8uY29udHJvbFN0eWxlPy53aWR0aCAsXG4nLS11cGxvYWQtYm9yZGVyLXJhZGl1cyc6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uYm9yZGVyUmFkaXVzICxcbictLXVwbG9hZC1ib3JkZXItY29sb3InOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmJvcmRlckNvbG9yICxcbictLXVwbG9hZC1ib3JkZXItd2lkdGgnOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmJvcmRlcldpZHRoICxcbictLXVwbG9hZC1ib3JkZXItc3R5bGUnOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmJvcmRlclN0eWxlICxcbictLXVwbG9hZC1iYWNrZ3JvdW5kLWNvbG9yJzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5iYWNrZ3JvdW5kICxcbictLXVwbG9hZC1mb2N1cy1ib3JkZXItY29sb3InOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmZvY3VzQm9yZGVyQ29sb3IgLFxuJy0tdXBsb2FkLWZvY3VzLWJhY2tncm91bmQtY29sb3InOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmZvY3VzQmFja2dyb3VuZCAsXG59XCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZCgpPy5sYWJlbCAmJiAhaGFzRmlsZXMoKTsgZWxzZSBmaWxlVXBsb2FkZWRUZW1wbGF0ZVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ1cGxvYWQtaWNvblwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgID48aW1nIFtzcmNdPVwiZmllbGQoKT8uaW1hZ2VVcmxcIiBhbHQ9XCJcIi8+PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInVwbG9hZC10ZXh0XCIgW25nU3R5bGVdPVwie1xuJy0tdXBsb2FkLWZvbnQtY29sb3InOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmNvbG9yICxcbictLXVwbG9hZC1mb250LXNpemUnOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmZvbnRTaXplICxcbictLXVwbG9hZC1mb250LXdlaWdodCc6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uZm9udFdlaWdodCxcbictLXVwbG9hZC1mb2N1cy1mb250LWNvbG9yJzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5mb2N1c0NvbG9yICxcbn1cIj57eyBmaWVsZCgpPy5wbGFjZUhvbGRlciB9fSA8c3BhbiBzdHlsZT1cImNvbG9yOiByZWRcIiAqbmdJZj1cImZpZWxkKCkgJiYgZmllbGQoKT8udmFsaWRhdG9ycz8uaXNSZXF1aXJlZFwiPio8L3NwYW4+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZmlsZVVwbG9hZGVkVGVtcGxhdGU+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmaWxlIG9mIHVwbG9hZGVkRmlsZXM7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cInVwbG9hZGVkLWZpbGUgZC1mbGV4IGdhcC00XCIgc3R5bGU9XCJ0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwcHgsIC0zcHgpO1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTIgcmlnaHQtaWNvblwiIHN0eWxlPVwiIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXMgIWltcG9ydGFudDtcIj5cbiAgICAgICAgICA8c3Bhbj48aW1nIFtzcmNdPVwiZmllbGQoKT8uaW1hZ2VVcmxcIiBhbHQ9XCJcIi8+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIFt0aXRsZV09XCJmaWxlLm5hbWVcIj57eyBmaWxlLm5hbWUgfX08L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgbGVmdC1pY29uXCI+XG4gICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInByZXZpZXdGaWxlKGZpbGUsIGkpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPjxpbWcgc3JjPVwiaHR0cHM6Ly9jZG4uZ29kaWdpdC5jb20vcmV0YWlsLWxpZmUvdmlzaWJpbGl0eS1vdWkuc3ZnXCIgYWx0PVwiXCIvPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAoY2xpY2spPVwicmVtb3ZlRmlsZShpLCAkZXZlbnQpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiPlxuICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Nkbi5nb2RpZ2l0LmNvbS9yZXRhaWwtbGlmZS9kZWxldGUtb3VpLnN2Z1wiIGFsdD1cIlwiLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9idXR0b24+XG4gIDxkaXYgY2xhc3M9XCJ1cGxvYWQtaW5mb1wiICpuZ0lmPVwiZmllbGQoKSAmJiBmaWVsZCgpPy5pc1Zpc2libGUgJiYgZmllbGQoKT8uY29uZmlnRGF0YT8uc3ViVGV4dFwiPnt7ZmllbGQoKT8uY29uZmlnRGF0YT8uc3ViVGV4dH19PC9kaXY+XG4iXX0=
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hc3Rlci1jb250cm9sL3NyYy9saWIvdXBsb2FkL3VwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXN0ZXItY29udHJvbC9zcmMvbGliL3VwbG9hZC91cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQUUsWUFBWSxFQUFxRCxlQUFlLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBRXpMLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7OztBQXFCOUUsTUFBTSxPQUFPLGVBQWU7SUFtQlA7SUFBNkM7SUFDekQ7SUFBc0M7SUFuQjdDLHFCQUFxQixHQUFHLEtBQUssRUFBTyxDQUFDO0lBQ3JDLGlCQUFpQixHQUFTLEtBQUssRUFBTyxDQUFDO0lBQ3ZDLElBQUksQ0FBTTtJQUNWLDhCQUE4QjtJQUM5QixvREFBb0Q7SUFDcEQsMkJBQTJCO0lBQzNCLDZDQUE2QztJQUM3QyxzQkFBc0I7SUFDdEIsSUFBSTtJQUVKLGlDQUFpQztJQUVuQyxNQUFNO0lBQ04sMEZBQTBGO0lBQzFGLHlEQUF5RDtJQUN6RCwyQkFBMkI7SUFDM0IsbUNBQW1DO0lBQ25DLElBQUk7SUFDRixZQUFtQixhQUFvQyxFQUFTLE1BQXNCLEVBQy9FLFFBQTZCLEVBQVMsYUFBNkI7UUFEdkQsa0JBQWEsR0FBYixhQUFhLENBQXVCO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDL0Us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Q0FBQyxDQUFDO1lBQzFDLENBQUM7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQzt3R0E3TFUsZUFBZTs0RkFBZixlQUFlLHV4QkFSZjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxlQUFlO2dCQUM1QixLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsdUpDdkJILGlvSEErRUEsdW1ERHBFSSxZQUFZLGtiQUNaLFdBQVcsbW5CQUNYLG1CQUFtQjs7NEZBWVYsZUFBZTtrQkFsQjNCLFNBQVM7K0JBQ0UsWUFBWSxjQUNWLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3FCQUNwQixhQUdVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsaUJBQWlCOzRCQUM1QixLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvTEE2Q3VCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFFWixZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGlucHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDb21wb25lbnRSZWYsIEVudmlyb25tZW50SW5qZWN0b3IsIEFwcGxpY2F0aW9uUmVmLCBjcmVhdGVDb21wb25lbnQsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWFzdGVyQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuLi9tYXN0ZXItY29udHJvbC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGaWxlUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uL2ZpbGUtcHJldmlldy9maWxlLXByZXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IE1hc3RlclNlcnZpY2UgfSBmcm9tICcuLi9tYXN0ZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi11cGxvYWQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi91cGxvYWQuY29tcG9uZW50LmNzcycsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IFVwbG9hZENvbXBvbmVudCxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgZG9jdW1lbnRVcGxvYWRlckZpZWxkID0gaW5wdXQ8YW55PigpO1xuICBvcGVuUXVvdGVJbWFnZU9iaiA6IGFueSA9IGlucHV0PGFueT4oKTtcbiAgaHR0cDogYW55O1xuICAvLyBvcGVuUXVvdGVJbWFnZU9iaiA6IGFueSA9IHtcbiAgLy8gICBkb2N1bWVudElkOiBcIkUxQjE3NDAxQjY2MDQ2MTRBQzcyNzE0QUIxQzg5QkVCXCIsXG4gIC8vICAgZG9jdW1lbnRDb2RlOiBcIkxBUElDXCIsXG4gIC8vICAgZG9jdW1lbnROYW1lOiBcIkxBUElDXzE2ODc0MjQ4NjA5NzIucG5nXCIsXG4gIC8vICAgY29tcGFueUNvZGU6IFwiRExcIlxuICAvLyB9XG5cbiAgLy8gY29uZmlnRGF0YSBvYmplY3QgZm9yIGFwaSBjYWxsXG5cbi8vICAge1xuLy8gICBcImFwaVVybFwiIDogXCJodHRwczovL3VhdC1kaXJlY3Rwb3J0YWxsaWZlLmdvZGlnaXQuY29tL0RpcmVjdFBvcnRhbExpZmUvbGlmZS9kb2N1bWVudFwiLFxuLy8gICBcInNlc3Npb25TdG9yYWdlQXBwbGljYXRpb25JZFBhcmFtXCI6IFwiYXBwbGljYXRpb25pZFwiLFxuLy8gICBcImlzU2VuZFRva2VuXCIgOiBmYWxzZSxcbi8vICAgXCJ0b2tlbkNvb2tpZVBhcmFtXCIgOiBcInYzVG9rZW5cIlxuLy8gfVxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbWFzdGVyU2VydmljZSA6IE1hc3RlckNvbnRyb2xTZXJ2aWNlLCBwdWJsaWMgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgcHVibGljIGluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLCBwdWJsaWMgbWFzdGVyc2VydmljZSA6IE1hc3RlclNlcnZpY2Upe31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKCAoY2hhbmdlc1snb3BlblF1b3RlSW1hZ2VPYmonXSkgJiYgIXRoaXMubWFzdGVyU2VydmljZS5jaGVja0lmVmFsdWVJc0VtcHR5KGNoYW5nZXNbJ29wZW5RdW90ZUltYWdlT2JqJ10uY3VycmVudFZhbHVlKSApIHtcbiAgICAgIGlmIChcbiAgICAgICAgIXRoaXMubWFzdGVyU2VydmljZS5jaGVja0lmVmFsdWVJc0VtcHR5KHRoaXMub3BlblF1b3RlSW1hZ2VPYmooKSkgJiZcbiAgICAgICAgIXRoaXMubWFzdGVyU2VydmljZS5jaGVja0lmVmFsdWVJc0VtcHR5KHRoaXMub3BlblF1b3RlSW1hZ2VPYmooKS5kb2N1bWVudElkKSAmJlxuICAgICAgICAhdGhpcy5tYXN0ZXJTZXJ2aWNlLmNoZWNrSWZWYWx1ZUlzRW1wdHkodGhpcy5vcGVuUXVvdGVJbWFnZU9iaigpLmRvY3VtZW50Q29kZSkgJiZcbiAgICAgICAgIXRoaXMubWFzdGVyU2VydmljZS5jaGVja0lmVmFsdWVJc0VtcHR5KHRoaXMub3BlblF1b3RlSW1hZ2VPYmooKS5kb2N1bWVudE5hbWUpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMub3BlblF1b3RlSW1hZ2VPYmooKS5kb2N1bWVudE5hbWVcbiAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgICB9XG5cblxuICAgIH1cbiAgfVxuICBmaWVsZCA6IGFueSA9IGlucHV0LnJlcXVpcmVkPGFueT4oKTtcbiAgcmVhY3RpdmVGb3JtQ29udHJvbG9iamVjdCA6IGFueSA9IGlucHV0PGFueT4oKTtcblxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIEBPdXRwdXQoKSBmaWxlc0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVbXT4oKTtcbiAgQE91dHB1dCgpIGZpbGVSZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZpbGU6IEZpbGUsIGluZGV4OiBudW1iZXIgfT4oKTtcbiAgQE91dHB1dCgpIGZpbGVQcmV2aWV3ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZpbGU6IEZpbGUsIGluZGV4OiBudW1iZXIgfT4oKTtcbiAgcHVibGljIGZpbGVQcmV2aWV3UmVmOiBDb21wb25lbnRSZWY8RmlsZVByZXZpZXdDb21wb25lbnQ+IHwgbnVsbCA9IG51bGw7XG4gIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHByb3BlcnRpZXNcbiAgdXBsb2FkZWRGaWxlczogYW55ID0gW107XG4gIHZhbHVlOiBhbnkgPSBudWxsO1xuICBfb25DaGFuZ2U6IGFueSA9ICh2YWx1ZTogYW55KSA9PiB7fTtcbiAgX29uVG91Y2hlZDogYW55ID0gKCkgPT4ge307XG4gIGRpc2FibGVkOiBhbnkgPSBmYWxzZTtcblxuXG4gIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGltcGxlbWVudGF0aW9uXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlID0gb2JqO1xuICAgIGlmIChvYmogJiYgQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBvYmo7XG4gICAgfSBlbHNlIGlmIChvYmopIHtcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFtvYmpdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbXTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBhbnkpIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIC8vIEZpbGUgdXBsb2FkIGhhbmRsaW5nXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBmaWxlcyA9IGV2ZW50LnRhcmdldC5maWxlcztcbiAgICBpZiAoZmlsZXMgJiYgZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHRoaXMuZmllbGQoKT8ubXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gQXJyYXkuZnJvbShmaWxlcyk7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnVwbG9hZGVkRmlsZXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbZmlsZXNbMF1dO1xuICAgICAgICB0aGlzLnZhbHVlID0gZmlsZXNbMF07XG4gICAgICB9XG4gICAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgIH1cbiAgICB0aGlzLmZpbGVzQ2hhbmdlZC5lbWl0KHRoaXMudXBsb2FkZWRGaWxlcyk7XG4gIH1cblxuICByZW1vdmVGaWxlKGluZGV4OiBhbnksIGV2ZW50PzogRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG4gICAgY29uc3QgcmVtb3ZlZEZpbGUgPSB0aGlzLnVwbG9hZGVkRmlsZXNbaW5kZXhdO1xuICAgIHRoaXMudXBsb2FkZWRGaWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIGlmICh0aGlzLmZpZWxkKCk/Lm11bHRpcGxlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gWy4uLnRoaXMudXBsb2FkZWRGaWxlc107XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnVwbG9hZGVkRmlsZXMubGVuZ3RoID4gMCA/IHRoaXMudXBsb2FkZWRGaWxlc1swXSA6IG51bGw7XG4gICAgfVxuICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIHRoaXMuZmlsZVJlbW92ZWQuZW1pdCh7IGZpbGU6IHJlbW92ZWRGaWxlLCBpbmRleCB9KTtcbiAgICB0aGlzLmZpbGVzQ2hhbmdlZC5lbWl0KHRoaXMudXBsb2FkZWRGaWxlcyk7XG4gIH1cblxuICBoYXNGaWxlcygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnVwbG9hZGVkRmlsZXMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHRyaWdnZXJGaWxlSW5wdXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmlsZUlucHV0KSB7XG4gICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuICB9XG5cbnByZXZpZXdGaWxlKGZpbGU6IEZpbGUsIGluZGV4OiBudW1iZXIsIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgaWYgKGV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBmaWxlIGlzIG5ld2x5IHVwbG9hZGVkIG9yIG5vdFxuICBjb25zdCBpc0FjdHVhbEZpbGUgPSBmaWxlIGluc3RhbmNlb2YgRmlsZSAmJiBmaWxlLnNpemUgPiAwO1xuXG4gIGlmIChcbiAgICAhaXNBY3R1YWxGaWxlICYmXG4gICAgIXRoaXMubWFzdGVyU2VydmljZS5jaGVja0lmVmFsdWVJc0VtcHR5KHRoaXMub3BlblF1b3RlSW1hZ2VPYmooKSkgJiZcbiAgICAhdGhpcy5tYXN0ZXJTZXJ2aWNlLmNoZWNrSWZWYWx1ZUlzRW1wdHkodGhpcy5vcGVuUXVvdGVJbWFnZU9iaigpLmRvY3VtZW50SWQpICYmXG4gICAgIXRoaXMubWFzdGVyU2VydmljZS5jaGVja0lmVmFsdWVJc0VtcHR5KHRoaXMub3BlblF1b3RlSW1hZ2VPYmooKS5kb2N1bWVudENvZGUpICYmXG4gICAgIXRoaXMubWFzdGVyU2VydmljZS5jaGVja0lmVmFsdWVJc0VtcHR5KHRoaXMub3BlblF1b3RlSW1hZ2VPYmooKS5kb2N1bWVudE5hbWUpXG4gICkge1xuICAgIC8vIFRoaXMgaXMgdGhlIGluaXRpYWxseSBsb2FkZWQgZmlsZSBmcm9tIG9wZW5RdW90ZUltYWdlT2JqLCBmZXRjaCBpdCBmcm9tIHNlcnZlclxuICAgIGlmKCF0aGlzLm1hc3RlclNlcnZpY2UuY2hlY2tJZlZhbHVlSXNFbXB0eSh0aGlzLmZpZWxkKCkuY29uZmlnRGF0YSkgJiYgIXRoaXMubWFzdGVyU2VydmljZS5jaGVja0lmVmFsdWVJc0VtcHR5KHRoaXMuZmllbGQoKS5jb25maWdEYXRhWydhcGlVcmwnXSkgJiYgICF0aGlzLm1hc3RlclNlcnZpY2UuY2hlY2tJZlZhbHVlSXNFbXB0eSh0aGlzLmZpZWxkKCkuY29uZmlnRGF0YVsnc2Vzc2lvblN0b3JhZ2VBcHBsaWNhdGlvbklkUGFyYW0nXSkpIHtcbiAgICAgIGxldCByZXEgOiBhbnkgPSB7XG4gICAgICAgIGRvY3VtZW50SWQ6IHRoaXMub3BlblF1b3RlSW1hZ2VPYmooKS5kb2N1bWVudElkLFxuICAgICAgICBkb2N1bWVudENvZGU6IHRoaXMub3BlblF1b3RlSW1hZ2VPYmooKS5kb2N1bWVudENvZGUsXG4gICAgICAgIGNvbXBhbnljb2RlOiB0aGlzLm9wZW5RdW90ZUltYWdlT2JqKCkuY29tcGFueUNvZGUsXG4gICAgICB9XG4gICAgICB0aGlzLm1hc3RlcnNlcnZpY2UuZ2V0SW1hZ2UodGhpcy5maWVsZCgpLmNvbmZpZ0RhdGEscmVxKS5zdWJzY3JpYmUoKHJlc3BvbnNlIDogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgIGNvbnN0IHByZXZpZXdGaWxlID0gbmV3IEZpbGUoW3Jlc3BvbnNlXSwgdGhpcy5vcGVuUXVvdGVJbWFnZU9iaigpLmRvY3VtZW50TmFtZSwgeyB0eXBlOiByZXNwb25zZS50eXBlIH0pO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdEb3dubG9hZGVkIGZpbGUgZm9yIHByZXZpZXc6JywgcHJldmlld0ZpbGUpO1xuICAgICAgICAgIHRoaXMuc2hvd0ZpbGVQcmV2aWV3KHByZXZpZXdGaWxlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRoaXMuc2hvd0ZpbGVQcmV2aWV3KGZpbGUpO1xuICB9XG59XG5cbiAgLy8gSGVscGVyIG1ldGhvZCB0byBzaG93IGZpbGUgcHJldmlld1xuICBwcml2YXRlIHNob3dGaWxlUHJldmlldyhmaWxlOiBGaWxlKTogdm9pZCB7XG4gICAgdGhpcy5maWxlUHJldmlld1JlZiA9IGNyZWF0ZUNvbXBvbmVudChGaWxlUHJldmlld0NvbXBvbmVudCwge1xuICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5pbmplY3RvclxuICAgIH0pO1xuICAgIHRoaXMuZmlsZVByZXZpZXdSZWYuc2V0SW5wdXQoJ2ZpZWxkJywgdGhpcy5maWVsZCgpKTtcbiAgICB0aGlzLmZpbGVQcmV2aWV3UmVmLnNldElucHV0KCdmaWxlJywgZmlsZSk7XG4gICAgdGhpcy5maWxlUHJldmlld1JlZi5pbnN0YW5jZS5jbG9zZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2xvc2VGaWxlUHJldmlldygpO1xuICAgIH0pO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5maWxlUHJldmlld1JlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KHRoaXMuZmlsZVByZXZpZXdSZWYuaG9zdFZpZXcpO1xuICB9XG5cbiAgY2xvc2VGaWxlUHJldmlldygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maWxlUHJldmlld1JlZikge1xuICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZmlsZVByZXZpZXdSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgICAgIGlmIChlbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICAgICAgZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgdGhpcy5hcHBSZWYuZGV0YWNoVmlldyh0aGlzLmZpbGVQcmV2aWV3UmVmLmhvc3RWaWV3KTtcbiAgICAgIHRoaXMuZmlsZVByZXZpZXdSZWYuZGVzdHJveSgpO1xuICAgICAgdGhpcy5maWxlUHJldmlld1JlZiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZUZpbGVQcmV2aWV3KCk7XG4gIH1cbn1cbiIsIjxsYWJlbCBjbGFzcz1cImZpZWxkLWxhYmxlIHVwbG9hZC1sYWJlbFwiICpuZ0lmPVwiZmllbGQoKSAmJiBmaWVsZCgpPy5pc1Zpc2libGUgJiYgZmllbGQoKT8uaXNTaG93TGFiZWxcIj57e2ZpZWxkKCk/LmxhYmVsfX08c3BhbiBzdHlsZT1cImNvbG9yOiByZWRcIiAqbmdJZj1cImZpZWxkKCkgJiYgZmllbGQoKT8udmFsaWRhdG9ycz8uaXNSZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cbiAgQGlmKHJlYWN0aXZlRm9ybUNvbnRyb2xvYmplY3QoKSkge1xuICA8aW5wdXRcbiAgICBoaWRkZW5cbiAgICBbdHlwZV09XCJmaWVsZCgpPy5jb250cm9sVHlwZVwiXG4gICAgW25hbWVdPVwiZmllbGQoKT8uZmllbGROYW1lXCJcbiAgICBbaWRdPVwiZmllbGQoKT8uZmllbGROYW1lXCJcbiAgICBbbXVsdGlwbGVdPVwiZmllbGQoKT8uY29uZmlnRGF0YT8ubXVsdGlwbGVcIlxuICAgIFthY2NlcHRdPVwiZmllbGQoKT8uY29uZmlnRGF0YT8uYWNjZXB0XCJcbiAgICAjZmlsZUlucHV0XG4gICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAoY2xpY2spPVwiZmlsZUlucHV0LnZhbHVlID0gJydcIlxuICAgIFtyZXF1aXJlZF09XCJmaWVsZCgpPy52YWxpZGF0b3JzPy5pc1JlcXVpcmVkXCJcbiAgICBbZGlzYWJsZWRdPVwiZmllbGQoKT8uaXNEaXNhYmxlXCJcbiAgICBbZm9ybUNvbnRyb2xdPVwicmVhY3RpdmVGb3JtQ29udHJvbG9iamVjdCgpXCJcbiAgLz5cbiAgfUBlbHNlIHtcbiAgPGlucHV0XG4gICAgaGlkZGVuXG4gICAgW3R5cGVdPVwiZmllbGQoKT8uY29udHJvbFR5cGVcIlxuICAgIFtuYW1lXT1cImZpZWxkKCk/LmZpZWxkTmFtZVwiXG4gICAgW2lkXT1cImZpZWxkKCk/LmZpZWxkTmFtZVwiXG4gICAgW211bHRpcGxlXT1cImZpZWxkKCk/LmNvbmZpZ0RhdGE/Lm11bHRpcGxlXCJcbiAgICBbYWNjZXB0XT1cImZpZWxkKCk/LmNvbmZpZ0RhdGE/LmFjY2VwdFwiXG4gICAgI2ZpbGVJbnB1dFxuICAgIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgKGNsaWNrKT1cImZpbGVJbnB1dC52YWx1ZSA9ICcnXCJcbiAgICBbcmVxdWlyZWRdPVwiZmllbGQoKT8udmFsaWRhdG9ycz8uaXNSZXF1aXJlZFwiXG4gICAgW2Rpc2FibGVkXT1cImZpZWxkKCk/LmlzRGlzYWJsZVwiXG4gIC8+XG4gIH1cbiAgPGJ1dHRvblxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwidXBsb2FkLWJ0blwiXG4gICAgKGNsaWNrKT1cInRyaWdnZXJGaWxlSW5wdXQoKVwiXG4gICAgW25nQ2xhc3NdPVwiZmllbGQoKT8ubGFiZWwgPyAnbGlnaHRiYWNrZ3JvdW5kJyA6ICdzdWNjZXNzQmFja2dyb3VuZCdcIlxuICAgICpuZ0lmPVwiZmllbGQoKSAmJiBmaWVsZCgpPy5pc1Zpc2libGVcIlxuICAgIFtkaXNhYmxlZF09XCJmaWVsZCgpPy5pc0Rpc2FibGVcIlxuICAgICBbbmdTdHlsZV09XCJ7XG4nLS11cGxvYWQtd2lkdGgnOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LndpZHRoICxcbictLXVwbG9hZC1ib3JkZXItcmFkaXVzJzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5ib3JkZXJSYWRpdXMgLFxuJy0tdXBsb2FkLWJvcmRlci1jb2xvcic6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uYm9yZGVyQ29sb3IgLFxuJy0tdXBsb2FkLWJvcmRlci13aWR0aCc6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uYm9yZGVyV2lkdGggLFxuJy0tdXBsb2FkLWJvcmRlci1zdHlsZSc6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uYm9yZGVyU3R5bGUgLFxuJy0tdXBsb2FkLWJhY2tncm91bmQtY29sb3InOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmJhY2tncm91bmQgLFxuJy0tdXBsb2FkLWZvY3VzLWJvcmRlci1jb2xvcic6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uZm9jdXNCb3JkZXJDb2xvciAsXG4nLS11cGxvYWQtZm9jdXMtYmFja2dyb3VuZC1jb2xvcic6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uZm9jdXNCYWNrZ3JvdW5kICxcbn1cIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkKCk/LmxhYmVsICYmICFoYXNGaWxlcygpOyBlbHNlIGZpbGVVcGxvYWRlZFRlbXBsYXRlXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInVwbG9hZC1pY29uXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgPjxpbWcgW3NyY109XCJmaWVsZCgpPy5pbWFnZVVybFwiIGFsdD1cIlwiLz48L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidXBsb2FkLXRleHRcIiBbbmdTdHlsZV09XCJ7XG4nLS11cGxvYWQtZm9udC1jb2xvcic6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uY29sb3IgLFxuJy0tdXBsb2FkLWZvbnQtc2l6ZSc6IGZpZWxkKCk/LmNvbnRyb2xTdHlsZT8uZm9udFNpemUgLFxuJy0tdXBsb2FkLWZvbnQtd2VpZ2h0JzogZmllbGQoKT8uY29udHJvbFN0eWxlPy5mb250V2VpZ2h0LFxuJy0tdXBsb2FkLWZvY3VzLWZvbnQtY29sb3InOiBmaWVsZCgpPy5jb250cm9sU3R5bGU/LmZvY3VzQ29sb3IgLFxufVwiPnt7IGZpZWxkKCk/LnBsYWNlSG9sZGVyIH19IDxzcGFuIHN0eWxlPVwiY29sb3I6IHJlZFwiICpuZ0lmPVwiZmllbGQoKSAmJiBmaWVsZCgpPy52YWxpZGF0b3JzPy5pc1JlcXVpcmVkXCI+Kjwvc3Bhbj48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNmaWxlVXBsb2FkZWRUZW1wbGF0ZT5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpbGUgb2YgdXBsb2FkZWRGaWxlczsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwidXBsb2FkZWQtZmlsZSBkLWZsZXggZ2FwLTRcIiBzdHlsZT1cInRyYW5zZm9ybTogdHJhbnNsYXRlKDBweCwgLTNweCk7XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMiByaWdodC1pY29uXCIgc3R5bGU9XCIgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcyAhaW1wb3J0YW50O1wiPlxuICAgICAgICAgIDxzcGFuPjxpbWcgW3NyY109XCJmaWVsZCgpPy5pbWFnZVVybFwiIGFsdD1cIlwiLz48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gW3RpdGxlXT1cImZpbGUubmFtZVwiPnt7IGZpbGUubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBsZWZ0LWljb25cIj5cbiAgICAgICAgICA8c3BhbiAoY2xpY2spPVwicHJldmlld0ZpbGUoZmlsZSwgaSwgJGV2ZW50KVwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiPjxpbWcgc3JjPVwiaHR0cHM6Ly9jZG4uZ29kaWdpdC5jb20vcmV0YWlsLWxpZmUvdmlzaWJpbGl0eS1vdWkuc3ZnXCIgYWx0PVwiXCIvPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAoY2xpY2spPVwicmVtb3ZlRmlsZShpLCAkZXZlbnQpXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vY2RuLmdvZGlnaXQuY29tL3JldGFpbC1saWZlL2RlbGV0ZS1vdWkuc3ZnXCIgYWx0PVwiXCIvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2J1dHRvbj5cbiAgPGRpdiBjbGFzcz1cInVwbG9hZC1pbmZvXCIgKm5nSWY9XCJmaWVsZCgpICYmIGZpZWxkKCk/LmlzVmlzaWJsZSAmJiBmaWVsZCgpPy5jb25maWdEYXRhPy5zdWJUZXh0XCI+e3tmaWVsZCgpPy5jb25maWdEYXRhPy5zdWJUZXh0fX08L2Rpdj5cbiJdfQ==
|