@rangertechnologies/ngnxt 2.1.57 → 2.1.58
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/pages/questionbook/questionbook.component.mjs +29 -6
- package/fesm2022/rangertechnologies-ngnxt.mjs +28 -5
- package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
- package/package.json +1 -1
- package/rangertechnologies-ngnxt-2.1.58.tgz +0 -0
- package/rangertechnologies-ngnxt-2.1.57.tgz +0 -0
|
@@ -338,14 +338,37 @@ export class QuestionbookComponent {
|
|
|
338
338
|
let updatedText = questionText?.replace(/<[^>]*>/g, '');
|
|
339
339
|
return updatedText;
|
|
340
340
|
}
|
|
341
|
+
// openCalendarComponent(ques) {
|
|
342
|
+
// const viewContainerRef = this.dynamicHost.viewContainerRef;
|
|
343
|
+
// if(viewContainerRef){
|
|
344
|
+
// viewContainerRef.clear();
|
|
345
|
+
// const componentRef = viewContainerRef.createComponent(CustomCalendarComponent);
|
|
346
|
+
// componentRef.instance.question = ques;
|
|
347
|
+
// componentRef.instance.dateSelected.subscribe((event: any) => this.getCurrentCalendar(event));
|
|
348
|
+
// componentRef.instance.eventSelected.subscribe((event:any) => this.getCalendarEvent(event))
|
|
349
|
+
// }
|
|
350
|
+
// }
|
|
341
351
|
openCalendarComponent(ques) {
|
|
342
352
|
const viewContainerRef = this.dynamicHost.viewContainerRef;
|
|
343
|
-
|
|
353
|
+
let calendarComponentRef;
|
|
354
|
+
// Check if the Calendar component already exists
|
|
355
|
+
if (viewContainerRef.length > 0) {
|
|
356
|
+
// Assuming the calendar component is the only component in this container
|
|
357
|
+
calendarComponentRef = viewContainerRef.get(0);
|
|
358
|
+
// Check if the component is indeed the CustomCalendarComponent
|
|
359
|
+
if (calendarComponentRef && calendarComponentRef.instance instanceof CustomCalendarComponent) {
|
|
360
|
+
// Update the existing instance with new input
|
|
361
|
+
calendarComponentRef.instance.question = ques;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
if (!calendarComponentRef) {
|
|
365
|
+
// If the component doesn't exist, create a new one
|
|
344
366
|
viewContainerRef.clear();
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
367
|
+
calendarComponentRef = viewContainerRef.createComponent(CustomCalendarComponent);
|
|
368
|
+
calendarComponentRef.instance.question = ques;
|
|
369
|
+
// Subscribe to events
|
|
370
|
+
calendarComponentRef.instance.dateSelected.subscribe((event) => this.getCurrentCalendar(event));
|
|
371
|
+
calendarComponentRef.instance.eventSelected.subscribe((event) => this.getCalendarEvent(event));
|
|
349
372
|
}
|
|
350
373
|
}
|
|
351
374
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: QuestionbookComponent, deps: [{ token: i1.SalesforceService }, { token: i2.DataService }, { token: i3.ChangeService }, { token: i4.StorageService }, { token: i5.I18nService }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -387,4 +410,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
387
410
|
}], handleCalendarEvent: [{
|
|
388
411
|
type: Output
|
|
389
412
|
}] } });
|
|
390
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25ib29rLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9xdWVzdGlvbmJvb2svcXVlc3Rpb25ib29rLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9xdWVzdGlvbmJvb2svcXVlc3Rpb25ib29rLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFPcEksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUVqRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPckcsTUFBTSxPQUFPLHFCQUFxQjtJQTJCWjtJQUNWO0lBQ0E7SUFDQTtJQUNEO0lBQ0M7SUFDa0I7SUFoQ25CLE1BQU0sQ0FBZTtJQUNyQixZQUFZLENBQVc7SUFDdkIsbUJBQW1CLEdBQVcsRUFBRSxDQUFBLENBQUUsbUNBQW1DO0lBQ3JFLFNBQVMsQ0FBYTtJQUN0QixZQUFZLENBQUs7SUFDakIsVUFBVSxDQUFRO0lBQ2xCLEtBQUssQ0FBUSxDQUFDLHNDQUFzQztJQUNuRCxjQUFjLEdBQXFCLElBQUksWUFBWSxFQUFPLENBQUM7SUFDM0QsY0FBYyxHQUFxQixJQUFJLFlBQVksRUFBTyxDQUFD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QUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQy9GLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQy9GLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQy9GLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlGLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzVGLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzlGLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFF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OzBCQXFDekIsTUFBTTsyQkFBQyxRQUFROzRDQWhDVCxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRSxZQUFZO3NCQUFwQixLQUFLO2dCQUMrQyxXQUFXO3NCQUEvRCxTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFXekMsc0JBQXNCO3NCQUEvQixNQUFNO2dCQUVHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIFZpZXdDaGlsZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFF1ZXN0aW9uLCBRdWVzdGlvbkJvb2sgfSBmcm9tICcuLi8uLi93cmFwcGVyJztcbmltcG9ydCB7IFNhbGVzZm9yY2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NhbGVzZm9yY2Uuc2VydmljZVwiO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NoYW5nZS5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgRXJyb3JXcmFwcGVyIH0gZnJvbSAnLi4vLi4vbW9kZWwvZXJyb3JXcmFwcGVyJztcbi8vIEhBIDE5REVDMjMgaW1wb3J0ZWQgdHJhbnNsYXRpb24gc2VydmljZVxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERlcGVuZGVuY3lNZXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9kZXBlbmRlbmN5TWV0YSc7XG5pbXBvcnQgeyBDb21wb25lbnRob3N0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jb21wb25lbnRob3N0L2NvbXBvbmVudGhvc3QuZGlyZWN0aXZlJztcbmltcG9ydCB7IEN1c3RvbUNhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jdXN0b20tY2FsZW5kYXIvY3VzdG9tLWNhbGVuZGFyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1xdWVzdGlvbmJvb2snLFxuICB0ZW1wbGF0ZVVybDogJy4vcXVlc3Rpb25ib29rLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcXVlc3Rpb25ib29rLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBRdWVzdGlvbmJvb2tDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBxYkl0ZW06IFF1ZXN0aW9uQm9vaztcbiAgQElucHV0KCkgcXVlc3Rpb25JdGVtOiBRdWVzdGlvbjtcbiAgQElucHV0KCkgdHJhbnNsYXRlZFF1ZXN0aW9ucyA6IGFueVtdID0gW10gIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gIEBJbnB1dCgpIHF1ZXN0aW9uczogUXVlc3Rpb25bXTtcbiAgQElucHV0KCkgZXJyb3JGaWVsZElkOmFueTtcbiAgQElucHV0KCkgbGFiZWxWYWx1ZTpzdHJpbmc7IFxuICBASW5wdXQoKSB0b2tlbjpzdHJpbmc7IC8vIFZEIDE5SkFOMjQgLSBnZXR0aW5nIHRva2VuIGFzIGlucHV0XG4gIEBPdXRwdXQoKSBoYW5kbGVEcm9wRG93bjpFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgaGFuZGxlUXVlc3Rpb246RXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTsgLy8gVkQgMTlKdWwwMSAtIGdldCB1cGRhdGVkIHF1ZXN0aW9uXG4gIEBJbnB1dCgpIGRyb3BEb3duRGF0YTphbnk7XG4gIEBWaWV3Q2hpbGQoQ29tcG9uZW50aG9zdERpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgZHluYW1pY0hvc3Q6IENvbXBvbmVudGhvc3REaXJlY3RpdmU7XG4gIHN1YlF1ZXN0aW9uczogUXVlc3Rpb25bXTtcbiAgc2VsZWN0ZWRGaWxlRGF0YTogYW55W10gPSBbXTtcbiAgbG9hZENvbXBvbmVudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgLy8gSEEgMjhERUMyMyBBZGRlZCBzdHlsaW5nIGFuZCBsb2dpY3MgdG8gbG9hZCB0aGUgYm9vayB0eXBlIHF1ZXN0aW9ucyBcbiAgcWJSZWY6IFF1ZXN0aW9uQm9vaztcbiAgLy8gIEhBIDE5REVDMjMgRGVjbGFyYXRpb24gZm9yIFNhbGVzZm9yY2UgU3R5bGluZ1xuICBzdHlsZTogYW55O1xuICBsYW5nRGlyZWN0aW9uID0gJ2x0cic7XG4gIGJvb2tTdHlsZTogYW55O1xuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgQE91dHB1dCgpIGhhZGxlRHJvcERvd25EZXBlbmRlbnQ6RXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICBAT3V0cHV0KCkgaGFuZGxlQ2FsZW5kYXJEYXRlOkV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgaGFuZGxlQ2FsZW5kYXJFdmVudDpFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHVibGljIGJvb2tRdWVzdGlvbnNNYXA6IGFueSA9IG5ldyBNYXAoKTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZlNlcnZpY2U6IFNhbGVzZm9yY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlU2VydmljZTogQ2hhbmdlU2VydmljZSwgXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsXG4gICAgcHVibGljIGkxOG5TZXJ2aWNlOiBJMThuU2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnRcbiAgICApIHsgXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBWRCAxM1NlcDI0IGNoYW5nZXNcbiAgICB0aGlzLnByb2Nlc3NEYXRhKCk7XG4gICAgLy8gVkQgc2VwMTMyNCBjaGFuZ2VzIC0gcHJvY2VzcyBkYXRhIHdoZW4gZGF0YWJpbmQgdmFsdWUgY2hhbmdlXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmNoYW5nZVNlcnZpY2UuZGF0YUJpbmQkLnN1YnNjcmliZShcbiAgICAgIChjaGFuZ2VWYWx1ZSkgPT4ge1xuICAgICAgICAgIGlmKGNoYW5nZVZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NEYXRhKCk7XG5cbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gICAvLyBWRCAxM1NlcDI0IGNoYW5nZXNcbiAgcHJvY2Vzc0RhdGEoKXtcbiAgICBjb25zb2xlLmxvZygnaW5zaWRlIFF1ZXN0aW9uQm9va0NvbXBvbmVudCBPbkluaXQnKTtcbiAgICAvLyBjb25zb2xlLmxvZygncWJJdGVtJywgdGhpcy5xYkl0ZW0pO1xuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMucXVlc3Rpb25zKTtcbiAgICAvLyAgSEEgMTlERUMyMyBMb2dpYyBmb3IgUXVlc3Rpb24gQm9vayBTdHlsaW5nKFNsYWVzZm9yY2UpXG4gICAgLy8gSEEgMDlGRUIyNCBBZGRlZCB0ZXJuYXJ5XG4gICAgaWYodGhpcy5xYkl0ZW0/LlN0eWxlX19jKXtcbiAgICAgIC8vIEhBIDI4REVDMjMgQWRkZWQgc3R5bGluZyBhbmQgbG9naWNzIHRvIGxvYWQgdGhlIGJvb2sgdHlwZSBxdWVzdGlvbnMgXG4gICAgICB0aGlzLnFiSXRlbS5TdHlsZV9fYyA9IHR5cGVvZiB0aGlzLnFiSXRlbS5TdHlsZV9fYyA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKCcnK3RoaXMucWJJdGVtPy5TdHlsZV9fYykgOiB0aGlzLnFiSXRlbS5TdHlsZV9fYztcbiAgICAgIHRoaXMucWJJdGVtLlN0eWxlX19jLmxhYmVsQ2xhc3MgPSB0aGlzLnFiSXRlbS5TdHlsZV9fYz8ubGFiZWxDbGFzcyA/IHRoaXMucWJJdGVtLlN0eWxlX19jPy5sYWJlbENsYXNzIDogXCJcIjtcbiAgICAgIHRoaXMucWJJdGVtLlN0eWxlX19jLmxhYmVsU3R5bGUgPSB0aGlzLnFiSXRlbS5TdHlsZV9fYz8ubGFiZWxTdHlsZSA/IHRoaXMucWJJdGVtLlN0eWxlX19jPy5sYWJlbFN0eWxlIDogXCJcIjtcbiAgICAgIHRoaXMucWJJdGVtLlN0eWxlX19jLmxhYmVsVmFsdWVTdHlsZSA9IHRoaXMucWJJdGVtLlN0eWxlX19jPy5sYWJlbFZhbHVlU3R5bGUgPyB0aGlzLnFiSXRlbS5TdHlsZV9fYz8ubGFiZWxWYWx1ZVN0eWxlIDogXCJcIjtcbiAgICAgIHRoaXMucWJJdGVtLlN0eWxlX19jLmlucHV0Q2xhc3MgPSB0aGlzLnFiSXRlbS5TdHlsZV9fYz8uaW5wdXRDbGFzcyA/IHRoaXMucWJJdGVtLlN0eWxlX19jPy5pbnB1dENsYXNzIDogXCJcIjtcbiAgICAgIHRoaXMucWJJdGVtLlN0eWxlX19jLmlucHV0U3R5bGUgPSB0aGlzLnFiSXRlbS5TdHlsZV9fYy5pbnB1dFN0eWxlID8gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmlucHV0U3R5bGUgOiBcIlwiO1xuICAgICAgdGhpcy5xYkl0ZW0uU3R5bGVfX2MuYm9va1N0eWxlID0gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmJvb2tTdHlsZSA/IHRoaXMucWJJdGVtLlN0eWxlX19jPy5ib29rU3R5bGUgOiBcIlwiO1xuICAgICAgdGhpcy5xYkl0ZW0uU3R5bGVfX2Muc2hvd0xhYmVsID0gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LnNob3dMYWJlbCA/IHRoaXMucWJJdGVtLlN0eWxlX19jPy5zaG93TGFiZWwgOiB0cnVlO1xuICAgIH1cbiAgICBlbHNle1xuICAgICAgaWYodGhpcy5xYkl0ZW0pe1xuICAgICAgICB0aGlzLnFiSXRlbS5TdHlsZV9fYyA9IHtcbiAgICAgICAgICBcImxhYmVsQ2xhc3NcIiA6IFwiXCIsXG4gICAgICAgICAgXCJsYWJlbFN0eWxlXCIgOiBcIlwiLFxuICAgICAgICAgIFwibGFiZWxWYWx1ZVN0eWxlXCIgOiBcIlwiLFxuICAgICAgICAgIFwiaW5wdXRDbGFzc1wiIDogXCJcIixcbiAgICAgICAgICBcImlucHV0U3R5bGVcIiA6IFwiXCIsXG4gICAgICAgICAgXCJib29rU3R5bGVcIiA6IFwiXCIsXG4gICAgICAgICAgXCJzaG93TGFiZWxcIjogdHJ1ZSxcbiAgICAgICAgICBcImRpcmVjdGlvblwiIDogXCJsdHJcIixcbiAgICAgICAgICBcInF1ZXN0aW9uU3R5bGVcIjogXCJcIlxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnFiSXRlbS5TdHlsZV9fYy5xdWVzdGlvblN0eWxlID0gdGhpcy5xYkl0ZW0/LlN0eWxlX19jPy5xdWVzdGlvblN0eWxlID8gdGhpcy5xYkl0ZW0/LlN0eWxlX19jLnF1ZXN0aW9uU3R5bGUgOiBcIlwiO1xuICAgIHRoaXMubGFuZ0RpcmVjdGlvbiA9IHRoaXMucWJJdGVtLlN0eWxlX19jLmRpcmVjdGlvbiA9IHRoaXMucWJJdGVtPy5TdHlsZV9fYz8uZGlyZWN0aW9uID8gdGhpcy5xYkl0ZW0/LlN0eWxlX19jPy5kaXJlY3Rpb24gOiAnbHRyJztcbiAgICB0aGlzLmJvb2tTdHlsZSA9IHRoaXMucWJJdGVtPy5TdHlsZV9fYz8uYm9va1N0eWxlO1xuICAgIHRoaXMucXVlc3Rpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICB2YXIgaHRtbEVsZW1lbnQgPSBlbGVtZW50Py5RdWVzdGlvbl9UZXh0X19jIDtcbiAgICAgIHZhciB0ZXh0T25seSA9IGh0bWxFbGVtZW50Py5yZXBsYWNlKC88W14+XSo+L2csICcnKVxuICAgICAgZWxlbWVudC5RdWVzdGlvbl9UZXh0X19jID0gdGV4dE9ubHk7XG4gICAgICAvLyAgSEEgMTlERUMyMyBMb2dpYyBmb3IgUXVlc3Rpb24gU3R5bGluZyhTbGFlc2ZvcmNlKVxuICAgICAgLy8gSEEgMjhERUMyMyBBZGRlZCBzdHlsaW5nIGFuZCBsb2dpY3MgdG8gbG9hZCB0aGUgYm9vayB0eXBlIHF1ZXN0aW9ucyBcbiAgICAgIGlmKGVsZW1lbnQuVHlwZV9fYyA9PT0gJ0Jvb2snKXtcbiAgICAgICAgaWYoZWxlbWVudFsnUUJfUmVmZXJlbmNlX1F1ZXN0aW9uc19fYyddKXtcbiAgICAgICAgICB2YXIgcWIgPSBKU09OLnBhcnNlKGVsZW1lbnRbJ1FCX1JlZmVyZW5jZV9RdWVzdGlvbnNfX2MnXSk7XG4gICAgICAgICAgaWYocWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jKXtcbiAgICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYyA9IHR5cGVvZiBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZSgnJytxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MpIDogcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jID0gdGhpcy5xYkl0ZW0uU3R5bGVfX2M7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQm9vayB0eXBlIHF1ZXN0aW9uIHN0eWxpbmdcbiAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MubGFiZWxDbGFzcyA9IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYz8ubGFiZWxDbGFzcyA/IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYz8ubGFiZWxDbGFzcyA6IFwiXCI7XG4gICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmxhYmVsU3R5bGUgPSBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M/LmxhYmVsU3R5bGUgPyBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M/LmxhYmVsU3R5bGUgOiBcIlwiO1xuICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5sYWJlbFZhbHVlU3R5bGUgPSBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfXz8ubGFiZWxWYWx1ZVN0eWxlID8gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmxhYmVsVmFsdWVTdHlsZSA6IFwiXCI7XG4gICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmlucHV0Q2xhc3MgPSBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M/LmlucHV0Q2xhc3MgPyBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M/LmlucHV0Q2xhc3MgOiBcIlwiO1xuICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5pbnB1dFN0eWxlID0gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jPy5pbnB1dFN0eWxlID8gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jPy5pbnB1dFN0eWxlIDogXCJcIjtcbiAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MuYm9va1N0eWxlID0gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jPy5ib29rU3R5bGUgPyBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M/LmJvb2tTdHlsZSA6IFwiXCI7XG4gICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLnNob3dMYWJlbCA9IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYz8uc2hvd0xhYmVsID8gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jPy5zaG93TGFiZWwgOiB0cnVlO1xuICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5xdWVzdGlvblN0eWxlID0gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jPy5xdWVzdGlvblN0eWxlID8gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jPy5xdWVzdGlvblN0eWxlIDogXCJcIjtcbiAgICAgICAgICBxYlsnbGFuZ0RpcmVjdGlvbiddID0gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmRpcmVjdGlvbiA/IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYz8uZGlyZWN0aW9uIDogdGhpcy5sYW5nRGlyZWN0aW9uO1xuICAgICAgICAgIFxuICAgICAgICAgIC8vIExvb3AgZm9yIGVhY2ggcXVlc3Rpb24gaW4gdGhlIGJvb2tcbiAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uUXVlc3Rpb25zX19yLnJlY29yZHMuZm9yRWFjaChxdWVzdGlvbkZyb21Cb29rID0+IHtcbiAgICAgICAgICAgIHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MgPSBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jID8gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYyA6IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYztcbiAgICAgICAgICAgIHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MubGFiZWxDbGFzcyA9IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LmxhYmVsQ2xhc3MgPyBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5sYWJlbENsYXNzIDogXCJcIjtcbiAgICAgICAgICAgIHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MubGFiZWxTdHlsZSA9IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LmxhYmVsU3R5bGUgPyBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5sYWJlbFN0eWxlIDogXCJcIjtcbiAgICAgICAgICAgIHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MubGFiZWxWYWx1ZVN0eWxlID0gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8ubGFiZWxWYWx1ZVN0eWxlID8gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8ubGFiZWxWYWx1ZVN0eWxlIDogXCJcIjtcbiAgICAgICAgICAgIHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MuaW5wdXRDbGFzcyA9IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LmlucHV0Q2xhc3MgPyBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5pbnB1dENsYXNzIDogXCJcIjtcbiAgICAgICAgICAgIHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MuaW5wdXRTdHlsZSA9IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LmlucHV0U3R5bGUgPyBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5pbnB1dFN0eWxlIDogXCJcIjtcbiAgICAgICAgICAgIHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MuYm9va1N0eWxlID0gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8uYm9va1N0eWxlID8gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8uYm9va1N0eWxlIDogXCJcIjtcbiAgICAgICAgICAgIHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2Muc2hvd0xhYmVsID0gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8uc2hvd0xhYmVsID8gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8uc2hvd0xhYmVsIDogdHJ1ZTtcbiAgICAgICAgICAgIHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MucXVlc3Rpb25TdHlsZSA9IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LnF1ZXN0aW9uU3R5bGUgPyBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5xdWVzdGlvblN0eWxlIDogXCJcIjtcbiAgICAgICAgICAgIHF1ZXN0aW9uRnJvbUJvb2tbJ2xhbmdEaXJlY3Rpb24nXSA9IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LmRpcmVjdGlvbiA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LmRpcmVjdGlvbiA6IHRoaXMubGFuZ0RpcmVjdGlvbjtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBlbGVtZW50WydxYkl0ZW0nXSA9IHFiWydxdWVzdGlvbmJvb2snXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxlbWVudC5TdHlsZV9fYyA9IGVsZW1lbnQuU3R5bGVfX2MgPyB0eXBlb2YgZWxlbWVudC5TdHlsZV9fYyA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKCcnK2VsZW1lbnQ/LlN0eWxlX19jKSA6IGVsZW1lbnQ/LlN0eWxlX19jIDogdGhpcy5xYkl0ZW0/LlN0eWxlX19jO1xuXG4gICAgICBlbGVtZW50LlN0eWxlX19jLmxhYmVsQ2xhc3MgPSBlbGVtZW50LlN0eWxlX19jPy5sYWJlbENsYXNzID8gZWxlbWVudC5TdHlsZV9fYz8ubGFiZWxDbGFzcyA6IFwiXCI7XG4gICAgICBlbGVtZW50LlN0eWxlX19jLmxhYmVsU3R5bGUgPSBlbGVtZW50LlN0eWxlX19jPy5sYWJlbFN0eWxlID8gZWxlbWVudC5TdHlsZV9fYz8ubGFiZWxTdHlsZSA6IFwiXCI7XG4gICAgICBlbGVtZW50LlN0eWxlX19jLmxhYmVsVmFsdWVTdHlsZSA9IGVsZW1lbnQuU3R5bGVfX2M/LmxhYmVsVmFsdWVTdHlsZSA/IGVsZW1lbnQuU3R5bGVfX2MubGFiZWxWYWx1ZVN0eWxlIDogXCJcIjtcbiAgICAgIGVsZW1lbnQuU3R5bGVfX2MuaW5wdXRDbGFzcyA9IGVsZW1lbnQuU3R5bGVfX2M/LmlucHV0Q2xhc3MgPyBlbGVtZW50LlN0eWxlX19jPy5pbnB1dENsYXNzIDogXCJcIjtcbiAgICAgIGVsZW1lbnQuU3R5bGVfX2MuaW5wdXRTdHlsZSA9IGVsZW1lbnQuU3R5bGVfX2MuaW5wdXRTdHlsZSA/IGVsZW1lbnQuU3R5bGVfX2M/LmlucHV0U3R5bGUgOiBcIlwiO1xuICAgICAgZWxlbWVudC5TdHlsZV9fYy5ib29rU3R5bGUgPSBlbGVtZW50LlN0eWxlX19jPy5ib29rU3R5bGUgPyBlbGVtZW50LlN0eWxlX19jPy5ib29rU3R5bGUgOiBcIlwiO1xuICAgICAgZWxlbWVudC5TdHlsZV9fYy5zaG93TGFiZWwgPSBlbGVtZW50LlN0eWxlX19jPy5zaG93TGFiZWwgPyBlbGVtZW50LlN0eWxlX19jPy5zaG93TGFiZWwgOiB0cnVlO1xuICAgICAgZWxlbWVudC5TdHlsZV9fYy5xdWVzdGlvblN0eWxlID0gZWxlbWVudC5TdHlsZV9fYz8ucXVlc3Rpb25TdHlsZSA/IGVsZW1lbnQuU3R5bGVfX2M/LnF1ZXN0aW9uU3R5bGUgOiBcIlwiO1xuXG4gICAgICBlbGVtZW50WydsYW5nRGlyZWN0aW9uJ10gPSBlbGVtZW50LlN0eWxlX19jPy5kaXJlY3Rpb24gPyBlbGVtZW50LlN0eWxlX19jPy5kaXJlY3Rpb24gOiB0aGlzLmxhbmdEaXJlY3Rpb247XG5cblxuICAgICAgLy9WRCAwMkF1ZzI0IGRlcGVuZGVudCBmaWVsZCBzaG93L2hpZGUgY2hhbmdlc1xuICAgICAgaWYoZWxlbWVudC5SZWZlcmVuY2VfRmllbGRfX2Mpe1xuICAgICAgICBlbGVtZW50LmRlcGVuZGVudFJlZiA9IGVsZW1lbnQuUmVmZXJlbmNlX0ZpZWxkX19jO1xuICAgICAgfVxuICAgICAgaWYoZWxlbWVudC5TdWJfVGV4dF9fYyl7XG4gICAgICAgICBsZXQgZGVwZW5kZW5jeU9iajogRGVwZW5kZW5jeU1ldGEgPSBKU09OLnBhcnNlKGVsZW1lbnQuU3ViX1RleHRfX2MpO1xuICAgICAgICAgaWYoZGVwZW5kZW5jeU9iai5pc0RlcGVuZGVudEZpZWxkKXtcbiAgICAgICAgICAgIGVsZW1lbnQuSXNfSGlkZV9fYyA9IHRydWU7XG4gICAgICAgICB9XG4gICAgICAgIC8vIFZEIDA3QXVnMjQgLSBpc0RlcGVuZGVudEZpZWxkIGNoYW5nZVxuICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jaGFuZ2VTZXJ2aWNlLmNoYW5nZUFubm91bmNlZCQuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKGNoYW5nZVZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAvLyBWRCAyMEF1ZzI0IC0gaXNEZXBlbmRlbnRGaWVsZCBjaGFuZ2VcbiAgICAgICAgICAgICAgaWYoY2hhbmdlVmFsdWUgIT0gdW5kZWZpbmVkICYmIGRlcGVuZGVuY3lPYmouaXNEZXBlbmRlbnRGaWVsZCkge1xuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdpbnNpZGUgc3Vic2NyaXB0aW9uIGZvciB0aGUgY2hhbmdlJyk7XG4gICAgICAgICAgICAgICAgaWYoY2hhbmdlVmFsdWUudmFsdWVPYmogIT0gdW5kZWZpbmVkICYmIGNoYW5nZVZhbHVlLmZyb21RdWVzdGlvbklkID09IGRlcGVuZGVuY3lPYmouc291cmNlUXVlc3Rpb25JZCkge1xuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdvdXRzaWRlLS0+JyxlbGVtZW50LklzX0hpZGVfX2MpO1xuICAgICAgICAgICAgICAgICAgIC8vIGVsZW1lbnQuaXNIaWRkZW5GaWVsZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICBpZihkZXBlbmRlbmN5T2JqLmRlcGVuZGVudFZhbHVlID09IGNoYW5nZVZhbHVlLnZhbHVlT2JqKXtcbiAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuSXNfSGlkZV9fYyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5pbnB1dCA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zZWxlY3RlZFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBpZihlbGVtZW50LmRlcGVuZGVudFJlZiA9PSBjaGFuZ2VWYWx1ZS5yZWZlcmVuY2VGaWVsZCl7XG4gICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5SZWZlcmVuY2VfRmllbGRfX2MgPSBjaGFuZ2VWYWx1ZS5yZWZlcmVuY2VGaWVsZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfWVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LklzX0hpZGVfX2MgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmlucHV0ID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc2VsZWN0ZWRWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlRGVwZW5kZW50RWxlbWVudHMoZWxlbWVudC5JZCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIG5vIGRlcGVuZGVudCBzZWxlY3Rpb24gcmVtb3ZlIHRoZSByZWZlcmVuY2VcbiAgICAgICAgICAgICAgICAgICAgaWYoZWxlbWVudC5kZXBlbmRlbnRSZWYgPT0gY2hhbmdlVmFsdWUucmVmZXJlbmNlRmllbGQpe1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5SZWZlcmVuY2VfRmllbGRfX2MgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UudXBkYXRlKGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgLy8gVkQgMDYtMDktMjQgdG8gY2FsbCB0aGUgY2FsZW5kYXIgY29tcG9uZW50XG4gICAgICBpZiAoZWxlbWVudC5UeXBlX19jID09PSAnQ2FsZW5kYXInKSB7XG4gICAgICAgIHRoaXMub3BlbkNhbGVuZGFyQ29tcG9uZW50KGVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuc3ViUXVlc3Rpb25zID0gW107XG4gICAgdGhpcy5zZXRTdWJRdWVzdGlvbnModGhpcy5xdWVzdGlvbnMpO1xuICAgIHRoaXMucHJvY2Vzc1RyYW5zbGF0ZWRRdWVzdGlvbnMoKTsgXG4gIH1cbi8vIFZEIDA3QXVnMjQgLSBpc0RlcGVuZGVudEZpZWxkIGNoYW5nZVxuICBoaWRlRGVwZW5kZW50RWxlbWVudHMoZWxlbWVudElkKSB7XG4gICAgbGV0IGVsZW1lbnRzVG9IaWRlID0gdGhpcy5xdWVzdGlvbnMuZmlsdGVyKGVsID0+IHtcbiAgICAgICAgaWYgKGVsLlN1Yl9UZXh0X19jKSB7XG4gICAgICAgICAgICBsZXQgZGVwT2JqID0gSlNPTi5wYXJzZShlbC5TdWJfVGV4dF9fYyk7XG4gICAgICAgICAgICByZXR1cm4gZGVwT2JqLnNvdXJjZVF1ZXN0aW9uSWQgPT0gZWxlbWVudElkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcblxuICAgIGVsZW1lbnRzVG9IaWRlLmZvckVhY2goZWwgPT4ge1xuICAgICAgICBlbC5Jc19IaWRlX19jID0gdHJ1ZTtcbiAgICAgICAgZWwuaW5wdXQgPSAnJztcbiAgICAgICAgZWwuc2VsZWN0ZWRWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS51cGRhdGUoZWwpO1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBoaWRlIGVsZW1lbnRzIGRlcGVuZGVudCBvbiB0aGlzIG9uZVxuICAgICAgICB0aGlzLmhpZGVEZXBlbmRlbnRFbGVtZW50cyhlbC5JZCk7XG4gICAgfSk7XG59XG5cbiAgY2xlYXJTUUVycm9yKHF1ZXNJZCkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdpbnNpZGUgUXVlc3Rpb25Cb29rQ29tcG9uZW50IGNsZWFyU1FFcnJvcicpO1xuICAgIHZhciBzcUxpc3QgPSB0aGlzLnN1YlF1ZXN0aW9ucz8uZmlsdGVyKChpdGVtKSA9PiBpdGVtLklkID09IHF1ZXNJZCk7XG4gICAgZm9yICh2YXIgc3Egb2Ygc3FMaXN0KSB7XG4gICAgICBzcS5lcnJvciA9IG51bGw7XG4gICAgfVxuICB9XG4gLy8gVkQgMTFKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXNcbiAgcHJvY2Vzc1RyYW5zbGF0ZWRRdWVzdGlvbnMoKXtcbiAgICBpZiAodGhpcy50cmFuc2xhdGVkUXVlc3Rpb25zICYmIHRoaXMudHJhbnNsYXRlZFF1ZXN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnF1ZXN0aW9ucy5mb3JFYWNoKChvcmdRdWVzdGlvbjogYW55KT0+IHtcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZWRRdWVzdGlvbnMuZm9yRWFjaCgodHJhbnNRdWVzdGlvbjphbnkpID0+IHtcbiAgICAgICAgICAgICBpZihvcmdRdWVzdGlvbi5VbmlxdWVfSWRlbnRpZmllcl9fYyA9PSB0cmFuc1F1ZXN0aW9uLmlkZW50aWZpZXIpe1xuICAgICAgICAgICAgICAgb3JnUXVlc3Rpb24uUXVlc3Rpb25fVGV4dF9fYyA9IHRyYW5zUXVlc3Rpb24ubGFiZWw7XG4gICAgICAgICAgICAgICBvcmdRdWVzdGlvbi5RdWVzdGlvbl9fYyA9IHRyYW5zUXVlc3Rpb24ucGxhY2VIb2xkZXI7XG4gICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgIGNvbnNvbGUubG9nKCdvcmlnaW5hbFF1ZXN0aW9uJyArIHRoaXMucXVlc3Rpb25zKTtcbiAgICAgY29uc29sZS5sb2codGhpcy5xdWVzdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHNldFN1YlF1ZXN0aW9ucyhyZWNvcmRzKSB7XG4gICAgY29uc29sZS5sb2coJ2luc2lkZSBRdWVzdGlvbmJvb2tDb21wb25lbnQgc2V0U3ViUXVlc3Rpb25zJyk7XG4gICAgdGhpcy5zdWJRdWVzdGlvbnMucHVzaChyZWNvcmRzKTtcbiAgfVxuXG4gIC8vIENhcHR1cmUgYW5kIFByb2Nlc3MgQ2hpbGQgRXZlbnRcbiAgY2hpbGRFdmVudENhcHR1cmUoZXZlbnQsIHF1ZXM/OmFueSkge1xuICAgIGxldCBkcm9wZG93bkRhdGEgPSAge307XG4gICAvLyBjb25zb2xlLmxvZygnaW5zaWRlIFF1ZXN0aW9uYm9va0NvbXBvbmVudCBjaGlsZEV2ZW50Q2FwdHVyZScpO1xuICAgIGNvbnNvbGUubG9nKGV2ZW50KTtcbiAgICB0aGlzLmNoYW5nZVNlcnZpY2UuYW5ub3VuY2VDaGFuZ2UoZXZlbnQpO1xuICAgIGlmKHF1ZXMpe1xuICAgICAgaWYocXVlcy5UeXBlX19jID09ICdEcm9wZG93bicgfHxxdWVzLlR5cGVfX2MgPT0gJ1JhZGlvJyApIHtcbiAgICAgICAgLy8gSEEgMTlKQU4yNCBDb3JyZWN0aW9uIG9mIGRyb3Bkb3duIHZhbHVlc1xuICAgICAgICBxdWVzLnNlbGVjdGVkT2JqID0gZXZlbnQudmFsdWVPYmogPyBldmVudC52YWx1ZU9iaiA6IG51bGw7XG4gICAgICAgIHF1ZXMuaW5wdXQgPSBldmVudC5zZWxlY3RlZE9iaiA/IGV2ZW50LnNlbGVjdGVkT2JqIDogZXZlbnQudmFsdWVPYmo7XG4gICAgICAgIHF1ZXMuc2VsZWN0ZWRWYWx1ZSA9IGV2ZW50LnZhbHVlT2JqID8gZXZlbnQudmFsdWVPYmogOiBudWxsO1xuICAgICAgICAvLyBlbWl0IHRoZSBkcm9wZG93biBkYXRhIHRvIHBhcmVudFxuICAgICAgICBkcm9wZG93bkRhdGFbJ2V2ZW50J10gPSBldmVudC52YWx1ZU9iajtcbiAgICAgICAgZHJvcGRvd25EYXRhWydxdWVzJ10gPSBxdWVzO1xuICAgICAgICBpZihkcm9wZG93bkRhdGFbJ2V2ZW50J10pe1xuICAgICAgICAgIHRoaXMuaGFuZGxlRHJvcERvd24uZW1pdChkcm9wZG93bkRhdGEpO1xuICAgICAgICB9ICAvLyBWRCAyMURFQzIzIC0gZGVwZW5kZW50IGZpZWxkIGNoYW5nZVxuICAgICAgfSBlbHNlIGlmKHF1ZXMuVHlwZV9fYyA9PSAnTG9jYXRpb24nKXtcbiAgICAgICAgcXVlcy5pbnB1dCA9IGV2ZW50LnZhbHVlT2JqO1xuICAgICAgICBxdWVzLnNlbGVjdGVkVmFsdWUgPSBldmVudC52YWx1ZU9iai5hZGRyZXNzO1xuICAgICAgfWVsc2UgaWYocXVlcy5UeXBlX19jID09ICdGaWxlJyl7IFxuICAgICAgICBxdWVzLmlucHV0ID0gdGhpcy5zZWxlY3RlZEZpbGVEYXRhID0gZXZlbnQ7XG4gICAgICB9ZWxzZSBpZihxdWVzLlR5cGVfX2MgPT0gJ0RhdGUnIHx8IHF1ZXMuVHlwZV9fYyA9PSAnRGF0ZVRpbWUnKXsgLy8gSEEgMjRKQU4yNCBDb252ZXJ0aW5nIERhdGUgYW5kIERhdGVUaW1lIHRvIFVUQ1xuICAgICAgICAgaWYoZXZlbnQudmFsdWUpe1xuICAgICAgICAgIGxldCBkID0gbmV3IERhdGUoZXZlbnQudmFsdWUpO1xuICAgICAgICAgIGxldCB1dGNTdHJpbmcgPSBkLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgcXVlcy5pbnB1dCA9IHV0Y1N0cmluZztcbiAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICBxdWVzLmlucHV0ID0gJyc7XG4gICAgICAgICB9XG4gICAgICB9ZWxzZSBpZihxdWVzLlR5cGVfX2MgPT0gJ0xpc3QnKXtcbiAgICAgICAgLy8gVkQgMjBBdWcyNCBoYW5kbGluZyB0aGUgbGlzdCB0eXBlICBoYW5kbGUgbXVsdGlwbGUgb2JqZWN0IHZhbHVlc1xuICAgICAgICBxdWVzLmlucHV0ID0gdGhpcy5kYXRhU2VydmljZS5nZXRWYWx1ZShldmVudC52YWx1ZU9iaixldmVudC5maWVsZCk7XG4gICAgICB9ZWxzZXtcbiAgICAgICAgcXVlcy5pbnB1dCA9IGV2ZW50O1xuICAgICAgfVxuICAgICAgLy8gdmFsaWRhdGluZyAgIGVycm9yIG1lc3NhZ2VcbiAgICAgIGNvbnN0IGhhc0Vycm9yID0gcXVlcy5FcnJvcl9NZXNzYWdlX19jICYmICgocXVlcy5UeXBlX19jID09PSAnRmlsZScgJiYgcXVlcy5pbnB1dC5sZW5ndGggPT0gMCkgfHwgKHF1ZXMuVHlwZV9fYyAhPSAnRmlsZScgJiYgIXF1ZXMuaW5wdXQpKTtcbiAgICAgIHF1ZXMuZXJyb3IgPSBoYXNFcnJvciA/IG5ldyBFcnJvcldyYXBwZXIoKSA6IG51bGw7XG4gICAgICAvLyBPbmNlIHRoZSByaWdodCB2YWx1ZSBpcyBzdG9yZWQgaW4gcXVlcy5pbnB1dCBzdG9yZSB0aGUgcXVlcyAod2l0aCBpbnB1dCkgaW4gc3RvcmFnZVNlcnZpY2VcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UudXBkYXRlKHF1ZXMpO1xuICAgICAgLy8gVkQgMTlKdWwwMSAtIGdldCB1cGRhdGVkIHF1ZXN0aW9uXG4gICAgICB0aGlzLmhhbmRsZVF1ZXN0aW9uLmVtaXQocXVlcyk7XG4gICAgfVxuICB9XG4gIGRlbGV0ZUZpbGUoZmlsZURhdGE6YW55KXtcbiAgICBjb25zb2xlLmxvZygnZmlsZURBVEEnLGZpbGVEYXRhKVxuICB9XG4gIGdldERyb3BEb3duKGV2ZW50OmFueSl7XG4gICAgdGhpcy5oYWRsZURyb3BEb3duRGVwZW5kZW50LmVtaXQoZXZlbnQpO1xuICB9XG4vLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgZ2V0Q3VycmVudENhbGVuZGFyKGV2ZW50OmFueSl7XG4gICAgdGhpcy5oYW5kbGVDYWxlbmRhckRhdGUuZW1pdChldmVudCk7XG4gIH1cblxuICBnZXRDYWxlbmRhckV2ZW50KGV2ZW50OmFueSl7XG4gICAgaWYoZXZlbnQpe1xuICAgICAgdGhpcy5oYW5kbGVDYWxlbmRhckV2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gLy8gVkQgMDZTZXAyNCByZW1vdmUgdGhlIHNwZWNpYWwgY2hhcmVjdGVycyBhbmQgdGFncyBcbiAgLy8gZnJvbSB0aGUgcXVlc3Rpb25UZXh0XG4gIHJlbW92ZUNoYXJhY3RlcnMocXVlc3Rpb25UZXh0OnN0cmluZyl7XG4gICAgIGxldCB1cGRhdGVkVGV4dCA9IHF1ZXN0aW9uVGV4dD8ucmVwbGFjZSgvPFtePl0qPi9nLCAnJyk7XG4gICAgIHJldHVybiB1cGRhdGVkVGV4dDtcbiAgfVxuXG5cbiAgb3BlbkNhbGVuZGFyQ29tcG9uZW50KHF1ZXMpIHtcbiAgICBjb25zdCB2aWV3Q29udGFpbmVyUmVmID0gdGhpcy5keW5hbWljSG9zdC52aWV3Q29udGFpbmVyUmVmO1xuICAgIGlmKHZpZXdDb250YWluZXJSZWYpe1xuICAgICAgdmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoQ3VzdG9tQ2FsZW5kYXJDb21wb25lbnQpO1xuICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnF1ZXN0aW9uID0gcXVlcztcbiAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5kYXRlU2VsZWN0ZWQuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB0aGlzLmdldEN1cnJlbnRDYWxlbmRhcihldmVudCkpO1xuICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmV2ZW50U2VsZWN0ZWQuc3Vic2NyaWJlKChldmVudDphbnkpID0+IHRoaXMuZ2V0Q2FsZW5kYXJFdmVudChldmVudCkpXG4gICAgfVxuICB9XG59XG4iLCI8IS0tIEhBIDIwREVDMjMgQm9vayBTdHlsZSBmcm9tIHNhbGVzZm9yY2UgLS0+XG48IS0tIEhBIDI4REVDMjMgIFJlbW92ZWQgSXNTaGVuZ2VsKHJlbW92YWwgb2Ygc2hlbmdlbCB2YWx1ZXMgYXBwbGllcyBmb3IgdGhpcyByZWFzb24pIGFuZCBkaXJlY3Qgc3R5bGluZyBvZiBib29rcyB0byBhdm9pZCBzdHlsaW5nIGlzc3Vlcy0tPlxuPCEtLSBIQSAxOEpBTjI0ICBBZGRlZCBjbGFzcyBmb3Igc3R5bGluZyAtLT5cbjxkaXYgW3N0eWxlXT1cImJvb2tTdHlsZVwiIGNsYXNzPVwiY29udGVudC1ib3ggZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxuICAgICAgICA8IS0tIEhBIDIwREVDMjMgRGlyZWN0aXZlIGFuZCBRdWVzdGlvbiBTdHlsZSBmcm9tIHNhbGVzZm9yY2UgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtjbGFzc109XCInY29sLWxnLScgKyBxdWVzLlNpemVfX2MgKyAnIHBhZGRpbmdub25lJ1wiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgcXVlcyBvZiBxdWVzdGlvbnM7bGV0IGkgPSBpbmRleFwiIFtpZF09XCJxdWVzLklkXCIgW2Rpcl09XCJxdWVzLmxhbmdEaXJlY3Rpb25cIiBbc3R5bGVdPVwicXVlcz8uU3R5bGVfX2M/LnF1ZXN0aW9uU3R5bGVcIj5cbiAgICAgICAgICAgIDwhLS0gU3ViIFF1ZXN0aW9uIExhYmVsIC0tPlxuICAgICAgICAgICAgPCEtLSBIQSAyMERFQzIzIExhYmVsIFN0eWxlIGZyb20gc2FsZXNmb3JjZSAtLT5cbiAgICAgICAgICAgIDwhLS0gVkQgMDlNYXkyNCBpcyBoaWRlIGZpZWxkIGNoYW5nZS0tPlxuICAgICAgICAgPGRpdiAqbmdJZj1cIiFxdWVzLklzX0hpZGVfX2NcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdEYXRlVGltZSdcIj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIFZEIDIwSlVOMjQgLSBoZWxwIHRleHQgY2hhbmdlcy0tPlxuICAgICAgICAgICAgPCEtLSBWRCAwMUF1ZzI0IC0gdmFsaWRhdGlvbiBjaGFuZ2UtLT5cbiAgICAgICAgICAgIDwhLS0gLy8gVkQgMDJBdWcyNCAtIGxhYmVsIHZhbHVlIHN0eWxlLS0+XG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgZG93bjI6IHFiSXRlbT8uUHJvZ3Jlc3NfQmFyX19jIH1cIiAqbmdJZj1cInF1ZXMuU3R5bGVfX2M/LnNob3dMYWJlbCA/IHF1ZXMuU3R5bGVfX2M/LnNob3dMYWJlbCA6IHRydWVcIiBbc3R5bGVdPVwicXVlcy5TdHlsZV9fYz8ubGFiZWxTdHlsZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCInZGlzLWZsZXggc2hlbmdlbC1teXQtZm9udDMgbXl0LWZvbnQ3ICdcIiBbc3R5bGVdPVwicXVlcy5TdHlsZV9fYz8ubGFiZWxWYWx1ZVN0eWxlXCI+e3sgcmVtb3ZlQ2hhcmFjdGVycyhxdWVzPy5RdWVzdGlvbl9UZXh0X19jKSB9fSBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAgKm5nSWY9XCJxdWVzLklzX09wdGlvbmFsX19jXCIgc3R5bGU9XCJjb2xvcjogcmVkO1wiPio8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuUXVlc3Rpb25fVGV4dF9fYyAmJiBxdWVzPy5IZWxwX1RleHRfX2NcIiBjbGFzcz1cImljb25cIiBbbWF0VG9vbHRpcF09XCJxdWVzPy5IZWxwX1RleHRfX2NcIj5pPC9kaXY+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIC8vIFZEIDEySnVuMjQgLSByZWFkb25seSBjaGFuZ2UtLT5cbiAgICAgICAgICAgIDwhLS0gRGF0ZVRpbWUgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnRGF0ZVRpbWUnXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tZGF0ZS1waWNrZXIgW21pbkRhdGVdPVwicXVlcy5taW5EYXRlXCIgW2Vycm9yXT1cInF1ZXMuZXJyb3JcIiBbZXJyb3JNZXNzYWdlXT1cInF1ZXMuRXJyb3JfTWVzc2FnZV9fY1wiIFtyZWFkT25seV09XCJxdWVzLlJlYWRfT25seV9fY1wiIFtkYXRlXT1cInF1ZXMuaW5wdXRcIiAoZGF0ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLWRhdGUtcGlja2VyPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICA8IS0tIERhdGUtLT5cbiAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnRGF0ZSdcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1kYXRlICBbZGF0ZV09XCJxdWVzLmlucHV0XCIgW2Vycm9yXT1cInF1ZXMuZXJyb3JcIiBbZXJyb3JNZXNzYWdlXT1cInF1ZXMuRXJyb3JfTWVzc2FnZV9fY1wiIFtyZWFkT25seV09XCJxdWVzLlJlYWRfT25seV9fY1wiIChkYXRlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tZGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgPCEtLSBUaW1lLS0+XG4gICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ1RpbWUnXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tdGltZSAgW3RpbWVdPVwicXVlcy5pbnB1dFwiIFtlcnJvcl09XCJxdWVzLmVycm9yXCIgW2Vycm9yTWVzc2FnZV09XCJxdWVzLkVycm9yX01lc3NhZ2VfX2NcIiBbcmVhZE9ubHldPVwicXVlcy5SZWFkX09ubHlfX2NcIiAodGltZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLXRpbWU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgPCEtLSBjYWxlbmRhciAgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnQ2FsZW5kYXInXCI+XG4gICAgICAgICAgICAgICAgPCEtLSA8YXBwLWN1c3RvbS1jYWxlbmRhciBbcXVlc3Rpb25dPVwicXVlc1wiICAoZXZlbnRTZWxlY3RlZCk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCIgKGRhdGVTZWxlY3RlZCk9XCJnZXRDdXJyZW50Q2FsZW5kYXIoJGV2ZW50KVwiPjwvYXBwLWN1c3RvbS1jYWxlbmRhcj4gLS0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gVGV4dCAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdUZXh0JyB8fCBxdWVzLlR5cGVfX2MgPT09ICdMaW5rJ1wiID5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1pbnB1dCBbdmFsdWVdPVwicXVlcy5pbnB1dFwiIFtuZ0NsYXNzVmFsdWVdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpcy1mbGV4IGR0LWxpbmUgZGF0ZS1saW5lIGJvb2tUZXh0IGJveG91dGxpbmUgbXl0LWZvbnQxJzogcWJJdGVtLlByb2dyZXNzX0Jhcl9fYyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRCb3g6ICFxYkl0ZW0uUHJvZ3Jlc3NfQmFyX19jXG4gICAgICAgICAgICAgICAgICAgIH1cIiBbcXVlc3Rpb25dPVwicXVlc1wiIFtyZWFkT25seV09XCJxdWVzLlJlYWRfT25seV9fY1wiIFtpZFZhbHVlXT1cInF1ZXMuVHJhY2tpbmdfSURfX2NcIiBbZm9jdXNFdmVudF09XCJjbGVhclNRRXJyb3IocXVlcy5JZClcIlxuICAgICAgICAgICAgICAgICAgICBbZXJyb3JdPVwicXVlcy5lcnJvclwiIFtwbGFjZWhvbGRlcl09XCJxdWVzLlF1ZXN0aW9uX19jXCIgKGlucHV0VmFsdWUpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS1pbnB1dD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8IS0tIGZvciBwaWNrIGxvY2F0aW9uIC0tPlxuICAgICAgICAgICAgPCEtLSAgIFZEIDIxREVDMjMgLSBkZXBlbmRlbnQgZmllbGQgY2hhbmdlIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0xvY2F0aW9uJ1wiPlxuICAgICAgICAgICAgPCEtLSBIQTEwMDEyMDI0IEFkZGVkIEFwaSBrZXkgYXMgaW5wdXQgLS0+XG4gICAgICAgICAgICAgICAgPGFwcC1waWNrLWxvY2F0aW9uIFthcGlLZXldPVwicWJJdGVtWydBcGlfS2V5X19jJ11cIiBbYWRkcmVzc109XCJxdWVzLnNlbGVjdGVkVmFsdWVcIiBbcXVlc3Rpb25dPVwicXVlc1wiIChsb2NhdGlvblNlbGVjdGVkKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1waWNrLWxvY2F0aW9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gZm9yICB0ZXh0IGFyZWEgICAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdUZXh0QXJlYSdcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS10ZXh0LWFyZWEgW3F1ZXN0aW9uXT1cInF1ZXNcIiBbcmVhZE9ubHldPVwicXVlcy5SZWFkX09ubHlfX2NcIiBbdmFsdWVdPVwicXVlcy5pbnB1dFwiIFtyb3dzXT1cIjNcIiBbZXJyb3JdPVwicXVlcy5lcnJvclwiIFtwbGFjZWhvbGRlcl09XCJxdWVzLlF1ZXN0aW9uX19jIFwiXG4gICAgICAgICAgICAgICAgICAgICh0ZXh0YXJlYVZhbHVlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj48L2FwcC1jdXN0b20tdGV4dC1hcmVhPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gRW1haWwgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnRW1haWwnXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJlbWFpbFwiIHJlYWRPbmx5PVwicXVlcy5SZWFkX09ubHlfX2NcIiBbKG5nTW9kZWwpXT1cInF1ZXMuaW5wdXRcIiBbaWRdPVwicXVlcy5JZFwiIHJlcXVpcmVkPVwiXCIgKGZvY3VzKT1cImNsZWFyU1FFcnJvcihxdWVzLklkKVwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlLmJvcmRlci1jb2xvcj1cInt7IHF1ZXMuZXJyb3IgPyAncmVkJyA6ICcnIH19XCIgcGxhY2Vob2xkZXI9XCJ7eyBxdWVzLlF1ZXN0aW9uX19jIH19XCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIFRhYmxlIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ1RhYmxlJ1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tdGFibGUgW3F1ZXN0aW9uXT1cInF1ZXNcIiBbYXBpTWV0YV09XCJxdWVzLlN1Yl9UZXh0X19jXCIgKHZhbHVlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcyk7IGNsZWFyU1FFcnJvcihxdWVzLklkKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS10YWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDwhLS0gVGFibGUgQXBwZW5kaXggLS0+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdUYWJsZUFwcGVuZGl4J1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC10YWJsZS1hcHBlbmRpeCBbcXVlc3Rpb25dPVwicXVlc1wiICh2YWx1ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpOyBjbGVhclNRRXJyb3IocXVlcy5JZClcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC10YWJsZS1hcHBlbmRpeD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgIDwhLS0gbGlzdCAtLT5cbiAgICAgICAgICAgICA8IS0tIFZEIDIwQXVnMjQgdXNlZCBjb3JyZWN0IGF0dHJpYnV0ZSAtLT5cbiAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnTGlzdCdcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxsaWItc2VhcmNoLWJveCBbcXVlc3Rpb25dPVwicXVlc1wiIFtyZWFkT25seV09XCJxdWVzLlJlYWRfT25seV9fY1wiIFthcGlNZXRhXT1cInF1ZXMuU3ViX1RleHRfX2NcIiBbaWRdPVwicXVlcy5JZFwiIFtwbGFjZUhvbGRlclRleHRdPVwicXVlcy5RdWVzdGlvbl9fY1wiICBbZmlsdGVyTmFtZV09XCJxdWVzLmlucHV0XCIgKHNlYXJjaFZhbHVlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj5cbiAgICAgICAgICAgICAgICA8L2xpYi1zZWFyY2gtYm94PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gRHJvcGRvd24gLS0+XG4gICAgICAgICAgICA8IS0tIEhBIDA5RkVCMjQgQWRkZWQgY29uZGl0aW9uIG9mIHNxT3B0aW9uIHRvIHRoZSBkcm9wZG93biAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdEcm9wZG93bicgJiYgcXVlcz8uUXVlc3Rpb25fT3B0aW9uc19fcj8ucmVjb3Jkc1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBIQSAyMERFQzIzIEZvciBUcmFuc2xhdGlvbiAtLT4gPCEtLSBWRCAxOUpBTjI0IC0gZ2V0dGluZyB0b2tlbiBhcyBpbnB1dCAtLT5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1kcm9wZG93biBbb3B0aW9uc109XCJxdWVzLlF1ZXN0aW9uX09wdGlvbnNfX3IucmVjb3Jkc1wiIFxuICAgICAgICAgICAgICAgICAgICBbdG9rZW5dPVwidG9rZW5cIlxuICAgICAgICAgICAgICAgICAgICBbYXBpTWV0YV09XCJxdWVzLlN1Yl9UZXh0X19jXCIgW2lkXT1cInF1ZXMuSWRcIiBcbiAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwicXVlcy5zZWxlY3RlZFZhbHVlXCIgXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiLS0te3snc2VsZWN0JyB8IGkxOG46aTE4blNlcnZpY2UuY3VycmVudExhbmd1YWdlfX0tLS1cIlxuICAgICAgICAgICAgICAgICAgICBbZXJyb3JNZXNzYWdlXT1cInF1ZXMuRXJyb3JfTWVzc2FnZV9fY1wiIFtlcnJvcl09XCJxdWVzLmVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlZmVyZW5jZUZpZWxkXT1cInF1ZXMuUmVmZXJlbmNlX0ZpZWxkX19jXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInF1ZXMuUmVhZF9Pbmx5X19jXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cInF1ZXNcIlxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKTsgY2xlYXJTUUVycm9yKHF1ZXMuSWQpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgKm5nSWY9XCJxdWVzPy5pbnB1dD8ubGVuZ3RoID4gMFwiPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSAvLyBWRCAwMkF1ZzI0IGN1c3RvbS1yYWRpbyBjb21wb25lbnQgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnUmFkaW8nICYmIHF1ZXM/LlF1ZXN0aW9uX09wdGlvbnNfX3I/LnJlY29yZHNcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLXJhZGlvIFtvcHRpb25zXT1cInF1ZXMuUXVlc3Rpb25fT3B0aW9uc19fci5yZWNvcmRzXCIgW3Rva2VuXT1cInRva2VuXCJcbiAgICAgICAgICAgICAgICAgICAgW2FwaU1ldGFdPVwicXVlcy5TdWJfVGV4dF9fY1wiIFtpZF09XCJxdWVzLklkXCIgW3NlbGVjdGVkVmFsdWVdPVwicXVlcy5zZWxlY3RlZFZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Vycm9yTWVzc2FnZV09XCJxdWVzLkVycm9yX01lc3NhZ2VfX2NcIiBbZXJyb3JdPVwicXVlcy5lcnJvclwiXG4gICAgICAgICAgICAgICAgICAgIFtyZWZlcmVuY2VGaWVsZF09XCJxdWVzLlJlZmVyZW5jZV9GaWVsZF9fY1wiXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJxdWVzLlJlYWRfT25seV9fY1wiXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpOyBjbGVhclNRRXJyb3IocXVlcy5JZClcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tcmFkaW8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBBdHRhY2htZW50IC8gRmlsZXMgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnRmlsZSdcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtZmlsZS11cGxvYWQgW2xpbWl0RmlsZVVwbG9hZGluZ109XCI1XCIgW2Vycm9yXT1cInF1ZXMuZXJyb3JcIiBbcXVlc3Rpb25dPVwicXVlc1wiIFthbGxGaWxlc109XCJxdWVzLmlucHV0XCIgW3RhYmxlRmlsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkRmlsZURhdGEpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiIChkZWxldGVkRmlsZURhdGEpPVwiZGVsZXRlRmlsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbaXNEZWxldGVGaWxlQnV0dG9uVmlzaWJsZV09XCJ0cnVlXCI+PC9hcHAtZmlsZS11cGxvYWQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdQb3BVcE1lc3NhZ2UnXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWRlcGVuZGVudC10YWJsZSBbYWxlcnRNZXNzYWdlXT1cInF1ZXMuRXJyb3JfTWVzc2FnZV9fY1wiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWRlcGVuZGVudC10YWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0xhYmVsJ1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tbGFiZWwgW2xhYmVsU3R5bGVdPVwicXVlcy5UaXRsZV9fY1wiIFtsYWJlbFZhbHVlXT1cInF1ZXMuUXVlc3Rpb25fX2NcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICA8IS0tIC8vIFZEIDAyQXVnMjQgaW1hZ2UgY29tcG9uZW50IC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0ltYWdlJ1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20taW1hZ2UgW3F1ZXN0aW9uXT1cInF1ZXNcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20taW1hZ2U+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gMDhOT1YyMyAtIGJ1dHRvbiB0eXBlIHF1ZXN0aW9uIGFkZGVkIC0tPlxuICAgICAgICAgICAgIDwhLS0gQnV0dG9uIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0J1dHRvbidcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLWJ1dHRvbiBbaGVpZ2h0XT1cIic1MHB4J1wiICBcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiJzE1MHB4J1wiIFxuICAgICAgICAgICAgICAgIFtidXR0b25UZXh0XT1cInF1ZXM/LlF1ZXN0aW9uX19jXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwicXVlcz8uUXVlc3Rpb25fX2NcIlxuICAgICAgICAgICAgICAgIChidXR0b25WYWx1ZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSBIQSAyMERFQzIzICBUaGlzIGlzIHRvIGxvYWQgYm9vayB0eXBlIHF1ZXN0aW9ucy0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0Jvb2snXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBIQSAwOUZFQjI0IEFkZGVkIHRlcm5hcnkgb3BlcmF0b3IgLS0+XG4gICAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbmJvb2sgW3FiSXRlbV09XCJxdWVzLnFiSXRlbVwiIFtsYWJlbFZhbHVlXT1cImxhYmVsVmFsdWVcIiBbcXVlc3Rpb25zXT1cInF1ZXMucWJJdGVtPy5RdWVzdGlvbnNfX3I/LnJlY29yZHNcIiAgKGhhbmRsZURyb3BEb3duKT1cImdldERyb3BEb3duKCRldmVudClcIj48L2xpYi1xdWVzdGlvbmJvb2s+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8IS0tIDA2LTA5LTI0IGZvciBjYWxlbmRhciB0eXBlLS0+XG48bmctdGVtcGxhdGUgZHluYW1pY0NvbXBvbmVudEhvc3Q+PC9uZy10ZW1wbGF0ZT4iXX0=
|
|
413
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25ib29rLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9xdWVzdGlvbmJvb2svcXVlc3Rpb25ib29rLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9xdWVzdGlvbmJvb2svcXVlc3Rpb25ib29rLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFPcEksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUVqRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPckcsTUFBTSxPQUFPLHFCQUFxQjtJQTJCWjtJQUNWO0lBQ0E7SUFDQTtJQUNEO0lBQ0M7SUFDa0I7SUFoQ25CLE1BQU0sQ0FBZTtJQUNyQixZQUFZLENBQVc7SUFDdkIsbUJBQW1CLEdBQVcsRUFBRSxDQUFBLENBQUUsbUNBQW1DO0lBQ3JFLFNBQVMsQ0FBYTtJQUN0QixZQUFZLENBQUs7SUFDakIsVUFBVSxDQUFRO0lBQ2xCLEtBQUssQ0FBUSxDQUFDLHNDQUFzQztJQUNuRCxjQUFjLEdBQXFCLElBQUksWUFBWSxFQUFPLENBQUM7SUFDM0QsY0FBYyxHQUFxQixJQUFJLFlBQVksRUFBTyxDQUFD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QUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQy9GLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQy9GLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQy9GLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlGLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzVGLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzlGLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFF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LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBWaWV3Q2hpbGQsIENoYW5nZURldGVjdG9yUmVmLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBRdWVzdGlvbiwgUXVlc3Rpb25Cb29rIH0gZnJvbSAnLi4vLi4vd3JhcHBlcic7XG5pbXBvcnQgeyBTYWxlc2ZvcmNlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zYWxlc2ZvcmNlLnNlcnZpY2VcIjtcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IENoYW5nZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jaGFuZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IEVycm9yV3JhcHBlciB9IGZyb20gJy4uLy4uL21vZGVsL2Vycm9yV3JhcHBlcic7XG4vLyBIQSAxOURFQzIzIGltcG9ydGVkIHRyYW5zbGF0aW9uIHNlcnZpY2VcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZXBlbmRlbmN5TWV0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZGVwZW5kZW5jeU1ldGEnO1xuaW1wb3J0IHsgQ29tcG9uZW50aG9zdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY29tcG9uZW50aG9zdC9jb21wb25lbnRob3N0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDdXN0b21DYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY3VzdG9tLWNhbGVuZGFyL2N1c3RvbS1jYWxlbmRhci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcXVlc3Rpb25ib29rJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3F1ZXN0aW9uYm9vay5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3F1ZXN0aW9uYm9vay5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUXVlc3Rpb25ib29rQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcWJJdGVtOiBRdWVzdGlvbkJvb2s7XG4gIEBJbnB1dCgpIHF1ZXN0aW9uSXRlbTogUXVlc3Rpb247XG4gIEBJbnB1dCgpIHRyYW5zbGF0ZWRRdWVzdGlvbnMgOiBhbnlbXSA9IFtdICAvLyBWRCAxMUp1bjI0IC0gdHJhbnNsYXRpb24gY2hhbmdlc1xuICBASW5wdXQoKSBxdWVzdGlvbnM6IFF1ZXN0aW9uW107XG4gIEBJbnB1dCgpIGVycm9yRmllbGRJZDphbnk7XG4gIEBJbnB1dCgpIGxhYmVsVmFsdWU6c3RyaW5nOyBcbiAgQElucHV0KCkgdG9rZW46c3RyaW5nOyAvLyBWRCAxOUpBTjI0IC0gZ2V0dGluZyB0b2tlbiBhcyBpbnB1dFxuICBAT3V0cHV0KCkgaGFuZGxlRHJvcERvd246RXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGhhbmRsZVF1ZXN0aW9uOkV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7IC8vIFZEIDE5SnVsMDEgLSBnZXQgdXBkYXRlZCBxdWVzdGlvblxuICBASW5wdXQoKSBkcm9wRG93bkRhdGE6YW55O1xuICBAVmlld0NoaWxkKENvbXBvbmVudGhvc3REaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIGR5bmFtaWNIb3N0OiBDb21wb25lbnRob3N0RGlyZWN0aXZlO1xuICBzdWJRdWVzdGlvbnM6IFF1ZXN0aW9uW107XG4gIHNlbGVjdGVkRmlsZURhdGE6IGFueVtdID0gW107XG4gIGxvYWRDb21wb25lbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIC8vIEhBIDI4REVDMjMgQWRkZWQgc3R5bGluZyBhbmQgbG9naWNzIHRvIGxvYWQgdGhlIGJvb2sgdHlwZSBxdWVzdGlvbnMgXG4gIHFiUmVmOiBRdWVzdGlvbkJvb2s7XG4gIC8vICBIQSAxOURFQzIzIERlY2xhcmF0aW9uIGZvciBTYWxlc2ZvcmNlIFN0eWxpbmdcbiAgc3R5bGU6IGFueTtcbiAgbGFuZ0RpcmVjdGlvbiA9ICdsdHInO1xuICBib29rU3R5bGU6IGFueTtcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIEBPdXRwdXQoKSBoYWRsZURyb3BEb3duRGVwZW5kZW50OkV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgQE91dHB1dCgpIGhhbmRsZUNhbGVuZGFyRGF0ZTpFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGhhbmRsZUNhbGVuZGFyRXZlbnQ6RXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHB1YmxpYyBib29rUXVlc3Rpb25zTWFwOiBhbnkgPSBuZXcgTWFwKCk7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2ZTZXJ2aWNlOiBTYWxlc2ZvcmNlU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZVNlcnZpY2U6IENoYW5nZVNlcnZpY2UsIFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxuICAgIHB1YmxpYyBpMThuU2VydmljZTogSTE4blNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50XG4gICAgKSB7IFxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gVkQgMTNTZXAyNCBjaGFuZ2VzXG4gICAgdGhpcy5wcm9jZXNzRGF0YSgpO1xuICAgIC8vIFZEIHNlcDEzMjQgY2hhbmdlcyAtIHByb2Nlc3MgZGF0YSB3aGVuIGRhdGFiaW5kIHZhbHVlIGNoYW5nZVxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jaGFuZ2VTZXJ2aWNlLmRhdGFCaW5kJC5zdWJzY3JpYmUoXG4gICAgICAoY2hhbmdlVmFsdWUpID0+IHtcbiAgICAgICAgICBpZihjaGFuZ2VWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzRGF0YSgpO1xuXG4gICAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAgLy8gVkQgMTNTZXAyNCBjaGFuZ2VzXG4gIHByb2Nlc3NEYXRhKCl7XG4gICAgY29uc29sZS5sb2coJ2luc2lkZSBRdWVzdGlvbkJvb2tDb21wb25lbnQgT25Jbml0Jyk7XG4gICAgLy8gY29uc29sZS5sb2coJ3FiSXRlbScsIHRoaXMucWJJdGVtKTtcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnF1ZXN0aW9ucyk7XG4gICAgLy8gIEhBIDE5REVDMjMgTG9naWMgZm9yIFF1ZXN0aW9uIEJvb2sgU3R5bGluZyhTbGFlc2ZvcmNlKVxuICAgIC8vIEhBIDA5RkVCMjQgQWRkZWQgdGVybmFyeVxuICAgIGlmKHRoaXMucWJJdGVtPy5TdHlsZV9fYyl7XG4gICAgICAvLyBIQSAyOERFQzIzIEFkZGVkIHN0eWxpbmcgYW5kIGxvZ2ljcyB0byBsb2FkIHRoZSBib29rIHR5cGUgcXVlc3Rpb25zIFxuICAgICAgdGhpcy5xYkl0ZW0uU3R5bGVfX2MgPSB0eXBlb2YgdGhpcy5xYkl0ZW0uU3R5bGVfX2MgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZSgnJyt0aGlzLnFiSXRlbT8uU3R5bGVfX2MpIDogdGhpcy5xYkl0ZW0uU3R5bGVfX2M7XG4gICAgICB0aGlzLnFiSXRlbS5TdHlsZV9fYy5sYWJlbENsYXNzID0gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmxhYmVsQ2xhc3MgPyB0aGlzLnFiSXRlbS5TdHlsZV9fYz8ubGFiZWxDbGFzcyA6IFwiXCI7XG4gICAgICB0aGlzLnFiSXRlbS5TdHlsZV9fYy5sYWJlbFN0eWxlID0gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmxhYmVsU3R5bGUgPyB0aGlzLnFiSXRlbS5TdHlsZV9fYz8ubGFiZWxTdHlsZSA6IFwiXCI7XG4gICAgICB0aGlzLnFiSXRlbS5TdHlsZV9fYy5sYWJlbFZhbHVlU3R5bGUgPSB0aGlzLnFiSXRlbS5TdHlsZV9fYz8ubGFiZWxWYWx1ZVN0eWxlID8gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmxhYmVsVmFsdWVTdHlsZSA6IFwiXCI7XG4gICAgICB0aGlzLnFiSXRlbS5TdHlsZV9fYy5pbnB1dENsYXNzID0gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmlucHV0Q2xhc3MgPyB0aGlzLnFiSXRlbS5TdHlsZV9fYz8uaW5wdXRDbGFzcyA6IFwiXCI7XG4gICAgICB0aGlzLnFiSXRlbS5TdHlsZV9fYy5pbnB1dFN0eWxlID0gdGhpcy5xYkl0ZW0uU3R5bGVfX2MuaW5wdXRTdHlsZSA/IHRoaXMucWJJdGVtLlN0eWxlX19jPy5pbnB1dFN0eWxlIDogXCJcIjtcbiAgICAgIHRoaXMucWJJdGVtLlN0eWxlX19jLmJvb2tTdHlsZSA9IHRoaXMucWJJdGVtLlN0eWxlX19jPy5ib29rU3R5bGUgPyB0aGlzLnFiSXRlbS5TdHlsZV9fYz8uYm9va1N0eWxlIDogXCJcIjtcbiAgICAgIHRoaXMucWJJdGVtLlN0eWxlX19jLnNob3dMYWJlbCA9IHRoaXMucWJJdGVtLlN0eWxlX19jPy5zaG93TGFiZWwgPyB0aGlzLnFiSXRlbS5TdHlsZV9fYz8uc2hvd0xhYmVsIDogdHJ1ZTtcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIGlmKHRoaXMucWJJdGVtKXtcbiAgICAgICAgdGhpcy5xYkl0ZW0uU3R5bGVfX2MgPSB7XG4gICAgICAgICAgXCJsYWJlbENsYXNzXCIgOiBcIlwiLFxuICAgICAgICAgIFwibGFiZWxTdHlsZVwiIDogXCJcIixcbiAgICAgICAgICBcImxhYmVsVmFsdWVTdHlsZVwiIDogXCJcIixcbiAgICAgICAgICBcImlucHV0Q2xhc3NcIiA6IFwiXCIsXG4gICAgICAgICAgXCJpbnB1dFN0eWxlXCIgOiBcIlwiLFxuICAgICAgICAgIFwiYm9va1N0eWxlXCIgOiBcIlwiLFxuICAgICAgICAgIFwic2hvd0xhYmVsXCI6IHRydWUsXG4gICAgICAgICAgXCJkaXJlY3Rpb25cIiA6IFwibHRyXCIsXG4gICAgICAgICAgXCJxdWVzdGlvblN0eWxlXCI6IFwiXCJcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5xYkl0ZW0uU3R5bGVfX2MucXVlc3Rpb25TdHlsZSA9IHRoaXMucWJJdGVtPy5TdHlsZV9fYz8ucXVlc3Rpb25TdHlsZSA/IHRoaXMucWJJdGVtPy5TdHlsZV9fYy5xdWVzdGlvblN0eWxlIDogXCJcIjtcbiAgICB0aGlzLmxhbmdEaXJlY3Rpb24gPSB0aGlzLnFiSXRlbS5TdHlsZV9fYy5kaXJlY3Rpb24gPSB0aGlzLnFiSXRlbT8uU3R5bGVfX2M/LmRpcmVjdGlvbiA/IHRoaXMucWJJdGVtPy5TdHlsZV9fYz8uZGlyZWN0aW9uIDogJ2x0cic7XG4gICAgdGhpcy5ib29rU3R5bGUgPSB0aGlzLnFiSXRlbT8uU3R5bGVfX2M/LmJvb2tTdHlsZTtcbiAgICB0aGlzLnF1ZXN0aW9ucy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgdmFyIGh0bWxFbGVtZW50ID0gZWxlbWVudD8uUXVlc3Rpb25fVGV4dF9fYyA7XG4gICAgICB2YXIgdGV4dE9ubHkgPSBodG1sRWxlbWVudD8ucmVwbGFjZSgvPFtePl0qPi9nLCAnJylcbiAgICAgIGVsZW1lbnQuUXVlc3Rpb25fVGV4dF9fYyA9IHRleHRPbmx5O1xuICAgICAgLy8gIEhBIDE5REVDMjMgTG9naWMgZm9yIFF1ZXN0aW9uIFN0eWxpbmcoU2xhZXNmb3JjZSlcbiAgICAgIC8vIEhBIDI4REVDMjMgQWRkZWQgc3R5bGluZyBhbmQgbG9naWNzIHRvIGxvYWQgdGhlIGJvb2sgdHlwZSBxdWVzdGlvbnMgXG4gICAgICBpZihlbGVtZW50LlR5cGVfX2MgPT09ICdCb29rJyl7XG4gICAgICAgIGlmKGVsZW1lbnRbJ1FCX1JlZmVyZW5jZV9RdWVzdGlvbnNfX2MnXSl7XG4gICAgICAgICAgdmFyIHFiID0gSlNPTi5wYXJzZShlbGVtZW50WydRQl9SZWZlcmVuY2VfUXVlc3Rpb25zX19jJ10pO1xuICAgICAgICAgIGlmKHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYyl7XG4gICAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MgPSB0eXBlb2YgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UoJycrcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jKSA6IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYztcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYyA9IHRoaXMucWJJdGVtLlN0eWxlX19jO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEJvb2sgdHlwZSBxdWVzdGlvbiBzdHlsaW5nXG4gICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmxhYmVsQ2xhc3MgPSBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M/LmxhYmVsQ2xhc3MgPyBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M/LmxhYmVsQ2xhc3MgOiBcIlwiO1xuICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5sYWJlbFN0eWxlID0gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jPy5sYWJlbFN0eWxlID8gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jPy5sYWJlbFN0eWxlIDogXCJcIjtcbiAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MubGFiZWxWYWx1ZVN0eWxlID0gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX18/LmxhYmVsVmFsdWVTdHlsZSA/IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5sYWJlbFZhbHVlU3R5bGUgOiBcIlwiO1xuICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5pbnB1dENsYXNzID0gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jPy5pbnB1dENsYXNzID8gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jPy5pbnB1dENsYXNzIDogXCJcIjtcbiAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MuaW5wdXRTdHlsZSA9IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYz8uaW5wdXRTdHlsZSA/IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYz8uaW5wdXRTdHlsZSA6IFwiXCI7XG4gICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmJvb2tTdHlsZSA9IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYz8uYm9va1N0eWxlID8gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jPy5ib29rU3R5bGUgOiBcIlwiO1xuICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5zaG93TGFiZWwgPSBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M/LnNob3dMYWJlbCA/IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYz8uc2hvd0xhYmVsIDogdHJ1ZTtcbiAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MucXVlc3Rpb25TdHlsZSA9IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYz8ucXVlc3Rpb25TdHlsZSA/IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYz8ucXVlc3Rpb25TdHlsZSA6IFwiXCI7XG4gICAgICAgICAgcWJbJ2xhbmdEaXJlY3Rpb24nXSA9IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5kaXJlY3Rpb24gPyBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M/LmRpcmVjdGlvbiA6IHRoaXMubGFuZ0RpcmVjdGlvbjtcbiAgICAgICAgICBcbiAgICAgICAgICAvLyBMb29wIGZvciBlYWNoIHF1ZXN0aW9uIGluIHRoZSBib29rXG4gICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlF1ZXN0aW9uc19fci5yZWNvcmRzLmZvckVhY2gocXVlc3Rpb25Gcm9tQm9vayA9PiB7XG4gICAgICAgICAgICBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jID0gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYyA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MgOiBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M7XG4gICAgICAgICAgICBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLmxhYmVsQ2xhc3MgPSBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5sYWJlbENsYXNzID8gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8ubGFiZWxDbGFzcyA6IFwiXCI7XG4gICAgICAgICAgICBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLmxhYmVsU3R5bGUgPSBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5sYWJlbFN0eWxlID8gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8ubGFiZWxTdHlsZSA6IFwiXCI7XG4gICAgICAgICAgICBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLmxhYmVsVmFsdWVTdHlsZSA9IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LmxhYmVsVmFsdWVTdHlsZSA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LmxhYmVsVmFsdWVTdHlsZSA6IFwiXCI7XG4gICAgICAgICAgICBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLmlucHV0Q2xhc3MgPSBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5pbnB1dENsYXNzID8gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8uaW5wdXRDbGFzcyA6IFwiXCI7XG4gICAgICAgICAgICBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLmlucHV0U3R5bGUgPSBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5pbnB1dFN0eWxlID8gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8uaW5wdXRTdHlsZSA6IFwiXCI7XG4gICAgICAgICAgICBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLmJvb2tTdHlsZSA9IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LmJvb2tTdHlsZSA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LmJvb2tTdHlsZSA6IFwiXCI7XG4gICAgICAgICAgICBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLnNob3dMYWJlbCA9IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LnNob3dMYWJlbCA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LnNob3dMYWJlbCA6IHRydWU7XG4gICAgICAgICAgICBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jLnF1ZXN0aW9uU3R5bGUgPSBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5xdWVzdGlvblN0eWxlID8gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8ucXVlc3Rpb25TdHlsZSA6IFwiXCI7XG4gICAgICAgICAgICBxdWVzdGlvbkZyb21Cb29rWydsYW5nRGlyZWN0aW9uJ10gPSBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5kaXJlY3Rpb24gPyBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5kaXJlY3Rpb24gOiB0aGlzLmxhbmdEaXJlY3Rpb247XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZWxlbWVudFsncWJJdGVtJ10gPSBxYlsncXVlc3Rpb25ib29rJ107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsZW1lbnQuU3R5bGVfX2MgPSBlbGVtZW50LlN0eWxlX19jID8gdHlwZW9mIGVsZW1lbnQuU3R5bGVfX2MgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZSgnJytlbGVtZW50Py5TdHlsZV9fYykgOiBlbGVtZW50Py5TdHlsZV9fYyA6IHRoaXMucWJJdGVtPy5TdHlsZV9fYztcblxuICAgICAgZWxlbWVudC5TdHlsZV9fYy5sYWJlbENsYXNzID0gZWxlbWVudC5TdHlsZV9fYz8ubGFiZWxDbGFzcyA/IGVsZW1lbnQuU3R5bGVfX2M/LmxhYmVsQ2xhc3MgOiBcIlwiO1xuICAgICAgZWxlbWVudC5TdHlsZV9fYy5sYWJlbFN0eWxlID0gZWxlbWVudC5TdHlsZV9fYz8ubGFiZWxTdHlsZSA/IGVsZW1lbnQuU3R5bGVfX2M/LmxhYmVsU3R5bGUgOiBcIlwiO1xuICAgICAgZWxlbWVudC5TdHlsZV9fYy5sYWJlbFZhbHVlU3R5bGUgPSBlbGVtZW50LlN0eWxlX19jPy5sYWJlbFZhbHVlU3R5bGUgPyBlbGVtZW50LlN0eWxlX19jLmxhYmVsVmFsdWVTdHlsZSA6IFwiXCI7XG4gICAgICBlbGVtZW50LlN0eWxlX19jLmlucHV0Q2xhc3MgPSBlbGVtZW50LlN0eWxlX19jPy5pbnB1dENsYXNzID8gZWxlbWVudC5TdHlsZV9fYz8uaW5wdXRDbGFzcyA6IFwiXCI7XG4gICAgICBlbGVtZW50LlN0eWxlX19jLmlucHV0U3R5bGUgPSBlbGVtZW50LlN0eWxlX19jLmlucHV0U3R5bGUgPyBlbGVtZW50LlN0eWxlX19jPy5pbnB1dFN0eWxlIDogXCJcIjtcbiAgICAgIGVsZW1lbnQuU3R5bGVfX2MuYm9va1N0eWxlID0gZWxlbWVudC5TdHlsZV9fYz8uYm9va1N0eWxlID8gZWxlbWVudC5TdHlsZV9fYz8uYm9va1N0eWxlIDogXCJcIjtcbiAgICAgIGVsZW1lbnQuU3R5bGVfX2Muc2hvd0xhYmVsID0gZWxlbWVudC5TdHlsZV9fYz8uc2hvd0xhYmVsID8gZWxlbWVudC5TdHlsZV9fYz8uc2hvd0xhYmVsIDogdHJ1ZTtcbiAgICAgIGVsZW1lbnQuU3R5bGVfX2MucXVlc3Rpb25TdHlsZSA9IGVsZW1lbnQuU3R5bGVfX2M/LnF1ZXN0aW9uU3R5bGUgPyBlbGVtZW50LlN0eWxlX19jPy5xdWVzdGlvblN0eWxlIDogXCJcIjtcblxuICAgICAgZWxlbWVudFsnbGFuZ0RpcmVjdGlvbiddID0gZWxlbWVudC5TdHlsZV9fYz8uZGlyZWN0aW9uID8gZWxlbWVudC5TdHlsZV9fYz8uZGlyZWN0aW9uIDogdGhpcy5sYW5nRGlyZWN0aW9uO1xuXG5cbiAgICAgIC8vVkQgMDJBdWcyNCBkZXBlbmRlbnQgZmllbGQgc2hvdy9oaWRlIGNoYW5nZXNcbiAgICAgIGlmKGVsZW1lbnQuUmVmZXJlbmNlX0ZpZWxkX19jKXtcbiAgICAgICAgZWxlbWVudC5kZXBlbmRlbnRSZWYgPSBlbGVtZW50LlJlZmVyZW5jZV9GaWVsZF9fYztcbiAgICAgIH1cbiAgICAgIGlmKGVsZW1lbnQuU3ViX1RleHRfX2Mpe1xuICAgICAgICAgbGV0IGRlcGVuZGVuY3lPYmo6IERlcGVuZGVuY3lNZXRhID0gSlNPTi5wYXJzZShlbGVtZW50LlN1Yl9UZXh0X19jKTtcbiAgICAgICAgIGlmKGRlcGVuZGVuY3lPYmouaXNEZXBlbmRlbnRGaWVsZCl7XG4gICAgICAgICAgICBlbGVtZW50LklzX0hpZGVfX2MgPSB0cnVlO1xuICAgICAgICAgfVxuICAgICAgICAvLyBWRCAwN0F1ZzI0IC0gaXNEZXBlbmRlbnRGaWVsZCBjaGFuZ2VcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY2hhbmdlU2VydmljZS5jaGFuZ2VBbm5vdW5jZWQkLnN1YnNjcmliZShcbiAgICAgICAgICAgIChjaGFuZ2VWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgLy8gVkQgMjBBdWcyNCAtIGlzRGVwZW5kZW50RmllbGQgY2hhbmdlXG4gICAgICAgICAgICAgIGlmKGNoYW5nZVZhbHVlICE9IHVuZGVmaW5lZCAmJiBkZXBlbmRlbmN5T2JqLmlzRGVwZW5kZW50RmllbGQpIHtcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnaW5zaWRlIHN1YnNjcmlwdGlvbiBmb3IgdGhlIGNoYW5nZScpO1xuICAgICAgICAgICAgICAgIGlmKGNoYW5nZVZhbHVlLnZhbHVlT2JqICE9IHVuZGVmaW5lZCAmJiBjaGFuZ2VWYWx1ZS5mcm9tUXVlc3Rpb25JZCA9PSBkZXBlbmRlbmN5T2JqLnNvdXJjZVF1ZXN0aW9uSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygnb3V0c2lkZS0tPicsZWxlbWVudC5Jc19IaWRlX19jKTtcbiAgICAgICAgICAgICAgICAgICAvLyBlbGVtZW50LmlzSGlkZGVuRmllbGQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgaWYoZGVwZW5kZW5jeU9iai5kZXBlbmRlbnRWYWx1ZSA9PSBjaGFuZ2VWYWx1ZS52YWx1ZU9iail7XG4gICAgICAgICAgICAgICAgICAgICBlbGVtZW50LklzX0hpZGVfX2MgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuaW5wdXQgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc2VsZWN0ZWRWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgaWYoZWxlbWVudC5kZXBlbmRlbnRSZWYgPT0gY2hhbmdlVmFsdWUucmVmZXJlbmNlRmllbGQpe1xuICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuUmVmZXJlbmNlX0ZpZWxkX19jID0gY2hhbmdlVmFsdWUucmVmZXJlbmNlRmllbGQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5Jc19IaWRlX19jID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5pbnB1dCA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnNlbGVjdGVkVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZURlcGVuZGVudEVsZW1lbnRzKGVsZW1lbnQuSWQpO1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBubyBkZXBlbmRlbnQgc2VsZWN0aW9uIHJlbW92ZSB0aGUgcmVmZXJlbmNlXG4gICAgICAgICAgICAgICAgICAgIGlmKGVsZW1lbnQuZGVwZW5kZW50UmVmID09IGNoYW5nZVZhbHVlLnJlZmVyZW5jZUZpZWxkKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuUmVmZXJlbmNlX0ZpZWxkX19jID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnVwZGF0ZShlbGVtZW50KTtcbiAgICAgIH1cbiAgICAgIC8vIFZEIDA2LTA5LTI0IHRvIGNhbGwgdGhlIGNhbGVuZGFyIGNvbXBvbmVudFxuICAgICAgaWYgKGVsZW1lbnQuVHlwZV9fYyA9PT0gJ0NhbGVuZGFyJykge1xuICAgICAgICB0aGlzLm9wZW5DYWxlbmRhckNvbXBvbmVudChlbGVtZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnN1YlF1ZXN0aW9ucyA9IFtdO1xuICAgIHRoaXMuc2V0U3ViUXVlc3Rpb25zKHRoaXMucXVlc3Rpb25zKTtcbiAgICB0aGlzLnByb2Nlc3NUcmFuc2xhdGVkUXVlc3Rpb25zKCk7IFxuICB9XG4vLyBWRCAwN0F1ZzI0IC0gaXNEZXBlbmRlbnRGaWVsZCBjaGFuZ2VcbiAgaGlkZURlcGVuZGVudEVsZW1lbnRzKGVsZW1lbnRJZCkge1xuICAgIGxldCBlbGVtZW50c1RvSGlkZSA9IHRoaXMucXVlc3Rpb25zLmZpbHRlcihlbCA9PiB7XG4gICAgICAgIGlmIChlbC5TdWJfVGV4dF9fYykge1xuICAgICAgICAgICAgbGV0IGRlcE9iaiA9IEpTT04ucGFyc2UoZWwuU3ViX1RleHRfX2MpO1xuICAgICAgICAgICAgcmV0dXJuIGRlcE9iai5zb3VyY2VRdWVzdGlvbklkID09IGVsZW1lbnRJZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG5cbiAgICBlbGVtZW50c1RvSGlkZS5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgZWwuSXNfSGlkZV9fYyA9IHRydWU7XG4gICAgICAgIGVsLmlucHV0ID0gJyc7XG4gICAgICAgIGVsLnNlbGVjdGVkVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UudXBkYXRlKGVsKTtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgaGlkZSBlbGVtZW50cyBkZXBlbmRlbnQgb24gdGhpcyBvbmVcbiAgICAgICAgdGhpcy5oaWRlRGVwZW5kZW50RWxlbWVudHMoZWwuSWQpO1xuICAgIH0pO1xufVxuXG4gIGNsZWFyU1FFcnJvcihxdWVzSWQpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnaW5zaWRlIFF1ZXN0aW9uQm9va0NvbXBvbmVudCBjbGVhclNRRXJyb3InKTtcbiAgICB2YXIgc3FMaXN0ID0gdGhpcy5zdWJRdWVzdGlvbnM/LmZpbHRlcigoaXRlbSkgPT4gaXRlbS5JZCA9PSBxdWVzSWQpO1xuICAgIGZvciAodmFyIHNxIG9mIHNxTGlzdCkge1xuICAgICAgc3EuZXJyb3IgPSBudWxsO1xuICAgIH1cbiAgfVxuIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gIHByb2Nlc3NUcmFuc2xhdGVkUXVlc3Rpb25zKCl7XG4gICAgaWYgKHRoaXMudHJhbnNsYXRlZFF1ZXN0aW9ucyAmJiB0aGlzLnRyYW5zbGF0ZWRRdWVzdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5xdWVzdGlvbnMuZm9yRWFjaCgob3JnUXVlc3Rpb246IGFueSk9PiB7XG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVkUXVlc3Rpb25zLmZvckVhY2goKHRyYW5zUXVlc3Rpb246YW55KSA9PiB7XG4gICAgICAgICAgICAgaWYob3JnUXVlc3Rpb24uVW5pcXVlX0lkZW50aWZpZXJfX2MgPT0gdHJhbnNRdWVzdGlvbi5pZGVudGlmaWVyKXtcbiAgICAgICAgICAgICAgIG9yZ1F1ZXN0aW9uLlF1ZXN0aW9uX1RleHRfX2MgPSB0cmFuc1F1ZXN0aW9uLmxhYmVsO1xuICAgICAgICAgICAgICAgb3JnUXVlc3Rpb24uUXVlc3Rpb25fX2MgPSB0cmFuc1F1ZXN0aW9uLnBsYWNlSG9sZGVyO1xuICAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICBjb25zb2xlLmxvZygnb3JpZ2luYWxRdWVzdGlvbicgKyB0aGlzLnF1ZXN0aW9ucyk7XG4gICAgIGNvbnNvbGUubG9nKHRoaXMucXVlc3Rpb25zKTtcbiAgICB9XG4gIH1cblxuICBzZXRTdWJRdWVzdGlvbnMocmVjb3Jkcykge1xuICAgIGNvbnNvbGUubG9nKCdpbnNpZGUgUXVlc3Rpb25ib29rQ29tcG9uZW50IHNldFN1YlF1ZXN0aW9ucycpO1xuICAgIHRoaXMuc3ViUXVlc3Rpb25zLnB1c2gocmVjb3Jkcyk7XG4gIH1cblxuICAvLyBDYXB0dXJlIGFuZCBQcm9jZXNzIENoaWxkIEV2ZW50XG4gIGNoaWxkRXZlbnRDYXB0dXJlKGV2ZW50LCBxdWVzPzphbnkpIHtcbiAgICBsZXQgZHJvcGRvd25EYXRhID0gIHt9O1xuICAgLy8gY29uc29sZS5sb2coJ2luc2lkZSBRdWVzdGlvbmJvb2tDb21wb25lbnQgY2hpbGRFdmVudENhcHR1cmUnKTtcbiAgICBjb25zb2xlLmxvZyhldmVudCk7XG4gICAgdGhpcy5jaGFuZ2VTZXJ2aWNlLmFubm91bmNlQ2hhbmdlKGV2ZW50KTtcbiAgICBpZihxdWVzKXtcbiAgICAgIGlmKHF1ZXMuVHlwZV9fYyA9PSAnRHJvcGRvd24nIHx8cXVlcy5UeXBlX19jID09ICdSYWRpbycgKSB7XG4gICAgICAgIC8vIEhBIDE5SkFOMjQgQ29ycmVjdGlvbiBvZiBkcm9wZG93biB2YWx1ZXNcbiAgICAgICAgcXVlcy5zZWxlY3RlZE9iaiA9IGV2ZW50LnZhbHVlT2JqID8gZXZlbnQudmFsdWVPYmogOiBudWxsO1xuICAgICAgICBxdWVzLmlucHV0ID0gZXZlbnQuc2VsZWN0ZWRPYmogPyBldmVudC5zZWxlY3RlZE9iaiA6IGV2ZW50LnZhbHVlT2JqO1xuICAgICAgICBxdWVzLnNlbGVjdGVkVmFsdWUgPSBldmVudC52YWx1ZU9iaiA/IGV2ZW50LnZhbHVlT2JqIDogbnVsbDtcbiAgICAgICAgLy8gZW1pdCB0aGUgZHJvcGRvd24gZGF0YSB0byBwYXJlbnRcbiAgICAgICAgZHJvcGRvd25EYXRhWydldmVudCddID0gZXZlbnQudmFsdWVPYmo7XG4gICAgICAgIGRyb3Bkb3duRGF0YVsncXVlcyddID0gcXVlcztcbiAgICAgICAgaWYoZHJvcGRvd25EYXRhWydldmVudCddKXtcbiAgICAgICAgICB0aGlzLmhhbmRsZURyb3BEb3duLmVtaXQoZHJvcGRvd25EYXRhKTtcbiAgICAgICAgfSAgLy8gVkQgMjFERUMyMyAtIGRlcGVuZGVudCBmaWVsZCBjaGFuZ2VcbiAgICAgIH0gZWxzZSBpZihxdWVzLlR5cGVfX2MgPT0gJ0xvY2F0aW9uJyl7XG4gICAgICAgIHF1ZXMuaW5wdXQgPSBldmVudC52YWx1ZU9iajtcbiAgICAgICAgcXVlcy5zZWxlY3RlZFZhbHVlID0gZXZlbnQudmFsdWVPYmouYWRkcmVzcztcbiAgICAgIH1lbHNlIGlmKHF1ZXMuVHlwZV9fYyA9PSAnRmlsZScpeyBcbiAgICAgICAgcXVlcy5pbnB1dCA9IHRoaXMuc2VsZWN0ZWRGaWxlRGF0YSA9IGV2ZW50O1xuICAgICAgfWVsc2UgaWYocXVlcy5UeXBlX19jID09ICdEYXRlJyB8fCBxdWVzLlR5cGVfX2MgPT0gJ0RhdGVUaW1lJyl7IC8vIEhBIDI0SkFOMjQgQ29udmVydGluZyBEYXRlIGFuZCBEYXRlVGltZSB0byBVVENcbiAgICAgICAgIGlmKGV2ZW50LnZhbHVlKXtcbiAgICAgICAgICBsZXQgZCA9IG5ldyBEYXRlKGV2ZW50LnZhbHVlKTtcbiAgICAgICAgICBsZXQgdXRjU3RyaW5nID0gZC50b0lTT1N0cmluZygpO1xuICAgICAgICAgIHF1ZXMuaW5wdXQgPSB1dGNTdHJpbmc7XG4gICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgcXVlcy5pbnB1dCA9ICcnO1xuICAgICAgICAgfVxuICAgICAgfWVsc2UgaWYocXVlcy5UeXBlX19jID09ICdMaXN0Jyl7XG4gICAgICAgIC8vIFZEIDIwQXVnMjQgaGFuZGxpbmcgdGhlIGxpc3QgdHlwZSAgaGFuZGxlIG11bHRpcGxlIG9iamVjdCB2YWx1ZXNcbiAgICAgICAgcXVlcy5pbnB1dCA9IHRoaXMuZGF0YVNlcnZpY2UuZ2V0VmFsdWUoZXZlbnQudmFsdWVPYmosZXZlbnQuZmllbGQpO1xuICAgICAgfWVsc2V7XG4gICAgICAgIHF1ZXMuaW5wdXQgPSBldmVudDtcbiAgICAgIH1cbiAgICAgIC8vIHZhbGlkYXRpbmcgICBlcnJvciBtZXNzYWdlXG4gICAgICBjb25zdCBoYXNFcnJvciA9IHF1ZXMuRXJyb3JfTWVzc2FnZV9fYyAmJiAoKHF1ZXMuVHlwZV9fYyA9PT0gJ0ZpbGUnICYmIHF1ZXMuaW5wdXQubGVuZ3RoID09IDApIHx8IChxdWVzLlR5cGVfX2MgIT0gJ0ZpbGUnICYmICFxdWVzLmlucHV0KSk7XG4gICAgICBxdWVzLmVycm9yID0gaGFzRXJyb3IgPyBuZXcgRXJyb3JXcmFwcGVyKCkgOiBudWxsO1xuICAgICAgLy8gT25jZSB0aGUgcmlnaHQgdmFsdWUgaXMgc3RvcmVkIGluIHF1ZXMuaW5wdXQgc3RvcmUgdGhlIHF1ZXMgKHdpdGggaW5wdXQpIGluIHN0b3JhZ2VTZXJ2aWNlXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnVwZGF0ZShxdWVzKTtcbiAgICAgIC8vIFZEIDE5SnVsMDEgLSBnZXQgdXBkYXRlZCBxdWVzdGlvblxuICAgICAgdGhpcy5oYW5kbGVRdWVzdGlvbi5lbWl0KHF1ZXMpO1xuICAgIH1cbiAgfVxuICBkZWxldGVGaWxlKGZpbGVEYXRhOmFueSl7XG4gICAgY29uc29sZS5sb2coJ2ZpbGVEQVRBJyxmaWxlRGF0YSlcbiAgfVxuICBnZXREcm9wRG93bihldmVudDphbnkpe1xuICAgIHRoaXMuaGFkbGVEcm9wRG93bkRlcGVuZGVudC5lbWl0KGV2ZW50KTtcbiAgfVxuLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gIGdldEN1cnJlbnRDYWxlbmRhcihldmVudDphbnkpe1xuICAgIHRoaXMuaGFuZGxlQ2FsZW5kYXJEYXRlLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgZ2V0Q2FsZW5kYXJFdmVudChldmVudDphbnkpe1xuICAgIGlmKGV2ZW50KXtcbiAgICAgIHRoaXMuaGFuZGxlQ2FsZW5kYXJFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuIC8vIFZEIDA2U2VwMjQgcmVtb3ZlIHRoZSBzcGVjaWFsIGNoYXJlY3RlcnMgYW5kIHRhZ3MgXG4gIC8vIGZyb20gdGhlIHF1ZXN0aW9uVGV4dFxuICByZW1vdmVDaGFyYWN0ZXJzKHF1ZXN0aW9uVGV4dDpzdHJpbmcpe1xuICAgICBsZXQgdXBkYXRlZFRleHQgPSBxdWVzdGlvblRleHQ/LnJlcGxhY2UoLzxbXj5dKj4vZywgJycpO1xuICAgICByZXR1cm4gdXBkYXRlZFRleHQ7XG4gIH1cblxuXG4gIC8vIG9wZW5DYWxlbmRhckNvbXBvbmVudChxdWVzKSB7XG4gIC8vICAgY29uc3Qgdmlld0NvbnRhaW5lclJlZiA9IHRoaXMuZHluYW1pY0hvc3Qudmlld0NvbnRhaW5lclJlZjtcbiAgLy8gICBpZih2aWV3Q29udGFpbmVyUmVmKXtcbiAgLy8gICAgIHZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgLy8gICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KEN1c3RvbUNhbGVuZGFyQ29tcG9uZW50KTtcbiAgLy8gICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5xdWVzdGlvbiA9IHF1ZXM7XG4gIC8vICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZGF0ZVNlbGVjdGVkLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4gdGhpcy5nZXRDdXJyZW50Q2FsZW5kYXIoZXZlbnQpKTtcbiAgLy8gICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5ldmVudFNlbGVjdGVkLnN1YnNjcmliZSgoZXZlbnQ6YW55KSA9PiB0aGlzLmdldENhbGVuZGFyRXZlbnQoZXZlbnQpKVxuICAvLyAgIH1cbiAgLy8gfVxuICBcbiAgb3BlbkNhbGVuZGFyQ29tcG9uZW50KHF1ZXMpIHtcbiAgICBjb25zdCB2aWV3Q29udGFpbmVyUmVmID0gdGhpcy5keW5hbWljSG9zdC52aWV3Q29udGFpbmVyUmVmO1xuICAgIGxldCBjYWxlbmRhckNvbXBvbmVudFJlZjtcbiAgXG4gICAgLy8gQ2hlY2sgaWYgdGhlIENhbGVuZGFyIGNvbXBvbmVudCBhbHJlYWR5IGV4aXN0c1xuICAgIGlmICh2aWV3Q29udGFpbmVyUmVmLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIEFzc3VtaW5nIHRoZSBjYWxlbmRhciBjb21wb25lbnQgaXMgdGhlIG9ubHkgY29tcG9uZW50IGluIHRoaXMgY29udGFpbmVyXG4gICAgICBjYWxlbmRhckNvbXBvbmVudFJlZiA9IHZpZXdDb250YWluZXJSZWYuZ2V0KDApO1xuICAgICAgXG4gICAgICAvLyBDaGVjayBpZiB0aGUgY29tcG9uZW50IGlzIGluZGVlZCB0aGUgQ3VzdG9tQ2FsZW5kYXJDb21wb25lbnRcbiAgICAgIGlmIChjYWxlbmRhckNvbXBvbmVudFJlZiAmJiBjYWxlbmRhckNvbXBvbmVudFJlZi5pbnN0YW5jZSBpbnN0YW5jZW9mIEN1c3RvbUNhbGVuZGFyQ29tcG9uZW50KSB7XG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgZXhpc3RpbmcgaW5zdGFuY2Ugd2l0aCBuZXcgaW5wdXRcbiAgICAgICAgY2FsZW5kYXJDb21wb25lbnRSZWYuaW5zdGFuY2UucXVlc3Rpb24gPSBxdWVzO1xuICAgICAgfVxuICAgIH0gXG4gICAgaWYgKCFjYWxlbmRhckNvbXBvbmVudFJlZikge1xuICAgICAgLy8gSWYgdGhlIGNvbXBvbmVudCBkb2Vzbid0IGV4aXN0LCBjcmVhdGUgYSBuZXcgb25lXG4gICAgICB2aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgICBjYWxlbmRhckNvbXBvbmVudFJlZiA9IHZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KEN1c3RvbUNhbGVuZGFyQ29tcG9uZW50KTtcbiAgICAgIGNhbGVuZGFyQ29tcG9uZW50UmVmLmluc3RhbmNlLnF1ZXN0aW9uID0gcXVlcztcbiAgICAgIFxuICAgICAgLy8gU3Vic2NyaWJlIHRvIGV2ZW50c1xuICAgICAgY2FsZW5kYXJDb21wb25lbnRSZWYuaW5zdGFuY2UuZGF0ZVNlbGVjdGVkLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4gdGhpcy5nZXRDdXJyZW50Q2FsZW5kYXIoZXZlbnQpKTtcbiAgICAgIGNhbGVuZGFyQ29tcG9uZW50UmVmLmluc3RhbmNlLmV2ZW50U2VsZWN0ZWQuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB0aGlzLmdldENhbGVuZGFyRXZlbnQoZXZlbnQpKTtcbiAgICB9XG4gIH1cbiAgXG59XG4iLCI8IS0tIEhBIDIwREVDMjMgQm9vayBTdHlsZSBmcm9tIHNhbGVzZm9yY2UgLS0+XG48IS0tIEhBIDI4REVDMjMgIFJlbW92ZWQgSXNTaGVuZ2VsKHJlbW92YWwgb2Ygc2hlbmdlbCB2YWx1ZXMgYXBwbGllcyBmb3IgdGhpcyByZWFzb24pIGFuZCBkaXJlY3Qgc3R5bGluZyBvZiBib29rcyB0byBhdm9pZCBzdHlsaW5nIGlzc3Vlcy0tPlxuPCEtLSBIQSAxOEpBTjI0ICBBZGRlZCBjbGFzcyBmb3Igc3R5bGluZyAtLT5cbjxkaXYgW3N0eWxlXT1cImJvb2tTdHlsZVwiIGNsYXNzPVwiY29udGVudC1ib3ggZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxuICAgICAgICA8IS0tIEhBIDIwREVDMjMgRGlyZWN0aXZlIGFuZCBRdWVzdGlvbiBTdHlsZSBmcm9tIHNhbGVzZm9yY2UgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtjbGFzc109XCInY29sLWxnLScgKyBxdWVzLlNpemVfX2MgKyAnIHBhZGRpbmdub25lJ1wiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgcXVlcyBvZiBxdWVzdGlvbnM7bGV0IGkgPSBpbmRleFwiIFtpZF09XCJxdWVzLklkXCIgW2Rpcl09XCJxdWVzLmxhbmdEaXJlY3Rpb25cIiBbc3R5bGVdPVwicXVlcz8uU3R5bGVfX2M/LnF1ZXN0aW9uU3R5bGVcIj5cbiAgICAgICAgICAgIDwhLS0gU3ViIFF1ZXN0aW9uIExhYmVsIC0tPlxuICAgICAgICAgICAgPCEtLSBIQSAyMERFQzIzIExhYmVsIFN0eWxlIGZyb20gc2FsZXNmb3JjZSAtLT5cbiAgICAgICAgICAgIDwhLS0gVkQgMDlNYXkyNCBpcyBoaWRlIGZpZWxkIGNoYW5nZS0tPlxuICAgICAgICAgPGRpdiAqbmdJZj1cIiFxdWVzLklzX0hpZGVfX2NcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdEYXRlVGltZSdcIj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIFZEIDIwSlVOMjQgLSBoZWxwIHRleHQgY2hhbmdlcy0tPlxuICAgICAgICAgICAgPCEtLSBWRCAwMUF1ZzI0IC0gdmFsaWRhdGlvbiBjaGFuZ2UtLT5cbiAgICAgICAgICAgIDwhLS0gLy8gVkQgMDJBdWcyNCAtIGxhYmVsIHZhbHVlIHN0eWxlLS0+XG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgZG93bjI6IHFiSXRlbT8uUHJvZ3Jlc3NfQmFyX19jIH1cIiAqbmdJZj1cInF1ZXMuU3R5bGVfX2M/LnNob3dMYWJlbCA/IHF1ZXMuU3R5bGVfX2M/LnNob3dMYWJlbCA6IHRydWVcIiBbc3R5bGVdPVwicXVlcy5TdHlsZV9fYz8ubGFiZWxTdHlsZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCInZGlzLWZsZXggc2hlbmdlbC1teXQtZm9udDMgbXl0LWZvbnQ3ICdcIiBbc3R5bGVdPVwicXVlcy5TdHlsZV9fYz8ubGFiZWxWYWx1ZVN0eWxlXCI+e3sgcmVtb3ZlQ2hhcmFjdGVycyhxdWVzPy5RdWVzdGlvbl9UZXh0X19jKSB9fSBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAgKm5nSWY9XCJxdWVzLklzX09wdGlvbmFsX19jXCIgc3R5bGU9XCJjb2xvcjogcmVkO1wiPio8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuUXVlc3Rpb25fVGV4dF9fYyAmJiBxdWVzPy5IZWxwX1RleHRfX2NcIiBjbGFzcz1cImljb25cIiBbbWF0VG9vbHRpcF09XCJxdWVzPy5IZWxwX1RleHRfX2NcIj5pPC9kaXY+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIC8vIFZEIDEySnVuMjQgLSByZWFkb25seSBjaGFuZ2UtLT5cbiAgICAgICAgICAgIDwhLS0gRGF0ZVRpbWUgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnRGF0ZVRpbWUnXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tZGF0ZS1waWNrZXIgW21pbkRhdGVdPVwicXVlcy5taW5EYXRlXCIgW2Vycm9yXT1cInF1ZXMuZXJyb3JcIiBbZXJyb3JNZXNzYWdlXT1cInF1ZXMuRXJyb3JfTWVzc2FnZV9fY1wiIFtyZWFkT25seV09XCJxdWVzLlJlYWRfT25seV9fY1wiIFtkYXRlXT1cInF1ZXMuaW5wdXRcIiAoZGF0ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLWRhdGUtcGlja2VyPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICA8IS0tIERhdGUtLT5cbiAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnRGF0ZSdcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1kYXRlICBbZGF0ZV09XCJxdWVzLmlucHV0XCIgW2Vycm9yXT1cInF1ZXMuZXJyb3JcIiBbZXJyb3JNZXNzYWdlXT1cInF1ZXMuRXJyb3JfTWVzc2FnZV9fY1wiIFtyZWFkT25seV09XCJxdWVzLlJlYWRfT25seV9fY1wiIChkYXRlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tZGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgPCEtLSBUaW1lLS0+XG4gICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ1RpbWUnXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tdGltZSAgW3RpbWVdPVwicXVlcy5pbnB1dFwiIFtlcnJvcl09XCJxdWVzLmVycm9yXCIgW2Vycm9yTWVzc2FnZV09XCJxdWVzLkVycm9yX01lc3NhZ2VfX2NcIiBbcmVhZE9ubHldPVwicXVlcy5SZWFkX09ubHlfX2NcIiAodGltZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLXRpbWU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgPCEtLSBjYWxlbmRhciAgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnQ2FsZW5kYXInXCI+XG4gICAgICAgICAgICAgICAgPCEtLSA8YXBwLWN1c3RvbS1jYWxlbmRhciBbcXVlc3Rpb25dPVwicXVlc1wiICAoZXZlbnRTZWxlY3RlZCk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCIgKGRhdGVTZWxlY3RlZCk9XCJnZXRDdXJyZW50Q2FsZW5kYXIoJGV2ZW50KVwiPjwvYXBwLWN1c3RvbS1jYWxlbmRhcj4gLS0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gVGV4dCAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdUZXh0JyB8fCBxdWVzLlR5cGVfX2MgPT09ICdMaW5rJ1wiID5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1pbnB1dCBbdmFsdWVdPVwicXVlcy5pbnB1dFwiIFtuZ0NsYXNzVmFsdWVdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpcy1mbGV4IGR0LWxpbmUgZGF0ZS1saW5lIGJvb2tUZXh0IGJveG91dGxpbmUgbXl0LWZvbnQxJzogcWJJdGVtLlByb2dyZXNzX0Jhcl9fYyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRCb3g6ICFxYkl0ZW0uUHJvZ3Jlc3NfQmFyX19jXG4gICAgICAgICAgICAgICAgICAgIH1cIiBbcXVlc3Rpb25dPVwicXVlc1wiIFtyZWFkT25seV09XCJxdWVzLlJlYWRfT25seV9fY1wiIFtpZFZhbHVlXT1cInF1ZXMuVHJhY2tpbmdfSURfX2NcIiBbZm9jdXNFdmVudF09XCJjbGVhclNRRXJyb3IocXVlcy5JZClcIlxuICAgICAgICAgICAgICAgICAgICBbZXJyb3JdPVwicXVlcy5lcnJvclwiIFtwbGFjZWhvbGRlcl09XCJxdWVzLlF1ZXN0aW9uX19jXCIgKGlucHV0VmFsdWUpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS1pbnB1dD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8IS0tIGZvciBwaWNrIGxvY2F0aW9uIC0tPlxuICAgICAgICAgICAgPCEtLSAgIFZEIDIxREVDMjMgLSBkZXBlbmRlbnQgZmllbGQgY2hhbmdlIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0xvY2F0aW9uJ1wiPlxuICAgICAgICAgICAgPCEtLSBIQTEwMDEyMDI0IEFkZGVkIEFwaSBrZXkgYXMgaW5wdXQgLS0+XG4gICAgICAgICAgICAgICAgPGFwcC1waWNrLWxvY2F0aW9uIFthcGlLZXldPVwicWJJdGVtWydBcGlfS2V5X19jJ11cIiBbYWRkcmVzc109XCJxdWVzLnNlbGVjdGVkVmFsdWVcIiBbcXVlc3Rpb25dPVwicXVlc1wiIChsb2NhdGlvblNlbGVjdGVkKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1waWNrLWxvY2F0aW9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gZm9yICB0ZXh0IGFyZWEgICAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdUZXh0QXJlYSdcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS10ZXh0LWFyZWEgW3F1ZXN0aW9uXT1cInF1ZXNcIiBbcmVhZE9ubHldPVwicXVlcy5SZWFkX09ubHlfX2NcIiBbdmFsdWVdPVwicXVlcy5pbnB1dFwiIFtyb3dzXT1cIjNcIiBbZXJyb3JdPVwicXVlcy5lcnJvclwiIFtwbGFjZWhvbGRlcl09XCJxdWVzLlF1ZXN0aW9uX19jIFwiXG4gICAgICAgICAgICAgICAgICAgICh0ZXh0YXJlYVZhbHVlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj48L2FwcC1jdXN0b20tdGV4dC1hcmVhPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gRW1haWwgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnRW1haWwnXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJlbWFpbFwiIHJlYWRPbmx5PVwicXVlcy5SZWFkX09ubHlfX2NcIiBbKG5nTW9kZWwpXT1cInF1ZXMuaW5wdXRcIiBbaWRdPVwicXVlcy5JZFwiIHJlcXVpcmVkPVwiXCIgKGZvY3VzKT1cImNsZWFyU1FFcnJvcihxdWVzLklkKVwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlLmJvcmRlci1jb2xvcj1cInt7IHF1ZXMuZXJyb3IgPyAncmVkJyA6ICcnIH19XCIgcGxhY2Vob2xkZXI9XCJ7eyBxdWVzLlF1ZXN0aW9uX19jIH19XCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIFRhYmxlIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ1RhYmxlJ1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tdGFibGUgW3F1ZXN0aW9uXT1cInF1ZXNcIiBbYXBpTWV0YV09XCJxdWVzLlN1Yl9UZXh0X19jXCIgKHZhbHVlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcyk7IGNsZWFyU1FFcnJvcihxdWVzLklkKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS10YWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDwhLS0gVGFibGUgQXBwZW5kaXggLS0+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdUYWJsZUFwcGVuZGl4J1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC10YWJsZS1hcHBlbmRpeCBbcXVlc3Rpb25dPVwicXVlc1wiICh2YWx1ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpOyBjbGVhclNRRXJyb3IocXVlcy5JZClcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC10YWJsZS1hcHBlbmRpeD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgIDwhLS0gbGlzdCAtLT5cbiAgICAgICAgICAgICA8IS0tIFZEIDIwQXVnMjQgdXNlZCBjb3JyZWN0IGF0dHJpYnV0ZSAtLT5cbiAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnTGlzdCdcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxsaWItc2VhcmNoLWJveCBbcXVlc3Rpb25dPVwicXVlc1wiIFtyZWFkT25seV09XCJxdWVzLlJlYWRfT25seV9fY1wiIFthcGlNZXRhXT1cInF1ZXMuU3ViX1RleHRfX2NcIiBbaWRdPVwicXVlcy5JZFwiIFtwbGFjZUhvbGRlclRleHRdPVwicXVlcy5RdWVzdGlvbl9fY1wiICBbZmlsdGVyTmFtZV09XCJxdWVzLmlucHV0XCIgKHNlYXJjaFZhbHVlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj5cbiAgICAgICAgICAgICAgICA8L2xpYi1zZWFyY2gtYm94PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gRHJvcGRvd24gLS0+XG4gICAgICAgICAgICA8IS0tIEhBIDA5RkVCMjQgQWRkZWQgY29uZGl0aW9uIG9mIHNxT3B0aW9uIHRvIHRoZSBkcm9wZG93biAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdEcm9wZG93bicgJiYgcXVlcz8uUXVlc3Rpb25fT3B0aW9uc19fcj8ucmVjb3Jkc1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBIQSAyMERFQzIzIEZvciBUcmFuc2xhdGlvbiAtLT4gPCEtLSBWRCAxOUpBTjI0IC0gZ2V0dGluZyB0b2tlbiBhcyBpbnB1dCAtLT5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1kcm9wZG93biBbb3B0aW9uc109XCJxdWVzLlF1ZXN0aW9uX09wdGlvbnNfX3IucmVjb3Jkc1wiIFxuICAgICAgICAgICAgICAgICAgICBbdG9rZW5dPVwidG9rZW5cIlxuICAgICAgICAgICAgICAgICAgICBbYXBpTWV0YV09XCJxdWVzLlN1Yl9UZXh0X19jXCIgW2lkXT1cInF1ZXMuSWRcIiBcbiAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwicXVlcy5zZWxlY3RlZFZhbHVlXCIgXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiLS0te3snc2VsZWN0JyB8IGkxOG46aTE4blNlcnZpY2UuY3VycmVudExhbmd1YWdlfX0tLS1cIlxuICAgICAgICAgICAgICAgICAgICBbZXJyb3JNZXNzYWdlXT1cInF1ZXMuRXJyb3JfTWVzc2FnZV9fY1wiIFtlcnJvcl09XCJxdWVzLmVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlZmVyZW5jZUZpZWxkXT1cInF1ZXMuUmVmZXJlbmNlX0ZpZWxkX19jXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInF1ZXMuUmVhZF9Pbmx5X19jXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cInF1ZXNcIlxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKTsgY2xlYXJTUUVycm9yKHF1ZXMuSWQpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgKm5nSWY9XCJxdWVzPy5pbnB1dD8ubGVuZ3RoID4gMFwiPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSAvLyBWRCAwMkF1ZzI0IGN1c3RvbS1yYWRpbyBjb21wb25lbnQgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnUmFkaW8nICYmIHF1ZXM/LlF1ZXN0aW9uX09wdGlvbnNfX3I/LnJlY29yZHNcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLXJhZGlvIFtvcHRpb25zXT1cInF1ZXMuUXVlc3Rpb25fT3B0aW9uc19fci5yZWNvcmRzXCIgW3Rva2VuXT1cInRva2VuXCJcbiAgICAgICAgICAgICAgICAgICAgW2FwaU1ldGFdPVwicXVlcy5TdWJfVGV4dF9fY1wiIFtpZF09XCJxdWVzLklkXCIgW3NlbGVjdGVkVmFsdWVdPVwicXVlcy5zZWxlY3RlZFZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Vycm9yTWVzc2FnZV09XCJxdWVzLkVycm9yX01lc3NhZ2VfX2NcIiBbZXJyb3JdPVwicXVlcy5lcnJvclwiXG4gICAgICAgICAgICAgICAgICAgIFtyZWZlcmVuY2VGaWVsZF09XCJxdWVzLlJlZmVyZW5jZV9GaWVsZF9fY1wiXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJxdWVzLlJlYWRfT25seV9fY1wiXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpOyBjbGVhclNRRXJyb3IocXVlcy5JZClcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tcmFkaW8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBBdHRhY2htZW50IC8gRmlsZXMgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnRmlsZSdcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtZmlsZS11cGxvYWQgW2xpbWl0RmlsZVVwbG9hZGluZ109XCI1XCIgW2Vycm9yXT1cInF1ZXMuZXJyb3JcIiBbcXVlc3Rpb25dPVwicXVlc1wiIFthbGxGaWxlc109XCJxdWVzLmlucHV0XCIgW3RhYmxlRmlsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkRmlsZURhdGEpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiIChkZWxldGVkRmlsZURhdGEpPVwiZGVsZXRlRmlsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbaXNEZWxldGVGaWxlQnV0dG9uVmlzaWJsZV09XCJ0cnVlXCI+PC9hcHAtZmlsZS11cGxvYWQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdQb3BVcE1lc3NhZ2UnXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWRlcGVuZGVudC10YWJsZSBbYWxlcnRNZXNzYWdlXT1cInF1ZXMuRXJyb3JfTWVzc2FnZV9fY1wiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWRlcGVuZGVudC10YWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0xhYmVsJ1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tbGFiZWwgW2xhYmVsU3R5bGVdPVwicXVlcy5UaXRsZV9fY1wiIFtsYWJlbFZhbHVlXT1cInF1ZXMuUXVlc3Rpb25fX2NcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICA8IS0tIC8vIFZEIDAyQXVnMjQgaW1hZ2UgY29tcG9uZW50IC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0ltYWdlJ1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20taW1hZ2UgW3F1ZXN0aW9uXT1cInF1ZXNcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20taW1hZ2U+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gMDhOT1YyMyAtIGJ1dHRvbiB0eXBlIHF1ZXN0aW9uIGFkZGVkIC0tPlxuICAgICAgICAgICAgIDwhLS0gQnV0dG9uIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0J1dHRvbidcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLWJ1dHRvbiBbaGVpZ2h0XT1cIic1MHB4J1wiICBcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiJzE1MHB4J1wiIFxuICAgICAgICAgICAgICAgIFtidXR0b25UZXh0XT1cInF1ZXM/LlF1ZXN0aW9uX19jXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwicXVlcz8uUXVlc3Rpb25fX2NcIlxuICAgICAgICAgICAgICAgIChidXR0b25WYWx1ZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSBIQSAyMERFQzIzICBUaGlzIGlzIHRvIGxvYWQgYm9vayB0eXBlIHF1ZXN0aW9ucy0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0Jvb2snXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBIQSAwOUZFQjI0IEFkZGVkIHRlcm5hcnkgb3BlcmF0b3IgLS0+XG4gICAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbmJvb2sgW3FiSXRlbV09XCJxdWVzLnFiSXRlbVwiIFtsYWJlbFZhbHVlXT1cImxhYmVsVmFsdWVcIiBbcXVlc3Rpb25zXT1cInF1ZXMucWJJdGVtPy5RdWVzdGlvbnNfX3I/LnJlY29yZHNcIiAgKGhhbmRsZURyb3BEb3duKT1cImdldERyb3BEb3duKCRldmVudClcIj48L2xpYi1xdWVzdGlvbmJvb2s+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8IS0tIDA2LTA5LTI0IGZvciBjYWxlbmRhciB0eXBlLS0+XG48bmctdGVtcGxhdGUgZHluYW1pY0NvbXBvbmVudEhvc3Q+PC9uZy10ZW1wbGF0ZT4iXX0=
|
|
@@ -5762,14 +5762,37 @@ class QuestionbookComponent {
|
|
|
5762
5762
|
let updatedText = questionText?.replace(/<[^>]*>/g, '');
|
|
5763
5763
|
return updatedText;
|
|
5764
5764
|
}
|
|
5765
|
+
// openCalendarComponent(ques) {
|
|
5766
|
+
// const viewContainerRef = this.dynamicHost.viewContainerRef;
|
|
5767
|
+
// if(viewContainerRef){
|
|
5768
|
+
// viewContainerRef.clear();
|
|
5769
|
+
// const componentRef = viewContainerRef.createComponent(CustomCalendarComponent);
|
|
5770
|
+
// componentRef.instance.question = ques;
|
|
5771
|
+
// componentRef.instance.dateSelected.subscribe((event: any) => this.getCurrentCalendar(event));
|
|
5772
|
+
// componentRef.instance.eventSelected.subscribe((event:any) => this.getCalendarEvent(event))
|
|
5773
|
+
// }
|
|
5774
|
+
// }
|
|
5765
5775
|
openCalendarComponent(ques) {
|
|
5766
5776
|
const viewContainerRef = this.dynamicHost.viewContainerRef;
|
|
5767
|
-
|
|
5777
|
+
let calendarComponentRef;
|
|
5778
|
+
// Check if the Calendar component already exists
|
|
5779
|
+
if (viewContainerRef.length > 0) {
|
|
5780
|
+
// Assuming the calendar component is the only component in this container
|
|
5781
|
+
calendarComponentRef = viewContainerRef.get(0);
|
|
5782
|
+
// Check if the component is indeed the CustomCalendarComponent
|
|
5783
|
+
if (calendarComponentRef && calendarComponentRef.instance instanceof CustomCalendarComponent) {
|
|
5784
|
+
// Update the existing instance with new input
|
|
5785
|
+
calendarComponentRef.instance.question = ques;
|
|
5786
|
+
}
|
|
5787
|
+
}
|
|
5788
|
+
if (!calendarComponentRef) {
|
|
5789
|
+
// If the component doesn't exist, create a new one
|
|
5768
5790
|
viewContainerRef.clear();
|
|
5769
|
-
|
|
5770
|
-
|
|
5771
|
-
|
|
5772
|
-
|
|
5791
|
+
calendarComponentRef = viewContainerRef.createComponent(CustomCalendarComponent);
|
|
5792
|
+
calendarComponentRef.instance.question = ques;
|
|
5793
|
+
// Subscribe to events
|
|
5794
|
+
calendarComponentRef.instance.dateSelected.subscribe((event) => this.getCurrentCalendar(event));
|
|
5795
|
+
calendarComponentRef.instance.eventSelected.subscribe((event) => this.getCalendarEvent(event));
|
|
5773
5796
|
}
|
|
5774
5797
|
}
|
|
5775
5798
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: QuestionbookComponent, deps: [{ token: SalesforceService }, { token: DataService }, { token: ChangeService }, { token: StorageService }, { token: I18nService }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
|