simpo-component-library 1.4.218 → 1.4.220

Sign up to get free protection for your applications and to get access to all the features.
@@ -294,7 +294,7 @@ export class ProductDescComponent extends BaseSection {
294
294
  return present;
295
295
  }
296
296
  get isItemOutOfStock() {
297
- return this.responseData.itemInventory.openingStock == 0;
297
+ return this.responseData.itemInventory?.openingStock == 0;
298
298
  }
299
299
  get currency() {
300
300
  return BUSINESS_CONSTANTS.CURRENCY;
@@ -341,4 +341,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
341
341
  type: HostListener,
342
342
  args: ["window: resize", ["$event"]]
343
343
  }] } });
344
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXNjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3NlY3Rpb25zL3Byb2R1Y3QtZGVzYy9wcm9kdWN0LWRlc2MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvcHJvZHVjdC1kZXNjL3Byb2R1Y3QtZGVzYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdwRixPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXpGLE9BQU8sV0FBVyxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU1qRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDN0YsT0FBTyxFQUFFLG9C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YyxDQUFDLGlEQ2pEN0IsZ2pSQXVJQSxvekdEcEdJLFlBQVkscWRBQ1osV0FBVyw4QkFDWCxvQkFBb0Isd2dCQUNwQixPQUFPO2dCQUNQLFdBQVc7Z0JBQ1gsd0JBQXdCLG9IQUN4QixrQkFBa0IseUZBQ2xCLG1CQUFtQixtRkFDbkIsY0FBYywrRUFDZCxrQkFBa0IseVlBQ2xCLHlCQUF5QixzTEFDekIsb0JBQW9CLDhCQUNwQixXQUFXOzsyRkFNRixvQkFBb0I7a0JBdEJoQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG9CQUFvQjt3QkFDcEIsT0FBTzt3QkFDUCxXQUFXO3dCQUNYLHdCQUF3Qjt3QkFDeEIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQix5QkFBeUI7d0JBQ3pCLG9CQUFvQjt3QkFDcEIsV0FBVztxQkFDWixhQUNVLENBQUMsY0FBYyxDQUFDOzswQkFrQnhCLE1BQU07MkJBQUMsV0FBVztnVEFiWixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFxS04sYUFBYTtzQkFEWixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5wdXQsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFByb2R1Y3REZXNjTW9kYWwsIFByb2R1Y3REZXNjU3R5bGVzTW9kYWwgfSBmcm9tICcuL3Byb2R1Y3QtZGVzYy5tb2RhbCc7XHJcbmltcG9ydCB7IEl0ZW1JbWFnZSwgSXRlbVZhcmlhbnQsIFByb2R1Y3QgfSBmcm9tICcuLi8uLi9zdHlsZXMvcHJvZHVjdC5tb2RhbCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQnV0dG9uTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vLi4vLi4vc2VjdGlvbnMvQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYW5pbWF0aW9uLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi8uLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTmd4SW1hZ2Vab29tTW9kdWxlIH0gZnJvbSAnbmd4LWltYWdlLXpvb20nO1xyXG5pbXBvcnQgeyBGZWF0dXJlZFByb2R1Y3RzQ29tcG9uZW50IH0gZnJvbSBcIi4uL2ZlYXR1cmVkLXByb2R1Y3RzL2ZlYXR1cmVkLXByb2R1Y3RzLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBGZWF0dXJlZFByb2R1Y3RNb2RhbCB9IGZyb20gJy4uL2ZlYXR1cmVkLXByb2R1Y3RzL2ZlYXR1cmVkLXByb2R1Y3RzLm1vZGFsJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT3JkZXJlZEl0ZW1zIH0gZnJvbSAnLi4vLi4vc3R5bGVzL09yZGVyZWRJdGVtcy5tb2RhbCc7XHJcbmltcG9ydCB7IEJVU0lORVNTX0NPTlNUQU5UUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9idXNpbmVzcy5jb25zdGFudCc7XHJcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBNZXRhLCBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBJdGVtVmFyaWVudENvbXBvbmVudCB9IGZyb20gJy4uL2l0ZW0tdmFyaWVudC9pdGVtLXZhcmllbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0Qm90dG9tU2hlZXQsIE1hdEJvdHRvbVNoZWV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYm90dG9tLXNoZWV0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tcHJvZHVjdC1kZXNjJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgU2ltcG9Db21wb25lbnRNb2R1bGUsXHJcbiAgICBNYXRJY29uLFxyXG4gICAgLy9ESVJFQ1RJVkVcclxuICAgIEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSxcclxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIE5neEltYWdlWm9vbU1vZHVsZSxcclxuICAgIEZlYXR1cmVkUHJvZHVjdHNDb21wb25lbnQsXHJcbiAgICBNYXRCb3R0b21TaGVldE1vZHVsZSxcclxuICAgIFRvYXN0TW9kdWxlXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtZGVzYy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3Byb2R1Y3QtZGVzYy5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdERlc2NDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiB7XHJcbiAgQElucHV0KCkgZGF0YT86IFByb2R1Y3REZXNjTW9kYWw7XHJcbiAgQElucHV0KCkgcmVzcG9uc2VEYXRhITogUHJvZHVjdDtcclxuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkZWxldGU/OiBib29sZWFuO1xyXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBmZWF0dXJlUHJvZHVjdERhdGE6IEZlYXR1cmVkUHJvZHVjdE1vZGFsIHwgbnVsbCA9IG51bGw7XHJcbiAgcHVibGljIHZhcmllbnRzOiBNYXA8c3RyaW5nLCBzdHJpbmdbXT4gPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nW10+KCk7XHJcbiAgcHVibGljIHNlbGVjdGVkVmFyaWVudDogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcblxyXG4gIHB1YmxpYyByZWxhdGVkUHJvZHVjdERhdGE6IFByb2R1Y3RbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXRhVGFnU2VydmljZTogTWV0YSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGl0bGVTZXJ2aWNlOiBUaXRsZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYm90dG9tU2hlZXQ6IE1hdEJvdHRvbVNoZWV0XHJcbiAgKSB7XHJcbiAgICBzdXBlcigpXHJcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICB0aGlzLmdldFNjcmVlblNpemUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2V2ZW50U2VydmljZS5zaG93TG9hZGluZ1NjcmVlbi5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gcmVzcG9uc2U7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYnV0dG9uSWQ/OiBzdHJpbmc7XHJcbiAgYnV0dG9uPzogQnV0dG9uTW9kZWxcclxuICBzdHlsZXM/OiBQcm9kdWN0RGVzY1N0eWxlc01vZGFsO1xyXG5cclxuICBpc0l0ZW1Bc0Zhdm9yaXRlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgVVNFUl9DQVJUOiBPcmRlcmVkSXRlbXNbXSB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgVVNFUl9XSVNITElTVDogT3JkZXJlZEl0ZW1zW10gfCBudWxsID0gbnVsbDtcclxuICBwdWJsaWMgaXRlbUltYWdlczogSXRlbUltYWdlW10gPSBbXTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmZlYXR1cmVQcm9kdWN0RGF0YSA9IG5ldyBGZWF0dXJlZFByb2R1Y3RNb2RhbCh0aGlzLmRhdGEpO1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICAgIHRoaXMuY3VycmVudEltZyA9IHRoaXMucmVzcG9uc2VEYXRhPy5pdGVtSW1hZ2VzWzBdPy5pbWdVcmxcclxuICAgIHRoaXMuYnV0dG9uID0gdGhpcy5kYXRhPy5hY3Rpb24/LmJ1dHRvbnNbMF07XHJcbiAgICB0aGlzLmJ1dHRvbklkID0gKHRoaXMuZGF0YSA/IHRoaXMuZGF0YS5pZCA6ICcnKSArICh0aGlzLmJ1dHRvbiA/IHRoaXMuYnV0dG9uLmlkIDogJycpO1xyXG4gICAgdGhpcy5nZXRQcm9kdWN0QnlDYXRlZ29yeSgpO1xyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSByZXNwb25zZTtcclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHFQYXJhbSkgPT4ge1xyXG4gICAgICBjb25zdCBwcm9kdWN0SWQgPSBxUGFyYW1bXCJpZFwiXTtcclxuICAgICAgaWYgKHByb2R1Y3RJZCkge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFByb2R1Y3REZXRhaWxzKHByb2R1Y3RJZCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gcmVzcG9uc2VbMF07IFxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuaXRlbVZhcmlhbnQuZm9yRWFjaCgodmFyaWVudDogSXRlbVZhcmlhbnQsIGlkeDogbnVtYmVyKT0+IHtcclxuICAgICAgICAgICAgdmFyaWVudC5xdWFudGl0eSA9IDA7XHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHZhcmllbnQucHJvcGVydGllcykuZm9yRWFjaCgodmFyaWVudEtleTogc3RyaW5nKT0+IHtcclxuICAgICAgICAgICAgICBpZiAoaWR4ID09IDApXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFyaWVudC5zZXQodmFyaWVudEtleSwgdmFyaWVudC5wcm9wZXJ0aWVzW3ZhcmllbnRLZXldKTtcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMudmFyaWVudHMuZ2V0KHZhcmllbnRLZXkpPy5pbmNsdWRlcyh2YXJpZW50LnByb3BlcnRpZXNbdmFyaWVudEtleV0pKVxyXG4gICAgICAgICAgICAgICAgdGhpcy52YXJpZW50cy5zZXQodmFyaWVudEtleSwgWy4uLih0aGlzLnZhcmllbnRzLmdldCh2YXJpZW50S2V5KSA/PyBbXSksIHZhcmllbnQucHJvcGVydGllc1t2YXJpZW50S2V5XV0pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGNvbnN0IGl0ZW1WYXJpYW50OiBJdGVtVmFyaWFudCB8IG51bGwgPSB0aGlzLmdldEl0ZW1WYXJpZW50KCk7XHJcbiAgICAgICAgICBpZiAoaXRlbVZhcmlhbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuaXRlbUltYWdlcyA9IGl0ZW1WYXJpYW50LnZhcmlhbnRJbWFnZXM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkRlc2NyaXB0aW9uXCIsIHRoaXMucmVzcG9uc2VEYXRhPy5uYW1lLCB0aGlzLnJlc3BvbnNlRGF0YT8uZGVzY3JpcHRvcj8ubmFtZSk7XHJcbiAgICAgICAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZSh0aGlzLnJlc3BvbnNlRGF0YT8ubmFtZSk7XHJcbiAgICAgICAgICB0aGlzLm1ldGFUYWdTZXJ2aWNlLnVwZGF0ZVRhZyh7IG5hbWU6ICdkZXNjcmlwdGlvbicsIGNvbnRlbnQ6IHRoaXMucmVzcG9uc2VEYXRhPy5kZXNjcmlwdG9yPy5uYW1lIH0pXHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLml0ZW1JbWFnZXMgPSB0aGlzLnJlc3BvbnNlRGF0YS5pdGVtSW1hZ2VzO1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5xdWFudGl0eSA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlckNhcnQoKS50aGVuKChjYXJ0UmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICBjYXJ0UmVzcG9uc2Uub25zdWNjZXNzID0gKGNhcnREYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuVVNFUl9DQVJUID0gY2FydERhdGEudGFyZ2V0LnJlc3VsdCBhcyB1bmtub3duIGFzIE9yZGVyZWRJdGVtc1tdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5VU0VSX0NBUlQ/LmZvckVhY2goKGl0ZW06IE9yZGVyZWRJdGVtcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoaXRlbS5pdGVtSWQgPT0gcHJvZHVjdElkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhLml0ZW1WYXJpYW50Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtVmFyaWFudCAmJiBpdGVtLnZhcmllbnRJZCA9PSBpdGVtVmFyaWFudC52YXJpYW50SWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVZhcmlhbnQucXVhbnRpdHkgPSBpdGVtLnF1YW50aXR5O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5xdWFudGl0eSA9IGl0ZW0ucXVhbnRpdHk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnF1YW50aXR5ID0gaXRlbS5xdWFudGl0eTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJXaGlzaGxpc3QoKS50aGVuKCh3aXNobGlzdFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgd2lzaGxpc3RSZXNwb25zZS5vbnN1Y2Nlc3MgPSAod2hpc2xpc3REYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuVVNFUl9XSVNITElTVCA9IHdoaXNsaXN0RGF0YS50YXJnZXQucmVzdWx0IGFzIHVua25vd24gYXMgT3JkZXJlZEl0ZW1zW107XHJcbiAgICAgICAgICAgICAgICB0aGlzLlVTRVJfV0lTSExJU1Q/LmZvckVhY2goKGl0ZW06IE9yZGVyZWRJdGVtcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoaXRlbS5pdGVtSWQgPT0gcHJvZHVjdElkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhLml0ZW1WYXJpYW50Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1WYXJpYW50OiBJdGVtVmFyaWFudCB8IG51bGwgPSB0aGlzLmdldEl0ZW1WYXJpZW50KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVZhcmlhbnQgJiYgaXRlbVZhcmlhbnQudmFyaWFudElkID09IGl0ZW0udmFyaWVudElkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1WYXJpYW50Lndpc2hsaXN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0l0ZW1Bc0Zhdm9yaXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0l0ZW1Bc0Zhdm9yaXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEltZyA9IHRoaXMucmVzcG9uc2VEYXRhPy5pdGVtSW1hZ2VzPy5bMF0/LmltZ1VybDtcclxuICAgICAgICAgICAgdGhpcy5nZXRQcm9kdWN0QnlDYXRlZ29yeSgpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnJlc3BvbnNlRGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgc2VsZWN0VmFyaWVudChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhcmllbnQuc2V0KGtleSwgdmFsdWUpO1xyXG4gICAgdGhpcy5yZXNwb25zZURhdGEuaXRlbVZhcmlhbnQuZm9yRWFjaCgodmFyaWVudDogSXRlbVZhcmlhbnQpPT4ge1xyXG4gICAgICBsZXQgZm91bmRWYXJpZW50ID0gdHJ1ZTtcclxuICAgICAgT2JqZWN0LmtleXModmFyaWVudC5wcm9wZXJ0aWVzKS5mb3JFYWNoKChwcm9wZXJ0eTogc3RyaW5nKT0+IHtcclxuICAgICAgICBmb3VuZFZhcmllbnQgPSAodGhpcy5zZWxlY3RlZFZhcmllbnQuZ2V0KHByb3BlcnR5KSA9PSB2YXJpZW50LnByb3BlcnRpZXNbcHJvcGVydHldKSAmJiBmb3VuZFZhcmllbnQ7XHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5zZWxlY3RlZFZhcmllbnQuZ2V0KHByb3BlcnR5KSwgdmFyaWVudC5wcm9wZXJ0aWVzW3Byb3BlcnR5XSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIGNvbnNvbGUubG9nKGZvdW5kVmFyaWVudCk7XHJcbiAgICAgIGlmIChmb3VuZFZhcmllbnQpIHtcclxuICAgICAgICB0aGlzLml0ZW1JbWFnZXMgPSB2YXJpZW50LnZhcmlhbnRJbWFnZXM7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50SW1nID0gdGhpcy5pdGVtSW1hZ2VzWzBdPy5pbWdVcmw7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJpY2UudmFsdWUgPSB2YXJpZW50Lml0ZW1WYXJpYW50UHJpY2UudmFsdWU7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJpY2UuZGlzY291bnRlZFByaWNlID0gdmFyaWVudC5pdGVtVmFyaWFudFByaWNlLmRpc2NvdW50ZWRQcmljZTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmljZS5zZWxsaW5nUHJpY2UgPSB2YXJpZW50Lml0ZW1WYXJpYW50UHJpY2Uuc2VsbGluZ1ByaWNlO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLml0ZW1JbnZlbnRvcnkgPSB2YXJpZW50Lml0ZW1JbnZlbnRvcnk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucXVhbnRpdHkgPSB0aGlzLmdldFZhcmllbnRRdWFudGl0eSh2YXJpZW50KTtcclxuICAgICAgICB0aGlzLmlzSXRlbUFzRmF2b3JpdGUgPSB0aGlzLmlzVmFyaWVudFByZXNlbnRJbldpc2h0bGlzdCh2YXJpZW50KTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgZ2V0SXRlbVZhcmllbnQoKTogSXRlbVZhcmlhbnQgfCBudWxsIHtcclxuICAgIGxldCBzZWxlY3RlZFZhcmllbnQ6IEl0ZW1WYXJpYW50IHwgbnVsbCA9IG51bGw7XHJcbiAgICB0aGlzLnJlc3BvbnNlRGF0YS5pdGVtVmFyaWFudD8uZm9yRWFjaCgodmFyaWVudDogSXRlbVZhcmlhbnQpPT4ge1xyXG4gICAgICBsZXQgZm91bmRWYXJpZW50ID0gdHJ1ZTtcclxuICAgICAgT2JqZWN0LmtleXModmFyaWVudC5wcm9wZXJ0aWVzKS5mb3JFYWNoKChwcm9wZXJ0eTogc3RyaW5nKT0+IHtcclxuICAgICAgICBmb3VuZFZhcmllbnQgPSAodGhpcy5zZWxlY3RlZFZhcmllbnQuZ2V0KHByb3BlcnR5KSA9PSB2YXJpZW50LnByb3BlcnRpZXNbcHJvcGVydHldKSAmJiBmb3VuZFZhcmllbnQ7XHJcbiAgICAgIH0pXHJcbiAgICAgIGlmIChmb3VuZFZhcmllbnQpXHJcbiAgICAgICAgc2VsZWN0ZWRWYXJpZW50ID0gdmFyaWVudDtcclxuICAgIH0pXHJcbiAgICBcclxuICAgIHJldHVybiBzZWxlY3RlZFZhcmllbnQ7XHJcbiAgfVxyXG5cclxuXHJcbiAgcm91dGVUb0hvbWUoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XHJcbiAgfVxyXG5cclxuICBzY3JlZW5XaWR0aDogYW55O1xyXG4gIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6IHJlc2l6ZVwiLCBbXCIkZXZlbnRcIl0pXHJcbiAgZ2V0U2NyZWVuU2l6ZSgpIHtcclxuICAgIHRoaXMuc2NyZWVuV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICB9XHJcblxyXG4gIGN1cnJlbnRJbWc6IGFueTtcclxuICBjaGFuZ2VJbWcodXJsOiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVudEltZyA9IHVybDtcclxuICB9XHJcblxyXG4gIGdldEtleXModmFyaWVudDogT2JqZWN0KTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHZhcmllbnQpO1xyXG4gIH1cclxuXHJcbiAgZ29Ub0NhcnQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc0l0ZW1PdXRPZlN0b2NrKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICd3YXJuJywgc3VtbWFyeTogJ0NhcnQnLCBkZXRhaWw6ICdJdGVtIGlzIG5vdCBhdmFpbGFibGUgYXMgb2Ygbm93LiBXZSB3aWxsIG5vdGlmeSB5b3Ugb25jZSBhdmFpbGFibGUnIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMucmVzcG9uc2VEYXRhLnF1YW50aXR5KVxyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5xdWFudGl0eSA9IDE7XHJcbiAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub0NhcnQodGhpcy5yZXNwb25zZURhdGEpO1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvY2FydCddKTtcclxuICB9XHJcblxyXG4gIGFkZFRvQ2FydCh0eXBlOiAnQUREJyB8ICdTVUJTVFJBQ1QnID0gJ0FERCcpIHtcclxuICAgIGlmICh0aGlzLmlzSXRlbU91dE9mU3RvY2spIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ3dhcm4nLCBzdW1tYXJ5OiAnQ2FydCcsIGRldGFpbDogJ0l0ZW0gaXMgbm90IGF2YWlsYWJsZSBhcyBvZiBub3cuIFdlIHdpbGwgbm90aWZ5IHlvdSBvbmNlIGF2YWlsYWJsZScgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yZXNwb25zZURhdGEuaXRlbVZhcmlhbnQ/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgaXRlbVZhcmllbnQ6IEl0ZW1WYXJpYW50IHwgbnVsbCA9IHRoaXMuZ2V0SXRlbVZhcmllbnQoKTtcclxuICAgICAgaWYgKGl0ZW1WYXJpZW50KSB7XHJcbiAgICAgICAgaXRlbVZhcmllbnQucXVhbnRpdHkgPSBpdGVtVmFyaWVudC5xdWFudGl0eSsxO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnF1YW50aXR5ID0gaXRlbVZhcmllbnQucXVhbnRpdHk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuaXRlbUludmVudG9yeSA9IGl0ZW1WYXJpZW50Lml0ZW1JbnZlbnRvcnk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuaXRlbUltYWdlcyA9IGl0ZW1WYXJpZW50LnZhcmlhbnRJbWFnZXM7XHJcbiAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9DYXJ0KHRoaXMucmVzcG9uc2VEYXRhIGFzIFByb2R1Y3QsIGl0ZW1WYXJpZW50Py52YXJpYW50SWQpO1xyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIGlmICghdGhpcy5yZXNwb25zZURhdGE/LnF1YW50aXR5KVxyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnF1YW50aXR5ID0gMDtcclxuICAgICAgaWYgKHR5cGUgPT0gJ0FERCcpIHtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5xdWFudGl0eSArPSAxO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnF1YW50aXR5IC09IDE7XHJcbiAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9DYXJ0KHRoaXMucmVzcG9uc2VEYXRhIGFzIFByb2R1Y3QpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ29Ub0ZpbHRlcihjYXRlZ29yeTogc3RyaW5nKSB7XHJcbiAgICBjYXRlZ29yeSA9IGNhdGVnb3J5LnJlcGxhY2VBbGwoXCIgXCIsIFwiX1wiKVxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydsaXN0J10sIHsgcXVlcnlQYXJhbXM6IHsgY2F0ZWdvcnk6IGNhdGVnb3J5IH0gfSk7XHJcbiAgfVxyXG5cclxuICBhZGRUb0Zhdm91cml0ZSgpIHtcclxuICAgIHRoaXMuaXNJdGVtQXNGYXZvcml0ZSA9IHRydWU7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdTdWNjZXNzJywgZGV0YWlsOiAnSXRlbSBhZGRlZCB0byB5b3VyIHdpc2hsaXN0Jywga2V5OiAnd2lzaGxpc3QnIH0pO1xyXG4gICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhLml0ZW1WYXJpYW50Py5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW1WYXJpZW50OiBJdGVtVmFyaWFudCB8IG51bGwgPSB0aGlzLmdldEl0ZW1WYXJpZW50KCk7XHJcbiAgICAgIGlmIChpdGVtVmFyaWVudCkge1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLml0ZW1JbnZlbnRvcnkgPSBpdGVtVmFyaWVudC5pdGVtSW52ZW50b3J5O1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLml0ZW1JbWFnZXMgPSBpdGVtVmFyaWVudC52YXJpYW50SW1hZ2VzO1xyXG4gICAgICAgIGl0ZW1WYXJpZW50Lndpc2hsaXN0ID0gdHJ1ZTsgXHJcbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9GYXZvdXJpdGUodGhpcy5yZXNwb25zZURhdGEgYXMgUHJvZHVjdCwgaXRlbVZhcmllbnQudmFyaWFudElkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9GYXZvdXJpdGUodGhpcy5yZXNwb25zZURhdGEgYXMgUHJvZHVjdCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlbW92ZVRvRmF2b3VyaXRlKCkge1xyXG4gICAgdGhpcy5pc0l0ZW1Bc0Zhdm9yaXRlID0gZmFsc2U7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6ICdTdWNjZXNzJywgZGV0YWlsOiAnSXRlbSByZW1vdmVkIGZyb20geW91ciB3aXNobGlzdCcsIGtleTogJ3dpc2hsaXN0JyB9KTtcclxuICAgIGlmICh0aGlzLnJlc3BvbnNlRGF0YS5pdGVtVmFyaWFudD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBpdGVtVmFyaWVudDogSXRlbVZhcmlhbnQgfCBudWxsID0gdGhpcy5nZXRJdGVtVmFyaWVudCgpO1xyXG4gICAgICBpZiAoaXRlbVZhcmllbnQpIHtcclxuICAgICAgICBpdGVtVmFyaWVudC53aXNobGlzdCA9IGZhbHNlOyBcclxuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLnJlbW92ZUl0ZW1Gcm9tRmF2b3VyaXRlKHRoaXMucmVzcG9uc2VEYXRhLnZhcmllbnRJZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2FydFNlcnZpY2UucmVtb3ZlSXRlbUZyb21GYXZvdXJpdGUodGhpcy5yZXNwb25zZURhdGEudmFyaWVudElkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFByb2R1Y3RCeUNhdGVnb3J5KCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRQcm9kdWN0QnlDYXRlZ29yeUlkKHRoaXMucmVzcG9uc2VEYXRhPy5pdGVtQ2F0ZWdvcmlzYXRpb24/Lml0ZW1DYXRlZ29yaWVzPy5bMF0/LnJlZklkID8/IFwiXCIpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnJlbGF0ZWRQcm9kdWN0RGF0YSA9IHJlc3BvbnNlLmRhdGE/LmZpbHRlcigocHJvZHVjdDogUHJvZHVjdCkgPT4gdGhpcy5yZXNwb25zZURhdGEuaXRlbUlkICE9IHByb2R1Y3QuaXRlbUlkKTtcclxuICAgICAgaWYgKHRoaXMucmVsYXRlZFByb2R1Y3REYXRhPy5sZW5ndGggPT0gMClcclxuICAgICAgICB0aGlzLmdldFByb2R1Y3RCeUNvbGxlY3Rpb24oKTtcclxuICAgIH0pXHJcbiAgfVxyXG4gIGdldFByb2R1Y3RCeUNvbGxlY3Rpb24oKSB7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFByb2R1Y3RCeUNvbGxlY3Rpb25JZCh0aGlzLnJlc3BvbnNlRGF0YT8uaXRlbUNhdGVnb3Jpc2F0aW9uPy5pdGVtQ29sbGVjdGlvbj8uWzBdLnJlZklkID8/IFwiXCIpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgIHRoaXMucmVsYXRlZFByb2R1Y3REYXRhID0gcmVzcG9uc2UuZGF0YT8uZmlsdGVyKChwcm9kdWN0OiBQcm9kdWN0KSA9PiB0aGlzLnJlc3BvbnNlRGF0YS5pdGVtSWQgIT0gcHJvZHVjdC5pdGVtSWQpO1xyXG4gICAgfSlcclxuICB9XHJcbiAgY2hhbmdlUHJvZHVjdChwcm9kdWN0OiBQcm9kdWN0KSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9kZXRhaWxzJ10sIHtxdWVyeVBhcmFtczoge2lkOiBwcm9kdWN0Lml0ZW1JZH19KTtcclxuICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID0gMDtcclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gIH1cclxuICBnZXRLZXlCeUlkeChwcm9wZXJ0eTogYW55LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMocHJvcGVydHkpW2luZGV4XTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VmFyaWVudFF1YW50aXR5KHByb2R1Y3RWYXJpZW50OiBJdGVtVmFyaWFudCk6IG51bWJlciB7XHJcbiAgICBsZXQgaXRlbVF1YW50aXR5OiBudW1iZXIgPSAwO1xyXG4gICAgdGhpcy5VU0VSX0NBUlQ/LmZvckVhY2goKGl0ZW06IE9yZGVyZWRJdGVtcyk9PiB7XHJcbiAgICAgICAgaWYgKHByb2R1Y3RWYXJpZW50LnZhcmlhbnRJZCA9PSBpdGVtLnZhcmllbnRJZCkgXHJcbiAgICAgICAgICBpdGVtUXVhbnRpdHkgPSBpdGVtLnF1YW50aXR5O1xyXG4gICAgfSlcclxuICAgIHJldHVybiBpdGVtUXVhbnRpdHk7XHJcbiAgfVxyXG4gIHByaXZhdGUgaXNWYXJpZW50UHJlc2VudEluV2lzaHRsaXN0KHByb2R1Y3RWYXJpZW50OiBJdGVtVmFyaWFudCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHByZXNlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHRoaXMuVVNFUl9XSVNITElTVD8uZm9yRWFjaCgoaXRlbTogT3JkZXJlZEl0ZW1zKT0+IHtcclxuICAgICAgICBpZiAocHJvZHVjdFZhcmllbnQudmFyaWFudElkID09IGl0ZW0udmFyaWVudElkKSBcclxuICAgICAgICAgIHByZXNlbnQgPSB0cnVlO1xyXG4gICAgfSlcclxuICAgIHJldHVybiBwcmVzZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzSXRlbU91dE9mU3RvY2soKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZURhdGEuaXRlbUludmVudG9yeS5vcGVuaW5nU3RvY2sgPT0gMDtcclxuICB9XHJcbiAgZ2V0IGN1cnJlbmN5KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gQlVTSU5FU1NfQ09OU1RBTlRTLkNVUlJFTkNZO1xyXG4gIH1cclxuICBnZXQgaXNJdGVtTG93U3RvY2soKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZURhdGE/Lml0ZW1JbnZlbnRvcnk/Lm9wZW5pbmdTdG9jayA8IDU7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XHJcbiAgPHAtdG9hc3QgcG9zaXRpb249XCJib3R0b20tcmlnaHRcIiBbYmFzZVpJbmRleF09XCIxMDAwMDAwMDAwMFwiIFthdXRvWkluZGV4XT1cInRydWVcIiBrZXk9XCJ3aXNobGlzdFwiPjwvcC10b2FzdD5cclxuICA8c2VjdGlvbiBjbGFzcz1cInRvdGFsLWNvbnRhaW5lclwiIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0xheW91dF09XCJzdHlsZXM/LmxheW91dFwiIHNpbXBvSG92ZXIgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCI+XHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cImNvbnRhaW5lclwiIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0FuaW1hdGlvbl09XCJzdHlsZXM/LmFuaW1hdGlvblwiPlxyXG4gICAgICA8ZGl2PjxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBzdHlsZT1cInRleHQtZGVjb3JhdGlvbjogbm9uZTsgY29sb3I6ICMwMjY3QzFcIiAoY2xpY2spPVwicm91dGVUb0hvbWUoKVwiPkhvbWU8L2E+IC8gPHNwYW4+e3sgcmVzcG9uc2VEYXRhPy5uYW1lIHwgdGl0bGVjYXNlIH19PC9zcGFuPjwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02IGNvbC0xMlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInByb2QtaW1nLWJsb2NrXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctbGlzdFwiICpuZ0lmPVwic2NyZWVuV2lkdGggPiA1MDBcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpbWcgb2YgaXRlbUltYWdlc1wiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImltZy5pbWdVcmxcIiBhbHQ9XCJcIiBjbGFzcz1cImltZ1wiIChjbGljayk9XCJjaGFuZ2VJbWcoaW1nLmltZ1VybClcIiAqbmdJZj1cImltZy5pbWdVcmxcIiBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiaW1nLmltZ1VybCA9PSBjdXJyZW50SW1nID8gZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvciA6ICd0cmFuc3BhcmVudCdcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9pLnBvc3RpbWcuY2MvaFBTMkpwVjAvbm8taW1hZ2UtYXZhaWxhYmxlLmpwZ1wiICpuZ0lmPVwiIWltZy5pbWdVcmxcIj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWltZ1wiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50SW1nXCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLW5neC1pbWFnZS16b29tXHJcbiAgICAgICAgICAgICAgICAgIFt0aHVtYkltYWdlXT1cImN1cnJlbnRJbWdcIiBcclxuICAgICAgICAgICAgICAgICAgW2Z1bGxJbWFnZV09XCJjdXJyZW50SW1nXCIgXHJcbiAgICAgICAgICAgICAgICAgIFt6b29tTW9kZV09XCInaG92ZXInXCJcclxuICAgICAgICAgICAgICAgICAgW21hZ25pZmljYXRpb25dPVwiMlwiIFxyXG4gICAgICAgICAgICAgICAgICBbbGVuc0hlaWdodF09XCIxMDBcIlxyXG4gICAgICAgICAgICAgICAgICBbbGVuc1dpZHRoXT1cIjEwMFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTtcIlxyXG4gICAgICAgICAgICAgICAgPjwvbGliLW5neC1pbWFnZS16b29tPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY3VycmVudEltZ1wiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2kucG9zdGltZy5jYy9oUFMySnBWMC9uby1pbWFnZS1hdmFpbGFibGUuanBnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzSXRlbUxvd1N0b2NrXCIgY2xhc3M9XCJmYXN0LWNoZWNrb3V0XCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vaS5pbWdoaXBwby5jb20vZmlsZXMveDJPR0QxNzIzODE1NTEzLnBuZ1wiIGFsdD1cIlwiIHN0eWxlPVwiaGVpZ2h0OiAzMHB4ICFpbXBvcnRhbnQ7IHdpZHRoOiAzMHB4ICFpbXBvcnRhbnQ7XCIgdGl0bGU9XCJGYXN0IENoZWNrb3V0XCIgKGNsaWNrKT1cImdvVG9DYXJ0KClcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxsaW5nLWZhc3QtdGFnXCI+U2VsbGluZyBGYXN0PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2kucG9zdGltZy5jYy9oUFMySnBWMC9uby1pbWFnZS1hdmFpbGFibGUuanBnXCIgKm5nSWY9XCIhY3VycmVudEltZ1wiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZy1saXN0XCIgKm5nSWY9XCJzY3JlZW5XaWR0aCA8PSA1MDBcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpbWcgb2YgaXRlbUltYWdlc1wiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImltZy5pbWdVcmxcIiBhbHQ9XCJcIiBjbGFzcz1cImltZ1wiIChjbGljayk9XCJjaGFuZ2VJbWcoaW1nLmltZ1VybClcIiAqbmdJZj1cImltZy5pbWdVcmxcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9pLnBvc3RpbWcuY2MvaFBTMkpwVjAvbm8taW1hZ2UtYXZhaWxhYmxlLmpwZ1wiICpuZ0lmPVwiIWltZy5pbWdVcmxcIj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgY29sLTEyIHByb2R1Y3QtZGV0YWlsXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1sYXJnZVwiPnt7cmVzcG9uc2VEYXRhPy5uYW1lfX08L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBzdHlsZT1cImdhcDogMTBweDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgbWFyZ2luLXRvcDogMTVweDtcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlXCIgW25nQ2xhc3NdPVwieydkaXNjb3VudC1wcmljZSc6IHJlc3BvbnNlRGF0YT8ucHJpY2U/LmRpc2NvdW50ZWRQcmljZX1cIiAqbmdJZj1cInJlc3BvbnNlRGF0YT8ucHJpY2U/LmRpc2NvdW50ZWRQcmljZSAhPSByZXNwb25zZURhdGE/LnByaWNlPy52YWx1ZVwiPjxzcGFuIFtpbm5lckhUTUxdPSdjdXJyZW5jeSc+PC9zcGFuPiB7e3Jlc3BvbnNlRGF0YT8ucHJpY2U/LnZhbHVlfX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlXCIgKm5nSWY9XCJyZXNwb25zZURhdGE/LnByaWNlPy5kaXNjb3VudGVkUHJpY2VcIj48c3BhbiBbaW5uZXJIVE1MXT0nY3VycmVuY3knPjwvc3Bhbj4ge3tyZXNwb25zZURhdGE/LnByaWNlPy5kaXNjb3VudGVkUHJpY2V9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGF4LXRleHRcIj4oZXhjbHVkaW5nIGFsbCB0YXhlcyk8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3QtZGVzYyBib2R5LWxhcmdlXCIgKm5nSWY9XCJyZXNwb25zZURhdGE/LmJyaWVmXCIgW2lubmVySFRNTF09XCJyZXNwb25zZURhdGEuYnJpZWZcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXBhcmVudFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3V0LW9mLXN0b2NrXCIgKm5nSWY9XCJpc0l0ZW1PdXRPZlN0b2NrXCI+T3V0IG9mIFN0b2NrPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWFudGl0eVwiICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5xdWFudGl0eVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbHVzXCIgKGNsaWNrKT1cImFkZFRvQ2FydCgnU1VCU1RSQUNUJylcIj4tPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiA1MHB4O1wiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj57e3Jlc3BvbnNlRGF0YS5xdWFudGl0eX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPCEtLSA8aW5wdXQgdHlwZT1cIm51bWJlclwiIChrZXl1cCk9XCJjaGFuZ2VRdWFudGl0eShxdWFudGl0eS52YWx1ZSlcIiBbdmFsdWVdPVwiYWRkZWRRdWFudGl0eVwiICNxdWFudGl0eT4gLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbnVzXCIgKGNsaWNrKT1cImFkZFRvQ2FydCgnQUREJylcIj4rPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXJlc3BvbnNlRGF0YT8ucXVhbnRpdHkgJiYgIWlzSXRlbU91dE9mU3RvY2tcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2VuZC1idG5cIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiYnV0dG9uSWRcIiBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uPy5zdHlsZXNcIiBbY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIChjbGljayk9XCJhZGRUb0NhcnQoKVwiPnt7ZGF0YT8uYWN0aW9uPy5idXR0b25zPy5bMF0/LmNvbnRlbnQ/LmxhYmVsfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYXZvdXJpdGVcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAoY2xpY2spPVwiYWRkVG9GYXZvdXJpdGUoKVwiICpuZ0lmPVwiIWlzSXRlbUFzRmF2b3JpdGVcIj5mYXZvcml0ZV9ib3JkZXI8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIChjbGljayk9XCJyZW1vdmVUb0Zhdm91cml0ZSgpXCIgKm5nSWY9XCJpc0l0ZW1Bc0Zhdm9yaXRlXCI+ZmF2b3JpdGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhcmllbnQgb2YgdmFyaWVudHMgfCBrZXl2YWx1ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YXJpZW50LWtleVwiPnt7dmFyaWVudC5rZXl9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBzdHlsZT1cImdhcDogNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdmFyaWVudFZhbHVlIG9mIHZhcmllbnQudmFsdWVcIiBjbGFzcz1cInZhcmllbnQtdGFnXCIgW25nQ2xhc3NdPVwieyd2YXJpZW50LXNlbGVjdGVkJzogc2VsZWN0ZWRWYXJpZW50LmdldCh2YXJpZW50LmtleSkgPT0gdmFyaWVudFZhbHVlfVwiIChjbGljayk9XCJzZWxlY3RWYXJpZW50KHZhcmllbnQua2V5LCB2YXJpZW50VmFsdWUpXCI+e3t2YXJpZW50VmFsdWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj4gIFxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3Qtc2t1XCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZXNwb25zZURhdGE/Lml0ZW1JbnZlbnRvcnlcIj5TS1UgOlxyXG4gICAgICAgICAgICAgIHt7cmVzcG9uc2VEYXRhLml0ZW1JbnZlbnRvcnk/Lm9wZW5pbmdTdG9ja319PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZXNwb25zZURhdGE/Lml0ZW1DYXRlZ29yaXNhdGlvbj8uaXRlbUNhdGVnb3JpZXNcIj5DYXRlZ29yeSA6IDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiZ29Ub0ZpbHRlcihjYXQucmVmTmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNhdCBvZiByZXNwb25zZURhdGE/Lml0ZW1DYXRlZ29yaXNhdGlvbj8uaXRlbUNhdGVnb3JpZXM7bGV0IGlkeCA9IGluZGV4XCI+e3tjYXQucmVmTmFtZSB8IHRpdGxlY2FzZX19IDxuZy1jb250YWluZXIgKm5nSWY9XCIoaWR4KzEpICE9IHJlc3BvbnNlRGF0YT8uaXRlbUNhdGVnb3Jpc2F0aW9uPy5pdGVtQ2F0ZWdvcmllcz8ubGVuZ3RoXCI+LDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2E+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIocmVzcG9uc2VEYXRhPy5pdGVtQ2F0ZWdvcmlzYXRpb24/LnByb2R1Y3RUYWdzPy5sZW5ndGggfHwgMCkgPiAwXCI+VGFncyA6IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFnIG9mIHJlc3BvbnNlRGF0YT8uaXRlbUNhdGVnb3Jpc2F0aW9uPy5wcm9kdWN0VGFnc1wiPnt7dGFnLnRhZ05hbWV9fSxcclxuICAgICAgICAgICAgICA8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHJvZC1kZXNjXCIgKm5nSWY9XCJyZXNwb25zZURhdGE/LmRlc2NyaXB0b3I/Lm5hbWVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLWdyb3VwXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiXCI+RGVzY3JpcHRpb248L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDogMTBweDtcIiBjbGFzcz1cImJvZHktbGFyZ2VcIiAqbmdJZj1cInJlc3BvbnNlRGF0YT8uZGVzY3JpcHRvclwiIFtpbm5lckhUTUxdPVwicmVzcG9uc2VEYXRhPy5kZXNjcmlwdG9yPy5uYW1lXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlbGF0ZWRQcm9kdWN0RGF0YT8ubGVuZ3RoXCI+XHJcbiAgICAgIDxzaW1wby1mZWF0dXJlZC1wcm9kdWN0cyBbZWRpdF09XCJmYWxzZVwiIFtkYXRhXT1cImZlYXR1cmVQcm9kdWN0RGF0YVwiIFtyZXNwb25zZURhdGFdPVwicmVsYXRlZFByb2R1Y3REYXRhXCIgW2lzUmVsYXRlZFByb2R1Y3RdPVwidHJ1ZVwiIChjaGFuZ2VEZXRhaWxQcm9kdWN0KT1cImNoYW5nZVByb2R1Y3QoJGV2ZW50KVwiPjwvc2ltcG8tZmVhdHVyZWQtcHJvZHVjdHM+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICAgIDxzaW1wby1kZWxldGUtaG92ZXItZWxlbWVudCBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCI+PC9zaW1wby1kZWxldGUtaG92ZXItZWxlbWVudD5cclxuICAgIDwvZGl2PlxyXG4gIDwvc2VjdGlvbj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmd4LXNrZWxldG9uLWxvYWRlciAqbmdJZj1cImlzTG9hZGluZ1wiIGNvdW50PVwiMVwiIGFwcGVhcmFuY2U9XCJjaXJjbGVcIiBbdGhlbWVdPVwie1xyXG4gIHdpZHRoOiAnMTAwJScsXHJcbiAgaGVpZ2h0OiAnNDB2aCcsXHJcbiAgJ2JvcmRlci1yYWRpdXMnOiAnMTBweCcsXHJcbiAgJ3Bvc2l0aW9uJzogJ3JlbGF0aXZlJyxcclxuICAncmlnaHQnOiAnNXB4J1xyXG59XCI+XHJcbjwvbmd4LXNrZWxldG9uLWxvYWRlcj5cclxuXHJcbjwhLS0gPGRpdiBjbGFzcz1cIm1vZGFsIGZhZGVcIiBpZD1cIml0ZW1WYXJpZW50c1wiIHRhYmluZGV4PVwiLTFcIiBhcmlhLWxhYmVsbGVkYnk9XCJpdGVtVmFyaWVudHNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5SaWdodC10by1MZWZ0IE1vZGFsPC9oNT5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZVwiIGRhdGEtYnMtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCI+PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgIFRoaXMgY29udGVudCBpcyBhbGlnbmVkIGZyb20gcmlnaHQgdG8gbGVmdC5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgZGF0YS1icy1kaXNtaXNzPVwibW9kYWxcIj5DbG9zZTwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+U2F2ZSBjaGFuZ2VzPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiAtLT5cclxuIl19
344
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXNjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3NlY3Rpb25zL3Byb2R1Y3QtZGVzYy9wcm9kdWN0LWRlc2MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvcHJvZHVjdC1kZXNjL3Byb2R1Y3QtZGVzYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdwRixPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXpGLE9BQU8sV0FBVyxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU1qRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDN0YsT0FBTyxFQUFFLG9C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YyxDQUFDLGlEQ2pEN0IsZ2pSQXVJQSxvekdEcEdJLFlBQVkscWRBQ1osV0FBVyw4QkFDWCxvQkFBb0Isd2dCQUNwQixPQUFPO2dCQUNQLFdBQVc7Z0JBQ1gsd0JBQXdCLG9IQUN4QixrQkFBa0IseUZBQ2xCLG1CQUFtQixtRkFDbkIsY0FBYywrRUFDZCxrQkFBa0IseVlBQ2xCLHlCQUF5QixzTEFDekIsb0JBQW9CLDhCQUNwQixXQUFXOzsyRkFNRixvQkFBb0I7a0JBdEJoQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG9CQUFvQjt3QkFDcEIsT0FBTzt3QkFDUCxXQUFXO3dCQUNYLHdCQUF3Qjt3QkFDeEIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQix5QkFBeUI7d0JBQ3pCLG9CQUFvQjt3QkFDcEIsV0FBVztxQkFDWixhQUNVLENBQUMsY0FBYyxDQUFDOzswQkFrQnhCLE1BQU07MkJBQUMsV0FBVztnVEFiWixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFxS04sYUFBYTtzQkFEWixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5wdXQsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFByb2R1Y3REZXNjTW9kYWwsIFByb2R1Y3REZXNjU3R5bGVzTW9kYWwgfSBmcm9tICcuL3Byb2R1Y3QtZGVzYy5tb2RhbCc7XHJcbmltcG9ydCB7IEl0ZW1JbWFnZSwgSXRlbVZhcmlhbnQsIFByb2R1Y3QgfSBmcm9tICcuLi8uLi9zdHlsZXMvcHJvZHVjdC5tb2RhbCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQnV0dG9uTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vLi4vLi4vc2VjdGlvbnMvQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYW5pbWF0aW9uLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi8uLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTmd4SW1hZ2Vab29tTW9kdWxlIH0gZnJvbSAnbmd4LWltYWdlLXpvb20nO1xyXG5pbXBvcnQgeyBGZWF0dXJlZFByb2R1Y3RzQ29tcG9uZW50IH0gZnJvbSBcIi4uL2ZlYXR1cmVkLXByb2R1Y3RzL2ZlYXR1cmVkLXByb2R1Y3RzLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBGZWF0dXJlZFByb2R1Y3RNb2RhbCB9IGZyb20gJy4uL2ZlYXR1cmVkLXByb2R1Y3RzL2ZlYXR1cmVkLXByb2R1Y3RzLm1vZGFsJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT3JkZXJlZEl0ZW1zIH0gZnJvbSAnLi4vLi4vc3R5bGVzL09yZGVyZWRJdGVtcy5tb2RhbCc7XHJcbmltcG9ydCB7IEJVU0lORVNTX0NPTlNUQU5UUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9idXNpbmVzcy5jb25zdGFudCc7XHJcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBNZXRhLCBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBJdGVtVmFyaWVudENvbXBvbmVudCB9IGZyb20gJy4uL2l0ZW0tdmFyaWVudC9pdGVtLXZhcmllbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0Qm90dG9tU2hlZXQsIE1hdEJvdHRvbVNoZWV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYm90dG9tLXNoZWV0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tcHJvZHVjdC1kZXNjJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgU2ltcG9Db21wb25lbnRNb2R1bGUsXHJcbiAgICBNYXRJY29uLFxyXG4gICAgLy9ESVJFQ1RJVkVcclxuICAgIEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSxcclxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIE5neEltYWdlWm9vbU1vZHVsZSxcclxuICAgIEZlYXR1cmVkUHJvZHVjdHNDb21wb25lbnQsXHJcbiAgICBNYXRCb3R0b21TaGVldE1vZHVsZSxcclxuICAgIFRvYXN0TW9kdWxlXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtZGVzYy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3Byb2R1Y3QtZGVzYy5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdERlc2NDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiB7XHJcbiAgQElucHV0KCkgZGF0YT86IFByb2R1Y3REZXNjTW9kYWw7XHJcbiAgQElucHV0KCkgcmVzcG9uc2VEYXRhITogUHJvZHVjdDtcclxuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkZWxldGU/OiBib29sZWFuO1xyXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBmZWF0dXJlUHJvZHVjdERhdGE6IEZlYXR1cmVkUHJvZHVjdE1vZGFsIHwgbnVsbCA9IG51bGw7XHJcbiAgcHVibGljIHZhcmllbnRzOiBNYXA8c3RyaW5nLCBzdHJpbmdbXT4gPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nW10+KCk7XHJcbiAgcHVibGljIHNlbGVjdGVkVmFyaWVudDogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcblxyXG4gIHB1YmxpYyByZWxhdGVkUHJvZHVjdERhdGE6IFByb2R1Y3RbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXRhVGFnU2VydmljZTogTWV0YSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGl0bGVTZXJ2aWNlOiBUaXRsZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYm90dG9tU2hlZXQ6IE1hdEJvdHRvbVNoZWV0XHJcbiAgKSB7XHJcbiAgICBzdXBlcigpXHJcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICB0aGlzLmdldFNjcmVlblNpemUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2V2ZW50U2VydmljZS5zaG93TG9hZGluZ1NjcmVlbi5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gcmVzcG9uc2U7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYnV0dG9uSWQ/OiBzdHJpbmc7XHJcbiAgYnV0dG9uPzogQnV0dG9uTW9kZWxcclxuICBzdHlsZXM/OiBQcm9kdWN0RGVzY1N0eWxlc01vZGFsO1xyXG5cclxuICBpc0l0ZW1Bc0Zhdm9yaXRlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgVVNFUl9DQVJUOiBPcmRlcmVkSXRlbXNbXSB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgVVNFUl9XSVNITElTVDogT3JkZXJlZEl0ZW1zW10gfCBudWxsID0gbnVsbDtcclxuICBwdWJsaWMgaXRlbUltYWdlczogSXRlbUltYWdlW10gPSBbXTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmZlYXR1cmVQcm9kdWN0RGF0YSA9IG5ldyBGZWF0dXJlZFByb2R1Y3RNb2RhbCh0aGlzLmRhdGEpO1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICAgIHRoaXMuY3VycmVudEltZyA9IHRoaXMucmVzcG9uc2VEYXRhPy5pdGVtSW1hZ2VzWzBdPy5pbWdVcmxcclxuICAgIHRoaXMuYnV0dG9uID0gdGhpcy5kYXRhPy5hY3Rpb24/LmJ1dHRvbnNbMF07XHJcbiAgICB0aGlzLmJ1dHRvbklkID0gKHRoaXMuZGF0YSA/IHRoaXMuZGF0YS5pZCA6ICcnKSArICh0aGlzLmJ1dHRvbiA/IHRoaXMuYnV0dG9uLmlkIDogJycpO1xyXG4gICAgdGhpcy5nZXRQcm9kdWN0QnlDYXRlZ29yeSgpO1xyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSByZXNwb25zZTtcclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHFQYXJhbSkgPT4ge1xyXG4gICAgICBjb25zdCBwcm9kdWN0SWQgPSBxUGFyYW1bXCJpZFwiXTtcclxuICAgICAgaWYgKHByb2R1Y3RJZCkge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFByb2R1Y3REZXRhaWxzKHByb2R1Y3RJZCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gcmVzcG9uc2VbMF07IFxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuaXRlbVZhcmlhbnQuZm9yRWFjaCgodmFyaWVudDogSXRlbVZhcmlhbnQsIGlkeDogbnVtYmVyKT0+IHtcclxuICAgICAgICAgICAgdmFyaWVudC5xdWFudGl0eSA9IDA7XHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHZhcmllbnQucHJvcGVydGllcykuZm9yRWFjaCgodmFyaWVudEtleTogc3RyaW5nKT0+IHtcclxuICAgICAgICAgICAgICBpZiAoaWR4ID09IDApXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFyaWVudC5zZXQodmFyaWVudEtleSwgdmFyaWVudC5wcm9wZXJ0aWVzW3ZhcmllbnRLZXldKTtcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMudmFyaWVudHMuZ2V0KHZhcmllbnRLZXkpPy5pbmNsdWRlcyh2YXJpZW50LnByb3BlcnRpZXNbdmFyaWVudEtleV0pKVxyXG4gICAgICAgICAgICAgICAgdGhpcy52YXJpZW50cy5zZXQodmFyaWVudEtleSwgWy4uLih0aGlzLnZhcmllbnRzLmdldCh2YXJpZW50S2V5KSA/PyBbXSksIHZhcmllbnQucHJvcGVydGllc1t2YXJpZW50S2V5XV0pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGNvbnN0IGl0ZW1WYXJpYW50OiBJdGVtVmFyaWFudCB8IG51bGwgPSB0aGlzLmdldEl0ZW1WYXJpZW50KCk7XHJcbiAgICAgICAgICBpZiAoaXRlbVZhcmlhbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuaXRlbUltYWdlcyA9IGl0ZW1WYXJpYW50LnZhcmlhbnRJbWFnZXM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkRlc2NyaXB0aW9uXCIsIHRoaXMucmVzcG9uc2VEYXRhPy5uYW1lLCB0aGlzLnJlc3BvbnNlRGF0YT8uZGVzY3JpcHRvcj8ubmFtZSk7XHJcbiAgICAgICAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZSh0aGlzLnJlc3BvbnNlRGF0YT8ubmFtZSk7XHJcbiAgICAgICAgICB0aGlzLm1ldGFUYWdTZXJ2aWNlLnVwZGF0ZVRhZyh7IG5hbWU6ICdkZXNjcmlwdGlvbicsIGNvbnRlbnQ6IHRoaXMucmVzcG9uc2VEYXRhPy5kZXNjcmlwdG9yPy5uYW1lIH0pXHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLml0ZW1JbWFnZXMgPSB0aGlzLnJlc3BvbnNlRGF0YS5pdGVtSW1hZ2VzO1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5xdWFudGl0eSA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlckNhcnQoKS50aGVuKChjYXJ0UmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICBjYXJ0UmVzcG9uc2Uub25zdWNjZXNzID0gKGNhcnREYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuVVNFUl9DQVJUID0gY2FydERhdGEudGFyZ2V0LnJlc3VsdCBhcyB1bmtub3duIGFzIE9yZGVyZWRJdGVtc1tdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5VU0VSX0NBUlQ/LmZvckVhY2goKGl0ZW06IE9yZGVyZWRJdGVtcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoaXRlbS5pdGVtSWQgPT0gcHJvZHVjdElkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhLml0ZW1WYXJpYW50Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtVmFyaWFudCAmJiBpdGVtLnZhcmllbnRJZCA9PSBpdGVtVmFyaWFudC52YXJpYW50SWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVZhcmlhbnQucXVhbnRpdHkgPSBpdGVtLnF1YW50aXR5O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5xdWFudGl0eSA9IGl0ZW0ucXVhbnRpdHk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnF1YW50aXR5ID0gaXRlbS5xdWFudGl0eTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJXaGlzaGxpc3QoKS50aGVuKCh3aXNobGlzdFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgd2lzaGxpc3RSZXNwb25zZS5vbnN1Y2Nlc3MgPSAod2hpc2xpc3REYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuVVNFUl9XSVNITElTVCA9IHdoaXNsaXN0RGF0YS50YXJnZXQucmVzdWx0IGFzIHVua25vd24gYXMgT3JkZXJlZEl0ZW1zW107XHJcbiAgICAgICAgICAgICAgICB0aGlzLlVTRVJfV0lTSExJU1Q/LmZvckVhY2goKGl0ZW06IE9yZGVyZWRJdGVtcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoaXRlbS5pdGVtSWQgPT0gcHJvZHVjdElkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhLml0ZW1WYXJpYW50Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1WYXJpYW50OiBJdGVtVmFyaWFudCB8IG51bGwgPSB0aGlzLmdldEl0ZW1WYXJpZW50KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVZhcmlhbnQgJiYgaXRlbVZhcmlhbnQudmFyaWFudElkID09IGl0ZW0udmFyaWVudElkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1WYXJpYW50Lndpc2hsaXN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0l0ZW1Bc0Zhdm9yaXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0l0ZW1Bc0Zhdm9yaXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEltZyA9IHRoaXMucmVzcG9uc2VEYXRhPy5pdGVtSW1hZ2VzPy5bMF0/LmltZ1VybDtcclxuICAgICAgICAgICAgdGhpcy5nZXRQcm9kdWN0QnlDYXRlZ29yeSgpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnJlc3BvbnNlRGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgc2VsZWN0VmFyaWVudChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhcmllbnQuc2V0KGtleSwgdmFsdWUpO1xyXG4gICAgdGhpcy5yZXNwb25zZURhdGEuaXRlbVZhcmlhbnQuZm9yRWFjaCgodmFyaWVudDogSXRlbVZhcmlhbnQpPT4ge1xyXG4gICAgICBsZXQgZm91bmRWYXJpZW50ID0gdHJ1ZTtcclxuICAgICAgT2JqZWN0LmtleXModmFyaWVudC5wcm9wZXJ0aWVzKS5mb3JFYWNoKChwcm9wZXJ0eTogc3RyaW5nKT0+IHtcclxuICAgICAgICBmb3VuZFZhcmllbnQgPSAodGhpcy5zZWxlY3RlZFZhcmllbnQuZ2V0KHByb3BlcnR5KSA9PSB2YXJpZW50LnByb3BlcnRpZXNbcHJvcGVydHldKSAmJiBmb3VuZFZhcmllbnQ7XHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5zZWxlY3RlZFZhcmllbnQuZ2V0KHByb3BlcnR5KSwgdmFyaWVudC5wcm9wZXJ0aWVzW3Byb3BlcnR5XSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIGNvbnNvbGUubG9nKGZvdW5kVmFyaWVudCk7XHJcbiAgICAgIGlmIChmb3VuZFZhcmllbnQpIHtcclxuICAgICAgICB0aGlzLml0ZW1JbWFnZXMgPSB2YXJpZW50LnZhcmlhbnRJbWFnZXM7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50SW1nID0gdGhpcy5pdGVtSW1hZ2VzWzBdPy5pbWdVcmw7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJpY2UudmFsdWUgPSB2YXJpZW50Lml0ZW1WYXJpYW50UHJpY2UudmFsdWU7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJpY2UuZGlzY291bnRlZFByaWNlID0gdmFyaWVudC5pdGVtVmFyaWFudFByaWNlLmRpc2NvdW50ZWRQcmljZTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmljZS5zZWxsaW5nUHJpY2UgPSB2YXJpZW50Lml0ZW1WYXJpYW50UHJpY2Uuc2VsbGluZ1ByaWNlO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLml0ZW1JbnZlbnRvcnkgPSB2YXJpZW50Lml0ZW1JbnZlbnRvcnk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucXVhbnRpdHkgPSB0aGlzLmdldFZhcmllbnRRdWFudGl0eSh2YXJpZW50KTtcclxuICAgICAgICB0aGlzLmlzSXRlbUFzRmF2b3JpdGUgPSB0aGlzLmlzVmFyaWVudFByZXNlbnRJbldpc2h0bGlzdCh2YXJpZW50KTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgZ2V0SXRlbVZhcmllbnQoKTogSXRlbVZhcmlhbnQgfCBudWxsIHtcclxuICAgIGxldCBzZWxlY3RlZFZhcmllbnQ6IEl0ZW1WYXJpYW50IHwgbnVsbCA9IG51bGw7XHJcbiAgICB0aGlzLnJlc3BvbnNlRGF0YS5pdGVtVmFyaWFudD8uZm9yRWFjaCgodmFyaWVudDogSXRlbVZhcmlhbnQpPT4ge1xyXG4gICAgICBsZXQgZm91bmRWYXJpZW50ID0gdHJ1ZTtcclxuICAgICAgT2JqZWN0LmtleXModmFyaWVudC5wcm9wZXJ0aWVzKS5mb3JFYWNoKChwcm9wZXJ0eTogc3RyaW5nKT0+IHtcclxuICAgICAgICBmb3VuZFZhcmllbnQgPSAodGhpcy5zZWxlY3RlZFZhcmllbnQuZ2V0KHByb3BlcnR5KSA9PSB2YXJpZW50LnByb3BlcnRpZXNbcHJvcGVydHldKSAmJiBmb3VuZFZhcmllbnQ7XHJcbiAgICAgIH0pXHJcbiAgICAgIGlmIChmb3VuZFZhcmllbnQpXHJcbiAgICAgICAgc2VsZWN0ZWRWYXJpZW50ID0gdmFyaWVudDtcclxuICAgIH0pXHJcbiAgICBcclxuICAgIHJldHVybiBzZWxlY3RlZFZhcmllbnQ7XHJcbiAgfVxyXG5cclxuXHJcbiAgcm91dGVUb0hvbWUoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XHJcbiAgfVxyXG5cclxuICBzY3JlZW5XaWR0aDogYW55O1xyXG4gIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6IHJlc2l6ZVwiLCBbXCIkZXZlbnRcIl0pXHJcbiAgZ2V0U2NyZWVuU2l6ZSgpIHtcclxuICAgIHRoaXMuc2NyZWVuV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICB9XHJcblxyXG4gIGN1cnJlbnRJbWc6IGFueTtcclxuICBjaGFuZ2VJbWcodXJsOiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVudEltZyA9IHVybDtcclxuICB9XHJcblxyXG4gIGdldEtleXModmFyaWVudDogT2JqZWN0KTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHZhcmllbnQpO1xyXG4gIH1cclxuXHJcbiAgZ29Ub0NhcnQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc0l0ZW1PdXRPZlN0b2NrKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICd3YXJuJywgc3VtbWFyeTogJ0NhcnQnLCBkZXRhaWw6ICdJdGVtIGlzIG5vdCBhdmFpbGFibGUgYXMgb2Ygbm93LiBXZSB3aWxsIG5vdGlmeSB5b3Ugb25jZSBhdmFpbGFibGUnIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMucmVzcG9uc2VEYXRhLnF1YW50aXR5KVxyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5xdWFudGl0eSA9IDE7XHJcbiAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub0NhcnQodGhpcy5yZXNwb25zZURhdGEpO1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvY2FydCddKTtcclxuICB9XHJcblxyXG4gIGFkZFRvQ2FydCh0eXBlOiAnQUREJyB8ICdTVUJTVFJBQ1QnID0gJ0FERCcpIHtcclxuICAgIGlmICh0aGlzLmlzSXRlbU91dE9mU3RvY2spIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ3dhcm4nLCBzdW1tYXJ5OiAnQ2FydCcsIGRldGFpbDogJ0l0ZW0gaXMgbm90IGF2YWlsYWJsZSBhcyBvZiBub3cuIFdlIHdpbGwgbm90aWZ5IHlvdSBvbmNlIGF2YWlsYWJsZScgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yZXNwb25zZURhdGEuaXRlbVZhcmlhbnQ/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgaXRlbVZhcmllbnQ6IEl0ZW1WYXJpYW50IHwgbnVsbCA9IHRoaXMuZ2V0SXRlbVZhcmllbnQoKTtcclxuICAgICAgaWYgKGl0ZW1WYXJpZW50KSB7XHJcbiAgICAgICAgaXRlbVZhcmllbnQucXVhbnRpdHkgPSBpdGVtVmFyaWVudC5xdWFudGl0eSsxO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnF1YW50aXR5ID0gaXRlbVZhcmllbnQucXVhbnRpdHk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuaXRlbUludmVudG9yeSA9IGl0ZW1WYXJpZW50Lml0ZW1JbnZlbnRvcnk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuaXRlbUltYWdlcyA9IGl0ZW1WYXJpZW50LnZhcmlhbnRJbWFnZXM7XHJcbiAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9DYXJ0KHRoaXMucmVzcG9uc2VEYXRhIGFzIFByb2R1Y3QsIGl0ZW1WYXJpZW50Py52YXJpYW50SWQpO1xyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIGlmICghdGhpcy5yZXNwb25zZURhdGE/LnF1YW50aXR5KVxyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnF1YW50aXR5ID0gMDtcclxuICAgICAgaWYgKHR5cGUgPT0gJ0FERCcpIHtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5xdWFudGl0eSArPSAxO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnF1YW50aXR5IC09IDE7XHJcbiAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9DYXJ0KHRoaXMucmVzcG9uc2VEYXRhIGFzIFByb2R1Y3QpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ29Ub0ZpbHRlcihjYXRlZ29yeTogc3RyaW5nKSB7XHJcbiAgICBjYXRlZ29yeSA9IGNhdGVnb3J5LnJlcGxhY2VBbGwoXCIgXCIsIFwiX1wiKVxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydsaXN0J10sIHsgcXVlcnlQYXJhbXM6IHsgY2F0ZWdvcnk6IGNhdGVnb3J5IH0gfSk7XHJcbiAgfVxyXG5cclxuICBhZGRUb0Zhdm91cml0ZSgpIHtcclxuICAgIHRoaXMuaXNJdGVtQXNGYXZvcml0ZSA9IHRydWU7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdTdWNjZXNzJywgZGV0YWlsOiAnSXRlbSBhZGRlZCB0byB5b3VyIHdpc2hsaXN0Jywga2V5OiAnd2lzaGxpc3QnIH0pO1xyXG4gICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhLml0ZW1WYXJpYW50Py5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW1WYXJpZW50OiBJdGVtVmFyaWFudCB8IG51bGwgPSB0aGlzLmdldEl0ZW1WYXJpZW50KCk7XHJcbiAgICAgIGlmIChpdGVtVmFyaWVudCkge1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLml0ZW1JbnZlbnRvcnkgPSBpdGVtVmFyaWVudC5pdGVtSW52ZW50b3J5O1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLml0ZW1JbWFnZXMgPSBpdGVtVmFyaWVudC52YXJpYW50SW1hZ2VzO1xyXG4gICAgICAgIGl0ZW1WYXJpZW50Lndpc2hsaXN0ID0gdHJ1ZTsgXHJcbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9GYXZvdXJpdGUodGhpcy5yZXNwb25zZURhdGEgYXMgUHJvZHVjdCwgaXRlbVZhcmllbnQudmFyaWFudElkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9GYXZvdXJpdGUodGhpcy5yZXNwb25zZURhdGEgYXMgUHJvZHVjdCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlbW92ZVRvRmF2b3VyaXRlKCkge1xyXG4gICAgdGhpcy5pc0l0ZW1Bc0Zhdm9yaXRlID0gZmFsc2U7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6ICdTdWNjZXNzJywgZGV0YWlsOiAnSXRlbSByZW1vdmVkIGZyb20geW91ciB3aXNobGlzdCcsIGtleTogJ3dpc2hsaXN0JyB9KTtcclxuICAgIGlmICh0aGlzLnJlc3BvbnNlRGF0YS5pdGVtVmFyaWFudD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBpdGVtVmFyaWVudDogSXRlbVZhcmlhbnQgfCBudWxsID0gdGhpcy5nZXRJdGVtVmFyaWVudCgpO1xyXG4gICAgICBpZiAoaXRlbVZhcmllbnQpIHtcclxuICAgICAgICBpdGVtVmFyaWVudC53aXNobGlzdCA9IGZhbHNlOyBcclxuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLnJlbW92ZUl0ZW1Gcm9tRmF2b3VyaXRlKHRoaXMucmVzcG9uc2VEYXRhLnZhcmllbnRJZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2FydFNlcnZpY2UucmVtb3ZlSXRlbUZyb21GYXZvdXJpdGUodGhpcy5yZXNwb25zZURhdGEudmFyaWVudElkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFByb2R1Y3RCeUNhdGVnb3J5KCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRQcm9kdWN0QnlDYXRlZ29yeUlkKHRoaXMucmVzcG9uc2VEYXRhPy5pdGVtQ2F0ZWdvcmlzYXRpb24/Lml0ZW1DYXRlZ29yaWVzPy5bMF0/LnJlZklkID8/IFwiXCIpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnJlbGF0ZWRQcm9kdWN0RGF0YSA9IHJlc3BvbnNlLmRhdGE/LmZpbHRlcigocHJvZHVjdDogUHJvZHVjdCkgPT4gdGhpcy5yZXNwb25zZURhdGEuaXRlbUlkICE9IHByb2R1Y3QuaXRlbUlkKTtcclxuICAgICAgaWYgKHRoaXMucmVsYXRlZFByb2R1Y3REYXRhPy5sZW5ndGggPT0gMClcclxuICAgICAgICB0aGlzLmdldFByb2R1Y3RCeUNvbGxlY3Rpb24oKTtcclxuICAgIH0pXHJcbiAgfVxyXG4gIGdldFByb2R1Y3RCeUNvbGxlY3Rpb24oKSB7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFByb2R1Y3RCeUNvbGxlY3Rpb25JZCh0aGlzLnJlc3BvbnNlRGF0YT8uaXRlbUNhdGVnb3Jpc2F0aW9uPy5pdGVtQ29sbGVjdGlvbj8uWzBdLnJlZklkID8/IFwiXCIpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PiB7XHJcbiAgICAgIHRoaXMucmVsYXRlZFByb2R1Y3REYXRhID0gcmVzcG9uc2UuZGF0YT8uZmlsdGVyKChwcm9kdWN0OiBQcm9kdWN0KSA9PiB0aGlzLnJlc3BvbnNlRGF0YS5pdGVtSWQgIT0gcHJvZHVjdC5pdGVtSWQpO1xyXG4gICAgfSlcclxuICB9XHJcbiAgY2hhbmdlUHJvZHVjdChwcm9kdWN0OiBQcm9kdWN0KSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9kZXRhaWxzJ10sIHtxdWVyeVBhcmFtczoge2lkOiBwcm9kdWN0Lml0ZW1JZH19KTtcclxuICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID0gMDtcclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gIH1cclxuICBnZXRLZXlCeUlkeChwcm9wZXJ0eTogYW55LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMocHJvcGVydHkpW2luZGV4XTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VmFyaWVudFF1YW50aXR5KHByb2R1Y3RWYXJpZW50OiBJdGVtVmFyaWFudCk6IG51bWJlciB7XHJcbiAgICBsZXQgaXRlbVF1YW50aXR5OiBudW1iZXIgPSAwO1xyXG4gICAgdGhpcy5VU0VSX0NBUlQ/LmZvckVhY2goKGl0ZW06IE9yZGVyZWRJdGVtcyk9PiB7XHJcbiAgICAgICAgaWYgKHByb2R1Y3RWYXJpZW50LnZhcmlhbnRJZCA9PSBpdGVtLnZhcmllbnRJZCkgXHJcbiAgICAgICAgICBpdGVtUXVhbnRpdHkgPSBpdGVtLnF1YW50aXR5O1xyXG4gICAgfSlcclxuICAgIHJldHVybiBpdGVtUXVhbnRpdHk7XHJcbiAgfVxyXG4gIHByaXZhdGUgaXNWYXJpZW50UHJlc2VudEluV2lzaHRsaXN0KHByb2R1Y3RWYXJpZW50OiBJdGVtVmFyaWFudCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHByZXNlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHRoaXMuVVNFUl9XSVNITElTVD8uZm9yRWFjaCgoaXRlbTogT3JkZXJlZEl0ZW1zKT0+IHtcclxuICAgICAgICBpZiAocHJvZHVjdFZhcmllbnQudmFyaWFudElkID09IGl0ZW0udmFyaWVudElkKSBcclxuICAgICAgICAgIHByZXNlbnQgPSB0cnVlO1xyXG4gICAgfSlcclxuICAgIHJldHVybiBwcmVzZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzSXRlbU91dE9mU3RvY2soKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZURhdGEuaXRlbUludmVudG9yeT8ub3BlbmluZ1N0b2NrID09IDA7XHJcbiAgfVxyXG4gIGdldCBjdXJyZW5jeSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIEJVU0lORVNTX0NPTlNUQU5UUy5DVVJSRU5DWTtcclxuICB9XHJcbiAgZ2V0IGlzSXRlbUxvd1N0b2NrKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2VEYXRhPy5pdGVtSW52ZW50b3J5Py5vcGVuaW5nU3RvY2sgPCA1O1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxyXG4gIDxwLXRvYXN0IHBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCIgW2Jhc2VaSW5kZXhdPVwiMTAwMDAwMDAwMDBcIiBbYXV0b1pJbmRleF09XCJ0cnVlXCIga2V5PVwid2lzaGxpc3RcIj48L3AtdG9hc3Q+XHJcbiAgPHNlY3Rpb24gY2xhc3M9XCJ0b3RhbC1jb250YWluZXJcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9MYXlvdXRdPVwic3R5bGVzPy5sYXlvdXRcIiBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiPlxyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJjb250YWluZXJcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIj5cclxuICAgICAgPGRpdj48YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246IG5vbmU7IGNvbG9yOiAjMDI2N0MxXCIgKGNsaWNrKT1cInJvdXRlVG9Ib21lKClcIj5Ib21lPC9hPiAvIDxzcGFuPnt7IHJlc3BvbnNlRGF0YT8ubmFtZSB8IHRpdGxlY2FzZSB9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNiBjb2wtMTJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kLWltZy1ibG9ja1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWxpc3RcIiAqbmdJZj1cInNjcmVlbldpZHRoID4gNTAwXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW1nIG9mIGl0ZW1JbWFnZXNcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWcuaW1nVXJsXCIgYWx0PVwiXCIgY2xhc3M9XCJpbWdcIiAoY2xpY2spPVwiY2hhbmdlSW1nKGltZy5pbWdVcmwpXCIgKm5nSWY9XCJpbWcuaW1nVXJsXCIgW3N0eWxlLmJvcmRlckNvbG9yXT1cImltZy5pbWdVcmwgPT0gY3VycmVudEltZyA/IGRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3IgOiAndHJhbnNwYXJlbnQnXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGdcIiAqbmdJZj1cIiFpbWcuaW1nVXJsXCI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1pbWdcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudEltZ1wiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1uZ3gtaW1hZ2Utem9vbVxyXG4gICAgICAgICAgICAgICAgICBbdGh1bWJJbWFnZV09XCJjdXJyZW50SW1nXCIgXHJcbiAgICAgICAgICAgICAgICAgIFtmdWxsSW1hZ2VdPVwiY3VycmVudEltZ1wiIFxyXG4gICAgICAgICAgICAgICAgICBbem9vbU1vZGVdPVwiJ2hvdmVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgIFttYWduaWZpY2F0aW9uXT1cIjJcIiBcclxuICAgICAgICAgICAgICAgICAgW2xlbnNIZWlnaHRdPVwiMTAwXCJcclxuICAgICAgICAgICAgICAgICAgW2xlbnNXaWR0aF09XCIxMDBcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7XCJcclxuICAgICAgICAgICAgICAgID48L2xpYi1uZ3gtaW1hZ2Utem9vbT5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWN1cnJlbnRJbWdcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9pLnBvc3RpbWcuY2MvaFBTMkpwVjAvbm8taW1hZ2UtYXZhaWxhYmxlLmpwZ1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0l0ZW1Mb3dTdG9ja1wiIGNsYXNzPVwiZmFzdC1jaGVja291dFwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2kuaW1naGlwcG8uY29tL2ZpbGVzL3gyT0dEMTcyMzgxNTUxMy5wbmdcIiBhbHQ9XCJcIiBzdHlsZT1cImhlaWdodDogMzBweCAhaW1wb3J0YW50OyB3aWR0aDogMzBweCAhaW1wb3J0YW50O1wiIHRpdGxlPVwiRmFzdCBDaGVja291dFwiIChjbGljayk9XCJnb1RvQ2FydCgpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsbGluZy1mYXN0LXRhZ1wiPlNlbGxpbmcgRmFzdDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9pLnBvc3RpbWcuY2MvaFBTMkpwVjAvbm8taW1hZ2UtYXZhaWxhYmxlLmpwZ1wiICpuZ0lmPVwiIWN1cnJlbnRJbWdcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctbGlzdFwiICpuZ0lmPVwic2NyZWVuV2lkdGggPD0gNTAwXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW1nIG9mIGl0ZW1JbWFnZXNcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWcuaW1nVXJsXCIgYWx0PVwiXCIgY2xhc3M9XCJpbWdcIiAoY2xpY2spPVwiY2hhbmdlSW1nKGltZy5pbWdVcmwpXCIgKm5nSWY9XCJpbWcuaW1nVXJsXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGdcIiAqbmdJZj1cIiFpbWcuaW1nVXJsXCI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02IGNvbC0xMiBwcm9kdWN0LWRldGFpbFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbGFyZ2VcIj57e3Jlc3BvbnNlRGF0YT8ubmFtZX19PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgc3R5bGU9XCJnYXA6IDEwcHg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IG1hcmdpbi10b3A6IDE1cHg7XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZVwiIFtuZ0NsYXNzXT1cInsnZGlzY291bnQtcHJpY2UnOiByZXNwb25zZURhdGE/LnByaWNlPy5kaXNjb3VudGVkUHJpY2V9XCIgKm5nSWY9XCJyZXNwb25zZURhdGE/LnByaWNlPy5kaXNjb3VudGVkUHJpY2UgIT0gcmVzcG9uc2VEYXRhPy5wcmljZT8udmFsdWVcIj48c3BhbiBbaW5uZXJIVE1MXT0nY3VycmVuY3knPjwvc3Bhbj4ge3tyZXNwb25zZURhdGE/LnByaWNlPy52YWx1ZX19PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZVwiICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5wcmljZT8uZGlzY291bnRlZFByaWNlXCI+PHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+IHt7cmVzcG9uc2VEYXRhPy5wcmljZT8uZGlzY291bnRlZFByaWNlfX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRheC10ZXh0XCI+KGV4Y2x1ZGluZyBhbGwgdGF4ZXMpPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LWRlc2MgYm9keS1sYXJnZVwiICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5icmllZlwiIFtpbm5lckhUTUxdPVwicmVzcG9uc2VEYXRhLmJyaWVmXCI+PC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1wYXJlbnRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dC1vZi1zdG9ja1wiICpuZ0lmPVwiaXNJdGVtT3V0T2ZTdG9ja1wiPk91dCBvZiBTdG9jazwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVhbnRpdHlcIiAqbmdJZj1cInJlc3BvbnNlRGF0YT8ucXVhbnRpdHlcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGx1c1wiIChjbGljayk9XCJhZGRUb0NhcnQoJ1NVQlNUUkFDVCcpXCI+LTwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogNTBweDtcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+e3tyZXNwb25zZURhdGEucXVhbnRpdHl9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS0gPGlucHV0IHR5cGU9XCJudW1iZXJcIiAoa2V5dXApPVwiY2hhbmdlUXVhbnRpdHkocXVhbnRpdHkudmFsdWUpXCIgW3ZhbHVlXT1cImFkZGVkUXVhbnRpdHlcIiAjcXVhbnRpdHk+IC0tPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaW51c1wiIChjbGljayk9XCJhZGRUb0NhcnQoJ0FERCcpXCI+KzwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFyZXNwb25zZURhdGE/LnF1YW50aXR5ICYmICFpc0l0ZW1PdXRPZlN0b2NrXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNlbmQtYnRuXCIgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2lkXT1cImJ1dHRvbklkXCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCIgW2NvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAoY2xpY2spPVwiYWRkVG9DYXJ0KClcIj57e2RhdGE/LmFjdGlvbj8uYnV0dG9ucz8uWzBdPy5jb250ZW50Py5sYWJlbH19PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmF2b3VyaXRlXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgKGNsaWNrKT1cImFkZFRvRmF2b3VyaXRlKClcIiAqbmdJZj1cIiFpc0l0ZW1Bc0Zhdm9yaXRlXCI+ZmF2b3JpdGVfYm9yZGVyPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAoY2xpY2spPVwicmVtb3ZlVG9GYXZvdXJpdGUoKVwiICpuZ0lmPVwiaXNJdGVtQXNGYXZvcml0ZVwiPmZhdm9yaXRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2YXJpZW50IG9mIHZhcmllbnRzIHwga2V5dmFsdWVcIj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFyaWVudC1rZXlcIj57e3ZhcmllbnQua2V5fX08L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgc3R5bGU9XCJnYXA6IDVweDtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHZhcmllbnRWYWx1ZSBvZiB2YXJpZW50LnZhbHVlXCIgY2xhc3M9XCJ2YXJpZW50LXRhZ1wiIFtuZ0NsYXNzXT1cInsndmFyaWVudC1zZWxlY3RlZCc6IHNlbGVjdGVkVmFyaWVudC5nZXQodmFyaWVudC5rZXkpID09IHZhcmllbnRWYWx1ZX1cIiAoY2xpY2spPVwic2VsZWN0VmFyaWVudCh2YXJpZW50LmtleSwgdmFyaWVudFZhbHVlKVwiPnt7dmFyaWVudFZhbHVlfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+ICBcclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LXNrdVwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5pdGVtSW52ZW50b3J5XCI+U0tVIDpcclxuICAgICAgICAgICAgICB7e3Jlc3BvbnNlRGF0YS5pdGVtSW52ZW50b3J5Py5vcGVuaW5nU3RvY2t9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5pdGVtQ2F0ZWdvcmlzYXRpb24/Lml0ZW1DYXRlZ29yaWVzXCI+Q2F0ZWdvcnkgOiA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImdvVG9GaWx0ZXIoY2F0LnJlZk5hbWUpXCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjYXQgb2YgcmVzcG9uc2VEYXRhPy5pdGVtQ2F0ZWdvcmlzYXRpb24/Lml0ZW1DYXRlZ29yaWVzO2xldCBpZHggPSBpbmRleFwiPnt7Y2F0LnJlZk5hbWUgfCB0aXRsZWNhc2V9fSA8bmctY29udGFpbmVyICpuZ0lmPVwiKGlkeCsxKSAhPSByZXNwb25zZURhdGE/Lml0ZW1DYXRlZ29yaXNhdGlvbj8uaXRlbUNhdGVnb3JpZXM/Lmxlbmd0aFwiPiw8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9hPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKHJlc3BvbnNlRGF0YT8uaXRlbUNhdGVnb3Jpc2F0aW9uPy5wcm9kdWN0VGFncz8ubGVuZ3RoIHx8IDApID4gMFwiPlRhZ3MgOiA8c3BhblxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRhZyBvZiByZXNwb25zZURhdGE/Lml0ZW1DYXRlZ29yaXNhdGlvbj8ucHJvZHVjdFRhZ3NcIj57e3RhZy50YWdOYW1lfX0sXHJcbiAgICAgICAgICAgICAgPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93IHByb2QtZGVzY1wiICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5kZXNjcmlwdG9yPy5uYW1lXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1ncm91cFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhYlwiPkRlc2NyaXB0aW9uPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCIgY2xhc3M9XCJib2R5LWxhcmdlXCIgKm5nSWY9XCJyZXNwb25zZURhdGE/LmRlc2NyaXB0b3JcIiBbaW5uZXJIVE1MXT1cInJlc3BvbnNlRGF0YT8uZGVzY3JpcHRvcj8ubmFtZVwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvc2VjdGlvbj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZWxhdGVkUHJvZHVjdERhdGE/Lmxlbmd0aFwiPlxyXG4gICAgICA8c2ltcG8tZmVhdHVyZWQtcHJvZHVjdHMgW2VkaXRdPVwiZmFsc2VcIiBbZGF0YV09XCJmZWF0dXJlUHJvZHVjdERhdGFcIiBbcmVzcG9uc2VEYXRhXT1cInJlbGF0ZWRQcm9kdWN0RGF0YVwiIFtpc1JlbGF0ZWRQcm9kdWN0XT1cInRydWVcIiAoY2hhbmdlRGV0YWlsUHJvZHVjdCk9XCJjaGFuZ2VQcm9kdWN0KCRldmVudClcIj48L3NpbXBvLWZlYXR1cmVkLXByb2R1Y3RzPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0RlbGV0ZVwiIFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZGVsZXRlfVwiPlxyXG4gICAgICA8c2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiPjwvc2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L3NlY3Rpb24+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5neC1za2VsZXRvbi1sb2FkZXIgKm5nSWY9XCJpc0xvYWRpbmdcIiBjb3VudD1cIjFcIiBhcHBlYXJhbmNlPVwiY2lyY2xlXCIgW3RoZW1lXT1cIntcclxuICB3aWR0aDogJzEwMCUnLFxyXG4gIGhlaWdodDogJzQwdmgnLFxyXG4gICdib3JkZXItcmFkaXVzJzogJzEwcHgnLFxyXG4gICdwb3NpdGlvbic6ICdyZWxhdGl2ZScsXHJcbiAgJ3JpZ2h0JzogJzVweCdcclxufVwiPlxyXG48L25neC1za2VsZXRvbi1sb2FkZXI+XHJcblxyXG48IS0tIDxkaXYgY2xhc3M9XCJtb2RhbCBmYWRlXCIgaWQ9XCJpdGVtVmFyaWVudHNcIiB0YWJpbmRleD1cIi0xXCIgYXJpYS1sYWJlbGxlZGJ5PVwiaXRlbVZhcmllbnRzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+UmlnaHQtdG8tTGVmdCBNb2RhbDwvaDU+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiBkYXRhLWJzLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPjwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICBUaGlzIGNvbnRlbnQgaXMgYWxpZ25lZCBmcm9tIHJpZ2h0IHRvIGxlZnQuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGRhdGEtYnMtZGlzbWlzcz1cIm1vZGFsXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPlNhdmUgY2hhbmdlczwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4gLS0+XHJcbiJdfQ==