@eqproject/eqp-dynamic-module 2.10.29 → 2.10.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.mjs +33 -5
- package/esm2020/lib/components/private/add-formula-field/add-formula-field.component.mjs +3 -3
- package/esm2020/lib/components/private/field-templates/image-with-markers-field-template/image-with-markers-field-template.component.mjs +6 -4
- package/esm2020/lib/components/private/tmw-image-marker/tmw-image-marker.component.mjs +13 -1
- package/esm2020/lib/services/utilityHelper.services.mjs +6 -1
- package/fesm2015/eqproject-eqp-dynamic-module.mjs +56 -9
- package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/fesm2020/eqproject-eqp-dynamic-module.mjs +56 -9
- package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.d.ts +3 -0
- package/package.json +1 -1
|
@@ -197,7 +197,9 @@ export class ImageWithMarkersFieldTemplateComponent {
|
|
|
197
197
|
disableClose: true,
|
|
198
198
|
hasBackdrop: true,
|
|
199
199
|
panelClass: 'image-modal',
|
|
200
|
-
width: '75%'
|
|
200
|
+
width: '75%',
|
|
201
|
+
// maxHeight: '90%', tolto perchè la max rompe la dimensione giusta
|
|
202
|
+
height: '90%'
|
|
201
203
|
});
|
|
202
204
|
if (this.AttachmentID != null && Number(this.AttachmentID) > 0) {
|
|
203
205
|
this.load(this.AttachmentID, [ImageFolderEnum.Regular]);
|
|
@@ -230,10 +232,10 @@ export class ImageWithMarkersFieldTemplateComponent {
|
|
|
230
232
|
}
|
|
231
233
|
}
|
|
232
234
|
ImageWithMarkersFieldTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ImageWithMarkersFieldTemplateComponent, deps: [{ token: i1.MatDialog }, { token: i2.UtilityHelperService }], target: i0.ɵɵFactoryTarget.Component });
|
|
233
|
-
ImageWithMarkersFieldTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ImageWithMarkersFieldTemplateComponent, selector: "image-with-markers-field-template", inputs: { endPointConfiguration: "endPointConfiguration", record: "record", formulaObject: "formulaObject", field: "field", inConfig: "inConfig" }, outputs: { recordChange: "recordChange", imageMark: "imageMark" }, viewQueries: [{ propertyName: "dialogImageMarking", first: true, predicate: ["dialogImageMarking"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"row imageContainer\" style=\"width: {{imageWidth}}px;\">\r\n
|
|
235
|
+
ImageWithMarkersFieldTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ImageWithMarkersFieldTemplateComponent, selector: "image-with-markers-field-template", inputs: { endPointConfiguration: "endPointConfiguration", record: "record", formulaObject: "formulaObject", field: "field", inConfig: "inConfig" }, outputs: { recordChange: "recordChange", imageMark: "imageMark" }, viewQueries: [{ propertyName: "dialogImageMarking", first: true, predicate: ["dialogImageMarking"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"row imageContainer\" style=\"width: {{imageWidth}}px;\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">{{field.Description}}</div>\r\n <div class=\"col-12\">\r\n <img *ngIf=\"field.DynAttachment\"\r\n src=\"data:{{field.DynAttachment.FileContentType}};base64,{{FileDataBase64}}\"\r\n [height]=\"field.DynAttachment.ResizedImageHeightPx != null ? field.DynAttachment.ResizedImageHeightPx : 128\"\r\n class=\"singleImage\"\r\n >\r\n </div>\r\n <div class=\"col-12 drawButton\">\r\n <button class=\"btn btn-primary btn-w100\" (click)=\"openMark()\">Marca</button>\r\n </div>\r\n <div *ngIf=\"field.DynAttachment.ButtonKey != null && field.DynAttachment.ButtonKey != ''\" class=\"col-12 flex justify-content-around buttonkey\">\r\n <div>Etichetta</div><div>{{field.DynAttachment.ButtonKey}}</div>\r\n </div>\r\n <div *ngIf=\"field.DynAttachment.ButtonValue != null && field.DynAttachment.ButtonValue != ''\" class=\"col-12 flex justify-content-around buttonvalue\"> \r\n <div>Valore</div>\r\n <div>{{field.DynAttachment.ButtonValue}}</div>\r\n </div>\r\n </div> \r\n</div>\r\n\r\n<!-- DIALOG PER DISEGNARE SUL NUOVO ALLEGATO CARICATO -->\r\n<ng-template #dialogImageMarking>\r\n <div class=\"padder h-100\">\r\n <div class=\"row h-100\">\r\n <div class=\"col-sm-12 col-md-12 h-100\">\r\n <tmw-image-marker *ngIf=\"MarkingLoaded\"\r\n class=\" h-100\"\r\n [src]=\"'data:'+ field.DynAttachment.FileContentType + ';base64,'+ FileBase64\" \r\n [inConfig]=\"inConfig\" \r\n [savedMarkers]=\"extraJSON\"\r\n (save)=\"saveMark($event)\" \r\n (closeDialog)=\"closeDialog()\"\r\n [width]=\"field.DynAttachment.ImageWidthPx\" \r\n [height]=\"field.DynAttachment.ImageHeightPx\" \r\n >\r\n </tmw-image-marker>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>", styles: ["::ng-deep image-drawing>button{background-color:var(--primary)!important;color:#fff!important}.imageContainer .singleImage{margin-top:5px;display:block}.drawButton{margin:5px 0}.buttonkey{border-top:1px solid black;padding-top:10px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.TmwImageMarkerComponent, selector: "tmw-image-marker", inputs: ["src", "width", "height", "inConfig", "savedMarkers", "outputMimeType", "outputQuality", "forceSizeCanvas"], outputs: ["closeDialog", "save"] }] });
|
|
234
236
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ImageWithMarkersFieldTemplateComponent, decorators: [{
|
|
235
237
|
type: Component,
|
|
236
|
-
args: [{ selector: 'image-with-markers-field-template', template: "<div class=\"row imageContainer\" style=\"width: {{imageWidth}}px;\">\r\n
|
|
238
|
+
args: [{ selector: 'image-with-markers-field-template', template: "<div class=\"row imageContainer\" style=\"width: {{imageWidth}}px;\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">{{field.Description}}</div>\r\n <div class=\"col-12\">\r\n <img *ngIf=\"field.DynAttachment\"\r\n src=\"data:{{field.DynAttachment.FileContentType}};base64,{{FileDataBase64}}\"\r\n [height]=\"field.DynAttachment.ResizedImageHeightPx != null ? field.DynAttachment.ResizedImageHeightPx : 128\"\r\n class=\"singleImage\"\r\n >\r\n </div>\r\n <div class=\"col-12 drawButton\">\r\n <button class=\"btn btn-primary btn-w100\" (click)=\"openMark()\">Marca</button>\r\n </div>\r\n <div *ngIf=\"field.DynAttachment.ButtonKey != null && field.DynAttachment.ButtonKey != ''\" class=\"col-12 flex justify-content-around buttonkey\">\r\n <div>Etichetta</div><div>{{field.DynAttachment.ButtonKey}}</div>\r\n </div>\r\n <div *ngIf=\"field.DynAttachment.ButtonValue != null && field.DynAttachment.ButtonValue != ''\" class=\"col-12 flex justify-content-around buttonvalue\"> \r\n <div>Valore</div>\r\n <div>{{field.DynAttachment.ButtonValue}}</div>\r\n </div>\r\n </div> \r\n</div>\r\n\r\n<!-- DIALOG PER DISEGNARE SUL NUOVO ALLEGATO CARICATO -->\r\n<ng-template #dialogImageMarking>\r\n <div class=\"padder h-100\">\r\n <div class=\"row h-100\">\r\n <div class=\"col-sm-12 col-md-12 h-100\">\r\n <tmw-image-marker *ngIf=\"MarkingLoaded\"\r\n class=\" h-100\"\r\n [src]=\"'data:'+ field.DynAttachment.FileContentType + ';base64,'+ FileBase64\" \r\n [inConfig]=\"inConfig\" \r\n [savedMarkers]=\"extraJSON\"\r\n (save)=\"saveMark($event)\" \r\n (closeDialog)=\"closeDialog()\"\r\n [width]=\"field.DynAttachment.ImageWidthPx\" \r\n [height]=\"field.DynAttachment.ImageHeightPx\" \r\n >\r\n </tmw-image-marker>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>", styles: ["::ng-deep image-drawing>button{background-color:var(--primary)!important;color:#fff!important}.imageContainer .singleImage{margin-top:5px;display:block}.drawButton{margin:5px 0}.buttonkey{border-top:1px solid black;padding-top:10px}\n"] }]
|
|
237
239
|
}], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.UtilityHelperService }]; }, propDecorators: { endPointConfiguration: [{
|
|
238
240
|
type: Input
|
|
239
241
|
}], record: [{
|
|
@@ -252,4 +254,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
252
254
|
type: ViewChild,
|
|
253
255
|
args: ["dialogImageMarking", { static: true }]
|
|
254
256
|
}] } });
|
|
255
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Utd2l0aC1tYXJrZXJzLWZpZWxkLXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9maWVsZC10ZW1wbGF0ZXMvaW1hZ2Utd2l0aC1tYXJrZXJzLWZpZWxkLXRlbXBsYXRlL2ltYWdlLXdpdGgtbWFya2Vycy1maWVsZC10ZW1wbGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvZmllbGQtdGVtcGxhdGVzL2ltYWdlLXdpdGgtbWFya2Vycy1maWVsZC10ZW1wbGF0ZS9pbWFnZS13aXRoLW1hcmtlcnMtZmllbGQtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQThCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSSxPQUFPLEVBQWMsZUFBZSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFekYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFbkYsT0FBTyxFQUF5QixhQUFhLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUl0RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7O0FBRXhFOzs7O0dBSUc7QUFDSCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO0lBQy9ELE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7SUFDaEMsTUFBTSxDQUFDLGFB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RSxTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbWFnZUZpZWxkLCBJbWFnZUZvbGRlckVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZmllbGRzL2ltYWdlRmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvcmVjb3JkLm1vZGVsJztcclxuaW1wb3J0IHsgVXRpbGl0eUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy91dGlsaXR5SGVscGVyLnNlcnZpY2VzJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBFbmRQb2ludENvbmZpZ3VyYXRpb24sIFBhcmFtVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZW5kUG9pbnRDb25maWd1cmF0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgRHluQXR0YWNobWVudCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9keW5BdHRhY2htZW50JztcclxuaW1wb3J0IHsgTWFya2VkSW1hZ2UgfSBmcm9tICcuLi8uLi90bXctaW1hZ2UtbWFya2VyL3Rtdy1pbWFnZS1tYXJrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9pbWFnZVdpdGhNYXJrZXJzRmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBEYXRhR2V0dGVyVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvYmFzZUZpZWxkLm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBNZXRvZG8gcGVyIHJlY3VwZXJhcmUsIGEgcGFydGlyZSBkYSB1biBCbG9iLCBsYSBzdHJpbmdhIGNvbnRlbmVudGUgaWwgYmFzZTY0IGRlbCBmaWxlLlxyXG4gKiBVc2F0byBwZXIgcHJlbmRlcmUgaWwgYmFzZTY0IGRlbGwnaW1tYWdpbmUgZG9wbyBjaGUgbCd1dGVudGUgY2kgaGEgZGlzZWduYXRvIHNvcHJhLlxyXG4gKiBAcGFyYW0gZmlsZSBCbG9iIGNoZSByYXBwcmVzZW50YSBsJ2ltbWFnaW5lLlxyXG4gKi9cclxuY29uc3QgdG9CYXNlNjQgPSBmaWxlID0+IG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdC50b1N0cmluZygpKTtcclxuICByZWFkZXIub25lcnJvciA9IGVycm9yID0+IHJlamVjdChlcnJvcik7XHJcbn0pO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpbWFnZS13aXRoLW1hcmtlcnMtZmllbGQtdGVtcGxhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS13aXRoLW1hcmtlcnMtZmllbGQtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ltYWdlLXdpdGgtbWFya2Vycy1maWVsZC10ZW1wbGF0ZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkVGVtcGxhdGVDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKSBlbmRQb2ludENvbmZpZ3VyYXRpb246IEVuZFBvaW50Q29uZmlndXJhdGlvbjtcclxuICBASW5wdXQoKSByZWNvcmQ6IFJlY29yZDtcclxuICBASW5wdXQoKSBmb3JtdWxhT2JqZWN0OiBhbnkgPSB7fTtcclxuICBASW5wdXQoKSBmaWVsZDogSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkO1xyXG4gIEBJbnB1dCgpIGluQ29uZmlnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIHJlY29yZENoYW5nZTogRXZlbnRFbWl0dGVyPFJlY29yZD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZD4oKTtcclxuICBAT3V0cHV0KCkgaW1hZ2VNYXJrOiBFdmVudEVtaXR0ZXI8RHluQXR0YWNobWVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPER5bkF0dGFjaG1lbnQ+KCk7XHJcblxyXG4gIGltYWdlV2lkdGg6IG51bWJlciA9IDA7XHJcbiAgTWFya2luZ0xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEZpbGVCYXNlNjQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgTWFya0ZpbGVCYXNlNjQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgRmlsZURhdGFCYXNlNjQ6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIEF0dGFjaG1lbnRJRDogc3RyaW5nIHwgbnVtYmVyO1xyXG5cclxuICBpbWFnZU1hcmtBdHRhY2htZW50OiBEeW5BdHRhY2htZW50O1xyXG4gIGV4dHJhSlNPTjogc3RyaW5nID0gbnVsbDtcclxuICBcclxuXHJcbiAgLy9wcmVMb2FkZWRJbWFnZU1ldGFkYXRhRm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG5cclxuICAvLyNyZWdpb24gUHJvcHJpZXTDoCBwZXIgY29uZmlndXJhcmUgaWwgY29tcG9uZW50ZSBuZ3gtaW1hZ2UtTWFya2luZyBlIGFwcmlyZSBpbCByZWxhdGl2byBkaWFsb2cuXHJcbiAgcHVibGljIHdpZHRoID0gbnVsbDtcclxuICBwdWJsaWMgaGVpZ2h0ID0gbnVsbDtcclxuXHJcbiAgZGlhbG9nSW1hZ2VNYXJraW5nUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgQFZpZXdDaGlsZChcImRpYWxvZ0ltYWdlTWFya2luZ1wiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dJbWFnZU1hcmtpbmc6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgdXRpbGl0eUhlbHBlclNlcnZpY2U6IFV0aWxpdHlIZWxwZXJTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPT0gbnVsbCB8fCB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID09IDApe1xyXG4gICAgICB0aGlzLkZpbGVEYXRhQmFzZTY0ID0gdGhpcy5maWVsZC5EeW5BdHRhY2htZW50LkZpbGVEYXRhQmFzZTY0O1xyXG4gICAgICB0aGlzLmltYWdlV2lkdGggPSAgKHRoaXMuZmllbGQuRHluQXR0YWNobWVudC5SZXNpemVkSW1hZ2VIZWlnaHRQeCAvIHRoaXMuZmllbGQuRHluQXR0YWNobWVudC5JbWFnZUhlaWdodFB4ICogdGhpcy5maWVsZC5EeW5BdHRhY2htZW50LkltYWdlV2lkdGhQeCkgKyA1MDtcclxuICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IHRoaXMuZmllbGQuRHluQXR0YWNobWVudDtcclxuXHJcbiAgICAgIHRoaXMuaW1hZ2VNYXJrQXR0YWNobWVudCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5maWVsZC5EeW5BdHRhY2htZW50KSk7XHJcbiAgICAgIHRoaXMuaW1hZ2VNYXJrQXR0YWNobWVudC5JRCA9IDA7XHJcblxyXG4gICAgICB0aGlzLkF0dGFjaG1lbnRJRCA9IHRoaXMuZmllbGQuRHluQXR0YWNobWVudC5JRDsgXHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID09PSAnc3RyaW5nJyl7XHJcbiAgICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IEpTT04ucGFyc2UodGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pbWFnZVdpZHRoID0gICh0aGlzLmZpZWxkLkR5bkF0dGFjaG1lbnQuUmVzaXplZEltYWdlSGVpZ2h0UHggLyB0aGlzLmZpZWxkLkR5bkF0dGFjaG1lbnQuSW1hZ2VIZWlnaHRQeCAqIHRoaXMuZmllbGQuRHluQXR0YWNobWVudC5JbWFnZVdpZHRoUHgpICsgNTA7XHJcblxyXG4gICAgICBpZiAoKHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gYXMgRHluQXR0YWNobWVudCkuRmlsZUJhc2VzNjQgIT0gbnVsbCl7XHJcbiAgICAgICAgdGhpcy5GaWxlRGF0YUJhc2U2NCA9ICh0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdIGFzIER5bkF0dGFjaG1lbnQpLkZpbGVCYXNlczY0W0ltYWdlRm9sZGVyRW51bS5SZWd1bGFyXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLkZpbGVEYXRhQmFzZTY0ID0gKHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gYXMgRHluQXR0YWNobWVudCkuRmlsZURhdGFCYXNlNjQ7XHJcbiAgICAgIH0gICAgICBcclxuXHJcbiAgICAgICh0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdIGFzIER5bkF0dGFjaG1lbnQpLkZpbGVEYXRhQmFzZTY0ID0gdGhpcy5GaWxlRGF0YUJhc2U2NDtcclxuICAgICAgdGhpcy5leHRyYUpTT04gPSAodGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSBhcyBEeW5BdHRhY2htZW50KS5FeHRyYUpTT047XHJcblxyXG4gICAgICB0aGlzLmltYWdlTWFya0F0dGFjaG1lbnQgPSB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdO1xyXG4gICAgICB0aGlzLmltYWdlTWFya0F0dGFjaG1lbnQuRmlsZURhdGFCYXNlNjQgPSB0aGlzLkZpbGVEYXRhQmFzZTY0O1xyXG5cclxuICAgICAgdGhpcy5BdHRhY2htZW50SUQgPSB0aGlzLmZpZWxkLkR5bkF0dGFjaG1lbnQuSUQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZWNvcmRDaGFuZ2UuZW1pdCh0aGlzLnJlY29yZCk7XHJcblxyXG5cclxuICAgIC8vIENsb25vIGwnYXR0YWNobWVudCBvcmlnaW5hbGUsIGdsaSBjYW1iaW8gaWwgRmlsZUJhc2UgZSBnbGkgYXp6ZXJvIGwnSURcclxuXHJcbiAgICAvLyB0aGlzLmltYWdlTWFya0F0dGFjaG1lbnQuRmlsZU5hbWUgPSBcIlwiO1xyXG4gICAgLy8gdGhpcy5pbWFnZU1hcmtBdHRhY2htZW50LkZpbGVQYXRoID0gXCJcIjtcclxuXHJcbiAgICB0aGlzLmltYWdlTWFyay5lbWl0KHRoaXMuaW1hZ2VNYXJrQXR0YWNobWVudCk7XHJcblxyXG5cclxuXHJcblxyXG5cclxuICAgIHRoaXMudXBkYXRlRmllbGQoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIC8vIFNlIHZpZW5lIG1vZGlmaWNhdG8gaWwgdmFsb3JlIGRpIFwibmdNb2RlbElucHV0XCIgYWxsb3JhIGFnZ2lvcm5hIGwnaW5wdXRcclxuICAgIGlmIChjaGFuZ2VzWydyZWNvcmQnXSAhPSB1bmRlZmluZWQgJiYgY2hhbmdlc1sncmVjb3JkJ10uZmlyc3RDaGFuZ2UgPT0gZmFsc2UgJiYgSlNPTi5zdHJpbmdpZnkoY2hhbmdlc1sncmVjb3JkJ10uY3VycmVudFZhbHVlKSAhPSBKU09OLnN0cmluZ2lmeShjaGFuZ2VzWydyZWNvcmQnXS5wcmV2aW91c1ZhbHVlKSkge1xyXG4gICAgICB0aGlzLnJlY29yZCA9IGNoYW5nZXNbJ3JlY29yZCddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVGaWVsZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIHVwZGF0ZU1ldGFkYXRhVmFsaWRpdHkoKSB7XHJcbiAgLy8gICBpZiAodGhpcy5wcmVMb2FkZWRJbWFnZU1ldGFkYXRhRm9ybUdyb3VwLmludmFsaWQpIHtcclxuICAvLyAgICAgdGhpcy5maWVsZC5Gb3JtRm9ybUdyb3VwLmNvbnRyb2xzW3RoaXMuZmllbGQuTmFtZV0uc2V0RXJyb3JzKHsgJ2luY29ycmVjdCc6IHRydWUgfSk7XHJcbiAgLy8gICB9IGVsc2Uge1xyXG4gIC8vICAgICB0aGlzLmZpZWxkLkZvcm1Gb3JtR3JvdXAuY29udHJvbHNbdGhpcy5maWVsZC5OYW1lXS5zZXRFcnJvcnMobnVsbCk7XHJcbiAgLy8gICB9XHJcbiAgLy8gICB0aGlzLm9uUmVjb3JkVmFsdWVDaGFuZ2UoKTtcclxuICAvLyB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGFnZ2lvcm5hcmUgaWwgdmFsb3JlIGRlbCBjYW1wbyBxdWFuZG8gcXVlc3RvIMOoIHJhcHByZXNlbnRhdG8gZGEgdW5hIGZvcm11bGEuXHJcbiAgICovXHJcbiAgdXBkYXRlRmllbGQoKSB7XHJcbiAgICBpZiAoKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZSA9PSBEYXRhR2V0dGVyVHlwZUVudW0uTWFudWFsZSB8fCB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgPT0gRGF0YUdldHRlclR5cGVFbnVtLkZvcm11bGEpICYmIHRoaXMuZmllbGQuRm9ybXVsYSkge1xyXG4gICAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gVXRpbGl0eUhlbHBlclNlcnZpY2UuRXZhbHVhdGVGaWVsZEZvcm11bGEodGhpcy5maWVsZC5Gb3JtdWxhLCB0aGlzLnJlY29yZCwgdGhpcy5mb3JtdWxhT2JqZWN0KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZpZWxkLlZpc2libGVJZikge1xyXG4gICAgICB0aGlzLmZpZWxkLkluTGlzdFZpZXcgPSBVdGlsaXR5SGVscGVyU2VydmljZS5FdmFsdWF0ZUZpZWxkRm9ybXVsYSh0aGlzLmZpZWxkLlZpc2libGVJZiwgdGhpcy5yZWNvcmQsIHRoaXMuZm9ybXVsYU9iamVjdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcmVzZXRQcmVMb2FkZWRJbWFnZSgpIHtcclxuICAgIHRoaXMud2lkdGggPSBudWxsO1xyXG4gICAgdGhpcy5oZWlnaHQgPSBudWxsO1xyXG4gICAgLyp0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gW0pTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5maWVsZC5Db250ZXh0dWFsQXR0YWNobWVudCkpXTsqL1xyXG4gICAgdGhpcy5nZXRJbWFnZURpbWVuc2lvbnMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBpbnZvY2F0byBxdWFuZG8gdmVuZ29ubyBhZ2dpdW50aSBvIGVsaW1pbmF0aSBnbGkgYWxsZWdhdGkgbmVsIGNvbXBvbmVudGUgQXR0YWNobWVudEZpZWxkVGVtcGxhdGUuXHJcbiAgICogU2UgbCdJbWFnZUZpZWxkIMOoIGFiaWxpdGF0byBhbCBkaXNlZ25vIChFbmFibGVNYXJraW5nID09IHRydWUpLCBub24gcGVybWV0dGUgYWxsZWdhdGkgbXVsdGlwbGkgKElzTXVsaXRBdHRhY2ggPT0gZmFsc2UpXHJcbiAgICogZSBuZWwgUmVjb3JkIGNvcnJlbnRlIMOoIHByZXNlbnRlIGwnaW1tYWdpbmUgY2FyaWNhdGEgZGFsbCd1dGVudGUgYWxsb3JhIHJlY3VwZXJhIGxlIGRpbWVuc2lvbmkgZGVsbCdpbW1hZ2luZSBlXHJcbiAgICogYXByZSBpbCBkaWFsb2cgY29uIGlsIGNvbXBvbmVudGUgaW1hZ2UtTWFya2luZyBwZXIgcGVybWV0dGVyZSBpbCBkaXNlZ25vIHN1bGwnaW1tYWdpbmUgYXBwZW5hIGNhcmljYXRhLlxyXG4gICAqL1xyXG4gIG9uQXR0YWNobWVudHNDaGFuZ2UoKSB7XHJcbiAgICAvKlxyXG4gICAgaWYgKCF0aGlzLmZpZWxkLkF0dGFjaERlZmluaXRpb24uSXNNdWx0aUF0dGFjaCAmJiB0aGlzLmZpZWxkLkVuYWJsZU1hcmtpbmcgJiYgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSAmJiB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdWzBdKSB7XHJcbiAgICAgIHRoaXMuZ2V0SW1hZ2VEaW1lbnNpb25zKCk7XHJcbiAgICAgIHRoaXMuZGlhbG9nSW1hZ2VEcm93aW5nUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0ltYWdlRHJvd2luZywge1xyXG4gICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgICB3aWR0aDogJzc1JSdcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAqL1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGludm9jYXRvIGFsIHNhbHZhdGFnZ2lvIGRlbGwnaW1tYWdpbmUgZGFsIGNvbXBvbmVudGUgaW1hZ2UtTWFya2luZy5cclxuICAgKiBUcmFzZm9ybWEgaWwgQmxvYiByaWNldnV0byBpbiB1biBiYXNlNjQsIGFnZ2lvcm5hIGlsIEZpbGVDb250ZXRUeXBlIGUgaWwgRmlsZURhdGFCYXNlNjRcclxuICAgKiBkZWxsJ2FsbGVnYXRvIGNhcmljYXRvIGUgY2hpdWRlIGlsIGRpYWxvZyBpbiBjdWkgZGlzZWduYXJlLlxyXG4gICAqIEBwYXJhbSBNYXJrblBpY3R1cmUgQmxvYiBkZWxsJ2ltbWFnaW5lIGRpc2VnbmF0YS5cclxuICAgKi9cclxuICBhc3luYyBzYXZlTWFyayhtYXJrZWRJbWFnZTogTWFya2VkSW1hZ2UpIHtcclxuICAgIGxldCBiYXNlNjRGaWxlID0gYXdhaXQgdG9CYXNlNjQobWFya2VkSW1hZ2UuaW1hZ2UpO1xyXG4gICAgaWYgKGJhc2U2NEZpbGUpIHtcclxuICAgICAgdGhpcy5NYXJrRmlsZUJhc2U2NCA9IGJhc2U2NEZpbGUuc3BsaXQoXCIsXCIpWzFdO1xyXG4gICAgICB0aGlzLkZpbGVEYXRhQmFzZTY0ID0gdGhpcy5NYXJrRmlsZUJhc2U2NDtcclxuXHJcbiAgICAgIC8vIENsb25vIGwnYXR0YWNobWVudCBvcmlnaW5hbGUsIGdsaSBjYW1iaW8gaWwgRmlsZUJhc2UgZSBnbGkgYXp6ZXJvIGwnSURcclxuICAgICAgdGhpcy5pbWFnZU1hcmtBdHRhY2htZW50LkZpbGVEYXRhQmFzZTY0ID0gdGhpcy5NYXJrRmlsZUJhc2U2NDtcclxuICAgICAgdGhpcy5pbWFnZU1hcmtBdHRhY2htZW50LkV4dHJhSlNPTiA9IEpTT04uc3RyaW5naWZ5KG1hcmtlZEltYWdlLm91dG1hcmtlcnMpO1xyXG4gICAgICB0aGlzLmV4dHJhSlNPTiA9IHRoaXMuaW1hZ2VNYXJrQXR0YWNobWVudC5FeHRyYUpTT047XHJcblxyXG4gICAgICB0aGlzLmltYWdlTWFyay5lbWl0KHRoaXMuaW1hZ2VNYXJrQXR0YWNobWVudCk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRpYWxvZ0ltYWdlTWFya2luZ1JlZikge1xyXG4gICAgICB0aGlzLmNsb3NlRGlhbG9nKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGNoaXVkZXJlIGlsIGRpYWxvZyBpbiBjdWkgZGlzZWduYXJlIHN1bGwnaW1tYWdpbmUgY2FyaWF0YSBlIHN2dW90YXJlIGxlIGRpbWVuc2lvbmkuXHJcbiAgICovXHJcbiAgY2xvc2VEaWFsb2coKSB7XHJcbiAgICB0aGlzLmRpYWxvZ0ltYWdlTWFya2luZ1JlZi5jbG9zZSgpO1xyXG4gICAgdGhpcy53aWR0aCA9IG51bGw7XHJcbiAgICB0aGlzLmhlaWdodCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHJlY3VwZXJhcmUgbGUgZGltZW5zaW9uaSBkZWxsJ2ltbWFnaW5lIGNhcmljYXRhIHBlciBtb3N0cmFyZSBjb3JyZXR0YW1lbnRlXHJcbiAgICogaWwgY29tcG9uZW50ZSBpbWFnZS1NYXJraW5nLiBTZSBub24gdmllbmUgZXNlZ3VpdG8gcXVlc3RvIHBhc3NhZ2dpbyBsJ2FyZWEgaW4gY3VpIGRpc2VnbmFyZSBcclxuICAgKiDDqCBwacO5IGdyYW5kZSBkZWxsJ2ltbWFnaW5lIHN0ZXNzYSBlIGFsIHNhbHZhdGFnZ2lvIGkgdHJhdHRpIGRpc2VnbmF0aSB2ZW5nb25vIHNwb3N0YXRpLiBcclxuICAgKi9cclxuICBwcml2YXRlIGdldEltYWdlRGltZW5zaW9ucygpIHtcclxuICAgIHZhciBibG9iOiBCbG9iID0gdGhpcy5nZXRCbG9iRnJvbUJhc2U2NCgpO1xyXG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgIHJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XHJcbiAgICAgIGltYWdlLnNyYyA9IGUudGFyZ2V0LnJlc3VsdDtcclxuICAgICAgaW1hZ2Uub25sb2FkID0gcnMgPT4ge1xyXG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gcnMuY3VycmVudFRhcmdldFsnaGVpZ2h0J107XHJcbiAgICAgICAgdGhpcy53aWR0aCA9IHJzLmN1cnJlbnRUYXJnZXRbJ3dpZHRoJ107XHJcbiAgICAgIH07XHJcbiAgICB9O1xyXG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoYmxvYik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGNvbnZlcnRpcmUgaWwgYmFzZTY0IGRpIHVuJ2ltbWFnaW5lIGluIHVuIEJsb2IuXHJcbiAgICogTmVjZXNzYXJpbyBwZXIgaWwgcmVjdXBlcm8gZGVsbGUgZGltZW5zaW9uaSBkZWxsJ2ltbWFnaW5lIGNhcmljYXRhIGEgcGFydGlyZSBkYWwgc3VvIGJhc2U2NC5cclxuICAgKiBWaWVuZSBlc2VndWl0byBzb2xvIG5lbCBjYXNvIGluIGN1aSBsJ0ltYWdlRmllbGQgbm9uIGFtbWV0dGUgYWxsZWdhdGkgbXVsdGlwbGkuXHJcbiAgICogQHJldHVybnMgUmVzdGl0dWlzY2UgaWwgQmxvYiBkZWxsJ2ltbWFnaW5lIGNhcmljYXRhLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0QmxvYkZyb21CYXNlNjQoKSB7XHJcbiAgICBjb25zdCBieXRlQ2hhcmFjdGVycyA9IGF0b2IodGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXVswXS5GaWxlRGF0YUJhc2U2NCk7XHJcbiAgICBjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShieXRlQ2hhcmFjdGVycy5sZW5ndGgpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlQ2hhcmFjdGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBieXRlTnVtYmVyc1tpXSA9IGJ5dGVDaGFyYWN0ZXJzLmNoYXJDb2RlQXQoaSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XHJcbiAgICByZXR1cm4gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXVswXS5GaWxlQ29udGVudFR5cGUgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGVtZXR0ZXJlIGwnZXZlbnRvIGNoZSBpbCB2YWxvcmUgZGVsIHJlY29yZCDDqCBjYW1iaWF0by5cclxuICAgKi9cclxuICBwcml2YXRlIG9uUmVjb3JkVmFsdWVDaGFuZ2UoKSB7XHJcbiAgICBpZiAoIXRoaXMuZmllbGQuRm9ybXVsYSkge1xyXG4gICAgICB0aGlzLnJlY29yZENoYW5nZS5lbWl0KHRoaXMucmVjb3JkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuTWFyaygpe1xyXG4gICAgdGhpcy5kaWFsb2dJbWFnZU1hcmtpbmdSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nSW1hZ2VNYXJraW5nLCB7XHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHBhbmVsQ2xhc3M6ICdpbWFnZS1tb2RhbCcsXHJcbiAgICAgIHdpZHRoOiAnNzUlJ1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuQXR0YWNobWVudElEICE9IG51bGwgJiYgTnVtYmVyKHRoaXMuQXR0YWNobWVudElEKSA+IDApe1xyXG4gICAgICB0aGlzLmxvYWQodGhpcy5BdHRhY2htZW50SUQsW0ltYWdlRm9sZGVyRW51bS5SZWd1bGFyXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLkZpbGVCYXNlNjQgPSB0aGlzLkZpbGVEYXRhQmFzZTY0O1xyXG4gICAgICB0aGlzLk1hcmtpbmdMb2FkZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGxvYWQoSUQsVHlwZXMpe1xyXG5cclxuICAgIHRoaXMuTWFya2luZ0xvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgLy8gcHJlcGFybyBsYSB2ZXJzaW9uZSBjb3JyZXR0YSBkZWwgZm9ybVxyXG4gICAgICB2YXIgZHluYW1pY01vZHVsZVBhcmFtcyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBQYXJhbU5hbWU6IFwiQXR0YWNobWVudElEXCIsXHJcbiAgICAgICAgICBQYXJhbVZhbHVlOiBJRCxcclxuICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgUGFyYW1OYW1lOiBcIlR5cGVzXCIsXHJcbiAgICAgICAgICBQYXJhbVZhbHVlOiBUeXBlcyxcclxuICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF07ICAgIFxyXG4gICAgICBcclxuICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5HZXRBdHRhY2htZW50V2l0aEJhc2VzNjQsXHJcbiAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMsXHJcbiAgICAgIChyZXM6IER5bkF0dGFjaG1lbnQpID0+IHtcclxuXHJcbiAgICAgICAgdGhpcy5GaWxlQmFzZTY0ID0gcmVzLkZpbGVCYXNlczY0W0ltYWdlRm9sZGVyRW51bS5SZWd1bGFyXTtcclxuICAgICAgICB0aGlzLk1hcmtpbmdMb2FkZWQgPSB0cnVlO1xyXG5cclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG5cclxuICAgICAgfVxyXG4gICAgKTsgICAgXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicm93IGltYWdlQ29udGFpbmVyXCIgc3R5bGU9XCJ3aWR0aDoge3tpbWFnZVdpZHRofX1weDtcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPnt7ZmllbGQuRGVzY3JpcHRpb259fTwvZGl2PlxyXG4gICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+PGltZyAqbmdJZj1cImZpZWxkLkR5bkF0dGFjaG1lbnRcIlxyXG4gICAgICAgICAgICAgIHNyYz1cImRhdGE6e3tmaWVsZC5EeW5BdHRhY2htZW50LkZpbGVDb250ZW50VHlwZX19O2Jhc2U2NCx7e0ZpbGVEYXRhQmFzZTY0fX1cIlxyXG4gICAgICAgICAgICAgIFtoZWlnaHRdPVwiZmllbGQuRHluQXR0YWNobWVudC5SZXNpemVkSW1hZ2VIZWlnaHRQeCAhPSBudWxsID8gZmllbGQuRHluQXR0YWNobWVudC5SZXNpemVkSW1hZ2VIZWlnaHRQeCA6IDEyOFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzaW5nbGVJbWFnZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZHJhd0J1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tdzEwMFwiIChjbGljayk9XCJvcGVuTWFyaygpXCI+TWFyY2E8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGZsZXgganVzdGlmeS1jb250ZW50LWFyb3VuZCBidXR0b25rZXlcIiAqbmdJZj1cImZpZWxkLkR5bkF0dGFjaG1lbnQuQnV0dG9uS2V5ICE9IG51bGwgJiYgZmllbGQuRHluQXR0YWNobWVudC5CdXR0b25LZXkgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgIDxkaXY+RXRpY2hldHRhPC9kaXY+PGRpdj57e2ZpZWxkLkR5bkF0dGFjaG1lbnQuQnV0dG9uS2V5fX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGZsZXgganVzdGlmeS1jb250ZW50LWFyb3VuZCBidXR0b252YWx1ZVwiICpuZ0lmPVwiZmllbGQuRHluQXR0YWNobWVudC5CdXR0b25WYWx1ZSAhPSBudWxsICYmIGZpZWxkLkR5bkF0dGFjaG1lbnQuQnV0dG9uVmFsdWUgIT0gJydcIj4gXHJcbiAgICAgICAgICAgICAgICAgICA8ZGl2PlZhbG9yZTwvZGl2PjxkaXY+e3tmaWVsZC5EeW5BdHRhY2htZW50LkJ1dHRvblZhbHVlfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PiAgIFxyXG48L2Rpdj5cclxuXHJcbjwhLS0gRElBTE9HIFBFUiBESVNFR05BUkUgU1VMIE5VT1ZPIEFMTEVHQVRPIENBUklDQVRPIC0tPlxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ0ltYWdlTWFya2luZz5cclxuICAgIDxkaXYgY2xhc3M9XCJwYWRkZXJcIj5cclxuICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgIDx0bXctaW1hZ2UtbWFya2VyXHJcbiAgICAgICAgICAgICAgICAgICAqbmdJZj1cIk1hcmtpbmdMb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgW3NyY109XCInZGF0YTonKyBmaWVsZC5EeW5BdHRhY2htZW50LkZpbGVDb250ZW50VHlwZSArICc7YmFzZTY0LCcrIEZpbGVCYXNlNjRcIiBbaW5Db25maWddPVwiaW5Db25maWdcIiBbc2F2ZWRNYXJrZXJzXT1cImV4dHJhSlNPTlwiXHJcbiAgICAgICAgICAgICAgICAgICBbd2lkdGhdPVwiZmllbGQuRHluQXR0YWNobWVudC5JbWFnZVdpZHRoUHhcIiBbaGVpZ2h0XT1cImZpZWxkLkR5bkF0dGFjaG1lbnQuSW1hZ2VIZWlnaHRQeFwiIFxyXG4gICAgICAgICAgICAgICAgICAgKHNhdmUpPVwic2F2ZU1hcmsoJGV2ZW50KVwiIChjbG9zZURpYWxvZyk9XCJjbG9zZURpYWxvZygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICA8L3Rtdy1pbWFnZS1tYXJrZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Utd2l0aC1tYXJrZXJzLWZpZWxkLXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9maWVsZC10ZW1wbGF0ZXMvaW1hZ2Utd2l0aC1tYXJrZXJzLWZpZWxkLXRlbXBsYXRlL2ltYWdlLXdpdGgtbWFya2Vycy1maWVsZC10ZW1wbGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvZmllbGQtdGVtcGxhdGVzL2ltYWdlLXdpdGgtbWFya2Vycy1maWVsZC10ZW1wbGF0ZS9pbWFnZS13aXRoLW1hcmtlcnMtZmllbGQtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQThCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSSxPQUFPLEVBQWMsZUFBZSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFekYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFbkYsT0FBTyxFQUF5QixhQUFhLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUl0RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7O0FBRXhFOzs7O0dBSUc7QUFDSCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO0lBQy9ELE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7SUFDaEMsTUFBTSxDQUFDLGFB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O3NCQUFsQixNQUFNO2dCQXFCNEMsa0JBQWtCO3NCQUFwRSxTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbWFnZUZpZWxkLCBJbWFnZUZvbGRlckVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZmllbGRzL2ltYWdlRmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvcmVjb3JkLm1vZGVsJztcclxuaW1wb3J0IHsgVXRpbGl0eUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy91dGlsaXR5SGVscGVyLnNlcnZpY2VzJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBFbmRQb2ludENvbmZpZ3VyYXRpb24sIFBhcmFtVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZW5kUG9pbnRDb25maWd1cmF0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgRHluQXR0YWNobWVudCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9keW5BdHRhY2htZW50JztcclxuaW1wb3J0IHsgTWFya2VkSW1hZ2UgfSBmcm9tICcuLi8uLi90bXctaW1hZ2UtbWFya2VyL3Rtdy1pbWFnZS1tYXJrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9pbWFnZVdpdGhNYXJrZXJzRmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBEYXRhR2V0dGVyVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvYmFzZUZpZWxkLm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBNZXRvZG8gcGVyIHJlY3VwZXJhcmUsIGEgcGFydGlyZSBkYSB1biBCbG9iLCBsYSBzdHJpbmdhIGNvbnRlbmVudGUgaWwgYmFzZTY0IGRlbCBmaWxlLlxyXG4gKiBVc2F0byBwZXIgcHJlbmRlcmUgaWwgYmFzZTY0IGRlbGwnaW1tYWdpbmUgZG9wbyBjaGUgbCd1dGVudGUgY2kgaGEgZGlzZWduYXRvIHNvcHJhLlxyXG4gKiBAcGFyYW0gZmlsZSBCbG9iIGNoZSByYXBwcmVzZW50YSBsJ2ltbWFnaW5lLlxyXG4gKi9cclxuY29uc3QgdG9CYXNlNjQgPSBmaWxlID0+IG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdC50b1N0cmluZygpKTtcclxuICByZWFkZXIub25lcnJvciA9IGVycm9yID0+IHJlamVjdChlcnJvcik7XHJcbn0pO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpbWFnZS13aXRoLW1hcmtlcnMtZmllbGQtdGVtcGxhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS13aXRoLW1hcmtlcnMtZmllbGQtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ltYWdlLXdpdGgtbWFya2Vycy1maWVsZC10ZW1wbGF0ZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkVGVtcGxhdGVDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKSBlbmRQb2ludENvbmZpZ3VyYXRpb246IEVuZFBvaW50Q29uZmlndXJhdGlvbjtcclxuICBASW5wdXQoKSByZWNvcmQ6IFJlY29yZDtcclxuICBASW5wdXQoKSBmb3JtdWxhT2JqZWN0OiBhbnkgPSB7fTtcclxuICBASW5wdXQoKSBmaWVsZDogSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkO1xyXG4gIEBJbnB1dCgpIGluQ29uZmlnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIHJlY29yZENoYW5nZTogRXZlbnRFbWl0dGVyPFJlY29yZD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZD4oKTtcclxuICBAT3V0cHV0KCkgaW1hZ2VNYXJrOiBFdmVudEVtaXR0ZXI8RHluQXR0YWNobWVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPER5bkF0dGFjaG1lbnQ+KCk7XHJcblxyXG4gIGltYWdlV2lkdGg6IG51bWJlciA9IDA7XHJcbiAgTWFya2luZ0xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEZpbGVCYXNlNjQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgTWFya0ZpbGVCYXNlNjQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgRmlsZURhdGFCYXNlNjQ6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIEF0dGFjaG1lbnRJRDogc3RyaW5nIHwgbnVtYmVyO1xyXG5cclxuICBpbWFnZU1hcmtBdHRhY2htZW50OiBEeW5BdHRhY2htZW50O1xyXG4gIGV4dHJhSlNPTjogc3RyaW5nID0gbnVsbDtcclxuICBcclxuXHJcbiAgLy9wcmVMb2FkZWRJbWFnZU1ldGFkYXRhRm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG5cclxuICAvLyNyZWdpb24gUHJvcHJpZXTDoCBwZXIgY29uZmlndXJhcmUgaWwgY29tcG9uZW50ZSBuZ3gtaW1hZ2UtTWFya2luZyBlIGFwcmlyZSBpbCByZWxhdGl2byBkaWFsb2cuXHJcbiAgcHVibGljIHdpZHRoID0gbnVsbDtcclxuICBwdWJsaWMgaGVpZ2h0ID0gbnVsbDtcclxuXHJcbiAgZGlhbG9nSW1hZ2VNYXJraW5nUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgQFZpZXdDaGlsZChcImRpYWxvZ0ltYWdlTWFya2luZ1wiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dJbWFnZU1hcmtpbmc6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgdXRpbGl0eUhlbHBlclNlcnZpY2U6IFV0aWxpdHlIZWxwZXJTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPT0gbnVsbCB8fCB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID09IDApe1xyXG4gICAgICB0aGlzLkZpbGVEYXRhQmFzZTY0ID0gdGhpcy5maWVsZC5EeW5BdHRhY2htZW50LkZpbGVEYXRhQmFzZTY0O1xyXG4gICAgICB0aGlzLmltYWdlV2lkdGggPSAgKHRoaXMuZmllbGQuRHluQXR0YWNobWVudC5SZXNpemVkSW1hZ2VIZWlnaHRQeCAvIHRoaXMuZmllbGQuRHluQXR0YWNobWVudC5JbWFnZUhlaWdodFB4ICogdGhpcy5maWVsZC5EeW5BdHRhY2htZW50LkltYWdlV2lkdGhQeCkgKyA1MDtcclxuICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IHRoaXMuZmllbGQuRHluQXR0YWNobWVudDtcclxuXHJcbiAgICAgIHRoaXMuaW1hZ2VNYXJrQXR0YWNobWVudCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5maWVsZC5EeW5BdHRhY2htZW50KSk7XHJcbiAgICAgIHRoaXMuaW1hZ2VNYXJrQXR0YWNobWVudC5JRCA9IDA7XHJcblxyXG4gICAgICB0aGlzLkF0dGFjaG1lbnRJRCA9IHRoaXMuZmllbGQuRHluQXR0YWNobWVudC5JRDsgXHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID09PSAnc3RyaW5nJyl7XHJcbiAgICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IEpTT04ucGFyc2UodGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pbWFnZVdpZHRoID0gICh0aGlzLmZpZWxkLkR5bkF0dGFjaG1lbnQuUmVzaXplZEltYWdlSGVpZ2h0UHggLyB0aGlzLmZpZWxkLkR5bkF0dGFjaG1lbnQuSW1hZ2VIZWlnaHRQeCAqIHRoaXMuZmllbGQuRHluQXR0YWNobWVudC5JbWFnZVdpZHRoUHgpICsgNTA7XHJcblxyXG4gICAgICBpZiAoKHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gYXMgRHluQXR0YWNobWVudCkuRmlsZUJhc2VzNjQgIT0gbnVsbCl7XHJcbiAgICAgICAgdGhpcy5GaWxlRGF0YUJhc2U2NCA9ICh0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdIGFzIER5bkF0dGFjaG1lbnQpLkZpbGVCYXNlczY0W0ltYWdlRm9sZGVyRW51bS5SZWd1bGFyXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLkZpbGVEYXRhQmFzZTY0ID0gKHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gYXMgRHluQXR0YWNobWVudCkuRmlsZURhdGFCYXNlNjQ7XHJcbiAgICAgIH0gICAgICBcclxuXHJcbiAgICAgICh0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdIGFzIER5bkF0dGFjaG1lbnQpLkZpbGVEYXRhQmFzZTY0ID0gdGhpcy5GaWxlRGF0YUJhc2U2NDtcclxuICAgICAgdGhpcy5leHRyYUpTT04gPSAodGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSBhcyBEeW5BdHRhY2htZW50KS5FeHRyYUpTT047XHJcblxyXG4gICAgICB0aGlzLmltYWdlTWFya0F0dGFjaG1lbnQgPSB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdO1xyXG4gICAgICB0aGlzLmltYWdlTWFya0F0dGFjaG1lbnQuRmlsZURhdGFCYXNlNjQgPSB0aGlzLkZpbGVEYXRhQmFzZTY0O1xyXG5cclxuICAgICAgdGhpcy5BdHRhY2htZW50SUQgPSB0aGlzLmZpZWxkLkR5bkF0dGFjaG1lbnQuSUQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZWNvcmRDaGFuZ2UuZW1pdCh0aGlzLnJlY29yZCk7XHJcblxyXG5cclxuICAgIC8vIENsb25vIGwnYXR0YWNobWVudCBvcmlnaW5hbGUsIGdsaSBjYW1iaW8gaWwgRmlsZUJhc2UgZSBnbGkgYXp6ZXJvIGwnSURcclxuXHJcbiAgICAvLyB0aGlzLmltYWdlTWFya0F0dGFjaG1lbnQuRmlsZU5hbWUgPSBcIlwiO1xyXG4gICAgLy8gdGhpcy5pbWFnZU1hcmtBdHRhY2htZW50LkZpbGVQYXRoID0gXCJcIjtcclxuXHJcbiAgICB0aGlzLmltYWdlTWFyay5lbWl0KHRoaXMuaW1hZ2VNYXJrQXR0YWNobWVudCk7XHJcblxyXG5cclxuXHJcblxyXG5cclxuICAgIHRoaXMudXBkYXRlRmllbGQoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIC8vIFNlIHZpZW5lIG1vZGlmaWNhdG8gaWwgdmFsb3JlIGRpIFwibmdNb2RlbElucHV0XCIgYWxsb3JhIGFnZ2lvcm5hIGwnaW5wdXRcclxuICAgIGlmIChjaGFuZ2VzWydyZWNvcmQnXSAhPSB1bmRlZmluZWQgJiYgY2hhbmdlc1sncmVjb3JkJ10uZmlyc3RDaGFuZ2UgPT0gZmFsc2UgJiYgSlNPTi5zdHJpbmdpZnkoY2hhbmdlc1sncmVjb3JkJ10uY3VycmVudFZhbHVlKSAhPSBKU09OLnN0cmluZ2lmeShjaGFuZ2VzWydyZWNvcmQnXS5wcmV2aW91c1ZhbHVlKSkge1xyXG4gICAgICB0aGlzLnJlY29yZCA9IGNoYW5nZXNbJ3JlY29yZCddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVGaWVsZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIHVwZGF0ZU1ldGFkYXRhVmFsaWRpdHkoKSB7XHJcbiAgLy8gICBpZiAodGhpcy5wcmVMb2FkZWRJbWFnZU1ldGFkYXRhRm9ybUdyb3VwLmludmFsaWQpIHtcclxuICAvLyAgICAgdGhpcy5maWVsZC5Gb3JtRm9ybUdyb3VwLmNvbnRyb2xzW3RoaXMuZmllbGQuTmFtZV0uc2V0RXJyb3JzKHsgJ2luY29ycmVjdCc6IHRydWUgfSk7XHJcbiAgLy8gICB9IGVsc2Uge1xyXG4gIC8vICAgICB0aGlzLmZpZWxkLkZvcm1Gb3JtR3JvdXAuY29udHJvbHNbdGhpcy5maWVsZC5OYW1lXS5zZXRFcnJvcnMobnVsbCk7XHJcbiAgLy8gICB9XHJcbiAgLy8gICB0aGlzLm9uUmVjb3JkVmFsdWVDaGFuZ2UoKTtcclxuICAvLyB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGFnZ2lvcm5hcmUgaWwgdmFsb3JlIGRlbCBjYW1wbyBxdWFuZG8gcXVlc3RvIMOoIHJhcHByZXNlbnRhdG8gZGEgdW5hIGZvcm11bGEuXHJcbiAgICovXHJcbiAgdXBkYXRlRmllbGQoKSB7XHJcbiAgICBpZiAoKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZSA9PSBEYXRhR2V0dGVyVHlwZUVudW0uTWFudWFsZSB8fCB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgPT0gRGF0YUdldHRlclR5cGVFbnVtLkZvcm11bGEpICYmIHRoaXMuZmllbGQuRm9ybXVsYSkge1xyXG4gICAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gVXRpbGl0eUhlbHBlclNlcnZpY2UuRXZhbHVhdGVGaWVsZEZvcm11bGEodGhpcy5maWVsZC5Gb3JtdWxhLCB0aGlzLnJlY29yZCwgdGhpcy5mb3JtdWxhT2JqZWN0KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZpZWxkLlZpc2libGVJZikge1xyXG4gICAgICB0aGlzLmZpZWxkLkluTGlzdFZpZXcgPSBVdGlsaXR5SGVscGVyU2VydmljZS5FdmFsdWF0ZUZpZWxkRm9ybXVsYSh0aGlzLmZpZWxkLlZpc2libGVJZiwgdGhpcy5yZWNvcmQsIHRoaXMuZm9ybXVsYU9iamVjdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcmVzZXRQcmVMb2FkZWRJbWFnZSgpIHtcclxuICAgIHRoaXMud2lkdGggPSBudWxsO1xyXG4gICAgdGhpcy5oZWlnaHQgPSBudWxsO1xyXG4gICAgLyp0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gW0pTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5maWVsZC5Db250ZXh0dWFsQXR0YWNobWVudCkpXTsqL1xyXG4gICAgdGhpcy5nZXRJbWFnZURpbWVuc2lvbnMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBpbnZvY2F0byBxdWFuZG8gdmVuZ29ubyBhZ2dpdW50aSBvIGVsaW1pbmF0aSBnbGkgYWxsZWdhdGkgbmVsIGNvbXBvbmVudGUgQXR0YWNobWVudEZpZWxkVGVtcGxhdGUuXHJcbiAgICogU2UgbCdJbWFnZUZpZWxkIMOoIGFiaWxpdGF0byBhbCBkaXNlZ25vIChFbmFibGVNYXJraW5nID09IHRydWUpLCBub24gcGVybWV0dGUgYWxsZWdhdGkgbXVsdGlwbGkgKElzTXVsaXRBdHRhY2ggPT0gZmFsc2UpXHJcbiAgICogZSBuZWwgUmVjb3JkIGNvcnJlbnRlIMOoIHByZXNlbnRlIGwnaW1tYWdpbmUgY2FyaWNhdGEgZGFsbCd1dGVudGUgYWxsb3JhIHJlY3VwZXJhIGxlIGRpbWVuc2lvbmkgZGVsbCdpbW1hZ2luZSBlXHJcbiAgICogYXByZSBpbCBkaWFsb2cgY29uIGlsIGNvbXBvbmVudGUgaW1hZ2UtTWFya2luZyBwZXIgcGVybWV0dGVyZSBpbCBkaXNlZ25vIHN1bGwnaW1tYWdpbmUgYXBwZW5hIGNhcmljYXRhLlxyXG4gICAqL1xyXG4gIG9uQXR0YWNobWVudHNDaGFuZ2UoKSB7XHJcbiAgICAvKlxyXG4gICAgaWYgKCF0aGlzLmZpZWxkLkF0dGFjaERlZmluaXRpb24uSXNNdWx0aUF0dGFjaCAmJiB0aGlzLmZpZWxkLkVuYWJsZU1hcmtpbmcgJiYgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSAmJiB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdWzBdKSB7XHJcbiAgICAgIHRoaXMuZ2V0SW1hZ2VEaW1lbnNpb25zKCk7XHJcbiAgICAgIHRoaXMuZGlhbG9nSW1hZ2VEcm93aW5nUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0ltYWdlRHJvd2luZywge1xyXG4gICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgICB3aWR0aDogJzc1JSdcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAqL1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGludm9jYXRvIGFsIHNhbHZhdGFnZ2lvIGRlbGwnaW1tYWdpbmUgZGFsIGNvbXBvbmVudGUgaW1hZ2UtTWFya2luZy5cclxuICAgKiBUcmFzZm9ybWEgaWwgQmxvYiByaWNldnV0byBpbiB1biBiYXNlNjQsIGFnZ2lvcm5hIGlsIEZpbGVDb250ZXRUeXBlIGUgaWwgRmlsZURhdGFCYXNlNjRcclxuICAgKiBkZWxsJ2FsbGVnYXRvIGNhcmljYXRvIGUgY2hpdWRlIGlsIGRpYWxvZyBpbiBjdWkgZGlzZWduYXJlLlxyXG4gICAqIEBwYXJhbSBNYXJrblBpY3R1cmUgQmxvYiBkZWxsJ2ltbWFnaW5lIGRpc2VnbmF0YS5cclxuICAgKi9cclxuICBhc3luYyBzYXZlTWFyayhtYXJrZWRJbWFnZTogTWFya2VkSW1hZ2UpIHtcclxuICAgIGxldCBiYXNlNjRGaWxlID0gYXdhaXQgdG9CYXNlNjQobWFya2VkSW1hZ2UuaW1hZ2UpO1xyXG4gICAgaWYgKGJhc2U2NEZpbGUpIHtcclxuICAgICAgdGhpcy5NYXJrRmlsZUJhc2U2NCA9IGJhc2U2NEZpbGUuc3BsaXQoXCIsXCIpWzFdO1xyXG4gICAgICB0aGlzLkZpbGVEYXRhQmFzZTY0ID0gdGhpcy5NYXJrRmlsZUJhc2U2NDtcclxuXHJcbiAgICAgIC8vIENsb25vIGwnYXR0YWNobWVudCBvcmlnaW5hbGUsIGdsaSBjYW1iaW8gaWwgRmlsZUJhc2UgZSBnbGkgYXp6ZXJvIGwnSURcclxuICAgICAgdGhpcy5pbWFnZU1hcmtBdHRhY2htZW50LkZpbGVEYXRhQmFzZTY0ID0gdGhpcy5NYXJrRmlsZUJhc2U2NDtcclxuICAgICAgdGhpcy5pbWFnZU1hcmtBdHRhY2htZW50LkV4dHJhSlNPTiA9IEpTT04uc3RyaW5naWZ5KG1hcmtlZEltYWdlLm91dG1hcmtlcnMpO1xyXG4gICAgICB0aGlzLmV4dHJhSlNPTiA9IHRoaXMuaW1hZ2VNYXJrQXR0YWNobWVudC5FeHRyYUpTT047XHJcblxyXG4gICAgICB0aGlzLmltYWdlTWFyay5lbWl0KHRoaXMuaW1hZ2VNYXJrQXR0YWNobWVudCk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRpYWxvZ0ltYWdlTWFya2luZ1JlZikge1xyXG4gICAgICB0aGlzLmNsb3NlRGlhbG9nKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGNoaXVkZXJlIGlsIGRpYWxvZyBpbiBjdWkgZGlzZWduYXJlIHN1bGwnaW1tYWdpbmUgY2FyaWF0YSBlIHN2dW90YXJlIGxlIGRpbWVuc2lvbmkuXHJcbiAgICovXHJcbiAgY2xvc2VEaWFsb2coKSB7XHJcbiAgICB0aGlzLmRpYWxvZ0ltYWdlTWFya2luZ1JlZi5jbG9zZSgpO1xyXG4gICAgdGhpcy53aWR0aCA9IG51bGw7XHJcbiAgICB0aGlzLmhlaWdodCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHJlY3VwZXJhcmUgbGUgZGltZW5zaW9uaSBkZWxsJ2ltbWFnaW5lIGNhcmljYXRhIHBlciBtb3N0cmFyZSBjb3JyZXR0YW1lbnRlXHJcbiAgICogaWwgY29tcG9uZW50ZSBpbWFnZS1NYXJraW5nLiBTZSBub24gdmllbmUgZXNlZ3VpdG8gcXVlc3RvIHBhc3NhZ2dpbyBsJ2FyZWEgaW4gY3VpIGRpc2VnbmFyZSBcclxuICAgKiDDqCBwacO5IGdyYW5kZSBkZWxsJ2ltbWFnaW5lIHN0ZXNzYSBlIGFsIHNhbHZhdGFnZ2lvIGkgdHJhdHRpIGRpc2VnbmF0aSB2ZW5nb25vIHNwb3N0YXRpLiBcclxuICAgKi9cclxuICBwcml2YXRlIGdldEltYWdlRGltZW5zaW9ucygpIHtcclxuICAgIHZhciBibG9iOiBCbG9iID0gdGhpcy5nZXRCbG9iRnJvbUJhc2U2NCgpO1xyXG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgIHJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XHJcbiAgICAgIGltYWdlLnNyYyA9IGUudGFyZ2V0LnJlc3VsdDtcclxuICAgICAgaW1hZ2Uub25sb2FkID0gcnMgPT4ge1xyXG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gcnMuY3VycmVudFRhcmdldFsnaGVpZ2h0J107XHJcbiAgICAgICAgdGhpcy53aWR0aCA9IHJzLmN1cnJlbnRUYXJnZXRbJ3dpZHRoJ107XHJcbiAgICAgIH07XHJcbiAgICB9O1xyXG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoYmxvYik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGNvbnZlcnRpcmUgaWwgYmFzZTY0IGRpIHVuJ2ltbWFnaW5lIGluIHVuIEJsb2IuXHJcbiAgICogTmVjZXNzYXJpbyBwZXIgaWwgcmVjdXBlcm8gZGVsbGUgZGltZW5zaW9uaSBkZWxsJ2ltbWFnaW5lIGNhcmljYXRhIGEgcGFydGlyZSBkYWwgc3VvIGJhc2U2NC5cclxuICAgKiBWaWVuZSBlc2VndWl0byBzb2xvIG5lbCBjYXNvIGluIGN1aSBsJ0ltYWdlRmllbGQgbm9uIGFtbWV0dGUgYWxsZWdhdGkgbXVsdGlwbGkuXHJcbiAgICogQHJldHVybnMgUmVzdGl0dWlzY2UgaWwgQmxvYiBkZWxsJ2ltbWFnaW5lIGNhcmljYXRhLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0QmxvYkZyb21CYXNlNjQoKSB7XHJcbiAgICBjb25zdCBieXRlQ2hhcmFjdGVycyA9IGF0b2IodGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXVswXS5GaWxlRGF0YUJhc2U2NCk7XHJcbiAgICBjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShieXRlQ2hhcmFjdGVycy5sZW5ndGgpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlQ2hhcmFjdGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBieXRlTnVtYmVyc1tpXSA9IGJ5dGVDaGFyYWN0ZXJzLmNoYXJDb2RlQXQoaSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XHJcbiAgICByZXR1cm4gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXVswXS5GaWxlQ29udGVudFR5cGUgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGVtZXR0ZXJlIGwnZXZlbnRvIGNoZSBpbCB2YWxvcmUgZGVsIHJlY29yZCDDqCBjYW1iaWF0by5cclxuICAgKi9cclxuICBwcml2YXRlIG9uUmVjb3JkVmFsdWVDaGFuZ2UoKSB7XHJcbiAgICBpZiAoIXRoaXMuZmllbGQuRm9ybXVsYSkge1xyXG4gICAgICB0aGlzLnJlY29yZENoYW5nZS5lbWl0KHRoaXMucmVjb3JkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuTWFyaygpe1xyXG4gICAgdGhpcy5kaWFsb2dJbWFnZU1hcmtpbmdSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nSW1hZ2VNYXJraW5nLCB7XHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHBhbmVsQ2xhc3M6ICdpbWFnZS1tb2RhbCcsXHJcbiAgICAgIHdpZHRoOiAnNzUlJyxcclxuICAgICAgLy8gbWF4SGVpZ2h0OiAnOTAlJywgdG9sdG8gcGVyY2jDqCBsYSBtYXggcm9tcGUgbGEgZGltZW5zaW9uZSBnaXVzdGFcclxuICAgICAgaGVpZ2h0Oic5MCUnXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5BdHRhY2htZW50SUQgIT0gbnVsbCAmJiBOdW1iZXIodGhpcy5BdHRhY2htZW50SUQpID4gMCl7XHJcbiAgICAgIHRoaXMubG9hZCh0aGlzLkF0dGFjaG1lbnRJRCxbSW1hZ2VGb2xkZXJFbnVtLlJlZ3VsYXJdKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuRmlsZUJhc2U2NCA9IHRoaXMuRmlsZURhdGFCYXNlNjQ7XHJcbiAgICAgIHRoaXMuTWFya2luZ0xvYWRlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbG9hZChJRCxUeXBlcyl7XHJcblxyXG4gICAgdGhpcy5NYXJraW5nTG9hZGVkID0gZmFsc2U7XHJcblxyXG4gICAgICAvLyBwcmVwYXJvIGxhIHZlcnNpb25lIGNvcnJldHRhIGRlbCBmb3JtXHJcbiAgICAgIHZhciBkeW5hbWljTW9kdWxlUGFyYW1zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIFBhcmFtTmFtZTogXCJBdHRhY2htZW50SURcIixcclxuICAgICAgICAgIFBhcmFtVmFsdWU6IElELFxyXG4gICAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBQYXJhbU5hbWU6IFwiVHlwZXNcIixcclxuICAgICAgICAgIFBhcmFtVmFsdWU6IFR5cGVzLFxyXG4gICAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICAgICAgfSxcclxuICAgICAgXTsgICAgXHJcbiAgICAgIFxyXG4gICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zLkdldEF0dGFjaG1lbnRXaXRoQmFzZXM2NCxcclxuICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAgICAgKHJlczogRHluQXR0YWNobWVudCkgPT4ge1xyXG5cclxuICAgICAgICB0aGlzLkZpbGVCYXNlNjQgPSByZXMuRmlsZUJhc2VzNjRbSW1hZ2VGb2xkZXJFbnVtLlJlZ3VsYXJdO1xyXG4gICAgICAgIHRoaXMuTWFya2luZ0xvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcblxyXG4gICAgICB9XHJcbiAgICApOyAgICBcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyb3cgaW1hZ2VDb250YWluZXJcIiBzdHlsZT1cIndpZHRoOiB7e2ltYWdlV2lkdGh9fXB4O1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj57e2ZpZWxkLkRlc2NyaXB0aW9ufX08L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgPGltZyAqbmdJZj1cImZpZWxkLkR5bkF0dGFjaG1lbnRcIlxyXG4gICAgICAgIHNyYz1cImRhdGE6e3tmaWVsZC5EeW5BdHRhY2htZW50LkZpbGVDb250ZW50VHlwZX19O2Jhc2U2NCx7e0ZpbGVEYXRhQmFzZTY0fX1cIlxyXG4gICAgICAgIFtoZWlnaHRdPVwiZmllbGQuRHluQXR0YWNobWVudC5SZXNpemVkSW1hZ2VIZWlnaHRQeCAhPSBudWxsID8gZmllbGQuRHluQXR0YWNobWVudC5SZXNpemVkSW1hZ2VIZWlnaHRQeCA6IDEyOFwiXHJcbiAgICAgICAgY2xhc3M9XCJzaW5nbGVJbWFnZVwiXHJcbiAgICAgID5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkcmF3QnV0dG9uXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXcxMDBcIiAoY2xpY2spPVwib3Blbk1hcmsoKVwiPk1hcmNhPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5EeW5BdHRhY2htZW50LkJ1dHRvbktleSAhPSBudWxsICYmIGZpZWxkLkR5bkF0dGFjaG1lbnQuQnV0dG9uS2V5ICE9ICcnXCIgY2xhc3M9XCJjb2wtMTIgZmxleCBqdXN0aWZ5LWNvbnRlbnQtYXJvdW5kIGJ1dHRvbmtleVwiPlxyXG4gICAgICA8ZGl2PkV0aWNoZXR0YTwvZGl2PjxkaXY+e3tmaWVsZC5EeW5BdHRhY2htZW50LkJ1dHRvbktleX19PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5EeW5BdHRhY2htZW50LkJ1dHRvblZhbHVlICE9IG51bGwgJiYgZmllbGQuRHluQXR0YWNobWVudC5CdXR0b25WYWx1ZSAhPSAnJ1wiIGNsYXNzPVwiY29sLTEyIGZsZXgganVzdGlmeS1jb250ZW50LWFyb3VuZCBidXR0b252YWx1ZVwiPiBcclxuICAgICAgPGRpdj5WYWxvcmU8L2Rpdj5cclxuICAgICAgPGRpdj57e2ZpZWxkLkR5bkF0dGFjaG1lbnQuQnV0dG9uVmFsdWV9fTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+ICAgXHJcbjwvZGl2PlxyXG5cclxuPCEtLSBESUFMT0cgUEVSIERJU0VHTkFSRSBTVUwgTlVPVk8gQUxMRUdBVE8gQ0FSSUNBVE8gLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGlhbG9nSW1hZ2VNYXJraW5nPlxyXG4gIDxkaXYgY2xhc3M9XCJwYWRkZXIgaC0xMDBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgaC0xMDBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMTIgaC0xMDBcIj5cclxuICAgICAgICA8dG13LWltYWdlLW1hcmtlciAqbmdJZj1cIk1hcmtpbmdMb2FkZWRcIlxyXG4gICAgICAgICAgY2xhc3M9XCIgaC0xMDBcIlxyXG4gICAgICAgICAgW3NyY109XCInZGF0YTonKyBmaWVsZC5EeW5BdHRhY2htZW50LkZpbGVDb250ZW50VHlwZSArICc7YmFzZTY0LCcrIEZpbGVCYXNlNjRcIiBcclxuICAgICAgICAgIFtpbkNvbmZpZ109XCJpbkNvbmZpZ1wiIFxyXG4gICAgICAgICAgW3NhdmVkTWFya2Vyc109XCJleHRyYUpTT05cIlxyXG4gICAgICAgICAgKHNhdmUpPVwic2F2ZU1hcmsoJGV2ZW50KVwiIFxyXG4gICAgICAgICAgKGNsb3NlRGlhbG9nKT1cImNsb3NlRGlhbG9nKClcIlxyXG4gICAgICAgICAgW3dpZHRoXT1cImZpZWxkLkR5bkF0dGFjaG1lbnQuSW1hZ2VXaWR0aFB4XCIgXHJcbiAgICAgICAgICBbaGVpZ2h0XT1cImZpZWxkLkR5bkF0dGFjaG1lbnQuSW1hZ2VIZWlnaHRQeFwiIFxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvdG13LWltYWdlLW1hcmtlcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
@@ -181,6 +181,18 @@ export class TmwImageMarkerComponent {
|
|
|
181
181
|
if (this.height) {
|
|
182
182
|
height = this.height;
|
|
183
183
|
}
|
|
184
|
+
// ricalcolo le dimensioni dell'immagine per farla entrare nello schermo
|
|
185
|
+
// diminuisco di un 5% alla volta le dimensioni fino a rientrare nell'85% della grandezza della finestra
|
|
186
|
+
let windowWidth = window.innerWidth;
|
|
187
|
+
let windowHeight = window.innerHeight;
|
|
188
|
+
while (width > windowWidth * 0.85) {
|
|
189
|
+
width = width * 0.95;
|
|
190
|
+
height = height * 0.95;
|
|
191
|
+
}
|
|
192
|
+
while (height > windowHeight * 0.85) {
|
|
193
|
+
width = width * 0.95;
|
|
194
|
+
height = height * 0.95;
|
|
195
|
+
}
|
|
184
196
|
image.scaleToWidth(width, false);
|
|
185
197
|
image.scaleToHeight(height, false);
|
|
186
198
|
this.canvas.setBackgroundImage(image, ((img) => {
|
|
@@ -334,4 +346,4 @@ export class OutMarker {
|
|
|
334
346
|
}
|
|
335
347
|
export class MarkedImage {
|
|
336
348
|
}
|
|
337
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG13LWltYWdlLW1hcmtlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvdG13LWltYWdlLW1hcmtlci90bXctaW1hZ2UtbWFya2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS90bXctaW1hZ2UtbWFya2VyL3Rtdy1pbWFnZS1tYXJrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7O0FBT2pFLE1BQU0sT0FBTyx1QkFBdUI7SUFrQ2xDO1FBN0JTLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsaUJBQVksR0FBVyxJQUFJLENBQUM7UUFFckIsbUJBQWMsR0FBRyxZQUFZLENBQUM7UUFDOUIsa0JBQWEsR0FBRyxHQUFHLENBQUM7UUFFcEIsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFFN0IsZ0JBQVcsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUMzRCxTQUFJLEdBQThCLElBQUksWUFBWSxFQUFlLENBQUM7UUFHNUUsY0FBUyxHQUFZLElBQUksQ0FBQztRQUMxQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBR2xCLFVBQUssR0FBb0IsRUFBRSxDQUFDO1FBRXBDLFlB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QUFDLEVBQUU7UUFDSixhQUFhLENBQUMsUUFBUSxDQUFDLHNCQUFzQixFQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7O3FIQXpYVSx1QkFBdUI7eUdBQXZCLHVCQUF1QixtVUNWcEMsb29EQW9DTTs0RkQxQk8sdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLGtCQUFrQjswRUFNbkIsR0FBRztzQkFBWCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFFVSxlQUFlO3NCQUE5QixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNOztBQStXVCxNQUFNLE9BQU8sTUFBTTtJQUFuQjtRQU9FLGdCQUFXLEdBQVcsRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxTQUFTO0lBQXRCO1FBSUUsZ0JBQVcsR0FBVyxFQUFFLENBQUM7SUFDM0IsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLFdBQVc7Q0FHdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmYWJyaWMgfSBmcm9tICdmYWJyaWMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9nbG9iYWwuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3Rtdy1pbWFnZS1tYXJrZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90bXctaW1hZ2UtbWFya2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90bXctaW1hZ2UtbWFya2VyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRtd0ltYWdlTWFya2VyQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KCkgc3JjOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgd2lkdGg6IG51bWJlcjtcclxuICBASW5wdXQoKSBoZWlnaHQ6IG51bWJlcjtcclxuICBASW5wdXQoKSBpbkNvbmZpZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNhdmVkTWFya2Vyczogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIG91dHB1dE1pbWVUeXBlID0gJ2ltYWdlL2pwZWcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBvdXRwdXRRdWFsaXR5ID0gMC44O1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgZm9yY2VTaXplQ2FudmFzID0gdHJ1ZTtcclxuXHJcbiAgQE91dHB1dCgpIGNsb3NlRGlhbG9nOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIHNhdmU6IEV2ZW50RW1pdHRlcjxNYXJrZWRJbWFnZT4gPSBuZXcgRXZlbnRFbWl0dGVyPE1hcmtlZEltYWdlPigpO1xyXG5cclxuICBjb21wb25lbnRHdWlkOiBzdHJpbmc7XHJcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBoYXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIGNhbnZhczogZmFicmljLkNhbnZhcztcclxuICBwcml2YXRlIHN0YWNrOiBmYWJyaWMuT2JqZWN0W10gPSBbXTtcclxuXHJcbiAgbWFya2VyczogQXJyYXk8TWFya2VyPiA9IG5ldyBBcnJheTxNYXJrZXI+KCk7XHJcbiAgb3V0bWFya2VyczogQXJyYXk8T3V0TWFya2VyPiA9IG5ldyBBcnJheTxPdXRNYXJrZXI+KCk7XHJcbiAgbWFya2VkSW1hZ2U6IE1hcmtlZEltYWdlID0gbmV3IE1hcmtlZEltYWdlKCk7XHJcblxyXG4gIGNhblVuZG86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjYW5SZWRvOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgcHJpdmF0ZSBpbWFnZVVzZWQ/OiBmYWJyaWMuSW1hZ2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIC8vIENyZWF6aW9uZSBkaSB1bmEgR1VJRCB1bmljYSBwZXIgaWwgY29tcG9uZW50ZVxyXG4gICAgdGhpcy5jb21wb25lbnRHdWlkID0gJ3h4eHgteHh4eC14eHh4LXh4eHgnLnJlcGxhY2UoL1t4eV0vZywgZnVuY3Rpb24gKGMpIHtcclxuICAgICAgdmFyIHIgPSBNYXRoLnJhbmRvbSgpICogMTYgfCAwLFxyXG4gICAgICAgIHYgPSBjID09ICd4JyA/IHIgOiAociAmIDB4MyB8IDB4OCk7XHJcbiAgICAgIHJldHVybiB2LnRvU3RyaW5nKDE2KTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IGNhbnZhc1NjYWxlZEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmNvbXBvbmVudEd1aWQpO1xyXG4gICAgdGhpcy5jYW52YXMgPSBuZXcgZmFicmljLkNhbnZhcyhjYW52YXNTY2FsZWRFbGVtZW50LCB7XHJcbiAgICAgIGhvdmVyQ3Vyc29yOiAncG9pbnRlcicsXHJcbiAgICAgIGlzRHJhd2luZ01vZGU6IGZhbHNlLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNhbnZhcy5iYWNrZ3JvdW5kQ29sb3IgPSAnd2hpdGUnO1xyXG5cclxuICAgIGlmICh0aGlzLnNyYykge1xyXG4gICAgICB0aGlzLmltcG9ydFBob3RvRnJvbVNyYyh0aGlzLnNyYyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoIXRoaXMud2lkdGggfHwgIXRoaXMuaGVpZ2h0KSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyB3aWR0aCBvciBoaWdodCBnaXZlbiAhJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY2FudmFzLnNldFdpZHRoKHRoaXMud2lkdGgpO1xyXG4gICAgICB0aGlzLmNhbnZhcy5zZXRIZWlnaHQodGhpcy5oZWlnaHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2FudmFzLm9uKCdwYXRoOmNyZWF0ZWQnLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMuc3RhY2sgPSBbXTtcclxuICAgICAgdGhpcy5zZXRVbmRvUmVkbygpO1xyXG4gICAgfSk7XHJcblxyXG4gIH0gIFxyXG5cclxuICBuZXdNYXJrZXIoKXtcclxuICAgIHZhciBzdGFydFggPSBNYXRoLmZsb29yKHRoaXMud2lkdGggLyAyKTtcclxuICAgIHZhciBzdGFydFkgPSBNYXRoLmZsb29yKHRoaXMuaGVpZ2h0IC8gMik7XHJcblxyXG4gICAgdmFyIGxlZnQgPSB0aGlzLnJhbmRvbUludEZyb21JbnRlcnZhbChzdGFydFgtMTAwLHN0YXJ0WCsxMDApO1xyXG4gICAgdmFyIHRvcCA9IHRoaXMucmFuZG9tSW50RnJvbUludGVydmFsKHN0YXJ0WS0xMDAsc3RhcnRZKzEwMCk7XHJcbiAgICB2YXIgZGVzY3JpcHRpb246ICcnO1xyXG4gICAgdmFyIGNhcHRpb24gPSAnMCc7XHJcblxyXG4gICAgLy8gQ3JlYXppb25lIGRlbGxhIGNhcHRpb25cclxuICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IDEwMDAwMDsgaSsrKXtcclxuICAgICAgaWYgKHRoaXMubWFya2Vycy5maW5kKHggPT4geC5jYXB0aW9uID09IGkudG9TdHJpbmcoKSkgPT0gbnVsbCl7XHJcbiAgICAgICAgY2FwdGlvbiA9IGkudG9TdHJpbmcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcblxyXG4gICAgdGhpcy5jcmVhdGVNYXJrZXIodG9wLGxlZnQsY2FwdGlvbixkZXNjcmlwdGlvbik7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVNYXJrZXIodG9wOiBudW1iZXIsIGxlZnQ6IG51bWJlciwgY2FwdGlvbjogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nKXtcclxuXHJcbiAgICAvKlxyXG4gICAgKiBDcmVvIHVuIG51b3ZvIE1hcmtlclxyXG4gICAgKi9cclxuXHJcbiAgICAvLyBDcmVvIGlsIGNlcmNoaW9cclxuICAgIHZhciBjaXJjbGUgPSBuZXcgZmFicmljLkNpcmNsZSh7XHJcbiAgICAgIHJhZGl1czogMzAsXHJcbiAgICAgIG9wYWNpdHk6IDAuNyxcclxuICAgICAgZmlsbDogJ2RhcmtibHVlJyxcclxuICAgICAgc3Ryb2tlOiAnd2hpdGUnLFxyXG4gICAgICBzdHJva2VXaWR0aDogMixcclxuICAgICAgb3JpZ2luWDogJ2NlbnRlcicsIFxyXG4gICAgICBvcmlnaW5ZOiAnY2VudGVyJyBcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIENyZW8gaWwgdGVzdG8gZGVudHJvIGFsIGNlcmNoaW8gXHJcbiAgICB2YXIgdGV4dCA9IG5ldyBmYWJyaWMuVGV4dChjYXB0aW9uLFxyXG4gICAgeyAgZm9udFNpemU6IDI1LCBcclxuICAgICAgICBvcmlnaW5YOiAnY2VudGVyJywgXHJcbiAgICAgICAgb3JpZ2luWTogJ2NlbnRlcicsXHJcbiAgICAgICAgZmlsbCA6ICd3aGl0ZScgXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIC8vIENyZW8gaWwgZ3J1cHBvIG5lbCBxdWFsZSBtZXR0byBjZXJjaGlvIGUgdGVzdG8gaW4gbW9kbyBjaGUgc2kgbXVvdmFubyBpbnNpZW1lXHJcbiAgICB2YXIgZ3JvdXAgPSBuZXcgZmFicmljLkdyb3VwKFsgY2lyY2xlLCB0ZXh0IF0sIHsgIGxlZnQ6IGxlZnQsIHRvcDogdG9wIH0pOyAgICBcclxuXHJcbiAgICAvLyBDcmVvIHVuIG9nZ2V0dG8gbWFya2VyIGNoZSBjb250aWVuZSBnbGkgZWxlbWVudGkgYXRvbWljaS4gU2VydmUgcGVyIGxlIGNhbmNlbGxhemlvbmkgZSBpbCByb2xsYmFjay9tb2RpZmljYSBkZWdsaSBlbGVtZW50aVxyXG4gICAgdmFyIG1hcmtlcjogTWFya2VyID0gbmV3IE1hcmtlcigpO1xyXG4gICAgbWFya2VyLmNpcmNsZSA9IGNpcmNsZTtcclxuICAgIG1hcmtlci50ZXh0ID0gdGV4dDtcclxuICAgIG1hcmtlci5ncm91cCA9IGdyb3VwO1xyXG4gICAgbWFya2VyLmNhcHRpb24gPSBjYXB0aW9uO1xyXG4gICAgbWFya2VyLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XHJcblxyXG4gICAgLy8gQWdnaXVuZ28gaWwgZ3J1cHBvIG5lbGxhIGxpc3RhIGRlaSBncnVwcGlcclxuICAgIHRoaXMubWFya2Vycy5wdXNoKG1hcmtlcik7XHJcbiAgICB0aGlzLm1hcmtlcnMuc29ydCgoYSxiKT0+IHsgcmV0dXJuIE51bWJlcihhLmNhcHRpb24pIC0gTnVtYmVyKGIuY2FwdGlvbikgfSk7XHJcblxyXG4gICAgLy8gQWdnaXVuZ28gaWwgZ3J1cHBvIGFsbCdpbW1hZ2luZSBhIHNjaGVybW9cclxuICAgIHRoaXMuY2FudmFzLmFkZChncm91cCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVNYXJrZXJCeUluZGV4KGluZGV4OiBudW1iZXIpe1xyXG4gICAgdGhpcy5jYW52YXMucmVtb3ZlKHRoaXMubWFya2Vyc1tpbmRleF0uZ3JvdXApO1xyXG4gICAgdGhpcy5tYXJrZXJzLnNwbGljZShpbmRleCwxKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUFsbE1hcmtlcnMoKXtcclxuICAgIHRoaXMubWFya2Vycy5mb3JFYWNoKChtYXJrZXIpID0+IHtcclxuICAgICAgdGhpcy5jYW52YXMucmVtb3ZlKG1hcmtlci5ncm91cCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMubWFya2VycyA9IG5ldyBBcnJheTxNYXJrZXI+KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVuZG9SZWRvKCkge1xyXG4gICAgdGhpcy5jYW5VbmRvID0gdGhpcy5jYW52YXMuZ2V0T2JqZWN0cygpLmxlbmd0aCA+IDA7XHJcbiAgICB0aGlzLmNhblJlZG8gPSB0aGlzLnN0YWNrLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICAvKlxyXG5cclxuICAgIC8vIEFjdGlvbnNcclxuICAgIHB1YmxpYyB1bmRvKCkge1xyXG4gICAgICBpZiAodGhpcy5jYW5VbmRvKSB7XHJcbiAgICAgICAgY29uc3QgbGFzdElkID0gdGhpcy5jYW52YXMuZ2V0T2JqZWN0cygpLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgY29uc3QgbGFzdE9iaiA9IHRoaXMuY2FudmFzLmdldE9iamVjdHMoKVtsYXN0SWRdO1xyXG4gICAgICAgIHRoaXMuc3RhY2sucHVzaChsYXN0T2JqKTtcclxuICAgICAgICB0aGlzLmNhbnZhcy5yZW1vdmUobGFzdE9iaik7XHJcbiAgICAgICAgdGhpcy5zZXRVbmRvUmVkbygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgXHJcbiAgICBwdWJsaWMgcmVkbygpIHtcclxuICAgICAgaWYgKHRoaXMuY2FuUmVkbykge1xyXG4gICAgICAgIGNvbnN0IGZpcnN0SW5TdGFjayA9IHRoaXMuc3RhY2suc3BsaWNlKC0xLCAxKVswXTtcclxuICAgICAgICBpZiAoZmlyc3RJblN0YWNrKSB7XHJcbiAgICAgICAgICB0aGlzLmNhbnZhcy5pbnNlcnRBdChmaXJzdEluU3RhY2ssIHRoaXMuY2FudmFzLmdldE9iamVjdHMoKS5sZW5ndGggLSAxLCBmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0VW5kb1JlZG8oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIFxyXG4gICAgcHVibGljIGNsZWFyQ2FudmFzKCkge1xyXG4gICAgICBpZiAodGhpcy5jYW52YXMpIHtcclxuICAgICAgICB0aGlzLmNhbnZhcy5yZW1vdmUoLi4udGhpcy5jYW52YXMuZ2V0T2JqZWN0cygpKTtcclxuICAgICAgICB0aGlzLnNldFVuZG9SZWRvKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiovXHJcblxyXG4gIHByaXZhdGUgaW1wb3J0UGhvdG9Gcm9tU3JjKHNyYzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICBsZXQgaXNGaXJzdFRyeSA9IHRydWU7XHJcbiAgICBjb25zdCBpbWdFbCA9IG5ldyBJbWFnZSgpO1xyXG4gICAgaW1nRWwuc2V0QXR0cmlidXRlKCdjcm9zc09yaWdpbicsICdhbm9ueW1vdXMnKTtcclxuICAgIGltZ0VsLnNyYyA9IHNyYztcclxuICAgIGltZ0VsLm9uZXJyb3IgPSAoKSA9PiB7XHJcbiAgICAgIC8vIFJldHJ5IHdpdGggY29ycyBwcm94eVxyXG4gICAgICBpZiAoaXNGaXJzdFRyeSkge1xyXG4gICAgICAgIGltZ0VsLnNyYyA9ICdodHRwczovL2NvcnMtYW55d2hlcmUuaGVyb2t1YXBwLmNvbS8nICsgdGhpcy5zcmM7XHJcbiAgICAgICAgaXNGaXJzdFRyeSA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5oYXNFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBcIkNPUlMgRXJyb3JcIjtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGltZ0VsLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pbWFnZVVzZWQgPSBuZXcgZmFicmljLkltYWdlKGltZ0VsKTtcclxuXHJcbiAgICAgIHRoaXMuaW1hZ2VVc2VkLmNsb25lQXNJbWFnZShpbWFnZSA9PiB7XHJcbiAgICAgICAgbGV0IHdpZHRoID0gaW1nRWwud2lkdGg7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IGltZ0VsLmhlaWdodDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMud2lkdGgpIHtcclxuICAgICAgICAgIHdpZHRoID0gdGhpcy53aWR0aDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuaGVpZ2h0KSB7XHJcbiAgICAgICAgICBoZWlnaHQgPSB0aGlzLmhlaWdodDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGltYWdlLnNjYWxlVG9XaWR0aCh3aWR0aCwgZmFsc2UpO1xyXG4gICAgICAgIGltYWdlLnNjYWxlVG9IZWlnaHQoaGVpZ2h0LCBmYWxzZSk7XHJcblxyXG4gICAgICAgIHRoaXMuY2FudmFzLnNldEJhY2tncm91bmRJbWFnZShpbWFnZSwgKChpbWc6IEhUTUxJbWFnZUVsZW1lbnQpID0+IHtcclxuICAgICAgICAgIGlmIChpbWcpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9yY2VTaXplQ2FudmFzKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYW52YXMuc2V0V2lkdGgod2lkdGgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2FudmFzLnNldEhlaWdodChoZWlnaHQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY2FudmFzLnNldFdpZHRoKGltYWdlLmdldFNjYWxlZFdpZHRoKCkpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2FudmFzLnNldEhlaWdodChpbWFnZS5nZXRTY2FsZWRIZWlnaHQoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSwge1xyXG4gICAgICAgICAgY3Jvc3NPcmlnaW46ICdhbm9ueW1vdXMnLFxyXG4gICAgICAgICAgb3JpZ2luWDogJ2xlZnQnLFxyXG4gICAgICAgICAgb3JpZ2luWTogJ3RvcCdcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5zYXZlZE1hcmtlcnMgIT0gbnVsbCl7IHRoaXMubG9hZE1hcmtlcnMoKTsgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGxvYWRNYXJrZXJzKCl7XHJcbiAgICB2YXIgbWFya2Vyc09iajogQXJyYXk8T3V0TWFya2VyPiA9IEpTT04ucGFyc2UodGhpcy5zYXZlZE1hcmtlcnMpO1xyXG4gICAgbWFya2Vyc09iai5mb3JFYWNoKChtYXJrZXIpID0+IHtcclxuICAgICAgdGhpcy5jcmVhdGVNYXJrZXIobWFya2VyLnRvcCxtYXJrZXIubGVmdCxtYXJrZXIuY2FwdGlvbixtYXJrZXIuZGVzY3JpcHRpb24pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZUltYWdlKCl7XHJcblxyXG4gICAgdGhpcy5vdXRtYXJrZXJzID0gbmV3IEFycmF5PE91dE1hcmtlcj4oKTtcclxuXHJcbiAgICB0aGlzLm1hcmtlcnMuZm9yRWFjaCgobWFya2VyKSA9PiB7XHJcbiAgICAgIHZhciBvdXRtYXJrZXIgPSBuZXcgT3V0TWFya2VyKCk7XHJcbiAgICAgIG91dG1hcmtlci5jYXB0aW9uID0gbWFya2VyLmNhcHRpb247XHJcbiAgICAgIG91dG1hcmtlci5kZXNjcmlwdGlvbiA9IG1hcmtlci5kZXNjcmlwdGlvbjtcclxuICAgICAgb3V0bWFya2VyLnRvcCA9IG1hcmtlci5ncm91cC50b3A7XHJcbiAgICAgIG91dG1hcmtlci5sZWZ0ID0gbWFya2VyLmdyb3VwLmxlZnQ7XHJcbiAgICAgIHRoaXMub3V0bWFya2Vycy5wdXNoKG91dG1hcmtlcik7XHJcbiAgICB9KVxyXG5cclxuICAgIGlmICh0aGlzLndpZHRoICYmIHRoaXMuaGVpZ2h0KSB7XHJcbiAgICAgIGNvbnN0IGNhbnZhc1NjYWxlZEVsZW1lbnQ6IEhUTUxDYW52YXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcbiAgICAgIGNvbnN0IGNhbnZhc1NjYWxlZCA9IG5ldyBmYWJyaWMuQ2FudmFzKGNhbnZhc1NjYWxlZEVsZW1lbnQpO1xyXG4gICAgICBjYW52YXNTY2FsZWQuYmFja2dyb3VuZENvbG9yID0gJ3doaXRlJztcclxuXHJcbiAgICAgIG5ldyBPYnNlcnZhYmxlPGZhYnJpYy5DYW52YXM+KG9ic2VydmVyID0+IHtcclxuICAgICAgICBpZiAodGhpcy5pbWFnZVVzZWQpIHtcclxuXHJcbiAgICAgICAgICAgIGNhbnZhc1NjYWxlZC5zZXRCYWNrZ3JvdW5kSW1hZ2UodGhpcy5pbWFnZVVzZWQsIChpbWc6IEhUTUxJbWFnZUVsZW1lbnQpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoIWltZykge1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IobmV3IEVycm9yKCdJbXBvc3NpYmxlIHRvIGRyYXcgdGhlIGltYWdlIG9uIHRoZSB0ZW1wb3JhcnkgY2FudmFzJykpO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgY2FudmFzU2NhbGVkLnNldFdpZHRoKGltZy53aWR0aCk7XHJcbiAgICAgICAgICAgICAgY2FudmFzU2NhbGVkLnNldEhlaWdodChpbWcuaGVpZ2h0KTtcclxuXHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChjYW52YXNTY2FsZWQpO1xyXG4gICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgIH0sIHtcclxuICAgICAgICAgICAgICBjcm9zc09yaWdpbjogJ2Fub255bW91cycsXHJcbiAgICAgICAgICAgICAgb3JpZ2luWDogJ2xlZnQnLFxyXG4gICAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNhbnZhc1NjYWxlZC5zZXRXaWR0aCh0aGlzLndpZHRoKTtcclxuICAgICAgICAgIGNhbnZhc1NjYWxlZC5zZXRIZWlnaHQodGhpcy5oZWlnaHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSkucGlwZShcclxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IHByb2Nlc3MgPSBvZihjYW52YXNTY2FsZWQpO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmNhbnZhcy5nZXRPYmplY3RzKCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCByYXRpb1ggPSBjYW52YXNTY2FsZWQuZ2V0V2lkdGgoKSAvIHRoaXMuY2FudmFzLmdldFdpZHRoKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJhdGlvWSA9IGNhbnZhc1NjYWxlZC5nZXRIZWlnaHQoKSAvIHRoaXMuY2FudmFzLmdldEhlaWdodCgpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jYW52YXMuZ2V0T2JqZWN0cygpLmZvckVhY2goKG9yaWdpbmFsT2JqZWN0OiBmYWJyaWMuT2JqZWN0LCBpOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICBwcm9jZXNzID0gcHJvY2Vzcy5waXBlKHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8ZmFicmljLkNhbnZhcz4ob2JzZXJ2ZXJPYmplY3QgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBvcmlnaW5hbE9iamVjdC5jbG9uZSgoY2xvbmVkT2JqZWN0OiBmYWJyaWMuT2JqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvbmVkT2JqZWN0LnNldCgnbGVmdCcsIG9yaWdpbmFsT2JqZWN0LmxlZnQgKiByYXRpb1gpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNsb25lZE9iamVjdC5zZXQoJ3RvcCcsIG9yaWdpbmFsT2JqZWN0LnRvcCAqIHJhdGlvWSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvbmVkT2JqZWN0LnNjYWxlVG9XaWR0aChvcmlnaW5hbE9iamVjdC53aWR0aCAqIHJhdGlvWCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvbmVkT2JqZWN0LnNjYWxlVG9IZWlnaHQob3JpZ2luYWxPYmplY3QuaGVpZ2h0ICogcmF0aW9ZKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY2FudmFzU2NhbGVkLmluc2VydEF0KGNsb25lZE9iamVjdCwgaSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbnZhc1NjYWxlZC5yZW5kZXJBbGwoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXJPYmplY3QubmV4dChjYW52YXNTY2FsZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyT2JqZWN0LmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBwcm9jZXNzO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgY2FudmFzU2NhbGVkLnJlbmRlckFsbCgpO1xyXG4gICAgICAgIGNhbnZhc1NjYWxlZC5nZXRFbGVtZW50KCkudG9CbG9iKFxyXG4gICAgICAgICAgKGRhdGE6IEJsb2IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tYXJrZWRJbWFnZS5pbWFnZSA9IGRhdGE7XHJcbiAgICAgICAgICAgIHRoaXMubWFya2VkSW1hZ2Uub3V0bWFya2VycyA9IHRoaXMub3V0bWFya2VycztcclxuICAgICAgICAgICAgdGhpcy5zYXZlLmVtaXQodGhpcy5tYXJrZWRJbWFnZSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgdGhpcy5vdXRwdXRNaW1lVHlwZSxcclxuICAgICAgICAgIHRoaXMub3V0cHV0UXVhbGl0eVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jYW52YXMuZ2V0RWxlbWVudCgpLnRvQmxvYihcclxuICAgICAgICAoZGF0YTogQmxvYikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5tYXJrZWRJbWFnZS5pbWFnZSA9IGRhdGE7XHJcbiAgICAgICAgICB0aGlzLm1hcmtlZEltYWdlLm91dG1hcmtlcnMgPSB0aGlzLm91dG1hcmtlcnM7XHJcbiAgICAgICAgICB0aGlzLnNhdmUuZW1pdCh0aGlzLm1hcmtlZEltYWdlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRoaXMub3V0cHV0TWltZVR5cGUsXHJcbiAgICAgICAgdGhpcy5vdXRwdXRRdWFsaXR5XHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIC8vdGhpcy5zYXZlLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZSgpe1xyXG4gICAgdGhpcy5jbG9zZURpYWxvZy5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICByYW5kb21JbnRGcm9tSW50ZXJ2YWwobWluLCBtYXgpIHsgLy8gbWluIGFuZCBtYXggaW5jbHVkZWQgXHJcbiAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpICsgbWluKVxyXG4gIH1cclxuXHJcbiAgbG9nKGVsKXtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJpbWFnZU1hcmtlciBlbGVtZW50IFwiLGVsKTtcclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTWFya2VyIHtcclxuICBjaXJjbGU6IGZhYnJpYy5DaXJjbGU7XHJcbiAgdGV4dDogZmFicmljLlRleHQ7XHJcbiAgZ3JvdXA6IGZhYnJpYy5Hcm91cDtcclxuICB0b3A6IG51bWJlcjtcclxuICBsZWZ0OiBudW1iZXI7XHJcbiAgY2FwdGlvbjogc3RyaW5nO1xyXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgPSBcIlwiO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgT3V0TWFya2VyIHtcclxuICB0b3A6IG51bWJlcjtcclxuICBsZWZ0OiBudW1iZXI7XHJcbiAgY2FwdGlvbjogc3RyaW5nO1xyXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgPSBcIlwiO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTWFya2VkSW1hZ2Uge1xyXG4gIG91dG1hcmtlcnM6IEFycmF5PE91dE1hcmtlcj47XHJcbiAgaW1hZ2U6IEJsb2I7XHJcbn0iLCI8ZGl2IGNsYXNzPVwiY2FudmFzLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhbnZhc1wiPlxyXG4gICAgICAgIDxjYW52YXMgW2lkXT1cImNvbXBvbmVudEd1aWRcIj48L2NhbnZhcz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInRvb2xib3hcIj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1hcmtlckJ1dHRvblwiIChjbGljayk9XCJuZXdNYXJrZXIoKVwiPkNyZWEgbnVvdm8gbWFya2VyPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG10LTJcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kX292ZXJmbG93X2NvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmRfY29udGFpbmVyXCIgKm5nRm9yPVwibGV0IG1hcmtlciBvZiBtYXJrZXJzOyBpbmRleCBhcyBpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXB0aW9uXCIgW2lubmVySFRNTF09XCJtYXJrZXIuY2FwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dGFyZWFcIj48dGV4dGFyZWEgIFsobmdNb2RlbCldPVwibWFya2VyLmRlc2NyaXB0aW9uXCIgKGNsaWNrKT1cImxvZyhtYXJrZXIuZGVzY3JpcHRpb24pXCI+PC90ZXh0YXJlYT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlbGV0ZVwiIChjbGljayk9XCJkZWxldGVNYXJrZXJCeUluZGV4KGkpXCI+PG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG10LTJcIiAqbmdJZj1cIiFpbkNvbmZpZ1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBtYXJrZXJCdXR0b25cIiAoY2xpY2spPVwic2F2ZUltYWdlKClcIj5TYWx2YSBJbW1hZ2luZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi13YXJuaW5nIG1hcmtlckJ1dHRvblwiIChjbGljayk9XCJyZW1vdmVBbGxNYXJrZXJzKClcIj5SaW11b3ZpIHR1dHRpIGkgbWFya2VyczwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgbWFya2VyQnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlKClcIj5Bbm51bGxhIERpc2Vnbm88L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcblxyXG5cclxuXHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
349
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG13LWltYWdlLW1hcmtlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvdG13LWltYWdlLW1hcmtlci90bXctaW1hZ2UtbWFya2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS90bXctaW1hZ2UtbWFya2VyL3Rtdy1pbWFnZS1tYXJrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7O0FBT2pFLE1BQU0sT0FBTyx1QkFBdUI7SUFrQ2xDO1FBN0JTLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsaUJBQVksR0FBVyxJQUFJLENBQUM7UUFFckIsbUJBQWMsR0FBRyxZQUFZLENBQUM7UUFDOUIsa0JBQWEsR0FBRyxHQUFHLENBQUM7UUFFcEIsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFFN0IsZ0JBQVcsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUMzRCxTQUFJLEdBQThCLElBQUksWUFBWSxFQUFlLENBQUM7UUFHNUUsY0FBUyxHQUFZLElBQUksQ0FBQztRQUMxQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBR2xCLFVBQUssR0FBb0IsRUFBRSxDQUFDO1FBRXBDLFlB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QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZhYnJpYyB9IGZyb20gJ2ZhYnJpYyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgR2xvYmFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2dsb2JhbC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndG13LWltYWdlLW1hcmtlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Rtdy1pbWFnZS1tYXJrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Rtdy1pbWFnZS1tYXJrZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG13SW1hZ2VNYXJrZXJDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKSBzcmM6IHN0cmluZztcclxuICBASW5wdXQoKSB3aWR0aDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGhlaWdodDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGluQ29uZmlnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2F2ZWRNYXJrZXJzOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgb3V0cHV0TWltZVR5cGUgPSAnaW1hZ2UvanBlZyc7XHJcbiAgQElucHV0KCkgcHVibGljIG91dHB1dFF1YWxpdHkgPSAwLjg7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JjZVNpemVDYW52YXMgPSB0cnVlO1xyXG5cclxuICBAT3V0cHV0KCkgY2xvc2VEaWFsb2c6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgc2F2ZTogRXZlbnRFbWl0dGVyPE1hcmtlZEltYWdlPiA9IG5ldyBFdmVudEVtaXR0ZXI8TWFya2VkSW1hZ2U+KCk7XHJcblxyXG4gIGNvbXBvbmVudEd1aWQ6IHN0cmluZztcclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgY2FudmFzOiBmYWJyaWMuQ2FudmFzO1xyXG4gIHByaXZhdGUgc3RhY2s6IGZhYnJpYy5PYmplY3RbXSA9IFtdO1xyXG5cclxuICBtYXJrZXJzOiBBcnJheTxNYXJrZXI+ID0gbmV3IEFycmF5PE1hcmtlcj4oKTtcclxuICBvdXRtYXJrZXJzOiBBcnJheTxPdXRNYXJrZXI+ID0gbmV3IEFycmF5PE91dE1hcmtlcj4oKTtcclxuICBtYXJrZWRJbWFnZTogTWFya2VkSW1hZ2UgPSBuZXcgTWFya2VkSW1hZ2UoKTtcclxuXHJcbiAgY2FuVW5kbzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNhblJlZG86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBwcml2YXRlIGltYWdlVXNlZD86IGZhYnJpYy5JbWFnZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgLy8gQ3JlYXppb25lIGRpIHVuYSBHVUlEIHVuaWNhIHBlciBpbCBjb21wb25lbnRlXHJcbiAgICB0aGlzLmNvbXBvbmVudEd1aWQgPSAneHh4eC14eHh4LXh4eHgteHh4eCcucmVwbGFjZSgvW3h5XS9nLCBmdW5jdGlvbiAoYykge1xyXG4gICAgICB2YXIgciA9IE1hdGgucmFuZG9tKCkgKiAxNiB8IDAsXHJcbiAgICAgICAgdiA9IGMgPT0gJ3gnID8gciA6IChyICYgMHgzIHwgMHg4KTtcclxuICAgICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgY2FudmFzU2NhbGVkRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuY29tcG9uZW50R3VpZCk7XHJcbiAgICB0aGlzLmNhbnZhcyA9IG5ldyBmYWJyaWMuQ2FudmFzKGNhbnZhc1NjYWxlZEVsZW1lbnQsIHtcclxuICAgICAgaG92ZXJDdXJzb3I6ICdwb2ludGVyJyxcclxuICAgICAgaXNEcmF3aW5nTW9kZTogZmFsc2UsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2FudmFzLmJhY2tncm91bmRDb2xvciA9ICd3aGl0ZSc7XHJcblxyXG4gICAgaWYgKHRoaXMuc3JjKSB7XHJcbiAgICAgIHRoaXMuaW1wb3J0UGhvdG9Gcm9tU3JjKHRoaXMuc3JjKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghdGhpcy53aWR0aCB8fCAhdGhpcy5oZWlnaHQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHdpZHRoIG9yIGhpZ2h0IGdpdmVuICEnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jYW52YXMuc2V0V2lkdGgodGhpcy53aWR0aCk7XHJcbiAgICAgIHRoaXMuY2FudmFzLnNldEhlaWdodCh0aGlzLmhlaWdodCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jYW52YXMub24oJ3BhdGg6Y3JlYXRlZCcsICgpID0+IHtcclxuICAgICAgdGhpcy5zdGFjayA9IFtdO1xyXG4gICAgICB0aGlzLnNldFVuZG9SZWRvKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgfSAgXHJcblxyXG4gIG5ld01hcmtlcigpe1xyXG4gICAgdmFyIHN0YXJ0WCA9IE1hdGguZmxvb3IodGhpcy53aWR0aCAvIDIpO1xyXG4gICAgdmFyIHN0YXJ0WSA9IE1hdGguZmxvb3IodGhpcy5oZWlnaHQgLyAyKTtcclxuXHJcbiAgICB2YXIgbGVmdCA9IHRoaXMucmFuZG9tSW50RnJvbUludGVydmFsKHN0YXJ0WC0xMDAsc3RhcnRYKzEwMCk7XHJcbiAgICB2YXIgdG9wID0gdGhpcy5yYW5kb21JbnRGcm9tSW50ZXJ2YWwoc3RhcnRZLTEwMCxzdGFydFkrMTAwKTtcclxuICAgIHZhciBkZXNjcmlwdGlvbjogJyc7XHJcbiAgICB2YXIgY2FwdGlvbiA9ICcwJztcclxuXHJcbiAgICAvLyBDcmVhemlvbmUgZGVsbGEgY2FwdGlvblxyXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gMTAwMDAwOyBpKyspe1xyXG4gICAgICBpZiAodGhpcy5tYXJrZXJzLmZpbmQoeCA9PiB4LmNhcHRpb24gPT0gaS50b1N0cmluZygpKSA9PSBudWxsKXtcclxuICAgICAgICBjYXB0aW9uID0gaS50b1N0cmluZygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuXHJcbiAgICB0aGlzLmNyZWF0ZU1hcmtlcih0b3AsbGVmdCxjYXB0aW9uLGRlc2NyaXB0aW9uKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZU1hcmtlcih0b3A6IG51bWJlciwgbGVmdDogbnVtYmVyLCBjYXB0aW9uOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcpe1xyXG5cclxuICAgIC8qXHJcbiAgICAqIENyZW8gdW4gbnVvdm8gTWFya2VyXHJcbiAgICAqL1xyXG5cclxuICAgIC8vIENyZW8gaWwgY2VyY2hpb1xyXG4gICAgdmFyIGNpcmNsZSA9IG5ldyBmYWJyaWMuQ2lyY2xlKHtcclxuICAgICAgcmFkaXVzOiAzMCxcclxuICAgICAgb3BhY2l0eTogMC43LFxyXG4gICAgICBmaWxsOiAnZGFya2JsdWUnLFxyXG4gICAgICBzdHJva2U6ICd3aGl0ZScsXHJcbiAgICAgIHN0cm9rZVdpZHRoOiAyLFxyXG4gICAgICBvcmlnaW5YOiAnY2VudGVyJywgXHJcbiAgICAgIG9yaWdpblk6ICdjZW50ZXInIFxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gQ3JlbyBpbCB0ZXN0byBkZW50cm8gYWwgY2VyY2hpbyBcclxuICAgIHZhciB0ZXh0ID0gbmV3IGZhYnJpYy5UZXh0KGNhcHRpb24sXHJcbiAgICB7ICBmb250U2l6ZTogMjUsIFxyXG4gICAgICAgIG9yaWdpblg6ICdjZW50ZXInLCBcclxuICAgICAgICBvcmlnaW5ZOiAnY2VudGVyJyxcclxuICAgICAgICBmaWxsIDogJ3doaXRlJyBcclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8gQ3JlbyBpbCBncnVwcG8gbmVsIHF1YWxlIG1ldHRvIGNlcmNoaW8gZSB0ZXN0byBpbiBtb2RvIGNoZSBzaSBtdW92YW5vIGluc2llbWVcclxuICAgIHZhciBncm91cCA9IG5ldyBmYWJyaWMuR3JvdXAoWyBjaXJjbGUsIHRleHQgXSwgeyAgbGVmdDogbGVmdCwgdG9wOiB0b3AgfSk7ICAgIFxyXG5cclxuICAgIC8vIENyZW8gdW4gb2dnZXR0byBtYXJrZXIgY2hlIGNvbnRpZW5lIGdsaSBlbGVtZW50aSBhdG9taWNpLiBTZXJ2ZSBwZXIgbGUgY2FuY2VsbGF6aW9uaSBlIGlsIHJvbGxiYWNrL21vZGlmaWNhIGRlZ2xpIGVsZW1lbnRpXHJcbiAgICB2YXIgbWFya2VyOiBNYXJrZXIgPSBuZXcgTWFya2VyKCk7XHJcbiAgICBtYXJrZXIuY2lyY2xlID0gY2lyY2xlO1xyXG4gICAgbWFya2VyLnRleHQgPSB0ZXh0O1xyXG4gICAgbWFya2VyLmdyb3VwID0gZ3JvdXA7XHJcbiAgICBtYXJrZXIuY2FwdGlvbiA9IGNhcHRpb247XHJcbiAgICBtYXJrZXIuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjtcclxuXHJcbiAgICAvLyBBZ2dpdW5nbyBpbCBncnVwcG8gbmVsbGEgbGlzdGEgZGVpIGdydXBwaVxyXG4gICAgdGhpcy5tYXJrZXJzLnB1c2gobWFya2VyKTtcclxuICAgIHRoaXMubWFya2Vycy5zb3J0KChhLGIpPT4geyByZXR1cm4gTnVtYmVyKGEuY2FwdGlvbikgLSBOdW1iZXIoYi5jYXB0aW9uKSB9KTtcclxuXHJcbiAgICAvLyBBZ2dpdW5nbyBpbCBncnVwcG8gYWxsJ2ltbWFnaW5lIGEgc2NoZXJtb1xyXG4gICAgdGhpcy5jYW52YXMuYWRkKGdyb3VwKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZU1hcmtlckJ5SW5kZXgoaW5kZXg6IG51bWJlcil7XHJcbiAgICB0aGlzLmNhbnZhcy5yZW1vdmUodGhpcy5tYXJrZXJzW2luZGV4XS5ncm91cCk7XHJcbiAgICB0aGlzLm1hcmtlcnMuc3BsaWNlKGluZGV4LDEpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQWxsTWFya2Vycygpe1xyXG4gICAgdGhpcy5tYXJrZXJzLmZvckVhY2goKG1hcmtlcikgPT4ge1xyXG4gICAgICB0aGlzLmNhbnZhcy5yZW1vdmUobWFya2VyLmdyb3VwKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5tYXJrZXJzID0gbmV3IEFycmF5PE1hcmtlcj4oKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VW5kb1JlZG8oKSB7XHJcbiAgICB0aGlzLmNhblVuZG8gPSB0aGlzLmNhbnZhcy5nZXRPYmplY3RzKCkubGVuZ3RoID4gMDtcclxuICAgIHRoaXMuY2FuUmVkbyA9IHRoaXMuc3RhY2subGVuZ3RoID4gMDtcclxuICB9XHJcblxyXG4gIC8qXHJcblxyXG4gICAgLy8gQWN0aW9uc1xyXG4gICAgcHVibGljIHVuZG8oKSB7XHJcbiAgICAgIGlmICh0aGlzLmNhblVuZG8pIHtcclxuICAgICAgICBjb25zdCBsYXN0SWQgPSB0aGlzLmNhbnZhcy5nZXRPYmplY3RzKCkubGVuZ3RoIC0gMTtcclxuICAgICAgICBjb25zdCBsYXN0T2JqID0gdGhpcy5jYW52YXMuZ2V0T2JqZWN0cygpW2xhc3RJZF07XHJcbiAgICAgICAgdGhpcy5zdGFjay5wdXNoKGxhc3RPYmopO1xyXG4gICAgICAgIHRoaXMuY2FudmFzLnJlbW92ZShsYXN0T2JqKTtcclxuICAgICAgICB0aGlzLnNldFVuZG9SZWRvKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICBcclxuICAgIHB1YmxpYyByZWRvKCkge1xyXG4gICAgICBpZiAodGhpcy5jYW5SZWRvKSB7XHJcbiAgICAgICAgY29uc3QgZmlyc3RJblN0YWNrID0gdGhpcy5zdGFjay5zcGxpY2UoLTEsIDEpWzBdO1xyXG4gICAgICAgIGlmIChmaXJzdEluU3RhY2spIHtcclxuICAgICAgICAgIHRoaXMuY2FudmFzLmluc2VydEF0KGZpcnN0SW5TdGFjaywgdGhpcy5jYW52YXMuZ2V0T2JqZWN0cygpLmxlbmd0aCAtIDEsIGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXRVbmRvUmVkbygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgXHJcbiAgICBwdWJsaWMgY2xlYXJDYW52YXMoKSB7XHJcbiAgICAgIGlmICh0aGlzLmNhbnZhcykge1xyXG4gICAgICAgIHRoaXMuY2FudmFzLnJlbW92ZSguLi50aGlzLmNhbnZhcy5nZXRPYmplY3RzKCkpO1xyXG4gICAgICAgIHRoaXMuc2V0VW5kb1JlZG8oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuKi9cclxuXHJcbiAgcHJpdmF0ZSBpbXBvcnRQaG90b0Zyb21TcmMoc3JjOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIGxldCBpc0ZpcnN0VHJ5ID0gdHJ1ZTtcclxuICAgIGNvbnN0IGltZ0VsID0gbmV3IEltYWdlKCk7XHJcbiAgICBpbWdFbC5zZXRBdHRyaWJ1dGUoJ2Nyb3NzT3JpZ2luJywgJ2Fub255bW91cycpO1xyXG4gICAgaW1nRWwuc3JjID0gc3JjO1xyXG4gICAgaW1nRWwub25lcnJvciA9ICgpID0+IHtcclxuICAgICAgLy8gUmV0cnkgd2l0aCBjb3JzIHByb3h5XHJcbiAgICAgIGlmIChpc0ZpcnN0VHJ5KSB7XHJcbiAgICAgICAgaW1nRWwuc3JjID0gJ2h0dHBzOi8vY29ycy1hbnl3aGVyZS5oZXJva3VhcHAuY29tLycgKyB0aGlzLnNyYztcclxuICAgICAgICBpc0ZpcnN0VHJ5ID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmhhc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IFwiQ09SUyBFcnJvclwiO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgaW1nRWwub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmltYWdlVXNlZCA9IG5ldyBmYWJyaWMuSW1hZ2UoaW1nRWwpO1xyXG5cclxuICAgICAgdGhpcy5pbWFnZVVzZWQuY2xvbmVBc0ltYWdlKGltYWdlID0+IHtcclxuICAgICAgICBsZXQgd2lkdGggPSBpbWdFbC53aWR0aDtcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gaW1nRWwuaGVpZ2h0O1xyXG5cclxuICAgICAgICBpZiAodGhpcy53aWR0aCkge1xyXG4gICAgICAgICAgd2lkdGggPSB0aGlzLndpZHRoO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5oZWlnaHQpIHtcclxuICAgICAgICAgIGhlaWdodCA9IHRoaXMuaGVpZ2h0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gcmljYWxjb2xvIGxlIGRpbWVuc2lvbmkgZGVsbCdpbW1hZ2luZSBwZXIgZmFybGEgZW50cmFyZSBuZWxsbyBzY2hlcm1vXHJcbiAgICAgICAgLy8gZGltaW51aXNjbyBkaSB1biA1JSBhbGxhIHZvbHRhIGxlIGRpbWVuc2lvbmkgZmlubyBhIHJpZW50cmFyZSBuZWxsJzg1JSBkZWxsYSBncmFuZGV6emEgZGVsbGEgZmluZXN0cmFcclxuICAgICAgICBsZXQgd2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgICAgICBsZXQgd2luZG93SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xyXG4gICAgICAgIHdoaWxlKHdpZHRoID4gd2luZG93V2lkdGggKiAwLjg1KXtcclxuICAgICAgICAgIHdpZHRoID0gd2lkdGggKiAwLjk1O1xyXG4gICAgICAgICAgaGVpZ2h0ID0gaGVpZ2h0ICogMC45NTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUoaGVpZ2h0ID4gd2luZG93SGVpZ2h0ICogMC44NSl7XHJcbiAgICAgICAgICB3aWR0aCA9IHdpZHRoICogMC45NTtcclxuICAgICAgICAgIGhlaWdodCA9IGhlaWdodCAqIDAuOTU7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgaW1hZ2Uuc2NhbGVUb1dpZHRoKHdpZHRoLCBmYWxzZSk7XHJcbiAgICAgICAgaW1hZ2Uuc2NhbGVUb0hlaWdodChoZWlnaHQsIGZhbHNlKTtcclxuXHJcbiAgICAgICAgdGhpcy5jYW52YXMuc2V0QmFja2dyb3VuZEltYWdlKGltYWdlLCAoKGltZzogSFRNTEltYWdlRWxlbWVudCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGltZykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JjZVNpemVDYW52YXMpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNhbnZhcy5zZXRXaWR0aCh3aWR0aCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYW52YXMuc2V0SGVpZ2h0KGhlaWdodCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYW52YXMuc2V0V2lkdGgoaW1hZ2UuZ2V0U2NhbGVkV2lkdGgoKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYW52YXMuc2V0SGVpZ2h0KGltYWdlLmdldFNjYWxlZEhlaWdodCgpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pLCB7XHJcbiAgICAgICAgICBjcm9zc09yaWdpbjogJ2Fub255bW91cycsXHJcbiAgICAgICAgICBvcmlnaW5YOiAnbGVmdCcsXHJcbiAgICAgICAgICBvcmlnaW5ZOiAndG9wJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnNhdmVkTWFya2VycyAhPSBudWxsKXsgdGhpcy5sb2FkTWFya2VycygpOyB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgbG9hZE1hcmtlcnMoKXtcclxuICAgIHZhciBtYXJrZXJzT2JqOiBBcnJheTxPdXRNYXJrZXI+ID0gSlNPTi5wYXJzZSh0aGlzLnNhdmVkTWFya2Vycyk7XHJcbiAgICBtYXJrZXJzT2JqLmZvckVhY2goKG1hcmtlcikgPT4ge1xyXG4gICAgICB0aGlzLmNyZWF0ZU1hcmtlcihtYXJrZXIudG9wLG1hcmtlci5sZWZ0LG1hcmtlci5jYXB0aW9uLG1hcmtlci5kZXNjcmlwdGlvbik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlSW1hZ2UoKXtcclxuXHJcbiAgICB0aGlzLm91dG1hcmtlcnMgPSBuZXcgQXJyYXk8T3V0TWFya2VyPigpO1xyXG5cclxuICAgIHRoaXMubWFya2Vycy5mb3JFYWNoKChtYXJrZXIpID0+IHtcclxuICAgICAgdmFyIG91dG1hcmtlciA9IG5ldyBPdXRNYXJrZXIoKTtcclxuICAgICAgb3V0bWFya2VyLmNhcHRpb24gPSBtYXJrZXIuY2FwdGlvbjtcclxuICAgICAgb3V0bWFya2VyLmRlc2NyaXB0aW9uID0gbWFya2VyLmRlc2NyaXB0aW9uO1xyXG4gICAgICBvdXRtYXJrZXIudG9wID0gbWFya2VyLmdyb3VwLnRvcDtcclxuICAgICAgb3V0bWFya2VyLmxlZnQgPSBtYXJrZXIuZ3JvdXAubGVmdDtcclxuICAgICAgdGhpcy5vdXRtYXJrZXJzLnB1c2gob3V0bWFya2VyKTtcclxuICAgIH0pXHJcblxyXG4gICAgaWYgKHRoaXMud2lkdGggJiYgdGhpcy5oZWlnaHQpIHtcclxuICAgICAgY29uc3QgY2FudmFzU2NhbGVkRWxlbWVudDogSFRNTENhbnZhc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgICAgY29uc3QgY2FudmFzU2NhbGVkID0gbmV3IGZhYnJpYy5DYW52YXMoY2FudmFzU2NhbGVkRWxlbWVudCk7XHJcbiAgICAgIGNhbnZhc1NjYWxlZC5iYWNrZ3JvdW5kQ29sb3IgPSAnd2hpdGUnO1xyXG5cclxuICAgICAgbmV3IE9ic2VydmFibGU8ZmFicmljLkNhbnZhcz4ob2JzZXJ2ZXIgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmltYWdlVXNlZCkge1xyXG5cclxuICAgICAgICAgICAgY2FudmFzU2NhbGVkLnNldEJhY2tncm91bmRJbWFnZSh0aGlzLmltYWdlVXNlZCwgKGltZzogSFRNTEltYWdlRWxlbWVudCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghaW1nKSB7XHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcihuZXcgRXJyb3IoJ0ltcG9zc2libGUgdG8gZHJhdyB0aGUgaW1hZ2Ugb24gdGhlIHRlbXBvcmFyeSBjYW52YXMnKSk7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBjYW52YXNTY2FsZWQuc2V0V2lkdGgoaW1nLndpZHRoKTtcclxuICAgICAgICAgICAgICBjYW52YXNTY2FsZWQuc2V0SGVpZ2h0KGltZy5oZWlnaHQpO1xyXG5cclxuICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KGNhbnZhc1NjYWxlZCk7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSwge1xyXG4gICAgICAgICAgICAgIGNyb3NzT3JpZ2luOiAnYW5vbnltb3VzJyxcclxuICAgICAgICAgICAgICBvcmlnaW5YOiAnbGVmdCcsXHJcbiAgICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCdcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY2FudmFzU2NhbGVkLnNldFdpZHRoKHRoaXMud2lkdGgpO1xyXG4gICAgICAgICAgY2FudmFzU2NhbGVkLnNldEhlaWdodCh0aGlzLmhlaWdodCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KS5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgcHJvY2VzcyA9IG9mKGNhbnZhc1NjYWxlZCk7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuY2FudmFzLmdldE9iamVjdHMoKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJhdGlvWCA9IGNhbnZhc1NjYWxlZC5nZXRXaWR0aCgpIC8gdGhpcy5jYW52YXMuZ2V0V2lkdGgoKTtcclxuICAgICAgICAgICAgY29uc3QgcmF0aW9ZID0gY2FudmFzU2NhbGVkLmdldEhlaWdodCgpIC8gdGhpcy5jYW52YXMuZ2V0SGVpZ2h0KCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNhbnZhcy5nZXRPYmplY3RzKCkuZm9yRWFjaCgob3JpZ2luYWxPYmplY3Q6IGZhYnJpYy5PYmplY3QsIGk6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgIHByb2Nlc3MgPSBwcm9jZXNzLnBpcGUoc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxmYWJyaWMuQ2FudmFzPihvYnNlcnZlck9iamVjdCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIG9yaWdpbmFsT2JqZWN0LmNsb25lKChjbG9uZWRPYmplY3Q6IGZhYnJpYy5PYmplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjbG9uZWRPYmplY3Quc2V0KCdsZWZ0Jywgb3JpZ2luYWxPYmplY3QubGVmdCAqIHJhdGlvWCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvbmVkT2JqZWN0LnNldCgndG9wJywgb3JpZ2luYWxPYmplY3QudG9wICogcmF0aW9ZKTtcclxuICAgICAgICAgICAgICAgICAgICBjbG9uZWRPYmplY3Quc2NhbGVUb1dpZHRoKG9yaWdpbmFsT2JqZWN0LndpZHRoICogcmF0aW9YKTtcclxuICAgICAgICAgICAgICAgICAgICBjbG9uZWRPYmplY3Quc2NhbGVUb0hlaWdodChvcmlnaW5hbE9iamVjdC5oZWlnaHQgKiByYXRpb1kpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjYW52YXNTY2FsZWQuaW5zZXJ0QXQoY2xvbmVkT2JqZWN0LCBpLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FudmFzU2NhbGVkLnJlbmRlckFsbCgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlck9iamVjdC5uZXh0KGNhbnZhc1NjYWxlZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXJPYmplY3QuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHByb2Nlc3M7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBjYW52YXNTY2FsZWQucmVuZGVyQWxsKCk7XHJcbiAgICAgICAgY2FudmFzU2NhbGVkLmdldEVsZW1lbnQoKS50b0Jsb2IoXHJcbiAgICAgICAgICAoZGF0YTogQmxvYikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm1hcmtlZEltYWdlLmltYWdlID0gZGF0YTtcclxuICAgICAgICAgICAgdGhpcy5tYXJrZWRJbWFnZS5vdXRtYXJrZXJzID0gdGhpcy5vdXRtYXJrZXJzO1xyXG4gICAgICAgICAgICB0aGlzLnNhdmUuZW1pdCh0aGlzLm1hcmtlZEltYWdlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB0aGlzLm91dHB1dE1pbWVUeXBlLFxyXG4gICAgICAgICAgdGhpcy5vdXRwdXRRdWFsaXR5XHJcbiAgICAgICAgKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNhbnZhcy5nZXRFbGVtZW50KCkudG9CbG9iKFxyXG4gICAgICAgIChkYXRhOiBCbG9iKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm1hcmtlZEltYWdlLmltYWdlID0gZGF0YTtcclxuICAgICAgICAgIHRoaXMubWFya2VkSW1hZ2Uub3V0bWFya2VycyA9IHRoaXMub3V0bWFya2VycztcclxuICAgICAgICAgIHRoaXMuc2F2ZS5lbWl0KHRoaXMubWFya2VkSW1hZ2UpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdGhpcy5vdXRwdXRNaW1lVHlwZSxcclxuICAgICAgICB0aGlzLm91dHB1dFF1YWxpdHlcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgLy90aGlzLnNhdmUuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlKCl7XHJcbiAgICB0aGlzLmNsb3NlRGlhbG9nLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHJhbmRvbUludEZyb21JbnRlcnZhbChtaW4sIG1heCkgeyAvLyBtaW4gYW5kIG1heCBpbmNsdWRlZCBcclxuICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkgKyBtaW4pXHJcbiAgfVxyXG5cclxuICBsb2coZWwpe1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImltYWdlTWFya2VyIGVsZW1lbnQgXCIsZWwpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBNYXJrZXIge1xyXG4gIGNpcmNsZTogZmFicmljLkNpcmNsZTtcclxuICB0ZXh0OiBmYWJyaWMuVGV4dDtcclxuICBncm91cDogZmFicmljLkdyb3VwO1xyXG4gIHRvcDogbnVtYmVyO1xyXG4gIGxlZnQ6IG51bWJlcjtcclxuICBjYXB0aW9uOiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb246IHN0cmluZyA9IFwiXCI7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBPdXRNYXJrZXIge1xyXG4gIHRvcDogbnVtYmVyO1xyXG4gIGxlZnQ6IG51bWJlcjtcclxuICBjYXB0aW9uOiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb246IHN0cmluZyA9IFwiXCI7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBNYXJrZWRJbWFnZSB7XHJcbiAgb3V0bWFya2VyczogQXJyYXk8T3V0TWFya2VyPjtcclxuICBpbWFnZTogQmxvYjtcclxufSIsIjxkaXYgY2xhc3M9XCJjYW52YXMtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FudmFzXCI+XHJcbiAgICAgICAgPGNhbnZhcyBbaWRdPVwiY29tcG9uZW50R3VpZFwiPjwvY2FudmFzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidG9vbGJveFwiPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbWFya2VyQnV0dG9uXCIgKGNsaWNrKT1cIm5ld01hcmtlcigpXCI+Q3JlYSBudW92byBtYXJrZXI8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtMlwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmRfb3ZlcmZsb3dfY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZF9jb250YWluZXJcIiAqbmdGb3I9XCJsZXQgbWFya2VyIG9mIG1hcmtlcnM7IGluZGV4IGFzIGlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcHRpb25cIiBbaW5uZXJIVE1MXT1cIm1hcmtlci5jYXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0YXJlYVwiPjx0ZXh0YXJlYSAgWyhuZ01vZGVsKV09XCJtYXJrZXIuZGVzY3JpcHRpb25cIiAoY2xpY2spPVwibG9nKG1hcmtlci5kZXNjcmlwdGlvbilcIj48L3RleHRhcmVhPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsZXRlXCIgKGNsaWNrKT1cImRlbGV0ZU1hcmtlckJ5SW5kZXgoaSlcIj48bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtMlwiICpuZ0lmPVwiIWluQ29uZmlnXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIG1hcmtlckJ1dHRvblwiIChjbGljayk9XCJzYXZlSW1hZ2UoKVwiPlNhbHZhIEltbWFnaW5lPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG10LTJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXdhcm5pbmcgbWFya2VyQnV0dG9uXCIgKGNsaWNrKT1cInJlbW92ZUFsbE1hcmtlcnMoKVwiPlJpbXVvdmkgdHV0dGkgaSBtYXJrZXJzPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG10LTJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRhbmdlciBtYXJrZXJCdXR0b25cIiAoY2xpY2spPVwiY2xvc2UoKVwiPkFubnVsbGEgRGlzZWdubzwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICBcclxuXHJcblxyXG5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|