@uiapplibct/ngx-reusa-app-lib 0.0.1 → 0.0.3
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/README.md +1 -1
- package/esm2022/lib/components/file-uploader/file-uploader.component.mjs +93 -15
- package/esm2022/lib/components/header/header.component.mjs +2 -2
- package/esm2022/lib/interceptors/error-interceptor/http-error-interceptor.mjs +3 -1
- package/esm2022/lib/services/audit/audit.service.mjs +35 -0
- package/esm2022/lib/services/dms-service/dms.service.mjs +7 -1
- package/fesm2022/uiapplibct-ngx-reusa-app-lib.mjs +211 -96
- package/fesm2022/uiapplibct-ngx-reusa-app-lib.mjs.map +1 -1
- package/lib/components/file-uploader/file-uploader.component.d.ts +10 -2
- package/lib/components/file-uploader/file-uploader.component.d.ts.map +1 -1
- package/lib/interceptors/error-interceptor/http-error-interceptor.d.ts.map +1 -1
- package/lib/services/audit/audit.service.d.ts +16 -0
- package/lib/services/audit/audit.service.d.ts.map +1 -0
- package/lib/services/dms-service/dms.service.d.ts +2 -0
- package/lib/services/dms-service/dms.service.d.ts.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -6,13 +6,14 @@ import * as i2 from "../../services/util/util.service";
|
|
|
6
6
|
import * as i3 from "../../services/dms-service/dms.service";
|
|
7
7
|
import * as i4 from "@ionic/angular";
|
|
8
8
|
import * as i5 from "../../services/captcha/captcha.service";
|
|
9
|
-
import * as i6 from "
|
|
10
|
-
import * as i7 from "
|
|
11
|
-
import * as i8 from "primeng/
|
|
12
|
-
import * as i9 from "primeng/
|
|
13
|
-
import * as i10 from "
|
|
14
|
-
import * as i11 from "
|
|
15
|
-
import * as i12 from "
|
|
9
|
+
import * as i6 from "../../services/audit/audit.service";
|
|
10
|
+
import * as i7 from "@angular/common";
|
|
11
|
+
import * as i8 from "primeng/api";
|
|
12
|
+
import * as i9 from "primeng/tooltip";
|
|
13
|
+
import * as i10 from "primeng/table";
|
|
14
|
+
import * as i11 from "@fortawesome/angular-fontawesome";
|
|
15
|
+
import * as i12 from "../overlay-info/overlay-info.component";
|
|
16
|
+
import * as i13 from "@ngx-translate/core";
|
|
16
17
|
const _c0 = ["uploadFileFormDirective"];
|
|
17
18
|
const _c1 = ["fileInput"];
|
|
18
19
|
function FileUploaderComponent_section_2_ng_template_2_th_5_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -194,7 +195,7 @@ function FileUploaderComponent_section_3_Template(rf, ctx) { if (rf & 1) {
|
|
|
194
195
|
i0.ɵɵelement(3, "div", 22);
|
|
195
196
|
i0.ɵɵelementEnd();
|
|
196
197
|
i0.ɵɵelementStart(4, "ion-col")(5, "div", 13)(6, "input", 17, 15);
|
|
197
|
-
i0.ɵɵlistener("change", function FileUploaderComponent_section_3_Template_input_change_6_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r32 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r32.
|
|
198
|
+
i0.ɵɵlistener("change", function FileUploaderComponent_section_3_Template_input_change_6_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r32 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r32.uploadToTaxAudit($event)); });
|
|
198
199
|
i0.ɵɵelementEnd();
|
|
199
200
|
i0.ɵɵelementStart(8, "ion-button", 23);
|
|
200
201
|
i0.ɵɵlistener("click", function FileUploaderComponent_section_3_Template_ion_button_click_8_listener() { i0.ɵɵrestoreView(_r33); const _r31 = i0.ɵɵreference(7); return i0.ɵɵresetView(_r31.click()); });
|
|
@@ -222,12 +223,13 @@ function FileUploaderComponent_section_4_Template(rf, ctx) { if (rf & 1) {
|
|
|
222
223
|
i0.ɵɵproperty("accept", ctx_r3.allowedFileType);
|
|
223
224
|
} }
|
|
224
225
|
export class FileUploaderComponent {
|
|
225
|
-
constructor(formBuilder, util, fs, toastController, cs) {
|
|
226
|
+
constructor(formBuilder, util, fs, toastController, cs, as) {
|
|
226
227
|
this.formBuilder = formBuilder;
|
|
227
228
|
this.util = util;
|
|
228
229
|
this.fs = fs;
|
|
229
230
|
this.toastController = toastController;
|
|
230
231
|
this.cs = cs;
|
|
232
|
+
this.as = as;
|
|
231
233
|
this.imageBase64 = null;
|
|
232
234
|
this.DEFAULT_SINGLE_FILE_LIMIT = 1;
|
|
233
235
|
this.DEFAULT_FILE_SIZE_IN_MB = 1;
|
|
@@ -235,6 +237,7 @@ export class FileUploaderComponent {
|
|
|
235
237
|
this.showProgress = false;
|
|
236
238
|
this.upload = new EventEmitter();
|
|
237
239
|
this.files = new EventEmitter();
|
|
240
|
+
this.uploadAudit = new EventEmitter();
|
|
238
241
|
this.queue = [];
|
|
239
242
|
this.mapOfFiles = new Map();
|
|
240
243
|
this.multiple = false;
|
|
@@ -242,6 +245,7 @@ export class FileUploaderComponent {
|
|
|
242
245
|
this.showSeparateAttachButton = false;
|
|
243
246
|
this.noOfFilesToUpload = this.DEFAULT_SINGLE_FILE_LIMIT;
|
|
244
247
|
this.maxSizeInMB = this.DEFAULT_FILE_SIZE_IN_MB;
|
|
248
|
+
this.uploadToDMS = true;
|
|
245
249
|
this.onChange = (value) => {
|
|
246
250
|
};
|
|
247
251
|
this.onTouch = () => {
|
|
@@ -254,6 +258,8 @@ export class FileUploaderComponent {
|
|
|
254
258
|
return this.uploadFileForm.controls['uploadFileCtrl'];
|
|
255
259
|
}
|
|
256
260
|
ngOnInit() {
|
|
261
|
+
if (this.corrId) {
|
|
262
|
+
}
|
|
257
263
|
}
|
|
258
264
|
writeValue(obj) {
|
|
259
265
|
}
|
|
@@ -264,6 +270,61 @@ export class FileUploaderComponent {
|
|
|
264
270
|
this.onTouch = fn;
|
|
265
271
|
}
|
|
266
272
|
ngOnChanges(changes) {
|
|
273
|
+
if (changes['corrId']) {
|
|
274
|
+
if (this.corrId && this.context === 'signature') {
|
|
275
|
+
this.fs.getTaxAuditFile(this.corrId).subscribe((res) => {
|
|
276
|
+
this.imageBase64 = res.data;
|
|
277
|
+
this.imageHtml = `<img src="${this.imageBase64}" alt="Uploaded Image" width="385px" height="98px">`;
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
fileToBase64(file) {
|
|
283
|
+
return new Promise((resolve, reject) => {
|
|
284
|
+
const reader = new FileReader();
|
|
285
|
+
reader.readAsDataURL(file);
|
|
286
|
+
reader.onload = () => resolve(reader.result);
|
|
287
|
+
reader.onerror = error => reject(error);
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
async uploadToTaxAudit(event) {
|
|
291
|
+
const file = event.target.files[0];
|
|
292
|
+
const base64 = await this.fileToBase64(file);
|
|
293
|
+
let corId;
|
|
294
|
+
this.showProgress = true;
|
|
295
|
+
this.as.getCorrId().subscribe((res) => {
|
|
296
|
+
corId = res;
|
|
297
|
+
let req = {
|
|
298
|
+
"ean": "12345678",
|
|
299
|
+
"year": "2026",
|
|
300
|
+
"correspodenceList": [
|
|
301
|
+
{
|
|
302
|
+
"base64FileData": base64,
|
|
303
|
+
"corrId": res,
|
|
304
|
+
"direction": "INBOUND",
|
|
305
|
+
"docCode": `signature_${corId}`,
|
|
306
|
+
"mimeType": this.mimeType,
|
|
307
|
+
"title": "signature",
|
|
308
|
+
}
|
|
309
|
+
]
|
|
310
|
+
};
|
|
311
|
+
this.cs.generateCaptchaToken('file_upload').subscribe((token) => {
|
|
312
|
+
this.cs.setInvisibelCaptcha(token);
|
|
313
|
+
this.fs.uploadTaxAuditFile(req).subscribe(res => {
|
|
314
|
+
this.uploadAudit.emit(corId);
|
|
315
|
+
if (this.context === 'signature') {
|
|
316
|
+
this.imageBase64 = base64;
|
|
317
|
+
this.imageHtml = `<img src="${this.imageBase64}" alt="Uploaded Image" width="385px" height="98px">`;
|
|
318
|
+
}
|
|
319
|
+
console.log("res", res);
|
|
320
|
+
}, err => {
|
|
321
|
+
console.log("error", err);
|
|
322
|
+
this.util.errorHandler(err);
|
|
323
|
+
});
|
|
324
|
+
}, (err) => {
|
|
325
|
+
this.util.errorHandler(err);
|
|
326
|
+
});
|
|
327
|
+
});
|
|
267
328
|
}
|
|
268
329
|
addToQueue(event) {
|
|
269
330
|
let currFileUpldSize = 0;
|
|
@@ -297,6 +358,15 @@ export class FileUploaderComponent {
|
|
|
297
358
|
}
|
|
298
359
|
let files = [...event.target.files];
|
|
299
360
|
event.target.value = '';
|
|
361
|
+
if (!this.uploadToDMS) {
|
|
362
|
+
// let files = [...event.target.files];
|
|
363
|
+
for (var i = 0; i < files.length; i++) {
|
|
364
|
+
// this.queue.push(files[i]);
|
|
365
|
+
this.mapOfFiles.set(files[i], null);
|
|
366
|
+
}
|
|
367
|
+
this.files.emit(this.mapOfFiles);
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
300
370
|
this.fs
|
|
301
371
|
.uploadFile(formData)
|
|
302
372
|
.subscribe(res => {
|
|
@@ -382,7 +452,7 @@ export class FileUploaderComponent {
|
|
|
382
452
|
error(msg) {
|
|
383
453
|
this.presentToast(msg, 'danger');
|
|
384
454
|
}
|
|
385
|
-
static { this.ɵfac = function FileUploaderComponent_Factory(t) { return new (t || FileUploaderComponent)(i0.ɵɵdirectiveInject(i1.UntypedFormBuilder), i0.ɵɵdirectiveInject(i2.UtilService), i0.ɵɵdirectiveInject(i3.DmsService), i0.ɵɵdirectiveInject(i4.ToastController), i0.ɵɵdirectiveInject(i5.CaptchaService)); }; }
|
|
455
|
+
static { this.ɵfac = function FileUploaderComponent_Factory(t) { return new (t || FileUploaderComponent)(i0.ɵɵdirectiveInject(i1.UntypedFormBuilder), i0.ɵɵdirectiveInject(i2.UtilService), i0.ɵɵdirectiveInject(i3.DmsService), i0.ɵɵdirectiveInject(i4.ToastController), i0.ɵɵdirectiveInject(i5.CaptchaService), i0.ɵɵdirectiveInject(i6.AuditService)); }; }
|
|
386
456
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FileUploaderComponent, selectors: [["app-file-uploader"]], viewQuery: function FileUploaderComponent_Query(rf, ctx) { if (rf & 1) {
|
|
387
457
|
i0.ɵɵviewQuery(_c0, 5);
|
|
388
458
|
i0.ɵɵviewQuery(_c1, 5);
|
|
@@ -390,7 +460,7 @@ export class FileUploaderComponent {
|
|
|
390
460
|
let _t;
|
|
391
461
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.uploadFileFormDirective = _t.first);
|
|
392
462
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.fileInput = _t);
|
|
393
|
-
} }, inputs: { allowedFileType: "allowedFileType", multiple: "multiple", proofOfAnything: "proofOfAnything", context: "context", showSeparateAttachButton: "showSeparateAttachButton", noOfFilesToUpload: "noOfFilesToUpload", maxSizeInMB: "maxSizeInMB" }, outputs: { upload: "upload", files: "files" }, features: [i0.ɵɵProvidersFeature([{
|
|
463
|
+
} }, inputs: { allowedFileType: "allowedFileType", mimeType: "mimeType", multiple: "multiple", proofOfAnything: "proofOfAnything", context: "context", showSeparateAttachButton: "showSeparateAttachButton", noOfFilesToUpload: "noOfFilesToUpload", maxSizeInMB: "maxSizeInMB", uploadToDMS: "uploadToDMS", corrId: "corrId" }, outputs: { upload: "upload", files: "files", uploadAudit: "uploadAudit" }, features: [i0.ɵɵProvidersFeature([{
|
|
394
464
|
provide: NG_VALUE_ACCESSOR,
|
|
395
465
|
useExisting: FileUploaderComponent,
|
|
396
466
|
multi: true
|
|
@@ -406,7 +476,7 @@ export class FileUploaderComponent {
|
|
|
406
476
|
i0.ɵɵproperty("ngIf", ctx.context == "signature");
|
|
407
477
|
i0.ɵɵadvance(1);
|
|
408
478
|
i0.ɵɵproperty("ngIf", ctx.context == "uploadZipCodes");
|
|
409
|
-
} }, dependencies: [i4.IonButton, i4.IonCol, i4.IonIcon, i4.IonRow,
|
|
479
|
+
} }, dependencies: [i4.IonButton, i4.IonCol, i4.IonIcon, i4.IonRow, i7.NgIf, i8.PrimeTemplate, i9.Tooltip, i1.ɵNgNoValidate, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.FormGroupDirective, i1.FormControlName, i10.Table, i11.FaIconComponent, i12.OverlayInfoComponent, i7.DecimalPipe, i13.TranslatePipe], styles: [".file-input-container[_ngcontent-%COMP%]{text-align:right}.file-input-container[_ngcontent-%COMP%] input[type=file][_ngcontent-%COMP%]{display:none}.file-input-container[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{border:1px solid #ccc;padding:6px 12px;cursor:pointer}.upload-input-container[_ngcontent-%COMP%] input[type=file][_ngcontent-%COMP%]{display:none}.upload-input-container[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{border:1px solid #ccc;cursor:pointer}[_nghost-%COMP%] .p-datatable .p-datatable-thead>tr>th{background:#fff!important;background-color:#fff!important}ol[_ngcontent-%COMP%], ul[_ngcontent-%COMP%]{list-style:none}ul[_ngcontent-%COMP%]{list-style-type:square}li[_ngcontent-%COMP%]{color:var(--ion-color-grey)}"] }); }
|
|
410
480
|
}
|
|
411
481
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FileUploaderComponent, [{
|
|
412
482
|
type: Component,
|
|
@@ -414,19 +484,23 @@ export class FileUploaderComponent {
|
|
|
414
484
|
provide: NG_VALUE_ACCESSOR,
|
|
415
485
|
useExisting: FileUploaderComponent,
|
|
416
486
|
multi: true
|
|
417
|
-
}], template: "<form [formGroup]=\"uploadFileForm\" #uploadFileFormDirective=\"ngForm\">\r\n <section *ngIf=\"this.context != 'signature' && this.context !='uploadZipCodes'\">\r\n <p-table [value]=\"queue\" responsiveLayout=\"scroll\" [loading]=\"showProgress\">\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th>Name</th>\r\n <th>Size</th>\r\n <th style=\"text-align:right\" *ngIf=\"proofOfAnything\">\r\n <app-overlay-info overlayText=\"{{'proof.of.anything.info'| translate}}\"\r\n style=\"margin-top: 2px; margin-left: 6px;\"></app-overlay-info>\r\n </th>\r\n <th class=\"ion-text-right\">\r\n <div class=\"file-input-container\" *ngIf=\"multiple && !proofOfAnything\">\r\n <input type=\"file\" #fileInput formControlName=\"uploadFileCtrl\" [accept]=\"allowedFileType\"\r\n multiple=\"multiple\" (change)=\"addToQueue($event)\" />\r\n <ion-button shape=\"round\" size=\"small\" type=\"submit\" fill=\"outline\" (click)=\"fileInput.click()\">\r\n Choose Files\r\n </ion-button>\r\n </div>\r\n\r\n <div class=\"file-input-container\" *ngIf=\"!multiple && !proofOfAnything\">\r\n <input type=\"file\" #fileInput formControlName=\"uploadFileCtrl\" [accept]=\"allowedFileType\"\r\n (change)=\"addToQueue($event)\" />\r\n <ion-button shape=\"round\" size=\"small\" type=\"submit\" fill=\"outline\" (click)=\"fileInput.click()\">\r\n Choose File\r\n </ion-button>\r\n </div>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-queue>\r\n <tr>\r\n <td>{{ queue?.name }}</td>\r\n <td>{{ queue?.size/1024/1024 | number:'.2' }} MB</td>\r\n <td class=\"ion-text-right\">\r\n <ion-button shape=\"round\" size=\"small\" pTooltip=\"Remove\" (click)=\"removeFromQueue(queue)\"\r\n tooltipPosition=\"bottom\" class=\"ion-padding-left\">\r\n <ion-icon name=\"trash-outline\"></ion-icon>\r\n </ion-button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr *ngIf=\"!proofOfAnything\">\r\n <td [attr.colspan]=\"3\">\r\n <ul>\r\n <li *ngIf=\"allowedFileType\">You are allowed to upload file(s) with following extentions: {{allowedFileType}}.</li>\r\n <li>Total file(s) size cannot exceed <b>{{maxSizeInMB}}</b> MB.</li>\r\n <li>You can upload maximum <b>{{noOfFilesToUpload}}</b> file(s).</li>\r\n </ul>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"footer\"> \r\n <tr *ngIf=\"proofOfAnything\">\r\n <td *ngIf=\"queue.length == 0\">\r\n <div><b>+ Add</b> files</div>\r\n </td>\r\n <td *ngIf=\"queue.length > 0\">\r\n <div><b>+ Add</b> any other files</div>\r\n </td>\r\n <td></td>\r\n <td class=\"file-input-container\">\r\n <input type=\"file\" #fileInput formControlName=\"uploadFileCtrl\" [accept]=\"allowedFileType\"\r\n (change)=\"addToQueue($event)\" />\r\n <ion-button aria-label=\"Add Files\" (click)=\"fileInput.click()\" fill=\"outline\" size=\"small\" class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'plus']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n</section>\r\n<section *ngIf=\"this.context == 'signature'\">\r\n <ion-row>\r\n <ion-col>\r\n <div [innerHTML]=\"imageHtml\" style=\"width: 385px; height: 100px; border: 1px solid gray; justify-content: center; align-items: center;\"></div>\r\n </ion-col>\r\n <ion-col>\r\n <div class=\"file-input-container\">\r\n <input type=\"file\" #fileInput formControlName=\"uploadFileCtrl\" [accept]=\"allowedFileType\"\r\n (change)=\"
|
|
418
|
-
}], () => [{ type: i1.UntypedFormBuilder }, { type: i2.UtilService }, { type: i3.DmsService }, { type: i4.ToastController }, { type: i5.CaptchaService }], { uploadFileFormDirective: [{
|
|
487
|
+
}], template: "<form [formGroup]=\"uploadFileForm\" #uploadFileFormDirective=\"ngForm\">\r\n <section *ngIf=\"this.context != 'signature' && this.context !='uploadZipCodes'\">\r\n <p-table [value]=\"queue\" responsiveLayout=\"scroll\" [loading]=\"showProgress\">\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th>Name</th>\r\n <th>Size</th>\r\n <th style=\"text-align:right\" *ngIf=\"proofOfAnything\">\r\n <app-overlay-info overlayText=\"{{'proof.of.anything.info'| translate}}\"\r\n style=\"margin-top: 2px; margin-left: 6px;\"></app-overlay-info>\r\n </th>\r\n <th class=\"ion-text-right\">\r\n <div class=\"file-input-container\" *ngIf=\"multiple && !proofOfAnything\">\r\n <input type=\"file\" #fileInput formControlName=\"uploadFileCtrl\" [accept]=\"allowedFileType\"\r\n multiple=\"multiple\" (change)=\"addToQueue($event)\" />\r\n <ion-button shape=\"round\" size=\"small\" type=\"submit\" fill=\"outline\" (click)=\"fileInput.click()\">\r\n Choose Files\r\n </ion-button>\r\n </div>\r\n\r\n <div class=\"file-input-container\" *ngIf=\"!multiple && !proofOfAnything\">\r\n <input type=\"file\" #fileInput formControlName=\"uploadFileCtrl\" [accept]=\"allowedFileType\"\r\n (change)=\"addToQueue($event)\" />\r\n <ion-button shape=\"round\" size=\"small\" type=\"submit\" fill=\"outline\" (click)=\"fileInput.click()\">\r\n Choose File\r\n </ion-button>\r\n </div>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-queue>\r\n <tr>\r\n <td>{{ queue?.name }}</td>\r\n <td>{{ queue?.size/1024/1024 | number:'.2' }} MB</td>\r\n <td class=\"ion-text-right\">\r\n <ion-button shape=\"round\" size=\"small\" pTooltip=\"Remove\" (click)=\"removeFromQueue(queue)\"\r\n tooltipPosition=\"bottom\" class=\"ion-padding-left\">\r\n <ion-icon name=\"trash-outline\"></ion-icon>\r\n </ion-button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr *ngIf=\"!proofOfAnything\">\r\n <td [attr.colspan]=\"3\">\r\n <ul>\r\n <li *ngIf=\"allowedFileType\">You are allowed to upload file(s) with following extentions: {{allowedFileType}}.</li>\r\n <li>Total file(s) size cannot exceed <b>{{maxSizeInMB}}</b> MB.</li>\r\n <li>You can upload maximum <b>{{noOfFilesToUpload}}</b> file(s).</li>\r\n </ul>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"footer\"> \r\n <tr *ngIf=\"proofOfAnything\">\r\n <td *ngIf=\"queue.length == 0\">\r\n <div><b>+ Add</b> files</div>\r\n </td>\r\n <td *ngIf=\"queue.length > 0\">\r\n <div><b>+ Add</b> any other files</div>\r\n </td>\r\n <td></td>\r\n <td class=\"file-input-container\">\r\n <input type=\"file\" #fileInput formControlName=\"uploadFileCtrl\" [accept]=\"allowedFileType\"\r\n (change)=\"addToQueue($event)\" />\r\n <ion-button aria-label=\"Add Files\" (click)=\"fileInput.click()\" fill=\"outline\" size=\"small\" class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'plus']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n</section>\r\n<section *ngIf=\"this.context == 'signature'\">\r\n <ion-row>\r\n <ion-col>\r\n <div [innerHTML]=\"imageHtml\" style=\"width: 385px; height: 100px; border: 1px solid gray; justify-content: center; align-items: center;\"></div>\r\n </ion-col>\r\n <ion-col>\r\n <div class=\"file-input-container\">\r\n <input type=\"file\" #fileInput formControlName=\"uploadFileCtrl\" [accept]=\"allowedFileType\"\r\n (change)=\"uploadToTaxAudit($event)\" />\r\n <ion-button shape=\"square\" size=\"small\" type=\"submit\" fill=\"outline\" (click)=\"fileInput.click()\">\r\n Import\r\n </ion-button>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n</section>\r\n<section *ngIf=\"this.context == 'uploadZipCodes'\">\r\n <div class=\"upload-input-container\">\r\n <input type=\"file\" #fileInput formControlName=\"uploadFileCtrl\" [accept]=\"allowedFileType\"\r\n (change)=\"addToQueue($event)\" />\r\n <ion-button shape=\"square\" size=\"default\" type=\"submit\" fill=\"outline\" (click)=\"fileInput.click()\">\r\n Upload Zip Codes\r\n </ion-button>\r\n </div>\r\n</section>\r\n</form>", styles: [".file-input-container{text-align:right}.file-input-container input[type=file]{display:none}.file-input-container label{border:1px solid #ccc;padding:6px 12px;cursor:pointer}.upload-input-container input[type=file]{display:none}.upload-input-container label{border:1px solid #ccc;cursor:pointer}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th{background:#fff!important;background-color:#fff!important}ol,ul{list-style:none}ul{list-style-type:square}li{color:var(--ion-color-grey)}\n"] }]
|
|
488
|
+
}], () => [{ type: i1.UntypedFormBuilder }, { type: i2.UtilService }, { type: i3.DmsService }, { type: i4.ToastController }, { type: i5.CaptchaService }, { type: i6.AuditService }], { uploadFileFormDirective: [{
|
|
419
489
|
type: ViewChild,
|
|
420
490
|
args: ['uploadFileFormDirective', { static: false }]
|
|
421
491
|
}], upload: [{
|
|
422
492
|
type: Output
|
|
423
493
|
}], files: [{
|
|
424
494
|
type: Output
|
|
495
|
+
}], uploadAudit: [{
|
|
496
|
+
type: Output
|
|
425
497
|
}], fileInput: [{
|
|
426
498
|
type: ViewChildren,
|
|
427
499
|
args: ['fileInput']
|
|
428
500
|
}], allowedFileType: [{
|
|
429
501
|
type: Input
|
|
502
|
+
}], mimeType: [{
|
|
503
|
+
type: Input
|
|
430
504
|
}], multiple: [{
|
|
431
505
|
type: Input
|
|
432
506
|
}], proofOfAnything: [{
|
|
@@ -439,6 +513,10 @@ export class FileUploaderComponent {
|
|
|
439
513
|
type: Input
|
|
440
514
|
}], maxSizeInMB: [{
|
|
441
515
|
type: Input
|
|
516
|
+
}], uploadToDMS: [{
|
|
517
|
+
type: Input
|
|
518
|
+
}], corrId: [{
|
|
519
|
+
type: Input
|
|
442
520
|
}] }); })();
|
|
443
521
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FileUploaderComponent, { className: "FileUploaderComponent", filePath: "lib\\components\\file-uploader\\file-uploader.component.ts", lineNumber: 20 }); })();
|
|
444
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS11cGxvYWRlci9maWxlLXVwbG9hZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9maWxlLXVwbG9hZGVyL2ZpbGUtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQTRCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSSxPQUFPLEVBQXNFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztJQ00zSCw4QkFBcUQ7SUFDbkQsdUNBQzhEOztJQUNoRSxpQkFBSzs7SUFGZSxlQUFxRDtJQUFyRCx1RkFBcUQ7Ozs7SUFJdkUsK0JBQXVFLG9CQUFBO0lBRS9DLG9NQUFVLGVBQUEsMEJBQWtCLENBQUEsSUFBQztJQURuRCxpQkFDc0Q7SUFDdEQsc0NBQWdHO0lBQTVCLDRMQUFTLGVBQUEsWUFBaUIsQ0FBQSxJQUFDO0lBQzdGLDhCQUNGO0lBQUEsaUJBQWEsRUFBQTs7O0lBSmtELGVBQTBCO0lBQTFCLCtDQUEwQjs7OztJQU8zRiwrQkFBd0Usb0JBQUE7SUFFcEUsb01BQVUsZUFBQSwwQkFBa0IsQ0FBQSxJQUFDO0lBRC9CLGlCQUNrQztJQUNsQyxzQ0FBZ0c7SUFBNUIsNExBQVMsZUFBQSxZQUFpQixDQUFBLElBQUM7SUFDN0YsNkJBQ0Y7SUFBQSxpQkFBYSxFQUFBOzs7SUFKa0QsZUFBMEI7SUFBMUIsZ0RBQTBCOzs7SUFqQi9GLDBCQUFJLFNB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USxrRUFBQSxpRUFBQTtZQTBCVixpQkFBTzs7WUFsR0QsOENBQTRCO1lBQ3RCLGVBQW9FO1lBQXBFLG9GQUFvRTtZQXdFdEUsZUFBaUM7WUFBakMsaURBQWlDO1lBZ0JqQyxlQUFzQztZQUF0QyxzREFBc0M7OztpRkR0RW5DLHFCQUFxQjtjQVZqQyxTQUFTOzJCQUNFLG1CQUFtQixhQUdsQixDQUFDO3dCQUNWLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsdUJBQXVCO3dCQUNsQyxLQUFLLEVBQUUsSUFBSTtxQkFDWixDQUFDO2lLQWVLLHVCQUF1QjtrQkFEN0IsU0FBUzttQkFBQyx5QkFBeUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFJdkQsTUFBTTtrQkFETCxNQUFNO1lBSVAsS0FBSztrQkFESixNQUFNO1lBR29CLFNBQVM7a0JBQW5DLFlBQVk7bUJBQUMsV0FBVztZQU96QixlQUFlO2tCQURkLEtBQUs7WUFJTixRQUFRO2tCQURQLEtBQUs7WUFJTixlQUFlO2tCQURkLEtBQUs7WUFJTixPQUFPO2tCQUROLEtBQUs7WUFJTix3QkFBd0I7a0JBRHZCLEtBQUs7WUFJTixpQkFBaUI7a0JBRGhCLEtBQUs7WUFJTixXQUFXO2tCQURWLEtBQUs7O2tGQTdDSyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZHJlbiwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBOZ0Zvcm0sIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVG9hc3RDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBDYXB0Y2hhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NhcHRjaGEvY2FwdGNoYS5zZXJ2aWNlJztcbmltcG9ydCB7IERtc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kbXMtc2VydmljZS9kbXMuc2VydmljZSc7XG5cblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZmlsZS11cGxvYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS11cGxvYWRlci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IEZpbGVVcGxvYWRlckNvbXBvbmVudCxcbiAgICBtdWx0aTogdHJ1ZVxuICB9XVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMge1xuXG4gIGltYWdlQmFzZTY0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIERFRkFVTFRfU0lOR0xFX0ZJTEVfTElNSVQgPSAxO1xuXG4gIHByaXZhdGUgREVGQVVMVF9GSUxFX1NJWkVfSU5fTUIgPSAxO1xuXG4gIHByaXZhdGUgRklMRV9VUExPQURfQUNUSU9OX05BTUUgPSAnZmlsZV91cGxvYWQnO1xuXG4gIHB1YmxpYyBzaG93UHJvZ3Jlc3MgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCd1cGxvYWRGaWxlRm9ybURpcmVjdGl2ZScsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwdWJsaWMgdXBsb2FkRmlsZUZvcm1EaXJlY3RpdmU6IE5nRm9ybTtcblxuICBAT3V0cHV0KClcbiAgdXBsb2FkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgZmlsZXM6IEV2ZW50RW1pdHRlcjxNYXA8RmlsZSwgc3RyaW5nPj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQFZpZXdDaGlsZHJlbignZmlsZUlucHV0JykgZmlsZUlucHV0O1xuXG4gIHF1ZXVlOiBGaWxlW10gPSBbXTtcblxuICBtYXBPZkZpbGVzOiBNYXA8RmlsZSwgc3RyaW5nPiA9IG5ldyBNYXAoKTtcblxuICBASW5wdXQoKVxuICBhbGxvd2VkRmlsZVR5cGU6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHByb29mT2ZBbnl0aGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGNvbnRleHQ6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBzaG93U2VwYXJhdGVBdHRhY2hCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBub09mRmlsZXNUb1VwbG9hZDogbnVtYmVyID0gdGhpcy5ERUZBVUxUX1NJTkdMRV9GSUxFX0xJTUlUO1xuXG4gIEBJbnB1dCgpXG4gIG1heFNpemVJbk1COiBudW1iZXIgPSB0aGlzLkRFRkFVTFRfRklMRV9TSVpFX0lOX01CO1xuXG4gIFxuICBwdWJsaWMgdXBsb2FkRmlsZUZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gIGltYWdlSHRtbDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLCBwcml2YXRlIHV0aWw6IFV0aWxTZXJ2aWNlLCBwcml2YXRlIGZzOiBEbXNTZXJ2aWNlLCBcbiAgICBwdWJsaWMgdG9hc3RDb250cm9sbGVyOiBUb2FzdENvbnRyb2xsZXIsIHByaXZhdGUgY3M6IENhcHRjaGFTZXJ2aWNlKSB7XG4gICAgdGhpcy51cGxvYWRGaWxlRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgJ3VwbG9hZEZpbGVDdHJsJzogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgfSk7XG4gIH1cblxuICBnZXQgdXBsb2FkRmlsZUN0cmwoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBsb2FkRmlsZUZvcm0uY29udHJvbHNbJ3VwbG9hZEZpbGVDdHJsJ107XG4gIH1cblxuXG4gIG5nT25Jbml0KCkge1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogRnVuY3Rpb24gPSAodmFsdWU6IFN0cmluZykgPT4ge1xuXG4gIH07XG4gIHByaXZhdGUgb25Ub3VjaDogRnVuY3Rpb24gPSAoKSA9PiB7XG5cbiAgfTtcbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICB9XG5cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG5cbiAgfVxuXG4gIGFkZFRvUXVldWUoZXZlbnQpIHtcbiAgICBsZXQgY3VyckZpbGVVcGxkU2l6ZTogbnVtYmVyID0gMDtcbiAgICBsZXQgcHJlRmlsZVVwbGRTaXplOiBudW1iZXIgPSAwO1xuICAgIGxldCBtYXhTaXplUmVhY2hlZDogQm9vbGVhbiA9IGZhbHNlO1xuICAgIGxldCBjdXJVcGxkRmlsZUxlbjogbnVtYmVyID0gZXZlbnQudGFyZ2V0LmZpbGVzLmxlbmd0aDtcbiAgICBsZXQgcHJlVXBsZEZpbGVMZW46IG51bWJlciA9IHRoaXMucXVldWUubGVuZ3RoO1xuXG4gICAgaWYgKChjdXJVcGxkRmlsZUxlbiArIHByZVVwbGRGaWxlTGVuKSA+IHRoaXMubm9PZkZpbGVzVG9VcGxvYWQpIHtcbiAgICAgIHRoaXMuZXJyb3IoXCJZb3UgY2FuIG5vdCB1cGxvYWQgbW9yZSB0aGFuIFwiICsgdGhpcy5ub09mRmlsZXNUb1VwbG9hZCArIFwiIGZpbGUocykuXCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5xdWV1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgcHJlRmlsZVVwbGRTaXplID0gdGhpcy5nZXRTaXplSW5NQih0aGlzLnF1ZXVlW2ldLnNpemUpICsgcHJlRmlsZVVwbGRTaXplO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXZlbnQudGFyZ2V0LmZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjdXJyRmlsZVVwbGRTaXplID0gY3VyckZpbGVVcGxkU2l6ZSArIHRoaXMuZ2V0U2l6ZUluTUIoZXZlbnQudGFyZ2V0LmZpbGVzW2ldLnNpemUpXG4gICAgfVxuXG4gICAgbWF4U2l6ZVJlYWNoZWQgPSAocHJlRmlsZVVwbGRTaXplICsgY3VyckZpbGVVcGxkU2l6ZSA+IHRoaXMubWF4U2l6ZUluTUIpO1xuXG4gICAgaWYgKG1heFNpemVSZWFjaGVkKSB7XG4gICAgICB0aGlzLmVycm9yKCdDb21iaW5lZCBmaWxlKHMpIHNpemUgY2FuIG5vdCBiZSBtb3JlIHRoYW4gJyArIHRoaXMubWF4U2l6ZUluTUIgKyAnIE1CLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd1Byb2dyZXNzID0gdHJ1ZTtcbiAgICB0aGlzLmNzLmdlbmVyYXRlQ2FwdGNoYVRva2VuKHRoaXMuRklMRV9VUExPQURfQUNUSU9OX05BTUUpXG4gICAgICAuc3Vic2NyaWJlKCh0b2tlbjogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuY3Muc2V0SW52aXNpYmVsQ2FwdGNoYSh0b2tlbik7XG4gICAgICAgIGlmICghbWF4U2l6ZVJlYWNoZWQpIHtcbiAgICAgICAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV2ZW50LnRhcmdldC5maWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKFwiZmlsZXNcIiwgZXZlbnQudGFyZ2V0LmZpbGVzW2ldLCBldmVudC50YXJnZXQuZmlsZXNbaV0ubmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBmaWxlcyA9IFsuLi5ldmVudC50YXJnZXQuZmlsZXNdO1xuICAgICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnO1xuICAgICAgICAgIHRoaXMuZnNcbiAgICAgICAgICAgIC51cGxvYWRGaWxlKGZvcm1EYXRhKVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnF1ZXVlLnB1c2goZmlsZXNbaV0pO1xuICAgICAgICAgICAgICAgICAgdGhpcy5tYXBPZkZpbGVzLnNldChmaWxlc1tpXSwgcmVzW2ldLmZpbGVJZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UoQXJyYXkuZnJvbSh0aGlzLm1hcE9mRmlsZXMudmFsdWVzKCkpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3MoJ0ZpbGUocykgdXBsb2FkZWQgc3VjY2Vzc2Z1bGx5LicpO1xuXHRcdCAgICAgICAgICAgICAgICAvL1NwZWNpZmljYWxseSBmb3IgU2lnbmF0dXJlLVVwbG9hZCAoV2lsbCBiZSBtb3ZlIHRvIGEgbmV3IG1ldGhvZClcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gKHRoaXMubWFwT2ZGaWxlcy5lbnRyaWVzKCkubmV4dCgpLnZhbHVlKVswXTtcbiAgICAgICAgICAgICAgICBpZiAoZmlsZSAmJiAoZmlsZS50eXBlID09PSAnaW1hZ2UvcG5nJyB8fCBmaWxlLnR5cGUgPT09ICdpbWFnZS9qcGVnJyBcbiAgICAgICAgICAgICAgICAgIHx8IGZpbGUudHlwZSA9PT0gJ2ltYWdlL2dpZicpKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbWFnZUJhc2U2NCA9IGUudGFyZ2V0LnJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbWFnZUh0bWwgPSBgPGltZyBzcmM9XCIke3RoaXMuaW1hZ2VCYXNlNjR9XCIgYWx0PVwiVXBsb2FkZWQgSW1hZ2VcIiB3aWR0aD1cIjEyNVwiIGhlaWdodD1cIjc1XCI+YDtcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICB0aGlzLnNob3dQcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkLmVtaXQoQXJyYXkuZnJvbSh0aGlzLm1hcE9mRmlsZXMudmFsdWVzKCkpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVzLmVtaXQodGhpcy5tYXBPZkZpbGVzKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dQcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IoXCJGaWxlIHVwbG9hZCBmYWlsZWQuIFBsZWFzZSB0cnkgYWdhaW4uXCIpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LCBlcnIgPT4ge1xuICAgICAgICB0aGlzLnNob3dQcm9ncmVzcyA9IHRydWU7XG4gICAgICAgIHRoaXMuZXJyb3IoXCJGaWxlIHVwbG9hZCBmYWlsZWQuIFBsZWFzZSB0cnkgYWdhaW4uXCIpO1xuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgfSk7XG4gIH1cblxuICByZW1vdmVGcm9tUXVldWUoZmlsZVRvUmVtb3ZlKSB7XG4gICAgbGV0IGluZGV4O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5xdWV1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMucXVldWVbaV0ubmFtZSA9PT0gZmlsZVRvUmVtb3ZlLm5hbWUpIHtcbiAgICAgICAgaW5kZXggPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNob3dQcm9ncmVzcyA9IHRydWU7XG4gICAgbGV0IGZpbGVJZCA9IHRoaXMubWFwT2ZGaWxlcy5nZXQoZmlsZVRvUmVtb3ZlKTtcbiAgICB0aGlzLmNzLmdlbmVyYXRlQ2FwdGNoYVRva2VuKHRoaXMuRklMRV9VUExPQURfQUNUSU9OX05BTUUpXG4gICAgICAuc3Vic2NyaWJlKCh0b2tlbjogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuY3Muc2V0SW52aXNpYmVsQ2FwdGNoYSh0b2tlbik7XG4gICAgICAgIHRoaXMuZnMuZGVsZXRlRmlsZShmaWxlSWQpXG4gICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5xdWV1ZS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgdGhpcy5tYXBPZkZpbGVzLmRlbGV0ZShmaWxlVG9SZW1vdmUpO1xuICAgICAgICAgICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UoQXJyYXkuZnJvbSh0aGlzLm1hcE9mRmlsZXMudmFsdWVzKCkpKTtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkLmVtaXQoQXJyYXkuZnJvbSh0aGlzLm1hcE9mRmlsZXMudmFsdWVzKCkpKVxuICAgICAgICAgICAgdGhpcy5maWxlcy5lbWl0KHRoaXMubWFwT2ZGaWxlcyk7XG4gICAgICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd1Byb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmVycm9yKFwiRXJyb3Igd2hpbGUgZGVsZXRpbmcgZmlsZS4gUGxlYXNlIHRyeSBhZ2Fpbi5cIik7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICAgIH0pXG4gICAgICB9LCBlcnIgPT4ge1xuICAgICAgICB0aGlzLnNob3dQcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmVycm9yKFwiRXJyb3Igd2hpbGUgZGVsZXRpbmcgZmlsZS4gUGxlYXNlIHRyeSBhZ2Fpbi5cIik7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICB9KTtcblxuICB9XG5cbiAgZ2V0U2l6ZUluTUIobnVtOiBudW1iZXIpIHtcbiAgICByZXR1cm4gbnVtIC8gMTAyNCAvIDEwMjRcbiAgfVxuXG4gIGFzeW5jIHByZXNlbnRUb2FzdChtc2csIGNvbG9yKSB7XG4gICAgY29uc3QgdG9hc3QgPSBhd2FpdCB0aGlzLnRvYXN0Q29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgbWVzc2FnZTogbXNnLFxuICAgICAgZHVyYXRpb246IDUwMDAsXG4gICAgICBjb2xvcjogY29sb3IsXG4gICAgICBwb3NpdGlvbjogJ2JvdHRvbSdcbiAgICB9KTtcbiAgICB0b2FzdC5wcmVzZW50KCk7XG4gIH1cblxuICBzdWNjZXNzKG1zZykge1xuICAgIHRoaXMucHJlc2VudFRvYXN0KG1zZywgJ3ByaW1hcnknKTtcbiAgfVxuXG4gIGVycm9yKG1zZykge1xuICAgIHRoaXMucHJlc2VudFRvYXN0KG1zZywgJ2RhbmdlcicpO1xuICB9XG5cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwidXBsb2FkRmlsZUZvcm1cIiAjdXBsb2FkRmlsZUZvcm1EaXJlY3RpdmU9XCJuZ0Zvcm1cIj5cclxuICA8c2VjdGlvbiAqbmdJZj1cInRoaXMuY29udGV4dCAhPSAnc2lnbmF0dXJlJyAmJiB0aGlzLmNvbnRleHQgIT0ndXBsb2FkWmlwQ29kZXMnXCI+XHJcbiAgPHAtdGFibGUgW3ZhbHVlXT1cInF1ZXVlXCIgcmVzcG9uc2l2ZUxheW91dD1cInNjcm9sbFwiIFtsb2FkaW5nXT1cInNob3dQcm9ncmVzc1wiPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRoPk5hbWU8L3RoPlxyXG4gICAgICAgIDx0aD5TaXplPC90aD5cclxuICAgICAgICA8dGggc3R5bGU9XCJ0ZXh0LWFsaWduOnJpZ2h0XCIgKm5nSWY9XCJwcm9vZk9mQW55dGhpbmdcIj5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIG92ZXJsYXlUZXh0PVwie3sncHJvb2Yub2YuYW55dGhpbmcuaW5mbyd8IHRyYW5zbGF0ZX19XCJcclxuICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogMnB4OyBtYXJnaW4tbGVmdDogNnB4O1wiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICA8L3RoPlxyXG4gICAgICAgIDx0aCBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1pbnB1dC1jb250YWluZXJcIiAqbmdJZj1cIm11bHRpcGxlICYmICFwcm9vZk9mQW55dGhpbmdcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgI2ZpbGVJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ1cGxvYWRGaWxlQ3RybFwiIFthY2NlcHRdPVwiYWxsb3dlZEZpbGVUeXBlXCJcclxuICAgICAgICAgICAgICBtdWx0aXBsZT1cIm11bHRpcGxlXCIgKGNoYW5nZSk9XCJhZGRUb1F1ZXVlKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgc2l6ZT1cInNtYWxsXCIgdHlwZT1cInN1Ym1pdFwiIGZpbGw9XCJvdXRsaW5lXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+XHJcbiAgICAgICAgICAgICAgQ2hvb3NlIEZpbGVzXHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWlucHV0LWNvbnRhaW5lclwiICpuZ0lmPVwiIW11bHRpcGxlICYmICFwcm9vZk9mQW55dGhpbmdcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgI2ZpbGVJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ1cGxvYWRGaWxlQ3RybFwiIFthY2NlcHRdPVwiYWxsb3dlZEZpbGVUeXBlXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cImFkZFRvUXVldWUoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiBzaXplPVwic21hbGxcIiB0eXBlPVwic3VibWl0XCIgZmlsbD1cIm91dGxpbmVcIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5cclxuICAgICAgICAgICAgICBDaG9vc2UgRmlsZVxyXG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RoPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LXF1ZXVlPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRkPnt7IHF1ZXVlPy5uYW1lIH19PC90ZD5cclxuICAgICAgICA8dGQ+e3sgcXVldWU/LnNpemUvMTAyNC8xMDI0IHwgbnVtYmVyOicuMicgfX0gTUI8L3RkPlxyXG4gICAgICAgIDx0ZCBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCI+XHJcbiAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgc2l6ZT1cInNtYWxsXCIgcFRvb2x0aXA9XCJSZW1vdmVcIiAoY2xpY2spPVwicmVtb3ZlRnJvbVF1ZXVlKHF1ZXVlKVwiXHJcbiAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIGNsYXNzPVwiaW9uLXBhZGRpbmctbGVmdFwiPlxyXG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRyYXNoLW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiPlxyXG4gICAgICA8dHIgKm5nSWY9XCIhcHJvb2ZPZkFueXRoaW5nXCI+XHJcbiAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwiM1wiPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiYWxsb3dlZEZpbGVUeXBlXCI+WW91IGFyZSBhbGxvd2VkIHRvIHVwbG9hZCBmaWxlKHMpIHdpdGggZm9sbG93aW5nIGV4dGVudGlvbnM6IHt7YWxsb3dlZEZpbGVUeXBlfX0uPC9saT5cclxuICAgICAgICAgICAgICA8bGk+VG90YWwgZmlsZShzKSBzaXplIGNhbm5vdCBleGNlZWQgPGI+e3ttYXhTaXplSW5NQn19PC9iPiBNQi48L2xpPlxyXG4gICAgICAgICAgICAgIDxsaT5Zb3UgY2FuIHVwbG9hZCBtYXhpbXVtIDxiPnt7bm9PZkZpbGVzVG9VcGxvYWR9fTwvYj4gZmlsZShzKS48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZvb3RlclwiPiBcclxuICAgICAgPHRyICpuZ0lmPVwicHJvb2ZPZkFueXRoaW5nXCI+XHJcbiAgICAgICAgPHRkICpuZ0lmPVwicXVldWUubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgIDxkaXY+PGI+KyBBZGQ8L2I+IGZpbGVzPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICA8dGQgKm5nSWY9XCJxdWV1ZS5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICA8ZGl2PjxiPisgQWRkPC9iPiBhbnkgb3RoZXIgZmlsZXM8L2Rpdj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICAgIDx0ZD48L3RkPlxyXG4gICAgICAgIDx0ZCBjbGFzcz1cImZpbGUtaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiICNmaWxlSW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwidXBsb2FkRmlsZUN0cmxcIiBbYWNjZXB0XT1cImFsbG93ZWRGaWxlVHlwZVwiXHJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJhZGRUb1F1ZXVlKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiQWRkIEZpbGVzXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCIgZmlsbD1cIm91dGxpbmVcIiBzaXplPVwic21hbGxcIiBjbGFzcz1cImFjdGlvbi1idXR0b25cIj5cclxuICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJbJ2ZhbCcsICdwbHVzJ11cIiBjbGFzcz1cImFjdGlvbi1pY29uXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9wLXRhYmxlPlxyXG48L3NlY3Rpb24+XHJcbjxzZWN0aW9uICpuZ0lmPVwidGhpcy5jb250ZXh0ID09ICdzaWduYXR1cmUnXCI+XHJcbiAgPGlvbi1yb3c+XHJcbiAgICA8aW9uLWNvbD5cclxuICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImltYWdlSHRtbFwiIHN0eWxlPVwid2lkdGg6IDM4NXB4OyBoZWlnaHQ6IDEwMHB4OyBib3JkZXI6IDFweCBzb2xpZCBncmF5OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIj48L2Rpdj5cclxuICAgIDwvaW9uLWNvbD5cclxuICAgIDxpb24tY29sPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1pbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiAjZmlsZUlucHV0IGZvcm1Db250cm9sTmFtZT1cInVwbG9hZEZpbGVDdHJsXCIgW2FjY2VwdF09XCJhbGxvd2VkRmlsZVR5cGVcIlxyXG4gICAgICAgICAgKGNoYW5nZSk9XCJhZGRUb1F1ZXVlKCRldmVudClcIiAvPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwic3F1YXJlXCIgc2l6ZT1cInNtYWxsXCIgdHlwZT1cInN1Ym1pdFwiIGZpbGw9XCJvdXRsaW5lXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+XHJcbiAgICAgICAgICBJbXBvcnRcclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9pb24tY29sPlxyXG4gIDwvaW9uLXJvdz5cclxuPC9zZWN0aW9uPlxyXG48c2VjdGlvbiAqbmdJZj1cInRoaXMuY29udGV4dCA9PSAndXBsb2FkWmlwQ29kZXMnXCI+XHJcbiAgPGRpdiBjbGFzcz1cInVwbG9hZC1pbnB1dC1jb250YWluZXJcIj5cclxuICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiICNmaWxlSW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwidXBsb2FkRmlsZUN0cmxcIiBbYWNjZXB0XT1cImFsbG93ZWRGaWxlVHlwZVwiXHJcbiAgICAgIChjaGFuZ2UpPVwiYWRkVG9RdWV1ZSgkZXZlbnQpXCIgLz5cclxuICAgIDxpb24tYnV0dG9uIHNoYXBlPVwic3F1YXJlXCIgc2l6ZT1cImRlZmF1bHRcIiB0eXBlPVwic3VibWl0XCIgZmlsbD1cIm91dGxpbmVcIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5cclxuICAgICAgVXBsb2FkIFppcCBDb2Rlc1xyXG4gICAgPC9pb24tYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcbjwvZm9ybT4iXX0=
|
|
522
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS11cGxvYWRlci9maWxlLXVwbG9hZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9maWxlLXVwbG9hZGVyL2ZpbGUtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQTRCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSSxPQUFPLEVBQXNFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNNM0gsOEJBQXFEO0lBQ25ELHVDQUM4RDs7SUFDaEUsaUJBQUs7O0lBRmUsZUFBcUQ7SUFBckQsdUZBQXFEOzs7O0lBSXZFLCtCQUF1RSxvQkFBQTtJQUUvQyxvTUFBVSxlQUFBLDBCQUFrQixDQUFBLElBQUM7SUFEbkQsaUJBQ3NEO0lBQ3RELHNDQUFnRztJQUE1Qiw0TEFBUyxlQUFBLFlBQWlCLENBQUEsSUFBQztJQUM3Riw4QkFDRjtJQUFBLGlCQUFhLEVBQUE7OztJQUprRCxlQUEwQjtJQUExQiwrQ0FBMEI7Ozs7SUFPM0YsK0JBQXdFLG9CQUFBO0lBRXBFLG9NQUFVLGVBQUEsMEJBQWtCLENBQUEsSUFBQztJQUQvQixpQkFDa0M7SUFDbEMsc0NBQWdHO0lBQTVCLDRMQUFTLGVBQUEsWUFBaUIsQ0FBQSxJQUFDO0lBQzdGLDZCQUNGO0lBQUEsaUJBQWEsRUFBQTs7O0lBSmtELGVBQTBCO0lBQTFCLGdEQUEwQjs7O0lBakIvRiwwQkFBSSxT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QUQ3QixTQUFTO21CQUFDLHlCQUF5QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUl2RCxNQUFNO2tCQURMLE1BQU07WUFJUCxLQUFLO2tCQURKLE1BQU07WUFJUCxXQUFXO2tCQURWLE1BQU07WUFHb0IsU0FBUztrQkFBbkMsWUFBWTttQkFBQyxXQUFXO1lBT3pCLGVBQWU7a0JBRGQsS0FBSztZQUlOLFFBQVE7a0JBRFAsS0FBSztZQUlOLFFBQVE7a0JBRFAsS0FBSztZQUlOLGVBQWU7a0JBRGQsS0FBSztZQUlOLE9BQU87a0JBRE4sS0FBSztZQUlOLHdCQUF3QjtrQkFEdkIsS0FBSztZQUlOLGlCQUFpQjtrQkFEaEIsS0FBSztZQUlOLFdBQVc7a0JBRFYsS0FBSztZQUlOLFdBQVc7a0JBRFYsS0FBSztZQUlOLE1BQU07a0JBREwsS0FBSzs7a0ZBekRLLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkcmVuLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIE5nRm9ybSwgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUb2FzdENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwvdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IENhcHRjaGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FwdGNoYS9jYXB0Y2hhLnNlcnZpY2UnO1xuaW1wb3J0IHsgRG1zU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Rtcy1zZXJ2aWNlL2Rtcy5zZXJ2aWNlJztcbmltcG9ydCB7IEF1ZGl0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1ZGl0L2F1ZGl0LnNlcnZpY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1maWxlLXVwbG9hZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLXVwbG9hZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW3tcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogRmlsZVVwbG9hZGVyQ29tcG9uZW50LFxuICAgIG11bHRpOiB0cnVlXG4gIH1dXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcyB7XG5cbiAgaW1hZ2VCYXNlNjQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgREVGQVVMVF9TSU5HTEVfRklMRV9MSU1JVCA9IDE7XG5cbiAgcHJpdmF0ZSBERUZBVUxUX0ZJTEVfU0laRV9JTl9NQiA9IDE7XG5cbiAgcHJpdmF0ZSBGSUxFX1VQTE9BRF9BQ1RJT05fTkFNRSA9ICdmaWxlX3VwbG9hZCc7XG5cbiAgcHVibGljIHNob3dQcm9ncmVzcyA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ3VwbG9hZEZpbGVGb3JtRGlyZWN0aXZlJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHB1YmxpYyB1cGxvYWRGaWxlRm9ybURpcmVjdGl2ZTogTmdGb3JtO1xuXG4gIEBPdXRwdXQoKVxuICB1cGxvYWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBmaWxlczogRXZlbnRFbWl0dGVyPE1hcDxGaWxlLCBzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgdXBsb2FkQXVkaXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGRyZW4oJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dDtcblxuICBxdWV1ZTogRmlsZVtdID0gW107XG5cbiAgbWFwT2ZGaWxlczogTWFwPEZpbGUsIHN0cmluZz4gPSBuZXcgTWFwKCk7XG5cbiAgQElucHV0KClcbiAgYWxsb3dlZEZpbGVUeXBlOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgbWltZVR5cGU6c3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHJvb2ZPZkFueXRoaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgY29udGV4dDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dTZXBhcmF0ZUF0dGFjaEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIG5vT2ZGaWxlc1RvVXBsb2FkOiBudW1iZXIgPSB0aGlzLkRFRkFVTFRfU0lOR0xFX0ZJTEVfTElNSVQ7XG5cbiAgQElucHV0KClcbiAgbWF4U2l6ZUluTUI6IG51bWJlciA9IHRoaXMuREVGQVVMVF9GSUxFX1NJWkVfSU5fTUI7XG5cbiAgQElucHV0KClcbiAgdXBsb2FkVG9ETVM6Ym9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgY29ycklkO1xuICBcbiAgcHVibGljIHVwbG9hZEZpbGVGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBpbWFnZUh0bWw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlciwgcHJpdmF0ZSB1dGlsOiBVdGlsU2VydmljZSwgcHJpdmF0ZSBmczogRG1zU2VydmljZSwgXG4gICAgcHVibGljIHRvYXN0Q29udHJvbGxlcjogVG9hc3RDb250cm9sbGVyLCBwcml2YXRlIGNzOiBDYXB0Y2hhU2VydmljZSwgcHJpdmF0ZSBhczogQXVkaXRTZXJ2aWNlKSB7XG4gICAgdGhpcy51cGxvYWRGaWxlRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgJ3VwbG9hZEZpbGVDdHJsJzogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgfSk7XG4gIH1cblxuICBnZXQgdXBsb2FkRmlsZUN0cmwoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBsb2FkRmlsZUZvcm0uY29udHJvbHNbJ3VwbG9hZEZpbGVDdHJsJ107XG4gIH1cblxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmKHRoaXMuY29ycklkKXtcblxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25DaGFuZ2U6IEZ1bmN0aW9uID0gKHZhbHVlOiBTdHJpbmcpID0+IHtcblxuICB9O1xuICBwcml2YXRlIG9uVG91Y2g6IEZ1bmN0aW9uID0gKCkgPT4ge1xuXG4gIH07XG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydjb3JySWQnXSkge1xuICAgICAgaWYodGhpcy5jb3JySWQgJiYgdGhpcy5jb250ZXh0PT09J3NpZ25hdHVyZScpe1xuICAgICAgICB0aGlzLmZzLmdldFRheEF1ZGl0RmlsZSh0aGlzLmNvcnJJZCkuc3Vic2NyaWJlKChyZXMpPT57XG4gICAgICAgICAgdGhpcy5pbWFnZUJhc2U2NCA9IHJlcy5kYXRhO1xuICAgICAgICAgIHRoaXMuaW1hZ2VIdG1sID0gYDxpbWcgc3JjPVwiJHt0aGlzLmltYWdlQmFzZTY0fVwiIGFsdD1cIlVwbG9hZGVkIEltYWdlXCIgd2lkdGg9XCIzODVweFwiIGhlaWdodD1cIjk4cHhcIj5gO1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBmaWxlVG9CYXNlNjQoZmlsZTogRmlsZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcblxuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcpO1xuICAgICAgcmVhZGVyLm9uZXJyb3IgPSBlcnJvciA9PiByZWplY3QoZXJyb3IpO1xuICAgIH0pO1xuICB9XG4gIGFzeW5jIHVwbG9hZFRvVGF4QXVkaXQgKGV2ZW50KXtcbiAgICBjb25zdCBmaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xuICAgIGNvbnN0IGJhc2U2NCA9IGF3YWl0IHRoaXMuZmlsZVRvQmFzZTY0KGZpbGUpO1xuICAgIGxldCBjb3JJZDsgXG4gICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSB0cnVlO1xuICAgIFxuICAgIHRoaXMuYXMuZ2V0Q29ycklkKCkuc3Vic2NyaWJlKChyZXMpPT57XG4gICAgICBjb3JJZCA9IHJlcztcbiAgICAgIGxldCByZXEgPSB7XG4gICAgICAgICAgIFwiZWFuXCI6IFwiMTIzNDU2NzhcIixcbiAgICAgICAgICAgIFwieWVhclwiOiBcIjIwMjZcIixcbiAgICAgICAgICAgICBcImNvcnJlc3BvZGVuY2VMaXN0XCI6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiYmFzZTY0RmlsZURhdGFcIjpiYXNlNjQsXG4gICAgICAgICAgICAgICAgXCJjb3JySWRcIjogcmVzLFxuICAgICAgICAgICAgICAgIFwiZGlyZWN0aW9uXCI6IFwiSU5CT1VORFwiLFxuICAgICAgICAgICAgICAgIFwiZG9jQ29kZVwiOiBgc2lnbmF0dXJlXyR7Y29ySWR9YCxcbiAgICAgICAgICAgICAgICBcIm1pbWVUeXBlXCI6IHRoaXMubWltZVR5cGUsXG4gICAgICAgICAgICAgICAgXCJ0aXRsZVwiOiBcInNpZ25hdHVyZVwiLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgXVxuICAgICAgfVxuICAgICAgdGhpcy5jcy5nZW5lcmF0ZUNhcHRjaGFUb2tlbignZmlsZV91cGxvYWQnKS5zdWJzY3JpYmUoKHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3Muc2V0SW52aXNpYmVsQ2FwdGNoYSh0b2tlbik7XG4gICAgICAgICAgICB0aGlzLmZzLnVwbG9hZFRheEF1ZGl0RmlsZShyZXEpLnN1YnNjcmliZShyZXM9PntcbiAgICAgICAgICAgICAgdGhpcy51cGxvYWRBdWRpdC5lbWl0KGNvcklkKVxuICAgICAgICAgICAgICBpZih0aGlzLmNvbnRleHQ9PT0nc2lnbmF0dXJlJyl7XG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZUJhc2U2NCA9IGJhc2U2NDtcbiAgICAgICAgICAgICAgICB0aGlzLmltYWdlSHRtbCA9IGA8aW1nIHNyYz1cIiR7dGhpcy5pbWFnZUJhc2U2NH1cIiBhbHQ9XCJVcGxvYWRlZCBJbWFnZVwiIHdpZHRoPVwiMzg1cHhcIiBoZWlnaHQ9XCI5OHB4XCI+YDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInJlc1wiLHJlcylcbiAgICAgICAgICAgIH0sZXJyPT57XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIixlcnIpO1xuICAgICAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgfSlcbiAgICAgICB9LChlcnIpPT57XG4gICAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XG4gICAgICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgYWRkVG9RdWV1ZShldmVudCkge1xuICAgIGxldCBjdXJyRmlsZVVwbGRTaXplOiBudW1iZXIgPSAwO1xuICAgIGxldCBwcmVGaWxlVXBsZFNpemU6IG51bWJlciA9IDA7XG4gICAgbGV0IG1heFNpemVSZWFjaGVkOiBCb29sZWFuID0gZmFsc2U7XG4gICAgbGV0IGN1clVwbGRGaWxlTGVuOiBudW1iZXIgPSBldmVudC50YXJnZXQuZmlsZXMubGVuZ3RoO1xuICAgIGxldCBwcmVVcGxkRmlsZUxlbjogbnVtYmVyID0gdGhpcy5xdWV1ZS5sZW5ndGg7XG5cbiAgICBpZiAoKGN1clVwbGRGaWxlTGVuICsgcHJlVXBsZEZpbGVMZW4pID4gdGhpcy5ub09mRmlsZXNUb1VwbG9hZCkge1xuICAgICAgdGhpcy5lcnJvcihcIllvdSBjYW4gbm90IHVwbG9hZCBtb3JlIHRoYW4gXCIgKyB0aGlzLm5vT2ZGaWxlc1RvVXBsb2FkICsgXCIgZmlsZShzKS5cIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnF1ZXVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBwcmVGaWxlVXBsZFNpemUgPSB0aGlzLmdldFNpemVJbk1CKHRoaXMucXVldWVbaV0uc2l6ZSkgKyBwcmVGaWxlVXBsZFNpemU7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudC50YXJnZXQuZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGN1cnJGaWxlVXBsZFNpemUgPSBjdXJyRmlsZVVwbGRTaXplICsgdGhpcy5nZXRTaXplSW5NQihldmVudC50YXJnZXQuZmlsZXNbaV0uc2l6ZSlcbiAgICB9XG5cbiAgICBtYXhTaXplUmVhY2hlZCA9IChwcmVGaWxlVXBsZFNpemUgKyBjdXJyRmlsZVVwbGRTaXplID4gdGhpcy5tYXhTaXplSW5NQik7XG5cbiAgICBpZiAobWF4U2l6ZVJlYWNoZWQpIHtcbiAgICAgIHRoaXMuZXJyb3IoJ0NvbWJpbmVkIGZpbGUocykgc2l6ZSBjYW4gbm90IGJlIG1vcmUgdGhhbiAnICsgdGhpcy5tYXhTaXplSW5NQiArICcgTUIuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSB0cnVlO1xuICAgIFxuICAgIHRoaXMuY3MuZ2VuZXJhdGVDYXB0Y2hhVG9rZW4odGhpcy5GSUxFX1VQTE9BRF9BQ1RJT05fTkFNRSlcbiAgICAgIC5zdWJzY3JpYmUoKHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5jcy5zZXRJbnZpc2liZWxDYXB0Y2hhKHRva2VuKTtcbiAgICAgICAgaWYgKCFtYXhTaXplUmVhY2hlZCkge1xuICAgICAgICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXZlbnQudGFyZ2V0LmZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoXCJmaWxlc1wiLCBldmVudC50YXJnZXQuZmlsZXNbaV0sIGV2ZW50LnRhcmdldC5maWxlc1tpXS5uYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IGZpbGVzID0gWy4uLmV2ZW50LnRhcmdldC5maWxlc107XG4gICAgICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gJyc7XG4gICAgICAgICAgaWYoIXRoaXMudXBsb2FkVG9ETVMpe1xuICAgICAgICAgICAgLy8gbGV0IGZpbGVzID0gWy4uLmV2ZW50LnRhcmdldC5maWxlc107XG4gICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnF1ZXVlLnB1c2goZmlsZXNbaV0pO1xuICAgICAgICAgICAgICAgIHRoaXMubWFwT2ZGaWxlcy5zZXQoZmlsZXNbaV0sIG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmZpbGVzLmVtaXQodGhpcy5tYXBPZkZpbGVzKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmZzXG4gICAgICAgICAgICAudXBsb2FkRmlsZShmb3JtRGF0YSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgdGhpcy5xdWV1ZS5wdXNoKGZpbGVzW2ldKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMubWFwT2ZGaWxlcy5zZXQoZmlsZXNbaV0sIHJlc1tpXS5maWxlSWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKEFycmF5LmZyb20odGhpcy5tYXBPZkZpbGVzLnZhbHVlcygpKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzKCdGaWxlKHMpIHVwbG9hZGVkIHN1Y2Nlc3NmdWxseS4nKTtcblx0XHQgICAgICAgICAgICAgICAgLy9TcGVjaWZpY2FsbHkgZm9yIFNpZ25hdHVyZS1VcGxvYWQgKFdpbGwgYmUgbW92ZSB0byBhIG5ldyBtZXRob2QpXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9ICh0aGlzLm1hcE9mRmlsZXMuZW50cmllcygpLm5leHQoKS52YWx1ZSlbMF07XG4gICAgICAgICAgICAgICAgaWYgKGZpbGUgJiYgKGZpbGUudHlwZSA9PT0gJ2ltYWdlL3BuZycgfHwgZmlsZS50eXBlID09PSAnaW1hZ2UvanBlZycgXG4gICAgICAgICAgICAgICAgICB8fCBmaWxlLnR5cGUgPT09ICdpbWFnZS9naWYnKSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VCYXNlNjQgPSBlLnRhcmdldC5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VIdG1sID0gYDxpbWcgc3JjPVwiJHt0aGlzLmltYWdlQmFzZTY0fVwiIGFsdD1cIlVwbG9hZGVkIEltYWdlXCIgd2lkdGg9XCIxMjVcIiBoZWlnaHQ9XCI3NVwiPmA7XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZC5lbWl0KEFycmF5LmZyb20odGhpcy5tYXBPZkZpbGVzLnZhbHVlcygpKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlcy5lbWl0KHRoaXMubWFwT2ZGaWxlcyk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yKFwiRmlsZSB1cGxvYWQgZmFpbGVkLiBQbGVhc2UgdHJ5IGFnYWluLlwiKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgICB0aGlzLmVycm9yKFwiRmlsZSB1cGxvYWQgZmFpbGVkLiBQbGVhc2UgdHJ5IGFnYWluLlwiKTtcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlRnJvbVF1ZXVlKGZpbGVUb1JlbW92ZSkge1xuICAgIGxldCBpbmRleDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMucXVldWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLnF1ZXVlW2ldLm5hbWUgPT09IGZpbGVUb1JlbW92ZS5uYW1lKSB7XG4gICAgICAgIGluZGV4ID0gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSB0cnVlO1xuICAgIGxldCBmaWxlSWQgPSB0aGlzLm1hcE9mRmlsZXMuZ2V0KGZpbGVUb1JlbW92ZSk7XG4gICAgdGhpcy5jcy5nZW5lcmF0ZUNhcHRjaGFUb2tlbih0aGlzLkZJTEVfVVBMT0FEX0FDVElPTl9OQU1FKVxuICAgICAgLnN1YnNjcmliZSgodG9rZW46IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmNzLnNldEludmlzaWJlbENhcHRjaGEodG9rZW4pO1xuICAgICAgICB0aGlzLmZzLmRlbGV0ZUZpbGUoZmlsZUlkKVxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMucXVldWUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIHRoaXMubWFwT2ZGaWxlcy5kZWxldGUoZmlsZVRvUmVtb3ZlKTtcbiAgICAgICAgICAgIHRoaXMuc2hvd1Byb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKEFycmF5LmZyb20odGhpcy5tYXBPZkZpbGVzLnZhbHVlcygpKSk7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZC5lbWl0KEFycmF5LmZyb20odGhpcy5tYXBPZkZpbGVzLnZhbHVlcygpKSlcbiAgICAgICAgICAgIHRoaXMuZmlsZXMuZW1pdCh0aGlzLm1hcE9mRmlsZXMpO1xuICAgICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLnNob3dQcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5lcnJvcihcIkVycm9yIHdoaWxlIGRlbGV0aW5nIGZpbGUuIFBsZWFzZSB0cnkgYWdhaW4uXCIpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgICB9KVxuICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5lcnJvcihcIkVycm9yIHdoaWxlIGRlbGV0aW5nIGZpbGUuIFBsZWFzZSB0cnkgYWdhaW4uXCIpO1xuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgfSk7XG5cbiAgfVxuXG4gIGdldFNpemVJbk1CKG51bTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG51bSAvIDEwMjQgLyAxMDI0XG4gIH1cblxuICBhc3luYyBwcmVzZW50VG9hc3QobXNnLCBjb2xvcikge1xuICAgIGNvbnN0IHRvYXN0ID0gYXdhaXQgdGhpcy50b2FzdENvbnRyb2xsZXIuY3JlYXRlKHtcbiAgICAgIG1lc3NhZ2U6IG1zZyxcbiAgICAgIGR1cmF0aW9uOiA1MDAwLFxuICAgICAgY29sb3I6IGNvbG9yLFxuICAgICAgcG9zaXRpb246ICdib3R0b20nXG4gICAgfSk7XG4gICAgdG9hc3QucHJlc2VudCgpO1xuICB9XG5cbiAgc3VjY2Vzcyhtc2cpIHtcbiAgICB0aGlzLnByZXNlbnRUb2FzdChtc2csICdwcmltYXJ5Jyk7XG4gIH1cblxuICBlcnJvcihtc2cpIHtcbiAgICB0aGlzLnByZXNlbnRUb2FzdChtc2csICdkYW5nZXInKTtcbiAgfVxuXG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cInVwbG9hZEZpbGVGb3JtXCIgI3VwbG9hZEZpbGVGb3JtRGlyZWN0aXZlPVwibmdGb3JtXCI+XHJcbiAgPHNlY3Rpb24gKm5nSWY9XCJ0aGlzLmNvbnRleHQgIT0gJ3NpZ25hdHVyZScgJiYgdGhpcy5jb250ZXh0ICE9J3VwbG9hZFppcENvZGVzJ1wiPlxyXG4gIDxwLXRhYmxlIFt2YWx1ZV09XCJxdWV1ZVwiIHJlc3BvbnNpdmVMYXlvdXQ9XCJzY3JvbGxcIiBbbG9hZGluZ109XCJzaG93UHJvZ3Jlc3NcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgPHRyPlxyXG4gICAgICAgIDx0aD5OYW1lPC90aD5cclxuICAgICAgICA8dGg+U2l6ZTwvdGg+XHJcbiAgICAgICAgPHRoIHN0eWxlPVwidGV4dC1hbGlnbjpyaWdodFwiICpuZ0lmPVwicHJvb2ZPZkFueXRoaW5nXCI+XHJcbiAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBvdmVybGF5VGV4dD1cInt7J3Byb29mLm9mLmFueXRoaW5nLmluZm8nfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IDJweDsgbWFyZ2luLWxlZnQ6IDZweDtcIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICA8dGggY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtaW5wdXQtY29udGFpbmVyXCIgKm5nSWY9XCJtdWx0aXBsZSAmJiAhcHJvb2ZPZkFueXRoaW5nXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiICNmaWxlSW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwidXBsb2FkRmlsZUN0cmxcIiBbYWNjZXB0XT1cImFsbG93ZWRGaWxlVHlwZVwiXHJcbiAgICAgICAgICAgICAgbXVsdGlwbGU9XCJtdWx0aXBsZVwiIChjaGFuZ2UpPVwiYWRkVG9RdWV1ZSgkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIHNpemU9XCJzbWFsbFwiIHR5cGU9XCJzdWJtaXRcIiBmaWxsPVwib3V0bGluZVwiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPlxyXG4gICAgICAgICAgICAgIENob29zZSBGaWxlc1xyXG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1pbnB1dC1jb250YWluZXJcIiAqbmdJZj1cIiFtdWx0aXBsZSAmJiAhcHJvb2ZPZkFueXRoaW5nXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiICNmaWxlSW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwidXBsb2FkRmlsZUN0cmxcIiBbYWNjZXB0XT1cImFsbG93ZWRGaWxlVHlwZVwiXHJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJhZGRUb1F1ZXVlKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgc2l6ZT1cInNtYWxsXCIgdHlwZT1cInN1Ym1pdFwiIGZpbGw9XCJvdXRsaW5lXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+XHJcbiAgICAgICAgICAgICAgQ2hvb3NlIEZpbGVcclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1xdWV1ZT5cclxuICAgICAgPHRyPlxyXG4gICAgICAgIDx0ZD57eyBxdWV1ZT8ubmFtZSB9fTwvdGQ+XHJcbiAgICAgICAgPHRkPnt7IHF1ZXVlPy5zaXplLzEwMjQvMTAyNCB8IG51bWJlcjonLjInIH19IE1CPC90ZD5cclxuICAgICAgICA8dGQgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiPlxyXG4gICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIHNpemU9XCJzbWFsbFwiIHBUb29sdGlwPVwiUmVtb3ZlXCIgKGNsaWNrKT1cInJlbW92ZUZyb21RdWV1ZShxdWV1ZSlcIlxyXG4gICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBjbGFzcz1cImlvbi1wYWRkaW5nLWxlZnRcIj5cclxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJ0cmFzaC1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cclxuICAgICAgPHRyICpuZ0lmPVwiIXByb29mT2ZBbnl0aGluZ1wiPlxyXG4gICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cIjNcIj5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgIDxsaSAqbmdJZj1cImFsbG93ZWRGaWxlVHlwZVwiPllvdSBhcmUgYWxsb3dlZCB0byB1cGxvYWQgZmlsZShzKSB3aXRoIGZvbGxvd2luZyBleHRlbnRpb25zOiB7e2FsbG93ZWRGaWxlVHlwZX19LjwvbGk+XHJcbiAgICAgICAgICAgICAgPGxpPlRvdGFsIGZpbGUocykgc2l6ZSBjYW5ub3QgZXhjZWVkIDxiPnt7bWF4U2l6ZUluTUJ9fTwvYj4gTUIuPC9saT5cclxuICAgICAgICAgICAgICA8bGk+WW91IGNhbiB1cGxvYWQgbWF4aW11bSA8Yj57e25vT2ZGaWxlc1RvVXBsb2FkfX08L2I+IGZpbGUocykuPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIj4gXHJcbiAgICAgIDx0ciAqbmdJZj1cInByb29mT2ZBbnl0aGluZ1wiPlxyXG4gICAgICAgIDx0ZCAqbmdJZj1cInF1ZXVlLmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICA8ZGl2PjxiPisgQWRkPC9iPiBmaWxlczwvZGl2PlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPHRkICpuZ0lmPVwicXVldWUubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgPGRpdj48Yj4rIEFkZDwvYj4gYW55IG90aGVyIGZpbGVzPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICA8dGQ+PC90ZD5cclxuICAgICAgICA8dGQgY2xhc3M9XCJmaWxlLWlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiAjZmlsZUlucHV0IGZvcm1Db250cm9sTmFtZT1cInVwbG9hZEZpbGVDdHJsXCIgW2FjY2VwdF09XCJhbGxvd2VkRmlsZVR5cGVcIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiYWRkVG9RdWV1ZSgkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gYXJpYS1sYWJlbD1cIkFkZCBGaWxlc1wiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiIGZpbGw9XCJvdXRsaW5lXCIgc2l6ZT1cInNtYWxsXCIgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiWydmYWwnLCAncGx1cyddXCIgY2xhc3M9XCJhY3Rpb24taWNvblwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC10YWJsZT5cclxuPC9zZWN0aW9uPlxyXG48c2VjdGlvbiAqbmdJZj1cInRoaXMuY29udGV4dCA9PSAnc2lnbmF0dXJlJ1wiPlxyXG4gIDxpb24tcm93PlxyXG4gICAgPGlvbi1jb2w+XHJcbiAgICAgIDxkaXYgW2lubmVySFRNTF09XCJpbWFnZUh0bWxcIiBzdHlsZT1cIndpZHRoOiAzODVweDsgaGVpZ2h0OiAxMDBweDsgYm9yZGVyOiAxcHggc29saWQgZ3JheTsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XCI+PC9kaXY+XHJcbiAgICA8L2lvbi1jb2w+XHJcbiAgICA8aW9uLWNvbD5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbGUtaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgI2ZpbGVJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ1cGxvYWRGaWxlQ3RybFwiIFthY2NlcHRdPVwiYWxsb3dlZEZpbGVUeXBlXCJcclxuICAgICAgICAgIChjaGFuZ2UpPVwidXBsb2FkVG9UYXhBdWRpdCgkZXZlbnQpXCIgLz5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInNxdWFyZVwiIHNpemU9XCJzbWFsbFwiIHR5cGU9XCJzdWJtaXRcIiBmaWxsPVwib3V0bGluZVwiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPlxyXG4gICAgICAgICAgSW1wb3J0XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvaW9uLWNvbD5cclxuICA8L2lvbi1yb3c+XHJcbjwvc2VjdGlvbj5cclxuPHNlY3Rpb24gKm5nSWY9XCJ0aGlzLmNvbnRleHQgPT0gJ3VwbG9hZFppcENvZGVzJ1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJ1cGxvYWQtaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiAjZmlsZUlucHV0IGZvcm1Db250cm9sTmFtZT1cInVwbG9hZEZpbGVDdHJsXCIgW2FjY2VwdF09XCJhbGxvd2VkRmlsZVR5cGVcIlxyXG4gICAgICAoY2hhbmdlKT1cImFkZFRvUXVldWUoJGV2ZW50KVwiIC8+XHJcbiAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInNxdWFyZVwiIHNpemU9XCJkZWZhdWx0XCIgdHlwZT1cInN1Ym1pdFwiIGZpbGw9XCJvdXRsaW5lXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+XHJcbiAgICAgIFVwbG9hZCBaaXAgQ29kZXNcclxuICAgIDwvaW9uLWJ1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG48L2Zvcm0+Il19
|