@annalib/anna-core 6.0.1 → 6.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -427,7 +427,8 @@ export class AnnaNonEditableGenericTableComponent {
427
427
  }
428
428
  disableActiveFilterClearButton() {
429
429
  let selectedFilterSet = new Set(this.annaFilterService.appliedFiltersArray);
430
- let isSortPresent = (this.annaSortService.columnSortState.size > 0 && this.annaSortService.columnSortState.get(this.annaFilterService.selectedRadio) != "DEFAULT");
430
+ let isSortPresent = (this.annaSortService.columnSortState.size > 0 && this.annaSortService.columnSortState.has(this.annaFilterService.selectedRadio)
431
+ && this.annaSortService.columnSortState.get(this.annaFilterService.selectedRadio) != "DEFAULT");
431
432
  this.disableColumnClearAllBtn = selectedFilterSet.has(this.annaFilterService.selectedRadio) || isSortPresent ? false : true;
432
433
  }
433
434
  getSliderData(header) {
@@ -1784,4 +1785,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
1784
1785
  type: ViewChildren,
1785
1786
  args: ['tableHeader']
1786
1787
  }] } });
1787
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWdlbmVyaWMtdGFibGUtbGliL2NvbXBvbmVudHMvYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29yZS9zcmMvbGliL2FubmEtZ2VuZXJpYy10YWJsZS1saWIvY29tcG9uZW50cy9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlL2FubmEtbm9uLWVkaXRhYmxlLWdlbmVyaWMtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsNEJBQTRCO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBNEIsaUJBQWlCLEVBQWdDLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVNLGdDQUFnQztBQUNoQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFLbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFlLE1BQU0sc0VBQXNFLENBQUM7QUFJOUgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUMvRixPQUFPLEVBQUUs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QUE1QixNQUFNO2dCQWtHc0IscUJBQXFCO3NCQUFqRCxZQUFZO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuLy8gQW5ndWxhciBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZHJlbiwgUXVlcnlMaXN0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzLCBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8vIFRoaXJkIHBhcnR5IGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcclxuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyLXNsaWRlci9uZ3gtc2xpZGVyJztcclxuaW1wb3J0IHsgY2xvbmVEZWVwLCBpc0VxdWFsLCBtYXAsIHVuaXEsIHNvcnRCeSB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcclxuXHJcblxyXG4vL3N1Yi1lbnRyaWVzIG9mIGFubmEgbGliIGltcG9ydCBzdGF0ZW1lbnRcclxuaW1wb3J0IHsgSUd0R2VuZXJhbENvbmZpZywgSUd0VGFibGVIZWFkZXIsIElIZWFkZXJJbmZvLCBJVG90YWxSb3dJbmZvIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtbm9uLWVkaXRhYmxlLWd0LW1vZGVscyc7XHJcbmltcG9ydCB7IEFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UsIE5nYkRhdGVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvc2VydmljZXMvYW5uYS1kYXRlLXRpbWUtZm9ybWF0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJV2Vla0NhbGVuZGFyIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtZ2xvYmFsLWRyb3Bkb3duLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IEd0Q29sdW1uSWNvbkVtaXR0ZWREYXRhLCBSYXRpbmdTZWxsZXJHcm91cEhpZXJhcmNoeSwgIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtZ2VuZXJpYy1kYXRhLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBTb3J0VHlwZSB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL21vZGVscy9hbm5hLXNvcnQubW9kZWwnO1xyXG5pbXBvcnQgeyByYWRpb0J1dHRvbk1vZGVsLCBUb29sdGlwTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS10b29sdGlwLm1vZGVsJztcclxuaW1wb3J0IHsgQW5uYVNvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvc2VydmljZXMvYW5uYS1zb3J0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbm5hRmlsdGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtZmlsdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbm5hR2VuZXJpY1RhYmxlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtZ2VuZXJpYy10YWJsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhbm5hLWNvcmUtbm9uLWVkaXRhYmxlLWdlbmVyaWMtdGFibGUtbGliJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbm5hTm9uRWRpdGFibGVHZW5lcmljVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcblxyXG4gIEBJbnB1dCgpIHNob3dTa2VsZXRvbkxvYWRpbmc6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgdGFibGVIZWFkZXJzOiBJR3RUYWJsZUhlYWRlcltdO1xyXG4gIEBJbnB1dCgpIHRhYmxlRGF0YTogYW55W107XHJcbiAgQElucHV0KCkgY2xvbmVkVGFibGVEYXRhOiBhbnlbXTtcclxuICBASW5wdXQoKSBudW1iZXJPZlNrZWxldG9uUm93czogbnVtYmVyW107XHJcbiAgQElucHV0KCkgZ3RHZW5lcmFsQ29uZmlnOiBJR3RHZW5lcmFsQ29uZmlnO1xyXG4gIEBJbnB1dCgpIHRvdGFsUm93SW5mbz86IElUb3RhbFJvd0luZm9bXTtcclxuICBASW5wdXQoKSBndERpbWVuc2lvbjogeyByb3dIZWlnaHQ6IG51bWJlciwgdGFibGVIZWlnaHQ6IHN0cmluZywgaGVhZGVySGVpZ2h0OiBudW1iZXIgfTtcclxuICBASW5wdXQoKSB0YWJsZUNsYXNzOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbWF4aW11bVJvd3NXaGljaENhbkJlUmVuZGVyZWRXaXRob3V0U2Nyb2xsOiBudW1iZXIgPSA1O1xyXG4gIEBJbnB1dCgpIGxpbWl0OiBudW1iZXIgPSAzMDsgXHJcbiAgQElucHV0KCkgaW5jbHVkZUJvcmRlckluVGFibGVIZWlnaHQ6IGJvb2xlYW4gPSB0cnVlOyBcclxuICBASW5wdXQoKSBkb3dubG9hZEluUHJvZ3Jlc3M6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcGVyY2VudERvbmU6IG51bWJlcjtcclxuICBASW5wdXQoKSBzdGFycmVkSW5Qcm9ncmVzczogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpIHRvZ2dsZUNoZWNrYm94ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB0b2dnbGVSb3dDaGVja2JveCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdG9nZ2xlSGVhZGVyQ2hlY2tib3ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHVuZG9JY29uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyQXBwbGllZFRvVGFibGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNvcnRpbmdBcHBsaWVkVG9UYWJsZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93Q2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmFkaW9CdXR0b25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY29sdW1uRmlsdGVyT3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjb2x1bW5GaWx0ZXJDbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGd0SWNvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGd0U1ZHSWNvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGd0VGV4dEFjdGlvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGd0Vmlld0RldGFpbENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRvd25sb2FkU3BvdERldGFpbHMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG5cclxuICB0YWJsZURhdGFXcmFwcGVyOiBhbnlbXTtcclxuICByb3dDaGVja2VkOiBib29sZWFuO1xyXG4gIGlzQWxsUm93c0NoZWNrZWQ6IGJvb2xlYW47XHJcbiAgbm9EYXRhV2lkdGg6IHN0cmluZyA9IFwiNTAlXCI7XHJcbiAgbWFya2VkRm9yQ3JlZGl0U3RhdHVzOiBzdHJpbmc7XHJcbiAgbWFya2VkRm9yTUdTdGF0dXM6IHN0cmluZztcclxuXHJcbiAgLy9Tb3J0IGFuZCBGaWx0ZXJcclxuICB0b29sVGlwZGF0YTogYW55O1xyXG4gIHRlbXBUb29sdGlwRGF0YTogYW55O1xyXG4gIHRvb2x0aXBSYWRpb1RleHRNYXA6IE1hcDxhbnksIGFueT47XHJcbiAgZmlsdGVyVGFiT2JqZWN0czogYW55W107XHJcbiAgdG9vbHRpcDogYW55O1xyXG4gIGNsb25lZFRvb2x0aXBEYXRhOiBhbnk7XHJcbiAgY2xvbmVkVG9vbHRpcFNlbGVjdGVkTWFwRGF0YTogYW55O1xyXG4gIHNlYXJjaEJhcjogc3RyaW5nO1xyXG4gIGRpc2FibGVDbGVhckFsbEJ0bjogYm9vbGVhbiA9IHRydWU7XHJcbiAgZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuOiBib29sZWFuID0gdHJ1ZTtcclxuICBhbGxTZWxlY3RlZCA9IDA7XHJcbiAgc2hvd0FsbDogYm9vbGVhbjtcclxuICBkaXNhYmxlQ2hlY2tib3hBcHBseTogYm9vbGVhbjtcclxuICBkaXNhYmxlU2xpZGVyQXBwbHlCdXR0b246IGJvb2xlYW47XHJcbiAgZGlzYWJsZVRpbWVBcHBseUJ1dHRvbjogYm9vbGVhbjtcclxuXHJcbiAgLy8gU2xpZGVyIEZpbHRlclxyXG4gIHNsaWRlck1pblZhbHVlOiBudW1iZXI7XHJcbiAgc2xpZGVyTWF4VmFsdWU6IG51bWJlcjtcclxuICBvcHRpb25zOiBPcHRpb25zID0ge1xyXG4gICAgZmxvb3I6IDAsXHJcbiAgICBjZWlsOiAwLFxyXG4gICAgc3RlcDogMC4xXHJcbiAgfTtcclxuICBzbGlkZXJWYWx1ZTogeyBtaW46IG51bWJlciwgbWF4OiBudW1iZXIgfTtcclxuICBzbGlkZXJGaWx0ZXJUZXh0Qm94U3RlcDogc3RyaW5nO1xyXG4gIHNsaWRlckVudGVyZWRNaW5WYWx1ZTogbnVtYmVyO1xyXG4gIHNsaWRlckVudGVyZWRNYXhWYWx1ZTogbnVtYmVyO1xyXG5cclxuICAvLyBDYWxlbmRhciBGaWx0ZXJcclxuICBjYWxlbmRhck1pbkVuYWJsZWREYXRlOiBOZ2JEYXRlVHlwZTtcclxuICBjYWxlbmRhck1heEVuYWJsZWREYXRlOiBOZ2JEYXRlVHlwZTtcclxuICBzZWxlY3RlZE1pbkRhdGU6IE5nYkRhdGVUeXBlO1xyXG4gIHNlbGVjdGVkTWF4RGF0ZTogTmdiRGF0ZVR5cGU7XHJcblxyXG4gIC8vV2VlayBGaWx0ZXJcclxuICBtdWx0aVdlZWtQaWNrZXJDb25maWc6IElXZWVrQ2FsZW5kYXI7XHJcblxyXG4gIC8vVGltZSBGaWx0ZXJcclxuICBzZWxlY3RlZEZyb21UaW1lOiBhbnlbXTtcclxuICBzZWxlY3RlZFRvVGltZTogYW55W107XHJcbiAgY2xvbmVkU2VsZWN0ZWRGcm9tVGltZTogYW55O1xyXG4gIGNsb25lZFNlbGVjdGVkVG9UaW1lOiBhbnk7XHJcbiAgZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0bjogYm9vbGVhbjtcclxuICB0YWJsZUNvbHVtbnM6IHN0cmluZ1tdID0gW107XHJcbiAgdG90YWxSb3dDb2x1bW5zOiBzdHJpbmdbXSA9IG51bGw7XHJcbiAgc2hvd011bHRpVGltZUNoZWNrYm94OiBib29sZWFuO1xyXG4gIHNob3daZXJvVGltZUNoZWNrYm94OiBib29sZWFuO1xyXG4gIHNob3dFbnRlclRpbWVDaGVja2JveDogYm9vbGVhbjtcclxuICBtdWx0aVRpbWVDaGVja2JveENoZWNrZWQ6IGJvb2xlYW47XHJcbiAgemVyb1RpbWVDaGVja2JveENoZWNrZWQ6IGJvb2xlYW47XHJcbiAgZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkOiBib29sZWFuO1xyXG4gIGJpbmRWYWx1ZUZ1bmNDYWxsZWQ6IGJvb2xlYW47XHJcblxyXG4gIGhpZXJhcmNoeVRvb2x0aXA6IHsgb3BlbjogKCkgPT4gdm9pZDsgY2xvc2U6ICgpID0+IHZvaWQ7IH07XHJcbiAgc2VsbGVyR3JvdXBIaWVyYXJjaHk6IFJhdGluZ1NlbGxlckdyb3VwSGllcmFyY2h5W107XHJcbiAgc2hvd0ZpbHRlclRvb2x0aXBUYWJzOiBib29sZWFuOyAvL0NoYW5nZSB0aGUgTmFtZVxyXG5cclxuICBpc1Njcm9sbGVkTGVmdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHJvd0JvcmRlcldpZHRoOiBudW1iZXIgPSAyO1xyXG4gIFxyXG4gIHNob3dTb3J0Q29tcG9uZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd0ZpbHRlckNvbXBvbmVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRlbXBTb3J0T3JkZXI6IFNvcnRUeXBlID0gbnVsbDtcclxuICAgIFxyXG4gIHRvb2x0aXBPcHRpb25zOiBUb29sdGlwTW9kZWxbXTtcclxuICBjbG9uZWRUb29sdGlwT3B0aW9uczogVG9vbHRpcE1vZGVsW107XHJcbiAgZGlzYWJsZVNlbGVjdEFsbDogYm9vbGVhbjtcclxuICBkaXNhYmxlQ2xlYXJBbGw6IGJvb2xlYW47XHJcbiAgc2VhcmNoSXRlbTogc3RyaW5nO1xyXG5cclxuICBkaXNhYmxlQ2FsZW5kYXJBcHBseUJ0bjogYm9vbGVhbjtcclxuICBjYWxlbmRhclNlbGVjdGlvbjogYW55ID0ge2Zyb21EYXRlOiBudWxsICwgdG9EYXRlOiBudWxsfTtcclxuXHJcbiAgc2hvd1NsaWRlck1pblZhbHVlRXJyb3I6IGJvb2xlYW47XHJcbiAgc2hvd1NsaWRlck1heFZhbHVlRXJyb3I6IGJvb2xlYW47XHJcbiAgaXNNaW5UZXh0Qm94RW1wdHk6IGJvb2xlYW47XHJcbiAgaXNNYXhUZXh0Qm94RW1wdHk6IGJvb2xlYW47XHJcbiAgc2VsZWN0ZWRMYWJlbDogc3RyaW5nO1xyXG5cclxuICBzdGFydFRpbWVIb3VyRXJyOiBib29sZWFuO1xyXG4gIHN0YXJ0VGltZU1pbkVycjogYm9vbGVhbjtcclxuICBlbmRUaW1lSG91ckVycjogYm9vbGVhbjtcclxuICBlbmRUaW1lTWluRXJyOiBib29sZWFuO1xyXG5cclxuICBzYW1lVG9vbHRpcENsaWNrZWQ6IGJvb2xlYW47XHJcbiAgbWFyZ2luVG9wOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ3RhYmxlSGVhZGVyJykgdmlld0NoaWxkVGFibGVIZWFkZXJzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcblxyXG4gIHNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQ6IG51bWJlcjtcclxuICBpc0ZpbHRlckNoYW5nZWQ6IGJvb2xlYW47XHJcbiAgaXNTb3J0Q2hhbmdlZDogYm9vbGVhbjtcclxuICBpc0RpZmZlcmVuY2VMZXNzVGhhbjI1UGVyY2VudDogYm9vbGVhbjtcclxuICBpbmNvcnJlY3RTbGlkZXJJbnB1dDogYm9vbGVhbjtcclxuICBzdGFydDogbnVtYmVyID0gMDtcclxuICBlbmQ6IG51bWJlciA9IHRoaXMubGltaXQgKyB0aGlzLnN0YXJ0O1xyXG4gIHJlbmRlcmVkRGF0YTogYW55W107IFxyXG4gIHNlbGVjdGVkSW52ZW50b3J5SWRGb3JEb3dubG9hZDogbnVtYmVyO1xyXG4gIHNlbGVjdGVkRGVtb2dyYXBoaWNGb3JEb3dubG9hZDogYW55O1xyXG4gIHNlbGVjdGVkUm93VHlwZUZvckRvd25sb2FkOiBzdHJpbmc7XHJcbiAgaGVpZ2h0T2ZDaGVja2JveFRvb2x0aXBGaWx0ZXI6IG51bWJlcjtcclxuICBpc05vRGF0YVRvRGlzcGxheVN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgc2VsZWN0ZWRTdGFycmVkT3JkZXJJZDogc3RyaW5nO1xyXG4gIFxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGFubmFTb3J0U2VydmljZTogQW5uYVNvcnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIGFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2U6IEFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYW5uYUZpbHRlclNlcnZpY2U6IEFubmFGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbm5hR2VuZXJpY1RhYmxlU2VydmljZTogQW5uYUdlbmVyaWNUYWJsZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuc2V0VG9vbHRpcFJhZGlvTmFtZXMoKTtcclxuICB9XHJcbiAgXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ICYmIHRoaXMuZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudC5pbmNsdWRlcyhcIk9SREVSX0xJU1RJTkdcIikgfHwgdGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09IFwiRFJSTElTVElOR1wiKXtcclxuICAgICAgdGhpcy5zZXRNYXJnaW5MZWZ0Rm9yRmlsdGVySWNvbigpO1xyXG4gICAgfSAgICBcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKHRoaXMuc2hvd1NrZWxldG9uTG9hZGluZykge1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMubnVtYmVyT2ZTa2VsZXRvblJvd3M7XHJcbiAgICAgIHRoaXMucmVuZGVyZWREYXRhID0gdGhpcy5udW1iZXJPZlNrZWxldG9uUm93cztcclxuICAgICAgdGhpcy5pc05vRGF0YVRvRGlzcGxheVN1YmplY3QkLm5leHQoZmFsc2UpO1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcCA9IG5ldyBNYXAoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYoY2hhbmdlc1tcInBlcmNlbnREb25lXCJdIHx8IGNoYW5nZXNbXCJkb3dubG9hZEluUHJvZ3Jlc3NcIl0gfHwgKCBjaGFuZ2VzW1wic3RhcnJlZEluUHJvZ3Jlc3NcIl0gJiYgY2hhbmdlc1tcInN0YXJyZWRJblByb2dyZXNzXCJdLmN1cnJlbnRWYWx1ZSAhPSB1bmRlZmluZWQgKSl7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiZG8gbm90aGluZ1wiKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNldEluaXRpYWxSb3dzRm9yVGFibGUoKTtcclxuICAgICAgdGhpcy5kaXNhYmxlRW5hYmxlRWFjaENvbHVtblRvb2x0aXBJY29uKCk7XHJcbiAgICAgIHRoaXMudGFibGVDb2x1bW5zID0gdGhpcy50YWJsZUhlYWRlcnMuZmlsdGVyKHggPT4geC52aXNpYmxlKS5tYXAoeCA9PiB4LmhlYWRlckluZm9bMF0ub2JqZWN0S2V5KTtcclxuICAgICAgaWYodGhpcy50YWJsZURhdGEgJiYgdGhpcy50YWJsZURhdGEubGVuZ3RoID09IDApe1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gQXJyYXkoMikuZmlsbCgwKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVkRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICAgICAgdGhpcy5tYXJnaW5Ub3AgPSAoLSB0aGlzLmd0RGltZW5zaW9uLnJvd0hlaWdodCAtICh0aGlzLmd0RGltZW5zaW9uLnJvd0hlaWdodC8yKSkgKyAncHgnO1xyXG4gICAgICAgIHRoaXMuaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JC5uZXh0KHRydWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgdGhpcy5pc05vRGF0YVRvRGlzcGxheVN1YmplY3QkLm5leHQoZmFsc2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNob3dTa2VsZXRvbkxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvL3NldHRpbmcgdGFibGUgY29sdW1uIGhlcmUgYXMgd2VsbCBiZWNhdXNlIHdoaWxlIHNob3dpbmcgc2tlbGV0b24gbG9hZGVyLCB3ZSBzaG91bGQgc2hvdyB0YWJsZSBoZWFkZXJzLlxyXG4gICAgaWYgKGNoYW5nZXNbJ3RhYmxlSGVhZGVycyddICYmICFpc0VxdWFsKGNoYW5nZXNbJ3RhYmxlSGVhZGVycyddLmN1cnJlbnRWYWx1ZSwgY2hhbmdlc1sndGFibGVIZWFkZXJzJ10ucHJldmlvdXNWYWx1ZSkpIHtcclxuICAgICAgdGhpcy50YWJsZUNvbHVtbnMgPSB0aGlzLnRhYmxlSGVhZGVycy5maWx0ZXIoeCA9PiB4LnZpc2libGUpLm1hcCh4ID0+IHguaGVhZGVySW5mb1swXS5vYmplY3RLZXkpO1xyXG4gICAgICB0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUgPSBuZXcgTWFwKCk7XHJcbiAgICAgIHRoaXMuc2V0Q29sdW1uU29ydFN0YXRlTWFwKCk7XHJcbiAgICAgIHRoaXMuc2V0QWN0aXZlU3RhdGVPYmplY3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1sndG90YWxSb3dJbmZvJ10gJiYgY2hhbmdlc1sndG90YWxSb3dJbmZvJ10uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMudG90YWxSb3dDb2x1bW5zID0gdGhpcy50b3RhbFJvd0luZm8ubWFwKHggPT4geC5jb2xOYW1lKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIHRyYWNrQnlGbihpbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBzZXRUb29sdGlwUmFkaW9OYW1lcygpIHtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcCA9IG5ldyBNYXAoKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJTdGFydFRpbWVGb3JGaWx0ZXJcIiwgXCJTdGFydCBUaW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkVuZFRpbWVGb3JGaWx0ZXJcIiwgXCJFbmQgVGltZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJzdGFydF90aW1lX2Zvcl9maWx0ZXJcIiwgXCJTdGFydCBUaW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImVuZF90aW1lX2Zvcl9maWx0ZXJcIiwgXCJFbmQgVGltZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwcmltYXJ5QUVOYW1lXCIsIFwiUHJpbWFyeSBBRVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZWdpb25cIiwgXCJSZWdpb25cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYWdlbmN5TmFtZVwiLCBcIkFnZW5jeVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJsb2NhdGlvblwiLCBcIkxvY2F0aW9uXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImFkdmVydGlzZXJOYW1lXCIsIFwiQWR2ZXJ0aXNlclwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwcm9kdWN0Q29kZVwiLCBcIlByb2R1Y3QgQ2F0ZWdvcnlcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZmxpZ2h0U3RhcnREYXRlXCIsIFwiU3RhcnQgRGF0ZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJmbGlnaHRFbmREYXRlXCIsIFwiRW5kIERhdGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib3JkZXJJZEFuZFJldk51bWJlclwiLCBcIlNUTiBPcmRlciMtUmV2I1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJhbHRlcm5hdGVPcmRlcklkXCIsIFwiQWx0L1JlcCBPcmRlciAjXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImdycFwiLCBcIkdSUFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJjcHBcIiwgXCJDUFBcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiaW1wc1wiLCBcIklNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiY3BtXCIsIFwiQ1BNXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9mZmVyZWRNR3NcIiwgXCJPZmZlcmVkIE1HXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm91dHN0YW5kaW5nUEVcIiwgXCJPL1MgUEVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib2ZmZXJlZEFEVXNcIiwgXCJPZmZlcmVkIEFEVXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidWREZWZpY2l0VmFsdWVcIiwgXCJPL1MgQXVkIERlbHRhXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInN0YXJ0RW5kVGltZU11bHRpXCIsIFwiVGltZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRWYWx1ZVwiLCBcIkJvb2tlZFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRTcG90c1wiLCBcIlNwb3RzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInVzZXJDaGFuZ2VzXCIsIFwiVXNlciBDaGFuZ2VzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJ1eWVyQ2hhbmdlc1wiLCBcIkJ1eWVyIENoYW5nZXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidXNlck1HXCIsIFwiVXNlciBNR1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ1c2VyQURVc1wiLCBcIlVzZXIgQURVc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJpbnZlbnRvcnlDb2RlXCIsIFwiSW52ZW50b3J5IENvZGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicHJvZ3JhbVwiLCBcIlByb2dyYW1cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYWdlbmN5XCIsIFwiQWdlbmN5XCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImFkdmVydGlzZXJcIiwgXCJBZHZlcnRpc2VyXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInN0YXJ0RGF0ZVwiLCBcIlN0YXJ0IERhdGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZW5kRGF0ZVwiLCBcIkVuZCBEYXRlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJjdlByZWVtcHRcIiwgXCIkIE1hZGVnb29kIFBFc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvc1ByZWVtcHRcIiwgXCIkIE8vUyBQRXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmN2VW5kZXJEbHlcIiwgXCJSZWNvdmVyZWQgVURcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib3NVbmRlckRseVwiLCBcIk8vcyBVbmRlciBEbHlcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicHJpbWFyeUFlXCIsIFwiUHJpbWFyeSBBRVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZWdpb25cIiwgXCJSZWdpb25cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmV2Q29kZTFcIiwgXCJSZXYgY29kZSAxXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9yZGVyTm9SZXZOb1wiLCBcIlNUTiBPcmRlciMtUmV2I1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZXZDb2RlMlwiLCBcIlJldiBjb2RlIDJcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmV2Q29kZTNcIiwgXCJSZXYgY29kZSAzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFwiLCBcIiQgQm9va2VkXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInNwb3RzXCIsIFwiU3BvdHNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG9zdGVkQXVkUGVyY2VudFwiLCBcIlBvc3RlZCAlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJldmlzaW9uXCIsIFwiUmV2aXNpb25cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYnV5ZXJPcmRlcklkXCIsIFwiQUxUL1JFUCBPcmRlciNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZGVtb1wiLFwiRGVtb1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRBZHVcIixcIiQgUG9zdGVkIEFEVXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwic2NoZWR1bGVkQWR1XCIsXCIkIFNjaGVkdWxlZCBBRFVzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImF1ZGllbmNlRGVmaWNpdFwiLFwiJCBPL1MgQXVkaWVuY2VcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG9zdGVkQXVkUGVyY2VudFwiLFwiUG9zdGVkIEF1ZGllbmNlICVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG90ZW50aWFsVW5pdHNWYWx1ZVwiLFwiUE9UIFVuaXRzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFVuaXRzVmFsdWVcIixcIkJvb2tlZCBVbml0c1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRBbW91bnRXaXRoWmVyb1JhdGluZ1ZhbHVlXCIsXCJUb3RhbCAkIEJvb2tlZFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRBbW91bnRQZXJjZW50YWdlV2l0aFplcm9SYXRpbmdWYWx1ZVwiLFwiJSBBZ2FpbnN0IEFsbCBEZW1vc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRBbW91bnRXaXRob3V0WmVyb1JhdGluZ1ZhbHVlXCIsXCIkQm9va2VkIFdpdGggSW1wcyjigJkwMDApXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEFtb3VudFBlcmNlbnRhZ2VXaXRob3V0WmVyb1JhdGluZ1ZhbHVlXCIsIFwiJSBBZ2FpbnN0IEFsbCBEZW1vc1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInRvdGFsQm9va2VkQW1vdW50VmFsdWVcIixcIlRvdGFsICRCb29rZWRcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYXZlcmFnZVVuaXRSYXRlVmFsdWVcIixcIkFVUlwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ0b3RhbEJvb2tlZEFtb3VudFdpdGhSYXRpbmdWYWx1ZVwiLCBcIiRCb29rZWQgV2l0aCBSYXRpbmdcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYXZlcmFnZVVuaXRSYXRlV2l0aFJhdGluZ1ZhbHVlXCIsIFwiQVVSIFdpdGggUmF0aW5nXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidG90YWxCb29rZWRBbW91bnRXaXRoSW1wcmVzc2lvblZhbHVlXCIsIFwiJEJvb2tlZCBXaXRoIElNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYXZlcmFnZVVuaXRSYXRlV2l0aEltcHJlc3Npb25WYWx1ZVwiLCBcIkFVUiBXaXRoIElNUFNcIik7XHJcbiAgICBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRVbml0c1dpdGhSYXRpbmdWYWx1ZVwiLCBcIkJvb2tlZCBVbml0cyBXaXRoIFJhdGluZ1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRVbml0c1dpdGhSYXRpbmdWYWx1ZVwiLCBcIlBvc3RlZCBVbml0cyBXaXRoIFJhdGluZ1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFVuaXRzV2l0aEltcHJlc3Npb25WYWx1ZVwiLCBcIkJvb2tlZCBVbml0cyBXaXRoIElNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG9zdGVkVW5pdHNXaXRoSW1wcmVzc2lvblZhbHVlXCIsIFwiUG9zdGVkIFVuaXRzIFdpdGggSU1QU1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFJhdGluZ3NcIiwgXCJCb29rZWQgUmF0aW5nXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZFJhdGluZ3NcIiwgXCJQb3N0ZWQgUmF0aW5nXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkSW1wcmVzc2lvbnNcIiwgXCJCb29rZWQgSU1QU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRJbXByZXNzaW9uc1wiLCBcIlBvc3RlZCBJTVBTXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkQXZlcmFnZVJhdGluZ1wiLCBcIkJvb2tlZCBBVkcgUmF0aW5nXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZEF2ZXJhZ2VSYXRpbmdcIiwgXCJQb3N0ZWQgQVZHIFJhdGluZ1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEF2ZXJhZ2VJbXByZXNzaW9uXCIsIFwiQm9va2VkIEFWRyBJTVBTXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZEF2ZXJhZ2VJbXByZXNzaW9uXCIsIFwiUG9zdGVkIEFWRyBJTVBTXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkQ3BwVmFsdWVcIiwgXCJCb29rZWQgQ1BQXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEVmZmVjdGl2ZUNwcFZhbHVlXCIsIFwiRWZmZWN0aXZlIENQUFwiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZENwbVZhbHVlXCIsIFwiQm9va2VkIENQTVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRFZmZlY3RpdmVDcG1WYWx1ZVwiLCBcIkVmZmVjdGl2ZSBDUE1cIik7XHJcbiAgICBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvcmRlclNvdXJjZVwiLFwiT3JkZXIgU291cmNlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9yZGVyQ2F0ZWdvcnlcIixcIlJldiBDYXRlZ29yeVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJjYXNoT3JUcmFkZVwiLFwiQy9UXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJldmlzaW9uU3RhcnREYXRlXCIsIFwiUmV2aXNpb24gU3RhcnQgRGF0ZVwiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIk9ESW1wc1wiLFwiT0QgSU1QU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJVREltcHNcIixcIlVEIElNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiT0RHcnBcIixcIk9EIEdSUFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJVREdycFwiLFwiVUQgR1JQXCIpOyBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ1ZEltcHNQZXJjZW50XCIsXCJVRCBJTVBTICVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidWRHcnBQZXJjZW50XCIsXCJVRCBHUlAgJVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvZEltcHNQZXJjZW50XCIsXCJPRCBJTVBTICVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib2RHcnBQZXJjZW50XCIsXCJPRCBHUlAgJVwiKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlVGFibGVEYXRhV3JhcHBlcigpIHtcclxuICAgIHRoaXMuc2hvd1NrZWxldG9uTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnRhYmxlRGF0YVdyYXBwZXIgPSBbXTtcclxuICAgIGxldCByb3dPYmplY3Q6IGFueTtcclxuICAgIGxldCBjb2x1bW5OYW1lOiBzdHJpbmc7XHJcbiAgICBsZXQgY29sdW1uT2JqZWN0OiB7IFt4OiBzdHJpbmddOiBhbnk7IH07XHJcbiAgICBsZXQgY29sdW1uT2JqZWN0S2V5O1xyXG4gICAgbGV0IGtleXNVc2VkRm9yVGFibGVEaXNwbGF5OiBzdHJpbmdbXTtcclxuICAgIGxldCBrZXlzVXNlZEZvckNvbHVtbjogc3RyaW5nW107XHJcbiAgICBsZXQgYWRkaXRpb25hbEluZm9PYmplY3Q6IHsgW3g6IHN0cmluZ106IGFueTsgfTtcclxuICAgIGxldCBhZGRpdGlvbmFsS2V5cztcclxuICAgIHRoaXMudGFibGVEYXRhLmZvckVhY2goKG9iajogeyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiB7XHJcbiAgICAgIHJvd09iamVjdCA9IHt9O1xyXG4gICAgICBrZXlzVXNlZEZvclRhYmxlRGlzcGxheSA9IFtdO1xyXG4gICAgICBmb3IgKHZhciBjb2xOdW0gaW4gdGhpcy50YWJsZUhlYWRlcnMpIHtcclxuICAgICAgICBjb2x1bW5PYmplY3QgPSB7fTtcclxuICAgICAgICBpZiAoIXRoaXMudGFibGVIZWFkZXJzW2NvbE51bV0udmlzaWJsZSkge1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbHVtbk5hbWUgPSBcIlwiO1xyXG4gICAgICAgIGtleXNVc2VkRm9yQ29sdW1uID0gW107XHJcbiAgICAgICAgdGhpcy50YWJsZUhlYWRlcnNbY29sTnVtXS5oZWFkZXJJbmZvLmZvckVhY2goKGhlYWRlcikgPT4ge1xyXG4gICAgICAgICAgaWYgKGhlYWRlci50eXBlT2ZCb2R5RGF0YSA9PT0gXCJTVFJJTkdcIikge1xyXG4gICAgICAgICAgICBjb2x1bW5PYmplY3RLZXkgPSBoZWFkZXIub2JqZWN0S2V5O1xyXG4gICAgICAgICAgICBjb2x1bW5PYmplY3RbY29sdW1uT2JqZWN0S2V5XSA9IG9ialtjb2x1bW5PYmplY3RLZXldO1xyXG4gICAgICAgICAgICBrZXlzVXNlZEZvclRhYmxlRGlzcGxheS5wdXNoKGNvbHVtbk9iamVjdEtleSk7XHJcbiAgICAgICAgICAgIGtleXNVc2VkRm9yQ29sdW1uLnB1c2goY29sdW1uT2JqZWN0S2V5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGhlYWRlci50eXBlT2ZCb2R5RGF0YSA9PT0gXCJJQ09OXCIpIHtcclxuICAgICAgICAgICAgY29sdW1uT2JqZWN0S2V5ID0gaGVhZGVyLnR5cGVPZkJvZHlEYXRhO1xyXG4gICAgICAgICAgICBjb2x1bW5PYmplY3RbY29sdW1uT2JqZWN0S2V5XSA9IG9ialtoZWFkZXIub2JqZWN0S2V5XTtcclxuICAgICAgICAgICAga2V5c1VzZWRGb3JDb2x1bW4ucHVzaChoZWFkZXIub2JqZWN0S2V5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGhlYWRlci50eXBlT2ZCb2R5RGF0YSA9PT0gXCJDSEVDS0JPWFwiKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbk9iamVjdEtleSA9IGhlYWRlci50eXBlT2ZCb2R5RGF0YTtcclxuICAgICAgICAgICAgY29sdW1uT2JqZWN0W2NvbHVtbk9iamVjdEtleV0gPSBvYmpbaGVhZGVyLm9iamVjdEtleV07XHJcbiAgICAgICAgICAgIGtleXNVc2VkRm9yQ29sdW1uLnB1c2goaGVhZGVyLm9iamVjdEtleSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXNVc2VkRm9yQ29sdW1uLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBjb2x1bW5OYW1lICs9IGtleXNVc2VkRm9yQ29sdW1uW2ldO1xyXG4gICAgICAgICAgaWYgKGkgIT09IGtleXNVc2VkRm9yQ29sdW1uLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgY29sdW1uTmFtZSArPSAnLCc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvd09iamVjdFtjb2x1bW5OYW1lXSA9IGNvbHVtbk9iamVjdDtcclxuICAgICAgfVxyXG4gICAgICBhZGRpdGlvbmFsSW5mb09iamVjdCA9IHt9O1xyXG4gICAgICBhZGRpdGlvbmFsS2V5cyA9IE9iamVjdC5rZXlzKG9iaikuZmlsdGVyKGtleSA9PiAha2V5c1VzZWRGb3JUYWJsZURpc3BsYXkuaW5jbHVkZXMoa2V5KSk7XHJcbiAgICAgIGFkZGl0aW9uYWxLZXlzLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBhZGRpdGlvbmFsSW5mb09iamVjdFtrZXldID0gb2JqW2tleV07XHJcbiAgICAgIH0pXHJcbiAgICAgIHJvd09iamVjdC5BZGRpdGlvbmFsSW5mbyA9IGFkZGl0aW9uYWxJbmZvT2JqZWN0O1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YVdyYXBwZXIucHVzaChyb3dPYmplY3QpO1xyXG4gICAgfSlcclxuICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy50YWJsZURhdGFXcmFwcGVyO1xyXG4gICAgdGhpcy5zaG93U2tlbGV0b25Mb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2VsZWN0T3JVbnNlbGVjdENoZWNrYm94KHJvd0RhdGE6IGFueSwgY29sdW1uS2V5czogYW55LCBpc0NoZWNrYm94U2VsZWN0ZWQ6IGFueSkge1xyXG4gICAgdGhpcy50b2dnbGVDaGVja2JveC5lbWl0KHsgcm93RGF0YSwgY29sdW1uS2V5cywgaXNDaGVja2JveFNlbGVjdGVkIH0pO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0VW5zZWxlY3RBbGxSb3dzKCkge1xyXG4gICAgdGhpcy50b2dnbGVIZWFkZXJDaGVja2JveC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RVbnNlbGVjdFJvdyhyb3dEYXRhOiBhbnkpIHtcclxuICAgIHRoaXMudG9nZ2xlUm93Q2hlY2tib3guZW1pdChyb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIHVuZG9DcmVkaXRlZFNwb3QoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnVuZG9JY29uQ2xpY2tlZC5lbWl0KHsgZGF0YSwgbWdPckNyZWRpdDogXCJDcmVkaXRcIiB9KTtcclxuICB9XHJcblxyXG4gIHVuZG9NZ1Nwb3QoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnVuZG9JY29uQ2xpY2tlZC5lbWl0KHsgZGF0YSwgbWdPckNyZWRpdDogXCJNYWtlR29vZFwiIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9Tb3J0IGFuZCBGaWx0ZXIgTG9naWMgYmVnaW5zIVxyXG4gIGNsb3NlVG9vbHRpcCgpIHtcclxuICAgIGlmICh0aGlzLnRvb2x0aXAgJiYgdGhpcy50b29sdGlwLmlzT3BlbigpKSB7XHJcbiAgICAgIHRoaXMudG9vbHRpcC5jbG9zZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy50b29sdGlwID0gbnVsbDtcclxuICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSBmYWxzZTtcclxuICAgIGlmICghdGhpcy5iaW5kVmFsdWVGdW5jQ2FsbGVkKSB7XHJcbiAgICAgIHRoaXMuY29sdW1uRmlsdGVyQ2xvc2VkLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzVG9vbHRpcEFjdGl2ZShoZWFkZXI6IGFueVtdKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pc1Rvb2x0aXBBY3RpdmUoaGVhZGVyLHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBiaW5kVGhlVmFsdWVUb1Rvb2xUaXAodG9vbHRpcDogYW55LCBoZWFkZXI6IElIZWFkZXJJbmZvKSB7XHJcblxyXG4gICAgdGhpcy5iaW5kVmFsdWVGdW5jQ2FsbGVkID0gdHJ1ZTtcclxuICAgIGxldCBjb250YWluZXJUb1Njcm9sbDtcclxuICAgIGlmICh0aGlzLmd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT09IFwiU1BPVERFVEFJTFNcIiB8fCB0aGlzLmd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT09IFwiRFJSTElTVElOR1wiKSB7XHJcbiAgICAgIGNvbnRhaW5lclRvU2Nyb2xsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInNjcm9sbGFibGUtY29udGFpbmVyXCIpWzBdO1xyXG4gICAgICB2YXIgbWVkaWFRdWVyeSA9IHdpbmRvdy5tYXRjaE1lZGlhKFwiKG1heC13aWR0aDogMTM2NnB4KVwiKTtcclxuICAgICAgaWYgKG1lZGlhUXVlcnkubWF0Y2hlcykge1xyXG4gICAgICAgIGNvbnRhaW5lclRvU2Nyb2xsLnNjcm9sbCgwLCB0aGlzLmd0R2VuZXJhbENvbmZpZy52ZXJ0aWNhbFNjcm9sbE9mZnNldEZvckZpbHRlclRvb2x0aXApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIGlmIHNhbWUgdG9vbHRpcCBvcGVuZWQgY2xvc2UgaXRcclxuICAgIGlmICh0b29sdGlwID09IHRoaXMudG9vbHRpcCkge1xyXG4gICAgICB0aGlzLmJpbmRWYWx1ZUZ1bmNDYWxsZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgZW5hYmxlZEhlYWRlcnM6IGFueVtdID0gW107XHJcbiAgICAgIHRoaXMuY2hlY2tJZlVuaXF1ZVZhbHVlUHJlc2VudEZvclRoZUhlYWRlcihoZWFkZXIsZW5hYmxlZEhlYWRlcnMpO1xyXG4gICAgICB0aGlzLm9wZW5Ub29sdGlwKHRvb2x0aXAsIGVuYWJsZWRIZWFkZXJzLGhlYWRlcik7XHJcblxyXG4gICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCAxNTAwICYmIHdpbmRvdy5pbm5lckhlaWdodCA8IDc2OCAmJiAhdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zbGlkZXJTZXQuaGFzKGhlYWRlci5maWx0ZXJTb3J0T2JqZWN0S2V5c1swXSkpIHtcclxuICAgICAgICB0aGlzLmNvbHVtbkZpbHRlck9wZW5lZC5lbWl0KCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2hvd0ZpbHRlclRvb2x0aXBUYWJzID0gaGVhZGVyLmZpbHRlclNvcnRPYmplY3RLZXlzLmxlbmd0aCA+IDE7XHJcbiAgICAgIGxldCBhY3RpdmVUYWIgPSB0aGlzLmZpbHRlclRhYk9iamVjdHNbMF07XHJcbiAgICAgIHRoaXMucG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGFjdGl2ZVRhYik7XHJcbiAgICAgIHRoaXMuYmluZFZhbHVlRnVuY0NhbGxlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tJZlVuaXF1ZVZhbHVlUHJlc2VudEZvclRoZUhlYWRlcihoZWFkZXI6IElIZWFkZXJJbmZvLCBlbmFibGVkSGVhZGVyczogYW55W10pe1xyXG4gICAgaGVhZGVyLmZpbHRlclNvcnRPYmplY3RLZXlzLmZvckVhY2goKGl0ZW06IHN0cmluZykgPT4ge1xyXG4gICAgICBsZXQgZGF0YVRvQ2hlY2sgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldEZpbHRlck9wdGlvbnNEYXRhKHRoaXMudGFibGVEYXRhLCB0aGlzLmNsb25lZFRhYmxlRGF0YSwgaXRlbSk7XHJcbiAgICAgIGlmKGl0ZW0gPT0gXCJwZXJpb2RcIil7XHJcbiAgICAgICAgICBsZXQgdW5pcVN0YXJ0RGF0ZSA9IHVuaXEoZGF0YVRvQ2hlY2subWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVbXCJzdGFydERhdGVcIl0pKTtcclxuICAgICAgICAgIGxldCB1bmlxRW5kRGF0ZSA9IHVuaXEoZGF0YVRvQ2hlY2subWFwKCh1OnsgW3g6IHN0cmluZ106IGFueTsgfSkgPT4gdVtcImVuZERhdGVcIl0pKTtcclxuICAgICAgICAgIGlmKHVuaXFTdGFydERhdGUubGVuZ3RoID4gMSB8fCB1bmlxRW5kRGF0ZS5sZW5ndGggPiAxIHx8IHRoaXMuaXNUb29sdGlwQWN0aXZlKFtpdGVtXSkpe1xyXG4gICAgICAgICAgICBlbmFibGVkSGVhZGVycy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBlbHNle1xyXG4gICAgICAgICAgbGV0IHZhbHVlcyA9IGRhdGFUb0NoZWNrLm1hcCgodTogeyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiB1W2l0ZW1dKTtcclxuICAgICAgICAvLyBpZiBsYXN0IGFwcGxpZWQgZmlsdGVyIGlzIHRoaXMgaGVhZGVyLCBwdXNoIGl0IGFsb3MgYXMgZW5hYmxlZEhlYWRlclxyXG4gICAgICAgIGxldCBhY3RpdmVBbmRMYXN0bHlBcHBsaWVkSGVhZGVyID0gZmFsc2U7XHJcbiAgICAgICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5hcHBsaWVkRmlsdGVyc0FycmF5Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuYXBwbGllZEZpbHRlcnNBcnJheVt0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmFwcGxpZWRGaWx0ZXJzQXJyYXkubGVuZ3RoLTFdID09IGl0ZW0pe1xyXG4gICAgICAgICAgICBhY3RpdmVBbmRMYXN0bHlBcHBsaWVkSGVhZGVyID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICBpZihoZWFkZXIuZmlsdGVyID09IFwiQ0hFQ0tCT1hcIiAmJiAodW5pcSh2YWx1ZXMpLmZpbHRlcihuID0+IG4hPW51bGwpLmxlbmd0aCA+IDEgfHwgYWN0aXZlQW5kTGFzdGx5QXBwbGllZEhlYWRlcikpe1xyXG4gICAgICAgICAgICBlbmFibGVkSGVhZGVycy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKGhlYWRlci5maWx0ZXIgIT0gXCJDSEVDS0JPWFwiICYmICh1bmlxKHZhbHVlcykuZmlsdGVyKG4gPT4gbiE9bnVsbCAmJiBuIT1cIi1cIikubGVuZ3RoID4gMSB8fCBhY3RpdmVBbmRMYXN0bHlBcHBsaWVkSGVhZGVyKSl7XHJcbiAgICAgICAgICBlbmFibGVkSGVhZGVycy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb3BlblRvb2x0aXAodG9vbHRpcDogYW55LGhlYWRlcjogYW55LCBjb2x1bW5IZWFkZXI6IElIZWFkZXJJbmZvKSB7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gICAgdGhpcy50b29sdGlwID0gdG9vbHRpcDtcclxuICAgIHRoaXMudG9vbHRpcC5vcGVuKCk7XHJcbiAgICAvL2NvbnZlcnQga2V5IGludG8gdGhlIGhlYWRlclxyXG4gICAgdGhpcy5maWx0ZXJUYWJPYmplY3RzID0gaGVhZGVyLm1hcCgoa2V5OiBzdHJpbmcsaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICBsZXQgdmFsdWUgPSB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuaGFzKGtleSlcclxuICAgICAgICA/IHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5nZXQoa2V5KVxyXG4gICAgICAgIDoga2V5OyAvL2NoYW5nZSB0byBkaXNwbGF5IG5hbWVcclxuICAgICAgcmV0dXJuIG5ldyByYWRpb0J1dHRvbk1vZGVsKGtleSwgdmFsdWUsIGNvbHVtbkhlYWRlci5pc1NvcnRSZXF1aXJlZFtpbmRleF0sIGNvbHVtbkhlYWRlci5pc0ZpbHRlclJlcXVpcmVkW2luZGV4XSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsZWFyQ29sdW1uRmlsdGVyKCkge1xyXG4gICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5jbGVhckNvbHVtbkZpbHRlcigpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIikpO1xyXG4gICAgdGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEgPSB0aGlzLnRhYmxlRGF0YTtcclxuICAgIHRoaXMuY2hlY2tJZlNvcnRpbmdJc0FwcGxpZWQoKTtcclxuICAgIHRoaXMuZmlsdGVyQXBwbGllZFRvVGFibGUuZW1pdCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICB0aGlzLmRpc2FibGVFbmFibGVFYWNoQ29sdW1uVG9vbHRpcEljb24oKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZlRoZUN1cnJlbnRGaWx0ZXJUYWIodGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGFjdGl2ZVRhYjogcmFkaW9CdXR0b25Nb2RlbCkge1xyXG5cclxuICAgIGxldCBoZWFkZXIgPSBhY3RpdmVUYWIua2V5O1xyXG4gICAgdGhpcy5zZWxlY3RlZExhYmVsID0gYWN0aXZlVGFiLmxhYmVsO1xyXG4gICAgdGhpcy5zaG93U29ydENvbXBvbmVudCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlYXJjaEl0ZW0gPSBudWxsO1xyXG4gICAgXHJcbiAgICB0aGlzLnNob3dTb3J0Q29tcG9uZW50ID0gYWN0aXZlVGFiLmlzU29ydFJlcXVpcmVkO1xyXG4gICAgdGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ID0gYWN0aXZlVGFiLmlzRmlsdGVyUmVxdWlyZWQ7XHJcbiAgICB0aGlzLnRlbXBTb3J0T3JkZXIgPSBudWxsO1xyXG4gICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNTb3J0Q2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgXHJcbiAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPSBoZWFkZXI7XHJcbiAgICB0aGlzLmRpc2FibGVBY3RpdmVGaWx0ZXJDbGVhckJ1dHRvbigpO1xyXG4gICAgXHJcbiAgICB0aGlzLmNyZWF0ZUZpbHRlclRvb2x0aXBEYXRhKGhlYWRlcik7XHJcbiAgICBcclxuICB9XHJcblxyXG4gIGNyZWF0ZUZpbHRlclRvb2x0aXBEYXRhKGhlYWRlcjogc3RyaW5nKXtcclxuICAgIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCl7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG4gPSB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gPSB0cnVlO1xyXG4gICAgICBcclxuICAgICAgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuY2FsZW5kYXJTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmdldENhbGVuZGFyRGF0YSgpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2xpZGVyU2V0LmhhcyhoZWFkZXIpKSB7XHJcbiAgICAgICAgdGhpcy5nZXRTbGlkZXJEYXRhKGhlYWRlcik7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS50aW1lU2V0LmhhcyhoZWFkZXIpKSB7XHJcbiAgICAgICAgdGhpcy5nZXRUaW1lRmlsdGVyRGF0YShoZWFkZXIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ2V0Q2hlY2tib3hEYXRhKGhlYWRlcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5zaG93U29ydENvbXBvbmVudCl7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG4gPSB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGlzYWJsZUFjdGl2ZUZpbHRlckNsZWFyQnV0dG9uKCl7XHJcbiAgICBsZXQgc2VsZWN0ZWRGaWx0ZXJTZXQgPSBuZXcgU2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuYXBwbGllZEZpbHRlcnNBcnJheSk7XHJcbiAgICBsZXQgaXNTb3J0UHJlc2VudCA9ICh0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUuc2l6ZSA+IDAgJiYgdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pICE9IFwiREVGQVVMVFwiKTtcclxuICAgIHRoaXMuZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuID0gc2VsZWN0ZWRGaWx0ZXJTZXQuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykgfHwgaXNTb3J0UHJlc2VudCA/IGZhbHNlIDogdHJ1ZTtcclxuICB9XHJcblxyXG4gIGdldFNsaWRlckRhdGEoaGVhZGVyOiBzdHJpbmcpIHtcclxuICAgIFxyXG4gICAgdGhpcy5jcmVhdGVPcHRpb25zRm9yU2xpZGVyKGhlYWRlcik7XHJcbiAgICB0aGlzLnNldFNlbGVjdGVkUmFuZ2VGb3JTbGlkZXIoaGVhZGVyKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZU9wdGlvbnNGb3JTbGlkZXIoaGVhZGVyOiBzdHJpbmcpe1xyXG5cclxuICAgIGxldCB0cmFuc2xhdGVGdW5jO1xyXG4gICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPSB0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA9IG51bGw7XHJcbiAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkgPSB0aGlzLmlzTWF4VGV4dEJveEVtcHR5ID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2xpZGVyQ3VycmVuY3lTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgdHJhbnNsYXRlRnVuYyA9IFwiY3VycmVuY3lcIjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYoaGVhZGVyID09IFwicG9zdGVkQXVkUGVyY2VudFwiKXtcclxuICAgICAgdHJhbnNsYXRlRnVuYyA9IFwicGVyY2VudFwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRyYW5zbGF0ZUZ1bmMgPSBcIm5vcm1hbFwiO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBvcHRpb25zRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyT3B0aW9uc0RhdGEodGhpcy50YWJsZURhdGEsIHRoaXMuY2xvbmVkVGFibGVEYXRhKTtcclxuICAgIGxldCBtaW5WYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWF4QW5kTWluVmFsdWUob3B0aW9uc0RhdGEsIGhlYWRlciwgdHJ1ZSk7XHJcbiAgICBsZXQgbWF4VmFsdWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1heEFuZE1pblZhbHVlKG9wdGlvbnNEYXRhLCBoZWFkZXIsIGZhbHNlKTtcclxuXHJcbiAgICBsZXQgb2JqID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZXRPcHRpb25WYWx1ZXMobWluVmFsdWUsbWF4VmFsdWUpO1xyXG5cclxuICAgIGlmICh0cmFuc2xhdGVGdW5jID09PSBcIm5vcm1hbFwiKSB7XHJcbiAgICAgICAgb2JqLnRyYW5zbGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uubm9ybWFsVHJhbnNsYXRlRnVuY3Rpb247XHJcbiAgICB9IGVsc2UgaWYgKHRyYW5zbGF0ZUZ1bmMgPT09IFwicGVyY2VudFwiKSB7XHJcbiAgICAgICAgb2JqLnRyYW5zbGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucGVyY2VudFRyYW5zbGF0ZUZ1bmN0aW9uO1xyXG4gICAgfSBlbHNlIGlmICh0cmFuc2xhdGVGdW5jID09PSBcImN1cnJlbmN5XCIpIHtcclxuICAgICAgICBvYmoudHJhbnNsYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5jdXJyZW5jeVRyYW5zbGF0ZUZ1bmN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub3B0aW9ucyA9IG9iajtcclxuICAgIHRoaXMub3B0aW9ucy5zdGVwID0gMTtcclxuICAgIHRoaXMuc2xpZGVyRmlsdGVyVGV4dEJveFN0ZXAgPSBcIjFcIjtcclxuICAgIGlmIChoZWFkZXIgIT09IFwiV2Vla051bWJlclwiKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5zdGVwID0gMC4xO1xyXG4gICAgICB0aGlzLnNsaWRlckZpbHRlclRleHRCb3hTdGVwID0gXCIwLjFcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGVkUmFuZ2VGb3JTbGlkZXIoaGVhZGVyOiBzdHJpbmcpe1xyXG4gICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKGhlYWRlcikpe1xyXG4gICAgICBsZXQgc2VsZWN0ZWRPYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQoaGVhZGVyKTtcclxuICAgICAgdGhpcy5zbGlkZXJNaW5WYWx1ZSA9IHNlbGVjdGVkT2JqLm1pbiA8IHRoaXMub3B0aW9ucy5mbG9vciA/IHRoaXMub3B0aW9ucy5mbG9vciA6IHNlbGVjdGVkT2JqLm1pbjtcclxuICAgICAgdGhpcy5zbGlkZXJNYXhWYWx1ZSA9IHNlbGVjdGVkT2JqLm1heCA8IHRoaXMub3B0aW9ucy5jZWlsID8gc2VsZWN0ZWRPYmoubWF4IDogdGhpcy5vcHRpb25zLmNlaWw7XHJcbiAgICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlID0gdGhpcy5zbGlkZXJNaW5WYWx1ZTtcclxuICAgICAgdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPSB0aGlzLnNsaWRlck1heFZhbHVlOyAgIFxyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgICB0aGlzLnNsaWRlck1pblZhbHVlID0gdGhpcy5vcHRpb25zLmZsb29yO1xyXG4gICAgICAgIHRoaXMuc2xpZGVyTWF4VmFsdWUgPSB0aGlzLm9wdGlvbnMuY2VpbDtcclxuICAgIH1cclxuICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlID0gdGhpcy5zbGlkZXJNaW5WYWx1ZTtcclxuICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlID0gdGhpcy5zbGlkZXJNYXhWYWx1ZTtcclxuICB9XHJcblxyXG5cclxuICBnZXRDaGVja2JveERhdGEoaGVhZGVyOiBzdHJpbmcpIHtcclxuXHJcbiAgICBsZXQgdG9vbHRpcE9wdGlvbnMgPSB0aGlzLmNyZWF0ZUxpc3RGb3JDaGVja2JveEZpbHRlcihoZWFkZXIpOyAgICBcclxuICAgIGxldCBzZWxlY3RlZEl0ZW1zID0gc29ydEJ5KHRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCksXCJsYWJlbFwiKTtcclxuICAgIGxldCB1bnNlbGVjdGVkSXRlbXMgPSBzb3J0QnkodG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uaXNTZWxlY3RlZCksXCJsYWJlbFwiKTtcclxuICAgICAgICBcclxuICAgIHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMgPSBbLi4uc2VsZWN0ZWRJdGVtcywgLi4udW5zZWxlY3RlZEl0ZW1zXTtcclxuXHJcbiAgICB0aGlzLnRvb2x0aXBPcHRpb25zID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMpO1xyXG4gICAgXHJcbiAgICBsZXQgbWFyZ2luID0gNTtcclxuICAgIGxldCBkYXRhTGVuZ3RoID0gdGhpcy50b29sdGlwT3B0aW9ucy5sZW5ndGg7XHJcbiAgICB0aGlzLmhlaWdodE9mQ2hlY2tib3hUb29sdGlwRmlsdGVyID0gZGF0YUxlbmd0aCA+IDYgPyAyMDAgOiAoKDI2LjAzICogZGF0YUxlbmd0aCkgKyAobWFyZ2luICogZGF0YUxlbmd0aCkgKyBtYXJnaW4pO1xyXG4gICAgXHJcbiAgICB0aGlzLmRpc2FibGVTZWxlY3RBbGwgPSB1bnNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDA7XHJcbiAgICB0aGlzLmRpc2FibGVDbGVhckFsbCA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDA7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUxpc3RGb3JDaGVja2JveEZpbHRlcihoZWFkZXI6IHN0cmluZyl7XHJcbiAgICBsZXQgb3B0aW9uRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyT3B0aW9uc0RhdGEodGhpcy50YWJsZURhdGEsIHRoaXMuY2xvbmVkVGFibGVEYXRhKTtcclxuICAgIGxldCB1bmlxT3B0aW9uRGF0YSA9IHVuaXEob3B0aW9uRGF0YS5tYXAoaXRlbSA9PiBpdGVtW2hlYWRlcl0pKTtcclxuICAgIGxldCB0b29sdGlwT3B0aW9ucyA9IHVuaXFPcHRpb25EYXRhLm1hcCgoaXRlbSxpbmRleCkgPT4gbmV3IFRvb2x0aXBNb2RlbChpdGVtLGluZGV4KzEpKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdFVuc2VsZWN0TGlzdENoZWNrYm94KHRvb2x0aXBPcHRpb25zLGhlYWRlcik7XHJcbiAgICBsZXQgaW5kZXggPSB0b29sdGlwT3B0aW9ucy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnZhbHVlID09IG51bGwpO1xyXG4gICAgXHJcbiAgICBpZihpbmRleCAhPSAtMSl7XHJcbiAgICAgIHRvb2x0aXBPcHRpb25zW2luZGV4XS5sYWJlbCA9IFwiKEJsYW5rKVwiO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0b29sdGlwT3B0aW9ucztcclxuICB9XHJcblxyXG4gIHNlbGVjdFVuc2VsZWN0TGlzdENoZWNrYm94KHRvb2x0aXBPcHRpb25zOiBUb29sdGlwTW9kZWxbXSxoZWFkZXI6IHN0cmluZyl7XHJcbiAgICBcclxuICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyhoZWFkZXIpKXtcclxuICAgICAgbGV0IHNlbGVjdGVkVmFsdWVTZXQgPSBuZXcgU2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpKTtcclxuICAgICAgdG9vbHRpcE9wdGlvbnMuZm9yRWFjaChpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCA9IHNlbGVjdGVkVmFsdWVTZXQuaGFzKGl0ZW0udmFsdWUpID8gdHJ1ZSA6IGZhbHNlKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHRvb2x0aXBPcHRpb25zLmZvckVhY2goaXRlbSA9PiBpdGVtLmlzU2VsZWN0ZWQgPSB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBnZXRDYWxlbmRhckRhdGEoKSB7XHJcbiAgICBjb25zdCBwYXJzaW5nRm9ybWF0ID0gXCJNTS9ERC9ZWVlZXCI7XHJcbiAgICBsZXQgbWluTWF4RGF0ZSA9IHRoaXMuY3JlYXRlUmFuZ2VGb3JUaGVEYXRlRmlsdGVyKCk7XHJcbiAgICB0aGlzLnNlbGVjdFJhbmdlRm9yVGhlRGF0ZUZpbHRlcihtaW5NYXhEYXRlLCBwYXJzaW5nRm9ybWF0KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVJhbmdlRm9yVGhlRGF0ZUZpbHRlcigpe1xyXG4gICAgXHJcbiAgICBsZXQgb3B0aW9uRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyT3B0aW9uc0RhdGEodGhpcy50YWJsZURhdGEsIHRoaXMuY2xvbmVkVGFibGVEYXRhKTtcclxuICAgIFxyXG4gICAgbGV0IG1pbk1heERhdGU7XHJcbiAgICAvL1doZW4geW91IHdhbnQgdG8gdXNlIHN0YXJ0RGF0ZSBhbmQgZW5kRGF0ZSBjb21iaW5lZCBhcyBzaW5nbGUgY29sdW1uIHRoZW4gdXNlIFBlcmlvZC5cclxuICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyA9PSBcInBlcmlvZFwiKXtcclxuICAgICAgbWluTWF4RGF0ZSA9IHRoaXMuY3JlYXRlU3RhcnRFbmREYXRlUmFuZ2Uob3B0aW9uRGF0YSk7XHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICBtaW5NYXhEYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NaW5BbmRNYXhEYXRlKG9wdGlvbkRhdGEsIHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7ICBcclxuICAgIH1cclxuICAgIFxyXG4gICAgcmV0dXJuIG1pbk1heERhdGU7XHJcblxyXG4gIH1cclxuXHJcbiAgY3JlYXRlU3RhcnRFbmREYXRlUmFuZ2Uob3B0aW9uRGF0YTogYW55W10pe1xyXG4gICAgbGV0IG1pblN0YXJ0RGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWluQW5kTWF4RGF0ZShvcHRpb25EYXRhLCBcInN0YXJ0RGF0ZVwiKTtcclxuICAgIGxldCBtYXhFbmREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NaW5BbmRNYXhEYXRlKG9wdGlvbkRhdGEsXCJlbmREYXRlXCIpO1xyXG4gICAgcmV0dXJuIFttaW5TdGFydERhdGVbMF0sbWF4RW5kRGF0ZVsxXV07XHJcbiAgfVxyXG5cclxuICBzZWxlY3RSYW5nZUZvclRoZURhdGVGaWx0ZXIobWluTWF4RGF0ZTogYW55W10sIHBhcnNpbmdGb3JtYXQ6IHN0cmluZyl7XHJcbiAgICB0aGlzLmNhbGVuZGFyTWluRW5hYmxlZERhdGUgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvTmdiRGF0ZShtaW5NYXhEYXRlWzBdLHBhcnNpbmdGb3JtYXQpO1xyXG4gICAgdGhpcy5jYWxlbmRhck1heEVuYWJsZWREYXRlID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb05nYkRhdGUobWluTWF4RGF0ZVsxXSxwYXJzaW5nRm9ybWF0KTtcclxuICAgIFxyXG4gICAgXHJcbiAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkRGF0ZU9iaiA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmKHNlbGVjdGVkRGF0ZU9iai5mcm9tRGF0ZS5pc0FmdGVyKG1pbk1heERhdGVbMF0pKXtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1pbkRhdGUgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvTmdiRGF0ZShzZWxlY3RlZERhdGVPYmouZnJvbURhdGUscGFyc2luZ0Zvcm1hdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNaW5EYXRlID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb05nYkRhdGUobWluTWF4RGF0ZVswXSxwYXJzaW5nRm9ybWF0KTtcclxuICAgICAgICB9IFxyXG5cclxuICAgICAgICBpZihzZWxlY3RlZERhdGVPYmoudG9EYXRlLmlzQWZ0ZXIobWluTWF4RGF0ZVsxXSkpe1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWF4RGF0ZSA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG9OZ2JEYXRlKG1pbk1heERhdGVbMV0scGFyc2luZ0Zvcm1hdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNYXhEYXRlID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb05nYkRhdGUoc2VsZWN0ZWREYXRlT2JqLnRvRGF0ZSxwYXJzaW5nRm9ybWF0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgIHRoaXMuc2VsZWN0ZWRNaW5EYXRlID0gY2xvbmVEZWVwKHRoaXMuY2FsZW5kYXJNaW5FbmFibGVkRGF0ZSk7XHJcbiAgICAgICB0aGlzLnNlbGVjdGVkTWF4RGF0ZSA9IGNsb25lRGVlcCh0aGlzLmNhbGVuZGFyTWF4RW5hYmxlZERhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2FsZW5kYXJTZWxlY3Rpb24uZnJvbURhdGUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZE1pbkRhdGUpO1xyXG4gICAgdGhpcy5jYWxlbmRhclNlbGVjdGlvbi50b0RhdGUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZE1heERhdGUpO1xyXG5cclxuICAgIFxyXG4gIH1cclxuXHJcbiAgZ2V0VGltZUZpbHRlckRhdGEoaGVhZGVyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIFxyXG4gICAgdGhpcy5zdGFydFRpbWVIb3VyRXJyID0gdGhpcy5zdGFydFRpbWVNaW5FcnIgPSB0aGlzLmVuZFRpbWVIb3VyRXJyID0gdGhpcy5lbmRUaW1lTWluRXJyID0gZmFsc2U7ICAgIFxyXG5cclxuICAgIGlmICh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQoaGVhZGVyKS5mcm9tVGltZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpLnRvVGltZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlTWFwRm9yVGltZUZpbHRlcihoZWFkZXIpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQoaGVhZGVyKS5mcm9tVGltZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldChoZWFkZXIpLnRvVGltZTtcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLnNlbGVjdGVkRnJvbVRpbWUgIT0gdW5kZWZpbmVkIHx8IHRoaXMuc2VsZWN0ZWRUb1RpbWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZSA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5mb3JtYXRUb1R3ZWx2ZUhycyh0aGlzLnNlbGVjdGVkRnJvbVRpbWUsIHRydWUpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmZvcm1hdFRvVHdlbHZlSHJzKHRoaXMuc2VsZWN0ZWRUb1RpbWUsIHRydWUpO1xyXG5cclxuICAgICAgdGhpcy5jbG9uZWRTZWxlY3RlZEZyb21UaW1lID0gY2xvbmVEZWVwKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICAgIHRoaXMuY2xvbmVkU2VsZWN0ZWRUb1RpbWUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZFRvVGltZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lID0gW1wiLVwiLCBcIi1cIiwgXCItXCJdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gW1wiLVwiLCBcIi1cIiwgXCItXCJdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PT0gXCJTUE9UREVUQUlMU1wiIHx8IHRoaXMuZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PT0gXCJFWENMVURFSU5WRU5UT1JZUE9QVVBcIiB8fCB0aGlzLmd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT09IFwiQUNUSVZJVFlMT0dcIikge1xyXG4gICAgICB0aGlzLnNldFRpbWVGaWx0ZXJEYXRhRm9yQ29tcG9uZW50c090aGVyVGhhblJhdGluZ3NQYWdlKGhlYWRlcik7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PT0gXCJSQVRJTkdcIil7XHJcbiAgICAgIHRoaXMuc2V0VGltZUZpbHRlckRhdGFGb3JSYXRpbmdQYWdlQ29tcG9uZW50KGhlYWRlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL05lZWQgdG8gY2hhbmdlIHRoaXMgbWV0aG9kXHJcbiAgc2V0VGltZUZpbHRlckRhdGFGb3JDb21wb25lbnRzT3RoZXJUaGFuUmF0aW5nc1BhZ2UoaGVhZGVyOiBzdHJpbmcpe1xyXG4gICAgdGhpcy5zaG93TXVsdGlUaW1lQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0VudGVyVGltZUNoZWNrYm94ID0gZmFsc2U7XHJcbiAgICB0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWQgPSBmYWxzZTtcclxuXHJcblxyXG4gICAgbGV0IG9wdGlvbnNEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5nZXRGaWx0ZXJPcHRpb25zRGF0YSh0aGlzLnRhYmxlRGF0YSwgdGhpcy5jbG9uZWRUYWJsZURhdGEpO1xyXG4gICAgbGV0IHNlbGVjdGVkT2JqO1xyXG5cclxuICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyhoZWFkZXIpKXtcclxuICAgICAgc2VsZWN0ZWRPYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQoaGVhZGVyKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHNlbGVjdGVkT2JqID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KGhlYWRlcik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYob3B0aW9uc0RhdGEuZmluZEluZGV4KG9iaiA9PiBvYmpbaGVhZGVyXSA9PSBcIjBcIikgIT0gLTEpIHtcclxuICAgICAgdGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICAgIHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQgPSBzZWxlY3RlZE9iai5pbmNsdWRlWmVyb1RpbWU7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgaWYob3B0aW9uc0RhdGEuZmluZEluZGV4KG9iaiA9PiBvYmpbaGVhZGVyXSA9PSBcIjxtdWx0aT5cIikgIT0gLTEpIHtcclxuICAgICAgdGhpcy5zaG93TXVsdGlUaW1lQ2hlY2tib3ggPSB0cnVlO1xyXG4gICAgICB0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZCA9IHNlbGVjdGVkT2JqLmluY2x1ZGVNdWx0aTtcclxuICAgIH1cclxuICAgIFxyXG5cclxuICAgIGlmKHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggfHwgdGhpcy5zaG93TXVsdGlUaW1lQ2hlY2tib3gpIHtcclxuICAgICAgdGhpcy5zaG93RW50ZXJUaW1lQ2hlY2tib3ggPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZihvcHRpb25zRGF0YS5maW5kSW5kZXgob2JqID0+IG9ialtoZWFkZXJdICE9IFwiPG11bHRpPlwiICYmIG9ialtoZWFkZXJdICE9IFwiMFwiKSAhPSAtMSkge1xyXG4gICAgICB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCA9IHNlbGVjdGVkT2JqLmluY2x1ZGVUaW1lUmFuZ2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRUaW1lRmlsdGVyRGF0YUZvclJhdGluZ1BhZ2VDb21wb25lbnQoaGVhZGVyOiBzdHJpbmcpe1xyXG4gICAgICB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3daZXJvVGltZUNoZWNrYm94ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd0VudGVyVGltZUNoZWNrYm94ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgIGxldCBvcHRpb25zRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyT3B0aW9uc0RhdGEodGhpcy50YWJsZURhdGEsIHRoaXMuY2xvbmVkVGFibGVEYXRhKTtcclxuICAgICAgbGV0IHNlbGVjdGVkT2JqO1xyXG5cclxuICAgICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKGhlYWRlcikpe1xyXG4gICAgICAgIHNlbGVjdGVkT2JqID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KGhlYWRlcik7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICBzZWxlY3RlZE9iaiA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldChoZWFkZXIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZihvcHRpb25zRGF0YS5maW5kSW5kZXgob2JqID0+IG9ialtoZWFkZXJdWzBdID09IFwiMFwiKSAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQgPSBzZWxlY3RlZE9iai5pbmNsdWRlWmVyb1RpbWU7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICBpZihvcHRpb25zRGF0YS5maW5kSW5kZXgob2JqID0+IG9ialtoZWFkZXJdWzBdID09IFwiPG11bHRpPlwiKSAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMuc2hvd011bHRpVGltZUNoZWNrYm94ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZCA9IHNlbGVjdGVkT2JqLmluY2x1ZGVNdWx0aTtcclxuICAgICAgfVxyXG4gICAgICBcclxuXHJcbiAgICAgIGlmKHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggfHwgdGhpcy5zaG93TXVsdGlUaW1lQ2hlY2tib3gpIHtcclxuICAgICAgICB0aGlzLnNob3dFbnRlclRpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIGlmKG9wdGlvbnNEYXRhLmZpbmRJbmRleChvYmogPT4gb2JqW2hlYWRlcl1bMF0gIT0gXCI8bXVsdGk+XCIgJiYgb2JqW2hlYWRlcl1bMF0gIT0gXCIwXCIpICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWQgPSBzZWxlY3RlZE9iai5pbmNsdWRlVGltZVJhbmdlO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RPclVuc2VsZWN0TXVsdGlUaW1lQ2hlY2tib3goKSB7XHJcbiAgICB0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZCA9ICF0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZDtcclxuICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0T3JVbnNlbGVjdFplcm9UaW1lQ2hlY2tib3goKSB7XHJcbiAgICB0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkID0gIXRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQ7XHJcbiAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdE9yVW5zZWxlY3RFbnRlclRpbWVDaGVja2JveCgpIHtcclxuICAgIHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkID0gIXRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkO1xyXG4gICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBcclxuICBzZWxlY3RVbnNlbGVjdENoZWNrYm94KGRhdGE6IFRvb2x0aXBNb2RlbCkge1xyXG4gICAgZGF0YS5pc1NlbGVjdGVkID0gIWRhdGEuaXNTZWxlY3RlZDtcclxuICAgIGxldCBpbmRleCA9IHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PSBkYXRhLmlkKTtcclxuICAgIHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnNbaW5kZXhdLmlzU2VsZWN0ZWQgPSBkYXRhLmlzU2VsZWN0ZWQ7XHJcbiAgICAgICAgXHJcbiAgICBsZXQgc2VsZWN0ZWRJdGVtcyA9IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc1NlbGVjdGVkKTtcclxuICAgIGxldCB1bnNlbGVjdGVkSXRlbXMgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+ICFpdGVtLmlzU2VsZWN0ZWQpO1xyXG5cclxuICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gIHNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDA7XHJcbiAgICB0aGlzLmRpc2FibGVTZWxlY3RBbGwgPSB1bnNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDA7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94RmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIG1pblZhbHVlQ2hhbmdlZCh2YWw6IHN0cmluZykge1xyXG4gICAgaWYgKHZhbCB8fCB2YWwgPT0gJzAnKSB7XHJcbiAgICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlID0gcGFyc2VJbnQodmFsKTtcclxuICAgICAgdGhpcy5pc01pblRleHRCb3hFbXB0eSA9IGZhbHNlO1xyXG4gICAgICBpZiAodGhpcy5pc01heFRleHRCb3hFbXB0eSkge1xyXG4gICAgICAgIGlmICggKHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlID4gdGhpcy5vcHRpb25zLmNlaWwpIHx8ICh0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA8IHRoaXMub3B0aW9ucy5mbG9vcikpIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlID4gdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUpIHtcclxuICAgICAgICBpZih0aGlzLmlzVmFsdWVJblJhbmdlKHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlKSl7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgaWYodGhpcy5pc1ZhbHVlSW5SYW5nZSh0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSkpe1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgICBcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA8IHRoaXMub3B0aW9ucy5mbG9vcikge1xyXG4gICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA9IHRoaXMub3B0aW9ucy5mbG9vcjtcclxuICAgICAgdGhpcy5pc01pblRleHRCb3hFbXB0eSA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dFcnJvckZvck1pbkFuZE1heFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBtYXhWYWx1ZUNoYW5nZWQodmFsOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWwgfHwgdmFsID09IFwiMFwiKSB7XHJcbiAgICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlID0gcGFyc2VJbnQodmFsKTtcclxuICAgICAgdGhpcy5pc01heFRleHRCb3hFbXB0eSA9IGZhbHNlO1xyXG4gICAgICBpZiAodGhpcy5pc01pblRleHRCb3hFbXB0eSkge1xyXG4gICAgICAgIGlmICggKHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlIDwgdGhpcy5vcHRpb25zLmZsb29yKSB8fCAodGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPiB0aGlzLm9wdGlvbnMuY2VpbCkpIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlIDwgdGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUpIHtcclxuICAgICAgICBpZih0aGlzLmlzVmFsdWVJblJhbmdlKHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlKSl7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgaWYodGhpcy5pc1ZhbHVlSW5SYW5nZSh0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSkpe1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgICAgIC8vIHRoaXMuc2hvd01heEVycm9yID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSA+IHRoaXMub3B0aW9ucy5jZWlsKSB7XHJcbiAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPSB0aGlzLm9wdGlvbnMuY2VpbDtcclxuICAgICAgdGhpcy5pc01heFRleHRCb3hFbXB0eSA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuc2hvd0Vycm9yRm9yTWluQW5kTWF4VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHNob3dFcnJvckZvck1pbkFuZE1heFZhbHVlKCl7XHJcbiAgICAgIGlmKHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkgJiYgdGhpcy5pc01heFRleHRCb3hFbXB0eSl7XHJcbiAgICAgICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgIH1cclxuICAgICBlbHNlIGlmKHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgfHwgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvcil7XHJcbiAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgIH1cclxuICAgICBlbHNle1xyXG4gICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gZmFsc2U7XHJcbiAgICAgfVxyXG4gICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnRuKCk7XHJcbiAgfVxyXG5cclxuICBpc1ZhbHVlSW5SYW5nZSh2YWw6IG51bWJlcil7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZsb29yIDw9IHZhbCAmJiB2YWwgPD0gdGhpcy5vcHRpb25zLmNlaWw7XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlU2xpZGVyQXBwbHlCdG4oKXtcclxuICAgIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCAmJiB0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgbGV0IGlzRmlsdGVyQ2hhbmdlZCA9IHRoaXMuY2hlY2tJZlNsaWRlclRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgIGxldCBpc1NvcnRDaGFuZ2VkID0gdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgICAgIFxyXG4gICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgfHwgKCFpc1NvcnRDaGFuZ2VkICYmICFpc0ZpbHRlckNoYW5nZWQgKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50KXtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgfHwgIXRoaXMuY2hlY2tJZlNsaWRlclRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuc2hvd1NvcnRDb21wb25lbnQpe1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gIXRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzbGlkZXJWYWx1ZUNoYW5nZSgpIHtcclxuICAgIHRoaXMuc2xpZGVyVmFsdWUgPSB7IG1pbjogdGhpcy5zbGlkZXJNaW5WYWx1ZSwgbWF4OiB0aGlzLnNsaWRlck1heFZhbHVlIH07XHJcbiAgfVxyXG5cclxuICBjYW5jZWxTbGlkZXJGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLnNsaWRlclZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcbiAgfVxyXG5cclxuICBhcHBseUZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmFwcGx5TGlzdEZpbHRlcnMoKTtcclxuICAgIHRoaXMuYXBwbHlTb3J0aW5nT25GaWx0ZXJlZERhdGEoKTtcclxuICAgIC8vIHRoaXMuZW1pdERhdGEoKTtcclxuICAgIHRoaXMuc2V0SW5pdGlhbFJvd3NGb3JUYWJsZSgpO1xyXG4gICAgdGhpcy5kaXNhYmxlRW5hYmxlRWFjaENvbHVtblRvb2x0aXBJY29uKCk7XHJcbiAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnVwZGF0ZVN0YXRlT2ZBbGxUaGVLZXlzKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSk7XHJcbiAgICB0aGlzLmVtaXREYXRhKCk7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlMaXN0RmlsdGVycygpe1xyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ICYmIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKXtcclxuICAgICAgbGV0IGN1cnJlbnRTZWxlY3RlZFZhbHVlID0gW107XHJcbiAgICAgIFxyXG4gICAgICBpZih0aGlzLnRvb2x0aXBPcHRpb25zKXtcclxuXHJcbiAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IHNvcnRCeSh0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCkubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSkpO1xyXG5cclxuICAgICAgICAgIGlmKCF0aGlzLnNlYXJjaEl0ZW0gJiYgY3VycmVudFNlbGVjdGVkVmFsdWUubGVuZ3RoID09IHRoaXMudG9vbHRpcE9wdGlvbnMubGVuZ3RoICYmIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICAgICAgY3VycmVudFNlbGVjdGVkVmFsdWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgYmxhbmtJbmRleCA9IGN1cnJlbnRTZWxlY3RlZFZhbHVlLmZpbmRJbmRleCgoaXRlbTogc3RyaW5nKSA9PiBpdGVtID09IG51bGwpO1xyXG4gICAgICBpZihibGFua0luZGV4ICE9IC0xKXtcclxuICAgICAgICBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IHNvcnRCeShjdXJyZW50U2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZU9yZGVyQXBwbGllZEZpbHRlcnNTdGF0ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSxjdXJyZW50U2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbywgY3VycmVudFNlbGVjdGVkVmFsdWUpO1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5maWx0ZXJEYXRhKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcIlwiKTtcclxuICAgICAgICB0aGlzLmFubmFTb3J0U2VydmljZS5ub1NvcnRpbmdBcHBsaWVkRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseVNvcnRpbmdPbkZpbHRlcmVkRGF0YSgpe1xyXG4gICAgaWYodGhpcy5zaG93U29ydENvbXBvbmVudCl7XHJcbiAgICAgIGlmKHRoaXMuaXNTb3J0Q2hhbmdlZCl7XHJcbiAgICAgICAgdGhpcy51cGRhdGVTb3J0TWFwKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLmlzRmlsdGVyQ2hhbmdlZCl7XHJcbiAgICAgICAgdGhpcy5jaGVja0lmU29ydGluZ0lzQXBwbGllZCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKXtcclxuICAgICAgdGhpcy5jaGVja0lmU29ydGluZ0lzQXBwbGllZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZW1pdERhdGEoKXtcclxuICAgIGlmKHRoaXMuaXNGaWx0ZXJDaGFuZ2VkICYmIHRoaXMuaXNTb3J0Q2hhbmdlZCl7XHJcbiAgICAgIHRoaXMuZmlsdGVyQXBwbGllZFRvVGFibGUuZW1pdCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKXtcclxuICAgICAgdGhpcy5maWx0ZXJBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5pc1NvcnRDaGFuZ2VkKXtcclxuICAgICAgdGhpcy5zb3J0aW5nQXBwbGllZFRvVGFibGUuZW1pdCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseVNvcnRpbmcoa2V5OiBzdHJpbmcpe1xyXG4gICAgaWYodGhpcy50ZW1wU29ydE9yZGVyID09IFwiQVNDXCIpe1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IGNsb25lRGVlcCh0aGlzLmFubmFTb3J0U2VydmljZS5zb3J0RGF0YUZvckNvbXBvbmVudE90aGVyVGhhbkx1ckFuZENzclBhZ2UodHJ1ZSx0aGlzLnRhYmxlRGF0YSxrZXkpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy50ZW1wU29ydE9yZGVyID09IFwiREVTQ1wiKXtcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IGNsb25lRGVlcCh0aGlzLmFubmFTb3J0U2VydmljZS5zb3J0RGF0YUZvckNvbXBvbmVudE90aGVyVGhhbkx1ckFuZENzclBhZ2UoZmFsc2UsdGhpcy50YWJsZURhdGEsa2V5KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMudGVtcFNvcnRPcmRlciA9PSBcIkRFRkFVTFRcIil7XHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSBjbG9uZURlZXAodGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV2ZXJ0KCkge1xyXG4gICAgdGhpcy50ZW1wVG9vbHRpcERhdGEgPSBjbG9uZURlZXAodGhpcy50b29sVGlwZGF0YSk7XHJcbiAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBNYXAuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbywgdGhpcy50ZW1wVG9vbHRpcERhdGEpO1xyXG4gICAgdGhpcy50b29sVGlwZGF0YSA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBjbG9zZUNoZWNrYm94RmlsdGVyKCkge1xyXG4gICAgaWYgKHRoaXMudG9vbFRpcGRhdGEpIHtcclxuICAgICAgdGhpcy5yZXZlcnQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcbiAgfVxyXG5cclxuICBhcHBseVNsaWRlckZpbHRlcigpIHtcclxuXHJcbiAgICB0aGlzLmFwcGx5U2xpZGVyRmlsdGVyT25EYXRhKCk7XHJcbiAgICB0aGlzLmFwcGx5U29ydGluZ09uRmlsdGVyZWREYXRhKCk7XHJcbiAgICB0aGlzLmVtaXREYXRhKCk7XHJcbiAgICB0aGlzLnNldEluaXRpYWxSb3dzRm9yVGFibGUoKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZkFsbFRoZUtleXModGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcbiAgfVxyXG5cclxuICBhcHBseVNsaWRlckZpbHRlck9uRGF0YSgpe1xyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ICYmIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKXtcclxuICAgICAgbGV0IGN1cnJlbnRTbGlkZXJEYXRhOiB7bWluOmFueSwgbWF4OiBhbnl9ID0ge21pbjogbnVsbCAsIG1heDogbnVsbH07XHJcblxyXG4gICAgICAvLyBpZih0aGlzLmlzTWluVGV4dEJveEVtcHR5KXtcclxuICAgICAgLy8gICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1pbiA9IHRoaXMub3B0aW9ucy5mbG9vcjtcclxuICAgICAgLy8gICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1heCA9IHRoaXMuc2xpZGVyTWF4VmFsdWU7XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gZWxzZSBpZih0aGlzLmlzTWF4VGV4dEJveEVtcHR5KXtcclxuICAgICAgLy8gICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1heCA9IHRoaXMub3B0aW9ucy5jZWlsO1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWluID0gdGhpcy5zbGlkZXJNaW5WYWx1ZTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBlbHNle1xyXG4gICAgICAgICAgY3VycmVudFNsaWRlckRhdGEubWF4ID0gdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWU7XHJcbiAgICAgICAgICBjdXJyZW50U2xpZGVyRGF0YS5taW4gPSB0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZTtcclxuICAgICAgLy8gfVxyXG5cclxuICAgICAgaWYoY3VycmVudFNsaWRlckRhdGEubWluID09IHRoaXMub3B0aW9ucy5mbG9vciAmJiBjdXJyZW50U2xpZGVyRGF0YS5tYXggPT0gdGhpcy5vcHRpb25zLmNlaWwgJiYgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykgKXtcclxuICAgICAgICAgIGN1cnJlbnRTbGlkZXJEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVPcmRlckFwcGxpZWRGaWx0ZXJzU3RhdGUodGhpcy5jbG9uZWRUYWJsZURhdGEsY3VycmVudFNsaWRlckRhdGEpO1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLGN1cnJlbnRTbGlkZXJEYXRhKTtcclxuICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmZpbHRlckRhdGEodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwiXCIpO1xyXG4gICAgICB0aGlzLmFubmFTb3J0U2VydmljZS5ub1NvcnRpbmdBcHBsaWVkRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUVuYWJsZUVhY2hDb2x1bW5Ub29sdGlwSWNvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuY2VsSW5EYXRlRmlsdGVyKCkge1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVNvcnRNYXAoKXtcclxuICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiB0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUuZW50cmllcygpKSB7XHJcbiAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5zZXQoa2V5LCBcIkRFRkFVTFRcIik7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbywgdGhpcy50ZW1wU29ydE9yZGVyKTtcclxuICAgIHRoaXMuYXBwbHlTb3J0aW5nKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgfVxyXG5cclxuICBhcHBseURhdGVGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmFwcGx5RGF0ZUZpbHRlck9uRGF0YSgpO1xyXG4gICAgdGhpcy5hcHBseVNvcnRpbmdPbkZpbHRlcmVkRGF0YSgpO1xyXG4gICAgdGhpcy5lbWl0RGF0YSgpO1xyXG4gICAgdGhpcy5zZXRJbml0aWFsUm93c0ZvclRhYmxlKCk7XHJcbiAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnVwZGF0ZVN0YXRlT2ZBbGxUaGVLZXlzKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSk7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICBhcHBseURhdGVGaWx0ZXJPbkRhdGEoKXtcclxuICAgIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCAmJiB0aGlzLmlzRmlsdGVyQ2hhbmdlZCl7XHJcbiAgICAgIGxldCBjdXJyZW50U2VsZWN0ZWREYXRlID0gdGhpcy5jYWxlbmRhclNlbGVjdGlvbjtcclxuICAgICAgXHJcbiAgICAgIGxldCBmcm9tRGF0ZSA9IHt5ZWFyOiBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlLnllYXIsbW9udGg6IGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUubW9udGgsZGF5OiBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlLmRheX07XHJcbiAgICAgIGxldCB0b0RhdGUgPSB7eWVhcjogY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUueWVhcixtb250aDogY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUubW9udGgsZGF5OiBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZS5kYXl9O1xyXG4gICAgICAgICAgXHJcbiAgICAgIGlmKGlzRXF1YWwodGhpcy5jYWxlbmRhck1pbkVuYWJsZWREYXRlLGZyb21EYXRlKSAmJiBpc0VxdWFsKHRoaXMuY2FsZW5kYXJNYXhFbmFibGVkRGF0ZSx0b0RhdGUpICYmIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgICAgY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZSA9IGRheWpzKHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0TmdiRGF0ZVRvTW9tZW50KGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUpKTtcclxuICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlID0gZGF5anModGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnROZ2JEYXRlVG9Nb21lbnQoY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUpKTtcclxuICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZU9yZGVyQXBwbGllZEZpbHRlcnNTdGF0ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSxjdXJyZW50U2VsZWN0ZWREYXRlKTtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyxjdXJyZW50U2VsZWN0ZWREYXRlKTtcclxuICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmZpbHRlckRhdGEodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwiXCIpO1xyXG4gICAgICB0aGlzLmFubmFTb3J0U2VydmljZS5ub1NvcnRpbmdBcHBsaWVkRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUVuYWJsZUVhY2hDb2x1bW5Ub29sdGlwSWNvbigpO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFwcGx5V2Vla0ZpbHRlcihldmVudDogYW55KSB7XHJcblxyXG4gIH1cclxuXHJcbiAgaW5jcmVtZW50SG91cihhcnI6IGFueVtdKSB7XHJcbiAgICBpZiAoYXJyWzBdID09IFwiXCIpIHtcclxuICAgICAgYXJyWzBdID0gMTtcclxuICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoYXJyWzBdKSA8IDEyKSB7XHJcbiAgICAgIGFyclswXSA9IHBhcnNlSW50KGFyclswXSkgKyAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYXJyWzBdID0gMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlY3JlbWVudEhvdXIoYXJyOiBhbnlbXSkge1xyXG4gICAgaWYgKGFyclswXSA9PSBcIlwiKSB7XHJcbiAgICAgIGFyclswXSA9IDEyO1xyXG4gICAgfSBlbHNlIGlmIChwYXJzZUludChhcnJbMF0pID4gMSkge1xyXG4gICAgICBhcnJbMF0gPSBwYXJzZUludChhcnJbMF0pIC0gMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFyclswXSA9IDEyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5jcmVtZW50TWludXRlKGFycjogYW55W10pIHtcclxuICAvLyBpbmNyZW1lbnQgdG8gbmVhcmVzdCBwcm9wZXIgaW50ZXJ2YWwoMTUsMzAsNDUpXHJcbiAgbGV0IG1pbiA9IHBhcnNlSW50KGFyclsxXSlcclxuICAgIGlmIChtaW4gPD0gMTQpIHtcclxuICAgICAgYXJyWzFdID0gXCIxNVwiO1xyXG4gICAgfSBlbHNlIGlmIChtaW4gPj0gMTUgJiYgbWluIDw9IDI5KSB7XHJcbiAgICAgIGFyclsxXSA9IFwiMzBcIjtcclxuICAgIH0gZWxzZSBpZiAobWluID49IDMwICYmIG1pbiA8PSA0NCkge1xyXG4gICAgICBhcnJbMV0gPSBcIjQ1XCI7XHJcbiAgICB9IGVsc2UgaWYgKG1pbiA+PSA0NSkge1xyXG4gICAgICBhcnJbMV0gPSBcIjAwXCI7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYXJyWzFdID0gcGFyc2VJbnQoYXJyWzFdKSArIDE1O1xyXG4gICAgLy8gaWYgKHBhcnNlSW50KGFyclsxXSkgPT0gNjApIHtcclxuICAgIC8vICAgICBhcnJbMV0gPSBcIjAwXCI7XHJcbiAgICAvLyB9IGVsc2UgaWYgKHBhcnNlSW50KGFyclsxXSkgPT0gMCkge1xyXG4gICAgLy8gICAgIGFyclsxXSA9IFwiMDBcIjtcclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2UgaWYocGFyc2VJbnQoYXJyWzFdKSA+IDYwKXtcclxuICAgIC8vICAgICBsZXQgcmVzID0gcGFyc2VJbnQoYXJyWzFdKSAtIDYwO1xyXG4gICAgLy8gICAgIGFyclsxXSA9IHJlcyA8IDEwID8gYDAke3Jlc31gIDogcmVzLnRvU3RyaW5nKCk7ICAgIFxyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgZGVjcmVtZW50TWludXRlKGFycjogYW55KSB7XHJcbiAgICBsZXQgbWluID0gcGFyc2VJbnQoYXJyWzFdKTtcclxuICAgIGlmIChtaW4gPiAwICYmIG1pbiA8PSAxNSkge1xyXG4gICAgICBhcnJbMV0gPSBcIjAwXCI7XHJcbiAgICB9IGVsc2UgaWYgKG1pbiA+PSAxNiAmJiBtaW4gPD0gMzApIHtcclxuICAgICAgYXJyWzFdID0gXCIxNVwiO1xyXG4gICAgfSBlbHNlIGlmIChtaW4gPj0gMzEgJiYgbWluIDw9IDQ1KSB7XHJcbiAgICAgIGFyclsxXSA9IFwiMzBcIjtcclxuICAgIH0gZWxzZSBpZiAobWluID4gNDUgfHwgbWluID09IDApIHtcclxuICAgICAgYXJyWzFdID0gXCI0NVwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGFyclsxXSA9IHBhcnNlSW50KGFyclsxXSkgLSAxNTtcclxuICAgIC8vIGlmIChwYXJzZUludChhcnJbMV0pIDwgMCkge1xyXG4gICAgLy8gICAgIGxldCByZXMgPSA2MCArIHBhcnNlSW50KGFyclsxXSk7XHJcbiAgICAvLyAgICAgYXJyWzFdID0gcmVzO1xyXG4gICAgLy8gfSBlbHNlIGlmIChwYXJzZUludChhcnJbMV0pID09IDApIHtcclxuICAgIC8vICAgICBhcnJbMV0gPSBcIjAwXCI7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlIGlmKGFyclsxXSA8IDEwKXtcclxuICAgIC8vICAgICBhcnJbMV09IGAwJHthcnJbMV19YDtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVN0YXJ0VGltZUhvdXIoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICBpZiAoaW5jcmVtZW50KSB7XHJcbiAgICAgIHRoaXMuaW5jcmVtZW50SG91cih0aGlzLnNlbGVjdGVkRnJvbVRpbWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kZWNyZW1lbnRIb3VyKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXJ0VGltZUhvdXJDaGFuZ2UodGhpcy5zZWxlY3RlZEZyb21UaW1lWzBdLnRvU3RyaW5nKCkpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlRW5kVGltZUhvdXIoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICBpZiAoaW5jcmVtZW50KSB7XHJcbiAgICAgIHRoaXMuaW5jcmVtZW50SG91cih0aGlzLnNlbGVjdGVkVG9UaW1lKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGVjcmVtZW50SG91cih0aGlzLnNlbGVjdGVkVG9UaW1lKTtcclxuICAgIH1cclxuICAgIHRoaXMuZW5kVGltZUhvdXJDaGFuZ2UodGhpcy5zZWxlY3RlZFRvVGltZVswXS50b1N0cmluZygpKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZUVuZFRpbWVNaW51dGUoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICBpZiAoaW5jcmVtZW50KSB7XHJcbiAgICAgIHRoaXMuaW5jcmVtZW50TWludXRlKHRoaXMuc2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kZWNyZW1lbnRNaW51dGUodGhpcy5zZWxlY3RlZFRvVGltZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmVuZFRpbWVNaW5DaGFuZ2UodGhpcy5zZWxlY3RlZFRvVGltZVsxXS50b1N0cmluZygpKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVN0YXJ0VGltZU1pbnV0ZShpbmNyZW1lbnQ6IGJvb2xlYW4pIHtcclxuICAgIGlmIChpbmNyZW1lbnQpIHtcclxuICAgICAgdGhpcy5pbmNyZW1lbnRNaW51dGUodGhpcy5zZWxlY3RlZEZyb21UaW1lKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGVjcmVtZW50TWludXRlKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXJ0VGltZU1pbkNoYW5nZSh0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMV0udG9TdHJpbmcoKSk7XHJcbiAgfVxyXG5cclxuICBhcHBseVRpbWVGaWx0ZXJzKCkge1xyXG5cclxuICAgIHRoaXMuYXBwbHlUaW1lRmlsdGVyT25EYXRhKCk7XHJcbiAgICB0aGlzLmFwcGx5U29ydGluZ09uRmlsdGVyZWREYXRhKCk7XHJcbiAgICB0aGlzLmVtaXREYXRhKCk7XHJcbiAgICB0aGlzLnNldEluaXRpYWxSb3dzRm9yVGFibGUoKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZkFsbFRoZUtleXModGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgYXBwbHlUaW1lRmlsdGVyT25EYXRhKCl7XHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICBsZXQgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlcjoge2Zyb21UaW1lOiBzdHJpbmcsIHRvVGltZTpzdHJpbmcsIGluY2x1ZGVNdWx0aTogYm9vbGVhbiwgaW5jbHVkZVplcm86IGJvb2xlYW4sIGluY2x1ZGVUaW1lUmFuZ2U6IGJvb2xlYW59ID0ge1xyXG4gICAgICAgIGZyb21UaW1lOiBudWxsLFxyXG4gICAgICAgIHRvVGltZTogbnVsbCxcclxuICAgICAgICBpbmNsdWRlTXVsdGk6IGZhbHNlLFxyXG4gICAgICAgIGluY2x1ZGVaZXJvOiBmYWxzZSxcclxuICAgICAgICBpbmNsdWRlVGltZVJhbmdlOiBmYWxzZSxcclxuICAgICAgfTtcclxuICBcclxuICAgICAgbGV0IGZyb21UaW1lMjRIckZvcm1hdEFyciA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG90d2VudHlGb3VySHJzRm9ybWF0KFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVswXSArIFwiOlwiICsgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzFdICsgXCIgXCIgKyB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMl0sXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgZnJvbVRpbWUyNEhyRm9ybWF0ID0gZnJvbVRpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyBmcm9tVGltZTI0SHJGb3JtYXRBcnJbMV0gKyBcIjowMFwiO1xyXG4gICAgICBcclxuICAgICAgbGV0IHRvVGltZTI0SHJGb3JtYXRBcnIgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lWzBdICsgXCI6XCIgKyB0aGlzLnNlbGVjdGVkVG9UaW1lWzFdICsgXCIgXCIgKyB0aGlzLnNlbGVjdGVkVG9UaW1lWzJdLFxyXG4gICAgICAgIHRydWVcclxuICAgICAgKTtcclxuICAgICAgbGV0IHRvVGltZTI0SHJGb3JtYXQgPSB0b1RpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyB0b1RpbWUyNEhyRm9ybWF0QXJyWzFdICsgXCI6NTlcIjtcclxuICBcclxuICAgICAgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlciA9IHsgZnJvbVRpbWU6IGZyb21UaW1lMjRIckZvcm1hdCwgdG9UaW1lOiB0b1RpbWUyNEhyRm9ybWF0LCBpbmNsdWRlTXVsdGk6IHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkLCBcclxuICAgICAgaW5jbHVkZVplcm86IHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQsIGluY2x1ZGVUaW1lUmFuZ2U6IHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkfTtcclxuICBcclxuICAgICAgbGV0IGlzRmlsdGVyZWQgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJlT3JkZXJBcHBsaWVkRmlsdGVyc1N0YXRlKHRoaXMuY2xvbmVkVGFibGVEYXRhLGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIpO1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIpO1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIik7XHJcbiAgICAgIFxyXG4gICAgICBpZighaXNGaWx0ZXJlZCl7XHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZGVsZXRlKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEgPSBjbG9uZURlZXAodGhpcy50YWJsZURhdGEpO1xyXG4gICAgICB0aGlzLmRpc2FibGVFbmFibGVFYWNoQ29sdW1uVG9vbHRpcEljb24oKTsgICAgICAgICAgICBcclxuIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VUaW1lRmlsdGVyKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkU2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkU2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKSB7XHJcblxyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ICYmIHRoaXMuc2hvd1NvcnRDb21wb25lbnQpe1xyXG4gICAgICBsZXQgaXNGaWx0ZXJDaGFuZ2VkID0gdGhpcy5jaGVja0lmVGltZVRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgIGxldCBpc1NvcnRDaGFuZ2VkID0gdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuID0gIXRoaXMudmFsaWRhdGVUaW1lRmlsdGVySW5wdXQoKSB8fCAoIWlzU29ydENoYW5nZWQgJiYgIWlzRmlsdGVyQ2hhbmdlZCApO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQpe1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0biA9ICF0aGlzLnZhbGlkYXRlVGltZUZpbHRlcklucHV0KCkgfHwgIXRoaXMuY2hlY2tJZlRpbWVUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gPSAhdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVRpbWVGaWx0ZXJJbnB1dCgpe1xyXG4gICAgaWYodGhpcy5zdGFydFRpbWVIb3VyRXJyIHx8IHRoaXMuc3RhcnRUaW1lTWluRXJyIHx8IHRoaXMuZW5kVGltZUhvdXJFcnIgfHwgdGhpcy5lbmRUaW1lTWluRXJyKXtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCh0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCAmJiAhdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQpICYmIFxyXG4gICAgICAgICAgKHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggJiYgIXRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQgKSYmIFxyXG4gICAgICAgICAgKHRoaXMuc2hvd0VudGVyVGltZUNoZWNrYm94ICYmICF0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHRpbWVGb3JtYXQgPSBcIkhIOm1tOnNzXCI7XHJcblxyXG4gICAgbGV0IHN0YXJ0VGltZTI0SHJGb3JtYXRBcnIgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMF0gKyBcIjpcIiArIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVsxXSArIFwiIFwiICsgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzJdLFxyXG4gICAgICAgIHRydWVcclxuICAgICk7XHJcbiAgICBsZXQgc3RhcnRUaW1lMjRIckZvcm1hdCA9IHN0YXJ0VGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIHN0YXJ0VGltZTI0SHJGb3JtYXRBcnJbMV0gKyBcIjowMFwiO1xyXG4gICAgbGV0IGVuZFRpbWUyNEhyRm9ybWF0QXJyID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb3R3ZW50eUZvdXJIcnNGb3JtYXQoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZVswXSArIFwiOlwiICsgdGhpcy5zZWxlY3RlZFRvVGltZVsxXSArIFwiIFwiICsgdGhpcy5zZWxlY3RlZFRvVGltZVsyXSxcclxuICAgICAgICB0cnVlXHJcbiAgICApO1xyXG4gICAgbGV0IGVuZFRpbWUyNEhyRm9ybWF0ID0gZW5kVGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIGVuZFRpbWUyNEhyRm9ybWF0QXJyWzFdICsgXCI6MDBcIjtcclxuXHJcbiAgICByZXR1cm4gIShkYXlqcyhzdGFydFRpbWUyNEhyRm9ybWF0LCB0aW1lRm9ybWF0KS5pc0FmdGVyKGRheWpzKGVuZFRpbWUyNEhyRm9ybWF0LCB0aW1lRm9ybWF0KSkpOyAgICAgICAgXHJcbiAgfVxyXG5cclxuICBzb3J0ZWREYXRhKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudC50eXBlID09IFwibm9uZVwiKSB7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5maWx0ZXJEYXRhKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcIlwiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gZXZlbnQuZGF0YTtcclxuICAgIH1cclxuICAgIHRoaXMuc29ydGluZ0FwcGxpZWRUb1RhYmxlLmVtaXQodGhpcy50YWJsZURhdGEpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJZlNvcnRpbmdJc0FwcGxpZWQoKSB7XHJcbiAgICBmb3IobGV0IFtrZXksdmFsdWVdIG9mIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5lbnRyaWVzKCkpe1xyXG4gICAgICBpZih2YWx1ZSA9PSBcIkFTQ1wiKXtcclxuICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLnNvcnREYXRhRm9yQ29tcG9uZW50T3RoZXJUaGFuTHVyQW5kQ3NyUGFnZSh0cnVlLHRoaXMudGFibGVEYXRhLGtleSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodmFsdWUgPT0gXCJERVNDXCIpe1xyXG4gICAgICAgICAgdGhpcy50YWJsZURhdGEgPSBjbG9uZURlZXAodGhpcy5hbm5hU29ydFNlcnZpY2Uuc29ydERhdGFGb3JDb21wb25lbnRPdGhlclRoYW5MdXJBbmRDc3JQYWdlKGZhbHNlLHRoaXMudGFibGVEYXRhLGtleSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZGlzYWJsZUVuYWJsZUVhY2hDb2x1bW5Ub29sdGlwSWNvbigpIHtcclxuICAgIHRoaXMudGFibGVIZWFkZXJzLmZvckVhY2goaGVhZGVyID0+IHtcclxuICAgICAgXHJcbiAgICAgIGhlYWRlci5oZWFkZXJJbmZvLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uc2hvd1Rvb2x0aXBJY29uKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGxldCB2YWx1ZXMgPSBbXTtcclxuICAgICAgICAgIGl0ZW0uZGlzYWJsZVRvb2x0aXBJY29uID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICBpdGVtLmZpbHRlclNvcnRPYmplY3RLZXlzLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCBsYXRlc3RGaWx0ZXJzID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5hcHBsaWVkRmlsdGVyc0FycmF5O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYobGF0ZXN0RmlsdGVycy5sZW5ndGggPiAwICYmIGl0ZW0uZGlzYWJsZVRvb2x0aXBJY29uICYmIGxhdGVzdEZpbHRlcnNbbGF0ZXN0RmlsdGVycy5sZW5ndGggLSAxXSA9PSBrZXkpe1xyXG4gICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlVG9vbHRpcEljb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgfSBcclxuXHJcbiAgICAgICAgICAgIGlmKGl0ZW0uZGlzYWJsZVRvb2x0aXBJY29uKXtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZihrZXkgPT0gXCJwZXJpb2RcIil7XHJcbiAgICAgICAgICAgICAgICBsZXQgdW5pcVN0YXJ0RGF0ZSA9IHVuaXEodGhpcy50YWJsZURhdGEubWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVbXCJzdGFydERhdGVcIl0pKTtcclxuICAgICAgICAgICAgICAgIGxldCB1bmlxRW5kRGF0ZSA9IHVuaXEodGhpcy50YWJsZURhdGEubWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVbXCJlbmREYXRlXCJdKSk7XHJcbiAgXHJcbiAgICAgICAgICAgICAgICBpdGVtLmRpc2FibGVUb29sdGlwSWNvbiA9ICh1bmlxU3RhcnREYXRlLmxlbmd0aCA+IDEgfHwgdW5pcUVuZERhdGUubGVuZ3RoID4gMSkgPyBmYWxzZSA6IHRydWU7IFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgdmFsdWVzID0gdGhpcy50YWJsZURhdGEubWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVba2V5XSk7XHJcbiAgICAgICAgICAgICAgICBpZiggKGl0ZW0uZmlsdGVyID09IFwiQ0hFQ0tCT1hcIiAmJiB1bmlxKHZhbHVlcykuZmlsdGVyKG4gPT4gbiE9bnVsbCkubGVuZ3RoID4gMSkgfHwgKGl0ZW0uZmlsdGVyICE9IFwiQ0hFQ0tCT1hcIiAmJiB1bmlxKHZhbHVlcykuZmlsdGVyKG4gPT4gbiE9bnVsbCAmJiBuIT1cIi1cIikubGVuZ3RoID4gMSkpe1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlVG9vbHRpcEljb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgXHJcbiAgfVxyXG5cclxuICBzZXRNYXJnaW5MZWZ0Rm9yRmlsdGVySWNvbigpe1xyXG4gICAgbGV0IGVsZW1lbnRBcnIgPSB0aGlzLnZpZXdDaGlsZFRhYmxlSGVhZGVycy50b0FycmF5KCk7XHJcbiAgICBlbGVtZW50QXJyLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgbGV0IGNoaWxkRGl2RWxlbWVudHMgPSBpdGVtLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW47XHJcbiAgICAgIFxyXG4gICAgICBpZiAoY2hpbGREaXZFbGVtZW50cy5sZW5ndGggPT0gMikge1xyXG4gICAgICAgIGxldCBmaXJzdFBhcmFncmFwaFdpZHRoID0gY2hpbGREaXZFbGVtZW50c1swXS5jaGlsZHJlblswXTtcclxuICAgICAgICBsZXQgc2Vjb25kUGFyYWdyYXBoV2lkdGggPSBjaGlsZERpdkVsZW1lbnRzWzFdLmNoaWxkcmVuWzBdO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmKGZpcnN0UGFyYWdyYXBoV2lkdGgub2Zmc2V0V2lkdGggPiBzZWNvbmRQYXJhZ3JhcGhXaWR0aC5vZmZzZXRXaWR0aCl7XHJcbiAgICAgICAgICBsZXQgZGlmZiA9IGZpcnN0UGFyYWdyYXBoV2lkdGgub2Zmc2V0V2lkdGggLSBzZWNvbmRQYXJhZ3JhcGhXaWR0aC5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgIGlmKGNoaWxkRGl2RWxlbWVudHNbMF0uY2hpbGRyZW4ubGVuZ3RoID09IDIpe1xyXG4gICAgICAgICAgICBjaGlsZERpdkVsZW1lbnRzWzBdLmNoaWxkcmVuWzFdLnN0eWxlLm1hcmdpbkxlZnQgPSA0ICsgJ3B4JztcclxuICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgIGlmKGNoaWxkRGl2RWxlbWVudHNbMV0uY2hpbGRyZW4ubGVuZ3RoID09IDIpe1xyXG5cclxuICAgICAgICAgICAgY2hpbGREaXZFbGVtZW50c1sxXS5jaGlsZHJlblsxXS5zdHlsZS5tYXJnaW5MZWZ0ID0gZGlmZiArIDQgKyAncHgnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgbGV0IGRpZmYgPSBzZWNvbmRQYXJhZ3JhcGhXaWR0aC5vZmZzZXRXaWR0aCAtIGZpcnN0UGFyYWdyYXBoV2lkdGgub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgICBpZihjaGlsZERpdkVsZW1lbnRzWzBdLmNoaWxkcmVuLmxlbmd0aCA9PSAyKXtcclxuICAgICAgICAgICAgY2hpbGREaXZFbGVtZW50c1swXS5jaGlsZHJlblsxXS5zdHlsZS5tYXJnaW5MZWZ0ID0gZGlmZiArIDQgKyAncHgnO1xyXG4gICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgaWYoY2hpbGREaXZFbGVtZW50c1sxXS5jaGlsZHJlbi5sZW5ndGggPT0gMil7XHJcblxyXG4gICAgICAgICAgICBjaGlsZERpdkVsZW1lbnRzWzFdLmNoaWxkcmVuWzFdLnN0eWxlLm1hcmdpbkxlZnQgPSA0ICsgJ3B4JztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGF0YVJvd0NsaWNrZWQocm93RGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnJvd0NsaWNrZWQuZW1pdChyb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIHJhZGlvQnV0dG9uQ2xpY2tlZChkYXRhOiBhbnksIGFjdGlvbjogc3RyaW5nLCBpc0Rpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICBpZiAoIWlzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5yYWRpb0J1dHRvblNlbGVjdGVkLmVtaXQoeyBkYXRhLCBhY3Rpb24gfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBiaW5kVGhlVmFsdWVUb1NlbGxlckdyb3VwVG9vbHRpcChzZWxsZXJHcm91cEhpZXJhcmNoeTogUmF0aW5nU2VsbGVyR3JvdXBIaWVyYXJjaHlbXSwgdG9vbHRpcDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5oaWVyYXJjaHlUb29sdGlwICYmIHRoaXMuaGllcmFyY2h5VG9vbHRpcC5vcGVuKSB7XHJcbiAgICAgIHRoaXMuaGllcmFyY2h5VG9vbHRpcC5jbG9zZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxsZXJHcm91cEhpZXJhcmNoeSA9IHNlbGxlckdyb3VwSGllcmFyY2h5O1xyXG4gICAgdGhpcy5oaWVyYXJjaHlUb29sdGlwID0gdG9vbHRpcDtcclxuICAgIHRoaXMuaGllcmFyY2h5VG9vbHRpcC5vcGVuKCk7XHJcbiAgfVxyXG5cclxuICBpY29uQ2xpY2tlZChyb3dEYXRhOiBhbnksaWNvbkNsYXNzOiBzdHJpbmcpe1xyXG4gICAgXHJcbiAgICBpZihcIm9yZGVySWRcIiBpbiByb3dEYXRhICYmIGljb25DbGFzcy5pbmNsdWRlcyhcIm1kaS1zdGFyXCIpICl7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdGFycmVkT3JkZXJJZCA9IHJvd0RhdGEub3JkZXJJZDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmd0SWNvbkNsaWNrZWQuZW1pdCh7ZGF0YTogcm93RGF0YSxpY29uQ2xhc3M6IGljb25DbGFzc30pO1xyXG4gIH1cclxuXHJcbiAgc3ZnSWNvbkNsaWNrZWQoZGF0YTogR3RDb2x1bW5JY29uRW1pdHRlZERhdGEpe1xyXG4gICAgdGhpcy5ndFNWR0ljb25DbGlja2VkLmVtaXQoZGF0YSk7XHJcbiAgfVxyXG5cclxuICB0ZXh0QWN0aW9uQ2xpY2tlZChyb3dEYXRhOiBhbnksaWQ6IG51bWJlcil7XHJcbiAgICB0aGlzLmd0VGV4dEFjdGlvbkNsaWNrZWQuZW1pdCh7ZGF0YTpyb3dEYXRhLGlkfSk7XHJcbiAgfVxyXG5cclxuICB2aWV3RGV0YWlsc0NsaWNrZWQocm93RGF0YTogYW55KXtcclxuICAgIHRoaXMuZ3RWaWV3RGV0YWlsQ2xpY2tlZC5lbWl0KHtkYXRhOnJvd0RhdGF9KTtcclxuICB9XHJcblxyXG4gIHNldENvbHVtblNvcnRTdGF0ZU1hcCgpe1xyXG4gICAgdGhpcy50YWJsZUhlYWRlcnMuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICAgIGNvbHVtbi5oZWFkZXJJbmZvLmZvckVhY2goIChoZWFkZXIpID0+IHtcclxuICAgICAgICAgICAgaWYoaGVhZGVyLnNob3dUb29sdGlwSWNvbiAmJiBoZWFkZXIuaXNTb3J0UmVxdWlyZWQpe1xyXG4gICAgICAgICAgICAgICAgaGVhZGVyLmlzU29ydFJlcXVpcmVkLmZvckVhY2goIChpdGVtLGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmKGl0ZW0pe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5zZXQoaGVhZGVyLmZpbHRlclNvcnRPYmplY3RLZXlzW2luZGV4XSwgXCJERUZBVUxUXCIpOyAgXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdG9yZVNvcnRUeXBlSW5UZW1wVmFyaWFibGUoZXZlbnQ6IFNvcnRUeXBlKXtcclxuICAgIHRoaXMudGVtcFNvcnRPcmRlciA9IGV2ZW50O1xyXG4gICAgdGhpcy5kaXNhYmxlQXBwbHlCdXR0b25PZlNlbGVjdGVkRmlsdGVyKCk7XHJcbiAgfVxyXG5cclxuICB1bkNoZWNrQWxsQ2hlY2tib3goKXtcclxuICAgICAgdGhpcy50b29sdGlwT3B0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMuZmluZEluZGV4KG9wdCA9PiBvcHQuaWQgPT0gaXRlbS5pZCk7XHJcbiAgICAgICAgdGhpcy5jbG9uZWRUb29sdGlwT3B0aW9uc1tpbmRleF0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gMDtcclxuICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RBbGxDaGVja2JveCgpe1xyXG4gICAgICB0aGlzLnRvb2x0aXBPcHRpb25zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zLmZpbmRJbmRleChvcHQgPT4gb3B0LmlkID09IGl0ZW0uaWQpO1xyXG4gICAgICAgIHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnNbaW5kZXhdLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gdGhpcy50b29sdGlwT3B0aW9ucy5sZW5ndGg7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdEFsbCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94RmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaEZvclRoZUl0ZW0oc3RyOiBzdHJpbmcpe1xyXG4gICAgICBpZihzdHIpe1xyXG4gICAgICAgICAgdGhpcy50b29sdGlwT3B0aW9ucyA9IGNsb25lRGVlcCh0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0ubGFiZWwudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHN0ci50b0xvd2VyQ2FzZSgpKSkpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLnRvb2x0aXBPcHRpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQubGFiZWwgPSB0aGlzLmJvbGRTdHJpbmcoZWxlbWVudC5sYWJlbCxzdHIpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmKHRoaXMudG9vbHRpcE9wdGlvbnMubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICAgbGV0IHVuc2VsZWN0ZWRJdGVtcyA9IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5pc1NlbGVjdGVkKTtcclxuICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtcyA9IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlzU2VsZWN0ZWQpOyAgXHJcbiAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gdW5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgICAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gKHNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDAgfHwgIXRoaXMuY2hlY2tJZkNoZWNrYm94VG9vbHRpcElzRmlsdGVyZWQoKSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gMDtcclxuICAgICAgICAgICAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmRpc2FibGVDbGVhckFsbCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgICAgdGhpcy50b29sdGlwT3B0aW9ucyA9IGNsb25lRGVlcCh0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zKTtcclxuICAgICAgICAgIGxldCB1bnNlbGVjdGVkSXRlbXMgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+ICFpdGVtLmlzU2VsZWN0ZWQpO1xyXG4gICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdEFsbCA9IHVuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94RmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgYm9sZFN0cmluZyhzdHI6IHN0cmluZywgZmluZDogc3RyaW5nKSB7XHJcbiAgICBsZXQgaW5kZXhlcyA9IHRoaXMuZ2V0SW5kaWNlc09mKGZpbmQsIHN0ciwgZmFsc2UpO1xyXG4gICAgXHJcbiAgICBpbmRleGVzLmZvckVhY2goKGl0ZW0saW5kZXgpID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRJbmRleCA9IGl0ZW0gKyAoaW5kZXggKiA3KTsgLy9NdWx0aXBseWluZyBieSA3IGFzIHRoZXJlIGFyZSA3Y2hhcjogPGI+PC9iPlxyXG4gICAgICAgIGxldCBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBmaW5kLmxlbmd0aDtcclxuICAgICAgICBsZXQgc3RyVG9CZVJlcGxhY2VkID0gc3RyLnN1YnN0cmluZyhzdGFydEluZGV4LCBlbmRJbmRleCk7XHJcbiAgICAgICAgc3RyID0gc3RyLnJlcGxhY2Uoc3RyVG9CZVJlcGxhY2VkLCBcIjxiPlwiICsgc3RyVG9CZVJlcGxhY2VkICsgXCI8L2I+XCIpOyBcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHN0cjtcclxufVxyXG5cclxuZ2V0SW5kaWNlc09mKHNlYXJjaFN0cjogc3RyaW5nLCBzdHI6IHN0cmluZywgY2FzZVNlbnNpdGl2ZTogYm9vbGVhbikge1xyXG4gICAgdmFyIHNlYXJjaFN0ckxlbiA9IHNlYXJjaFN0ci5sZW5ndGg7XHJcbiAgICBpZiAoc2VhcmNoU3RyTGVuID09IDApIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICB2YXIgc3RhcnRJbmRleCA9IDAsIGluZGV4LCBpbmRpY2VzID0gW107XHJcbiAgICBpZiAoIWNhc2VTZW5zaXRpdmUpIHtcclxuICAgICAgICBzdHIgPSBzdHIudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBzZWFyY2hTdHIgPSBzZWFyY2hTdHIudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuICAgIHdoaWxlICgoaW5kZXggPSBzdHIuaW5kZXhPZihzZWFyY2hTdHIsIHN0YXJ0SW5kZXgpKSA+IC0xKSB7XHJcbiAgICAgICAgaW5kaWNlcy5wdXNoKGluZGV4KTtcclxuICAgICAgICBzdGFydEluZGV4ID0gaW5kZXggKyBzZWFyY2hTdHJMZW47XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaW5kaWNlcztcclxufVxyXG5cclxuXHJcbiAgcmVtb3ZlQm9sZEVsZW1lbnRGcm9tU3RyaW5nKG9yaWdpbmFsU3RyaW5nOiBzdHJpbmcpe1xyXG4gICAgICBsZXQgZmlyc3RSZWdFeHAgPSBuZXcgUmVnRXhwKCc8Yj4nLCdnJyk7XHJcbiAgICAgIGxldCBzZWNvbmRSZWdFeHAgPSBuZXcgUmVnRXhwKCc8L2I+JywnZycpO1xyXG5cclxuICAgICAgbGV0IHJldCA9IG9yaWdpbmFsU3RyaW5nLnJlcGxhY2UoZmlyc3RSZWdFeHAsJycpO1xyXG4gICAgICByZXR1cm4gcmV0LnJlcGxhY2Uoc2Vjb25kUmVnRXhwLCcnKTtcclxuICB9XHJcblxyXG4gIGNsZWFyU2VhcmNoZWRJdGVtKCl7XHJcbiAgICAgIHRoaXMuc2VhcmNoSXRlbSA9IFwiXCI7XHJcbiAgICAgIHRoaXMuc2VhcmNoRm9yVGhlSXRlbShcIlwiKTtcclxuICB9XHJcblxyXG4gIGNhbGVuZGFyRGF0ZUNoYW5nZWQoZXZlbnQ6IGFueSl7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VsZWN0aW9uID0gZXZlbnQ7XHJcbiAgICB0aGlzLmRpc2FibGVDYWxlbmRhckFwcGx5QnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlQ2FsZW5kYXJBcHBseUJ1dHRvbigpIHtcclxuXHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5zaG93U29ydENvbXBvbmVudCl7XHJcbiAgICAgIGxldCBpc0ZpbHRlckNoYW5nZWQgPSB0aGlzLmNoZWNrSWZEYXRlVG9vbHRpcElzRmlsdGVyZWQoKTtcclxuICAgICAgbGV0IGlzU29ydENoYW5nZWQgPSB0aGlzLmNoZWNrSWZTb3J0aW5nQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgXHJcbiAgICAgIHRoaXMuZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG4gPSAhKHRoaXMuY2FsZW5kYXJTZWxlY3Rpb24uZnJvbURhdGUgJiYgdGhpcy5jYWxlbmRhclNlbGVjdGlvbi50b0RhdGUpIHx8ICghaXNTb3J0Q2hhbmdlZCAmJiAhaXNGaWx0ZXJDaGFuZ2VkICk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCl7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlQ2FsZW5kYXJBcHBseUJ0biA9ICEodGhpcy5jYWxlbmRhclNlbGVjdGlvbi5mcm9tRGF0ZSAmJiB0aGlzLmNhbGVuZGFyU2VsZWN0aW9uLnRvRGF0ZSkgfHwgIXRoaXMuY2hlY2tJZkRhdGVUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICB0aGlzLmRpc2FibGVDYWxlbmRhckFwcGx5QnRuID0gIXRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgc2V0SW5pdGlhbFZhbHVlTWFwRm9yVGltZUZpbHRlcihrZXk6IHN0cmluZykge1xyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmNsb25lZFRhYmxlRGF0YS5maWx0ZXIoXHJcbiAgICAgICAgKG9iaikgPT4gIVtcIlwiLCBcIi1cIiwgbnVsbCwgXCIwXCIsIFwiPG11bHRpPlwiXS5pbmNsdWRlcyhvYmpba2V5XSkpO1xyXG5cclxuICAgIGxldCB0aW1lQXJyID0gbWFwKGRhdGEsIGtleSk7XHJcbiAgICB0aW1lQXJyLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLnNvcnRCeVRpbWVBc2NlbmRpbmcoYSwgYik7XHJcbiAgICB9KTtcclxuICAgIFxyXG4gICAgbGV0IG9iaiA9IHtcclxuICAgICAgICBmcm9tVGltZTogdGltZUFyclswXSxcclxuICAgICAgICB0b1RpbWU6IHRpbWVBcnJbdGltZUFyci5sZW5ndGggLSAxXSxcclxuICAgICAgICBpbmNsdWRlTXVsdGk6IGZhbHNlLFxyXG4gICAgICAgIGluY2x1ZGVaZXJvOiBmYWxzZSxcclxuICAgICAgICBpbmNsdWRlVGltZVJhbmdlOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PT0gXCJTUE9UREVUQUlMU1wiIHx8XHJcbiAgICAgICAgdGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09PSBcIkVYQ0xVREVJTlZFTlRPUllQT1BVUFwiIHx8XHJcbiAgICAgICAgdGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09PSBcIkFDVElWSVRZTE9HXCJcclxuICAgICkge1xyXG4gICAgICAgIGxldCBpbmNsdWRlTXVsdGkgPVxyXG4gICAgICAgICAgICB0aGlzLmNsb25lZFRhYmxlRGF0YS5maW5kSW5kZXgoKG9iaikgPT4gb2JqW2tleV0gPT0gXCI8bXVsdGk+XCIpICE9XHJcbiAgICAgICAgICAgIC0xO1xyXG4gICAgICAgIGxldCBpbmNsdWRlWmVybyA9XHJcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLmZpbmRJbmRleCgob2JqKSA9PiBvYmpba2V5XSA9PSBcIjBcIikgIT0gLTE7XHJcbiAgICAgICAgbGV0IGluY2x1ZGVUaW1lUmFuZ2UgPVxyXG4gICAgICAgICAgICB0aGlzLmNsb25lZFRhYmxlRGF0YS5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgICAgICAob2JqKSA9PiBvYmpba2V5XSAhPSBcIjBcIiAmJiBvYmpba2V5XSAhPSBcIjxtdWx0aT5cIlxyXG4gICAgICAgICAgICApICE9IC0xO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgICAgIGZyb21UaW1lOiB0aW1lQXJyWzBdLFxyXG4gICAgICAgICAgICB0b1RpbWU6IHRpbWVBcnJbdGltZUFyci5sZW5ndGggLSAxXSxcclxuICAgICAgICAgICAgaW5jbHVkZU11bHRpOiBpbmNsdWRlTXVsdGksXHJcbiAgICAgICAgICAgIGluY2x1ZGVaZXJvOiBpbmNsdWRlWmVybyxcclxuICAgICAgICAgICAgaW5jbHVkZVRpbWVSYW5nZTogaW5jbHVkZVRpbWVSYW5nZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldChrZXksIG9iaik7XHJcbiAgICB9IFxyXG4gICAgZWxzZSBpZiAodGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09PSBcIlJBVElOR1wiKSB7XHJcbiAgICAgICAgdGhpcy5zZXRJbml0aWFsVmFsdWVNYXBGb3JSYXRpbmdQYWdlVGltZUZpbHRlcihrZXkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5zZXQoa2V5LCBvYmopO1xyXG4gICAgfVxyXG59XHJcblxyXG5zZXRJbml0aWFsVmFsdWVNYXBGb3JSYXRpbmdQYWdlVGltZUZpbHRlcihrZXk6IHN0cmluZyl7XHJcbiAgbGV0IGluY2x1ZGVNdWx0aSA9XHJcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLmZpbmRJbmRleCgob2JqKSA9PiBvYmpba2V5XVswXSA9PSBcIjxtdWx0aT5cIikgIT1cclxuICAgICAgICAgICAgLTE7XHJcbiAgICAgICAgbGV0IGluY2x1ZGVaZXJvID1cclxuICAgICAgICAgICAgdGhpcy5jbG9uZWRUYWJsZURhdGEuZmluZEluZGV4KChvYmopID0+IG9ialtrZXldWzBdID09IFwiMFwiKSAhPSAtMTtcclxuICAgICAgICBsZXQgaW5jbHVkZVRpbWVSYW5nZSA9XHJcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLmZpbmRJbmRleChcclxuICAgICAgICAgICAgICAgIChvYmopID0+IG9ialtrZXldWzBdICE9IFwiMFwiICYmIG9ialtrZXldWzBdICE9IFwiPG11bHRpPlwiXHJcbiAgICAgICAgICAgICkgIT0gLTE7XHJcblxyXG4gICAgICAgIGxldCBzdGFydFRpbWVBcnIgPSBtYXAodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwic3RhcnRUaW1lXCIpO1xyXG4gICAgICAgIGxldCBlbmRUaW1lQXJyID0gbWFwKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcImVuZFRpbWVcIik7XHJcblxyXG4gICAgICAgIHN0YXJ0VGltZUFyci5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2Uuc29ydEJ5VGltZUFzY2VuZGluZyhhLCBiKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgZW5kVGltZUFyci5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2Uuc29ydEJ5VGltZURlc2NlbmRpbmcoYSwgYik7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgICAgIGZyb21UaW1lOiBzdGFydFRpbWVBcnJbMF0sXHJcbiAgICAgICAgICAgIHRvVGltZTogZW5kVGltZUFyclswXSxcclxuICAgICAgICAgICAgaW5jbHVkZU11bHRpOiBpbmNsdWRlTXVsdGksXHJcbiAgICAgICAgICAgIGluY2x1ZGVaZXJvOiBpbmNsdWRlWmVybyxcclxuICAgICAgICAgICAgaW5jbHVkZVRpbWVSYW5nZTogaW5jbHVkZVRpbWVSYW5nZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldChrZXksIG9iaik7IFxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0VGltZUhvdXJDaGFuZ2UodmFsOiBzdHJpbmcpe1xyXG4gICAgICAgIGlmKHZhbC5sZW5ndGggPT0gMCB8fCAxID4gcGFyc2VJbnQodmFsKSB8fCBwYXJzZUludCh2YWwpID4gMTIpe1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0VGltZUhvdXJFcnIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0VGltZUhvdXJFcnIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRUaW1lTWluQ2hhbmdlKHZhbDogc3RyaW5nKXtcclxuICAgICAgICBpZih2YWwubGVuZ3RoICE9IDIgIHx8IDAgPiBwYXJzZUludCh2YWwpIHx8IHBhcnNlSW50KHZhbCkgPiA1OSl7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lTWluRXJyID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVNaW5FcnIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZW5kVGltZUhvdXJDaGFuZ2UodmFsOiBzdHJpbmcpe1xyXG4gICAgICAgIGlmKHZhbC5sZW5ndGggPT0gMCB8fCAxID4gcGFyc2VJbnQodmFsKSB8fCBwYXJzZUludCh2YWwpID4gMTIpe1xyXG4gICAgICAgICAgICB0aGlzLmVuZFRpbWVIb3VyRXJyID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5lbmRUaW1lSG91ckVyciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgIH1cclxuXHJcbiAgICBlbmRUaW1lTWluQ2hhbmdlKHZhbDogc3RyaW5nKXtcclxuICAgICAgICBpZih2YWwubGVuZ3RoICE9IDIgIHx8IDAgPiBwYXJzZUludCh2YWwpIHx8IHBhcnNlSW50KHZhbCkgPiA1OSl7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kVGltZU1pbkVyciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kVGltZU1pbkVyciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lmQ2hlY2tib3hUb29sdGlwSXNGaWx0ZXJlZCgpe1xyXG4gICAgICAgIGxldCBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IFtdO1xyXG4gICAgICAgIGxldCBwcmV2aW91c1NlbGVjdGVkVmFsdWUgPSBbXTtcclxuXHJcbiAgICAgICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3RlZFZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmKCF0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICAgIGxldCBpbml0aWFsVmFsdWUgPSBzb3J0QnkodW5pcSh0aGlzLmNsb25lZFRhYmxlRGF0YS5tYXAoaXRlbSA9PiBpdGVtW3RoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpb10pKSk7XHJcbiAgICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8saW5pdGlhbFZhbHVlKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3RlZFZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGVkVmFsdWUgPSBzb3J0QnkodW5pcSh0aGlzLmNsb25lZFRhYmxlRGF0YS5tYXAoaXRlbSA9PiBpdGVtW3RoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpb10pKSk7XHJcbiAgICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLHByZXZpb3VzU2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZih0aGlzLnRvb2x0aXBPcHRpb25zKXtcclxuXHJcbiAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZFZhbHVlID0gc29ydEJ5KHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc1NlbGVjdGVkKS5tYXAoaXRlbSA9PiBpdGVtLnZhbHVlKSk7XHJcblxyXG4gICAgICAgICAgICBpZighdGhpcy5zZWFyY2hJdGVtICYmIGN1cnJlbnRTZWxlY3RlZFZhbHVlLmxlbmd0aCA9PSB0aGlzLnRvb2x0aXBPcHRpb25zLmxlbmd0aCAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGVkVmFsdWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBibGFua0luZGV4ID0gY3VycmVudFNlbGVjdGVkVmFsdWUuZmluZEluZGV4KChpdGVtOiBzdHJpbmcpID0+IGl0ZW0gPT0gbnVsbCk7XHJcbiAgICAgICAgaWYoYmxhbmtJbmRleCAhPSAtMSl7XHJcbiAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IHNvcnRCeShjdXJyZW50U2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmlzRmlsdGVyQ2hhbmdlZCA9ICFpc0VxdWFsKGN1cnJlbnRTZWxlY3RlZFZhbHVlLHByZXZpb3VzU2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrSWZUaW1lVG9vbHRpcElzRmlsdGVyZWQoKXtcclxuICAgICAgbGV0IGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXI6IHtmcm9tVGltZTogc3RyaW5nLCB0b1RpbWU6c3RyaW5nLCBpbmNsdWRlTXVsdGk6IGJvb2xlYW4sIGluY2x1ZGVaZXJvOiBib29sZWFuLCBpbmNsdWRlVGltZVJhbmdlOiBib29sZWFufSA9IHtcclxuICAgICAgICBmcm9tVGltZTogbnVsbCxcclxuICAgICAgICB0b1RpbWU6IG51bGwsXHJcbiAgICAgICAgaW5jbHVkZU11bHRpOiBmYWxzZSxcclxuICAgICAgICBpbmNsdWRlWmVybzogZmFsc2UsXHJcbiAgICAgICAgaW5jbHVkZVRpbWVSYW5nZTogZmFsc2UsXHJcbiAgICAgIH07XHJcbiAgXHJcbiAgICAgIGxldCBwcmV2aW91c1NlbGVjdGVkVGltZUZpbHRlcjtcclxuICBcclxuICAgICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgIHByZXZpb3VzU2VsZWN0ZWRUaW1lRmlsdGVyID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgcHJldmlvdXNTZWxlY3RlZFRpbWVGaWx0ZXIgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICBsZXQgZnJvbVRpbWUyNEhyRm9ybWF0QXJyID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb3R3ZW50eUZvdXJIcnNGb3JtYXQoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzBdICsgXCI6XCIgKyB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMV0gKyBcIiBcIiArIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVsyXSxcclxuICAgICAgICB0cnVlXHJcbiAgICAgICk7XHJcbiAgICAgIGxldCBmcm9tVGltZTI0SHJGb3JtYXQgPSBmcm9tVGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIGZyb21UaW1lMjRIckZvcm1hdEFyclsxXSArIFwiOjAwXCI7XHJcblxyXG4gICAgICBsZXQgdG9UaW1lMjRIckZvcm1hdEFyciA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG90d2VudHlGb3VySHJzRm9ybWF0KFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWVbMF0gKyBcIjpcIiArIHRoaXMuc2VsZWN0ZWRUb1RpbWVbMV0gKyBcIiBcIiArIHRoaXMuc2VsZWN0ZWRUb1RpbWVbMl0sXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgdG9UaW1lMjRIckZvcm1hdCA9IHRvVGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIHRvVGltZTI0SHJGb3JtYXRBcnJbMV0gKyBcIjowMFwiO1xyXG4gIFxyXG4gICAgICBjdXJyZW50U2VsZWN0ZWRUaW1lRmlsdGVyID0geyBmcm9tVGltZTogZnJvbVRpbWUyNEhyRm9ybWF0LCB0b1RpbWU6IHRvVGltZTI0SHJGb3JtYXQsIGluY2x1ZGVNdWx0aTogdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQsIFxyXG4gICAgICBpbmNsdWRlWmVybzogdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCwgaW5jbHVkZVRpbWVSYW5nZTogdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWR9O1xyXG4gICAgICBcclxuICAgICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSAhaXNFcXVhbChwcmV2aW91c1NlbGVjdGVkVGltZUZpbHRlciwgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlcik7XHJcbiAgICAgIHJldHVybiB0aGlzLmlzRmlsdGVyQ2hhbmdlZDsgIFxyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrSWZEYXRlVG9vbHRpcElzRmlsdGVyZWQoKXtcclxuICAgICAgbGV0IGN1cnJlbnRTZWxlY3RlZERhdGUgPSBjbG9uZURlZXAodGhpcy5jYWxlbmRhclNlbGVjdGlvbik7XHJcbiAgICAgIGxldCBwcmV2aW91c1NlbGVjdGVkRGF0ZToge2Zyb21EYXRlOiBhbnksIHRvRGF0ZTogYW55fSA9IHtmcm9tRGF0ZTogbnVsbCwgdG9EYXRlOiBudWxsfTtcclxuXHJcbiAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICBwcmV2aW91c1NlbGVjdGVkRGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmKCF0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlTWFwRm9yRGF0ZUZpbHRlcigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgcHJldmlvdXNTZWxlY3RlZERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlTWFwRm9yRGF0ZUZpbHRlcigpO1xyXG4gICAgICAgIHByZXZpb3VzU2VsZWN0ZWREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUgJiYgY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUpe1xyXG4gICAgICAgICAgbGV0IGZyb21EYXRlID0ge3llYXI6IGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUueWVhcixtb250aDogY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZS5tb250aCxkYXk6IGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUuZGF5fTtcclxuICAgICAgICAgIGxldCB0b0RhdGUgPSB7eWVhcjogY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUueWVhcixtb250aDogY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUubW9udGgsZGF5OiBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZS5kYXl9O1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZihpc0VxdWFsKHRoaXMuY2FsZW5kYXJNaW5FbmFibGVkRGF0ZSxmcm9tRGF0ZSkgJiYgaXNFcXVhbCh0aGlzLmNhbGVuZGFyTWF4RW5hYmxlZERhdGUsdG9EYXRlKSAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGVkRGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlID0gZGF5anModGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnROZ2JEYXRlVG9Nb21lbnQoY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZSkpO1xyXG4gICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlID0gZGF5anModGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnROZ2JEYXRlVG9Nb21lbnQoY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkID0gIWlzRXF1YWwocHJldmlvdXNTZWxlY3RlZERhdGUsY3VycmVudFNlbGVjdGVkRGF0ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEluaXRpYWxWYWx1ZU1hcEZvckRhdGVGaWx0ZXIoKXtcclxuICAgICAgICBsZXQgbWluTWF4RGF0ZTtcclxuXHJcbiAgICAgICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvID09IFwicGVyaW9kXCIpe1xyXG4gICAgICAgICAgbGV0IG1pblN0YXJ0RGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWluQW5kTWF4RGF0ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJzdGFydERhdGVcIik7XHJcbiAgICAgICAgICBsZXQgbWF4RW5kRGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWluQW5kTWF4RGF0ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSxcImVuZERhdGVcIik7XHJcbiAgICAgICAgICBtaW5NYXhEYXRlID0gW21pblN0YXJ0RGF0ZVswXSxtYXhFbmREYXRlWzFdXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgIG1pbk1heERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1pbkFuZE1heERhdGUodGhpcy5jbG9uZWRUYWJsZURhdGEsdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkRGF0ZSA9IHtmcm9tRGF0ZTogbWluTWF4RGF0ZVswXSwgdG9EYXRlOiBtaW5NYXhEYXRlWzFdfTtcclxuICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLCBzZWxlY3RlZERhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrSWZTbGlkZXJUb29sdGlwSXNGaWx0ZXJlZCgpe1xyXG4gICAgICBsZXQgY3VycmVudFNsaWRlckRhdGE6IHttaW46YW55LCBtYXg6IGFueX0gPSB7bWluOiBudWxsICwgbWF4OiBudWxsfTtcclxuICAgICAgbGV0IHByZXZpb3VzU2xpZGVyRGF0YToge21pbjphbnksIG1heDogYW55fSA9IHttaW46IFwiXCIsIG1heDogXCJcIn07XHJcblxyXG4gICAgICAvLyBpZih0aGlzLmlzTWluVGV4dEJveEVtcHR5KXtcclxuICAgICAgLy8gICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1pbiA9IHRoaXMub3B0aW9ucy5mbG9vcjtcclxuICAgICAgLy8gICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1heCA9IHRoaXMuc2xpZGVyTWF4VmFsdWU7XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gZWxzZSBpZih0aGlzLmlzTWF4VGV4dEJveEVtcHR5KXtcclxuICAgICAgLy8gICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1heCA9IHRoaXMub3B0aW9ucy5jZWlsO1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWluID0gdGhpcy5zbGlkZXJNaW5WYWx1ZTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBlbHNle1xyXG4gICAgICAgICAgY3VycmVudFNsaWRlckRhdGEubWF4ID0gdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWU7XHJcbiAgICAgICAgICBjdXJyZW50U2xpZGVyRGF0YS5taW4gPSB0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZTtcclxuICAgICAgLy8gfVxyXG5cclxuICAgICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgIHByZXZpb3VzU2xpZGVyRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgIGlmKCF0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICB0aGlzLnNldEluaXRpYWxWYWx1ZU1hcEZvclNsaWRlckZpbHRlcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICBwcmV2aW91c1NsaWRlckRhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlTWFwRm9yU2xpZGVyRmlsdGVyKCk7XHJcbiAgICAgICAgcHJldmlvdXNTbGlkZXJEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKGN1cnJlbnRTbGlkZXJEYXRhLm1pbiA9PSB0aGlzLm9wdGlvbnMuZmxvb3IgJiYgY3VycmVudFNsaWRlckRhdGEubWF4ID09IHRoaXMub3B0aW9ucy5jZWlsICYmIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pICl7XHJcbiAgICAgICAgICBjdXJyZW50U2xpZGVyRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmlzRmlsdGVyQ2hhbmdlZCA9ICFpc0VxdWFsKHByZXZpb3VzU2xpZGVyRGF0YSxjdXJyZW50U2xpZGVyRGF0YSk7XHJcbiAgICAgIHJldHVybiB0aGlzLmlzRmlsdGVyQ2hhbmdlZDtcclxuICAgIH1cclxuXHJcbiAgICBzZXRJbml0aWFsVmFsdWVNYXBGb3JTbGlkZXJGaWx0ZXIoKXtcclxuICAgICAgbGV0IG1pblZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NYXhBbmRNaW5WYWx1ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLCB0cnVlKTtcclxuICAgICAgbGV0IG1heFZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NYXhBbmRNaW5WYWx1ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLCBmYWxzZSk7XHJcbiAgICAgIGxldCBzbGlkZXJEYXRhID0geyBtaW46IG1pblZhbHVlLCBtYXg6IG1heFZhbHVlIH07XHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sIHNsaWRlckRhdGEpO1xyXG4gICAgICBcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lmU29ydGluZ0NoYW5nZWQoKXtcclxuICAgICAgdGhpcy5pc1NvcnRDaGFuZ2VkID0gdGhpcy50ZW1wU29ydE9yZGVyICE9IG51bGwgJiYgdGhpcy50ZW1wU29ydE9yZGVyICE9IHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTs7XHJcbiAgICAgIHJldHVybiB0aGlzLmlzU29ydENoYW5nZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZUFwcGx5QnV0dG9uT2ZTZWxlY3RlZEZpbHRlcigpe1xyXG4gICAgICBsZXQgaGVhZGVyID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvO1xyXG5cclxuICAgICAgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuY2FsZW5kYXJTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVDYWxlbmRhckFwcGx5QnV0dG9uKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zbGlkZXJTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ0bigpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudGltZVNldC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94RmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVDaGVja2JveEZpbHRlckFwcGx5QnV0dG9uKCl7XHJcbiAgICAgIGxldCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ID8gdGhpcy50b29sdGlwT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlzU2VsZWN0ZWQpIDogW107XHJcbiAgICAgICAgXHJcbiAgICAgIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCAmJiB0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICAgIGxldCBpc0ZpbHRlckNoYW5nZWQgPSB0aGlzLmNoZWNrSWZDaGVja2JveFRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgICAgICBsZXQgaXNTb3J0Q2hhbmdlZCA9IHRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMCB8fCAoIWlzU29ydENoYW5nZWQgJiYgIWlzRmlsdGVyQ2hhbmdlZCApO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50KXtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwIHx8ICF0aGlzLmNoZWNrSWZDaGVja2JveFRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSAhdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRyYWNrQnlUb29sdGlwTW9kZWxJZChpbmRleDogbnVtYmVyICwgaXRlbTogVG9vbHRpcE1vZGVsKXtcclxuICAgICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QWN0aXZlU3RhdGVPYmplY3QoKXtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmUgPSAgIXRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVzZXRGaWx0ZXJTb3J0QWN0aXZlU3RhdHVzXHJcbiAgICAgID8gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVcclxuICAgICAgOiB7fTtcclxuICAgICAgdGhpcy50YWJsZUhlYWRlcnMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLmhlYWRlckluZm8uZm9yRWFjaChoZWFkZXIgPT4ge1xyXG4gICAgICAgICAgICBpZihoZWFkZXIuc2hvd1Rvb2x0aXBJY29uKXtcclxuICAgICAgICAgICAgICBsZXQga2V5ID0gaGVhZGVyLmZpbHRlclNvcnRPYmplY3RLZXlzLmpvaW4oJywnKTtcclxuICAgICAgICAgICAgICBoZWFkZXIuam9pbmVkRmlsdGVyU29ydE9iamVjdEtleXMgPSBrZXk7XHJcbiAgICAgICAgICAgICAgLy8gQU5OQS00MTEzIGZpeFxyXG4gICAgICAgICAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVzZXRGaWx0ZXJTb3J0QWN0aXZlU3RhdHVzKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlW2tleV0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXNldEZpbHRlclNvcnRBY3RpdmVTdGF0dXMgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldElzRGlmZmVyZW5jZSh2YWx1ZTogYm9vbGVhbil7XHJcbiAgICAgIHRoaXMuaXNEaWZmZXJlbmNlTGVzc1RoYW4yNVBlcmNlbnQgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldEluZGV4KCl7XHJcbiAgICAgIHRoaXMuc3RhcnQgPSAwO1xyXG4gICAgICB0aGlzLmVuZCA9IHRoaXMubGltaXQgKyB0aGlzLnN0YXJ0O1xyXG4gICAgfVxyXG5cclxuICAgIG9uVGFibGVDb250YWluZXJTY3JvbGwoZTogYW55KSB7XHJcbiAgICAgICAgY29uc3QgdGFibGVWaWV3SGVpZ2h0ID0gZS50YXJnZXQub2Zmc2V0SGVpZ2h0OyAvLyB2aWV3cG9ydFxyXG4gICAgICAgIGNvbnN0IHRhYmxlU2Nyb2xsSGVpZ2h0ID0gZS50YXJnZXQuc2Nyb2xsSGVpZ2h0OyAvLyBsZW5ndGggb2YgYWxsIHRhYmxlXHJcbiAgICAgICAgY29uc3Qgc2Nyb2xsTG9jYXRpb24gPSBlLnRhcmdldC5zY3JvbGxUb3A7IC8vIGhvdyBmYXIgdXNlciBzY3JvbGxlZFxyXG5cclxuICAgICAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJyZW1hcmtzLWluZm8tdG9vbHRpcFwiKTtcclxuICAgICAgICB3aGlsZSAoZWxlbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgZWxlbWVudHNbMF0ucmVtb3ZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIElmIHRoZSB1c2VyIGhhcyBzY3JvbGxlZCB3aXRoaW4gMTUwcHggb2YgdGhlIGJvdHRvbSwgYWRkIG1vcmUgZGF0YVxyXG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IDE1MDtcclxuICAgICAgICBjb25zdCBsaW1pdCA9IHRhYmxlU2Nyb2xsSGVpZ2h0IC0gdGFibGVWaWV3SGVpZ2h0IC0gYnVmZmVyO1xyXG4gICAgICAgIGlmIChzY3JvbGxMb2NhdGlvbiA+IGxpbWl0KSB7XHJcbiAgICAgICAgICAgIGxldCBkYXRhID0gdGhpcy5nZXRUYWJsZURhdGEodGhpcy5zdGFydCwgdGhpcy5lbmQpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVkRGF0YSA9IHRoaXMucmVuZGVyZWREYXRhLmNvbmNhdChkYXRhKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVJbmRleCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRhYmxlQ29udGFpbmVyU2Nyb2xsZWQoZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VGFibGVEYXRhKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVEYXRhLmZpbHRlcigodmFsdWUsIGluZGV4KSA9PiBpbmRleCA+PSBzdGFydCAmJiBpbmRleCA8IGVuZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlSW5kZXgoKSB7XHJcbiAgICAgICAgdGhpcy5zdGFydCA9IHRoaXMuZW5kO1xyXG4gICAgICAgIHRoaXMuZW5kID0gdGhpcy5saW1pdCArIHRoaXMuc3RhcnQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SW5pdGlhbFJvd3NGb3JUYWJsZSgpe1xyXG4gICAgICB0aGlzLnJlc2V0SW5kZXgoKTtcclxuICAgICAgdGhpcy5yZW5kZXJlZERhdGEgPSB0aGlzLmdldFRhYmxlRGF0YSh0aGlzLnN0YXJ0LHRoaXMuZW5kKTtcclxuICAgICAgdGhpcy51cGRhdGVJbmRleCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNwb3REZXRhaWxzRG93bmxvYWRDbGlja2VkKHBhcmVudENoaWxkT3JUb3RhbFJvdzogXCJEQVRBUk9XXCIgfCBcIlRPVEFMUk9XXCIsIHJvd2RhdGE/OiBhbnkgKSB7XHJcbiAgICAgIGlmKHJvd2RhdGEpe1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbnZlbnRvcnlJZEZvckRvd25sb2FkID0gcm93ZGF0YS5pbnZlbnRvcnlDb2RlSWQ7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERlbW9ncmFwaGljRm9yRG93bmxvYWQgPSByb3dkYXRhLmRlbW9ncmFwaGljO1xyXG4gICAgICB9IGVsc2V7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEludmVudG9yeUlkRm9yRG93bmxvYWQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREZW1vZ3JhcGhpY0ZvckRvd25sb2FkID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93VHlwZUZvckRvd25sb2FkID0gcGFyZW50Q2hpbGRPclRvdGFsUm93O1xyXG4gICAgICB0aGlzLmRvd25sb2FkU3BvdERldGFpbHMuZW1pdCh7XHJcbiAgICAgICAgcGFyZW50Q2hpbGRPclRvdGFsUm93OiBwYXJlbnRDaGlsZE9yVG90YWxSb3csXHJcbiAgICAgICAgaW52ZW50b3J5Q29kZUlkOiB0aGlzLnNlbGVjdGVkSW52ZW50b3J5SWRGb3JEb3dubG9hZCxcclxuICAgICAgICBkZW1vZ3JhcGhpYzogdGhpcy5zZWxlY3RlZERlbW9ncmFwaGljRm9yRG93bmxvYWR9KVxyXG4gIH1cclxuXHJcbiAgdGFibGVDb250YWluZXJTY3JvbGxlZChldmVudDogYW55KXtcclxuICAgICAgdGhpcy5pc1Njcm9sbGVkTGVmdCA9IGV2ZW50LnRhcmdldC5zY3JvbGxMZWZ0ID4gMDtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyIHt7Z3RHZW5lcmFsQ29uZmlnPy50YWJsZU91dGVyQ29udGFpbmVyTmFtZX19XCIgW25nQ2xhc3NdPVwieyAnc2Nyb2xsLWxlZnQtc2hhZG93LWVmZmVjdCc6IGlzU2Nyb2xsZWRMZWZ0IH1cIiAoc2Nyb2xsKT1cIm9uVGFibGVDb250YWluZXJTY3JvbGwoJGV2ZW50KVwiPlxyXG4gICAgPGRpdlxyXG4gICAgICAgIFtjbGFzc109XCJndEdlbmVyYWxDb25maWcudGFibGVDb250YWluZXJOYW1lXCJcclxuICAgICAgICBjbGFzcz1cImhvcml6b250YWwtc2Nyb2xsLWZvci10YWJsZS1jb250YWluZXJcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgaGVpZ2h0OlxyXG4gICAgICAgICAgICAgICAgdGFibGVEYXRhLmxlbmd0aCA8IG1heGltdW1Sb3dzV2hpY2hDYW5CZVJlbmRlcmVkV2l0aG91dFNjcm9sbFxyXG4gICAgICAgICAgICAgICAgICAgID8gJ2NhbGMoJyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAoKGd0RGltZW5zaW9uLnJvd0hlaWdodCArIChpbmNsdWRlQm9yZGVySW5UYWJsZUhlaWdodCA/IHJvd0JvcmRlcldpZHRoIDogMCkpICogdGFibGVEYXRhLmxlbmd0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCF0YWJsZURhdGEubGVuZ3RoIHx8ICFndEdlbmVyYWxDb25maWcudG90YWxSb3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBndERpbWVuc2lvbi5oZWFkZXJIZWlnaHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBndERpbWVuc2lvbi5oZWFkZXJIZWlnaHQgKyBndERpbWVuc2lvbi5yb3dIZWlnaHQgKyAoIGluY2x1ZGVCb3JkZXJJblRhYmxlSGVpZ2h0ID8gKDIgKiByb3dCb3JkZXJXaWR0aCkgOiAwKSkpICtcclxuICAgICAgICAgICAgICAgICAgICAgICdweCknXHJcbiAgICAgICAgICAgICAgICAgICAgOiBndERpbWVuc2lvbi50YWJsZUhlaWdodFxyXG4gICAgICAgIH1cIlxyXG4gICAgPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cImd0XCIgW25nQ2xhc3NdPVwidGFibGVDbGFzc1wiIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJyZW5kZXJlZERhdGFcIj5cclxuICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlci1yb3dcIlxyXG4gICAgICAgICAgICAgICAgbWF0LWhlYWRlci1yb3dcclxuICAgICAgICAgICAgICAgICptYXRIZWFkZXJSb3dEZWY9XCJ0YWJsZUNvbHVtbnM7IHN0aWNreTogdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImd0RGltZW5zaW9uLmhlYWRlckhlaWdodFwiXHJcbiAgICAgICAgICAgID48L3RyPlxyXG4gICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidG90YWwtcm93XCJcclxuICAgICAgICAgICAgICAgIG1hdC1oZWFkZXItcm93XHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImd0RGltZW5zaW9uLnJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyUm93RGVmPVwidG90YWxSb3dDb2x1bW5zOyBzdGlja3k6IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmhpZGRlbl09XCJcclxuICAgICAgICAgICAgICAgICAgICBzaG93U2tlbGV0b25Mb2FkaW5nIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKCFzaG93U2tlbGV0b25Mb2FkaW5nICYmICF0YWJsZURhdGEubGVuZ3RoICkgfHxcclxuICAgICAgICAgICAgICAgICAgICAoaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JCB8IGFzeW5jKSB8fCBcclxuICAgICAgICAgICAgICAgICAgICAoIXNob3dTa2VsZXRvbkxvYWRpbmcgJiYgIWd0R2VuZXJhbENvbmZpZy50b3RhbFJvdylcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L3RyPlxyXG4gICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJyb3dEYXRhLmd0Q2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyduby1ib3JkZXItdHInOiAoaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JCB8IGFzeW5jKX1cIlxyXG4gICAgICAgICAgICAgICAgbWF0LXJvd1xyXG4gICAgICAgICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3dEYXRhOyBjb2x1bW5zOiB0YWJsZUNvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJndERpbWVuc2lvbi5yb3dIZWlnaHRcIihjbGljayk9XCJkYXRhUm93Q2xpY2tlZChyb3dEYXRhKVwiXHJcbiAgICAgICAgICAgID48L3RyPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUT1RBTCBST1cgLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4uY29sTmFtZVwiICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdG90YWxSb3dJbmZvOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cclxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW4uY29sc3BhblwiIGNsYXNzPVwie3tjb2x1bW4uY2xhc3N9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY29sdW1uLmRhdGEgfX08L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmxvd2VyRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4uY29sTmFtZSA9PSAndG90YWwtcG90ZW50aWFsLWJvb2tlZC11bml0JyAmJiBndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09ICdSQVRJTkcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBjb2x1bW5Mb3dlckRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjbGlja2FibGUtZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic3BvdERldGFpbHNEb3dubG9hZENsaWNrZWQoJ1RPVEFMUk9XJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZGlzYWJsZWQtY2xpY2thYmxlLWRhdGEnOiBkb3dubG9hZEluUHJvZ3Jlc3MgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgY29sdW1uLmxvd2VyRGF0YSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBzcG90LWRldGFpbHMtZG93bmxvYWQtaWNvbnNcIj5nZXRfYXBwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkSW5Qcm9ncmVzcyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc2VsZWN0ZWRSb3dUeXBlRm9yRG93bmxvYWQgPT0gJ1RPVEFMUk9XJyBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNpcmN1bGFyUHJvZ3Jlc3NCYXJcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29sdW1uTG93ZXJEYXRhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY29sdW1uLmxvd2VyRGF0YSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udG9vbHRpcE1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWkgbWRpLWluZm8tb3V0bGluZSBpbmZvLWxhYmVsXCIgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJjb2x1bW4udG9vbHRpcE1lc3NhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwiZ3QtdG90YWwtcm93LXRvb2x0aXBcIiBwbGFjZW1lbnQ9XCJib3R0b21cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gTUFJTiBST1cgLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW5EZWYuaGVhZGVySW5mb1swXS5vYmplY3RLZXlcIiAqbmdGb3I9XCJsZXQgY29sdW1uRGVmIG9mIHRhYmxlSGVhZGVyczsgIHRyYWNrQnk6IHRyYWNrQnlGblwiPlxyXG4gICAgICAgICAgICAgICAgPHRoICN0YWJsZUhlYWRlciBub3dyYXAgbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFtzdHlsZS53aWR0aF09XCJjb2x1bW5EZWYud2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG14LTBcIiAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIGNvbHVtbkRlZi5oZWFkZXJJbmZvOyBsZXQgaiA9IGluZGV4O1wiPiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGVhZGVyLnR5cGVPZkhlYWRlckRhdGEgPT09ICdTVFJJTkcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3VwcGVyLWxhYmVsJzogaiA9PT0gMCwgJ2xvd2VyLWxhYmVsJzogaiA9PT0gMSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaGVhZGVyLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaGVhZGVyLnRvb2x0aXAgJiYgaGVhZGVyLnRvb2x0aXAubmFtZSA9PSAnaW1wc0luZm9Ub29sdGlwJ1wiIGNsYXNzPVwie3toZWFkZXJbJ3Rvb2x0aXAnXS5pY29uQ2xhc3N9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydmbG9hdCc6IGhlYWRlclsndG9vbHRpcCddLmljb25Qb3NpdGlvbn1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0PVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwiaW1wc0luZm9Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhlYWRlci50b29sdGlwICYmIGhlYWRlci50b29sdGlwLm5hbWUgPT0gJ3Nwb3RzQ29sdW1uRXF1aXZhbGl6YXRpb25NZXNzYWdlVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInNwb3RzQ29sdW1uRXF1aXZhbGl6YXRpb25NZXNzYWdlVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdyYXRpbmdJbmZvVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInJhdGluZ0luZm9Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhlYWRlci50b29sdGlwICYmIGhlYWRlci50b29sdGlwLm5hbWUgPT0gJ3JhdGVJbmZvVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInJhdGVJbmZvVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdvbmdvaW5nUmV2Qm9va2VkQ29sdW1uVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cIm9uZ29pbmdSZXZCb29rZWRDb2x1bW5Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhlYWRlci50b29sdGlwICYmIGhlYWRlci50b29sdGlwLm5hbWUgPT0gJ2NvbXBsZXRlZFJldkJvb2tlZENvbHVtblRvb2x0aXAnXCIgY2xhc3M9XCJ7e2hlYWRlclsndG9vbHRpcCddLmljb25DbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Zsb2F0JzogaGVhZGVyWyd0b29sdGlwJ10uaWNvblBvc2l0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJjb21wbGV0ZWRSZXZCb29rZWRDb2x1bW5Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIudHlwZU9mSGVhZGVyRGF0YSA9PT0gJ0NIRUNLQk9YJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImd0R2VuZXJhbENvbmZpZy5pc0hlYWRlckNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC1jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RBbGxSb3dzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFndEdlbmVyYWxDb25maWcuaXNIZWFkZXJDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtdW5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlLWNoZWNrYm94JzogZ3RHZW5lcmFsQ29uZmlnLmRpc2FibGVIZWFkZXJDaGVja2JveCB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RBbGxSb3dzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImd0R2VuZXJhbENvbmZpZy5zaG93QWxsQ29sdW1uRmlsdGVyXCIgY2xhc3M9XCJzb3J0LWZpbHRlci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIuc2hvd1Rvb2x0aXBJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3RpdmUgdG9vbHRpcCBGdW5jdGlvbmFsaXR5IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIuZmlsdGVyID09PSAnQ0hFQ0tCT1gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZmlsdGVyLXZhcmlhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlICYmIGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZVtoZWFkZXIuam9pbmVkRmlsdGVyU29ydE9iamVjdEtleXNdLCAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaGVhZGVyLmRpc2FibGVUb29sdGlwSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJmaWx0ZXJUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbSBsZWZ0LXRvcCBhdXRvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwibm9uLWVkaXQtY2hlY2tib3gtdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cIm1hbnVhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJpbmRUaGVWYWx1ZVRvVG9vbFRpcCh0LCBoZWFkZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5maWx0ZXIgPT09ICdTTElERVInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZmlsdGVyLXZhcmlhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlICYmIGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZVtoZWFkZXIuam9pbmVkRmlsdGVyU29ydE9iamVjdEtleXNdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBoZWFkZXIuZGlzYWJsZVRvb2x0aXBJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInNsaWRlclRvb2xUaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnQtdG9wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwibm9uLWVkaXQtc2xpZGVyLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3QxPVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmluZFRoZVZhbHVlVG9Ub29sVGlwKHQxLCBoZWFkZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5maWx0ZXIgPT09ICdEQVRFJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZpbHRlci12YXJpYW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSAmJiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVbaGVhZGVyLmpvaW5lZEZpbHRlclNvcnRPYmplY3RLZXlzXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaGVhZGVyLmRpc2FibGVUb29sdGlwSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJkYXRlUGlja2VyVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20gYXV0b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cIm5vbi1lZGl0LWRhdGVwaWNrZXItdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cIm1hbnVhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdDI9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJiaW5kVGhlVmFsdWVUb1Rvb2xUaXAodDIsIGhlYWRlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpZGRlbik9XCJjbG9zZVRvb2x0aXAoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZpbHRlciA9PT0gJ1dFRUsnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZmlsdGVyLXZhcmlhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlICYmIGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZVtoZWFkZXIuam9pbmVkRmlsdGVyU29ydE9iamVjdEtleXNdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBoZWFkZXIuZGlzYWJsZVRvb2x0aXBJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cIndlZWtQaWNrZXJUb29sVGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbSBsZWZ0LXRvcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0Mz1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJpbmRUaGVWYWx1ZVRvVG9vbFRpcCh0MywgaGVhZGVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGlkZGVuKT1cImNsb3NlVG9vbHRpcCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxiciAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIuZmlsdGVyID09PSAnVElNRSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1maWx0ZXItdmFyaWFudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmUgJiYgYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlW2hlYWRlci5qb2luZWRGaWx0ZXJTb3J0T2JqZWN0S2V5c10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGhlYWRlci5kaXNhYmxlVG9vbHRpcEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwidGltZUZpbHRlclRvb2xUaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnQtdG9wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwibm9uLWVkaXQtdGltZS10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0ND1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJpbmRUaGVWYWx1ZVRvVG9vbFRpcCh0NCwgaGVhZGVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGlkZGVuKT1cImNsb3NlVG9vbHRpcCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxiciAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhlYWRlci5zaG93VG9vbHRpcEljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD1cIm5vLWZpbHRlci1zcGFjZVwiPjwvc3Bhbj48YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdsdXJWaW9sYXRpb25JbmZvVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cImx1clZpb2xhdGlvbkluZm9Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ0RSUidcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICptYXRDZWxsRGVmPVwibGV0IFJPV19EQVRBXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93U2tlbGV0b25Mb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5neC1za2VsZXRvbi1sb2FkZXIgY291bnQ9XCIxXCIgW3RoZW1lXT1cInsgaGVpZ2h0OiAnMTBweCcsIGRpc3BsYXk6ICdibG9jaycgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LXNrZWxldG9uLWxvYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93U2tlbGV0b25Mb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFST1dfREFUQVsnaGlkZScgKyBjb2x1bW5EZWYuaGVhZGVySW5mb1swXS5vYmplY3RLZXkgKyAnVGQnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5yb3dzcGFuXT1cIlJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvWzBdLm9iamVjdEtleSArICdSb3dzcGFuJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdWJsaW5lIG9mIGNvbHVtbkRlZi5oZWFkZXJJbmZvOyBsZXQgc3VibGluZUluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwic3VibGluZS50eXBlT2ZCb2R5RGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInSUNPTidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJST1dfREFUQS5pY29uQ2xhc3NcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidDSEVDS0JPWCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJST1dfREFUQVtzdWJsaW5lLm9iamVjdEtleV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Rpc2FibGUtY2hlY2tib3gnOiBST1dfREFUQVtzdWJsaW5lLmlzRGlzYWJsZWRLZXldIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC1jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RSb3coUk9XX0RBVEEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhUk9XX0RBVEFbc3VibGluZS5vYmplY3RLZXldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtdW5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlLWNoZWNrYm94JzogUk9XX0RBVEFbc3VibGluZS5pc0Rpc2FibGVkS2V5XSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RSb3coUk9XX0RBVEEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInUkFESU8nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWdyb3VwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJST1dfREFUQVsnUmFkaW9CdXR0b25Db25maWcnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiUk9XX0RBVEFbc3VibGluZS5vYmplY3RLZXldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ11bMF0uaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmFkaW9CdXR0b24gb2YgUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ107IGxldCBsYXN0ID0gbGFzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7eyByYWRpb0J1dHRvbi52YWx1ZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7IHJhZGlvQnV0dG9uLmNsYXNzIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpb0J1dHRvbkNsaWNrZWQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJPV19EQVRBLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpb0J1dHRvbi52YWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ11bMF0uaXNEaXNhYmxlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgcmFkaW9CdXR0b24ubGFiZWwgfX08L21hdC1yYWRpby1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxiciAqbmdJZj1cIiFsYXN0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBST1dfREFUQVtzdWJsaW5lLm9iamVjdEtleV0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmxpbmUub2JqZWN0S2V5ID09ICdTdGF0dXMnICYmIChST1dfREFUQVsnUmVtYXJrcyddICE9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtaSBtZGktaW5mby1vdXRsaW5lIHJlbWFya3MtdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cImNvbHVtbkluZm9Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInJlbWFya3MtaW5mby10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJndEdlbmVyYWxDb25maWcuY29tcG9uZW50ICE9ICdEUlInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IFJPV19EQVRBXCIgW3N0eWxlLmJhY2tncm91bmRdPVwiUk9XX0RBVEEuYmFja2dyb3VuZENvbG9yXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJST1dfREFUQS5ib3JkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie3tST1dfREFUQS5yb3dDbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyICpuZ0lmPVwic2hvd1NrZWxldG9uTG9hZGluZ1wiIGNvdW50PVwiMVwiIFt0aGVtZV09XCJ7IGhlaWdodDogJzEwcHgnLCBkaXNwbGF5OiAnYmxvY2snIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93U2tlbGV0b25Mb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGVEYXRhLmxlbmd0aCA+IDAgJiYgIShpc05vRGF0YVRvRGlzcGxheVN1YmplY3QkIHwgYXN5bmMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzaG93RWxsaXBzaXNUZXh0T25Ib3ZlciAqbmdGb3I9XCJsZXQgc3VibGluZSBvZiBjb2x1bW5EZWYuaGVhZGVySW5mbzsgbGV0IHN1YkxpbmVJbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS50eXBlT2ZCb2R5RGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0lDT04nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIhKHN0YXJyZWRJblByb2dyZXNzICYmIFJPV19EQVRBLm9yZGVySWQgPT0gc2VsZWN0ZWRTdGFycmVkT3JkZXJJZClcIiBbY2xhc3NdPVwiUk9XX0RBVEEuaWNvbkNsYXNzXCIgKGNsaWNrKT1cImljb25DbGlja2VkKFJPV19EQVRBLFJPV19EQVRBLmljb25DbGFzcylcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YXJyZWRJblByb2dyZXNzICYmIFJPV19EQVRBLm9yZGVySWQgPT0gc2VsZWN0ZWRTdGFycmVkT3JkZXJJZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1mb3ItYnV0dG9uLWRpcmVjdGl2ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2lyY3VsYXJQcm9ncmVzc0JhclwiPjwvbmctY29udGFpbmVyPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInU1ZHX0lDT04nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFubmEtY29yZS1hbm5hLWljb24tY29sdW1uIFtjb21wb25lbnROYW1lXT1cImd0R2VuZXJhbENvbmZpZy5jb21wb25lbnRcIiBbb2JqZWN0S2V5XT1cInN1YmxpbmUub2JqZWN0S2V5XCIgW2RhdGFPYmplY3RdPVwiUk9XX0RBVEFcIiAob25Db2x1bW5JY29uQ2xpY2tlZCk9XCJzdmdJY29uQ2xpY2tlZCgkZXZlbnQpXCI+PC9hbm5hLWNvcmUtYW5uYS1pY29uLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInVEVYVF9BQ1RJT05TJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nRm9yPVwibGV0IHRleHQgb2YgUk9XX0RBVEEudGV4dEFjdGlvbnNcIiAoY2xpY2spPVwidGV4dEFjdGlvbkNsaWNrZWQoUk9XX0RBVEEsdGV4dC5pZClcIiBbZGlzYWJsZWRdPVwidGV4dC5pc0Rpc2FibGVkXCIgY2xhc3M9XCJ7e3RleHQuY2xhc3N9fVwiPnt7dGV4dC5uYW1lfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInQ0hFQ0tCT1gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLm9iamVjdEtleV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzYWJsZS1jaGVja2JveCc6IFJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0uaXNEaXNhYmxlZEtleV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC1jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0T3JVbnNlbGVjdENoZWNrYm94KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJPV19EQVRBLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5vYmplY3RLZXldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXNhYmxlLWNoZWNrYm94JzogUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5pc0Rpc2FibGVkS2V5XVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0T3JVbnNlbGVjdENoZWNrYm94KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJPV19EQVRBLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidDTElDS0FCTEVfREFUQSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdWJsaW5lLm9iamVjdEtleSA9PSAnZGlzcGxheUJvb2tlZFVuaXRzJyAmJiBndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09ICdSQVRJTkcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjbGlja2FibGUtZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzcG90RGV0YWlsc0Rvd25sb2FkQ2xpY2tlZCgnREFUQVJPVycsIFJPV19EQVRBKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Rpc2FibGVkLWNsaWNrYWJsZS1kYXRhJzogZG93bmxvYWRJblByb2dyZXNzIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgUk9XX0RBVEEuZGlzcGxheUJvb2tlZFVuaXRzfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBzcG90LWRldGFpbHMtZG93bmxvYWQtaWNvbnNcIj5nZXRfYXBwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG93bmxvYWRJblByb2dyZXNzIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIFJPV19EQVRBLmludmVudG9yeUNvZGVJZCA9PSBzZWxlY3RlZEludmVudG9yeUlkRm9yRG93bmxvYWQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgUk9XX0RBVEEuZGVtb2dyYXBoaWMgPT0gc2VsZWN0ZWREZW1vZ3JhcGhpY0ZvckRvd25sb2FkIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjaXJjdWxhclByb2dyZXNzQmFyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgIT0gJ2Rlc2NyaXB0aW9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLm9iamVjdEtleV0gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN1YmxpbmUub2JqZWN0S2V5ID09ICdpbnZlbnRvcnlDb2RlJyAmJiBST1dfREFUQVsnaXNTZWxsZXJHcm91cCddICYmIGd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ1JBVElORycgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWkgbWRpLWluZm8tb3V0bGluZSBzZWxsZXItdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJzZWxsZXJIaWVyYXJjaHlUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbSBhdXRvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luZm89XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cImhpZXJhcmNoeS10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cImJpbmRUaGVWYWx1ZVRvU2VsbGVyR3JvdXBUb29sdGlwKFJPV19EQVRBLnNlbGxlckdyb3VwSGllcmFyY2h5LCBpbmZvKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cInN1YmxpbmUub2JqZWN0S2V5ID09ICdkaXNwbGF5Qm9va2VkQXZlcmFnZVJhdGluZycgJiYgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJyAmJiBST1dfREFUQVsnc2hvd1JhdGluZ0F2ZXJhZ2VJY29uJ10gXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWkgbWRpLWluZm8tb3V0bGluZSBzZWxsZXItdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20gYXV0b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJzZXRJc0RpZmZlcmVuY2UoUk9XX0RBVEEuaXNEaWZmZXJlbmNlTGVzc1RoYW4yNVBlcmNlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInBvc3RlZC1hdmctdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJwb3N0ZWRSYXRpbmdEaWZmZXJlbmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgPT0gJ2Rpc3BsYXlCb29rZWRBdmVyYWdlSW1wcmVzc2lvbicgJiYgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJyAmJiBST1dfREFUQVsnc2hvd0ltcHJlc3Npb25BdmVyYWdlSWNvbiddIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pIG1kaS1pbmZvLW91dGxpbmUgc2VsbGVyLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwic2V0SXNEaWZmZXJlbmNlKFJPV19EQVRBLmlzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJwb3N0ZWQtYXZnLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwicG9zdGVkSW1wRGlmZmVyZW5jZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgPT0gJ2Rlc2NyaXB0aW9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cIlJPV19EQVRBLmRlc2NyaXB0aW9uTWVzc2FnZSB8fCBST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsUmVmZXJlbmNlTnVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiUk9XX0RBVEEuZGVzY3JpcHRpb25NZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgUk9XX0RBVEEuZGVzY3JpcHRpb25NZXNzYWdlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsUmVmZXJlbmNlTnVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1haWwgUmVmOiB7eyBST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsUmVmZXJlbmNlTnVtIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cInt7IFJPV19EQVRBLmRlc2NyaXB0aW9uRGV0YWlsc1VybCB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJST1dfREFUQS5kZXNjcmlwdGlvbkRldGFpbHNVcmxUeXBlID09PSAnUERGJyB8fCBST1dfREFUQS5kZXNjcmlwdGlvbkRldGFpbHNVcmxUeXBlID09PSAnRVhDRUwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biB2aWV3RGV0YWlsc0FuZEVtYWlsQnRuXCI+RG93bmxvYWQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiUk9XX0RBVEEuYWN0aXZpdHluYW1lLnRvTG93ZXJDYXNlKCkgPT0gJ29yZGVyIG9uYm9hcmRlZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiUk9XX0RBVEEuZGVzY3JpcHRpb25EZXRhaWxzVXJsVHlwZSA9PT0gJ0xJTksnXCIgKGNsaWNrKT1cInZpZXdEZXRhaWxzQ2xpY2tlZChST1dfREFUQSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biB2aWV3RGV0YWlsc0FuZEVtYWlsQnRuIG9yZGVyLW9uYm9hcmRlZFwiPlZpZXcgZGV0YWlsczwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7eyBST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsVXJsIH19XCIgdGFyZ2V0PVwiX2JsYW5rXCIgKm5nSWY9XCJST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsVXJsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIHZpZXdEZXRhaWxzQW5kRW1haWxCdG5cIj5WaWV3IGVtYWlsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQgfCBhc3luYylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e251bGx9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGFubmEtY29yZS1uby1kYXRhLWxpYiBbd2lkdGhdPVwibm9EYXRhV2lkdGhcIiBbbWFyZ2luVG9wXT1cIm1hcmdpblRvcFwiICpuZ0lmPVwiKGlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQgfCBhc3luYylcIj4gPC9hbm5hLWNvcmUtbm8tZGF0YS1saWI+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBDaGVja2JveCB0ZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNmaWx0ZXJUb29sdGlwPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY29udGFpbmVyXCIgKm5nSWY9XCJzaG93RmlsdGVyVG9vbHRpcFRhYnNcIj5cclxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnZnVsbC13aWR0aCc6IGZpbHRlclRhYk9iamVjdHMubGVuZ3RoID09IDF9XCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmlsdGVyVGFiT2JqZWN0c1wiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImZpbHRlci10YWJcIiBbdGl0bGVdPVwiZGF0YS5sYWJlbFwiIChjbGljayk9XCJwb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8oZGF0YSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPT0gZGF0YS5rZXl9XCIgKm5nSWY9XCJmaWx0ZXJUYWJPYmplY3RzLmxlbmd0aCA+IDBcIj57eyBkYXRhLmxhYmVsIH19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1zb3J0XCIgKm5nSWY9XCJzaG93U29ydENvbXBvbmVudFwiPlxyXG4gICAgICAgIDxhbm5hLWNvcmUtc29ydC1saWIgIFtuZ0NsYXNzXT1cInsnbm8tYm90dG9tLWJvcmRlcic6ICFzaG93RmlsdGVyQ29tcG9uZW50fVwiXHJcbiAgICAgICAgKHNvcnRPcHRpb25DbGlja2VkKT1cInN0b3JlU29ydFR5cGVJblRlbXBWYXJpYWJsZSgkZXZlbnQpXCIgW3NvcnRPYmplY3RLZXldPVwiYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpb1wiPjwvYW5uYS1jb3JlLXNvcnQtbGliPlxyXG4gICAgPC9kaXY+XHJcbiAgICBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZpbHRlci10ZXh0LWJ0blwiIFtkaXNhYmxlZF09XCJkaXNhYmxlQ2xlYXJBbGxcIiAoY2xpY2spPVwidW5DaGVja0FsbENoZWNrYm94KClcIj5DbGVhciBhbGw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZpbHRlci10ZXh0LWJ0blwiIFtkaXNhYmxlZF09XCJkaXNhYmxlU2VsZWN0QWxsXCIgKGNsaWNrKT1cInNlbGVjdEFsbENoZWNrYm94KClcIj5TZWxlY3QgYWxsPC9idXR0b24+XHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIDxwIGNsYXNzPVwic2VhcmNoLWJveFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1pIG1kaS1zZWFyY2ggc2VhcmNoLWljb24gc2VhcmNoLWljb24tcG9zaXRpb25cIj48L2k+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDBweFwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaEl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VhcmNoRm9yVGhlSXRlbSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWNsb3NlIHNlYXJjaC1iYXItY2xvc2VcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGUtY2xvc2UtaWNvbic6ICghc2VhcmNoSXRlbSB8fCBzZWFyY2hJdGVtLmxlbmd0aCA9PSAwKSB9XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VhcmNoZWRJdGVtKClcIj48L2k+XHJcblxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246cmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgPCEtLSBUcmFjayBCeSBmdW5jIC0tPlxyXG4gICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IGl0ZW1TaXplPVwiMThcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodE9mQ2hlY2tib3hUb29sdGlwRmlsdGVyXCIgY2xhc3M9XCJkcm9wZG93bi1kYXRhLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPHAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgb3B0aW9uIG9mIHRvb2x0aXBPcHRpb25zXCIgY2xhc3M9XCJpbnB1dCBleGFtcGxlLWl0ZW1cIiAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RDaGVja2JveChvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvcHRpb24uaXNTZWxlY3RlZFwiIHJvbGU9XCJidXR0b25cIiBjbGFzcz1cIm1pIG1kaS1jaGVjay1ib3ggY2hlY2stYm94XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIW9wdGlvbi5pc1NlbGVjdGVkXCIgcm9sZT1cImJ1dHRvblwiIGNsYXNzPVwibWkgbWRpLWNoZWNrLWJveC1vdXRsaW5lLWJsYW5rIGNoZWNrLWJveCB1bmNoZWNrZWRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRhXCIgdGl0bGU9XCJ7eyBvcHRpb24udmFsdWUgfX1cIiBbaW5uZXJIVE1MXT1cIm9wdGlvbi5sYWJlbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBwb2ludGVyLWV2ZW50czpub25lXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlQ2hlY2tib3hGaWx0ZXIoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBkaXNhYmxlQ2hlY2tib3hBcHBseSB9XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5RmlsdGVycygpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVDaGVja2JveEFwcGx5XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIEFwcGx5XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd0ZpbHRlckNvbXBvbmVudFwiPih7eyBzZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID09IHRvb2x0aXBPcHRpb25zLmxlbmd0aCAmJiB0b29sdGlwT3B0aW9ucy5sZW5ndGggIT0gMCAmJiAhc2VhcmNoSXRlbT8gJ0FsbCc6IHNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgfX0pPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFNsaWRlciB0ZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNzbGlkZXJUb29sVGlwPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY29udGFpbmVyXCIgKm5nSWY9XCJzaG93RmlsdGVyVG9vbHRpcFRhYnNcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpbHRlclRhYk9iamVjdHNcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJmaWx0ZXItdGFiXCIgW3RpdGxlXT1cImRhdGEubGFiZWxcIiAoY2xpY2spPVwicG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGRhdGEpXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvID09IGRhdGEua2V5fVwiICpuZ0lmPVwiZmlsdGVyVGFiT2JqZWN0cy5sZW5ndGggPiAwXCI+e3sgZGF0YS5sYWJlbCB9fTwvcD4gICBcclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8YnV0dG9uIGNsYXNzPVwiY29sdW1uLWNsZWFyLWFsbCBhbGlnbi1jZW50ZXJcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5cclxuICAgICAgICBDbGVhciBmaWx0ZXJcclxuICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICBcclxuICAgIDxhbm5hLWNvcmUtc29ydC1saWIgKm5nSWY9XCJzaG93U29ydENvbXBvbmVudFwiIFtuZ0NsYXNzXT1cInsnbm8tYm90dG9tLWJvcmRlcic6ICFzaG93RmlsdGVyQ29tcG9uZW50fVwiXHJcbiAgICAoc29ydE9wdGlvbkNsaWNrZWQpPVwic3RvcmVTb3J0VHlwZUluVGVtcFZhcmlhYmxlKCRldmVudClcIiBbc29ydE9iamVjdEtleV09XCJhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXCI+PC9hbm5hLWNvcmUtc29ydC1saWI+XHJcbiAgICBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5DbGVhciBmaWx0ZXI8L2J1dHRvbj5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1pbi1tYXhDb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2xpZGVyLXRleHRcIlxyXG4gICAgICAgICAgICAgICAgc3RlcD1cInt7IHNsaWRlckZpbHRlclRleHRCb3hTdGVwIH19XCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2xpZGVyTWluVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibWluVmFsdWVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydyZWQtYm9yZGVyJzogc2hvd1NsaWRlck1pblZhbHVlRXJyb3J9XCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTWluXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPHNwYW4+VG88L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNsaWRlci10ZXh0XCJcclxuICAgICAgICAgICAgICAgIHN0ZXA9XCJ7eyBzbGlkZXJGaWx0ZXJUZXh0Qm94U3RlcCB9fVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNsaWRlck1heFZhbHVlXCJcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1heFZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncmVkLWJvcmRlcic6IHNob3dTbGlkZXJNYXhWYWx1ZUVycm9yfVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk1heFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlYmFyLXNsaWRlclwiPlxyXG4gICAgICAgICAgICA8bmd4LXNsaWRlclxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydzaG93LW1pbic6IHNsaWRlck1pblZhbHVlICE9IG9wdGlvbnMuZmxvb3IsICdzaG93LW1heCc6IHNsaWRlck1heFZhbHVlICE9IG9wdGlvbnMuY2VpbH1cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItc2xpZGVyXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzbGlkZXJNaW5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBbaGlnaFZhbHVlXT1cInNsaWRlck1heFZhbHVlXCJcclxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxyXG4gICAgICAgICAgICA+PC9uZ3gtc2xpZGVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsU2xpZGVyRmlsdGVyKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uIH1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlTbGlkZXJGaWx0ZXIoKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlU2xpZGVyQXBwbHlCdXR0b25cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgQXBwbHlcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBEYXRlIFBpY2tlciBUZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNkYXRlUGlja2VyVG9vbHRpcD5cclxuICAgIDxkaXYgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIiAqbmdJZj1cInNob3dGaWx0ZXJUb29sdGlwVGFic1wiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmlsdGVyVGFiT2JqZWN0c1wiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImZpbHRlci10YWJcIiBbdGl0bGVdPVwiZGF0YS5sYWJlbFwiIChjbGljayk9XCJwb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8oZGF0YSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPT0gZGF0YS5rZXl9XCIgKm5nSWY9XCJmaWx0ZXJUYWJPYmplY3RzLmxlbmd0aCA+IDBcIj57eyBkYXRhLmxhYmVsIH19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGFubmEtY29yZS1zb3J0LWxpYiAqbmdJZj1cInNob3dTb3J0Q29tcG9uZW50XCIgW25nQ2xhc3NdPVwieyduby1ib3R0b20tYm9yZGVyJzogIXNob3dGaWx0ZXJDb21wb25lbnR9XCJcclxuICAgIChzb3J0T3B0aW9uQ2xpY2tlZCk9XCJzdG9yZVNvcnRUeXBlSW5UZW1wVmFyaWFibGUoJGV2ZW50KVwiIFtzb3J0T2JqZWN0S2V5XT1cImFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW9cIj48L2FubmEtY29yZS1zb3J0LWxpYj5cclxuICAgIFxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWx0ZXJDb21wb25lbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5cclxuICAgICAgICAgICAgICAgIENsZWFyIGZpbHRlclxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGFubmEtY29yZS1jYWxlbmRhci1maWx0ZXItbGliXHJcbiAgICAgICAgICAgICAgICBbbWluRGF0ZV09XCJjYWxlbmRhck1pbkVuYWJsZWREYXRlXCJcclxuICAgICAgICAgICAgICAgIFttYXhEYXRlXT1cImNhbGVuZGFyTWF4RW5hYmxlZERhdGVcIlxyXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkRnJvbURhdGVdPVwic2VsZWN0ZWRNaW5EYXRlXCJcclxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZFRvRGF0ZV09XCJzZWxlY3RlZE1heERhdGVcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkRGF0ZSkgPSBcImNhbGVuZGFyRGF0ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2VsZWN0ZWRMYWJlbFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9hbm5hLWNvcmUtY2FsZW5kYXItZmlsdGVyLWxpYj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsSW5EYXRlRmlsdGVyKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFwcGx5RGF0ZUZpbHRlcigpXCIgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG4gfVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVDYWxlbmRhckFwcGx5QnRuXCI+QXBwbHk8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgXHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFdlZWsgUGlja2VyIFRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI3dlZWtQaWNrZXJUb29sVGlwPlxyXG4gICAgPGRpdiBjbGFzcz1cIndlZWtwaWNrZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGFubmEtY29yZS13ZWVrLWNhbGVuZGFyLWZpbHRlci1saWJcclxuICAgICAgICAgICAgW3dlZWstY2FsZW5kYXItY29uZmlnXT1cImd0R2VuZXJhbENvbmZpZy5tdWx0aVdlZWtQaWNrZXJDb25maWdcIlxyXG4gICAgICAgICAgICAoYXBwbHkpPVwiYXBwbHlXZWVrRmlsdGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICBbZnJvbS1kYXRlXT1cImNhbGVuZGFyTWluRW5hYmxlZERhdGVcIlxyXG4gICAgICAgICAgICBbdG8tZGF0ZV09XCJjYWxlbmRhck1heEVuYWJsZWREYXRlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9hbm5hLWNvcmUtd2Vlay1jYWxlbmRhci1maWx0ZXItbGliPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFRpbWUgRmlsdGVyIFRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI3RpbWVGaWx0ZXJUb29sVGlwPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY29udGFpbmVyXCIgKm5nSWY9XCJzaG93RmlsdGVyVG9vbHRpcFRhYnNcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpbHRlclRhYk9iamVjdHNcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJmaWx0ZXItdGFiXCIgW3RpdGxlXT1cImRhdGEubGFiZWxcIiAoY2xpY2spPVwicG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGRhdGEpXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvID09IGRhdGEua2V5fVwiICpuZ0lmPVwiZmlsdGVyVGFiT2JqZWN0cy5sZW5ndGggPiAwXCI+e3sgZGF0YS5sYWJlbCB9fTwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxhbm5hLWNvcmUtc29ydC1saWIgKm5nSWY9XCJzaG93U29ydENvbXBvbmVudFwiIFtuZ0NsYXNzXT1cInsnbm8tYm90dG9tLWJvcmRlcic6ICFzaG93RmlsdGVyQ29tcG9uZW50fVwiXHJcbiAgICAoc29ydE9wdGlvbkNsaWNrZWQpPVwic3RvcmVTb3J0VHlwZUluVGVtcFZhcmlhYmxlKCRldmVudClcIiBbc29ydE9iamVjdEtleV09XCJhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXCI+PC9hbm5hLWNvcmUtc29ydC1saWI+XHJcbiAgICBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5DbGVhciBmaWx0ZXI8L2J1dHRvbj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidGltZS1maWx0ZXItY2hlY2tib3hlc1wiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnU1BPVERFVEFJTFMnIHx8IGd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ0VYQ0xVREVJTlZFTlRPUllQT1BVUCcgfHwgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJ1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tIE11bHRpIHRpbWUgb3B0aW9uIGNoZWNrYm94IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwicGFkZGluZzogMC41cmVtIDAgMC41cmVtIDAuNXJlbVwiICpuZ0lmPVwic2hvd011bHRpVGltZUNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RNdWx0aVRpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhbXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtdW5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0T3JVbnNlbGVjdE11bHRpVGltZUNoZWNrYm94KClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAycHhcIj5JbmNsdWRlIE11bHRpPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBaZXJvIHRpbWUgb3B0aW9uIGNoZWNrYm94IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwicGFkZGluZzogMC41cmVtIDAgMC41cmVtIDAuNXJlbVwiICpuZ0lmPVwic2hvd1plcm9UaW1lQ2hlY2tib3hcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ6ZXJvVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0WmVyb1RpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhemVyb1RpbWVDaGVja2JveENoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC11bmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0WmVyb1RpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4XCI+SW5jbHVkZSBaZXJvPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBFbnRlciB0aW1lIHJhbmdlIG9wdGlvbiBjaGVja2JveCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cInBhZGRpbmc6IDAuNXJlbSAwIDAuNXJlbSAwLjVyZW1cIiAqbmdJZj1cInNob3dFbnRlclRpbWVDaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVudGVyVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0RW50ZXJUaW1lQ2hlY2tib3goKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tfYm94XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWVudGVyVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RFbnRlclRpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4XCI+RW50ZXIgdGltZSByYW5nZTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtbGFiZWwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD5Gcm9tPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIG51bWJlcklucHV0XCIgW25nQ2xhc3NdPVwieydlcnJvci1ib3JkZXInOiBzdGFydFRpbWVIb3VyRXJyfVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRGcm9tVGltZVswXVwiIHR5cGU9XCJ0ZXh0XCIgKG5nTW9kZWxDaGFuZ2UpPVwic3RhcnRUaW1lSG91ckNoYW5nZSgkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLXRyaWFuZ2xlIHVwd2FyZFwiIChjbGljayk9XCJjaGFuZ2VTdGFydFRpbWVIb3VyKHRydWUpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLXRyaWFuZ2xlIGRvd253YXJkXCIgKGNsaWNrKT1cImNoYW5nZVN0YXJ0VGltZUhvdXIoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj46PC9zcGFuPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbnVtYmVySW5wdXRcIiBbbmdDbGFzc109XCJ7J2Vycm9yLWJvcmRlcic6IHN0YXJ0VGltZU1pbkVycn1cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRnJvbVRpbWVbMV1cIiB0eXBlPVwidGV4dFwiIChuZ01vZGVsQ2hhbmdlKT1cInN0YXJ0VGltZU1pbkNoYW5nZSgkZXZlbnQpXCIvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktdHJpYW5nbGUgdXB3YXJkXCIgKGNsaWNrKT1cImNoYW5nZVN0YXJ0VGltZU1pbnV0ZSh0cnVlKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS10cmlhbmdsZSBkb3dud2FyZFwiIChjbGljayk9XCJjaGFuZ2VTdGFydFRpbWVNaW51dGUoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRnJvbVRpbWVbMl1cIiAobmdNb2RlbENoYW5nZSk9XCJkaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJBTVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BTTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cIlBNXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlBNPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtbGFiZWwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD5UbzwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBudW1iZXJJbnB1dFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUb1RpbWVbMF1cIiBbbmdDbGFzc109XCJ7J2Vycm9yLWJvcmRlcic6IGVuZFRpbWVIb3VyRXJyfVwiIChuZ01vZGVsQ2hhbmdlKT1cImVuZFRpbWVIb3VyQ2hhbmdlKCRldmVudClcIiB0eXBlPVwidGV4dFwiIC8+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcnJvdy1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS10cmlhbmdsZSB1cHdhcmRcIiAoY2xpY2spPVwiY2hhbmdlRW5kVGltZUhvdXIodHJ1ZSlcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktdHJpYW5nbGUgZG93bndhcmRcIiAoY2xpY2spPVwiY2hhbmdlRW5kVGltZUhvdXIoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj46PC9zcGFuPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbnVtYmVySW5wdXRcIiBbbmdDbGFzc109XCJ7J2Vycm9yLWJvcmRlcic6IGVuZFRpbWVNaW5FcnJ9XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRvVGltZVsxXVwiIChuZ01vZGVsQ2hhbmdlKT1cImVuZFRpbWVNaW5DaGFuZ2UoJGV2ZW50KVwiIHR5cGU9XCJ0ZXh0XCIgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLXRyaWFuZ2xlIHVwd2FyZFwiIChjbGljayk9XCJjaGFuZ2VFbmRUaW1lTWludXRlKHRydWUpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLXRyaWFuZ2xlIGRvd253YXJkXCIgKGNsaWNrKT1cImNoYW5nZUVuZFRpbWVNaW51dGUoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVG9UaW1lWzJdXCIgKG5nTW9kZWxDaGFuZ2UpPVwiZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiQU1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QU08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJQTVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5QTTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlVGltZUZpbHRlcigpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gfVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhcHBseVRpbWVGaWx0ZXJzKClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0blwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICBBcHBseVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbHVtbkluZm9Ub29sdGlwPlxyXG4gIDxwIHN0eWxlPVwicGFkZGluZzogMC41cmVtOyBjb2xvcjogYmxhY2s7d2hpdGUtc3BhY2U6IG5vd3JhcDtcIj5UaGlzIHByZWVtcHRpb24gaXMgcmVqZWN0ZWQgYW5kIG5vdCBtYXJrZWQgZm9yIGNyZWRpdC48L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3JhdGluZ0luZm9Ub29sdGlwPlxyXG4gICAgPHAgY2xhc3M9XCJmaXJzdC1yb3dcIj5TaG93cyAnQm9va2VkIFJhdGluZycgZm9yIFByZWVtcHRpb25zICYgTWFrZUdvb2QgT2ZmZXJlZCBzcG90KHMpLjwvcD5cclxuICAgIDxwIGNsYXNzPVwic2Vjb25kLXJvd1wiPlNob3dzICdQcm9qZWN0ZWQgUmF0aW5nJyBmb3IgQURVIE9mZmVyZWQgc3BvdChzKS48L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2ltcHNJbmZvVG9vbHRpcD5cclxuICAgIDxwIGNsYXNzID1cImZpcnN0LXJvd1wiID5TaG93cyAnQm9va2VkIElNUFMnIGZvciBQcmVlbXB0aW9ucyAmIE1ha2VHb29kIE9mZmVyZWQgc3BvdChzKS48L3A+XHJcbiAgICA8cCBjbGFzcz1cInNlY29uZC1yb3dcIiA+U2hvd3MgJ1Byb2plY3RlZCBJTVBTJyBmb3IgQURVIE9mZmVyZWQgc3BvdChzKS48L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Nwb3RzQ29sdW1uRXF1aXZhbGl6YXRpb25NZXNzYWdlVG9vbHRpcD5cclxuICAgIDxwIGNsYXNzPVwic3BvdC1jb2x1bW4tdG9vbHRpcC1tZXNzYWdlXCIgPlRoaXMgY29uc2lzdHMgb2YgZXF1aXZhbGl6ZWQgc3BvdHMgYW5kIHVuLWVxdWl2YWxpemVkIFBhaWQgUHJvZ3JhbXMgJiB1bi1lcXVpdmFsaXplZCBOb24tc3BvdHMuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNyYXRlSW5mb1Rvb2x0aXA+XHJcbiAgICA8cCBjbGFzcyA9XCJmaXJzdC1yb3dcIiA+U2hvd3MgJ0Jvb2tlZCBSYXRlJyBmb3IgUHJlZW1wdGlvbnMgJiBNYWtlR29vZCBPZmZlcmVkIHNwb3QocykuPC9wPlxyXG4gICAgPHAgY2xhc3M9XCJzZWNvbmQtcm93XCIgPlNob3dzICdQcm9qZWN0ZWQgJCBWYWx1ZScgZm9yIEFEVSBPZmZlcmVkIHNwb3QocykuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzZWxsZXJIaWVyYXJjaHlUb29sdGlwPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGxlckdyb3VwSGllcmFyY2h5Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcyA9IFwiaGllcmFyY2h5LXRhYmxlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInNlbGxlci1oaWVyYXJjaHktdGFibGVcIj5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aD4jPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+SW52ZW50b3J5IENvZGVzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+UHJvZ3JhbS9EZXNjcmlwdGlvbjwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygc2VsbGVyR3JvdXBIaWVyYXJjaHk7IGxldCB0b29sdGlwSW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD57eyB0b29sdGlwSW5kZXggKyAxIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGRhdGEuSW52ZW50b3J5Q29kZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZGF0YS5Qcm9ncmFtIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxsZXJHcm91cEhpZXJhcmNoeS5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwiY29sb3I6ICMwMDBcIj5TZWxsZXIgZ3JvdXAgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBpbnZlbnRvcnkgY29kZTwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNsdXJWaW9sYXRpb25JbmZvVG9vbHRpcD5cclxuICAgIDxwIGNsYXNzID1cImZpcnN0LXJvd1wiID5UaGUgdmFsdWVzIGFyZSBmb3IgdGhlIGVudGlyZSB3ZWVrLjwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcG9zdGVkUmF0aW5nRGlmZmVyZW5jZT5cclxuICAgIDxwIGNsYXNzPVwiZGlmZmVyZW5jZS10ZXh0XCI+VGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBwb3N0ZWQgYW5kIGJvb2tlZCBhdmVyYWdlIHJhdGluZyBpcyB7e2lzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50ID8gJ2xlc3MnIDogJ21vcmUnfX0gdGhhbiAyNSUuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNwb3N0ZWRJbXBEaWZmZXJlbmNlPlxyXG4gICAgPHAgY2xhc3M9XCJkaWZmZXJlbmNlLXRleHRcIj5UaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHBvc3RlZCBhbmQgYm9va2VkIGF2ZXJhZ2UgaW1wcmVzc2lvbiBpcyB7e2lzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50ID8gJ2xlc3MnIDogJ21vcmUnfX0gdGhhbiAyNSUuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNvbmdvaW5nUmV2Qm9va2VkQ29sdW1uVG9vbHRpcD5cclxuICAgIDxwPlRoZSBCb29rZWQgJCB2YWx1ZSwgU3BvdHMsIEdSUCwgQ1BQLCBJTVBTLCBDUE0gY29ycmVzcG9uZHMgb24gdGhlIGxhc3QgcGVybWFuZW50IHJldmlzaW9uIGdlbmVyYXRlZDwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29tcGxldGVkUmV2Qm9va2VkQ29sdW1uVG9vbHRpcD5cclxuICAgIDxwPlRoZSBCb29rZWQgJCB2YWx1ZSBjb3JyZXNwb25kcyBvbiB0aGUgbGFzdCBwZXJtYW5lbnQgcmV2aXNpb24gZ2VuZXJhdGVkPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjaXJjdWxhclByb2dyZXNzQmFyPlxyXG4gICAgPGNpcmNsZS1wcm9ncmVzc1xyXG4gICAgICAgIFtwZXJjZW50XT1cInBlcmNlbnREb25lXCJcclxuICAgICAgICBbcmFkaXVzXT1cIjVcIlxyXG4gICAgICAgIFtzaG93VGl0bGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtzaG93VW5pdHNdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtzaG93U3VidGl0bGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtvdXRlclN0cm9rZVdpZHRoXT1cIjNcIlxyXG4gICAgICAgIFtpbm5lclN0cm9rZVdpZHRoXT1cIjNcIlxyXG4gICAgICAgIFtzcGFjZV09XCItM1wiXHJcbiAgICAgICAgW291dGVyU3Ryb2tlQ29sb3JdPVwiJyMyNjhiZmYnXCJcclxuICAgICAgICBbaW5uZXJTdHJva2VDb2xvcl09XCInI2Q1ZDVkNSdcIlxyXG4gICAgICAgIFthbmltYXRpb25EdXJhdGlvbl09XCIxMFwiXHJcbiAgICA+PC9jaXJjbGUtcHJvZ3Jlc3M+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
1788
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWdlbmVyaWMtdGFibGUtbGliL2NvbXBvbmVudHMvYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29yZS9zcmMvbGliL2FubmEtZ2VuZXJpYy10YWJsZS1saWIvY29tcG9uZW50cy9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlL2FubmEtbm9uLWVkaXRhYmxlLWdlbmVyaWMtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsNEJBQTRCO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBNEIsaUJBQWlCLEVBQWdDLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVNLGdDQUFnQztBQUNoQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFLbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFlLE1BQU0sc0VBQXNFLENBQUM7QUFJOUgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUMvRixPQUFPLEVBQUUs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O3NCQUF6QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQWtHc0IscUJBQXFCO3NCQUFqRCxZQUFZO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuLy8gQW5ndWxhciBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZHJlbiwgUXVlcnlMaXN0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzLCBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8vIFRoaXJkIHBhcnR5IGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcclxuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyLXNsaWRlci9uZ3gtc2xpZGVyJztcclxuaW1wb3J0IHsgY2xvbmVEZWVwLCBpc0VxdWFsLCBtYXAsIHVuaXEsIHNvcnRCeSB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcclxuXHJcblxyXG4vL3N1Yi1lbnRyaWVzIG9mIGFubmEgbGliIGltcG9ydCBzdGF0ZW1lbnRcclxuaW1wb3J0IHsgSUd0R2VuZXJhbENvbmZpZywgSUd0VGFibGVIZWFkZXIsIElIZWFkZXJJbmZvLCBJVG90YWxSb3dJbmZvIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtbm9uLWVkaXRhYmxlLWd0LW1vZGVscyc7XHJcbmltcG9ydCB7IEFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UsIE5nYkRhdGVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvc2VydmljZXMvYW5uYS1kYXRlLXRpbWUtZm9ybWF0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJV2Vla0NhbGVuZGFyIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtZ2xvYmFsLWRyb3Bkb3duLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IEd0Q29sdW1uSWNvbkVtaXR0ZWREYXRhLCBSYXRpbmdTZWxsZXJHcm91cEhpZXJhcmNoeSwgIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtZ2VuZXJpYy1kYXRhLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBTb3J0VHlwZSB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL21vZGVscy9hbm5hLXNvcnQubW9kZWwnO1xyXG5pbXBvcnQgeyByYWRpb0J1dHRvbk1vZGVsLCBUb29sdGlwTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS10b29sdGlwLm1vZGVsJztcclxuaW1wb3J0IHsgQW5uYVNvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvc2VydmljZXMvYW5uYS1zb3J0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbm5hRmlsdGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtZmlsdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbm5hR2VuZXJpY1RhYmxlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtZ2VuZXJpYy10YWJsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhbm5hLWNvcmUtbm9uLWVkaXRhYmxlLWdlbmVyaWMtdGFibGUtbGliJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbm5hTm9uRWRpdGFibGVHZW5lcmljVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcblxyXG4gIEBJbnB1dCgpIHNob3dTa2VsZXRvbkxvYWRpbmc6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgdGFibGVIZWFkZXJzOiBJR3RUYWJsZUhlYWRlcltdO1xyXG4gIEBJbnB1dCgpIHRhYmxlRGF0YTogYW55W107XHJcbiAgQElucHV0KCkgY2xvbmVkVGFibGVEYXRhOiBhbnlbXTtcclxuICBASW5wdXQoKSBudW1iZXJPZlNrZWxldG9uUm93czogbnVtYmVyW107XHJcbiAgQElucHV0KCkgZ3RHZW5lcmFsQ29uZmlnOiBJR3RHZW5lcmFsQ29uZmlnO1xyXG4gIEBJbnB1dCgpIHRvdGFsUm93SW5mbz86IElUb3RhbFJvd0luZm9bXTtcclxuICBASW5wdXQoKSBndERpbWVuc2lvbjogeyByb3dIZWlnaHQ6IG51bWJlciwgdGFibGVIZWlnaHQ6IHN0cmluZywgaGVhZGVySGVpZ2h0OiBudW1iZXIgfTtcclxuICBASW5wdXQoKSB0YWJsZUNsYXNzOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbWF4aW11bVJvd3NXaGljaENhbkJlUmVuZGVyZWRXaXRob3V0U2Nyb2xsOiBudW1iZXIgPSA1O1xyXG4gIEBJbnB1dCgpIGxpbWl0OiBudW1iZXIgPSAzMDsgXHJcbiAgQElucHV0KCkgaW5jbHVkZUJvcmRlckluVGFibGVIZWlnaHQ6IGJvb2xlYW4gPSB0cnVlOyBcclxuICBASW5wdXQoKSBkb3dubG9hZEluUHJvZ3Jlc3M6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcGVyY2VudERvbmU6IG51bWJlcjtcclxuICBASW5wdXQoKSBzdGFycmVkSW5Qcm9ncmVzczogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpIHRvZ2dsZUNoZWNrYm94ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB0b2dnbGVSb3dDaGVja2JveCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdG9nZ2xlSGVhZGVyQ2hlY2tib3ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHVuZG9JY29uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyQXBwbGllZFRvVGFibGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNvcnRpbmdBcHBsaWVkVG9UYWJsZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93Q2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmFkaW9CdXR0b25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY29sdW1uRmlsdGVyT3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjb2x1bW5GaWx0ZXJDbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGd0SWNvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGd0U1ZHSWNvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGd0VGV4dEFjdGlvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGd0Vmlld0RldGFpbENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRvd25sb2FkU3BvdERldGFpbHMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG5cclxuICB0YWJsZURhdGFXcmFwcGVyOiBhbnlbXTtcclxuICByb3dDaGVja2VkOiBib29sZWFuO1xyXG4gIGlzQWxsUm93c0NoZWNrZWQ6IGJvb2xlYW47XHJcbiAgbm9EYXRhV2lkdGg6IHN0cmluZyA9IFwiNTAlXCI7XHJcbiAgbWFya2VkRm9yQ3JlZGl0U3RhdHVzOiBzdHJpbmc7XHJcbiAgbWFya2VkRm9yTUdTdGF0dXM6IHN0cmluZztcclxuXHJcbiAgLy9Tb3J0IGFuZCBGaWx0ZXJcclxuICB0b29sVGlwZGF0YTogYW55O1xyXG4gIHRlbXBUb29sdGlwRGF0YTogYW55O1xyXG4gIHRvb2x0aXBSYWRpb1RleHRNYXA6IE1hcDxhbnksIGFueT47XHJcbiAgZmlsdGVyVGFiT2JqZWN0czogYW55W107XHJcbiAgdG9vbHRpcDogYW55O1xyXG4gIGNsb25lZFRvb2x0aXBEYXRhOiBhbnk7XHJcbiAgY2xvbmVkVG9vbHRpcFNlbGVjdGVkTWFwRGF0YTogYW55O1xyXG4gIHNlYXJjaEJhcjogc3RyaW5nO1xyXG4gIGRpc2FibGVDbGVhckFsbEJ0bjogYm9vbGVhbiA9IHRydWU7XHJcbiAgZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuOiBib29sZWFuID0gdHJ1ZTtcclxuICBhbGxTZWxlY3RlZCA9IDA7XHJcbiAgc2hvd0FsbDogYm9vbGVhbjtcclxuICBkaXNhYmxlQ2hlY2tib3hBcHBseTogYm9vbGVhbjtcclxuICBkaXNhYmxlU2xpZGVyQXBwbHlCdXR0b246IGJvb2xlYW47XHJcbiAgZGlzYWJsZVRpbWVBcHBseUJ1dHRvbjogYm9vbGVhbjtcclxuXHJcbiAgLy8gU2xpZGVyIEZpbHRlclxyXG4gIHNsaWRlck1pblZhbHVlOiBudW1iZXI7XHJcbiAgc2xpZGVyTWF4VmFsdWU6IG51bWJlcjtcclxuICBvcHRpb25zOiBPcHRpb25zID0ge1xyXG4gICAgZmxvb3I6IDAsXHJcbiAgICBjZWlsOiAwLFxyXG4gICAgc3RlcDogMC4xXHJcbiAgfTtcclxuICBzbGlkZXJWYWx1ZTogeyBtaW46IG51bWJlciwgbWF4OiBudW1iZXIgfTtcclxuICBzbGlkZXJGaWx0ZXJUZXh0Qm94U3RlcDogc3RyaW5nO1xyXG4gIHNsaWRlckVudGVyZWRNaW5WYWx1ZTogbnVtYmVyO1xyXG4gIHNsaWRlckVudGVyZWRNYXhWYWx1ZTogbnVtYmVyO1xyXG5cclxuICAvLyBDYWxlbmRhciBGaWx0ZXJcclxuICBjYWxlbmRhck1pbkVuYWJsZWREYXRlOiBOZ2JEYXRlVHlwZTtcclxuICBjYWxlbmRhck1heEVuYWJsZWREYXRlOiBOZ2JEYXRlVHlwZTtcclxuICBzZWxlY3RlZE1pbkRhdGU6IE5nYkRhdGVUeXBlO1xyXG4gIHNlbGVjdGVkTWF4RGF0ZTogTmdiRGF0ZVR5cGU7XHJcblxyXG4gIC8vV2VlayBGaWx0ZXJcclxuICBtdWx0aVdlZWtQaWNrZXJDb25maWc6IElXZWVrQ2FsZW5kYXI7XHJcblxyXG4gIC8vVGltZSBGaWx0ZXJcclxuICBzZWxlY3RlZEZyb21UaW1lOiBhbnlbXTtcclxuICBzZWxlY3RlZFRvVGltZTogYW55W107XHJcbiAgY2xvbmVkU2VsZWN0ZWRGcm9tVGltZTogYW55O1xyXG4gIGNsb25lZFNlbGVjdGVkVG9UaW1lOiBhbnk7XHJcbiAgZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0bjogYm9vbGVhbjtcclxuICB0YWJsZUNvbHVtbnM6IHN0cmluZ1tdID0gW107XHJcbiAgdG90YWxSb3dDb2x1bW5zOiBzdHJpbmdbXSA9IG51bGw7XHJcbiAgc2hvd011bHRpVGltZUNoZWNrYm94OiBib29sZWFuO1xyXG4gIHNob3daZXJvVGltZUNoZWNrYm94OiBib29sZWFuO1xyXG4gIHNob3dFbnRlclRpbWVDaGVja2JveDogYm9vbGVhbjtcclxuICBtdWx0aVRpbWVDaGVja2JveENoZWNrZWQ6IGJvb2xlYW47XHJcbiAgemVyb1RpbWVDaGVja2JveENoZWNrZWQ6IGJvb2xlYW47XHJcbiAgZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkOiBib29sZWFuO1xyXG4gIGJpbmRWYWx1ZUZ1bmNDYWxsZWQ6IGJvb2xlYW47XHJcblxyXG4gIGhpZXJhcmNoeVRvb2x0aXA6IHsgb3BlbjogKCkgPT4gdm9pZDsgY2xvc2U6ICgpID0+IHZvaWQ7IH07XHJcbiAgc2VsbGVyR3JvdXBIaWVyYXJjaHk6IFJhdGluZ1NlbGxlckdyb3VwSGllcmFyY2h5W107XHJcbiAgc2hvd0ZpbHRlclRvb2x0aXBUYWJzOiBib29sZWFuOyAvL0NoYW5nZSB0aGUgTmFtZVxyXG5cclxuICBpc1Njcm9sbGVkTGVmdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHJvd0JvcmRlcldpZHRoOiBudW1iZXIgPSAyO1xyXG4gIFxyXG4gIHNob3dTb3J0Q29tcG9uZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd0ZpbHRlckNvbXBvbmVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRlbXBTb3J0T3JkZXI6IFNvcnRUeXBlID0gbnVsbDtcclxuICAgIFxyXG4gIHRvb2x0aXBPcHRpb25zOiBUb29sdGlwTW9kZWxbXTtcclxuICBjbG9uZWRUb29sdGlwT3B0aW9uczogVG9vbHRpcE1vZGVsW107XHJcbiAgZGlzYWJsZVNlbGVjdEFsbDogYm9vbGVhbjtcclxuICBkaXNhYmxlQ2xlYXJBbGw6IGJvb2xlYW47XHJcbiAgc2VhcmNoSXRlbTogc3RyaW5nO1xyXG5cclxuICBkaXNhYmxlQ2FsZW5kYXJBcHBseUJ0bjogYm9vbGVhbjtcclxuICBjYWxlbmRhclNlbGVjdGlvbjogYW55ID0ge2Zyb21EYXRlOiBudWxsICwgdG9EYXRlOiBudWxsfTtcclxuXHJcbiAgc2hvd1NsaWRlck1pblZhbHVlRXJyb3I6IGJvb2xlYW47XHJcbiAgc2hvd1NsaWRlck1heFZhbHVlRXJyb3I6IGJvb2xlYW47XHJcbiAgaXNNaW5UZXh0Qm94RW1wdHk6IGJvb2xlYW47XHJcbiAgaXNNYXhUZXh0Qm94RW1wdHk6IGJvb2xlYW47XHJcbiAgc2VsZWN0ZWRMYWJlbDogc3RyaW5nO1xyXG5cclxuICBzdGFydFRpbWVIb3VyRXJyOiBib29sZWFuO1xyXG4gIHN0YXJ0VGltZU1pbkVycjogYm9vbGVhbjtcclxuICBlbmRUaW1lSG91ckVycjogYm9vbGVhbjtcclxuICBlbmRUaW1lTWluRXJyOiBib29sZWFuO1xyXG5cclxuICBzYW1lVG9vbHRpcENsaWNrZWQ6IGJvb2xlYW47XHJcbiAgbWFyZ2luVG9wOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ3RhYmxlSGVhZGVyJykgdmlld0NoaWxkVGFibGVIZWFkZXJzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcblxyXG4gIHNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQ6IG51bWJlcjtcclxuICBpc0ZpbHRlckNoYW5nZWQ6IGJvb2xlYW47XHJcbiAgaXNTb3J0Q2hhbmdlZDogYm9vbGVhbjtcclxuICBpc0RpZmZlcmVuY2VMZXNzVGhhbjI1UGVyY2VudDogYm9vbGVhbjtcclxuICBpbmNvcnJlY3RTbGlkZXJJbnB1dDogYm9vbGVhbjtcclxuICBzdGFydDogbnVtYmVyID0gMDtcclxuICBlbmQ6IG51bWJlciA9IHRoaXMubGltaXQgKyB0aGlzLnN0YXJ0O1xyXG4gIHJlbmRlcmVkRGF0YTogYW55W107IFxyXG4gIHNlbGVjdGVkSW52ZW50b3J5SWRGb3JEb3dubG9hZDogbnVtYmVyO1xyXG4gIHNlbGVjdGVkRGVtb2dyYXBoaWNGb3JEb3dubG9hZDogYW55O1xyXG4gIHNlbGVjdGVkUm93VHlwZUZvckRvd25sb2FkOiBzdHJpbmc7XHJcbiAgaGVpZ2h0T2ZDaGVja2JveFRvb2x0aXBGaWx0ZXI6IG51bWJlcjtcclxuICBpc05vRGF0YVRvRGlzcGxheVN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgc2VsZWN0ZWRTdGFycmVkT3JkZXJJZDogc3RyaW5nO1xyXG4gIFxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGFubmFTb3J0U2VydmljZTogQW5uYVNvcnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIGFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2U6IEFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYW5uYUZpbHRlclNlcnZpY2U6IEFubmFGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbm5hR2VuZXJpY1RhYmxlU2VydmljZTogQW5uYUdlbmVyaWNUYWJsZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuc2V0VG9vbHRpcFJhZGlvTmFtZXMoKTtcclxuICB9XHJcbiAgXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ICYmIHRoaXMuZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudC5pbmNsdWRlcyhcIk9SREVSX0xJU1RJTkdcIikgfHwgdGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09IFwiRFJSTElTVElOR1wiKXtcclxuICAgICAgdGhpcy5zZXRNYXJnaW5MZWZ0Rm9yRmlsdGVySWNvbigpO1xyXG4gICAgfSAgICBcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKHRoaXMuc2hvd1NrZWxldG9uTG9hZGluZykge1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMubnVtYmVyT2ZTa2VsZXRvblJvd3M7XHJcbiAgICAgIHRoaXMucmVuZGVyZWREYXRhID0gdGhpcy5udW1iZXJPZlNrZWxldG9uUm93cztcclxuICAgICAgdGhpcy5pc05vRGF0YVRvRGlzcGxheVN1YmplY3QkLm5leHQoZmFsc2UpO1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcCA9IG5ldyBNYXAoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYoY2hhbmdlc1tcInBlcmNlbnREb25lXCJdIHx8IGNoYW5nZXNbXCJkb3dubG9hZEluUHJvZ3Jlc3NcIl0gfHwgKCBjaGFuZ2VzW1wic3RhcnJlZEluUHJvZ3Jlc3NcIl0gJiYgY2hhbmdlc1tcInN0YXJyZWRJblByb2dyZXNzXCJdLmN1cnJlbnRWYWx1ZSAhPSB1bmRlZmluZWQgKSl7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiZG8gbm90aGluZ1wiKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNldEluaXRpYWxSb3dzRm9yVGFibGUoKTtcclxuICAgICAgdGhpcy5kaXNhYmxlRW5hYmxlRWFjaENvbHVtblRvb2x0aXBJY29uKCk7XHJcbiAgICAgIHRoaXMudGFibGVDb2x1bW5zID0gdGhpcy50YWJsZUhlYWRlcnMuZmlsdGVyKHggPT4geC52aXNpYmxlKS5tYXAoeCA9PiB4LmhlYWRlckluZm9bMF0ub2JqZWN0S2V5KTtcclxuICAgICAgaWYodGhpcy50YWJsZURhdGEgJiYgdGhpcy50YWJsZURhdGEubGVuZ3RoID09IDApe1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gQXJyYXkoMikuZmlsbCgwKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVkRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICAgICAgdGhpcy5tYXJnaW5Ub3AgPSAoLSB0aGlzLmd0RGltZW5zaW9uLnJvd0hlaWdodCAtICh0aGlzLmd0RGltZW5zaW9uLnJvd0hlaWdodC8yKSkgKyAncHgnO1xyXG4gICAgICAgIHRoaXMuaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JC5uZXh0KHRydWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgdGhpcy5pc05vRGF0YVRvRGlzcGxheVN1YmplY3QkLm5leHQoZmFsc2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNob3dTa2VsZXRvbkxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvL3NldHRpbmcgdGFibGUgY29sdW1uIGhlcmUgYXMgd2VsbCBiZWNhdXNlIHdoaWxlIHNob3dpbmcgc2tlbGV0b24gbG9hZGVyLCB3ZSBzaG91bGQgc2hvdyB0YWJsZSBoZWFkZXJzLlxyXG4gICAgaWYgKGNoYW5nZXNbJ3RhYmxlSGVhZGVycyddICYmICFpc0VxdWFsKGNoYW5nZXNbJ3RhYmxlSGVhZGVycyddLmN1cnJlbnRWYWx1ZSwgY2hhbmdlc1sndGFibGVIZWFkZXJzJ10ucHJldmlvdXNWYWx1ZSkpIHtcclxuICAgICAgdGhpcy50YWJsZUNvbHVtbnMgPSB0aGlzLnRhYmxlSGVhZGVycy5maWx0ZXIoeCA9PiB4LnZpc2libGUpLm1hcCh4ID0+IHguaGVhZGVySW5mb1swXS5vYmplY3RLZXkpO1xyXG4gICAgICB0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUgPSBuZXcgTWFwKCk7XHJcbiAgICAgIHRoaXMuc2V0Q29sdW1uU29ydFN0YXRlTWFwKCk7XHJcbiAgICAgIHRoaXMuc2V0QWN0aXZlU3RhdGVPYmplY3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1sndG90YWxSb3dJbmZvJ10gJiYgY2hhbmdlc1sndG90YWxSb3dJbmZvJ10uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMudG90YWxSb3dDb2x1bW5zID0gdGhpcy50b3RhbFJvd0luZm8ubWFwKHggPT4geC5jb2xOYW1lKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIHRyYWNrQnlGbihpbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBzZXRUb29sdGlwUmFkaW9OYW1lcygpIHtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcCA9IG5ldyBNYXAoKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJTdGFydFRpbWVGb3JGaWx0ZXJcIiwgXCJTdGFydCBUaW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkVuZFRpbWVGb3JGaWx0ZXJcIiwgXCJFbmQgVGltZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJzdGFydF90aW1lX2Zvcl9maWx0ZXJcIiwgXCJTdGFydCBUaW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImVuZF90aW1lX2Zvcl9maWx0ZXJcIiwgXCJFbmQgVGltZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwcmltYXJ5QUVOYW1lXCIsIFwiUHJpbWFyeSBBRVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZWdpb25cIiwgXCJSZWdpb25cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYWdlbmN5TmFtZVwiLCBcIkFnZW5jeVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJsb2NhdGlvblwiLCBcIkxvY2F0aW9uXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImFkdmVydGlzZXJOYW1lXCIsIFwiQWR2ZXJ0aXNlclwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwcm9kdWN0Q29kZVwiLCBcIlByb2R1Y3QgQ2F0ZWdvcnlcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZmxpZ2h0U3RhcnREYXRlXCIsIFwiU3RhcnQgRGF0ZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJmbGlnaHRFbmREYXRlXCIsIFwiRW5kIERhdGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib3JkZXJJZEFuZFJldk51bWJlclwiLCBcIlNUTiBPcmRlciMtUmV2I1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJhbHRlcm5hdGVPcmRlcklkXCIsIFwiQWx0L1JlcCBPcmRlciAjXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImdycFwiLCBcIkdSUFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJjcHBcIiwgXCJDUFBcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiaW1wc1wiLCBcIklNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiY3BtXCIsIFwiQ1BNXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9mZmVyZWRNR3NcIiwgXCJPZmZlcmVkIE1HXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm91dHN0YW5kaW5nUEVcIiwgXCJPL1MgUEVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib2ZmZXJlZEFEVXNcIiwgXCJPZmZlcmVkIEFEVXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidWREZWZpY2l0VmFsdWVcIiwgXCJPL1MgQXVkIERlbHRhXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInN0YXJ0RW5kVGltZU11bHRpXCIsIFwiVGltZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRWYWx1ZVwiLCBcIkJvb2tlZFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRTcG90c1wiLCBcIlNwb3RzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInVzZXJDaGFuZ2VzXCIsIFwiVXNlciBDaGFuZ2VzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJ1eWVyQ2hhbmdlc1wiLCBcIkJ1eWVyIENoYW5nZXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidXNlck1HXCIsIFwiVXNlciBNR1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ1c2VyQURVc1wiLCBcIlVzZXIgQURVc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJpbnZlbnRvcnlDb2RlXCIsIFwiSW52ZW50b3J5IENvZGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicHJvZ3JhbVwiLCBcIlByb2dyYW1cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYWdlbmN5XCIsIFwiQWdlbmN5XCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImFkdmVydGlzZXJcIiwgXCJBZHZlcnRpc2VyXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInN0YXJ0RGF0ZVwiLCBcIlN0YXJ0IERhdGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZW5kRGF0ZVwiLCBcIkVuZCBEYXRlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJjdlByZWVtcHRcIiwgXCIkIE1hZGVnb29kIFBFc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvc1ByZWVtcHRcIiwgXCIkIE8vUyBQRXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmN2VW5kZXJEbHlcIiwgXCJSZWNvdmVyZWQgVURcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib3NVbmRlckRseVwiLCBcIk8vcyBVbmRlciBEbHlcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicHJpbWFyeUFlXCIsIFwiUHJpbWFyeSBBRVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZWdpb25cIiwgXCJSZWdpb25cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmV2Q29kZTFcIiwgXCJSZXYgY29kZSAxXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9yZGVyTm9SZXZOb1wiLCBcIlNUTiBPcmRlciMtUmV2I1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZXZDb2RlMlwiLCBcIlJldiBjb2RlIDJcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmV2Q29kZTNcIiwgXCJSZXYgY29kZSAzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFwiLCBcIiQgQm9va2VkXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInNwb3RzXCIsIFwiU3BvdHNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG9zdGVkQXVkUGVyY2VudFwiLCBcIlBvc3RlZCAlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJldmlzaW9uXCIsIFwiUmV2aXNpb25cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYnV5ZXJPcmRlcklkXCIsIFwiQUxUL1JFUCBPcmRlciNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZGVtb1wiLFwiRGVtb1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRBZHVcIixcIiQgUG9zdGVkIEFEVXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwic2NoZWR1bGVkQWR1XCIsXCIkIFNjaGVkdWxlZCBBRFVzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImF1ZGllbmNlRGVmaWNpdFwiLFwiJCBPL1MgQXVkaWVuY2VcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG9zdGVkQXVkUGVyY2VudFwiLFwiUG9zdGVkIEF1ZGllbmNlICVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG90ZW50aWFsVW5pdHNWYWx1ZVwiLFwiUE9UIFVuaXRzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFVuaXRzVmFsdWVcIixcIkJvb2tlZCBVbml0c1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRBbW91bnRXaXRoWmVyb1JhdGluZ1ZhbHVlXCIsXCJUb3RhbCAkIEJvb2tlZFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRBbW91bnRQZXJjZW50YWdlV2l0aFplcm9SYXRpbmdWYWx1ZVwiLFwiJSBBZ2FpbnN0IEFsbCBEZW1vc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRBbW91bnRXaXRob3V0WmVyb1JhdGluZ1ZhbHVlXCIsXCIkQm9va2VkIFdpdGggSW1wcyjigJkwMDApXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEFtb3VudFBlcmNlbnRhZ2VXaXRob3V0WmVyb1JhdGluZ1ZhbHVlXCIsIFwiJSBBZ2FpbnN0IEFsbCBEZW1vc1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInRvdGFsQm9va2VkQW1vdW50VmFsdWVcIixcIlRvdGFsICRCb29rZWRcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYXZlcmFnZVVuaXRSYXRlVmFsdWVcIixcIkFVUlwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ0b3RhbEJvb2tlZEFtb3VudFdpdGhSYXRpbmdWYWx1ZVwiLCBcIiRCb29rZWQgV2l0aCBSYXRpbmdcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYXZlcmFnZVVuaXRSYXRlV2l0aFJhdGluZ1ZhbHVlXCIsIFwiQVVSIFdpdGggUmF0aW5nXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidG90YWxCb29rZWRBbW91bnRXaXRoSW1wcmVzc2lvblZhbHVlXCIsIFwiJEJvb2tlZCBXaXRoIElNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYXZlcmFnZVVuaXRSYXRlV2l0aEltcHJlc3Npb25WYWx1ZVwiLCBcIkFVUiBXaXRoIElNUFNcIik7XHJcbiAgICBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRVbml0c1dpdGhSYXRpbmdWYWx1ZVwiLCBcIkJvb2tlZCBVbml0cyBXaXRoIFJhdGluZ1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRVbml0c1dpdGhSYXRpbmdWYWx1ZVwiLCBcIlBvc3RlZCBVbml0cyBXaXRoIFJhdGluZ1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFVuaXRzV2l0aEltcHJlc3Npb25WYWx1ZVwiLCBcIkJvb2tlZCBVbml0cyBXaXRoIElNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG9zdGVkVW5pdHNXaXRoSW1wcmVzc2lvblZhbHVlXCIsIFwiUG9zdGVkIFVuaXRzIFdpdGggSU1QU1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFJhdGluZ3NcIiwgXCJCb29rZWQgUmF0aW5nXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZFJhdGluZ3NcIiwgXCJQb3N0ZWQgUmF0aW5nXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkSW1wcmVzc2lvbnNcIiwgXCJCb29rZWQgSU1QU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRJbXByZXNzaW9uc1wiLCBcIlBvc3RlZCBJTVBTXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkQXZlcmFnZVJhdGluZ1wiLCBcIkJvb2tlZCBBVkcgUmF0aW5nXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZEF2ZXJhZ2VSYXRpbmdcIiwgXCJQb3N0ZWQgQVZHIFJhdGluZ1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEF2ZXJhZ2VJbXByZXNzaW9uXCIsIFwiQm9va2VkIEFWRyBJTVBTXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZEF2ZXJhZ2VJbXByZXNzaW9uXCIsIFwiUG9zdGVkIEFWRyBJTVBTXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkQ3BwVmFsdWVcIiwgXCJCb29rZWQgQ1BQXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEVmZmVjdGl2ZUNwcFZhbHVlXCIsIFwiRWZmZWN0aXZlIENQUFwiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZENwbVZhbHVlXCIsIFwiQm9va2VkIENQTVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRFZmZlY3RpdmVDcG1WYWx1ZVwiLCBcIkVmZmVjdGl2ZSBDUE1cIik7XHJcbiAgICBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvcmRlclNvdXJjZVwiLFwiT3JkZXIgU291cmNlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9yZGVyQ2F0ZWdvcnlcIixcIlJldiBDYXRlZ29yeVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJjYXNoT3JUcmFkZVwiLFwiQy9UXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJldmlzaW9uU3RhcnREYXRlXCIsIFwiUmV2aXNpb24gU3RhcnQgRGF0ZVwiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIk9ESW1wc1wiLFwiT0QgSU1QU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJVREltcHNcIixcIlVEIElNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiT0RHcnBcIixcIk9EIEdSUFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJVREdycFwiLFwiVUQgR1JQXCIpOyBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ1ZEltcHNQZXJjZW50XCIsXCJVRCBJTVBTICVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidWRHcnBQZXJjZW50XCIsXCJVRCBHUlAgJVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvZEltcHNQZXJjZW50XCIsXCJPRCBJTVBTICVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib2RHcnBQZXJjZW50XCIsXCJPRCBHUlAgJVwiKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlVGFibGVEYXRhV3JhcHBlcigpIHtcclxuICAgIHRoaXMuc2hvd1NrZWxldG9uTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnRhYmxlRGF0YVdyYXBwZXIgPSBbXTtcclxuICAgIGxldCByb3dPYmplY3Q6IGFueTtcclxuICAgIGxldCBjb2x1bW5OYW1lOiBzdHJpbmc7XHJcbiAgICBsZXQgY29sdW1uT2JqZWN0OiB7IFt4OiBzdHJpbmddOiBhbnk7IH07XHJcbiAgICBsZXQgY29sdW1uT2JqZWN0S2V5O1xyXG4gICAgbGV0IGtleXNVc2VkRm9yVGFibGVEaXNwbGF5OiBzdHJpbmdbXTtcclxuICAgIGxldCBrZXlzVXNlZEZvckNvbHVtbjogc3RyaW5nW107XHJcbiAgICBsZXQgYWRkaXRpb25hbEluZm9PYmplY3Q6IHsgW3g6IHN0cmluZ106IGFueTsgfTtcclxuICAgIGxldCBhZGRpdGlvbmFsS2V5cztcclxuICAgIHRoaXMudGFibGVEYXRhLmZvckVhY2goKG9iajogeyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiB7XHJcbiAgICAgIHJvd09iamVjdCA9IHt9O1xyXG4gICAgICBrZXlzVXNlZEZvclRhYmxlRGlzcGxheSA9IFtdO1xyXG4gICAgICBmb3IgKHZhciBjb2xOdW0gaW4gdGhpcy50YWJsZUhlYWRlcnMpIHtcclxuICAgICAgICBjb2x1bW5PYmplY3QgPSB7fTtcclxuICAgICAgICBpZiAoIXRoaXMudGFibGVIZWFkZXJzW2NvbE51bV0udmlzaWJsZSkge1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbHVtbk5hbWUgPSBcIlwiO1xyXG4gICAgICAgIGtleXNVc2VkRm9yQ29sdW1uID0gW107XHJcbiAgICAgICAgdGhpcy50YWJsZUhlYWRlcnNbY29sTnVtXS5oZWFkZXJJbmZvLmZvckVhY2goKGhlYWRlcikgPT4ge1xyXG4gICAgICAgICAgaWYgKGhlYWRlci50eXBlT2ZCb2R5RGF0YSA9PT0gXCJTVFJJTkdcIikge1xyXG4gICAgICAgICAgICBjb2x1bW5PYmplY3RLZXkgPSBoZWFkZXIub2JqZWN0S2V5O1xyXG4gICAgICAgICAgICBjb2x1bW5PYmplY3RbY29sdW1uT2JqZWN0S2V5XSA9IG9ialtjb2x1bW5PYmplY3RLZXldO1xyXG4gICAgICAgICAgICBrZXlzVXNlZEZvclRhYmxlRGlzcGxheS5wdXNoKGNvbHVtbk9iamVjdEtleSk7XHJcbiAgICAgICAgICAgIGtleXNVc2VkRm9yQ29sdW1uLnB1c2goY29sdW1uT2JqZWN0S2V5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGhlYWRlci50eXBlT2ZCb2R5RGF0YSA9PT0gXCJJQ09OXCIpIHtcclxuICAgICAgICAgICAgY29sdW1uT2JqZWN0S2V5ID0gaGVhZGVyLnR5cGVPZkJvZHlEYXRhO1xyXG4gICAgICAgICAgICBjb2x1bW5PYmplY3RbY29sdW1uT2JqZWN0S2V5XSA9IG9ialtoZWFkZXIub2JqZWN0S2V5XTtcclxuICAgICAgICAgICAga2V5c1VzZWRGb3JDb2x1bW4ucHVzaChoZWFkZXIub2JqZWN0S2V5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGhlYWRlci50eXBlT2ZCb2R5RGF0YSA9PT0gXCJDSEVDS0JPWFwiKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbk9iamVjdEtleSA9IGhlYWRlci50eXBlT2ZCb2R5RGF0YTtcclxuICAgICAgICAgICAgY29sdW1uT2JqZWN0W2NvbHVtbk9iamVjdEtleV0gPSBvYmpbaGVhZGVyLm9iamVjdEtleV07XHJcbiAgICAgICAgICAgIGtleXNVc2VkRm9yQ29sdW1uLnB1c2goaGVhZGVyLm9iamVjdEtleSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXNVc2VkRm9yQ29sdW1uLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBjb2x1bW5OYW1lICs9IGtleXNVc2VkRm9yQ29sdW1uW2ldO1xyXG4gICAgICAgICAgaWYgKGkgIT09IGtleXNVc2VkRm9yQ29sdW1uLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgY29sdW1uTmFtZSArPSAnLCc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvd09iamVjdFtjb2x1bW5OYW1lXSA9IGNvbHVtbk9iamVjdDtcclxuICAgICAgfVxyXG4gICAgICBhZGRpdGlvbmFsSW5mb09iamVjdCA9IHt9O1xyXG4gICAgICBhZGRpdGlvbmFsS2V5cyA9IE9iamVjdC5rZXlzKG9iaikuZmlsdGVyKGtleSA9PiAha2V5c1VzZWRGb3JUYWJsZURpc3BsYXkuaW5jbHVkZXMoa2V5KSk7XHJcbiAgICAgIGFkZGl0aW9uYWxLZXlzLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBhZGRpdGlvbmFsSW5mb09iamVjdFtrZXldID0gb2JqW2tleV07XHJcbiAgICAgIH0pXHJcbiAgICAgIHJvd09iamVjdC5BZGRpdGlvbmFsSW5mbyA9IGFkZGl0aW9uYWxJbmZvT2JqZWN0O1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YVdyYXBwZXIucHVzaChyb3dPYmplY3QpO1xyXG4gICAgfSlcclxuICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy50YWJsZURhdGFXcmFwcGVyO1xyXG4gICAgdGhpcy5zaG93U2tlbGV0b25Mb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2VsZWN0T3JVbnNlbGVjdENoZWNrYm94KHJvd0RhdGE6IGFueSwgY29sdW1uS2V5czogYW55LCBpc0NoZWNrYm94U2VsZWN0ZWQ6IGFueSkge1xyXG4gICAgdGhpcy50b2dnbGVDaGVja2JveC5lbWl0KHsgcm93RGF0YSwgY29sdW1uS2V5cywgaXNDaGVja2JveFNlbGVjdGVkIH0pO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0VW5zZWxlY3RBbGxSb3dzKCkge1xyXG4gICAgdGhpcy50b2dnbGVIZWFkZXJDaGVja2JveC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RVbnNlbGVjdFJvdyhyb3dEYXRhOiBhbnkpIHtcclxuICAgIHRoaXMudG9nZ2xlUm93Q2hlY2tib3guZW1pdChyb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIHVuZG9DcmVkaXRlZFNwb3QoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnVuZG9JY29uQ2xpY2tlZC5lbWl0KHsgZGF0YSwgbWdPckNyZWRpdDogXCJDcmVkaXRcIiB9KTtcclxuICB9XHJcblxyXG4gIHVuZG9NZ1Nwb3QoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnVuZG9JY29uQ2xpY2tlZC5lbWl0KHsgZGF0YSwgbWdPckNyZWRpdDogXCJNYWtlR29vZFwiIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9Tb3J0IGFuZCBGaWx0ZXIgTG9naWMgYmVnaW5zIVxyXG4gIGNsb3NlVG9vbHRpcCgpIHtcclxuICAgIGlmICh0aGlzLnRvb2x0aXAgJiYgdGhpcy50b29sdGlwLmlzT3BlbigpKSB7XHJcbiAgICAgIHRoaXMudG9vbHRpcC5jbG9zZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy50b29sdGlwID0gbnVsbDtcclxuICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSBmYWxzZTtcclxuICAgIGlmICghdGhpcy5iaW5kVmFsdWVGdW5jQ2FsbGVkKSB7XHJcbiAgICAgIHRoaXMuY29sdW1uRmlsdGVyQ2xvc2VkLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzVG9vbHRpcEFjdGl2ZShoZWFkZXI6IGFueVtdKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pc1Rvb2x0aXBBY3RpdmUoaGVhZGVyLHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBiaW5kVGhlVmFsdWVUb1Rvb2xUaXAodG9vbHRpcDogYW55LCBoZWFkZXI6IElIZWFkZXJJbmZvKSB7XHJcblxyXG4gICAgdGhpcy5iaW5kVmFsdWVGdW5jQ2FsbGVkID0gdHJ1ZTtcclxuICAgIGxldCBjb250YWluZXJUb1Njcm9sbDtcclxuICAgIGlmICh0aGlzLmd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT09IFwiU1BPVERFVEFJTFNcIiB8fCB0aGlzLmd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT09IFwiRFJSTElTVElOR1wiKSB7XHJcbiAgICAgIGNvbnRhaW5lclRvU2Nyb2xsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInNjcm9sbGFibGUtY29udGFpbmVyXCIpWzBdO1xyXG4gICAgICB2YXIgbWVkaWFRdWVyeSA9IHdpbmRvdy5tYXRjaE1lZGlhKFwiKG1heC13aWR0aDogMTM2NnB4KVwiKTtcclxuICAgICAgaWYgKG1lZGlhUXVlcnkubWF0Y2hlcykge1xyXG4gICAgICAgIGNvbnRhaW5lclRvU2Nyb2xsLnNjcm9sbCgwLCB0aGlzLmd0R2VuZXJhbENvbmZpZy52ZXJ0aWNhbFNjcm9sbE9mZnNldEZvckZpbHRlclRvb2x0aXApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIGlmIHNhbWUgdG9vbHRpcCBvcGVuZWQgY2xvc2UgaXRcclxuICAgIGlmICh0b29sdGlwID09IHRoaXMudG9vbHRpcCkge1xyXG4gICAgICB0aGlzLmJpbmRWYWx1ZUZ1bmNDYWxsZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgZW5hYmxlZEhlYWRlcnM6IGFueVtdID0gW107XHJcbiAgICAgIHRoaXMuY2hlY2tJZlVuaXF1ZVZhbHVlUHJlc2VudEZvclRoZUhlYWRlcihoZWFkZXIsZW5hYmxlZEhlYWRlcnMpO1xyXG4gICAgICB0aGlzLm9wZW5Ub29sdGlwKHRvb2x0aXAsIGVuYWJsZWRIZWFkZXJzLGhlYWRlcik7XHJcblxyXG4gICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCAxNTAwICYmIHdpbmRvdy5pbm5lckhlaWdodCA8IDc2OCAmJiAhdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zbGlkZXJTZXQuaGFzKGhlYWRlci5maWx0ZXJTb3J0T2JqZWN0S2V5c1swXSkpIHtcclxuICAgICAgICB0aGlzLmNvbHVtbkZpbHRlck9wZW5lZC5lbWl0KCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2hvd0ZpbHRlclRvb2x0aXBUYWJzID0gaGVhZGVyLmZpbHRlclNvcnRPYmplY3RLZXlzLmxlbmd0aCA+IDE7XHJcbiAgICAgIGxldCBhY3RpdmVUYWIgPSB0aGlzLmZpbHRlclRhYk9iamVjdHNbMF07XHJcbiAgICAgIHRoaXMucG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGFjdGl2ZVRhYik7XHJcbiAgICAgIHRoaXMuYmluZFZhbHVlRnVuY0NhbGxlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tJZlVuaXF1ZVZhbHVlUHJlc2VudEZvclRoZUhlYWRlcihoZWFkZXI6IElIZWFkZXJJbmZvLCBlbmFibGVkSGVhZGVyczogYW55W10pe1xyXG4gICAgaGVhZGVyLmZpbHRlclNvcnRPYmplY3RLZXlzLmZvckVhY2goKGl0ZW06IHN0cmluZykgPT4ge1xyXG4gICAgICBsZXQgZGF0YVRvQ2hlY2sgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldEZpbHRlck9wdGlvbnNEYXRhKHRoaXMudGFibGVEYXRhLCB0aGlzLmNsb25lZFRhYmxlRGF0YSwgaXRlbSk7XHJcbiAgICAgIGlmKGl0ZW0gPT0gXCJwZXJpb2RcIil7XHJcbiAgICAgICAgICBsZXQgdW5pcVN0YXJ0RGF0ZSA9IHVuaXEoZGF0YVRvQ2hlY2subWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVbXCJzdGFydERhdGVcIl0pKTtcclxuICAgICAgICAgIGxldCB1bmlxRW5kRGF0ZSA9IHVuaXEoZGF0YVRvQ2hlY2subWFwKCh1OnsgW3g6IHN0cmluZ106IGFueTsgfSkgPT4gdVtcImVuZERhdGVcIl0pKTtcclxuICAgICAgICAgIGlmKHVuaXFTdGFydERhdGUubGVuZ3RoID4gMSB8fCB1bmlxRW5kRGF0ZS5sZW5ndGggPiAxIHx8IHRoaXMuaXNUb29sdGlwQWN0aXZlKFtpdGVtXSkpe1xyXG4gICAgICAgICAgICBlbmFibGVkSGVhZGVycy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBlbHNle1xyXG4gICAgICAgICAgbGV0IHZhbHVlcyA9IGRhdGFUb0NoZWNrLm1hcCgodTogeyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiB1W2l0ZW1dKTtcclxuICAgICAgICAvLyBpZiBsYXN0IGFwcGxpZWQgZmlsdGVyIGlzIHRoaXMgaGVhZGVyLCBwdXNoIGl0IGFsb3MgYXMgZW5hYmxlZEhlYWRlclxyXG4gICAgICAgIGxldCBhY3RpdmVBbmRMYXN0bHlBcHBsaWVkSGVhZGVyID0gZmFsc2U7XHJcbiAgICAgICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5hcHBsaWVkRmlsdGVyc0FycmF5Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuYXBwbGllZEZpbHRlcnNBcnJheVt0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmFwcGxpZWRGaWx0ZXJzQXJyYXkubGVuZ3RoLTFdID09IGl0ZW0pe1xyXG4gICAgICAgICAgICBhY3RpdmVBbmRMYXN0bHlBcHBsaWVkSGVhZGVyID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICBpZihoZWFkZXIuZmlsdGVyID09IFwiQ0hFQ0tCT1hcIiAmJiAodW5pcSh2YWx1ZXMpLmZpbHRlcihuID0+IG4hPW51bGwpLmxlbmd0aCA+IDEgfHwgYWN0aXZlQW5kTGFzdGx5QXBwbGllZEhlYWRlcikpe1xyXG4gICAgICAgICAgICBlbmFibGVkSGVhZGVycy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKGhlYWRlci5maWx0ZXIgIT0gXCJDSEVDS0JPWFwiICYmICh1bmlxKHZhbHVlcykuZmlsdGVyKG4gPT4gbiE9bnVsbCAmJiBuIT1cIi1cIikubGVuZ3RoID4gMSB8fCBhY3RpdmVBbmRMYXN0bHlBcHBsaWVkSGVhZGVyKSl7XHJcbiAgICAgICAgICBlbmFibGVkSGVhZGVycy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb3BlblRvb2x0aXAodG9vbHRpcDogYW55LGhlYWRlcjogYW55LCBjb2x1bW5IZWFkZXI6IElIZWFkZXJJbmZvKSB7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gICAgdGhpcy50b29sdGlwID0gdG9vbHRpcDtcclxuICAgIHRoaXMudG9vbHRpcC5vcGVuKCk7XHJcbiAgICAvL2NvbnZlcnQga2V5IGludG8gdGhlIGhlYWRlclxyXG4gICAgdGhpcy5maWx0ZXJUYWJPYmplY3RzID0gaGVhZGVyLm1hcCgoa2V5OiBzdHJpbmcsaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICBsZXQgdmFsdWUgPSB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuaGFzKGtleSlcclxuICAgICAgICA/IHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5nZXQoa2V5KVxyXG4gICAgICAgIDoga2V5OyAvL2NoYW5nZSB0byBkaXNwbGF5IG5hbWVcclxuICAgICAgcmV0dXJuIG5ldyByYWRpb0J1dHRvbk1vZGVsKGtleSwgdmFsdWUsIGNvbHVtbkhlYWRlci5pc1NvcnRSZXF1aXJlZFtpbmRleF0sIGNvbHVtbkhlYWRlci5pc0ZpbHRlclJlcXVpcmVkW2luZGV4XSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsZWFyQ29sdW1uRmlsdGVyKCkge1xyXG4gICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5jbGVhckNvbHVtbkZpbHRlcigpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIikpO1xyXG4gICAgdGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEgPSB0aGlzLnRhYmxlRGF0YTtcclxuICAgIHRoaXMuY2hlY2tJZlNvcnRpbmdJc0FwcGxpZWQoKTtcclxuICAgIHRoaXMuZmlsdGVyQXBwbGllZFRvVGFibGUuZW1pdCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICB0aGlzLmRpc2FibGVFbmFibGVFYWNoQ29sdW1uVG9vbHRpcEljb24oKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZlRoZUN1cnJlbnRGaWx0ZXJUYWIodGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGFjdGl2ZVRhYjogcmFkaW9CdXR0b25Nb2RlbCkge1xyXG5cclxuICAgIGxldCBoZWFkZXIgPSBhY3RpdmVUYWIua2V5O1xyXG4gICAgdGhpcy5zZWxlY3RlZExhYmVsID0gYWN0aXZlVGFiLmxhYmVsO1xyXG4gICAgdGhpcy5zaG93U29ydENvbXBvbmVudCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlYXJjaEl0ZW0gPSBudWxsO1xyXG4gICAgXHJcbiAgICB0aGlzLnNob3dTb3J0Q29tcG9uZW50ID0gYWN0aXZlVGFiLmlzU29ydFJlcXVpcmVkO1xyXG4gICAgdGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ID0gYWN0aXZlVGFiLmlzRmlsdGVyUmVxdWlyZWQ7XHJcbiAgICB0aGlzLnRlbXBTb3J0T3JkZXIgPSBudWxsO1xyXG4gICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNTb3J0Q2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgXHJcbiAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPSBoZWFkZXI7XHJcbiAgICB0aGlzLmRpc2FibGVBY3RpdmVGaWx0ZXJDbGVhckJ1dHRvbigpO1xyXG4gICAgXHJcbiAgICB0aGlzLmNyZWF0ZUZpbHRlclRvb2x0aXBEYXRhKGhlYWRlcik7XHJcbiAgICBcclxuICB9XHJcblxyXG4gIGNyZWF0ZUZpbHRlclRvb2x0aXBEYXRhKGhlYWRlcjogc3RyaW5nKXtcclxuICAgIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCl7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG4gPSB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gPSB0cnVlO1xyXG4gICAgICBcclxuICAgICAgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuY2FsZW5kYXJTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmdldENhbGVuZGFyRGF0YSgpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2xpZGVyU2V0LmhhcyhoZWFkZXIpKSB7XHJcbiAgICAgICAgdGhpcy5nZXRTbGlkZXJEYXRhKGhlYWRlcik7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS50aW1lU2V0LmhhcyhoZWFkZXIpKSB7XHJcbiAgICAgICAgdGhpcy5nZXRUaW1lRmlsdGVyRGF0YShoZWFkZXIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ2V0Q2hlY2tib3hEYXRhKGhlYWRlcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5zaG93U29ydENvbXBvbmVudCl7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG4gPSB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGlzYWJsZUFjdGl2ZUZpbHRlckNsZWFyQnV0dG9uKCl7XHJcbiAgICBsZXQgc2VsZWN0ZWRGaWx0ZXJTZXQgPSBuZXcgU2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuYXBwbGllZEZpbHRlcnNBcnJheSk7XHJcbiAgICBsZXQgaXNTb3J0UHJlc2VudCA9ICh0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUuc2l6ZSA+IDAgJiYgdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pIFxyXG4gICAgJiYgdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pICE9IFwiREVGQVVMVFwiKTtcclxuICAgIHRoaXMuZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuID0gc2VsZWN0ZWRGaWx0ZXJTZXQuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykgfHwgaXNTb3J0UHJlc2VudCA/IGZhbHNlIDogdHJ1ZTtcclxuICB9XHJcblxyXG4gIGdldFNsaWRlckRhdGEoaGVhZGVyOiBzdHJpbmcpIHtcclxuICAgIFxyXG4gICAgdGhpcy5jcmVhdGVPcHRpb25zRm9yU2xpZGVyKGhlYWRlcik7XHJcbiAgICB0aGlzLnNldFNlbGVjdGVkUmFuZ2VGb3JTbGlkZXIoaGVhZGVyKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZU9wdGlvbnNGb3JTbGlkZXIoaGVhZGVyOiBzdHJpbmcpe1xyXG5cclxuICAgIGxldCB0cmFuc2xhdGVGdW5jO1xyXG4gICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPSB0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA9IG51bGw7XHJcbiAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkgPSB0aGlzLmlzTWF4VGV4dEJveEVtcHR5ID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2xpZGVyQ3VycmVuY3lTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgdHJhbnNsYXRlRnVuYyA9IFwiY3VycmVuY3lcIjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYoaGVhZGVyID09IFwicG9zdGVkQXVkUGVyY2VudFwiKXtcclxuICAgICAgdHJhbnNsYXRlRnVuYyA9IFwicGVyY2VudFwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRyYW5zbGF0ZUZ1bmMgPSBcIm5vcm1hbFwiO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBvcHRpb25zRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyT3B0aW9uc0RhdGEodGhpcy50YWJsZURhdGEsIHRoaXMuY2xvbmVkVGFibGVEYXRhKTtcclxuICAgIGxldCBtaW5WYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWF4QW5kTWluVmFsdWUob3B0aW9uc0RhdGEsIGhlYWRlciwgdHJ1ZSk7XHJcbiAgICBsZXQgbWF4VmFsdWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1heEFuZE1pblZhbHVlKG9wdGlvbnNEYXRhLCBoZWFkZXIsIGZhbHNlKTtcclxuXHJcbiAgICBsZXQgb2JqID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZXRPcHRpb25WYWx1ZXMobWluVmFsdWUsbWF4VmFsdWUpO1xyXG5cclxuICAgIGlmICh0cmFuc2xhdGVGdW5jID09PSBcIm5vcm1hbFwiKSB7XHJcbiAgICAgICAgb2JqLnRyYW5zbGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uubm9ybWFsVHJhbnNsYXRlRnVuY3Rpb247XHJcbiAgICB9IGVsc2UgaWYgKHRyYW5zbGF0ZUZ1bmMgPT09IFwicGVyY2VudFwiKSB7XHJcbiAgICAgICAgb2JqLnRyYW5zbGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucGVyY2VudFRyYW5zbGF0ZUZ1bmN0aW9uO1xyXG4gICAgfSBlbHNlIGlmICh0cmFuc2xhdGVGdW5jID09PSBcImN1cnJlbmN5XCIpIHtcclxuICAgICAgICBvYmoudHJhbnNsYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5jdXJyZW5jeVRyYW5zbGF0ZUZ1bmN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub3B0aW9ucyA9IG9iajtcclxuICAgIHRoaXMub3B0aW9ucy5zdGVwID0gMTtcclxuICAgIHRoaXMuc2xpZGVyRmlsdGVyVGV4dEJveFN0ZXAgPSBcIjFcIjtcclxuICAgIGlmIChoZWFkZXIgIT09IFwiV2Vla051bWJlclwiKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5zdGVwID0gMC4xO1xyXG4gICAgICB0aGlzLnNsaWRlckZpbHRlclRleHRCb3hTdGVwID0gXCIwLjFcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGVkUmFuZ2VGb3JTbGlkZXIoaGVhZGVyOiBzdHJpbmcpe1xyXG4gICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKGhlYWRlcikpe1xyXG4gICAgICBsZXQgc2VsZWN0ZWRPYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQoaGVhZGVyKTtcclxuICAgICAgdGhpcy5zbGlkZXJNaW5WYWx1ZSA9IHNlbGVjdGVkT2JqLm1pbiA8IHRoaXMub3B0aW9ucy5mbG9vciA/IHRoaXMub3B0aW9ucy5mbG9vciA6IHNlbGVjdGVkT2JqLm1pbjtcclxuICAgICAgdGhpcy5zbGlkZXJNYXhWYWx1ZSA9IHNlbGVjdGVkT2JqLm1heCA8IHRoaXMub3B0aW9ucy5jZWlsID8gc2VsZWN0ZWRPYmoubWF4IDogdGhpcy5vcHRpb25zLmNlaWw7XHJcbiAgICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlID0gdGhpcy5zbGlkZXJNaW5WYWx1ZTtcclxuICAgICAgdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPSB0aGlzLnNsaWRlck1heFZhbHVlOyAgIFxyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgICB0aGlzLnNsaWRlck1pblZhbHVlID0gdGhpcy5vcHRpb25zLmZsb29yO1xyXG4gICAgICAgIHRoaXMuc2xpZGVyTWF4VmFsdWUgPSB0aGlzLm9wdGlvbnMuY2VpbDtcclxuICAgIH1cclxuICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlID0gdGhpcy5zbGlkZXJNaW5WYWx1ZTtcclxuICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlID0gdGhpcy5zbGlkZXJNYXhWYWx1ZTtcclxuICB9XHJcblxyXG5cclxuICBnZXRDaGVja2JveERhdGEoaGVhZGVyOiBzdHJpbmcpIHtcclxuXHJcbiAgICBsZXQgdG9vbHRpcE9wdGlvbnMgPSB0aGlzLmNyZWF0ZUxpc3RGb3JDaGVja2JveEZpbHRlcihoZWFkZXIpOyAgICBcclxuICAgIGxldCBzZWxlY3RlZEl0ZW1zID0gc29ydEJ5KHRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCksXCJsYWJlbFwiKTtcclxuICAgIGxldCB1bnNlbGVjdGVkSXRlbXMgPSBzb3J0QnkodG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uaXNTZWxlY3RlZCksXCJsYWJlbFwiKTtcclxuICAgICAgICBcclxuICAgIHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMgPSBbLi4uc2VsZWN0ZWRJdGVtcywgLi4udW5zZWxlY3RlZEl0ZW1zXTtcclxuXHJcbiAgICB0aGlzLnRvb2x0aXBPcHRpb25zID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMpO1xyXG4gICAgXHJcbiAgICBsZXQgbWFyZ2luID0gNTtcclxuICAgIGxldCBkYXRhTGVuZ3RoID0gdGhpcy50b29sdGlwT3B0aW9ucy5sZW5ndGg7XHJcbiAgICB0aGlzLmhlaWdodE9mQ2hlY2tib3hUb29sdGlwRmlsdGVyID0gZGF0YUxlbmd0aCA+IDYgPyAyMDAgOiAoKDI2LjAzICogZGF0YUxlbmd0aCkgKyAobWFyZ2luICogZGF0YUxlbmd0aCkgKyBtYXJnaW4pO1xyXG4gICAgXHJcbiAgICB0aGlzLmRpc2FibGVTZWxlY3RBbGwgPSB1bnNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDA7XHJcbiAgICB0aGlzLmRpc2FibGVDbGVhckFsbCA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDA7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUxpc3RGb3JDaGVja2JveEZpbHRlcihoZWFkZXI6IHN0cmluZyl7XHJcbiAgICBsZXQgb3B0aW9uRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyT3B0aW9uc0RhdGEodGhpcy50YWJsZURhdGEsIHRoaXMuY2xvbmVkVGFibGVEYXRhKTtcclxuICAgIGxldCB1bmlxT3B0aW9uRGF0YSA9IHVuaXEob3B0aW9uRGF0YS5tYXAoaXRlbSA9PiBpdGVtW2hlYWRlcl0pKTtcclxuICAgIGxldCB0b29sdGlwT3B0aW9ucyA9IHVuaXFPcHRpb25EYXRhLm1hcCgoaXRlbSxpbmRleCkgPT4gbmV3IFRvb2x0aXBNb2RlbChpdGVtLGluZGV4KzEpKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdFVuc2VsZWN0TGlzdENoZWNrYm94KHRvb2x0aXBPcHRpb25zLGhlYWRlcik7XHJcbiAgICBsZXQgaW5kZXggPSB0b29sdGlwT3B0aW9ucy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnZhbHVlID09IG51bGwpO1xyXG4gICAgXHJcbiAgICBpZihpbmRleCAhPSAtMSl7XHJcbiAgICAgIHRvb2x0aXBPcHRpb25zW2luZGV4XS5sYWJlbCA9IFwiKEJsYW5rKVwiO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0b29sdGlwT3B0aW9ucztcclxuICB9XHJcblxyXG4gIHNlbGVjdFVuc2VsZWN0TGlzdENoZWNrYm94KHRvb2x0aXBPcHRpb25zOiBUb29sdGlwTW9kZWxbXSxoZWFkZXI6IHN0cmluZyl7XHJcbiAgICBcclxuICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyhoZWFkZXIpKXtcclxuICAgICAgbGV0IHNlbGVjdGVkVmFsdWVTZXQgPSBuZXcgU2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpKTtcclxuICAgICAgdG9vbHRpcE9wdGlvbnMuZm9yRWFjaChpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCA9IHNlbGVjdGVkVmFsdWVTZXQuaGFzKGl0ZW0udmFsdWUpID8gdHJ1ZSA6IGZhbHNlKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHRvb2x0aXBPcHRpb25zLmZvckVhY2goaXRlbSA9PiBpdGVtLmlzU2VsZWN0ZWQgPSB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBnZXRDYWxlbmRhckRhdGEoKSB7XHJcbiAgICBjb25zdCBwYXJzaW5nRm9ybWF0ID0gXCJNTS9ERC9ZWVlZXCI7XHJcbiAgICBsZXQgbWluTWF4RGF0ZSA9IHRoaXMuY3JlYXRlUmFuZ2VGb3JUaGVEYXRlRmlsdGVyKCk7XHJcbiAgICB0aGlzLnNlbGVjdFJhbmdlRm9yVGhlRGF0ZUZpbHRlcihtaW5NYXhEYXRlLCBwYXJzaW5nRm9ybWF0KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVJhbmdlRm9yVGhlRGF0ZUZpbHRlcigpe1xyXG4gICAgXHJcbiAgICBsZXQgb3B0aW9uRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyT3B0aW9uc0RhdGEodGhpcy50YWJsZURhdGEsIHRoaXMuY2xvbmVkVGFibGVEYXRhKTtcclxuICAgIFxyXG4gICAgbGV0IG1pbk1heERhdGU7XHJcbiAgICAvL1doZW4geW91IHdhbnQgdG8gdXNlIHN0YXJ0RGF0ZSBhbmQgZW5kRGF0ZSBjb21iaW5lZCBhcyBzaW5nbGUgY29sdW1uIHRoZW4gdXNlIFBlcmlvZC5cclxuICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyA9PSBcInBlcmlvZFwiKXtcclxuICAgICAgbWluTWF4RGF0ZSA9IHRoaXMuY3JlYXRlU3RhcnRFbmREYXRlUmFuZ2Uob3B0aW9uRGF0YSk7XHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICBtaW5NYXhEYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NaW5BbmRNYXhEYXRlKG9wdGlvbkRhdGEsIHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7ICBcclxuICAgIH1cclxuICAgIFxyXG4gICAgcmV0dXJuIG1pbk1heERhdGU7XHJcblxyXG4gIH1cclxuXHJcbiAgY3JlYXRlU3RhcnRFbmREYXRlUmFuZ2Uob3B0aW9uRGF0YTogYW55W10pe1xyXG4gICAgbGV0IG1pblN0YXJ0RGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWluQW5kTWF4RGF0ZShvcHRpb25EYXRhLCBcInN0YXJ0RGF0ZVwiKTtcclxuICAgIGxldCBtYXhFbmREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NaW5BbmRNYXhEYXRlKG9wdGlvbkRhdGEsXCJlbmREYXRlXCIpO1xyXG4gICAgcmV0dXJuIFttaW5TdGFydERhdGVbMF0sbWF4RW5kRGF0ZVsxXV07XHJcbiAgfVxyXG5cclxuICBzZWxlY3RSYW5nZUZvclRoZURhdGVGaWx0ZXIobWluTWF4RGF0ZTogYW55W10sIHBhcnNpbmdGb3JtYXQ6IHN0cmluZyl7XHJcbiAgICB0aGlzLmNhbGVuZGFyTWluRW5hYmxlZERhdGUgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvTmdiRGF0ZShtaW5NYXhEYXRlWzBdLHBhcnNpbmdGb3JtYXQpO1xyXG4gICAgdGhpcy5jYWxlbmRhck1heEVuYWJsZWREYXRlID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb05nYkRhdGUobWluTWF4RGF0ZVsxXSxwYXJzaW5nRm9ybWF0KTtcclxuICAgIFxyXG4gICAgXHJcbiAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkRGF0ZU9iaiA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmKHNlbGVjdGVkRGF0ZU9iai5mcm9tRGF0ZS5pc0FmdGVyKG1pbk1heERhdGVbMF0pKXtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1pbkRhdGUgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvTmdiRGF0ZShzZWxlY3RlZERhdGVPYmouZnJvbURhdGUscGFyc2luZ0Zvcm1hdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNaW5EYXRlID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb05nYkRhdGUobWluTWF4RGF0ZVswXSxwYXJzaW5nRm9ybWF0KTtcclxuICAgICAgICB9IFxyXG5cclxuICAgICAgICBpZihzZWxlY3RlZERhdGVPYmoudG9EYXRlLmlzQWZ0ZXIobWluTWF4RGF0ZVsxXSkpe1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWF4RGF0ZSA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG9OZ2JEYXRlKG1pbk1heERhdGVbMV0scGFyc2luZ0Zvcm1hdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNYXhEYXRlID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb05nYkRhdGUoc2VsZWN0ZWREYXRlT2JqLnRvRGF0ZSxwYXJzaW5nRm9ybWF0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgIHRoaXMuc2VsZWN0ZWRNaW5EYXRlID0gY2xvbmVEZWVwKHRoaXMuY2FsZW5kYXJNaW5FbmFibGVkRGF0ZSk7XHJcbiAgICAgICB0aGlzLnNlbGVjdGVkTWF4RGF0ZSA9IGNsb25lRGVlcCh0aGlzLmNhbGVuZGFyTWF4RW5hYmxlZERhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2FsZW5kYXJTZWxlY3Rpb24uZnJvbURhdGUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZE1pbkRhdGUpO1xyXG4gICAgdGhpcy5jYWxlbmRhclNlbGVjdGlvbi50b0RhdGUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZE1heERhdGUpO1xyXG5cclxuICAgIFxyXG4gIH1cclxuXHJcbiAgZ2V0VGltZUZpbHRlckRhdGEoaGVhZGVyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIFxyXG4gICAgdGhpcy5zdGFydFRpbWVIb3VyRXJyID0gdGhpcy5zdGFydFRpbWVNaW5FcnIgPSB0aGlzLmVuZFRpbWVIb3VyRXJyID0gdGhpcy5lbmRUaW1lTWluRXJyID0gZmFsc2U7ICAgIFxyXG5cclxuICAgIGlmICh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQoaGVhZGVyKS5mcm9tVGltZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpLnRvVGltZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlTWFwRm9yVGltZUZpbHRlcihoZWFkZXIpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQoaGVhZGVyKS5mcm9tVGltZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldChoZWFkZXIpLnRvVGltZTtcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLnNlbGVjdGVkRnJvbVRpbWUgIT0gdW5kZWZpbmVkIHx8IHRoaXMuc2VsZWN0ZWRUb1RpbWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZSA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5mb3JtYXRUb1R3ZWx2ZUhycyh0aGlzLnNlbGVjdGVkRnJvbVRpbWUsIHRydWUpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmZvcm1hdFRvVHdlbHZlSHJzKHRoaXMuc2VsZWN0ZWRUb1RpbWUsIHRydWUpO1xyXG5cclxuICAgICAgdGhpcy5jbG9uZWRTZWxlY3RlZEZyb21UaW1lID0gY2xvbmVEZWVwKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICAgIHRoaXMuY2xvbmVkU2VsZWN0ZWRUb1RpbWUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZFRvVGltZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lID0gW1wiLVwiLCBcIi1cIiwgXCItXCJdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gW1wiLVwiLCBcIi1cIiwgXCItXCJdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PT0gXCJTUE9UREVUQUlMU1wiIHx8IHRoaXMuZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PT0gXCJFWENMVURFSU5WRU5UT1JZUE9QVVBcIiB8fCB0aGlzLmd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT09IFwiQUNUSVZJVFlMT0dcIikge1xyXG4gICAgICB0aGlzLnNldFRpbWVGaWx0ZXJEYXRhRm9yQ29tcG9uZW50c090aGVyVGhhblJhdGluZ3NQYWdlKGhlYWRlcik7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PT0gXCJSQVRJTkdcIil7XHJcbiAgICAgIHRoaXMuc2V0VGltZUZpbHRlckRhdGFGb3JSYXRpbmdQYWdlQ29tcG9uZW50KGhlYWRlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL05lZWQgdG8gY2hhbmdlIHRoaXMgbWV0aG9kXHJcbiAgc2V0VGltZUZpbHRlckRhdGFGb3JDb21wb25lbnRzT3RoZXJUaGFuUmF0aW5nc1BhZ2UoaGVhZGVyOiBzdHJpbmcpe1xyXG4gICAgdGhpcy5zaG93TXVsdGlUaW1lQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0VudGVyVGltZUNoZWNrYm94ID0gZmFsc2U7XHJcbiAgICB0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWQgPSBmYWxzZTtcclxuXHJcblxyXG4gICAgbGV0IG9wdGlvbnNEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5nZXRGaWx0ZXJPcHRpb25zRGF0YSh0aGlzLnRhYmxlRGF0YSwgdGhpcy5jbG9uZWRUYWJsZURhdGEpO1xyXG4gICAgbGV0IHNlbGVjdGVkT2JqO1xyXG5cclxuICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyhoZWFkZXIpKXtcclxuICAgICAgc2VsZWN0ZWRPYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQoaGVhZGVyKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHNlbGVjdGVkT2JqID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KGhlYWRlcik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYob3B0aW9uc0RhdGEuZmluZEluZGV4KG9iaiA9PiBvYmpbaGVhZGVyXSA9PSBcIjBcIikgIT0gLTEpIHtcclxuICAgICAgdGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICAgIHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQgPSBzZWxlY3RlZE9iai5pbmNsdWRlWmVyb1RpbWU7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgaWYob3B0aW9uc0RhdGEuZmluZEluZGV4KG9iaiA9PiBvYmpbaGVhZGVyXSA9PSBcIjxtdWx0aT5cIikgIT0gLTEpIHtcclxuICAgICAgdGhpcy5zaG93TXVsdGlUaW1lQ2hlY2tib3ggPSB0cnVlO1xyXG4gICAgICB0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZCA9IHNlbGVjdGVkT2JqLmluY2x1ZGVNdWx0aTtcclxuICAgIH1cclxuICAgIFxyXG5cclxuICAgIGlmKHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggfHwgdGhpcy5zaG93TXVsdGlUaW1lQ2hlY2tib3gpIHtcclxuICAgICAgdGhpcy5zaG93RW50ZXJUaW1lQ2hlY2tib3ggPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZihvcHRpb25zRGF0YS5maW5kSW5kZXgob2JqID0+IG9ialtoZWFkZXJdICE9IFwiPG11bHRpPlwiICYmIG9ialtoZWFkZXJdICE9IFwiMFwiKSAhPSAtMSkge1xyXG4gICAgICB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCA9IHNlbGVjdGVkT2JqLmluY2x1ZGVUaW1lUmFuZ2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRUaW1lRmlsdGVyRGF0YUZvclJhdGluZ1BhZ2VDb21wb25lbnQoaGVhZGVyOiBzdHJpbmcpe1xyXG4gICAgICB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3daZXJvVGltZUNoZWNrYm94ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd0VudGVyVGltZUNoZWNrYm94ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgIGxldCBvcHRpb25zRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyT3B0aW9uc0RhdGEodGhpcy50YWJsZURhdGEsIHRoaXMuY2xvbmVkVGFibGVEYXRhKTtcclxuICAgICAgbGV0IHNlbGVjdGVkT2JqO1xyXG5cclxuICAgICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKGhlYWRlcikpe1xyXG4gICAgICAgIHNlbGVjdGVkT2JqID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KGhlYWRlcik7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICBzZWxlY3RlZE9iaiA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldChoZWFkZXIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZihvcHRpb25zRGF0YS5maW5kSW5kZXgob2JqID0+IG9ialtoZWFkZXJdWzBdID09IFwiMFwiKSAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQgPSBzZWxlY3RlZE9iai5pbmNsdWRlWmVyb1RpbWU7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICBpZihvcHRpb25zRGF0YS5maW5kSW5kZXgob2JqID0+IG9ialtoZWFkZXJdWzBdID09IFwiPG11bHRpPlwiKSAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMuc2hvd011bHRpVGltZUNoZWNrYm94ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZCA9IHNlbGVjdGVkT2JqLmluY2x1ZGVNdWx0aTtcclxuICAgICAgfVxyXG4gICAgICBcclxuXHJcbiAgICAgIGlmKHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggfHwgdGhpcy5zaG93TXVsdGlUaW1lQ2hlY2tib3gpIHtcclxuICAgICAgICB0aGlzLnNob3dFbnRlclRpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIGlmKG9wdGlvbnNEYXRhLmZpbmRJbmRleChvYmogPT4gb2JqW2hlYWRlcl1bMF0gIT0gXCI8bXVsdGk+XCIgJiYgb2JqW2hlYWRlcl1bMF0gIT0gXCIwXCIpICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWQgPSBzZWxlY3RlZE9iai5pbmNsdWRlVGltZVJhbmdlO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RPclVuc2VsZWN0TXVsdGlUaW1lQ2hlY2tib3goKSB7XHJcbiAgICB0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZCA9ICF0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZDtcclxuICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0T3JVbnNlbGVjdFplcm9UaW1lQ2hlY2tib3goKSB7XHJcbiAgICB0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkID0gIXRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQ7XHJcbiAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdE9yVW5zZWxlY3RFbnRlclRpbWVDaGVja2JveCgpIHtcclxuICAgIHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkID0gIXRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkO1xyXG4gICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBcclxuICBzZWxlY3RVbnNlbGVjdENoZWNrYm94KGRhdGE6IFRvb2x0aXBNb2RlbCkge1xyXG4gICAgZGF0YS5pc1NlbGVjdGVkID0gIWRhdGEuaXNTZWxlY3RlZDtcclxuICAgIGxldCBpbmRleCA9IHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PSBkYXRhLmlkKTtcclxuICAgIHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnNbaW5kZXhdLmlzU2VsZWN0ZWQgPSBkYXRhLmlzU2VsZWN0ZWQ7XHJcbiAgICAgICAgXHJcbiAgICBsZXQgc2VsZWN0ZWRJdGVtcyA9IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc1NlbGVjdGVkKTtcclxuICAgIGxldCB1bnNlbGVjdGVkSXRlbXMgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+ICFpdGVtLmlzU2VsZWN0ZWQpO1xyXG5cclxuICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gIHNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDA7XHJcbiAgICB0aGlzLmRpc2FibGVTZWxlY3RBbGwgPSB1bnNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDA7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94RmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIG1pblZhbHVlQ2hhbmdlZCh2YWw6IHN0cmluZykge1xyXG4gICAgaWYgKHZhbCB8fCB2YWwgPT0gJzAnKSB7XHJcbiAgICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlID0gcGFyc2VJbnQodmFsKTtcclxuICAgICAgdGhpcy5pc01pblRleHRCb3hFbXB0eSA9IGZhbHNlO1xyXG4gICAgICBpZiAodGhpcy5pc01heFRleHRCb3hFbXB0eSkge1xyXG4gICAgICAgIGlmICggKHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlID4gdGhpcy5vcHRpb25zLmNlaWwpIHx8ICh0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA8IHRoaXMub3B0aW9ucy5mbG9vcikpIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlID4gdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUpIHtcclxuICAgICAgICBpZih0aGlzLmlzVmFsdWVJblJhbmdlKHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlKSl7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgaWYodGhpcy5pc1ZhbHVlSW5SYW5nZSh0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSkpe1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgICBcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA8IHRoaXMub3B0aW9ucy5mbG9vcikge1xyXG4gICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA9IHRoaXMub3B0aW9ucy5mbG9vcjtcclxuICAgICAgdGhpcy5pc01pblRleHRCb3hFbXB0eSA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dFcnJvckZvck1pbkFuZE1heFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBtYXhWYWx1ZUNoYW5nZWQodmFsOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWwgfHwgdmFsID09IFwiMFwiKSB7XHJcbiAgICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlID0gcGFyc2VJbnQodmFsKTtcclxuICAgICAgdGhpcy5pc01heFRleHRCb3hFbXB0eSA9IGZhbHNlO1xyXG4gICAgICBpZiAodGhpcy5pc01pblRleHRCb3hFbXB0eSkge1xyXG4gICAgICAgIGlmICggKHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlIDwgdGhpcy5vcHRpb25zLmZsb29yKSB8fCAodGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPiB0aGlzLm9wdGlvbnMuY2VpbCkpIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlIDwgdGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUpIHtcclxuICAgICAgICBpZih0aGlzLmlzVmFsdWVJblJhbmdlKHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlKSl7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgaWYodGhpcy5pc1ZhbHVlSW5SYW5nZSh0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSkpe1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgICAgIC8vIHRoaXMuc2hvd01heEVycm9yID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSA+IHRoaXMub3B0aW9ucy5jZWlsKSB7XHJcbiAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPSB0aGlzLm9wdGlvbnMuY2VpbDtcclxuICAgICAgdGhpcy5pc01heFRleHRCb3hFbXB0eSA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuc2hvd0Vycm9yRm9yTWluQW5kTWF4VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHNob3dFcnJvckZvck1pbkFuZE1heFZhbHVlKCl7XHJcbiAgICAgIGlmKHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkgJiYgdGhpcy5pc01heFRleHRCb3hFbXB0eSl7XHJcbiAgICAgICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgIH1cclxuICAgICBlbHNlIGlmKHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgfHwgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvcil7XHJcbiAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgIH1cclxuICAgICBlbHNle1xyXG4gICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gZmFsc2U7XHJcbiAgICAgfVxyXG4gICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnRuKCk7XHJcbiAgfVxyXG5cclxuICBpc1ZhbHVlSW5SYW5nZSh2YWw6IG51bWJlcil7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZsb29yIDw9IHZhbCAmJiB2YWwgPD0gdGhpcy5vcHRpb25zLmNlaWw7XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlU2xpZGVyQXBwbHlCdG4oKXtcclxuICAgIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCAmJiB0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgbGV0IGlzRmlsdGVyQ2hhbmdlZCA9IHRoaXMuY2hlY2tJZlNsaWRlclRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgIGxldCBpc1NvcnRDaGFuZ2VkID0gdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgICAgIFxyXG4gICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgfHwgKCFpc1NvcnRDaGFuZ2VkICYmICFpc0ZpbHRlckNoYW5nZWQgKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50KXtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgfHwgIXRoaXMuY2hlY2tJZlNsaWRlclRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuc2hvd1NvcnRDb21wb25lbnQpe1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gIXRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzbGlkZXJWYWx1ZUNoYW5nZSgpIHtcclxuICAgIHRoaXMuc2xpZGVyVmFsdWUgPSB7IG1pbjogdGhpcy5zbGlkZXJNaW5WYWx1ZSwgbWF4OiB0aGlzLnNsaWRlck1heFZhbHVlIH07XHJcbiAgfVxyXG5cclxuICBjYW5jZWxTbGlkZXJGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLnNsaWRlclZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcbiAgfVxyXG5cclxuICBhcHBseUZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmFwcGx5TGlzdEZpbHRlcnMoKTtcclxuICAgIHRoaXMuYXBwbHlTb3J0aW5nT25GaWx0ZXJlZERhdGEoKTtcclxuICAgIC8vIHRoaXMuZW1pdERhdGEoKTtcclxuICAgIHRoaXMuc2V0SW5pdGlhbFJvd3NGb3JUYWJsZSgpO1xyXG4gICAgdGhpcy5kaXNhYmxlRW5hYmxlRWFjaENvbHVtblRvb2x0aXBJY29uKCk7XHJcbiAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnVwZGF0ZVN0YXRlT2ZBbGxUaGVLZXlzKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSk7XHJcbiAgICB0aGlzLmVtaXREYXRhKCk7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlMaXN0RmlsdGVycygpe1xyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ICYmIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKXtcclxuICAgICAgbGV0IGN1cnJlbnRTZWxlY3RlZFZhbHVlID0gW107XHJcbiAgICAgIFxyXG4gICAgICBpZih0aGlzLnRvb2x0aXBPcHRpb25zKXtcclxuXHJcbiAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IHNvcnRCeSh0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCkubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSkpO1xyXG5cclxuICAgICAgICAgIGlmKCF0aGlzLnNlYXJjaEl0ZW0gJiYgY3VycmVudFNlbGVjdGVkVmFsdWUubGVuZ3RoID09IHRoaXMudG9vbHRpcE9wdGlvbnMubGVuZ3RoICYmIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICAgICAgY3VycmVudFNlbGVjdGVkVmFsdWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgYmxhbmtJbmRleCA9IGN1cnJlbnRTZWxlY3RlZFZhbHVlLmZpbmRJbmRleCgoaXRlbTogc3RyaW5nKSA9PiBpdGVtID09IG51bGwpO1xyXG4gICAgICBpZihibGFua0luZGV4ICE9IC0xKXtcclxuICAgICAgICBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IHNvcnRCeShjdXJyZW50U2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZU9yZGVyQXBwbGllZEZpbHRlcnNTdGF0ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSxjdXJyZW50U2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbywgY3VycmVudFNlbGVjdGVkVmFsdWUpO1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5maWx0ZXJEYXRhKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcIlwiKTtcclxuICAgICAgICB0aGlzLmFubmFTb3J0U2VydmljZS5ub1NvcnRpbmdBcHBsaWVkRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseVNvcnRpbmdPbkZpbHRlcmVkRGF0YSgpe1xyXG4gICAgaWYodGhpcy5zaG93U29ydENvbXBvbmVudCl7XHJcbiAgICAgIGlmKHRoaXMuaXNTb3J0Q2hhbmdlZCl7XHJcbiAgICAgICAgdGhpcy51cGRhdGVTb3J0TWFwKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLmlzRmlsdGVyQ2hhbmdlZCl7XHJcbiAgICAgICAgdGhpcy5jaGVja0lmU29ydGluZ0lzQXBwbGllZCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKXtcclxuICAgICAgdGhpcy5jaGVja0lmU29ydGluZ0lzQXBwbGllZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZW1pdERhdGEoKXtcclxuICAgIGlmKHRoaXMuaXNGaWx0ZXJDaGFuZ2VkICYmIHRoaXMuaXNTb3J0Q2hhbmdlZCl7XHJcbiAgICAgIHRoaXMuZmlsdGVyQXBwbGllZFRvVGFibGUuZW1pdCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKXtcclxuICAgICAgdGhpcy5maWx0ZXJBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5pc1NvcnRDaGFuZ2VkKXtcclxuICAgICAgdGhpcy5zb3J0aW5nQXBwbGllZFRvVGFibGUuZW1pdCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseVNvcnRpbmcoa2V5OiBzdHJpbmcpe1xyXG4gICAgaWYodGhpcy50ZW1wU29ydE9yZGVyID09IFwiQVNDXCIpe1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IGNsb25lRGVlcCh0aGlzLmFubmFTb3J0U2VydmljZS5zb3J0RGF0YUZvckNvbXBvbmVudE90aGVyVGhhbkx1ckFuZENzclBhZ2UodHJ1ZSx0aGlzLnRhYmxlRGF0YSxrZXkpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy50ZW1wU29ydE9yZGVyID09IFwiREVTQ1wiKXtcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IGNsb25lRGVlcCh0aGlzLmFubmFTb3J0U2VydmljZS5zb3J0RGF0YUZvckNvbXBvbmVudE90aGVyVGhhbkx1ckFuZENzclBhZ2UoZmFsc2UsdGhpcy50YWJsZURhdGEsa2V5KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMudGVtcFNvcnRPcmRlciA9PSBcIkRFRkFVTFRcIil7XHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSBjbG9uZURlZXAodGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV2ZXJ0KCkge1xyXG4gICAgdGhpcy50ZW1wVG9vbHRpcERhdGEgPSBjbG9uZURlZXAodGhpcy50b29sVGlwZGF0YSk7XHJcbiAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBNYXAuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbywgdGhpcy50ZW1wVG9vbHRpcERhdGEpO1xyXG4gICAgdGhpcy50b29sVGlwZGF0YSA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBjbG9zZUNoZWNrYm94RmlsdGVyKCkge1xyXG4gICAgaWYgKHRoaXMudG9vbFRpcGRhdGEpIHtcclxuICAgICAgdGhpcy5yZXZlcnQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcbiAgfVxyXG5cclxuICBhcHBseVNsaWRlckZpbHRlcigpIHtcclxuXHJcbiAgICB0aGlzLmFwcGx5U2xpZGVyRmlsdGVyT25EYXRhKCk7XHJcbiAgICB0aGlzLmFwcGx5U29ydGluZ09uRmlsdGVyZWREYXRhKCk7XHJcbiAgICB0aGlzLmVtaXREYXRhKCk7XHJcbiAgICB0aGlzLnNldEluaXRpYWxSb3dzRm9yVGFibGUoKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZkFsbFRoZUtleXModGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcbiAgfVxyXG5cclxuICBhcHBseVNsaWRlckZpbHRlck9uRGF0YSgpe1xyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ICYmIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKXtcclxuICAgICAgbGV0IGN1cnJlbnRTbGlkZXJEYXRhOiB7bWluOmFueSwgbWF4OiBhbnl9ID0ge21pbjogbnVsbCAsIG1heDogbnVsbH07XHJcblxyXG4gICAgICAvLyBpZih0aGlzLmlzTWluVGV4dEJveEVtcHR5KXtcclxuICAgICAgLy8gICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1pbiA9IHRoaXMub3B0aW9ucy5mbG9vcjtcclxuICAgICAgLy8gICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1heCA9IHRoaXMuc2xpZGVyTWF4VmFsdWU7XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gZWxzZSBpZih0aGlzLmlzTWF4VGV4dEJveEVtcHR5KXtcclxuICAgICAgLy8gICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1heCA9IHRoaXMub3B0aW9ucy5jZWlsO1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWluID0gdGhpcy5zbGlkZXJNaW5WYWx1ZTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBlbHNle1xyXG4gICAgICAgICAgY3VycmVudFNsaWRlckRhdGEubWF4ID0gdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWU7XHJcbiAgICAgICAgICBjdXJyZW50U2xpZGVyRGF0YS5taW4gPSB0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZTtcclxuICAgICAgLy8gfVxyXG5cclxuICAgICAgaWYoY3VycmVudFNsaWRlckRhdGEubWluID09IHRoaXMub3B0aW9ucy5mbG9vciAmJiBjdXJyZW50U2xpZGVyRGF0YS5tYXggPT0gdGhpcy5vcHRpb25zLmNlaWwgJiYgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykgKXtcclxuICAgICAgICAgIGN1cnJlbnRTbGlkZXJEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVPcmRlckFwcGxpZWRGaWx0ZXJzU3RhdGUodGhpcy5jbG9uZWRUYWJsZURhdGEsY3VycmVudFNsaWRlckRhdGEpO1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLGN1cnJlbnRTbGlkZXJEYXRhKTtcclxuICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmZpbHRlckRhdGEodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwiXCIpO1xyXG4gICAgICB0aGlzLmFubmFTb3J0U2VydmljZS5ub1NvcnRpbmdBcHBsaWVkRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUVuYWJsZUVhY2hDb2x1bW5Ub29sdGlwSWNvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuY2VsSW5EYXRlRmlsdGVyKCkge1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVNvcnRNYXAoKXtcclxuICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiB0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUuZW50cmllcygpKSB7XHJcbiAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5zZXQoa2V5LCBcIkRFRkFVTFRcIik7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbywgdGhpcy50ZW1wU29ydE9yZGVyKTtcclxuICAgIHRoaXMuYXBwbHlTb3J0aW5nKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgfVxyXG5cclxuICBhcHBseURhdGVGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmFwcGx5RGF0ZUZpbHRlck9uRGF0YSgpO1xyXG4gICAgdGhpcy5hcHBseVNvcnRpbmdPbkZpbHRlcmVkRGF0YSgpO1xyXG4gICAgdGhpcy5lbWl0RGF0YSgpO1xyXG4gICAgdGhpcy5zZXRJbml0aWFsUm93c0ZvclRhYmxlKCk7XHJcbiAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnVwZGF0ZVN0YXRlT2ZBbGxUaGVLZXlzKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSk7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICBhcHBseURhdGVGaWx0ZXJPbkRhdGEoKXtcclxuICAgIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCAmJiB0aGlzLmlzRmlsdGVyQ2hhbmdlZCl7XHJcbiAgICAgIGxldCBjdXJyZW50U2VsZWN0ZWREYXRlID0gdGhpcy5jYWxlbmRhclNlbGVjdGlvbjtcclxuICAgICAgXHJcbiAgICAgIGxldCBmcm9tRGF0ZSA9IHt5ZWFyOiBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlLnllYXIsbW9udGg6IGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUubW9udGgsZGF5OiBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlLmRheX07XHJcbiAgICAgIGxldCB0b0RhdGUgPSB7eWVhcjogY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUueWVhcixtb250aDogY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUubW9udGgsZGF5OiBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZS5kYXl9O1xyXG4gICAgICAgICAgXHJcbiAgICAgIGlmKGlzRXF1YWwodGhpcy5jYWxlbmRhck1pbkVuYWJsZWREYXRlLGZyb21EYXRlKSAmJiBpc0VxdWFsKHRoaXMuY2FsZW5kYXJNYXhFbmFibGVkRGF0ZSx0b0RhdGUpICYmIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgICAgY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZSA9IGRheWpzKHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0TmdiRGF0ZVRvTW9tZW50KGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUpKTtcclxuICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlID0gZGF5anModGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnROZ2JEYXRlVG9Nb21lbnQoY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUpKTtcclxuICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZU9yZGVyQXBwbGllZEZpbHRlcnNTdGF0ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSxjdXJyZW50U2VsZWN0ZWREYXRlKTtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyxjdXJyZW50U2VsZWN0ZWREYXRlKTtcclxuICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmZpbHRlckRhdGEodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwiXCIpO1xyXG4gICAgICB0aGlzLmFubmFTb3J0U2VydmljZS5ub1NvcnRpbmdBcHBsaWVkRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUVuYWJsZUVhY2hDb2x1bW5Ub29sdGlwSWNvbigpO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFwcGx5V2Vla0ZpbHRlcihldmVudDogYW55KSB7XHJcblxyXG4gIH1cclxuXHJcbiAgaW5jcmVtZW50SG91cihhcnI6IGFueVtdKSB7XHJcbiAgICBpZiAoYXJyWzBdID09IFwiXCIpIHtcclxuICAgICAgYXJyWzBdID0gMTtcclxuICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoYXJyWzBdKSA8IDEyKSB7XHJcbiAgICAgIGFyclswXSA9IHBhcnNlSW50KGFyclswXSkgKyAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYXJyWzBdID0gMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlY3JlbWVudEhvdXIoYXJyOiBhbnlbXSkge1xyXG4gICAgaWYgKGFyclswXSA9PSBcIlwiKSB7XHJcbiAgICAgIGFyclswXSA9IDEyO1xyXG4gICAgfSBlbHNlIGlmIChwYXJzZUludChhcnJbMF0pID4gMSkge1xyXG4gICAgICBhcnJbMF0gPSBwYXJzZUludChhcnJbMF0pIC0gMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFyclswXSA9IDEyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5jcmVtZW50TWludXRlKGFycjogYW55W10pIHtcclxuICAvLyBpbmNyZW1lbnQgdG8gbmVhcmVzdCBwcm9wZXIgaW50ZXJ2YWwoMTUsMzAsNDUpXHJcbiAgbGV0IG1pbiA9IHBhcnNlSW50KGFyclsxXSlcclxuICAgIGlmIChtaW4gPD0gMTQpIHtcclxuICAgICAgYXJyWzFdID0gXCIxNVwiO1xyXG4gICAgfSBlbHNlIGlmIChtaW4gPj0gMTUgJiYgbWluIDw9IDI5KSB7XHJcbiAgICAgIGFyclsxXSA9IFwiMzBcIjtcclxuICAgIH0gZWxzZSBpZiAobWluID49IDMwICYmIG1pbiA8PSA0NCkge1xyXG4gICAgICBhcnJbMV0gPSBcIjQ1XCI7XHJcbiAgICB9IGVsc2UgaWYgKG1pbiA+PSA0NSkge1xyXG4gICAgICBhcnJbMV0gPSBcIjAwXCI7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYXJyWzFdID0gcGFyc2VJbnQoYXJyWzFdKSArIDE1O1xyXG4gICAgLy8gaWYgKHBhcnNlSW50KGFyclsxXSkgPT0gNjApIHtcclxuICAgIC8vICAgICBhcnJbMV0gPSBcIjAwXCI7XHJcbiAgICAvLyB9IGVsc2UgaWYgKHBhcnNlSW50KGFyclsxXSkgPT0gMCkge1xyXG4gICAgLy8gICAgIGFyclsxXSA9IFwiMDBcIjtcclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2UgaWYocGFyc2VJbnQoYXJyWzFdKSA+IDYwKXtcclxuICAgIC8vICAgICBsZXQgcmVzID0gcGFyc2VJbnQoYXJyWzFdKSAtIDYwO1xyXG4gICAgLy8gICAgIGFyclsxXSA9IHJlcyA8IDEwID8gYDAke3Jlc31gIDogcmVzLnRvU3RyaW5nKCk7ICAgIFxyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgZGVjcmVtZW50TWludXRlKGFycjogYW55KSB7XHJcbiAgICBsZXQgbWluID0gcGFyc2VJbnQoYXJyWzFdKTtcclxuICAgIGlmIChtaW4gPiAwICYmIG1pbiA8PSAxNSkge1xyXG4gICAgICBhcnJbMV0gPSBcIjAwXCI7XHJcbiAgICB9IGVsc2UgaWYgKG1pbiA+PSAxNiAmJiBtaW4gPD0gMzApIHtcclxuICAgICAgYXJyWzFdID0gXCIxNVwiO1xyXG4gICAgfSBlbHNlIGlmIChtaW4gPj0gMzEgJiYgbWluIDw9IDQ1KSB7XHJcbiAgICAgIGFyclsxXSA9IFwiMzBcIjtcclxuICAgIH0gZWxzZSBpZiAobWluID4gNDUgfHwgbWluID09IDApIHtcclxuICAgICAgYXJyWzFdID0gXCI0NVwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGFyclsxXSA9IHBhcnNlSW50KGFyclsxXSkgLSAxNTtcclxuICAgIC8vIGlmIChwYXJzZUludChhcnJbMV0pIDwgMCkge1xyXG4gICAgLy8gICAgIGxldCByZXMgPSA2MCArIHBhcnNlSW50KGFyclsxXSk7XHJcbiAgICAvLyAgICAgYXJyWzFdID0gcmVzO1xyXG4gICAgLy8gfSBlbHNlIGlmIChwYXJzZUludChhcnJbMV0pID09IDApIHtcclxuICAgIC8vICAgICBhcnJbMV0gPSBcIjAwXCI7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlIGlmKGFyclsxXSA8IDEwKXtcclxuICAgIC8vICAgICBhcnJbMV09IGAwJHthcnJbMV19YDtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVN0YXJ0VGltZUhvdXIoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICBpZiAoaW5jcmVtZW50KSB7XHJcbiAgICAgIHRoaXMuaW5jcmVtZW50SG91cih0aGlzLnNlbGVjdGVkRnJvbVRpbWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kZWNyZW1lbnRIb3VyKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXJ0VGltZUhvdXJDaGFuZ2UodGhpcy5zZWxlY3RlZEZyb21UaW1lWzBdLnRvU3RyaW5nKCkpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlRW5kVGltZUhvdXIoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICBpZiAoaW5jcmVtZW50KSB7XHJcbiAgICAgIHRoaXMuaW5jcmVtZW50SG91cih0aGlzLnNlbGVjdGVkVG9UaW1lKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGVjcmVtZW50SG91cih0aGlzLnNlbGVjdGVkVG9UaW1lKTtcclxuICAgIH1cclxuICAgIHRoaXMuZW5kVGltZUhvdXJDaGFuZ2UodGhpcy5zZWxlY3RlZFRvVGltZVswXS50b1N0cmluZygpKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZUVuZFRpbWVNaW51dGUoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICBpZiAoaW5jcmVtZW50KSB7XHJcbiAgICAgIHRoaXMuaW5jcmVtZW50TWludXRlKHRoaXMuc2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kZWNyZW1lbnRNaW51dGUodGhpcy5zZWxlY3RlZFRvVGltZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmVuZFRpbWVNaW5DaGFuZ2UodGhpcy5zZWxlY3RlZFRvVGltZVsxXS50b1N0cmluZygpKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVN0YXJ0VGltZU1pbnV0ZShpbmNyZW1lbnQ6IGJvb2xlYW4pIHtcclxuICAgIGlmIChpbmNyZW1lbnQpIHtcclxuICAgICAgdGhpcy5pbmNyZW1lbnRNaW51dGUodGhpcy5zZWxlY3RlZEZyb21UaW1lKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGVjcmVtZW50TWludXRlKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXJ0VGltZU1pbkNoYW5nZSh0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMV0udG9TdHJpbmcoKSk7XHJcbiAgfVxyXG5cclxuICBhcHBseVRpbWVGaWx0ZXJzKCkge1xyXG5cclxuICAgIHRoaXMuYXBwbHlUaW1lRmlsdGVyT25EYXRhKCk7XHJcbiAgICB0aGlzLmFwcGx5U29ydGluZ09uRmlsdGVyZWREYXRhKCk7XHJcbiAgICB0aGlzLmVtaXREYXRhKCk7XHJcbiAgICB0aGlzLnNldEluaXRpYWxSb3dzRm9yVGFibGUoKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZkFsbFRoZUtleXModGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgYXBwbHlUaW1lRmlsdGVyT25EYXRhKCl7XHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICBsZXQgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlcjoge2Zyb21UaW1lOiBzdHJpbmcsIHRvVGltZTpzdHJpbmcsIGluY2x1ZGVNdWx0aTogYm9vbGVhbiwgaW5jbHVkZVplcm86IGJvb2xlYW4sIGluY2x1ZGVUaW1lUmFuZ2U6IGJvb2xlYW59ID0ge1xyXG4gICAgICAgIGZyb21UaW1lOiBudWxsLFxyXG4gICAgICAgIHRvVGltZTogbnVsbCxcclxuICAgICAgICBpbmNsdWRlTXVsdGk6IGZhbHNlLFxyXG4gICAgICAgIGluY2x1ZGVaZXJvOiBmYWxzZSxcclxuICAgICAgICBpbmNsdWRlVGltZVJhbmdlOiBmYWxzZSxcclxuICAgICAgfTtcclxuICBcclxuICAgICAgbGV0IGZyb21UaW1lMjRIckZvcm1hdEFyciA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG90d2VudHlGb3VySHJzRm9ybWF0KFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVswXSArIFwiOlwiICsgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzFdICsgXCIgXCIgKyB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMl0sXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgZnJvbVRpbWUyNEhyRm9ybWF0ID0gZnJvbVRpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyBmcm9tVGltZTI0SHJGb3JtYXRBcnJbMV0gKyBcIjowMFwiO1xyXG4gICAgICBcclxuICAgICAgbGV0IHRvVGltZTI0SHJGb3JtYXRBcnIgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lWzBdICsgXCI6XCIgKyB0aGlzLnNlbGVjdGVkVG9UaW1lWzFdICsgXCIgXCIgKyB0aGlzLnNlbGVjdGVkVG9UaW1lWzJdLFxyXG4gICAgICAgIHRydWVcclxuICAgICAgKTtcclxuICAgICAgbGV0IHRvVGltZTI0SHJGb3JtYXQgPSB0b1RpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyB0b1RpbWUyNEhyRm9ybWF0QXJyWzFdICsgXCI6NTlcIjtcclxuICBcclxuICAgICAgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlciA9IHsgZnJvbVRpbWU6IGZyb21UaW1lMjRIckZvcm1hdCwgdG9UaW1lOiB0b1RpbWUyNEhyRm9ybWF0LCBpbmNsdWRlTXVsdGk6IHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkLCBcclxuICAgICAgaW5jbHVkZVplcm86IHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQsIGluY2x1ZGVUaW1lUmFuZ2U6IHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkfTtcclxuICBcclxuICAgICAgbGV0IGlzRmlsdGVyZWQgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJlT3JkZXJBcHBsaWVkRmlsdGVyc1N0YXRlKHRoaXMuY2xvbmVkVGFibGVEYXRhLGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIpO1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIpO1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIik7XHJcbiAgICAgIFxyXG4gICAgICBpZighaXNGaWx0ZXJlZCl7XHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZGVsZXRlKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEgPSBjbG9uZURlZXAodGhpcy50YWJsZURhdGEpO1xyXG4gICAgICB0aGlzLmRpc2FibGVFbmFibGVFYWNoQ29sdW1uVG9vbHRpcEljb24oKTsgICAgICAgICAgICBcclxuIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VUaW1lRmlsdGVyKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkU2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkU2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKSB7XHJcblxyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ICYmIHRoaXMuc2hvd1NvcnRDb21wb25lbnQpe1xyXG4gICAgICBsZXQgaXNGaWx0ZXJDaGFuZ2VkID0gdGhpcy5jaGVja0lmVGltZVRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgIGxldCBpc1NvcnRDaGFuZ2VkID0gdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuID0gIXRoaXMudmFsaWRhdGVUaW1lRmlsdGVySW5wdXQoKSB8fCAoIWlzU29ydENoYW5nZWQgJiYgIWlzRmlsdGVyQ2hhbmdlZCApO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQpe1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0biA9ICF0aGlzLnZhbGlkYXRlVGltZUZpbHRlcklucHV0KCkgfHwgIXRoaXMuY2hlY2tJZlRpbWVUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gPSAhdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVRpbWVGaWx0ZXJJbnB1dCgpe1xyXG4gICAgaWYodGhpcy5zdGFydFRpbWVIb3VyRXJyIHx8IHRoaXMuc3RhcnRUaW1lTWluRXJyIHx8IHRoaXMuZW5kVGltZUhvdXJFcnIgfHwgdGhpcy5lbmRUaW1lTWluRXJyKXtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCh0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCAmJiAhdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQpICYmIFxyXG4gICAgICAgICAgKHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggJiYgIXRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQgKSYmIFxyXG4gICAgICAgICAgKHRoaXMuc2hvd0VudGVyVGltZUNoZWNrYm94ICYmICF0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHRpbWVGb3JtYXQgPSBcIkhIOm1tOnNzXCI7XHJcblxyXG4gICAgbGV0IHN0YXJ0VGltZTI0SHJGb3JtYXRBcnIgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMF0gKyBcIjpcIiArIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVsxXSArIFwiIFwiICsgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzJdLFxyXG4gICAgICAgIHRydWVcclxuICAgICk7XHJcbiAgICBsZXQgc3RhcnRUaW1lMjRIckZvcm1hdCA9IHN0YXJ0VGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIHN0YXJ0VGltZTI0SHJGb3JtYXRBcnJbMV0gKyBcIjowMFwiO1xyXG4gICAgbGV0IGVuZFRpbWUyNEhyRm9ybWF0QXJyID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb3R3ZW50eUZvdXJIcnNGb3JtYXQoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZVswXSArIFwiOlwiICsgdGhpcy5zZWxlY3RlZFRvVGltZVsxXSArIFwiIFwiICsgdGhpcy5zZWxlY3RlZFRvVGltZVsyXSxcclxuICAgICAgICB0cnVlXHJcbiAgICApO1xyXG4gICAgbGV0IGVuZFRpbWUyNEhyRm9ybWF0ID0gZW5kVGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIGVuZFRpbWUyNEhyRm9ybWF0QXJyWzFdICsgXCI6MDBcIjtcclxuXHJcbiAgICByZXR1cm4gIShkYXlqcyhzdGFydFRpbWUyNEhyRm9ybWF0LCB0aW1lRm9ybWF0KS5pc0FmdGVyKGRheWpzKGVuZFRpbWUyNEhyRm9ybWF0LCB0aW1lRm9ybWF0KSkpOyAgICAgICAgXHJcbiAgfVxyXG5cclxuICBzb3J0ZWREYXRhKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudC50eXBlID09IFwibm9uZVwiKSB7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5maWx0ZXJEYXRhKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcIlwiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gZXZlbnQuZGF0YTtcclxuICAgIH1cclxuICAgIHRoaXMuc29ydGluZ0FwcGxpZWRUb1RhYmxlLmVtaXQodGhpcy50YWJsZURhdGEpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJZlNvcnRpbmdJc0FwcGxpZWQoKSB7XHJcbiAgICBmb3IobGV0IFtrZXksdmFsdWVdIG9mIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5lbnRyaWVzKCkpe1xyXG4gICAgICBpZih2YWx1ZSA9PSBcIkFTQ1wiKXtcclxuICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLnNvcnREYXRhRm9yQ29tcG9uZW50T3RoZXJUaGFuTHVyQW5kQ3NyUGFnZSh0cnVlLHRoaXMudGFibGVEYXRhLGtleSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodmFsdWUgPT0gXCJERVNDXCIpe1xyXG4gICAgICAgICAgdGhpcy50YWJsZURhdGEgPSBjbG9uZURlZXAodGhpcy5hbm5hU29ydFNlcnZpY2Uuc29ydERhdGFGb3JDb21wb25lbnRPdGhlclRoYW5MdXJBbmRDc3JQYWdlKGZhbHNlLHRoaXMudGFibGVEYXRhLGtleSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZGlzYWJsZUVuYWJsZUVhY2hDb2x1bW5Ub29sdGlwSWNvbigpIHtcclxuICAgIHRoaXMudGFibGVIZWFkZXJzLmZvckVhY2goaGVhZGVyID0+IHtcclxuICAgICAgXHJcbiAgICAgIGhlYWRlci5oZWFkZXJJbmZvLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uc2hvd1Rvb2x0aXBJY29uKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGxldCB2YWx1ZXMgPSBbXTtcclxuICAgICAgICAgIGl0ZW0uZGlzYWJsZVRvb2x0aXBJY29uID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICBpdGVtLmZpbHRlclNvcnRPYmplY3RLZXlzLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCBsYXRlc3RGaWx0ZXJzID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5hcHBsaWVkRmlsdGVyc0FycmF5O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYobGF0ZXN0RmlsdGVycy5sZW5ndGggPiAwICYmIGl0ZW0uZGlzYWJsZVRvb2x0aXBJY29uICYmIGxhdGVzdEZpbHRlcnNbbGF0ZXN0RmlsdGVycy5sZW5ndGggLSAxXSA9PSBrZXkpe1xyXG4gICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlVG9vbHRpcEljb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgfSBcclxuXHJcbiAgICAgICAgICAgIGlmKGl0ZW0uZGlzYWJsZVRvb2x0aXBJY29uKXtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZihrZXkgPT0gXCJwZXJpb2RcIil7XHJcbiAgICAgICAgICAgICAgICBsZXQgdW5pcVN0YXJ0RGF0ZSA9IHVuaXEodGhpcy50YWJsZURhdGEubWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVbXCJzdGFydERhdGVcIl0pKTtcclxuICAgICAgICAgICAgICAgIGxldCB1bmlxRW5kRGF0ZSA9IHVuaXEodGhpcy50YWJsZURhdGEubWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVbXCJlbmREYXRlXCJdKSk7XHJcbiAgXHJcbiAgICAgICAgICAgICAgICBpdGVtLmRpc2FibGVUb29sdGlwSWNvbiA9ICh1bmlxU3RhcnREYXRlLmxlbmd0aCA+IDEgfHwgdW5pcUVuZERhdGUubGVuZ3RoID4gMSkgPyBmYWxzZSA6IHRydWU7IFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgdmFsdWVzID0gdGhpcy50YWJsZURhdGEubWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVba2V5XSk7XHJcbiAgICAgICAgICAgICAgICBpZiggKGl0ZW0uZmlsdGVyID09IFwiQ0hFQ0tCT1hcIiAmJiB1bmlxKHZhbHVlcykuZmlsdGVyKG4gPT4gbiE9bnVsbCkubGVuZ3RoID4gMSkgfHwgKGl0ZW0uZmlsdGVyICE9IFwiQ0hFQ0tCT1hcIiAmJiB1bmlxKHZhbHVlcykuZmlsdGVyKG4gPT4gbiE9bnVsbCAmJiBuIT1cIi1cIikubGVuZ3RoID4gMSkpe1xyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlVG9vbHRpcEljb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgXHJcbiAgfVxyXG5cclxuICBzZXRNYXJnaW5MZWZ0Rm9yRmlsdGVySWNvbigpe1xyXG4gICAgbGV0IGVsZW1lbnRBcnIgPSB0aGlzLnZpZXdDaGlsZFRhYmxlSGVhZGVycy50b0FycmF5KCk7XHJcbiAgICBlbGVtZW50QXJyLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgbGV0IGNoaWxkRGl2RWxlbWVudHMgPSBpdGVtLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW47XHJcbiAgICAgIFxyXG4gICAgICBpZiAoY2hpbGREaXZFbGVtZW50cy5sZW5ndGggPT0gMikge1xyXG4gICAgICAgIGxldCBmaXJzdFBhcmFncmFwaFdpZHRoID0gY2hpbGREaXZFbGVtZW50c1swXS5jaGlsZHJlblswXTtcclxuICAgICAgICBsZXQgc2Vjb25kUGFyYWdyYXBoV2lkdGggPSBjaGlsZERpdkVsZW1lbnRzWzFdLmNoaWxkcmVuWzBdO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmKGZpcnN0UGFyYWdyYXBoV2lkdGgub2Zmc2V0V2lkdGggPiBzZWNvbmRQYXJhZ3JhcGhXaWR0aC5vZmZzZXRXaWR0aCl7XHJcbiAgICAgICAgICBsZXQgZGlmZiA9IGZpcnN0UGFyYWdyYXBoV2lkdGgub2Zmc2V0V2lkdGggLSBzZWNvbmRQYXJhZ3JhcGhXaWR0aC5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgIGlmKGNoaWxkRGl2RWxlbWVudHNbMF0uY2hpbGRyZW4ubGVuZ3RoID09IDIpe1xyXG4gICAgICAgICAgICBjaGlsZERpdkVsZW1lbnRzWzBdLmNoaWxkcmVuWzFdLnN0eWxlLm1hcmdpbkxlZnQgPSA0ICsgJ3B4JztcclxuICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgIGlmKGNoaWxkRGl2RWxlbWVudHNbMV0uY2hpbGRyZW4ubGVuZ3RoID09IDIpe1xyXG5cclxuICAgICAgICAgICAgY2hpbGREaXZFbGVtZW50c1sxXS5jaGlsZHJlblsxXS5zdHlsZS5tYXJnaW5MZWZ0ID0gZGlmZiArIDQgKyAncHgnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgbGV0IGRpZmYgPSBzZWNvbmRQYXJhZ3JhcGhXaWR0aC5vZmZzZXRXaWR0aCAtIGZpcnN0UGFyYWdyYXBoV2lkdGgub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgICBpZihjaGlsZERpdkVsZW1lbnRzWzBdLmNoaWxkcmVuLmxlbmd0aCA9PSAyKXtcclxuICAgICAgICAgICAgY2hpbGREaXZFbGVtZW50c1swXS5jaGlsZHJlblsxXS5zdHlsZS5tYXJnaW5MZWZ0ID0gZGlmZiArIDQgKyAncHgnO1xyXG4gICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgaWYoY2hpbGREaXZFbGVtZW50c1sxXS5jaGlsZHJlbi5sZW5ndGggPT0gMil7XHJcblxyXG4gICAgICAgICAgICBjaGlsZERpdkVsZW1lbnRzWzFdLmNoaWxkcmVuWzFdLnN0eWxlLm1hcmdpbkxlZnQgPSA0ICsgJ3B4JztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGF0YVJvd0NsaWNrZWQocm93RGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnJvd0NsaWNrZWQuZW1pdChyb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIHJhZGlvQnV0dG9uQ2xpY2tlZChkYXRhOiBhbnksIGFjdGlvbjogc3RyaW5nLCBpc0Rpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICBpZiAoIWlzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5yYWRpb0J1dHRvblNlbGVjdGVkLmVtaXQoeyBkYXRhLCBhY3Rpb24gfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBiaW5kVGhlVmFsdWVUb1NlbGxlckdyb3VwVG9vbHRpcChzZWxsZXJHcm91cEhpZXJhcmNoeTogUmF0aW5nU2VsbGVyR3JvdXBIaWVyYXJjaHlbXSwgdG9vbHRpcDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5oaWVyYXJjaHlUb29sdGlwICYmIHRoaXMuaGllcmFyY2h5VG9vbHRpcC5vcGVuKSB7XHJcbiAgICAgIHRoaXMuaGllcmFyY2h5VG9vbHRpcC5jbG9zZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxsZXJHcm91cEhpZXJhcmNoeSA9IHNlbGxlckdyb3VwSGllcmFyY2h5O1xyXG4gICAgdGhpcy5oaWVyYXJjaHlUb29sdGlwID0gdG9vbHRpcDtcclxuICAgIHRoaXMuaGllcmFyY2h5VG9vbHRpcC5vcGVuKCk7XHJcbiAgfVxyXG5cclxuICBpY29uQ2xpY2tlZChyb3dEYXRhOiBhbnksaWNvbkNsYXNzOiBzdHJpbmcpe1xyXG4gICAgXHJcbiAgICBpZihcIm9yZGVySWRcIiBpbiByb3dEYXRhICYmIGljb25DbGFzcy5pbmNsdWRlcyhcIm1kaS1zdGFyXCIpICl7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTdGFycmVkT3JkZXJJZCA9IHJvd0RhdGEub3JkZXJJZDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmd0SWNvbkNsaWNrZWQuZW1pdCh7ZGF0YTogcm93RGF0YSxpY29uQ2xhc3M6IGljb25DbGFzc30pO1xyXG4gIH1cclxuXHJcbiAgc3ZnSWNvbkNsaWNrZWQoZGF0YTogR3RDb2x1bW5JY29uRW1pdHRlZERhdGEpe1xyXG4gICAgdGhpcy5ndFNWR0ljb25DbGlja2VkLmVtaXQoZGF0YSk7XHJcbiAgfVxyXG5cclxuICB0ZXh0QWN0aW9uQ2xpY2tlZChyb3dEYXRhOiBhbnksaWQ6IG51bWJlcil7XHJcbiAgICB0aGlzLmd0VGV4dEFjdGlvbkNsaWNrZWQuZW1pdCh7ZGF0YTpyb3dEYXRhLGlkfSk7XHJcbiAgfVxyXG5cclxuICB2aWV3RGV0YWlsc0NsaWNrZWQocm93RGF0YTogYW55KXtcclxuICAgIHRoaXMuZ3RWaWV3RGV0YWlsQ2xpY2tlZC5lbWl0KHtkYXRhOnJvd0RhdGF9KTtcclxuICB9XHJcblxyXG4gIHNldENvbHVtblNvcnRTdGF0ZU1hcCgpe1xyXG4gICAgdGhpcy50YWJsZUhlYWRlcnMuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICAgIGNvbHVtbi5oZWFkZXJJbmZvLmZvckVhY2goIChoZWFkZXIpID0+IHtcclxuICAgICAgICAgICAgaWYoaGVhZGVyLnNob3dUb29sdGlwSWNvbiAmJiBoZWFkZXIuaXNTb3J0UmVxdWlyZWQpe1xyXG4gICAgICAgICAgICAgICAgaGVhZGVyLmlzU29ydFJlcXVpcmVkLmZvckVhY2goIChpdGVtLGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmKGl0ZW0pe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5zZXQoaGVhZGVyLmZpbHRlclNvcnRPYmplY3RLZXlzW2luZGV4XSwgXCJERUZBVUxUXCIpOyAgXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdG9yZVNvcnRUeXBlSW5UZW1wVmFyaWFibGUoZXZlbnQ6IFNvcnRUeXBlKXtcclxuICAgIHRoaXMudGVtcFNvcnRPcmRlciA9IGV2ZW50O1xyXG4gICAgdGhpcy5kaXNhYmxlQXBwbHlCdXR0b25PZlNlbGVjdGVkRmlsdGVyKCk7XHJcbiAgfVxyXG5cclxuICB1bkNoZWNrQWxsQ2hlY2tib3goKXtcclxuICAgICAgdGhpcy50b29sdGlwT3B0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMuZmluZEluZGV4KG9wdCA9PiBvcHQuaWQgPT0gaXRlbS5pZCk7XHJcbiAgICAgICAgdGhpcy5jbG9uZWRUb29sdGlwT3B0aW9uc1tpbmRleF0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gMDtcclxuICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RBbGxDaGVja2JveCgpe1xyXG4gICAgICB0aGlzLnRvb2x0aXBPcHRpb25zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zLmZpbmRJbmRleChvcHQgPT4gb3B0LmlkID09IGl0ZW0uaWQpO1xyXG4gICAgICAgIHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnNbaW5kZXhdLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gdGhpcy50b29sdGlwT3B0aW9ucy5sZW5ndGg7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdEFsbCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94RmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaEZvclRoZUl0ZW0oc3RyOiBzdHJpbmcpe1xyXG4gICAgICBpZihzdHIpe1xyXG4gICAgICAgICAgdGhpcy50b29sdGlwT3B0aW9ucyA9IGNsb25lRGVlcCh0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0ubGFiZWwudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHN0ci50b0xvd2VyQ2FzZSgpKSkpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLnRvb2x0aXBPcHRpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQubGFiZWwgPSB0aGlzLmJvbGRTdHJpbmcoZWxlbWVudC5sYWJlbCxzdHIpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmKHRoaXMudG9vbHRpcE9wdGlvbnMubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICAgbGV0IHVuc2VsZWN0ZWRJdGVtcyA9IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5pc1NlbGVjdGVkKTtcclxuICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtcyA9IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlzU2VsZWN0ZWQpOyAgXHJcbiAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gdW5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgICAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gKHNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDAgfHwgIXRoaXMuY2hlY2tJZkNoZWNrYm94VG9vbHRpcElzRmlsdGVyZWQoKSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID0gMDtcclxuICAgICAgICAgICAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmRpc2FibGVDbGVhckFsbCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgICAgdGhpcy50b29sdGlwT3B0aW9ucyA9IGNsb25lRGVlcCh0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zKTtcclxuICAgICAgICAgIGxldCB1bnNlbGVjdGVkSXRlbXMgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+ICFpdGVtLmlzU2VsZWN0ZWQpO1xyXG4gICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdEFsbCA9IHVuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94RmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgYm9sZFN0cmluZyhzdHI6IHN0cmluZywgZmluZDogc3RyaW5nKSB7XHJcbiAgICBsZXQgaW5kZXhlcyA9IHRoaXMuZ2V0SW5kaWNlc09mKGZpbmQsIHN0ciwgZmFsc2UpO1xyXG4gICAgXHJcbiAgICBpbmRleGVzLmZvckVhY2goKGl0ZW0saW5kZXgpID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRJbmRleCA9IGl0ZW0gKyAoaW5kZXggKiA3KTsgLy9NdWx0aXBseWluZyBieSA3IGFzIHRoZXJlIGFyZSA3Y2hhcjogPGI+PC9iPlxyXG4gICAgICAgIGxldCBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBmaW5kLmxlbmd0aDtcclxuICAgICAgICBsZXQgc3RyVG9CZVJlcGxhY2VkID0gc3RyLnN1YnN0cmluZyhzdGFydEluZGV4LCBlbmRJbmRleCk7XHJcbiAgICAgICAgc3RyID0gc3RyLnJlcGxhY2Uoc3RyVG9CZVJlcGxhY2VkLCBcIjxiPlwiICsgc3RyVG9CZVJlcGxhY2VkICsgXCI8L2I+XCIpOyBcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHN0cjtcclxufVxyXG5cclxuZ2V0SW5kaWNlc09mKHNlYXJjaFN0cjogc3RyaW5nLCBzdHI6IHN0cmluZywgY2FzZVNlbnNpdGl2ZTogYm9vbGVhbikge1xyXG4gICAgdmFyIHNlYXJjaFN0ckxlbiA9IHNlYXJjaFN0ci5sZW5ndGg7XHJcbiAgICBpZiAoc2VhcmNoU3RyTGVuID09IDApIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICB2YXIgc3RhcnRJbmRleCA9IDAsIGluZGV4LCBpbmRpY2VzID0gW107XHJcbiAgICBpZiAoIWNhc2VTZW5zaXRpdmUpIHtcclxuICAgICAgICBzdHIgPSBzdHIudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBzZWFyY2hTdHIgPSBzZWFyY2hTdHIudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuICAgIHdoaWxlICgoaW5kZXggPSBzdHIuaW5kZXhPZihzZWFyY2hTdHIsIHN0YXJ0SW5kZXgpKSA+IC0xKSB7XHJcbiAgICAgICAgaW5kaWNlcy5wdXNoKGluZGV4KTtcclxuICAgICAgICBzdGFydEluZGV4ID0gaW5kZXggKyBzZWFyY2hTdHJMZW47XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaW5kaWNlcztcclxufVxyXG5cclxuXHJcbiAgcmVtb3ZlQm9sZEVsZW1lbnRGcm9tU3RyaW5nKG9yaWdpbmFsU3RyaW5nOiBzdHJpbmcpe1xyXG4gICAgICBsZXQgZmlyc3RSZWdFeHAgPSBuZXcgUmVnRXhwKCc8Yj4nLCdnJyk7XHJcbiAgICAgIGxldCBzZWNvbmRSZWdFeHAgPSBuZXcgUmVnRXhwKCc8L2I+JywnZycpO1xyXG5cclxuICAgICAgbGV0IHJldCA9IG9yaWdpbmFsU3RyaW5nLnJlcGxhY2UoZmlyc3RSZWdFeHAsJycpO1xyXG4gICAgICByZXR1cm4gcmV0LnJlcGxhY2Uoc2Vjb25kUmVnRXhwLCcnKTtcclxuICB9XHJcblxyXG4gIGNsZWFyU2VhcmNoZWRJdGVtKCl7XHJcbiAgICAgIHRoaXMuc2VhcmNoSXRlbSA9IFwiXCI7XHJcbiAgICAgIHRoaXMuc2VhcmNoRm9yVGhlSXRlbShcIlwiKTtcclxuICB9XHJcblxyXG4gIGNhbGVuZGFyRGF0ZUNoYW5nZWQoZXZlbnQ6IGFueSl7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VsZWN0aW9uID0gZXZlbnQ7XHJcbiAgICB0aGlzLmRpc2FibGVDYWxlbmRhckFwcGx5QnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlQ2FsZW5kYXJBcHBseUJ1dHRvbigpIHtcclxuXHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5zaG93U29ydENvbXBvbmVudCl7XHJcbiAgICAgIGxldCBpc0ZpbHRlckNoYW5nZWQgPSB0aGlzLmNoZWNrSWZEYXRlVG9vbHRpcElzRmlsdGVyZWQoKTtcclxuICAgICAgbGV0IGlzU29ydENoYW5nZWQgPSB0aGlzLmNoZWNrSWZTb3J0aW5nQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgXHJcbiAgICAgIHRoaXMuZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG4gPSAhKHRoaXMuY2FsZW5kYXJTZWxlY3Rpb24uZnJvbURhdGUgJiYgdGhpcy5jYWxlbmRhclNlbGVjdGlvbi50b0RhdGUpIHx8ICghaXNTb3J0Q2hhbmdlZCAmJiAhaXNGaWx0ZXJDaGFuZ2VkICk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCl7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlQ2FsZW5kYXJBcHBseUJ0biA9ICEodGhpcy5jYWxlbmRhclNlbGVjdGlvbi5mcm9tRGF0ZSAmJiB0aGlzLmNhbGVuZGFyU2VsZWN0aW9uLnRvRGF0ZSkgfHwgIXRoaXMuY2hlY2tJZkRhdGVUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICB0aGlzLmRpc2FibGVDYWxlbmRhckFwcGx5QnRuID0gIXRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgc2V0SW5pdGlhbFZhbHVlTWFwRm9yVGltZUZpbHRlcihrZXk6IHN0cmluZykge1xyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmNsb25lZFRhYmxlRGF0YS5maWx0ZXIoXHJcbiAgICAgICAgKG9iaikgPT4gIVtcIlwiLCBcIi1cIiwgbnVsbCwgXCIwXCIsIFwiPG11bHRpPlwiXS5pbmNsdWRlcyhvYmpba2V5XSkpO1xyXG5cclxuICAgIGxldCB0aW1lQXJyID0gbWFwKGRhdGEsIGtleSk7XHJcbiAgICB0aW1lQXJyLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLnNvcnRCeVRpbWVBc2NlbmRpbmcoYSwgYik7XHJcbiAgICB9KTtcclxuICAgIFxyXG4gICAgbGV0IG9iaiA9IHtcclxuICAgICAgICBmcm9tVGltZTogdGltZUFyclswXSxcclxuICAgICAgICB0b1RpbWU6IHRpbWVBcnJbdGltZUFyci5sZW5ndGggLSAxXSxcclxuICAgICAgICBpbmNsdWRlTXVsdGk6IGZhbHNlLFxyXG4gICAgICAgIGluY2x1ZGVaZXJvOiBmYWxzZSxcclxuICAgICAgICBpbmNsdWRlVGltZVJhbmdlOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PT0gXCJTUE9UREVUQUlMU1wiIHx8XHJcbiAgICAgICAgdGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09PSBcIkVYQ0xVREVJTlZFTlRPUllQT1BVUFwiIHx8XHJcbiAgICAgICAgdGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09PSBcIkFDVElWSVRZTE9HXCJcclxuICAgICkge1xyXG4gICAgICAgIGxldCBpbmNsdWRlTXVsdGkgPVxyXG4gICAgICAgICAgICB0aGlzLmNsb25lZFRhYmxlRGF0YS5maW5kSW5kZXgoKG9iaikgPT4gb2JqW2tleV0gPT0gXCI8bXVsdGk+XCIpICE9XHJcbiAgICAgICAgICAgIC0xO1xyXG4gICAgICAgIGxldCBpbmNsdWRlWmVybyA9XHJcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLmZpbmRJbmRleCgob2JqKSA9PiBvYmpba2V5XSA9PSBcIjBcIikgIT0gLTE7XHJcbiAgICAgICAgbGV0IGluY2x1ZGVUaW1lUmFuZ2UgPVxyXG4gICAgICAgICAgICB0aGlzLmNsb25lZFRhYmxlRGF0YS5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgICAgICAob2JqKSA9PiBvYmpba2V5XSAhPSBcIjBcIiAmJiBvYmpba2V5XSAhPSBcIjxtdWx0aT5cIlxyXG4gICAgICAgICAgICApICE9IC0xO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgICAgIGZyb21UaW1lOiB0aW1lQXJyWzBdLFxyXG4gICAgICAgICAgICB0b1RpbWU6IHRpbWVBcnJbdGltZUFyci5sZW5ndGggLSAxXSxcclxuICAgICAgICAgICAgaW5jbHVkZU11bHRpOiBpbmNsdWRlTXVsdGksXHJcbiAgICAgICAgICAgIGluY2x1ZGVaZXJvOiBpbmNsdWRlWmVybyxcclxuICAgICAgICAgICAgaW5jbHVkZVRpbWVSYW5nZTogaW5jbHVkZVRpbWVSYW5nZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldChrZXksIG9iaik7XHJcbiAgICB9IFxyXG4gICAgZWxzZSBpZiAodGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09PSBcIlJBVElOR1wiKSB7XHJcbiAgICAgICAgdGhpcy5zZXRJbml0aWFsVmFsdWVNYXBGb3JSYXRpbmdQYWdlVGltZUZpbHRlcihrZXkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5zZXQoa2V5LCBvYmopO1xyXG4gICAgfVxyXG59XHJcblxyXG5zZXRJbml0aWFsVmFsdWVNYXBGb3JSYXRpbmdQYWdlVGltZUZpbHRlcihrZXk6IHN0cmluZyl7XHJcbiAgbGV0IGluY2x1ZGVNdWx0aSA9XHJcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLmZpbmRJbmRleCgob2JqKSA9PiBvYmpba2V5XVswXSA9PSBcIjxtdWx0aT5cIikgIT1cclxuICAgICAgICAgICAgLTE7XHJcbiAgICAgICAgbGV0IGluY2x1ZGVaZXJvID1cclxuICAgICAgICAgICAgdGhpcy5jbG9uZWRUYWJsZURhdGEuZmluZEluZGV4KChvYmopID0+IG9ialtrZXldWzBdID09IFwiMFwiKSAhPSAtMTtcclxuICAgICAgICBsZXQgaW5jbHVkZVRpbWVSYW5nZSA9XHJcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLmZpbmRJbmRleChcclxuICAgICAgICAgICAgICAgIChvYmopID0+IG9ialtrZXldWzBdICE9IFwiMFwiICYmIG9ialtrZXldWzBdICE9IFwiPG11bHRpPlwiXHJcbiAgICAgICAgICAgICkgIT0gLTE7XHJcblxyXG4gICAgICAgIGxldCBzdGFydFRpbWVBcnIgPSBtYXAodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwic3RhcnRUaW1lXCIpO1xyXG4gICAgICAgIGxldCBlbmRUaW1lQXJyID0gbWFwKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcImVuZFRpbWVcIik7XHJcblxyXG4gICAgICAgIHN0YXJ0VGltZUFyci5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2Uuc29ydEJ5VGltZUFzY2VuZGluZyhhLCBiKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgZW5kVGltZUFyci5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2Uuc29ydEJ5VGltZURlc2NlbmRpbmcoYSwgYik7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgICAgIGZyb21UaW1lOiBzdGFydFRpbWVBcnJbMF0sXHJcbiAgICAgICAgICAgIHRvVGltZTogZW5kVGltZUFyclswXSxcclxuICAgICAgICAgICAgaW5jbHVkZU11bHRpOiBpbmNsdWRlTXVsdGksXHJcbiAgICAgICAgICAgIGluY2x1ZGVaZXJvOiBpbmNsdWRlWmVybyxcclxuICAgICAgICAgICAgaW5jbHVkZVRpbWVSYW5nZTogaW5jbHVkZVRpbWVSYW5nZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldChrZXksIG9iaik7IFxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0VGltZUhvdXJDaGFuZ2UodmFsOiBzdHJpbmcpe1xyXG4gICAgICAgIGlmKHZhbC5sZW5ndGggPT0gMCB8fCAxID4gcGFyc2VJbnQodmFsKSB8fCBwYXJzZUludCh2YWwpID4gMTIpe1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0VGltZUhvdXJFcnIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0VGltZUhvdXJFcnIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRUaW1lTWluQ2hhbmdlKHZhbDogc3RyaW5nKXtcclxuICAgICAgICBpZih2YWwubGVuZ3RoICE9IDIgIHx8IDAgPiBwYXJzZUludCh2YWwpIHx8IHBhcnNlSW50KHZhbCkgPiA1OSl7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lTWluRXJyID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVNaW5FcnIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZW5kVGltZUhvdXJDaGFuZ2UodmFsOiBzdHJpbmcpe1xyXG4gICAgICAgIGlmKHZhbC5sZW5ndGggPT0gMCB8fCAxID4gcGFyc2VJbnQodmFsKSB8fCBwYXJzZUludCh2YWwpID4gMTIpe1xyXG4gICAgICAgICAgICB0aGlzLmVuZFRpbWVIb3VyRXJyID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5lbmRUaW1lSG91ckVyciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgIH1cclxuXHJcbiAgICBlbmRUaW1lTWluQ2hhbmdlKHZhbDogc3RyaW5nKXtcclxuICAgICAgICBpZih2YWwubGVuZ3RoICE9IDIgIHx8IDAgPiBwYXJzZUludCh2YWwpIHx8IHBhcnNlSW50KHZhbCkgPiA1OSl7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kVGltZU1pbkVyciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kVGltZU1pbkVyciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lmQ2hlY2tib3hUb29sdGlwSXNGaWx0ZXJlZCgpe1xyXG4gICAgICAgIGxldCBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IFtdO1xyXG4gICAgICAgIGxldCBwcmV2aW91c1NlbGVjdGVkVmFsdWUgPSBbXTtcclxuXHJcbiAgICAgICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3RlZFZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmKCF0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICAgIGxldCBpbml0aWFsVmFsdWUgPSBzb3J0QnkodW5pcSh0aGlzLmNsb25lZFRhYmxlRGF0YS5tYXAoaXRlbSA9PiBpdGVtW3RoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpb10pKSk7XHJcbiAgICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8saW5pdGlhbFZhbHVlKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3RlZFZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGVkVmFsdWUgPSBzb3J0QnkodW5pcSh0aGlzLmNsb25lZFRhYmxlRGF0YS5tYXAoaXRlbSA9PiBpdGVtW3RoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpb10pKSk7XHJcbiAgICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLHByZXZpb3VzU2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZih0aGlzLnRvb2x0aXBPcHRpb25zKXtcclxuXHJcbiAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZFZhbHVlID0gc29ydEJ5KHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc1NlbGVjdGVkKS5tYXAoaXRlbSA9PiBpdGVtLnZhbHVlKSk7XHJcblxyXG4gICAgICAgICAgICBpZighdGhpcy5zZWFyY2hJdGVtICYmIGN1cnJlbnRTZWxlY3RlZFZhbHVlLmxlbmd0aCA9PSB0aGlzLnRvb2x0aXBPcHRpb25zLmxlbmd0aCAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGVkVmFsdWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBibGFua0luZGV4ID0gY3VycmVudFNlbGVjdGVkVmFsdWUuZmluZEluZGV4KChpdGVtOiBzdHJpbmcpID0+IGl0ZW0gPT0gbnVsbCk7XHJcbiAgICAgICAgaWYoYmxhbmtJbmRleCAhPSAtMSl7XHJcbiAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IHNvcnRCeShjdXJyZW50U2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmlzRmlsdGVyQ2hhbmdlZCA9ICFpc0VxdWFsKGN1cnJlbnRTZWxlY3RlZFZhbHVlLHByZXZpb3VzU2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrSWZUaW1lVG9vbHRpcElzRmlsdGVyZWQoKXtcclxuICAgICAgbGV0IGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXI6IHtmcm9tVGltZTogc3RyaW5nLCB0b1RpbWU6c3RyaW5nLCBpbmNsdWRlTXVsdGk6IGJvb2xlYW4sIGluY2x1ZGVaZXJvOiBib29sZWFuLCBpbmNsdWRlVGltZVJhbmdlOiBib29sZWFufSA9IHtcclxuICAgICAgICBmcm9tVGltZTogbnVsbCxcclxuICAgICAgICB0b1RpbWU6IG51bGwsXHJcbiAgICAgICAgaW5jbHVkZU11bHRpOiBmYWxzZSxcclxuICAgICAgICBpbmNsdWRlWmVybzogZmFsc2UsXHJcbiAgICAgICAgaW5jbHVkZVRpbWVSYW5nZTogZmFsc2UsXHJcbiAgICAgIH07XHJcbiAgXHJcbiAgICAgIGxldCBwcmV2aW91c1NlbGVjdGVkVGltZUZpbHRlcjtcclxuICBcclxuICAgICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgIHByZXZpb3VzU2VsZWN0ZWRUaW1lRmlsdGVyID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgcHJldmlvdXNTZWxlY3RlZFRpbWVGaWx0ZXIgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICBsZXQgZnJvbVRpbWUyNEhyRm9ybWF0QXJyID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb3R3ZW50eUZvdXJIcnNGb3JtYXQoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzBdICsgXCI6XCIgKyB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMV0gKyBcIiBcIiArIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVsyXSxcclxuICAgICAgICB0cnVlXHJcbiAgICAgICk7XHJcbiAgICAgIGxldCBmcm9tVGltZTI0SHJGb3JtYXQgPSBmcm9tVGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIGZyb21UaW1lMjRIckZvcm1hdEFyclsxXSArIFwiOjAwXCI7XHJcblxyXG4gICAgICBsZXQgdG9UaW1lMjRIckZvcm1hdEFyciA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG90d2VudHlGb3VySHJzRm9ybWF0KFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWVbMF0gKyBcIjpcIiArIHRoaXMuc2VsZWN0ZWRUb1RpbWVbMV0gKyBcIiBcIiArIHRoaXMuc2VsZWN0ZWRUb1RpbWVbMl0sXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgdG9UaW1lMjRIckZvcm1hdCA9IHRvVGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIHRvVGltZTI0SHJGb3JtYXRBcnJbMV0gKyBcIjowMFwiO1xyXG4gIFxyXG4gICAgICBjdXJyZW50U2VsZWN0ZWRUaW1lRmlsdGVyID0geyBmcm9tVGltZTogZnJvbVRpbWUyNEhyRm9ybWF0LCB0b1RpbWU6IHRvVGltZTI0SHJGb3JtYXQsIGluY2x1ZGVNdWx0aTogdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQsIFxyXG4gICAgICBpbmNsdWRlWmVybzogdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCwgaW5jbHVkZVRpbWVSYW5nZTogdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWR9O1xyXG4gICAgICBcclxuICAgICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSAhaXNFcXVhbChwcmV2aW91c1NlbGVjdGVkVGltZUZpbHRlciwgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlcik7XHJcbiAgICAgIHJldHVybiB0aGlzLmlzRmlsdGVyQ2hhbmdlZDsgIFxyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrSWZEYXRlVG9vbHRpcElzRmlsdGVyZWQoKXtcclxuICAgICAgbGV0IGN1cnJlbnRTZWxlY3RlZERhdGUgPSBjbG9uZURlZXAodGhpcy5jYWxlbmRhclNlbGVjdGlvbik7XHJcbiAgICAgIGxldCBwcmV2aW91c1NlbGVjdGVkRGF0ZToge2Zyb21EYXRlOiBhbnksIHRvRGF0ZTogYW55fSA9IHtmcm9tRGF0ZTogbnVsbCwgdG9EYXRlOiBudWxsfTtcclxuXHJcbiAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICBwcmV2aW91c1NlbGVjdGVkRGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmKCF0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlTWFwRm9yRGF0ZUZpbHRlcigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgcHJldmlvdXNTZWxlY3RlZERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlTWFwRm9yRGF0ZUZpbHRlcigpO1xyXG4gICAgICAgIHByZXZpb3VzU2VsZWN0ZWREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUgJiYgY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUpe1xyXG4gICAgICAgICAgbGV0IGZyb21EYXRlID0ge3llYXI6IGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUueWVhcixtb250aDogY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZS5tb250aCxkYXk6IGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUuZGF5fTtcclxuICAgICAgICAgIGxldCB0b0RhdGUgPSB7eWVhcjogY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUueWVhcixtb250aDogY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUubW9udGgsZGF5OiBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZS5kYXl9O1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZihpc0VxdWFsKHRoaXMuY2FsZW5kYXJNaW5FbmFibGVkRGF0ZSxmcm9tRGF0ZSkgJiYgaXNFcXVhbCh0aGlzLmNhbGVuZGFyTWF4RW5hYmxlZERhdGUsdG9EYXRlKSAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGVkRGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlID0gZGF5anModGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnROZ2JEYXRlVG9Nb21lbnQoY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZSkpO1xyXG4gICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlID0gZGF5anModGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnROZ2JEYXRlVG9Nb21lbnQoY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkID0gIWlzRXF1YWwocHJldmlvdXNTZWxlY3RlZERhdGUsY3VycmVudFNlbGVjdGVkRGF0ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEluaXRpYWxWYWx1ZU1hcEZvckRhdGVGaWx0ZXIoKXtcclxuICAgICAgICBsZXQgbWluTWF4RGF0ZTtcclxuXHJcbiAgICAgICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvID09IFwicGVyaW9kXCIpe1xyXG4gICAgICAgICAgbGV0IG1pblN0YXJ0RGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWluQW5kTWF4RGF0ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJzdGFydERhdGVcIik7XHJcbiAgICAgICAgICBsZXQgbWF4RW5kRGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWluQW5kTWF4RGF0ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSxcImVuZERhdGVcIik7XHJcbiAgICAgICAgICBtaW5NYXhEYXRlID0gW21pblN0YXJ0RGF0ZVswXSxtYXhFbmREYXRlWzFdXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgIG1pbk1heERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1pbkFuZE1heERhdGUodGhpcy5jbG9uZWRUYWJsZURhdGEsdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkRGF0ZSA9IHtmcm9tRGF0ZTogbWluTWF4RGF0ZVswXSwgdG9EYXRlOiBtaW5NYXhEYXRlWzFdfTtcclxuICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLCBzZWxlY3RlZERhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrSWZTbGlkZXJUb29sdGlwSXNGaWx0ZXJlZCgpe1xyXG4gICAgICBsZXQgY3VycmVudFNsaWRlckRhdGE6IHttaW46YW55LCBtYXg6IGFueX0gPSB7bWluOiBudWxsICwgbWF4OiBudWxsfTtcclxuICAgICAgbGV0IHByZXZpb3VzU2xpZGVyRGF0YToge21pbjphbnksIG1heDogYW55fSA9IHttaW46IFwiXCIsIG1heDogXCJcIn07XHJcblxyXG4gICAgICAvLyBpZih0aGlzLmlzTWluVGV4dEJveEVtcHR5KXtcclxuICAgICAgLy8gICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1pbiA9IHRoaXMub3B0aW9ucy5mbG9vcjtcclxuICAgICAgLy8gICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1heCA9IHRoaXMuc2xpZGVyTWF4VmFsdWU7XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gZWxzZSBpZih0aGlzLmlzTWF4VGV4dEJveEVtcHR5KXtcclxuICAgICAgLy8gICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1heCA9IHRoaXMub3B0aW9ucy5jZWlsO1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWluID0gdGhpcy5zbGlkZXJNaW5WYWx1ZTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBlbHNle1xyXG4gICAgICAgICAgY3VycmVudFNsaWRlckRhdGEubWF4ID0gdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWU7XHJcbiAgICAgICAgICBjdXJyZW50U2xpZGVyRGF0YS5taW4gPSB0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZTtcclxuICAgICAgLy8gfVxyXG5cclxuICAgICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgIHByZXZpb3VzU2xpZGVyRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgIGlmKCF0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICB0aGlzLnNldEluaXRpYWxWYWx1ZU1hcEZvclNsaWRlckZpbHRlcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICBwcmV2aW91c1NsaWRlckRhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlTWFwRm9yU2xpZGVyRmlsdGVyKCk7XHJcbiAgICAgICAgcHJldmlvdXNTbGlkZXJEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKGN1cnJlbnRTbGlkZXJEYXRhLm1pbiA9PSB0aGlzLm9wdGlvbnMuZmxvb3IgJiYgY3VycmVudFNsaWRlckRhdGEubWF4ID09IHRoaXMub3B0aW9ucy5jZWlsICYmIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pICl7XHJcbiAgICAgICAgICBjdXJyZW50U2xpZGVyRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmlzRmlsdGVyQ2hhbmdlZCA9ICFpc0VxdWFsKHByZXZpb3VzU2xpZGVyRGF0YSxjdXJyZW50U2xpZGVyRGF0YSk7XHJcbiAgICAgIHJldHVybiB0aGlzLmlzRmlsdGVyQ2hhbmdlZDtcclxuICAgIH1cclxuXHJcbiAgICBzZXRJbml0aWFsVmFsdWVNYXBGb3JTbGlkZXJGaWx0ZXIoKXtcclxuICAgICAgbGV0IG1pblZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NYXhBbmRNaW5WYWx1ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLCB0cnVlKTtcclxuICAgICAgbGV0IG1heFZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NYXhBbmRNaW5WYWx1ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLCBmYWxzZSk7XHJcbiAgICAgIGxldCBzbGlkZXJEYXRhID0geyBtaW46IG1pblZhbHVlLCBtYXg6IG1heFZhbHVlIH07XHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sIHNsaWRlckRhdGEpO1xyXG4gICAgICBcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lmU29ydGluZ0NoYW5nZWQoKXtcclxuICAgICAgdGhpcy5pc1NvcnRDaGFuZ2VkID0gdGhpcy50ZW1wU29ydE9yZGVyICE9IG51bGwgJiYgdGhpcy50ZW1wU29ydE9yZGVyICE9IHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTs7XHJcbiAgICAgIHJldHVybiB0aGlzLmlzU29ydENoYW5nZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZUFwcGx5QnV0dG9uT2ZTZWxlY3RlZEZpbHRlcigpe1xyXG4gICAgICBsZXQgaGVhZGVyID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvO1xyXG5cclxuICAgICAgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuY2FsZW5kYXJTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVDYWxlbmRhckFwcGx5QnV0dG9uKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zbGlkZXJTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ0bigpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudGltZVNldC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94RmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVDaGVja2JveEZpbHRlckFwcGx5QnV0dG9uKCl7XHJcbiAgICAgIGxldCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ID8gdGhpcy50b29sdGlwT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlzU2VsZWN0ZWQpIDogW107XHJcbiAgICAgICAgXHJcbiAgICAgIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCAmJiB0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICAgIGxldCBpc0ZpbHRlckNoYW5nZWQgPSB0aGlzLmNoZWNrSWZDaGVja2JveFRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgICAgICBsZXQgaXNTb3J0Q2hhbmdlZCA9IHRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMCB8fCAoIWlzU29ydENoYW5nZWQgJiYgIWlzRmlsdGVyQ2hhbmdlZCApO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50KXtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwIHx8ICF0aGlzLmNoZWNrSWZDaGVja2JveFRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSAhdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRyYWNrQnlUb29sdGlwTW9kZWxJZChpbmRleDogbnVtYmVyICwgaXRlbTogVG9vbHRpcE1vZGVsKXtcclxuICAgICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QWN0aXZlU3RhdGVPYmplY3QoKXtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmUgPSAgIXRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVzZXRGaWx0ZXJTb3J0QWN0aXZlU3RhdHVzXHJcbiAgICAgID8gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVcclxuICAgICAgOiB7fTtcclxuICAgICAgdGhpcy50YWJsZUhlYWRlcnMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLmhlYWRlckluZm8uZm9yRWFjaChoZWFkZXIgPT4ge1xyXG4gICAgICAgICAgICBpZihoZWFkZXIuc2hvd1Rvb2x0aXBJY29uKXtcclxuICAgICAgICAgICAgICBsZXQga2V5ID0gaGVhZGVyLmZpbHRlclNvcnRPYmplY3RLZXlzLmpvaW4oJywnKTtcclxuICAgICAgICAgICAgICBoZWFkZXIuam9pbmVkRmlsdGVyU29ydE9iamVjdEtleXMgPSBrZXk7XHJcbiAgICAgICAgICAgICAgLy8gQU5OQS00MTEzIGZpeFxyXG4gICAgICAgICAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVzZXRGaWx0ZXJTb3J0QWN0aXZlU3RhdHVzKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlW2tleV0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXNldEZpbHRlclNvcnRBY3RpdmVTdGF0dXMgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldElzRGlmZmVyZW5jZSh2YWx1ZTogYm9vbGVhbil7XHJcbiAgICAgIHRoaXMuaXNEaWZmZXJlbmNlTGVzc1RoYW4yNVBlcmNlbnQgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldEluZGV4KCl7XHJcbiAgICAgIHRoaXMuc3RhcnQgPSAwO1xyXG4gICAgICB0aGlzLmVuZCA9IHRoaXMubGltaXQgKyB0aGlzLnN0YXJ0O1xyXG4gICAgfVxyXG5cclxuICAgIG9uVGFibGVDb250YWluZXJTY3JvbGwoZTogYW55KSB7XHJcbiAgICAgICAgY29uc3QgdGFibGVWaWV3SGVpZ2h0ID0gZS50YXJnZXQub2Zmc2V0SGVpZ2h0OyAvLyB2aWV3cG9ydFxyXG4gICAgICAgIGNvbnN0IHRhYmxlU2Nyb2xsSGVpZ2h0ID0gZS50YXJnZXQuc2Nyb2xsSGVpZ2h0OyAvLyBsZW5ndGggb2YgYWxsIHRhYmxlXHJcbiAgICAgICAgY29uc3Qgc2Nyb2xsTG9jYXRpb24gPSBlLnRhcmdldC5zY3JvbGxUb3A7IC8vIGhvdyBmYXIgdXNlciBzY3JvbGxlZFxyXG5cclxuICAgICAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJyZW1hcmtzLWluZm8tdG9vbHRpcFwiKTtcclxuICAgICAgICB3aGlsZSAoZWxlbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgZWxlbWVudHNbMF0ucmVtb3ZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIElmIHRoZSB1c2VyIGhhcyBzY3JvbGxlZCB3aXRoaW4gMTUwcHggb2YgdGhlIGJvdHRvbSwgYWRkIG1vcmUgZGF0YVxyXG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IDE1MDtcclxuICAgICAgICBjb25zdCBsaW1pdCA9IHRhYmxlU2Nyb2xsSGVpZ2h0IC0gdGFibGVWaWV3SGVpZ2h0IC0gYnVmZmVyO1xyXG4gICAgICAgIGlmIChzY3JvbGxMb2NhdGlvbiA+IGxpbWl0KSB7XHJcbiAgICAgICAgICAgIGxldCBkYXRhID0gdGhpcy5nZXRUYWJsZURhdGEodGhpcy5zdGFydCwgdGhpcy5lbmQpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVkRGF0YSA9IHRoaXMucmVuZGVyZWREYXRhLmNvbmNhdChkYXRhKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVJbmRleCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRhYmxlQ29udGFpbmVyU2Nyb2xsZWQoZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VGFibGVEYXRhKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVEYXRhLmZpbHRlcigodmFsdWUsIGluZGV4KSA9PiBpbmRleCA+PSBzdGFydCAmJiBpbmRleCA8IGVuZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlSW5kZXgoKSB7XHJcbiAgICAgICAgdGhpcy5zdGFydCA9IHRoaXMuZW5kO1xyXG4gICAgICAgIHRoaXMuZW5kID0gdGhpcy5saW1pdCArIHRoaXMuc3RhcnQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SW5pdGlhbFJvd3NGb3JUYWJsZSgpe1xyXG4gICAgICB0aGlzLnJlc2V0SW5kZXgoKTtcclxuICAgICAgdGhpcy5yZW5kZXJlZERhdGEgPSB0aGlzLmdldFRhYmxlRGF0YSh0aGlzLnN0YXJ0LHRoaXMuZW5kKTtcclxuICAgICAgdGhpcy51cGRhdGVJbmRleCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNwb3REZXRhaWxzRG93bmxvYWRDbGlja2VkKHBhcmVudENoaWxkT3JUb3RhbFJvdzogXCJEQVRBUk9XXCIgfCBcIlRPVEFMUk9XXCIsIHJvd2RhdGE/OiBhbnkgKSB7XHJcbiAgICAgIGlmKHJvd2RhdGEpe1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbnZlbnRvcnlJZEZvckRvd25sb2FkID0gcm93ZGF0YS5pbnZlbnRvcnlDb2RlSWQ7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERlbW9ncmFwaGljRm9yRG93bmxvYWQgPSByb3dkYXRhLmRlbW9ncmFwaGljO1xyXG4gICAgICB9IGVsc2V7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEludmVudG9yeUlkRm9yRG93bmxvYWQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREZW1vZ3JhcGhpY0ZvckRvd25sb2FkID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93VHlwZUZvckRvd25sb2FkID0gcGFyZW50Q2hpbGRPclRvdGFsUm93O1xyXG4gICAgICB0aGlzLmRvd25sb2FkU3BvdERldGFpbHMuZW1pdCh7XHJcbiAgICAgICAgcGFyZW50Q2hpbGRPclRvdGFsUm93OiBwYXJlbnRDaGlsZE9yVG90YWxSb3csXHJcbiAgICAgICAgaW52ZW50b3J5Q29kZUlkOiB0aGlzLnNlbGVjdGVkSW52ZW50b3J5SWRGb3JEb3dubG9hZCxcclxuICAgICAgICBkZW1vZ3JhcGhpYzogdGhpcy5zZWxlY3RlZERlbW9ncmFwaGljRm9yRG93bmxvYWR9KVxyXG4gIH1cclxuXHJcbiAgdGFibGVDb250YWluZXJTY3JvbGxlZChldmVudDogYW55KXtcclxuICAgICAgdGhpcy5pc1Njcm9sbGVkTGVmdCA9IGV2ZW50LnRhcmdldC5zY3JvbGxMZWZ0ID4gMDtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyIHt7Z3RHZW5lcmFsQ29uZmlnPy50YWJsZU91dGVyQ29udGFpbmVyTmFtZX19XCIgW25nQ2xhc3NdPVwieyAnc2Nyb2xsLWxlZnQtc2hhZG93LWVmZmVjdCc6IGlzU2Nyb2xsZWRMZWZ0IH1cIiAoc2Nyb2xsKT1cIm9uVGFibGVDb250YWluZXJTY3JvbGwoJGV2ZW50KVwiPlxyXG4gICAgPGRpdlxyXG4gICAgICAgIFtjbGFzc109XCJndEdlbmVyYWxDb25maWcudGFibGVDb250YWluZXJOYW1lXCJcclxuICAgICAgICBjbGFzcz1cImhvcml6b250YWwtc2Nyb2xsLWZvci10YWJsZS1jb250YWluZXJcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgaGVpZ2h0OlxyXG4gICAgICAgICAgICAgICAgdGFibGVEYXRhLmxlbmd0aCA8IG1heGltdW1Sb3dzV2hpY2hDYW5CZVJlbmRlcmVkV2l0aG91dFNjcm9sbFxyXG4gICAgICAgICAgICAgICAgICAgID8gJ2NhbGMoJyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAoKGd0RGltZW5zaW9uLnJvd0hlaWdodCArIChpbmNsdWRlQm9yZGVySW5UYWJsZUhlaWdodCA/IHJvd0JvcmRlcldpZHRoIDogMCkpICogdGFibGVEYXRhLmxlbmd0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCF0YWJsZURhdGEubGVuZ3RoIHx8ICFndEdlbmVyYWxDb25maWcudG90YWxSb3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBndERpbWVuc2lvbi5oZWFkZXJIZWlnaHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBndERpbWVuc2lvbi5oZWFkZXJIZWlnaHQgKyBndERpbWVuc2lvbi5yb3dIZWlnaHQgKyAoIGluY2x1ZGVCb3JkZXJJblRhYmxlSGVpZ2h0ID8gKDIgKiByb3dCb3JkZXJXaWR0aCkgOiAwKSkpICtcclxuICAgICAgICAgICAgICAgICAgICAgICdweCknXHJcbiAgICAgICAgICAgICAgICAgICAgOiBndERpbWVuc2lvbi50YWJsZUhlaWdodFxyXG4gICAgICAgIH1cIlxyXG4gICAgPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cImd0XCIgW25nQ2xhc3NdPVwidGFibGVDbGFzc1wiIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJyZW5kZXJlZERhdGFcIj5cclxuICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlci1yb3dcIlxyXG4gICAgICAgICAgICAgICAgbWF0LWhlYWRlci1yb3dcclxuICAgICAgICAgICAgICAgICptYXRIZWFkZXJSb3dEZWY9XCJ0YWJsZUNvbHVtbnM7IHN0aWNreTogdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImd0RGltZW5zaW9uLmhlYWRlckhlaWdodFwiXHJcbiAgICAgICAgICAgID48L3RyPlxyXG4gICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidG90YWwtcm93XCJcclxuICAgICAgICAgICAgICAgIG1hdC1oZWFkZXItcm93XHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImd0RGltZW5zaW9uLnJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyUm93RGVmPVwidG90YWxSb3dDb2x1bW5zOyBzdGlja3k6IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmhpZGRlbl09XCJcclxuICAgICAgICAgICAgICAgICAgICBzaG93U2tlbGV0b25Mb2FkaW5nIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKCFzaG93U2tlbGV0b25Mb2FkaW5nICYmICF0YWJsZURhdGEubGVuZ3RoICkgfHxcclxuICAgICAgICAgICAgICAgICAgICAoaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JCB8IGFzeW5jKSB8fCBcclxuICAgICAgICAgICAgICAgICAgICAoIXNob3dTa2VsZXRvbkxvYWRpbmcgJiYgIWd0R2VuZXJhbENvbmZpZy50b3RhbFJvdylcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L3RyPlxyXG4gICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJyb3dEYXRhLmd0Q2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyduby1ib3JkZXItdHInOiAoaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JCB8IGFzeW5jKX1cIlxyXG4gICAgICAgICAgICAgICAgbWF0LXJvd1xyXG4gICAgICAgICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3dEYXRhOyBjb2x1bW5zOiB0YWJsZUNvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJndERpbWVuc2lvbi5yb3dIZWlnaHRcIihjbGljayk9XCJkYXRhUm93Q2xpY2tlZChyb3dEYXRhKVwiXHJcbiAgICAgICAgICAgID48L3RyPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUT1RBTCBST1cgLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4uY29sTmFtZVwiICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdG90YWxSb3dJbmZvOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cclxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW4uY29sc3BhblwiIGNsYXNzPVwie3tjb2x1bW4uY2xhc3N9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY29sdW1uLmRhdGEgfX08L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmxvd2VyRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4uY29sTmFtZSA9PSAndG90YWwtcG90ZW50aWFsLWJvb2tlZC11bml0JyAmJiBndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09ICdSQVRJTkcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBjb2x1bW5Mb3dlckRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjbGlja2FibGUtZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic3BvdERldGFpbHNEb3dubG9hZENsaWNrZWQoJ1RPVEFMUk9XJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZGlzYWJsZWQtY2xpY2thYmxlLWRhdGEnOiBkb3dubG9hZEluUHJvZ3Jlc3MgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgY29sdW1uLmxvd2VyRGF0YSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBzcG90LWRldGFpbHMtZG93bmxvYWQtaWNvbnNcIj5nZXRfYXBwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkSW5Qcm9ncmVzcyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc2VsZWN0ZWRSb3dUeXBlRm9yRG93bmxvYWQgPT0gJ1RPVEFMUk9XJyBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNpcmN1bGFyUHJvZ3Jlc3NCYXJcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29sdW1uTG93ZXJEYXRhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY29sdW1uLmxvd2VyRGF0YSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udG9vbHRpcE1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWkgbWRpLWluZm8tb3V0bGluZSBpbmZvLWxhYmVsXCIgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJjb2x1bW4udG9vbHRpcE1lc3NhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwiZ3QtdG90YWwtcm93LXRvb2x0aXBcIiBwbGFjZW1lbnQ9XCJib3R0b21cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gTUFJTiBST1cgLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW5EZWYuaGVhZGVySW5mb1swXS5vYmplY3RLZXlcIiAqbmdGb3I9XCJsZXQgY29sdW1uRGVmIG9mIHRhYmxlSGVhZGVyczsgIHRyYWNrQnk6IHRyYWNrQnlGblwiPlxyXG4gICAgICAgICAgICAgICAgPHRoICN0YWJsZUhlYWRlciBub3dyYXAgbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFtzdHlsZS53aWR0aF09XCJjb2x1bW5EZWYud2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG14LTBcIiAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIGNvbHVtbkRlZi5oZWFkZXJJbmZvOyBsZXQgaiA9IGluZGV4O1wiPiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGVhZGVyLnR5cGVPZkhlYWRlckRhdGEgPT09ICdTVFJJTkcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3VwcGVyLWxhYmVsJzogaiA9PT0gMCwgJ2xvd2VyLWxhYmVsJzogaiA9PT0gMSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaGVhZGVyLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaGVhZGVyLnRvb2x0aXAgJiYgaGVhZGVyLnRvb2x0aXAubmFtZSA9PSAnaW1wc0luZm9Ub29sdGlwJ1wiIGNsYXNzPVwie3toZWFkZXJbJ3Rvb2x0aXAnXS5pY29uQ2xhc3N9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydmbG9hdCc6IGhlYWRlclsndG9vbHRpcCddLmljb25Qb3NpdGlvbn1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0PVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwiaW1wc0luZm9Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhlYWRlci50b29sdGlwICYmIGhlYWRlci50b29sdGlwLm5hbWUgPT0gJ3Nwb3RzQ29sdW1uRXF1aXZhbGl6YXRpb25NZXNzYWdlVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInNwb3RzQ29sdW1uRXF1aXZhbGl6YXRpb25NZXNzYWdlVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdyYXRpbmdJbmZvVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInJhdGluZ0luZm9Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhlYWRlci50b29sdGlwICYmIGhlYWRlci50b29sdGlwLm5hbWUgPT0gJ3JhdGVJbmZvVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInJhdGVJbmZvVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdvbmdvaW5nUmV2Qm9va2VkQ29sdW1uVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cIm9uZ29pbmdSZXZCb29rZWRDb2x1bW5Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhlYWRlci50b29sdGlwICYmIGhlYWRlci50b29sdGlwLm5hbWUgPT0gJ2NvbXBsZXRlZFJldkJvb2tlZENvbHVtblRvb2x0aXAnXCIgY2xhc3M9XCJ7e2hlYWRlclsndG9vbHRpcCddLmljb25DbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Zsb2F0JzogaGVhZGVyWyd0b29sdGlwJ10uaWNvblBvc2l0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJjb21wbGV0ZWRSZXZCb29rZWRDb2x1bW5Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIudHlwZU9mSGVhZGVyRGF0YSA9PT0gJ0NIRUNLQk9YJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImd0R2VuZXJhbENvbmZpZy5pc0hlYWRlckNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC1jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RBbGxSb3dzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFndEdlbmVyYWxDb25maWcuaXNIZWFkZXJDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtdW5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlLWNoZWNrYm94JzogZ3RHZW5lcmFsQ29uZmlnLmRpc2FibGVIZWFkZXJDaGVja2JveCB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RBbGxSb3dzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImd0R2VuZXJhbENvbmZpZy5zaG93QWxsQ29sdW1uRmlsdGVyXCIgY2xhc3M9XCJzb3J0LWZpbHRlci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIuc2hvd1Rvb2x0aXBJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3RpdmUgdG9vbHRpcCBGdW5jdGlvbmFsaXR5IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIuZmlsdGVyID09PSAnQ0hFQ0tCT1gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZmlsdGVyLXZhcmlhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlICYmIGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZVtoZWFkZXIuam9pbmVkRmlsdGVyU29ydE9iamVjdEtleXNdLCAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaGVhZGVyLmRpc2FibGVUb29sdGlwSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJmaWx0ZXJUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbSBsZWZ0LXRvcCBhdXRvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwibm9uLWVkaXQtY2hlY2tib3gtdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cIm1hbnVhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJpbmRUaGVWYWx1ZVRvVG9vbFRpcCh0LCBoZWFkZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5maWx0ZXIgPT09ICdTTElERVInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZmlsdGVyLXZhcmlhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlICYmIGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZVtoZWFkZXIuam9pbmVkRmlsdGVyU29ydE9iamVjdEtleXNdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBoZWFkZXIuZGlzYWJsZVRvb2x0aXBJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInNsaWRlclRvb2xUaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnQtdG9wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwibm9uLWVkaXQtc2xpZGVyLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3QxPVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmluZFRoZVZhbHVlVG9Ub29sVGlwKHQxLCBoZWFkZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5maWx0ZXIgPT09ICdEQVRFJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZpbHRlci12YXJpYW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSAmJiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVbaGVhZGVyLmpvaW5lZEZpbHRlclNvcnRPYmplY3RLZXlzXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaGVhZGVyLmRpc2FibGVUb29sdGlwSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJkYXRlUGlja2VyVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20gYXV0b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cIm5vbi1lZGl0LWRhdGVwaWNrZXItdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cIm1hbnVhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdDI9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJiaW5kVGhlVmFsdWVUb1Rvb2xUaXAodDIsIGhlYWRlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpZGRlbik9XCJjbG9zZVRvb2x0aXAoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZpbHRlciA9PT0gJ1dFRUsnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZmlsdGVyLXZhcmlhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlICYmIGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZVtoZWFkZXIuam9pbmVkRmlsdGVyU29ydE9iamVjdEtleXNdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBoZWFkZXIuZGlzYWJsZVRvb2x0aXBJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cIndlZWtQaWNrZXJUb29sVGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbSBsZWZ0LXRvcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0Mz1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJpbmRUaGVWYWx1ZVRvVG9vbFRpcCh0MywgaGVhZGVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGlkZGVuKT1cImNsb3NlVG9vbHRpcCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxiciAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXIuZmlsdGVyID09PSAnVElNRSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1maWx0ZXItdmFyaWFudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmUgJiYgYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlW2hlYWRlci5qb2luZWRGaWx0ZXJTb3J0T2JqZWN0S2V5c10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGhlYWRlci5kaXNhYmxlVG9vbHRpcEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwidGltZUZpbHRlclRvb2xUaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnQtdG9wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwibm9uLWVkaXQtdGltZS10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0ND1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJpbmRUaGVWYWx1ZVRvVG9vbFRpcCh0NCwgaGVhZGVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGlkZGVuKT1cImNsb3NlVG9vbHRpcCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxiciAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhlYWRlci5zaG93VG9vbHRpcEljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD1cIm5vLWZpbHRlci1zcGFjZVwiPjwvc3Bhbj48YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdsdXJWaW9sYXRpb25JbmZvVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cImx1clZpb2xhdGlvbkluZm9Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ0RSUidcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICptYXRDZWxsRGVmPVwibGV0IFJPV19EQVRBXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93U2tlbGV0b25Mb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5neC1za2VsZXRvbi1sb2FkZXIgY291bnQ9XCIxXCIgW3RoZW1lXT1cInsgaGVpZ2h0OiAnMTBweCcsIGRpc3BsYXk6ICdibG9jaycgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LXNrZWxldG9uLWxvYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93U2tlbGV0b25Mb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFST1dfREFUQVsnaGlkZScgKyBjb2x1bW5EZWYuaGVhZGVySW5mb1swXS5vYmplY3RLZXkgKyAnVGQnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5yb3dzcGFuXT1cIlJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvWzBdLm9iamVjdEtleSArICdSb3dzcGFuJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdWJsaW5lIG9mIGNvbHVtbkRlZi5oZWFkZXJJbmZvOyBsZXQgc3VibGluZUluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwic3VibGluZS50eXBlT2ZCb2R5RGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInSUNPTidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJST1dfREFUQS5pY29uQ2xhc3NcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidDSEVDS0JPWCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJST1dfREFUQVtzdWJsaW5lLm9iamVjdEtleV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Rpc2FibGUtY2hlY2tib3gnOiBST1dfREFUQVtzdWJsaW5lLmlzRGlzYWJsZWRLZXldIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC1jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RSb3coUk9XX0RBVEEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhUk9XX0RBVEFbc3VibGluZS5vYmplY3RLZXldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtdW5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlLWNoZWNrYm94JzogUk9XX0RBVEFbc3VibGluZS5pc0Rpc2FibGVkS2V5XSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RSb3coUk9XX0RBVEEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInUkFESU8nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWdyb3VwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJST1dfREFUQVsnUmFkaW9CdXR0b25Db25maWcnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiUk9XX0RBVEFbc3VibGluZS5vYmplY3RLZXldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ11bMF0uaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmFkaW9CdXR0b24gb2YgUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ107IGxldCBsYXN0ID0gbGFzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7eyByYWRpb0J1dHRvbi52YWx1ZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7IHJhZGlvQnV0dG9uLmNsYXNzIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpb0J1dHRvbkNsaWNrZWQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJPV19EQVRBLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpb0J1dHRvbi52YWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ11bMF0uaXNEaXNhYmxlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgcmFkaW9CdXR0b24ubGFiZWwgfX08L21hdC1yYWRpby1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxiciAqbmdJZj1cIiFsYXN0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBST1dfREFUQVtzdWJsaW5lLm9iamVjdEtleV0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmxpbmUub2JqZWN0S2V5ID09ICdTdGF0dXMnICYmIChST1dfREFUQVsnUmVtYXJrcyddICE9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtaSBtZGktaW5mby1vdXRsaW5lIHJlbWFya3MtdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cImNvbHVtbkluZm9Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInJlbWFya3MtaW5mby10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJndEdlbmVyYWxDb25maWcuY29tcG9uZW50ICE9ICdEUlInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IFJPV19EQVRBXCIgW3N0eWxlLmJhY2tncm91bmRdPVwiUk9XX0RBVEEuYmFja2dyb3VuZENvbG9yXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJST1dfREFUQS5ib3JkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie3tST1dfREFUQS5yb3dDbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyICpuZ0lmPVwic2hvd1NrZWxldG9uTG9hZGluZ1wiIGNvdW50PVwiMVwiIFt0aGVtZV09XCJ7IGhlaWdodDogJzEwcHgnLCBkaXNwbGF5OiAnYmxvY2snIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93U2tlbGV0b25Mb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGVEYXRhLmxlbmd0aCA+IDAgJiYgIShpc05vRGF0YVRvRGlzcGxheVN1YmplY3QkIHwgYXN5bmMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzaG93RWxsaXBzaXNUZXh0T25Ib3ZlciAqbmdGb3I9XCJsZXQgc3VibGluZSBvZiBjb2x1bW5EZWYuaGVhZGVySW5mbzsgbGV0IHN1YkxpbmVJbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS50eXBlT2ZCb2R5RGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0lDT04nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIhKHN0YXJyZWRJblByb2dyZXNzICYmIFJPV19EQVRBLm9yZGVySWQgPT0gc2VsZWN0ZWRTdGFycmVkT3JkZXJJZClcIiBbY2xhc3NdPVwiUk9XX0RBVEEuaWNvbkNsYXNzXCIgKGNsaWNrKT1cImljb25DbGlja2VkKFJPV19EQVRBLFJPV19EQVRBLmljb25DbGFzcylcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YXJyZWRJblByb2dyZXNzICYmIFJPV19EQVRBLm9yZGVySWQgPT0gc2VsZWN0ZWRTdGFycmVkT3JkZXJJZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1mb3ItYnV0dG9uLWRpcmVjdGl2ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2lyY3VsYXJQcm9ncmVzc0JhclwiPjwvbmctY29udGFpbmVyPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInU1ZHX0lDT04nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFubmEtY29yZS1hbm5hLWljb24tY29sdW1uIFtjb21wb25lbnROYW1lXT1cImd0R2VuZXJhbENvbmZpZy5jb21wb25lbnRcIiBbb2JqZWN0S2V5XT1cInN1YmxpbmUub2JqZWN0S2V5XCIgW2RhdGFPYmplY3RdPVwiUk9XX0RBVEFcIiAob25Db2x1bW5JY29uQ2xpY2tlZCk9XCJzdmdJY29uQ2xpY2tlZCgkZXZlbnQpXCI+PC9hbm5hLWNvcmUtYW5uYS1pY29uLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInVEVYVF9BQ1RJT05TJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nRm9yPVwibGV0IHRleHQgb2YgUk9XX0RBVEEudGV4dEFjdGlvbnNcIiAoY2xpY2spPVwidGV4dEFjdGlvbkNsaWNrZWQoUk9XX0RBVEEsdGV4dC5pZClcIiBbZGlzYWJsZWRdPVwidGV4dC5pc0Rpc2FibGVkXCIgY2xhc3M9XCJ7e3RleHQuY2xhc3N9fVwiPnt7dGV4dC5uYW1lfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInQ0hFQ0tCT1gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLm9iamVjdEtleV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzYWJsZS1jaGVja2JveCc6IFJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0uaXNEaXNhYmxlZEtleV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC1jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0T3JVbnNlbGVjdENoZWNrYm94KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJPV19EQVRBLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5vYmplY3RLZXldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXNhYmxlLWNoZWNrYm94JzogUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5pc0Rpc2FibGVkS2V5XVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0T3JVbnNlbGVjdENoZWNrYm94KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJPV19EQVRBLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidDTElDS0FCTEVfREFUQSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdWJsaW5lLm9iamVjdEtleSA9PSAnZGlzcGxheUJvb2tlZFVuaXRzJyAmJiBndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09ICdSQVRJTkcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjbGlja2FibGUtZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzcG90RGV0YWlsc0Rvd25sb2FkQ2xpY2tlZCgnREFUQVJPVycsIFJPV19EQVRBKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Rpc2FibGVkLWNsaWNrYWJsZS1kYXRhJzogZG93bmxvYWRJblByb2dyZXNzIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgUk9XX0RBVEEuZGlzcGxheUJvb2tlZFVuaXRzfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBzcG90LWRldGFpbHMtZG93bmxvYWQtaWNvbnNcIj5nZXRfYXBwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG93bmxvYWRJblByb2dyZXNzIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIFJPV19EQVRBLmludmVudG9yeUNvZGVJZCA9PSBzZWxlY3RlZEludmVudG9yeUlkRm9yRG93bmxvYWQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgUk9XX0RBVEEuZGVtb2dyYXBoaWMgPT0gc2VsZWN0ZWREZW1vZ3JhcGhpY0ZvckRvd25sb2FkIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjaXJjdWxhclByb2dyZXNzQmFyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgIT0gJ2Rlc2NyaXB0aW9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLm9iamVjdEtleV0gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN1YmxpbmUub2JqZWN0S2V5ID09ICdpbnZlbnRvcnlDb2RlJyAmJiBST1dfREFUQVsnaXNTZWxsZXJHcm91cCddICYmIGd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ1JBVElORycgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWkgbWRpLWluZm8tb3V0bGluZSBzZWxsZXItdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJzZWxsZXJIaWVyYXJjaHlUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbSBhdXRvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luZm89XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cImhpZXJhcmNoeS10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cImJpbmRUaGVWYWx1ZVRvU2VsbGVyR3JvdXBUb29sdGlwKFJPV19EQVRBLnNlbGxlckdyb3VwSGllcmFyY2h5LCBpbmZvKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cInN1YmxpbmUub2JqZWN0S2V5ID09ICdkaXNwbGF5Qm9va2VkQXZlcmFnZVJhdGluZycgJiYgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJyAmJiBST1dfREFUQVsnc2hvd1JhdGluZ0F2ZXJhZ2VJY29uJ10gXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWkgbWRpLWluZm8tb3V0bGluZSBzZWxsZXItdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20gYXV0b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJzZXRJc0RpZmZlcmVuY2UoUk9XX0RBVEEuaXNEaWZmZXJlbmNlTGVzc1RoYW4yNVBlcmNlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInBvc3RlZC1hdmctdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJwb3N0ZWRSYXRpbmdEaWZmZXJlbmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgPT0gJ2Rpc3BsYXlCb29rZWRBdmVyYWdlSW1wcmVzc2lvbicgJiYgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJyAmJiBST1dfREFUQVsnc2hvd0ltcHJlc3Npb25BdmVyYWdlSWNvbiddIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pIG1kaS1pbmZvLW91dGxpbmUgc2VsbGVyLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwic2V0SXNEaWZmZXJlbmNlKFJPV19EQVRBLmlzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJwb3N0ZWQtYXZnLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwicG9zdGVkSW1wRGlmZmVyZW5jZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgPT0gJ2Rlc2NyaXB0aW9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cIlJPV19EQVRBLmRlc2NyaXB0aW9uTWVzc2FnZSB8fCBST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsUmVmZXJlbmNlTnVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiUk9XX0RBVEEuZGVzY3JpcHRpb25NZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgUk9XX0RBVEEuZGVzY3JpcHRpb25NZXNzYWdlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsUmVmZXJlbmNlTnVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1haWwgUmVmOiB7eyBST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsUmVmZXJlbmNlTnVtIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cInt7IFJPV19EQVRBLmRlc2NyaXB0aW9uRGV0YWlsc1VybCB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJST1dfREFUQS5kZXNjcmlwdGlvbkRldGFpbHNVcmxUeXBlID09PSAnUERGJyB8fCBST1dfREFUQS5kZXNjcmlwdGlvbkRldGFpbHNVcmxUeXBlID09PSAnRVhDRUwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biB2aWV3RGV0YWlsc0FuZEVtYWlsQnRuXCI+RG93bmxvYWQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiUk9XX0RBVEEuYWN0aXZpdHluYW1lLnRvTG93ZXJDYXNlKCkgPT0gJ29yZGVyIG9uYm9hcmRlZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiUk9XX0RBVEEuZGVzY3JpcHRpb25EZXRhaWxzVXJsVHlwZSA9PT0gJ0xJTksnXCIgKGNsaWNrKT1cInZpZXdEZXRhaWxzQ2xpY2tlZChST1dfREFUQSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biB2aWV3RGV0YWlsc0FuZEVtYWlsQnRuIG9yZGVyLW9uYm9hcmRlZFwiPlZpZXcgZGV0YWlsczwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7eyBST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsVXJsIH19XCIgdGFyZ2V0PVwiX2JsYW5rXCIgKm5nSWY9XCJST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsVXJsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIHZpZXdEZXRhaWxzQW5kRW1haWxCdG5cIj5WaWV3IGVtYWlsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQgfCBhc3luYylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e251bGx9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGFubmEtY29yZS1uby1kYXRhLWxpYiBbd2lkdGhdPVwibm9EYXRhV2lkdGhcIiBbbWFyZ2luVG9wXT1cIm1hcmdpblRvcFwiICpuZ0lmPVwiKGlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQgfCBhc3luYylcIj4gPC9hbm5hLWNvcmUtbm8tZGF0YS1saWI+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBDaGVja2JveCB0ZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNmaWx0ZXJUb29sdGlwPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY29udGFpbmVyXCIgKm5nSWY9XCJzaG93RmlsdGVyVG9vbHRpcFRhYnNcIj5cclxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnZnVsbC13aWR0aCc6IGZpbHRlclRhYk9iamVjdHMubGVuZ3RoID09IDF9XCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmlsdGVyVGFiT2JqZWN0c1wiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImZpbHRlci10YWJcIiBbdGl0bGVdPVwiZGF0YS5sYWJlbFwiIChjbGljayk9XCJwb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8oZGF0YSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPT0gZGF0YS5rZXl9XCIgKm5nSWY9XCJmaWx0ZXJUYWJPYmplY3RzLmxlbmd0aCA+IDBcIj57eyBkYXRhLmxhYmVsIH19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1zb3J0XCIgKm5nSWY9XCJzaG93U29ydENvbXBvbmVudFwiPlxyXG4gICAgICAgIDxhbm5hLWNvcmUtc29ydC1saWIgIFtuZ0NsYXNzXT1cInsnbm8tYm90dG9tLWJvcmRlcic6ICFzaG93RmlsdGVyQ29tcG9uZW50fVwiXHJcbiAgICAgICAgKHNvcnRPcHRpb25DbGlja2VkKT1cInN0b3JlU29ydFR5cGVJblRlbXBWYXJpYWJsZSgkZXZlbnQpXCIgW3NvcnRPYmplY3RLZXldPVwiYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpb1wiPjwvYW5uYS1jb3JlLXNvcnQtbGliPlxyXG4gICAgPC9kaXY+XHJcbiAgICBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZpbHRlci10ZXh0LWJ0blwiIFtkaXNhYmxlZF09XCJkaXNhYmxlQ2xlYXJBbGxcIiAoY2xpY2spPVwidW5DaGVja0FsbENoZWNrYm94KClcIj5DbGVhciBhbGw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZpbHRlci10ZXh0LWJ0blwiIFtkaXNhYmxlZF09XCJkaXNhYmxlU2VsZWN0QWxsXCIgKGNsaWNrKT1cInNlbGVjdEFsbENoZWNrYm94KClcIj5TZWxlY3QgYWxsPC9idXR0b24+XHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIDxwIGNsYXNzPVwic2VhcmNoLWJveFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1pIG1kaS1zZWFyY2ggc2VhcmNoLWljb24gc2VhcmNoLWljb24tcG9zaXRpb25cIj48L2k+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDBweFwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaEl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VhcmNoRm9yVGhlSXRlbSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWNsb3NlIHNlYXJjaC1iYXItY2xvc2VcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGUtY2xvc2UtaWNvbic6ICghc2VhcmNoSXRlbSB8fCBzZWFyY2hJdGVtLmxlbmd0aCA9PSAwKSB9XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VhcmNoZWRJdGVtKClcIj48L2k+XHJcblxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246cmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgPCEtLSBUcmFjayBCeSBmdW5jIC0tPlxyXG4gICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IGl0ZW1TaXplPVwiMThcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodE9mQ2hlY2tib3hUb29sdGlwRmlsdGVyXCIgY2xhc3M9XCJkcm9wZG93bi1kYXRhLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPHAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgb3B0aW9uIG9mIHRvb2x0aXBPcHRpb25zXCIgY2xhc3M9XCJpbnB1dCBleGFtcGxlLWl0ZW1cIiAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RDaGVja2JveChvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvcHRpb24uaXNTZWxlY3RlZFwiIHJvbGU9XCJidXR0b25cIiBjbGFzcz1cIm1pIG1kaS1jaGVjay1ib3ggY2hlY2stYm94XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIW9wdGlvbi5pc1NlbGVjdGVkXCIgcm9sZT1cImJ1dHRvblwiIGNsYXNzPVwibWkgbWRpLWNoZWNrLWJveC1vdXRsaW5lLWJsYW5rIGNoZWNrLWJveCB1bmNoZWNrZWRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRhXCIgdGl0bGU9XCJ7eyBvcHRpb24udmFsdWUgfX1cIiBbaW5uZXJIVE1MXT1cIm9wdGlvbi5sYWJlbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBwb2ludGVyLWV2ZW50czpub25lXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlQ2hlY2tib3hGaWx0ZXIoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBkaXNhYmxlQ2hlY2tib3hBcHBseSB9XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5RmlsdGVycygpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVDaGVja2JveEFwcGx5XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIEFwcGx5XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd0ZpbHRlckNvbXBvbmVudFwiPih7eyBzZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID09IHRvb2x0aXBPcHRpb25zLmxlbmd0aCAmJiB0b29sdGlwT3B0aW9ucy5sZW5ndGggIT0gMCAmJiAhc2VhcmNoSXRlbT8gJ0FsbCc6IHNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgfX0pPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFNsaWRlciB0ZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNzbGlkZXJUb29sVGlwPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY29udGFpbmVyXCIgKm5nSWY9XCJzaG93RmlsdGVyVG9vbHRpcFRhYnNcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpbHRlclRhYk9iamVjdHNcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJmaWx0ZXItdGFiXCIgW3RpdGxlXT1cImRhdGEubGFiZWxcIiAoY2xpY2spPVwicG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGRhdGEpXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvID09IGRhdGEua2V5fVwiICpuZ0lmPVwiZmlsdGVyVGFiT2JqZWN0cy5sZW5ndGggPiAwXCI+e3sgZGF0YS5sYWJlbCB9fTwvcD4gICBcclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8YnV0dG9uIGNsYXNzPVwiY29sdW1uLWNsZWFyLWFsbCBhbGlnbi1jZW50ZXJcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5cclxuICAgICAgICBDbGVhciBmaWx0ZXJcclxuICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICBcclxuICAgIDxhbm5hLWNvcmUtc29ydC1saWIgKm5nSWY9XCJzaG93U29ydENvbXBvbmVudFwiIFtuZ0NsYXNzXT1cInsnbm8tYm90dG9tLWJvcmRlcic6ICFzaG93RmlsdGVyQ29tcG9uZW50fVwiXHJcbiAgICAoc29ydE9wdGlvbkNsaWNrZWQpPVwic3RvcmVTb3J0VHlwZUluVGVtcFZhcmlhYmxlKCRldmVudClcIiBbc29ydE9iamVjdEtleV09XCJhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXCI+PC9hbm5hLWNvcmUtc29ydC1saWI+XHJcbiAgICBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5DbGVhciBmaWx0ZXI8L2J1dHRvbj5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1pbi1tYXhDb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2xpZGVyLXRleHRcIlxyXG4gICAgICAgICAgICAgICAgc3RlcD1cInt7IHNsaWRlckZpbHRlclRleHRCb3hTdGVwIH19XCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2xpZGVyTWluVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibWluVmFsdWVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydyZWQtYm9yZGVyJzogc2hvd1NsaWRlck1pblZhbHVlRXJyb3J9XCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTWluXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPHNwYW4+VG88L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNsaWRlci10ZXh0XCJcclxuICAgICAgICAgICAgICAgIHN0ZXA9XCJ7eyBzbGlkZXJGaWx0ZXJUZXh0Qm94U3RlcCB9fVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNsaWRlck1heFZhbHVlXCJcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1heFZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncmVkLWJvcmRlcic6IHNob3dTbGlkZXJNYXhWYWx1ZUVycm9yfVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk1heFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlYmFyLXNsaWRlclwiPlxyXG4gICAgICAgICAgICA8bmd4LXNsaWRlclxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydzaG93LW1pbic6IHNsaWRlck1pblZhbHVlICE9IG9wdGlvbnMuZmxvb3IsICdzaG93LW1heCc6IHNsaWRlck1heFZhbHVlICE9IG9wdGlvbnMuY2VpbH1cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItc2xpZGVyXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzbGlkZXJNaW5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBbaGlnaFZhbHVlXT1cInNsaWRlck1heFZhbHVlXCJcclxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxyXG4gICAgICAgICAgICA+PC9uZ3gtc2xpZGVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsU2xpZGVyRmlsdGVyKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uIH1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlTbGlkZXJGaWx0ZXIoKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlU2xpZGVyQXBwbHlCdXR0b25cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgQXBwbHlcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBEYXRlIFBpY2tlciBUZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNkYXRlUGlja2VyVG9vbHRpcD5cclxuICAgIDxkaXYgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIiAqbmdJZj1cInNob3dGaWx0ZXJUb29sdGlwVGFic1wiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmlsdGVyVGFiT2JqZWN0c1wiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImZpbHRlci10YWJcIiBbdGl0bGVdPVwiZGF0YS5sYWJlbFwiIChjbGljayk9XCJwb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8oZGF0YSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPT0gZGF0YS5rZXl9XCIgKm5nSWY9XCJmaWx0ZXJUYWJPYmplY3RzLmxlbmd0aCA+IDBcIj57eyBkYXRhLmxhYmVsIH19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGFubmEtY29yZS1zb3J0LWxpYiAqbmdJZj1cInNob3dTb3J0Q29tcG9uZW50XCIgW25nQ2xhc3NdPVwieyduby1ib3R0b20tYm9yZGVyJzogIXNob3dGaWx0ZXJDb21wb25lbnR9XCJcclxuICAgIChzb3J0T3B0aW9uQ2xpY2tlZCk9XCJzdG9yZVNvcnRUeXBlSW5UZW1wVmFyaWFibGUoJGV2ZW50KVwiIFtzb3J0T2JqZWN0S2V5XT1cImFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW9cIj48L2FubmEtY29yZS1zb3J0LWxpYj5cclxuICAgIFxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWx0ZXJDb21wb25lbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5cclxuICAgICAgICAgICAgICAgIENsZWFyIGZpbHRlclxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGFubmEtY29yZS1jYWxlbmRhci1maWx0ZXItbGliXHJcbiAgICAgICAgICAgICAgICBbbWluRGF0ZV09XCJjYWxlbmRhck1pbkVuYWJsZWREYXRlXCJcclxuICAgICAgICAgICAgICAgIFttYXhEYXRlXT1cImNhbGVuZGFyTWF4RW5hYmxlZERhdGVcIlxyXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkRnJvbURhdGVdPVwic2VsZWN0ZWRNaW5EYXRlXCJcclxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZFRvRGF0ZV09XCJzZWxlY3RlZE1heERhdGVcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkRGF0ZSkgPSBcImNhbGVuZGFyRGF0ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2VsZWN0ZWRMYWJlbFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9hbm5hLWNvcmUtY2FsZW5kYXItZmlsdGVyLWxpYj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsSW5EYXRlRmlsdGVyKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFwcGx5RGF0ZUZpbHRlcigpXCIgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG4gfVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVDYWxlbmRhckFwcGx5QnRuXCI+QXBwbHk8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgXHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFdlZWsgUGlja2VyIFRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI3dlZWtQaWNrZXJUb29sVGlwPlxyXG4gICAgPGRpdiBjbGFzcz1cIndlZWtwaWNrZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGFubmEtY29yZS13ZWVrLWNhbGVuZGFyLWZpbHRlci1saWJcclxuICAgICAgICAgICAgW3dlZWstY2FsZW5kYXItY29uZmlnXT1cImd0R2VuZXJhbENvbmZpZy5tdWx0aVdlZWtQaWNrZXJDb25maWdcIlxyXG4gICAgICAgICAgICAoYXBwbHkpPVwiYXBwbHlXZWVrRmlsdGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICBbZnJvbS1kYXRlXT1cImNhbGVuZGFyTWluRW5hYmxlZERhdGVcIlxyXG4gICAgICAgICAgICBbdG8tZGF0ZV09XCJjYWxlbmRhck1heEVuYWJsZWREYXRlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9hbm5hLWNvcmUtd2Vlay1jYWxlbmRhci1maWx0ZXItbGliPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFRpbWUgRmlsdGVyIFRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI3RpbWVGaWx0ZXJUb29sVGlwPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY29udGFpbmVyXCIgKm5nSWY9XCJzaG93RmlsdGVyVG9vbHRpcFRhYnNcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpbHRlclRhYk9iamVjdHNcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJmaWx0ZXItdGFiXCIgW3RpdGxlXT1cImRhdGEubGFiZWxcIiAoY2xpY2spPVwicG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGRhdGEpXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvID09IGRhdGEua2V5fVwiICpuZ0lmPVwiZmlsdGVyVGFiT2JqZWN0cy5sZW5ndGggPiAwXCI+e3sgZGF0YS5sYWJlbCB9fTwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxhbm5hLWNvcmUtc29ydC1saWIgKm5nSWY9XCJzaG93U29ydENvbXBvbmVudFwiIFtuZ0NsYXNzXT1cInsnbm8tYm90dG9tLWJvcmRlcic6ICFzaG93RmlsdGVyQ29tcG9uZW50fVwiXHJcbiAgICAoc29ydE9wdGlvbkNsaWNrZWQpPVwic3RvcmVTb3J0VHlwZUluVGVtcFZhcmlhYmxlKCRldmVudClcIiBbc29ydE9iamVjdEtleV09XCJhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXCI+PC9hbm5hLWNvcmUtc29ydC1saWI+XHJcbiAgICBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5DbGVhciBmaWx0ZXI8L2J1dHRvbj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidGltZS1maWx0ZXItY2hlY2tib3hlc1wiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnU1BPVERFVEFJTFMnIHx8IGd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ0VYQ0xVREVJTlZFTlRPUllQT1BVUCcgfHwgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJ1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tIE11bHRpIHRpbWUgb3B0aW9uIGNoZWNrYm94IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwicGFkZGluZzogMC41cmVtIDAgMC41cmVtIDAuNXJlbVwiICpuZ0lmPVwic2hvd011bHRpVGltZUNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RNdWx0aVRpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhbXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtdW5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0T3JVbnNlbGVjdE11bHRpVGltZUNoZWNrYm94KClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAycHhcIj5JbmNsdWRlIE11bHRpPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBaZXJvIHRpbWUgb3B0aW9uIGNoZWNrYm94IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwicGFkZGluZzogMC41cmVtIDAgMC41cmVtIDAuNXJlbVwiICpuZ0lmPVwic2hvd1plcm9UaW1lQ2hlY2tib3hcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ6ZXJvVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0WmVyb1RpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhemVyb1RpbWVDaGVja2JveENoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC11bmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0WmVyb1RpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4XCI+SW5jbHVkZSBaZXJvPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBFbnRlciB0aW1lIHJhbmdlIG9wdGlvbiBjaGVja2JveCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cInBhZGRpbmc6IDAuNXJlbSAwIDAuNXJlbSAwLjVyZW1cIiAqbmdJZj1cInNob3dFbnRlclRpbWVDaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVudGVyVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0RW50ZXJUaW1lQ2hlY2tib3goKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tfYm94XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWVudGVyVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RFbnRlclRpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4XCI+RW50ZXIgdGltZSByYW5nZTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtbGFiZWwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD5Gcm9tPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIG51bWJlcklucHV0XCIgW25nQ2xhc3NdPVwieydlcnJvci1ib3JkZXInOiBzdGFydFRpbWVIb3VyRXJyfVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRGcm9tVGltZVswXVwiIHR5cGU9XCJ0ZXh0XCIgKG5nTW9kZWxDaGFuZ2UpPVwic3RhcnRUaW1lSG91ckNoYW5nZSgkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLXRyaWFuZ2xlIHVwd2FyZFwiIChjbGljayk9XCJjaGFuZ2VTdGFydFRpbWVIb3VyKHRydWUpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLXRyaWFuZ2xlIGRvd253YXJkXCIgKGNsaWNrKT1cImNoYW5nZVN0YXJ0VGltZUhvdXIoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj46PC9zcGFuPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbnVtYmVySW5wdXRcIiBbbmdDbGFzc109XCJ7J2Vycm9yLWJvcmRlcic6IHN0YXJ0VGltZU1pbkVycn1cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRnJvbVRpbWVbMV1cIiB0eXBlPVwidGV4dFwiIChuZ01vZGVsQ2hhbmdlKT1cInN0YXJ0VGltZU1pbkNoYW5nZSgkZXZlbnQpXCIvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktdHJpYW5nbGUgdXB3YXJkXCIgKGNsaWNrKT1cImNoYW5nZVN0YXJ0VGltZU1pbnV0ZSh0cnVlKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS10cmlhbmdsZSBkb3dud2FyZFwiIChjbGljayk9XCJjaGFuZ2VTdGFydFRpbWVNaW51dGUoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRnJvbVRpbWVbMl1cIiAobmdNb2RlbENoYW5nZSk9XCJkaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJBTVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BTTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cIlBNXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlBNPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtbGFiZWwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD5UbzwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBudW1iZXJJbnB1dFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUb1RpbWVbMF1cIiBbbmdDbGFzc109XCJ7J2Vycm9yLWJvcmRlcic6IGVuZFRpbWVIb3VyRXJyfVwiIChuZ01vZGVsQ2hhbmdlKT1cImVuZFRpbWVIb3VyQ2hhbmdlKCRldmVudClcIiB0eXBlPVwidGV4dFwiIC8+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcnJvdy1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS10cmlhbmdsZSB1cHdhcmRcIiAoY2xpY2spPVwiY2hhbmdlRW5kVGltZUhvdXIodHJ1ZSlcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktdHJpYW5nbGUgZG93bndhcmRcIiAoY2xpY2spPVwiY2hhbmdlRW5kVGltZUhvdXIoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj46PC9zcGFuPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbnVtYmVySW5wdXRcIiBbbmdDbGFzc109XCJ7J2Vycm9yLWJvcmRlcic6IGVuZFRpbWVNaW5FcnJ9XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRvVGltZVsxXVwiIChuZ01vZGVsQ2hhbmdlKT1cImVuZFRpbWVNaW5DaGFuZ2UoJGV2ZW50KVwiIHR5cGU9XCJ0ZXh0XCIgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLXRyaWFuZ2xlIHVwd2FyZFwiIChjbGljayk9XCJjaGFuZ2VFbmRUaW1lTWludXRlKHRydWUpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLXRyaWFuZ2xlIGRvd253YXJkXCIgKGNsaWNrKT1cImNoYW5nZUVuZFRpbWVNaW51dGUoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVG9UaW1lWzJdXCIgKG5nTW9kZWxDaGFuZ2UpPVwiZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiQU1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QU08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJQTVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5QTTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlVGltZUZpbHRlcigpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gfVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhcHBseVRpbWVGaWx0ZXJzKClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0blwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICBBcHBseVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbHVtbkluZm9Ub29sdGlwPlxyXG4gIDxwIHN0eWxlPVwicGFkZGluZzogMC41cmVtOyBjb2xvcjogYmxhY2s7d2hpdGUtc3BhY2U6IG5vd3JhcDtcIj5UaGlzIHByZWVtcHRpb24gaXMgcmVqZWN0ZWQgYW5kIG5vdCBtYXJrZWQgZm9yIGNyZWRpdC48L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3JhdGluZ0luZm9Ub29sdGlwPlxyXG4gICAgPHAgY2xhc3M9XCJmaXJzdC1yb3dcIj5TaG93cyAnQm9va2VkIFJhdGluZycgZm9yIFByZWVtcHRpb25zICYgTWFrZUdvb2QgT2ZmZXJlZCBzcG90KHMpLjwvcD5cclxuICAgIDxwIGNsYXNzPVwic2Vjb25kLXJvd1wiPlNob3dzICdQcm9qZWN0ZWQgUmF0aW5nJyBmb3IgQURVIE9mZmVyZWQgc3BvdChzKS48L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2ltcHNJbmZvVG9vbHRpcD5cclxuICAgIDxwIGNsYXNzID1cImZpcnN0LXJvd1wiID5TaG93cyAnQm9va2VkIElNUFMnIGZvciBQcmVlbXB0aW9ucyAmIE1ha2VHb29kIE9mZmVyZWQgc3BvdChzKS48L3A+XHJcbiAgICA8cCBjbGFzcz1cInNlY29uZC1yb3dcIiA+U2hvd3MgJ1Byb2plY3RlZCBJTVBTJyBmb3IgQURVIE9mZmVyZWQgc3BvdChzKS48L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Nwb3RzQ29sdW1uRXF1aXZhbGl6YXRpb25NZXNzYWdlVG9vbHRpcD5cclxuICAgIDxwIGNsYXNzPVwic3BvdC1jb2x1bW4tdG9vbHRpcC1tZXNzYWdlXCIgPlRoaXMgY29uc2lzdHMgb2YgZXF1aXZhbGl6ZWQgc3BvdHMgYW5kIHVuLWVxdWl2YWxpemVkIFBhaWQgUHJvZ3JhbXMgJiB1bi1lcXVpdmFsaXplZCBOb24tc3BvdHMuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNyYXRlSW5mb1Rvb2x0aXA+XHJcbiAgICA8cCBjbGFzcyA9XCJmaXJzdC1yb3dcIiA+U2hvd3MgJ0Jvb2tlZCBSYXRlJyBmb3IgUHJlZW1wdGlvbnMgJiBNYWtlR29vZCBPZmZlcmVkIHNwb3QocykuPC9wPlxyXG4gICAgPHAgY2xhc3M9XCJzZWNvbmQtcm93XCIgPlNob3dzICdQcm9qZWN0ZWQgJCBWYWx1ZScgZm9yIEFEVSBPZmZlcmVkIHNwb3QocykuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzZWxsZXJIaWVyYXJjaHlUb29sdGlwPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGxlckdyb3VwSGllcmFyY2h5Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcyA9IFwiaGllcmFyY2h5LXRhYmxlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInNlbGxlci1oaWVyYXJjaHktdGFibGVcIj5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aD4jPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+SW52ZW50b3J5IENvZGVzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+UHJvZ3JhbS9EZXNjcmlwdGlvbjwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygc2VsbGVyR3JvdXBIaWVyYXJjaHk7IGxldCB0b29sdGlwSW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD57eyB0b29sdGlwSW5kZXggKyAxIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGRhdGEuSW52ZW50b3J5Q29kZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZGF0YS5Qcm9ncmFtIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxsZXJHcm91cEhpZXJhcmNoeS5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwiY29sb3I6ICMwMDBcIj5TZWxsZXIgZ3JvdXAgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBpbnZlbnRvcnkgY29kZTwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNsdXJWaW9sYXRpb25JbmZvVG9vbHRpcD5cclxuICAgIDxwIGNsYXNzID1cImZpcnN0LXJvd1wiID5UaGUgdmFsdWVzIGFyZSBmb3IgdGhlIGVudGlyZSB3ZWVrLjwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcG9zdGVkUmF0aW5nRGlmZmVyZW5jZT5cclxuICAgIDxwIGNsYXNzPVwiZGlmZmVyZW5jZS10ZXh0XCI+VGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBwb3N0ZWQgYW5kIGJvb2tlZCBhdmVyYWdlIHJhdGluZyBpcyB7e2lzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50ID8gJ2xlc3MnIDogJ21vcmUnfX0gdGhhbiAyNSUuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNwb3N0ZWRJbXBEaWZmZXJlbmNlPlxyXG4gICAgPHAgY2xhc3M9XCJkaWZmZXJlbmNlLXRleHRcIj5UaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHBvc3RlZCBhbmQgYm9va2VkIGF2ZXJhZ2UgaW1wcmVzc2lvbiBpcyB7e2lzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50ID8gJ2xlc3MnIDogJ21vcmUnfX0gdGhhbiAyNSUuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNvbmdvaW5nUmV2Qm9va2VkQ29sdW1uVG9vbHRpcD5cclxuICAgIDxwPlRoZSBCb29rZWQgJCB2YWx1ZSwgU3BvdHMsIEdSUCwgQ1BQLCBJTVBTLCBDUE0gY29ycmVzcG9uZHMgb24gdGhlIGxhc3QgcGVybWFuZW50IHJldmlzaW9uIGdlbmVyYXRlZDwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29tcGxldGVkUmV2Qm9va2VkQ29sdW1uVG9vbHRpcD5cclxuICAgIDxwPlRoZSBCb29rZWQgJCB2YWx1ZSBjb3JyZXNwb25kcyBvbiB0aGUgbGFzdCBwZXJtYW5lbnQgcmV2aXNpb24gZ2VuZXJhdGVkPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjaXJjdWxhclByb2dyZXNzQmFyPlxyXG4gICAgPGNpcmNsZS1wcm9ncmVzc1xyXG4gICAgICAgIFtwZXJjZW50XT1cInBlcmNlbnREb25lXCJcclxuICAgICAgICBbcmFkaXVzXT1cIjVcIlxyXG4gICAgICAgIFtzaG93VGl0bGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtzaG93VW5pdHNdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtzaG93U3VidGl0bGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtvdXRlclN0cm9rZVdpZHRoXT1cIjNcIlxyXG4gICAgICAgIFtpbm5lclN0cm9rZVdpZHRoXT1cIjNcIlxyXG4gICAgICAgIFtzcGFjZV09XCItM1wiXHJcbiAgICAgICAgW291dGVyU3Ryb2tlQ29sb3JdPVwiJyMyNjhiZmYnXCJcclxuICAgICAgICBbaW5uZXJTdHJva2VDb2xvcl09XCInI2Q1ZDVkNSdcIlxyXG4gICAgICAgIFthbmltYXRpb25EdXJhdGlvbl09XCIxMFwiXHJcbiAgICA+PC9jaXJjbGUtcHJvZ3Jlc3M+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==