vcomply-workflow-engine 2.6.2 → 2.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/vcomply-workflow-engine.umd.js +11 -6
- package/bundles/vcomply-workflow-engine.umd.js.map +1 -1
- package/esm2015/lib/workflow-compliance/workflow-compliance.component.js +3 -3
- package/esm2015/lib/workflow-program/workflow-program.component.js +10 -5
- package/fesm2015/vcomply-workflow-engine.js +11 -6
- package/fesm2015/vcomply-workflow-engine.js.map +1 -1
- package/package.json +1 -1
|
@@ -637,18 +637,23 @@ export class WorkflowProgramComponent {
|
|
|
637
637
|
}
|
|
638
638
|
fetchUsersAssociatedWithRoles() {
|
|
639
639
|
var _a, _b;
|
|
640
|
+
const loggedInUser = this.currentUser();
|
|
640
641
|
const roleIds = (_b = (_a = this.controls.program_roles) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.map((ele) => ele === null || ele === void 0 ? void 0 : ele._id);
|
|
641
642
|
// if (fetchAll) {
|
|
642
643
|
this.programService.fetchAllRoleUsers(roleIds).subscribe({
|
|
643
644
|
next: (res) => {
|
|
644
|
-
var _a, _b, _c, _d, _e, _f;
|
|
645
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
646
|
+
const isUserFind = (_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.some((res) => (res === null || res === void 0 ? void 0 : res.member_id) === (loggedInUser === null || loggedInUser === void 0 ? void 0 : loggedInUser.member_id));
|
|
647
|
+
if (!isUserFind) {
|
|
648
|
+
(_b = res === null || res === void 0 ? void 0 : res.data) === null || _b === void 0 ? void 0 : _b.push(loggedInUser);
|
|
649
|
+
res.total_items = (res === null || res === void 0 ? void 0 : res.total_items) + 1;
|
|
650
|
+
}
|
|
645
651
|
this.lists.OWNERS = res;
|
|
646
652
|
this.lists.APPROVERS = res;
|
|
647
|
-
|
|
648
|
-
if (!((_b = (_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.map((ele) => ele === null || ele === void 0 ? void 0 : ele.member_id)) === null || _b === void 0 ? void 0 : _b.includes((_d = (_c = this.controls.program_approver) === null || _c === void 0 ? void 0 : _c.value[0]) === null || _d === void 0 ? void 0 : _d.member_id))) {
|
|
653
|
+
if (!((_d = (_c = res === null || res === void 0 ? void 0 : res.data) === null || _c === void 0 ? void 0 : _c.map((ele) => ele === null || ele === void 0 ? void 0 : ele.member_id)) === null || _d === void 0 ? void 0 : _d.includes((_f = (_e = this.controls.program_approver) === null || _e === void 0 ? void 0 : _e.value[0]) === null || _f === void 0 ? void 0 : _f.member_id))) {
|
|
649
654
|
this.setFormField('program_approver', []);
|
|
650
655
|
}
|
|
651
|
-
if ((
|
|
656
|
+
if ((_h = (_g = this.controls) === null || _g === void 0 ? void 0 : _g.all_user_in_role) === null || _h === void 0 ? void 0 : _h.value) {
|
|
652
657
|
this.setFormField('program_owners', res === null || res === void 0 ? void 0 : res.data);
|
|
653
658
|
}
|
|
654
659
|
else {
|
|
@@ -1224,4 +1229,4 @@ WorkflowProgramComponent.propDecorators = {
|
|
|
1224
1229
|
programId: [{ type: Input }],
|
|
1225
1230
|
programType: [{ type: Input }]
|
|
1226
1231
|
};
|
|
1227
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcHJvZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1wcm9ncmFtL3dvcmtmbG93LXByb2dyYW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLFdBQVcsRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFPeEMsTUFBTSxPQUFPLHdCQUF3QjtJQTZCbkMsWUFBb0IsRUFBZSxFQUFVLGNBQStCLEVBQVUsV0FBd0IsRUFBUyxZQUF5QjtRQUE1SCxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWlCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQTVCaEosY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUd0QixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFaEIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLG1C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QixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLDZCQUE2QixDQUFDO1lBQ2hGLGdCQUFnQixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDO1lBQ3pELHNCQUFzQixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDO1lBQ3JFLHdCQUF3QixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDO1lBQ3pFLDhCQUE4QixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxDQUFDO1lBQ3JGLDRCQUE0QixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDO1lBQ2pGLHdCQUF3QixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDO1lBQ3pFLDhCQUE4QixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxDQUFDO1lBQ3JGLGdCQUFnQixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDO1lBQ3pELHNCQUFzQixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDO1lBQ3JFLGdCQUFnQixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDO1lBQ3pELHNCQUFzQixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDO1lBQ3JFLHdCQUF3QixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDO1lBQ3pFLDhCQUE4QixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxDQUFDO1lBQ3JGLCtCQUErQixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDO1lBQ3ZGLHFDQUFx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ZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBjbG9uZURlZXAsIGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnbmcyLWRhdGUtcGlja2VyJztcclxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2UgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9ncmFtc1NlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9wcm9ncmFtcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVWlLaXRTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvdWkta2l0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDT05TVEFOVFMgfSBmcm9tICcuL2NvbnN0YW50cyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC13b3JrZmxvdy1wcm9ncmFtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3ctcHJvZ3JhbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vd29ya2Zsb3ctcHJvZ3JhbS5jb21wb25lbnQubGVzcycsICcuLi9mb3Jtcy5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFdvcmtmbG93UHJvZ3JhbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY29uc3RhbnRzID0gQ09OU1RBTlRTO1xyXG4gIHNob3dDb25maXJtYXRpb246IGFueTtcclxuICBAVmlld0NoaWxkKCdmb3JtJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGZvcm0gITogRWxlbWVudFJlZjtcclxuICBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ2RhdGVQaWNrZXInKSBkYXRlUGlja2VyITogRGF0ZVBpY2tlckNvbXBvbmVudDtcclxuICBAT3V0cHV0KCkgcGlja2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcG9wdWxhdGVPcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlV29ya2Zsb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNob3dDb25maXJtYXRpb25BbGVydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGlzY29ubmVjdFJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlZnJlc2hGb3JtID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uUmVtb3ZpbmdSb2xlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBzY3JvbGxUb0JvdHRvbSE6IGJvb2xlYW47XHJcblxyXG4gIC8vIEFsbCBJbnB1dCBmaWVsZHNcclxuICBASW5wdXQoKSBtb2RlOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBwcm9ncmFtSWQ6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHByb2dyYW1UeXBlOiBudW1iZXIgPSAxO1xyXG5cclxuICBwYW5lbFRpdGxlRGVmYXVsdFJldmlld2VyID0gXCJTZWxlY3QgRGVmYXVsdCBSZXZpZXdlcihzKVwiO1xyXG4gIHBhbmVsVGl0bGVPd25lciA9IFwiU2VsZWN0IE93bmVyKHMpXCI7XHJcbiAgcGFuZWxUaXRsZVJldmlld2VyID0gXCJTZWxlY3QgUmV2aWV3ZXIocylcIjtcclxuICBwYW5lbFRpdGxlQXNzaWduZWUgPSBcIlNlbGVjdCBBc3NpZ25lZShzKVwiO1xyXG4gIHBhbmVsVGl0bGVBcHByb3ZlciA9IFwiU2VsZWN0ICBBcHByb3ZlclwiXHJcbiAgaXNBcHByb3ZlckRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNQcm9ncmFtU2NvcGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgcHJvZ3JhbVNlcnZpY2U6IFByb2dyYW1zU2VydmljZSwgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UscHJpdmF0ZSB1aUtpdFNlcnZpY2U6VWlLaXRTZXJ2aWNlKSB7IH1cclxuICBwdWJsaWMgbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKGNvbnRyb2w6IEZvcm1Db250cm9sKSB7XHJcbiAgICBjb25zdCBpc1doaXRlc3BhY2UgPSAoY29udHJvbC52YWx1ZSB8fCAnJykudHJpbSgpLmxlbmd0aCA9PT0gMDtcclxuICAgIGNvbnN0IGlzVmFsaWQgPSAhaXNXaGl0ZXNwYWNlO1xyXG4gICAgcmV0dXJuIGlzVmFsaWQgPyBudWxsIDogeyAnd2hpdGVzcGFjZSc6IHRydWUgfTtcclxuICB9XHJcbiAgcHVibGljIGJsYW5rQXJyYXlWYWxpZGF0b3IoY29udHJvbDogRm9ybUNvbnRyb2wpIHtcclxuICAgIGNvbnN0IGlzQmxhbmsgPSBjb250cm9sLnZhbHVlPy5maWx0ZXIoKGVsZTphbnkpPT4gZWxlKT8ubGVuZ3RoID09PSAwO1xyXG4gICAgY29uc3QgaXNWYWxpZCA9ICFpc0JsYW5rO1xyXG4gICAgcmV0dXJuIGlzVmFsaWQgPyBudWxsIDogeyAnYmxhbmsnOiB0cnVlIH07XHJcbiAgfVxyXG4gbG9hZGVyID0gZmFsc2U7XHJcbiBzaG93U21pbGV5ID0gZmFsc2U7XHJcbiBhY3Rpb25CdXR0b25zID0gW1xyXG4gIHsgYnV0dG9uVGV4dDogJ0FkZCBNb3JlIFByb2dyYW1zJywgY2xhc3M6ICd3aGl0ZS1idG4nLCBpZDogJ2FkZE1vcmUnIH0sXHJcbiAgeyBidXR0b25UZXh0OiAnVmlldyBQcm9ncmFtJywgY2xhc3M6ICdibHVlLWJ0bicsIGlkOiAndmlld1Byb2dyYW0nIH0sXHJcbl07XHJcbnNtaWxleU1lc3NhZ2UgPSBgWW91J3JlIEFsbCBTZXQhYDtcclxuY3JlYXRlZFByb2dyYW1JZCA9ICcnO1xyXG4gIGlzT2JqZWN0aXZlVmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGlzTmFtZUV4aXN0czogYm9vbGVhbiA9ZmFsc2U7XHJcbiAgLy9mb3JtIGJvZHkgZm9yIHByb2dyYW0gbWV0YSBkYXRhXHJcbiAgcHJvZ3JhbUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgIHByb2dyYW1fdHlwZTogW3RoaXMucHJvZ3JhbVR5cGUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbigwKSwgVmFsaWRhdG9ycy5tYXgoMyldXSxcclxuICAgIHByb2dyYW1fbmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgdGhpcy5ub1doaXRlc3BhY2VWYWxpZGF0b3JdXSxcclxuICAgIHByb2dyYW1fZGVzY3JpcHRpb246IFsnJ10sXHJcbiAgICBwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9vYmplY3RpdmU6IFsnJ10sXHJcbiAgIC8vIHByb2dyYW1fb2JqZWN0aXZlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0aGlzLm5vV2hpdGVzcGFjZVZhbGlkYXRvcl1dLFxyXG4gICAgcHJvZ3JhbV9vYmplY3RpdmVfYXR0YWNobWVudHM6IFtbXV0sXHJcbiAgICBwcm9ncmFtX3JvbGVzOiBbW10sIFtWYWxpZGF0b3JzLnJlcXVpcmVkLHRoaXMuYmxhbmtBcnJheVZhbGlkYXRvcl1dLFxyXG4gICAgYWxsX3VzZXJfaW5fcm9sZTogW2ZhbHNlXSxcclxuICAgIHByb2dyYW1fb3duZXJzOiBbW10sIFtWYWxpZGF0b3JzLnJlcXVpcmVkLHRoaXMuYmxhbmtBcnJheVZhbGlkYXRvcl1dLFxyXG4gICAgcHJvZ3JhbV9vd25lcnNfZ3JvdXAgOltbXV0sXHJcbiAgICBwcm9ncmFtX2FwcHJvdmVyOiBbW11dLFxyXG4gICAgcGVyZm9ybWFuY2VfY2FsY3VsYXRpb246IFsnUEFTVF9FVkVOVCcsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICByZWN1cnJpbmdfZnJlcXVlbmN5OiBbdHJ1ZSxbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgbG9ja19zY29wZV9jaGFuZ2U6IFtmYWxzZSxbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgZnJhbWV3b3JrOiBbXSxcclxuICAgIHJjOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9hc3NpZ25lZTogW1tdXSxcclxuICAgIHByb2dyYW1fYXNzaWduZWVfZ3JvdXA6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA6IFtbXV0sXHJcbiAgICBhc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhOiBbJ0FOWU9ORSddLFxyXG4gICAgcHJvZ3JhbV9yZXZpZXdlcjogW1tdXSxcclxuICAgIHByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA6IFtbXV0sXHJcbiAgICByZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhOiBbJ1NFUVVFTlRJQUwnXSxcclxuICAgIHByb2dyYW1fb3ZlcnNlZXI6IFtbXV0sXHJcbiAgICBwcm9ncmFtX292ZXJzZWVyX2dyb3VwOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlcjogW1tdXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2Fzc2Vzc21lbnRzOiBbW11dLFxyXG4gICAgZXZpZGVuY2VfcmVxdWlyZWQ6IFtmYWxzZV0sXHJcbiAgICBhbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2U6IFtmYWxzZV0sXHJcbiAgICBjdXN0b21fZmllbGRzOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9zdGF0ZTogMCxcclxuICB9KTtcclxuXHJcbiAgLy9leGNlcHRpb25hbCBoYW5kbGluZyBvZiBjdXN0b20gZmllbGRzXHJcblxyXG4gICBzaG93QWRkQ3VzdG9tRmllbGQgPSB0cnVlO1xyXG4gIC8vUHJvZ3JhbSBvYmplY3RpdmUgYW5kIGRlc2NyaXBpb24gYXJlIGV4cGxlY3RseSBkZWNsYXJlZCBhcyB0aGV5IGFyZSB1c2luZyBtYXJ4IGVkaXRvciB3aGljaCBkb2VzIG5vdCBzdXBwb3J0cyBSZWFjdGl2ZSBmb3JtcyBiaW5kaW5nXHJcbiAgZWRpdG9yRGF0YSA9IHtcclxuICAgIHByb2dyYW1PYmplY3RpdmU6ICcnLFxyXG4gICAgcHJvZ3JhbURlc2NyaXB0aW9uOiAnJ1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWRBc3Nlc3NtZW50ITogYW55O1xyXG5cclxuXHJcblxyXG4gIGN1cnJlbnRVc2VyKCkge1xyXG4gICAgY29uc3QgdXNlciA9IHRoaXMuYXV0aFNlcnZpY2UudG9rZW5JbmZvKClcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG1lbWJlcl9lbWFpbDogdXNlcj8uZW1haWwsXHJcbiAgICAgIG1lbWJlcl9pZDogdXNlcj8uaWQsXHJcbiAgICAgIG1lbWJlcl9uYW1lOiB1c2VyPy5uYW1lLFxyXG4gICAgICB1c2VyX3JvbGU6IFwiTE9HR0VEX0lOXCIsXHJcbiAgICAgIF9pZDogXCJcIlxyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgLy9TZXRzIHRoZSB2YWx1ZSBvZiBhIGZvcm0gY29udHJvbFxyXG4gIHNldEZvcm1GaWVsZChjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCBpc0Zyb21Gb3JtPzogYm9vbGVhbikge1xyXG4gICAgbGV0IHBhdGNoOiBhbnkgPSB7fTtcclxuICAgIHBhdGNoW2NvbnRyb2xOYW1lXSA9IHZhbHVlO1xyXG4gICAgdGhpcy5wcm9ncmFtRm9ybS5wYXRjaFZhbHVlKHBhdGNoKTtcclxuICAgIHRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdPy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICBpZihpc0Zyb21Gb3JtICYmIGNvbnRyb2xOYW1lID09PSAncHJvZ3JhbV9vYmplY3RpdmUnICYmICF2YWx1ZS5yZXBsYWNlKC8mbmJzcDsvZywgJyAnKS50cmltKCkpIHRoaXMuaXNPYmplY3RpdmVWYWxpZCA9IGZhbHNlO1xyXG4gICAgZWxzZSB0aGlzLmlzT2JqZWN0aXZlVmFsaWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy9SZXR1cm5zIHdlYXRoZXIgdGhlIGZvcm0gaXMgdmFsaWQgb3Igbm90XHJcbiAgZ2V0IGZvcm1WYWxpZCgpIHtcclxuICAgIGlmICh0aGlzLnByb2dyYW1Gb3JtLnZhbGlkICYmIHRoaXMuZWRpdG9yRGF0YT8ucHJvZ3JhbU9iamVjdGl2ZT8ucmVwbGFjZSgvJm5ic3A7L2csICcgJyk/LnRyaW0oKT8ubGVuZ3RoICkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnRyb2xzOiBhbnkgPSB7XHJcbiAgICBwcm9ncmFtX25hbWU6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX25hbWUnKSxcclxuICAgIHByb2dyYW1fdHlwZTp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV90eXBlJyksXHJcbiAgICBwcm9ncmFtX29iamVjdGl2ZTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fb2JqZWN0aXZlJyksXHJcbiAgICBwcm9ncmFtX3JvbGVzOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9yb2xlcycpLFxyXG4gICAgcHJvZ3JhbV9vd25lcnM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX293bmVycycpLFxyXG4gICAgcHJvZ3JhbV9vd25lcnNfZ3JvdXA6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX293bmVyc19ncm91cCcpLFxyXG4gICAgYWxsX3VzZXJfaW5fcm9sZTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ2FsbF91c2VyX2luX3JvbGUnKSxcclxuICAgIHByb2dyYW1fYXBwcm92ZXI6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2FwcHJvdmVyJyksXHJcbiAgICBkZXNjcmlwdGlvbl9hdHRhY2htZW50OiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycpLFxyXG4gICAgb2JqZWN0aXZlX2F0dGFjaG1lbnRzOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9vYmplY3RpdmVfYXR0YWNobWVudHMnKSxcclxuICAgIHBlcmZvcm1hbmNlX2NhbGN1bGF0aW9uOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwZXJmb3JtYW5jZV9jYWxjdWxhdGlvbicpLFxyXG4gICAgcmVjdXJyaW5nX2ZyZXF1ZW5jeTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3JlY3VycmluZ19mcmVxdWVuY3knKSxcclxuICAgIGxvY2tfc2NvcGVfY2hhbmdlOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnbG9ja19zY29wZV9jaGFuZ2UnKSxcclxuICAgIHJjOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncmMnKSxcclxuICAgIGV2aWRlbmNlX3JlcXVpcmVkOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnZXZpZGVuY2VfcmVxdWlyZWQnKSxcclxuICAgIGZyYW1ld29yazogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ2ZyYW1ld29yaycpLFxyXG4gICAgYWxsb3dfYW55X2ZpbGVfa2V5X2V2aWRlbmNlOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnYWxsb3dfYW55X2ZpbGVfa2V5X2V2aWRlbmNlJyksXHJcbiAgICBwcm9ncmFtX2Fzc2lnbmVlOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2Fzc2lnbmVlJyksXHJcbiAgICBwcm9ncmFtX2Fzc2lnbmVlX2dyb3VwOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2Fzc2lnbmVlX2dyb3VwJyksXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScpLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXAnKSxcclxuICAgIGFzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWE6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ2Fzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWEnKSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcjp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyJyksXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cCcpLFxyXG4gICAgcHJvZ3JhbV9yZXZpZXdlcjp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9yZXZpZXdlcicpLFxyXG4gICAgcHJvZ3JhbV9yZXZpZXdlcl9ncm91cDp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9yZXZpZXdlcl9ncm91cCcpLFxyXG4gICAgcHJvZ3JhbV9vdmVyc2Vlcjp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9vdmVyc2VlcicpLFxyXG4gICAgcHJvZ3JhbV9vdmVyc2Vlcl9ncm91cDp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9vdmVyc2Vlcl9ncm91cCcpLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXInKSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cDp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwJyksXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJyksXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwJyksXHJcbiAgICByZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhIDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Jldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWEnKSxcclxuICAgIHByb2dyYW1fYXNzZXNzbWVudHM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2Fzc2Vzc21lbnRzJyksXHJcbiAgICBjdXN0b21fZmllbGRzOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnY3VzdG9tX2ZpZWxkcycpLFxyXG4gICAgaXNBcHByb3ZlckRpc2FibGVkOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnaXNBcHByb3ZlckRpc2FibGVkJyksXHJcbiAgfVxyXG5cclxuICBsaXN0czogYW55ID0ge1xyXG4gICAgUk9MRVM6IFtdLFxyXG4gICAgT1dORVJTOiBbXSxcclxuICAgIE9XTkVSU19HUk9VUFM6W10sXHJcbiAgICBBUFBST1ZFUlM6W10sXHJcbiAgICBSRVZJRVdFUlM6IFtdLFxyXG4gICAgUkVWSUVXRVJTX0dST1VQOltdLFxyXG4gICAgQVNTSUdORUVTOiBbXSxcclxuICAgIEFTU0lHTkVFU19HUk9VUCA6W10sXHJcbiAgICBERUZBVUxUX0FTU0lHTkVFUzpbXSxcclxuICAgIERFRkFVTFRfQVNTSUdORUVTX0dST1VQOltdLFxyXG4gICAgREVGQVVMVF9SRVZJRVdFUlM6W10sXHJcbiAgICBERUZBVUxUX1JFVklFV0VSU19HUk9VUDpbXSxcclxuICAgIE9WRVJTRUVSUzogW10sXHJcbiAgICBPVkVSU0VFUlNfR1JPVVA6W10sXHJcbiAgICBERUZBVUxUX09WRVJTRUVSUzogW10sXHJcbiAgICBERUZBVUxUX09WRVJTRUVSU19HUk9VUDpbXSxcclxuICAgIFJDOiBbXSxcclxuICAgIE5PTl9SRU1PVkFCTEVfT1dORVJTOiBbXSxcclxuICAgIEFMTF9VU0VSOltdLFxyXG4gICAgQUxMX0dST1VQOltdLFxyXG4gICAgU1lTVEVNX1JPTEVfSURTOltdXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGxpc3RMb2FkaW5nU3RhdGUgPSB7XHJcbiAgICBST0xFUzpmYWxzZSxcclxuICAgIFVTRVJTOmZhbHNlLFxyXG4gICAgR1JPVVA6ZmFsc2UsXHJcbiAgICBSQzpmYWxzZSxcclxuICB9XHJcbiAgc2lkZUVsZW1lbnRzID0gWydST0xFJywnUkMnLCdPV05FUicsJ0FTU0lHTkVFJywnQVBQUk9WRVInLCdERUZBVUxUX0FTU0lHTkVFJywnUkVWSUVXRVInLCdERUZBVUxUX1JFVklFV0VSJywnQVNTRVNTTUVOVCcsJ0ZSQU1FV09SSycsJ09WRVJTRUVSJywnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInLCdERUZBVUxUX09WRVJTRUVSJywnT1ZFUlNFRVInXTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV90eXBlJywgdGhpcy5wcm9ncmFtVHlwZSk7XHJcbiAgICBpZih0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICB0aGlzLmdldFByb2dyYW1EZXRhaWxzKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5mZXRjaE9yZ2FuaXphdGlvblVzZXJzKCk7XHJcbiAgICAgIHRoaXMuZmV0Y2hPcmdhbml6YXRpb25Hcm91cCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mZXRjaFJvbGVzKCk7XHJcbiAgICB0aGlzLmZldGNoUkMoKTtcclxuXHJcbiAgfVxyXG4gIGdldCB2YWxpZCgpIHtcclxuICAgcmV0dXJuIHRoaXMucHJvZ3JhbUZvcm0udmFsaWRcclxuICB9XHJcblxyXG4gIGFkZGl0aW9uYWxPcHRpb246IGFueSA9IHsuLi5DT05TVEFOVFMuYWRkaXRpb25hbE9wdGlvbn07XHJcbiAgYWN0aXZlTGlzdCA9ICcnIFxyXG4gIC8qKlxyXG4gICAqICMjIyMgRGVzY3JpcHRpb25cclxuICAgKiBQb3B1bGF0ZXMgb3B0aW9uYWwgZmllbGRzIHN0YXR1cyBmb3IgdGhlIG9wdGlvbmFsIGZpZWxkc1xyXG4gICAqL1xyXG4gIHBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKSB7XHJcbiAgICBjb25zdCBhY3RpdmF0ZWRPcHRpb25zID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLmFkZGl0aW9uYWxPcHRpb24pKSB7XHJcbiAgICAgIGlmICh0aGlzLmFkZGl0aW9uYWxPcHRpb25ba2V5XSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaChrZXkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoYWN0aXZhdGVkT3B0aW9ucyk7XHJcbiAgfVxyXG4gIGFkZE1vcmVJbmZvKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbltldmVudC5jb2RlXSA9IGV2ZW50LmNoZWNrZWQ7XHJcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gdHJ1ZTtcclxuICAgIHRoaXMuY2hlY2tQcm9ncmFtT3B0aW9uRmllbGQoKTtcclxuICB9XHJcblxyXG4gIC8vIGZ1bmN0aW9uIHRvIGF1dG9tYXRlIGZvcm0gdmFsdWUgY2hhbmdlIGhhbmRuZ1xyXG4gIGZvcm1DaGFuZ2VMaXN0bmVyKCkge1xyXG4gICAgY29uc3QgZmllbGRzID0gT2JqZWN0LmtleXModGhpcy5jb250cm9scyk7XHJcbiAgICBmaWVsZHMuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5jb250cm9sc1tlbGVdPy52YWx1ZUNoYW5nZXMucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4geyB0aGlzLmhhbmRsZUZvcm1GaWVsZENoYW5nZShlbGUsIHJlcykgfVxyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGhhbmRsZUZvcm1GaWVsZENoYW5nZShjb250cm9sOiBzdHJpbmcsIHBheWxvYWQ/OiBhbnkpIHtcclxuICAgIHN3aXRjaCAoY29udHJvbCkge1xyXG4gICAgICBjYXNlICdwcm9ncmFtX3JvbGVzJzoge1xyXG4gICAgICAgIHRoaXMuZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3RpdmF0ZUxpc3QoZXZ0OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuYWN0aXZlTGlzdCA9IGV2dDtcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgbGlzdEFjdGlvbihldnQ6IGFueSwgdHlwZTogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhcImV2dCA9PT0+XCIsIGV2dCwgdHlwZSlcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdST0xFJzoge1xyXG4gICAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbiA9IHRydWU7XHJcbiAgICAgICAgY29uc3Qgc3lzdGVtUm9sZXMgPSBldnQ/LmZpbHRlcigoZWxlOiBhbnkpID0+IChlbGU/LnJvbGVOYW1lPy50b0xvd2VyQ2FzZSgpID09PSAna2V5IGFkbWluJyB8fCBlbGU/LnJvbGVOYW1lPy50b0xvd2VyQ2FzZSgpID09PSAnYWRtaW4nKSk7XHJcbiAgICAgICAgY29uc3QgcGF0Y2hWYWwgPSB0aGlzLnVuaXF1ZUJ5UHJvcChbLi4uc3lzdGVtUm9sZXMsIC4uLmV2dF0sICdfaWQnKTtcclxuICAgICAgICBpZiAoIWlzRXF1YWwodGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzLnZhbHVlLnNvcnQoKSwgcGF0Y2hWYWwuc29ydCgpKSkge1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcm9sZXMnLCBwYXRjaFZhbCk7XHJcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5mZXRjaEdyb3Vwc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnUkMnOiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJyb2xlXCIsZXZ0KVxyXG4gICAgICAgIGNvbnN0IHJjID0gdGhpcy5zZXRMaXN0KHRoaXMubGlzdHMuUkMsIGV2dCwgJ2l0ZW1faWQnKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwic2V0cmNcIixyYylcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncmMnLCB0aGlzLnVuaXF1ZUJ5UHJvcChyYywgJ2l0ZW1faWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnT1dORVInIDp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJykpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0FQUFJPVkVSJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXBwcm92ZXInLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJykpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0FTU0lHTkVFJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXNzaWduZWUnLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJykpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2lnbmVlX2dyb3VwJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRBc3NpZ25lZShldnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfQVNTSUdORUUnOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdSRVZJRVdFUic6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3Jldmlld2VyJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yZXZpZXdlcl9ncm91cCcsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0UmV2aWV3ZXIoZXZ0KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX1JFVklFV0VSJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cCcsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnT1ZFUlNFRVInOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vdmVyc2VlcicsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3ZlcnNlZXJfZ3JvdXAnLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJykpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdE92ZXJzZWVyKGV2dCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9PVkVSU0VFUic6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXInLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJykpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXAnLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJykpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXInLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJykpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdBU1NFU1NNRU5UJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXNzZXNzbWVudHMnLCBldnQpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0ZSQU1FV09SSyc6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdmcmFtZXdvcmsnLCBldnQpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmUoZXZ0OiBhbnksIHR5cGU6IGFueSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ1JPTEUnOiB7XHJcbiAgICAgICAgbGV0IG1zZyA9ICcnO1xyXG4gICAgICAgIG1zZyA9ICdJZiB5b3UgY2hhbmdlIHRoZSByb2xlcywgYW55IHVuc2F2ZWQgY2hhbmdlcyB3b3VsZCBiZSBsb3N0LidcclxuICAgICAgICBjb25zdCByb2xlcyA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Ll9pZCAhPT0gZXZ0Py5faWQpO1xyXG4gICAgICAgIHRoaXMubGlzdEFjdGlvbihyb2xlcywnUk9MRScpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3JvbGVzJywgcm9sZXMpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ1JDJzoge1xyXG4gICAgICAgIGNvbnN0IHJjcyA9IHRoaXMuY29udHJvbHM/LnJjPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5pdGVtX2lkICE9PSBldnQ/Lml0ZW1faWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdyYycsIHJjcyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnT1dORVInOntcclxuICAgICAgICBjb25zdCBvd25lcnMgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzJywgb3duZXJzKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdPV05FUl9HUk9VUCc6e1xyXG4gICAgICAgIGNvbnN0IG93bmVyc19ncm91cCA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzX2dyb3VwJywgb3duZXJzX2dyb3VwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdBUFBST1ZFUic6e1xyXG4gICAgICAgIGNvbnN0IGFwcHJvdmVyID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9hcHByb3Zlcj8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXBwcm92ZXInLCBhcHByb3Zlcik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnQVNTSUdORUUnOntcclxuICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2lnbmVlJywgYXNzaWduZWUpO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdEFzc2lnbmVlT25SZW1vdmUoZXZ0LHR5cGUpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnQVNTSUdORUVfR1JPVVAnOntcclxuICAgICAgICBjb25zdCBhc3NpZ25lZV9ncm91cCA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3NpZ25lZV9ncm91cCcsIGFzc2lnbmVlX2dyb3VwKTtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRBc3NpZ25lZU9uUmVtb3ZlKGV2dCx0eXBlKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfQVNTSUdORUUnOntcclxuICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScsIGFzc2lnbmVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX0FTU0lHTkVFX0dST1VQJzp7XHJcbiAgICAgICAgY29uc3QgYXNzaWduZWVfZ3JvdXAgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwJywgYXNzaWduZWVfZ3JvdXApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ1JFVklFV0VSJzp7XHJcbiAgICAgICAgY29uc3QgcmV2aWV3ZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yZXZpZXdlcicsIHJldmlld2VyKTtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRSZXZpZXdlck9uUmVtb3ZlKGV2dCx0eXBlKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ1JFVklFV0VSX0dST1VQJzp7XHJcbiAgICAgICAgY29uc3QgcmV2aWV3ZXJfZ3JvdXAgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcmV2aWV3ZXJfZ3JvdXAnLCByZXZpZXdlcl9ncm91cCk7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0UmV2aWV3ZXJPblJlbW92ZShldnQsdHlwZSlcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX1JFVklFV0VSJzp7XHJcbiAgICAgICAgY29uc3QgcmV2aWV3ZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXInLCByZXZpZXdlcik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9SRVZJRVdFUl9HUk9VUCc6e1xyXG4gICAgICAgIGNvbnN0IHJldmlld2VyX2dyb3VwID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cCcsIHJldmlld2VyX2dyb3VwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdPVkVSU0VFUic6e1xyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVyID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3ZlcnNlZXInLCBvdmVyc2Vlcik7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0T3ZlcnNlZXJPblJlbW92ZShldnQsdHlwZSlcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdPVkVSU0VFUl9HUk9VUCc6e1xyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVyX2dyb3VwID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX292ZXJzZWVyX2dyb3VwJywgb3ZlcnNlZXJfZ3JvdXApO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdE92ZXJzZWVyT25SZW1vdmUoZXZ0LHR5cGUpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9PVkVSU0VFUic6e1xyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVyID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyJywgb3ZlcnNlZXIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfT1ZFUlNFRVJfR1JPVVAnOntcclxuICAgICAgICBjb25zdCBvdmVyc2Vlcl9ncm91cCA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXAnLCBvdmVyc2Vlcl9ncm91cCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInOntcclxuICAgICAgICBjb25zdCBvdmVyc2VlciA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJywgb3ZlcnNlZXIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSX0dST1VQJzp7XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJfZ3JvdXAgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXAnLCBvdmVyc2Vlcl9ncm91cCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnQVNTRVNTTUVOVCcgOntcclxuXHJcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBjbG9uZURlZXAodGhpcy5jb250cm9scy5wcm9ncmFtX2Fzc2Vzc21lbnRzPy52YWx1ZSk7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSBjdXJyZW50LmZpbmRJbmRleCgoZWxlOiBhbnkpID0+IGVsZS5jYXRlZ29yeV9pZCA9PSBldnQuY2F0ZWdvcnlfaWQpO1xyXG4gICAgICAgIGN1cnJlbnRbaW5kZXhdLmFzc2Vzc21lbnRJZHMgPSBjdXJyZW50W2luZGV4XS5hc3Nlc3NtZW50SWRzLmZpbHRlcigoYXNzZXNzbWVudDogYW55KSA9PiBhc3Nlc3NtZW50LmlkICE9PSBldnQuaWQpO1xyXG4gICAgICAgIGlmKGN1cnJlbnRbaW5kZXhdLmFzc2Vzc21lbnRJZHMubGVuZ3RoICA9PT0gMCkgIGN1cnJlbnQuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb24oY3VycmVudCwgJ0FTU0VTU01FTlQnKTtcclxuICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0ZSQU1FV09SSycgOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnZnJhbWV3b3JrJywgbnVsbCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVSb2xlKGV2dDogYW55KXtcclxuICAgIHRoaXMub25SZW1vdmluZ1JvbGUuZW1pdChldnQpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vYmVsb3cgNCBmdW5jdGlvbnMgY2FuIGJlIGVhc2lsdHkgY29tYmluZWQgaW50byBvbmUgYXMgdGhleSBmb2xsb3cgc2FtZSBraW5kIG9mIHBhdHRlcm4gb3IgY2FuIGJlIG9mZmxvYWRlZCB0byBhIGV4dGVybmFsIHNlcnZpY2VcclxuICBzZXREZWZhdWx0QXNzaWduZWUoZXZ0OmFueSl7XHJcbiAgICBpZihldnQ/LnVzZXJzPy5sZW5ndGggfHwgZXZ0Py5ncm91cHM/Lmxlbmd0aCl7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAgPSB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJyk7XHJcblxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSB0aGlzLmxpc3RzLkFMTF9VU0VSO1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQID0gdGhpcy5saXN0cy5BTExfR1JPVVA7XHJcbiAgICB9XHJcbiAgICBjb25zdCBhc3NpZ25lZU1hcCA9ICBldnQ/LnVzZXJzPy5tYXAoKGVsZTphbnkpID0+IGVsZT8ubWVtYmVyX2lkKTtcclxuICAgIGxldCBjdXJyZW50RGVmYXVsdEFzc2lnbmVlID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlO1xyXG4gICAgY3VycmVudERlZmF1bHRBc3NpZ25lZSA9IGN1cnJlbnREZWZhdWx0QXNzaWduZWUuZmlsdGVyKChlbGU6YW55KT0+IGFzc2lnbmVlTWFwLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlJywgY3VycmVudERlZmF1bHRBc3NpZ25lZSk7XHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0QXNzaWduZWVPblJlbW92ZShldnQ6YW55LHR5cGU6YW55KXtcclxuICAgc3dpdGNoKHR5cGUpe1xyXG4gICAgIGNhc2UgJ0FTU0lHTkVFJyA6e1xyXG4gICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFUyA9IHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMuZmlsdGVyKChlbGU6YW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgY29uc3QgZGVmYXVsdEFzc2lnbmVlID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlO1xyXG4gICAgICAgY29uc3QgYXNzaWduZWUgPSBkZWZhdWx0QXNzaWduZWUuZmlsdGVyKChlbGU6YW55KSA9PiAgZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKVxyXG4gICAgICAgaWYoIWFzc2lnbmVlPy5sZW5ndGgpe1xyXG4gICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gdGhpcy5saXN0cy5BTExfVVNFUjtcclxuICAgICAgIH1cclxuICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWUnLCBhc3NpZ25lZSk7XHJcblxyXG5cclxuICAgICAgYnJlYWs7XHJcbiAgICAgfVxyXG4gICAgIGNhc2UgJ0FTU0lHTkVFX0dST1VQJzp7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAgPSB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgIGNvbnN0IGRlZmF1bHRBc3NpZ25lZUdyb3VwID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlO1xyXG4gICAgICBjb25zdCBhc3NpZ25lZUdyb3VwID0gZGVmYXVsdEFzc2lnbmVlR3JvdXAuZmlsdGVyKChlbGU6YW55KSA9PiAgZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZClcclxuICAgICAgaWYoIWFzc2lnbmVlR3JvdXA/Lmxlbmd0aCl7XHJcbiAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUCA9IHRoaXMubGlzdHMuQUxMX0dST1VQO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXAnLCBhc3NpZ25lZUdyb3VwKTtcclxuICAgICB9XHJcbiAgIH1cclxuICB9XHJcbiAgc2V0RGVmYXVsdFJldmlld2VyKGV2dDphbnkpe1xyXG4gICAgaWYoZXZ0Py51c2Vycz8ubGVuZ3RoIHx8IGV2dD8uZ3JvdXBzPy5sZW5ndGgpe1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTID0gdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpO1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTX0dST1VQID0gdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUyA9IHRoaXMubGlzdHMuQUxMX1VTRVI7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlNfR1JPVVAgPSB0aGlzLmxpc3RzLkFMTF9HUk9VUDtcclxuICAgIH1cclxuICAgIGNvbnN0IHJldmlld2VyTWFwID0gIGV2dD8udXNlcnM/Lm1hcCgoZWxlOmFueSkgPT4gZWxlPy5tZW1iZXJfaWQpOyAgIFxyXG4gICAgbGV0IGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU7ICAgXHJcbiAgICBjdXJyZW50RGVmYXVsdFJldmlld2VyID0gY3VycmVudERlZmF1bHRSZXZpZXdlci5maWx0ZXIoKGVsZTphbnkpPT4gcmV2aWV3ZXJNYXAuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXInLCBjdXJyZW50RGVmYXVsdFJldmlld2VyKTtcclxuICB9XHJcbiAgc2V0RGVmYXVsdE92ZXJzZWVyKGV2dDphbnkpe1xyXG4gICAgaWYoZXZ0Py51c2Vycz8ubGVuZ3RoIHx8IGV2dD8uZ3JvdXBzPy5sZW5ndGgpe1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTID0gdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpO1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQID0gdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpO1xyXG5cclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTID0gdGhpcy5saXN0cy5BTExfVVNFUjtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSU19HUk9VUCA9IHRoaXMubGlzdHMuQUxMX0dST1VQO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb3ZlcnNlZXJNYXAgPSAgZXZ0Py51c2Vycz8ubWFwKChlbGU6YW55KSA9PiBlbGU/Lm1lbWJlcl9pZCk7XHJcbiAgICBsZXQgY3VycmVudERlZmF1bHRSZXZpZXdlciA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZTtcclxuICAgIGxldCBjdXJyZW50RGVmYXVsdEZhaWxSZXZpZXdlciA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU7XHJcbiAgICBjdXJyZW50RGVmYXVsdFJldmlld2VyID0gY3VycmVudERlZmF1bHRSZXZpZXdlci5maWx0ZXIoKGVsZTphbnkpPT4gb3ZlcnNlZXJNYXAuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgIGN1cnJlbnREZWZhdWx0RmFpbFJldmlld2VyID0gY3VycmVudERlZmF1bHRSZXZpZXdlci5maWx0ZXIoKGVsZTphbnkpPT4gb3ZlcnNlZXJNYXAuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXInLCBjdXJyZW50RGVmYXVsdFJldmlld2VyKTtcclxuICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJywgY3VycmVudERlZmF1bHRGYWlsUmV2aWV3ZXIpO1xyXG4gIH1cclxuICBzZXREZWZhdWx0UmV2aWV3ZXJPblJlbW92ZShldnQ6YW55LHR5cGU6YW55KXtcclxuICAgc3dpdGNoKHR5cGUpe1xyXG4gICAgIGNhc2UgJ1JFVklFV0VSJyA6e1xyXG4gICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUyA9IHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlMuZmlsdGVyKChlbGU6YW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgY29uc3QgZGVmYXVsdFJldmlld2VyID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlO1xyXG4gICAgICAgY29uc3QgcmV2aWV3ZXIgPSBkZWZhdWx0UmV2aWV3ZXIuZmlsdGVyKChlbGU6YW55KSA9PiAgZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKVxyXG4gICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicsIHJldmlld2VyKTtcclxuXHJcbiAgICAgIGJyZWFrO1xyXG4gICAgIH1cclxuICAgICBjYXNlICdSRVZJRVdFUl9HUk9VUCc6e1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTX0dST1VQID0gdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSU19HUk9VUC5maWx0ZXIoKGVsZTphbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICBjb25zdCBkZWZhdWx0UmV2aWV3ZXJHcm91cCA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZTtcclxuICAgICAgY29uc3QgcmV2aWV3ZXJHcm91cCA9IGRlZmF1bHRSZXZpZXdlckdyb3VwLmZpbHRlcigoZWxlOmFueSkgPT4gIGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpXHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXAnLCByZXZpZXdlckdyb3VwKTtcclxuICAgICB9XHJcbiAgIH1cclxuICB9XHJcbiAgc2V0RGVmYXVsdE92ZXJzZWVyT25SZW1vdmUoZXZ0OmFueSx0eXBlOmFueSl7XHJcbiAgICBzd2l0Y2godHlwZSl7XHJcbiAgICAgIGNhc2UgJ09WRVJTRUVSJyA6e1xyXG4gICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMgPSB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgICBjb25zdCBkZWZhdWx0T3ZlcnNlZXIgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU7XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXIgPSBkZWZhdWx0T3ZlcnNlZXIuZmlsdGVyKChlbGU6YW55KSA9PiAgZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKVxyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXInLCBvdmVyc2Vlcik7XHJcblxyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRGYWlsT3ZlcnNlZXIgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVyRmFpbCA9IGRlZmF1bHRGYWlsT3ZlcnNlZXIuZmlsdGVyKChlbGU6YW55KSA9PiAgZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKVxyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJywgb3ZlcnNlZXJGYWlsKTtcclxuXHJcbiAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdPVkVSU0VFUl9HUk9VUCc6e1xyXG4gICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSU19HUk9VUCA9IHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAuZmlsdGVyKChlbGU6YW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgIGNvbnN0IGRlZmF1bHRPdmVyc2Vlckdyb3VwID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlO1xyXG4gICAgICAgY29uc3Qgb3ZlcnNlZXJHcm91cCA9IGRlZmF1bHRPdmVyc2Vlckdyb3VwLmZpbHRlcigoZWxlOmFueSkgPT4gIGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpXHJcbiAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwJywgb3ZlcnNlZXJHcm91cCk7XHJcblxyXG4gICAgICAgY29uc3QgZGVmYXVsdE92ZXJzZWVyRmFpbGVkR3JvdXAgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU7XHJcbiAgICAgICBjb25zdCBvdmVyc2VlckZhaWxlZEdyb3VwID0gZGVmYXVsdE92ZXJzZWVyRmFpbGVkR3JvdXAuZmlsdGVyKChlbGU6YW55KSA9PiAgZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZClcclxuICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwJywgb3ZlcnNlZXJGYWlsZWRHcm91cCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgfVxyXG5cclxuXHJcblxyXG4gIGZpZWxkRGVzZWxlY3Rvcih0eXBlOiBhbnkpIHtcclxuICAgIHRoaXMuYWN0aXZlTGlzdCA9ICcnO1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gICAgdGhpcy5tYXJrYXNUb3VjaGVkU2VsZWN0b3IodHlwZSlcclxuICB9XHJcbiAgbWFya2FzVG91Y2hlZFNlbGVjdG9yKGZpZWxkTmFtZTphbnkpe1xyXG4gICAgY29uc3QgdHlwZUZpZWxkOmFueSA9IHtcclxuICAgICAgUk9MRToncHJvZ3JhbV9yb2xlcycsXHJcbiAgICAgIEFQUFJPVkVSOidwcm9ncmFtX2FwcHJvdmVyJyxcclxuICAgICAgT1dORVI6J3Byb2dyYW1fb3duZXJzJyxcclxuICAgICAgT1dORVJfR1JPVVA6J3Byb2dyYW1fb3duZXJzX2dyb3VwJ1xyXG4gICAgIH1cclxuICAgICB0aGlzLmNvbnRyb2xzW3R5cGVGaWVsZFtmaWVsZE5hbWVdXT8ubWFya0FzVG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgZmV0Y2hSb2xlcygpIHtcclxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0Um9sZXMoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmxpc3RzLlJPTEVTID0gcmVzO1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRTeXN0ZW1WYWwgPSB0aGlzLmxpc3RzPy5ST0xFUz8uZGF0YT8uZmlsdGVyKChlbGU6IGFueSkgPT4gKGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdrZXkgYWRtaW4nIHx8IGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdhZG1pbicpKT8ubWFwKChlbGU6YW55KSA9PiBlbGU/Ll9pZCk7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFZhbCA9IHRoaXMubGlzdHM/LlJPTEVTPy5kYXRhPy5maWx0ZXIoKGVsZTogYW55KSA9PiAoZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2tleSBhZG1pbicgfHwgZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2FkbWluJykpO1xyXG4gICAgICB0aGlzLmxpc3RzLlNZU1RFTV9ST0xFX0lEUyA9IGRlZmF1bHRTeXN0ZW1WYWw7XHJcbiAgICAgICAgaWYodGhpcy5tb2RlICE9PSAnRURJVCcpe1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcm9sZXMnLCBkZWZhdWx0VmFsKTtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hHcm91cHNBc3NvY2lhdGVkV2l0aFJvbGVzKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4geyB9XHJcbiAgICB9KVxyXG4gIH1cclxuICAvL2ZldGNoIHRoZSBsaXN0IG9mIHJlc3BvbnNpYmlsaXRpZXMgY2VudGVyXHJcbiAgZmV0Y2hSQygpIHtcclxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0UmVzcG9uc2liaWxpdHlDZW50ZXJMaXN0KCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5saXN0cy5SQyA9IHJlcztcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4geyB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIGZldGNoVXNlcnNBc3NvY2lhdGVkV2l0aFJvbGVzKCkge1xyXG4gICAgY29uc3Qgcm9sZUlkcyA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8uX2lkKTtcclxuICAgLy8gaWYgKGZldGNoQWxsKSB7XHJcbiAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZmV0Y2hBbGxSb2xlVXNlcnMocm9sZUlkcykuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMubGlzdHMuT1dORVJTID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5saXN0cy5BUFBST1ZFUlMgPSByZXM7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcInJlc2RlZlwiLHJlcz8uZGF0YSlcclxuICAgICAgICAgIGlmKCFyZXM/LmRhdGE/Lm1hcCgoZWxlOmFueSkgPT4gZWxlPy5tZW1iZXJfaWQpPy5pbmNsdWRlcyh0aGlzLmNvbnRyb2xzLnByb2dyYW1fYXBwcm92ZXI/LnZhbHVlWzBdPy5tZW1iZXJfaWQpKXtcclxuICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXBwcm92ZXInLCBbXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5jb250cm9scz8uYWxsX3VzZXJfaW5fcm9sZT8udmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzJywgcmVzPy5kYXRhKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdE93bmVycyhyZXM/LmRhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4geyB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBmZXRjaEdyb3Vwc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKXtcclxuICAgIGNvbnN0IHJvbGVJZHMgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXM/LnZhbHVlPy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Ll9pZCk7XHJcbiAgICAgdGhpcy5wcm9ncmFtU2VydmljZS5mZXRjaEFsbFJvbGVHcm91cHMocm9sZUlkcykuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OihyZXM6YW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxpc3RzLk9XTkVSU19HUk9VUFMgPSByZXM7XHJcbiAgICAgICAgICBjb25zdCByb2xlSWRzOiBBcnJheTxzdHJpbmc+ICA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWUubWFwKChlbGU6IGFueSkgPT4gZWxlLl9pZClcclxuICAgICAgICAgY29uc3QgZ3JvdXBEZXRhaWxzID0gIHRoaXMuY29udHJvbHMucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlLmZpbHRlcigocm9sZUlkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYocm9sZUlkLnJvbGVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgIGxldCBpc1NhbWVSb2xlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgcm9sZUlkLnJvbGVzLmZvckVhY2goKHJvbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYocm9sZUlkcy5pbmNsdWRlcyhyb2xlLnJvbGVJZCkpIHtcclxuICAgICAgICAgICAgICAgICAgaXNTYW1lUm9sZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICBpZihpc1NhbWVSb2xlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcm9sZUlkO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzX2dyb3VwJywgZ3JvdXBEZXRhaWxzKTtcclxuICAgICAgICAgIH1cclxuICAgICB9KVxyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdE93bmVycyh1c2VyTGlzdDogYW55KSB7XHJcbiAgICBjb25zdCBsb2dnZWRJbnVzZXIgPSB0aGlzLmN1cnJlbnRVc2VyKCk7XHJcbiAgICBjb25zdCBkZWZhdWx0T3duZXIgPSB1c2VyTGlzdC5maWx0ZXIoKGVsZTogYW55KSA9PiBbJ0FETUlOJywgJ0tFWV9BRE1JTiddLmluY2x1ZGVzKGVsZT8udXNlcl9yb2xlKSAmJiBlbGU/Lm1lbWJlcl9pZCAhPSBsb2dnZWRJbnVzZXI/Lm1lbWJlcl9pZCk7XHJcbiAgICB0aGlzLmxpc3RzLk5PTl9SRU1PVkFCTEVfT1dORVJTID0gdGhpcy51bmlxdWVCeVByb3AoWy4uLltsb2dnZWRJbnVzZXJdLCAuLi5kZWZhdWx0T3duZXJdLCAnbWVtYmVyX2lkJyk7XHJcbiAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCB0aGlzLmxpc3RzLk5PTl9SRU1PVkFCTEVfT1dORVJTKTtcclxuICB9XHJcblxyXG5cclxuICBmZXRjaE9yZ2FuaXphdGlvblVzZXJzKGRhdGE/OiBhbnkpe1xyXG4gICAgdGhpcy5saXN0TG9hZGluZ1N0YXRlLlVTRVJTID0gdHJ1ZTtcclxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZmV0Y2hBbGxPcmdVc2VyKCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDoocmVzOmFueSk9PntcclxuICAgICAgICB0aGlzLmxpc3RzLkFMTF9VU0VSID0gcmVzO1xyXG4gICAgICAgIHRoaXMubGlzdHMuQVNTSUdORUVTID0gcmVzO1xyXG4gICAgICAgIHRoaXMubGlzdHMuUkVWSUVXRVJTID0gcmVzO1xyXG4gICAgICAgIHRoaXMubGlzdHMuT1ZFUlNFRVJTID0gcmVzO1xyXG4gICAgICAgIGlmKHRoaXMubW9kZSAhPT0nRURJVCcpe1xyXG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFUyA9IHJlcztcclxuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlMgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTID0gcmVzO1xyXG4gICAgICAgIH1lbHNlIGlmKHRoaXMubW9kZSA9PT0gJ0VESVQnKXtcclxuICAgICAgICAgICBpZighdGhpcy5jb250cm9scy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFUyA9IHJlcztcclxuICAgICAgICAgICB9XHJcbiAgICAgICAgICAgaWYoIXRoaXMuY29udHJvbHMucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlMgPSByZXM7XHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICAgIGlmKCF0aGlzLmNvbnRyb2xzLnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTID0gcmVzO1xyXG4gICAgICAgICAgIH0gICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdGUuVVNFUlMgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6KCk9Pnt0aGlzLmxpc3RMb2FkaW5nU3RhdGUuVVNFUlMgPSBmYWxzZTt9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIGZldGNoT3JnYW5pemF0aW9uR3JvdXAoZGF0YT86IGFueSl7XHJcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQ29tcGxpYW5jZUdyb3VwcygpLnN1YnNjcmliZSh7XHJcbiAgICAgICBuZXh0OihyZXM6YW55KT0+e1xyXG4gICAgICAgICB0aGlzLmxpc3RzLkFMTF9HUk9VUCA9IHJlcztcclxuXHJcbiAgICAgICAgIHRoaXMubGlzdHMuQVNTSUdORUVTX0dST1VQID0gcmVzO1xyXG4gICAgICAgICB0aGlzLmxpc3RzLlJFVklFV0VSU19HUk9VUCA9IHJlcztcclxuXHJcbiAgICAgICAgIHRoaXMubGlzdHMuT1ZFUlNFRVJTX0dST1VQID0gcmVzO1xyXG5cclxuICAgICAgICAgaWYodGhpcy5tb2RlICE9PSdFRElUJyl7XHJcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSU19HUk9VUCA9IHJlcztcclxuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAgPSByZXM7XHJcbiAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgZXJyb3I6KGVycjphbnkpPT57fVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGZpbGVVcGxvYWRUcmFja2VyID0ge1xyXG4gICAgZGVzY3JpcHRpb246IFtdLFxyXG4gICAgb2JqZWN0aXZlOiBbXVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0RmlsZSh0eXBlOiBhbnksIGZpbGVzOiBhbnkpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IGZpbGVzLmxlbmd0aCAtIDE7IGkrKykge1xyXG4gICAgICBjb25zdCBuYW1lID0gZmlsZXNbaV0uZmlsZS5uYW1lID8/ICcnO1xyXG4gICAgICB0aGlzLnVwbG9hZEZpbGVzKHR5cGUsIGZpbGVzW2ldLmZpbGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBsb2FkRmlsZXModHlwZTogJ0RFU0NSSVBUSU9OJyB8ICdPQkpFQ1RJVkUnLCBmaWxlOiBhbnkpIHtcclxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcclxuICAgIGNvbnN0IGRlc3RpbmF0aW9uU3RyaW5nID0gdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25JZCgpLnRvU3RyaW5nKCk7XHJcbiAgICBjb25zdCBkdW1teUZpbGUgPSB7XHJcbiAgICAgIGZpbGVfdXJsX3BhdGg6IGAke2ZpbGU/Lm5hbWV9YCxcclxuICAgICAgbmFtZTogYCR7ZmlsZT8ubmFtZX1gLFxyXG4gICAgICB1cGxvYWRpbmc6IHRydWUsXHJcbiAgICAgIG9yZ19maWxlOiBgJHtmaWxlPy5uYW1lfWBcclxuICAgIH1cclxuICAgIGlmICh0eXBlID09PSAnREVTQ1JJUFRJT04nKSB7XHJcbiAgICAgIGxldCBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIFsuLi5kZXNjcmlwdGlvbiwgLi4uW2R1bW15RmlsZV1dKVxyXG4gICAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLnVwbG9hZEZpbGVzKGZvcm1EYXRhLCBkZXN0aW5hdGlvblN0cmluZykuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWUgPz8gW107XHJcbiAgICAgICAgICBsZXQgZGVzY3JpcHRpb25JbmRleCA9IGRlc2NyaXB0aW9uLmZpbmRJbmRleCgoZWxlOiBhbnkpID0+IGVsZT8ub3JnX2ZpbGUgPT09IHJlcz8ub3JnX2ZpbGUpO1xyXG4gICAgICAgICAgZGVzY3JpcHRpb25bZGVzY3JpcHRpb25JbmRleF0gPSByZXNcclxuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgdGhpcy51bmlxdWVCeVByb3AoZGVzY3JpcHRpb24sICdvcmdfZmlsZScpKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZSA/PyBbXTtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5vcmdfZmlsZSAhPT0gZmlsZT8ubmFtZSk7XHJcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdPQkpFQ1RJVkUnKSB7XHJcbiAgICAgIGxldCBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIFsuLi5kZXNjcmlwdGlvbiwgLi4uW2R1bW15RmlsZV1dKVxyXG4gICAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLnVwbG9hZEZpbGVzKGZvcm1EYXRhLCBkZXN0aW5hdGlvblN0cmluZykuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWUgPz8gW107XHJcbiAgICAgICAgICBsZXQgZGVzY3JpcHRpb25JbmRleCA9IGRlc2NyaXB0aW9uLmZpbmRJbmRleCgoZWxlOiBhbnkpID0+IGVsZT8ub3JnX2ZpbGUgPT09IHJlcz8ub3JnX2ZpbGUpO1xyXG4gICAgICAgICAgZGVzY3JpcHRpb25bZGVzY3JpcHRpb25JbmRleF0gPSByZXNcclxuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgdGhpcy51bmlxdWVCeVByb3AoZGVzY3JpcHRpb24sICdvcmdfZmlsZScpKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZSA/PyBbXTtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5vcmdfZmlsZSAhPT0gZmlsZT8ubmFtZSk7XHJcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZGVsZXRlQXR0YWNobWVudCh0eXBlOiAnREVTQ1JJUFRJT04nIHwgJ09CSkVDVElWRScsIGZpbGU6IGFueSkge1xyXG4gICAgaWYgKHR5cGUgPT09ICdERVNDUklQVElPTicpIHtcclxuICAgICAgbGV0IGRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWUgPz8gW107XHJcbiAgICAgIGlmIChkZXNjcmlwdGlvbikge1xyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5vcmdfZmlsZSAhPT0gZmlsZT8ub3JnX2ZpbGUpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgZGVzY3JpcHRpb24pXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ09CSkVDVElWRScpIHtcclxuICAgICAgbGV0IG9iamVjdGl2ZSA9IHRoaXMuY29udHJvbHM/Lm9iamVjdGl2ZV9hdHRhY2htZW50cz8udmFsdWUgPz8gW107XHJcbiAgICAgIGlmIChvYmplY3RpdmUpIHtcclxuICAgICAgICBvYmplY3RpdmUgPSBvYmplY3RpdmUuZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5vcmdfZmlsZSAhPT0gZmlsZT8ub3JnX2ZpbGUpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgb2JqZWN0aXZlKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgc2VsZWN0QWxsUm9sZU93bmVyKGV2dDogYW55KSB7XHJcbiAgICAvL25lZWQgdG8gZmV0Y2ggYWxsIHRoZSB1c2VycyBmb3IgYWxsIHRoZSBzZWxlY3RlZCByb2xlc1xyXG4gICAgY29uc3QgbG9nZ2VkSW5Vc2VyID0gdGhpcy5jdXJyZW50VXNlcigpO1xyXG4gICAgbGV0IHJvbGVJZCA9IFtdO1xyXG4gICAgaWYoZXZ0Py50YXJnZXQ/LmNoZWNrZWQpe1xyXG4gICAgICAgcm9sZUlkID0gdGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8ubWFwKChlbGU6IGFueSkgPT4gZWxlPy5faWQpO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZSA9PT5cIiwgdGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZSk7XHJcbiAgICAgIHJvbGVJZCA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICBpZihbJ2tleSBhZG1pbicsICdhZG1pbiddLmluY2x1ZGVzKGVsZS5yb2xlTmFtZS50b0xvd2VyQ2FzZSgpKSApIHtcclxuICAgICAgICAgIHJldHVybiBlbGU/Ll9pZFxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhcInRoaXMuY29udHJvbHMucHJvZ3JhbV9vd25lcnM/LnZhbHVlID09PlwiLHJvbGVJZCwgIHRoaXMuY29udHJvbHMucHJvZ3JhbV9vd25lcnM/LnZhbHVlKVxyXG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5mZXRjaEFsbFJvbGVVc2Vycyhyb2xlSWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVuaXF1ZUJ5UHJvcChbLi4uW2xvZ2dlZEluVXNlcl0sIC4uLnJlcz8uZGF0YV0sICdtZW1iZXJfaWQnKVxyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVycycsIHVzZXIpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7IH1cclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcblxyXG5cclxuICAvKipcclxuICAgKiAjIyMjIERlc2NyaXB0aW9uXHJcbiAgICpcclxuICAgKiBSZXR1cm5zIHRoZSB1bmlxdWUgYXJyYXkgb2Ygb2JqZWN0IGJhc2VkIG9uIHVuaXF1ZSBrZXlcclxuICAgKiBAcGFyYW0gYXJyYXlcclxuICAgKiBAcGFyYW0ga2V5XHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICB1bmlxdWVCeVByb3AoYXJyYXk6IGFueSwga2V5OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBBcnJheS5mcm9tKFxyXG4gICAgICBhcnJheVxyXG4gICAgICAgIC5yZWR1Y2UoXHJcbiAgICAgICAgICAoYWNjOiBhbnksIGl0ZW06IGFueSkgPT4gKFxyXG4gICAgICAgICAgICBpdGVtICYmIGl0ZW1ba2V5XSAmJiBhY2Muc2V0KGl0ZW1ba2V5XSwgaXRlbSksXHJcbiAgICAgICAgICAgIGFjY1xyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIG5ldyBNYXAoKVxyXG4gICAgICAgIClcclxuICAgICAgICAudmFsdWVzKClcclxuICAgICk7XHJcbiAgfVxyXG4gIHNldExpc3QobGlzdDogYW55W10sIGlkczogYW55W10sIGtleTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkYXRhOiBhbnkgPSBbXTtcclxuICAgIGlkcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgaW5kZXggPSBsaXN0LmZpbmRJbmRleCgobGlzdEVsZW1lbnQ6IGFueSkgPT4gbGlzdEVsZW1lbnRba2V5XSA9PSBlbGVtZW50KTtcclxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgIGRhdGEucHVzaChsaXN0W2luZGV4XSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gICBzYXZlUHJvZ3JhbSgpe1xyXG4gICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgICBsZXQgcGF5bG9hZCA9ICB0aGlzLnByb2dyYW1TZXJ2aWNlLmJ1aWxkUGF5bG9hZCh0aGlzLnByb2dyYW1Gb3JtLHRoaXMpO1xyXG4gICAgICBpZihwYXlsb2FkICYmIHRoaXMubW9kZSA9PT0gJ0NSRUFURScpe1xyXG4gICAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLnNhdmVQcm9ncmFtKHBheWxvYWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6KHJlczphbnkpPT57XHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlZFByb2dyYW1JZCA9IHJlcy5faWRcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6KGVycjphbnkpPT57XHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XHJcbiAgICAgICAgaWYoZXJyLmVycm9yLm1lc3NhZ2UgPT0gXCJDYXRlZ29yeSBhbHJlYWR5IGV4aXN0LlwiKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRoaXMuaXNOYW1lRXhpc3RzID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgIH1cclxuICAgICAgfSlcclxuICAgfVxyXG4gICBpZihwYXlsb2FkICYmIHRoaXMubW9kZSA9PT0gJ0VESVQnKXtcclxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UudXBkYXRlUHJvZ3JhbShwYXlsb2FkLCB0aGlzLnByb2dyYW1JZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDoocmVzOmFueSk9PntcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVkUHJvZ3JhbUlkID0gcmVzLl9pZDtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6KGVycjphbnkpPT57XHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XHJcbiAgICAgICAgaWYoZXJyLmVycm9yLm1lc3NhZ2UgPT0gXCJDYXRlZ29yeSBhbHJlYWR5IGV4aXN0LlwiKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRoaXMuaXNOYW1lRXhpc3RzID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiB9XHJcbiAgfVxyXG5cclxuICBhY3Rpb24oZXZlbnQ6IHN0cmluZykge1xyXG4gICAgY29uc29sZS5sb2coZXZlbnQpXHJcbiAgICBzd2l0Y2ggKGV2ZW50KSB7XHJcbiAgICAgIGNhc2UgJ2FkZE1vcmUnOlxyXG4gICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3ZpZXdQcm9ncmFtJzpcclxuICAgICAgIHRoaXMudmlld1Byb2dyYW1zKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2aWV3UHJvZ3JhbXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpO1xyXG4gICAgbGV0IHVybDogc3RyaW5nO1xyXG4gICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0LnN0YXJ0c1dpdGgoJ2xvY2FsaG9zdCcpKSB7XHJcbiAgICAgIHVybCA9ICdodHRwOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdXJsID0gJ2h0dHBzOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xyXG4gICAgICB1cmwgKz0gJy9wcm9ncmFtLXdvcmtyb29tP2lkPScgKyB0aGlzLmNyZWF0ZWRQcm9ncmFtSWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB1cmwgKz0gJy9wcm9ncmFtL3Byb2dyYW0td29ya3Jvb20/aWQ9JyArIHRoaXMuY3JlYXRlZFByb2dyYW1JZDtcclxuICAgIH1cclxuXHJcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgIGNvbnNvbGUubG9nKFwidGhpcy5jcmVhdGVkUHJvZ3JhbUlkID09PlwiLCB0aGlzLmNyZWF0ZWRQcm9ncmFtSWQpXHJcblxyXG4gIH1cclxuICByZXNldEZvcm0oKXtcclxuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcclxuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20gPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICBjb25zdCAgREVGQVVMVF9WQUxVRVMgPSB7XHJcbiAgICBwcm9ncmFtX3R5cGU6MSxcclxuICAgIHByb2dyYW1fbmFtZTonJyxcclxuICAgIHByb2dyYW1fZGVzY3JpcHRpb246JycsXHJcbiAgICBwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzOltdLFxyXG4gICAgcHJvZ3JhbV9vYmplY3RpdmU6JycsXHJcbiAgICBwcm9ncmFtX29iamVjdGl2ZV9hdHRhY2htZW50czpbXSxcclxuICAgIHByb2dyYW1fcm9sZXM6W10sXHJcbiAgICBhbGxfdXNlcl9pbl9yb2xlOmZhbHNlLFxyXG4gICAgcHJvZ3JhbV9vd25lcnM6W10sXHJcbiAgICBwcm9ncmFtX293bmVyc19ncm91cDpbXSxcclxuICAgIHByb2dyYW1fYXBwcm92ZXI6W10sXHJcbiAgICBwZXJmb3JtYW5jZV9jYWxjdWxhdGlvbjogXCJQQVNUX0VWRU5UXCIsXHJcbiAgICByZWN1cnJpbmdfZnJlcXVlbmN5OmZhbHNlLFxyXG4gICAgbG9ja19zY29wZV9jaGFuZ2U6ZmFsc2UsXHJcbiAgICBmcmFtZXdvcms6W10sXHJcbiAgICByYzpbXSxcclxuICAgIHByb2dyYW1fYXNzaWduZWU6IFtdLFxyXG4gICAgcHJvZ3JhbV9hc3NpZ25lZV9ncm91cDogW10sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU6IFtdLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwOiBbXSxcclxuICAgIGFzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWE6ICdBTllPTkUnLFxyXG4gICAgcHJvZ3JhbV9yZXZpZXdlcjogW10sXHJcbiAgICBwcm9ncmFtX3Jldmlld2VyX2dyb3VwOiBbXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcjogW10sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA6IFtdLFxyXG4gICAgcmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYTogJ1NFUVVFTlRJQUwnLFxyXG4gICAgcHJvZ3JhbV9vdmVyc2VlcjogW10sXHJcbiAgICBwcm9ncmFtX292ZXJzZWVyX2dyb3VwOiBbXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9vdmVyc2VlcjogW10sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA6IFtdLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlcjogW10sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwOiBbXSxcclxuICAgIHByb2dyYW1fYXNzZXNzbWVudHM6IFtdLFxyXG4gICAgZXZpZGVuY2VfcmVxdWlyZWQ6IGZhbHNlLFxyXG4gICAgYWxsb3dfYW55X2ZpbGVfa2V5X2V2aWRlbmNlOiBmYWxzZSxcclxuICAgIGN1c3RvbV9maWVsZHM6IFtdLFxyXG4gICAgcHJvZ3JhbV9zdGF0ZTogMCxcclxuICAgfVxyXG4gICB0aGlzLnJlc2V0QWRkaXRpb25hbE9wdGlvbigpO1xyXG4gICB0aGlzLnByb2dyYW1Gb3JtLnJlc2V0KCk7XHJcbiAgIHRoaXMucHJvZ3JhbUZvcm0ucGF0Y2hWYWx1ZShERUZBVUxUX1ZBTFVFUyk7XHJcbiAgIHRoaXMuZWRpdG9yRGF0YSAgPSB7XHJcbiAgICBwcm9ncmFtT2JqZWN0aXZlOiAnJyxcclxuICAgIHByb2dyYW1EZXNjcmlwdGlvbjogJydcclxuICB9XHJcbiAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICB0aGlzLmlzTmFtZUV4aXN0cyA9IGZhbHNlO1xyXG4gICB0aGlzLmZldGNoUm9sZXMoKTtcclxuICAgdGhpcy5yZWZyZXNoRm9ybS5lbWl0KHRydWUpO1xyXG4gICB0aGlzLmZvcm0ubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdzdGFydCcgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgY2xvc2VTbWlsZXkoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XHJcbiAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh7IGV2dDogJycsIGNvbmZpcm06IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHByb2dyYW0gZGV0YWlscyB3aGVuIHVzZXIgaXMgdHJ5aW5nIHRvIGVkaXQgcHJvZ3JhbVxyXG4gICAqL1xyXG4gIGdldFByb2dyYW1EZXRhaWxzKCkge1xyXG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5nZXRQcm9ncmFtKHRoaXMucHJvZ3JhbUlkKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fbmFtZScsIHJlcz8ubmFtZSk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3R5cGUnLCByZXM/LnByb2dyYW1UeXBlKTtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb2JqZWN0aXZlJywgcmVzPy5wcm9ncmFtX29iamVjdGl2ZT8udGV4dCk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdhbGxfdXNlcl9pbl9yb2xlJywgcmVzPy5hbGxfdXNlcl9pbl9yb2xlKTtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCByZXM/LmRlc2NyaXB0aW9uPy5hdHRhY2htZW50cyk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX29iamVjdGl2ZV9hdHRhY2htZW50cycsIHJlcz8ucHJvZ3JhbV9vYmplY3RpdmU/LmF0dGFjaG1lbnRzKTtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3BlcmZvcm1hbmNlX2NhbGN1bGF0aW9uJywgcmVzPy5jYWxjdWxhdGVfcGFzdF91cGNvbWluZ19ldmVudCk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdyZWN1cnJpbmdfZnJlcXVlbmN5JywgcmVzPy5wcm9ncmFtX2ZyZXF1ZW5jeSk7XHJcbiAgICAgIGlmKHJlcz8ucHJvZ3JhbV9mcmVxdWVuY3kgJiYgdGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUFJPR1JBTV9GUkVRVUVOQ1kgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2xvY2tfc2NvcGVfY2hhbmdlJywgcmVzPy5sb2NrX3Njb3BlKTtcclxuICAgICAgaWYocmVzPy5sb2NrX3Njb3BlKSB7XHJcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlNDT1BFX0NIQU5HRVMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fc3RhdGUnLCByZXM/LnN0YXRlKTtcclxuICAgICAgY29uc3QgcmMgPSByZXMucmNfZGV0YWlscy5tYXAoKGVsZTphbnkpID0+IHtyZXR1cm4gey4uLmVsZSxpdGVtX25hbWUgOiBlbGU/LnJjX25hbWUsaXRlbV9pZDogZWxlPy5yY19pZH19KVxyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncmMnLHJjKTtcclxuICAgICAgaWYocmVzPy5yY19kZXRhaWxzICYmIHJlcz8ucmNfZGV0YWlscz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJDID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdldmlkZW5jZV9yZXF1aXJlZCcsIHJlcz8uZXZpZGVuY2VfdXBsb2FkX2ZsYWcpO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgnYWxsb3dfYW55X2ZpbGVfa2V5X2V2aWRlbmNlJywgcmVzPy5pc19rZXlfZXZpZGVuY2UpO1xyXG4gICAgICBpZihyZXM/LmV2aWRlbmNlX3VwbG9hZF9mbGFnIHx8IHJlcz8uaXNfa2V5X2V2aWRlbmNlKXtcclxuICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uRk9STUFURV9FVklERU5DRSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2Fzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWEnLCByZXMuZGVmYXVsdF9hc3NpZ25lZV90eXBlKTtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Jldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWEnLCByZXMuZGVmYXVsdF9yZXZpZXdlcnNfdHlwZSk7XHJcblxyXG4gICAgICB0aGlzLmVkaXRvckRhdGEucHJvZ3JhbURlc2NyaXB0aW9uID0gcmVzLmRlc2NyaXB0aW9uPy50ZXh0O1xyXG4gICAgICB0aGlzLmVkaXRvckRhdGEucHJvZ3JhbU9iamVjdGl2ZSA9IHJlcy5wcm9ncmFtX29iamVjdGl2ZT8udGV4dDtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2ZyYW1ld29yaycsey4uLnJlcy5mcmFtZXdvcmtfZGV0YWlscywuLi57X2lkOnJlcz8uZnJhbWV3b3JrX2RldGFpbHM/LmZyYW1ld29ya19pZH19KVxyXG4gICAgICBjb25zdCByb2xlID0gcmVzPy5yb2xlcz8ubWFwKChlbGU6YW55KSA9PiAge3JldHVybiB7X2lkOmVsZT8ucm9sZUlkLHJvbGVOYW1lOmVsZT8ucm9sZU5hbWUsIGxpY2Vuc2VUeXBlOmVsZT8ubGljZW5zZVR5cGV9fSlcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcm9sZXMnLCByb2xlKTtcclxuICAgICAgaWYocmVzPy5yb2xlcyAmJiByZXM/LnJvbGVzPy5sZW5ndGggICYmIHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJPTEVTID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZihyZXMuYXNzZXNzbWVudERhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgcmVzLmFzc2Vzc21lbnREYXRhID0gcmVzLmFzc2Vzc21lbnREYXRhLm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiB7Li4uZWxlLCBhc3Nlc3NtZW50SWRzOiBlbGU/LmFzc2Vzc21lbnRzLm1hcCgoYXNzZXNzOmFueSkgPT4geyByZXR1cm4gey4uLmFzc2VzcyxpZDphc3Nlc3M/Ll9pZH19KX19XHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3Nlc3NtZW50cycsIHJlcy5hc3Nlc3NtZW50RGF0YSk7XHJcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFTU0VTU01FTlQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZihyZXMuY3VzdG9tX2ZpZWxkcy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnY3VzdG9tX2ZpZWxkcycsIHJlcy5jdXN0b21fZmllbGRzKTtcclxuICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQ1VTVE9NX0ZJRUxEUyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaXNBcHByb3ZlckRpc2FibGVkID0gcmVzPy5pc0FwcHJvdmVyRGlzYWJsZWQgPz8gZmFsc2U7XHJcbiAgICAgIHRoaXMucG9wdWxhdGVNZW1iZXJzKHJlcyk7XHJcbiAgICAgIHRoaXMucG9wdWxhdGVHcm91cHMocmVzKTtcclxuICAgICAgdGhpcy5mZXRjaFVzZXJzQXNzb2NpYXRlZFdpdGhSb2xlcygpO1xyXG4gICAgICB0aGlzLmZldGNoR3JvdXBzQXNzb2NpYXRlZFdpdGhSb2xlcygpO1xyXG4gICAgICB0aGlzLmZldGNoT3JnYW5pemF0aW9uR3JvdXAoKTtcclxuICAgICAgdGhpcy5mZXRjaE9yZ2FuaXphdGlvblVzZXJzKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG5wb3B1bGF0ZU1lbWJlcnMocmVzOmFueSl7XHJcbiAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gIGNvbnN0IGlkcz0gW1xyXG4gICAgLi4ubmV3IFNldChbXHJcbiAgICAgIC4uLihyZXM/Lm93bmVycyA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/LmFwcHJvdmVycyA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/LmFzc2lnbmVlX2lkcyA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/LmRlZmF1bHRfYXNzaWduZWVfaWRzID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8ucmV2aWV3ZXJzID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uZGVmYXVsdF9yZXZpZXdlcnMgPz8gW10pLFxyXG4gICAgICAuLi4ocmVzPy5vdmVyc2VlcnM/LmNjX2VtYWlsID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8ub3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsID8/IFtdKS5maWx0ZXIoKGVsZTphbnkpID0+IGVsZSksXHJcbiAgICAgIC4uLihyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbCA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsID8/IFtdKS5maWx0ZXIoKGVsZTphbnkpID0+IGVsZSlcclxuICAgICBdKV1cclxuICAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0TWVtZWJlckJ5SWRzKGlkcykuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6KHJlc3BvbnNlOmFueSk9PntcclxuICAgICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYocmVzLm93bmVycyAmJiByZXM/Lm93bmVycz8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICBjb25zdCBvd25lcnMgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8ub3duZXJzLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVycycsIG93bmVycyk7XHJcbiAgICAgICAgICAgICAgaWYodGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5PV05FUlMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXMuYXBwcm92ZXJzICYmIHJlcz8uYXBwcm92ZXJzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFwcHJvdmVycyA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5hcHByb3ZlcnMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hcHByb3ZlcicsIGFwcHJvdmVycyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFQUFJPVkVSID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXM/LmFzc2lnbmVlX2lkcyAmJiByZXM/LmFzc2lnbmVlX2lkcz8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5hc3NpZ25lZV9pZHMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3NpZ25lZScsIGFzc2lnbmVlKTtcclxuICAgICAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gYXNzaWduZWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFTU0lHTkVFUyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYocmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2lkcyAmJiByZXM/LmRlZmF1bHRfYXNzaWduZWVfaWRzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFzc2lnbmVlID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmRlZmF1bHRfYXNzaWduZWVfaWRzLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScsIGFzc2lnbmVlKTtcclxuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTSUdORUVTID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXM/LnJldmlld2VycyAmJiByZXM/LnJldmlld2Vycz8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICBjb25zdCByZXZpZXdlcnMgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8ucmV2aWV3ZXJzLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcmV2aWV3ZXInLCByZXZpZXdlcnMpO1xyXG4gICAgICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlMgPSByZXZpZXdlcnM7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJFVklFV0VSID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHJlcz8uZGVmYXVsdF9yZXZpZXdlcnMgJiYgcmVzPy5kZWZhdWx0X3Jldmlld2Vycz8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICBjb25zdCByZXZpZXdlcnMgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8uZGVmYXVsdF9yZXZpZXdlcnMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyJywgcmV2aWV3ZXJzKTtcclxuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUkVWSUVXRVIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYocmVzPy5vdmVyc2VlcnMgJiYgcmVzPy5vdmVyc2VlcnM/LmNjX2VtYWlsPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2MgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8ub3ZlcnNlZXJzPy5jY19lbWFpbC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3ZlcnNlZXInLCBjYyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTID0gY2M7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9WRVJTRUVSID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZihyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzICYmIChyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbD8ubGVuZ3RoIHx8IHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWw/Lmxlbmd0aCkpe1xyXG4gICAgICAgICAgICAgIGlmKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdENDID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2VlcicsIGRlZmF1bHRDQyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWw/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmYWlsQ0MgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWwuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJywgZmFpbENDKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5PVkVSU0VFUiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICB9KVxyXG4gICAgICAgdGhpcy5jaGVja1Byb2dyYW1PcHRpb25GaWVsZCgpO1xyXG59XHJcblxyXG5cclxucG9wdWxhdGVHcm91cHMocmVzOmFueSl7XHJcbiAgY29uc3QgaWRzPSBbXHJcbiAgICAuLi5uZXcgU2V0KFtcclxuICAgICAgLi4uKHJlcz8ub3duZXJzX2dyb3VwID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uYXNzaWduZWVfZ3JvdXBfaWRzID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHMgPz8gW10pLFxyXG4gICAgIF0pXVxyXG4gICAgICAgdGhpcy5wcm9ncmFtU2VydmljZS5nZXRNZW1iZXJCeUdyb3VwcyhpZHMpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OihyZXNwOmFueSk9PntcclxuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSByZXNwPy5kYXRhO1xyXG4gICAgICAgICAgICBpZihyZXMub3duZXJzX2dyb3VwICYmIHJlcz8ub3duZXJzX2dyb3VwPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IG93bmVycyA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5vd25lcnNfZ3JvdXAuaW5jbHVkZXMoZWxlPy5ncm91cF9pZCkpO1xyXG4gICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnLCBvd25lcnMpO1xyXG4gICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXMuYXNzaWduZWVfZ3JvdXBfaWRzICYmIHJlcz8uYXNzaWduZWVfZ3JvdXBfaWRzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFzc2lnbmVlID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmFzc2lnbmVlX2dyb3VwX2lkcy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXNzaWduZWVfZ3JvdXAnLCBhc3NpZ25lZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUCA9IGFzc2lnbmVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHMgJiYgcmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwX2lkcz8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwX2lkcy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCcsIGFzc2lnbmVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIEFzIG9mIG5vdyBncm91cHMgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHJldmlld2VyIGFuZCBvdmVyc2VlZXIgaWYgdGhpcyBncm91cCBmZWF0dXJlIGdldHMgaW5jb3BlcmF0ZWQgaW5cclxuICAgICAgICAgIC8vZnV0dXJlIG5lZWQgdG8gYWRkIGdyb3VwIGNvbmRpdGlvbiBoZXJlIHRvIHByZXBvcHVsYXRlIHRoZSBkYXRhIHdoaWxlIGVkaXRpbmcuXHJcbiAgICAgICB9KVxyXG59XHJcblxyXG4gIHJlc2V0QWRkaXRpb25hbE9wdGlvbigpIHtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5ST0xFUyA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9XTkVSUyA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFQUFJPVkVSID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUFJPR1JBTV9GUkVRVUVOQ1kgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5TQ09QRV9DSEFOR0VTID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUkMgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5BU1NJR05FRVMgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5SRVZJRVdFUiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9WRVJTRUVSID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTRVNTTUVOVCA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkZPUk1BVEVfRVZJREVOQ0UgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5DVVNUT01fRklFTERTID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjaGVja1Byb2dyYW1PcHRpb25GaWVsZCgpOiBhbnkge1xyXG4gICAgY29uc3QgY29kZSA9IFsnUFJPR1JBTV9GUkVRVUVOQ1knLCAnU0NPUEVfQ0hBTkdFUycsICdSQycsICdBU1NJR05FRVMnLCAnUkVWSUVXRVInLCAnT1ZFUlNFRVInLCAnQVNTRVNTTUVOVCcsICdGT1JNQVRFX0VWSURFTkNFJywgJ0NVU1RPTV9GSUVMRFMnXVxyXG4gICAgbGV0IGlzTW9yZU9wdGlvbiA9IGZhbHNlO1xyXG4gICAgY29kZS5mb3JFYWNoKCAoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYodGhpcy5hZGRpdGlvbmFsT3B0aW9uW2tleV0pe1xyXG4gICAgICAgIGlzTW9yZU9wdGlvbiA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICB0aGlzLmlzUHJvZ3JhbVNjb3BlID0gaXNNb3JlT3B0aW9uO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
1232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcHJvZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1wcm9ncmFtL3dvcmtmbG93LXByb2dyYW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLFdBQVcsRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFPeEMsTUFBTSxPQUFPLHdCQUF3QjtJQTZCbkMsWUFBb0IsRUFBZSxFQUFVLGNBQStCLEVBQVUsV0FBd0IsRUFBUyxZQUF5QjtRQUE1SCxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWlCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQTVCaEosY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUd0QixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFaEIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLG1C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QixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLDZCQUE2QixDQUFDO1lBQ2hGLGdCQUFnQixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDO1lBQ3pELHNCQUFzQixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDO1lBQ3JFLHdCQUF3QixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDO1lBQ3pFLDhCQUE4QixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxDQUFDO1lBQ3JGLDRCQUE0QixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDO1lBQ2pGLHdCQUF3QixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDO1lBQ3pFLDhCQUE4QixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxDQUFDO1lBQ3JGLGdCQUFnQixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDO1lBQ3pELHNCQUFzQixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDO1lBQ3JFLGdCQUFnQixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDO1lBQ3pELHNCQUFzQixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDO1lBQ3JFLHdCQUF3QixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDO1lBQ3pFLDhCQUE4QixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxDQUFDO1lBQ3JGLCtCQUErQixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDO1lBQ3ZGLHFDQUFx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LENBQUM7SUFDckMsQ0FBQzs7O1lBbHVDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsMnZsRUFBZ0Q7O2FBRWpEOzs7WUFiUSxXQUFXO1lBS1gsZUFBZTtZQURmLFdBQVc7WUFFWCxZQUFZOzs7bUJBV2xCLFNBQVMsU0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO3lCQUV0QyxTQUFTLFNBQUMsWUFBWTs0QkFDdEIsTUFBTTs2QkFDTixNQUFNOzRCQUNOLE1BQU07b0NBQ04sTUFBTTtnQ0FDTixNQUFNOzBCQUNOLE1BQU07MENBQ04sTUFBTTs2QkFDTixNQUFNO21CQUlOLEtBQUs7d0JBQ0wsS0FBSzswQkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgY2xvbmVEZWVwLCBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ25nMi1kYXRlLXBpY2tlcic7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvZ3JhbXNTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvcHJvZ3JhbXMuc2VydmljZSc7XHJcbmltcG9ydCB7IFVpS2l0U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3VpLWtpdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ09OU1RBTlRTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtd29ya2Zsb3ctcHJvZ3JhbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtmbG93LXByb2dyYW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3dvcmtmbG93LXByb2dyYW0uY29tcG9uZW50Lmxlc3MnLCAnLi4vZm9ybXMubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd1Byb2dyYW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGNvbnN0YW50cyA9IENPTlNUQU5UUztcclxuICBzaG93Q29uZmlybWF0aW9uOiBhbnk7XHJcbiAgQFZpZXdDaGlsZCgnZm9ybScsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBmb3JtICE6IEVsZW1lbnRSZWY7XHJcbiAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgZGF0ZVBpY2tlciE6IERhdGVQaWNrZXJDb21wb25lbnQ7XHJcbiAgQE91dHB1dCgpIHBpY2tlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHBvcHVsYXRlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZVdvcmtmbG93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzaG93Q29uZmlybWF0aW9uQWxlcnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRpc2Nvbm5lY3RSZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByZWZyZXNoRm9ybSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblJlbW92aW5nUm9sZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgc2Nyb2xsVG9Cb3R0b20hOiBib29sZWFuO1xyXG5cclxuICAvLyBBbGwgSW5wdXQgZmllbGRzXHJcbiAgQElucHV0KCkgbW9kZTogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgcHJvZ3JhbUlkOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBwcm9ncmFtVHlwZTogbnVtYmVyID0gMTtcclxuXHJcbiAgcGFuZWxUaXRsZURlZmF1bHRSZXZpZXdlciA9IFwiU2VsZWN0IERlZmF1bHQgUmV2aWV3ZXIocylcIjtcclxuICBwYW5lbFRpdGxlT3duZXIgPSBcIlNlbGVjdCBPd25lcihzKVwiO1xyXG4gIHBhbmVsVGl0bGVSZXZpZXdlciA9IFwiU2VsZWN0IFJldmlld2VyKHMpXCI7XHJcbiAgcGFuZWxUaXRsZUFzc2lnbmVlID0gXCJTZWxlY3QgQXNzaWduZWUocylcIjtcclxuICBwYW5lbFRpdGxlQXBwcm92ZXIgPSBcIlNlbGVjdCAgQXBwcm92ZXJcIlxyXG4gIGlzQXBwcm92ZXJEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzUHJvZ3JhbVNjb3BlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIHByb2dyYW1TZXJ2aWNlOiBQcm9ncmFtc1NlcnZpY2UsIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLHByaXZhdGUgdWlLaXRTZXJ2aWNlOlVpS2l0U2VydmljZSkgeyB9XHJcbiAgcHVibGljIG5vV2hpdGVzcGFjZVZhbGlkYXRvcihjb250cm9sOiBGb3JtQ29udHJvbCkge1xyXG4gICAgY29uc3QgaXNXaGl0ZXNwYWNlID0gKGNvbnRyb2wudmFsdWUgfHwgJycpLnRyaW0oKS5sZW5ndGggPT09IDA7XHJcbiAgICBjb25zdCBpc1ZhbGlkID0gIWlzV2hpdGVzcGFjZTtcclxuICAgIHJldHVybiBpc1ZhbGlkID8gbnVsbCA6IHsgJ3doaXRlc3BhY2UnOiB0cnVlIH07XHJcbiAgfVxyXG4gIHB1YmxpYyBibGFua0FycmF5VmFsaWRhdG9yKGNvbnRyb2w6IEZvcm1Db250cm9sKSB7XHJcbiAgICBjb25zdCBpc0JsYW5rID0gY29udHJvbC52YWx1ZT8uZmlsdGVyKChlbGU6YW55KT0+IGVsZSk/Lmxlbmd0aCA9PT0gMDtcclxuICAgIGNvbnN0IGlzVmFsaWQgPSAhaXNCbGFuaztcclxuICAgIHJldHVybiBpc1ZhbGlkID8gbnVsbCA6IHsgJ2JsYW5rJzogdHJ1ZSB9O1xyXG4gIH1cclxuIGxvYWRlciA9IGZhbHNlO1xyXG4gc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gYWN0aW9uQnV0dG9ucyA9IFtcclxuICB7IGJ1dHRvblRleHQ6ICdBZGQgTW9yZSBQcm9ncmFtcycsIGNsYXNzOiAnd2hpdGUtYnRuJywgaWQ6ICdhZGRNb3JlJyB9LFxyXG4gIHsgYnV0dG9uVGV4dDogJ1ZpZXcgUHJvZ3JhbScsIGNsYXNzOiAnYmx1ZS1idG4nLCBpZDogJ3ZpZXdQcm9ncmFtJyB9LFxyXG5dO1xyXG5zbWlsZXlNZXNzYWdlID0gYFlvdSdyZSBBbGwgU2V0IWA7XHJcbmNyZWF0ZWRQcm9ncmFtSWQgPSAnJztcclxuICBpc09iamVjdGl2ZVZhbGlkOiBib29sZWFuID0gdHJ1ZTtcclxuICBpc05hbWVFeGlzdHM6IGJvb2xlYW4gPWZhbHNlO1xyXG4gIC8vZm9ybSBib2R5IGZvciBwcm9ncmFtIG1ldGEgZGF0YVxyXG4gIHByb2dyYW1Gb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICBwcm9ncmFtX3R5cGU6IFt0aGlzLnByb2dyYW1UeXBlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4oMCksIFZhbGlkYXRvcnMubWF4KDMpXV0sXHJcbiAgICBwcm9ncmFtX25hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMubm9XaGl0ZXNwYWNlVmFsaWRhdG9yXV0sXHJcbiAgICBwcm9ncmFtX2Rlc2NyaXB0aW9uOiBbJyddLFxyXG4gICAgcHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50czogW1tdXSxcclxuICAgIHByb2dyYW1fb2JqZWN0aXZlOiBbJyddLFxyXG4gICAvLyBwcm9ncmFtX29iamVjdGl2ZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgdGhpcy5ub1doaXRlc3BhY2VWYWxpZGF0b3JdXSxcclxuICAgIHByb2dyYW1fb2JqZWN0aXZlX2F0dGFjaG1lbnRzOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9yb2xlczogW1tdLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCx0aGlzLmJsYW5rQXJyYXlWYWxpZGF0b3JdXSxcclxuICAgIGFsbF91c2VyX2luX3JvbGU6IFtmYWxzZV0sXHJcbiAgICBwcm9ncmFtX293bmVyczogW1tdLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCx0aGlzLmJsYW5rQXJyYXlWYWxpZGF0b3JdXSxcclxuICAgIHByb2dyYW1fb3duZXJzX2dyb3VwIDpbW11dLFxyXG4gICAgcHJvZ3JhbV9hcHByb3ZlcjogW1tdXSxcclxuICAgIHBlcmZvcm1hbmNlX2NhbGN1bGF0aW9uOiBbJ1BBU1RfRVZFTlQnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgcmVjdXJyaW5nX2ZyZXF1ZW5jeTogW3RydWUsW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgIGxvY2tfc2NvcGVfY2hhbmdlOiBbZmFsc2UsW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgIGZyYW1ld29yazogW10sXHJcbiAgICByYzogW1tdXSxcclxuICAgIHByb2dyYW1fYXNzaWduZWU6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2Fzc2lnbmVlX2dyb3VwOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwOiBbW11dLFxyXG4gICAgYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYTogWydBTllPTkUnXSxcclxuICAgIHByb2dyYW1fcmV2aWV3ZXI6IFtbXV0sXHJcbiAgICBwcm9ncmFtX3Jldmlld2VyX2dyb3VwOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwOiBbW11dLFxyXG4gICAgcmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYTogWydTRVFVRU5USUFMJ10sXHJcbiAgICBwcm9ncmFtX292ZXJzZWVyOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9vdmVyc2Vlcl9ncm91cDogW1tdXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9vdmVyc2VlcjogW1tdXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cDogW1tdXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI6IFtbXV0sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwOiBbW11dLFxyXG4gICAgcHJvZ3JhbV9hc3Nlc3NtZW50czogW1tdXSxcclxuICAgIGV2aWRlbmNlX3JlcXVpcmVkOiBbZmFsc2VdLFxyXG4gICAgYWxsb3dfYW55X2ZpbGVfa2V5X2V2aWRlbmNlOiBbZmFsc2VdLFxyXG4gICAgY3VzdG9tX2ZpZWxkczogW1tdXSxcclxuICAgIHByb2dyYW1fc3RhdGU6IDAsXHJcbiAgfSk7XHJcblxyXG4gIC8vZXhjZXB0aW9uYWwgaGFuZGxpbmcgb2YgY3VzdG9tIGZpZWxkc1xyXG5cclxuICAgc2hvd0FkZEN1c3RvbUZpZWxkID0gdHJ1ZTtcclxuICAvL1Byb2dyYW0gb2JqZWN0aXZlIGFuZCBkZXNjcmlwaW9uIGFyZSBleHBsZWN0bHkgZGVjbGFyZWQgYXMgdGhleSBhcmUgdXNpbmcgbWFyeCBlZGl0b3Igd2hpY2ggZG9lcyBub3Qgc3VwcG9ydHMgUmVhY3RpdmUgZm9ybXMgYmluZGluZ1xyXG4gIGVkaXRvckRhdGEgPSB7XHJcbiAgICBwcm9ncmFtT2JqZWN0aXZlOiAnJyxcclxuICAgIHByb2dyYW1EZXNjcmlwdGlvbjogJydcclxuICB9XHJcblxyXG4gIHNlbGVjdGVkQXNzZXNzbWVudCE6IGFueTtcclxuXHJcblxyXG5cclxuICBjdXJyZW50VXNlcigpIHtcclxuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmF1dGhTZXJ2aWNlLnRva2VuSW5mbygpXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBtZW1iZXJfZW1haWw6IHVzZXI/LmVtYWlsLFxyXG4gICAgICBtZW1iZXJfaWQ6IHVzZXI/LmlkLFxyXG4gICAgICBtZW1iZXJfbmFtZTogdXNlcj8ubmFtZSxcclxuICAgICAgdXNlcl9yb2xlOiBcIkxPR0dFRF9JTlwiLFxyXG4gICAgICBfaWQ6IFwiXCJcclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIC8vU2V0cyB0aGUgdmFsdWUgb2YgYSBmb3JtIGNvbnRyb2xcclxuICBzZXRGb3JtRmllbGQoY29udHJvbE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSwgaXNGcm9tRm9ybT86IGJvb2xlYW4pIHtcclxuICAgIGxldCBwYXRjaDogYW55ID0ge307XHJcbiAgICBwYXRjaFtjb250cm9sTmFtZV0gPSB2YWx1ZTtcclxuICAgIHRoaXMucHJvZ3JhbUZvcm0ucGF0Y2hWYWx1ZShwYXRjaCk7XHJcbiAgICB0aGlzLmNvbnRyb2xzW2NvbnRyb2xOYW1lXT8ubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgaWYoaXNGcm9tRm9ybSAmJiBjb250cm9sTmFtZSA9PT0gJ3Byb2dyYW1fb2JqZWN0aXZlJyAmJiAhdmFsdWUucmVwbGFjZSgvJm5ic3A7L2csICcgJykudHJpbSgpKSB0aGlzLmlzT2JqZWN0aXZlVmFsaWQgPSBmYWxzZTtcclxuICAgIGVsc2UgdGhpcy5pc09iamVjdGl2ZVZhbGlkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vUmV0dXJucyB3ZWF0aGVyIHRoZSBmb3JtIGlzIHZhbGlkIG9yIG5vdFxyXG4gIGdldCBmb3JtVmFsaWQoKSB7XHJcbiAgICBpZiAodGhpcy5wcm9ncmFtRm9ybS52YWxpZCAmJiB0aGlzLmVkaXRvckRhdGE/LnByb2dyYW1PYmplY3RpdmU/LnJlcGxhY2UoLyZuYnNwOy9nLCAnICcpPy50cmltKCk/Lmxlbmd0aCApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb250cm9sczogYW55ID0ge1xyXG4gICAgcHJvZ3JhbV9uYW1lOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9uYW1lJyksXHJcbiAgICBwcm9ncmFtX3R5cGU6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fdHlwZScpLFxyXG4gICAgcHJvZ3JhbV9vYmplY3RpdmU6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX29iamVjdGl2ZScpLFxyXG4gICAgcHJvZ3JhbV9yb2xlczogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fcm9sZXMnKSxcclxuICAgIHByb2dyYW1fb3duZXJzOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9vd25lcnMnKSxcclxuICAgIHByb2dyYW1fb3duZXJzX2dyb3VwOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnKSxcclxuICAgIGFsbF91c2VyX2luX3JvbGU6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdhbGxfdXNlcl9pbl9yb2xlJyksXHJcbiAgICBwcm9ncmFtX2FwcHJvdmVyOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9hcHByb3ZlcicpLFxyXG4gICAgZGVzY3JpcHRpb25fYXR0YWNobWVudDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnKSxcclxuICAgIG9iamVjdGl2ZV9hdHRhY2htZW50czogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fb2JqZWN0aXZlX2F0dGFjaG1lbnRzJyksXHJcbiAgICBwZXJmb3JtYW5jZV9jYWxjdWxhdGlvbjp0aGlzLnByb2dyYW1Gb3JtLmdldCgncGVyZm9ybWFuY2VfY2FsY3VsYXRpb24nKSxcclxuICAgIHJlY3VycmluZ19mcmVxdWVuY3k6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdyZWN1cnJpbmdfZnJlcXVlbmN5JyksXHJcbiAgICBsb2NrX3Njb3BlX2NoYW5nZTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ2xvY2tfc2NvcGVfY2hhbmdlJyksXHJcbiAgICByYzogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3JjJyksXHJcbiAgICBldmlkZW5jZV9yZXF1aXJlZDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ2V2aWRlbmNlX3JlcXVpcmVkJyksXHJcbiAgICBmcmFtZXdvcms6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdmcmFtZXdvcmsnKSxcclxuICAgIGFsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ2FsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZScpLFxyXG4gICAgcHJvZ3JhbV9hc3NpZ25lZTp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9hc3NpZ25lZScpLFxyXG4gICAgcHJvZ3JhbV9hc3NpZ25lZV9ncm91cDp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9hc3NpZ25lZV9ncm91cCcpLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWUnKSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cDp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwJyksXHJcbiAgICBhc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdhc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhJyksXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicpLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwOnRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXAnKSxcclxuICAgIHByb2dyYW1fcmV2aWV3ZXI6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fcmV2aWV3ZXInKSxcclxuICAgIHByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fcmV2aWV3ZXJfZ3JvdXAnKSxcclxuICAgIHByb2dyYW1fb3ZlcnNlZXI6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fb3ZlcnNlZXInKSxcclxuICAgIHByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fb3ZlcnNlZXJfZ3JvdXAnKSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcjp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyJyksXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA6dGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cCcpLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcjp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlcicpLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cDp0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cCcpLFxyXG4gICAgcmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYSA6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdyZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhJyksXHJcbiAgICBwcm9ncmFtX2Fzc2Vzc21lbnRzOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9hc3Nlc3NtZW50cycpLFxyXG4gICAgY3VzdG9tX2ZpZWxkczogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ2N1c3RvbV9maWVsZHMnKSxcclxuICAgIGlzQXBwcm92ZXJEaXNhYmxlZDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ2lzQXBwcm92ZXJEaXNhYmxlZCcpLFxyXG4gIH1cclxuXHJcbiAgbGlzdHM6IGFueSA9IHtcclxuICAgIFJPTEVTOiBbXSxcclxuICAgIE9XTkVSUzogW10sXHJcbiAgICBPV05FUlNfR1JPVVBTOltdLFxyXG4gICAgQVBQUk9WRVJTOltdLFxyXG4gICAgUkVWSUVXRVJTOiBbXSxcclxuICAgIFJFVklFV0VSU19HUk9VUDpbXSxcclxuICAgIEFTU0lHTkVFUzogW10sXHJcbiAgICBBU1NJR05FRVNfR1JPVVAgOltdLFxyXG4gICAgREVGQVVMVF9BU1NJR05FRVM6W10sXHJcbiAgICBERUZBVUxUX0FTU0lHTkVFU19HUk9VUDpbXSxcclxuICAgIERFRkFVTFRfUkVWSUVXRVJTOltdLFxyXG4gICAgREVGQVVMVF9SRVZJRVdFUlNfR1JPVVA6W10sXHJcbiAgICBPVkVSU0VFUlM6IFtdLFxyXG4gICAgT1ZFUlNFRVJTX0dST1VQOltdLFxyXG4gICAgREVGQVVMVF9PVkVSU0VFUlM6IFtdLFxyXG4gICAgREVGQVVMVF9PVkVSU0VFUlNfR1JPVVA6W10sXHJcbiAgICBSQzogW10sXHJcbiAgICBOT05fUkVNT1ZBQkxFX09XTkVSUzogW10sXHJcbiAgICBBTExfVVNFUjpbXSxcclxuICAgIEFMTF9HUk9VUDpbXSxcclxuICAgIFNZU1RFTV9ST0xFX0lEUzpbXVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBsaXN0TG9hZGluZ1N0YXRlID0ge1xyXG4gICAgUk9MRVM6ZmFsc2UsXHJcbiAgICBVU0VSUzpmYWxzZSxcclxuICAgIEdST1VQOmZhbHNlLFxyXG4gICAgUkM6ZmFsc2UsXHJcbiAgfVxyXG4gIHNpZGVFbGVtZW50cyA9IFsnUk9MRScsJ1JDJywnT1dORVInLCdBU1NJR05FRScsJ0FQUFJPVkVSJywnREVGQVVMVF9BU1NJR05FRScsJ1JFVklFV0VSJywnREVGQVVMVF9SRVZJRVdFUicsJ0FTU0VTU01FTlQnLCdGUkFNRVdPUksnLCdPVkVSU0VFUicsJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJywnREVGQVVMVF9PVkVSU0VFUicsJ09WRVJTRUVSJ107XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fdHlwZScsIHRoaXMucHJvZ3JhbVR5cGUpO1xyXG4gICAgaWYodGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgdGhpcy5nZXRQcm9ncmFtRGV0YWlscygpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuZmV0Y2hPcmdhbml6YXRpb25Vc2VycygpO1xyXG4gICAgICB0aGlzLmZldGNoT3JnYW5pemF0aW9uR3JvdXAoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZmV0Y2hSb2xlcygpO1xyXG4gICAgdGhpcy5mZXRjaFJDKCk7XHJcblxyXG4gIH1cclxuICBnZXQgdmFsaWQoKSB7XHJcbiAgIHJldHVybiB0aGlzLnByb2dyYW1Gb3JtLnZhbGlkXHJcbiAgfVxyXG5cclxuICBhZGRpdGlvbmFsT3B0aW9uOiBhbnkgPSB7Li4uQ09OU1RBTlRTLmFkZGl0aW9uYWxPcHRpb259O1xyXG4gIGFjdGl2ZUxpc3QgPSAnJyBcclxuICAvKipcclxuICAgKiAjIyMjIERlc2NyaXB0aW9uXHJcbiAgICogUG9wdWxhdGVzIG9wdGlvbmFsIGZpZWxkcyBzdGF0dXMgZm9yIHRoZSBvcHRpb25hbCBmaWVsZHNcclxuICAgKi9cclxuICBwb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCkge1xyXG4gICAgY29uc3QgYWN0aXZhdGVkT3B0aW9ucyA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5hZGRpdGlvbmFsT3B0aW9uKSkge1xyXG4gICAgICBpZiAodGhpcy5hZGRpdGlvbmFsT3B0aW9uW2tleV0gPT09IHRydWUpIHtcclxuICAgICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goa2V5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGFjdGl2YXRlZE9wdGlvbnMpO1xyXG4gIH1cclxuICBhZGRNb3JlSW5mbyhldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb25bZXZlbnQuY29kZV0gPSBldmVudC5jaGVja2VkO1xyXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IHRydWU7XHJcbiAgICB0aGlzLmNoZWNrUHJvZ3JhbU9wdGlvbkZpZWxkKCk7XHJcbiAgfVxyXG5cclxuICAvLyBmdW5jdGlvbiB0byBhdXRvbWF0ZSBmb3JtIHZhbHVlIGNoYW5nZSBoYW5kbmdcclxuICBmb3JtQ2hhbmdlTGlzdG5lcigpIHtcclxuICAgIGNvbnN0IGZpZWxkcyA9IE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpO1xyXG4gICAgZmllbGRzLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuY29udHJvbHNbZWxlXT8udmFsdWVDaGFuZ2VzLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHsgdGhpcy5oYW5kbGVGb3JtRmllbGRDaGFuZ2UoZWxlLCByZXMpIH1cclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBoYW5kbGVGb3JtRmllbGRDaGFuZ2UoY29udHJvbDogc3RyaW5nLCBwYXlsb2FkPzogYW55KSB7XHJcbiAgICBzd2l0Y2ggKGNvbnRyb2wpIHtcclxuICAgICAgY2FzZSAncHJvZ3JhbV9yb2xlcyc6IHtcclxuICAgICAgICB0aGlzLmZldGNoVXNlcnNBc3NvY2lhdGVkV2l0aFJvbGVzKClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGVMaXN0KGV2dDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmFjdGl2ZUxpc3QgPSBldnQ7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcclxuICB9XHJcblxyXG4gIGxpc3RBY3Rpb24oZXZ0OiBhbnksIHR5cGU6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coXCJldnQgPT09PlwiLCBldnQsIHR5cGUpXHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnUk9MRSc6IHtcclxuICAgICAgICB0aGlzLnNob3dDb25maXJtYXRpb24gPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IHN5c3RlbVJvbGVzID0gZXZ0Py5maWx0ZXIoKGVsZTogYW55KSA9PiAoZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2tleSBhZG1pbicgfHwgZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2FkbWluJykpO1xyXG4gICAgICAgIGNvbnN0IHBhdGNoVmFsID0gdGhpcy51bmlxdWVCeVByb3AoWy4uLnN5c3RlbVJvbGVzLCAuLi5ldnRdLCAnX2lkJyk7XHJcbiAgICAgICAgaWYgKCFpc0VxdWFsKHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcy52YWx1ZS5zb3J0KCksIHBhdGNoVmFsLnNvcnQoKSkpIHtcclxuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3JvbGVzJywgcGF0Y2hWYWwpO1xyXG4gICAgICAgICAgICB0aGlzLmZldGNoVXNlcnNBc3NvY2lhdGVkV2l0aFJvbGVzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hHcm91cHNBc3NvY2lhdGVkV2l0aFJvbGVzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ1JDJzoge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwicm9sZVwiLGV2dClcclxuICAgICAgICBjb25zdCByYyA9IHRoaXMuc2V0TGlzdCh0aGlzLmxpc3RzLlJDLCBldnQsICdpdGVtX2lkJylcclxuICAgICAgICBjb25zb2xlLmxvZyhcInNldHJjXCIscmMpXHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3JjJywgdGhpcy51bmlxdWVCeVByb3AocmMsICdpdGVtX2lkJykpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ09XTkVSJyA6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVycycsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzX2dyb3VwJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdBUFBST1ZFUic6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2FwcHJvdmVyJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdBU1NJR05FRSc6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2lnbmVlJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3NpZ25lZV9ncm91cCcsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0QXNzaWduZWUoZXZ0KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX0FTU0lHTkVFJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCcsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnUkVWSUVXRVInOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yZXZpZXdlcicsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcmV2aWV3ZXJfZ3JvdXAnLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJykpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFJldmlld2VyKGV2dCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9SRVZJRVdFUic6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXInLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJykpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXAnLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJykpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ09WRVJTRUVSJzp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3ZlcnNlZXInLCB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJykpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX292ZXJzZWVyX2dyb3VwJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRPdmVyc2VlcihldnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfT1ZFUlNFRVInOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUic6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJywgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cCcsIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnQVNTRVNTTUVOVCc6e1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2Vzc21lbnRzJywgZXZ0KTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdGUkFNRVdPUksnOntcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnZnJhbWV3b3JrJywgZXZ0KTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKGV2dDogYW55LCB0eXBlOiBhbnkpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdST0xFJzoge1xyXG4gICAgICAgIGxldCBtc2cgPSAnJztcclxuICAgICAgICBtc2cgPSAnSWYgeW91IGNoYW5nZSB0aGUgcm9sZXMsIGFueSB1bnNhdmVkIGNoYW5nZXMgd291bGQgYmUgbG9zdC4nXHJcbiAgICAgICAgY29uc3Qgcm9sZXMgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5faWQgIT09IGV2dD8uX2lkKTtcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb24ocm9sZXMsJ1JPTEUnKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yb2xlcycsIHJvbGVzKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdSQyc6IHtcclxuICAgICAgICBjb25zdCByY3MgPSB0aGlzLmNvbnRyb2xzPy5yYz8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8uaXRlbV9pZCAhPT0gZXZ0Py5pdGVtX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncmMnLCByY3MpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ09XTkVSJzp7XHJcbiAgICAgICAgY29uc3Qgb3duZXJzID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVycycsIG93bmVycyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnT1dORVJfR1JPVVAnOntcclxuICAgICAgICBjb25zdCBvd25lcnNfZ3JvdXAgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVyc19ncm91cCcsIG93bmVyc19ncm91cCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnQVBQUk9WRVInOntcclxuICAgICAgICBjb25zdCBhcHByb3ZlciA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fYXBwcm92ZXI/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2FwcHJvdmVyJywgYXBwcm92ZXIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0FTU0lHTkVFJzp7XHJcbiAgICAgICAgY29uc3QgYXNzaWduZWUgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3NpZ25lZScsIGFzc2lnbmVlKTtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRBc3NpZ25lZU9uUmVtb3ZlKGV2dCx0eXBlKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0FTU0lHTkVFX0dST1VQJzp7XHJcbiAgICAgICAgY29uc3QgYXNzaWduZWVfZ3JvdXAgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXNzaWduZWVfZ3JvdXAnLCBhc3NpZ25lZV9ncm91cCk7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0QXNzaWduZWVPblJlbW92ZShldnQsdHlwZSlcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX0FTU0lHTkVFJzp7XHJcbiAgICAgICAgY29uc3QgYXNzaWduZWUgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWUnLCBhc3NpZ25lZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9BU1NJR05FRV9HUk9VUCc6e1xyXG4gICAgICAgIGNvbnN0IGFzc2lnbmVlX2dyb3VwID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCcsIGFzc2lnbmVlX2dyb3VwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdSRVZJRVdFUic6e1xyXG4gICAgICAgIGNvbnN0IHJldmlld2VyID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcmV2aWV3ZXInLCByZXZpZXdlcik7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0UmV2aWV3ZXJPblJlbW92ZShldnQsdHlwZSlcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdSRVZJRVdFUl9HUk9VUCc6e1xyXG4gICAgICAgIGNvbnN0IHJldmlld2VyX2dyb3VwID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3Jldmlld2VyX2dyb3VwJywgcmV2aWV3ZXJfZ3JvdXApO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFJldmlld2VyT25SZW1vdmUoZXZ0LHR5cGUpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnREVGQVVMVF9SRVZJRVdFUic6e1xyXG4gICAgICAgIGNvbnN0IHJldmlld2VyID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyJywgcmV2aWV3ZXIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfUkVWSUVXRVJfR1JPVVAnOntcclxuICAgICAgICBjb25zdCByZXZpZXdlcl9ncm91cCA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXAnLCByZXZpZXdlcl9ncm91cCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnT1ZFUlNFRVInOntcclxuICAgICAgICBjb25zdCBvdmVyc2VlciA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX292ZXJzZWVyJywgb3ZlcnNlZXIpO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdE92ZXJzZWVyT25SZW1vdmUoZXZ0LHR5cGUpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnT1ZFUlNFRVJfR1JPVVAnOntcclxuICAgICAgICBjb25zdCBvdmVyc2Vlcl9ncm91cCA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vdmVyc2Vlcl9ncm91cCcsIG92ZXJzZWVyX2dyb3VwKTtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRPdmVyc2Vlck9uUmVtb3ZlKGV2dCx0eXBlKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfT1ZFUlNFRVInOntcclxuICAgICAgICBjb25zdCBvdmVyc2VlciA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2VlcicsIG92ZXJzZWVyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX09WRVJTRUVSX0dST1VQJzp7XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJfZ3JvdXAgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwJywgb3ZlcnNlZXJfZ3JvdXApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJzp7XHJcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlcicsIG92ZXJzZWVyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUl9HUk9VUCc6e1xyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVyX2dyb3VwID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwJywgb3ZlcnNlZXJfZ3JvdXApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0FTU0VTU01FTlQnIDp7XHJcblxyXG4gICAgICAgIGxldCBjdXJyZW50ID0gY2xvbmVEZWVwKHRoaXMuY29udHJvbHMucHJvZ3JhbV9hc3Nlc3NtZW50cz8udmFsdWUpO1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gY3VycmVudC5maW5kSW5kZXgoKGVsZTogYW55KSA9PiBlbGUuY2F0ZWdvcnlfaWQgPT0gZXZ0LmNhdGVnb3J5X2lkKTtcclxuICAgICAgICBjdXJyZW50W2luZGV4XS5hc3Nlc3NtZW50SWRzID0gY3VycmVudFtpbmRleF0uYXNzZXNzbWVudElkcy5maWx0ZXIoKGFzc2Vzc21lbnQ6IGFueSkgPT4gYXNzZXNzbWVudC5pZCAhPT0gZXZ0LmlkKTtcclxuICAgICAgICBpZihjdXJyZW50W2luZGV4XS5hc3Nlc3NtZW50SWRzLmxlbmd0aCAgPT09IDApICBjdXJyZW50LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5saXN0QWN0aW9uKGN1cnJlbnQsICdBU1NFU1NNRU5UJyk7XHJcbiAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdGUkFNRVdPUksnIDp7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2ZyYW1ld29yaycsIG51bGwpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlUm9sZShldnQ6IGFueSl7XHJcbiAgICB0aGlzLm9uUmVtb3ZpbmdSb2xlLmVtaXQoZXZ0KTtcclxuICB9XHJcblxyXG5cclxuICAvL2JlbG93IDQgZnVuY3Rpb25zIGNhbiBiZSBlYXNpbHR5IGNvbWJpbmVkIGludG8gb25lIGFzIHRoZXkgZm9sbG93IHNhbWUga2luZCBvZiBwYXR0ZXJuIG9yIGNhbiBiZSBvZmZsb2FkZWQgdG8gYSBleHRlcm5hbCBzZXJ2aWNlXHJcbiAgc2V0RGVmYXVsdEFzc2lnbmVlKGV2dDphbnkpe1xyXG4gICAgaWYoZXZ0Py51c2Vycz8ubGVuZ3RoIHx8IGV2dD8uZ3JvdXBzPy5sZW5ndGgpe1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpO1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQID0gdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpO1xyXG5cclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gdGhpcy5saXN0cy5BTExfVVNFUjtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUCA9IHRoaXMubGlzdHMuQUxMX0dST1VQO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYXNzaWduZWVNYXAgPSAgZXZ0Py51c2Vycz8ubWFwKChlbGU6YW55KSA9PiBlbGU/Lm1lbWJlcl9pZCk7XHJcbiAgICBsZXQgY3VycmVudERlZmF1bHRBc3NpZ25lZSA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZTtcclxuICAgIGN1cnJlbnREZWZhdWx0QXNzaWduZWUgPSBjdXJyZW50RGVmYXVsdEFzc2lnbmVlLmZpbHRlcigoZWxlOmFueSk9PiBhc3NpZ25lZU1hcC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScsIGN1cnJlbnREZWZhdWx0QXNzaWduZWUpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdEFzc2lnbmVlT25SZW1vdmUoZXZ0OmFueSx0eXBlOmFueSl7XHJcbiAgIHN3aXRjaCh0eXBlKXtcclxuICAgICBjYXNlICdBU1NJR05FRScgOntcclxuICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgIGNvbnN0IGRlZmF1bHRBc3NpZ25lZSA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZTtcclxuICAgICAgIGNvbnN0IGFzc2lnbmVlID0gZGVmYXVsdEFzc2lnbmVlLmZpbHRlcigoZWxlOmFueSkgPT4gIGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZClcclxuICAgICAgIGlmKCFhc3NpZ25lZT8ubGVuZ3RoKXtcclxuICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFUyA9IHRoaXMubGlzdHMuQUxMX1VTRVI7XHJcbiAgICAgICB9XHJcbiAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlJywgYXNzaWduZWUpO1xyXG5cclxuXHJcbiAgICAgIGJyZWFrO1xyXG4gICAgIH1cclxuICAgICBjYXNlICdBU1NJR05FRV9HUk9VUCc6e1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQID0gdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUC5maWx0ZXIoKGVsZTphbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpO1xyXG4gICAgICBjb25zdCBkZWZhdWx0QXNzaWduZWVHcm91cCA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZTtcclxuICAgICAgY29uc3QgYXNzaWduZWVHcm91cCA9IGRlZmF1bHRBc3NpZ25lZUdyb3VwLmZpbHRlcigoZWxlOmFueSkgPT4gIGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpXHJcbiAgICAgIGlmKCFhc3NpZ25lZUdyb3VwPy5sZW5ndGgpe1xyXG4gICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAgPSB0aGlzLmxpc3RzLkFMTF9HUk9VUDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwJywgYXNzaWduZWVHcm91cCk7XHJcbiAgICAgfVxyXG4gICB9XHJcbiAgfVxyXG4gIHNldERlZmF1bHRSZXZpZXdlcihldnQ6YW55KXtcclxuICAgIGlmKGV2dD8udXNlcnM/Lmxlbmd0aCB8fCBldnQ/Lmdyb3Vwcz8ubGVuZ3RoKXtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUyA9IHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKTtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSU19HUk9VUCA9IHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlMgPSB0aGlzLmxpc3RzLkFMTF9VU0VSO1xyXG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTX0dST1VQID0gdGhpcy5saXN0cy5BTExfR1JPVVA7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXZpZXdlck1hcCA9ICBldnQ/LnVzZXJzPy5tYXAoKGVsZTphbnkpID0+IGVsZT8ubWVtYmVyX2lkKTsgICBcclxuICAgIGxldCBjdXJyZW50RGVmYXVsdFJldmlld2VyID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlOyAgIFxyXG4gICAgY3VycmVudERlZmF1bHRSZXZpZXdlciA9IGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIuZmlsdGVyKChlbGU6YW55KT0+IHJldmlld2VyTWFwLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyJywgY3VycmVudERlZmF1bHRSZXZpZXdlcik7XHJcbiAgfVxyXG4gIHNldERlZmF1bHRPdmVyc2VlcihldnQ6YW55KXtcclxuICAgIGlmKGV2dD8udXNlcnM/Lmxlbmd0aCB8fCBldnQ/Lmdyb3Vwcz8ubGVuZ3RoKXtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUyA9IHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKTtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSU19HUk9VUCA9IHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKTtcclxuXHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUyA9IHRoaXMubGlzdHMuQUxMX1VTRVI7XHJcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAgPSB0aGlzLmxpc3RzLkFMTF9HUk9VUDtcclxuICAgIH1cclxuICAgIGNvbnN0IG92ZXJzZWVyTWFwID0gIGV2dD8udXNlcnM/Lm1hcCgoZWxlOmFueSkgPT4gZWxlPy5tZW1iZXJfaWQpO1xyXG4gICAgbGV0IGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU7XHJcbiAgICBsZXQgY3VycmVudERlZmF1bHRGYWlsUmV2aWV3ZXIgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlO1xyXG4gICAgY3VycmVudERlZmF1bHRSZXZpZXdlciA9IGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIuZmlsdGVyKChlbGU6YW55KT0+IG92ZXJzZWVyTWFwLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICBjdXJyZW50RGVmYXVsdEZhaWxSZXZpZXdlciA9IGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIuZmlsdGVyKChlbGU6YW55KT0+IG92ZXJzZWVyTWFwLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyJywgY3VycmVudERlZmF1bHRSZXZpZXdlcik7XHJcbiAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlcicsIGN1cnJlbnREZWZhdWx0RmFpbFJldmlld2VyKTtcclxuICB9XHJcbiAgc2V0RGVmYXVsdFJldmlld2VyT25SZW1vdmUoZXZ0OmFueSx0eXBlOmFueSl7XHJcbiAgIHN3aXRjaCh0eXBlKXtcclxuICAgICBjYXNlICdSRVZJRVdFUicgOntcclxuICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlMgPSB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkKTtcclxuICAgICAgIGNvbnN0IGRlZmF1bHRSZXZpZXdlciA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZTtcclxuICAgICAgIGNvbnN0IHJldmlld2VyID0gZGVmYXVsdFJldmlld2VyLmZpbHRlcigoZWxlOmFueSkgPT4gIGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZClcclxuICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXInLCByZXZpZXdlcik7XHJcblxyXG4gICAgICBicmVhaztcclxuICAgICB9XHJcbiAgICAgY2FzZSAnUkVWSUVXRVJfR1JPVVAnOntcclxuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSU19HUk9VUCA9IHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlNfR1JPVVAuZmlsdGVyKChlbGU6YW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKTtcclxuICAgICAgY29uc3QgZGVmYXVsdFJldmlld2VyR3JvdXAgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU7XHJcbiAgICAgIGNvbnN0IHJldmlld2VyR3JvdXAgPSBkZWZhdWx0UmV2aWV3ZXJHcm91cC5maWx0ZXIoKGVsZTphbnkpID0+ICBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKVxyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwJywgcmV2aWV3ZXJHcm91cCk7XHJcbiAgICAgfVxyXG4gICB9XHJcbiAgfVxyXG4gIHNldERlZmF1bHRPdmVyc2Vlck9uUmVtb3ZlKGV2dDphbnksdHlwZTphbnkpe1xyXG4gICAgc3dpdGNoKHR5cGUpe1xyXG4gICAgICBjYXNlICdPVkVSU0VFUicgOntcclxuICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTID0gdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUy5maWx0ZXIoKGVsZTphbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdE92ZXJzZWVyID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IG92ZXJzZWVyID0gZGVmYXVsdE92ZXJzZWVyLmZpbHRlcigoZWxlOmFueSkgPT4gIGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZClcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyJywgb3ZlcnNlZXIpO1xyXG5cclxuICAgICAgICBjb25zdCBkZWZhdWx0RmFpbE92ZXJzZWVyID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZTtcclxuICAgICAgICBjb25zdCBvdmVyc2VlckZhaWwgPSBkZWZhdWx0RmFpbE92ZXJzZWVyLmZpbHRlcigoZWxlOmFueSkgPT4gIGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZClcclxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlcicsIG92ZXJzZWVyRmFpbCk7XHJcblxyXG4gICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnT1ZFUlNFRVJfR1JPVVAnOntcclxuICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAgPSB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZCk7XHJcbiAgICAgICBjb25zdCBkZWZhdWx0T3ZlcnNlZXJHcm91cCA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZTtcclxuICAgICAgIGNvbnN0IG92ZXJzZWVyR3JvdXAgPSBkZWZhdWx0T3ZlcnNlZXJHcm91cC5maWx0ZXIoKGVsZTphbnkpID0+ICBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkKVxyXG4gICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cCcsIG92ZXJzZWVyR3JvdXApO1xyXG5cclxuICAgICAgIGNvbnN0IGRlZmF1bHRPdmVyc2VlckZhaWxlZEdyb3VwID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlO1xyXG4gICAgICAgY29uc3Qgb3ZlcnNlZXJGYWlsZWRHcm91cCA9IGRlZmF1bHRPdmVyc2VlckZhaWxlZEdyb3VwLmZpbHRlcigoZWxlOmFueSkgPT4gIGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWQpXHJcbiAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cCcsIG92ZXJzZWVyRmFpbGVkR3JvdXApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgIH1cclxuXHJcblxyXG5cclxuICBmaWVsZERlc2VsZWN0b3IodHlwZTogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZUxpc3QgPSAnJztcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICAgIHRoaXMubWFya2FzVG91Y2hlZFNlbGVjdG9yKHR5cGUpXHJcbiAgfVxyXG4gIG1hcmthc1RvdWNoZWRTZWxlY3RvcihmaWVsZE5hbWU6YW55KXtcclxuICAgIGNvbnN0IHR5cGVGaWVsZDphbnkgPSB7XHJcbiAgICAgIFJPTEU6J3Byb2dyYW1fcm9sZXMnLFxyXG4gICAgICBBUFBST1ZFUjoncHJvZ3JhbV9hcHByb3ZlcicsXHJcbiAgICAgIE9XTkVSOidwcm9ncmFtX293bmVycycsXHJcbiAgICAgIE9XTkVSX0dST1VQOidwcm9ncmFtX293bmVyc19ncm91cCdcclxuICAgICB9XHJcbiAgICAgdGhpcy5jb250cm9sc1t0eXBlRmllbGRbZmllbGROYW1lXV0/Lm1hcmtBc1RvdWNoZWQoKTtcclxuICB9XHJcblxyXG4gIGZldGNoUm9sZXMoKSB7XHJcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmdldFJvbGVzKCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5saXN0cy5ST0xFUyA9IHJlcztcclxuICAgICAgICBjb25zdCBkZWZhdWx0U3lzdGVtVmFsID0gdGhpcy5saXN0cz8uUk9MRVM/LmRhdGE/LmZpbHRlcigoZWxlOiBhbnkpID0+IChlbGU/LnJvbGVOYW1lPy50b0xvd2VyQ2FzZSgpID09PSAna2V5IGFkbWluJyB8fCBlbGU/LnJvbGVOYW1lPy50b0xvd2VyQ2FzZSgpID09PSAnYWRtaW4nKSk/Lm1hcCgoZWxlOmFueSkgPT4gZWxlPy5faWQpO1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRWYWwgPSB0aGlzLmxpc3RzPy5ST0xFUz8uZGF0YT8uZmlsdGVyKChlbGU6IGFueSkgPT4gKGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdrZXkgYWRtaW4nIHx8IGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdhZG1pbicpKTtcclxuICAgICAgdGhpcy5saXN0cy5TWVNURU1fUk9MRV9JRFMgPSBkZWZhdWx0U3lzdGVtVmFsO1xyXG4gICAgICAgIGlmKHRoaXMubW9kZSAhPT0gJ0VESVQnKXtcclxuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3JvbGVzJywgZGVmYXVsdFZhbCk7XHJcbiAgICAgICAgICB0aGlzLmZldGNoVXNlcnNBc3NvY2lhdGVkV2l0aFJvbGVzKCk7XHJcbiAgICAgICAgICB0aGlzLmZldGNoR3JvdXBzQXNzb2NpYXRlZFdpdGhSb2xlcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHsgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgLy9mZXRjaCB0aGUgbGlzdCBvZiByZXNwb25zaWJpbGl0aWVzIGNlbnRlclxyXG4gIGZldGNoUkMoKSB7XHJcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmdldFJlc3BvbnNpYmlsaXR5Q2VudGVyTGlzdCgpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMubGlzdHMuUkMgPSByZXM7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHsgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuICBmZXRjaFVzZXJzQXNzb2NpYXRlZFdpdGhSb2xlcygpIHtcclxuICAgIGNvbnN0IGxvZ2dlZEluVXNlciA9IHRoaXMuY3VycmVudFVzZXIoKTtcclxuICAgIGNvbnN0IHJvbGVJZHMgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXM/LnZhbHVlPy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Ll9pZCk7XHJcbiAgIC8vIGlmIChmZXRjaEFsbCkge1xyXG4gICAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQWxsUm9sZVVzZXJzKHJvbGVJZHMpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpc1VzZXJGaW5kID0gcmVzPy5kYXRhPy5zb21lKCAocmVzOiBhbnkpID0+IHJlcz8ubWVtYmVyX2lkID09PSBsb2dnZWRJblVzZXI/Lm1lbWJlcl9pZCk7XHJcbiAgICAgICAgICBpZighaXNVc2VyRmluZCkge1xyXG4gICAgICAgICAgICByZXM/LmRhdGE/LnB1c2gobG9nZ2VkSW5Vc2VyKTtcclxuICAgICAgICAgICAgcmVzLnRvdGFsX2l0ZW1zID0gcmVzPy50b3RhbF9pdGVtcyArIDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmxpc3RzLk9XTkVSUyA9IHJlcztcclxuICAgICAgICAgIHRoaXMubGlzdHMuQVBQUk9WRVJTID0gcmVzO1xyXG4gICAgICAgICAgaWYoIXJlcz8uZGF0YT8ubWFwKChlbGU6YW55KSA9PiBlbGU/Lm1lbWJlcl9pZCk/LmluY2x1ZGVzKHRoaXMuY29udHJvbHMucHJvZ3JhbV9hcHByb3Zlcj8udmFsdWVbMF0/Lm1lbWJlcl9pZCkpe1xyXG4gICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hcHByb3ZlcicsIFtdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzPy5hbGxfdXNlcl9pbl9yb2xlPy52YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCByZXM/LmRhdGEpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0T3duZXJzKHJlcz8uZGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7IH1cclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGZldGNoR3JvdXBzQXNzb2NpYXRlZFdpdGhSb2xlcygpe1xyXG4gICAgY29uc3Qgcm9sZUlkcyA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8uX2lkKTtcclxuICAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQWxsUm9sZUdyb3Vwcyhyb2xlSWRzKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6KHJlczphbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMubGlzdHMuT1dORVJTX0dST1VQUyA9IHJlcztcclxuICAgICAgICAgIGNvbnN0IHJvbGVJZHM6IEFycmF5PHN0cmluZz4gID0gdGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZS5tYXAoKGVsZTogYW55KSA9PiBlbGUuX2lkKVxyXG4gICAgICAgICBjb25zdCBncm91cERldGFpbHMgPSAgdGhpcy5jb250cm9scy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWUuZmlsdGVyKChyb2xlSWQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZihyb2xlSWQucm9sZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGlzU2FtZVJvbGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICByb2xlSWQucm9sZXMuZm9yRWFjaCgocm9sZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZihyb2xlSWRzLmluY2x1ZGVzKHJvbGUucm9sZUlkKSkge1xyXG4gICAgICAgICAgICAgICAgICBpc1NhbWVSb2xlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgIGlmKGlzU2FtZVJvbGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByb2xlSWQ7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnLCBncm91cERldGFpbHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgIH0pXHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0T3duZXJzKHVzZXJMaXN0OiBhbnkpIHtcclxuICAgIGNvbnN0IGxvZ2dlZEludXNlciA9IHRoaXMuY3VycmVudFVzZXIoKTtcclxuICAgIGNvbnN0IGRlZmF1bHRPd25lciA9IHVzZXJMaXN0LmZpbHRlcigoZWxlOiBhbnkpID0+IFsnQURNSU4nLCAnS0VZX0FETUlOJ10uaW5jbHVkZXMoZWxlPy51c2VyX3JvbGUpICYmIGVsZT8ubWVtYmVyX2lkICE9IGxvZ2dlZEludXNlcj8ubWVtYmVyX2lkKTtcclxuICAgIHRoaXMubGlzdHMuTk9OX1JFTU9WQUJMRV9PV05FUlMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChbLi4uW2xvZ2dlZEludXNlcl0sIC4uLmRlZmF1bHRPd25lcl0sICdtZW1iZXJfaWQnKTtcclxuICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVycycsIHRoaXMubGlzdHMuTk9OX1JFTU9WQUJMRV9PV05FUlMpO1xyXG4gIH1cclxuXHJcblxyXG4gIGZldGNoT3JnYW5pemF0aW9uVXNlcnMoZGF0YT86IGFueSl7XHJcbiAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdGUuVVNFUlMgPSB0cnVlO1xyXG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5mZXRjaEFsbE9yZ1VzZXIoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OihyZXM6YW55KT0+e1xyXG4gICAgICAgIHRoaXMubGlzdHMuQUxMX1VTRVIgPSByZXM7XHJcbiAgICAgICAgdGhpcy5saXN0cy5BU1NJR05FRVMgPSByZXM7XHJcbiAgICAgICAgdGhpcy5saXN0cy5SRVZJRVdFUlMgPSByZXM7XHJcbiAgICAgICAgdGhpcy5saXN0cy5PVkVSU0VFUlMgPSByZXM7XHJcbiAgICAgICAgaWYodGhpcy5tb2RlICE9PSdFRElUJyl7XHJcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUyA9IHJlcztcclxuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMgPSByZXM7XHJcbiAgICAgICAgfWVsc2UgaWYodGhpcy5tb2RlID09PSAnRURJVCcpe1xyXG4gICAgICAgICAgIGlmKCF0aGlzLmNvbnRyb2xzLnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gcmVzO1xyXG4gICAgICAgICAgIH1cclxuICAgICAgICAgICBpZighdGhpcy5jb250cm9scy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUyA9IHJlcztcclxuICAgICAgICAgICB9XHJcbiAgICAgICAgICAgaWYoIXRoaXMuY29udHJvbHMucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMgPSByZXM7XHJcbiAgICAgICAgICAgfSAgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubGlzdExvYWRpbmdTdGF0ZS5VU0VSUyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjooKT0+e3RoaXMubGlzdExvYWRpbmdTdGF0ZS5VU0VSUyA9IGZhbHNlO31cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcbiAgZmV0Y2hPcmdhbml6YXRpb25Hcm91cChkYXRhPzogYW55KXtcclxuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZmV0Y2hDb21wbGlhbmNlR3JvdXBzKCkuc3Vic2NyaWJlKHtcclxuICAgICAgIG5leHQ6KHJlczphbnkpPT57XHJcbiAgICAgICAgIHRoaXMubGlzdHMuQUxMX0dST1VQID0gcmVzO1xyXG5cclxuICAgICAgICAgdGhpcy5saXN0cy5BU1NJR05FRVNfR1JPVVAgPSByZXM7XHJcbiAgICAgICAgIHRoaXMubGlzdHMuUkVWSUVXRVJTX0dST1VQID0gcmVzO1xyXG5cclxuICAgICAgICAgdGhpcy5saXN0cy5PVkVSU0VFUlNfR1JPVVAgPSByZXM7XHJcblxyXG4gICAgICAgICBpZih0aGlzLm1vZGUgIT09J0VESVQnKXtcclxuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTX0dST1VQID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSU19HUk9VUCA9IHJlcztcclxuICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICBlcnJvcjooZXJyOmFueSk9Pnt9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZmlsZVVwbG9hZFRyYWNrZXIgPSB7XHJcbiAgICBkZXNjcmlwdGlvbjogW10sXHJcbiAgICBvYmplY3RpdmU6IFtdXHJcbiAgfVxyXG5cclxuICBzZWxlY3RGaWxlKHR5cGU6IGFueSwgZmlsZXM6IGFueSkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gZmlsZXMubGVuZ3RoIC0gMTsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IG5hbWUgPSBmaWxlc1tpXS5maWxlLm5hbWUgPz8gJyc7XHJcbiAgICAgIHRoaXMudXBsb2FkRmlsZXModHlwZSwgZmlsZXNbaV0uZmlsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGxvYWRGaWxlcyh0eXBlOiAnREVTQ1JJUFRJT04nIHwgJ09CSkVDVElWRScsIGZpbGU6IGFueSkge1xyXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xyXG4gICAgY29uc3QgZGVzdGluYXRpb25TdHJpbmcgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCkudG9TdHJpbmcoKTtcclxuICAgIGNvbnN0IGR1bW15RmlsZSA9IHtcclxuICAgICAgZmlsZV91cmxfcGF0aDogYCR7ZmlsZT8ubmFtZX1gLFxyXG4gICAgICBuYW1lOiBgJHtmaWxlPy5uYW1lfWAsXHJcbiAgICAgIHVwbG9hZGluZzogdHJ1ZSxcclxuICAgICAgb3JnX2ZpbGU6IGAke2ZpbGU/Lm5hbWV9YFxyXG4gICAgfVxyXG4gICAgaWYgKHR5cGUgPT09ICdERVNDUklQVElPTicpIHtcclxuICAgICAgbGV0IGRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWUgPz8gW107XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgWy4uLmRlc2NyaXB0aW9uLCAuLi5bZHVtbXlGaWxlXV0pXHJcbiAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UudXBsb2FkRmlsZXMoZm9ybURhdGEsIGRlc3RpbmF0aW9uU3RyaW5nKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZSA/PyBbXTtcclxuICAgICAgICAgIGxldCBkZXNjcmlwdGlvbkluZGV4ID0gZGVzY3JpcHRpb24uZmluZEluZGV4KChlbGU6IGFueSkgPT4gZWxlPy5vcmdfZmlsZSA9PT0gcmVzPy5vcmdfZmlsZSk7XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbltkZXNjcmlwdGlvbkluZGV4XSA9IHJlc1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCB0aGlzLnVuaXF1ZUJ5UHJvcChkZXNjcmlwdGlvbiwgJ29yZ19maWxlJykpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlICE9PSBmaWxlPy5uYW1lKTtcclxuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgdGhpcy51bmlxdWVCeVByb3AoZGVzY3JpcHRpb24sICdvcmdfZmlsZScpKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ09CSkVDVElWRScpIHtcclxuICAgICAgbGV0IGRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWUgPz8gW107XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgWy4uLmRlc2NyaXB0aW9uLCAuLi5bZHVtbXlGaWxlXV0pXHJcbiAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UudXBsb2FkRmlsZXMoZm9ybURhdGEsIGRlc3RpbmF0aW9uU3RyaW5nKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZSA/PyBbXTtcclxuICAgICAgICAgIGxldCBkZXNjcmlwdGlvbkluZGV4ID0gZGVzY3JpcHRpb24uZmluZEluZGV4KChlbGU6IGFueSkgPT4gZWxlPy5vcmdfZmlsZSA9PT0gcmVzPy5vcmdfZmlsZSk7XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbltkZXNjcmlwdGlvbkluZGV4XSA9IHJlc1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCB0aGlzLnVuaXF1ZUJ5UHJvcChkZXNjcmlwdGlvbiwgJ29yZ19maWxlJykpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlICE9PSBmaWxlPy5uYW1lKTtcclxuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgdGhpcy51bmlxdWVCeVByb3AoZGVzY3JpcHRpb24sICdvcmdfZmlsZScpKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBkZWxldGVBdHRhY2htZW50KHR5cGU6ICdERVNDUklQVElPTicgfCAnT0JKRUNUSVZFJywgZmlsZTogYW55KSB7XHJcbiAgICBpZiAodHlwZSA9PT0gJ0RFU0NSSVBUSU9OJykge1xyXG4gICAgICBsZXQgZGVzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZSA/PyBbXTtcclxuICAgICAgaWYgKGRlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlICE9PSBmaWxlPy5vcmdfZmlsZSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCBkZXNjcmlwdGlvbilcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnT0JKRUNUSVZFJykge1xyXG4gICAgICBsZXQgb2JqZWN0aXZlID0gdGhpcy5jb250cm9scz8ub2JqZWN0aXZlX2F0dGFjaG1lbnRzPy52YWx1ZSA/PyBbXTtcclxuICAgICAgaWYgKG9iamVjdGl2ZSkge1xyXG4gICAgICAgIG9iamVjdGl2ZSA9IG9iamVjdGl2ZS5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlICE9PSBmaWxlPy5vcmdfZmlsZSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCBvYmplY3RpdmUpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBzZWxlY3RBbGxSb2xlT3duZXIoZXZ0OiBhbnkpIHtcclxuICAgIC8vbmVlZCB0byBmZXRjaCBhbGwgdGhlIHVzZXJzIGZvciBhbGwgdGhlIHNlbGVjdGVkIHJvbGVzXHJcbiAgICBjb25zdCBsb2dnZWRJblVzZXIgPSB0aGlzLmN1cnJlbnRVc2VyKCk7XHJcbiAgICBsZXQgcm9sZUlkID0gW107XHJcbiAgICBpZihldnQ/LnRhcmdldD8uY2hlY2tlZCl7XHJcbiAgICAgICByb2xlSWQgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXM/LnZhbHVlPy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Ll9pZCk7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5sb2coXCJ0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXM/LnZhbHVlID09PlwiLCB0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXM/LnZhbHVlKTtcclxuICAgICAgcm9sZUlkID0gdGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8ubWFwKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmKFsna2V5IGFkbWluJywgJ2FkbWluJ10uaW5jbHVkZXMoZWxlLnJvbGVOYW1lLnRvTG93ZXJDYXNlKCkpICkge1xyXG4gICAgICAgICAgcmV0dXJuIGVsZT8uX2lkXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKFwidGhpcy5jb250cm9scy5wcm9ncmFtX293bmVycz8udmFsdWUgPT0+XCIscm9sZUlkLCAgdGhpcy5jb250cm9scy5wcm9ncmFtX293bmVycz8udmFsdWUpXHJcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQWxsUm9sZVVzZXJzKHJvbGVJZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMudW5pcXVlQnlQcm9wKFsuLi5bbG9nZ2VkSW5Vc2VyXSwgLi4ucmVzPy5kYXRhXSwgJ21lbWJlcl9pZCcpXHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzJywgdXNlcik7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHsgfVxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqICMjIyMgRGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIFJldHVybnMgdGhlIHVuaXF1ZSBhcnJheSBvZiBvYmplY3QgYmFzZWQgb24gdW5pcXVlIGtleVxyXG4gICAqIEBwYXJhbSBhcnJheVxyXG4gICAqIEBwYXJhbSBrZXlcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIHVuaXF1ZUJ5UHJvcChhcnJheTogYW55LCBrZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oXHJcbiAgICAgIGFycmF5XHJcbiAgICAgICAgLnJlZHVjZShcclxuICAgICAgICAgIChhY2M6IGFueSwgaXRlbTogYW55KSA9PiAoXHJcbiAgICAgICAgICAgIGl0ZW0gJiYgaXRlbVtrZXldICYmIGFjYy5zZXQoaXRlbVtrZXldLCBpdGVtKSxcclxuICAgICAgICAgICAgYWNjXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgbmV3IE1hcCgpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC52YWx1ZXMoKVxyXG4gICAgKTtcclxuICB9XHJcbiAgc2V0TGlzdChsaXN0OiBhbnlbXSwgaWRzOiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRhdGE6IGFueSA9IFtdO1xyXG4gICAgaWRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBpbmRleCA9IGxpc3QuZmluZEluZGV4KChsaXN0RWxlbWVudDogYW55KSA9PiBsaXN0RWxlbWVudFtrZXldID09IGVsZW1lbnQpO1xyXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgZGF0YS5wdXNoKGxpc3RbaW5kZXhdKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgIHNhdmVQcm9ncmFtKCl7XHJcbiAgICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgIGxldCBwYXlsb2FkID0gIHRoaXMucHJvZ3JhbVNlcnZpY2UuYnVpbGRQYXlsb2FkKHRoaXMucHJvZ3JhbUZvcm0sdGhpcyk7XHJcbiAgICAgIGlmKHBheWxvYWQgJiYgdGhpcy5tb2RlID09PSAnQ1JFQVRFJyl7XHJcbiAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2Uuc2F2ZVByb2dyYW0ocGF5bG9hZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDoocmVzOmFueSk9PntcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVkUHJvZ3JhbUlkID0gcmVzLl9pZFxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjooZXJyOmFueSk9PntcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcclxuICAgICAgICBpZihlcnIuZXJyb3IubWVzc2FnZSA9PSBcIkNhdGVnb3J5IGFscmVhZHkgZXhpc3QuXCIpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGhpcy5pc05hbWVFeGlzdHMgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICB9XHJcbiAgIGlmKHBheWxvYWQgJiYgdGhpcy5tb2RlID09PSAnRURJVCcpe1xyXG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS51cGRhdGVQcm9ncmFtKHBheWxvYWQsIHRoaXMucHJvZ3JhbUlkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OihyZXM6YW55KT0+e1xyXG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNyZWF0ZWRQcm9ncmFtSWQgPSByZXMuX2lkO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjooZXJyOmFueSk9PntcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcclxuICAgICAgICBpZihlcnIuZXJyb3IubWVzc2FnZSA9PSBcIkNhdGVnb3J5IGFscmVhZHkgZXhpc3QuXCIpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGhpcy5pc05hbWVFeGlzdHMgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuIH1cclxuICB9XHJcblxyXG4gIGFjdGlvbihldmVudDogc3RyaW5nKSB7XHJcbiAgICBjb25zb2xlLmxvZyhldmVudClcclxuICAgIHN3aXRjaCAoZXZlbnQpIHtcclxuICAgICAgY2FzZSAnYWRkTW9yZSc6XHJcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAndmlld1Byb2dyYW0nOlxyXG4gICAgICAgdGhpcy52aWV3UHJvZ3JhbXMoKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZpZXdQcm9ncmFtcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSk7XHJcbiAgICBsZXQgdXJsOiBzdHJpbmc7XHJcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcclxuICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB1cmwgPSAnaHR0cHM6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0LnN0YXJ0c1dpdGgoJ2xvY2FsaG9zdCcpKSB7XHJcbiAgICAgIHVybCArPSAnL3Byb2dyYW0td29ya3Jvb20/aWQ9JyArIHRoaXMuY3JlYXRlZFByb2dyYW1JZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHVybCArPSAnL3Byb2dyYW0vcHJvZ3JhbS13b3Jrcm9vbT9pZD0nICsgdGhpcy5jcmVhdGVkUHJvZ3JhbUlkO1xyXG4gICAgfVxyXG5cclxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xyXG4gICAgY29uc29sZS5sb2coXCJ0aGlzLmNyZWF0ZWRQcm9ncmFtSWQgPT0+XCIsIHRoaXMuY3JlYXRlZFByb2dyYW1JZClcclxuXHJcbiAgfVxyXG4gIHJlc2V0Rm9ybSgpe1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgIGNvbnN0ICBERUZBVUxUX1ZBTFVFUyA9IHtcclxuICAgIHByb2dyYW1fdHlwZToxLFxyXG4gICAgcHJvZ3JhbV9uYW1lOicnLFxyXG4gICAgcHJvZ3JhbV9kZXNjcmlwdGlvbjonJyxcclxuICAgIHByb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHM6W10sXHJcbiAgICBwcm9ncmFtX29iamVjdGl2ZTonJyxcclxuICAgIHByb2dyYW1fb2JqZWN0aXZlX2F0dGFjaG1lbnRzOltdLFxyXG4gICAgcHJvZ3JhbV9yb2xlczpbXSxcclxuICAgIGFsbF91c2VyX2luX3JvbGU6ZmFsc2UsXHJcbiAgICBwcm9ncmFtX293bmVyczpbXSxcclxuICAgIHByb2dyYW1fb3duZXJzX2dyb3VwOltdLFxyXG4gICAgcHJvZ3JhbV9hcHByb3ZlcjpbXSxcclxuICAgIHBlcmZvcm1hbmNlX2NhbGN1bGF0aW9uOiBcIlBBU1RfRVZFTlRcIixcclxuICAgIHJlY3VycmluZ19mcmVxdWVuY3k6ZmFsc2UsXHJcbiAgICBsb2NrX3Njb3BlX2NoYW5nZTpmYWxzZSxcclxuICAgIGZyYW1ld29yazpbXSxcclxuICAgIHJjOltdLFxyXG4gICAgcHJvZ3JhbV9hc3NpZ25lZTogW10sXHJcbiAgICBwcm9ncmFtX2Fzc2lnbmVlX2dyb3VwOiBbXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZTogW10sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA6IFtdLFxyXG4gICAgYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYTogJ0FOWU9ORScsXHJcbiAgICBwcm9ncmFtX3Jldmlld2VyOiBbXSxcclxuICAgIHByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA6IFtdLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyOiBbXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cDogW10sXHJcbiAgICByZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhOiAnU0VRVUVOVElBTCcsXHJcbiAgICBwcm9ncmFtX292ZXJzZWVyOiBbXSxcclxuICAgIHByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA6IFtdLFxyXG4gICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyOiBbXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cDogW10sXHJcbiAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyOiBbXSxcclxuICAgIHByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA6IFtdLFxyXG4gICAgcHJvZ3JhbV9hc3Nlc3NtZW50czogW10sXHJcbiAgICBldmlkZW5jZV9yZXF1aXJlZDogZmFsc2UsXHJcbiAgICBhbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2U6IGZhbHNlLFxyXG4gICAgY3VzdG9tX2ZpZWxkczogW10sXHJcbiAgICBwcm9ncmFtX3N0YXRlOiAwLFxyXG4gICB9XHJcbiAgIHRoaXMucmVzZXRBZGRpdGlvbmFsT3B0aW9uKCk7XHJcbiAgIHRoaXMucHJvZ3JhbUZvcm0ucmVzZXQoKTtcclxuICAgdGhpcy5wcm9ncmFtRm9ybS5wYXRjaFZhbHVlKERFRkFVTFRfVkFMVUVTKTtcclxuICAgdGhpcy5lZGl0b3JEYXRhICA9IHtcclxuICAgIHByb2dyYW1PYmplY3RpdmU6ICcnLFxyXG4gICAgcHJvZ3JhbURlc2NyaXB0aW9uOiAnJ1xyXG4gIH1cclxuICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gIHRoaXMuaXNOYW1lRXhpc3RzID0gZmFsc2U7XHJcbiAgIHRoaXMuZmV0Y2hSb2xlcygpO1xyXG4gICB0aGlzLnJlZnJlc2hGb3JtLmVtaXQodHJ1ZSk7XHJcbiAgIHRoaXMuZm9ybS5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ3N0YXJ0JyB9KTtcclxuICB9XHJcblxyXG5cclxuICBjbG9zZVNtaWxleShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNob3dTbWlsZXkgPSBmYWxzZTtcclxuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcclxuICAgIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KHsgZXZ0OiAnJywgY29uZmlybTogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgcHJvZ3JhbSBkZXRhaWxzIHdoZW4gdXNlciBpcyB0cnlpbmcgdG8gZWRpdCBwcm9ncmFtXHJcbiAgICovXHJcbiAgZ2V0UHJvZ3JhbURldGFpbHMoKSB7XHJcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmdldFByb2dyYW0odGhpcy5wcm9ncmFtSWQpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9uYW1lJywgcmVzPy5uYW1lKTtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fdHlwZScsIHJlcz8ucHJvZ3JhbVR5cGUpO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vYmplY3RpdmUnLCByZXM/LnByb2dyYW1fb2JqZWN0aXZlPy50ZXh0KTtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2FsbF91c2VyX2luX3JvbGUnLCByZXM/LmFsbF91c2VyX2luX3JvbGUpO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIHJlcz8uZGVzY3JpcHRpb24/LmF0dGFjaG1lbnRzKTtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb2JqZWN0aXZlX2F0dGFjaG1lbnRzJywgcmVzPy5wcm9ncmFtX29iamVjdGl2ZT8uYXR0YWNobWVudHMpO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncGVyZm9ybWFuY2VfY2FsY3VsYXRpb24nLCByZXM/LmNhbGN1bGF0ZV9wYXN0X3VwY29taW5nX2V2ZW50KTtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3JlY3VycmluZ19mcmVxdWVuY3knLCByZXM/LnByb2dyYW1fZnJlcXVlbmN5KTtcclxuICAgICAgaWYocmVzPy5wcm9ncmFtX2ZyZXF1ZW5jeSAmJiB0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5QUk9HUkFNX0ZSRVFVRU5DWSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgnbG9ja19zY29wZV9jaGFuZ2UnLCByZXM/LmxvY2tfc2NvcGUpO1xyXG4gICAgICBpZihyZXM/LmxvY2tfc2NvcGUpIHtcclxuICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uU0NPUEVfQ0hBTkdFUyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9zdGF0ZScsIHJlcz8uc3RhdGUpO1xyXG4gICAgICBjb25zdCByYyA9IHJlcy5yY19kZXRhaWxzLm1hcCgoZWxlOmFueSkgPT4ge3JldHVybiB7Li4uZWxlLGl0ZW1fbmFtZSA6IGVsZT8ucmNfbmFtZSxpdGVtX2lkOiBlbGU/LnJjX2lkfX0pXHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdyYycscmMpO1xyXG4gICAgICBpZihyZXM/LnJjX2RldGFpbHMgJiYgcmVzPy5yY19kZXRhaWxzPy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUkMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2V2aWRlbmNlX3JlcXVpcmVkJywgcmVzPy5ldmlkZW5jZV91cGxvYWRfZmxhZyk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdhbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2UnLCByZXM/LmlzX2tleV9ldmlkZW5jZSk7XHJcbiAgICAgIGlmKHJlcz8uZXZpZGVuY2VfdXBsb2FkX2ZsYWcgfHwgcmVzPy5pc19rZXlfZXZpZGVuY2Upe1xyXG4gICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5GT1JNQVRFX0VWSURFTkNFID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgnYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYScsIHJlcy5kZWZhdWx0X2Fzc2lnbmVlX3R5cGUpO1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYScsIHJlcy5kZWZhdWx0X3Jldmlld2Vyc190eXBlKTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdG9yRGF0YS5wcm9ncmFtRGVzY3JpcHRpb24gPSByZXMuZGVzY3JpcHRpb24/LnRleHQ7XHJcbiAgICAgIHRoaXMuZWRpdG9yRGF0YS5wcm9ncmFtT2JqZWN0aXZlID0gcmVzLnByb2dyYW1fb2JqZWN0aXZlPy50ZXh0O1xyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgnZnJhbWV3b3JrJyx7Li4ucmVzLmZyYW1ld29ya19kZXRhaWxzLC4uLntfaWQ6cmVzPy5mcmFtZXdvcmtfZGV0YWlscz8uZnJhbWV3b3JrX2lkfX0pXHJcbiAgICAgIGNvbnN0IHJvbGUgPSByZXM/LnJvbGVzPy5tYXAoKGVsZTphbnkpID0+ICB7cmV0dXJuIHtfaWQ6ZWxlPy5yb2xlSWQscm9sZU5hbWU6ZWxlPy5yb2xlTmFtZSwgbGljZW5zZVR5cGU6ZWxlPy5saWNlbnNlVHlwZX19KVxyXG4gICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yb2xlcycsIHJvbGUpO1xyXG4gICAgICBpZihyZXM/LnJvbGVzICYmIHJlcz8ucm9sZXM/Lmxlbmd0aCAgJiYgdGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUk9MRVMgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKHJlcy5hc3Nlc3NtZW50RGF0YS5sZW5ndGgpIHtcclxuICAgICAgICByZXMuYXNzZXNzbWVudERhdGEgPSByZXMuYXNzZXNzbWVudERhdGEubWFwKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHsuLi5lbGUsIGFzc2Vzc21lbnRJZHM6IGVsZT8uYXNzZXNzbWVudHMubWFwKChhc3Nlc3M6YW55KSA9PiB7IHJldHVybiB7Li4uYXNzZXNzLGlkOmFzc2Vzcz8uX2lkfX0pfX1cclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2Vzc21lbnRzJywgcmVzLmFzc2Vzc21lbnREYXRhKTtcclxuICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTRVNTTUVOVCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKHJlcy5jdXN0b21fZmllbGRzLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdjdXN0b21fZmllbGRzJywgcmVzLmN1c3RvbV9maWVsZHMpO1xyXG4gICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5DVVNUT01fRklFTERTID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pc0FwcHJvdmVyRGlzYWJsZWQgPSByZXM/LmlzQXBwcm92ZXJEaXNhYmxlZCA/PyBmYWxzZTtcclxuICAgICAgdGhpcy5wb3B1bGF0ZU1lbWJlcnMocmVzKTtcclxuICAgICAgdGhpcy5wb3B1bGF0ZUdyb3VwcyhyZXMpO1xyXG4gICAgICB0aGlzLmZldGNoVXNlcnNBc3NvY2lhdGVkV2l0aFJvbGVzKCk7XHJcbiAgICAgIHRoaXMuZmV0Y2hHcm91cHNBc3NvY2lhdGVkV2l0aFJvbGVzKCk7XHJcbiAgICAgIHRoaXMuZmV0Y2hPcmdhbml6YXRpb25Hcm91cCgpO1xyXG4gICAgICB0aGlzLmZldGNoT3JnYW5pemF0aW9uVXNlcnMoKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcbnBvcHVsYXRlTWVtYmVycyhyZXM6YW55KXtcclxuICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgY29uc3QgaWRzPSBbXHJcbiAgICAuLi5uZXcgU2V0KFtcclxuICAgICAgLi4uKHJlcz8ub3duZXJzID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uYXBwcm92ZXJzID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uYXNzaWduZWVfaWRzID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9pZHMgPz8gW10pLFxyXG4gICAgICAuLi4ocmVzPy5yZXZpZXdlcnMgPz8gW10pLFxyXG4gICAgICAuLi4ocmVzPy5kZWZhdWx0X3Jldmlld2VycyA/PyBbXSksXHJcbiAgICAgIC4uLihyZXM/Lm92ZXJzZWVycz8uY2NfZW1haWwgPz8gW10pLFxyXG4gICAgICAuLi4ocmVzPy5vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWwgPz8gW10pLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlKSxcclxuICAgICAgLi4uKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsID8/IFtdKSxcclxuICAgICAgLi4uKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWwgPz8gW10pLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlKVxyXG4gICAgIF0pXVxyXG4gICAgICAgdGhpcy5wcm9ncmFtU2VydmljZS5nZXRNZW1lYmVyQnlJZHMoaWRzKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDoocmVzcG9uc2U6YW55KT0+e1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZihyZXMub3duZXJzICYmIHJlcz8ub3duZXJzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IG93bmVycyA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5vd25lcnMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzJywgb3duZXJzKTtcclxuICAgICAgICAgICAgICBpZih0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9XTkVSUyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHJlcy5hcHByb3ZlcnMgJiYgcmVzPy5hcHByb3ZlcnM/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgY29uc3QgYXBwcm92ZXJzID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmFwcHJvdmVycy5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2FwcHJvdmVyJywgYXBwcm92ZXJzKTtcclxuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVBQUk9WRVIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHJlcz8uYXNzaWduZWVfaWRzICYmIHJlcz8uYXNzaWduZWVfaWRzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFzc2lnbmVlID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmFzc2lnbmVlX2lkcy5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2lnbmVlJywgYXNzaWduZWUpO1xyXG4gICAgICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSBhc3NpZ25lZTtcclxuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTSUdORUVTID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXM/LmRlZmF1bHRfYXNzaWduZWVfaWRzICYmIHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9pZHM/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgY29uc3QgYXNzaWduZWUgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9pZHMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlJywgYXNzaWduZWUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5BU1NJR05FRVMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHJlcz8ucmV2aWV3ZXJzICYmIHJlcz8ucmV2aWV3ZXJzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IHJldmlld2VycyA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5yZXZpZXdlcnMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yZXZpZXdlcicsIHJldmlld2Vycyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUyA9IHJldmlld2VycztcclxuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUkVWSUVXRVIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYocmVzPy5kZWZhdWx0X3Jldmlld2VycyAmJiByZXM/LmRlZmF1bHRfcmV2aWV3ZXJzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IHJldmlld2VycyA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5kZWZhdWx0X3Jldmlld2Vycy5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXInLCByZXZpZXdlcnMpO1xyXG4gICAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5SRVZJRVdFUiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihyZXM/Lm92ZXJzZWVycyAmJiByZXM/Lm92ZXJzZWVycz8uY2NfZW1haWw/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjYyA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5vdmVyc2VlcnM/LmNjX2VtYWlsLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vdmVyc2VlcicsIGNjKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMgPSBjYztcclxuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1ZFUlNFRVIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnMgJiYgKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsPy5sZW5ndGggfHwgcmVzPy5kZWZhdWx0X292ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbD8ubGVuZ3RoKSl7XHJcbiAgICAgICAgICAgICAgaWYocmVzPy5kZWZhdWx0X292ZXJzZWVycz8uY2NfZW1haWw/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0Q0MgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyJywgZGVmYXVsdENDKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYocmVzPy5kZWZhdWx0X292ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbD8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZhaWxDQyA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOmFueSkgPT4gcmVzPy5kZWZhdWx0X292ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZCkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXInLCBmYWlsQ0MpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9WRVJTRUVSID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgIH0pXHJcbiAgICAgICB0aGlzLmNoZWNrUHJvZ3JhbU9wdGlvbkZpZWxkKCk7XHJcbn1cclxuXHJcblxyXG5wb3B1bGF0ZUdyb3VwcyhyZXM6YW55KXtcclxuICBjb25zdCBpZHM9IFtcclxuICAgIC4uLm5ldyBTZXQoW1xyXG4gICAgICAuLi4ocmVzPy5vd25lcnNfZ3JvdXAgPz8gW10pLFxyXG4gICAgICAuLi4ocmVzPy5hc3NpZ25lZV9ncm91cF9pZHMgPz8gW10pLFxyXG4gICAgICAuLi4ocmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwX2lkcyA/PyBbXSksXHJcbiAgICAgXSldXHJcbiAgICAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmdldE1lbWJlckJ5R3JvdXBzKGlkcykuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6KHJlc3A6YW55KT0+e1xyXG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHJlc3A/LmRhdGE7XHJcbiAgICAgICAgICAgIGlmKHJlcy5vd25lcnNfZ3JvdXAgJiYgcmVzPy5vd25lcnNfZ3JvdXA/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgY29uc3Qgb3duZXJzID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/Lm93bmVyc19ncm91cC5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKSk7XHJcbiAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVyc19ncm91cCcsIG93bmVycyk7XHJcbiAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHJlcy5hc3NpZ25lZV9ncm91cF9pZHMgJiYgcmVzPy5hc3NpZ25lZV9ncm91cF9pZHM/Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgY29uc3QgYXNzaWduZWUgPSByZXNwb25zZS5maWx0ZXIoKGVsZTphbnkpID0+IHJlcz8uYXNzaWduZWVfZ3JvdXBfaWRzLmluY2x1ZGVzKGVsZT8uZ3JvdXBfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3NpZ25lZV9ncm91cCcsIGFzc2lnbmVlKTtcclxuICAgICAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQID0gYXNzaWduZWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYocmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwX2lkcyAmJiByZXM/LmRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFzc2lnbmVlID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6YW55KSA9PiByZXM/LmRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzLmluY2x1ZGVzKGVsZT8uZ3JvdXBfaWQpKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwJywgYXNzaWduZWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gQXMgb2Ygbm93IGdyb3VwcyBoYXMgYmVlbiByZW1vdmVkIGZyb20gcmV2aWV3ZXIgYW5kIG92ZXJzZWVlciBpZiB0aGlzIGdyb3VwIGZlYXR1cmUgZ2V0cyBpbmNvcGVyYXRlZCBpblxyXG4gICAgICAgICAgLy9mdXR1cmUgbmVlZCB0byBhZGQgZ3JvdXAgY29uZGl0aW9uIGhlcmUgdG8gcHJlcG9wdWxhdGUgdGhlIGRhdGEgd2hpbGUgZWRpdGluZy5cclxuICAgICAgIH0pXHJcbn1cclxuXHJcbiAgcmVzZXRBZGRpdGlvbmFsT3B0aW9uKCkge1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJPTEVTID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1dORVJTID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVBQUk9WRVIgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5QUk9HUkFNX0ZSRVFVRU5DWSA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlNDT1BFX0NIQU5HRVMgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5SQyA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFTU0lHTkVFUyA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJFVklFV0VSID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1ZFUlNFRVIgPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5BU1NFU1NNRU5UID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uRk9STUFURV9FVklERU5DRSA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkNVU1RPTV9GSUVMRFMgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNoZWNrUHJvZ3JhbU9wdGlvbkZpZWxkKCk6IGFueSB7XHJcbiAgICBjb25zdCBjb2RlID0gWydQUk9HUkFNX0ZSRVFVRU5DWScsICdTQ09QRV9DSEFOR0VTJywgJ1JDJywgJ0FTU0lHTkVFUycsICdSRVZJRVdFUicsICdPVkVSU0VFUicsICdBU1NFU1NNRU5UJywgJ0ZPUk1BVEVfRVZJREVOQ0UnLCAnQ1VTVE9NX0ZJRUxEUyddXHJcbiAgICBsZXQgaXNNb3JlT3B0aW9uID0gZmFsc2U7XHJcbiAgICBjb2RlLmZvckVhY2goIChrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICBpZih0aGlzLmFkZGl0aW9uYWxPcHRpb25ba2V5XSl7XHJcbiAgICAgICAgaXNNb3JlT3B0aW9uID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHRoaXMuaXNQcm9ncmFtU2NvcGUgPSBpc01vcmVPcHRpb247XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|