ngx-wapp-components 1.26.8-alpha.1 → 1.26.8

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.
@@ -260,6 +260,7 @@ export class WImageFileUploaderComponent {
260
260
  this.getIndexToDelete(image);
261
261
  this.imagesAlreadyUploaded = this.imagesAlreadyUploaded.filter(img => (img.base64 !== image.base64) || (img[this.identificatorName] !== image[this.identificatorName]));
262
262
  this.imagesAlreadyUploaded = [...this.activePositionProperty ? this.addPositionProperty(this.imagesAlreadyUploaded) : this.imagesAlreadyUploaded];
263
+ this.cropperImages = this.cropperImages.filter(img => (img.fileBase64 !== image.base64) || (img[this.identificatorName] !== image[this.identificatorName]));
263
264
  this.onDeleteImage.emit({ deletedImage: image, images: this.imagesAlreadyUploaded });
264
265
  this.isDeletingMultiMode = false;
265
266
  }
@@ -476,4 +477,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
476
477
  type: ViewChild,
477
478
  args: ['fileUploadOnlyImage']
478
479
  }] } });
479
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy1pbWFnZS1maWxlLXVwbG9hZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL2ZpbGUvdy1pbWFnZS1maWxlLXVwbG9hZGVyL3ctaW1hZ2UtZmlsZS11cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93YXBwLWNvbXBvbmVudHMvc3JjL2xpYi9maWxlL3ctaW1hZ2UtZmlsZS11cGxvYWRlci93LWltYWdlLWZpbGUtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWEsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd0SSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHbEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFXdEYsTUFBTSxPQUFPLDJCQUEyQjtJQXFGdEMsWUFDVSxhQUE0QixFQUM1QixJQUFnQixFQUNoQixtQkFBd0M7UUFGeEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBdkZwQix3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDdkMsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBQy9CLDBCQUFxQixHQUFVLEVBQUUsQ0FBQztRQU1qQywyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFDaEQsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDakMsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDdEIsc0JBQWlCLEdBQVcsSUFBSSxDQUFDO1FBQ3JCLHVCQUFrQixHQUFRLENBQUMs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O2dCQUNILG1CQUFtQjtzQkFBcEQsU0FBUzt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgV0ltYWdlRmlsZVVwbG9hZGVyQ29uZmlnIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy93LWltYWdlLWZpbGUtdXBsb2FkZXItY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZCB9IGZyb20gJ3ByaW1lbmcvZmlsZXVwbG9hZCc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBJbWFnZUI2NCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvaW1hZ2UtYjY0Lm1vZGVsJztcclxuaW1wb3J0IHsgV0ltYWdlQ3JvcHBlckNvbXBvbmVudCB9IGZyb20gJy4uL3ctaW1hZ2UtY3JvcHBlci93LWltYWdlLWNyb3BwZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgV0ltYWdlQ3JvcHBlckRhdGEgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL3ctaW1hZ2UtY3JvcHBlci1kYXRhLm1vZGVsJztcclxuaW1wb3J0IHsgV0ZpbGVCNjQgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL3ctZmlsZS1iNjQubW9kZWwnO1xyXG5pbXBvcnQgeyBXSWNvbnNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pY29ucy93YXBwaW5nLWljb25zL3ctaWNvbnMuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndy1pbWFnZS1maWxlLXVwbG9hZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdy1pbWFnZS1maWxlLXVwbG9hZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93LWltYWdlLWZpbGUtdXBsb2FkZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtDb25maXJtYXRpb25TZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgV0ltYWdlRmlsZVVwbG9hZGVyQ29tcG9uZW50IHtcclxuICBASW5wdXQoJ2FsbG93TXVsdGlwbGVJbWFnZXMnKSBhbGxvd011bHRpcGxlSW1hZ2VzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCdhY3RpdmVJbWFnZVVwbG9hZCcpIGFjdGl2ZUltYWdlVXBsb2FkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCdpbWFnZXNBbHJlYWR5VXBsb2FkZWQnKSBpbWFnZXNBbHJlYWR5VXBsb2FkZWQ6IGFueVtdID0gW107XHJcbiAgQElucHV0KCdpbWFnZVNpbmdsZU1vZGUnKSBpbWFnZVNpbmdsZU1vZGU6IGFueTtcclxuICBASW5wdXQoJ3VwbG9hZFVybCcpIHVwbG9hZFVybCE6IHN0cmluZztcclxuICBASW5wdXQoJ3VwZGF0ZVVybCcpIHVwZGF0ZVVybCE6IHN0cmluZztcclxuICBASW5wdXQoJ2RlbGV0ZVVybCcpIGRlbGV0ZVVybCE6IHN0cmluZztcclxuICBASW5wdXQoJ2hlYWRlcnMnKSBoZWFkZXJzITogSHR0cEhlYWRlcnM7XHJcbiAgQElucHV0KCdhY3RpdmVQb3NpdGlvblByb3BlcnR5JykgYWN0aXZlUG9zaXRpb25Qcm9wZXJ0eTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgndmlld1NpbmdsZU1vZGUnKSB2aWV3U2luZ2xlTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgndmlld011bHRpTW9kZScpIHZpZXdNdWx0aU1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoJ2lkZW50aWZpY2F0b3JJbWFnZU5hbWUnKSBpZGVudGlmaWNhdG9yTmFtZTogc3RyaW5nID0gXCJpZFwiO1xyXG4gIEBJbnB1dCgnaWRlbnRpZmljYXRvckltYWdlc0NvbGxlY3Rpb25WYWx1ZScpIGlkZW50aWZpY2F0b3JWYWx1ZTogYW55ID0gMDtcclxuICBASW5wdXQoJ2ltYWdlVXBsb2FkQ29uZmlnJykgaW1hZ2VVcGxvYWRDb25maWc6IFdJbWFnZUZpbGVVcGxvYWRlckNvbmZpZyA9IHtcclxuICAgIGltYWdlUHJvcGVydHlOYW1lczogW10sXHJcbiAgICBhY2NlcHRJbWFnZVR5cGVzOiBcImltYWdlLypcIixcclxuICAgIG1heEltYWdlU2l6ZTogMTAwMDAwMCxcclxuICAgIGFsbG93QXV0bzogZmFsc2UsXHJcbiAgICB1cGxvYWRCdXR0b25MYWJlbDogXCJcIixcclxuICAgIGNob29zZUJ1dHRvbkxhYmVsOiBcIlwiLFxyXG4gICAgY2FuY2VsQnV0dG9uTGFiZWw6IFwiXCIsXHJcbiAgICBjb250ZW50SGVhZGVyTGFiZWw6IFwiXCIsXHJcbiAgICBjb250ZW50U3ViaGVhZGVyTGFiZWw6IFwiXCIsXHJcbiAgICBkZWxldGVJbWFnZUJ1dHRvbkxhYmVsOiBcIlwiLFxyXG4gICAgY3JvcHBlZERpYWxvZ1RyYW5zbGF0aW9uczogXCJcIixcclxuICAgIGNyb3BwZWRJbWFnZUNvbmZpZ3VyYXRpb246IHtcclxuICAgICAgcm91bmRlZENyb3BwZXI6IGZhbHNlLFxyXG4gICAgICBjb25maWd1cmVkQXNwZWN0UmF0aW86IDQvMyxcclxuICAgICAgdmlld1BvcnRXaWR0aFB4OiA0MDAsXHJcbiAgICAgIHZpZXdQb3J0SGVpaHRQeDogNTAwXHJcbiAgICB9LFxyXG4gICAgY29uZmlybURlbGV0ZU1lc3NhZ2VMYWJlbDogXCJcIixcclxuICAgIGNvbmZpcm1EZWxldGVCdXR0b25MYWJlbDogXCJcIixcclxuICAgIGludmFsaWRGaWxlU2l6ZU1lc3NhZ2VTdW1tYXJ5OiBcIlwiLFxyXG4gICAgaW52YWxpZEZpbGVTaXplTWVzc2FnZURldGFpbDogXCJcIixcclxuICAgIGludmFsaWRGaWxlVHlwZU1lc3NhZ2VTdW1tYXJ5OiBcIlwiLFxyXG4gICAgaW52YWxpZEZpbGVUeXBlTWVzc2FnZURldGFpbDogXCJcIlxyXG4gIH1cclxuICBASW5wdXQoJ2FjdGl2ZUZpZWxkVmVyc2lvbicpIGFjdGl2ZUZpZWxkVmVyc2lvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgnbGFiZWwnKSBsYWJlbCE6IHN0cmluZztcclxuICBASW5wdXQoJ3Rvb2x0aXAnKSB0b29sdGlwITogc3RyaW5nO1xyXG4gIEBJbnB1dCgncmVxdWlyZWQnKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgnY3VzdG9tSGVpZ2h0SW1nJykgY3VzdG9tSGVpZ2h0SW1nITogbnVtYmVyO1xyXG5cclxuICBAT3V0cHV0KCdvblVwbG9hZEZpbmlzaGVkJykgb25VcGxvYWRGaW5pc2hlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCdvbkVycm9ySGFuZGxlcicpIG9uRXJyb3JIYW5kbGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoJ29uUmV0dXJuSW1hZ2VzQjY0Jykgb25SZXR1cm5JbWFnZXNCNjQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgnb25EZWxldGVJbWFnZScpIG9uRGVsZXRlSW1hZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVVcGxvYWQnKSBmaWxlVXBsb2FkITogRmlsZVVwbG9hZDtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbignYnV0dG9uUmVtb3ZlT25seUltYWdlJykgYnV0dG9uUmVtb3ZlT25seUltYWdlITogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVVcGxvYWRPbmx5SW1hZ2UnKSBmaWxldXBsb2FkT25seUltYWdlITogRmlsZVVwbG9hZDtcclxuXHJcbiAgYWN0aXZlSW5kZXhHYWxsZXJ5OiBudW1iZXIgPSAwO1xyXG4gIGNyb3BwZXJJbWFnZXM6IGFueVtdID0gW107XHJcbiAgZGVmYXVsdFdpZHRoOiBzdHJpbmcgPSBcInctMThyZW1cIjtcclxuICBkZWZhdWx0SGVpZ2h0OiBzdHJpbmcgPSBcImgtMThyZW1cIjtcclxuICBkaXNhYmxlTW92ZUJ1dHRvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1VwbG9hZGluZ011bHRpTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRGVsZXRpbmdNdWx0aU1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgb25seUltYWdlU2VsZWN0ZWQ6IGFueTtcclxuICBvbmx5Q3JvcHBlZEltYWdlU2VsZWN0ZWQ6IGFueSA9IG51bGw7XHJcblxyXG4gIGRpbWVuc2lvbnNJbnB1dCE6IFdJbWFnZUNyb3BwZXJEYXRhO1xyXG4gIGNhcm91c2VsSW1hZ2VzUmVzcG9uc2l2ZU9wdGlvbnM6IGFueVtdID0gW1xyXG4gICAge1xyXG4gICAgICBicmVha3BvaW50OiAnMTAyNHB4JyxcclxuICAgICAgbnVtVmlzaWJsZTogNCxcclxuICAgICAgbnVtU2Nyb2xsOiA0XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBicmVha3BvaW50OiAnODUwcHgnLFxyXG4gICAgICBudW1WaXNpYmxlOiAyLFxyXG4gICAgICBudW1TY3JvbGw6IDJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGJyZWFrcG9pbnQ6ICc1NjBweCcsXHJcbiAgICAgIG51bVZpc2libGU6IDEsXHJcbiAgICAgIG51bVNjcm9sbDogMVxyXG4gICAgfVxyXG4gIF07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlXHJcbiAgKXt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaW1lbnNpb25zSW5wdXQgPSB7XHJcbiAgICAgIHJvdW5kZWRDcm9wcGVyOiB0aGlzLmltYWdlVXBsb2FkQ29uZmlnLmNyb3BwZWRJbWFnZUNvbmZpZ3VyYXRpb24ucm91bmRlZENyb3BwZXIsXHJcbiAgICAgIGNvbmZpZ3VyZWRBc3BlY3RSYXRpbzogdGhpcy5pbWFnZVVwbG9hZENvbmZpZy5jcm9wcGVkSW1hZ2VDb25maWd1cmF0aW9uLmNvbmZpZ3VyZWRBc3BlY3RSYXRpbyxcclxuICAgICAgdmlld1BvcnRXaWR0aFB4OiB0aGlzLmltYWdlVXBsb2FkQ29uZmlnLmNyb3BwZWRJbWFnZUNvbmZpZ3VyYXRpb24udmlld1BvcnRXaWR0aFB4LFxyXG4gICAgICB2aWV3UG9ydEhlaWh0UHg6IHRoaXMuaW1hZ2VVcGxvYWRDb25maWcuY3JvcHBlZEltYWdlQ29uZmlndXJhdGlvbi52aWV3UG9ydEhlaWh0UHgsXHJcbiAgICAgIG1heEZpbGVTaXplOiB0aGlzLmltYWdlVXBsb2FkQ29uZmlnLm1heEltYWdlU2l6ZVxyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuYWN0aXZlSW1hZ2VVcGxvYWQgPT0gZmFsc2UgJiYgdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQubGVuZ3RoID4gMCl7XHJcbiAgICAgIHRoaXMuY3JvcHBlckltYWdlcy5wdXNoKC4uLnRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlYWRQcm9wZXJ0eShvYmo6IGFueSwgcHJvcDpzdHJpbmcpOmFueSB7XHJcbiAgICBpZih0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIF9pbmRleCA9IHByb3AuaW5kZXhPZignLicpXHJcbiAgICBpZihfaW5kZXggPiAtMSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRQcm9wZXJ0eShvYmpbcHJvcC5zdWJzdHJpbmcoMCwgX2luZGV4KV0sIHByb3Auc3Vic3RyKF9pbmRleCArIDEpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBvYmpbcHJvcF07XHJcbiAgfVxyXG5cclxuICBvbkN1c3RvbVVwbG9hZFNpbmdsZU1vZGUoZXZlbnQ6IGFueSl7XHJcbiAgICB0aGlzLm9ubHlJbWFnZVNlbGVjdGVkID0gZXZlbnQuY3VycmVudEZpbGVzWzBdO1xyXG4gICAgdGhpcy5vcGVuTW9kYWxDcm9wcGVyKHRoaXMub25seUltYWdlU2VsZWN0ZWQsIGV2ZW50Lm9yaWdpbmFsRXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgb25DdXN0b21pemVVcGxvYWRGdW5jdGlvblNpbmdsZU1vZGUoZXZlbnQ6IGFueSl7XHJcbiAgICBpZih0aGlzLmFjdGl2ZUltYWdlVXBsb2FkID09IHRydWUpe1xyXG4gICAgICBpZih0aGlzLm9ubHlDcm9wcGVkSW1hZ2VTZWxlY3RlZCl7XHJcbiAgICAgICAgbGV0IGJhc2U2NEltYWdlczogSW1hZ2VCNjRbXSA9IFt7YmFzZTY0OiB0aGlzLm9ubHlDcm9wcGVkSW1hZ2VTZWxlY3RlZC5iYXNlNjQsIG5hbWU6IHRoaXMub25seUNyb3BwZWRJbWFnZVNlbGVjdGVkLm5hbWV9XTtcclxuXHJcbiAgICAgICAgdGhpcy5odHRwLnBvc3QodGhpcy51cGxvYWRVcmwsIGJhc2U2NEltYWdlcywgeyBoZWFkZXJzOiB0aGlzLmhlYWRlcnMgfSkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChpbWFnZVVwbG9hZGVkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5maWxldXBsb2FkT25seUltYWdlLmNsZWFyKCk7XHJcbiAgICAgICAgICAgIHRoaXMub25VcGxvYWRGaW5pc2hlZC5lbWl0KGltYWdlVXBsb2FkZWQpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5maWxldXBsb2FkT25seUltYWdlLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm9uRXJyb3JIYW5kbGVyLmVtaXQoZXJyb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUltYWdlU2luZ2xlTW9kZShldmVudDogRXZlbnQsIGZpbGU6IGFueSkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmZpbGV1cGxvYWRPbmx5SW1hZ2UuY2xlYXIoKTtcclxuICAgIHRoaXMub25seUltYWdlU2VsZWN0ZWQgPSBudWxsO1xyXG4gICAgdGhpcy5vbmx5Q3JvcHBlZEltYWdlU2VsZWN0ZWQgPSBudWxsO1xyXG4gICAgdGhpcy5pbWFnZVNpbmdsZU1vZGUgPSBudWxsO1xyXG4gICAgdGhpcy5vblJldHVybkltYWdlc0I2NC5lbWl0KG51bGwpO1xyXG4gIH1cclxuXHJcbiAgbW92ZUltYWdlVG9MZWZ0KGV2ZW50OiBhbnkpe1xyXG4gICAgbGV0IGluZGV4VG9Nb3ZlID0gdGhpcy5maW5kSW5kZXgoZXZlbnQpO1xyXG4gICAgaWYoaW5kZXhUb01vdmUgPiAwICYmIGluZGV4VG9Nb3ZlIDwgdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQubGVuZ3RoKXtcclxuICAgICAgY29uc3QgdGVtcCA9IHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkW2luZGV4VG9Nb3ZlXTtcclxuICAgICAgdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWRbaW5kZXhUb01vdmVdID0gdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWRbIGluZGV4VG9Nb3ZlIC0gMV07XHJcbiAgICAgIHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkW2luZGV4VG9Nb3ZlIC0gMV0gPSB0ZW1wO1xyXG5cclxuICAgICAgdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQgPSAodGhpcy5hY3RpdmVQb3NpdGlvblByb3BlcnR5KSA/IHRoaXMuYWRkUG9zaXRpb25Qcm9wZXJ0eSh0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZCkgOiB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZDtcclxuICAgICAgdGhpcy5hY3RpdmVJbmRleEdhbGxlcnkgPSBpbmRleFRvTW92ZSAtIDE7XHJcblxyXG4gICAgICBpZih0aGlzLnVwbG9hZFVybCAhPSB1bmRlZmluZWQgJiYgdGhpcy5pZGVudGlmaWNhdG9yVmFsdWUgIT09IDApe1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZU1vdmVCdXR0b25zID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUltYWdlKHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkKTtcclxuICAgICAgfWVsc2UgaWYodGhpcy5hY3RpdmVJbWFnZVVwbG9hZCA9PSB0cnVlICYmIHRoaXMudXBsb2FkVXJsICE9IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgdGhpcy5vblVwbG9hZEZpbmlzaGVkLmVtaXQodGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLm9uUmV0dXJuSW1hZ2VzQjY0LmVtaXQodGhpcy5nZXRBcnJheXNUb0NyZWF0ZUFuZFRvVXBkYXRlKHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1vdmVJbWFnZVRvUmlnaHQoZXZlbnQ6IGFueSl7XHJcbiAgICBsZXQgaW5kZXhUb01vdmUgPSB0aGlzLmZpbmRJbmRleChldmVudCk7XHJcbiAgICBpZihpbmRleFRvTW92ZSA+PSAwICYmIGluZGV4VG9Nb3ZlIDwgdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQubGVuZ3RoIC0xKXtcclxuICAgICAgY29uc3QgdGVtcCA9IHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkW2luZGV4VG9Nb3ZlXTtcclxuICAgICAgdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWRbaW5kZXhUb01vdmVdID0gdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWRbIGluZGV4VG9Nb3ZlICsgMV07XHJcbiAgICAgIHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkW2luZGV4VG9Nb3ZlICsgMV0gPSB0ZW1wO1xyXG5cclxuICAgICAgdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQgPSAodGhpcy5hY3RpdmVQb3NpdGlvblByb3BlcnR5KSA/IHRoaXMuYWRkUG9zaXRpb25Qcm9wZXJ0eSh0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZCkgOiB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZDtcclxuICAgICAgdGhpcy5hY3RpdmVJbmRleEdhbGxlcnkgPSBpbmRleFRvTW92ZSArIDE7XHJcblxyXG4gICAgICBpZih0aGlzLnVwbG9hZFVybCE9dW5kZWZpbmVkICYmIHRoaXMuaWRlbnRpZmljYXRvclZhbHVlICE9PSAwKXtcclxuICAgICAgICB0aGlzLmRpc2FibGVNb3ZlQnV0dG9ucyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy51cGRhdGVJbWFnZSh0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZCk7XHJcbiAgICAgIH1lbHNlIGlmKHRoaXMuYWN0aXZlSW1hZ2VVcGxvYWQgPT0gdHJ1ZSAmJiB0aGlzLnVwbG9hZFVybCAhPSB1bmRlZmluZWQpe1xyXG4gICAgICAgIHRoaXMub25VcGxvYWRGaW5pc2hlZC5lbWl0KHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkKTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5vblJldHVybkltYWdlc0I2NC5lbWl0KHRoaXMuZ2V0QXJyYXlzVG9DcmVhdGVBbmRUb1VwZGF0ZSh0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkN1c3RvbWl6ZVVwbG9hZEZ1bmN0aW9uTXVsdGlNb2RlKGV2ZW50PzogYW55KXtcclxuICAgIGlmKHRoaXMuYWN0aXZlSW1hZ2VVcGxvYWQgPT0gdHJ1ZSl7XHJcbiAgICAgIGlmKHRoaXMuY3JvcHBlckltYWdlcy5sZW5ndGggPiAwKXtcclxuICAgICAgICBsZXQgYmFzZTY0SW1hZ2VzOiBJbWFnZUI2NFtdID0gdGhpcy5tYXBUb09iamVjdEI2NCh0aGlzLmNyb3BwZXJJbWFnZXMpO1xyXG4gICAgICAgIHRoaXMuaXNVcGxvYWRpbmdNdWx0aU1vZGUgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLmh0dHAucG9zdCh0aGlzLnVwbG9hZFVybCwgYmFzZTY0SW1hZ2VzLCB7IGhlYWRlcnM6IHRoaXMuaGVhZGVycyB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogIChpbWFnZXNVcGxvYWRlZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkLnB1c2goLi4uaW1hZ2VzVXBsb2FkZWQpO1xyXG4gICAgICAgICAgICB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZCA9IFsuLi50aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZF07XHJcblxyXG4gICAgICAgICAgICBpZih0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZC5sZW5ndGggPT0gMSl7XHJcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmVJbmRleEdhbGxlcnkgPSAwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNyb3BwZXJJbWFnZXMgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5maWxlVXBsb2FkLmNsZWFyKCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZCA9IHRoaXMuYWN0aXZlUG9zaXRpb25Qcm9wZXJ0eSA/IHRoaXMuYWRkUG9zaXRpb25Qcm9wZXJ0eSh0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZCkgOiB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZDtcclxuXHJcbiAgICAgICAgICAgIGlmKHRoaXMudXBsb2FkVXJsIT11bmRlZmluZWQgJiYgdGhpcy5pZGVudGlmaWNhdG9yVmFsdWUgIT09IDApe1xyXG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlSW1hZ2UodGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQpO1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICB0aGlzLm9uVXBsb2FkRmluaXNoZWQuZW1pdCh0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuaXNVcGxvYWRpbmdNdWx0aU1vZGUgPSBmYWxzZTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNVcGxvYWRpbmdNdWx0aU1vZGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5vbkVycm9ySGFuZGxlci5lbWl0KGVycm9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkN1c3RvbVVwbG9hZE11bHRpTW9kZShldmVudDogYW55KXtcclxuICAgIGlmKHRoaXMuYWxsb3dNdWx0aXBsZUltYWdlcyA9PSB0cnVlKXtcclxuICAgICAgZXZlbnQuY3VycmVudEZpbGVzLmZvckVhY2goKGZpbGU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGxldCBmb3VuZEl0ID0gdGhpcy5jcm9wcGVySW1hZ2VzLmZpbmQoZiA9PiBmLm5hbWUgPT0gZmlsZS5uYW1lKTtcclxuICAgICAgICBpZihldmVudC5jdXJyZW50RmlsZXMubGVuZ3RoID09IDApe1xyXG4gICAgICAgICAgdGhpcy5vcGVuTW9kYWxDcm9wcGVyKGZpbGUsIGV2ZW50Lm9yaWdpbmFsRXZlbnQpO1xyXG4gICAgICAgIH1lbHNlIGlmKGZvdW5kSXQgPT0gdW5kZWZpbmVkKXtcclxuICAgICAgICAgIHRoaXMub3Blbk1vZGFsQ3JvcHBlcihmaWxlLCBldmVudC5vcmlnaW5hbEV2ZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMub3Blbk1vZGFsQ3JvcHBlcihldmVudC5jdXJyZW50RmlsZXNbMF0sIGV2ZW50Lm9yaWdpbmFsRXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uZmlybURlbGV0ZUltYWdlTXVsdGlNb2RlKGV2ZW50OiBhbnksIGltYWdlOiBhbnkpe1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xyXG4gICAgICB0YXJnZXQ6IGV2ZW50LnRhcmdldCBhcyBFdmVudFRhcmdldCxcclxuICAgICAgbWVzc2FnZTogdGhpcy5pbWFnZVVwbG9hZENvbmZpZy5jb25maXJtRGVsZXRlTWVzc2FnZUxhYmVsLFxyXG4gICAgICBpY29uOiBcInBpIHBpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCIsXHJcbiAgICAgIGFjY2VwdExhYmVsOiB0aGlzLmltYWdlVXBsb2FkQ29uZmlnLmRlbGV0ZUltYWdlQnV0dG9uTGFiZWwsXHJcbiAgICAgIGFjY2VwdDogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMub25EZWxldGVJbWFnZU11bHRpTW9kZShpbWFnZSk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvbkRlbGV0ZUZpbGVNdWx0aU1vZGUoZXZlbnQ6IGFueSwgZmlsZTogRmlsZSwgdXBsb2FkZXI6IEZpbGVVcGxvYWQpe1xyXG4gICAgY29uc3QgaW5kZXggPSB1cGxvYWRlci5maWxlcy5pbmRleE9mKGZpbGUpO1xyXG4gICAgdXBsb2FkZXIucmVtb3ZlKGV2ZW50LCBpbmRleCk7XHJcbiAgICB0aGlzLmNyb3BwZXJJbWFnZXMgPSB0aGlzLmNyb3BwZXJJbWFnZXMuZmlsdGVyKHMgPT4gIWZpbGUubmFtZS5pbmNsdWRlcyhzLm5hbWUpKTtcclxuICB9XHJcblxyXG4gIG9uRGVsZXRlSW1hZ2VNdWx0aU1vZGUoaW1hZ2U6IGFueSl7XHJcbiAgICB0aGlzLmlzRGVsZXRpbmdNdWx0aU1vZGUgPSB0cnVlO1xyXG4gICAgaWYodGhpcy5hY3RpdmVJbWFnZVVwbG9hZCl7XHJcbiAgICAgIGxldCBkZWxldGVVcmxGaW5hbCA9IHRoaXMuZGVsZXRlVXJsK1wiL1wiK2ltYWdlW3RoaXMuaWRlbnRpZmljYXRvck5hbWVdO1xyXG4gICAgICB0aGlzLmh0dHAuZGVsZXRlKGRlbGV0ZVVybEZpbmFsLCB7aGVhZGVyczogdGhpcy5oZWFkZXJzfSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmdldEluZGV4VG9EZWxldGUoaW1hZ2UpO1xyXG4gICAgICAgICAgdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQgPSB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZC5maWx0ZXIoaW1nID0+IChpbWcuYmFzZTY0ICE9PSBpbWFnZS5iYXNlNjQpIHx8IChpbWdbdGhpcy5pZGVudGlmaWNhdG9yTmFtZV0gIT09IGltYWdlW3RoaXMuaWRlbnRpZmljYXRvck5hbWVdKSk7XHJcbiAgICAgICAgICB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZCA9IFsuLi50aGlzLmFjdGl2ZVBvc2l0aW9uUHJvcGVydHkgPyB0aGlzLmFkZFBvc2l0aW9uUHJvcGVydHkodGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQpIDogdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWRdO1xyXG4gICAgICAgICAgdGhpcy5pc0RlbGV0aW5nTXVsdGlNb2RlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm9uRGVsZXRlSW1hZ2UuZW1pdCh7ZGVsZXRlZEltYWdlOiBpbWFnZSwgaW1hZ2VzOiB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc0RlbGV0aW5nTXVsdGlNb2RlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm9uRXJyb3JIYW5kbGVyLmVtaXQoZXJyb3IpO1xyXG4gICAgICAgICAgdGhpcy5vbkRlbGV0ZUltYWdlLmVtaXQobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuZ2V0SW5kZXhUb0RlbGV0ZShpbWFnZSk7XHJcbiAgICAgIHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkID0gdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQuZmlsdGVyKGltZyA9PiAoaW1nLmJhc2U2NCAhPT0gaW1hZ2UuYmFzZTY0KSB8fCAoaW1nW3RoaXMuaWRlbnRpZmljYXRvck5hbWVdICE9PSBpbWFnZVt0aGlzLmlkZW50aWZpY2F0b3JOYW1lXSkpO1xyXG4gICAgICB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZCA9IFsuLi50aGlzLmFjdGl2ZVBvc2l0aW9uUHJvcGVydHkgPyB0aGlzLmFkZFBvc2l0aW9uUHJvcGVydHkodGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQpIDogdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWRdO1xyXG4gICAgICB0aGlzLm9uRGVsZXRlSW1hZ2UuZW1pdCh7ZGVsZXRlZEltYWdlOiBpbWFnZSwgaW1hZ2VzOiB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZH0pO1xyXG4gICAgICB0aGlzLmlzRGVsZXRpbmdNdWx0aU1vZGUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEluZGV4VG9EZWxldGUoaW1hZ2U6IGFueSl7XHJcbiAgICBsZXQgaW1hZ2VJbmRleCA9IHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkLmZpbmRJbmRleChpbWcgPT4ge1xyXG4gICAgICBpZigoaW1nLmJhc2U2NCAhPSB1bmRlZmluZWQpKXtcclxuICAgICAgICBpZihpbWcuYmFzZTY0ID09IGltYWdlLmJhc2U2NCl7XHJcbiAgICAgICAgICByZXR1cm4gaW1nLmluZGV4O1xyXG4gICAgICAgIH1cclxuICAgICAgfWVsc2UgaWYoaW1nW3RoaXMuaWRlbnRpZmljYXRvck5hbWVdICE9PSBpbWFnZVt0aGlzLmlkZW50aWZpY2F0b3JOYW1lXSl7XHJcbiAgICAgICAgcmV0dXJuIGltZy5pbmRleDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gLTE7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZihpbWFnZUluZGV4KzEgPT0gdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQubGVuZ3RoKXtcclxuICAgICAgdGhpcy5hY3RpdmVJbmRleEdhbGxlcnkgPSBpbWFnZUluZGV4LTE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVJbWFnZShpbWFnZXNUb1VwZGF0ZTogYW55W10pOiBhbnl7XHJcbiAgICBsZXQgdXBkYXRlVXJsRmluYWwgPSB0aGlzLnVwZGF0ZVVybCArIFwiL1wiICsgdGhpcy5pZGVudGlmaWNhdG9yVmFsdWU7XHJcbiAgICB0aGlzLmh0dHAucHV0KHVwZGF0ZVVybEZpbmFsLCBpbWFnZXNUb1VwZGF0ZSwge2hlYWRlcnM6IHRoaXMuaGVhZGVyc30pLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChpbWFnZXNVcGRhdGVkOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmRpc2FibGVNb3ZlQnV0dG9ucyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkID0gaW1hZ2VzVXBkYXRlZDtcclxuICAgICAgICB0aGlzLm9uVXBsb2FkRmluaXNoZWQuZW1pdCh0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb3Blbk1vZGFsQ3JvcHBlcihmaWxlQmxvYjogYW55LCBldmVudD86IGFueSl7XHJcbiAgICBjb25zdCByZWY6IER5bmFtaWNEaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihXSW1hZ2VDcm9wcGVyQ29tcG9uZW50LCB7XHJcbiAgICAgIGhlYWRlcjogdGhpcy5pbWFnZVVwbG9hZENvbmZpZy5jcm9wcGVkRGlhbG9nVHJhbnNsYXRpb25zPy5tb2RhbC5oZWFkZXIsXHJcbiAgICAgIHdpZHRoOiAnNzByZW0nLFxyXG4gICAgICBjb250ZW50U3R5bGU6IHtcIm92ZXJmbG93XCI6IFwiYXV0b1wiLCBcImhlaWdodFwiOiBcImF1dG9cIiwgXCJwYWRkaW5nLWJvdHRvbVwiOiBcIjhweFwifSxcclxuICAgICAgZGF0YToge2RhdGFNb2RhbDogdGhpcy5kaW1lbnNpb25zSW5wdXQsIHRyYW5zbGF0aW9uczogdGhpcy5pbWFnZVVwbG9hZENvbmZpZy5jcm9wcGVkRGlhbG9nVHJhbnNsYXRpb25zLCBibG9iOiBmaWxlQmxvYn0sXHJcbiAgICAgIHJlc2l6YWJsZTogdHJ1ZVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKChpbWFnZUNyb3BwZWQ6IFdGaWxlQjY0KSA9PiB7XHJcbiAgICAgIGlmKGltYWdlQ3JvcHBlZCl7XHJcbiAgICAgICAgaWYodGhpcy5hbGxvd011bHRpcGxlSW1hZ2VzID09IGZhbHNlKXtcclxuICAgICAgICAgIHRoaXMub25seUNyb3BwZWRJbWFnZVNlbGVjdGVkID0gaW1hZ2VDcm9wcGVkO1xyXG4gICAgICAgICAgdGhpcy5vblJldHVybkltYWdlc0I2NC5lbWl0KHRoaXMubWFwVG9PYmplY3RCNjQodGhpcy5vbmx5Q3JvcHBlZEltYWdlU2VsZWN0ZWQpKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMuY3JvcHBlckltYWdlcy5wdXNoKGltYWdlQ3JvcHBlZCk7XHJcblxyXG4gICAgICAgICAgdGhpcy5jcm9wcGVySW1hZ2VzID0gKHRoaXMuYWN0aXZlUG9zaXRpb25Qcm9wZXJ0eSAmJiB0aGlzLmFjdGl2ZUltYWdlVXBsb2FkID09IGZhbHNlICkgPyB0aGlzLmFkZFBvc2l0aW9uUHJvcGVydHkodGhpcy5jcm9wcGVySW1hZ2VzKSA6IHRoaXMuY3JvcHBlckltYWdlcztcclxuXHJcbiAgICAgICAgICBpZih0aGlzLmFjdGl2ZUltYWdlVXBsb2FkID09IGZhbHNlKXtcclxuICAgICAgICAgICAgdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQucHVzaChpbWFnZUNyb3BwZWQpO1xyXG4gICAgICAgICAgICB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZCA9IFsuLi50aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZF07XHJcblxyXG4gICAgICAgICAgICBpZih0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZC5sZW5ndGggPT0gMSl7XHJcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmVJbmRleEdhbGxlcnkgPSAwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLm9uUmV0dXJuSW1hZ2VzQjY0LmVtaXQodGhpcy5nZXRBcnJheXNUb0NyZWF0ZUFuZFRvVXBkYXRlKHRoaXMuY3JvcHBlckltYWdlcykpO1xyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMub25SZXR1cm5JbWFnZXNCNjQuZW1pdCh0aGlzLmdldEFycmF5c1RvQ3JlYXRlQW5kVG9VcGRhdGUodGhpcy5tYXBUb09iamVjdEI2NCh0aGlzLmNyb3BwZXJJbWFnZXMpKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBpZih0aGlzLmFsbG93TXVsdGlwbGVJbWFnZXMpe1xyXG4gICAgICAgICAgdGhpcy5maWxlVXBsb2FkLl9maWxlcyA9IHRoaXMuZmlsZVVwbG9hZC5fZmlsZXMuZmlsdGVyKGYgPT4gIWYubmFtZS5pbmNsdWRlcyhmaWxlQmxvYi5uYW1lKSk7XHJcbiAgICAgICAgICBsZXQgZmlsZXNBdXggPSB0aGlzLmZpbGVVcGxvYWQuX2ZpbGVzO1xyXG4gICAgICAgICAgdGhpcy5maWxlVXBsb2FkLmNsZWFyKCk7XHJcbiAgICAgICAgICB0aGlzLmZpbGVVcGxvYWQuX2ZpbGVzID0gZmlsZXNBdXg7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLm9ubHlJbWFnZVNlbGVjdGVkID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuZmlsZXVwbG9hZE9ubHlJbWFnZS5jbGVhcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYoKHRoaXMuYWN0aXZlSW1hZ2VVcGxvYWQgPT0gdHJ1ZSkgJiYgKHRoaXMuaW1hZ2VVcGxvYWRDb25maWcuYWxsb3dBdXRvID09IHRydWUpICYmICh0aGlzLmNyb3BwZXJJbWFnZXMubGVuZ3RoID09IHRoaXMuZmlsZVVwbG9hZC5fZmlsZXMubGVuZ3RoKSl7XHJcbiAgICAgICAgdGhpcy5vbkN1c3RvbWl6ZVVwbG9hZEZ1bmN0aW9uTXVsdGlNb2RlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBtYXBUb09iamVjdEI2NChpbWFnZXM6IGFueSk6IEltYWdlQjY0W117XHJcbiAgICBpZihBcnJheS5pc0FycmF5KGltYWdlcykgPT0gZmFsc2Upe1xyXG4gICAgICByZXR1cm4gIFt7XHJcbiAgICAgICAgYmFzZTY0OiBpbWFnZXMuYmFzZTY0LFxyXG4gICAgICAgIG5hbWU6IGltYWdlcy5uYW1lLFxyXG4gICAgICAgIC4uLihpbWFnZXMucG9zaXRpb24gIT09IHVuZGVmaW5lZCAmJiB7IHBvc2l0aW9uOiBpbWFnZXMucG9zaXRpb24gfSlcclxuICAgICAgfV1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaW1hZ2VzLm1hcCgoaW1nOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuICB7XHJcbiAgICAgICAgYmFzZTY0OiBpbWcuYmFzZTY0LFxyXG4gICAgICAgIG5hbWU6IGltZy5uYW1lLFxyXG4gICAgICAgIC4uLihpbWcucG9zaXRpb24gIT09IHVuZGVmaW5lZCAmJiB7IHBvc2l0aW9uOiBpbWcucG9zaXRpb24gfSlcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBcnJheXNUb0NyZWF0ZUFuZFRvVXBkYXRlKGltYWdlczogYW55W10pe1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdG9DcmVhdGU6XHJcbiAgICAgICAgaW1hZ2VzLmZpbHRlcigoaW1nKSA9PiBpbWdbdGhpcy5pZGVudGlmaWNhdG9yTmFtZV0gPT0gdW5kZWZpbmVkKSxcclxuICAgICAgdG9VcGRhdGVkOlxyXG4gICAgICAgIGltYWdlcy5maWx0ZXIoKGltZykgPT4gaW1nLmJhc2U2NCA9PSB1bmRlZmluZWQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRQb3NpdGlvblByb3BlcnR5KGltYWdlc0FycmF5OiBhbnlbXSl7XHJcbiAgICBpbWFnZXNBcnJheSA9IGltYWdlc0FycmF5Lm1hcCgoaW1nLCBpbmRleCkgPT4gKHtcclxuICAgICAgLi4uaW1nLFxyXG4gICAgICBwb3NpdGlvbjogaW5kZXhcclxuICAgIH0pKVxyXG5cclxuICAgIHJldHVybiBpbWFnZXNBcnJheTtcclxuICB9XHJcblxyXG4gIG9uSW1hZ2VNb3VzZU92ZXIoZmlsZTogYW55KSB7XHJcbiAgICB0aGlzLmJ1dHRvblJlbW92ZU9ubHlJbWFnZS50b0FycmF5KCkuZm9yRWFjaChidG5SZW1vdmUgPT4ge1xyXG4gICAgICAgIGJ0blJlbW92ZS5uYXRpdmVFbGVtZW50LmlkID09PSBmaWxlLm5hbWUgPyBidG5SZW1vdmUubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnIDogbnVsbDtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvbkltYWdlTW91c2VMZWF2ZShmaWxlOiBhbnkpIHtcclxuICAgIHRoaXMuYnV0dG9uUmVtb3ZlT25seUltYWdlLnRvQXJyYXkoKS5mb3JFYWNoKGJ0blJlbW92ZSA9PiB7XHJcbiAgICAgICAgYnRuUmVtb3ZlLm5hdGl2ZUVsZW1lbnQuaWQgPT09IGZpbGUubmFtZSA/IGJ0blJlbW92ZS5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZScgOiBudWxsO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGZpbmRJbmRleChpbWc6IGFueSl7XHJcbiAgICByZXR1cm4gdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQuaW5kZXhPZihpbWcpO1xyXG4gIH1cclxuXHJcbiAgb3BlbkltYWdlRmlsZVNlbGVjdG9yKCl7XHJcbiAgICB0aGlzLmZpbGVVcGxvYWQuY2hvb3NlKCk7XHJcbiAgfVxyXG5cclxuICBvcGVuU2luZ2xlSW1hZ2VGaWxlU2VsZWN0b3IoKXtcclxuICAgIHRoaXMuZmlsZXVwbG9hZE9ubHlJbWFnZS5jaG9vc2UoKTtcclxuICB9XHJcblxyXG4gIGdldEdhbGxlcnlDbGFzcygpe1xyXG4gICAgaWYodGhpcy5hY3RpdmVGaWVsZFZlcnNpb24gPT0gdHJ1ZSl7XHJcbiAgICAgIHJldHVybiAndy1pbWFnZS1maWxlLXVwbG9hZGVyLWdhbGxlcnktZmllbGQnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICd3LWltYWdlLWZpbGUtdXBsb2FkZXItZ2FsbGVyeSc7XHJcbiAgfVxyXG59XHJcbiIsIlxyXG48dy1pbnB1dC1sYWJlbCAqbmdJZj1cImFjdGl2ZUZpZWxkVmVyc2lvbiA9PSB0cnVlXCIgW2xhYmVsXT1cImxhYmVsXCIgW3Rvb2x0aXBdPVwidG9vbHRpcFwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiPjwvdy1pbnB1dC1sYWJlbD5cclxuPGRpdiAqbmdJZj1cImFjdGl2ZUZpZWxkVmVyc2lvbiA9PSB0cnVlICYmIChsYWJlbCAhPSB1bmRlZmluZWQgJiYgbGFiZWwubGVuZ3RoID4gMClcIiBjbGFzcz1cImlucHV0LWxhYmVsLWdhcC1kaXZpZGVyXCI+PC9kaXY+XHJcbjxwLWZpbGVVcGxvYWQgKm5nSWY9XCJhbGxvd011bHRpcGxlSW1hZ2VzID09IGZhbHNlOyBlbHNlIHdpdGhDYXJvdXNlbFwiICNmaWxlVXBsb2FkT25seUltYWdlIGNsYXNzPVwidy1pbWFnZS1maWxlLWJ1dHRvblwiXHJcbiAgICBbbmdDbGFzc109XCJ7J3ctaW1hZ2UtZmlsZS11cGxvYWRlcicgOiBhY3RpdmVGaWVsZFZlcnNpb24gPT0gZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAndy1pbWFnZS1maWxlLXVwbG9hZGVyLWZpZWxkJyA6IGFjdGl2ZUZpZWxkVmVyc2lvbiA9PSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgJ3ctaW1hZ2UtZmlsZS11cGxvYWRlci1maWVsZC1uby1pbWFnZScgOiBhY3RpdmVGaWVsZFZlcnNpb24gPT0gdHJ1ZSAmJiAob25seUNyb3BwZWRJbWFnZVNlbGVjdGVkID09IG51bGwgfHwgdW5kZWZpbmVkICkgJiYgKGltYWdlU2luZ2xlTW9kZSA9PSBudWxsIHx8IHVuZGVmaW5lZCl9XCJcclxuICAgIG1vZGU9XCJhZHZhbmNlZFwiXHJcbiAgICBbYWNjZXB0XT1cImltYWdlVXBsb2FkQ29uZmlnLmFjY2VwdEltYWdlVHlwZXNcIlxyXG4gICAgW211bHRpcGxlXT1cImZhbHNlXCJcclxuICAgIFtpbnZhbGlkRmlsZVNpemVNZXNzYWdlU3VtbWFyeV09XCJpbWFnZVVwbG9hZENvbmZpZy5pbnZhbGlkRmlsZVNpemVNZXNzYWdlU3VtbWFyeSArICc6J1wiXHJcbiAgICBbaW52YWxpZEZpbGVTaXplTWVzc2FnZURldGFpbF09XCJpbWFnZVVwbG9hZENvbmZpZy5pbnZhbGlkRmlsZVNpemVNZXNzYWdlRGV0YWlsICsgJyB7MH0gYnl0ZXMuJ1wiXHJcbiAgICBbaW52YWxpZEZpbGVUeXBlTWVzc2FnZVN1bW1hcnldPVwiaW1hZ2VVcGxvYWRDb25maWcuaW52YWxpZEZpbGVUeXBlTWVzc2FnZVN1bW1hcnkgKyAnOidcIlxyXG4gICAgW2ludmFsaWRGaWxlVHlwZU1lc3NhZ2VEZXRhaWxdPVwiaW1hZ2VVcGxvYWRDb25maWcuaW52YWxpZEZpbGVUeXBlTWVzc2FnZURldGFpbCArICc6IHswfS4nXCJcclxuICAgIChvblNlbGVjdCk9XCJvbkN1c3RvbVVwbG9hZFNpbmdsZU1vZGUoJGV2ZW50KVwiXHJcbiAgICBbdXBsb2FkTGFiZWxdPVwib25seUNyb3BwZWRJbWFnZVNlbGVjdGVkID8gKG9ubHlDcm9wcGVkSW1hZ2VTZWxlY3RlZC5uYW1lLmxlbmd0aD42KT8gKG9ubHlDcm9wcGVkSW1hZ2VTZWxlY3RlZC5uYW1lIHwgc2xpY2U6MDo2KSsnLi4uJzoob25seUNyb3BwZWRJbWFnZVNlbGVjdGVkLm5hbWUpIDogJydcIlxyXG4gICAgW2N1c3RvbVVwbG9hZF09XCJ0cnVlXCJcclxuICAgICh1cGxvYWRIYW5kbGVyKT1cIm9uQ3VzdG9taXplVXBsb2FkRnVuY3Rpb25TaW5nbGVNb2RlKCRldmVudClcIlxyXG4gICAgW21heEZpbGVTaXplXT1cImltYWdlVXBsb2FkQ29uZmlnLm1heEltYWdlU2l6ZVwiPlxyXG4gICAgPG5nLXRlbXBsYXRlIGxldC1maWxlIGxldC1pPVwiaW5kZXhcIiBwVGVtcGxhdGU9J2ZpbGUnPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhY3RpdmVJbWFnZVVwbG9hZFwiPjwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjb250ZW50XCI+XHJcbiAgICAgICAgPHAtcHJvZ3Jlc3NCYXIgKm5nSWY9XCJmYWxzZVwiPjwvcC1wcm9ncmVzc0Jhcj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiKG9ubHlDcm9wcGVkSW1hZ2VTZWxlY3RlZCAhPSBudWxsIHx8IHVuZGVmaW5lZCkgfHwgKGltYWdlU2luZ2xlTW9kZSAhPSBudWxsIHx8IHVuZGVmaW5lZClcIiBzdHlsZT1cImZsZXgtZ3JvdzogMTtcIj5cclxuICAgICAgICAgICAgPHAtZ2FsbGVyaWFcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldEdhbGxlcnlDbGFzcygpXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCIob25seUNyb3BwZWRJbWFnZVNlbGVjdGVkICE9PSBudWxsKSA/IFtvbmx5Q3JvcHBlZEltYWdlU2VsZWN0ZWQuZmlsZUJhc2U2NF0gOiAoaW1hZ2VVcGxvYWRDb25maWcuc2luZ2xlTW9kZUltYWdlRGVmYXVsdCA/IFtpbWFnZVVwbG9hZENvbmZpZy5zaW5nbGVNb2RlSW1hZ2VEZWZhdWx0XSA6IChpbWFnZVNpbmdsZU1vZGUgPyBbaW1hZ2VTaW5nbGVNb2RlXSA6IFsnaHR0cHM6Ly93YXBwaW5nc3RvcmFnZWRldi5ibG9iLmNvcmUud2luZG93cy5uZXQvd2FwcGluZy9hcHByZXNvdXJjZXMvaWNfaW1hZ2VfYmx1ZS5wbmcnXSkpXCJcclxuICAgICAgICAgICAgICAgIFtyZXNwb25zaXZlT3B0aW9uc109XCJjYXJvdXNlbEltYWdlc1Jlc3BvbnNpdmVPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgIFtjb250YWluZXJTdHlsZV09XCJ7ICdtYXgtd2lkdGgnOiAnMTAwJScsICdtYXgtaGVpZ2h0JzonMTAwJSd9XCJcclxuICAgICAgICAgICAgICAgIFtudW1WaXNpYmxlXT1cIjJcIlxyXG4gICAgICAgICAgICAgICAgW3Nob3dJdGVtTmF2aWdhdG9yc109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBbc2hvd1RodW1ibmFpbHNdPVwiZmFsc2VcIiBbc2hvd0luZGljYXRvcnNdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJpdGVtXCIgbGV0LWltYWdlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIodmlld1NpbmdsZU1vZGUgPT0gZmFsc2UgJiYgKGltYWdlU2luZ2xlTW9kZSAhPSBudWxsIHx8IHVuZGVmaW5lZCkpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZpZXdTaW5nbGVNb2RlID09IGZhbHNlICYmIG9ubHlDcm9wcGVkSW1hZ2VTZWxlY3RlZCAhPSBudWxsKVwiIGNsYXNzPVwidy1pbWFnZS1maWxlLXVwbG9hZGVyLWRlbGV0ZS1idXR0b24gZmxleCBhbGlnbi1jb250ZW50LWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHctYnV0dG9uIGJ1dHRvbkNsYXNzPVwidy1pbWFnZS1maWxlLXVwbG9hZGVyLWRlbGV0ZS1idXR0b24taWNvblwiIGljb249XCJwaSBwaS10cmFzaFwiIHR5cGU9XCJ0ZXh0XCIgKGNsaWNrKT1cInJlbW92ZUltYWdlU2luZ2xlTW9kZSgkZXZlbnQsIG9ubHlJbWFnZVNlbGVjdGVkKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGFsaWduLWNvbnRlbnQtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBbbmdDbGFzc109XCJ7J3ctaW1hZ2UtZmlsZS11cGxvYWRlci1maWVsZC1pbWctY29udGFpbmVyJzogYWN0aXZlRmllbGRWZXJzaW9ufVwiIHN0eWxlPVwib2JqZWN0LWZpdDogY29udGFpbjtcIiBbbmdTdHlsZV09XCJ7J2hlaWdodCc6IGN1c3RvbUhlaWdodEltZyA/IGN1c3RvbUhlaWdodEltZyArICdweCcgOiAnYXV0byd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZVwiIHN0eWxlPVwibWF4LXdpZHRoOjEwMCU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6MTAwJTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDphdXRvO1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3AtZ2FsbGVyaWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInZpZXdTaW5nbGVNb2RlID09IGZhbHNlOyBlbHNlIHZpZXdTaW5nbGVNb2RlTWVzc2FnZVwiIChjbGljayk9XCJvcGVuU2luZ2xlSW1hZ2VGaWxlU2VsZWN0b3IoKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidy1pbWFnZS1maWxlLXVwbG9hZGVyLXNwYWNlLWNvbnRhaW5lciBmbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7IGdhcDogNnB4O1wiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsndy1pbWFnZS1maWxlLXVwbG9hZGVyLWNvbnRhaW5lci1oZWlnaHQnIDogKG9ubHlDcm9wcGVkSW1hZ2VTZWxlY3RlZCA9PSBudWxsIHx8IHVuZGVmaW5lZCApICYmIChpbWFnZVNpbmdsZU1vZGUgPT0gbnVsbCB8fCB1bmRlZmluZWQpICYmIGFjdGl2ZUZpZWxkVmVyc2lvbiA9PSBmYWxzZSwgJ3ctaW1hZ2UtZmlsZS11cGxvYWRlci1maWVsZC1jb250YWluZXItaGVpZ2h0JyA6IGFjdGl2ZUZpZWxkVmVyc2lvbiA9PSB0cnVlICYmIChvbmx5Q3JvcHBlZEltYWdlU2VsZWN0ZWQgPT0gbnVsbCB8fCB1bmRlZmluZWQgKSAmJiAoaW1hZ2VTaW5nbGVNb2RlID09IG51bGwgfHwgdW5kZWZpbmVkKX1cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwaSBwaS11cGxvYWQgc3VidGl0bGUxIHRleHRNYWluQ29sb3JcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VidGl0bGUxIHRleHRNYWluQ29sb3IgbS0yXCI+XHJcbiAgICAgICAgICAgICAgICB7e2ltYWdlVXBsb2FkQ29uZmlnLmNvbnRlbnRIZWFkZXJMYWJlbH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI3ZpZXdTaW5nbGVNb2RlTWVzc2FnZT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImltYWdlU2luZ2xlTW9kZSA9PSBudWxsIHx8IHVuZGVmaW5lZFwiIGNsYXNzPVwidGV4dFNvZnRDb2xvciBmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHctaW1hZ2UtZmlsZS11cGxvYWRlci1jb250YWluZXItaGVpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICB7e2ltYWdlVXBsb2FkQ29uZmlnLnZpZXdNb2RlY29udGVudExhYmVsfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvcC1maWxlVXBsb2FkPlxyXG48bmctdGVtcGxhdGUgI3dpdGhDYXJvdXNlbD5cclxuICAgIDxwLWZpbGVVcGxvYWQgKm5nSWY9XCJpbWFnZVVwbG9hZENvbmZpZ1wiICNmaWxlVXBsb2FkIGNsYXNzPVwidy1pbWFnZS1maWxlLWJ1dHRvblwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyd3LWltYWdlLWZpbGUtdXBsb2FkZXInIDogYWN0aXZlRmllbGRWZXJzaW9uID09IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICd3LWltYWdlLWZpbGUtdXBsb2FkZXItZmllbGQnIDogYWN0aXZlRmllbGRWZXJzaW9uID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgJ3ctaW1hZ2UtZmlsZS11cGxvYWRlci1maWVsZC1uby1pbWFnZScgOiBhY3RpdmVGaWVsZFZlcnNpb24gPT0gdHJ1ZSAmJiAoaW1hZ2VzQWxyZWFkeVVwbG9hZGVkLmxlbmd0aCA9PSAwIHx8IHVuZGVmaW5lZCApIHx8IChpbWFnZXNBbHJlYWR5VXBsb2FkZWQgPT0gbnVsbCB8fCB1bmRlZmluZWQpfVwiXHJcbiAgICAgICAgbmFtZT1cIm1lZGlhSW1hZ2VzW11cIlxyXG4gICAgICAgIFthY2NlcHRdPVwiaW1hZ2VVcGxvYWRDb25maWcuYWNjZXB0SW1hZ2VUeXBlc1wiXHJcbiAgICAgICAgbW9kZT1cImFkdmFuY2VkXCJcclxuICAgICAgICBbY3VzdG9tVXBsb2FkXT1cInRydWVcIlxyXG4gICAgICAgIChvblNlbGVjdCk9XCJvbkN1c3RvbVVwbG9hZE11bHRpTW9kZSgkZXZlbnQpXCJcclxuICAgICAgICAodXBsb2FkSGFuZGxlcik9XCJvbkN1c3RvbWl6ZVVwbG9hZEZ1bmN0aW9uTXVsdGlNb2RlKCRldmVudClcIlxyXG4gICAgICAgIFt1cGxvYWRMYWJlbF09XCJpbWFnZVVwbG9hZENvbmZpZy51cGxvYWRCdXR0b25MYWJlbCA/PyAnJ1wiXHJcbiAgICAgICAgW2Nob29zZUxhYmVsXT1cImltYWdlVXBsb2FkQ29uZmlnLmNob29zZUJ1dHRvbkxhYmVsID8/ICcnXCJcclxuICAgICAgICBbY2FuY2VsTGFiZWxdPVwiaW1hZ2VVcGxvYWRDb25maWcuY2FuY2VsQnV0dG9uTGFiZWwgPz8gJydcIlxyXG4gICAgICAgIFtzaG93VXBsb2FkQnV0dG9uXT1cImFjdGl2ZUltYWdlVXBsb2FkXCJcclxuICAgICAgICBbc2hvd0NhbmNlbEJ1dHRvbl09XCJhY3RpdmVJbWFnZVVwbG9hZFwiXHJcbiAgICAgICAgW2F1dG9dPVwiaW1hZ2VVcGxvYWRDb25maWcuYWxsb3dBdXRvXCJcclxuICAgICAgICBbbXVsdGlwbGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgW21heEZpbGVTaXplXT1cImltYWdlVXBsb2FkQ29uZmlnLm1heEltYWdlU2l6ZVwiXHJcbiAgICAgICAgW2ludmFsaWRGaWxlU2l6ZU1lc3NhZ2VTdW1tYXJ5XT1cImltYWdlVXBsb2FkQ29uZmlnLmludmFsaWRGaWxlU2l6ZU1lc3NhZ2VTdW1tYXJ5ICsgJzonXCJcclxuICAgICAgICBbaW52YWxpZEZpbGVTaXplTWVzc2FnZURldGFpbF09XCJpbWFnZVVwbG9hZENvbmZpZy5pbnZhbGlkRmlsZVNpemVNZXNzYWdlRGV0YWlsICsgJyB7MH0gYnl0ZXMuJ1wiXHJcbiAgICAgICAgW2ludmFsaWRGaWxlVHlwZU1lc3NhZ2VTdW1tYXJ5XT1cImltYWdlVXBsb2FkQ29uZmlnLmludmFsaWRGaWxlVHlwZU1lc3NhZ2VTdW1tYXJ5ICsgJzonXCJcclxuICAgICAgICBbaW52YWxpZEZpbGVUeXBlTWVzc2FnZURldGFpbF09XCJpbWFnZVVwbG9hZENvbmZpZy5pbnZhbGlkRmlsZVR5cGVNZXNzYWdlRGV0YWlsICsgJzogezB9LidcIlxyXG4gICAgICAgIFtjaG9vc2VTdHlsZUNsYXNzXT1cIidwLWJ1dHRvbi1pY29uIHAtYnV0dG9uLWljb24tcmlnaHQnXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1maWxlIGxldC1pPVwiaW5kZXhcIiBwVGVtcGxhdGU9J2ZpbGUnPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlSW1hZ2VVcGxvYWQgJiYgY3JvcHBlckltYWdlcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJwLWZpbGV1cGxvYWQtcm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PjxpbWcgW3NyY109XCJjcm9wcGVySW1hZ2VzW2ldPy5maWxlQmFzZTY0XCIgd2lkdGg9XCI1MFwiLz48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZpbGV1cGxvYWQtZmlsZW5hbWVcIj57e2ZpbGUubmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PiA8dy1idXR0b24gaWNvbj1cInBpIHBpLXRpbWVzXCIgKG9uQ2xpY2spPVwib25EZWxldGVGaWxlTXVsdGlNb2RlKCRldmVudCwgZmlsZSwgZmlsZVVwbG9hZClcIj48L3ctYnV0dG9uPiA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY29udGVudFwiPlxyXG4gICAgICAgICAgICA8cC1wcm9ncmVzc0JhciAqbmdJZj1cImlzVXBsb2FkaW5nTXVsdGlNb2RlXCIgY2xhc3M9XCJwLWVsZW1lbnQgbmctc3Rhci1pbnNlcnRlZFwiIFttb2RlXT1cIidpbmRldGVybWluYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiByb2xlPVwicHJvZ3Jlc3NiYXJcIiBhcmlhLXZhbHVlbWluPVwiMFwiIGFyaWEtdmFsdWVub3c9XCIwXCIgYXJpYS12YWx1ZW1heD1cIjEwMFwiIGRhdGEtcGMtbmFtZT1cInByb2dyZXNzYmFyXCIgZGF0YS1wYy1zZWN0aW9uPVwicm9vdFwiIGNsYXNzPVwicC1wcm9ncmVzc2JhciBwLWNvbXBvbmVudCBwLXByb2dyZXNzYmFyLWRldGVybWluYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcHJvZ3Jlc3NiYXItdmFsdWUgcC1wcm9ncmVzc2Jhci12YWx1ZS1hbmltYXRlIG5nLXN0YXItaW5zZXJ0ZWRcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IHdpZHRoOiAwJTtcIiBkYXRhLXBjLXNlY3Rpb249XCJ2YWx1ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvcC1wcm9ncmVzc0Jhcj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImltYWdlc0FscmVhZHlVcGxvYWRlZC5sZW5ndGggPiAwXCIgc3R5bGU9XCJmbGV4LWdyb3c6IDE7XCI+XHJcbiAgICAgICAgICAgICAgICA8cC1nYWxsZXJpYVxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldEdhbGxlcnlDbGFzcygpXCJcclxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaW1hZ2VzQWxyZWFkeVVwbG9hZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSW5kZXhdPVwiYWN0aXZlSW5kZXhHYWxsZXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVzcG9uc2l2ZU9wdGlvbnNdPVwiY2Fyb3VzZWxJbWFnZXNSZXNwb25zaXZlT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRhaW5lclN0eWxlXT1cInsgJ21heC13aWR0aCc6ICcxMDAlJywgJ21heC1oZWlnaHQnOicxMDAlJ31cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtudW1WaXNpYmxlXT1cIjNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93SXRlbU5hdmlnYXRvcnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dUaHVtYm5haWxzXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cIml0ZW1cIiBsZXQtaW1hZ2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2aWV3TXVsdGlNb2RlID09IGZhbHNlXCIgY2xhc3M9XCJ3LWltYWdlLWZpbGUtdXBsb2FkZXItZGVsZXRlLWJ1dHRvbiBmbGV4IGFsaWduLWNvbnRlbnQtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHctYnV0dG9uIGJ1dHRvbkNsYXNzPVwidy1pbWFnZS1maWxlLXVwbG9hZGVyLWRlbGV0ZS1idXR0b24taWNvblwiIGljb249XCJwaSBwaS10cmFzaFwiIHR5cGU9XCJ0ZXh0XCIgKG9uQ2xpY2spPVwiY29uZmlybURlbGV0ZUltYWdlTXVsdGlNb2RlKCRldmVudCwgaW1hZ2UpXCIgW2xvYWRpbmddPVwiaXNEZWxldGluZ011bHRpTW9kZVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgYWxpZ24tY29udGVudC1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiIFtuZ0NsYXNzXT1cInsndy1pbWFnZS1maWxlLXVwbG9hZGVyLWZpZWxkLWltZy1jb250YWluZXInOiBhY3RpdmVGaWVsZFZlcnNpb259XCIgc3R5bGU9XCJvYmplY3QtZml0OiBjb250YWluO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cInJlYWRQcm9wZXJ0eShpbWFnZSwgaW1hZ2VVcGxvYWRDb25maWcuaW1hZ2VQcm9wZXJ0eU5hbWVzWzBdKSA/PyBpbWFnZS5maWxlQmFzZTY0XCIgc3R5bGU9XCJtYXgtd2lkdGg6MTAwJTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6MTAwJTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYXV0bztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOmF1dG87XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWltYWdlLWZpbGUtdXBsb2FkZXItbW92ZS1idXR0b25zIGZsZXggYWxpZ24tY29udGVudC1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld011bHRpTW9kZSA9PSBmYWxzZSAmJiBhY3RpdmVQb3NpdGlvblByb3BlcnR5ID09IHRydWVcIiBjbGFzcz1cInctaW1hZ2UtZmlsZS11cGxvYWRlci1tdWx0aS1hY3Rpb24tYnV0dG9uXCIgW25nQ2xhc3NdPVwieyd3LWltYWdlLWZpbGUtdXBsb2FkZXItaGlkZS1tb3ZlLWJ1dHRvbicgOiBmaW5kSW5kZXgoaW1hZ2UpID09IDAgfHwgZGlzYWJsZU1vdmVCdXR0b25zfVwiIChjbGljayk9XCJtb3ZlSW1hZ2VUb0xlZnQoaW1hZ2UpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHctaWNvbnMgbmFtZT1cImRvdWJsZUFycm93TGVmdFwiIGNsYXNzPVwidy1pbWFnZS1maWxlLXVwbG9hZGVyLWFycm93XCIgW2hlaWdodF09XCIxMFwiIFt3aWR0aF09XCIxMFwiIFtjb2xvcl09XCInd2hpdGUnXCI+PC93LWljb25zPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzRGVsZXRpbmdNdWx0aU1vZGUgPT0gZmFsc2U7IGVsc2UgaW5kZXhMb2FkaW5nXCIgY2xhc3M9XCJ3LWltYWdlLWZpbGUtdXBsb2FkZXItbXVsdGktaW1hZ2VzLWluZGV4IGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaW5kSW5kZXgoaW1hZ2UpICsgMSB9fSAvIHt7IGltYWdlc0FscmVhZHlVcGxvYWRlZC5sZW5ndGggfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbmRleExvYWRpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctaW1hZ2UtZmlsZS11cGxvYWRlci1tdWx0aS1pbWFnZXMtaW5kZXggZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPiAtIC8gLSA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZpZXdNdWx0aU1vZGUgPT0gZmFsc2UgICYmIGFjdGl2ZVBvc2l0aW9uUHJvcGVydHkgPT0gdHJ1ZVwiIGNsYXNzPVwidy1pbWFnZS1maWxlLXVwbG9hZGVyLW11bHRpLWFjdGlvbi1idXR0b25cIiBbbmdDbGFzc109XCJ7J3ctaW1hZ2UtZmlsZS11cGxvYWRlci1oaWRlLW1vdmUtYnV0dG9uJyA6IChmaW5kSW5kZXgoaW1hZ2UpID09IGltYWdlc0FscmVhZHlVcGxvYWRlZC5sZW5ndGgtMSkgfHwgZGlzYWJsZU1vdmVCdXR0b25zfVwiIChjbGljayk9XCJtb3ZlSW1hZ2VUb1JpZ2h0KGltYWdlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3LWljb25zIG5hbWU9XCJkb3VibGVBcnJvd1JpZ2h0XCIgY2xhc3M9XCJ3LWltYWdlLWZpbGUtdXBsb2FkZXItYXJyb3dcIiBbaGVpZ2h0XT1cIjEwXCIgW3dpZHRoXT1cIjEwXCIgW2NvbG9yXT1cIid3aGl0ZSdcIj48L3ctaWNvbnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvcC1nYWxsZXJpYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2aWV3TXVsdGlNb2RlID09IGZhbHNlOyBlbHNlIHZpZXdNdWx0aU1vZGVNZXNzYWdlXCIgKGNsaWNrKT1cIm9wZW5JbWFnZUZpbGVTZWxlY3RvcigpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidy1pbWFnZS1maWxlLXVwbG9hZGVyLXNwYWNlLWNvbnRhaW5lciBmbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyOyBnYXA6IDZweDtcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyd3LWltYWdlLWZpbGUtdXBsb2FkZXItY29udGFpbmVyLWhlaWdodCcgOiAoaW1hZ2VzQWxyZWFkeVVwbG9hZGVkLmxlbmd0aCA9PSAwIHx8IHVuZGVmaW5lZCApIHx8IChpbWFnZXNBbHJlYWR5VXBsb2FkZWQgPT0gbnVsbCB8fCB1bmRlZmluZWQpICYmIGFjdGl2ZUZpZWxkVmVyc2lvbiA9PSBmYWxzZSwgJ3ctaW1hZ2UtZmlsZS11cGxvYWRlci1maWVsZC1jb250YWluZXItaGVpZ2h0JyA6IGFjdGl2ZUZpZWxkVmVyc2lvbiA9PSB0cnVlICYmIChpbWFnZXNBbHJlYWR5VXBsb2FkZWQubGVuZ3RoID09IDAgfHwgdW5kZWZpbmVkICkgfHwgKGltYWdlc0FscmVhZHlVcGxvYWRlZCA9PSBudWxsIHx8IHVuZGVmaW5lZCl9XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBpIHBpLXVwbG9hZCBzdWJ0aXRsZTEgdGV4dE1haW5Db2xvclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VidGl0bGUxIHRleHRNYWluQ29sb3IgbS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tpbWFnZVVwbG9hZENvbmZpZy5jb250ZW50SGVhZGVyTGFiZWx9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN2aWV3TXVsdGlNb2RlTWVzc2FnZT5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpbWFnZXNBbHJlYWR5VXBsb2FkZWQubGVuZ3RoPT0wXCIgY2xhc3M9XCJ0ZXh0U29mdENvbG9yIGZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgdy1pbWFnZS1maWxlLXVwbG9hZGVyLWNvbnRhaW5lci1oZWlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2ltYWdlVXBsb2FkQ29uZmlnLnZpZXdNb2RlY29udGVudExhYmVsfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3AtZmlsZVVwbG9hZD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxwLWNvbmZpcm1Qb3B1cD48L3AtY29uZmlybVBvcHVwPlxyXG4iXX0=
480
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy1pbWFnZS1maWxlLXVwbG9hZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL2ZpbGUvdy1pbWFnZS1maWxlLXVwbG9hZGVyL3ctaW1hZ2UtZmlsZS11cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93YXBwLWNvbXBvbmVudHMvc3JjL2xpYi9maWxlL3ctaW1hZ2UtZmlsZS11cGxvYWRlci93LWltYWdlLWZpbGUtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWEsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd0SSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHbEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFXdEYsTUFBTSxPQUFPLDJCQUEyQjtJQXFGdEMsWUFDVSxhQUE0QixFQUM1QixJQUFnQixFQUNoQixtQkFBd0M7UUFGeEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBdkZwQix3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDdkMsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBQy9CLDBCQUFxQixHQUFVLEVBQUUsQ0FBQztRQU1qQywyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFDaEQsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDakMsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDdEIsc0JBQWlCLEdBQVcsSUFBSSxDQUFDO1FBQ3JCLHVCQUFrQixHQUFRLENBQUMs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RUksZ0JBQWdCO3NCQUEzQyxNQUFNO3VCQUFDLGtCQUFrQjtnQkFDQSxjQUFjO3NCQUF2QyxNQUFNO3VCQUFDLGdCQUFnQjtnQkFDSyxpQkFBaUI7c0JBQTdDLE1BQU07dUJBQUMsbUJBQW1CO2dCQUNGLGFBQWE7c0JBQXJDLE1BQU07dUJBQUMsZUFBZTtnQkFFRSxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBRWdCLHFCQUFxQjtzQkFBM0QsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBQ0gsbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBXSW1hZ2VGaWxlVXBsb2FkZXJDb25maWcgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL3ctaW1hZ2UtZmlsZS11cGxvYWRlci1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkIH0gZnJvbSAncHJpbWVuZy9maWxldXBsb2FkJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSwgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IEltYWdlQjY0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9pbWFnZS1iNjQubW9kZWwnO1xyXG5pbXBvcnQgeyBXSW1hZ2VDcm9wcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vdy1pbWFnZS1jcm9wcGVyL3ctaW1hZ2UtY3JvcHBlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBXSW1hZ2VDcm9wcGVyRGF0YSB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvdy1pbWFnZS1jcm9wcGVyLWRhdGEubW9kZWwnO1xyXG5pbXBvcnQgeyBXRmlsZUI2NCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvdy1maWxlLWI2NC5tb2RlbCc7XHJcbmltcG9ydCB7IFdJY29uc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ljb25zL3dhcHBpbmctaWNvbnMvdy1pY29ucy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd3LWltYWdlLWZpbGUtdXBsb2FkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93LWltYWdlLWZpbGUtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3ctaW1hZ2UtZmlsZS11cGxvYWRlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW0NvbmZpcm1hdGlvblNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXSW1hZ2VGaWxlVXBsb2FkZXJDb21wb25lbnQge1xyXG4gIEBJbnB1dCgnYWxsb3dNdWx0aXBsZUltYWdlcycpIGFsbG93TXVsdGlwbGVJbWFnZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoJ2FjdGl2ZUltYWdlVXBsb2FkJykgYWN0aXZlSW1hZ2VVcGxvYWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoJ2ltYWdlc0FscmVhZHlVcGxvYWRlZCcpIGltYWdlc0FscmVhZHlVcGxvYWRlZDogYW55W10gPSBbXTtcclxuICBASW5wdXQoJ2ltYWdlU2luZ2xlTW9kZScpIGltYWdlU2luZ2xlTW9kZTogYW55O1xyXG4gIEBJbnB1dCgndXBsb2FkVXJsJykgdXBsb2FkVXJsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgndXBkYXRlVXJsJykgdXBkYXRlVXJsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgnZGVsZXRlVXJsJykgZGVsZXRlVXJsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgnaGVhZGVycycpIGhlYWRlcnMhOiBIdHRwSGVhZGVycztcclxuICBASW5wdXQoJ2FjdGl2ZVBvc2l0aW9uUHJvcGVydHknKSBhY3RpdmVQb3NpdGlvblByb3BlcnR5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCd2aWV3U2luZ2xlTW9kZScpIHZpZXdTaW5nbGVNb2RlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCd2aWV3TXVsdGlNb2RlJykgdmlld011bHRpTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgnaWRlbnRpZmljYXRvckltYWdlTmFtZScpIGlkZW50aWZpY2F0b3JOYW1lOiBzdHJpbmcgPSBcImlkXCI7XHJcbiAgQElucHV0KCdpZGVudGlmaWNhdG9ySW1hZ2VzQ29sbGVjdGlvblZhbHVlJykgaWRlbnRpZmljYXRvclZhbHVlOiBhbnkgPSAwO1xyXG4gIEBJbnB1dCgnaW1hZ2VVcGxvYWRDb25maWcnKSBpbWFnZVVwbG9hZENvbmZpZzogV0ltYWdlRmlsZVVwbG9hZGVyQ29uZmlnID0ge1xyXG4gICAgaW1hZ2VQcm9wZXJ0eU5hbWVzOiBbXSxcclxuICAgIGFjY2VwdEltYWdlVHlwZXM6IFwiaW1hZ2UvKlwiLFxyXG4gICAgbWF4SW1hZ2VTaXplOiAxMDAwMDAwLFxyXG4gICAgYWxsb3dBdXRvOiBmYWxzZSxcclxuICAgIHVwbG9hZEJ1dHRvbkxhYmVsOiBcIlwiLFxyXG4gICAgY2hvb3NlQnV0dG9uTGFiZWw6IFwiXCIsXHJcbiAgICBjYW5jZWxCdXR0b25MYWJlbDogXCJcIixcclxuICAgIGNvbnRlbnRIZWFkZXJMYWJlbDogXCJcIixcclxuICAgIGNvbnRlbnRTdWJoZWFkZXJMYWJlbDogXCJcIixcclxuICAgIGRlbGV0ZUltYWdlQnV0dG9uTGFiZWw6IFwiXCIsXHJcbiAgICBjcm9wcGVkRGlhbG9nVHJhbnNsYXRpb25zOiBcIlwiLFxyXG4gICAgY3JvcHBlZEltYWdlQ29uZmlndXJhdGlvbjoge1xyXG4gICAgICByb3VuZGVkQ3JvcHBlcjogZmFsc2UsXHJcbiAgICAgIGNvbmZpZ3VyZWRBc3BlY3RSYXRpbzogNC8zLFxyXG4gICAgICB2aWV3UG9ydFdpZHRoUHg6IDQwMCxcclxuICAgICAgdmlld1BvcnRIZWlodFB4OiA1MDBcclxuICAgIH0sXHJcbiAgICBjb25maXJtRGVsZXRlTWVzc2FnZUxhYmVsOiBcIlwiLFxyXG4gICAgY29uZmlybURlbGV0ZUJ1dHRvbkxhYmVsOiBcIlwiLFxyXG4gICAgaW52YWxpZEZpbGVTaXplTWVzc2FnZVN1bW1hcnk6IFwiXCIsXHJcbiAgICBpbnZhbGlkRmlsZVNpemVNZXNzYWdlRGV0YWlsOiBcIlwiLFxyXG4gICAgaW52YWxpZEZpbGVUeXBlTWVzc2FnZVN1bW1hcnk6IFwiXCIsXHJcbiAgICBpbnZhbGlkRmlsZVR5cGVNZXNzYWdlRGV0YWlsOiBcIlwiXHJcbiAgfVxyXG4gIEBJbnB1dCgnYWN0aXZlRmllbGRWZXJzaW9uJykgYWN0aXZlRmllbGRWZXJzaW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCdsYWJlbCcpIGxhYmVsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgndG9vbHRpcCcpIHRvb2x0aXAhOiBzdHJpbmc7XHJcbiAgQElucHV0KCdyZXF1aXJlZCcpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCdjdXN0b21IZWlnaHRJbWcnKSBjdXN0b21IZWlnaHRJbWchOiBudW1iZXI7XHJcblxyXG4gIEBPdXRwdXQoJ29uVXBsb2FkRmluaXNoZWQnKSBvblVwbG9hZEZpbmlzaGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoJ29uRXJyb3JIYW5kbGVyJykgb25FcnJvckhhbmRsZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgnb25SZXR1cm5JbWFnZXNCNjQnKSBvblJldHVybkltYWdlc0I2NDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCdvbkRlbGV0ZUltYWdlJykgb25EZWxldGVJbWFnZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZmlsZVVwbG9hZCcpIGZpbGVVcGxvYWQhOiBGaWxlVXBsb2FkO1xyXG5cclxuICBAVmlld0NoaWxkcmVuKCdidXR0b25SZW1vdmVPbmx5SW1hZ2UnKSBidXR0b25SZW1vdmVPbmx5SW1hZ2UhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcbiAgQFZpZXdDaGlsZCgnZmlsZVVwbG9hZE9ubHlJbWFnZScpIGZpbGV1cGxvYWRPbmx5SW1hZ2UhOiBGaWxlVXBsb2FkO1xyXG5cclxuICBhY3RpdmVJbmRleEdhbGxlcnk6IG51bWJlciA9IDA7XHJcbiAgY3JvcHBlckltYWdlczogYW55W10gPSBbXTtcclxuICBkZWZhdWx0V2lkdGg6IHN0cmluZyA9IFwidy0xOHJlbVwiO1xyXG4gIGRlZmF1bHRIZWlnaHQ6IHN0cmluZyA9IFwiaC0xOHJlbVwiO1xyXG4gIGRpc2FibGVNb3ZlQnV0dG9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzVXBsb2FkaW5nTXVsdGlNb2RlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNEZWxldGluZ011bHRpTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBvbmx5SW1hZ2VTZWxlY3RlZDogYW55O1xyXG4gIG9ubHlDcm9wcGVkSW1hZ2VTZWxlY3RlZDogYW55ID0gbnVsbDtcclxuXHJcbiAgZGltZW5zaW9uc0lucHV0ITogV0ltYWdlQ3JvcHBlckRhdGE7XHJcbiAgY2Fyb3VzZWxJbWFnZXNSZXNwb25zaXZlT3B0aW9uczogYW55W10gPSBbXHJcbiAgICB7XHJcbiAgICAgIGJyZWFrcG9pbnQ6ICcxMDI0cHgnLFxyXG4gICAgICBudW1WaXNpYmxlOiA0LFxyXG4gICAgICBudW1TY3JvbGw6IDRcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGJyZWFrcG9pbnQ6ICc4NTBweCcsXHJcbiAgICAgIG51bVZpc2libGU6IDIsXHJcbiAgICAgIG51bVNjcm9sbDogMlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgYnJlYWtwb2ludDogJzU2MHB4JyxcclxuICAgICAgbnVtVmlzaWJsZTogMSxcclxuICAgICAgbnVtU2Nyb2xsOiAxXHJcbiAgICB9XHJcbiAgXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2VcclxuICApe31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpbWVuc2lvbnNJbnB1dCA9IHtcclxuICAgICAgcm91bmRlZENyb3BwZXI6IHRoaXMuaW1hZ2VVcGxvYWRDb25maWcuY3JvcHBlZEltYWdlQ29uZmlndXJhdGlvbi5yb3VuZGVkQ3JvcHBlcixcclxuICAgICAgY29uZmlndXJlZEFzcGVjdFJhdGlvOiB0aGlzLmltYWdlVXBsb2FkQ29uZmlnLmNyb3BwZWRJbWFnZUNvbmZpZ3VyYXRpb24uY29uZmlndXJlZEFzcGVjdFJhdGlvLFxyXG4gICAgICB2aWV3UG9ydFdpZHRoUHg6IHRoaXMuaW1hZ2VVcGxvYWRDb25maWcuY3JvcHBlZEltYWdlQ29uZmlndXJhdGlvbi52aWV3UG9ydFdpZHRoUHgsXHJcbiAgICAgIHZpZXdQb3J0SGVpaHRQeDogdGhpcy5pbWFnZVVwbG9hZENvbmZpZy5jcm9wcGVkSW1hZ2VDb25maWd1cmF0aW9uLnZpZXdQb3J0SGVpaHRQeCxcclxuICAgICAgbWF4RmlsZVNpemU6IHRoaXMuaW1hZ2VVcGxvYWRDb25maWcubWF4SW1hZ2VTaXplXHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5hY3RpdmVJbWFnZVVwbG9hZCA9PSBmYWxzZSAmJiB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZC5sZW5ndGggPiAwKXtcclxuICAgICAgdGhpcy5jcm9wcGVySW1hZ2VzLnB1c2goLi4udGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVhZFByb3BlcnR5KG9iajogYW55LCBwcm9wOnN0cmluZyk6YW55IHtcclxuICAgIGlmKHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgX2luZGV4ID0gcHJvcC5pbmRleE9mKCcuJylcclxuICAgIGlmKF9pbmRleCA+IC0xKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZFByb3BlcnR5KG9ialtwcm9wLnN1YnN0cmluZygwLCBfaW5kZXgpXSwgcHJvcC5zdWJzdHIoX2luZGV4ICsgMSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9ialtwcm9wXTtcclxuICB9XHJcblxyXG4gIG9uQ3VzdG9tVXBsb2FkU2luZ2xlTW9kZShldmVudDogYW55KXtcclxuICAgIHRoaXMub25seUltYWdlU2VsZWN0ZWQgPSBldmVudC5jdXJyZW50RmlsZXNbMF07XHJcbiAgICB0aGlzLm9wZW5Nb2RhbENyb3BwZXIodGhpcy5vbmx5SW1hZ2VTZWxlY3RlZCwgZXZlbnQub3JpZ2luYWxFdmVudCk7XHJcbiAgfVxyXG5cclxuICBvbkN1c3RvbWl6ZVVwbG9hZEZ1bmN0aW9uU2luZ2xlTW9kZShldmVudDogYW55KXtcclxuICAgIGlmKHRoaXMuYWN0aXZlSW1hZ2VVcGxvYWQgPT0gdHJ1ZSl7XHJcbiAgICAgIGlmKHRoaXMub25seUNyb3BwZWRJbWFnZVNlbGVjdGVkKXtcclxuICAgICAgICBsZXQgYmFzZTY0SW1hZ2VzOiBJbWFnZUI2NFtdID0gW3tiYXNlNjQ6IHRoaXMub25seUNyb3BwZWRJbWFnZVNlbGVjdGVkLmJhc2U2NCwgbmFtZTogdGhpcy5vbmx5Q3JvcHBlZEltYWdlU2VsZWN0ZWQubmFtZX1dO1xyXG5cclxuICAgICAgICB0aGlzLmh0dHAucG9zdCh0aGlzLnVwbG9hZFVybCwgYmFzZTY0SW1hZ2VzLCB7IGhlYWRlcnM6IHRoaXMuaGVhZGVycyB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKGltYWdlVXBsb2FkZWQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGV1cGxvYWRPbmx5SW1hZ2UuY2xlYXIoKTtcclxuICAgICAgICAgICAgdGhpcy5vblVwbG9hZEZpbmlzaGVkLmVtaXQoaW1hZ2VVcGxvYWRlZCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGV1cGxvYWRPbmx5SW1hZ2UudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMub25FcnJvckhhbmRsZXIuZW1pdChlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlSW1hZ2VTaW5nbGVNb2RlKGV2ZW50OiBFdmVudCwgZmlsZTogYW55KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuZmlsZXVwbG9hZE9ubHlJbWFnZS5jbGVhcigpO1xyXG4gICAgdGhpcy5vbmx5SW1hZ2VTZWxlY3RlZCA9IG51bGw7XHJcbiAgICB0aGlzLm9ubHlDcm9wcGVkSW1hZ2VTZWxlY3RlZCA9IG51bGw7XHJcbiAgICB0aGlzLmltYWdlU2luZ2xlTW9kZSA9IG51bGw7XHJcbiAgICB0aGlzLm9uUmV0dXJuSW1hZ2VzQjY0LmVtaXQobnVsbCk7XHJcbiAgfVxyXG5cclxuICBtb3ZlSW1hZ2VUb0xlZnQoZXZlbnQ6IGFueSl7XHJcbiAgICBsZXQgaW5kZXhUb01vdmUgPSB0aGlzLmZpbmRJbmRleChldmVudCk7XHJcbiAgICBpZihpbmRleFRvTW92ZSA+IDAgJiYgaW5kZXhUb01vdmUgPCB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZC5sZW5ndGgpe1xyXG4gICAgICBjb25zdCB0ZW1wID0gdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWRbaW5kZXhUb01vdmVdO1xyXG4gICAgICB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZFtpbmRleFRvTW92ZV0gPSB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZFsgaW5kZXhUb01vdmUgLSAxXTtcclxuICAgICAgdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWRbaW5kZXhUb01vdmUgLSAxXSA9IHRlbXA7XHJcblxyXG4gICAgICB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZCA9ICh0aGlzLmFjdGl2ZVBvc2l0aW9uUHJvcGVydHkpID8gdGhpcy5hZGRQb3NpdGlvblByb3BlcnR5KHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkKSA6IHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkO1xyXG4gICAgICB0aGlzLmFjdGl2ZUluZGV4R2FsbGVyeSA9IGluZGV4VG9Nb3ZlIC0gMTtcclxuXHJcbiAgICAgIGlmKHRoaXMudXBsb2FkVXJsICE9IHVuZGVmaW5lZCAmJiB0aGlzLmlkZW50aWZpY2F0b3JWYWx1ZSAhPT0gMCl7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlTW92ZUJ1dHRvbnMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudXBkYXRlSW1hZ2UodGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQpO1xyXG4gICAgICB9ZWxzZSBpZih0aGlzLmFjdGl2ZUltYWdlVXBsb2FkID09IHRydWUgJiYgdGhpcy51cGxvYWRVcmwgIT0gdW5kZWZpbmVkKXtcclxuICAgICAgICB0aGlzLm9uVXBsb2FkRmluaXNoZWQuZW1pdCh0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZCk7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMub25SZXR1cm5JbWFnZXNCNjQuZW1pdCh0aGlzLmdldEFycmF5c1RvQ3JlYXRlQW5kVG9VcGRhdGUodGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbW92ZUltYWdlVG9SaWdodChldmVudDogYW55KXtcclxuICAgIGxldCBpbmRleFRvTW92ZSA9IHRoaXMuZmluZEluZGV4KGV2ZW50KTtcclxuICAgIGlmKGluZGV4VG9Nb3ZlID49IDAgJiYgaW5kZXhUb01vdmUgPCB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZC5sZW5ndGggLTEpe1xyXG4gICAgICBjb25zdCB0ZW1wID0gdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWRbaW5kZXhUb01vdmVdO1xyXG4gICAgICB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZFtpbmRleFRvTW92ZV0gPSB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZFsgaW5kZXhUb01vdmUgKyAxXTtcclxuICAgICAgdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWRbaW5kZXhUb01vdmUgKyAxXSA9IHRlbXA7XHJcblxyXG4gICAgICB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZCA9ICh0aGlzLmFjdGl2ZVBvc2l0aW9uUHJvcGVydHkpID8gdGhpcy5hZGRQb3NpdGlvblByb3BlcnR5KHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkKSA6IHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkO1xyXG4gICAgICB0aGlzLmFjdGl2ZUluZGV4R2FsbGVyeSA9IGluZGV4VG9Nb3ZlICsgMTtcclxuXHJcbiAgICAgIGlmKHRoaXMudXBsb2FkVXJsIT11bmRlZmluZWQgJiYgdGhpcy5pZGVudGlmaWNhdG9yVmFsdWUgIT09IDApe1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZU1vdmVCdXR0b25zID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUltYWdlKHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkKTtcclxuICAgICAgfWVsc2UgaWYodGhpcy5hY3RpdmVJbWFnZVVwbG9hZCA9PSB0cnVlICYmIHRoaXMudXBsb2FkVXJsICE9IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgdGhpcy5vblVwbG9hZEZpbmlzaGVkLmVtaXQodGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLm9uUmV0dXJuSW1hZ2VzQjY0LmVtaXQodGhpcy5nZXRBcnJheXNUb0NyZWF0ZUFuZFRvVXBkYXRlKHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ3VzdG9taXplVXBsb2FkRnVuY3Rpb25NdWx0aU1vZGUoZXZlbnQ/OiBhbnkpe1xyXG4gICAgaWYodGhpcy5hY3RpdmVJbWFnZVVwbG9hZCA9PSB0cnVlKXtcclxuICAgICAgaWYodGhpcy5jcm9wcGVySW1hZ2VzLmxlbmd0aCA+IDApe1xyXG4gICAgICAgIGxldCBiYXNlNjRJbWFnZXM6IEltYWdlQjY0W10gPSB0aGlzLm1hcFRvT2JqZWN0QjY0KHRoaXMuY3JvcHBlckltYWdlcyk7XHJcbiAgICAgICAgdGhpcy5pc1VwbG9hZGluZ011bHRpTW9kZSA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuaHR0cC5wb3N0KHRoaXMudXBsb2FkVXJsLCBiYXNlNjRJbWFnZXMsIHsgaGVhZGVyczogdGhpcy5oZWFkZXJzIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAgKGltYWdlc1VwbG9hZGVkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQucHVzaCguLi5pbWFnZXNVcGxvYWRlZCk7XHJcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkID0gWy4uLnRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkXTtcclxuXHJcbiAgICAgICAgICAgIGlmKHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkLmxlbmd0aCA9PSAxKXtcclxuICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4R2FsbGVyeSA9IDA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuY3JvcHBlckltYWdlcyA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWQuY2xlYXIoKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkID0gdGhpcy5hY3RpdmVQb3NpdGlvblByb3BlcnR5ID8gdGhpcy5hZGRQb3NpdGlvblByb3BlcnR5KHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkKSA6IHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkO1xyXG5cclxuICAgICAgICAgICAgaWYodGhpcy51cGxvYWRVcmwhPXVuZGVmaW5lZCAmJiB0aGlzLmlkZW50aWZpY2F0b3JWYWx1ZSAhPT0gMCl7XHJcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVJbWFnZSh0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZCk7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgIHRoaXMub25VcGxvYWRGaW5pc2hlZC5lbWl0KHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5pc1VwbG9hZGluZ011bHRpTW9kZSA9IGZhbHNlO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pc1VwbG9hZGluZ011bHRpTW9kZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm9uRXJyb3JIYW5kbGVyLmVtaXQoZXJyb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ3VzdG9tVXBsb2FkTXVsdGlNb2RlKGV2ZW50OiBhbnkpe1xyXG4gICAgaWYodGhpcy5hbGxvd011bHRpcGxlSW1hZ2VzID09IHRydWUpe1xyXG4gICAgICBldmVudC5jdXJyZW50RmlsZXMuZm9yRWFjaCgoZmlsZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgbGV0IGZvdW5kSXQgPSB0aGlzLmNyb3BwZXJJbWFnZXMuZmluZChmID0+IGYubmFtZSA9PSBmaWxlLm5hbWUpO1xyXG4gICAgICAgIGlmKGV2ZW50LmN1cnJlbnRGaWxlcy5sZW5ndGggPT0gMCl7XHJcbiAgICAgICAgICB0aGlzLm9wZW5Nb2RhbENyb3BwZXIoZmlsZSwgZXZlbnQub3JpZ2luYWxFdmVudCk7XHJcbiAgICAgICAgfWVsc2UgaWYoZm91bmRJdCA9PSB1bmRlZmluZWQpe1xyXG4gICAgICAgICAgdGhpcy5vcGVuTW9kYWxDcm9wcGVyKGZpbGUsIGV2ZW50Lm9yaWdpbmFsRXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5vcGVuTW9kYWxDcm9wcGVyKGV2ZW50LmN1cnJlbnRGaWxlc1swXSwgZXZlbnQub3JpZ2luYWxFdmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25maXJtRGVsZXRlSW1hZ2VNdWx0aU1vZGUoZXZlbnQ6IGFueSwgaW1hZ2U6IGFueSl7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgIHRhcmdldDogZXZlbnQudGFyZ2V0IGFzIEV2ZW50VGFyZ2V0LFxyXG4gICAgICBtZXNzYWdlOiB0aGlzLmltYWdlVXBsb2FkQ29uZmlnLmNvbmZpcm1EZWxldGVNZXNzYWdlTGFiZWwsXHJcbiAgICAgIGljb246IFwicGkgcGktZXhjbGFtYXRpb24tdHJpYW5nbGVcIixcclxuICAgICAgYWNjZXB0TGFiZWw6IHRoaXMuaW1hZ2VVcGxvYWRDb25maWcuZGVsZXRlSW1hZ2VCdXR0b25MYWJlbCxcclxuICAgICAgYWNjZXB0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5vbkRlbGV0ZUltYWdlTXVsdGlNb2RlKGltYWdlKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG9uRGVsZXRlRmlsZU11bHRpTW9kZShldmVudDogYW55LCBmaWxlOiBGaWxlLCB1cGxvYWRlcjogRmlsZVVwbG9hZCl7XHJcbiAgICBjb25zdCBpbmRleCA9IHVwbG9hZGVyLmZpbGVzLmluZGV4T2YoZmlsZSk7XHJcbiAgICB1cGxvYWRlci5yZW1vdmUoZXZlbnQsIGluZGV4KTtcclxuICAgIHRoaXMuY3JvcHBlckltYWdlcyA9IHRoaXMuY3JvcHBlckltYWdlcy5maWx0ZXIocyA9PiAhZmlsZS5uYW1lLmluY2x1ZGVzKHMubmFtZSkpO1xyXG4gIH1cclxuXHJcbiAgb25EZWxldGVJbWFnZU11bHRpTW9kZShpbWFnZTogYW55KXtcclxuICAgIHRoaXMuaXNEZWxldGluZ011bHRpTW9kZSA9IHRydWU7XHJcbiAgICBpZih0aGlzLmFjdGl2ZUltYWdlVXBsb2FkKXtcclxuICAgICAgbGV0IGRlbGV0ZVVybEZpbmFsID0gdGhpcy5kZWxldGVVcmwrXCIvXCIraW1hZ2VbdGhpcy5pZGVudGlmaWNhdG9yTmFtZV07XHJcbiAgICAgIHRoaXMuaHR0cC5kZWxldGUoZGVsZXRlVXJsRmluYWwsIHtoZWFkZXJzOiB0aGlzLmhlYWRlcnN9KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZ2V0SW5kZXhUb0RlbGV0ZShpbWFnZSk7XHJcbiAgICAgICAgICB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZCA9IHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkLmZpbHRlcihpbWcgPT4gKGltZy5iYXNlNjQgIT09IGltYWdlLmJhc2U2NCkgfHwgKGltZ1t0aGlzLmlkZW50aWZpY2F0b3JOYW1lXSAhPT0gaW1hZ2VbdGhpcy5pZGVudGlmaWNhdG9yTmFtZV0pKTtcclxuICAgICAgICAgIHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkID0gWy4uLnRoaXMuYWN0aXZlUG9zaXRpb25Qcm9wZXJ0eSA/IHRoaXMuYWRkUG9zaXRpb25Qcm9wZXJ0eSh0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZCkgOiB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZF07XHJcbiAgICAgICAgICB0aGlzLmlzRGVsZXRpbmdNdWx0aU1vZGUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMub25EZWxldGVJbWFnZS5lbWl0KHtkZWxldGVkSW1hZ2U6IGltYWdlLCBpbWFnZXM6IHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzRGVsZXRpbmdNdWx0aU1vZGUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMub25FcnJvckhhbmRsZXIuZW1pdChlcnJvcik7XHJcbiAgICAgICAgICB0aGlzLm9uRGVsZXRlSW1hZ2UuZW1pdChudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5nZXRJbmRleFRvRGVsZXRlKGltYWdlKTtcclxuICAgICAgdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQgPSB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZC5maWx0ZXIoaW1nID0+IChpbWcuYmFzZTY0ICE9PSBpbWFnZS5iYXNlNjQpIHx8IChpbWdbdGhpcy5pZGVudGlmaWNhdG9yTmFtZV0gIT09IGltYWdlW3RoaXMuaWRlbnRpZmljYXRvck5hbWVdKSk7XHJcbiAgICAgIHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkID0gWy4uLnRoaXMuYWN0aXZlUG9zaXRpb25Qcm9wZXJ0eSA/IHRoaXMuYWRkUG9zaXRpb25Qcm9wZXJ0eSh0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZCkgOiB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZF07XHJcbiAgICAgIHRoaXMuY3JvcHBlckltYWdlcyA9IHRoaXMuY3JvcHBlckltYWdlcy5maWx0ZXIoaW1nID0+IChpbWcuZmlsZUJhc2U2NCAhPT0gaW1hZ2UuYmFzZTY0KSB8fCAoaW1nW3RoaXMuaWRlbnRpZmljYXRvck5hbWVdICE9PSBpbWFnZVt0aGlzLmlkZW50aWZpY2F0b3JOYW1lXSkpO1xyXG4gICAgICB0aGlzLm9uRGVsZXRlSW1hZ2UuZW1pdCh7ZGVsZXRlZEltYWdlOiBpbWFnZSwgaW1hZ2VzOiB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZH0pO1xyXG4gICAgICB0aGlzLmlzRGVsZXRpbmdNdWx0aU1vZGUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEluZGV4VG9EZWxldGUoaW1hZ2U6IGFueSl7XHJcbiAgICBsZXQgaW1hZ2VJbmRleCA9IHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkLmZpbmRJbmRleChpbWcgPT4ge1xyXG4gICAgICBpZigoaW1nLmJhc2U2NCAhPSB1bmRlZmluZWQpKXtcclxuICAgICAgICBpZihpbWcuYmFzZTY0ID09IGltYWdlLmJhc2U2NCl7XHJcbiAgICAgICAgICByZXR1cm4gaW1nLmluZGV4O1xyXG4gICAgICAgIH1cclxuICAgICAgfWVsc2UgaWYoaW1nW3RoaXMuaWRlbnRpZmljYXRvck5hbWVdICE9PSBpbWFnZVt0aGlzLmlkZW50aWZpY2F0b3JOYW1lXSl7XHJcbiAgICAgICAgcmV0dXJuIGltZy5pbmRleDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gLTE7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZihpbWFnZUluZGV4KzEgPT0gdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQubGVuZ3RoKXtcclxuICAgICAgdGhpcy5hY3RpdmVJbmRleEdhbGxlcnkgPSBpbWFnZUluZGV4LTE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVJbWFnZShpbWFnZXNUb1VwZGF0ZTogYW55W10pOiBhbnl7XHJcbiAgICBsZXQgdXBkYXRlVXJsRmluYWwgPSB0aGlzLnVwZGF0ZVVybCArIFwiL1wiICsgdGhpcy5pZGVudGlmaWNhdG9yVmFsdWU7XHJcbiAgICB0aGlzLmh0dHAucHV0KHVwZGF0ZVVybEZpbmFsLCBpbWFnZXNUb1VwZGF0ZSwge2hlYWRlcnM6IHRoaXMuaGVhZGVyc30pLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChpbWFnZXNVcGRhdGVkOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmRpc2FibGVNb3ZlQnV0dG9ucyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaW1hZ2VzQWxyZWFkeVVwbG9hZGVkID0gaW1hZ2VzVXBkYXRlZDtcclxuICAgICAgICB0aGlzLm9uVXBsb2FkRmluaXNoZWQuZW1pdCh0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb3Blbk1vZGFsQ3JvcHBlcihmaWxlQmxvYjogYW55LCBldmVudD86IGFueSl7XHJcbiAgICBjb25zdCByZWY6IER5bmFtaWNEaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihXSW1hZ2VDcm9wcGVyQ29tcG9uZW50LCB7XHJcbiAgICAgIGhlYWRlcjogdGhpcy5pbWFnZVVwbG9hZENvbmZpZy5jcm9wcGVkRGlhbG9nVHJhbnNsYXRpb25zPy5tb2RhbC5oZWFkZXIsXHJcbiAgICAgIHdpZHRoOiAnNzByZW0nLFxyXG4gICAgICBjb250ZW50U3R5bGU6IHtcIm92ZXJmbG93XCI6IFwiYXV0b1wiLCBcImhlaWdodFwiOiBcImF1dG9cIiwgXCJwYWRkaW5nLWJvdHRvbVwiOiBcIjhweFwifSxcclxuICAgICAgZGF0YToge2RhdGFNb2RhbDogdGhpcy5kaW1lbnNpb25zSW5wdXQsIHRyYW5zbGF0aW9uczogdGhpcy5pbWFnZVVwbG9hZENvbmZpZy5jcm9wcGVkRGlhbG9nVHJhbnNsYXRpb25zLCBibG9iOiBmaWxlQmxvYn0sXHJcbiAgICAgIHJlc2l6YWJsZTogdHJ1ZVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKChpbWFnZUNyb3BwZWQ6IFdGaWxlQjY0KSA9PiB7XHJcbiAgICAgIGlmKGltYWdlQ3JvcHBlZCl7XHJcbiAgICAgICAgaWYodGhpcy5hbGxvd011bHRpcGxlSW1hZ2VzID09IGZhbHNlKXtcclxuICAgICAgICAgIHRoaXMub25seUNyb3BwZWRJbWFnZVNlbGVjdGVkID0gaW1hZ2VDcm9wcGVkO1xyXG4gICAgICAgICAgdGhpcy5vblJldHVybkltYWdlc0I2NC5lbWl0KHRoaXMubWFwVG9PYmplY3RCNjQodGhpcy5vbmx5Q3JvcHBlZEltYWdlU2VsZWN0ZWQpKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMuY3JvcHBlckltYWdlcy5wdXNoKGltYWdlQ3JvcHBlZCk7XHJcblxyXG4gICAgICAgICAgdGhpcy5jcm9wcGVySW1hZ2VzID0gKHRoaXMuYWN0aXZlUG9zaXRpb25Qcm9wZXJ0eSAmJiB0aGlzLmFjdGl2ZUltYWdlVXBsb2FkID09IGZhbHNlICkgPyB0aGlzLmFkZFBvc2l0aW9uUHJvcGVydHkodGhpcy5jcm9wcGVySW1hZ2VzKSA6IHRoaXMuY3JvcHBlckltYWdlcztcclxuXHJcbiAgICAgICAgICBpZih0aGlzLmFjdGl2ZUltYWdlVXBsb2FkID09IGZhbHNlKXtcclxuICAgICAgICAgICAgdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQucHVzaChpbWFnZUNyb3BwZWQpO1xyXG4gICAgICAgICAgICB0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZCA9IFsuLi50aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZF07XHJcblxyXG4gICAgICAgICAgICBpZih0aGlzLmltYWdlc0FscmVhZHlVcGxvYWRlZC5sZW5ndGggPT0gMSl7XHJcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmVJbmRleEdhbGxlcnkgPSAwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLm9uUmV0dXJuSW1hZ2VzQjY0LmVtaXQodGhpcy5nZXRBcnJheXNUb0NyZWF0ZUFuZFRvVXBkYXRlKHRoaXMuY3JvcHBlckltYWdlcykpO1xyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMub25SZXR1cm5JbWFnZXNCNjQuZW1pdCh0aGlzLmdldEFycmF5c1RvQ3JlYXRlQW5kVG9VcGRhdGUodGhpcy5tYXBUb09iamVjdEI2NCh0aGlzLmNyb3BwZXJJbWFnZXMpKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBpZih0aGlzLmFsbG93TXVsdGlwbGVJbWFnZXMpe1xyXG4gICAgICAgICAgdGhpcy5maWxlVXBsb2FkLl9maWxlcyA9IHRoaXMuZmlsZVVwbG9hZC5fZmlsZXMuZmlsdGVyKGYgPT4gIWYubmFtZS5pbmNsdWRlcyhmaWxlQmxvYi5uYW1lKSk7XHJcbiAgICAgICAgICBsZXQgZmlsZXNBdXggPSB0aGlzLmZpbGVVcGxvYWQuX2ZpbGVzO1xyXG4gICAgICAgICAgdGhpcy5maWxlVXBsb2FkLmNsZWFyKCk7XHJcbiAgICAgICAgICB0aGlzLmZpbGVVcGxvYWQuX2ZpbGVzID0gZmlsZXNBdXg7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLm9ubHlJbWFnZVNlbGVjdGVkID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuZmlsZXVwbG9hZE9ubHlJbWFnZS5jbGVhcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYoKHRoaXMuYWN0aXZlSW1hZ2VVcGxvYWQgPT0gdHJ1ZSkgJiYgKHRoaXMuaW1hZ2VVcGxvYWRDb25maWcuYWxsb3dBdXRvID09IHRydWUpICYmICh0aGlzLmNyb3BwZXJJbWFnZXMubGVuZ3RoID09IHRoaXMuZmlsZVVwbG9hZC5fZmlsZXMubGVuZ3RoKSl7XHJcbiAgICAgICAgdGhpcy5vbkN1c3RvbWl6ZVVwbG9hZEZ1bmN0aW9uTXVsdGlNb2RlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBtYXBUb09iamVjdEI2NChpbWFnZXM6IGFueSk6IEltYWdlQjY0W117XHJcbiAgICBpZihBcnJheS5pc0FycmF5KGltYWdlcykgPT0gZmFsc2Upe1xyXG4gICAgICByZXR1cm4gIFt7XHJcbiAgICAgICAgYmFzZTY0OiBpbWFnZXMuYmFzZTY0LFxyXG4gICAgICAgIG5hbWU6IGltYWdlcy5uYW1lLFxyXG4gICAgICAgIC4uLihpbWFnZXMucG9zaXRpb24gIT09IHVuZGVmaW5lZCAmJiB7IHBvc2l0aW9uOiBpbWFnZXMucG9zaXRpb24gfSlcclxuICAgICAgfV1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaW1hZ2VzLm1hcCgoaW1nOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuICB7XHJcbiAgICAgICAgYmFzZTY0OiBpbWcuYmFzZTY0LFxyXG4gICAgICAgIG5hbWU6IGltZy5uYW1lLFxyXG4gICAgICAgIC4uLihpbWcucG9zaXRpb24gIT09IHVuZGVmaW5lZCAmJiB7IHBvc2l0aW9uOiBpbWcucG9zaXRpb24gfSlcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBcnJheXNUb0NyZWF0ZUFuZFRvVXBkYXRlKGltYWdlczogYW55W10pe1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdG9DcmVhdGU6XHJcbiAgICAgICAgaW1hZ2VzLmZpbHRlcigoaW1nKSA9PiBpbWdbdGhpcy5pZGVudGlmaWNhdG9yTmFtZV0gPT0gdW5kZWZpbmVkKSxcclxuICAgICAgdG9VcGRhdGVkOlxyXG4gICAgICAgIGltYWdlcy5maWx0ZXIoKGltZykgPT4gaW1nLmJhc2U2NCA9PSB1bmRlZmluZWQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRQb3NpdGlvblByb3BlcnR5KGltYWdlc0FycmF5OiBhbnlbXSl7XHJcbiAgICBpbWFnZXNBcnJheSA9IGltYWdlc0FycmF5Lm1hcCgoaW1nLCBpbmRleCkgPT4gKHtcclxuICAgICAgLi4uaW1nLFxyXG4gICAgICBwb3NpdGlvbjogaW5kZXhcclxuICAgIH0pKVxyXG5cclxuICAgIHJldHVybiBpbWFnZXNBcnJheTtcclxuICB9XHJcblxyXG4gIG9uSW1hZ2VNb3VzZU92ZXIoZmlsZTogYW55KSB7XHJcbiAgICB0aGlzLmJ1dHRvblJlbW92ZU9ubHlJbWFnZS50b0FycmF5KCkuZm9yRWFjaChidG5SZW1vdmUgPT4ge1xyXG4gICAgICAgIGJ0blJlbW92ZS5uYXRpdmVFbGVtZW50LmlkID09PSBmaWxlLm5hbWUgPyBidG5SZW1vdmUubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnIDogbnVsbDtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvbkltYWdlTW91c2VMZWF2ZShmaWxlOiBhbnkpIHtcclxuICAgIHRoaXMuYnV0dG9uUmVtb3ZlT25seUltYWdlLnRvQXJyYXkoKS5mb3JFYWNoKGJ0blJlbW92ZSA9PiB7XHJcbiAgICAgICAgYnRuUmVtb3ZlLm5hdGl2ZUVsZW1lbnQuaWQgPT09IGZpbGUubmFtZSA/IGJ0blJlbW92ZS5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZScgOiBudWxsO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGZpbmRJbmRleChpbWc6IGFueSl7XHJcbiAgICByZXR1cm4gdGhpcy5pbWFnZXNBbHJlYWR5VXBsb2FkZWQuaW5kZXhPZihpbWcpO1xyXG4gIH1cclxuXHJcbiAgb3BlbkltYWdlRmlsZVNlbGVjdG9yKCl7XHJcbiAgICB0aGlzLmZpbGVVcGxvYWQuY2hvb3NlKCk7XHJcbiAgfVxyXG5cclxuICBvcGVuU2luZ2xlSW1hZ2VGaWxlU2VsZWN0b3IoKXtcclxuICAgIHRoaXMuZmlsZXVwbG9hZE9ubHlJbWFnZS5jaG9vc2UoKTtcclxuICB9XHJcblxyXG4gIGdldEdhbGxlcnlDbGFzcygpe1xyXG4gICAgaWYodGhpcy5hY3RpdmVGaWVsZFZlcnNpb24gPT0gdHJ1ZSl7XHJcbiAgICAgIHJldHVybiAndy1pbWFnZS1maWxlLXVwbG9hZGVyLWdhbGxlcnktZmllbGQnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICd3LWltYWdlLWZpbGUtdXBsb2FkZXItZ2FsbGVyeSc7XHJcbiAgfVxyXG59XHJcbiIsIlxyXG48dy1pbnB1dC1sYWJlbCAqbmdJZj1cImFjdGl2ZUZpZWxkVmVyc2lvbiA9PSB0cnVlXCIgW2xhYmVsXT1cImxhYmVsXCIgW3Rvb2x0aXBdPVwidG9vbHRpcFwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiPjwvdy1pbnB1dC1sYWJlbD5cclxuPGRpdiAqbmdJZj1cImFjdGl2ZUZpZWxkVmVyc2lvbiA9PSB0cnVlICYmIChsYWJlbCAhPSB1bmRlZmluZWQgJiYgbGFiZWwubGVuZ3RoID4gMClcIiBjbGFzcz1cImlucHV0LWxhYmVsLWdhcC1kaXZpZGVyXCI+PC9kaXY+XHJcbjxwLWZpbGVVcGxvYWQgKm5nSWY9XCJhbGxvd011bHRpcGxlSW1hZ2VzID09IGZhbHNlOyBlbHNlIHdpdGhDYXJvdXNlbFwiICNmaWxlVXBsb2FkT25seUltYWdlIGNsYXNzPVwidy1pbWFnZS1maWxlLWJ1dHRvblwiXHJcbiAgICBbbmdDbGFzc109XCJ7J3ctaW1hZ2UtZmlsZS11cGxvYWRlcicgOiBhY3RpdmVGaWVsZFZlcnNpb24gPT0gZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAndy1pbWFnZS1maWxlLXVwbG9hZGVyLWZpZWxkJyA6IGFjdGl2ZUZpZWxkVmVyc2lvbiA9PSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgJ3ctaW1hZ2UtZmlsZS11cGxvYWRlci1maWVsZC1uby1pbWFnZScgOiBhY3RpdmVGaWVsZFZlcnNpb24gPT0gdHJ1ZSAmJiAob25seUNyb3BwZWRJbWFnZVNlbGVjdGVkID09IG51bGwgfHwgdW5kZWZpbmVkICkgJiYgKGltYWdlU2luZ2xlTW9kZSA9PSBudWxsIHx8IHVuZGVmaW5lZCl9XCJcclxuICAgIG1vZGU9XCJhZHZhbmNlZFwiXHJcbiAgICBbYWNjZXB0XT1cImltYWdlVXBsb2FkQ29uZmlnLmFjY2VwdEltYWdlVHlwZXNcIlxyXG4gICAgW211bHRpcGxlXT1cImZhbHNlXCJcclxuICAgIFtpbnZhbGlkRmlsZVNpemVNZXNzYWdlU3VtbWFyeV09XCJpbWFnZVVwbG9hZENvbmZpZy5pbnZhbGlkRmlsZVNpemVNZXNzYWdlU3VtbWFyeSArICc6J1wiXHJcbiAgICBbaW52YWxpZEZpbGVTaXplTWVzc2FnZURldGFpbF09XCJpbWFnZVVwbG9hZENvbmZpZy5pbnZhbGlkRmlsZVNpemVNZXNzYWdlRGV0YWlsICsgJyB7MH0gYnl0ZXMuJ1wiXHJcbiAgICBbaW52YWxpZEZpbGVUeXBlTWVzc2FnZVN1bW1hcnldPVwiaW1hZ2VVcGxvYWRDb25maWcuaW52YWxpZEZpbGVUeXBlTWVzc2FnZVN1bW1hcnkgKyAnOidcIlxyXG4gICAgW2ludmFsaWRGaWxlVHlwZU1lc3NhZ2VEZXRhaWxdPVwiaW1hZ2VVcGxvYWRDb25maWcuaW52YWxpZEZpbGVUeXBlTWVzc2FnZURldGFpbCArICc6IHswfS4nXCJcclxuICAgIChvblNlbGVjdCk9XCJvbkN1c3RvbVVwbG9hZFNpbmdsZU1vZGUoJGV2ZW50KVwiXHJcbiAgICBbdXBsb2FkTGFiZWxdPVwib25seUNyb3BwZWRJbWFnZVNlbGVjdGVkID8gKG9ubHlDcm9wcGVkSW1hZ2VTZWxlY3RlZC5uYW1lLmxlbmd0aD42KT8gKG9ubHlDcm9wcGVkSW1hZ2VTZWxlY3RlZC5uYW1lIHwgc2xpY2U6MDo2KSsnLi4uJzoob25seUNyb3BwZWRJbWFnZVNlbGVjdGVkLm5hbWUpIDogJydcIlxyXG4gICAgW2N1c3RvbVVwbG9hZF09XCJ0cnVlXCJcclxuICAgICh1cGxvYWRIYW5kbGVyKT1cIm9uQ3VzdG9taXplVXBsb2FkRnVuY3Rpb25TaW5nbGVNb2RlKCRldmVudClcIlxyXG4gICAgW21heEZpbGVTaXplXT1cImltYWdlVXBsb2FkQ29uZmlnLm1heEltYWdlU2l6ZVwiPlxyXG4gICAgPG5nLXRlbXBsYXRlIGxldC1maWxlIGxldC1pPVwiaW5kZXhcIiBwVGVtcGxhdGU9J2ZpbGUnPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJhY3RpdmVJbWFnZVVwbG9hZFwiPjwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjb250ZW50XCI+XHJcbiAgICAgICAgPHAtcHJvZ3Jlc3NCYXIgKm5nSWY9XCJmYWxzZVwiPjwvcC1wcm9ncmVzc0Jhcj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiKG9ubHlDcm9wcGVkSW1hZ2VTZWxlY3RlZCAhPSBudWxsIHx8IHVuZGVmaW5lZCkgfHwgKGltYWdlU2luZ2xlTW9kZSAhPSBudWxsIHx8IHVuZGVmaW5lZClcIiBzdHlsZT1cImZsZXgtZ3JvdzogMTtcIj5cclxuICAgICAgICAgICAgPHAtZ2FsbGVyaWFcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldEdhbGxlcnlDbGFzcygpXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCIob25seUNyb3BwZWRJbWFnZVNlbGVjdGVkICE9PSBudWxsKSA/IFtvbmx5Q3JvcHBlZEltYWdlU2VsZWN0ZWQuZmlsZUJhc2U2NF0gOiAoaW1hZ2VVcGxvYWRDb25maWcuc2luZ2xlTW9kZUltYWdlRGVmYXVsdCA/IFtpbWFnZVVwbG9hZENvbmZpZy5zaW5nbGVNb2RlSW1hZ2VEZWZhdWx0XSA6IChpbWFnZVNpbmdsZU1vZGUgPyBbaW1hZ2VTaW5nbGVNb2RlXSA6IFsnaHR0cHM6Ly93YXBwaW5nc3RvcmFnZWRldi5ibG9iLmNvcmUud2luZG93cy5uZXQvd2FwcGluZy9hcHByZXNvdXJjZXMvaWNfaW1hZ2VfYmx1ZS5wbmcnXSkpXCJcclxuICAgICAgICAgICAgICAgIFtyZXNwb25zaXZlT3B0aW9uc109XCJjYXJvdXNlbEltYWdlc1Jlc3BvbnNpdmVPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgIFtjb250YWluZXJTdHlsZV09XCJ7ICdtYXgtd2lkdGgnOiAnMTAwJScsICdtYXgtaGVpZ2h0JzonMTAwJSd9XCJcclxuICAgICAgICAgICAgICAgIFtudW1WaXNpYmxlXT1cIjJcIlxyXG4gICAgICAgICAgICAgICAgW3Nob3dJdGVtTmF2aWdhdG9yc109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBbc2hvd1RodW1ibmFpbHNdPVwiZmFsc2VcIiBbc2hvd0luZGljYXRvcnNdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJpdGVtXCIgbGV0LWltYWdlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIodmlld1NpbmdsZU1vZGUgPT0gZmFsc2UgJiYgKGltYWdlU2luZ2xlTW9kZSAhPSBudWxsIHx8IHVuZGVmaW5lZCkpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZpZXdTaW5nbGVNb2RlID09IGZhbHNlICYmIG9ubHlDcm9wcGVkSW1hZ2VTZWxlY3RlZCAhPSBudWxsKVwiIGNsYXNzPVwidy1pbWFnZS1maWxlLXVwbG9hZGVyLWRlbGV0ZS1idXR0b24gZmxleCBhbGlnbi1jb250ZW50LWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHctYnV0dG9uIGJ1dHRvbkNsYXNzPVwidy1pbWFnZS1maWxlLXVwbG9hZGVyLWRlbGV0ZS1idXR0b24taWNvblwiIGljb249XCJwaSBwaS10cmFzaFwiIHR5cGU9XCJ0ZXh0XCIgKGNsaWNrKT1cInJlbW92ZUltYWdlU2luZ2xlTW9kZSgkZXZlbnQsIG9ubHlJbWFnZVNlbGVjdGVkKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGFsaWduLWNvbnRlbnQtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBbbmdDbGFzc109XCJ7J3ctaW1hZ2UtZmlsZS11cGxvYWRlci1maWVsZC1pbWctY29udGFpbmVyJzogYWN0aXZlRmllbGRWZXJzaW9ufVwiIHN0eWxlPVwib2JqZWN0LWZpdDogY29udGFpbjtcIiBbbmdTdHlsZV09XCJ7J2hlaWdodCc6IGN1c3RvbUhlaWdodEltZyA/IGN1c3RvbUhlaWdodEltZyArICdweCcgOiAnYXV0byd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZVwiIHN0eWxlPVwibWF4LXdpZHRoOjEwMCU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6MTAwJTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDphdXRvO1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3AtZ2FsbGVyaWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInZpZXdTaW5nbGVNb2RlID09IGZhbHNlOyBlbHNlIHZpZXdTaW5nbGVNb2RlTWVzc2FnZVwiIChjbGljayk9XCJvcGVuU2luZ2xlSW1hZ2VGaWxlU2VsZWN0b3IoKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidy1pbWFnZS1maWxlLXVwbG9hZGVyLXNwYWNlLWNvbnRhaW5lciBmbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7IGdhcDogNnB4O1wiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsndy1pbWFnZS1maWxlLXVwbG9hZGVyLWNvbnRhaW5lci1oZWlnaHQnIDogKG9ubHlDcm9wcGVkSW1hZ2VTZWxlY3RlZCA9PSBudWxsIHx8IHVuZGVmaW5lZCApICYmIChpbWFnZVNpbmdsZU1vZGUgPT0gbnVsbCB8fCB1bmRlZmluZWQpICYmIGFjdGl2ZUZpZWxkVmVyc2lvbiA9PSBmYWxzZSwgJ3ctaW1hZ2UtZmlsZS11cGxvYWRlci1maWVsZC1jb250YWluZXItaGVpZ2h0JyA6IGFjdGl2ZUZpZWxkVmVyc2lvbiA9PSB0cnVlICYmIChvbmx5Q3JvcHBlZEltYWdlU2VsZWN0ZWQgPT0gbnVsbCB8fCB1bmRlZmluZWQgKSAmJiAoaW1hZ2VTaW5nbGVNb2RlID09IG51bGwgfHwgdW5kZWZpbmVkKX1cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwaSBwaS11cGxvYWQgc3VidGl0bGUxIHRleHRNYWluQ29sb3JcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VidGl0bGUxIHRleHRNYWluQ29sb3IgbS0yXCI+XHJcbiAgICAgICAgICAgICAgICB7e2ltYWdlVXBsb2FkQ29uZmlnLmNvbnRlbnRIZWFkZXJMYWJlbH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI3ZpZXdTaW5nbGVNb2RlTWVzc2FnZT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImltYWdlU2luZ2xlTW9kZSA9PSBudWxsIHx8IHVuZGVmaW5lZFwiIGNsYXNzPVwidGV4dFNvZnRDb2xvciBmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHctaW1hZ2UtZmlsZS11cGxvYWRlci1jb250YWluZXItaGVpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICB7e2ltYWdlVXBsb2FkQ29uZmlnLnZpZXdNb2RlY29udGVudExhYmVsfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvcC1maWxlVXBsb2FkPlxyXG48bmctdGVtcGxhdGUgI3dpdGhDYXJvdXNlbD5cclxuICAgIDxwLWZpbGVVcGxvYWQgKm5nSWY9XCJpbWFnZVVwbG9hZENvbmZpZ1wiICNmaWxlVXBsb2FkIGNsYXNzPVwidy1pbWFnZS1maWxlLWJ1dHRvblwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyd3LWltYWdlLWZpbGUtdXBsb2FkZXInIDogYWN0aXZlRmllbGRWZXJzaW9uID09IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICd3LWltYWdlLWZpbGUtdXBsb2FkZXItZmllbGQnIDogYWN0aXZlRmllbGRWZXJzaW9uID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgJ3ctaW1hZ2UtZmlsZS11cGxvYWRlci1maWVsZC1uby1pbWFnZScgOiBhY3RpdmVGaWVsZFZlcnNpb24gPT0gdHJ1ZSAmJiAoaW1hZ2VzQWxyZWFkeVVwbG9hZGVkLmxlbmd0aCA9PSAwIHx8IHVuZGVmaW5lZCApIHx8IChpbWFnZXNBbHJlYWR5VXBsb2FkZWQgPT0gbnVsbCB8fCB1bmRlZmluZWQpfVwiXHJcbiAgICAgICAgbmFtZT1cIm1lZGlhSW1hZ2VzW11cIlxyXG4gICAgICAgIFthY2NlcHRdPVwiaW1hZ2VVcGxvYWRDb25maWcuYWNjZXB0SW1hZ2VUeXBlc1wiXHJcbiAgICAgICAgbW9kZT1cImFkdmFuY2VkXCJcclxuICAgICAgICBbY3VzdG9tVXBsb2FkXT1cInRydWVcIlxyXG4gICAgICAgIChvblNlbGVjdCk9XCJvbkN1c3RvbVVwbG9hZE11bHRpTW9kZSgkZXZlbnQpXCJcclxuICAgICAgICAodXBsb2FkSGFuZGxlcik9XCJvbkN1c3RvbWl6ZVVwbG9hZEZ1bmN0aW9uTXVsdGlNb2RlKCRldmVudClcIlxyXG4gICAgICAgIFt1cGxvYWRMYWJlbF09XCJpbWFnZVVwbG9hZENvbmZpZy51cGxvYWRCdXR0b25MYWJlbCA/PyAnJ1wiXHJcbiAgICAgICAgW2Nob29zZUxhYmVsXT1cImltYWdlVXBsb2FkQ29uZmlnLmNob29zZUJ1dHRvbkxhYmVsID8/ICcnXCJcclxuICAgICAgICBbY2FuY2VsTGFiZWxdPVwiaW1hZ2VVcGxvYWRDb25maWcuY2FuY2VsQnV0dG9uTGFiZWwgPz8gJydcIlxyXG4gICAgICAgIFtzaG93VXBsb2FkQnV0dG9uXT1cImFjdGl2ZUltYWdlVXBsb2FkXCJcclxuICAgICAgICBbc2hvd0NhbmNlbEJ1dHRvbl09XCJhY3RpdmVJbWFnZVVwbG9hZFwiXHJcbiAgICAgICAgW2F1dG9dPVwiaW1hZ2VVcGxvYWRDb25maWcuYWxsb3dBdXRvXCJcclxuICAgICAgICBbbXVsdGlwbGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgW21heEZpbGVTaXplXT1cImltYWdlVXBsb2FkQ29uZmlnLm1heEltYWdlU2l6ZVwiXHJcbiAgICAgICAgW2ludmFsaWRGaWxlU2l6ZU1lc3NhZ2VTdW1tYXJ5XT1cImltYWdlVXBsb2FkQ29uZmlnLmludmFsaWRGaWxlU2l6ZU1lc3NhZ2VTdW1tYXJ5ICsgJzonXCJcclxuICAgICAgICBbaW52YWxpZEZpbGVTaXplTWVzc2FnZURldGFpbF09XCJpbWFnZVVwbG9hZENvbmZpZy5pbnZhbGlkRmlsZVNpemVNZXNzYWdlRGV0YWlsICsgJyB7MH0gYnl0ZXMuJ1wiXHJcbiAgICAgICAgW2ludmFsaWRGaWxlVHlwZU1lc3NhZ2VTdW1tYXJ5XT1cImltYWdlVXBsb2FkQ29uZmlnLmludmFsaWRGaWxlVHlwZU1lc3NhZ2VTdW1tYXJ5ICsgJzonXCJcclxuICAgICAgICBbaW52YWxpZEZpbGVUeXBlTWVzc2FnZURldGFpbF09XCJpbWFnZVVwbG9hZENvbmZpZy5pbnZhbGlkRmlsZVR5cGVNZXNzYWdlRGV0YWlsICsgJzogezB9LidcIlxyXG4gICAgICAgIFtjaG9vc2VTdHlsZUNsYXNzXT1cIidwLWJ1dHRvbi1pY29uIHAtYnV0dG9uLWljb24tcmlnaHQnXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1maWxlIGxldC1pPVwiaW5kZXhcIiBwVGVtcGxhdGU9J2ZpbGUnPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlSW1hZ2VVcGxvYWQgJiYgY3JvcHBlckltYWdlcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJwLWZpbGV1cGxvYWQtcm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PjxpbWcgW3NyY109XCJjcm9wcGVySW1hZ2VzW2ldPy5maWxlQmFzZTY0XCIgd2lkdGg9XCI1MFwiLz48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZpbGV1cGxvYWQtZmlsZW5hbWVcIj57e2ZpbGUubmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PiA8dy1idXR0b24gaWNvbj1cInBpIHBpLXRpbWVzXCIgKG9uQ2xpY2spPVwib25EZWxldGVGaWxlTXVsdGlNb2RlKCRldmVudCwgZmlsZSwgZmlsZVVwbG9hZClcIj48L3ctYnV0dG9uPiA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY29udGVudFwiPlxyXG4gICAgICAgICAgICA8cC1wcm9ncmVzc0JhciAqbmdJZj1cImlzVXBsb2FkaW5nTXVsdGlNb2RlXCIgY2xhc3M9XCJwLWVsZW1lbnQgbmctc3Rhci1pbnNlcnRlZFwiIFttb2RlXT1cIidpbmRldGVybWluYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiByb2xlPVwicHJvZ3Jlc3NiYXJcIiBhcmlhLXZhbHVlbWluPVwiMFwiIGFyaWEtdmFsdWVub3c9XCIwXCIgYXJpYS12YWx1ZW1heD1cIjEwMFwiIGRhdGEtcGMtbmFtZT1cInByb2dyZXNzYmFyXCIgZGF0YS1wYy1zZWN0aW9uPVwicm9vdFwiIGNsYXNzPVwicC1wcm9ncmVzc2JhciBwLWNvbXBvbmVudCBwLXByb2dyZXNzYmFyLWRldGVybWluYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcHJvZ3Jlc3NiYXItdmFsdWUgcC1wcm9ncmVzc2Jhci12YWx1ZS1hbmltYXRlIG5nLXN0YXItaW5zZXJ0ZWRcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IHdpZHRoOiAwJTtcIiBkYXRhLXBjLXNlY3Rpb249XCJ2YWx1ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvcC1wcm9ncmVzc0Jhcj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImltYWdlc0FscmVhZHlVcGxvYWRlZC5sZW5ndGggPiAwXCIgc3R5bGU9XCJmbGV4LWdyb3c6IDE7XCI+XHJcbiAgICAgICAgICAgICAgICA8cC1nYWxsZXJpYVxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldEdhbGxlcnlDbGFzcygpXCJcclxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaW1hZ2VzQWxyZWFkeVVwbG9hZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSW5kZXhdPVwiYWN0aXZlSW5kZXhHYWxsZXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVzcG9uc2l2ZU9wdGlvbnNdPVwiY2Fyb3VzZWxJbWFnZXNSZXNwb25zaXZlT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRhaW5lclN0eWxlXT1cInsgJ21heC13aWR0aCc6ICcxMDAlJywgJ21heC1oZWlnaHQnOicxMDAlJ31cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtudW1WaXNpYmxlXT1cIjNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93SXRlbU5hdmlnYXRvcnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dUaHVtYm5haWxzXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cIml0ZW1cIiBsZXQtaW1hZ2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2aWV3TXVsdGlNb2RlID09IGZhbHNlXCIgY2xhc3M9XCJ3LWltYWdlLWZpbGUtdXBsb2FkZXItZGVsZXRlLWJ1dHRvbiBmbGV4IGFsaWduLWNvbnRlbnQtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHctYnV0dG9uIGJ1dHRvbkNsYXNzPVwidy1pbWFnZS1maWxlLXVwbG9hZGVyLWRlbGV0ZS1idXR0b24taWNvblwiIGljb249XCJwaSBwaS10cmFzaFwiIHR5cGU9XCJ0ZXh0XCIgKG9uQ2xpY2spPVwiY29uZmlybURlbGV0ZUltYWdlTXVsdGlNb2RlKCRldmVudCwgaW1hZ2UpXCIgW2xvYWRpbmddPVwiaXNEZWxldGluZ011bHRpTW9kZVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgYWxpZ24tY29udGVudC1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiIFtuZ0NsYXNzXT1cInsndy1pbWFnZS1maWxlLXVwbG9hZGVyLWZpZWxkLWltZy1jb250YWluZXInOiBhY3RpdmVGaWVsZFZlcnNpb259XCIgc3R5bGU9XCJvYmplY3QtZml0OiBjb250YWluO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cInJlYWRQcm9wZXJ0eShpbWFnZSwgaW1hZ2VVcGxvYWRDb25maWcuaW1hZ2VQcm9wZXJ0eU5hbWVzWzBdKSA/PyBpbWFnZS5maWxlQmFzZTY0XCIgc3R5bGU9XCJtYXgtd2lkdGg6MTAwJTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6MTAwJTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYXV0bztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOmF1dG87XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWltYWdlLWZpbGUtdXBsb2FkZXItbW92ZS1idXR0b25zIGZsZXggYWxpZ24tY29udGVudC1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld011bHRpTW9kZSA9PSBmYWxzZSAmJiBhY3RpdmVQb3NpdGlvblByb3BlcnR5ID09IHRydWVcIiBjbGFzcz1cInctaW1hZ2UtZmlsZS11cGxvYWRlci1tdWx0aS1hY3Rpb24tYnV0dG9uXCIgW25nQ2xhc3NdPVwieyd3LWltYWdlLWZpbGUtdXBsb2FkZXItaGlkZS1tb3ZlLWJ1dHRvbicgOiBmaW5kSW5kZXgoaW1hZ2UpID09IDAgfHwgZGlzYWJsZU1vdmVCdXR0b25zfVwiIChjbGljayk9XCJtb3ZlSW1hZ2VUb0xlZnQoaW1hZ2UpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHctaWNvbnMgbmFtZT1cImRvdWJsZUFycm93TGVmdFwiIGNsYXNzPVwidy1pbWFnZS1maWxlLXVwbG9hZGVyLWFycm93XCIgW2hlaWdodF09XCIxMFwiIFt3aWR0aF09XCIxMFwiIFtjb2xvcl09XCInd2hpdGUnXCI+PC93LWljb25zPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzRGVsZXRpbmdNdWx0aU1vZGUgPT0gZmFsc2U7IGVsc2UgaW5kZXhMb2FkaW5nXCIgY2xhc3M9XCJ3LWltYWdlLWZpbGUtdXBsb2FkZXItbXVsdGktaW1hZ2VzLWluZGV4IGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaW5kSW5kZXgoaW1hZ2UpICsgMSB9fSAvIHt7IGltYWdlc0FscmVhZHlVcGxvYWRlZC5sZW5ndGggfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbmRleExvYWRpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctaW1hZ2UtZmlsZS11cGxvYWRlci1tdWx0aS1pbWFnZXMtaW5kZXggZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPiAtIC8gLSA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZpZXdNdWx0aU1vZGUgPT0gZmFsc2UgICYmIGFjdGl2ZVBvc2l0aW9uUHJvcGVydHkgPT0gdHJ1ZVwiIGNsYXNzPVwidy1pbWFnZS1maWxlLXVwbG9hZGVyLW11bHRpLWFjdGlvbi1idXR0b25cIiBbbmdDbGFzc109XCJ7J3ctaW1hZ2UtZmlsZS11cGxvYWRlci1oaWRlLW1vdmUtYnV0dG9uJyA6IChmaW5kSW5kZXgoaW1hZ2UpID09IGltYWdlc0FscmVhZHlVcGxvYWRlZC5sZW5ndGgtMSkgfHwgZGlzYWJsZU1vdmVCdXR0b25zfVwiIChjbGljayk9XCJtb3ZlSW1hZ2VUb1JpZ2h0KGltYWdlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3LWljb25zIG5hbWU9XCJkb3VibGVBcnJvd1JpZ2h0XCIgY2xhc3M9XCJ3LWltYWdlLWZpbGUtdXBsb2FkZXItYXJyb3dcIiBbaGVpZ2h0XT1cIjEwXCIgW3dpZHRoXT1cIjEwXCIgW2NvbG9yXT1cIid3aGl0ZSdcIj48L3ctaWNvbnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvcC1nYWxsZXJpYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2aWV3TXVsdGlNb2RlID09IGZhbHNlOyBlbHNlIHZpZXdNdWx0aU1vZGVNZXNzYWdlXCIgKGNsaWNrKT1cIm9wZW5JbWFnZUZpbGVTZWxlY3RvcigpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidy1pbWFnZS1maWxlLXVwbG9hZGVyLXNwYWNlLWNvbnRhaW5lciBmbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyOyBnYXA6IDZweDtcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyd3LWltYWdlLWZpbGUtdXBsb2FkZXItY29udGFpbmVyLWhlaWdodCcgOiAoaW1hZ2VzQWxyZWFkeVVwbG9hZGVkLmxlbmd0aCA9PSAwIHx8IHVuZGVmaW5lZCApIHx8IChpbWFnZXNBbHJlYWR5VXBsb2FkZWQgPT0gbnVsbCB8fCB1bmRlZmluZWQpICYmIGFjdGl2ZUZpZWxkVmVyc2lvbiA9PSBmYWxzZSwgJ3ctaW1hZ2UtZmlsZS11cGxvYWRlci1maWVsZC1jb250YWluZXItaGVpZ2h0JyA6IGFjdGl2ZUZpZWxkVmVyc2lvbiA9PSB0cnVlICYmIChpbWFnZXNBbHJlYWR5VXBsb2FkZWQubGVuZ3RoID09IDAgfHwgdW5kZWZpbmVkICkgfHwgKGltYWdlc0FscmVhZHlVcGxvYWRlZCA9PSBudWxsIHx8IHVuZGVmaW5lZCl9XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBpIHBpLXVwbG9hZCBzdWJ0aXRsZTEgdGV4dE1haW5Db2xvclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VidGl0bGUxIHRleHRNYWluQ29sb3IgbS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tpbWFnZVVwbG9hZENvbmZpZy5jb250ZW50SGVhZGVyTGFiZWx9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN2aWV3TXVsdGlNb2RlTWVzc2FnZT5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpbWFnZXNBbHJlYWR5VXBsb2FkZWQubGVuZ3RoPT0wXCIgY2xhc3M9XCJ0ZXh0U29mdENvbG9yIGZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgdy1pbWFnZS1maWxlLXVwbG9hZGVyLWNvbnRhaW5lci1oZWlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2ltYWdlVXBsb2FkQ29uZmlnLnZpZXdNb2RlY29udGVudExhYmVsfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3AtZmlsZVVwbG9hZD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxwLWNvbmZpcm1Qb3B1cD48L3AtY29uZmlybVBvcHVwPlxyXG4iXX0=
@@ -4592,6 +4592,7 @@ class WImageFileUploaderComponent {
4592
4592
  this.getIndexToDelete(image);
4593
4593
  this.imagesAlreadyUploaded = this.imagesAlreadyUploaded.filter(img => (img.base64 !== image.base64) || (img[this.identificatorName] !== image[this.identificatorName]));
4594
4594
  this.imagesAlreadyUploaded = [...this.activePositionProperty ? this.addPositionProperty(this.imagesAlreadyUploaded) : this.imagesAlreadyUploaded];
4595
+ this.cropperImages = this.cropperImages.filter(img => (img.fileBase64 !== image.base64) || (img[this.identificatorName] !== image[this.identificatorName]));
4595
4596
  this.onDeleteImage.emit({ deletedImage: image, images: this.imagesAlreadyUploaded });
4596
4597
  this.isDeletingMultiMode = false;
4597
4598
  }