@rangertechnologies/ngnxt 2.1.173 → 2.1.176
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/environments/version.mjs +2 -2
- package/esm2022/lib/components/button/nxt-button.component.mjs +42 -39
- package/esm2022/lib/components/custom-dropdown/custom-dropdown.component.mjs +48 -7
- package/esm2022/lib/components/custom-radio/custom-radio.component.mjs +41 -4
- package/esm2022/lib/components/datatable/datatable.component.mjs +6 -3
- package/esm2022/lib/components/file-upload/file-upload.component.mjs +24 -59
- package/esm2022/lib/components/nxt-input/nxt-input.component.mjs +2822 -0
- package/esm2022/lib/components/pick-location/pick-location.component.mjs +19 -5
- package/esm2022/lib/components/search-box/search-box.component.mjs +19 -13
- package/esm2022/lib/nxt-app.module.mjs +13 -292
- package/esm2022/lib/pages/booklet/booklet.component.mjs +20 -7
- package/esm2022/lib/pages/builder/element/element.component.mjs +9 -12
- package/esm2022/lib/pages/builder/form/form.component.mjs +6 -5
- package/esm2022/lib/pages/builder/properties/properties.component.mjs +29 -5
- package/esm2022/lib/pages/pdfDesigner/pdf-designer/pdf-designer.component.mjs +4 -5
- package/esm2022/lib/pages/pdfDesigner/pdf-properties/pdf-properties.component.mjs +2 -2
- package/esm2022/lib/pages/questionbook/questionbook.component.mjs +14 -30
- package/esm2022/lib/pages/questionnaire/questionnaire.component.mjs +21 -40
- package/esm2022/lib/services/form-builder.service.mjs +1 -1
- package/esm2022/public-api.mjs +2 -11
- package/fesm2022/rangertechnologies-ngnxt.mjs +15838 -14645
- package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
- package/lib/components/button/nxt-button.component.d.ts +13 -12
- package/lib/components/custom-dropdown/custom-dropdown.component.d.ts +11 -4
- package/lib/components/custom-radio/custom-radio.component.d.ts +14 -3
- package/lib/components/datatable/datatable.component.d.ts +2 -1
- package/lib/components/file-upload/file-upload.component.d.ts +6 -5
- package/lib/components/nxt-input/nxt-input.component.d.ts +159 -0
- package/lib/components/pick-location/pick-location.component.d.ts +5 -3
- package/lib/components/search-box/search-box.component.d.ts +3 -2
- package/lib/nxt-app.module.d.ts +30 -55
- package/lib/pages/booklet/booklet.component.d.ts +3 -1
- package/lib/pages/builder/element/element.component.d.ts +1 -1
- package/lib/pages/builder/form/form.component.d.ts +1 -1
- package/lib/pages/builder/properties/properties.component.d.ts +93 -1
- package/lib/pages/questionbook/questionbook.component.d.ts +3 -3
- package/lib/pages/questionnaire/questionnaire.component.d.ts +6 -10
- package/lib/services/form-builder.service.d.ts +12 -22
- package/package.json +1 -1
- package/public-api.d.ts +1 -9
- package/rangertechnologies-ngnxt-2.1.176.tgz +0 -0
- package/src/lib/style.css +0 -1
- package/esm2022/lib/components/cards/group-card/group-card.component.mjs +0 -36
- package/esm2022/lib/components/cards/group-info/group-info.component.mjs +0 -102
- package/esm2022/lib/components/cards/image-card/image-card.component.mjs +0 -83
- package/esm2022/lib/components/cards/info-card/info-card.component.mjs +0 -109
- package/esm2022/lib/components/custom-button/custom-button.component.mjs +0 -42
- package/esm2022/lib/components/custom-date/custom-date.component.mjs +0 -48
- package/esm2022/lib/components/custom-date-picker/custom-date-picker.component.mjs +0 -53
- package/esm2022/lib/components/custom-image/custom-image.component.mjs +0 -34
- package/esm2022/lib/components/custom-input/custom-input.component.mjs +0 -101
- package/esm2022/lib/components/custom-label/custom-label.component.mjs +0 -24
- package/esm2022/lib/components/custom-rich-text/custom-rich-text.component.mjs +0 -182
- package/esm2022/lib/components/custom-table/custom-table.component.mjs +0 -252
- package/esm2022/lib/components/custom-text-area/custom-text-area.component.mjs +0 -71
- package/esm2022/lib/components/custom-time/custom-time.component.mjs +0 -66
- package/esm2022/lib/components/dependent-table/dependent-table.component.mjs +0 -45
- package/esm2022/lib/components/dropdown-with-flag/dropdown-with-flag.component.mjs +0 -44
- package/esm2022/lib/components/file-view/file-view.component.mjs +0 -49
- package/esm2022/lib/components/loader/loader.component.mjs +0 -23
- package/esm2022/lib/components/table-appendix/table-appendix.component.mjs +0 -128
- package/esm2022/lib/model/tableWrapper.mjs +0 -20
- package/esm2022/lib/pages/summary-page/summary-page.component.mjs +0 -79
- package/lib/components/cards/group-card/group-card.component.d.ts +0 -13
- package/lib/components/cards/group-info/group-info.component.d.ts +0 -47
- package/lib/components/cards/image-card/image-card.component.d.ts +0 -34
- package/lib/components/cards/info-card/info-card.component.d.ts +0 -39
- package/lib/components/custom-button/custom-button.component.d.ts +0 -16
- package/lib/components/custom-date/custom-date.component.d.ts +0 -16
- package/lib/components/custom-date-picker/custom-date-picker.component.d.ts +0 -20
- package/lib/components/custom-image/custom-image.component.d.ts +0 -13
- package/lib/components/custom-input/custom-input.component.d.ts +0 -28
- package/lib/components/custom-label/custom-label.component.d.ts +0 -10
- package/lib/components/custom-rich-text/custom-rich-text.component.d.ts +0 -29
- package/lib/components/custom-table/custom-table.component.d.ts +0 -53
- package/lib/components/custom-text-area/custom-text-area.component.d.ts +0 -22
- package/lib/components/custom-time/custom-time.component.d.ts +0 -18
- package/lib/components/dependent-table/dependent-table.component.d.ts +0 -15
- package/lib/components/dropdown-with-flag/dropdown-with-flag.component.d.ts +0 -16
- package/lib/components/file-view/file-view.component.d.ts +0 -16
- package/lib/components/loader/loader.component.d.ts +0 -11
- package/lib/components/table-appendix/table-appendix.component.d.ts +0 -30
- package/lib/model/tableWrapper.d.ts +0 -18
- package/lib/pages/summary-page/summary-page.component.d.ts +0 -20
- package/rangertechnologies-ngnxt-2.1.173.tgz +0 -0
|
@@ -17,9 +17,8 @@ export class FileUploadComponent {
|
|
|
17
17
|
deletedFileData = new EventEmitter();
|
|
18
18
|
allFiles;
|
|
19
19
|
limitFileUploading;
|
|
20
|
-
|
|
20
|
+
mode = 'edit'; // SKS11JUN25 New mode input
|
|
21
21
|
isShowNoFileIcon;
|
|
22
|
-
tableFile; // file Upload from table
|
|
23
22
|
question;
|
|
24
23
|
error;
|
|
25
24
|
//RS 09JAN2025
|
|
@@ -31,10 +30,10 @@ export class FileUploadComponent {
|
|
|
31
30
|
copyOfInputAllFiles;
|
|
32
31
|
copyOfFileUploadingLimit;
|
|
33
32
|
fileUrl;
|
|
34
|
-
showFile = false;
|
|
35
33
|
isImage = false;
|
|
36
34
|
fileName = '';
|
|
37
35
|
currentFile;
|
|
36
|
+
showPopup = false; // SKS11JUN25 Add popup visibility control
|
|
38
37
|
constructor(SharedService, dataService, sanitizer, i18nService) {
|
|
39
38
|
this.SharedService = SharedService;
|
|
40
39
|
this.dataService = dataService;
|
|
@@ -45,14 +44,10 @@ export class FileUploadComponent {
|
|
|
45
44
|
ngOnInit() {
|
|
46
45
|
this.initializeFileConfigs();
|
|
47
46
|
}
|
|
48
|
-
// VD 03May24 file upload fix
|
|
49
|
-
// onFileUpload(event: any) {
|
|
50
|
-
// const fileUploaderElement: HTMLElement = document.getElementById(
|
|
51
|
-
// 'fileUpload'
|
|
52
|
-
// ) as HTMLElement;
|
|
53
|
-
// fileUploaderElement.click();
|
|
54
|
-
// }
|
|
55
47
|
ngOnChanges(simpleChanges) {
|
|
48
|
+
if (simpleChanges['mode']) {
|
|
49
|
+
this.mode = simpleChanges['mode'].currentValue;
|
|
50
|
+
}
|
|
56
51
|
if (simpleChanges.allFiles) { //SKS5NOV25
|
|
57
52
|
this.copyOfInputAllFiles = simpleChanges.allFiles.currentValue || [];
|
|
58
53
|
}
|
|
@@ -78,6 +73,14 @@ export class FileUploadComponent {
|
|
|
78
73
|
}
|
|
79
74
|
}
|
|
80
75
|
}
|
|
76
|
+
// SKS11JUN25 Open the popup
|
|
77
|
+
openPopup() {
|
|
78
|
+
this.showPopup = true;
|
|
79
|
+
}
|
|
80
|
+
// SKS11JUN25 Close the popup
|
|
81
|
+
closePopup() {
|
|
82
|
+
this.showPopup = false;
|
|
83
|
+
}
|
|
81
84
|
uploadMultipleFiles(event) {
|
|
82
85
|
console.log('File uploader initiated');
|
|
83
86
|
this.validationErrors = []; // RS 17JAN2025 Clear previous errors
|
|
@@ -146,43 +149,6 @@ export class FileUploadComponent {
|
|
|
146
149
|
}
|
|
147
150
|
event.target.value = '';
|
|
148
151
|
}
|
|
149
|
-
// uploadMultipleFiles(event: any) {
|
|
150
|
-
// console.log('File uploader initiated');
|
|
151
|
-
// let inputFiles: any[] = this.copyOfInputAllFiles ? this.copyOfInputAllFiles : [];
|
|
152
|
-
// const selectedFileData = [];
|
|
153
|
-
// const uploadedFiles = event.target.files;
|
|
154
|
-
// if (uploadedFiles.length + inputFiles.length <= this.copyOfFileUploadingLimit) {
|
|
155
|
-
// for (const eachUploadedFile of uploadedFiles) {
|
|
156
|
-
// const reader = new FileReader();
|
|
157
|
-
// const file: File = eachUploadedFile;
|
|
158
|
-
// const format = file.name.split('.')[1];
|
|
159
|
-
// reader.readAsDataURL(file);
|
|
160
|
-
// reader.onload = () => {
|
|
161
|
-
// selectedFileData.push({
|
|
162
|
-
// doc: reader.result,
|
|
163
|
-
// name: file.name,
|
|
164
|
-
// type: file.type,
|
|
165
|
-
// format,
|
|
166
|
-
// id: null,
|
|
167
|
-
// });
|
|
168
|
-
// inputFiles.push({
|
|
169
|
-
// doc: reader.result,
|
|
170
|
-
// name: file.name,
|
|
171
|
-
// type: file.type,
|
|
172
|
-
// format,
|
|
173
|
-
// id: null,
|
|
174
|
-
// });
|
|
175
|
-
// };
|
|
176
|
-
// }
|
|
177
|
-
// } else {
|
|
178
|
-
// console.warn('You can upload max 5 files');
|
|
179
|
-
// //this.toastr.warning(TOASTER_MESSAGES.MAX_FIVE_FILES, TOASTER_MESSAGES.WARNING_TITLE);
|
|
180
|
-
// }
|
|
181
|
-
// event.target.value = '';
|
|
182
|
-
// this.copyOfInputAllFiles = inputFiles;
|
|
183
|
-
// console.log('uploadedFiles',inputFiles);
|
|
184
|
-
// this.selectedFileData.emit(inputFiles);
|
|
185
|
-
// }
|
|
186
152
|
deleteFile(currentFileIndex) {
|
|
187
153
|
const deletedFileName = this.selectedFileNameArray.splice(currentFileIndex, 1);
|
|
188
154
|
const deletedFile = this.copyOfInputAllFiles.splice(currentFileIndex, 1);
|
|
@@ -194,7 +160,6 @@ export class FileUploadComponent {
|
|
|
194
160
|
// RS 09DEC24 Changed keys
|
|
195
161
|
viewFile(currentFile) {
|
|
196
162
|
this.currentFile = currentFile;
|
|
197
|
-
console.log(currentFile);
|
|
198
163
|
// AP-25MAR25 Ensure subText is parsed into an object if it's not already
|
|
199
164
|
this.question['subText'] = typeof this.question?.subText === 'object' ? this.question?.subText : JSON.parse(this.question['subText']) || {};
|
|
200
165
|
if (this.question.subText != undefined) {
|
|
@@ -206,12 +171,10 @@ export class FileUploadComponent {
|
|
|
206
171
|
const fullEndPoint = endpoint + '?' + queryParameter + '=' + file[queryParameter];
|
|
207
172
|
if (fullEndPoint) {
|
|
208
173
|
this.dataService.apiResponse(fullEndPoint).pipe(catchError((error) => {
|
|
209
|
-
this.showFile = true;
|
|
210
174
|
this.viewLocalFile(); // Call fallback method
|
|
211
175
|
return of(null); // Return a fallback value to keep observable chain alive
|
|
212
176
|
})).subscribe((apiResponse) => {
|
|
213
177
|
if (apiResponse) {
|
|
214
|
-
this.showFile = true;
|
|
215
178
|
this.handleFileContent(apiResponse);
|
|
216
179
|
}
|
|
217
180
|
});
|
|
@@ -227,7 +190,7 @@ export class FileUploadComponent {
|
|
|
227
190
|
if (this.currentFile) {
|
|
228
191
|
this.setFileUrl(this.currentFile?.doc);
|
|
229
192
|
this.fileName = this.currentFile.name;
|
|
230
|
-
this.isImage = this.currentFile.type
|
|
193
|
+
this.isImage = this.currentFile.type?.startsWith('image/');
|
|
231
194
|
}
|
|
232
195
|
}
|
|
233
196
|
handleFileContent(fileResponse) {
|
|
@@ -244,14 +207,18 @@ export class FileUploadComponent {
|
|
|
244
207
|
}
|
|
245
208
|
}
|
|
246
209
|
setFileUrl(url) {
|
|
247
|
-
|
|
210
|
+
if (url) {
|
|
211
|
+
this.fileUrl = this.sanitizer.bypassSecurityTrustResourceUrl(url);
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
this.fileUrl = null; // or handle gracefully
|
|
215
|
+
}
|
|
248
216
|
}
|
|
249
217
|
getDocIcon(docName) {
|
|
250
218
|
const ext = docName.split('.').pop(-1);
|
|
251
219
|
return this.SharedService.docIcon(ext);
|
|
252
220
|
}
|
|
253
221
|
close() {
|
|
254
|
-
this.showFile = false;
|
|
255
222
|
this.fileName = '';
|
|
256
223
|
this.fileUrl = '';
|
|
257
224
|
this.isImage = false;
|
|
@@ -260,13 +227,13 @@ export class FileUploadComponent {
|
|
|
260
227
|
}
|
|
261
228
|
}
|
|
262
229
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileUploadComponent, deps: [{ token: i1.SharedService }, { token: i2.DataService }, { token: i3.DomSanitizer }, { token: i4.I18nService }], target: i0.ɵɵFactoryTarget.Component });
|
|
263
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FileUploadComponent, isStandalone: true, selector: "app-file-upload", inputs: { allFiles: "allFiles", limitFileUploading: "limitFileUploading", isDeleteFileButtonVisible: "isDeleteFileButtonVisible", isShowNoFileIcon: "isShowNoFileIcon", tableFile: "tableFile", question: "question", error: "error" }, outputs: { selectedFileData: "selectedFileData", deletedFileData: "deletedFileData" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"row\" style=\"margin: 0;\">\n <div class=\"col-md-12\" *ngIf=\"!isDeleteFileButtonVisible\" style=\"text-align: left;\">\n <!-- HA 19DEC23 For translation -->\n <label class=\"she-label\">{{ 'attachment' | i18n:i18nService.currentLanguage }}</label>\n </div>\n\n <div class=\"col-lg-5 document-cnt m-t-10 m-b-10\"\n *ngFor=\"let eachFile of copyOfInputAllFiles; let currentFileIndex = index\">\n <div *ngIf=\"!tableFile\"> <!-- (click)=\"viewFile(eachFile)\" -->\n <div class=\"col-lg-3 document_image\">\n <img [src]=\"getDocIcon(eachFile?.name)\">\n </div>\n <div class=\"col-lg-9 document_name\">\n {{eachFile?.name}}\n </div>\n <div class=\"document_delete\" (click)=\"deleteFile(currentFileIndex);$event.stopPropagation()\"\n *ngIf=\"isDeleteFileButtonVisible\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/bin.svg\">\n </div>\n <!-- VD 20May24 - preview changes-->\n <div class=\"preview-icon\" (click)=\"viewFile(eachFile)\" *ngIf=\"isDeleteFileButtonVisible\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/icons8-eye-24.png\">\n </div>\n </div>\n <div *ngIf=\"tableFile\" class=\"row\" style=\"cursor: pointer;\">\n <div class=\"col-lg-3 document_image\">\n <img [src]=\"getDocIcon(eachFile?.doc)\" style=\"margin-right: 10px;height: 40px;\">\n </div>\n <div class=\"col-lg-9 document_name\" style=\"overflow:hidden;height:35px;\">\n {{eachFile?.name}}\n </div>\n </div>\n </div>\n <div class=\"col-md-12 m-b-30 text-center\" *ngIf=\"copyOfInputAllFiles?.length === 0 && isShowNoFileIcon\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/ic_no_attachments.svg\" style=\"height: 140px;\">\n </div>\n</div>\n\n<div class=\"col-lg-6\" style=\"padding:0;margin-top: 10px;\">\n <label class=\"custom-file\" *ngIf=\"isDeleteFileButtonVisible && !tableFile\">\n <!-- HA 19DEC23 For translation -->\n <!-- VD 03May24 file upload fix-->\n <!-- RS 09JAN2025 -->\n <button [class]=\"error ? 'she-btn-primary-bordered Invalid' : 'she-btn-primary-bordered'\" style=\"width:275px;\"\n (click)=\"fileInput.click()\" [ngClass]=\"{ 'btn-disabled': copyOfInputAllFiles?.length >= maxFiles }\"\n [disabled]=\"copyOfInputAllFiles?.length >= maxFiles\">Choose Files</button>\n <input #fileInput type=\"file\" name=\"fileUpload\" multiple=\"multiple\" [accept]=\"allowedFileTypes.join(',')\"\n style=\"display:none;\" (change)=uploadMultipleFiles($event) />\n </label>\n\n <!-- RS 09JAN2025 -->\n <!-- Error messages section -->\n <div class=\"file-constraints\" *ngIf=\"validationErrors.length > 0\">\n <small class=\"text-danger\">\n <div *ngFor=\"let error of validationErrors\">{{ error }}</div>\n </small>\n </div>\n\n <!-- HA 19DEC23 For translation -->\n <label *ngIf=\"tableFile\" class=\"btn btn-primary\">\n {{ 'uploadFile' | i18n:i18nService.currentLanguage }}\n <input id=\"file\" style=\"display: none;\" type=\"file\" class=\"form-control\" (change)=uploadMultipleFiles($event) />\n </label>\n <!-- <span class=\"error-msg\" *ngIf=\"(formControl?.documents?.touched || formControl?.documents?.dirty) &&\n formControl?.documents?.errors?.required\">\n {{LM_POLICY_VALIDATION_MESSAGE.REQUIRED}}\n </span> -->\n <!-- RS 09DEC24 Changed keys-->\n</div>\n<div *ngIf=\"error\" class=\"error-msg\" style=\"margin-top: 10px;\">{{question?.errorMessage}}</div>\n<div class=\"nxt-file-overlay\" *ngIf=\"showFile\">\n <div class=\"nxt-file-map-modal\">\n <div class=\"nxt-file-model-content\">\n <div class=\"nxt-file-model-header\">\n <h4>{{fileName}}</h4>\n <button class=\"close-button\" (click)=\"close()\">X</button>\n </div>\n <ng-container *ngIf=\"isImage; else otherFile\">\n <img [src]=\"fileUrl\" class=\"img-fluid\" alt=\"File Preview\" />\n </ng-container>\n <ng-template #otherFile>\n <iframe [src]=\"fileUrl\" width=\"100%\" height=\"500px\"></iframe>\n </ng-template>\n </div>\n </div>\n</div>", styles: [".document-cnt{padding:10px;border:1px solid #ccc;border-radius:5px;background-color:#f9f9f9;margin-bottom:10px;cursor:pointer;transition:background-color .3s ease;position:relative}.document-cnt:hover{background-color:#e9ecef}.document_image img{width:30px;height:30px}.document_name{font-size:14px;font-weight:700;color:#333;line-height:30px}.label{margin-bottom:0}.document_delete img,.preview-icon img{width:20px;height:20px;cursor:pointer;transition:transform .3s ease}.document_delete img{filter:brightness(0) saturate(100%) invert(20%) sepia(97%) saturate(7481%) hue-rotate(357deg) brightness(98%) contrast(119%)}.document_delete img:hover,.preview-icon img:hover{transform:scale(1.1)}.document_delete,.preview-icon{position:absolute;top:50%;transform:translateY(-50%)}.document_delete{right:10px}.preview-icon{right:40px}@media (min-width: 992px){.document-cnt{margin-left:10px}}.btn-disabled{background:#e1e1e1;color:#fff;border:none;border-radius:5px;height:50px}.form-control[disabled]{border-radius:5px}.custom-file{color:#9a9a9a;font-size:14px;font-weight:400;display:inline-block;width:auto;margin-bottom:5px}.she-btn-primary-bordered{background:#fff;color:#48b7ff;border:1px solid #48B7FF;border-radius:5px;height:50px;outline:none!important}.btn-primary{background-color:#03a9f4!important;border:1px solid #03a9f4!important;color:#fff!important}.btn.btn-primary{border-radius:2px;padding:6px 14px;font-size:14px}.nxt-file-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.nxt-file-map-modal{background-color:#fff;border-radius:8px;overflow:hidden;width:80%;max-width:800px;max-height:90%;display:flex;flex-direction:column}.nxt-file-model-content{display:flex;flex-direction:column;height:100%}.nxt-file-model-header{display:flex;justify-content:space-between;align-items:center;padding:10px 20px;background-color:#f5f5f5;border-bottom:1px solid #ddd}.nxt-file-model-header h4{margin:0;font-size:1.25em}.close-button{background:none;border:none;font-size:1.5em;cursor:pointer}.img-fluid{max-width:100%;height:auto;flex:1}iframe{border:none}.Invalid{border:1px solid red!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: I18nPipe, name: "i18n" }] });
|
|
230
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FileUploadComponent, isStandalone: true, selector: "app-file-upload", inputs: { allFiles: "allFiles", limitFileUploading: "limitFileUploading", mode: "mode", isShowNoFileIcon: "isShowNoFileIcon", question: "question", error: "error" }, outputs: { selectedFileData: "selectedFileData", deletedFileData: "deletedFileData" }, usesOnChanges: true, ngImport: i0, template: "<!-- SKS11JUN25 file-upload.component.html -->\n<div class=\"flex\" style=\"align-items: center; gap: 10px;\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <rect width=\"24\" height=\"24\" fill=\"url(#pattern0_616_35125)\"/>\n <defs>\n <pattern id=\"pattern0_616_35125\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n <use xlink:href=\"#image0_616_35125\" transform=\"scale(0.00195312)\"/>\n </pattern>\n <image id=\"image0_616_35125\" width=\"512\" height=\"512\" preserveAspectRatio=\"none\" xlink:href=\"data:image/png;base64,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\"/>\n </defs>\n </svg> \n @if(copyOfInputAllFiles && copyOfInputAllFiles.length > 0){\n <span (click)=\"openPopup()\" \n style=\"text-decoration: underline; cursor: pointer;\">\n {{ copyOfInputAllFiles.length === 1 ? '1 File Attached' : '+' + copyOfInputAllFiles.length + ' Files Attached' }}\n </span>\n } \n @else {\n <div> Add files </div>\n }\n <svg *ngIf=\"!question.isReadOnly\" (click)=\"fileInput.click()\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_616_35139)\">\n <path d=\"M15.925 1.48633H6.75V5.29111H17.8845V3.4451C17.8845 2.36493 17.0054 1.48633 15.925 1.48633Z\" fill=\"#6F7173\"/>\n <path d=\"M10.731 5.87631H0V2.34589C0 1.05225 1.0527 0 2.3468 0H5.77789C6.11893 0 6.44745 0.0718689 6.74591 0.206909C7.16278 0.394745 7.5209 0.704346 7.77206 1.10886L10.731 5.87631Z\" fill=\"#57595B\"/>\n <path d=\"M20 6.66675V18.0388C20 19.1204 19.1196 20 18.0376 20H1.96243C0.880432 20 0 19.1204 0 18.0388V4.70508H18.0376C19.1196 4.70508 20 5.58505 20 6.66675Z\" fill=\"#292D32\"/>\n <path d=\"M20 6.66675V18.0388C20 19.1204 19.1196 20 18.0376 20H10V4.70508H18.0376C19.1196 4.70508 20 5.58505 20 6.66675Z\" fill=\"#292D32\"/>\n <path d=\"M15.2601 12.3527C15.2601 15.2539 12.9001 17.6141 9.99921 17.6141C7.09836 17.6141 4.73828 15.2539 4.73828 12.3527C4.73828 9.45203 7.09836 7.0918 9.99921 7.0918C12.9001 7.0918 15.2601 9.45203 15.2601 12.3527Z\" fill=\"#6F7173\"/>\n <path d=\"M15.2609 12.3527C15.2609 15.2539 12.9008 17.6141 10 17.6141V7.0918C12.9008 7.0918 15.2609 9.45203 15.2609 12.3527Z\" fill=\"#6F7173\"/>\n <path d=\"M11.6954 12.4167C11.5856 12.5096 11.4512 12.555 11.318 12.555C11.1512 12.555 10.9855 12.4843 10.8695 12.3467L10.5856 12.0101V14.2139C10.5856 14.5374 10.3231 14.7998 9.99964 14.7998C9.67615 14.7998 9.4137 14.5374 9.4137 14.2139V12.0101L9.12974 12.3467C8.92069 12.594 8.55128 12.6256 8.30393 12.4167C8.05674 12.2081 8.025 11.8386 8.23359 11.5912L9.39341 10.2162C9.54462 10.0374 9.76527 9.93457 9.99964 9.93457C10.234 9.93457 10.4547 10.0374 10.6059 10.2162L11.7657 11.5912C11.9743 11.8386 11.9425 12.2081 11.6954 12.4167Z\" fill=\"#292D32\"/>\n <path d=\"M11.6957 12.4167C11.586 12.5096 11.4516 12.555 11.3184 12.555C11.1516 12.555 10.9859 12.4843 10.8699 12.3467L10.5859 12.0101V14.2139C10.5859 14.5374 10.3235 14.7998 10 14.7998V9.93457C10.2344 9.93457 10.455 10.0374 10.6062 10.2162L11.7661 11.5912C11.9746 11.8386 11.9429 12.2081 11.6957 12.4167Z\" fill=\"#292D32\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_616_35139\">\n <rect width=\"20\" height=\"20\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg> \n <input #fileInput type=\"file\" name=\"fileUpload\" multiple=\"multiple\" [accept]=\"allowedFileTypes.join(',')\"\n style=\"display:none;\" (change)=uploadMultipleFiles($event) />\n</div>\n\n<div class=\"col-lg-6\" style=\"padding:0;margin-top: 10px;\">\n <!-- Error messages section -->\n <div class=\"file-constraints\" *ngIf=\"validationErrors.length > 0\">\n <small class=\"text-danger\">\n <div *ngFor=\"let error of validationErrors\">{{ error }}</div>\n </small>\n </div>\n</div>\n\n<div *ngIf=\"error\" class=\"error-msg\" style=\"margin-top: 10px;\">{{question?.errorMessage}}</div>\n\n<!-- SKS11JUN25 File Selection Popup Modal -->\n<div class=\"file-popup-overlay\" *ngIf=\"showPopup\" (click)=\"closePopup()\">\n <div class=\"file-popup-modal\" (click)=\"$event.stopPropagation()\">\n <!-- Header -->\n <div class=\"file-popup-header\">\n <div class=\"selection-type\">\n <h2 class=\"popup-title\">{{question.questionText}}</h2>\n </div>\n <button class=\"close-btn\" (click)=\"closePopup()\">\n <span class=\"close-icon\">\u00D7</span>\n </button>\n </div>\n\n <!-- SKS11JUN25 Content -->\n <div class=\"file-popup-content\">\n <!-- SKS11JUN25 Left Panel - File List -->\n <div class=\"file-list-panel\">\n <div class=\"file-item\" *ngFor=\"let file of copyOfInputAllFiles; let i = index\" \n [class.selected]=\"currentFile === file\"\n (click)=\"viewFile(file)\">\n <div class=\"file-icon\">\n <img style=\"width: 28px;height: 28px;\" [src]=\"getDocIcon(file?.name)\">\n </div>\n <div class=\"file-details\">\n <div class=\"file-name\">{{ file.name }}</div>\n </div>\n <div *ngIf=\"!question.isReadOnly\" class=\"file-actions\">\n <button class=\"action-btn\" (click)=\"$event.stopPropagation(); deleteFile(i)\" title=\"Delete\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <polyline points=\"3,6 5,6 21,6\"></polyline>\n <path d=\"m19,6v14a2,2 0 0,1 -2,2H7a2,2 0 0,1 -2,-2V6m3,0V4a2,2 0 0,1 2,-2h4a2,2 0 0,1 2,2v2\"></path>\n </svg>\n </button>\n </div>\n </div>\n\n <!-- Empty state -->\n <div class=\"empty-state\" *ngIf=\"!copyOfInputAllFiles || copyOfInputAllFiles.length === 0\">\n <div class=\"empty-icon\">\uD83D\uDCC4</div>\n <p>No files selected</p>\n </div>\n </div>\n\n <!-- SKS11JUN25 Right Panel - Preview -->\n <div class=\"file-preview-panel\">\n @if(currentFile){\n <div class=\"preview-content\" >\n @if(isImage && fileUrl){\n <img [src]=\"fileUrl\" class=\"preview-image\" alt=\"File Preview\" />\n }\n @else if(fileUrl){\n <iframe [src]=\"fileUrl\" width=\"100%\" height=\"500px\"></iframe>\n } \n @else{\n <div>Unable to load the file preview.</div>\n }\n </div>\n }\n @else{\n <div class=\"no-preview\">\n <p>Select a file to preview</p>\n </div>\n }\n </div>\n </div>\n </div>\n</div>", styles: [".document-cnt{padding:10px;border:1px solid #ccc;border-radius:5px;background-color:#f9f9f9;margin-bottom:10px;cursor:pointer;transition:background-color .3s ease;position:relative}.document-cnt:hover{background-color:#e9ecef}.document_image img{width:30px;height:30px}.document_name{font-size:14px;font-weight:700;color:#333;line-height:30px}.label{margin-bottom:0}.document_delete img,.preview-icon img{width:20px;height:20px;cursor:pointer;transition:transform .3s ease}.document_delete img{filter:brightness(0) saturate(100%) invert(20%) sepia(97%) saturate(7481%) hue-rotate(357deg) brightness(98%) contrast(119%)}.document_delete img:hover,.preview-icon img:hover{transform:scale(1.1)}.document_delete,.preview-icon{position:absolute;top:50%;transform:translateY(-50%)}.document_delete{right:10px}.preview-icon{right:40px}@media (min-width: 992px){.document-cnt{margin-left:10px}}.form-control[disabled]{border-radius:5px}.btn-primary{background-color:#03a9f4!important;border:1px solid #03a9f4!important;color:#fff!important}.btn.btn-primary{border-radius:2px;padding:6px 14px;font-size:14px}.Invalid{border:1px solid red!important}.close-button{background:none;border:none;font-size:1.5em;cursor:pointer}.img-fluid{max-width:100%;height:auto;flex:1}iframe{border:none}.file-popup-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1001}.file-popup-modal{background:#fff;border-radius:12px;width:90%;max-width:1000px;height:80%;max-height:600px;display:flex;flex-direction:column;box-shadow:0 20px 40px #0000001a;overflow:hidden}.file-popup-header{display:flex;justify-content:space-between;align-items:flex-start;padding:24px 32px;border-bottom:1px solid #e5e7eb;background-color:#fafafa}.selection-type{flex:1}.popup-title{font-size:24px;font-weight:600;color:#111827;margin:0}.close-btn{background:none;border:none;width:32px;height:32px;border-radius:6px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color .2s}.close-btn:hover{background-color:#f3f4f6}.close-icon{font-size:24px;color:#6b7280;line-height:1}.file-popup-content{display:flex;flex:1;overflow:hidden}.file-list-panel{width:300px;border-right:1px solid #e5e7eb;background-color:#fff;overflow-y:auto;padding:16px}.file-item{display:flex;align-items:center;padding:12px 16px;border-radius:8px;cursor:pointer;transition:background-color .2s;margin-bottom:8px;border:1px solid #dfe0e2;background-color:#fff}.file-item:hover{background-color:#f8fafc;border-color:#e2e8f0}.file-item.selected{background-color:#dbeafe;border-color:#3b82f6}.file-icon{margin-right:12px;flex-shrink:0}.file-details{flex:1;min-width:0}.file-name{font-size:14px;font-weight:500;color:#111827;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:2px}.file-actions{margin-left:8px}.action-btn{background:none;border:none;padding:4px;border-radius:4px;cursor:pointer;color:#6b7280;transition:all .2s}.action-btn:hover{background-color:#fef2f2;color:#dc2626}.file-preview-panel{flex:1;background-color:#f9fafb;display:flex;align-items:center;justify-content:center;padding:32px}.preview-content{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.preview-image{max-width:100%;max-height:100%;border-radius:8px;box-shadow:0 4px 6px #0000001a}.no-preview{text-align:center;color:#6b7280}.empty-state{text-align:center;padding:32px 16px;color:#6b7280}.empty-icon{font-size:48px;margin-bottom:16px;opacity:.5}.empty-state p{margin:0;font-size:14px}@media (max-width: 768px){.file-popup-modal{width:95%;height:85%}.file-popup-content{flex-direction:column}.file-list-panel{width:100%;max-height:300px}.file-preview-panel{flex:1;min-height:200px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
264
231
|
}
|
|
265
232
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileUploadComponent, decorators: [{
|
|
266
233
|
type: Component,
|
|
267
234
|
args: [{ selector: 'app-file-upload', standalone: true, imports: [
|
|
268
235
|
CommonModule, I18nPipe
|
|
269
|
-
], template: "<div class=\"row\" style=\"margin: 0;\">\n <div class=\"col-md-12\" *ngIf=\"!isDeleteFileButtonVisible\" style=\"text-align: left;\">\n <!-- HA 19DEC23 For translation -->\n <label class=\"she-label\">{{ 'attachment' | i18n:i18nService.currentLanguage }}</label>\n </div>\n\n <div class=\"col-lg-5 document-cnt m-t-10 m-b-10\"\n *ngFor=\"let eachFile of copyOfInputAllFiles; let currentFileIndex = index\">\n <div *ngIf=\"!tableFile\"> <!-- (click)=\"viewFile(eachFile)\" -->\n <div class=\"col-lg-3 document_image\">\n <img [src]=\"getDocIcon(eachFile?.name)\">\n </div>\n <div class=\"col-lg-9 document_name\">\n {{eachFile?.name}}\n </div>\n <div class=\"document_delete\" (click)=\"deleteFile(currentFileIndex);$event.stopPropagation()\"\n *ngIf=\"isDeleteFileButtonVisible\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/bin.svg\">\n </div>\n <!-- VD 20May24 - preview changes-->\n <div class=\"preview-icon\" (click)=\"viewFile(eachFile)\" *ngIf=\"isDeleteFileButtonVisible\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/icons8-eye-24.png\">\n </div>\n </div>\n <div *ngIf=\"tableFile\" class=\"row\" style=\"cursor: pointer;\">\n <div class=\"col-lg-3 document_image\">\n <img [src]=\"getDocIcon(eachFile?.doc)\" style=\"margin-right: 10px;height: 40px;\">\n </div>\n <div class=\"col-lg-9 document_name\" style=\"overflow:hidden;height:35px;\">\n {{eachFile?.name}}\n </div>\n </div>\n </div>\n <div class=\"col-md-12 m-b-30 text-center\" *ngIf=\"copyOfInputAllFiles?.length === 0 && isShowNoFileIcon\">\n <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/ic_no_attachments.svg\" style=\"height: 140px;\">\n </div>\n</div>\n\n<div class=\"col-lg-6\" style=\"padding:0;margin-top: 10px;\">\n <label class=\"custom-file\" *ngIf=\"isDeleteFileButtonVisible && !tableFile\">\n <!-- HA 19DEC23 For translation -->\n <!-- VD 03May24 file upload fix-->\n <!-- RS 09JAN2025 -->\n <button [class]=\"error ? 'she-btn-primary-bordered Invalid' : 'she-btn-primary-bordered'\" style=\"width:275px;\"\n (click)=\"fileInput.click()\" [ngClass]=\"{ 'btn-disabled': copyOfInputAllFiles?.length >= maxFiles }\"\n [disabled]=\"copyOfInputAllFiles?.length >= maxFiles\">Choose Files</button>\n <input #fileInput type=\"file\" name=\"fileUpload\" multiple=\"multiple\" [accept]=\"allowedFileTypes.join(',')\"\n style=\"display:none;\" (change)=uploadMultipleFiles($event) />\n </label>\n\n <!-- RS 09JAN2025 -->\n <!-- Error messages section -->\n <div class=\"file-constraints\" *ngIf=\"validationErrors.length > 0\">\n <small class=\"text-danger\">\n <div *ngFor=\"let error of validationErrors\">{{ error }}</div>\n </small>\n </div>\n\n <!-- HA 19DEC23 For translation -->\n <label *ngIf=\"tableFile\" class=\"btn btn-primary\">\n {{ 'uploadFile' | i18n:i18nService.currentLanguage }}\n <input id=\"file\" style=\"display: none;\" type=\"file\" class=\"form-control\" (change)=uploadMultipleFiles($event) />\n </label>\n <!-- <span class=\"error-msg\" *ngIf=\"(formControl?.documents?.touched || formControl?.documents?.dirty) &&\n formControl?.documents?.errors?.required\">\n {{LM_POLICY_VALIDATION_MESSAGE.REQUIRED}}\n </span> -->\n <!-- RS 09DEC24 Changed keys-->\n</div>\n<div *ngIf=\"error\" class=\"error-msg\" style=\"margin-top: 10px;\">{{question?.errorMessage}}</div>\n<div class=\"nxt-file-overlay\" *ngIf=\"showFile\">\n <div class=\"nxt-file-map-modal\">\n <div class=\"nxt-file-model-content\">\n <div class=\"nxt-file-model-header\">\n <h4>{{fileName}}</h4>\n <button class=\"close-button\" (click)=\"close()\">X</button>\n </div>\n <ng-container *ngIf=\"isImage; else otherFile\">\n <img [src]=\"fileUrl\" class=\"img-fluid\" alt=\"File Preview\" />\n </ng-container>\n <ng-template #otherFile>\n <iframe [src]=\"fileUrl\" width=\"100%\" height=\"500px\"></iframe>\n </ng-template>\n </div>\n </div>\n</div>", styles: [".document-cnt{padding:10px;border:1px solid #ccc;border-radius:5px;background-color:#f9f9f9;margin-bottom:10px;cursor:pointer;transition:background-color .3s ease;position:relative}.document-cnt:hover{background-color:#e9ecef}.document_image img{width:30px;height:30px}.document_name{font-size:14px;font-weight:700;color:#333;line-height:30px}.label{margin-bottom:0}.document_delete img,.preview-icon img{width:20px;height:20px;cursor:pointer;transition:transform .3s ease}.document_delete img{filter:brightness(0) saturate(100%) invert(20%) sepia(97%) saturate(7481%) hue-rotate(357deg) brightness(98%) contrast(119%)}.document_delete img:hover,.preview-icon img:hover{transform:scale(1.1)}.document_delete,.preview-icon{position:absolute;top:50%;transform:translateY(-50%)}.document_delete{right:10px}.preview-icon{right:40px}@media (min-width: 992px){.document-cnt{margin-left:10px}}.btn-disabled{background:#e1e1e1;color:#fff;border:none;border-radius:5px;height:50px}.form-control[disabled]{border-radius:5px}.custom-file{color:#9a9a9a;font-size:14px;font-weight:400;display:inline-block;width:auto;margin-bottom:5px}.she-btn-primary-bordered{background:#fff;color:#48b7ff;border:1px solid #48B7FF;border-radius:5px;height:50px;outline:none!important}.btn-primary{background-color:#03a9f4!important;border:1px solid #03a9f4!important;color:#fff!important}.btn.btn-primary{border-radius:2px;padding:6px 14px;font-size:14px}.nxt-file-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.nxt-file-map-modal{background-color:#fff;border-radius:8px;overflow:hidden;width:80%;max-width:800px;max-height:90%;display:flex;flex-direction:column}.nxt-file-model-content{display:flex;flex-direction:column;height:100%}.nxt-file-model-header{display:flex;justify-content:space-between;align-items:center;padding:10px 20px;background-color:#f5f5f5;border-bottom:1px solid #ddd}.nxt-file-model-header h4{margin:0;font-size:1.25em}.close-button{background:none;border:none;font-size:1.5em;cursor:pointer}.img-fluid{max-width:100%;height:auto;flex:1}iframe{border:none}.Invalid{border:1px solid red!important}\n"] }]
|
|
236
|
+
], template: "<!-- SKS11JUN25 file-upload.component.html -->\n<div class=\"flex\" style=\"align-items: center; gap: 10px;\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <rect width=\"24\" height=\"24\" fill=\"url(#pattern0_616_35125)\"/>\n <defs>\n <pattern id=\"pattern0_616_35125\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n <use xlink:href=\"#image0_616_35125\" transform=\"scale(0.00195312)\"/>\n </pattern>\n <image id=\"image0_616_35125\" width=\"512\" height=\"512\" preserveAspectRatio=\"none\" xlink:href=\"data:image/png;base64,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\"/>\n </defs>\n </svg> \n @if(copyOfInputAllFiles && copyOfInputAllFiles.length > 0){\n <span (click)=\"openPopup()\" \n style=\"text-decoration: underline; cursor: pointer;\">\n {{ copyOfInputAllFiles.length === 1 ? '1 File Attached' : '+' + copyOfInputAllFiles.length + ' Files Attached' }}\n </span>\n } \n @else {\n <div> Add files </div>\n }\n <svg *ngIf=\"!question.isReadOnly\" (click)=\"fileInput.click()\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_616_35139)\">\n <path d=\"M15.925 1.48633H6.75V5.29111H17.8845V3.4451C17.8845 2.36493 17.0054 1.48633 15.925 1.48633Z\" fill=\"#6F7173\"/>\n <path d=\"M10.731 5.87631H0V2.34589C0 1.05225 1.0527 0 2.3468 0H5.77789C6.11893 0 6.44745 0.0718689 6.74591 0.206909C7.16278 0.394745 7.5209 0.704346 7.77206 1.10886L10.731 5.87631Z\" fill=\"#57595B\"/>\n <path d=\"M20 6.66675V18.0388C20 19.1204 19.1196 20 18.0376 20H1.96243C0.880432 20 0 19.1204 0 18.0388V4.70508H18.0376C19.1196 4.70508 20 5.58505 20 6.66675Z\" fill=\"#292D32\"/>\n <path d=\"M20 6.66675V18.0388C20 19.1204 19.1196 20 18.0376 20H10V4.70508H18.0376C19.1196 4.70508 20 5.58505 20 6.66675Z\" fill=\"#292D32\"/>\n <path d=\"M15.2601 12.3527C15.2601 15.2539 12.9001 17.6141 9.99921 17.6141C7.09836 17.6141 4.73828 15.2539 4.73828 12.3527C4.73828 9.45203 7.09836 7.0918 9.99921 7.0918C12.9001 7.0918 15.2601 9.45203 15.2601 12.3527Z\" fill=\"#6F7173\"/>\n <path d=\"M15.2609 12.3527C15.2609 15.2539 12.9008 17.6141 10 17.6141V7.0918C12.9008 7.0918 15.2609 9.45203 15.2609 12.3527Z\" fill=\"#6F7173\"/>\n <path d=\"M11.6954 12.4167C11.5856 12.5096 11.4512 12.555 11.318 12.555C11.1512 12.555 10.9855 12.4843 10.8695 12.3467L10.5856 12.0101V14.2139C10.5856 14.5374 10.3231 14.7998 9.99964 14.7998C9.67615 14.7998 9.4137 14.5374 9.4137 14.2139V12.0101L9.12974 12.3467C8.92069 12.594 8.55128 12.6256 8.30393 12.4167C8.05674 12.2081 8.025 11.8386 8.23359 11.5912L9.39341 10.2162C9.54462 10.0374 9.76527 9.93457 9.99964 9.93457C10.234 9.93457 10.4547 10.0374 10.6059 10.2162L11.7657 11.5912C11.9743 11.8386 11.9425 12.2081 11.6954 12.4167Z\" fill=\"#292D32\"/>\n <path d=\"M11.6957 12.4167C11.586 12.5096 11.4516 12.555 11.3184 12.555C11.1516 12.555 10.9859 12.4843 10.8699 12.3467L10.5859 12.0101V14.2139C10.5859 14.5374 10.3235 14.7998 10 14.7998V9.93457C10.2344 9.93457 10.455 10.0374 10.6062 10.2162L11.7661 11.5912C11.9746 11.8386 11.9429 12.2081 11.6957 12.4167Z\" fill=\"#292D32\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_616_35139\">\n <rect width=\"20\" height=\"20\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg> \n <input #fileInput type=\"file\" name=\"fileUpload\" multiple=\"multiple\" [accept]=\"allowedFileTypes.join(',')\"\n style=\"display:none;\" (change)=uploadMultipleFiles($event) />\n</div>\n\n<div class=\"col-lg-6\" style=\"padding:0;margin-top: 10px;\">\n <!-- Error messages section -->\n <div class=\"file-constraints\" *ngIf=\"validationErrors.length > 0\">\n <small class=\"text-danger\">\n <div *ngFor=\"let error of validationErrors\">{{ error }}</div>\n </small>\n </div>\n</div>\n\n<div *ngIf=\"error\" class=\"error-msg\" style=\"margin-top: 10px;\">{{question?.errorMessage}}</div>\n\n<!-- SKS11JUN25 File Selection Popup Modal -->\n<div class=\"file-popup-overlay\" *ngIf=\"showPopup\" (click)=\"closePopup()\">\n <div class=\"file-popup-modal\" (click)=\"$event.stopPropagation()\">\n <!-- Header -->\n <div class=\"file-popup-header\">\n <div class=\"selection-type\">\n <h2 class=\"popup-title\">{{question.questionText}}</h2>\n </div>\n <button class=\"close-btn\" (click)=\"closePopup()\">\n <span class=\"close-icon\">\u00D7</span>\n </button>\n </div>\n\n <!-- SKS11JUN25 Content -->\n <div class=\"file-popup-content\">\n <!-- SKS11JUN25 Left Panel - File List -->\n <div class=\"file-list-panel\">\n <div class=\"file-item\" *ngFor=\"let file of copyOfInputAllFiles; let i = index\" \n [class.selected]=\"currentFile === file\"\n (click)=\"viewFile(file)\">\n <div class=\"file-icon\">\n <img style=\"width: 28px;height: 28px;\" [src]=\"getDocIcon(file?.name)\">\n </div>\n <div class=\"file-details\">\n <div class=\"file-name\">{{ file.name }}</div>\n </div>\n <div *ngIf=\"!question.isReadOnly\" class=\"file-actions\">\n <button class=\"action-btn\" (click)=\"$event.stopPropagation(); deleteFile(i)\" title=\"Delete\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <polyline points=\"3,6 5,6 21,6\"></polyline>\n <path d=\"m19,6v14a2,2 0 0,1 -2,2H7a2,2 0 0,1 -2,-2V6m3,0V4a2,2 0 0,1 2,-2h4a2,2 0 0,1 2,2v2\"></path>\n </svg>\n </button>\n </div>\n </div>\n\n <!-- Empty state -->\n <div class=\"empty-state\" *ngIf=\"!copyOfInputAllFiles || copyOfInputAllFiles.length === 0\">\n <div class=\"empty-icon\">\uD83D\uDCC4</div>\n <p>No files selected</p>\n </div>\n </div>\n\n <!-- SKS11JUN25 Right Panel - Preview -->\n <div class=\"file-preview-panel\">\n @if(currentFile){\n <div class=\"preview-content\" >\n @if(isImage && fileUrl){\n <img [src]=\"fileUrl\" class=\"preview-image\" alt=\"File Preview\" />\n }\n @else if(fileUrl){\n <iframe [src]=\"fileUrl\" width=\"100%\" height=\"500px\"></iframe>\n } \n @else{\n <div>Unable to load the file preview.</div>\n }\n </div>\n }\n @else{\n <div class=\"no-preview\">\n <p>Select a file to preview</p>\n </div>\n }\n </div>\n </div>\n </div>\n</div>", styles: [".document-cnt{padding:10px;border:1px solid #ccc;border-radius:5px;background-color:#f9f9f9;margin-bottom:10px;cursor:pointer;transition:background-color .3s ease;position:relative}.document-cnt:hover{background-color:#e9ecef}.document_image img{width:30px;height:30px}.document_name{font-size:14px;font-weight:700;color:#333;line-height:30px}.label{margin-bottom:0}.document_delete img,.preview-icon img{width:20px;height:20px;cursor:pointer;transition:transform .3s ease}.document_delete img{filter:brightness(0) saturate(100%) invert(20%) sepia(97%) saturate(7481%) hue-rotate(357deg) brightness(98%) contrast(119%)}.document_delete img:hover,.preview-icon img:hover{transform:scale(1.1)}.document_delete,.preview-icon{position:absolute;top:50%;transform:translateY(-50%)}.document_delete{right:10px}.preview-icon{right:40px}@media (min-width: 992px){.document-cnt{margin-left:10px}}.form-control[disabled]{border-radius:5px}.btn-primary{background-color:#03a9f4!important;border:1px solid #03a9f4!important;color:#fff!important}.btn.btn-primary{border-radius:2px;padding:6px 14px;font-size:14px}.Invalid{border:1px solid red!important}.close-button{background:none;border:none;font-size:1.5em;cursor:pointer}.img-fluid{max-width:100%;height:auto;flex:1}iframe{border:none}.file-popup-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1001}.file-popup-modal{background:#fff;border-radius:12px;width:90%;max-width:1000px;height:80%;max-height:600px;display:flex;flex-direction:column;box-shadow:0 20px 40px #0000001a;overflow:hidden}.file-popup-header{display:flex;justify-content:space-between;align-items:flex-start;padding:24px 32px;border-bottom:1px solid #e5e7eb;background-color:#fafafa}.selection-type{flex:1}.popup-title{font-size:24px;font-weight:600;color:#111827;margin:0}.close-btn{background:none;border:none;width:32px;height:32px;border-radius:6px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color .2s}.close-btn:hover{background-color:#f3f4f6}.close-icon{font-size:24px;color:#6b7280;line-height:1}.file-popup-content{display:flex;flex:1;overflow:hidden}.file-list-panel{width:300px;border-right:1px solid #e5e7eb;background-color:#fff;overflow-y:auto;padding:16px}.file-item{display:flex;align-items:center;padding:12px 16px;border-radius:8px;cursor:pointer;transition:background-color .2s;margin-bottom:8px;border:1px solid #dfe0e2;background-color:#fff}.file-item:hover{background-color:#f8fafc;border-color:#e2e8f0}.file-item.selected{background-color:#dbeafe;border-color:#3b82f6}.file-icon{margin-right:12px;flex-shrink:0}.file-details{flex:1;min-width:0}.file-name{font-size:14px;font-weight:500;color:#111827;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:2px}.file-actions{margin-left:8px}.action-btn{background:none;border:none;padding:4px;border-radius:4px;cursor:pointer;color:#6b7280;transition:all .2s}.action-btn:hover{background-color:#fef2f2;color:#dc2626}.file-preview-panel{flex:1;background-color:#f9fafb;display:flex;align-items:center;justify-content:center;padding:32px}.preview-content{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.preview-image{max-width:100%;max-height:100%;border-radius:8px;box-shadow:0 4px 6px #0000001a}.no-preview{text-align:center;color:#6b7280}.empty-state{text-align:center;padding:32px 16px;color:#6b7280}.empty-icon{font-size:48px;margin-bottom:16px;opacity:.5}.empty-state p{margin:0;font-size:14px}@media (max-width: 768px){.file-popup-modal{width:95%;height:85%}.file-popup-content{flex-direction:column}.file-list-panel{width:100%;max-height:300px}.file-preview-panel{flex:1;min-height:200px}}\n"] }]
|
|
270
237
|
}], ctorParameters: () => [{ type: i1.SharedService }, { type: i2.DataService }, { type: i3.DomSanitizer }, { type: i4.I18nService }], propDecorators: { selectedFileData: [{
|
|
271
238
|
type: Output
|
|
272
239
|
}], deletedFileData: [{
|
|
@@ -275,15 +242,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
275
242
|
type: Input
|
|
276
243
|
}], limitFileUploading: [{
|
|
277
244
|
type: Input
|
|
278
|
-
}],
|
|
245
|
+
}], mode: [{
|
|
279
246
|
type: Input
|
|
280
247
|
}], isShowNoFileIcon: [{
|
|
281
248
|
type: Input
|
|
282
|
-
}], tableFile: [{
|
|
283
|
-
type: Input
|
|
284
249
|
}], question: [{
|
|
285
250
|
type: Input
|
|
286
251
|
}], error: [{
|
|
287
252
|
type: Input
|
|
288
253
|
}] } });
|
|
289
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBd0MsTUFBTSxlQUFlLENBQUM7QUFNckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQVV0QyxNQUFNLE9BQU8sbUJBQW1CO0lBeUJWO0lBQXNDO0lBQWtDO0lBQ25GO0lBekJDLGdCQUFnQixHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7SUFDN0MsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDM0MsUUFBUSxDQUFDO0lBQ1Qsa0JBQWtCLENBQUM7SUFDbkIseUJBQXlCLENBQUM7SUFDMUIsZ0JBQWdCLENBQUM7SUFDakIsU0FBUyxDQUFDLENBQUUseUJBQXlCO0lBQ3JDLFFBQVEsQ0FBQztJQUNULEtBQUssQ0FBTTtJQUNwQixjQUFjO0lBQ1AsZ0JBQWdCLEdBQWEsRUFBRSxDQUFDO0lBQ2hDLFdBQVcsR0FBVyxDQUFDLENBQUMsQ0FBRSxtQkFBbUI7SUFDN0MsUUFBUSxHQUFXLENBQUMsQ0FBQyxDQUFLLGdCQUFnQjtJQUMxQyxnQkFBZ0IsR0FBYSxFQUFFLENBQUM7SUFHaEMscUJB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Q0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7d0dBaFJVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLCtaQ2xCaEMsa2pJQXFGTSxtdEVEeEVGLFlBQVkseVZBQUUsUUFBUTs7NEZBS2IsbUJBQW1CO2tCQVQvQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUDt3QkFDUCxZQUFZLEVBQUUsUUFBUTtxQkFDdkI7aUtBS1MsZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0UsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0cseUJBQXlCO3NCQUFqQyxLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgRWxlbWVudFJlZiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vLyBIQSAxOURFQzIzIGltcG9ydGVkIHRyYW5zbGF0aW9uIHNlcnZpY2VcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IFNoYXJlZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zaGFyZWQuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEkxOG5QaXBlIH0gZnJvbSAnLi4vLi4vaTE4bi5waXBlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG9mIH0gZnJvbSAncnhqcyc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZmlsZS11cGxvYWQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLCBJMThuUGlwZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQE91dHB1dCgpIHNlbGVjdGVkRmlsZURhdGEgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuICBAT3V0cHV0KCkgZGVsZXRlZEZpbGVEYXRhID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIGFsbEZpbGVzO1xuICBASW5wdXQoKSBsaW1pdEZpbGVVcGxvYWRpbmc7XG4gIEBJbnB1dCgpIGlzRGVsZXRlRmlsZUJ1dHRvblZpc2libGU7XG4gIEBJbnB1dCgpIGlzU2hvd05vRmlsZUljb247XG4gIEBJbnB1dCgpIHRhYmxlRmlsZTsgIC8vIGZpbGUgVXBsb2FkIGZyb20gdGFibGVcbiAgQElucHV0KCkgcXVlc3Rpb247XG4gIEBJbnB1dCgpIGVycm9yOiBhbnk7XG4gIC8vUlMgMDlKQU4yMDI1XG4gIHB1YmxpYyBhbGxvd2VkRmlsZVR5cGVzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgbWF4RmlsZVNpemU6IG51bWJlciA9IDA7ICAvLyBpbiBieXRlcyhCaW5hcnkpXG4gIHB1YmxpYyBtYXhGaWxlczogbnVtYmVyID0gNDsgICAgIC8vIGRlZmF1bHQgbGltaXRcbiAgcHVibGljIHZhbGlkYXRpb25FcnJvcnM6IHN0cmluZ1tdID0gW107XG5cblxuICBwdWJsaWMgc2VsZWN0ZWRGaWxlTmFtZUFycmF5OiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgY29weU9mSW5wdXRBbGxGaWxlcztcbiAgcHVibGljIGNvcHlPZkZpbGVVcGxvYWRpbmdMaW1pdDtcbiAgcHVibGljIGZpbGVVcmw7XG4gIHB1YmxpYyBzaG93RmlsZSA9IGZhbHNlO1xuICBwdWJsaWMgaXNJbWFnZSA9IGZhbHNlO1xuICBwdWJsaWMgZmlsZU5hbWUgPSAnJztcbiAgY3VycmVudEZpbGU6IGFueTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBTaGFyZWRTZXJ2aWNlOiBTaGFyZWRTZXJ2aWNlLCBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSwgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICBwdWJsaWMgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlXG4gICkgeyB9XG4gIC8vUlMgMDlKQU4yMDI1XG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUZpbGVDb25maWdzKCk7XG4gIH1cbiAgLy8gVkQgMDNNYXkyNCBmaWxlIHVwbG9hZCBmaXhcbiAgLy8gb25GaWxlVXBsb2FkKGV2ZW50OiBhbnkpIHtcbiAgLy8gICBjb25zdCBmaWxlVXBsb2FkZXJFbGVtZW50OiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAvLyAgICAgJ2ZpbGVVcGxvYWQnXG4gIC8vICAgKSBhcyBIVE1MRWxlbWVudDtcbiAgLy8gICBmaWxlVXBsb2FkZXJFbGVtZW50LmNsaWNrKCk7XG4gIC8vIH1cblxuICBuZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKHNpbXBsZUNoYW5nZXMuYWxsRmlsZXMpIHsgIC8vU0tTNU5PVjI1XG4gICAgICB0aGlzLmNvcHlPZklucHV0QWxsRmlsZXMgPSBzaW1wbGVDaGFuZ2VzLmFsbEZpbGVzLmN1cnJlbnRWYWx1ZSB8fCBbXTtcbiAgICB9XG5cbiAgICBpZiAoc2ltcGxlQ2hhbmdlcy5saW1pdEZpbGVVcGxvYWRpbmcpIHtcbiAgICAgIHRoaXMuY29weU9mRmlsZVVwbG9hZGluZ0xpbWl0ID0gc2ltcGxlQ2hhbmdlcy5saW1pdEZpbGVVcGxvYWRpbmc/LmN1cnJlbnRWYWx1ZTtcbiAgICB9XG5cbiAgfVxuXG4gIC8vUlMgMDlKQU4yMDI1IEluaXRpYWxpemVzIGZpbGUgdXBsb2FkIHNldHRpbmdzIChhbGxvd2VkIHR5cGVzLCBtYXggc2l6ZSwgYW5kIG1heCBmaWxlcykgYnkgcGFyc2luZyBtZXRhZGF0YSBmcm9tIGZpZWxkc01ldGFcbiAgaW5pdGlhbGl6ZUZpbGVDb25maWdzKCkge1xuICAgIGlmICh0aGlzLnF1ZXN0aW9uPy5maWVsZHNNZXRhKSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBTS1MyME1BUjI1IGNoZWNrIGlmIHF1ZXN0aW9uIGZpZWxkc21ldGEgaXMgc3RyaW5nXG4gICAgICAgIGNvbnN0IG1ldGFEYXRhID0gdHlwZW9mIHRoaXMucXVlc3Rpb25bJ2ZpZWxkc01ldGEnXSA9PT0gJ29iamVjdCcgPyB0aGlzLnF1ZXN0aW9uWydmaWVsZHNNZXRhJ10gfHwgW10gOiBKU09OLnBhcnNlKHRoaXMucXVlc3Rpb25bJ2ZpZWxkc01ldGEnXSk7XG4gICAgICAgIGNvbnN0IGZpbGVDb25maWcgPSBtZXRhRGF0YVswXTsgIC8vIEdldCBmaXJzdCBjb25maWcgb2JqZWN0XG4gICAgICAgIGlmIChmaWxlQ29uZmlnKSB7XG4gICAgICAgICAgdGhpcy5hbGxvd2VkRmlsZVR5cGVzID0gZmlsZUNvbmZpZy5hbGxvd2VkVHlwZXMgfHwgW107XG4gICAgICAgICAgdGhpcy5tYXhGaWxlU2l6ZSA9IGZpbGVDb25maWcubWF4RmlsZVNpemUgfHwgMDtcbiAgICAgICAgICB0aGlzLm1heEZpbGVzID0gZmlsZUNvbmZpZy5tYXhGaWxlcyB8fCA1O1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIGZpZWxkc01ldGE6JywgZXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwbG9hZE11bHRpcGxlRmlsZXMoZXZlbnQ6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKCdGaWxlIHVwbG9hZGVyIGluaXRpYXRlZCcpO1xuICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycyA9IFtdOyAvLyBSUyAxN0pBTjIwMjUgQ2xlYXIgcHJldmlvdXMgZXJyb3JzXG4gICAgbGV0IGlucHV0RmlsZXM6IGFueVtdID0gdGhpcy5jb3B5T2ZJbnB1dEFsbEZpbGVzID8gdGhpcy5jb3B5T2ZJbnB1dEFsbEZpbGVzIDogW107XG4gICAgY29uc3Qgc2VsZWN0ZWRGaWxlRGF0YSA9IFtdO1xuICAgIGNvbnN0IHVwbG9hZGVkRmlsZXMgPSBldmVudC50YXJnZXQuZmlsZXM7XG5cbiAgICAvLyBSUyAwOUpBTjIwMjUgQ2hlY2sgZmlsZSBjb3VudCBsaW1pdFxuICAgIGlmICh1cGxvYWRlZEZpbGVzLmxlbmd0aCArIGlucHV0RmlsZXMubGVuZ3RoID4gdGhpcy5tYXhGaWxlcykge1xuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzLnB1c2goYE1heGltdW0gJHt0aGlzLm1heEZpbGVzfSBmaWxlcyBhbGxvd2VkYCk7XG4gICAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZWFkRmlsZXNQcm9taXNlcyA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBlYWNoVXBsb2FkZWRGaWxlIG9mIHVwbG9hZGVkRmlsZXMpIHtcbiAgICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBlYWNoVXBsb2FkZWRGaWxlO1xuXG4gICAgICAvL1JTIDA5SkFOMjAyNSBDaGVjayBmaWxlIHR5cGVcbiAgICAgIGNvbnN0IGZpbGVFeHQgPSAnLicgKyBmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKHRoaXMuYWxsb3dlZEZpbGVUeXBlcy5sZW5ndGggPiAwICYmICF0aGlzLmFsbG93ZWRGaWxlVHlwZXMuaW5jbHVkZXMoZmlsZUV4dCkpIHtcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzLnB1c2goYEZpbGUgdHlwZSAke2ZpbGVFeHR9IG5vdCBhbGxvd2VkLiBBbGxvd2VkIHR5cGVzOiAke3RoaXMuYWxsb3dlZEZpbGVUeXBlcy5qb2luKCcsICcpfWApO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy9SUyAwOUpBTjIwMjUgQ2hlY2sgZmlsZSBzaXplXG4gICAgICBpZiAodGhpcy5tYXhGaWxlU2l6ZSA+IDAgJiYgZmlsZS5zaXplID4gdGhpcy5tYXhGaWxlU2l6ZSkge1xuICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucHVzaChgRmlsZSBcIiR7ZmlsZS5uYW1lfVwiIGV4Y2VlZHMgc2l6ZSBsaW1pdCBvZiAke3RoaXMubWF4RmlsZVNpemUgLyAxMDQ4NTc2fU1CYCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMudmFsaWRhdGlvbkVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gZmlsZUV4dC5zdWJzdHJpbmcoMSk7XG4gICAgICAgIGNvbnN0IGZpbGVSZWFkUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuXG4gICAgICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVEYXRhID0ge1xuICAgICAgICAgICAgICBkb2M6IHJlYWRlci5yZXN1bHQsXG4gICAgICAgICAgICAgIG5hbWU6IGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgdHlwZTogZmlsZS50eXBlLFxuICAgICAgICAgICAgICBmb3JtYXQsXG4gICAgICAgICAgICAgIHNpemU6IGZpbGUuc2l6ZSwgLy8gUlMgMTdKQU4yMDI1IFxuICAgICAgICAgICAgICBpZDogbnVsbCxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHNlbGVjdGVkRmlsZURhdGEucHVzaChmaWxlRGF0YSk7XG4gICAgICAgICAgICBpbnB1dEZpbGVzLnB1c2goZmlsZURhdGEpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICByZWFkZXIub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzLnB1c2goYEVycm9yIHJlYWRpbmcgZmlsZSBcIiR7ZmlsZS5uYW1lfVwiYCk7Ly8gUlMgMTdKQU4yMDI1IFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICByZWFkRmlsZXNQcm9taXNlcy5wdXNoKGZpbGVSZWFkUHJvbWlzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChyZWFkRmlsZXNQcm9taXNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBXYWl0IGZvciBhbGwgcHJvbWlzZXMgdG8gcmVzb2x2ZVxuICAgICAgUHJvbWlzZS5hbGwocmVhZEZpbGVzUHJvbWlzZXMpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmNvcHlPZklucHV0QWxsRmlsZXMgPSBpbnB1dEZpbGVzO1xuICAgICAgICBjb25zb2xlLmxvZygndXBsb2FkZWRGaWxlcycsIGlucHV0RmlsZXMpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZURhdGEuZW1pdChpbnB1dEZpbGVzKTtcbiAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgcmVhZGluZyBmaWxlcycpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybignWW91IGNhbiB1cGxvYWQgbWF4IDUgZmlsZXMnKTtcbiAgICAgIC8vIHRoaXMudG9hc3RyLndhcm5pbmcoVE9BU1RFUl9NRVNTQUdFUy5NQVhfRklWRV9GSUxFUywgVE9BU1RFUl9NRVNTQUdFUy5XQVJOSU5HX1RJVExFKTtcbiAgICB9XG5cbiAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcbiAgfVxuXG5cbiAgLy8gdXBsb2FkTXVsdGlwbGVGaWxlcyhldmVudDogYW55KSB7XG4gIC8vICAgY29uc29sZS5sb2coJ0ZpbGUgdXBsb2FkZXIgaW5pdGlhdGVkJyk7XG4gIC8vICAgbGV0IGlucHV0RmlsZXM6IGFueVtdID0gdGhpcy5jb3B5T2ZJbnB1dEFsbEZpbGVzID8gdGhpcy5jb3B5T2ZJbnB1dEFsbEZpbGVzIDogW107XG4gIC8vICAgY29uc3Qgc2VsZWN0ZWRGaWxlRGF0YSA9IFtdO1xuICAvLyAgIGNvbnN0IHVwbG9hZGVkRmlsZXMgPSBldmVudC50YXJnZXQuZmlsZXM7XG4gIC8vICAgaWYgKHVwbG9hZGVkRmlsZXMubGVuZ3RoICsgaW5wdXRGaWxlcy5sZW5ndGggPD0gdGhpcy5jb3B5T2ZGaWxlVXBsb2FkaW5nTGltaXQpIHtcbiAgLy8gICAgIGZvciAoY29uc3QgZWFjaFVwbG9hZGVkRmlsZSBvZiB1cGxvYWRlZEZpbGVzKSB7XG4gIC8vICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gIC8vICAgICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBlYWNoVXBsb2FkZWRGaWxlO1xuICAvLyAgICAgICBjb25zdCBmb3JtYXQgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKVsxXTtcbiAgLy8gICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gIC8vICAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gIC8vICAgICAgICAgc2VsZWN0ZWRGaWxlRGF0YS5wdXNoKHtcbiAgLy8gICAgICAgICAgIGRvYzogcmVhZGVyLnJlc3VsdCxcbiAgLy8gICAgICAgICAgIG5hbWU6IGZpbGUubmFtZSxcbiAgLy8gICAgICAgICAgIHR5cGU6IGZpbGUudHlwZSxcbiAgLy8gICAgICAgICAgIGZvcm1hdCxcbiAgLy8gICAgICAgICAgIGlkOiBudWxsLFxuICAvLyAgICAgICAgIH0pO1xuICAvLyAgICAgICAgIGlucHV0RmlsZXMucHVzaCh7XG4gIC8vICAgICAgICAgICBkb2M6IHJlYWRlci5yZXN1bHQsXG4gIC8vICAgICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXG4gIC8vICAgICAgICAgICB0eXBlOiBmaWxlLnR5cGUsXG4gIC8vICAgICAgICAgICBmb3JtYXQsXG4gIC8vICAgICAgICAgICBpZDogbnVsbCxcbiAgLy8gICAgICAgICB9KTtcbiAgLy8gICAgICAgfTtcbiAgLy8gICAgIH1cbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgY29uc29sZS53YXJuKCdZb3UgY2FuIHVwbG9hZCBtYXggNSBmaWxlcycpO1xuICAvLyAgICAgLy90aGlzLnRvYXN0ci53YXJuaW5nKFRPQVNURVJfTUVTU0FHRVMuTUFYX0ZJVkVfRklMRVMsIFRPQVNURVJfTUVTU0FHRVMuV0FSTklOR19USVRMRSk7XG4gIC8vICAgfVxuICAvLyAgIGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnO1xuICAvLyAgIHRoaXMuY29weU9mSW5wdXRBbGxGaWxlcyA9IGlucHV0RmlsZXM7XG4gIC8vICAgY29uc29sZS5sb2coJ3VwbG9hZGVkRmlsZXMnLGlucHV0RmlsZXMpO1xuICAvLyAgIHRoaXMuc2VsZWN0ZWRGaWxlRGF0YS5lbWl0KGlucHV0RmlsZXMpO1xuICAvLyB9XG5cblxuICBkZWxldGVGaWxlKGN1cnJlbnRGaWxlSW5kZXgpIHtcbiAgICBjb25zdCBkZWxldGVkRmlsZU5hbWUgPSB0aGlzLnNlbGVjdGVkRmlsZU5hbWVBcnJheS5zcGxpY2UoY3VycmVudEZpbGVJbmRleCwgMSk7XG4gICAgY29uc3QgZGVsZXRlZEZpbGUgPSB0aGlzLmNvcHlPZklucHV0QWxsRmlsZXMuc3BsaWNlKGN1cnJlbnRGaWxlSW5kZXgsIDEpO1xuICAgIGNvbnNvbGUubG9nKCdlbWl0JywgZGVsZXRlZEZpbGVbMF0pO1xuICAgIHRoaXMuZGVsZXRlZEZpbGVEYXRhLmVtaXQoZGVsZXRlZEZpbGVbMF0pO1xuICAgIHRoaXMuc2VsZWN0ZWRGaWxlRGF0YS5lbWl0KHRoaXMuY29weU9mSW5wdXRBbGxGaWxlcyk7XG4gIH1cblxuXG4gIC8vIFZEIDIwTWF5MjQgLSBwcmV2aWV3IGNoYW5nZXNcbiAgLy8gUlMgMDlERUMyNCBDaGFuZ2VkIGtleXNcbiAgdmlld0ZpbGUoY3VycmVudEZpbGUpIHtcbiAgICB0aGlzLmN1cnJlbnRGaWxlID0gY3VycmVudEZpbGU7XG4gICAgY29uc29sZS5sb2coY3VycmVudEZpbGUpO1xuICAgIC8vIEFQLTI1TUFSMjUgRW5zdXJlIHN1YlRleHQgaXMgcGFyc2VkIGludG8gYW4gb2JqZWN0IGlmIGl0J3Mgbm90IGFscmVhZHlcbiAgICB0aGlzLnF1ZXN0aW9uWydzdWJUZXh0J10gPSB0eXBlb2YgdGhpcy5xdWVzdGlvbj8uc3ViVGV4dCA9PT0gJ29iamVjdCcgPyB0aGlzLnF1ZXN0aW9uPy5zdWJUZXh0IDogSlNPTi5wYXJzZSh0aGlzLnF1ZXN0aW9uWydzdWJUZXh0J10pIHx8IHt9O1xuICAgIGlmICh0aGlzLnF1ZXN0aW9uLnN1YlRleHQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgZmlsZU1ldGEgPSB0aGlzLnF1ZXN0aW9uLnN1YlRleHQ7XG4gICAgICBsZXQgZW5kcG9pbnQgPSBmaWxlTWV0YS5lbmRwb2ludDtcbiAgICAgIGxldCBxdWVyeVBhcmFtZXRlciA9IGZpbGVNZXRhLnF1ZXJ5UGFyYW1ldGVyO1xuICAgICAgbGV0IGZpbGUgPSBjdXJyZW50RmlsZTtcbiAgICAgIGlmIChlbmRwb2ludCkge1xuICAgICAgICBjb25zdCBmdWxsRW5kUG9pbnQgPSBlbmRwb2ludCArICc/JyArIHF1ZXJ5UGFyYW1ldGVyICsgJz0nICsgZmlsZVtxdWVyeVBhcmFtZXRlcl07XG4gICAgICAgIGlmIChmdWxsRW5kUG9pbnQpIHtcbiAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmFwaVJlc3BvbnNlKGZ1bGxFbmRQb2ludCkucGlwZShcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0ZpbGUgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLnZpZXdMb2NhbEZpbGUoKTsgLy8gQ2FsbCBmYWxsYmFjayBtZXRob2RcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpOyAvLyBSZXR1cm4gYSBmYWxsYmFjayB2YWx1ZSB0byBrZWVwIG9ic2VydmFibGUgY2hhaW4gYWxpdmVcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBpZiAoYXBpUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgdGhpcy5zaG93RmlsZSA9IHRydWU7XG4gICAgICAgICAgICAgIHRoaXMuaGFuZGxlRmlsZUNvbnRlbnQoYXBpUmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmlld0xvY2FsRmlsZSgpXG4gICAgfVxuICB9XG5cbiAgLy8gLy8gVkQgMDNBdWcyNCBwcm9jZXNzIGxvY2FsIHByZXZpZXcgXG4gIHZpZXdMb2NhbEZpbGUoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudEZpbGUpIHtcbiAgICAgIHRoaXMuc2V0RmlsZVVybCh0aGlzLmN1cnJlbnRGaWxlPy5kb2MpO1xuICAgICAgdGhpcy5maWxlTmFtZSA9IHRoaXMuY3VycmVudEZpbGUubmFtZTtcbiAgICAgIHRoaXMuaXNJbWFnZSA9IHRoaXMuY3VycmVudEZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKTtcbiAgICB9XG5cbiAgfVxuXG5cbiAgaGFuZGxlRmlsZUNvbnRlbnQoZmlsZVJlc3BvbnNlOiBhbnkpIHtcbiAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShmaWxlUmVzcG9uc2UuY29udGVudC5kYXRhKTtcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogZmlsZVJlc3BvbnNlLnR5cGUgfSk7XG4gICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgdGhpcy5zZXRGaWxlVXJsKHVybCk7XG4gICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XG4gICAgaWYgKGZpbGVSZXNwb25zZS5uYW1lKSB7XG4gICAgICB0aGlzLmZpbGVOYW1lID0gZmlsZVJlc3BvbnNlLm5hbWU7XG4gICAgICBjb25zdCBpbWFnZUV4dGVuc2lvbnMgPSBbJ2pwZycsICdqcGVnJywgJ3BuZycsICdnaWYnLCAnYm1wJywgJ3dlYnAnXTtcbiAgICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSBmaWxlUmVzcG9uc2UubmFtZS5zcGxpdCgnLicpLnBvcCgpPy50b0xvd2VyQ2FzZSgpO1xuICAgICAgdGhpcy5pc0ltYWdlID0gaW1hZ2VFeHRlbnNpb25zLmluY2x1ZGVzKGZpbGVFeHRlbnNpb24gfHwgJycpO1xuICAgIH1cbiAgfVxuXG4gIHNldEZpbGVVcmwodXJsOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZpbGVVcmwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodXJsKTtcbiAgfVxuXG4gIGdldERvY0ljb24oZG9jTmFtZSkge1xuICAgIGNvbnN0IGV4dCA9IGRvY05hbWUuc3BsaXQoJy4nKS5wb3AoLTEpO1xuICAgIHJldHVybiB0aGlzLlNoYXJlZFNlcnZpY2UuZG9jSWNvbihleHQpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5zaG93RmlsZSA9IGZhbHNlO1xuICAgIHRoaXMuZmlsZU5hbWUgPSAnJztcbiAgICB0aGlzLmZpbGVVcmwgPSAnJztcbiAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5maWxlVXJsKSB7XG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHRoaXMuZmlsZVVybCk7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cIm1hcmdpbjogMDtcIj5cbiAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiICpuZ0lmPVwiIWlzRGVsZXRlRmlsZUJ1dHRvblZpc2libGVcIiBzdHlsZT1cInRleHQtYWxpZ246IGxlZnQ7XCI+XG4gICAgPCEtLSBIQSAxOURFQzIzIEZvciB0cmFuc2xhdGlvbiAtLT5cbiAgICA8bGFiZWwgY2xhc3M9XCJzaGUtbGFiZWxcIj57eyAnYXR0YWNobWVudCcgfCBpMThuOmkxOG5TZXJ2aWNlLmN1cnJlbnRMYW5ndWFnZSB9fTwvbGFiZWw+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjb2wtbGctNSBkb2N1bWVudC1jbnQgbS10LTEwIG0tYi0xMFwiXG4gICAgKm5nRm9yPVwibGV0IGVhY2hGaWxlIG9mIGNvcHlPZklucHV0QWxsRmlsZXM7IGxldCBjdXJyZW50RmlsZUluZGV4ID0gaW5kZXhcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiIXRhYmxlRmlsZVwiPiA8IS0tIChjbGljayk9XCJ2aWV3RmlsZShlYWNoRmlsZSlcIiAgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgZG9jdW1lbnRfaW1hZ2VcIj5cbiAgICAgICAgPGltZyBbc3JjXT1cImdldERvY0ljb24oZWFjaEZpbGU/Lm5hbWUpXCI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOSBkb2N1bWVudF9uYW1lXCI+XG4gICAgICAgIHt7ZWFjaEZpbGU/Lm5hbWV9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnRfZGVsZXRlXCIgKGNsaWNrKT1cImRlbGV0ZUZpbGUoY3VycmVudEZpbGVJbmRleCk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgKm5nSWY9XCJpc0RlbGV0ZUZpbGVCdXR0b25WaXNpYmxlXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9ybnh0LnMzLmFtYXpvbmF3cy5jb20vSWNvbnMvZmlsZVR5cGVJY29ucy9iaW4uc3ZnXCI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gVkQgMjBNYXkyNCAtIHByZXZpZXcgY2hhbmdlcy0tPlxuICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctaWNvblwiIChjbGljayk9XCJ2aWV3RmlsZShlYWNoRmlsZSlcIiAqbmdJZj1cImlzRGVsZXRlRmlsZUJ1dHRvblZpc2libGVcIj5cbiAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3JueHQuczMuYW1hem9uYXdzLmNvbS9JY29ucy9maWxlVHlwZUljb25zL2ljb25zOC1leWUtMjQucG5nXCI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwidGFibGVGaWxlXCIgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBkb2N1bWVudF9pbWFnZVwiPlxuICAgICAgICA8aW1nIFtzcmNdPVwiZ2V0RG9jSWNvbihlYWNoRmlsZT8uZG9jKVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxMHB4O2hlaWdodDogNDBweDtcIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05IGRvY3VtZW50X25hbWVcIiBzdHlsZT1cIm92ZXJmbG93OmhpZGRlbjtoZWlnaHQ6MzVweDtcIj5cbiAgICAgICAge3tlYWNoRmlsZT8ubmFtZX19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbS1iLTMwIHRleHQtY2VudGVyXCIgKm5nSWY9XCJjb3B5T2ZJbnB1dEFsbEZpbGVzPy5sZW5ndGggPT09IDAgJiYgaXNTaG93Tm9GaWxlSWNvblwiPlxuICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9ybnh0LnMzLmFtYXpvbmF3cy5jb20vSWNvbnMvZmlsZVR5cGVJY29ucy9pY19ub19hdHRhY2htZW50cy5zdmdcIiBzdHlsZT1cImhlaWdodDogMTQwcHg7XCI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJjb2wtbGctNlwiIHN0eWxlPVwicGFkZGluZzowO21hcmdpbi10b3A6IDEwcHg7XCI+XG4gIDxsYWJlbCBjbGFzcz1cImN1c3RvbS1maWxlXCIgKm5nSWY9XCJpc0RlbGV0ZUZpbGVCdXR0b25WaXNpYmxlICYmICF0YWJsZUZpbGVcIj5cbiAgICA8IS0tIEhBIDE5REVDMjMgRm9yIHRyYW5zbGF0aW9uIC0tPlxuICAgIDwhLS0gVkQgMDNNYXkyNCBmaWxlIHVwbG9hZCBmaXgtLT5cbiAgICA8IS0tIFJTIDA5SkFOMjAyNSAtLT5cbiAgICA8YnV0dG9uIFtjbGFzc109XCJlcnJvciA/ICdzaGUtYnRuLXByaW1hcnktYm9yZGVyZWQgSW52YWxpZCcgOiAnc2hlLWJ0bi1wcmltYXJ5LWJvcmRlcmVkJ1wiIHN0eWxlPVwid2lkdGg6Mjc1cHg7XCJcbiAgICAgIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiIFtuZ0NsYXNzXT1cInsgJ2J0bi1kaXNhYmxlZCc6IGNvcHlPZklucHV0QWxsRmlsZXM/Lmxlbmd0aCA+PSBtYXhGaWxlcyB9XCJcbiAgICAgIFtkaXNhYmxlZF09XCJjb3B5T2ZJbnB1dEFsbEZpbGVzPy5sZW5ndGggPj0gbWF4RmlsZXNcIj5DaG9vc2UgRmlsZXM8L2J1dHRvbj5cbiAgICA8aW5wdXQgI2ZpbGVJbnB1dCB0eXBlPVwiZmlsZVwiIG5hbWU9XCJmaWxlVXBsb2FkXCIgbXVsdGlwbGU9XCJtdWx0aXBsZVwiIFthY2NlcHRdPVwiYWxsb3dlZEZpbGVUeXBlcy5qb2luKCcsJylcIlxuICAgICAgc3R5bGU9XCJkaXNwbGF5Om5vbmU7XCIgKGNoYW5nZSk9dXBsb2FkTXVsdGlwbGVGaWxlcygkZXZlbnQpIC8+XG4gIDwvbGFiZWw+XG5cbiAgPCEtLSBSUyAwOUpBTjIwMjUgLS0+XG4gIDwhLS0gRXJyb3IgbWVzc2FnZXMgc2VjdGlvbiAtLT5cbiAgPGRpdiBjbGFzcz1cImZpbGUtY29uc3RyYWludHNcIiAqbmdJZj1cInZhbGlkYXRpb25FcnJvcnMubGVuZ3RoID4gMFwiPlxuICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZGFuZ2VyXCI+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBlcnJvciBvZiB2YWxpZGF0aW9uRXJyb3JzXCI+e3sgZXJyb3IgfX08L2Rpdj5cbiAgICA8L3NtYWxsPlxuICA8L2Rpdj5cblxuICA8IS0tIEhBIDE5REVDMjMgRm9yIHRyYW5zbGF0aW9uIC0tPlxuICA8bGFiZWwgKm5nSWY9XCJ0YWJsZUZpbGVcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPlxuICAgIHt7ICd1cGxvYWRGaWxlJyB8IGkxOG46aTE4blNlcnZpY2UuY3VycmVudExhbmd1YWdlIH19XG4gICAgPGlucHV0IGlkPVwiZmlsZVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiB0eXBlPVwiZmlsZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgKGNoYW5nZSk9dXBsb2FkTXVsdGlwbGVGaWxlcygkZXZlbnQpIC8+XG4gIDwvbGFiZWw+XG4gIDwhLS0gPHNwYW4gY2xhc3M9XCJlcnJvci1tc2dcIiAqbmdJZj1cIihmb3JtQ29udHJvbD8uZG9jdW1lbnRzPy50b3VjaGVkIHx8ICAgICAgICBmb3JtQ29udHJvbD8uZG9jdW1lbnRzPy5kaXJ0eSkgJiZcbiAgZm9ybUNvbnRyb2w/LmRvY3VtZW50cz8uZXJyb3JzPy5yZXF1aXJlZFwiPlxuICAgIHt7TE1fUE9MSUNZX1ZBTElEQVRJT05fTUVTU0FHRS5SRVFVSVJFRH19XG4gIDwvc3Bhbj4gLS0+XG4gIDwhLS0gUlMgMDlERUMyNCBDaGFuZ2VkIGtleXMtLT5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvci1tc2dcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCI+e3txdWVzdGlvbj8uZXJyb3JNZXNzYWdlfX08L2Rpdj5cbjxkaXYgY2xhc3M9XCJueHQtZmlsZS1vdmVybGF5XCIgKm5nSWY9XCJzaG93RmlsZVwiPlxuICA8ZGl2IGNsYXNzPVwibnh0LWZpbGUtbWFwLW1vZGFsXCI+XG4gICAgPGRpdiBjbGFzcz1cIm54dC1maWxlLW1vZGVsLWNvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJueHQtZmlsZS1tb2RlbC1oZWFkZXJcIj5cbiAgICAgICAgPGg0Pnt7ZmlsZU5hbWV9fTwvaDQ+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJjbG9zZS1idXR0b25cIiAoY2xpY2spPVwiY2xvc2UoKVwiPlg8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzSW1hZ2U7IGVsc2Ugb3RoZXJGaWxlXCI+XG4gICAgICAgIDxpbWcgW3NyY109XCJmaWxlVXJsXCIgY2xhc3M9XCJpbWctZmx1aWRcIiBhbHQ9XCJGaWxlIFByZXZpZXdcIiAvPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI290aGVyRmlsZT5cbiAgICAgICAgPGlmcmFtZSBbc3JjXT1cImZpbGVVcmxcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI1MDBweFwiPjwvaWZyYW1lPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBd0MsTUFBTSxlQUFlLENBQUM7QUFNckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQVV0QyxNQUFNLE9BQU8sbUJBQW1CO0lBd0JWO0lBQXNDO0lBQWtDO0lBQ25GO0lBeEJDLGdCQUFnQixHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7SUFDN0MsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDM0MsUUFBUSxDQUFDO0lBQ1Qsa0JBQWtCLENBQUM7SUFDbkIsSUFBSSxHQUE4QixNQUFNLENBQUMsQ0FBQyw0QkFBNEI7SUFDdEUsZ0JBQWdCLENBQUM7SUFDakIsUUFBUSxDQUFDO0lBQ1QsS0FBSyxDQUFNO0lBQ3BCLGNBQWM7SUFDUCxnQkFBZ0IsR0FBYSxFQUFFLENBQUM7SUFDaEMsV0FBVyxHQUFXLENBQUMsQ0FBQyxDQUFFLG1CQUFtQjtJQUM3QyxRQUFRLEdBQVcsQ0FBQyxDQUFDLENBQUssZ0JBQWdCO0lBQzFDLGdCQUFnQixHQUFhLEVBQUUsQ0FBQztJQUdoQyxxQkFBcUIsR0FB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LENBQUM7d0dBMU9VLG1CQUFtQjs0RkFBbkIsbUJBQW1CLDZWQ2xCaEMsdS90QkFzSE0sd3ZIRHpHRixZQUFZOzs0RkFLSCxtQkFBbUI7a0JBVC9CLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQO3dCQUNQLFlBQVksRUFBRSxRQUFRO3FCQUN2QjtpS0FLUyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgRWxlbWVudFJlZiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vLyBIQSAxOURFQzIzIGltcG9ydGVkIHRyYW5zbGF0aW9uIHNlcnZpY2VcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IFNoYXJlZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zaGFyZWQuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJMThuUGlwZSB9IGZyb20gJy4uLy4uL2kxOG4ucGlwZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBvZiB9IGZyb20gJ3J4anMnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZpbGUtdXBsb2FkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSwgSTE4blBpcGVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS11cGxvYWQuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZEZpbGVEYXRhID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcbiAgQE91dHB1dCgpIGRlbGV0ZWRGaWxlRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBhbGxGaWxlcztcbiAgQElucHV0KCkgbGltaXRGaWxlVXBsb2FkaW5nO1xuICBASW5wdXQoKSBtb2RlOiAndmlldycgfCAnZWRpdCcgfCAncHJpbnQnID0gJ2VkaXQnOyAvLyBTS1MxMUpVTjI1IE5ldyBtb2RlIGlucHV0XG4gIEBJbnB1dCgpIGlzU2hvd05vRmlsZUljb247XG4gIEBJbnB1dCgpIHF1ZXN0aW9uO1xuICBASW5wdXQoKSBlcnJvcjogYW55O1xuICAvL1JTIDA5SkFOMjAyNVxuICBwdWJsaWMgYWxsb3dlZEZpbGVUeXBlczogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIG1heEZpbGVTaXplOiBudW1iZXIgPSAwOyAgLy8gaW4gYnl0ZXMoQmluYXJ5KVxuICBwdWJsaWMgbWF4RmlsZXM6IG51bWJlciA9IDQ7ICAgICAvLyBkZWZhdWx0IGxpbWl0XG4gIHB1YmxpYyB2YWxpZGF0aW9uRXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG5cbiAgcHVibGljIHNlbGVjdGVkRmlsZU5hbWVBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIGNvcHlPZklucHV0QWxsRmlsZXM7XG4gIHB1YmxpYyBjb3B5T2ZGaWxlVXBsb2FkaW5nTGltaXQ7XG4gIHB1YmxpYyBmaWxlVXJsO1xuICBwdWJsaWMgaXNJbWFnZSA9IGZhbHNlO1xuICBwdWJsaWMgZmlsZU5hbWUgPSAnJztcbiAgY3VycmVudEZpbGU6IGFueTtcbiAgcHVibGljIHNob3dQb3B1cCA9IGZhbHNlOyAvLyBTS1MxMUpVTjI1IEFkZCBwb3B1cCB2aXNpYmlsaXR5IGNvbnRyb2xcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBTaGFyZWRTZXJ2aWNlOiBTaGFyZWRTZXJ2aWNlLCBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSwgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICBwdWJsaWMgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlXG4gICkgeyB9XG4gIC8vUlMgMDlKQU4yMDI1XG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUZpbGVDb25maWdzKCk7XG4gIH1cbiAgbmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChzaW1wbGVDaGFuZ2VzWydtb2RlJ10pIHtcbiAgICAgIHRoaXMubW9kZSA9IHNpbXBsZUNoYW5nZXNbJ21vZGUnXS5jdXJyZW50VmFsdWU7XG4gICAgfVxuICAgIGlmIChzaW1wbGVDaGFuZ2VzLmFsbEZpbGVzKSB7ICAvL1NLUzVOT1YyNVxuICAgICAgdGhpcy5jb3B5T2ZJbnB1dEFsbEZpbGVzID0gc2ltcGxlQ2hhbmdlcy5hbGxGaWxlcy5jdXJyZW50VmFsdWUgfHwgW107XG4gICAgfVxuXG4gICAgaWYgKHNpbXBsZUNoYW5nZXMubGltaXRGaWxlVXBsb2FkaW5nKSB7XG4gICAgICB0aGlzLmNvcHlPZkZpbGVVcGxvYWRpbmdMaW1pdCA9IHNpbXBsZUNoYW5nZXMubGltaXRGaWxlVXBsb2FkaW5nPy5jdXJyZW50VmFsdWU7XG4gICAgfVxuXG4gIH1cblxuICAvL1JTIDA5SkFOMjAyNSBJbml0aWFsaXplcyBmaWxlIHVwbG9hZCBzZXR0aW5ncyAoYWxsb3dlZCB0eXBlcywgbWF4IHNpemUsIGFuZCBtYXggZmlsZXMpIGJ5IHBhcnNpbmcgbWV0YWRhdGEgZnJvbSBmaWVsZHNNZXRhXG4gIGluaXRpYWxpemVGaWxlQ29uZmlncygpIHtcbiAgICBpZiAodGhpcy5xdWVzdGlvbj8uZmllbGRzTWV0YSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gU0tTMjBNQVIyNSBjaGVjayBpZiBxdWVzdGlvbiBmaWVsZHNtZXRhIGlzIHN0cmluZ1xuICAgICAgICBjb25zdCBtZXRhRGF0YSA9IHR5cGVvZiB0aGlzLnF1ZXN0aW9uWydmaWVsZHNNZXRhJ10gPT09ICdvYmplY3QnID8gdGhpcy5xdWVzdGlvblsnZmllbGRzTWV0YSddIHx8IFtdIDogSlNPTi5wYXJzZSh0aGlzLnF1ZXN0aW9uWydmaWVsZHNNZXRhJ10pO1xuICAgICAgICBjb25zdCBmaWxlQ29uZmlnID0gbWV0YURhdGFbMF07ICAvLyBHZXQgZmlyc3QgY29uZmlnIG9iamVjdFxuICAgICAgICBpZiAoZmlsZUNvbmZpZykge1xuICAgICAgICAgIHRoaXMuYWxsb3dlZEZpbGVUeXBlcyA9IGZpbGVDb25maWcuYWxsb3dlZFR5cGVzIHx8IFtdO1xuICAgICAgICAgIHRoaXMubWF4RmlsZVNpemUgPSBmaWxlQ29uZmlnLm1heEZpbGVTaXplIHx8IDA7XG4gICAgICAgICAgdGhpcy5tYXhGaWxlcyA9IGZpbGVDb25maWcubWF4RmlsZXMgfHwgNTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBmaWVsZHNNZXRhOicsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gU0tTMTFKVU4yNSBPcGVuIHRoZSBwb3B1cFxuICBvcGVuUG9wdXAoKSB7XG4gICAgdGhpcy5zaG93UG9wdXAgPSB0cnVlO1xuICB9XG5cbiAgLy8gU0tTMTFKVU4yNSBDbG9zZSB0aGUgcG9wdXBcbiAgY2xvc2VQb3B1cCgpIHtcbiAgICB0aGlzLnNob3dQb3B1cCA9IGZhbHNlO1xuICB9XG4gIHVwbG9hZE11bHRpcGxlRmlsZXMoZXZlbnQ6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKCdGaWxlIHVwbG9hZGVyIGluaXRpYXRlZCcpO1xuICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycyA9IFtdOyAvLyBSUyAxN0pBTjIwMjUgQ2xlYXIgcHJldmlvdXMgZXJyb3JzXG4gICAgbGV0IGlucHV0RmlsZXM6IGFueVtdID0gdGhpcy5jb3B5T2ZJbnB1dEFsbEZpbGVzID8gdGhpcy5jb3B5T2ZJbnB1dEFsbEZpbGVzIDogW107XG4gICAgY29uc3Qgc2VsZWN0ZWRGaWxlRGF0YSA9IFtdO1xuICAgIGNvbnN0IHVwbG9hZGVkRmlsZXMgPSBldmVudC50YXJnZXQuZmlsZXM7XG5cbiAgICAvLyBSUyAwOUpBTjIwMjUgQ2hlY2sgZmlsZSBjb3VudCBsaW1pdFxuICAgIGlmICh1cGxvYWRlZEZpbGVzLmxlbmd0aCArIGlucHV0RmlsZXMubGVuZ3RoID4gdGhpcy5tYXhGaWxlcykge1xuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzLnB1c2goYE1heGltdW0gJHt0aGlzLm1heEZpbGVzfSBmaWxlcyBhbGxvd2VkYCk7XG4gICAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZWFkRmlsZXNQcm9taXNlcyA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBlYWNoVXBsb2FkZWRGaWxlIG9mIHVwbG9hZGVkRmlsZXMpIHtcbiAgICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBlYWNoVXBsb2FkZWRGaWxlO1xuXG4gICAgICAvL1JTIDA5SkFOMjAyNSBDaGVjayBmaWxlIHR5cGVcbiAgICAgIGNvbnN0IGZpbGVFeHQgPSAnLicgKyBmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKHRoaXMuYWxsb3dlZEZpbGVUeXBlcy5sZW5ndGggPiAwICYmICF0aGlzLmFsbG93ZWRGaWxlVHlwZXMuaW5jbHVkZXMoZmlsZUV4dCkpIHtcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzLnB1c2goYEZpbGUgdHlwZSAke2ZpbGVFeHR9IG5vdCBhbGxvd2VkLiBBbGxvd2VkIHR5cGVzOiAke3RoaXMuYWxsb3dlZEZpbGVUeXBlcy5qb2luKCcsICcpfWApO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy9SUyAwOUpBTjIwMjUgQ2hlY2sgZmlsZSBzaXplXG4gICAgICBpZiAodGhpcy5tYXhGaWxlU2l6ZSA+IDAgJiYgZmlsZS5zaXplID4gdGhpcy5tYXhGaWxlU2l6ZSkge1xuICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucHVzaChgRmlsZSBcIiR7ZmlsZS5uYW1lfVwiIGV4Y2VlZHMgc2l6ZSBsaW1pdCBvZiAke3RoaXMubWF4RmlsZVNpemUgLyAxMDQ4NTc2fU1CYCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMudmFsaWRhdGlvbkVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gZmlsZUV4dC5zdWJzdHJpbmcoMSk7XG4gICAgICAgIGNvbnN0IGZpbGVSZWFkUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuXG4gICAgICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVEYXRhID0ge1xuICAgICAgICAgICAgICBkb2M6IHJlYWRlci5yZXN1bHQsXG4gICAgICAgICAgICAgIG5hbWU6IGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgdHlwZTogZmlsZS50eXBlLFxuICAgICAgICAgICAgICBmb3JtYXQsXG4gICAgICAgICAgICAgIHNpemU6IGZpbGUuc2l6ZSwgLy8gUlMgMTdKQU4yMDI1IFxuICAgICAgICAgICAgICBpZDogbnVsbCxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHNlbGVjdGVkRmlsZURhdGEucHVzaChmaWxlRGF0YSk7XG4gICAgICAgICAgICBpbnB1dEZpbGVzLnB1c2goZmlsZURhdGEpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICByZWFkZXIub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzLnB1c2goYEVycm9yIHJlYWRpbmcgZmlsZSBcIiR7ZmlsZS5uYW1lfVwiYCk7Ly8gUlMgMTdKQU4yMDI1IFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICByZWFkRmlsZXNQcm9taXNlcy5wdXNoKGZpbGVSZWFkUHJvbWlzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChyZWFkRmlsZXNQcm9taXNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBXYWl0IGZvciBhbGwgcHJvbWlzZXMgdG8gcmVzb2x2ZVxuICAgICAgUHJvbWlzZS5hbGwocmVhZEZpbGVzUHJvbWlzZXMpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmNvcHlPZklucHV0QWxsRmlsZXMgPSBpbnB1dEZpbGVzO1xuICAgICAgICBjb25zb2xlLmxvZygndXBsb2FkZWRGaWxlcycsIGlucHV0RmlsZXMpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZURhdGEuZW1pdChpbnB1dEZpbGVzKTtcbiAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgcmVhZGluZyBmaWxlcycpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybignWW91IGNhbiB1cGxvYWQgbWF4IDUgZmlsZXMnKTtcbiAgICAgIC8vIHRoaXMudG9hc3RyLndhcm5pbmcoVE9BU1RFUl9NRVNTQUdFUy5NQVhfRklWRV9GSUxFUywgVE9BU1RFUl9NRVNTQUdFUy5XQVJOSU5HX1RJVExFKTtcbiAgICB9XG5cbiAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcbiAgfVxuXG4gIGRlbGV0ZUZpbGUoY3VycmVudEZpbGVJbmRleCkge1xuICAgIGNvbnN0IGRlbGV0ZWRGaWxlTmFtZSA9IHRoaXMuc2VsZWN0ZWRGaWxlTmFtZUFycmF5LnNwbGljZShjdXJyZW50RmlsZUluZGV4LCAxKTtcbiAgICBjb25zdCBkZWxldGVkRmlsZSA9IHRoaXMuY29weU9mSW5wdXRBbGxGaWxlcy5zcGxpY2UoY3VycmVudEZpbGVJbmRleCwgMSk7XG4gICAgY29uc29sZS5sb2coJ2VtaXQnLCBkZWxldGVkRmlsZVswXSk7XG4gICAgdGhpcy5kZWxldGVkRmlsZURhdGEuZW1pdChkZWxldGVkRmlsZVswXSk7XG4gICAgdGhpcy5zZWxlY3RlZEZpbGVEYXRhLmVtaXQodGhpcy5jb3B5T2ZJbnB1dEFsbEZpbGVzKTtcbiAgfVxuXG5cbiAgLy8gVkQgMjBNYXkyNCAtIHByZXZpZXcgY2hhbmdlc1xuICAvLyBSUyAwOURFQzI0IENoYW5nZWQga2V5c1xuICB2aWV3RmlsZShjdXJyZW50RmlsZSkge1xuICAgIHRoaXMuY3VycmVudEZpbGUgPSBjdXJyZW50RmlsZTtcbiAgICAvLyBBUC0yNU1BUjI1IEVuc3VyZSBzdWJUZXh0IGlzIHBhcnNlZCBpbnRvIGFuIG9iamVjdCBpZiBpdCdzIG5vdCBhbHJlYWR5XG4gICAgdGhpcy5xdWVzdGlvblsnc3ViVGV4dCddID0gdHlwZW9mIHRoaXMucXVlc3Rpb24/LnN1YlRleHQgPT09ICdvYmplY3QnID8gdGhpcy5xdWVzdGlvbj8uc3ViVGV4dCA6IEpTT04ucGFyc2UodGhpcy5xdWVzdGlvblsnc3ViVGV4dCddKSB8fCB7fTtcbiAgICBpZiAodGhpcy5xdWVzdGlvbi5zdWJUZXh0ICE9IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IGZpbGVNZXRhID0gdGhpcy5xdWVzdGlvbi5zdWJUZXh0O1xuICAgICAgbGV0IGVuZHBvaW50ID0gZmlsZU1ldGEuZW5kcG9pbnQ7XG4gICAgICBsZXQgcXVlcnlQYXJhbWV0ZXIgPSBmaWxlTWV0YS5xdWVyeVBhcmFtZXRlcjtcbiAgICAgIGxldCBmaWxlID0gY3VycmVudEZpbGU7XG4gICAgICBpZiAoZW5kcG9pbnQpIHtcbiAgICAgICAgY29uc3QgZnVsbEVuZFBvaW50ID0gZW5kcG9pbnQgKyAnPycgKyBxdWVyeVBhcmFtZXRlciArICc9JyArIGZpbGVbcXVlcnlQYXJhbWV0ZXJdO1xuICAgICAgICBpZiAoZnVsbEVuZFBvaW50KSB7XG4gICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5hcGlSZXNwb25zZShmdWxsRW5kUG9pbnQpLnBpcGUoXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnZpZXdMb2NhbEZpbGUoKTsgLy8gQ2FsbCBmYWxsYmFjayBtZXRob2RcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpOyAvLyBSZXR1cm4gYSBmYWxsYmFjayB2YWx1ZSB0byBrZWVwIG9ic2VydmFibGUgY2hhaW4gYWxpdmVcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBpZiAoYXBpUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgdGhpcy5oYW5kbGVGaWxlQ29udGVudChhcGlSZXNwb25zZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52aWV3TG9jYWxGaWxlKClcbiAgICB9XG4gIH1cblxuICAvLyAvLyBWRCAwM0F1ZzI0IHByb2Nlc3MgbG9jYWwgcHJldmlldyBcbiAgdmlld0xvY2FsRmlsZSgpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50RmlsZSkge1xuICAgICAgdGhpcy5zZXRGaWxlVXJsKHRoaXMuY3VycmVudEZpbGU/LmRvYyk7XG4gICAgICB0aGlzLmZpbGVOYW1lID0gdGhpcy5jdXJyZW50RmlsZS5uYW1lO1xuICAgICAgdGhpcy5pc0ltYWdlID0gdGhpcy5jdXJyZW50RmlsZS50eXBlPy5zdGFydHNXaXRoKCdpbWFnZS8nKTtcbiAgICB9XG5cbiAgfVxuXG5cbiAgaGFuZGxlRmlsZUNvbnRlbnQoZmlsZVJlc3BvbnNlOiBhbnkpIHtcbiAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShmaWxlUmVzcG9uc2UuY29udGVudC5kYXRhKTtcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogZmlsZVJlc3BvbnNlLnR5cGUgfSk7XG4gICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgdGhpcy5zZXRGaWxlVXJsKHVybCk7XG4gICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XG4gICAgaWYgKGZpbGVSZXNwb25zZS5uYW1lKSB7XG4gICAgICB0aGlzLmZpbGVOYW1lID0gZmlsZVJlc3BvbnNlLm5hbWU7XG4gICAgICBjb25zdCBpbWFnZUV4dGVuc2lvbnMgPSBbJ2pwZycsICdqcGVnJywgJ3BuZycsICdnaWYnLCAnYm1wJywgJ3dlYnAnXTtcbiAgICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSBmaWxlUmVzcG9uc2UubmFtZS5zcGxpdCgnLicpLnBvcCgpPy50b0xvd2VyQ2FzZSgpO1xuICAgICAgdGhpcy5pc0ltYWdlID0gaW1hZ2VFeHRlbnNpb25zLmluY2x1ZGVzKGZpbGVFeHRlbnNpb24gfHwgJycpO1xuICAgIH1cbiAgfVxuXG4gIHNldEZpbGVVcmwodXJsOiBhbnkpIHtcbiAgICBpZiAodXJsKSB7XG4gICAgICB0aGlzLmZpbGVVcmwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodXJsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWxlVXJsID0gbnVsbDsgLy8gb3IgaGFuZGxlIGdyYWNlZnVsbHlcbiAgICB9XG4gIH1cblxuICBnZXREb2NJY29uKGRvY05hbWUpIHtcbiAgICBjb25zdCBleHQgPSBkb2NOYW1lLnNwbGl0KCcuJykucG9wKC0xKTtcbiAgICByZXR1cm4gdGhpcy5TaGFyZWRTZXJ2aWNlLmRvY0ljb24oZXh0KTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuZmlsZU5hbWUgPSAnJztcbiAgICB0aGlzLmZpbGVVcmwgPSAnJztcbiAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5maWxlVXJsKSB7XG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHRoaXMuZmlsZVVybCk7XG4gICAgfVxuICB9XG5cbn1cbiIsIjwhLS0gU0tTMTFKVU4yNSBmaWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCAtLT5cbjxkaXYgY2xhc3M9XCJmbGV4XCIgc3R5bGU9XCJhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDEwcHg7XCI+XG4gIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiPlxuICAgIDxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCJ1cmwoI3BhdHRlcm4wXzYxNl8zNTEyNSlcIi8+XG4gICAgPGRlZnM+XG4gICAgPHBhdHRlcm4gaWQ9XCJwYXR0ZXJuMF82MTZfMzUxMjVcIiBwYXR0ZXJuQ29udGVudFVuaXRzPVwib2JqZWN0Qm91bmRpbmdCb3hcIiB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIxXCI+XG4gICAgPHVzZSB4bGluazpocmVmPVwiI2ltYWdlMF82MTZfMzUxMjVcIiB0cmFuc2Zvcm09XCJzY2FsZSgwLjAwMTk1MzEyKVwiLz5cbiAgICA8L3BhdHRlcm4+XG4gICAgPGltYWdlIGlkPVwiaW1hZ2UwXzYxNl8zNTEyNVwiIHdpZHRoPVwiNTEyXCIgaGVpZ2h0PVwiNTEyXCIgcHJlc2VydmVBc3BlY3RSYXRpbz1cIm5vbmVcIiB4bGluazpocmVmPVwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFnQUFBQUlBQ0FZQUFBRDBlTlQ2QUFBQUNYQklXWE1BQUE3REFBQU93d0hIYjZoa0FBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCM2QzY3VhVzVyYzJOaGNHVXViM0pubSs0OEdnQUFJQUJKUkVGVWVKenQzWGZZSDFXWi8vRjNTRS9vQ2FFVEFnb2lKWFRwZ2dpS2dpdFIxSlVWWGN1NitMT2cvaXpzV3FLcmE4ZTY2cUxpZ29vSUFpcFd5a2FVSmlBZ1JVVnFJTFNFaENTVTlHVC9PTjlISHBLbmZPdmNaMmJlcit1NnI0QVhWK2FUbWNlY2U4NmNPVE1DVmNVNFlCcXdmYU8yQVRZREpnT1RHcitPQnpadS9QZGpnSWxGaDVSNlpCV3d1UEhQVHdMTGdjZUJSNEI1d0tPTlh4OEU3Z0h1QXVZQWF3cFBLbVZpUkhRQXRXd01zQ3V3ZTZPbU4vNTlxOGhRVWdrdEpUVURkd0EzQXpjMGFuWmtLS2tvTmdENW13d2NCQnpjcUgyQnNhR0pwR3BiUUdvRXJnSitDMXdETElrTUpQV0NEVUIrUnBFRy9HT0FGNVB1OEwxT1VweWx3QitBV2NBbHBJWmdkV2dpcVFzY1dQSXdIbmdKOENyZ2FKNStUaThwUDQ4QVB3TitBbHdHTEl1Tkk3WEhCaURPR05JZC9xdUJsd0hyeDhhUjFJYkhnWjhEWjVGbUIxYkZ4cEdhWndOUXZHY0Jid2JlQUd3ZUcwVlNGejBJL0JqNERtbFJvWlExRzRCaWpBU09CMDRHanNEekxsWGRGY0NYZ1F0eFZrQ1pjaURxclhHazUvci9CdXdjbkVWUzhlNEZ2Z21jRGp3V0cwVjZKaHVBM3RnRWVBL3dObURUNEN5UzRpMG1OUUdmSlcxSUpJV3pBZWl1OVlIL0Izd1FWL0pMV3RlVHBEVUNud1RtQm1kUnpka0FkTWM0NEozQSswbmI3a3JTVUJZQlgyelU0bUgrVzZrbmJBQTZkeHp3SldDSDZDQ1NTbWMrOEIvQVYzRnpJUlhNQnFCOTAwa0QvK0hCT1NTVjN6WEFPNERybzRPb1B0YUxEbEJDNDBrTGVhN0h3VjlTZHh4QTJtNzRkTklpWXFubm5BRm96YUhBdC9DVlBrbTk4d2p3cjZTdGhxV2VjUWFnT2V1VE92UExjZkNYMUZ1Ymt6WVEraTYrVGFRZWNnWmdlUHNEUHlCdDRTdEpSWm9EdkpIMG5RR3BxMFpHQjhqWWVxUlgrMzRJYkJhY1JWSTliUWo4RTJudDBTeGdUV3djVllrekFBT2JBcHhEMnJkZmtuSndDWEFpN2lTb0xyRUJXTmYrcEM5NmJSc2RSSkxXTW9mMENmR3Jvb09vL0Z3RStFd25BYi9Gd1Y5U25yWWhQUXA0WFhRUWxaOXJBSktScEUxOVBnMk1EczRpU1VNWkNieWNOSU43ZVhBV2xaZ05BRXdFZmdTOFBqcUlKRFZwQkdranN1MkJYd0tySXNPb25PcStCbUFMNEdmQWZ0RkJKS2xObDVGbUJKNklEcUp5cVhNRE1CVzRGTi92bDFSK1Z3SXZ3UzhMcWdWMWJRQ21rYnJtYWRGQkpLbExyZ2RlQkN5SURxSnlxR01Ec0F2cHpuK3I2Q0NTMUdVM0FFZGhFNkFtMUswQjJJMzBDczNrNkNDUzFDUFhBUy9BTlFFYVJwMzJBWGdXY0RFTy9wS3FiVC9ncDhEWTZDREtXMTFlQTl5V2RPZnZCaitTNm1BYXNDTndRWFFRNWFzT0RjQVd3TytBSGFLRFNGS0JkZ2ZHa2RZOFNldW9lZ013RWZnTjZkbS9KTlhOSWNCYzBoc0Mwak5VZVJIZ2VxU1AraHdmSFVTU0FxMEFqZ1IrSHgxRWVhbnlJc0F2NHVBdlNhT0JjL0hWWjYybHFnM0FXNEYzUm9lUXBFeHNRWm9SSFJNZFJQbW80aHFBL1VuZDdxam9JSktVa1cyQkRZRmZSd2RSSHFyV0FFd2hiZkc3YVhRUVNjclFBY0Q5d0kzUlFSU3ZTb3NBUndLWEFFZEVCNUdrakMwQkRnWCtHQjFFc2FxMEJ1QlVIUHdsYVRqamdRdEpNNmFxc2FyTUFPd0RYRTFhN1NwSkd0NlZwRzhHTEk4T29oaFZXQU13a2JUSHY5MnNKRFZ2TzJBVDRGZlJRUlNqQ2czQWZ3RkhSNGVRcEJMYUg3Z1B1Q2s2aUlwWDlrY0Fod1AvUy9uL0hKSVVaUmx3R0hCdGRCQVZxOHdENTNqZ1p0Sm5maVZKN1hzSTJCZDRNRHFJaWxQbXR3QStqb08vSkhYRGxxU2RBc2RHQjFGeHlyb0dZRHB3QnVWdVlDUXBKOXNDazRGZlJBZFJNY3JhQUp3RDdCQWRRcElxWmwvUzR3QTNDYXFCTXE0QmVDVndYblFJU2Fvb1B4OWNFMlZyQU1ZQ3QrS3pmMG5xcFlkSnN3RVBSQWRSNzVUdEdmcTdjUENYcEY3ciszeXdpd0lyckV4ckFOWUhma1RhK1UrUzFGdmJrSFlML0VsMEVQVkdtUnFBVTRHWFJvZVFwQnFaRHN3RnJvOE9vdTRyeXhxQWpZRzdTZnRXUzVLS3N3STRDcmc4T29pNnF5eHJBTjZMZzc4a1JSaE5ldnk2VFhRUWRWY1paZ0Fta0Q1V01TazZpQ1RWMkkzQXdjQ1M2Q0RxampMTUFMd1pCMzlKaXJZWDhOL1JJZFE5dVM4Q0hBbDhIOWcwT29na2llbkFBdnh5WUNYa1BnTndQTEJqZEFoSjB0OTlnZlFwZHBWYzdnM0F5ZEVCSkVuUE1KcTBTZEMwNkNEcVRNNkxBSGNFN2lEdmpKSlVWemVSRmdVK0ZSMUU3Y2w1QnVCZmNQQ1hwRnp0Q1p3ZUhVTHR5M1VSNEdqZ2YwamIvMHFTOHJRSDhEaHdkWFFRdFM3WEdZQmpTQitqa0NUbDdUT2t6d2VyWkhKdEFGNFRIVUNTMUpSUndMbjR4bGJwNVBpTWZRTHdDRTcvUzFLWjNBd2NCRHdaSFVUTnlYRUc0Q1U0K0V0UzJld0JuRVdlTjVZYVFJNkxBRDhLN0JvZFFwTFVzbDFJcndWZUdSMUV3OHV0VXhzRnpDTjkvbGVTVkQ2cmdXT0JYMFVIMGRCeWV3UndFQTcra2xSbTZ3RS9BSjRWSFVSRHk2MEJPQ1k2Z0NTcFk1c0FQd00yakE2aXdka0FTSko2WVJmZ1RQSjcxS3lHbkJZQlRnWStqejhza2xRVnp3R1dBNytQRHFKMTVUUURjREFPL3BKVU5mOUJXaFNvek9UV0FFaVNxbVU5NEd6U0l3Rmx4QVpBa3RSckd3QVhBaHRGQjlIVGNwbHlId3NzYXZ3cVNhcW1ud0F6Z0RYUlFaVFBETUJ6Y2ZDWHBLcDdPZkRoNkJCS2Nta0E5b2dPSUVrcXhFemdGZEVoWkFNZ1NTcldDT0M3K00yWGNEWUFrcVNpYlFCY2dGdS9oOHFsQVhodWRBQkpVcUYySW4wK09KZHhxSFp5MkFsd1BQQXA4bmtqUVpKVWpKMUpEY0NzNkNCMWxFUG50VDBPL3BKVVZ4OENUb2dPVVVlNU5BQ1NwSG9hQVp3QjdCWWRwRzV5YUFDbVJRZVFKSVZhbi9UNTRFblJRZW9raHdaZ20rZ0FrcVJ3MDREdmtjZTRWQXM1bk9qTm9nTklrckp3RFBDSjZCQjFrVU1ENEpTUEpLblBCNEZYUjRlb2d4d2FnTW5SQVNSSjJlamJLWER2NkNCVlp3TWdTY3JOZU9COEhCOTZLb2NHWUlQb0FKS2s3R3dQL0lBOE5xeXJwQndhQUQ4RExFa2F5TkdrbldMVkF6azBBR09pQTBpU3N2VSs0UFhSSWFvb2h5MTRueUk5NzVFa2FTQkxnRU9CUDBZSHFaSWNHb0NWK0l4SGtqUzAyY0Ird0x6b0lGV1J3eU1BQjM5SjBuQ21BdWNBbzZLRFZFVU9EWUFrU2MxNEFmRFo2QkJWa2NNamdEWFJBU1JKcGZJbTBoY0UxUUViQUVsUzJTd0ZEZ091aXc1U1pqWUFrcVF5dWgvWUY1Z2JIYVNzWEFNZ1NTcWpiWUVMY0MrWnR0a0FTSkxLNm1EZ0M5RWh5c3BIQUpLa3Nuc0w4TzNvRUdWakF5QkpLcnRscEVXQjEwWUhLUk1iQUVsU0ZUeEVXaFQ0WUhTUXNuQU5nQ1NwQ3JZRWZveGZtRzJhRFlBa3FTb09CTDRVSGFJc2ZBUWdTYXFhdHdLblI0ZkluUTJBSktscVZnQkhBcitQRHBJekd3QkpVaFU5VEZvVStFQjBrRnk1QmtDU1ZFVmI0S0xBSWRrQVNKS3E2Z0JjQ3pBb0d3QkpVcFdkQkp3Y0hTSkhyZ0dRSkZYZEN1QW80UExvSURteEFaQWsxY0Vqd0g2a3p3Z0xId0ZJa3VwaGMrQ253UGpvSUxtd0FaQWsxY1Zld0g5SGg4aUZEWUFrcVU1ZUI3d2pPa1FPWEFNZ1NhcWJsY0RSd0t6b0lKRnNBQ1JKZFRTZnRDandudWdnVVh3RUlFbXFvMG5BQmNDRTZDQlJiQUFrU1hXMUp6WGVLZEFHUUpKVVp5Y0M3NGtPRWNFMUFKS2t1bHNGSEF2OE9qcElrV3dBSkVtQ0JjRCt3RjNSUVlyaUl3QkprbUJUMHFMQWlkRkJpbUlESUVsU3NnZHdGbm5NanZlY0RZQWtTVStiQWJ3dk9rUVJjdWh5WEFNZ1NjckphdUE0NEpmUlFYckpCa0NTcEhVOVJsb1VlR2Qwa0Y3eEVZQWtTZXZhQlBnWnNHRjBrRjZ4QVpBa2FXQzdBR2VTeDJ4NTE5a0FTSkkwdUpjRHAwYUg2SVVjdWhyWEFFaVNjcllhZUJGd2FYU1FicklCa0NScGVBOEF1NU1XQjFhQ2p3QWtTUnJlMXNCcDBTRzZ5UmtBU1pLYU53TzRNRHBFTjlnQVNKTFV2TG1rUndGem80TjB5a2NBa2lRMWJ3cnc1ZWdRM2VBTWdDUkpyWHNWY0Y1MGlFN1lBRWlTMUxxNXdFN0FvdWdnN2ZJUmdDUkpyWnNDZkRRNlJDZWNBWkFrcVQwcmdiMkFXNk9EdE1NWkFFbVMyak1LK0dKMGlIYlpBRWlTMUw0WEFzZEZoMmlIandBa1Nlck1YY0N1d0xMb0lLMXdCa0NTcE03c0NKd1NIYUpWemdCSWt0UzV4Y0EwWUVGMGtHWTVBeUJKVXVjMkJONFZIYUlWemdCSWt0UWRpMGl6QUtYNFpMQXpBSklrZGNkR3dEdWlRelRMR1FCSmtycG5JV2tXWUdGMGtPRTRBeUJKVXZkc0RKd2NIYUlaemdCSWt0UmQ4MG16QUk5SEJ4bUtNd0NTSkhYWEpPQXQwU0dHNHd5QUpFbmRONXUwUWRDcTZDQ0RzUUdRRkdFNWNDOXBDOVU3Z1llQkI0RkhTTjlaZndwNGtvR25VQ2NBNDBqUFdpY0JtelZxYTlLMDZ3Nk4ycWlYZndDcENTOERMb29PTVJnYkFFbTl0aGk0QnJpeFVUZVJCdjFlM3hsdEIremVxSDJBZzRDdGVueE1xYjlMZ0tPalF3ekdCa0JTdHowQlhBcjhML0I3NEJieW1RYWRDaHdNSEVuNmkzbWIyRGlxdURYQVRxU0dOenMyQUpLNllRNXdQdkJ6MHFCZmxxK2k3UUljQzh3QW5rY2VmeWVxV2o0SmZDZzZ4RUJ5K0dHM0FaREthUzV3RG5BdWNCWGwvLy95TnNBcmdKT0F2WU96cURybUFOdVR6eXpZMzlrQVNHckZhdUJpNE51a3hVM0xZK1Awek83QTY0RTNrQllhU3AwNEJ2aDFkSWkxMlFCSWFzWVR3Tm5BYWNEdHdWbUtOQlo0TmZCdVlNL2dMQ3F2NzVGbWxySmlBeUJwS0k4QW53ZStSZnJTV1owZENmd2I4SUxvSUNxZFJjQVd3TkxvSVAyNUU2Q2tnY3dGL2ovcGZmclA0K0FQY0JtcENUZ1ErR1Z3RnBYTFJzQ0xva09zelFaQVVuOVBBaDhsRGZ4ZklHM0lvMmU2Qm5ncDhIemc2dUFzS284VG9nT3N6VWNBa2lBdDd2c2Y0TU9rSGZuVXZCbWtabW43NEJ6SzJ3SmdjMkJsZEpBK3pnQkl1cG0wT2M2YmNQQnZ4d1hBYzRHUGtka3pYbVZsVTlMam8yellBRWoxOVNUcE9mOCtwR2x0dFc4Sk1CUFlEWmdWRzBVWmUybDBnUDU4QkNEVjAxV2s5OXl6M0tLMDVFWUFid1UrQzJ3UW5FVjV1Um1ZSGgyaWp3MkFWQy9MU1ZQVm55SERuY2txWmlyd2ZlQ1E2Q0RLeGhwZ0N2Qm9kQkR3RVlCVUovZVNCcVAveE1HL0NMT0JJNENQNC9sV01vTDA5a2dXYkFDa2V2Z0Y2Vm4vZGRGQmFtWWw2YlhLSTRHSGc3TW9ENGRIQitoakF5QlYyeHJnSThCeHBOZVFGT055WUYvZ0Q5RkJGTzdRNkFCOVhBTWdWZGNxMHY3alowY0gwZCtOQmY2TDlNcWw2bWtsYVdmQThFMjJuQUdRcXVzVUhQeHpzd3g0TTNBcTN2elUxU2d5K2JDVURZQlVUZWNDWDRzT29VRjlHamlSMUJDb2Z2YUxEZ0EyQUZJVkxRTGVHUjFDdy9vaDZUdnhUMFFIVWVHeTJBdkFCa0NxbnErU1B1T3IvTTBpdlNvNFB6cUlDclZMZEFCd0VhQlVOU3RKWC9LN1B6cUlXckkzOEJ0Z2NuUVFGV0lSc0hGMENHY0FwR3I1S1E3K1pYUUQ2WHZ4aTZLRHFCQWJBVnRIaDdBQmtLcmxwOUVCMUxZYmdCZmptb0M2MkNFNmdBMkFWQzFYUlFkUVI2NEJqc2UzQStwZ2FuUUFHd0NwT2g0Qjdvb09vWTVkU3ZwU28rdWpxbTNiNkFBMkFGSjEzQkVkUUYzekk5SkhoRlJkMjBVSHNBR1Fxc01GWk5YeU1lQUgwU0hVTTFPaUE5Z0FTTld4TURxQXVtb05hZHZnRzZLRHFDYzJqUTVnQXlCVmgvOS9ycDZsd0t1d3Vhc2lHd0JKWFJPK3FFZzljUmN1Q3F5aThBYkFuUUNsNnJpUERGNHRhc01JVXZPeVU2T21rSFpKNjZ2UndKT04vM1loc0FTWURjd2hiWHAwSnpDdjJNZ2h2Z3E4UFRxRXVtWSt3VHMvMmdCSTFiRUsyQVI0UERySU1DWURoelhxVU5LKzZPTTcvRDN2QTY0RC9nQmMzYWhWSGY2ZXVaa0EvQkY0VG5RUWRjWGp3SWFSQVd3QXBHbzVGdmhGZElnQlBKZjBMSHNHc0J1OS83dG5QdkJMNEdla1BmWnpiNHFhdFM5cHM2ZlIwVUhVc1dYQXVPZ1EwZFpZbHRXMU9vdDhiQTc4TzNBenNlZmtDZUJid0Y2OS9lTVc1aFBFLzV4Wm5kZnF0UzlzMFp3QmtLcmxLV0FhTURjd3crN0FLY0NKd05qQUhBTzVHdmd5Y0I0Wi9BWGNwdkdrcHVwWjBVSFVzZEF4MkxjQXBHcVpRTHJyanJBMzhHdmdUOEFieVcvd0J6Z1FPSWYwYnYxTGc3TzBhd253dHVnUVVqZEVUOE5ZVnRWcUpmQThpck1kNmRIRHFpNy9PWXFvM3dQN2RQK1VGT0ljNHMrZjFWbUY4aEdBVkUxelNFM0FnejA4eGxqZ1E4Qjc2WHdWZjZTVndHZEplKytYNlN0ODJ3Ti93WVZrWmVZakFFbGR0dzB3aTk3dEN6QWR1SmJVQUpSNThBY1lCZndiNlJXNy9ZS3p0T0plNEN2UklWUmV6Z0JJMVRZWE9JbjBLbHczakFMZUQzd1VHTk9sM3pNbks0QjNBZCtJRHRLa2pVZ2JJWVZ1S0tPMk9RTWdxV2VtQUw4Q3ZnZnMwT0h2TlozMER2b25xZWJnRCtuOStxOEQzNlFjNzlvdkFqNGZIVUxsNUF5QVZCK3JTYzNBMTRCTFNjKytoek9DdEZ2ZjI0QVRxTmROdys5SUd4Zk5qdzR5alBXQmUzQVdvSXhDeDJBYkFLbWVuaVJ0blhzRjZXTXppMGwzazVEV0Qwd2w3Y3YvQW1ETGlJQ1p1QWw0SWZrM0FSOEVQaFVkUWkyekFZZ09JRWxEK0JPcENYZzBPc2dRTmlCOUdHbWo2Q0JxaVdzQUpDbGowNEhMeUh1Sy9YSGdPOUVoVkM3T0FFaFNjNjRqUFJKNUlqcklJS2FTM2dnWUZSMUVUWE1HUUpKS1lEL1NOd1J5ZlR0Z051bnJoMUpUYkFBa3FYa3ZCczRrMzc4N3Z4MGRRT1hoSXdCSmF0Mm5nVk9qUXd4Z0pPbVZ3RzJqZzZncFBnS1FwSkw1QVBBUDBTRUdzSW8wUXlFTnl4a0FTV3JQbzhCZXBBOHY1V1FuNFBib0VHcUtNd0NTVkVLVGdiUEpiOVg5MzBoN0YwaERzZ0dRcFBZZFN2cVNZRzdPaXc2Zy9Qa0lRSkk2c3hUWWpiU2xjaTU4REZBT2JnVWNIVUFxMkVMZ0R0SlU3U0xTTG02TFNQdnpMd00ySm4zZ1pTSnBpOWVwd0xPQjdYRFdMbGMvQjQ2TERyR1d2NUYrYnBTdjBERTR0MmRYVXRVOFR2cXEzQ3pnV3RKZDJkdzJmNit4cEwvUWR5Vk5QUjhPUEpjOEd2bTZPN1pSUDQ4TzBzK3ZzUUhRRUhMNGk4TVpBRlhObmNBUFNIOEJYMDl6bjkxdDF4VGcrY0R4cE5mU0p2VHdXQnJhWGFTR2JIbDBrSWFYa2xkRG9uWDVDQ0E2Z05RRkM0RnpnYk9BcTRqNXVWNmYxQWljU1BwNjNjaUFESFgzUnVDNzBTRWFKZ0lMZ0RIUlFUUW9HNERvQUZJSDVnTGZBRTRERmdkbjZXOHE4QjdnelRnclVLVGJTYk1BcTZPRE5Gd05IQkFkUW9OeUh3Q3BoQjRCUGdoc0Q4d2tyOEVmMG9kaDNrVnFCRDVHdWhOVTcrME12RHc2UkQ5WFJBZFF2bXdBcE5Zc0J6NUJHdmcvQXl3SlRUTzhSMGtOeW83QTEwaGJ4YXEzUGhnZG9KOHJvd01vWHo0Q2tKcDNCZkJXNE0vUlFUb3duZFFJSEJJZHBPTDJBVzZJRGdGc0JUd1FIVUtEOGhHQWxMbWx3TW5BWVpSNzhJZTBSZXhod0J0SWV3K29OMDZNRHREd0lPMi9kcXFLc3dHUWhuWS82VFc3YjFLZDJhbzFwQy9HVFNjdEVsUDMvU1A1dklYaGR3RTBJQnNBYVhDWGtMNzJkbTEwa0I2WlRkcE02SXRVcDduSnhaYWtjNXNER3dBTnlBWkFHdGhYZ0dPQStkRkJlbXc1NlhYQjQwbGJFYXQ3VG9nTzBQRFg2QURLa3cyQXRLN1BrMTZocTlPSytaOENSd0R6b29OVXlCSFJBUnB5K2tpUk1tSURJRDNUWjRIM1JZY0ljaDFwZ2VCOTBVRXFZaWRnNitnUXBLMnBwWFhZQUVoUCt6andnZWdRd2Y0S0hBVGNGaDJrSWc2UERrQjZEWEJwZEFqbHh3WkFTajRHZkRRNlJDWWVBSTRDN29rT1VnR0hSd2NnTGZCOE1EcUU4bU1ESUtXZDhtWUdaOGpOUTZRbTRKSG9JQ1czUjNTQWhvZWpBeWcvTmdDcXU1bWt1Myt0Nnk3U04rNmZpQTVTWWp0SEIyaDRLRHFBOG1NRG9EcjdHQTcrdzdrZWVCM3VFOUN1allBcDBTRndOMEFOd0FaQWRUVVRwLzJiOVJQUzl3UFVubWRIQndBZWp3NmcvTmdBcUk2ODgyL2QrNENib2tPVTFBN1JBY2p2YzlYS2dBMkE2dVpqZU9mZmptWEFhM0Mzd0hac0ZCMEFHd0FOd0FaQWRUSVRCLzlPM0U3YUswR3RXVDg2QUttQms1N0JCa0IxTVJPbi9idmhTNlJHUU0zYklEb0FMdUxVQUd3QVZBY3pjZkR2bHVYQU82SkRsRXdPRGNEcTZBREtqdzJBcXM0RmY5MTNDWEJSZEFpMXhBWkE2N0FCVUpYTnhHZit2ZkpobkZadVZnNEw4TVpHQjFCK2JBQlVWVFB4enIrWC9nUmNGaDJpSkhMWVNYRjhkQURseHdaQVZUUVRCLzhpZkRZNlFFbmtzQW5QdU9nQXlvOE5nS3JHWi83RnVRUzRNVHBFQ1N5S0RnQk1pQTZnL05nQXFFcG00alAvb3AwUkhhQUU3b29PQUV5T0RxRDgyQUNvS21iaW5YK0VId0VybzBOazdtL1JBYkFCMEFCR1JRZVF1cURNMC82VGdRT0I1d0hUU2M5cTF5ZnQzSFpIbzY0Q3JnWldCV1VjeWp6Z1V1REYwVUV5dFFDWUh4MENHd0JsYW8xbGRWQXpLWi8xZ0dPQUM0RVZOUGZudkIvNElIayt5ejJKK0orRFhPdnFEczVyTi8yWitITmhyVnUxRjMwQnJQTFdUTXJuQU5JcmRPMyttZThIamlvODlkQW1remFhaWY1NXlMRnkrSXp5Q05KSG5LTFBoYlZ1MVY3MEJiREtXVE1wbDlIQVYwblQrSjMrMlZjQjd5dzIvckJ1SnY1bklzZDZSU2NudFVzMkkvNDhXQU5YN1VWZkFLdDhOWk55R1EyY1QvZlB3MXVML0VNTTR5dkUvMXprVnF1QVNaMmMxQzdaai9oellRMWNvWHdMUUdYek1jclZBSXdHemdGbTlPRDMvaHJ3a2g3OHZ1MjRQRHBBaG00bWp3V0FPMFVIVUo1c0FGUW1EdjdQTkFvNEQ5aTdSNzkvSzNKWjdKYVRTNklETk93YUhVQjVzZ0ZRV1RqNEQyd0NjQzZ3WVkrUE01d0h5ZU9qTnprNU96cEFndzJBQm1RRG9ESnc4Qi9hanVTeEQwSU9HOTdrNGhiZ3B1Z1FEYnRGQjFDZWJBQ1VPd2YvNXJ3ZG1GYndNZGQyZS9EeGMvSzk2QUFOazRqL3VWQ21iQUNVTXdmLzVvMEMzaHR3M1A3dUNENStMbFlDUDRnTzBiQWZhUjhBYVIwMkFNcVZnMy9yL2hFWUczajhSd09QblpNZmt0WkU1R0QvNkFES2x3MkFjdVRnMzU1TmdZTURqNzh3OE5pNVdBVjhNanBFUHdkRkIxQytiQUNVR3dmL3pod2FlR3diZ1BSYVppNXJJY1lBaDBTSFVMNXNBSlFUQi8vTzdSSjQ3RVdCeDg3QmF1QVQwU0g2ZVI0d01UcUU4bVVEb0Z3NCtIZkg1b0hIWGhsNDdCejhOM0JiZEloK1hoQWRRSG16QVZBT0hQeTdaM3pnc2NjRUhqdmFROENwMFNIV2tzczIwY3FVRFlDaU9maDMxeE9CeHg0WGVPeG83eUt2UnlCYmtWNEJsQVpsQTZCSUR2N2ROeWZ3MkpHdklFYjZPV254WDA2T3hmZi9OUXdiQUVWeDhPK05Xd09QWGNjRlovY0RiNG9PTVlEam93TW9mellBaXZBNUhQeDc1YmVCeDk0bThOZ1JsZ0d2Qk9aR0IxbkxGT0NGMFNHVXYxSFJBVlE3WndBZmlBN1JndEhBanlqSEhkVnM0SStCeDk4dThOZ1IzZzVjR3gxaUFQK0lmN2VyQ2M0QXFFamZBOTRDcklrTzBxUytPLzh5RFA0QTN5SDIzTlpwQnVBYndMZWpRd3ppeE9nQVVyUFdXTFdvUzBrRGFsbU1CczRuL3J3MVd3dUJUWHB5SnBwM1BmSG5vWWc2azN4dm52WWcvdnhZelZjb3A0bFVoTDhBSndBcm9vTTBxVXpUL24wK0Fqd1dlUHlSd0hNQ2oxK1VINU1XL2EyT0RqS0lrNk1EU0sySTdzQ3MzdGJEd0ZUS28yeDMvbXVBV2FRQk9OSjA0czlEcitzODhyNXAyZ0JZVFB4NXNwcXZVTGxPWTZrYVZwRHUvR2RIQjJsU21WYjc5N2tQZUMzcEszU1I5ZzArZnE5ZFFEclBPVzkzL0hwU0V5Q1ZSblFIWnZXdVRxRTh5bmpuUDQvWWovLzA5MDNpejBldjZuenlYNzh5Q3JpYitITmx0VmExRjMwQnJON1VEeW1Qc2c3K2UvVGlaTFRwVnVMUFNTK3FESU0vcEZmL29zK1YxWHJWWHZRRnNMcGZkMUtlcVVnSC84NU5JLzZjOUtMS012aVBBRzRpL254WnJWY28xd0NvMjFZQ3J3TWVqdzdTaEw3Vi9tVjY1ajhQT0JLNE9UcElQOGRGQitpQkM0RFhVSTQzVjE1QldvUXBsVTUwQjJaMXQyWlNEcU5KZjhsSG42OVdhaTU1M2ZuMytRM3g1NmFiVlpZN2YwaHZmOXhHL0RtejJxdmFpNzRBVnZmcU92SitUYXFQMC83ZHN4R3dsUGp6MDYwcTArQVBjQkx4NTh4cXYyb3YrZ0pZM2FrVndON2t6enYvN25vNzhlZW5XMVcyd1g4OGNDL3g1ODFxdjJvditnSlkzYWxQcjMxaE0rVGczMzAzRW4rT3VsRmxHL3dCUGs3OGViTTZxOXFMdmdCVzUzVVhNR0h0QzVzWnAvMjc3d0RpejFFM3FveUQvelRnS2VMUG5kVloxVjcwQmJBNnI5ejN6SGZ3NzQwemlEOVBuVllaQjMrQWk0Zy9kMWJuVlh2UkY4RHFyR2F0ZTBtejRyUi9iMndITENQK1hIVlNaUjM4WDB2OHViTzZVN1VYZlFHczltc1ZzTSs2bHpRYkR2NjljenJ4NTZxVEt1dmdQeGw0aFBqelozV25haS82QWxqdDE1a0RYTTljT08zZk85c0R5NGsvWCsxV1dRZC9nSE9KUDM5Vzk2cjJvaStBMVY2dEFKNDF3UFhNZ1lOL2IzMmIrUFBWYnBWNThIOFQ4ZWZQNm03Vlh2UUZzTnFyTXdhNm1CbHcyciszOWlOdDl4eDl6dHFwTWcvK3p3SVdFMzhPcmU1VzdVVmZBS3YxV2dIc09OREZERmJHTy84eURmNmpLTzk3LzJVZS9DZFEzdk51RFYyMUYzMEJyTmJybkFHdlpLeVJ3SStKUHpldFZKa0dmNEQzRW4vTzJxa3lELzRBM3lmK0hGcTlxZHFMdmdCVzYvVzhBYTlrck04VGYxNWFxYklOL3RPQUo0Zy9iNjFXMlFmL2R4Ti9EcTNlVmUxRlh3Q3J0YnB5NE1zWTZwK0pQeSt0Vk5rRy96SEFOY1NmdDFhcjdJUC9ETkxqdHVqemFQV3VhaS82QWxpdDFXc0d2b3hoRHFWY0c5S1ViZkFIK0JMeDU2M1Zxc0xnWCtaWExhM21xdmFpTDREVmZEMEtqQjM0TW9iWW5ISnRpbExHd1g4R3NKcjRjOWRLT2ZoYlphbmFpNzRBVnZQMXBVR3VZWlNmRUg5T21xMHlEdjU3QUF1SlAzZXRsSU8vVmFhcXZlZ0xZRFZmMHdlNWhoRk9JdjU4TkZ0emdkMTdjeHA2WmcvUzVrVFI1NjZWY3ZDM3lsYTFGMzBCck9icVQ0TmR3QUJiQWZPSlB5Zk5sSU4vTWVYZ2I1V3hRcTBYSFVDbDhlUG9BUDE4R2RnME9rUVQ1Z0V2Qkc2SkR0S0NQWURMU0IrZEtZc0xTSXRUVjBRSGFkTU0wdDRhWlc1Z3BMWkVkMkJXYzdYTFlCZXdZUHRUamtWcDN2a1hVOTc1VzJXdTJvdStBTmJ3ZGR1Z1Y2OTRzNGcvSDhOVldSZjhPZmdYeThIZnFyM29DMkFOWDU4YjlPb1Y2NlhFbjR2aHlqdi9Zc3JCMzZwQzFWNzBCYkNHcnhjT2V2V0tkUjN4NTJLbzhzNi9tSEx3dDZwU3RSZDlBYXloNnlsZy9LQlhyemdIRUg4dWhpcnYvSXNwQjMrclNoWEt0d0Ewbk44RFM2SkRBQ2RIQnhpQ3EvMkw0V3AvcVdLaU96QnI2UHJJNEpldU1KTkpUVWowdVJpb3ZQTXZwcnp6dDZwWW9ad0IwSEN1amc0QXZCNFlGeDFpQU43NUY4TTdmNm1pb2pzd2EvQmFCV3cwK0tVcnpGWEVuNHUxeXp2L1lzbzdmNnZLVlh2UkY4QWF2UDQ4eEhVcnl1YWtSaVQ2WFBRdkIvOWl5c0hmcW5xRjhoR0FocExEMVBaeDVQVnpPZzg0a2p6T1RiT2M5aStlMC83S1hrNS9zU28vT2V3QWVGeDBnSDRjL0l2aDRDOFZ3QVpBUTdrMStQZ2pnRU9DTS9RcDYrQi9LUTcrUlhMd1YybU1pZzZnclAwdCtQZzdrTWRYLzhvNitIdm5YeXdIZjVXS013QWF5dXpnNCs4WGZQdytiOExCdjljYy9LV0MyUUJvTVBPQng0TXo3Qk44ZklCemdZdWlRN1RBd2I5NER2NHFKUnNBRGVhKzZBREFyc0hIWHdLY0VweWhGVDd6TDU2RHYwckxOUUFhek1QUkFZQnRnNDkvSHZCUWNJWm1lZWRmUEFkL2xab3pBQnJNL09nQXdOYkJ4ejg5K1BqTmN2QXZub08vU3M4R1FJTjVMUGo0RTRCTkFvOC9HN2d5OFBqTmN0cS9lQTcrcWdRYkFBMW1RZkR4dHd3K2ZnNGZRUnBPMytDL1dYU1FGamo0UzVsd0RZQUdzelQ0K0dPRGozOU44UEdINDdSLzhSejhWU25PQUdnd3k0S1BILzJ6ZVdmdzhZZDVNNmgyQUFBUTJVbEVRVlRpdEgveEhQeFZPYzRBYURETGc0OGYvYlA1WlBEeEIrT2RmL0VjL0ZWSjBYZFp5dGZLNE9OSC8yd3VDVDcrUUx6ekw1NkR2eW9yK2k1TCtZcitDeTk2QU40dytQaHI4ODYvZUE3K3FyVG91eXpsSzNvUjNxUEJ4OThwK1BqOU9mZ1h6OEZmbFdjRG9NR01DVDcrQW1CMTRQRjNEangyZjA3N0Y4L0JYN1ZnQTZEQlRBZysvaXBpTnlNNkl2RFlmWHpQdjNnTy9xb05Hd0FOWmxKMEFHTDM0ZCtOTkFCSGNmQXZub08vYXNVR1FJUFpORG9BY0Z2dzhkOFRkRndILytJNStLdDJiQUEwbUJ4bUFHNE5QdjdyZ0gwS1B1YnVPUGdYemNGZnRXUURvTUZFNzhVUGNFdnc4ZGNEdmdlc1g5RHhkaWV0OW5md0w0NkR2MnJMQmtDRG1Sb2RnUGdHQUdBWDBpRFg2OWNpSGZ5TDUrQXZCVnRqWlZzNXZIcDJQL0huWVEzd2UzcDNQdllBNW1id1oyeWx6cWZjQStjTTBuYlgwZWZScW5lRmNnWkFRNWthSFFDNEpEcEF3eUhBRmNEMlhmNTlEd04raTNmK1JmTE9YOElHUUVON1RuUUE0T0xvQVAzc0RGd0hITk9GMzJzRThDNVNnN05KRjM2L29qajRTK3FhNkNrWWEvRDYxQkRYclNpYmtUWUZpajRYL1dzMWFYSGdObTMrbWZZaVBWS0kvbk8wV2s3N1cxWjNxL2FpTDRBMWVGMDB4SFVyMG0rSlB4Y0QxVExnRE5JMC9uQ3phZU9BNDRGZmtCcUk2T3l0bG9PL1pYVy9RbzJJRGtBR0owR0R1bzg4MWdHOEFmaHVkSWhoUEFaY0NmeUZ0S0J2TVdscWYydlNyb0lIQU9QRDBuWEdhWCtwTjBMSFlCc0FEV2NyWXJma0JaZ0lQRXh4NytQcmFRNytVdStFanNFdUF0UndEb3dPQUR4Sm1vSldzUno4cFFxekFkQndjbWdBQUw0UkhhQm1IUHlsaXJNQjBIQU9pUTdROEFmU0h2bnFQUWQvcVFaY0E2RGhyQUttQUF1aWd3Q0hBN09pUTFTY2c3OVVITmNBS0dzamdTT2lRelQ4bHZUK3ZIckR3VitxRVJzQU5lTkYwUUg2K1JET0d2V0NnNzlVTXpZQWFzWkx5T2RuNVhmQTk2TkRWSXlEdjFSRHJnRlFzdzRoYlhTVGc4MkJ2d0liUndlcEFBZC9LWTVyQUZRS0owUUg2T2NSNE1QUklTckF3VitxTVdjQTFLdzVwRzJCVjBjSGFSaEplaTN3OE9BY1plWGdMOFZ6QmtDbHNBMzV2QTBBNmZYRTE1QzJDRlpySFB3bDJRQ29KVytNRHJDV1I0RFhrcG9CTmNmQlh4SmdBNkRXekNCOTRTNG5zNEJQUlljb0NRZC9TWDluQTZCV2pBUCtLVHJFQUQ0S25CMGRJbk1PL3BLZXdVV0FhdFU5d0xQSmI5cDlOUEJUNEpqb0lCbHk4SmZ5NUNKQWxjbzA0TGpvRUFOWUFid1N1Q282U0dZYy9DVU55QVpBN1hoM2RJQkJQQVc4RExnMk9rZ21IUHdsRGNvR1FPMDRERGdvT3NRZzVnTkhBcitKRGhMc2ZCejhKUTNCQmtEdG1oa2RZQWhQQU1jQ1owUUhDZklWNE5VNCtFdkszQnFydEhYSUFOY3pKeU9BajVNV0xFYWZxeUpxS2ZENnJweTVPRE9BNWNTZlM4c3Fva0w1Rm9BNk1RdDRRWFNJSmh3RmZJLzBFYUdxZXBnMGVGNGRIYVFEM3ZtcmJud0xRS1YxQkhtK0ViQzJTNEE5Z0l1amcvVElqMGwvUGdkL1NhVVNQUVZqZFZhM1U1Ni90RWNDYndNZUkvNjhkYU1lSlMzMEt6dW4vYTI2VnUxRlh3Q3I4enBsbmF1YXQ4MkJNMGxmTm93K2QrM1VhdUNId0JiZFBqRUJIUHl0T2xmdFJWOEFxL042RE5oeTdRdGJBb2NDbHhOLy9scXBTNEI5ZW5FeUFqajRXM1d2Mm91K0FGWjM2cnkxTDJ5SkhFcmFOeUQ2SEE1VlY1RVdNMWFGZzc5bEtmd0NXTjJybDFGdSs1SDJEbGhNL0xsY1E5clo4RHRVNTQ2L2o0Ty9aYVVLNVd1QTZxYjdTYXZSRjBZSDZkQkUwaUQxQnVENXBNV0RSVmtGWEFsY0NKd0ZMQ2p3MkVWd3RiLzB0TkF4MkFaQTNYWTJjR0owaUM3YWhMUzE4TkdObXRxRFl6d01YQUZjQlB5Q3RKMXhGVG40Uzg5a0F4QWRRRjEzSXFrUnFLS3B3TzdBYm8xZmR5V3R4cC9NOERNRkR3TVBBbk9BMjREcmdPdEpNeWRWNStBdnJjc0dJRHFBdW00aHNDY3dPenBJd1NZM2FtTGozeDlyL0xvQ2VJVDAzTHVPSFB5bGdka0FSQWRRVDl4RSttTGdrdWdnQ3VYZ0x3M09yWUJWU1hzQ1g0NE9vVkFPL2xMR2JBRFVTMjhCM2hRZFFpRWMvS1hNK1FoQXZiWWNlREhweTRHcUJ3ZC9xVG11QVlnT29KNmJUMW9QOExmb0lPbzVCMytwZWE0QlVPVk5BbjRGVElrT29wNXk4SmRLeEFaQVJka0IrQ213UVhRUTlZU0R2MVF5TmdBcTBnR2ttWUNKdy8ySEtoVUhmNm1FYkFCVXRJT0JDNEN4MFVIVUZRNytVa25aQUNqQzBjQ1BzQWtvdTFmaDRDK1ZsbThCS05JczBpZUVuNGdPb3BiOUUvQmRZRlIwRUtuRWZBdEF0WFVFOEV0Z3crZ2dhc25Kd0prNCtFdWxaZ09nYUllU1pnSzJqQTZpWVkwQVBnNThIZi91a0VyUFJ3REt4WVBBc2NDTjBVRTBvREhBZDBoVC81SzZ3NTBBb3dNb0c0dUJFNENMbzRQb0dTYVIzdHc0TERxSVZER3VBWkFhTmlTdENaaUpQNXU1MkJPNEZnZC9xWEtjQVZDdUxnSk9BaFpHQjZteDF3SGZCQ1pFQjVFcXloa0FhUURIQWRjQWUwY0hxYUdKd0xlQnMzRHdseXJMQmtBNTJ4bjRBK21Sd01qWUtMV3hIM0FEOEtib0lKSjZ5MGNBS292TGdUY0E5OGJHcUt4UndBZUJqK0RPZmxKUmZBc2dPb0JLNHluU2UraWZCMVlGWjZtU3ZZRFRnWDJqZzBnMVl3TVFIVUNsY3ozd0w3aG5RS2MyQVA0RGVEcytZcEVpdUFoUWF0RytwQ2JnTEdDTDRDeGx0QjdwRFl2YmdYZmg0Qy9Wa2pNQUtydkZ3S2VBTHdGTGc3T1V3UkhBRjBqVC9wSmkrUWdnT29BcVlTNXdHdkFWWUVsd2xod2RCSnhLMm01WlVoNXNBS0lEcUZJZUFENU4rbFR0azhGWmN2Qjg0TitCbzZLRFNGcUhEVUIwQUZYU1l1Qi9TRzhNM0I4YnBYQ2pnWmNEN3dFT0NNNGlhWEEyQU5FQlZHa3JnQXVCTTRCTGdOV3hjWHBxQitDZkc3VjFjQlpKdzdNQmlBNmcycmlQOUdqZ0hPQ3Z3Vm02WlNQZ1phUk5rbzRnai85UFMycU9EVUIwQU5YU3JjQ1BTWis1dlNVNFM2c21rUmJ6dlpMMGJIOXNiQnhKYmJJQmlBNmcycHNEWEF6OEJwZ0Z6SXVOczQ0eHdQN0EwY0NMZ0gzdzNYMnBDbXdBb2dOSWEva2JjSFdqL2dqOG1iUU5jUkhXSXozTDN3TTRzRkg3QU9NS09yNms0dGdBUkFlUWhyRWF1SWYwcU9CdVlIYmozKzhESGdYbTAvd21ST3NCbTVLbThiY0dwalpxQjJBWDRMbjRDVjZwTG13QW9nTklYZkFVcVJGWVFXb1lGalgrOTNIQStNWS9iMHdhL0NVSmJBQnNBQ1JKdGVUSGdDUkpVckZzQUNSSnFpRWJBRW1TYXNnR1FKS2tHcklCa0NTcGhtd0FKRW1xSVJzQVNaSnF5QVpBa3FRYXNnR1FKS21HYkFBa1Nhb2hHd0JKa21vb2h3WmdWWFFBU1pJS0ZqNzI1ZEFBTEk4T0lFbFN3WlpGQjdBQmtDU3BlRFlBMkFCSWt1ckhCb0FNVG9Ja1NRVUx2L25Ob1FGWUhCMUFrcVNDTFlvT2tFTUQ4R2gwQUVtU0NoWSs5dGtBU0pKVXZQQ3h6d1pBa3FUaWhZOTlPVFFBODZNRFNKSlVzQVhSQVhKb0FPWkVCNUFrcVdEM1JRZklvUUc0SnpxQUpFa0ZDeC83YkFBa1NTcmV2ZEVCUmtRSEFNWUJUNUZIRmttU2VtMDFNSUhnamZCeW1BRllDandVSFVLU3BJSThRQWE3NE9iUUFBRGNHaDFBa3FTQzNCSWRBUEpwQUc2T0RpQkpVa0d5R1BOeWFRQ3k2SVlrU1NwQUZtTmVMZzFBRnQyUUpFa0Z5R0xNeTJYbC9SalNsNUhHUlFlUkpLbUhsZ0FiQVN1aWcrUXlBN0FjdUQ0NmhDUkpQZllITWhqOElaOEdBT0RLNkFDU0pQWFlGZEVCK3RnQVNKSlVuR3pHdWx6V0FBQk1BdWFSVnlaSmtycGxOV21zV3hnZEJQS2FBWmdQL0NrNmhDUkpQWEk5bVF6K2tGY0RBUERMNkFDU0pQWElyNklEOUpkYkE1RFZ5WkVrcVl1eUd1TnllOTQrRXBnTGJCb2RSSktrTG5vVTJBSllGUjJrVDI0ekFLdUFpNk5EU0pMVVpiOG1vOEVmOG1zQUFNNkxEaUJKVXBlZEd4MWdiYms5QW9DMEhmRERwSzBTSlVrcXU0V2s2ZjlsMFVINnkzRUdZQ2x3VVhRSVNaSzY1RUl5Ry93aHp3WUE0RWZSQVNSSjZwTHNwdjhoejBjQUFLT0ErNEF0bzROSWt0U0JoNER0Z0pYUlFkYVc2d3pBU3VETTZCQ1NKSFhvTzJRNCtFTytNd0FBT3dCM2tHK1RJa25TVU5ZQXp3YnVpZzR5a0p3SDE3dUJXZEVoSkVscTB5VmtPdmhEM2cwQXdOZWpBMGlTMUtadlJBY1lTczZQQUNBMUtMY0R6NG9PSWtsU0MvNEc3RUw2QkhDV2NwOEJXQTE4S1RxRUpFa3RPbzJNQjMvSWZ3WUFZQUl3RzVnY0hVU1NwQ2JNQmJZSGxnVG5HRkx1TXdBQVQrRmFBRWxTZVh5TnpBZC9LTWNNQUtUdkF0eU5ud21XSk9WdFB1azE5c1hSUVlaVGhoa0FnRVhBRjZORFNKSTBqTTlSZ3NFZnlqTURBTEErNlgzS0tkRkJKRWthd0R4Z1IrRHg2Q0ROR0JrZG9BWExHNzhlSFpwQ2txU0JmUWo0WFhTSVpwVnBCZ0JnREhBcmFXdEZTWkp5Y1Nld0d4bCs5bmN3WlZrRDBHYzU4UDdvRUpJa3JlVVVTalQ0US9sbUFQcjhCaDhGU0pMeWNDbHdWSFNJVnBXMUFkZ2R1QUVZRlIxRWtsUnJ5NEU5Z2I5RUIybFZtUllCOWpjWG1BZ2NFaDFFa2xSci93bWNGeDJpSFdXZEFRQVlDOXhJK3RpQ0pFbEZ1NTEwOTc4ME9rZzd5cllJc0w5bHdNbkFtdWdna3FUYVdRMjhtWklPL2xEZVJ3QjlaZ05iQXZ0R0I1RWsxY3JYZ1c5R2graEVtUjhCOUprSS9CSFlPVHFJSktrVy9rSzY4WHdxT2tnbnl2d0lvTStUd0d0NWVxZEFTWko2WlJsd0lpVWYvS0g4andENlBBU3NBbzZNRGlKSnFyUVBBQmRHaCtpR0tqd0M2TE1lYVlPZ0YwWUhrU1JWMHErQWwxS1J4ZWRWYWdBQU5nV3VCNlpGQjVFa1ZjcHNZQjlnZm5TUWJxbkNHb0QrRmdBemdDWFJRU1JKbGJHVU5MWlVadkNINnF3QjZPOWg0RUhnSDZLRFNKSXE0WTJrUjh5VlVzVUdBT0FtWUVQZ3dPZ2drcVJTK3d4d1duU0lYcWphR29EKzFpUHR6endqT29na3FaVE9BMTVEMnZXdmNxcmNBQUNNQnk3RG1RQkpVbXV1Qlk2Z0F1LzdENmJxRFFEQUZPQUs0Tm5SUVNSSnBmQlg0RkRnMGVnZ3ZWUzF0d0FHTWhkNEFYQlBkQkJKVXZidUExNU14UWQvcU1jTVFKOGRnZDhCVzBVSGtTUmw2UUhnTU9EdTZDQkZxTU1NUUorN2dLT0JlZEZCSkVuWm1Rc2NSVTBHZjZoWEF3QndHNm03ZXlBNmlDUXBHdytUdmlYemwrZ2dSYXJUSTREK3RpZTlIYkJEY0E1SlVxelpwRy9JM0JrZHBHaDFtd0hvY3kvcDlZNDdnbk5Ja3VMY0RoeENEUWQvcUc4REFHbWw1NEdrVndRbFNmVnlEZW1SOEp6b0lGSHEzQUJBK3JEREM0Rnpvb05Ja2dwelB1bjE4TG5SUVNKVjlWc0FyVmdGWE5ENDU4TURjMGlTZXU4cndKdUJGZEZCb3RrQVBPMjNwRmNGWHd5TWpvMGlTZXF5cGNCYmdVOEJhNEt6WktHdWJ3RU1aVS9Tak1DMDZDQ1NwSzY0RDNnbGNGMTBrSnpVZlEzQVFHNEM5Z011amc0aVNlcllyNEM5Y1BCZmg0OEFCcllFK0FId0dHbWhpT2RKa3NwbEJmQUowclIvWmIvbzF3a2ZBUXh2TitCc1lQZm9JSktrcHZ3VmVDMXdZM1NRbkhsbk83eTV3Rm5BSnNDKzJEUkpVcTVXQTE4SFRnRHVEODZTUFFlejFod01mQXZZSlRxSUpPa1o3Z1QrQlpnVkhhUXNuQUZvemYzQWQwaDdCeHlFNTArU29xMEVQZ2U4bXBwdTZkc3Vad0RhdHl2d1JkTG5JeVZKeGZzTjhHNXE5aFcvYnZFMXdQYmRCaHhOYWdEK0hKeEZrdXJrRHVCVnBJM2JIUHpiNUJSMjUrNG1QUlo0RE5nYm1CZ2JSNUlxYXk3d0llQ2ZnVnVDczVTZWp3QzZheUx3ZHVEOXdLYkJXU1NwS2hZQVh3Vk9BeFlIWjZrTUc0RGUyQWc0aGRRTVRBN09Ja2xsTlk4MDhIOFpCLzZ1c3dIb3JiR2tsYW1uQXM4SnppSkpaWEUzNmF0OTM4SmQvSHJHQnFBWTZ3RXZCLzRWT0JJWFgwclMybFlEbHdMZkFIN1crSGYxa0ExQThiWUJUZ1RlQm13WG5FV1NvajFFMm0zMWROS2R2d3BpQXhCbkZPazF3bGNELzBCYU55QkpkYkFRK0Fsd0xuQUphVE1mRmN3R0lBOWpTZSt6dmdwNEVUQXBObzRrZGQyandLK0I4MGdiK0N5TGpTTWJnUHlNQlBZSGptblUzcmhtUUZMNXJBYXVKdzM2djJ6ODg2clFSSG9HRzREOGJRQThEemlFOURHaWc0SHhvWWtrYVYwcmdKdUJLNEVyZ010STcrOHJVellBNVRPYTlEWEMzWUU5Z09uQWMwbUxDNzJla25wdE5UQ0h0QVg2bjBnNzh0MUMycEozUldBdXRjZ0JvenJHQWxPQmFjRDJwSVpnTXJCWjQ5ZEp3QVJnUTlKamh0SEEraEZCSldYbENkTEF2WXEwMmM1VHdIelNNL3Q1alYvbkFQY0E5d0t6OGZsOUpmd2ZzTFIyV2RGbTFYWUFBQUFBU1VWT1JLNUNZSUk9XCIvPlxuICAgIDwvZGVmcz5cbiAgICA8L3N2Zz4gXG4gIEBpZihjb3B5T2ZJbnB1dEFsbEZpbGVzICYmIGNvcHlPZklucHV0QWxsRmlsZXMubGVuZ3RoID4gMCl7XG4gICAgPHNwYW4gKGNsaWNrKT1cIm9wZW5Qb3B1cCgpXCIgXG4gICAgICBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBjdXJzb3I6IHBvaW50ZXI7XCI+XG4gICAgICB7eyBjb3B5T2ZJbnB1dEFsbEZpbGVzLmxlbmd0aCA9PT0gMSA/ICcxIEZpbGUgQXR0YWNoZWQnIDogJysnICsgY29weU9mSW5wdXRBbGxGaWxlcy5sZW5ndGggKyAnIEZpbGVzIEF0dGFjaGVkJyB9fVxuICAgIDwvc3Bhbj5cbiAgfSBcbiAgQGVsc2Uge1xuICAgIDxkaXY+IEFkZCBmaWxlcyA8L2Rpdj5cbiAgfVxuICA8c3ZnICpuZ0lmPVwiIXF1ZXN0aW9uLmlzUmVhZE9ubHlcIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF82MTZfMzUxMzkpXCI+XG4gICAgPHBhdGggZD1cIk0xNS45MjUgMS40ODYzM0g2Ljc1VjUuMjkxMTFIMTcuODg0NVYzLjQ0NTFDMTcuODg0NSAyLjM2NDkzIDE3LjAwNTQgMS40ODYzMyAxNS45MjUgMS40ODYzM1pcIiBmaWxsPVwiIzZGNzE3M1wiLz5cbiAgICA8cGF0aCBkPVwiTTEwLjczMSA1Ljg3NjMxSDBWMi4zNDU4OUMwIDEuMDUyMjUgMS4wNTI3IDAgMi4zNDY4IDBINS43Nzc4OUM2LjExODkzIDAgNi40NDc0NSAwLjA3MTg2ODkgNi43NDU5MSAwLjIwNjkwOUM3LjE2Mjc4IDAuMzk0NzQ1IDcuNTIwOSAwLjcwNDM0NiA3Ljc3MjA2IDEuMTA4ODZMMTAuNzMxIDUuODc2MzFaXCIgZmlsbD1cIiM1NzU5NUJcIi8+XG4gICAgPHBhdGggZD1cIk0yMCA2LjY2Njc1VjE4LjAzODhDMjAgMTkuMTIwNCAxOS4xMTk2IDIwIDE4LjAzNzYgMjBIMS45NjI0M0MwLjg4MDQzMiAyMCAwIDE5LjEyMDQgMCAxOC4wMzg4VjQuNzA1MDhIMTguMDM3NkMxOS4xMTk2IDQuNzA1MDggMjAgNS41ODUwNSAyMCA2LjY2Njc1WlwiIGZpbGw9XCIjMjkyRDMyXCIvPlxuICAgIDxwYXRoIGQ9XCJNMjAgNi42NjY3NVYxOC4wMzg4QzIwIDE5LjEyMDQgMTkuMTE5NiAyMCAxOC4wMzc2IDIwSDEwVjQuNzA1MDhIMTguMDM3NkMxOS4xMTk2IDQuNzA1MDggMjAgNS41ODUwNSAyMCA2LjY2Njc1WlwiIGZpbGw9XCIjMjkyRDMyXCIvPlxuICAgIDxwYXRoIGQ9XCJNMTUuMjYwMSAxMi4zNTI3QzE1LjI2MDEgMTUuMjUzOSAxMi45MDAxIDE3LjYxNDEgOS45OTkyMSAxNy42MTQxQzcuMDk4MzYgMTcuNjE0MSA0LjczODI4IDE1LjI1MzkgNC43MzgyOCAxMi4zNTI3QzQuNzM4MjggOS40NTIwMyA3LjA5ODM2IDcuMDkxOCA5Ljk5OTIxIDcuMDkxOEMxMi45MDAxIDcuMDkxOCAxNS4yNjAxIDkuNDUyMDMgMTUuMjYwMSAxMi4zNTI3WlwiIGZpbGw9XCIjNkY3MTczXCIvPlxuICAgIDxwYXRoIGQ9XCJNMTUuMjYwOSAxMi4zNTI3QzE1LjI2MDkgMTUuMjUzOSAxMi45MDA4IDE3LjYxNDEgMTAgMTcuNjE0MVY3LjA5MThDMTIuOTAwOCA3LjA5MTggMTUuMjYwOSA5LjQ1MjAzIDE1LjI2MDkgMTIuMzUyN1pcIiBmaWxsPVwiIzZGNzE3M1wiLz5cbiAgICA8cGF0aCBkPVwiTTExLjY5NTQgMTIuNDE2N0MxMS41ODU2IDEyLjUwOTYgMTEuNDUxMiAxMi41NTUgMTEuMzE4IDEyLjU1NUMxMS4xNTEyIDEyLjU1NSAxMC45ODU1IDEyLjQ4NDMgMTAuODY5NSAxMi4zNDY3TDEwLjU4NTYgMTIuMDEwMVYxNC4yMTM5QzEwLjU4NTYgMTQuNTM3NCAxMC4zMjMxIDE0Ljc5OTggOS45OTk2NCAxNC43OTk4QzkuNjc2MTUgMTQuNzk5OCA5LjQxMzcgMTQuNTM3NCA5LjQxMzcgMTQuMjEzOVYxMi4wMTAxTDkuMTI5NzQgMTIuMzQ2N0M4LjkyMDY5IDEyLjU5NCA4LjU1MTI4IDEyLjYyNTYgOC4zMDM5MyAxMi40MTY3QzguMDU2NzQgMTIuMjA4MSA4LjAyNSAxMS44Mzg2IDguMjMzNTkgMTEuNTkxMkw5LjM5MzQxIDEwLjIxNjJDOS41NDQ2MiAxMC4wMzc0IDkuNzY1MjcgOS45MzQ1NyA5Ljk5OTY0IDkuOTM0NTdDMTAuMjM0IDkuOTM0NTcgMTAuNDU0NyAxMC4wMzc0IDEwLjYwNTkgMTAuMjE2MkwxMS43NjU3IDExLjU5MTJDMTEuOTc0MyAxMS44Mzg2IDExLjk0MjUgMTIuMjA4MSAxMS42OTU0IDEyLjQxNjdaXCIgZmlsbD1cIiMyOTJEMzJcIi8+XG4gICAgPHBhdGggZD1cIk0xMS42OTU3IDEyLjQxNjdDMTEuNTg2IDEyLjUwOTYgMTEuNDUxNiAxMi41NTUgMTEuMzE4NCAxMi41NTVDMTEuMTUxNiAxMi41NTUgMTAuOTg1OSAxMi40ODQzIDEwLjg2OTkgMTIuMzQ2N0wxMC41ODU5IDEyLjAxMDFWMTQuMjEzOUMxMC41ODU5IDE0LjUzNzQgMTAuMzIzNSAxNC43OTk4IDEwIDE0Ljc5OThWOS45MzQ1N0MxMC4yMzQ0IDkuOTM0NTcgMTAuNDU1IDEwLjAzNzQgMTAuNjA2MiAxMC4yMTYyTDExLjc2NjEgMTEuNTkxMkMxMS45NzQ2IDExLjgzODYgMTEuOTQyOSAxMi4yMDgxIDExLjY5NTcgMTIuNDE2N1pcIiBmaWxsPVwiIzI5MkQzMlwiLz5cbiAgICA8L2c+XG4gICAgPGRlZnM+XG4gICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfNjE2XzM1MTM5XCI+XG4gICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIvPlxuICAgIDwvY2xpcFBhdGg+XG4gICAgPC9kZWZzPlxuICAgIDwvc3ZnPiAgIFxuICAgIDxpbnB1dCAjZmlsZUlucHV0IHR5cGU9XCJmaWxlXCIgbmFtZT1cImZpbGVVcGxvYWRcIiBtdWx0aXBsZT1cIm11bHRpcGxlXCIgW2FjY2VwdF09XCJhbGxvd2VkRmlsZVR5cGVzLmpvaW4oJywnKVwiXG4gICAgICBzdHlsZT1cImRpc3BsYXk6bm9uZTtcIiAoY2hhbmdlKT11cGxvYWRNdWx0aXBsZUZpbGVzKCRldmVudCkgLz5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiY29sLWxnLTZcIiBzdHlsZT1cInBhZGRpbmc6MDttYXJnaW4tdG9wOiAxMHB4O1wiPlxuICA8IS0tIEVycm9yIG1lc3NhZ2VzIHNlY3Rpb24gLS0+XG4gIDxkaXYgY2xhc3M9XCJmaWxlLWNvbnN0cmFpbnRzXCIgKm5nSWY9XCJ2YWxpZGF0aW9uRXJyb3JzLmxlbmd0aCA+IDBcIj5cbiAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgdmFsaWRhdGlvbkVycm9yc1wiPnt7IGVycm9yIH19PC9kaXY+XG4gICAgPC9zbWFsbD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImVycm9yXCIgY2xhc3M9XCJlcnJvci1tc2dcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCI+e3txdWVzdGlvbj8uZXJyb3JNZXNzYWdlfX08L2Rpdj5cblxuPCEtLSBTS1MxMUpVTjI1IEZpbGUgU2VsZWN0aW9uIFBvcHVwIE1vZGFsIC0tPlxuPGRpdiBjbGFzcz1cImZpbGUtcG9wdXAtb3ZlcmxheVwiICpuZ0lmPVwic2hvd1BvcHVwXCIgKGNsaWNrKT1cImNsb3NlUG9wdXAoKVwiPlxuICA8ZGl2IGNsYXNzPVwiZmlsZS1wb3B1cC1tb2RhbFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICA8IS0tIEhlYWRlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsZS1wb3B1cC1oZWFkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Rpb24tdHlwZVwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJwb3B1cC10aXRsZVwiPnt7cXVlc3Rpb24ucXVlc3Rpb25UZXh0fX08L2gyPlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiY2xvc2UtYnRuXCIgKGNsaWNrKT1cImNsb3NlUG9wdXAoKVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNsb3NlLWljb25cIj7Dlzwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTS1MxMUpVTjI1IENvbnRlbnQgLS0+XG4gICAgPGRpdiBjbGFzcz1cImZpbGUtcG9wdXAtY29udGVudFwiPlxuICAgICAgPCEtLSBTS1MxMUpVTjI1IExlZnQgUGFuZWwgLSBGaWxlIExpc3QgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1saXN0LXBhbmVsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWl0ZW1cIiAqbmdGb3I9XCJsZXQgZmlsZSBvZiBjb3B5T2ZJbnB1dEFsbEZpbGVzOyBsZXQgaSA9IGluZGV4XCIgXG4gICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImN1cnJlbnRGaWxlID09PSBmaWxlXCJcbiAgICAgICAgICAgICAoY2xpY2spPVwidmlld0ZpbGUoZmlsZSlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1pY29uXCI+XG4gICAgICAgICAgICAgIDxpbWcgc3R5bGU9XCJ3aWR0aDogMjhweDtoZWlnaHQ6IDI4cHg7XCIgW3NyY109XCJnZXREb2NJY29uKGZpbGU/Lm5hbWUpXCI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtZGV0YWlsc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtbmFtZVwiPnt7IGZpbGUubmFtZSB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcXVlc3Rpb24uaXNSZWFkT25seVwiIGNsYXNzPVwiZmlsZS1hY3Rpb25zXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWN0aW9uLWJ0blwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGRlbGV0ZUZpbGUoaSlcIiB0aXRsZT1cIkRlbGV0ZVwiPlxuICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIj5cbiAgICAgICAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPVwiMyw2IDUsNiAyMSw2XCI+PC9wb2x5bGluZT5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwibTE5LDZ2MTRhMiwyIDAgMCwxIC0yLDJIN2EyLDIgMCAwLDEgLTIsLTJWNm0zLDBWNGEyLDIgMCAwLDEgMiwtMmg0YTIsMiAwIDAsMSAyLDJ2MlwiPjwvcGF0aD5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBFbXB0eSBzdGF0ZSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCIgKm5nSWY9XCIhY29weU9mSW5wdXRBbGxGaWxlcyB8fCBjb3B5T2ZJbnB1dEFsbEZpbGVzLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1pY29uXCI+8J+ThDwvZGl2PlxuICAgICAgICAgIDxwPk5vIGZpbGVzIHNlbGVjdGVkPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFNLUzExSlVOMjUgUmlnaHQgUGFuZWwgLSBQcmV2aWV3IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImZpbGUtcHJldmlldy1wYW5lbFwiPlxuICAgICAgICBAaWYoY3VycmVudEZpbGUpe1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmV2aWV3LWNvbnRlbnRcIiA+XG4gICAgICAgICAgICBAaWYoaXNJbWFnZSAmJiBmaWxlVXJsKXtcbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImZpbGVVcmxcIiBjbGFzcz1cInByZXZpZXctaW1hZ2VcIiBhbHQ9XCJGaWxlIFByZXZpZXdcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGVsc2UgaWYoZmlsZVVybCl7XG4gICAgICAgICAgICAgIDxpZnJhbWUgW3NyY109XCJmaWxlVXJsXCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiNTAwcHhcIj48L2lmcmFtZT5cbiAgICAgICAgICAgIH0gXG4gICAgICAgICAgICBAZWxzZXtcbiAgICAgICAgICAgICAgPGRpdj5VbmFibGUgdG8gbG9hZCB0aGUgZmlsZSBwcmV2aWV3LjwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBlbHNle1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1wcmV2aWV3XCI+XG4gICAgICAgICAgICA8cD5TZWxlY3QgYSBmaWxlIHRvIHByZXZpZXc8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|