commons-assessment 12.0.12 → 12.0.13

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.
@@ -467,8 +467,8 @@ export class AssessmentBuilderComponent {
467
467
  customRegex: '',
468
468
  hintText: '',
469
469
  questionMedia: '',
470
- childQuestions: [[]],
471
- skillCodes: [[]]
470
+ childQuestions: [],
471
+ skillCodes: []
472
472
  });
473
473
  const optionsControl = this.questionsFormGroup.get('options');
474
474
  while (optionsControl.length !== 0) {
@@ -614,4 +614,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
614
614
  type: ViewChild,
615
615
  args: ['scrollContainer']
616
616
  }] } });
617
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1idWlsZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbnMtYXNzZXNzbWVudC9zcmMvbGliL21vZHVsZXMvYXNzZXNzbWVudC1tYWtlci9jb21wb25lbnRzL2Fzc2Vzc21lbnQtYnVpbGRlci9hc3Nlc3NtZW50LWJ1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LW1ha2VyL2NvbXBvbmVudHMvYXNzZXNzbWVudC1idWlsZGVyL2Fzc2Vzc21lbnQtYnVpbGRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFBcUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQztBQU16RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBUW5FLE1BQU0sT0FBTywwQkFBMEI7SUFxQm5DLFlBQ1ksV0FBd0IsRUFDeEIsd0JBQWtELEVBQ2xELHNCQUE4QyxFQUMvQyxTQUFtRCxFQUMxQixVQUFlO1FBSnZDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUMvQyxjQUFTLEdBQVQsU0FBUyxDQUEwQztRQUMxQixlQUFVLEdBQVYsVUFBVSxDQUFLO1FBekJuRCxnQkFBVyxHQUE4QixFQUFFLENBQUM7UUFDNUMsZ0JBQVcsR0FBOEIs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LENBQUMsQ0FBQztTQUM5QjtRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVPLFdBQVc7UUFDZixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUU7WUFDNUQsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ3JELENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNUO0lBQ0wsQ0FBQzs7d0hBem5CUSwwQkFBMEIsdUpBMEJ2QixlQUFlOzRHQTFCbEIsMEJBQTBCLHNMQ2hCdkMsczRqQ0EyWk07NEZEM1lPLDBCQUEwQjtrQkFOdEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxXQUFXLEVBQUUscUNBQXFDO29CQUNsRCxTQUFTLEVBQUUsQ0FBQyxxQ0FBcUMsQ0FBQztpQkFDckQ7OzBCQTRCUSxNQUFNOzJCQUFDLGVBQWU7NENBbkJHLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBRdWVzdGlvblR5cGUsIFJlZkRhdGEgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlcy9hc3Nlc3NtZW50LmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEFzc2Vzc21lbnRRdWVzdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9pbnRlcmZhY2VzL3F1ZXN0aW9uLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEFzc2Vzc21lbnRNYWtlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hc3Nlc3NtZW50LW1ha2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRdWVzdGlvblBhcGVyU2VjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9pbnRlcmZhY2VzL3F1ZXN0aW9uLXBhcGVyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEFzc2Vzc21lbnRCdWlsZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Fzc2Vzc21lbnQtYnVpbGRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZGVlcENsb25lLCBnZW5lcmF0ZVV1aWQgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvdXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi1hcHAtYXNzZXNzbWVudC1idWlsZGVyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9hc3Nlc3NtZW50LWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYXNzZXNzbWVudC1idWlsZGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBBc3Nlc3NtZW50QnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBsYWJlbENvbmZpZzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG4gICAgaW1hZ2VDb25maWc6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICAgIHF1ZXN0aW9uVHlwZXM6IFF1ZXN0aW9uVHlwZVtdID0gW107XHJcbiAgICBxdWVzdGlvbkRldGFpbHM6IEFzc2Vzc21lbnRRdWVzdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gICAgcnVsZXM6IGFueSA9IHt9O1xyXG4gICAgcXVlc3Rpb25TdGFjazogeyBwYXJlbnRGb3JtVmFsdWU6IEFzc2Vzc21lbnRRdWVzdGlvbiwgZWRpdGluZ1F1ZXN0aW9uSW5kZXg/OiBudW1iZXIsIGFkZGluZ1RvR3JvdXBJZD86IHN0cmluZyB9W10gPSBbXTtcclxuICAgIEBWaWV3Q2hpbGQoJ3Njcm9sbENvbnRhaW5lcicpIHNjcm9sbENvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgY2hpbGRRdWVzdGlvbkdyb3VwczogeyBpZDogc3RyaW5nLCBvcHRpb25JZDogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCwgcXVlc3Rpb25JZHM6IChzdHJpbmcgfCBudW1iZXIpW10gfVtdID0gW107XHJcblxyXG4gICAgcXVlc3Rpb25zRm9ybUdyb3VwITogRm9ybUdyb3VwO1xyXG4gICAgcXVlc3Rpb25CYW5rOiBSZWNvcmQ8bnVtYmVyLCBBc3Nlc3NtZW50UXVlc3Rpb24+ID0ge307XHJcbiAgICBpc0NoaWxkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAvLyBwYXJlbnRRdWVzdGlvbjogQXNzZXNzbWVudFF1ZXN0aW9uIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgYXNzZXNzbWVudElkOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIGlzU3VibWl0dGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgc2tpbGxzTGlzdDogUmVmRGF0YVtdID0gW107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBhc3Nlc3NtZW50QnVpbGRlclNlcnZpY2U6IEFzc2Vzc21lbnRCdWlsZGVyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGFzc2Vzc21lbnRNYWtlclNlcnZpY2U6IEFzc2Vzc21lbnRNYWtlclNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEFzc2Vzc21lbnRCdWlsZGVyQ29tcG9uZW50PixcclxuICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRpYWxvZ0RhdGE6IGFueSxcclxuICAgICkgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5sYWJlbENvbmZpZyA9IHRoaXMuZGlhbG9nRGF0YT8ubGFiZWxDb25maWc7XHJcbiAgICAgICAgdGhpcy5pbWFnZUNvbmZpZyA9IHRoaXMuZGlhbG9nRGF0YT8uaW1hZ2VDb25maWc7XHJcbiAgICAgICAgdGhpcy5ydWxlcyA9IHRoaXMuZGlhbG9nRGF0YT8ucnVsZXM7XHJcbiAgICAgICAgdGhpcy5xdWVzdGlvblR5cGVzID0gdGhpcy5kaWFsb2dEYXRhPy5xdWVzdGlvblR5cGVzO1xyXG4gICAgICAgIHRoaXMucXVlc3Rpb25CYW5rID0gdGhpcy5kaWFsb2dEYXRhPy5xdWVzdGlvbkJhbms7XHJcbiAgICAgICAgdGhpcy5pc0NoaWxkID0gdGhpcy5kaWFsb2dEYXRhPy5pc0NoaWxkO1xyXG4gICAgICAgIHRoaXMuc2tpbGxzTGlzdCA9IHRoaXMuZGlhbG9nRGF0YT8uc2tpbGxzTGlzdCB8fCBbXTtcclxuICAgICAgICB0aGlzLmFzc2Vzc21lbnRJZCA9IHRoaXMuZGlhbG9nRGF0YT8uYXNzZXNzbWVudElkO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5kaWFsb2dEYXRhLnF1ZXN0aW9uRGV0YWlscykge1xyXG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uRGV0YWlscyA9IGRlZXBDbG9uZSh0aGlzLmRpYWxvZ0RhdGE/LnF1ZXN0aW9uRGV0YWlscyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0dXBGb3JtR3JvdXAoKTtcclxuICAgICAgICB0aGlzLmFwcGx5RHluYW1pY1ZhbGlkYXRvcnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZUNoaWxkUXVlc3Rpb25MaXN0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzQ2hpbGQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB1bmlxdWVJZHMgPSBuZXcgU2V0PG51bWJlcj4oKTtcclxuXHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbkRldGFpbHM/LmRlZmF1bHRPcHRpb25zTGlzdD8uZm9yRWFjaChvcHRpb24gPT4ge1xyXG4gICAgICAgICAgICBvcHRpb24uY2hpbGRRdWVzdGlvbkxpc3Q/LmZvckVhY2goaWQgPT4gdW5pcXVlSWRzLmFkZChpZCkpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh1bmlxdWVJZHMpPy5tYXAoaWQgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5xdWVzdGlvbkJhbmtbaWRdID8gZGVlcENsb25lKHRoaXMucXVlc3Rpb25CYW5rW2lkXSkgOiBudWxsO1xyXG4gICAgICAgIH0pPy5maWx0ZXIoQm9vbGVhbikgYXMgQXNzZXNzbWVudFF1ZXN0aW9uW107XHJcbiAgICB9XHJcblxyXG4gICAgc2V0dXBGb3JtR3JvdXAoKSB7XHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbnNGb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICAgICAgcXVlc3Rpb25UeXBlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICBxdWVzdGlvblRleHQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uU3ViVGV4dDogWycnXSxcclxuICAgICAgICAgICAgaXNGaWx0ZXJFbmFibGVkOiBbZmFsc2VdLFxyXG4gICAgICAgICAgICBpc01hbmRhdG9yeTogW2ZhbHNlXSxcclxuICAgICAgICAgICAgLy8gdmlzaWJpbGl0eTogW3RydWVdLFxyXG4gICAgICAgICAgICB0b3RhbE1hcmtzOiBbbnVsbF0sXHJcbiAgICAgICAgICAgIG1pbkNoYXJhY3RlckNvdW50OiBbbnVsbF0sXHJcbiAgICAgICAgICAgIG1heENoYXJhY3RlckNvdW50OiBbbnVsbF0sXHJcbiAgICAgICAgICAgIG1heGltdW1OdW1iZXJPZk9wdGlvbjogW251bGxdLFxyXG4gICAgICAgICAgICBtaW5pbXVtTnVtYmVyT2ZPcHRpb246IFtudWxsXSxcclxuICAgICAgICAgICAgbWF4RmlsZVNpemU6IFtudWxsXSxcclxuICAgICAgICAgICAgbWF4Tm9PZkZpbGVzOiBbbnVsbF0sXHJcbiAgICAgICAgICAgIGN1c3RvbVJlZ2V4OiBbJyddLFxyXG4gICAgICAgICAgICBoaW50VGV4dDogWycnXSxcclxuICAgICAgICAgICAgcXVlc3Rpb25NZWRpYTogWycnXSxcclxuICAgICAgICAgICAgb3B0aW9uczogdGhpcy5mb3JtQnVpbGRlci5hcnJheShbXSksXHJcbiAgICAgICAgICAgIGNoaWxkUXVlc3Rpb25zOiBbW11dLFxyXG4gICAgICAgICAgICBza2lsbENvZGVzOiBbW11dXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMucXVlc3Rpb25zRm9ybUdyb3VwLmdldCgncXVlc3Rpb25UeXBlJyk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFwcGx5RHluYW1pY1ZhbGlkYXRvcnMoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAodGhpcy5xdWVzdGlvbkRldGFpbHMpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZUZvcm0odGhpcy5xdWVzdGlvbkRldGFpbHMsIHRydWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYnVpbGRDaGlsZFF1ZXN0aW9uR3JvdXBzKFtdKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcG9wdWxhdGVGb3JtKHF1ZXN0aW9uRGV0YWlsczogQXNzZXNzbWVudFF1ZXN0aW9uLCBidWlsZENoaWxkR3JvdXBzOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgICAgICBpZiAoIXF1ZXN0aW9uRGV0YWlscykgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGNoaWxkUXVlc3Rpb25zID0gcXVlc3Rpb25EZXRhaWxzPy5jaGlsZFF1ZXN0aW9ucyB8fCB0aGlzLmdlbmVyYXRlQ2hpbGRRdWVzdGlvbkxpc3QoKTtcclxuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMuYXNzZXNzbWVudEJ1aWxkZXJTZXJ2aWNlLmdldFF1ZXN0aW9uRFRPKHsgLi4ucXVlc3Rpb25EZXRhaWxzLCBjaGlsZFF1ZXN0aW9ucyB9KTtcclxuICAgICAgICB0aGlzLnF1ZXN0aW9uc0Zvcm1Hcm91cC5wYXRjaFZhbHVlKGZvcm1EYXRhKTtcclxuICAgICAgICBpZiAoZm9ybURhdGEub3B0aW9ucz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsTWFya3MgPSBOdW1iZXIoZm9ybURhdGEudG90YWxNYXJrcykgfHwgMDtcclxuICAgICAgICAgICAgZm9ybURhdGEub3B0aW9ucy5mb3JFYWNoKChvcHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0R3JvdXAgPSB0aGlzLmNyZWF0ZU9wdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRvdGFsTWFya3MgPiAwICYmIG9wdC53ZWlnaHQgIT09IHVuZGVmaW5lZCAmJiBvcHQud2VpZ2h0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3B0LndlaWdodCA9IHBhcnNlRmxvYXQoKChOdW1iZXIob3B0LndlaWdodCkgKiB0b3RhbE1hcmtzKSAvIDEwMCkudG9GaXhlZCgyKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBvcHRHcm91cC5wYXRjaFZhbHVlKG9wdCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucHVzaChvcHRHcm91cCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYnVpbGRDaGlsZEdyb3Vwcykge1xyXG4gICAgICAgICAgICB0aGlzLmJ1aWxkQ2hpbGRRdWVzdGlvbkdyb3VwcyhjaGlsZFF1ZXN0aW9ucyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG9uU3VibWl0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLnF1ZXN0aW9uc0Zvcm1Hcm91cC5pbnZhbGlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25zRm9ybUdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdG90YWxNYXJrcyA9IE51bWJlcih0aGlzLnF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ3RvdGFsTWFya3MnKT8udmFsdWUpIHx8IDA7XHJcbiAgICAgICAgY29uc3QgcVR5cGUgPSB0aGlzLnF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ3F1ZXN0aW9uVHlwZScpPy52YWx1ZTtcclxuICAgICAgICBjb25zdCBvcHRpb25zVmFsdWVzID0gdGhpcy5xdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdvcHRpb25zJyk/LnZhbHVlIHx8IFtdO1xyXG4gICAgICAgIGNvbnN0IHNob3dXZWlnaHRhZ2UgPSB0aGlzLnNob3dGaWVsZCgnb3B0aW9ucycsICdzaG93V2VpZ2h0YWdlJyk7XHJcblxyXG4gICAgICAgIGlmIChzaG93V2VpZ2h0YWdlICYmIHRvdGFsTWFya3MgPiAwKSB7XHJcbiAgICAgICAgICAgIGxldCB0b3RhbFdlaWdodHMgPSAwO1xyXG4gICAgICAgICAgICBsZXQgaGFzSW52YWxpZFdlaWdodCA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgZm9yIChjb25zdCBvcHQgb2Ygb3B0aW9uc1ZhbHVlcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9wdC5pc0FjdGl2ZSA9PT0gZmFsc2UpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdyA9IE51bWJlcihvcHQud2VpZ2h0KSB8fCAwO1xyXG4gICAgICAgICAgICAgICAgaWYgKHcgPiB0b3RhbE1hcmtzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzSW52YWxpZFdlaWdodCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0b3RhbFdlaWdodHMgKz0gdztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGhhc0ludmFsaWRXZWlnaHQpIHtcclxuICAgICAgICAgICAgICAgIC8vIFRvIGtlZXAgd2l0aGluIGV4aXN0aW5nIHN0eWxlcywgZW1pdHRpbmcgZGVmYXVsdCBlcnJvciB3aXRoIG91ciBzcGVjaWZpYyBtZXNzYWdlXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0RhdGE/LnNuYWNrYmFyTWVzc2FnZUVtaXR0ZXI/LmVtaXQoeyBtZXNzYWdlOiB0aGlzLmxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuVE9BU1QuT1BUSU9OX1NDT1JFX0dSRUFURVJfVEhBTl9UT1RBTF9NQVJLUyddLCB0eXBlOiAnZXJyb3InIH0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAocVR5cGUgPT09ICdRVUVTVElPTl9UWVBFLk1VTFRJX1NFTEVDVCcgJiYgdG90YWxXZWlnaHRzID4gdG90YWxNYXJrcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dEYXRhPy5zbmFja2Jhck1lc3NhZ2VFbWl0dGVyPy5lbWl0KHsgbWVzc2FnZTogdGhpcy5sYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlRPQVNULlNVTV9PRl9PUFRJT05fU0NPUkVTX0dSRUFURVJfVEhBTl9UT1RBTF9NQVJLUyddLCB0eXBlOiAnZXJyb3InIH0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmlzU3VibWl0dGluZyA9IHRydWU7XHJcblxyXG4gICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IGRlZXBDbG9uZSh0aGlzLnF1ZXN0aW9uc0Zvcm1Hcm91cC52YWx1ZSk7XHJcbiAgICAgICAgaWYgKHNob3dXZWlnaHRhZ2UgJiYgdG90YWxNYXJrcyA+IDAgJiYgZm9ybVZhbHVlLm9wdGlvbnM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICBmb3JtVmFsdWUub3B0aW9ucy5mb3JFYWNoKChvcHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9wdC53ZWlnaHQgIT09IHVuZGVmaW5lZCAmJiBvcHQud2VpZ2h0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3B0LndlaWdodCA9IHBhcnNlRmxvYXQoKChOdW1iZXIob3B0LndlaWdodCkgLyB0b3RhbE1hcmtzKSAqIDEwMCkudG9GaXhlZCgyKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMucXVlc3Rpb25TdGFjay5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIC8vIGNoaWxkIHF1ZXN0aW9uIGxvZ2ljXHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5xdWVzdGlvblN0YWNrW3RoaXMucXVlc3Rpb25TdGFjay5sZW5ndGggLSAxXTtcclxuXHJcbiAgICAgICAgICAgIGlmIChzdGF0ZT8uZWRpdGluZ1F1ZXN0aW9uSW5kZXggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFzdGF0ZS5wYXJlbnRGb3JtVmFsdWUuY2hpbGRRdWVzdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5wYXJlbnRGb3JtVmFsdWUuY2hpbGRRdWVzdGlvbnMgPSBbXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBleGlzdGluZyBjaGlsZFxyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRRdWVzdGlvbiA9IHN0YXRlLnBhcmVudEZvcm1WYWx1ZS5jaGlsZFF1ZXN0aW9uc1tzdGF0ZS5lZGl0aW5nUXVlc3Rpb25JbmRleF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5hc3Nlc3NtZW50QnVpbGRlclNlcnZpY2Uuc2V0UXVlc3Rpb25EVE8oZm9ybVZhbHVlLCBjaGlsZFF1ZXN0aW9uKTtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb24gPSBhd2FpdCB0aGlzLnVwZGF0ZVF1ZXN0aW9uKHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLnBhcmVudEZvcm1WYWx1ZS5jaGlsZFF1ZXN0aW9uc1tzdGF0ZS5lZGl0aW5nUXVlc3Rpb25JbmRleF0gPSBxdWVzdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocXVlc3Rpb24/LmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVlc3Rpb25CYW5rW3F1ZXN0aW9uLmlkXSA9IHF1ZXN0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nRGF0YT8uc25hY2tiYXJNZXNzYWdlRW1pdHRlcj8uZW1pdCh7IG1lc3NhZ2U6IHRoaXMubGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5UT0FTVC5FUlJPUl9ERUZBVUxUJ10sIHR5cGU6ICdlcnJvcicgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgeyBlcnJvciwgbWV0aG9kOiAnUEFUQ0gnLCBwYXlsb2FkIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIEFkZCBuZXcgY2hpbGQgXHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5hc3Nlc3NtZW50QnVpbGRlclNlcnZpY2Uuc2V0UXVlc3Rpb25EVE8oZm9ybVZhbHVlKTtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb24gPSBhd2FpdCB0aGlzLmNyZWF0ZVF1ZXN0aW9uKHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlPy5wYXJlbnRGb3JtVmFsdWU/LmNoaWxkUXVlc3Rpb25zPy5wdXNoKHF1ZXN0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocXVlc3Rpb24/LmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVlc3Rpb25CYW5rW3F1ZXN0aW9uLmlkXSA9IHF1ZXN0aW9uO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JwID0gdGhpcy5jaGlsZFF1ZXN0aW9uR3JvdXBzLmZpbmQoKGc6IGFueSkgPT4gZy5pZCA9PT0gc3RhdGUuYWRkaW5nVG9Hcm91cElkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdycCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwLnF1ZXN0aW9uSWRzPy5wdXNoKHF1ZXN0aW9uPy5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ3JwLm9wdGlvbklkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0ID0gc3RhdGUucGFyZW50Rm9ybVZhbHVlPy5kZWZhdWx0T3B0aW9uc0xpc3Q/LmZpbmQoKG86IGFueSkgPT4gKG8uaWQgfHwgby51dWlkKSA9PSBncnAub3B0aW9uSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0LmNoaWxkUXVlc3Rpb25MaXN0ID0gb3B0LmNoaWxkUXVlc3Rpb25MaXN0IHx8IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHQuY2hpbGRRdWVzdGlvbkxpc3QucHVzaChxdWVzdGlvbi5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGlsZFF1ZXN0aW9uR3JvdXBzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBnZW5lcmF0ZVV1aWQoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25JZDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbklkczogW3F1ZXN0aW9uPy5pZF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nRGF0YT8uc25hY2tiYXJNZXNzYWdlRW1pdHRlcj8uZW1pdCh7IG1lc3NhZ2U6IHRoaXMubGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5UT0FTVC5FUlJPUl9ERUZBVUxUJ10sIHR5cGU6ICdlcnJvcicgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgeyBlcnJvciwgbWV0aG9kOiAnUE9TVCcsIHBheWxvYWQgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25TdGFjay5wb3AoKTtcclxuXHJcbiAgICAgICAgICAgIC8vIFJlLXBvcHVsYXRlIHBhcmVudCBmb3JtXHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRBbmRQb3B1bGF0ZShzdGF0ZT8ucGFyZW50Rm9ybVZhbHVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgcXVlc3Rpb25EVE8gPSB0aGlzLmFzc2Vzc21lbnRCdWlsZGVyU2VydmljZS5zZXRRdWVzdGlvbkRUTyhmb3JtVmFsdWUsIHRoaXMucXVlc3Rpb25EZXRhaWxzKTtcclxuXHJcbiAgICAgICAgICAgIC8vIFVwZGF0ZSBsb2NhbCB0ZW1wbGF0ZSB0cmVlIHJlcHJlc2VudGF0aW9uXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnF1ZXN0aW9uRGV0YWlscz8uaWQpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25EVE8gPSBhd2FpdCB0aGlzLnVwZGF0ZVF1ZXN0aW9uKHF1ZXN0aW9uRFRPKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocXVlc3Rpb25EVE8/LmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVlc3Rpb25CYW5rW3F1ZXN0aW9uRFRPLmlkXSA9IHF1ZXN0aW9uRFRPXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nRGF0YT8uc25hY2tiYXJNZXNzYWdlRW1pdHRlcj8uZW1pdCh7IG1lc3NhZ2U6IHRoaXMubGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5UT0FTVC5RVUVTVElPTl9VUERBVEVEX1NVQ0NFU1MnXSwgdHlwZTogJ3N1Y2Nlc3MnIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHsgc3VjY2VzczogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nRGF0YT8uc25hY2tiYXJNZXNzYWdlRW1pdHRlcj8uZW1pdCh7IG1lc3NhZ2U6IHRoaXMubGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5UT0FTVC5FUlJPUl9ERUZBVUxUJ10sIHR5cGU6ICdlcnJvcicgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgeyBlcnJvciwgbWV0aG9kOiAnUEFUQ0gnLCBwYXlsb2FkOiBxdWVzdGlvbkRUTyB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZU9yRWRpdEFzc2Vzc21lbnRBbmRRdWVzdGlvblBhcGVyKHF1ZXN0aW9uRFRPKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVRdWVzdGlvbihwYXlsb2FkOiBhbnkpOiBQcm9taXNlPEFzc2Vzc21lbnRRdWVzdGlvbj4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYXNzZXNzbWVudE1ha2VyU2VydmljZS5jcmVhdGVRdWVzdGlvbihwYXlsb2FkKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlcykgPT4gcmVzb2x2ZShyZXMgYXMgQXNzZXNzbWVudFF1ZXN0aW9uKSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiByZWplY3QoZXJyKVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVRdWVzdGlvbihwYXlsb2FkOiBhbnkpOiBQcm9taXNlPEFzc2Vzc21lbnRRdWVzdGlvbj4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYXNzZXNzbWVudE1ha2VyU2VydmljZS5wYXRjaFF1ZXN0aW9uKHBheWxvYWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiAocmVzKSA9PiByZXNvbHZlKHJlcyBhcyBBc3Nlc3NtZW50UXVlc3Rpb24pLFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHJlamVjdChlcnIpXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZU9yRWRpdEFzc2Vzc21lbnRBbmRRdWVzdGlvblBhcGVyKHF1ZXN0aW9uOiBBc3Nlc3NtZW50UXVlc3Rpb24pIHtcclxuICAgICAgICBjb25zdCBxdWVzdGlvblBhcGVyID0gZGVlcENsb25lKHRoaXMuZGlhbG9nRGF0YT8uYXNzZXNzbWVudFF1ZXN0aW9uUGFwZXJEYXRhKTtcclxuICAgICAgICBjb25zdCBzZWN0aW9uUXVlc3Rpb24gPSB0aGlzLmFzc2Vzc21lbnRCdWlsZGVyU2VydmljZS5nZW5lcmF0ZVNlY3Rpb25RdWVzdGlvbihxdWVzdGlvbik7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRpYWxvZ0RhdGE/LnNlY3Rpb25EZXRhaWxzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxpc3QgPSBxdWVzdGlvblBhcGVyPy5xdWVzdGlvblBhcGVyU2VjdGlvbkxpc3Q7XHJcbiAgICAgICAgICAgIGNvbnN0IGxhc3RTZXF1ZW5jZSA9IGxpc3Q/Lmxlbmd0aCA/IGxpc3RbbGlzdC5sZW5ndGggLSAxXS5vcmRlck5vIHx8IDAgOiAwO1xyXG4gICAgICAgICAgICBjb25zdCBuZXdTZWN0aW9uID0gdGhpcy5hc3Nlc3NtZW50QnVpbGRlclNlcnZpY2UuY3JlYXRlTmV3U2VjdGlvbihsYXN0U2VxdWVuY2UgKyAxKTtcclxuXHJcbiAgICAgICAgICAgIG5ld1NlY3Rpb24/LnNlY3Rpb25RdWVzdGlvbnNMaXN0Py5wdXNoKHNlY3Rpb25RdWVzdGlvbik7XHJcblxyXG4gICAgICAgICAgICBxdWVzdGlvblBhcGVyPy5xdWVzdGlvblBhcGVyU2VjdGlvbkxpc3Q/LnB1c2gobmV3U2VjdGlvbik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3Qgc2VjdGlvblJlZiA9IHF1ZXN0aW9uUGFwZXI/LnF1ZXN0aW9uUGFwZXJTZWN0aW9uTGlzdD8uZmluZCgoc2VjdGlvbjogUXVlc3Rpb25QYXBlclNlY3Rpb24pID0+IHNlY3Rpb24/LmlkID09IHRoaXMuZGlhbG9nRGF0YT8uc2VjdGlvbkRldGFpbHM/LmlkKTtcclxuICAgICAgICAgICAgc2VjdGlvblJlZj8uc2VjdGlvblF1ZXN0aW9uc0xpc3Q/LnB1c2goc2VjdGlvblF1ZXN0aW9uKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uUGFwZXJEVE8gPSB0aGlzLmFzc2Vzc21lbnRCdWlsZGVyU2VydmljZS5nZW5lcmF0ZVF1ZXN0aW9uUGFwZXJEVE8ocXVlc3Rpb25QYXBlciwgdGhpcy5xdWVzdGlvbkJhbmspO1xyXG4gICAgICAgIGNvbnN0IGFzc2Vzc21lbnREVE8gPSB0aGlzLmFzc2Vzc21lbnRCdWlsZGVyU2VydmljZS5nZW5lcmF0ZUFzc2Vzc21lbnREVE8odGhpcy5hc3Nlc3NtZW50SWQsIHF1ZXN0aW9uUGFwZXJEVE8pO1xyXG5cclxuICAgICAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICAgICAgICBhc3Nlc3NtZW50OiBhc3Nlc3NtZW50RFRPLFxyXG4gICAgICAgICAgICBxdWVzdGlvblBhcGVyOiBxdWVzdGlvblBhcGVyRFRPXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBhcGlDYWxsID0gdGhpcy5hc3Nlc3NtZW50SWRcclxuICAgICAgICAgICAgPyB0aGlzLmFzc2Vzc21lbnRNYWtlclNlcnZpY2UucGF0Y2hBc3Nlc3NtZW50QW5kUXVlc3Rpb25QYXBlcihwYXlsb2FkKVxyXG4gICAgICAgICAgICA6IHRoaXMuYXNzZXNzbWVudE1ha2VyU2VydmljZS5jcmVhdGVBc3Nlc3NtZW50QW5kUXVlc3Rpb25QYXBlcihwYXlsb2FkKTtcclxuXHJcbiAgICAgICAgYXBpQ2FsbC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBhc3Nlc3NtZW50SWQ6IHJlcz8uYXNzZXNzbWVudD8uaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25QYXBlcjogcmVzPy5xdWVzdGlvblBhcGVyLFxyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uTWFwOiByZXM/LnF1ZXN0aW9uTWFwXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0RhdGE/LnNuYWNrYmFyTWVzc2FnZUVtaXR0ZXI/LmVtaXQoeyBtZXNzYWdlOiB0aGlzLmxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuVE9BU1QuRVJST1JfREVGQVVMVCddLCB0eXBlOiAnZXJyb3InIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgeyBlcnJvciwgbWV0aG9kOiB0aGlzLmFzc2Vzc21lbnRJZCA/ICdQQVRDSCcgOiAnUE9TVCcsIHBheWxvYWQgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXBwbHlEeW5hbWljVmFsaWRhdG9ycygpIHtcclxuICAgICAgICBpZiAoIXRoaXMucnVsZXMgfHwgT2JqZWN0LmtleXModGhpcy5ydWxlcykubGVuZ3RoID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLnF1ZXN0aW9uc0Zvcm1Hcm91cDtcclxuICAgICAgICBjb25zdCBxVHlwZSA9IGZvcm0uZ2V0KCdxdWVzdGlvblR5cGUnKT8udmFsdWU7XHJcbiAgICAgICAgY29uc3QgY3VycmVudFJ1bGVzID0gdGhpcy5ydWxlc1txVHlwZV0gfHwge307XHJcblxyXG4gICAgICAgIGNvbnN0IGV4Y2x1ZGVkQ29udHJvbHMgPSBuZXcgU2V0KFsncXVlc3Rpb25UeXBlJywgJ3F1ZXN0aW9uVGV4dCcsICdvcHRpb25zJywgJ3Zpc2liaWxpdHknLCAnaXNNYW5kYXRvcnknLCAncXVlc3Rpb25TdWJUZXh0JywgJ3NraWxsQ29kZXMnXSk7XHJcblxyXG4gICAgICAgIC8vIEhhbmRsZSBub3JtYWwgY29udHJvbHNcclxuICAgICAgICBPYmplY3QuZW50cmllcyhmb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChba2V5LCBjb250cm9sXSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXhjbHVkZWRDb250cm9scy5oYXMoa2V5KSkgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgcnVsZSA9IGN1cnJlbnRSdWxlc1trZXldO1xyXG5cclxuICAgICAgICAgICAgaWYgKHJ1bGU/LnZpc2libGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBydWxlPy5yZXF1aXJlZCA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSA6IFtdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gJ3F1ZXN0aW9uTWVkaWEnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucGF0dGVybigvXihodHRwcz86XFwvXFwvKT8oW1xcZGEtelxcLi1dKylcXC4oW2EtelxcLl17Miw2fSkoW1xcL1xcdyBcXC4tXSopKlxcLz8oXFw/W15cXHNdKik/JC9pKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycy5sZW5ndGggPiAwID8gdmFsaWRhdG9ycyA6IG51bGwpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoa2V5ID09PSAnY2hpbGRRdWVzdGlvbnMnID8gW10gOiBudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIEhhbmRsZSBvcHRpb25zIEZvcm1BcnJheVxyXG4gICAgICAgIGNvbnN0IG9wdGlvbnNDb250cm9sID0gZm9ybS5nZXQoJ29wdGlvbnMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgICAgICAgY29uc3Qgb3B0aW9uc1J1bGUgPSBjdXJyZW50UnVsZXNbJ29wdGlvbnMnXTtcclxuXHJcbiAgICAgICAgaWYgKCFvcHRpb25zUnVsZT8udmlzaWJsZSkge1xyXG4gICAgICAgICAgICBvcHRpb25zQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgICAgICAgb3B0aW9uc0NvbnRyb2wuY2xlYXIoKTtcclxuICAgICAgICAgICAgb3B0aW9uc0NvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IG9wdGlvbnNWYWxpZGF0b3IgPSBvcHRpb25zUnVsZT8ucmVxdWlyZWQgPyAoY29udHJvbDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZU9wdGlvbnMgPSAoY29udHJvbC52YWx1ZSB8fCBbXSkuZmlsdGVyKChvcHQ6IGFueSkgPT4gb3B0LmlzQWN0aXZlICE9PSBmYWxzZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBhY3RpdmVPcHRpb25zLmxlbmd0aCA+IDAgPyBudWxsIDogeyByZXF1aXJlZDogdHJ1ZSB9O1xyXG4gICAgICAgIH0gOiBudWxsO1xyXG5cclxuICAgICAgICBvcHRpb25zQ29udHJvbC5zZXRWYWxpZGF0b3JzKG9wdGlvbnNWYWxpZGF0b3IpO1xyXG5cclxuICAgICAgICBjb25zdCBzaG93V2VpZ2h0YWdlID0gb3B0aW9uc1J1bGU/LnNob3dXZWlnaHRhZ2U7XHJcbiAgICAgICAgY29uc3Qgc2hvd1JlbWFya3MgPSBvcHRpb25zUnVsZT8uc2hvd1JlbWFya3M7XHJcblxyXG4gICAgICAgIG9wdGlvbnNDb250cm9sLmNvbnRyb2xzLmZvckVhY2gob3B0R3JvdXAgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB3ZWlnaHRDdHJsID0gb3B0R3JvdXAuZ2V0KCd3ZWlnaHQnKTtcclxuICAgICAgICAgICAgY29uc3QgcmVtYXJrc0N0cmwgPSBvcHRHcm91cC5nZXQoJ3JlbWFya3NSZXF1aXJlZCcpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFzaG93V2VpZ2h0YWdlKSB3ZWlnaHRDdHJsPy5zZXRWYWx1ZSgwLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIGlmICghc2hvd1JlbWFya3MpIHJlbWFya3NDdHJsPy5zZXRWYWx1ZShmYWxzZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG5cclxuICAgICAgICAgICAgd2VpZ2h0Q3RybD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIHJlbWFya3NDdHJsPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgb3B0aW9uc0NvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0ZpZWxkKGZpZWxkTmFtZTogc3RyaW5nLCBuZXN0ZWRQcm9wPzogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgcXVlc3Rpb25UeXBlID0gdGhpcy5xdWVzdGlvbnNGb3JtR3JvdXA/LmdldCgncXVlc3Rpb25UeXBlJyk/LnZhbHVlO1xyXG4gICAgICAgIGlmICghcXVlc3Rpb25UeXBlIHx8ICF0aGlzLnJ1bGVzW3F1ZXN0aW9uVHlwZV0gfHwgIXRoaXMucnVsZXNbcXVlc3Rpb25UeXBlXVtmaWVsZE5hbWVdKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5lc3RlZFByb3ApIHtcclxuICAgICAgICAgICAgcmV0dXJuICEhdGhpcy5ydWxlc1txdWVzdGlvblR5cGVdW2ZpZWxkTmFtZV1bbmVzdGVkUHJvcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAhIXRoaXMucnVsZXNbcXVlc3Rpb25UeXBlXVtmaWVsZE5hbWVdPy52aXNpYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBvcHRpb25zKCk6IEZvcm1BcnJheSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucXVlc3Rpb25zRm9ybUdyb3VwLmdldCgnb3B0aW9ucycpIGFzIEZvcm1BcnJheTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRPcHRpb24oKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnB1c2godGhpcy5jcmVhdGVPcHRpb24oKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlT3B0aW9uKGluZGV4OiBudW1iZXIpIHtcclxuICAgICAgICBjb25zdCByZW1vdmVkT3B0aW9uID0gdGhpcy5vcHRpb25zLmF0KGluZGV4KTtcclxuICAgICAgICBjb25zdCByZW1vdmVkT3B0aW9uSWQgPSByZW1vdmVkT3B0aW9uLmdldCgnaWQnKT8udmFsdWU7XHJcbiAgICAgICAgY29uc3QgcmVtb3ZlZE9wdGlvblV1aWQgPSByZW1vdmVkT3B0aW9uLmdldCgndXVpZCcpPy52YWx1ZTtcclxuICAgICAgICBjb25zdCB1bmlxdWVJZCA9IHJlbW92ZWRPcHRpb25JZCB8fCByZW1vdmVkT3B0aW9uVXVpZDtcclxuXHJcbiAgICAgICAgaWYgKHJlbW92ZWRPcHRpb25JZCkge1xyXG4gICAgICAgICAgICByZW1vdmVkT3B0aW9uLmdldCgnaXNBY3RpdmUnKT8uc2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5yZW1vdmVBdChpbmRleCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNoaWxkUXVlc3Rpb25Hcm91cHMuZm9yRWFjaChnID0+IHtcclxuICAgICAgICAgICAgaWYgKGcub3B0aW9uSWQgPT09IHVuaXF1ZUlkKSB7XHJcbiAgICAgICAgICAgICAgICBnLm9wdGlvbklkID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZU9wdGlvbigpOiBGb3JtR3JvdXAge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICAgICAgaWQ6IFswXSxcclxuICAgICAgICAgICAgdXVpZDogW2dlbmVyYXRlVXVpZCgpXSxcclxuICAgICAgICAgICAgb3B0aW9uTGFiZWw6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIHdlaWdodDogWzBdLFxyXG4gICAgICAgICAgICByZW1hcmtzUmVxdWlyZWQ6IFtmYWxzZV0sXHJcbiAgICAgICAgICAgIGlzQWN0aXZlOiBbdHJ1ZV0sXHJcbiAgICAgICAgICAgIGNoaWxkUXVlc3Rpb25MaXN0OiBbW11dXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWxsb3dPbmx5TnVtYmVycyhldmVudDogYW55KSB7XHJcbiAgICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlLnJlcGxhY2UoL1xcRC9nLCAnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tNYXhWYWwoZXZlbnQ6IGFueSwgY29udHJvbDogYW55KSB7XHJcbiAgICAgICAgY29uc3QgdG90YWxNYXJrcyA9IE51bWJlcih0aGlzLnF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ3RvdGFsTWFya3MnKT8udmFsdWUpIHx8IDA7XHJcbiAgICAgICAgaWYgKHRvdGFsTWFya3MgPiAwKSB7XHJcbiAgICAgICAgICAgIGxldCB2YWwgPSBOdW1iZXIoZXZlbnQudGFyZ2V0LnZhbHVlKTtcclxuICAgICAgICAgICAgaWYgKHZhbCA+IHRvdGFsTWFya3MpIHtcclxuICAgICAgICAgICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IHRvdGFsTWFya3M7XHJcbiAgICAgICAgICAgICAgICBjb250cm9sPy5zZXRWYWx1ZSh0b3RhbE1hcmtzLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaW1hZ2VFcnJvckhhbmRsZXIoZXZlbnQ6IGFueSwgZmlsZVBhdGg6IHN0cmluZykge1xyXG4gICAgICAgIGV2ZW50LnRhcmdldC5zcmMgPSBmaWxlUGF0aDtcclxuICAgIH1cclxuXHJcbiAgICBhZGRFZGl0Q2hpbGRRdWVzdGlvbihjaGlsZFF1ZXN0aW9uPzogQXNzZXNzbWVudFF1ZXN0aW9uLCBpbmRleD86IG51bWJlciwgZ3JvdXBJZD86IHN0cmluZykge1xyXG4gICAgICAgIC8vIFNhdmUgY3VycmVudCBwYXJlbnQgc3RhdGVcclxuICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSBkZWVwQ2xvbmUodGhpcy5xdWVzdGlvbnNGb3JtR3JvdXAudmFsdWUpO1xyXG4gICAgICAgIGNvbnN0IHRvdGFsTWFya3MgPSBOdW1iZXIoZm9ybVZhbHVlLnRvdGFsTWFya3MpIHx8IDA7XHJcbiAgICAgICAgY29uc3Qgc2hvd1dlaWdodGFnZSA9IHRoaXMuc2hvd0ZpZWxkKCdvcHRpb25zJywgJ3Nob3dXZWlnaHRhZ2UnKTtcclxuXHJcbiAgICAgICAgaWYgKHNob3dXZWlnaHRhZ2UgJiYgdG90YWxNYXJrcyA+IDAgJiYgZm9ybVZhbHVlLm9wdGlvbnM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICBmb3JtVmFsdWUub3B0aW9ucy5mb3JFYWNoKChvcHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9wdC53ZWlnaHQgIT09IHVuZGVmaW5lZCAmJiBvcHQud2VpZ2h0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3B0LndlaWdodCA9IHBhcnNlRmxvYXQoKChOdW1iZXIob3B0LndlaWdodCkgLyB0b3RhbE1hcmtzKSAqIDEwMCkudG9GaXhlZCgyKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcXVlc3Rpb25EYXRhID0gdGhpcy5hc3Nlc3NtZW50QnVpbGRlclNlcnZpY2Uuc2V0UXVlc3Rpb25EVE8oZm9ybVZhbHVlLCB0aGlzLnF1ZXN0aW9uRGV0YWlscyk7XHJcblxyXG4gICAgICAgIHRoaXMucXVlc3Rpb25TdGFjay5wdXNoKHtcclxuICAgICAgICAgICAgcGFyZW50Rm9ybVZhbHVlOiB7IC4uLnF1ZXN0aW9uRGF0YSwgY2hpbGRRdWVzdGlvbnM6IHRoaXMucXVlc3Rpb25zRm9ybUdyb3VwLmdldCgnY2hpbGRRdWVzdGlvbnMnKT8udmFsdWUgfSxcclxuICAgICAgICAgICAgZWRpdGluZ1F1ZXN0aW9uSW5kZXg6IGluZGV4LFxyXG4gICAgICAgICAgICBhZGRpbmdUb0dyb3VwSWQ6IGdyb3VwSWRcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gUmVzZXQgZm9ybSBmb3IgY2hpbGRcclxuICAgICAgICB0aGlzLnF1ZXN0aW9uc0Zvcm1Hcm91cC5yZXNldCh7XHJcbiAgICAgICAgICAgIHF1ZXN0aW9uVHlwZTogJycsXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uVGV4dDogJycsXHJcbiAgICAgICAgICAgIGlzTWFuZGF0b3J5OiBmYWxzZSxcclxuICAgICAgICAgICAgLy8gdmlzaWJpbGl0eTogdHJ1ZSxcclxuICAgICAgICAgICAgdG90YWxNYXJrczogbnVsbCxcclxuICAgICAgICAgICAgbWluQ2hhcmFjdGVyQ291bnQ6IG51bGwsXHJcbiAgICAgICAgICAgIG1heENoYXJhY3RlckNvdW50OiBudWxsLFxyXG4gICAgICAgICAgICBtYXhpbXVtTnVtYmVyT2ZPcHRpb246IG51bGwsXHJcbiAgICAgICAgICAgIG1pbmltdW1OdW1iZXJPZk9wdGlvbjogbnVsbCxcclxuICAgICAgICAgICAgbWF4RmlsZVNpemU6IG51bGwsXHJcbiAgICAgICAgICAgIG1heE5vT2ZGaWxlczogbnVsbCxcclxuICAgICAgICAgICAgY3VzdG9tUmVnZXg6ICcnLFxyXG4gICAgICAgICAgICBoaW50VGV4dDogJycsXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uTWVkaWE6ICcnLFxyXG4gICAgICAgICAgICBjaGlsZFF1ZXN0aW9uczogW1tdXSxcclxuICAgICAgICAgICAgc2tpbGxDb2RlczogW1tdXVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnNDb250cm9sID0gdGhpcy5xdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdvcHRpb25zJykgYXMgRm9ybUFycmF5O1xyXG4gICAgICAgIHdoaWxlIChvcHRpb25zQ29udHJvbC5sZW5ndGggIT09IDApIHtcclxuICAgICAgICAgICAgb3B0aW9uc0NvbnRyb2wucmVtb3ZlQXQoMCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmFwcGx5RHluYW1pY1ZhbGlkYXRvcnMoKTtcclxuICAgICAgICBpZiAoY2hpbGRRdWVzdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnBvcHVsYXRlRm9ybShjaGlsZFF1ZXN0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZUNoaWxkUXVlc3Rpb24oaW5kZXg6IG51bWJlciwgZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgY29uc3QgZGVsZXRlZENoaWxkID0gdGhpcy5xdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdjaGlsZFF1ZXN0aW9ucycpPy52YWx1ZVtpbmRleF07XHJcblxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5jb250cm9scy5mb3JFYWNoKG9wdCA9PiB7XHJcbiAgICAgICAgICAgIGxldCBjaGlsZExpc3QgPSBbLi4uKG9wdC5nZXQoJ2NoaWxkUXVlc3Rpb25MaXN0Jyk/LnZhbHVlIHx8IFtdKV07XHJcbiAgICAgICAgICAgIGNoaWxkTGlzdCA9IGNoaWxkTGlzdC5maWx0ZXIoKGlkOiBzdHJpbmcgfCBudW1iZXIpID0+IGlkICE9PSBkZWxldGVkQ2hpbGQuaWQpO1xyXG4gICAgICAgICAgICBvcHQuZ2V0KCdjaGlsZFF1ZXN0aW9uTGlzdCcpPy5zZXRWYWx1ZShjaGlsZExpc3QpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ2NoaWxkUXVlc3Rpb25zJyk/LnZhbHVlLnNwbGljZShpbmRleCwgMSk7XHJcblxyXG4gICAgICAgIHRoaXMuY2hpbGRRdWVzdGlvbkdyb3Vwcy5mb3JFYWNoKGcgPT4ge1xyXG4gICAgICAgICAgICBnLnF1ZXN0aW9uSWRzID0gZy5xdWVzdGlvbklkcy5maWx0ZXIocWlkID0+IHFpZCAhPT0gZGVsZXRlZENoaWxkLmlkKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmNoaWxkUXVlc3Rpb25Hcm91cHMgPSB0aGlzLmNoaWxkUXVlc3Rpb25Hcm91cHMuZmlsdGVyKGcgPT4gZy5xdWVzdGlvbklkcy5sZW5ndGggPiAwKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRPcHRpb25JZChvcHQ6IGFueSk6IHN0cmluZyB8IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIG9wdC5nZXQoJ2lkJyk/LnZhbHVlID8gb3B0LmdldCgnaWQnKT8udmFsdWUgOiBvcHQuZ2V0KCd1dWlkJyk/LnZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENoaWxkUXVlc3Rpb25CeUlkKGlkOiBzdHJpbmcgfCBudW1iZXIpOiBBc3Nlc3NtZW50UXVlc3Rpb24gfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ2NoaWxkUXVlc3Rpb25zJyk/LnZhbHVlPy5maW5kKChxOiBBc3Nlc3NtZW50UXVlc3Rpb24pID0+IHEuaWQgPT09IGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDaGlsZFF1ZXN0aW9uSW5kZXgoaWQ6IG51bWJlciB8IHVuZGVmaW5lZCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucXVlc3Rpb25zRm9ybUdyb3VwLmdldCgnY2hpbGRRdWVzdGlvbnMnKT8udmFsdWU/LmZpbmRJbmRleCgocTogQXNzZXNzbWVudFF1ZXN0aW9uKSA9PiBxLmlkID09PSBpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlQ2hpbGRRdWVzdGlvbkJ5SWQoaWQ6IG51bWJlciB8IHVuZGVmaW5lZCwgZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdldENoaWxkUXVlc3Rpb25JbmRleChpZCk7XHJcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5kZWxldGVDaGlsZFF1ZXN0aW9uKGluZGV4LCBldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkQ2hpbGRRdWVzdGlvbkdyb3VwcyhjaGlsZFF1ZXN0aW9uczogQXNzZXNzbWVudFF1ZXN0aW9uW10pIHtcclxuICAgICAgICB0aGlzLmNoaWxkUXVlc3Rpb25Hcm91cHMgPSBbXTtcclxuICAgICAgICBjb25zdCBwcm9jZXNzZWRRdWVzdGlvbklkcyA9IG5ldyBTZXQoKTtcclxuXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmNvbnRyb2xzLmZvckVhY2gob3B0ID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgb3B0aW9uSWQgPSB0aGlzLmdldE9wdGlvbklkKG9wdCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkTGlzdCA9IG9wdC5nZXQoJ2NoaWxkUXVlc3Rpb25MaXN0Jyk/LnZhbHVlIHx8IFtdO1xyXG5cclxuICAgICAgICAgICAgaWYgKGNoaWxkTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoaWxkUXVlc3Rpb25Hcm91cHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGdlbmVyYXRlVXVpZCgpLFxyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbklkOiBvcHRpb25JZCxcclxuICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbklkczogWy4uLmNoaWxkTGlzdF1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgY2hpbGRMaXN0LmZvckVhY2goKGlkOiBhbnkpID0+IHByb2Nlc3NlZFF1ZXN0aW9uSWRzLmFkZChpZCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNoaWxkUXVlc3Rpb25zLmZvckVhY2goY3EgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY3EuaWQgJiYgIXByb2Nlc3NlZFF1ZXN0aW9uSWRzLmhhcyhjcS5pZCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hpbGRRdWVzdGlvbkdyb3Vwcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogZ2VuZXJhdGVVdWlkKCksXHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uSWQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25JZHM6IFtjcS5pZF1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Hcm91cE9wdGlvbkNoYW5nZShncm91cElkOiBzdHJpbmcsIG5ld09wdGlvbklkOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgZ3JvdXBJbmRleCA9IHRoaXMuY2hpbGRRdWVzdGlvbkdyb3Vwcy5maW5kSW5kZXgoZyA9PiBnLmlkID09PSBncm91cElkKTtcclxuICAgICAgICBpZiAoZ3JvdXBJbmRleCA9PT0gLTEpIHJldHVybjtcclxuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuY2hpbGRRdWVzdGlvbkdyb3Vwc1tncm91cEluZGV4XTtcclxuXHJcbiAgICAgICAgY29uc3Qgb2xkT3B0aW9uSWQgPSBncm91cC5vcHRpb25JZDtcclxuXHJcbiAgICAgICAgaWYgKG9sZE9wdGlvbklkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9sZE9wdCA9IHRoaXMub3B0aW9ucy5jb250cm9scy5maW5kKG9wdCA9PiB0aGlzLmdldE9wdGlvbklkKG9wdCkgPT09IG9sZE9wdGlvbklkKTtcclxuICAgICAgICAgICAgaWYgKG9sZE9wdCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkTGlzdCA9IFsuLi4ob2xkT3B0LmdldCgnY2hpbGRRdWVzdGlvbkxpc3QnKT8udmFsdWUgfHwgW10pXTtcclxuICAgICAgICAgICAgICAgIGNoaWxkTGlzdCA9IGNoaWxkTGlzdC5maWx0ZXIoaWQgPT4gIWdyb3VwLnF1ZXN0aW9uSWRzLmluY2x1ZGVzKGlkIGFzIGFueSkpO1xyXG4gICAgICAgICAgICAgICAgb2xkT3B0LmdldCgnY2hpbGRRdWVzdGlvbkxpc3QnKT8uc2V0VmFsdWUoY2hpbGRMaXN0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZXhpc3RpbmdHcm91cCA9IHRoaXMuY2hpbGRRdWVzdGlvbkdyb3Vwcy5maW5kKGcgPT4gZy5pZCAhPT0gZ3JvdXBJZCAmJiBnLm9wdGlvbklkID09PSBuZXdPcHRpb25JZCk7XHJcblxyXG4gICAgICAgIGlmIChleGlzdGluZ0dyb3VwICYmIG5ld09wdGlvbklkKSB7XHJcbiAgICAgICAgICAgIGV4aXN0aW5nR3JvdXAucXVlc3Rpb25JZHMucHVzaCguLi5ncm91cC5xdWVzdGlvbklkcyk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hpbGRRdWVzdGlvbkdyb3Vwcy5zcGxpY2UoZ3JvdXBJbmRleCwgMSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZ3JvdXAub3B0aW9uSWQgPSBuZXdPcHRpb25JZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChuZXdPcHRpb25JZCkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdPcHQgPSB0aGlzLm9wdGlvbnMuY29udHJvbHMuZmluZChvcHQgPT4gdGhpcy5nZXRPcHRpb25JZChvcHQpID09PSBuZXdPcHRpb25JZCk7XHJcbiAgICAgICAgICAgIGlmIChuZXdPcHQpIHtcclxuICAgICAgICAgICAgICAgIGxldCBjaGlsZExpc3QgPSBbLi4uKG5ld09wdC5nZXQoJ2NoaWxkUXVlc3Rpb25MaXN0Jyk/LnZhbHVlIHx8IFtdKV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzZXQgPSBuZXcgU2V0KFsuLi5jaGlsZExpc3QsIC4uLmdyb3VwLnF1ZXN0aW9uSWRzXSk7XHJcbiAgICAgICAgICAgICAgICBuZXdPcHQuZ2V0KCdjaGlsZFF1ZXN0aW9uTGlzdCcpPy5zZXRWYWx1ZShBcnJheS5mcm9tKHNldCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdvQmFjaygpIHtcclxuICAgICAgICBpZiAodGhpcy5xdWVzdGlvblN0YWNrLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5xdWVzdGlvblN0YWNrLnBvcCgpO1xyXG5cclxuICAgICAgICB0aGlzLnJlc2V0QW5kUG9wdWxhdGUoc3RhdGU/LnBhcmVudEZvcm1WYWx1ZSk7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVzZXRBbmRQb3B1bGF0ZShwYXJlbnRWYWx1ZTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbnNGb3JtR3JvdXAucmVzZXQoKTtcclxuXHJcbiAgICAgICAgY29uc3Qgb3B0aW9uc0NvbnRyb2wgPSB0aGlzLnF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ29wdGlvbnMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgICAgICAgd2hpbGUgKG9wdGlvbnNDb250cm9sLmxlbmd0aCAhPT0gMCkge1xyXG4gICAgICAgICAgICBvcHRpb25zQ29udHJvbC5yZW1vdmVBdCgwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucG9wdWxhdGVGb3JtKHBhcmVudFZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNjcm9sbFRvVG9wKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNjcm9sbENvbnRhaW5lciAmJiB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCB2aC0xMDAgcG9zaXRpb24tcmVsYXRpdmUgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb25TdGFjay5sZW5ndGggPiAwIHx8IGlzQ2hpbGRcIlxyXG4gICAgICAgIGNsYXNzPVwicC0zIHB4LTIgY29sLWF1dG8gYXNzZXNzbWVudC1iZy1wYWxldHRlLUM4REFGOSBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWVuZCBkLW1kLWZsZXggZC1ub25lXCI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJtLTAgYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTE4IHZlcnRpY2FsLXRleHRcIj5cclxuICAgICAgICAgICAge3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLkNISUxEX1FVRVNUSU9OJ119fVxyXG4gICAgICAgIDwvcD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGgtMTAwIGQtZmxleCBmbGV4LWNvbHVtbiBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgIDxoZWFkZXJcclxuICAgICAgICAgICAgY2xhc3M9XCJwLTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBwb3NpdGlvbi1zdGlja3kgdG9wLTAgY29sLTEyIGJvcmRlci1ib3R0b21cIj5cclxuICAgICAgICAgICAgPHAgKm5nSWY9XCJxdWVzdGlvblN0YWNrLmxlbmd0aCA9PSAwXCIgY2xhc3M9XCJtYi0wIGFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xOCBkLW1kLWlubGluZSBkLW5vbmVcIj5cclxuICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5JTlBVVF9GSUVMRF9TRVRUSU5HUyddfX1cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicXVlc3Rpb25TdGFjay5sZW5ndGggPiAwXCIgKGNsaWNrKT1cImdvQmFjaygpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW4gYm9yZGVyLTAgb3V0bGluZS0wIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTQgYmctdHJhbnNwYXJlbnRcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZUNvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULklDT04uR09fQkFDSyddXCJcclxuICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwiaW1hZ2VFcnJvckhhbmRsZXIoJGV2ZW50LCAnYXNzZXRzL2NvbW1vbnMtYXNzZXNzbWVudC9pbWFnZXMvZ28tYmFjay5zdmcnKVwiIC8+XHJcbiAgICAgICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuR09fQkFDSyddfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1tZC1lbmQganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTMgZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9uU3VibWl0KClcIiBbZGlzYWJsZWRdPVwiaXNTdWJtaXR0aW5nXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtYnRuLXByaW1hcnkgYXNzZXNzbWVudC1idXR0b24tcGFkZGluZyBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzIGFzc2Vzc21lbnQtem9vbS1hbmltYXRpb24gYXNzZXNzbWVudC1idXR0b24tcGFkZGluZyBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cInsnb3BhY2l0eS0wJzogaXNTdWJtaXR0aW5nfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuU0FWRV9RVUVTVElPTiddfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiaXNTdWJtaXR0aW5nXCIgW2RpYW1ldGVyXT1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtNTAgc3RhcnQtNTAgdHJhbnNsYXRlLW1pZGRsZSBhc3Nlc3NtZW50LXNwaW5uZXItd2hpdGVcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiZC1tZC1ub25lXCIgKm5nSWY9XCJxdWVzdGlvblN0YWNrLmxlbmd0aCA9PSAwXCIgbWF0LWRpYWxvZy1jbG9zZVxyXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW1hZ2VDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5JQ09OLkNMT1NFJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJpbWFnZUVycm9ySGFuZGxlcigkZXZlbnQsICdhc3NldHMvY29tbW9ucy1hc3Nlc3NtZW50L2ltYWdlcy9jbG9zZS5zdmcnKVwiIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvaGVhZGVyPlxyXG4gICAgICAgIDxkaXYgI3Njcm9sbENvbnRhaW5lciBjbGFzcz1cImNvbC0xMiBweS00IHB4LW1kLTQgcHgtMyBmbGV4LWdyb3ctMSBvdmVyZmxvdy15LWF1dG8gZm9ybS1jb250YWluZXJcIlxyXG4gICAgICAgICAgICBbZm9ybUdyb3VwXT1cInF1ZXN0aW9uc0Zvcm1Hcm91cFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGItNCBjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWItMiBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTE2IGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlbiBjb2wtMTJcIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuVFlQRSddfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwicXVlc3Rpb25UeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwibGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QTEFDRUhPTERFUi5TRUxFQ1RfUVVFU1RJT05fVFlQRSddXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtbWF0LXNlbGVjdCBjb2wtMTIgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBvdXRsaW5lLTAgYXNzZXNzbWVudC1pbnB1dC1ib3JkZXItb25lIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC1iZy1ncmV5LW9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xM1wiICpuZ0Zvcj1cImxldCB0eXBlIG9mIHF1ZXN0aW9uVHlwZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidHlwZT8uY29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e3R5cGU/LmxhYmVsfX1cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdxdWVzdGlvblR5cGUnKT8uZXJyb3JzICAmJiBxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdxdWVzdGlvblR5cGUnKT8udG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLlJFUVVJUkVEJ119fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBiLTQgY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtYi0yIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTYgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuXCI+UXVlc3Rpb248L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGFwcC10ZXh0LWVkaXRvciBbcHJlVGV4dF09XCJxdWVzdGlvbnNGb3JtR3JvdXA/LmdldCgncXVlc3Rpb25UZXh0Jyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAoaW5wdXRDaGFuZ2UpPVwicXVlc3Rpb25zRm9ybUdyb3VwPy5nZXQoJ3F1ZXN0aW9uVGV4dCcpPy5wYXRjaFZhbHVlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBMQUNFSE9MREVSLkVOVEVSX1FVRVNUSU9OJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC1jdXN0b20tYW5ndWxhci1lZGl0b3Itd2hpdGUgYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuXCJcclxuICAgICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIic4cmVtJ1wiPlxyXG4gICAgICAgICAgICAgICAgPC9hcHAtdGV4dC1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdxdWVzdGlvblRleHQnKT8uZXJyb3JzICAmJiBxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdxdWVzdGlvblRleHQnKT8udG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLlJFUVVJUkVEJ119fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBwb3NpdGlvbi1yZWxhdGl2ZSBtdC0zXCIgKm5nSWY9XCJzaG93RmllbGQoJ3F1ZXN0aW9uTWVkaWEnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJxdWVzdGlvbk1lZGlhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUExBQ0VIT0xERVIuRU5URVJfUVVFU1RJT05fTUVESUEnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLTEyIGFzc2Vzc21lbnQtaW5wdXQtcGFkZGluZyBhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIG91dGxpbmUtMCBhc3Nlc3NtZW50LWlucHV0LWJvcmRlci1vbmUgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMyBhc3Nlc3NtZW50LWJnLWdyZXktb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydib3JkZXItZGFuZ2VyJzogcXVlc3Rpb25zRm9ybUdyb3VwLmdldCgncXVlc3Rpb25NZWRpYScpPy5pbnZhbGlkICYmIHF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ3F1ZXN0aW9uTWVkaWEnKT8udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb25zRm9ybUdyb3VwLmdldCgncXVlc3Rpb25NZWRpYScpPy5oYXNFcnJvcigncGF0dGVybicpICYmIHF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ3F1ZXN0aW9uTWVkaWEnKT8udG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlciBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5FUlJPUi5JTlZBTElEX1VSTCddfX1cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb25zRm9ybUdyb3VwLmdldCgncXVlc3Rpb25NZWRpYScpPy5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiBxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdxdWVzdGlvbk1lZGlhJyk/LnRvdWNoZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEyIGFzc2Vzc21lbnQtdGV4dC1kYW5nZXIgbXQtMVwiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5FUlJPUi5SRVFVSVJFRCddfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBteC0wIGNvbC0xMiBwYi00XCIgKm5nSWY9XCJzaG93RmllbGQoJ21pbkNoYXJhY3RlckNvdW50JykgfHwgc2hvd0ZpZWxkKCdtYXhDaGFyYWN0ZXJDb3VudCcpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgcHMtMFwiICpuZ0lmPVwic2hvd0ZpZWxkKCdtaW5DaGFyYWN0ZXJDb3VudCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWItMSBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlblwiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5NSU5fQ0hBUkFDVEVSX0xJTUlUJ119fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJtaW5DaGFyYWN0ZXJDb3VudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwibGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QTEFDRUhPTERFUi5OT1RfU0VUJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cImFsbG93T25seU51bWJlcnMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdtaW5DaGFyYWN0ZXJDb3VudCcpPy5tYXJrQXNUb3VjaGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgYXNzZXNzbWVudC1pbnB1dC1wYWRkaW5nIGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gb3V0bGluZS0wIGFzc2Vzc21lbnQtaW5wdXQtYm9yZGVyLW9uZSBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzIGFzc2Vzc21lbnQtYmctZ3JleS1vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gcG9zaXRpb24tYWJzb2x1dGUgZW5kLTAgbWUtM1wiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5DSEFSQUNURVJTJ119fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb25zRm9ybUdyb3VwLmdldCgnbWluQ2hhcmFjdGVyQ291bnQnKT8uZXJyb3JzICAmJiBxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdtaW5DaGFyYWN0ZXJDb3VudCcpPy50b3VjaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLlJFUVVJUkVEJ119fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgcGUtMFwiICpuZ0lmPVwic2hvd0ZpZWxkKCdtYXhDaGFyYWN0ZXJDb3VudCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWItMSBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlblwiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5NQVhfQ0hBUkFDVEVSX0xJTUlUJ119fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJtYXhDaGFyYWN0ZXJDb3VudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwibGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QTEFDRUhPTERFUi5OT1RfU0VUJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cImFsbG93T25seU51bWJlcnMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdtYXhDaGFyYWN0ZXJDb3VudCcpPy5tYXJrQXNUb3VjaGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgYXNzZXNzbWVudC1pbnB1dC1wYWRkaW5nIGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gb3V0bGluZS0wIGFzc2Vzc21lbnQtaW5wdXQtYm9yZGVyLW9uZSBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzIGFzc2Vzc21lbnQtYmctZ3JleS1vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gcG9zaXRpb24tYWJzb2x1dGUgZW5kLTAgbWUtM1wiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5DSEFSQUNURVJTJ119fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb25zRm9ybUdyb3VwLmdldCgnbWF4Q2hhcmFjdGVyQ291bnQnKT8uZXJyb3JzICAmJiBxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdtYXhDaGFyYWN0ZXJDb3VudCcpPy50b3VjaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLlJFUVVJUkVEJ119fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG14LTAgY29sLTEyIHBiLTRcIiAqbmdJZj1cInNob3dGaWVsZCgnbWF4RmlsZVNpemUnKSB8fCBzaG93RmllbGQoJ21heE5vT2ZGaWxlcycpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgcHMtMFwiICpuZ0lmPVwic2hvd0ZpZWxkKCdtYXhGaWxlU2l6ZScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWItMSBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlblwiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5NQVhfRklMRV9TSVpFJ119fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJtYXhGaWxlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwibGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QTEFDRUhPTERFUi5OT1RfU0VUJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cImFsbG93T25seU51bWJlcnMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdtYXhGaWxlU2l6ZScpPy5tYXJrQXNUb3VjaGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgYXNzZXNzbWVudC1pbnB1dC1wYWRkaW5nIGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gb3V0bGluZS0wIGFzc2Vzc21lbnQtaW5wdXQtYm9yZGVyLW9uZSBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzIGFzc2Vzc21lbnQtYmctZ3JleS1vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gcG9zaXRpb24tYWJzb2x1dGUgZW5kLTAgbWUtM1wiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5NQiddfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ21heEZpbGVTaXplJyk/LmVycm9ycyAgJiYgcXVlc3Rpb25zRm9ybUdyb3VwLmdldCgnbWF4RmlsZVNpemUnKT8udG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlclwiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5FUlJPUi5SRVFVSVJFRCddfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IHBlLTBcIiAqbmdJZj1cInNob3dGaWVsZCgnbWF4Tm9PZkZpbGVzJylcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYi0xIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLk1BWF9OT19PRl9GSUxFUyddfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibWF4Tm9PZkZpbGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBMQUNFSE9MREVSLk5PVF9TRVQnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwiYWxsb3dPbmx5TnVtYmVycygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cInF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ21heE5vT2ZGaWxlcycpPy5tYXJrQXNUb3VjaGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgYXNzZXNzbWVudC1pbnB1dC1wYWRkaW5nIGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gb3V0bGluZS0wIGFzc2Vzc21lbnQtaW5wdXQtYm9yZGVyLW9uZSBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzIGFzc2Vzc21lbnQtYmctZ3JleS1vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gcG9zaXRpb24tYWJzb2x1dGUgZW5kLTAgbWUtM1wiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5GSUxFUyddfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ21heE5vT2ZGaWxlcycpPy5lcnJvcnMgICYmIHF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ21heE5vT2ZGaWxlcycpPy50b3VjaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLlJFUVVJUkVEJ119fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGItNCBjb2wtMTJcIiAqbmdJZj1cInNob3dGaWVsZCgnY3VzdG9tUmVnZXgnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYi0xIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLkNVU1RPTV9SRUdFWCddfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImN1c3RvbVJlZ2V4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUExBQ0VIT0xERVIuRU5URVJfQ1VTVE9NX1JFR0VYJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdjdXN0b21SZWdleCcpPy5tYXJrQXNUb3VjaGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC0xMiBhc3Nlc3NtZW50LWlucHV0LXBhZGRpbmcgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBvdXRsaW5lLTAgYXNzZXNzbWVudC1pbnB1dC1ib3JkZXItb25lIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC1iZy1ncmV5LW9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdjdXN0b21SZWdleCcpPy5lcnJvcnMgICYmIHF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ2N1c3RvbVJlZ2V4Jyk/LnRvdWNoZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlclwiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5FUlJPUi5SRVFVSVJFRCddfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYi00IGNvbC0xMlwiICpuZ0lmPVwic2hvd0ZpZWxkKCd0b3RhbE1hcmtzJykgJiYgIWlzQ2hpbGQgJiYgcXVlc3Rpb25TdGFjay5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYi0xIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLlRPVEFMX01BUktTJ119fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgcG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwidG90YWxNYXJrc1wiIHBsYWNlaG9sZGVyPVwiMFwiIChpbnB1dCk9XCJhbGxvd09ubHlOdW1iZXJzKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCd0b3RhbE1hcmtzJyk/Lm1hcmtBc1RvdWNoZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLTEyIGFzc2Vzc21lbnQtaW5wdXQtcGFkZGluZyBhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIG91dGxpbmUtMCBhc3Nlc3NtZW50LWlucHV0LWJvcmRlci1vbmUgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMyBhc3Nlc3NtZW50LWJnLWdyZXktb25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlbiBwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMCBtZS0zXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLk1BUktTJ119fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb25zRm9ybUdyb3VwLmdldCgndG90YWxNYXJrcycpPy5lcnJvcnMgICYmIHF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ3RvdGFsTWFya3MnKT8udG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLlJFUVVJUkVEJ119fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXgtMCBjb2wtMTIgcGItNFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dGaWVsZCgnbWluaW11bU51bWJlck9mT3B0aW9uJykgfHwgc2hvd0ZpZWxkKCdtYXhpbXVtTnVtYmVyT2ZPcHRpb24nKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IHBzLTBcIiAqbmdJZj1cInNob3dGaWVsZCgnbWluaW11bU51bWJlck9mT3B0aW9uJylcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYi0xIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLk1JTl9PUFRJT05fU0VMRUNUX0xJTUlUJ119fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJtaW5pbXVtTnVtYmVyT2ZPcHRpb25cIiBwbGFjZWhvbGRlcj1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cImFsbG93T25seU51bWJlcnMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdtaW5pbXVtTnVtYmVyT2ZPcHRpb24nKT8ubWFya0FzVG91Y2hlZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLTEyIGFzc2Vzc21lbnQtaW5wdXQtcGFkZGluZyBhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIG91dGxpbmUtMCBhc3Nlc3NtZW50LWlucHV0LWJvcmRlci1vbmUgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMyBhc3Nlc3NtZW50LWJnLWdyZXktb25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEyIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuIHBvc2l0aW9uLWFic29sdXRlIGVuZC0wIG1lLTNcIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuT1BUSU9OUyddfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ21pbmltdW1OdW1iZXJPZk9wdGlvbicpPy5lcnJvcnMgICYmIHF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ21pbmltdW1OdW1iZXJPZk9wdGlvbicpPy50b3VjaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLlJFUVVJUkVEJ119fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgcGUtMFwiICpuZ0lmPVwic2hvd0ZpZWxkKCdtYXhpbXVtTnVtYmVyT2ZPcHRpb24nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1iLTEgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMyBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW5cIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuTUFYX09QVElPTl9TRUxFQ1RfTElNSVQnXX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgcG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIm1heGltdW1OdW1iZXJPZk9wdGlvblwiIFtwbGFjZWhvbGRlcl09XCJvcHRpb25zLmxlbmd0aCB8fCAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJhbGxvd09ubHlOdW1iZXJzKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwicXVlc3Rpb25zRm9ybUdyb3VwLmdldCgnbWF4aW11bU51bWJlck9mT3B0aW9uJyk/Lm1hcmtBc1RvdWNoZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC0xMiBhc3Nlc3NtZW50LWlucHV0LXBhZGRpbmcgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBvdXRsaW5lLTAgYXNzZXNzbWVudC1pbnB1dC1ib3JkZXItb25lIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC1iZy1ncmV5LW9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlbiBwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMCBtZS0zXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLk9QVElPTlMnXX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdtYXhpbXVtTnVtYmVyT2ZPcHRpb24nKT8uZXJyb3JzICAmJiBxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdtYXhpbXVtTnVtYmVyT2ZPcHRpb24nKT8udG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlclwiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5FUlJPUi5SRVFVSVJFRCddfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYi00IGNvbC0xMiBtdC1tZC0zXCIgKm5nSWY9XCJzaG93RmllbGQoJ29wdGlvbnMnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmb3JtQXJyYXlOYW1lPVwib3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zLmNvbnRyb2xzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiICpuZ0lmPVwib3B0aW9uLmdldCgnaXNBY3RpdmUnKT8udmFsdWUgIT09IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHktbWQtMCBweS0zIGJvcmRlci1ib3R0b20gYm9yZGVyLW1kLTAgY29sLTEyIGQtZmxleCBmbGV4LXdyYXAgZmxleC1tZC1ub3dyYXAgYWxpZ24taXRlbXMtbWQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGdhcC1tZC00IGdhcC0zXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQgZmxleC1tZC1ncm93LTEgZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtbWQtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnB0LW1kLTNdPVwiaSA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGdhcC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm91bmRlZC1jaXJjbGUgcC0yIGJvcmRlci1ncmV5LXRlbi0yIG10LTFcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJvcHRpb25MYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUExBQ0VIT0xERVIuRU5URVJfT1BUSU9OJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleC1ncm93LTEgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMyBib3JkZXItMCBvdXRsaW5lLTAgYmctdHJhbnNwYXJlbnQgaW5wdXQtZm9jdXMgcHktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImN1cnNvci1wb2ludGVyIGQtbWQtbm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltYWdlQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuSUNPTi5DTE9TRSddXCIgKGNsaWNrKT1cInJlbW92ZU9wdGlvbihpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwiaW1hZ2VFcnJvckhhbmRsZXIoJGV2ZW50LCAnYXNzZXRzL2NvbW1vbnMtYXNzZXNzbWVudC9pbWFnZXMvY2xvc2Uuc3ZnJylcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb24uZ2V0KCdvcHRpb25MYWJlbCcpPy5pbnZhbGlkICYmIG9wdGlvbi5nZXQoJ29wdGlvbkxhYmVsJyk/LnRvdWNoZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEyIG10LTFcIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuRVJST1IuUkVRVUlSRUQnXX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0ZpZWxkKCdvcHRpb25zJywgJ3Nob3dXZWlnaHRhZ2UnKSAmJiAhaXNDaGlsZCAmJiBxdWVzdGlvblN0YWNrLmxlbmd0aCA9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEyIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNpeCBtYi0yIG1iLW1kLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2hpZGRlbi1sYWJlbCc6IGkgPiAwfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuV0VJR0hUQUdFJ119fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIChpbnB1dCk9XCJjaGVja01heFZhbCgkZXZlbnQsIG9wdGlvbi5nZXQoJ3dlaWdodCcpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIndlaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC0yIHB5LW1kLTEgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBhc3Nlc3NtZW50LWlucHV0LWJvcmRlci1vbmUgb3V0bGluZS0wIGFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEyIGFzc2Vzc21lbnQtbWFya3MtaW5wdXQgYXNzZXNzbWVudC1iZy1ncmV5LW9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLldFSUdIVEFHRSddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0ZpZWxkKCdvcHRpb25zJywgJ3Nob3dSZW1hcmtzJylcIiBjbGFzcz1cImNvbC1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEyIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNpeCBtYi0yIG1iLW1kLTMgcGItbWQtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaGlkZGVuLWxhYmVsJzogaSA+IDB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5SRU1BUktTJ119fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJyZW1hcmtzUmVxdWlyZWRcIiBmb3JtQ29udHJvbE5hbWU9XCJyZW1hcmtzUmVxdWlyZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLW5vbmUgZC1tZC1ibG9jayBwdC0zXCIgW2NsYXNzLmN1c3RvbS1tYXJnaW5dPVwiaSA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgW3NyY109XCJpbWFnZUNvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULklDT04uQ0xPU0UnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVPcHRpb24oaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwiaW1hZ2VFcnJvckhhbmRsZXIoJGV2ZW50LCAnYXNzZXRzL2NvbW1vbnMtYXNzZXNzbWVudC9pbWFnZXMvY2xvc2Uuc3ZnJylcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJhZGRPcHRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgYmctdHJhbnNwYXJlbnQgYXNzZXNzbWVudC10ZXh0LXByaW1hcnktb25lIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTIgYm9yZGVyLTAgYXNzZXNzbWVudC16b29tLWFuaW1hdGlvbiBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImltYWdlQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuSUNPTi5QTFVTX1BSSU1BUlknXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJpbWFnZUVycm9ySGFuZGxlcigkZXZlbnQsICdhc3NldHMvY29tbW9ucy1hc3Nlc3NtZW50L2ltYWdlcy9wbHVzLXByaW1hcnkuc3ZnJylcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5BRERfT1BUSU9OJ119fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdvcHRpb25zJyk/LmVycm9ycyAgJiYgcXVlc3Rpb25zRm9ybUdyb3VwLmdldCgnb3B0aW9ucycpPy50b3VjaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEyIGFzc2Vzc21lbnQtdGV4dC1kYW5nZXJcIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuRVJST1IuUkVRVUlSRUQnXX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktNCBjb2wtMTIgYm9yZGVyLXRvcFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dGaWVsZCgnY2hpbGRRdWVzdGlvbnMnKSAmJiBxdWVzdGlvblN0YWNrLmxlbmd0aCA9PSAwICYmICFpc0NoaWxkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xNiBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW5cIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuQ0hJTERfUVVFU1RJT05TJ119fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBtYXRUb29sdGlwPVwie3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLkNISUxEX1FVRVNUSU9OU19JTkZPJ119fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCIgbWF0VG9vbHRpcENsYXNzPVwiYXNzZXNzbWVudC10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZUNvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULklDT04uSU5GTyddXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yKT1cImltYWdlRXJyb3JIYW5kbGVyKCRldmVudCwgJ2Fzc2V0cy9jb21tb25zLWFzc2Vzc21lbnQvaW1hZ2VzL2luZm8uc3ZnJylcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgY2hpbGRRdWVzdGlvbkdyb3VwczsgbGV0IGdyb3VwSW5kZXggPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgcC0zIG15LTMgYXNzZXNzbWVudC1iZy1ncmV5LW9uZSBhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdGhyZWUgYXNzZXNzbWVudC1pbnB1dC1ib3JkZXItb25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi0zXCIgKm5nSWY9XCJvcHRpb25zLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1iLTEgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMyBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW5cIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuQVNTSUdORURfT1BUSU9OJ119fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IFt2YWx1ZV09XCJncm91cC5vcHRpb25JZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uR3JvdXBPcHRpb25DaGFuZ2UoZ3JvdXAuaWQsICRldmVudC52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUExBQ0VIT0xERVIuU0VMRUNUX09QVElPTl9UT19MSU5LJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgYXNzZXNzbWVudC1tYXQtc2VsZWN0IGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gYXNzZXNzbWVudC1iZy13aGl0ZSBvdXRsaW5lLTAgYXNzZXNzbWVudC1pbnB1dC1ib3JkZXItb25lIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xM1wiIFt2YWx1ZV09XCJudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLk5PTkUnXX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHQgb2Ygb3B0aW9ucy5jb250cm9sczsgbGV0IG9wSW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwib3B0LmdldCgnaXNBY3RpdmUnKT8udmFsdWUgIT09IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzXCIgW3ZhbHVlXT1cImdldE9wdGlvbklkKG9wdClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0LmdldCgnb3B0aW9uTGFiZWwnKT8udmFsdWUgfHwgKCdPcHRpb24gJyArIChvcEluZGV4ICsgMSkpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcXVlc3Rpb25JZCBvZiBncm91cC5xdWVzdGlvbklkczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ2V0Q2hpbGRRdWVzdGlvbkJ5SWQocXVlc3Rpb25JZCkgYXMgY2hpbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTEgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMCBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTE0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuUVVFU1RJT04nXX19IHt7aSArIDF9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaW1hZ2VDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5JQ09OLkRFTEVURSddXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWljb24gY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUNoaWxkUXVlc3Rpb25CeUlkKGNoaWxkLmlkLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJpbWFnZUVycm9ySGFuZGxlcigkZXZlbnQsICdhc3NldHMvY29tbW9ucy1hc3Nlc3NtZW50L2ltYWdlcy9kZWxldGUuc3ZnJylcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiY2hpbGQ/LnF1ZXN0aW9uVGV4dD8uWzBdPy50ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkRWRpdENoaWxkUXVlc3Rpb24oY2hpbGQsIGdldENoaWxkUXVlc3Rpb25JbmRleChjaGlsZC5pZCkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC0xMiBhc3Nlc3NtZW50LWJ1dHRvbi1wYWRkaW5nIGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gYXNzZXNzbWVudC1iZy13aGl0ZSBhc3Nlc3NtZW50LWlucHV0LWJvcmRlci1vbmUgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMiBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJhZGRFZGl0Q2hpbGRRdWVzdGlvbih1bmRlZmluZWQsIHVuZGVmaW5lZCwgZ3JvdXAuaWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXpvb20tYW5pbWF0aW9uIGJvcmRlci0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMiBhc3Nlc3NtZW50LXRleHQtcHJpbWFyeS1vbmUgYmctdHJhbnNwYXJlbnQgYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEyIG91dGxpbmUtMCBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZUNvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULklDT04uUExVU19QUklNQVJZJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yKT1cImltYWdlRXJyb3JIYW5kbGVyKCRldmVudCwgJ2Fzc2V0cy9jb21tb25zLWFzc2Vzc21lbnQvaW1hZ2VzL3BsdXMtcHJpbWFyeS5zdmcnKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5BRERfTU9SRSddfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImFkZEVkaXRDaGlsZFF1ZXN0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC16b29tLWFuaW1hdGlvbiBhc3Nlc3NtZW50LWJ1dHRvbi1wYWRkaW5nIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMyBhc3Nlc3NtZW50LXRleHQtcHJpbWFyeS1vbmUgYXNzZXNzbWVudC1iZy1wYWxldHRlLUVERjNGRCBhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTIgb3V0bGluZS0wIGNvbC0xMiBhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIG10LTMgYm9yZGVyLUFEQzlGNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZUNvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULklDT04uUExVU19QUklNQVJZJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwiaW1hZ2VFcnJvckhhbmRsZXIoJGV2ZW50LCAnYXNzZXRzL2NvbW1vbnMtYXNzZXNzbWVudC9pbWFnZXMvcGx1cy1wcmltYXJ5LnN2ZycpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuQUREX0NISUxEX1FVRVNUSU9OJ119fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktNCBjb2wtMTIgYm9yZGVyLXRvcFwiICpuZ0lmPVwic2hvd0ZpZWxkKCdoaW50VGV4dCcpXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1iLTIgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xNiBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW5cIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuQUREX0hJTlQnXX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxhcHAtdGV4dC1lZGl0b3IgW3ByZVRleHRdPVwicXVlc3Rpb25zRm9ybUdyb3VwPy5nZXQoJ2hpbnRUZXh0Jyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAoaW5wdXRDaGFuZ2UpPVwicXVlc3Rpb25zRm9ybUdyb3VwPy5nZXQoJ2hpbnRUZXh0Jyk/LnBhdGNoVmFsdWUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUExBQ0VIT0xERVIuRU5URVJfSElOVCddXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtY3VzdG9tLWFuZ3VsYXItZWRpdG9yLXdoaXRlIGFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2hlaWdodF09XCInOHJlbSdcIj5cclxuICAgICAgICAgICAgICAgIDwvYXBwLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb25zRm9ybUdyb3VwLmdldCgnaGludFRleHQnKT8uZXJyb3JzICAmJiBxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdoaW50VGV4dCcpPy50b3VjaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEyIGFzc2Vzc21lbnQtdGV4dC1kYW5nZXJcIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuRVJST1IuUkVRVUlSRUQnXX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktNCBjb2wtMTIgYm9yZGVyLXRvcFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWItMiBhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTggYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuIGNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5GSUVMRFNfU0VUVElOR1MnXX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0zIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTAgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMyBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5NQU5EQVRPUlknXX19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTAgYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTEgYXNzZXNzbWVudC10ZXh0LWdyZXktZWlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5NQU5EQVRPUllfREVTQyddfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIG5hbWU9XCJpc01hbmRhdG9yeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpc01hbmRhdG9yeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnYXAtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RmllbGQoJ2lzRmlsdGVyRW5hYmxlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuRklMVEVSX0VOQUJMRUQnXX19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTAgYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTEgYXNzZXNzbWVudC10ZXh0LWdyZXktZWlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5GSUxURVJfRU5BQkxFRF9ERVNDJ119fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgbmFtZT1cImlzRmlsdGVyRW5hYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpc0ZpbHRlckVuYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0zIGNvbC0xMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RmllbGQoJ2lzRmlsdGVyRW5hYmxlZCcpICYmIHF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ2lzRmlsdGVyRW5hYmxlZCcpPy52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1iLTEgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMyBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW5cIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuUVVFU1RJT05fTkFNRSddfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJxdWVzdGlvblN1YlRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwibGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QTEFDRUhPTERFUi5RVUVTVElPTl9OQU1FJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC0xMiBhc3Nlc3NtZW50LWlucHV0LXBhZGRpbmcgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBvdXRsaW5lLTAgYXNzZXNzbWVudC1pbnB1dC1ib3JkZXItb25lIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC1iZy1ncmV5LW9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYm9yZGVyLWRhbmdlcic6IHF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ3F1ZXN0aW9uU3ViVGV4dCcpPy5pbnZhbGlkICYmIHF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ3F1ZXN0aW9uU3ViVGV4dCcpPy50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdxdWVzdGlvblN1YlRleHQnKT8uaW52YWxpZCAmJiBxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdxdWVzdGlvblN1YlRleHQnKT8udG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlciBtdC0xXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLlJFUVVJUkVEJ119fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTMgY29sLTEyXCIgKm5nSWY9XCIhaXNDaGlsZCAmJiAoc2tpbGxzTGlzdD8ubGVuZ3RoID8/IDApID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1iLTEgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMyBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW5cIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuTUFQX1NLSUxMUyddfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInNraWxsQ29kZXNcIiBtdWx0aXBsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwibGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QTEFDRUhPTERFUi5TRUxFQ1RfU0tJTExTJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYW5lbENsYXNzPVwiYXNzZXNzbWVudC1jaGVja2JveGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgYXNzZXNzbWVudC1tYXQtc2VsZWN0IGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gb3V0bGluZS0wIGFzc2Vzc21lbnQtaW5wdXQtYm9yZGVyLW9uZSBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzIGFzc2Vzc21lbnQtYmctZ3JleS1vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzXCIgKm5nRm9yPVwibGV0IHNraWxsIG9mIHNraWxsc0xpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNraWxsPy5jb2RlXCI+e3tza2lsbD8ubGFiZWxzPy5bMF0/LnRleHR9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
617
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1idWlsZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbnMtYXNzZXNzbWVudC9zcmMvbGliL21vZHVsZXMvYXNzZXNzbWVudC1tYWtlci9jb21wb25lbnRzL2Fzc2Vzc21lbnQtYnVpbGRlci9hc3Nlc3NtZW50LWJ1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LW1ha2VyL2NvbXBvbmVudHMvYXNzZXNzbWVudC1idWlsZGVyL2Fzc2Vzc21lbnQtYnVpbGRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFBcUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQztBQU16RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBUW5FLE1BQU0sT0FBTywwQkFBMEI7SUFxQm5DLFlBQ1ksV0FBd0IsRUFDeEIsd0JBQWtELEVBQ2xELHNCQUE4QyxFQUMvQyxTQUFtRCxFQUMxQixVQUFlO1FBSnZDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUMvQyxjQUFTLEdBQVQsU0FBUyxDQUEwQztRQUMxQixlQUFVLEdBQVYsVUFBVSxDQUFLO1FBekJuRCxnQkFBVyxHQUE4QixFQUFFLENBQUM7UUFDNUMsZ0JBQVcsR0FBOEIs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RCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTyxXQUFXO1FBQ2YsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFO1lBQzVELFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNyRCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDVDtJQUNMLENBQUM7O3dIQXpuQlEsMEJBQTBCLHVKQTBCdkIsZUFBZTs0R0ExQmxCLDBCQUEwQixzTENoQnZDLHM0akNBMlpNOzRGRDNZTywwQkFBMEI7a0JBTnRDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsV0FBVyxFQUFFLHFDQUFxQztvQkFDbEQsU0FBUyxFQUFFLENBQUMscUNBQXFDLENBQUM7aUJBQ3JEOzswQkE0QlEsTUFBTTsyQkFBQyxlQUFlOzRDQW5CRyxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgUXVlc3Rpb25UeXBlLCBSZWZEYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvYXNzZXNzbWVudC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBBc3Nlc3NtZW50UXVlc3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlcy9xdWVzdGlvbi5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBBc3Nlc3NtZW50TWFrZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXNzZXNzbWVudC1tYWtlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUXVlc3Rpb25QYXBlclNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlcy9xdWVzdGlvbi1wYXBlci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBBc3Nlc3NtZW50QnVpbGRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hc3Nlc3NtZW50LWJ1aWxkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IGRlZXBDbG9uZSwgZ2VuZXJhdGVVdWlkIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3V0aWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItYXBwLWFzc2Vzc21lbnQtYnVpbGRlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXNzZXNzbWVudC1idWlsZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2Fzc2Vzc21lbnQtYnVpbGRlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQXNzZXNzbWVudEJ1aWxkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgbGFiZWxDb25maWc6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICAgIGltYWdlQ29uZmlnOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcbiAgICBxdWVzdGlvblR5cGVzOiBRdWVzdGlvblR5cGVbXSA9IFtdO1xyXG4gICAgcXVlc3Rpb25EZXRhaWxzOiBBc3Nlc3NtZW50UXVlc3Rpb24gfCBudWxsID0gbnVsbDtcclxuICAgIHJ1bGVzOiBhbnkgPSB7fTtcclxuICAgIHF1ZXN0aW9uU3RhY2s6IHsgcGFyZW50Rm9ybVZhbHVlOiBBc3Nlc3NtZW50UXVlc3Rpb24sIGVkaXRpbmdRdWVzdGlvbkluZGV4PzogbnVtYmVyLCBhZGRpbmdUb0dyb3VwSWQ/OiBzdHJpbmcgfVtdID0gW107XHJcbiAgICBAVmlld0NoaWxkKCdzY3JvbGxDb250YWluZXInKSBzY3JvbGxDb250YWluZXIhOiBFbGVtZW50UmVmO1xyXG5cclxuICAgIGNoaWxkUXVlc3Rpb25Hcm91cHM6IHsgaWQ6IHN0cmluZywgb3B0aW9uSWQ6IHN0cmluZyB8IG51bWJlciB8IG51bGwsIHF1ZXN0aW9uSWRzOiAoc3RyaW5nIHwgbnVtYmVyKVtdIH1bXSA9IFtdO1xyXG5cclxuICAgIHF1ZXN0aW9uc0Zvcm1Hcm91cCE6IEZvcm1Hcm91cDtcclxuICAgIHF1ZXN0aW9uQmFuazogUmVjb3JkPG51bWJlciwgQXNzZXNzbWVudFF1ZXN0aW9uPiA9IHt9O1xyXG4gICAgaXNDaGlsZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgLy8gcGFyZW50UXVlc3Rpb246IEFzc2Vzc21lbnRRdWVzdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIGFzc2Vzc21lbnRJZDogbnVtYmVyID0gMDtcclxuXHJcbiAgICBpc1N1Ym1pdHRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHNraWxsc0xpc3Q6IFJlZkRhdGFbXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICAgIHByaXZhdGUgYXNzZXNzbWVudEJ1aWxkZXJTZXJ2aWNlOiBBc3Nlc3NtZW50QnVpbGRlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBhc3Nlc3NtZW50TWFrZXJTZXJ2aWNlOiBBc3Nlc3NtZW50TWFrZXJTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxBc3Nlc3NtZW50QnVpbGRlckNvbXBvbmVudD4sXHJcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkaWFsb2dEYXRhOiBhbnksXHJcbiAgICApIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubGFiZWxDb25maWcgPSB0aGlzLmRpYWxvZ0RhdGE/LmxhYmVsQ29uZmlnO1xyXG4gICAgICAgIHRoaXMuaW1hZ2VDb25maWcgPSB0aGlzLmRpYWxvZ0RhdGE/LmltYWdlQ29uZmlnO1xyXG4gICAgICAgIHRoaXMucnVsZXMgPSB0aGlzLmRpYWxvZ0RhdGE/LnJ1bGVzO1xyXG4gICAgICAgIHRoaXMucXVlc3Rpb25UeXBlcyA9IHRoaXMuZGlhbG9nRGF0YT8ucXVlc3Rpb25UeXBlcztcclxuICAgICAgICB0aGlzLnF1ZXN0aW9uQmFuayA9IHRoaXMuZGlhbG9nRGF0YT8ucXVlc3Rpb25CYW5rO1xyXG4gICAgICAgIHRoaXMuaXNDaGlsZCA9IHRoaXMuZGlhbG9nRGF0YT8uaXNDaGlsZDtcclxuICAgICAgICB0aGlzLnNraWxsc0xpc3QgPSB0aGlzLmRpYWxvZ0RhdGE/LnNraWxsc0xpc3QgfHwgW107XHJcbiAgICAgICAgdGhpcy5hc3Nlc3NtZW50SWQgPSB0aGlzLmRpYWxvZ0RhdGE/LmFzc2Vzc21lbnRJZDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5xdWVzdGlvbkRldGFpbHMpIHtcclxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvbkRldGFpbHMgPSBkZWVwQ2xvbmUodGhpcy5kaWFsb2dEYXRhPy5xdWVzdGlvbkRldGFpbHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldHVwRm9ybUdyb3VwKCk7XHJcbiAgICAgICAgdGhpcy5hcHBseUR5bmFtaWNWYWxpZGF0b3JzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2VuZXJhdGVDaGlsZFF1ZXN0aW9uTGlzdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5pc0NoaWxkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdW5pcXVlSWRzID0gbmV3IFNldDxudW1iZXI+KCk7XHJcblxyXG4gICAgICAgIHRoaXMucXVlc3Rpb25EZXRhaWxzPy5kZWZhdWx0T3B0aW9uc0xpc3Q/LmZvckVhY2gob3B0aW9uID0+IHtcclxuICAgICAgICAgICAgb3B0aW9uLmNoaWxkUXVlc3Rpb25MaXN0Py5mb3JFYWNoKGlkID0+IHVuaXF1ZUlkcy5hZGQoaWQpKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odW5pcXVlSWRzKT8ubWFwKGlkID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucXVlc3Rpb25CYW5rW2lkXSA/IGRlZXBDbG9uZSh0aGlzLnF1ZXN0aW9uQmFua1tpZF0pIDogbnVsbDtcclxuICAgICAgICB9KT8uZmlsdGVyKEJvb2xlYW4pIGFzIEFzc2Vzc21lbnRRdWVzdGlvbltdO1xyXG4gICAgfVxyXG5cclxuICAgIHNldHVwRm9ybUdyb3VwKCkge1xyXG4gICAgICAgIHRoaXMucXVlc3Rpb25zRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgICAgIHF1ZXN0aW9uVHlwZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgcXVlc3Rpb25UZXh0OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICBxdWVzdGlvblN1YlRleHQ6IFsnJ10sXHJcbiAgICAgICAgICAgIGlzRmlsdGVyRW5hYmxlZDogW2ZhbHNlXSxcclxuICAgICAgICAgICAgaXNNYW5kYXRvcnk6IFtmYWxzZV0sXHJcbiAgICAgICAgICAgIC8vIHZpc2liaWxpdHk6IFt0cnVlXSxcclxuICAgICAgICAgICAgdG90YWxNYXJrczogW251bGxdLFxyXG4gICAgICAgICAgICBtaW5DaGFyYWN0ZXJDb3VudDogW251bGxdLFxyXG4gICAgICAgICAgICBtYXhDaGFyYWN0ZXJDb3VudDogW251bGxdLFxyXG4gICAgICAgICAgICBtYXhpbXVtTnVtYmVyT2ZPcHRpb246IFtudWxsXSxcclxuICAgICAgICAgICAgbWluaW11bU51bWJlck9mT3B0aW9uOiBbbnVsbF0sXHJcbiAgICAgICAgICAgIG1heEZpbGVTaXplOiBbbnVsbF0sXHJcbiAgICAgICAgICAgIG1heE5vT2ZGaWxlczogW251bGxdLFxyXG4gICAgICAgICAgICBjdXN0b21SZWdleDogWycnXSxcclxuICAgICAgICAgICAgaGludFRleHQ6IFsnJ10sXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uTWVkaWE6IFsnJ10sXHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZm9ybUJ1aWxkZXIuYXJyYXkoW10pLFxyXG4gICAgICAgICAgICBjaGlsZFF1ZXN0aW9uczogW1tdXSxcclxuICAgICAgICAgICAgc2tpbGxDb2RlczogW1tdXVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ3F1ZXN0aW9uVHlwZScpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hcHBseUR5bmFtaWNWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHRoaXMucXVlc3Rpb25EZXRhaWxzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVGb3JtKHRoaXMucXVlc3Rpb25EZXRhaWxzLCB0cnVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmJ1aWxkQ2hpbGRRdWVzdGlvbkdyb3VwcyhbXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHBvcHVsYXRlRm9ybShxdWVzdGlvbkRldGFpbHM6IEFzc2Vzc21lbnRRdWVzdGlvbiwgYnVpbGRDaGlsZEdyb3VwczogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAgICAgaWYgKCFxdWVzdGlvbkRldGFpbHMpIHJldHVybjtcclxuICAgICAgICBjb25zdCBjaGlsZFF1ZXN0aW9ucyA9IHF1ZXN0aW9uRGV0YWlscz8uY2hpbGRRdWVzdGlvbnMgfHwgdGhpcy5nZW5lcmF0ZUNoaWxkUXVlc3Rpb25MaXN0KCk7XHJcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSB0aGlzLmFzc2Vzc21lbnRCdWlsZGVyU2VydmljZS5nZXRRdWVzdGlvbkRUTyh7IC4uLnF1ZXN0aW9uRGV0YWlscywgY2hpbGRRdWVzdGlvbnMgfSk7XHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbnNGb3JtR3JvdXAucGF0Y2hWYWx1ZShmb3JtRGF0YSk7XHJcbiAgICAgICAgaWYgKGZvcm1EYXRhLm9wdGlvbnM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICBjb25zdCB0b3RhbE1hcmtzID0gTnVtYmVyKGZvcm1EYXRhLnRvdGFsTWFya3MpIHx8IDA7XHJcbiAgICAgICAgICAgIGZvcm1EYXRhLm9wdGlvbnMuZm9yRWFjaCgob3B0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdEdyb3VwID0gdGhpcy5jcmVhdGVPcHRpb24oKTtcclxuICAgICAgICAgICAgICAgIGlmICh0b3RhbE1hcmtzID4gMCAmJiBvcHQud2VpZ2h0ICE9PSB1bmRlZmluZWQgJiYgb3B0LndlaWdodCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG9wdC53ZWlnaHQgPSBwYXJzZUZsb2F0KCgoTnVtYmVyKG9wdC53ZWlnaHQpICogdG90YWxNYXJrcykgLyAxMDApLnRvRml4ZWQoMikpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgb3B0R3JvdXAucGF0Y2hWYWx1ZShvcHQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnB1c2gob3B0R3JvdXApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGJ1aWxkQ2hpbGRHcm91cHMpIHtcclxuICAgICAgICAgICAgdGhpcy5idWlsZENoaWxkUXVlc3Rpb25Hcm91cHMoY2hpbGRRdWVzdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBvblN1Ym1pdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5xdWVzdGlvbnNGb3JtR3JvdXAuaW52YWxpZCkge1xyXG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uc0Zvcm1Hcm91cC5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHRvdGFsTWFya3MgPSBOdW1iZXIodGhpcy5xdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCd0b3RhbE1hcmtzJyk/LnZhbHVlKSB8fCAwO1xyXG4gICAgICAgIGNvbnN0IHFUeXBlID0gdGhpcy5xdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdxdWVzdGlvblR5cGUnKT8udmFsdWU7XHJcbiAgICAgICAgY29uc3Qgb3B0aW9uc1ZhbHVlcyA9IHRoaXMucXVlc3Rpb25zRm9ybUdyb3VwLmdldCgnb3B0aW9ucycpPy52YWx1ZSB8fCBbXTtcclxuICAgICAgICBjb25zdCBzaG93V2VpZ2h0YWdlID0gdGhpcy5zaG93RmllbGQoJ29wdGlvbnMnLCAnc2hvd1dlaWdodGFnZScpO1xyXG5cclxuICAgICAgICBpZiAoc2hvd1dlaWdodGFnZSAmJiB0b3RhbE1hcmtzID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgdG90YWxXZWlnaHRzID0gMDtcclxuICAgICAgICAgICAgbGV0IGhhc0ludmFsaWRXZWlnaHQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3B0IG9mIG9wdGlvbnNWYWx1ZXMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChvcHQuaXNBY3RpdmUgPT09IGZhbHNlKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHcgPSBOdW1iZXIob3B0LndlaWdodCkgfHwgMDtcclxuICAgICAgICAgICAgICAgIGlmICh3ID4gdG90YWxNYXJrcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc0ludmFsaWRXZWlnaHQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdG90YWxXZWlnaHRzICs9IHc7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChoYXNJbnZhbGlkV2VpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBUbyBrZWVwIHdpdGhpbiBleGlzdGluZyBzdHlsZXMsIGVtaXR0aW5nIGRlZmF1bHQgZXJyb3Igd2l0aCBvdXIgc3BlY2lmaWMgbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dEYXRhPy5zbmFja2Jhck1lc3NhZ2VFbWl0dGVyPy5lbWl0KHsgbWVzc2FnZTogdGhpcy5sYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlRPQVNULk9QVElPTl9TQ09SRV9HUkVBVEVSX1RIQU5fVE9UQUxfTUFSS1MnXSwgdHlwZTogJ2Vycm9yJyB9KTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHFUeXBlID09PSAnUVVFU1RJT05fVFlQRS5NVUxUSV9TRUxFQ1QnICYmIHRvdGFsV2VpZ2h0cyA+IHRvdGFsTWFya3MpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nRGF0YT8uc25hY2tiYXJNZXNzYWdlRW1pdHRlcj8uZW1pdCh7IG1lc3NhZ2U6IHRoaXMubGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5UT0FTVC5TVU1fT0ZfT1BUSU9OX1NDT1JFU19HUkVBVEVSX1RIQU5fVE9UQUxfTUFSS1MnXSwgdHlwZTogJ2Vycm9yJyB9KTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSBkZWVwQ2xvbmUodGhpcy5xdWVzdGlvbnNGb3JtR3JvdXAudmFsdWUpO1xyXG4gICAgICAgIGlmIChzaG93V2VpZ2h0YWdlICYmIHRvdGFsTWFya3MgPiAwICYmIGZvcm1WYWx1ZS5vcHRpb25zPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgZm9ybVZhbHVlLm9wdGlvbnMuZm9yRWFjaCgob3B0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChvcHQud2VpZ2h0ICE9PSB1bmRlZmluZWQgJiYgb3B0LndlaWdodCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG9wdC53ZWlnaHQgPSBwYXJzZUZsb2F0KCgoTnVtYmVyKG9wdC53ZWlnaHQpIC8gdG90YWxNYXJrcykgKiAxMDApLnRvRml4ZWQoMikpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnF1ZXN0aW9uU3RhY2subGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAvLyBjaGlsZCBxdWVzdGlvbiBsb2dpY1xyXG4gICAgICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMucXVlc3Rpb25TdGFja1t0aGlzLnF1ZXN0aW9uU3RhY2subGVuZ3RoIC0gMV07XHJcblxyXG4gICAgICAgICAgICBpZiAoc3RhdGU/LmVkaXRpbmdRdWVzdGlvbkluZGV4ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmICghc3RhdGUucGFyZW50Rm9ybVZhbHVlLmNoaWxkUXVlc3Rpb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUucGFyZW50Rm9ybVZhbHVlLmNoaWxkUXVlc3Rpb25zID0gW107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgZXhpc3RpbmcgY2hpbGRcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkUXVlc3Rpb24gPSBzdGF0ZS5wYXJlbnRGb3JtVmFsdWUuY2hpbGRRdWVzdGlvbnNbc3RhdGUuZWRpdGluZ1F1ZXN0aW9uSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IHRoaXMuYXNzZXNzbWVudEJ1aWxkZXJTZXJ2aWNlLnNldFF1ZXN0aW9uRFRPKGZvcm1WYWx1ZSwgY2hpbGRRdWVzdGlvbik7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uID0gYXdhaXQgdGhpcy51cGRhdGVRdWVzdGlvbihwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5wYXJlbnRGb3JtVmFsdWUuY2hpbGRRdWVzdGlvbnNbc3RhdGUuZWRpdGluZ1F1ZXN0aW9uSW5kZXhdID0gcXVlc3Rpb247XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHF1ZXN0aW9uPy5pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXN0aW9uQmFua1txdWVzdGlvbi5pZF0gPSBxdWVzdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0RhdGE/LnNuYWNrYmFyTWVzc2FnZUVtaXR0ZXI/LmVtaXQoeyBtZXNzYWdlOiB0aGlzLmxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuVE9BU1QuRVJST1JfREVGQVVMVCddLCB0eXBlOiAnZXJyb3InIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IHsgZXJyb3IsIG1ldGhvZDogJ1BBVENIJywgcGF5bG9hZCB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBBZGQgbmV3IGNoaWxkIFxyXG4gICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IHRoaXMuYXNzZXNzbWVudEJ1aWxkZXJTZXJ2aWNlLnNldFF1ZXN0aW9uRFRPKGZvcm1WYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uID0gYXdhaXQgdGhpcy5jcmVhdGVRdWVzdGlvbihwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0ZT8ucGFyZW50Rm9ybVZhbHVlPy5jaGlsZFF1ZXN0aW9ucz8ucHVzaChxdWVzdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHF1ZXN0aW9uPy5pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXN0aW9uQmFua1txdWVzdGlvbi5pZF0gPSBxdWVzdGlvbjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdycCA9IHRoaXMuY2hpbGRRdWVzdGlvbkdyb3Vwcy5maW5kKChnOiBhbnkpID0+IGcuaWQgPT09IHN0YXRlLmFkZGluZ1RvR3JvdXBJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChncnApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycC5xdWVzdGlvbklkcz8ucHVzaChxdWVzdGlvbj8uaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdycC5vcHRpb25JZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdCA9IHN0YXRlLnBhcmVudEZvcm1WYWx1ZT8uZGVmYXVsdE9wdGlvbnNMaXN0Py5maW5kKChvOiBhbnkpID0+IChvLmlkIHx8IG8udXVpZCkgPT0gZ3JwLm9wdGlvbklkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdC5jaGlsZFF1ZXN0aW9uTGlzdCA9IG9wdC5jaGlsZFF1ZXN0aW9uTGlzdCB8fCBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0LmNoaWxkUXVlc3Rpb25MaXN0LnB1c2gocXVlc3Rpb24uaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hpbGRRdWVzdGlvbkdyb3Vwcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogZ2VuZXJhdGVVdWlkKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uSWQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25JZHM6IFtxdWVzdGlvbj8uaWRdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0RhdGE/LnNuYWNrYmFyTWVzc2FnZUVtaXR0ZXI/LmVtaXQoeyBtZXNzYWdlOiB0aGlzLmxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuVE9BU1QuRVJST1JfREVGQVVMVCddLCB0eXBlOiAnZXJyb3InIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IHsgZXJyb3IsIG1ldGhvZDogJ1BPU1QnLCBwYXlsb2FkIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uU3RhY2sucG9wKCk7XHJcblxyXG4gICAgICAgICAgICAvLyBSZS1wb3B1bGF0ZSBwYXJlbnQgZm9ybVxyXG4gICAgICAgICAgICB0aGlzLnJlc2V0QW5kUG9wdWxhdGUoc3RhdGU/LnBhcmVudEZvcm1WYWx1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHF1ZXN0aW9uRFRPID0gdGhpcy5hc3Nlc3NtZW50QnVpbGRlclNlcnZpY2Uuc2V0UXVlc3Rpb25EVE8oZm9ybVZhbHVlLCB0aGlzLnF1ZXN0aW9uRGV0YWlscyk7XHJcblxyXG4gICAgICAgICAgICAvLyBVcGRhdGUgbG9jYWwgdGVtcGxhdGUgdHJlZSByZXByZXNlbnRhdGlvblxyXG4gICAgICAgICAgICBpZiAodGhpcy5xdWVzdGlvbkRldGFpbHM/LmlkKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uRFRPID0gYXdhaXQgdGhpcy51cGRhdGVRdWVzdGlvbihxdWVzdGlvbkRUTyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHF1ZXN0aW9uRFRPPy5pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXN0aW9uQmFua1txdWVzdGlvbkRUTy5pZF0gPSBxdWVzdGlvbkRUT1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0RhdGE/LnNuYWNrYmFyTWVzc2FnZUVtaXR0ZXI/LmVtaXQoeyBtZXNzYWdlOiB0aGlzLmxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuVE9BU1QuUVVFU1RJT05fVVBEQVRFRF9TVUNDRVNTJ10sIHR5cGU6ICdzdWNjZXNzJyB9KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7IHN1Y2Nlc3M6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0RhdGE/LnNuYWNrYmFyTWVzc2FnZUVtaXR0ZXI/LmVtaXQoeyBtZXNzYWdlOiB0aGlzLmxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuVE9BU1QuRVJST1JfREVGQVVMVCddLCB0eXBlOiAnZXJyb3InIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IHsgZXJyb3IsIG1ldGhvZDogJ1BBVENIJywgcGF5bG9hZDogcXVlc3Rpb25EVE8gfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVPckVkaXRBc3Nlc3NtZW50QW5kUXVlc3Rpb25QYXBlcihxdWVzdGlvbkRUTyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlUXVlc3Rpb24ocGF5bG9hZDogYW55KTogUHJvbWlzZTxBc3Nlc3NtZW50UXVlc3Rpb24+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFzc2Vzc21lbnRNYWtlclNlcnZpY2UuY3JlYXRlUXVlc3Rpb24ocGF5bG9hZCkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChyZXMpID0+IHJlc29sdmUocmVzIGFzIEFzc2Vzc21lbnRRdWVzdGlvbiksXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycikgPT4gcmVqZWN0KGVycilcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUXVlc3Rpb24ocGF5bG9hZDogYW55KTogUHJvbWlzZTxBc3Nlc3NtZW50UXVlc3Rpb24+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFzc2Vzc21lbnRNYWtlclNlcnZpY2UucGF0Y2hRdWVzdGlvbihwYXlsb2FkKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlcykgPT4gcmVzb2x2ZShyZXMgYXMgQXNzZXNzbWVudFF1ZXN0aW9uKSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiByZWplY3QoZXJyKVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVPckVkaXRBc3Nlc3NtZW50QW5kUXVlc3Rpb25QYXBlcihxdWVzdGlvbjogQXNzZXNzbWVudFF1ZXN0aW9uKSB7XHJcbiAgICAgICAgY29uc3QgcXVlc3Rpb25QYXBlciA9IGRlZXBDbG9uZSh0aGlzLmRpYWxvZ0RhdGE/LmFzc2Vzc21lbnRRdWVzdGlvblBhcGVyRGF0YSk7XHJcbiAgICAgICAgY29uc3Qgc2VjdGlvblF1ZXN0aW9uID0gdGhpcy5hc3Nlc3NtZW50QnVpbGRlclNlcnZpY2UuZ2VuZXJhdGVTZWN0aW9uUXVlc3Rpb24ocXVlc3Rpb24pO1xyXG4gICAgICAgIGlmICghdGhpcy5kaWFsb2dEYXRhPy5zZWN0aW9uRGV0YWlscykge1xyXG4gICAgICAgICAgICBjb25zdCBsaXN0ID0gcXVlc3Rpb25QYXBlcj8ucXVlc3Rpb25QYXBlclNlY3Rpb25MaXN0O1xyXG4gICAgICAgICAgICBjb25zdCBsYXN0U2VxdWVuY2UgPSBsaXN0Py5sZW5ndGggPyBsaXN0W2xpc3QubGVuZ3RoIC0gMV0ub3JkZXJObyB8fCAwIDogMDtcclxuICAgICAgICAgICAgY29uc3QgbmV3U2VjdGlvbiA9IHRoaXMuYXNzZXNzbWVudEJ1aWxkZXJTZXJ2aWNlLmNyZWF0ZU5ld1NlY3Rpb24obGFzdFNlcXVlbmNlICsgMSk7XHJcblxyXG4gICAgICAgICAgICBuZXdTZWN0aW9uPy5zZWN0aW9uUXVlc3Rpb25zTGlzdD8ucHVzaChzZWN0aW9uUXVlc3Rpb24pO1xyXG5cclxuICAgICAgICAgICAgcXVlc3Rpb25QYXBlcj8ucXVlc3Rpb25QYXBlclNlY3Rpb25MaXN0Py5wdXNoKG5ld1NlY3Rpb24pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlY3Rpb25SZWYgPSBxdWVzdGlvblBhcGVyPy5xdWVzdGlvblBhcGVyU2VjdGlvbkxpc3Q/LmZpbmQoKHNlY3Rpb246IFF1ZXN0aW9uUGFwZXJTZWN0aW9uKSA9PiBzZWN0aW9uPy5pZCA9PSB0aGlzLmRpYWxvZ0RhdGE/LnNlY3Rpb25EZXRhaWxzPy5pZCk7XHJcbiAgICAgICAgICAgIHNlY3Rpb25SZWY/LnNlY3Rpb25RdWVzdGlvbnNMaXN0Py5wdXNoKHNlY3Rpb25RdWVzdGlvbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBxdWVzdGlvblBhcGVyRFRPID0gdGhpcy5hc3Nlc3NtZW50QnVpbGRlclNlcnZpY2UuZ2VuZXJhdGVRdWVzdGlvblBhcGVyRFRPKHF1ZXN0aW9uUGFwZXIsIHRoaXMucXVlc3Rpb25CYW5rKTtcclxuICAgICAgICBjb25zdCBhc3Nlc3NtZW50RFRPID0gdGhpcy5hc3Nlc3NtZW50QnVpbGRlclNlcnZpY2UuZ2VuZXJhdGVBc3Nlc3NtZW50RFRPKHRoaXMuYXNzZXNzbWVudElkLCBxdWVzdGlvblBhcGVyRFRPKTtcclxuXHJcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgICAgICAgYXNzZXNzbWVudDogYXNzZXNzbWVudERUTyxcclxuICAgICAgICAgICAgcXVlc3Rpb25QYXBlcjogcXVlc3Rpb25QYXBlckRUT1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgYXBpQ2FsbCA9IHRoaXMuYXNzZXNzbWVudElkXHJcbiAgICAgICAgICAgID8gdGhpcy5hc3Nlc3NtZW50TWFrZXJTZXJ2aWNlLnBhdGNoQXNzZXNzbWVudEFuZFF1ZXN0aW9uUGFwZXIocGF5bG9hZClcclxuICAgICAgICAgICAgOiB0aGlzLmFzc2Vzc21lbnRNYWtlclNlcnZpY2UuY3JlYXRlQXNzZXNzbWVudEFuZFF1ZXN0aW9uUGFwZXIocGF5bG9hZCk7XHJcblxyXG4gICAgICAgIGFwaUNhbGwuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgYXNzZXNzbWVudElkOiByZXM/LmFzc2Vzc21lbnQ/LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uUGFwZXI6IHJlcz8ucXVlc3Rpb25QYXBlcixcclxuICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbk1hcDogcmVzPy5xdWVzdGlvbk1hcFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dEYXRhPy5zbmFja2Jhck1lc3NhZ2VFbWl0dGVyPy5lbWl0KHsgbWVzc2FnZTogdGhpcy5sYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlRPQVNULkVSUk9SX0RFRkFVTFQnXSwgdHlwZTogJ2Vycm9yJyB9KTtcclxuICAgICAgICAgICAgICAgIHRocm93IHsgZXJyb3IsIG1ldGhvZDogdGhpcy5hc3Nlc3NtZW50SWQgPyAnUEFUQ0gnIDogJ1BPU1QnLCBwYXlsb2FkIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFwcGx5RHluYW1pY1ZhbGlkYXRvcnMoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJ1bGVzIHx8IE9iamVjdC5rZXlzKHRoaXMucnVsZXMpLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBmb3JtID0gdGhpcy5xdWVzdGlvbnNGb3JtR3JvdXA7XHJcbiAgICAgICAgY29uc3QgcVR5cGUgPSBmb3JtLmdldCgncXVlc3Rpb25UeXBlJyk/LnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRSdWxlcyA9IHRoaXMucnVsZXNbcVR5cGVdIHx8IHt9O1xyXG5cclxuICAgICAgICBjb25zdCBleGNsdWRlZENvbnRyb2xzID0gbmV3IFNldChbJ3F1ZXN0aW9uVHlwZScsICdxdWVzdGlvblRleHQnLCAnb3B0aW9ucycsICd2aXNpYmlsaXR5JywgJ2lzTWFuZGF0b3J5JywgJ3F1ZXN0aW9uU3ViVGV4dCcsICdza2lsbENvZGVzJ10pO1xyXG5cclxuICAgICAgICAvLyBIYW5kbGUgbm9ybWFsIGNvbnRyb2xzXHJcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoZm9ybS5jb250cm9scykuZm9yRWFjaCgoW2tleSwgY29udHJvbF0pID0+IHtcclxuICAgICAgICAgICAgaWYgKGV4Y2x1ZGVkQ29udHJvbHMuaGFzKGtleSkpIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHJ1bGUgPSBjdXJyZW50UnVsZXNba2V5XTtcclxuXHJcbiAgICAgICAgICAgIGlmIChydWxlPy52aXNpYmxlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gcnVsZT8ucmVxdWlyZWQgPyBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gOiBbXTtcclxuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09ICdxdWVzdGlvbk1lZGlhJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oL14oaHR0cHM/OlxcL1xcLyk/KFtcXGRhLXpcXC4tXSspXFwuKFthLXpcXC5dezIsNn0pKFtcXC9cXHcgXFwuLV0qKSpcXC8/KFxcP1teXFxzXSopPyQvaSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMubGVuZ3RoID4gMCA/IHZhbGlkYXRvcnMgOiBudWxsKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKGtleSA9PT0gJ2NoaWxkUXVlc3Rpb25zJyA/IFtdIDogbnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBIYW5kbGUgb3B0aW9ucyBGb3JtQXJyYXlcclxuICAgICAgICBjb25zdCBvcHRpb25zQ29udHJvbCA9IGZvcm0uZ2V0KCdvcHRpb25zJykgYXMgRm9ybUFycmF5O1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnNSdWxlID0gY3VycmVudFJ1bGVzWydvcHRpb25zJ107XHJcblxyXG4gICAgICAgIGlmICghb3B0aW9uc1J1bGU/LnZpc2libGUpIHtcclxuICAgICAgICAgICAgb3B0aW9uc0NvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgICAgIG9wdGlvbnNDb250cm9sLmNsZWFyKCk7XHJcbiAgICAgICAgICAgIG9wdGlvbnNDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBvcHRpb25zVmFsaWRhdG9yID0gb3B0aW9uc1J1bGU/LnJlcXVpcmVkID8gKGNvbnRyb2w6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBhY3RpdmVPcHRpb25zID0gKGNvbnRyb2wudmFsdWUgfHwgW10pLmZpbHRlcigob3B0OiBhbnkpID0+IG9wdC5pc0FjdGl2ZSAhPT0gZmFsc2UpO1xyXG4gICAgICAgICAgICByZXR1cm4gYWN0aXZlT3B0aW9ucy5sZW5ndGggPiAwID8gbnVsbCA6IHsgcmVxdWlyZWQ6IHRydWUgfTtcclxuICAgICAgICB9IDogbnVsbDtcclxuXHJcbiAgICAgICAgb3B0aW9uc0NvbnRyb2wuc2V0VmFsaWRhdG9ycyhvcHRpb25zVmFsaWRhdG9yKTtcclxuXHJcbiAgICAgICAgY29uc3Qgc2hvd1dlaWdodGFnZSA9IG9wdGlvbnNSdWxlPy5zaG93V2VpZ2h0YWdlO1xyXG4gICAgICAgIGNvbnN0IHNob3dSZW1hcmtzID0gb3B0aW9uc1J1bGU/LnNob3dSZW1hcmtzO1xyXG5cclxuICAgICAgICBvcHRpb25zQ29udHJvbC5jb250cm9scy5mb3JFYWNoKG9wdEdyb3VwID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgd2VpZ2h0Q3RybCA9IG9wdEdyb3VwLmdldCgnd2VpZ2h0Jyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlbWFya3NDdHJsID0gb3B0R3JvdXAuZ2V0KCdyZW1hcmtzUmVxdWlyZWQnKTtcclxuXHJcbiAgICAgICAgICAgIGlmICghc2hvd1dlaWdodGFnZSkgd2VpZ2h0Q3RybD8uc2V0VmFsdWUoMCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICBpZiAoIXNob3dSZW1hcmtzKSByZW1hcmtzQ3RybD8uc2V0VmFsdWUoZmFsc2UsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuXHJcbiAgICAgICAgICAgIHdlaWdodEN0cmw/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICByZW1hcmtzQ3RybD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIG9wdGlvbnNDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dGaWVsZChmaWVsZE5hbWU6IHN0cmluZywgbmVzdGVkUHJvcD86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uVHlwZSA9IHRoaXMucXVlc3Rpb25zRm9ybUdyb3VwPy5nZXQoJ3F1ZXN0aW9uVHlwZScpPy52YWx1ZTtcclxuICAgICAgICBpZiAoIXF1ZXN0aW9uVHlwZSB8fCAhdGhpcy5ydWxlc1txdWVzdGlvblR5cGVdIHx8ICF0aGlzLnJ1bGVzW3F1ZXN0aW9uVHlwZV1bZmllbGROYW1lXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChuZXN0ZWRQcm9wKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhIXRoaXMucnVsZXNbcXVlc3Rpb25UeXBlXVtmaWVsZE5hbWVdW25lc3RlZFByb3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gISF0aGlzLnJ1bGVzW3F1ZXN0aW9uVHlwZV1bZmllbGROYW1lXT8udmlzaWJsZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgb3B0aW9ucygpOiBGb3JtQXJyYXkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ29wdGlvbnMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkT3B0aW9uKCkge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wdXNoKHRoaXMuY3JlYXRlT3B0aW9uKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZU9wdGlvbihpbmRleDogbnVtYmVyKSB7XHJcbiAgICAgICAgY29uc3QgcmVtb3ZlZE9wdGlvbiA9IHRoaXMub3B0aW9ucy5hdChpbmRleCk7XHJcbiAgICAgICAgY29uc3QgcmVtb3ZlZE9wdGlvbklkID0gcmVtb3ZlZE9wdGlvbi5nZXQoJ2lkJyk/LnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IHJlbW92ZWRPcHRpb25VdWlkID0gcmVtb3ZlZE9wdGlvbi5nZXQoJ3V1aWQnKT8udmFsdWU7XHJcbiAgICAgICAgY29uc3QgdW5pcXVlSWQgPSByZW1vdmVkT3B0aW9uSWQgfHwgcmVtb3ZlZE9wdGlvblV1aWQ7XHJcblxyXG4gICAgICAgIGlmIChyZW1vdmVkT3B0aW9uSWQpIHtcclxuICAgICAgICAgICAgcmVtb3ZlZE9wdGlvbi5nZXQoJ2lzQWN0aXZlJyk/LnNldFZhbHVlKGZhbHNlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlQXQoaW5kZXgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jaGlsZFF1ZXN0aW9uR3JvdXBzLmZvckVhY2goZyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChnLm9wdGlvbklkID09PSB1bmlxdWVJZCkge1xyXG4gICAgICAgICAgICAgICAgZy5vcHRpb25JZCA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVPcHRpb24oKTogRm9ybUdyb3VwIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgICAgIGlkOiBbMF0sXHJcbiAgICAgICAgICAgIHV1aWQ6IFtnZW5lcmF0ZVV1aWQoKV0sXHJcbiAgICAgICAgICAgIG9wdGlvbkxhYmVsOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICB3ZWlnaHQ6IFswXSxcclxuICAgICAgICAgICAgcmVtYXJrc1JlcXVpcmVkOiBbZmFsc2VdLFxyXG4gICAgICAgICAgICBpc0FjdGl2ZTogW3RydWVdLFxyXG4gICAgICAgICAgICBjaGlsZFF1ZXN0aW9uTGlzdDogW1tdXVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFsbG93T25seU51bWJlcnMoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZS5yZXBsYWNlKC9cXEQvZywgJycpO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrTWF4VmFsKGV2ZW50OiBhbnksIGNvbnRyb2w6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHRvdGFsTWFya3MgPSBOdW1iZXIodGhpcy5xdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCd0b3RhbE1hcmtzJyk/LnZhbHVlKSB8fCAwO1xyXG4gICAgICAgIGlmICh0b3RhbE1hcmtzID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgdmFsID0gTnVtYmVyKGV2ZW50LnRhcmdldC52YWx1ZSk7XHJcbiAgICAgICAgICAgIGlmICh2YWwgPiB0b3RhbE1hcmtzKSB7XHJcbiAgICAgICAgICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSB0b3RhbE1hcmtzO1xyXG4gICAgICAgICAgICAgICAgY29udHJvbD8uc2V0VmFsdWUodG90YWxNYXJrcywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGltYWdlRXJyb3JIYW5kbGVyKGV2ZW50OiBhbnksIGZpbGVQYXRoOiBzdHJpbmcpIHtcclxuICAgICAgICBldmVudC50YXJnZXQuc3JjID0gZmlsZVBhdGg7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkRWRpdENoaWxkUXVlc3Rpb24oY2hpbGRRdWVzdGlvbj86IEFzc2Vzc21lbnRRdWVzdGlvbiwgaW5kZXg/OiBudW1iZXIsIGdyb3VwSWQ/OiBzdHJpbmcpIHtcclxuICAgICAgICAvLyBTYXZlIGN1cnJlbnQgcGFyZW50IHN0YXRlXHJcbiAgICAgICAgY29uc3QgZm9ybVZhbHVlID0gZGVlcENsb25lKHRoaXMucXVlc3Rpb25zRm9ybUdyb3VwLnZhbHVlKTtcclxuICAgICAgICBjb25zdCB0b3RhbE1hcmtzID0gTnVtYmVyKGZvcm1WYWx1ZS50b3RhbE1hcmtzKSB8fCAwO1xyXG4gICAgICAgIGNvbnN0IHNob3dXZWlnaHRhZ2UgPSB0aGlzLnNob3dGaWVsZCgnb3B0aW9ucycsICdzaG93V2VpZ2h0YWdlJyk7XHJcblxyXG4gICAgICAgIGlmIChzaG93V2VpZ2h0YWdlICYmIHRvdGFsTWFya3MgPiAwICYmIGZvcm1WYWx1ZS5vcHRpb25zPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgZm9ybVZhbHVlLm9wdGlvbnMuZm9yRWFjaCgob3B0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChvcHQud2VpZ2h0ICE9PSB1bmRlZmluZWQgJiYgb3B0LndlaWdodCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG9wdC53ZWlnaHQgPSBwYXJzZUZsb2F0KCgoTnVtYmVyKG9wdC53ZWlnaHQpIC8gdG90YWxNYXJrcykgKiAxMDApLnRvRml4ZWQoMikpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uRGF0YSA9IHRoaXMuYXNzZXNzbWVudEJ1aWxkZXJTZXJ2aWNlLnNldFF1ZXN0aW9uRFRPKGZvcm1WYWx1ZSwgdGhpcy5xdWVzdGlvbkRldGFpbHMpO1xyXG5cclxuICAgICAgICB0aGlzLnF1ZXN0aW9uU3RhY2sucHVzaCh7XHJcbiAgICAgICAgICAgIHBhcmVudEZvcm1WYWx1ZTogeyAuLi5xdWVzdGlvbkRhdGEsIGNoaWxkUXVlc3Rpb25zOiB0aGlzLnF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ2NoaWxkUXVlc3Rpb25zJyk/LnZhbHVlIH0sXHJcbiAgICAgICAgICAgIGVkaXRpbmdRdWVzdGlvbkluZGV4OiBpbmRleCxcclxuICAgICAgICAgICAgYWRkaW5nVG9Hcm91cElkOiBncm91cElkXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIFJlc2V0IGZvcm0gZm9yIGNoaWxkXHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbnNGb3JtR3JvdXAucmVzZXQoe1xyXG4gICAgICAgICAgICBxdWVzdGlvblR5cGU6ICcnLFxyXG4gICAgICAgICAgICBxdWVzdGlvblRleHQ6ICcnLFxyXG4gICAgICAgICAgICBpc01hbmRhdG9yeTogZmFsc2UsXHJcbiAgICAgICAgICAgIC8vIHZpc2liaWxpdHk6IHRydWUsXHJcbiAgICAgICAgICAgIHRvdGFsTWFya3M6IG51bGwsXHJcbiAgICAgICAgICAgIG1pbkNoYXJhY3RlckNvdW50OiBudWxsLFxyXG4gICAgICAgICAgICBtYXhDaGFyYWN0ZXJDb3VudDogbnVsbCxcclxuICAgICAgICAgICAgbWF4aW11bU51bWJlck9mT3B0aW9uOiBudWxsLFxyXG4gICAgICAgICAgICBtaW5pbXVtTnVtYmVyT2ZPcHRpb246IG51bGwsXHJcbiAgICAgICAgICAgIG1heEZpbGVTaXplOiBudWxsLFxyXG4gICAgICAgICAgICBtYXhOb09mRmlsZXM6IG51bGwsXHJcbiAgICAgICAgICAgIGN1c3RvbVJlZ2V4OiAnJyxcclxuICAgICAgICAgICAgaGludFRleHQ6ICcnLFxyXG4gICAgICAgICAgICBxdWVzdGlvbk1lZGlhOiAnJyxcclxuICAgICAgICAgICAgY2hpbGRRdWVzdGlvbnM6IFtdLFxyXG4gICAgICAgICAgICBza2lsbENvZGVzOiBbXVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnNDb250cm9sID0gdGhpcy5xdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdvcHRpb25zJykgYXMgRm9ybUFycmF5O1xyXG4gICAgICAgIHdoaWxlIChvcHRpb25zQ29udHJvbC5sZW5ndGggIT09IDApIHtcclxuICAgICAgICAgICAgb3B0aW9uc0NvbnRyb2wucmVtb3ZlQXQoMCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmFwcGx5RHluYW1pY1ZhbGlkYXRvcnMoKTtcclxuICAgICAgICBpZiAoY2hpbGRRdWVzdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnBvcHVsYXRlRm9ybShjaGlsZFF1ZXN0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZUNoaWxkUXVlc3Rpb24oaW5kZXg6IG51bWJlciwgZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgY29uc3QgZGVsZXRlZENoaWxkID0gdGhpcy5xdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdjaGlsZFF1ZXN0aW9ucycpPy52YWx1ZVtpbmRleF07XHJcblxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5jb250cm9scy5mb3JFYWNoKG9wdCA9PiB7XHJcbiAgICAgICAgICAgIGxldCBjaGlsZExpc3QgPSBbLi4uKG9wdC5nZXQoJ2NoaWxkUXVlc3Rpb25MaXN0Jyk/LnZhbHVlIHx8IFtdKV07XHJcbiAgICAgICAgICAgIGNoaWxkTGlzdCA9IGNoaWxkTGlzdC5maWx0ZXIoKGlkOiBzdHJpbmcgfCBudW1iZXIpID0+IGlkICE9PSBkZWxldGVkQ2hpbGQuaWQpO1xyXG4gICAgICAgICAgICBvcHQuZ2V0KCdjaGlsZFF1ZXN0aW9uTGlzdCcpPy5zZXRWYWx1ZShjaGlsZExpc3QpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ2NoaWxkUXVlc3Rpb25zJyk/LnZhbHVlLnNwbGljZShpbmRleCwgMSk7XHJcblxyXG4gICAgICAgIHRoaXMuY2hpbGRRdWVzdGlvbkdyb3Vwcy5mb3JFYWNoKGcgPT4ge1xyXG4gICAgICAgICAgICBnLnF1ZXN0aW9uSWRzID0gZy5xdWVzdGlvbklkcy5maWx0ZXIocWlkID0+IHFpZCAhPT0gZGVsZXRlZENoaWxkLmlkKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmNoaWxkUXVlc3Rpb25Hcm91cHMgPSB0aGlzLmNoaWxkUXVlc3Rpb25Hcm91cHMuZmlsdGVyKGcgPT4gZy5xdWVzdGlvbklkcy5sZW5ndGggPiAwKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRPcHRpb25JZChvcHQ6IGFueSk6IHN0cmluZyB8IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIG9wdC5nZXQoJ2lkJyk/LnZhbHVlID8gb3B0LmdldCgnaWQnKT8udmFsdWUgOiBvcHQuZ2V0KCd1dWlkJyk/LnZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENoaWxkUXVlc3Rpb25CeUlkKGlkOiBzdHJpbmcgfCBudW1iZXIpOiBBc3Nlc3NtZW50UXVlc3Rpb24gfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ2NoaWxkUXVlc3Rpb25zJyk/LnZhbHVlPy5maW5kKChxOiBBc3Nlc3NtZW50UXVlc3Rpb24pID0+IHEuaWQgPT09IGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDaGlsZFF1ZXN0aW9uSW5kZXgoaWQ6IG51bWJlciB8IHVuZGVmaW5lZCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucXVlc3Rpb25zRm9ybUdyb3VwLmdldCgnY2hpbGRRdWVzdGlvbnMnKT8udmFsdWU/LmZpbmRJbmRleCgocTogQXNzZXNzbWVudFF1ZXN0aW9uKSA9PiBxLmlkID09PSBpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlQ2hpbGRRdWVzdGlvbkJ5SWQoaWQ6IG51bWJlciB8IHVuZGVmaW5lZCwgZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdldENoaWxkUXVlc3Rpb25JbmRleChpZCk7XHJcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5kZWxldGVDaGlsZFF1ZXN0aW9uKGluZGV4LCBldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkQ2hpbGRRdWVzdGlvbkdyb3VwcyhjaGlsZFF1ZXN0aW9uczogQXNzZXNzbWVudFF1ZXN0aW9uW10pIHtcclxuICAgICAgICB0aGlzLmNoaWxkUXVlc3Rpb25Hcm91cHMgPSBbXTtcclxuICAgICAgICBjb25zdCBwcm9jZXNzZWRRdWVzdGlvbklkcyA9IG5ldyBTZXQoKTtcclxuXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmNvbnRyb2xzLmZvckVhY2gob3B0ID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgb3B0aW9uSWQgPSB0aGlzLmdldE9wdGlvbklkKG9wdCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkTGlzdCA9IG9wdC5nZXQoJ2NoaWxkUXVlc3Rpb25MaXN0Jyk/LnZhbHVlIHx8IFtdO1xyXG5cclxuICAgICAgICAgICAgaWYgKGNoaWxkTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoaWxkUXVlc3Rpb25Hcm91cHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGdlbmVyYXRlVXVpZCgpLFxyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbklkOiBvcHRpb25JZCxcclxuICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbklkczogWy4uLmNoaWxkTGlzdF1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgY2hpbGRMaXN0LmZvckVhY2goKGlkOiBhbnkpID0+IHByb2Nlc3NlZFF1ZXN0aW9uSWRzLmFkZChpZCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNoaWxkUXVlc3Rpb25zLmZvckVhY2goY3EgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY3EuaWQgJiYgIXByb2Nlc3NlZFF1ZXN0aW9uSWRzLmhhcyhjcS5pZCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hpbGRRdWVzdGlvbkdyb3Vwcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogZ2VuZXJhdGVVdWlkKCksXHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uSWQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25JZHM6IFtjcS5pZF1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Hcm91cE9wdGlvbkNoYW5nZShncm91cElkOiBzdHJpbmcsIG5ld09wdGlvbklkOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgZ3JvdXBJbmRleCA9IHRoaXMuY2hpbGRRdWVzdGlvbkdyb3Vwcy5maW5kSW5kZXgoZyA9PiBnLmlkID09PSBncm91cElkKTtcclxuICAgICAgICBpZiAoZ3JvdXBJbmRleCA9PT0gLTEpIHJldHVybjtcclxuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuY2hpbGRRdWVzdGlvbkdyb3Vwc1tncm91cEluZGV4XTtcclxuXHJcbiAgICAgICAgY29uc3Qgb2xkT3B0aW9uSWQgPSBncm91cC5vcHRpb25JZDtcclxuXHJcbiAgICAgICAgaWYgKG9sZE9wdGlvbklkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9sZE9wdCA9IHRoaXMub3B0aW9ucy5jb250cm9scy5maW5kKG9wdCA9PiB0aGlzLmdldE9wdGlvbklkKG9wdCkgPT09IG9sZE9wdGlvbklkKTtcclxuICAgICAgICAgICAgaWYgKG9sZE9wdCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkTGlzdCA9IFsuLi4ob2xkT3B0LmdldCgnY2hpbGRRdWVzdGlvbkxpc3QnKT8udmFsdWUgfHwgW10pXTtcclxuICAgICAgICAgICAgICAgIGNoaWxkTGlzdCA9IGNoaWxkTGlzdC5maWx0ZXIoaWQgPT4gIWdyb3VwLnF1ZXN0aW9uSWRzLmluY2x1ZGVzKGlkIGFzIGFueSkpO1xyXG4gICAgICAgICAgICAgICAgb2xkT3B0LmdldCgnY2hpbGRRdWVzdGlvbkxpc3QnKT8uc2V0VmFsdWUoY2hpbGRMaXN0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZXhpc3RpbmdHcm91cCA9IHRoaXMuY2hpbGRRdWVzdGlvbkdyb3Vwcy5maW5kKGcgPT4gZy5pZCAhPT0gZ3JvdXBJZCAmJiBnLm9wdGlvbklkID09PSBuZXdPcHRpb25JZCk7XHJcblxyXG4gICAgICAgIGlmIChleGlzdGluZ0dyb3VwICYmIG5ld09wdGlvbklkKSB7XHJcbiAgICAgICAgICAgIGV4aXN0aW5nR3JvdXAucXVlc3Rpb25JZHMucHVzaCguLi5ncm91cC5xdWVzdGlvbklkcyk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hpbGRRdWVzdGlvbkdyb3Vwcy5zcGxpY2UoZ3JvdXBJbmRleCwgMSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZ3JvdXAub3B0aW9uSWQgPSBuZXdPcHRpb25JZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChuZXdPcHRpb25JZCkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdPcHQgPSB0aGlzLm9wdGlvbnMuY29udHJvbHMuZmluZChvcHQgPT4gdGhpcy5nZXRPcHRpb25JZChvcHQpID09PSBuZXdPcHRpb25JZCk7XHJcbiAgICAgICAgICAgIGlmIChuZXdPcHQpIHtcclxuICAgICAgICAgICAgICAgIGxldCBjaGlsZExpc3QgPSBbLi4uKG5ld09wdC5nZXQoJ2NoaWxkUXVlc3Rpb25MaXN0Jyk/LnZhbHVlIHx8IFtdKV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzZXQgPSBuZXcgU2V0KFsuLi5jaGlsZExpc3QsIC4uLmdyb3VwLnF1ZXN0aW9uSWRzXSk7XHJcbiAgICAgICAgICAgICAgICBuZXdPcHQuZ2V0KCdjaGlsZFF1ZXN0aW9uTGlzdCcpPy5zZXRWYWx1ZShBcnJheS5mcm9tKHNldCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdvQmFjaygpIHtcclxuICAgICAgICBpZiAodGhpcy5xdWVzdGlvblN0YWNrLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5xdWVzdGlvblN0YWNrLnBvcCgpO1xyXG5cclxuICAgICAgICB0aGlzLnJlc2V0QW5kUG9wdWxhdGUoc3RhdGU/LnBhcmVudEZvcm1WYWx1ZSk7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVzZXRBbmRQb3B1bGF0ZShwYXJlbnRWYWx1ZTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbnNGb3JtR3JvdXAucmVzZXQoKTtcclxuXHJcbiAgICAgICAgY29uc3Qgb3B0aW9uc0NvbnRyb2wgPSB0aGlzLnF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ29wdGlvbnMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgICAgICAgd2hpbGUgKG9wdGlvbnNDb250cm9sLmxlbmd0aCAhPT0gMCkge1xyXG4gICAgICAgICAgICBvcHRpb25zQ29udHJvbC5yZW1vdmVBdCgwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucG9wdWxhdGVGb3JtKHBhcmVudFZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNjcm9sbFRvVG9wKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNjcm9sbENvbnRhaW5lciAmJiB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCB2aC0xMDAgcG9zaXRpb24tcmVsYXRpdmUgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb25TdGFjay5sZW5ndGggPiAwIHx8IGlzQ2hpbGRcIlxyXG4gICAgICAgIGNsYXNzPVwicC0zIHB4LTIgY29sLWF1dG8gYXNzZXNzbWVudC1iZy1wYWxldHRlLUM4REFGOSBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWVuZCBkLW1kLWZsZXggZC1ub25lXCI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJtLTAgYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTE4IHZlcnRpY2FsLXRleHRcIj5cclxuICAgICAgICAgICAge3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLkNISUxEX1FVRVNUSU9OJ119fVxyXG4gICAgICAgIDwvcD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGgtMTAwIGQtZmxleCBmbGV4LWNvbHVtbiBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgIDxoZWFkZXJcclxuICAgICAgICAgICAgY2xhc3M9XCJwLTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBwb3NpdGlvbi1zdGlja3kgdG9wLTAgY29sLTEyIGJvcmRlci1ib3R0b21cIj5cclxuICAgICAgICAgICAgPHAgKm5nSWY9XCJxdWVzdGlvblN0YWNrLmxlbmd0aCA9PSAwXCIgY2xhc3M9XCJtYi0wIGFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xOCBkLW1kLWlubGluZSBkLW5vbmVcIj5cclxuICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5JTlBVVF9GSUVMRF9TRVRUSU5HUyddfX1cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicXVlc3Rpb25TdGFjay5sZW5ndGggPiAwXCIgKGNsaWNrKT1cImdvQmFjaygpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW4gYm9yZGVyLTAgb3V0bGluZS0wIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTQgYmctdHJhbnNwYXJlbnRcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZUNvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULklDT04uR09fQkFDSyddXCJcclxuICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwiaW1hZ2VFcnJvckhhbmRsZXIoJGV2ZW50LCAnYXNzZXRzL2NvbW1vbnMtYXNzZXNzbWVudC9pbWFnZXMvZ28tYmFjay5zdmcnKVwiIC8+XHJcbiAgICAgICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuR09fQkFDSyddfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1tZC1lbmQganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTMgZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9uU3VibWl0KClcIiBbZGlzYWJsZWRdPVwiaXNTdWJtaXR0aW5nXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtYnRuLXByaW1hcnkgYXNzZXNzbWVudC1idXR0b24tcGFkZGluZyBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzIGFzc2Vzc21lbnQtem9vbS1hbmltYXRpb24gYXNzZXNzbWVudC1idXR0b24tcGFkZGluZyBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cInsnb3BhY2l0eS0wJzogaXNTdWJtaXR0aW5nfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuU0FWRV9RVUVTVElPTiddfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiaXNTdWJtaXR0aW5nXCIgW2RpYW1ldGVyXT1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtNTAgc3RhcnQtNTAgdHJhbnNsYXRlLW1pZGRsZSBhc3Nlc3NtZW50LXNwaW5uZXItd2hpdGVcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiZC1tZC1ub25lXCIgKm5nSWY9XCJxdWVzdGlvblN0YWNrLmxlbmd0aCA9PSAwXCIgbWF0LWRpYWxvZy1jbG9zZVxyXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW1hZ2VDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5JQ09OLkNMT1NFJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJpbWFnZUVycm9ySGFuZGxlcigkZXZlbnQsICdhc3NldHMvY29tbW9ucy1hc3Nlc3NtZW50L2ltYWdlcy9jbG9zZS5zdmcnKVwiIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvaGVhZGVyPlxyXG4gICAgICAgIDxkaXYgI3Njcm9sbENvbnRhaW5lciBjbGFzcz1cImNvbC0xMiBweS00IHB4LW1kLTQgcHgtMyBmbGV4LWdyb3ctMSBvdmVyZmxvdy15LWF1dG8gZm9ybS1jb250YWluZXJcIlxyXG4gICAgICAgICAgICBbZm9ybUdyb3VwXT1cInF1ZXN0aW9uc0Zvcm1Hcm91cFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGItNCBjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWItMiBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTE2IGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlbiBjb2wtMTJcIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuVFlQRSddfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwicXVlc3Rpb25UeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwibGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QTEFDRUhPTERFUi5TRUxFQ1RfUVVFU1RJT05fVFlQRSddXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtbWF0LXNlbGVjdCBjb2wtMTIgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBvdXRsaW5lLTAgYXNzZXNzbWVudC1pbnB1dC1ib3JkZXItb25lIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC1iZy1ncmV5LW9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xM1wiICpuZ0Zvcj1cImxldCB0eXBlIG9mIHF1ZXN0aW9uVHlwZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidHlwZT8uY29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e3R5cGU/LmxhYmVsfX1cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdxdWVzdGlvblR5cGUnKT8uZXJyb3JzICAmJiBxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdxdWVzdGlvblR5cGUnKT8udG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLlJFUVVJUkVEJ119fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBiLTQgY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtYi0yIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTYgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuXCI+UXVlc3Rpb248L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGFwcC10ZXh0LWVkaXRvciBbcHJlVGV4dF09XCJxdWVzdGlvbnNGb3JtR3JvdXA/LmdldCgncXVlc3Rpb25UZXh0Jyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAoaW5wdXRDaGFuZ2UpPVwicXVlc3Rpb25zRm9ybUdyb3VwPy5nZXQoJ3F1ZXN0aW9uVGV4dCcpPy5wYXRjaFZhbHVlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBMQUNFSE9MREVSLkVOVEVSX1FVRVNUSU9OJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC1jdXN0b20tYW5ndWxhci1lZGl0b3Itd2hpdGUgYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuXCJcclxuICAgICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIic4cmVtJ1wiPlxyXG4gICAgICAgICAgICAgICAgPC9hcHAtdGV4dC1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdxdWVzdGlvblRleHQnKT8uZXJyb3JzICAmJiBxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdxdWVzdGlvblRleHQnKT8udG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLlJFUVVJUkVEJ119fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBwb3NpdGlvbi1yZWxhdGl2ZSBtdC0zXCIgKm5nSWY9XCJzaG93RmllbGQoJ3F1ZXN0aW9uTWVkaWEnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJxdWVzdGlvbk1lZGlhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUExBQ0VIT0xERVIuRU5URVJfUVVFU1RJT05fTUVESUEnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLTEyIGFzc2Vzc21lbnQtaW5wdXQtcGFkZGluZyBhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIG91dGxpbmUtMCBhc3Nlc3NtZW50LWlucHV0LWJvcmRlci1vbmUgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMyBhc3Nlc3NtZW50LWJnLWdyZXktb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydib3JkZXItZGFuZ2VyJzogcXVlc3Rpb25zRm9ybUdyb3VwLmdldCgncXVlc3Rpb25NZWRpYScpPy5pbnZhbGlkICYmIHF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ3F1ZXN0aW9uTWVkaWEnKT8udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb25zRm9ybUdyb3VwLmdldCgncXVlc3Rpb25NZWRpYScpPy5oYXNFcnJvcigncGF0dGVybicpICYmIHF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ3F1ZXN0aW9uTWVkaWEnKT8udG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlciBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5FUlJPUi5JTlZBTElEX1VSTCddfX1cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb25zRm9ybUdyb3VwLmdldCgncXVlc3Rpb25NZWRpYScpPy5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiBxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdxdWVzdGlvbk1lZGlhJyk/LnRvdWNoZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEyIGFzc2Vzc21lbnQtdGV4dC1kYW5nZXIgbXQtMVwiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5FUlJPUi5SRVFVSVJFRCddfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBteC0wIGNvbC0xMiBwYi00XCIgKm5nSWY9XCJzaG93RmllbGQoJ21pbkNoYXJhY3RlckNvdW50JykgfHwgc2hvd0ZpZWxkKCdtYXhDaGFyYWN0ZXJDb3VudCcpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgcHMtMFwiICpuZ0lmPVwic2hvd0ZpZWxkKCdtaW5DaGFyYWN0ZXJDb3VudCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWItMSBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlblwiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5NSU5fQ0hBUkFDVEVSX0xJTUlUJ119fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJtaW5DaGFyYWN0ZXJDb3VudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwibGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QTEFDRUhPTERFUi5OT1RfU0VUJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cImFsbG93T25seU51bWJlcnMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdtaW5DaGFyYWN0ZXJDb3VudCcpPy5tYXJrQXNUb3VjaGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgYXNzZXNzbWVudC1pbnB1dC1wYWRkaW5nIGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gb3V0bGluZS0wIGFzc2Vzc21lbnQtaW5wdXQtYm9yZGVyLW9uZSBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzIGFzc2Vzc21lbnQtYmctZ3JleS1vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gcG9zaXRpb24tYWJzb2x1dGUgZW5kLTAgbWUtM1wiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5DSEFSQUNURVJTJ119fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb25zRm9ybUdyb3VwLmdldCgnbWluQ2hhcmFjdGVyQ291bnQnKT8uZXJyb3JzICAmJiBxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdtaW5DaGFyYWN0ZXJDb3VudCcpPy50b3VjaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLlJFUVVJUkVEJ119fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgcGUtMFwiICpuZ0lmPVwic2hvd0ZpZWxkKCdtYXhDaGFyYWN0ZXJDb3VudCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWItMSBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlblwiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5NQVhfQ0hBUkFDVEVSX0xJTUlUJ119fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJtYXhDaGFyYWN0ZXJDb3VudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwibGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QTEFDRUhPTERFUi5OT1RfU0VUJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cImFsbG93T25seU51bWJlcnMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdtYXhDaGFyYWN0ZXJDb3VudCcpPy5tYXJrQXNUb3VjaGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgYXNzZXNzbWVudC1pbnB1dC1wYWRkaW5nIGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gb3V0bGluZS0wIGFzc2Vzc21lbnQtaW5wdXQtYm9yZGVyLW9uZSBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzIGFzc2Vzc21lbnQtYmctZ3JleS1vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gcG9zaXRpb24tYWJzb2x1dGUgZW5kLTAgbWUtM1wiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5DSEFSQUNURVJTJ119fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb25zRm9ybUdyb3VwLmdldCgnbWF4Q2hhcmFjdGVyQ291bnQnKT8uZXJyb3JzICAmJiBxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdtYXhDaGFyYWN0ZXJDb3VudCcpPy50b3VjaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLlJFUVVJUkVEJ119fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG14LTAgY29sLTEyIHBiLTRcIiAqbmdJZj1cInNob3dGaWVsZCgnbWF4RmlsZVNpemUnKSB8fCBzaG93RmllbGQoJ21heE5vT2ZGaWxlcycpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgcHMtMFwiICpuZ0lmPVwic2hvd0ZpZWxkKCdtYXhGaWxlU2l6ZScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWItMSBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlblwiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5NQVhfRklMRV9TSVpFJ119fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJtYXhGaWxlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwibGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QTEFDRUhPTERFUi5OT1RfU0VUJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cImFsbG93T25seU51bWJlcnMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdtYXhGaWxlU2l6ZScpPy5tYXJrQXNUb3VjaGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgYXNzZXNzbWVudC1pbnB1dC1wYWRkaW5nIGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gb3V0bGluZS0wIGFzc2Vzc21lbnQtaW5wdXQtYm9yZGVyLW9uZSBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzIGFzc2Vzc21lbnQtYmctZ3JleS1vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gcG9zaXRpb24tYWJzb2x1dGUgZW5kLTAgbWUtM1wiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5NQiddfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ21heEZpbGVTaXplJyk/LmVycm9ycyAgJiYgcXVlc3Rpb25zRm9ybUdyb3VwLmdldCgnbWF4RmlsZVNpemUnKT8udG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlclwiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5FUlJPUi5SRVFVSVJFRCddfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IHBlLTBcIiAqbmdJZj1cInNob3dGaWVsZCgnbWF4Tm9PZkZpbGVzJylcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYi0xIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLk1BWF9OT19PRl9GSUxFUyddfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibWF4Tm9PZkZpbGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBMQUNFSE9MREVSLk5PVF9TRVQnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwiYWxsb3dPbmx5TnVtYmVycygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cInF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ21heE5vT2ZGaWxlcycpPy5tYXJrQXNUb3VjaGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgYXNzZXNzbWVudC1pbnB1dC1wYWRkaW5nIGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gb3V0bGluZS0wIGFzc2Vzc21lbnQtaW5wdXQtYm9yZGVyLW9uZSBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzIGFzc2Vzc21lbnQtYmctZ3JleS1vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gcG9zaXRpb24tYWJzb2x1dGUgZW5kLTAgbWUtM1wiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5GSUxFUyddfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ21heE5vT2ZGaWxlcycpPy5lcnJvcnMgICYmIHF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ21heE5vT2ZGaWxlcycpPy50b3VjaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLlJFUVVJUkVEJ119fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGItNCBjb2wtMTJcIiAqbmdJZj1cInNob3dGaWVsZCgnY3VzdG9tUmVnZXgnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYi0xIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLkNVU1RPTV9SRUdFWCddfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImN1c3RvbVJlZ2V4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUExBQ0VIT0xERVIuRU5URVJfQ1VTVE9NX1JFR0VYJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdjdXN0b21SZWdleCcpPy5tYXJrQXNUb3VjaGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC0xMiBhc3Nlc3NtZW50LWlucHV0LXBhZGRpbmcgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBvdXRsaW5lLTAgYXNzZXNzbWVudC1pbnB1dC1ib3JkZXItb25lIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC1iZy1ncmV5LW9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdjdXN0b21SZWdleCcpPy5lcnJvcnMgICYmIHF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ2N1c3RvbVJlZ2V4Jyk/LnRvdWNoZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlclwiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5FUlJPUi5SRVFVSVJFRCddfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYi00IGNvbC0xMlwiICpuZ0lmPVwic2hvd0ZpZWxkKCd0b3RhbE1hcmtzJykgJiYgIWlzQ2hpbGQgJiYgcXVlc3Rpb25TdGFjay5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYi0xIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLlRPVEFMX01BUktTJ119fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgcG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwidG90YWxNYXJrc1wiIHBsYWNlaG9sZGVyPVwiMFwiIChpbnB1dCk9XCJhbGxvd09ubHlOdW1iZXJzKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCd0b3RhbE1hcmtzJyk/Lm1hcmtBc1RvdWNoZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLTEyIGFzc2Vzc21lbnQtaW5wdXQtcGFkZGluZyBhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIG91dGxpbmUtMCBhc3Nlc3NtZW50LWlucHV0LWJvcmRlci1vbmUgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMyBhc3Nlc3NtZW50LWJnLWdyZXktb25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlbiBwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMCBtZS0zXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLk1BUktTJ119fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb25zRm9ybUdyb3VwLmdldCgndG90YWxNYXJrcycpPy5lcnJvcnMgICYmIHF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ3RvdGFsTWFya3MnKT8udG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLlJFUVVJUkVEJ119fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXgtMCBjb2wtMTIgcGItNFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dGaWVsZCgnbWluaW11bU51bWJlck9mT3B0aW9uJykgfHwgc2hvd0ZpZWxkKCdtYXhpbXVtTnVtYmVyT2ZPcHRpb24nKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IHBzLTBcIiAqbmdJZj1cInNob3dGaWVsZCgnbWluaW11bU51bWJlck9mT3B0aW9uJylcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYi0xIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLk1JTl9PUFRJT05fU0VMRUNUX0xJTUlUJ119fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJtaW5pbXVtTnVtYmVyT2ZPcHRpb25cIiBwbGFjZWhvbGRlcj1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cImFsbG93T25seU51bWJlcnMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdtaW5pbXVtTnVtYmVyT2ZPcHRpb24nKT8ubWFya0FzVG91Y2hlZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLTEyIGFzc2Vzc21lbnQtaW5wdXQtcGFkZGluZyBhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIG91dGxpbmUtMCBhc3Nlc3NtZW50LWlucHV0LWJvcmRlci1vbmUgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMyBhc3Nlc3NtZW50LWJnLWdyZXktb25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEyIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuIHBvc2l0aW9uLWFic29sdXRlIGVuZC0wIG1lLTNcIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuT1BUSU9OUyddfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ21pbmltdW1OdW1iZXJPZk9wdGlvbicpPy5lcnJvcnMgICYmIHF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ21pbmltdW1OdW1iZXJPZk9wdGlvbicpPy50b3VjaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLlJFUVVJUkVEJ119fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgcGUtMFwiICpuZ0lmPVwic2hvd0ZpZWxkKCdtYXhpbXVtTnVtYmVyT2ZPcHRpb24nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1iLTEgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMyBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW5cIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuTUFYX09QVElPTl9TRUxFQ1RfTElNSVQnXX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgcG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIm1heGltdW1OdW1iZXJPZk9wdGlvblwiIFtwbGFjZWhvbGRlcl09XCJvcHRpb25zLmxlbmd0aCB8fCAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJhbGxvd09ubHlOdW1iZXJzKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwicXVlc3Rpb25zRm9ybUdyb3VwLmdldCgnbWF4aW11bU51bWJlck9mT3B0aW9uJyk/Lm1hcmtBc1RvdWNoZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC0xMiBhc3Nlc3NtZW50LWlucHV0LXBhZGRpbmcgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBvdXRsaW5lLTAgYXNzZXNzbWVudC1pbnB1dC1ib3JkZXItb25lIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC1iZy1ncmV5LW9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlbiBwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMCBtZS0zXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLk9QVElPTlMnXX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdtYXhpbXVtTnVtYmVyT2ZPcHRpb24nKT8uZXJyb3JzICAmJiBxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdtYXhpbXVtTnVtYmVyT2ZPcHRpb24nKT8udG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlclwiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5FUlJPUi5SRVFVSVJFRCddfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYi00IGNvbC0xMiBtdC1tZC0zXCIgKm5nSWY9XCJzaG93RmllbGQoJ29wdGlvbnMnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmb3JtQXJyYXlOYW1lPVwib3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zLmNvbnRyb2xzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiICpuZ0lmPVwib3B0aW9uLmdldCgnaXNBY3RpdmUnKT8udmFsdWUgIT09IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHktbWQtMCBweS0zIGJvcmRlci1ib3R0b20gYm9yZGVyLW1kLTAgY29sLTEyIGQtZmxleCBmbGV4LXdyYXAgZmxleC1tZC1ub3dyYXAgYWxpZ24taXRlbXMtbWQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGdhcC1tZC00IGdhcC0zXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQgZmxleC1tZC1ncm93LTEgZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtbWQtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnB0LW1kLTNdPVwiaSA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGdhcC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm91bmRlZC1jaXJjbGUgcC0yIGJvcmRlci1ncmV5LXRlbi0yIG10LTFcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJvcHRpb25MYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUExBQ0VIT0xERVIuRU5URVJfT1BUSU9OJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleC1ncm93LTEgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMyBib3JkZXItMCBvdXRsaW5lLTAgYmctdHJhbnNwYXJlbnQgaW5wdXQtZm9jdXMgcHktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImN1cnNvci1wb2ludGVyIGQtbWQtbm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltYWdlQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuSUNPTi5DTE9TRSddXCIgKGNsaWNrKT1cInJlbW92ZU9wdGlvbihpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwiaW1hZ2VFcnJvckhhbmRsZXIoJGV2ZW50LCAnYXNzZXRzL2NvbW1vbnMtYXNzZXNzbWVudC9pbWFnZXMvY2xvc2Uuc3ZnJylcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb24uZ2V0KCdvcHRpb25MYWJlbCcpPy5pbnZhbGlkICYmIG9wdGlvbi5nZXQoJ29wdGlvbkxhYmVsJyk/LnRvdWNoZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEyIG10LTFcIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuRVJST1IuUkVRVUlSRUQnXX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0ZpZWxkKCdvcHRpb25zJywgJ3Nob3dXZWlnaHRhZ2UnKSAmJiAhaXNDaGlsZCAmJiBxdWVzdGlvblN0YWNrLmxlbmd0aCA9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEyIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNpeCBtYi0yIG1iLW1kLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2hpZGRlbi1sYWJlbCc6IGkgPiAwfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuV0VJR0hUQUdFJ119fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIChpbnB1dCk9XCJjaGVja01heFZhbCgkZXZlbnQsIG9wdGlvbi5nZXQoJ3dlaWdodCcpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIndlaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC0yIHB5LW1kLTEgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBhc3Nlc3NtZW50LWlucHV0LWJvcmRlci1vbmUgb3V0bGluZS0wIGFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEyIGFzc2Vzc21lbnQtbWFya3MtaW5wdXQgYXNzZXNzbWVudC1iZy1ncmV5LW9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLldFSUdIVEFHRSddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0ZpZWxkKCdvcHRpb25zJywgJ3Nob3dSZW1hcmtzJylcIiBjbGFzcz1cImNvbC1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEyIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNpeCBtYi0yIG1iLW1kLTMgcGItbWQtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaGlkZGVuLWxhYmVsJzogaSA+IDB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5SRU1BUktTJ119fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJyZW1hcmtzUmVxdWlyZWRcIiBmb3JtQ29udHJvbE5hbWU9XCJyZW1hcmtzUmVxdWlyZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLW5vbmUgZC1tZC1ibG9jayBwdC0zXCIgW2NsYXNzLmN1c3RvbS1tYXJnaW5dPVwiaSA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgW3NyY109XCJpbWFnZUNvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULklDT04uQ0xPU0UnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVPcHRpb24oaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwiaW1hZ2VFcnJvckhhbmRsZXIoJGV2ZW50LCAnYXNzZXRzL2NvbW1vbnMtYXNzZXNzbWVudC9pbWFnZXMvY2xvc2Uuc3ZnJylcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJhZGRPcHRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgYmctdHJhbnNwYXJlbnQgYXNzZXNzbWVudC10ZXh0LXByaW1hcnktb25lIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTIgYm9yZGVyLTAgYXNzZXNzbWVudC16b29tLWFuaW1hdGlvbiBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImltYWdlQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuSUNPTi5QTFVTX1BSSU1BUlknXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJpbWFnZUVycm9ySGFuZGxlcigkZXZlbnQsICdhc3NldHMvY29tbW9ucy1hc3Nlc3NtZW50L2ltYWdlcy9wbHVzLXByaW1hcnkuc3ZnJylcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5BRERfT1BUSU9OJ119fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdvcHRpb25zJyk/LmVycm9ycyAgJiYgcXVlc3Rpb25zRm9ybUdyb3VwLmdldCgnb3B0aW9ucycpPy50b3VjaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEyIGFzc2Vzc21lbnQtdGV4dC1kYW5nZXJcIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuRVJST1IuUkVRVUlSRUQnXX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktNCBjb2wtMTIgYm9yZGVyLXRvcFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dGaWVsZCgnY2hpbGRRdWVzdGlvbnMnKSAmJiBxdWVzdGlvblN0YWNrLmxlbmd0aCA9PSAwICYmICFpc0NoaWxkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xNiBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW5cIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuQ0hJTERfUVVFU1RJT05TJ119fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBtYXRUb29sdGlwPVwie3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLkNISUxEX1FVRVNUSU9OU19JTkZPJ119fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCIgbWF0VG9vbHRpcENsYXNzPVwiYXNzZXNzbWVudC10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZUNvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULklDT04uSU5GTyddXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yKT1cImltYWdlRXJyb3JIYW5kbGVyKCRldmVudCwgJ2Fzc2V0cy9jb21tb25zLWFzc2Vzc21lbnQvaW1hZ2VzL2luZm8uc3ZnJylcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgY2hpbGRRdWVzdGlvbkdyb3VwczsgbGV0IGdyb3VwSW5kZXggPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgcC0zIG15LTMgYXNzZXNzbWVudC1iZy1ncmV5LW9uZSBhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdGhyZWUgYXNzZXNzbWVudC1pbnB1dC1ib3JkZXItb25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi0zXCIgKm5nSWY9XCJvcHRpb25zLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1iLTEgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMyBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW5cIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuQVNTSUdORURfT1BUSU9OJ119fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IFt2YWx1ZV09XCJncm91cC5vcHRpb25JZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uR3JvdXBPcHRpb25DaGFuZ2UoZ3JvdXAuaWQsICRldmVudC52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUExBQ0VIT0xERVIuU0VMRUNUX09QVElPTl9UT19MSU5LJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgYXNzZXNzbWVudC1tYXQtc2VsZWN0IGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gYXNzZXNzbWVudC1iZy13aGl0ZSBvdXRsaW5lLTAgYXNzZXNzbWVudC1pbnB1dC1ib3JkZXItb25lIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xM1wiIFt2YWx1ZV09XCJudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLk5PTkUnXX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHQgb2Ygb3B0aW9ucy5jb250cm9sczsgbGV0IG9wSW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwib3B0LmdldCgnaXNBY3RpdmUnKT8udmFsdWUgIT09IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzXCIgW3ZhbHVlXT1cImdldE9wdGlvbklkKG9wdClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0LmdldCgnb3B0aW9uTGFiZWwnKT8udmFsdWUgfHwgKCdPcHRpb24gJyArIChvcEluZGV4ICsgMSkpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcXVlc3Rpb25JZCBvZiBncm91cC5xdWVzdGlvbklkczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ2V0Q2hpbGRRdWVzdGlvbkJ5SWQocXVlc3Rpb25JZCkgYXMgY2hpbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTEgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMCBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTE0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuUVVFU1RJT04nXX19IHt7aSArIDF9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaW1hZ2VDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5JQ09OLkRFTEVURSddXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWljb24gY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUNoaWxkUXVlc3Rpb25CeUlkKGNoaWxkLmlkLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJpbWFnZUVycm9ySGFuZGxlcigkZXZlbnQsICdhc3NldHMvY29tbW9ucy1hc3Nlc3NtZW50L2ltYWdlcy9kZWxldGUuc3ZnJylcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiY2hpbGQ/LnF1ZXN0aW9uVGV4dD8uWzBdPy50ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkRWRpdENoaWxkUXVlc3Rpb24oY2hpbGQsIGdldENoaWxkUXVlc3Rpb25JbmRleChjaGlsZC5pZCkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC0xMiBhc3Nlc3NtZW50LWJ1dHRvbi1wYWRkaW5nIGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gYXNzZXNzbWVudC1iZy13aGl0ZSBhc3Nlc3NtZW50LWlucHV0LWJvcmRlci1vbmUgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMiBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJhZGRFZGl0Q2hpbGRRdWVzdGlvbih1bmRlZmluZWQsIHVuZGVmaW5lZCwgZ3JvdXAuaWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXpvb20tYW5pbWF0aW9uIGJvcmRlci0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMiBhc3Nlc3NtZW50LXRleHQtcHJpbWFyeS1vbmUgYmctdHJhbnNwYXJlbnQgYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEyIG91dGxpbmUtMCBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZUNvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULklDT04uUExVU19QUklNQVJZJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yKT1cImltYWdlRXJyb3JIYW5kbGVyKCRldmVudCwgJ2Fzc2V0cy9jb21tb25zLWFzc2Vzc21lbnQvaW1hZ2VzL3BsdXMtcHJpbWFyeS5zdmcnKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5BRERfTU9SRSddfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImFkZEVkaXRDaGlsZFF1ZXN0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC16b29tLWFuaW1hdGlvbiBhc3Nlc3NtZW50LWJ1dHRvbi1wYWRkaW5nIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMyBhc3Nlc3NtZW50LXRleHQtcHJpbWFyeS1vbmUgYXNzZXNzbWVudC1iZy1wYWxldHRlLUVERjNGRCBhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTIgb3V0bGluZS0wIGNvbC0xMiBhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIG10LTMgYm9yZGVyLUFEQzlGNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZUNvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULklDT04uUExVU19QUklNQVJZJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwiaW1hZ2VFcnJvckhhbmRsZXIoJGV2ZW50LCAnYXNzZXRzL2NvbW1vbnMtYXNzZXNzbWVudC9pbWFnZXMvcGx1cy1wcmltYXJ5LnN2ZycpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuQUREX0NISUxEX1FVRVNUSU9OJ119fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktNCBjb2wtMTIgYm9yZGVyLXRvcFwiICpuZ0lmPVwic2hvd0ZpZWxkKCdoaW50VGV4dCcpXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1iLTIgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xNiBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW5cIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuQUREX0hJTlQnXX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxhcHAtdGV4dC1lZGl0b3IgW3ByZVRleHRdPVwicXVlc3Rpb25zRm9ybUdyb3VwPy5nZXQoJ2hpbnRUZXh0Jyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAoaW5wdXRDaGFuZ2UpPVwicXVlc3Rpb25zRm9ybUdyb3VwPy5nZXQoJ2hpbnRUZXh0Jyk/LnBhdGNoVmFsdWUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUExBQ0VIT0xERVIuRU5URVJfSElOVCddXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtY3VzdG9tLWFuZ3VsYXItZWRpdG9yLXdoaXRlIGFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2hlaWdodF09XCInOHJlbSdcIj5cclxuICAgICAgICAgICAgICAgIDwvYXBwLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb25zRm9ybUdyb3VwLmdldCgnaGludFRleHQnKT8uZXJyb3JzICAmJiBxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdoaW50VGV4dCcpPy50b3VjaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEyIGFzc2Vzc21lbnQtdGV4dC1kYW5nZXJcIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuRVJST1IuUkVRVUlSRUQnXX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktNCBjb2wtMTIgYm9yZGVyLXRvcFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWItMiBhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTggYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuIGNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5GSUVMRFNfU0VUVElOR1MnXX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0zIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTAgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMyBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5NQU5EQVRPUlknXX19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTAgYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTEgYXNzZXNzbWVudC10ZXh0LWdyZXktZWlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5NQU5EQVRPUllfREVTQyddfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIG5hbWU9XCJpc01hbmRhdG9yeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpc01hbmRhdG9yeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnYXAtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RmllbGQoJ2lzRmlsdGVyRW5hYmxlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuRklMVEVSX0VOQUJMRUQnXX19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTAgYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTEgYXNzZXNzbWVudC10ZXh0LWdyZXktZWlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5GSUxURVJfRU5BQkxFRF9ERVNDJ119fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgbmFtZT1cImlzRmlsdGVyRW5hYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpc0ZpbHRlckVuYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0zIGNvbC0xMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RmllbGQoJ2lzRmlsdGVyRW5hYmxlZCcpICYmIHF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ2lzRmlsdGVyRW5hYmxlZCcpPy52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1iLTEgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMyBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW5cIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuUVVFU1RJT05fTkFNRSddfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJxdWVzdGlvblN1YlRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwibGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QTEFDRUhPTERFUi5RVUVTVElPTl9OQU1FJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC0xMiBhc3Nlc3NtZW50LWlucHV0LXBhZGRpbmcgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBvdXRsaW5lLTAgYXNzZXNzbWVudC1pbnB1dC1ib3JkZXItb25lIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC1iZy1ncmV5LW9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYm9yZGVyLWRhbmdlcic6IHF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ3F1ZXN0aW9uU3ViVGV4dCcpPy5pbnZhbGlkICYmIHF1ZXN0aW9uc0Zvcm1Hcm91cC5nZXQoJ3F1ZXN0aW9uU3ViVGV4dCcpPy50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdxdWVzdGlvblN1YlRleHQnKT8uaW52YWxpZCAmJiBxdWVzdGlvbnNGb3JtR3JvdXAuZ2V0KCdxdWVzdGlvblN1YlRleHQnKT8udG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlciBtdC0xXCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLlJFUVVJUkVEJ119fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTMgY29sLTEyXCIgKm5nSWY9XCIhaXNDaGlsZCAmJiAoc2tpbGxzTGlzdD8ubGVuZ3RoID8/IDApID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1iLTEgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMyBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW5cIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuTUFQX1NLSUxMUyddfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInNraWxsQ29kZXNcIiBtdWx0aXBsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwibGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QTEFDRUhPTERFUi5TRUxFQ1RfU0tJTExTJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYW5lbENsYXNzPVwiYXNzZXNzbWVudC1jaGVja2JveGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgYXNzZXNzbWVudC1tYXQtc2VsZWN0IGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gb3V0bGluZS0wIGFzc2Vzc21lbnQtaW5wdXQtYm9yZGVyLW9uZSBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzIGFzc2Vzc21lbnQtYmctZ3JleS1vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzXCIgKm5nRm9yPVwibGV0IHNraWxsIG9mIHNraWxsc0xpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNraWxsPy5jb2RlXCI+e3tza2lsbD8ubGFiZWxzPy5bMF0/LnRleHR9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19