@eqproject/eqp-dynamic-module 2.10.37 → 2.10.38

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.
@@ -285,6 +285,8 @@ export class DbgetterComponent {
285
285
  selectedElement.Selected = true;
286
286
  selectedElement.Field = keyused;
287
287
  selectedElement.Key = valueToBeSet;
288
+ selectedElement.KeySV = key;
289
+ selectedElement.KeyUsedSV = keyused;
288
290
  selectedElement.Value = valueToBeSet;
289
291
  this.selectedElements.push(selectedElement);
290
292
  var correspondingCol = document.getElementById("col-" + keyused + "-id-" + row['ID']);
@@ -313,7 +315,22 @@ export class DbgetterComponent {
313
315
  GlobalService.debugLog("renderSelected", this.selectedElements);
314
316
  if (this.selectedElements.length > 0) {
315
317
  this.selectedElements.forEach((selectedElement) => {
316
- document.getElementById("col-" + selectedElement.Field + "-id-" + selectedElement.ID).classList.add("row-selected");
318
+ var correspondingCol = document.getElementById("col-" + selectedElement.Field + "-id-" + selectedElement.ID);
319
+ if (correspondingCol != null) {
320
+ correspondingCol.classList.add("row-selected");
321
+ }
322
+ else {
323
+ correspondingCol = document.getElementById("col-" + selectedElement.KeySV + "-id-" + selectedElement.ID);
324
+ if (correspondingCol != null) {
325
+ correspondingCol.classList.add("row-selected");
326
+ }
327
+ else {
328
+ correspondingCol = document.getElementById("col-" + selectedElement.Key + "-id-" + selectedElement.ID);
329
+ if (correspondingCol != null) {
330
+ correspondingCol.classList.add("row-selected");
331
+ }
332
+ }
333
+ }
317
334
  });
318
335
  }
319
336
  }
@@ -382,4 +399,4 @@ export var QueryEditorModeEnum;
382
399
  QueryEditorModeEnum[QueryEditorModeEnum["COMPOSER"] = 2] = "COMPOSER";
383
400
  QueryEditorModeEnum[QueryEditorModeEnum["RESULT"] = 3] = "RESULT";
384
401
  })(QueryEditorModeEnum || (QueryEditorModeEnum = {}));
385
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGJnZXR0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2RiZ2V0dGVyL2RiZ2V0dGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9kYmdldHRlci9kYmdldHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3ZFLE9BQU8sRUFBaUMsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJL0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7O0FBT2pFLE1BQU0sT0FBTyxpQkFBaUI7SUF1QzVCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFyQ2pDLG1CQUFjLEdBQStCLElBQUksQ0FBQztRQUlsRCxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyx5QkFBb0IsR0FBK0IsSUFBSSxDQUFDLENBQUMsbUNBQW1DO1FBQzVGLFNBQUksR0FBUSxJQUFJLENBQUMsQ0FBQyx3Q0FBd0M7UUFFekQsUUFBRyxHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBQzNELGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDM0QsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRWhFLFNBQUksR0FBa0IsSUFBSSxDQUFDO1FBQzNCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFHeEIsY0FBUyxHQUFZLEtBQUssQ0FBQztR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O2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUksR0FBRztzQkFBWixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTs7QUErWlQsTUFBTSxPQUFPLGdCQUFnQjtDQU81QjtBQUVELDZCQUE2QjtBQUM3QixNQUFNLENBQU4sSUFBWSxtQkFJWDtBQUpELFdBQVksbUJBQW1CO0lBQzdCLDZFQUFrQixDQUFBO0lBQ2xCLHFFQUFjLENBQUE7SUFDZCxpRUFBWSxDQUFBO0FBQ2QsQ0FBQyxFQUpXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFJOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBEeW5hbWljTG9hZGVyRGlyZWN0aXZlRGF0YSwgZXZlbnRPdXQgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2R5bmFtaWMtbG9hZGVyL2R5bmFtaWMtbG9hZGVyLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJhc2VGaWVsZCwgRGF0YUdldHRlclR5cGVFbnVtLCBGaWVsZFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Jhc2VGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IFJlY29yZCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yZWNvcmQubW9kZWwnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBEeW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9keW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9nbG9iYWwuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RiZ2V0dGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGJnZXR0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RiZ2V0dGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIERiZ2V0dGVyQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KCkgY29uZmlndXJhdGlvbnM6IER5bmFtaWNNb2R1bGVDb21waWxlQ29uZmlnID0gbnVsbDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtO1xyXG4gIEBJbnB1dCgpIGZpZWxkOiBCYXNlRmllbGQ7XHJcbiAgQElucHV0KCkgcmVjb3JkOiBSZWNvcmQ7XHJcbiAgQElucHV0KCkgaW5Db25maWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBEaXJlY3RseU9wZW5UYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIFF1ZXJ5RWRpdG9yQ29tcG9uZW50OiBEeW5hbWljTG9hZGVyRGlyZWN0aXZlRGF0YSA9IG51bGw7IC8vIEwnaW50ZXJvIGNvbXBvbmVudGUgcXVlcnkgRWRpdG9yXHJcbiAgQElucHV0KCkgZGF0YTogYW55ID0gbnVsbDsgLy8gTG8gZmFjY2lhbW8gZnVuemlvbmFyZSB0aXBvIEVRUC1UQUJMRVxyXG5cclxuICBAT3V0cHV0KCkgb3V0OiBFdmVudEVtaXR0ZXI8ZXZlbnRPdXQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxldmVudE91dD4oKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRWYWx1ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZG9SZWxvYWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7ICBcclxuXHJcbiAga2V5czogQXJyYXk8c3RyaW5nPiA9IG51bGw7XHJcbiAgbG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmFsdWU6IGFueTtcclxuXHJcbiAgc2hvd1RhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGhhdmVRdWVzdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBoYXZlUmVsYXRpb25zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcmVsb2FkOiBib29sZWFuID0gdHJ1ZTtcclxuICBtdWx0aXBsZVZhbHVlc1RvQ2hvb3NlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGludGVydmFsOiBhbnk7XHJcblxyXG4gIHJlbGF0aW9uczogQXJyYXk8e2ZpZWxkOiBzdHJpbmcsIGxvYWRlZDogYm9vbGVhbiwgYWN0dWFsdmFsdWU6IGFueX0+ID0gbmV3IEFycmF5PHtmaWVsZDogc3RyaW5nLCBsb2FkZWQ6IGJvb2xlYW4sIGFjdHVhbHZhbHVlOiBhbnl9PigpO1xyXG4gIHJlbGF0aW9uc0xvYWRlZDogYm9vbGVhbjtcclxuICBiYWNrdXBRdWVzdGlvbkZpZWxkczogQXJyYXk8c3RyaW5nPiA9IG51bGw7XHJcblxyXG4gIGlzTXVsdGlzZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtdWx0aXNlbGVjdFBoYXNlOiBudW1iZXIgPSAxO1xyXG4gIHNlbGVjdGVkQ29sdW1uOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHNlbGVjdGVkRWxlbWVudHM6IEFycmF5PExpc3RWYWx1ZUVsZW1lbnQ+ID0gbmV3IEFycmF5PExpc3RWYWx1ZUVsZW1lbnQ+KCk7XHJcblxyXG4gIGZpZWxkVHlwZUVudW0gPSBGaWVsZFR5cGVFbnVtO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCItLS0gSU5TSURFIERCR0VUVEVSIC0tLVwiKTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2cobnVsbCwgdGhpcy5mb3JtKTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2cobnVsbCwgdGhpcy5yZWNvcmQpO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhudWxsLCB0aGlzLmZpZWxkKTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2cobnVsbCwgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudCk7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiLS0tIElOU0lERSBEQkdFVFRFUiAtLS1cIik7XHJcblxyXG4gICAgICAvLyBJbml6aW8gUmV0cm9jb21wYXRpYmlsaXTDoFxyXG5cclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckhhc1Jlc2V0QnV0dG9uID09PSBcInVuZGVmaW5lZFwiKXtcclxuICAgICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckhhc1Jlc2V0QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgfSAgICAgXHJcblxyXG4gICAgICAvLyBGaW5lIFJldHJvY29tcGF0aWJpbGl0w6AgICAgXHJcblxyXG4gICAgICAvLyBJbml6aW86IFRhYmVsbGEgbXVsdGlzZWxlY3Q/XHJcblxyXG4gICAgICBpZiAodGhpcy5maWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnRWxlbmNvIGdlbmVyaWNvJ10pe1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aXNlbGVjdCA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlICE9IG51bGwpe1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbiA9IHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2Uua2V5O1xyXG4gICAgICAgICAgdGhpcy5tdWx0aXNlbGVjdFBoYXNlID0gMjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV07ICAgIFxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudHMgPT0gbnVsbCl7IHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IG5ldyBBcnJheTxMaXN0VmFsdWVFbGVtZW50PigpOyB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEZpbmU6IFRhYmVsbGEgbXVsdGlzZWxlY3Q/XHJcblxyXG4gICAgaWYgKHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQgIT0gbnVsbCl7XHJcbiAgICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLm1vZGUgPSBRdWVyeUVkaXRvck1vZGVFbnVtLlJFU1VMVDtcclxuICAgICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcuZmllbGQgPSB0aGlzLmZpZWxkO1xyXG4gICAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5yZWNvcmQgPSB0aGlzLnJlY29yZDtcclxuICAgICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcuaW5Db25maWcgPSB0aGlzLmluQ29uZmlnO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUub3BlbmVkRmllbGRzLmZpbmQoeCA9PiB0eXBlb2YgeC5RdWVyeVByb3BlcnR5VmFsdWUgIT09IFwib2JqZWN0XCIgJiYgeC5RdWVyeVByb3BlcnR5VmFsdWUgPT0gJz8nKSAhPSBudWxsKXtcclxuICAgICAgICBcclxuICAgICAgICAvLyBJbCBjYW1wbyBoYSBhbG1lbm8gdW4gdmFsb3JlIGNvbiBcIj9cIlxyXG4gICAgICAgIHRoaXMuaGF2ZVF1ZXN0aW9ucyA9IHRydWU7XHJcblxyXG4gICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJDSEVDS0lORyBCQUNLVVBTIE9QRU5FRCBGSUVMRFMuLi4uXCIsIHRoaXMuYmFja3VwUXVlc3Rpb25GaWVsZHMpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5iYWNrdXBRdWVzdGlvbkZpZWxkcyA9PSBudWxsKXtcclxuICAgICAgICAgIHRoaXMuYmFja3VwUXVlc3Rpb25GaWVsZHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG4gICAgICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZS5vcGVuZWRGaWVsZHMuZm9yRWFjaCgocnFmKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYmFja3VwUXVlc3Rpb25GaWVsZHMucHVzaChycWYuUHJvcGVydHlOYW1lKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZS5vcGVuZWRGaWVsZHMuZmluZCh4ID0+IHR5cGVvZiB4LlF1ZXJ5UHJvcGVydHlWYWx1ZSAhPT0gXCJvYmplY3RcIiAmJiB4LlF1ZXJ5UHJvcGVydHlWYWx1ZS5pbmRleE9mKCchJykgIT0gLTEpICE9IG51bGwpe1xyXG5cclxuICAgICAgICAvLyBJbCBjYW1wbyBoYSBhbG1lbm8gdW4gdmFsb3JlIGNvbiBcIiFub21lcmVsYXppb25lXCJcclxuICAgICAgICB0aGlzLmhhdmVSZWxhdGlvbnMgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlLm9wZW5lZEZpZWxkcy5maWx0ZXIoeCA9PiB4LlF1ZXJ5UHJvcGVydHlWYWx1ZS5pbmRleE9mKCchJykgIT0gLTEpLmZvckVhY2goKGZpZWxkV2l0aFJlbGF0aW9uKSA9PiB7XHJcblxyXG4gICAgICAgICAgdmFyIGZpZWxkUmVsYXRlZCA9IGZpZWxkV2l0aFJlbGF0aW9uLlF1ZXJ5UHJvcGVydHlWYWx1ZS5yZXBsYWNlKFwiIVwiLFwiXCIpO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdID09IG51bGwpe1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSBFJyBOVUxMXCIsIHRoaXMuZmllbGQuTmFtZSwgZmllbGRSZWxhdGVkLCB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdLCB0aGlzLnJlY29yZCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVsYXRpb25zLnB1c2goe2ZpZWxkOiBmaWVsZFJlbGF0ZWQsIGxvYWRlZDogZmFsc2UsIGFjdHVhbHZhbHVlOiB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdfSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tSZWxhdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSBDSEVDS1wiLCB0aGlzLmZpZWxkLk5hbWUsIGZpZWxkUmVsYXRlZCwgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSwgdGhpcy5yZWNvcmQpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRSZWxhdGlvbiA9IHRoaXMucmVsYXRpb25zLmZpbmQoeCA9PiB4LmZpZWxkID09IGZpZWxkUmVsYXRlZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFJlbGF0aW9uICE9IG51bGwpe1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gR2VzdGlvbmUgZGVpIGNhbWJpIGRpIHZhbG9yZSBkZWkgY2FtcGkgcmVsYXppb25hdGlcclxuICAgICAgICAgICAgICAgICAgLy8gSWwgY2FtcG8gcmVsYXppb25hdG8gSU5JWklBTE1FTlRFIE5PTiBFJyBOVUxMLCBlIGNhbWJpYSB2YWxvcmUgaW4gcXVhbGNvc2EgY2hlIE5PTiBFJyBOVUxMXHJcbiAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UmVsYXRpb24uYWN0dWFsdmFsdWUgIT0gbnVsbCAmJiB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdICE9IG51bGwgJiYgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSAhPSBjdXJyZW50UmVsYXRpb24uYWN0dWFsdmFsdWUpe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdIEhBIENBTUJJQVRPIFZBTE9SRSEhXCIsIHRoaXMuZmllbGQuTmFtZSwgZmllbGRSZWxhdGVkLCB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdLCB0aGlzLnJlY29yZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlbGF0aW9uLmFjdHVhbHZhbHVlID0gdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXTtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVsYXRpb24ubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZFdpdGhSZWxhdGlvbi5RdWVyeVByb3BlcnR5VmFsdWUgPSB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkQ29tcG9uZW50KCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vIElsIGNhbXBvIHJlbGF6aW9uYXRvIElOSVpJQUxNRU5URSBOT04gRScgTlVMTCwgZSBjYW1iaWEgdmFsb3JlIElOIE5VTExcclxuICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudFJlbGF0aW9uLmFjdHVhbHZhbHVlICE9IG51bGwgJiYgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSA9PSBudWxsKXtcclxuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSBFJyBUT1JOQVRPIEFEIEVTU0VSRSBOVUxMISEgOihcIiwgdGhpcy5maWVsZC5OYW1lLCBmaWVsZFJlbGF0ZWQsIHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0sIHRoaXMucmVjb3JkKTtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVsYXRpb24uYWN0dWFsdmFsdWUgPSB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZWxhdGlvbi5sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkV2l0aFJlbGF0aW9uLlF1ZXJ5UHJvcGVydHlWYWx1ZSA9IFwiIVwiK2ZpZWxkUmVsYXRlZDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVjdXBlcm8gQmFja3VwXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrdXBRdWVzdGlvbkZpZWxkcy5mb3JFYWNoKChib2YpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUub3BlbmVkRmllbGRzLmZpbmQoeCA9PiB4LlByb3BlcnR5TmFtZSA9PSBib2YpLlF1ZXJ5UHJvcGVydHlWYWx1ZSA9IFwiP1wiO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZENvbXBvbmVudCgpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBJbCBjYW1wbyByZWxhemlvbmF0byBJTklaSUFMTUVOVEUgRScgTlVMTCwgZSBjYW1iaWEgdmFsb3JlXHJcbiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRSZWxhdGlvbi5hY3R1YWx2YWx1ZSA9PSBudWxsICYmIHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gIT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gTk9OIEUnIFBJVScgTlVMTCEhIDopXCIsIHRoaXMuZmllbGQuTmFtZSwgZmllbGRSZWxhdGVkLCB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdLCB0aGlzLnJlY29yZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlbGF0aW9uLmFjdHVhbHZhbHVlID0gdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXTtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVsYXRpb24ubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZFdpdGhSZWxhdGlvbi5RdWVyeVByb3BlcnR5VmFsdWUgPSB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkQ29tcG9uZW50KCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tSZWxhdGlvbnMoKTtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sMjAwKTtcclxuXHJcblxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gTk9OIEUnIE5VTEwhISA6KVwiLCB0aGlzLmZpZWxkLk5hbWUsIGZpZWxkUmVsYXRlZCwgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSwgdGhpcy5yZWNvcmQpO1xyXG4gICAgICAgICAgICBmaWVsZFdpdGhSZWxhdGlvbi5RdWVyeVByb3BlcnR5VmFsdWUgPSB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdICE9IG51bGwgPyB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdIDogJyc7XHJcbiAgICAgICAgICAgIHRoaXMucmVsYXRpb25zLnB1c2goe2ZpZWxkOiBmaWVsZFJlbGF0ZWQsIGxvYWRlZDogdHJ1ZSwgYWN0dWFsdmFsdWU6IHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF19KTtcclxuICAgICAgICAgICAgdGhpcy5jaGVja1JlbGF0aW9ucygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgfSk7ICAgICAgICBcclxuXHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIXRoaXMuaGF2ZVJlbGF0aW9ucyl7XHJcbiAgICAgICAgdGhpcy5yZWxhdGlvbnNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9ICAgICBcclxuXHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgaWYgKHRoaXMuZGF0YSA9PSBudWxsKXtcclxuXHJcbiAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoJy4vYXNzZXRzL21vY2t1cHMvbW9ja2VkRnJvbVF1ZXJ5RWRpdG9yX1JFU1VMVF9NQU5ZX05VTUVSSUMudHh0Jywge3Jlc3BvbnNlVHlwZTogJ3RleHQnfSlcclxuICAgICAgLnN1YnNjcmliZShtb2NrZWRGcm9tUXVlcnlFZGl0b3IgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IEpTT04ucGFyc2UobW9ja2VkRnJvbVF1ZXJ5RWRpdG9yKTtcclxuICAgICAgICB0aGlzLmRhdGEgPSBKU09OLnBhcnNlKHRoaXMuZGF0YS5yZXN1bHQpO1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc1Jlc3VsdCh0aGlzLmRhdGEsW10pO1xyXG4gICAgICAgfSk7ICAgICAgXHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHJlbG9hZENvbXBvbmVudCgpe1xyXG4gICAgLy9jb25zb2xlLmxvZyhcIlJFTE9BRCBDT01QT05FTlQgQ0FMTEVEXCIsIHRoaXMucmVjb3JkLCB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5yZWNvcmQpO1xyXG5cclxuICAgIHRoaXMucmVsb2FkID0gZmFsc2U7XHJcbiAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5yZWNvcmQgPSB0aGlzLnJlY29yZDtcclxuICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLmZpZWxkID0gdGhpcy5maWVsZDtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5yZWxvYWQgPSB0cnVlOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiUkVMT0FERUQgUVVFUllFRElUT1JcIik7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSwgMzAwMCk7IFxyXG4gIH1cclxuXHJcbiAgY2hlY2tSZWxhdGlvbnMoKXtcclxuICAgIHRoaXMucmVsYXRpb25zTG9hZGVkID0gdGhpcy5yZWxhdGlvbnMuZmluZCh4ID0+IHgubG9hZGVkKSAhPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgb25FeHRlcm5hbFNRTFJlc3VsdE91dChldjogZXZlbnRPdXQpe1xyXG5cclxuICAgIC8vY29uc29sZS5sb2coXCJSaXN1bHRhdG8gZGVsbCdlbGFib3JhemlvbmUgZGVsIHF1ZXJ5IGVkaXRvcjogb25FeHRlcm5hbFNRTFJlc3VsdE91dFwiLCBldik7XHJcblxyXG4gICAgaWYgKGV2LkJlaGF2aW91cnMuaW5kZXhPZihcInNlbmQtb3V0XCIpICE9IC0xKXsgdGhpcy5vdXQuZW1pdChldik7IH1cclxuXHJcbiAgICB0aGlzLmRhdGEgPSBKU09OLnBhcnNlKGV2LlBhcmFtcy5yZXN1bHQpO1xyXG4gICAgdGhpcy5wcm9jZXNzUmVzdWx0KHRoaXMuZGF0YSxldi5CZWhhdmlvdXJzKTtcclxuXHJcbiAgfVxyXG5cclxuICBwcm9jZXNzUmVzdWx0KGRhdGE6IGFueSwgYmVoYXZpb3VyczogQXJyYXk8c3RyaW5nPiA9IFtdKXtcclxuICAgIFxyXG4gICAgLy9kYXRhIMOoIGwnYXJyYXkgZGVpIHJlY29yZCB0b3JuYXRpIGRhbCBkYlxyXG5cclxuICAgIC8vIHNlIGhvIGRlbGxlIHJpc3Bvc3RlXHJcbiAgICBpZiAoZGF0YS5sZW5ndGggPiAwKXtcclxuXHJcbiAgICAgIC8vIGNvbnRyb2xsbyBxdWFudGkgYXR0cmlidXRpIGhhIGxhIHJpc3Bvc3RhXHJcbiAgICAgIHRoaXMua2V5cyA9IE9iamVjdC5rZXlzKGRhdGFbMF0pO1xyXG5cclxuICAgICAgLy8gc2UgaG8gc29sYW1lbnRlIGwnSUQgZSBpbCBjYW1wbyBzY2VsdG8gZWQgaG8gdW5hIHNvbGEgcmlzcG9zdGEgcHJlbmRvIGlsIHZhbG9yZSBkaXJldHRhbWVudGVcclxuICAgICAgaWYgKHRoaXMua2V5cy5sZW5ndGggPT0gMiAmJiBkYXRhLmxlbmd0aCA9PSAxKXtcclxuICAgICAgICAvLyBTZSBobyB1biBzb2xvIG9jY2hpZXR0byBzZWxlemlvbmF0byBlIGxhIHF1ZXJ5IHJlc3RpdHVpc2NlIHVuIHNvbG8gdmFsb3JlLCBsbyBidXR0byBmdW9yaSBhdXRvbWF0aWNhbWVudGVcclxuICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwibmVsbGEgcmlzcG9zdGEgaG8gc29sYW1lbnRlIGwnSUQgZSBpbCBjYW1wbyBzY2VsdG8gZWQgaG8gdW5hIHNvbGEgcmlzcG9zdGFcIik7XHJcbiAgICAgICAgdGhpcy5zaG93VGFibGUgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzTXVsdGlzZWxlY3Qpe1xyXG4gICAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIm5vbiBtdWx0aXNlbGVjdFwiKTtcclxuICAgICAgICAgIC8vIE5vbiDDqCBtdWx0aXNlbGVjdFxyXG4gICAgICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IGRhdGFbMF1bdGhpcy5rZXlzWzFdXTtcclxuXHJcbiAgICAgICAgICAvLyBDb211bnF1ZSBzaWEgY2kgcG9ydGlhbW8gZGlldHJvIGwnSUQgZGVsbGEgc2VsZXppb25lIGNvbiB1biBjYW1wbyBjdXN0b20sIHB1w7Igc2VtcHJlIHNlcnZpcmVcclxuICAgICAgICAgIGlmKGRhdGFbMF0uaGFzT3duUHJvcGVydHkoXCJJRFwiKSl7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb25zLmFkZGl0aW9uYWxQYXJhbXMgPT0gbnVsbCl7IHRoaXMuY29uZmlndXJhdGlvbnMuYWRkaXRpb25hbFBhcmFtcyA9IHt9OyB9XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMuYWRkaXRpb25hbFBhcmFtc1t0aGlzLmZpZWxkLk5hbWUrXCJfX19fSURcIl0gPSBkYXRhWzBdWydJRCddO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFtkYXRhWzBdW3RoaXMua2V5c1sxXV0sZGF0YVswXVsnSUQnXV0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwibXVsdGlzZWxlY3RcIik7XHJcbiAgICAgICAgICAvLyBFJyB1biBlbGVuY28gZ2VuZXJpY28gZGJnZXR0ZXIgbXVsdGlzZWxlY3RcclxuICAgICAgICAgIC8vIGRldm8gZmFyZ2xpIGxhIHNydXR0dXJhIGRlbCBkYXRvXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSBuZXcgQXJyYXk8TGlzdFZhbHVlRWxlbWVudD4oKTtcclxuICAgICAgICAgIHZhciBzZWxlY3RlZEVsZW1lbnQgPSBuZXcgTGlzdFZhbHVlRWxlbWVudCgpO1xyXG4gICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LklEID0gZGF0YVswXVsnSUQnXTtcclxuICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5GaWVsZCA9IHRoaXMua2V5c1sxXTtcclxuICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5LZXkgPSBkYXRhWzBdW3RoaXMua2V5c1sxXV07XHJcbiAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQuVmFsdWUgPSBkYXRhWzBdW3RoaXMua2V5c1sxXV07XHJcblxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzLnB1c2goc2VsZWN0ZWRFbGVtZW50KTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFt0aGlzLnNlbGVjdGVkRWxlbWVudHNdKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKGRhdGEubGVuZ3RoID09IDEgJiYgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSAhPSBudWxsKXtcclxuICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiaG8gdW5hIHNvbGEgcmlzcG9zdGEgZWQgaG8gdW5hIGNvbG9ubmEgZGEgY3VpIMOoIGZvcnphdG8gaWwgcmVjdXBlcm8gZGVsIHZhbG9yZVwiKTtcclxuXHJcbiAgICAgICAgdGhpcy5zaG93VGFibGUgPSBmYWxzZTtcclxuXHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc011bHRpc2VsZWN0KXtcclxuICAgICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJub24gbXVsdGlzZWxlY3RcIik7XHJcbiAgICAgICAgICAvLyBOb24gw6ggbXVsdGlzZWxlY3RcclxuICAgICAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSBkYXRhWzBdW3RoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2Uua2V5XTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFtkYXRhWzBdW3RoaXMua2V5c1sxXSxkYXRhWzBdWydJRCddXV0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwibXVsdGlzZWxlY3RcIik7XHJcbiAgICAgICAgICAvLyBFJyB1biBlbGVuY28gZ2VuZXJpY28gZGJnZXR0ZXIgbXVsdGlzZWxlY3RcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IG5ldyBBcnJheTxMaXN0VmFsdWVFbGVtZW50PigpO1xyXG4gICAgICAgICAgdmFyIHNlbGVjdGVkRWxlbWVudCA9IG5ldyBMaXN0VmFsdWVFbGVtZW50KCk7XHJcbiAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQuSUQgPSBkYXRhWzBdWydJRCddO1xyXG4gICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LkZpZWxkID0gdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZS5rZXk7XHJcbiAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQuS2V5ID0gZGF0YVswXVt0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlLmtleV07XHJcbiAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQuVmFsdWUgPSBkYXRhWzBdW3RoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2Uua2V5XTtcclxuXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMucHVzaChzZWxlY3RlZEVsZW1lbnQpO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQoW3RoaXMuc2VsZWN0ZWRFbGVtZW50c10pOyAgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiaG8gcGnDuSBkaSB1bmEgcmlzcG9zdGFcIik7XHJcblxyXG4gICAgICAgIHRoaXMubXVsdGlwbGVWYWx1ZXNUb0Nob29zZSA9IHRydWU7XHJcbiAgICAgICAgaWYgKGJlaGF2aW91cnMuaW5kZXhPZihcIm1hbmFnZS1xdWVzdGlvbi1pbi1kYmdldHRlclwiKSAhPSAtMSl7XHJcbiAgICAgICAgICB0aGlzLnNob3dUYWJsZSA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICBpZiAoIXRoaXMuRGlyZWN0bHlPcGVuVGFibGUpe1xyXG4gICAgICAgICAgICB0aGlzLnNob3dUYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zaG93VGFibGUgPSB0cnVlOyAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgXHJcbiAgICB9XHJcbiAgICBcclxuICB9XHJcblxyXG4gIHNlbGVjdFZhbHVlKHJvdywga2V5KXtcclxuICAgIHZhciBrZXl1c2VkO1xyXG4gICAgdmFyIHZhbHVlID0gcm93W2tleV07XHJcblxyXG4gICAgdmFyIHZhbHVlVG9CZVNldCA9IFwiXCI7XHJcblxyXG4gICAgaWYodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9PSBudWxsKXtcclxuICAgICAgdmFsdWVUb0JlU2V0ID0gdmFsdWU7XHJcbiAgICAgIGtleXVzZWQgPSBrZXk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YWx1ZVRvQmVTZXQgPSByb3dbdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZS5rZXldO1xyXG4gICAgICBrZXl1c2VkID0gdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZS5rZXk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZhbHVlVG9CZVNldCA9PSBudWxsKXsgdmFsdWVUb0JlU2V0ID0gXCJcIjsgfVxyXG5cclxuXHJcbiAgICAvLyBDb211bnF1ZSBzaWEgY2kgcG9ydGlhbW8gZGlldHJvIGwnSUQgZGVsbGEgc2VsZXppb25lIGNvbiB1biBjYW1wbyBjdXN0b20sIHB1w7Igc2VtcHJlIHNlcnZpcmVcclxuICAgIGlmKHJvdy5oYXNPd25Qcm9wZXJ0eShcIklEXCIpKXtcclxuICAgICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbnMuYWRkaXRpb25hbFBhcmFtcyA9PSBudWxsKXsgdGhpcy5jb25maWd1cmF0aW9ucy5hZGRpdGlvbmFsUGFyYW1zID0ge307IH1cclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9ucy5hZGRpdGlvbmFsUGFyYW1zW3RoaXMuZmllbGQuTmFtZStcIl9fX19JRFwiXSA9IHJvd1snSUQnXTtcclxuICAgIH1cclxuICAgIFxyXG5cclxuICAgIC8vRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuU3VjY2VzcyhcIlVuIHNvbG8gcmlzdWx0YXRvIHRyb3ZhdG8sIMOoIHN0YXRvIGluc2VyaXRvIGluIGF1dG9tYXRpY29cIik7XHJcblxyXG4gICAgaWYgKCF0aGlzLmlzTXVsdGlzZWxlY3Qpe1xyXG4gICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwibm9uIG11bHRpc2VsZWN0XCIpO1xyXG4gICAgICAvLyBOb24gw6ggbXVsdGlzZWxlY3RcclxuICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IHZhbHVlVG9CZVNldDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQoW3ZhbHVlVG9CZVNldCxyb3dbJ0lEJ11dKTsgICAgXHJcbiAgICAgIHRoaXMuc2hvd1RhYmxlID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiaG8gbXVsdGlzZWxlY3RcIik7XHJcblxyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnRzLmZpbmQoeCA9PiB4LklEID09IHJvd1snSUQnXSkgPT0gbnVsbCl7XHJcbiAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImhvIHBpw7kgZGkgdW5hIHJpc3Bvc3RhXCIpO1xyXG5cclxuICAgICAgICAvLyBFJyB1biBlbGVuY28gZ2VuZXJpY28gZGJnZXR0ZXIgbXVsdGlzZWxlY3RcclxuICAgICAgICB2YXIgc2VsZWN0ZWRFbGVtZW50ID0gbmV3IExpc3RWYWx1ZUVsZW1lbnQoKTtcclxuICAgICAgICBzZWxlY3RlZEVsZW1lbnQuSUQgPSByb3dbJ0lEJ107XHJcbiAgICAgICAgc2VsZWN0ZWRFbGVtZW50LlNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICBzZWxlY3RlZEVsZW1lbnQuRmllbGQgPSBrZXl1c2VkO1xyXG4gICAgICAgIHNlbGVjdGVkRWxlbWVudC5LZXkgPSB2YWx1ZVRvQmVTZXQ7XHJcbiAgICAgICAgc2VsZWN0ZWRFbGVtZW50LlZhbHVlID0gdmFsdWVUb0JlU2V0O1xyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMucHVzaChzZWxlY3RlZEVsZW1lbnQpO1xyXG5cclxuICAgICAgICB2YXIgY29ycmVzcG9uZGluZ0NvbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29sLVwiK2tleXVzZWQrXCItaWQtXCIrcm93WydJRCddKTtcclxuICAgICAgICBpZiAoY29ycmVzcG9uZGluZ0NvbCA9PSBudWxsKXsgY29ycmVzcG9uZGluZ0NvbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29sLVwiK2tleStcIi1pZC1cIityb3dbJ0lEJ10pOyB9XHJcbiAgICAgICAgY29ycmVzcG9uZGluZ0NvbC5jbGFzc0xpc3QuYWRkKFwicm93LXNlbGVjdGVkXCIpO1xyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLnNlbGVjdGVkRWxlbWVudHMuZmluZEluZGV4KHggPT4geC5JRCA9PSByb3dbJ0lEJ10pO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cy5zcGxpY2UoaW5kZXgsMSk7XHJcblxyXG4gICAgICAgIHZhciBjb3JyZXNwb25kaW5nQ29sID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb2wtXCIra2V5dXNlZCtcIi1pZC1cIityb3dbJ0lEJ10pO1xyXG4gICAgICAgIGlmIChjb3JyZXNwb25kaW5nQ29sID09IG51bGwpeyBjb3JyZXNwb25kaW5nQ29sID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb2wtXCIra2V5K1wiLWlkLVwiK3Jvd1snSUQnXSk7IH1cclxuICAgICAgICBjb3JyZXNwb25kaW5nQ29sLmNsYXNzTGlzdC5yZW1vdmUoXCJyb3ctc2VsZWN0ZWRcIik7ICAgICAgICBcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIC8vdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQoW3RoaXMuc2VsZWN0ZWRFbGVtZW50c10pOyAgICBcclxuICAgICAgICAgICAgXHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcblxyXG4gIHJlbmRlclNlbGVjdGVkKCl7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzID0gdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudHMgPT0gbnVsbCl7IHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IG5ldyBBcnJheTxMaXN0VmFsdWVFbGVtZW50PigpOyB9XHJcblxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcInJlbmRlclNlbGVjdGVkXCIsIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyk7XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPiAwKXtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzLmZvckVhY2goKHNlbGVjdGVkRWxlbWVudCkgPT4ge1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29sLVwiK3NlbGVjdGVkRWxlbWVudC5GaWVsZCtcIi1pZC1cIitzZWxlY3RlZEVsZW1lbnQuSUQpLmNsYXNzTGlzdC5hZGQoXCJyb3ctc2VsZWN0ZWRcIik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGNsb3NlKCl7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdChbXCIqKioqQ0xPU0UqKioqXCIsMF0pO1xyXG4gICAgdGhpcy5zaG93VGFibGUgPSBmYWxzZTtcclxuICB9XHJcbiAgXHJcbiAgZGVsZXRlKCl7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdChbbnVsbCwwXSk7XHJcbiAgICB0aGlzLnNob3dUYWJsZSA9IGZhbHNlO1xyXG4gIH0gIFxyXG5cclxuICBhY3RpdmF0ZVRhYmxlKCl7XHJcbiAgICB0aGlzLnNob3dUYWJsZSA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5yZW5kZXJTZWxlY3RlZCgpO1xyXG4gICAgfSwyMDApO1xyXG4gIH1cclxuXHJcbiAgcmVsb2FkRGF0YSgpe1xyXG4gICAgdGhpcy5kb1JlbG9hZC5lbWl0KG51bGwpO1xyXG4gIH0gIFxyXG5cclxuICBzZWxlY3RDb2x1bW4oa2V5KXtcclxuICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID09IG51bGwpe1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uID0ga2V5O1xyXG4gICAgICB0aGlzLm11bHRpc2VsZWN0UGhhc2UgPSAyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uZmlybVNlbGVjdGlvbigpe1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQoW3RoaXMuc2VsZWN0ZWRFbGVtZW50c10pOyBcclxuICAgIHRoaXMuc2hvd1RhYmxlID0gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTGlzdFZhbHVlRWxlbWVudCB7XHJcbiAgSUQ6IHN0cmluZyB8IG51bWJlcjtcclxuICBTZWxlY3RlZDogYm9vbGVhbjtcclxuICBGaWVsZDogc3RyaW5nO1xyXG4gIEtleTogc3RyaW5nO1xyXG4gIFZhbHVlOiBzdHJpbmc7XHJcblxyXG59XHJcblxyXG4vLyBPIGNvc8OsIG8gc2NoaWFudGF0byBhIG1hbm9cclxuZXhwb3J0IGVudW0gUXVlcnlFZGl0b3JNb2RlRW51bSB7XHJcbiAgXCJDT05GSUdVUkFUT1JcIiA9IDEsXHJcbiAgXCJDT01QT1NFUlwiID0gMixcclxuICBcIlJFU1VMVFwiID0gM1xyXG59IiwiPGRpdj5cclxuICAgIDxuZy10ZW1wbGF0ZSBbYXBwRHluYW1pY0xvYWRlcl0gW2RhdGFdPVwiUXVlcnlFZGl0b3JDb21wb25lbnRcIiAob3V0KT1cIm9uRXh0ZXJuYWxTUUxSZXN1bHRPdXQoJGV2ZW50KTtcIiAqbmdJZj1cIlF1ZXJ5RWRpdG9yQ29tcG9uZW50ICE9IG51bGwgJiYgcmVsYXRpb25zTG9hZGVkICYmIHJlbG9hZFwiPjwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImZsb2F0aW5ndGFibGUgZHJhZ2dhYmxlXCIgY2RrRHJhZyAqbmdJZj1cInNob3dUYWJsZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+PG1hdC1pY29uIChjbGljayk9XCJjbG9zZSgpXCI+Y2xvc2U8L21hdC1pY29uPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+PG1hdC1pY29uIChjbGljayk9XCJkZWxldGUoKVwiPmRlbGV0ZTwvbWF0LWljb24+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+PG1hdC1pY29uPmRyYWdfaW5kaWNhdG9yPC9tYXQtaWNvbj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXNNdWx0aXNlbGVjdFwiPlNlbGV6aW9uYSBpbCB2YWxvcmUgZGEgcmVnaXN0cmFyZS48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpc011bHRpc2VsZWN0ICYmIG11bHRpc2VsZWN0UGhhc2UgPT0gMVwiPlNlbGV6aW9uYSB1bmEgY29sb25uYTwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImlzTXVsdGlzZWxlY3QgJiYgbXVsdGlzZWxlY3RQaGFzZSA9PSAyICYmIHNlbGVjdGVkQ29sdW1uICE9IG51bGwgJiYgZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPT0gbnVsbFwiPkhhaSBzZWxlemlvbmF0bzogPGI+e3tzZWxlY3RlZENvbHVtbi5zcGxpdChcIl9fXCIpWzFdfX08L2I+Ljwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImlzTXVsdGlzZWxlY3QgJiYgbXVsdGlzZWxlY3RQaGFzZSA9PSAyXCI+U2VsZXppb25hIGFsbWVubyB1biBlbGVtZW50byBwcmVzZW50ZSBzb3R0byBhbGxhIGNvbG9ubmEgc2VsZXppb25hdGE8L3NwYW4+ICAgICAgICBcclxuICAgICAgICA8c3BhbiAqbmdJZj1cImlzTXVsdGlzZWxlY3QgJiYgbXVsdGlzZWxlY3RQaGFzZSA9PSAyICYmIHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1jb25maXJtXCIgKGNsaWNrKT1cImNvbmZpcm1TZWxlY3Rpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uID5jaGVjazwvbWF0LWljb24+IENvbmZlcm1hIHNlbGV6aW9uZVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICBcclxuICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlXCIgW25nQ2xhc3NdPVwieyd0YWJsZS1ub3Rmb3JjZWQnOiBmaWVsZC5GaWVsZFR5cGUgIT0gZmllbGRUeXBlRW51bVsnRWxlbmNvIGdlbmVyaWNvJ10gJiYgZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPT0gbnVsbCwgJ3RhYmxlLWZvcmNlZCc6IGZpZWxkLkZpZWxkVHlwZSAhPSBmaWVsZFR5cGVFbnVtWydFbGVuY28gZ2VuZXJpY28nXSAmJiBmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSAhPSBudWxsLCAndGFibGUtbXVsdGlzZWxlY3Qtbm90Zm9yY2VkJzogZmllbGQuRmllbGRUeXBlID09IGZpZWxkVHlwZUVudW1bJ0VsZW5jbyBnZW5lcmljbyddICAmJiBmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9PSBudWxsLCAndGFibGUtbXVsdGlzZWxlY3QtZm9yY2VkJzogZmllbGQuRmllbGRUeXBlID09IGZpZWxkVHlwZUVudW1bJ0VsZW5jbyBnZW5lcmljbyddICAmJiBmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSAhPSBudWxsfVwiPlxyXG4gICAgICAgIDx0cj48dGggKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzOyBsZXQgZmlyc3QgPSBmaXJzdFwiIChjbGljayk9XCJzZWxlY3RDb2x1bW4oa2V5KVwiIGlkPVwiaGVhZGNvbC17e2tleX19XCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmlyc3RcIj57e2tleX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaXJzdFwiPnt7a2V5LnNwbGl0KFwiX19cIilbMV19fTwvc3Bhbj5cclxuICAgICAgICA8L3RoPjwvdHI+XHJcbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2YgZGF0YVwiIGNsYXNzPVwicm93c1wiPlxyXG4gICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzXCIgKGNsaWNrKT1cInNlbGVjdFZhbHVlKHJvdywga2V5KVwiIGlkPVwiY29sLXt7a2V5fX0taWQte3tyb3dbJ0lEJ119fVwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBcclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93W2tleV0gIT0gbnVsbCAmJiByb3dba2V5XS50b1N0cmluZygpLmxlbmd0aCA8PSAxMDBcIiBbaW5uZXJIVE1MXT1cInJvd1trZXldXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPiBcclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93W2tleV0gIT0gbnVsbCAmJiByb3dba2V5XS50b1N0cmluZygpLmxlbmd0aCA+IDEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7cm93W2tleV0gIT0gbnVsbCA/IHJvd1trZXldLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsMTAwKSA6ICcnfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93W2tleV0gIT0gbnVsbCAmJiByb3dba2V5XS50b1N0cmluZygpLmxlbmd0aCA+IDEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIC4uLlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJyb3dba2V5XVwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC90YWJsZT5cclxuXHJcbiAgICA8IS0tIFxyXG4gICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtbm90Zm9yY2VkXCIgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9PSBudWxsXCI+XHJcbiAgICAgICAgPHRyPjx0aCAqbmdGb3I9XCJsZXQga2V5IG9mIGtleXM7IGxldCBmaXJzdCA9IGZpcnN0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmlyc3RcIj57e2tleX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaXJzdFwiPnt7a2V5LnNwbGl0KFwiX19cIilbMV19fTwvc3Bhbj5cclxuICAgICAgICA8L3RoPjwvdHI+XHJcbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2YgZGF0YVwiIGNsYXNzPVwicm93c1wiPlxyXG4gICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzXCIgKGNsaWNrKT1cInNlbGVjdFZhbHVlTm90Rm9yY2VkKHJvd1trZXldKVwiPlxyXG4gICAgICAgICAgICAgICAge3tyb3dba2V5XSAhPSBudWxsID8gcm93W2tleV0udG9TdHJpbmcoKS5zdWJzdHJpbmcoMCwxMDApIDogJyd9fVxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyb3dba2V5XSAhPSBudWxsICYmIHJvd1trZXldLnRvU3RyaW5nKCkubGVuZ3RoID4gMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgIDwvdGFibGU+XHJcblxyXG4gICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtZm9yY2VkXCIgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSAhPSBudWxsXCI+XHJcbiAgICAgICAgPHRyPjx0aCAqbmdGb3I9XCJsZXQga2V5IG9mIGtleXM7IGxldCBmaXJzdCA9IGZpcnN0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmlyc3RcIj57e2tleX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaXJzdFwiPnt7a2V5LnNwbGl0KFwiX19cIilbMV19fTwvc3Bhbj5cclxuICAgICAgICA8L3RoPjwvdHI+XHJcbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2YgZGF0YVwiIGNsYXNzPVwicm93c1wiIChjbGljayk9XCJzZWxlY3RWYWx1ZUZvcmNlZChyb3cpXCI+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQga2V5IG9mIGtleXNcIj5cclxuICAgICAgICAgICAgICAgIHt7cm93W2tleV0gIT0gbnVsbCA/IHJvd1trZXldLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsMTAwKSA6ICcnfX1cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93W2tleV0gIT0gbnVsbCAmJiByb3dba2V5XS50b1N0cmluZygpLmxlbmd0aCA+IDEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIC4uLlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L3RhYmxlPlxyXG4gICAgLS0+XHJcblxyXG48L2Rpdj5cclxuXHJcbjxzcGFuICpuZ0lmPVwidmFsdWUgIT0gbnVsbFwiPnt7dmFsdWV9fTwvc3Bhbj5cclxuXHJcbjxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLWFycm93LWRvd25cIiAoY2xpY2spPVwiYWN0aXZhdGVUYWJsZSgpXCIgKm5nSWY9XCJtdWx0aXBsZVZhbHVlc1RvQ2hvb3NlXCI+XHJcbiAgICA8bWF0LWljb24+a2V5Ym9hcmRfYXJyb3dfZG93bjwvbWF0LWljb24+XHJcbjwvYnV0dG9uPlxyXG48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1hcnJvdy1kb3duXCIgKGNsaWNrKT1cInJlbG9hZERhdGEoKVwiICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVySGFzUmVzZXRCdXR0b25cIj5cclxuICAgIDxtYXQtaWNvbj5sb29wPC9tYXQtaWNvbj5cclxuPC9idXR0b24+Il19
402
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGJnZXR0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2RiZ2V0dGVyL2RiZ2V0dGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9kYmdldHRlci9kYmdldHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3ZFLE9BQU8sRUFBaUMsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJL0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7O0FBT2pFLE1BQU0sT0FBTyxpQkFBaUI7SUF1QzVCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFyQ2pDLG1CQUFjLEdBQStCLElBQUksQ0FBQztRQUlsRCxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyx5QkFBb0IsR0FBK0IsSUFBSSxDQUFDLENBQUMsbUNBQW1DO1FBQzVGLFNBQUksR0FBUSxJQUFJLENBQUMsQ0FBQyx3Q0FBd0M7UUFFekQsUUFBRyxHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBQzNELGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDM0QsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRWhFLFNBQUksR0FBa0IsSUFBSSxDQUFDO1FBQzNCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFHeEIsY0FBUyxHQUFZLEtBQUssQ0FBQztR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QkFBbUIsUUFJOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBEeW5hbWljTG9hZGVyRGlyZWN0aXZlRGF0YSwgZXZlbnRPdXQgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2R5bmFtaWMtbG9hZGVyL2R5bmFtaWMtbG9hZGVyLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJhc2VGaWVsZCwgRGF0YUdldHRlclR5cGVFbnVtLCBGaWVsZFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Jhc2VGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IFJlY29yZCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yZWNvcmQubW9kZWwnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBEeW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9keW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9nbG9iYWwuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RiZ2V0dGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGJnZXR0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RiZ2V0dGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIERiZ2V0dGVyQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KCkgY29uZmlndXJhdGlvbnM6IER5bmFtaWNNb2R1bGVDb21waWxlQ29uZmlnID0gbnVsbDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtO1xyXG4gIEBJbnB1dCgpIGZpZWxkOiBCYXNlRmllbGQ7XHJcbiAgQElucHV0KCkgcmVjb3JkOiBSZWNvcmQ7XHJcbiAgQElucHV0KCkgaW5Db25maWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBEaXJlY3RseU9wZW5UYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIFF1ZXJ5RWRpdG9yQ29tcG9uZW50OiBEeW5hbWljTG9hZGVyRGlyZWN0aXZlRGF0YSA9IG51bGw7IC8vIEwnaW50ZXJvIGNvbXBvbmVudGUgcXVlcnkgRWRpdG9yXHJcbiAgQElucHV0KCkgZGF0YTogYW55ID0gbnVsbDsgLy8gTG8gZmFjY2lhbW8gZnVuemlvbmFyZSB0aXBvIEVRUC1UQUJMRVxyXG5cclxuICBAT3V0cHV0KCkgb3V0OiBFdmVudEVtaXR0ZXI8ZXZlbnRPdXQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxldmVudE91dD4oKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRWYWx1ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZG9SZWxvYWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7ICBcclxuXHJcbiAga2V5czogQXJyYXk8c3RyaW5nPiA9IG51bGw7XHJcbiAgbG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmFsdWU6IGFueTtcclxuXHJcbiAgc2hvd1RhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGhhdmVRdWVzdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBoYXZlUmVsYXRpb25zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcmVsb2FkOiBib29sZWFuID0gdHJ1ZTtcclxuICBtdWx0aXBsZVZhbHVlc1RvQ2hvb3NlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGludGVydmFsOiBhbnk7XHJcblxyXG4gIHJlbGF0aW9uczogQXJyYXk8e2ZpZWxkOiBzdHJpbmcsIGxvYWRlZDogYm9vbGVhbiwgYWN0dWFsdmFsdWU6IGFueX0+ID0gbmV3IEFycmF5PHtmaWVsZDogc3RyaW5nLCBsb2FkZWQ6IGJvb2xlYW4sIGFjdHVhbHZhbHVlOiBhbnl9PigpO1xyXG4gIHJlbGF0aW9uc0xvYWRlZDogYm9vbGVhbjtcclxuICBiYWNrdXBRdWVzdGlvbkZpZWxkczogQXJyYXk8c3RyaW5nPiA9IG51bGw7XHJcblxyXG4gIGlzTXVsdGlzZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtdWx0aXNlbGVjdFBoYXNlOiBudW1iZXIgPSAxO1xyXG4gIHNlbGVjdGVkQ29sdW1uOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHNlbGVjdGVkRWxlbWVudHM6IEFycmF5PExpc3RWYWx1ZUVsZW1lbnQ+ID0gbmV3IEFycmF5PExpc3RWYWx1ZUVsZW1lbnQ+KCk7XHJcblxyXG4gIGZpZWxkVHlwZUVudW0gPSBGaWVsZFR5cGVFbnVtO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCItLS0gSU5TSURFIERCR0VUVEVSIC0tLVwiKTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2cobnVsbCwgdGhpcy5mb3JtKTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2cobnVsbCwgdGhpcy5yZWNvcmQpO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhudWxsLCB0aGlzLmZpZWxkKTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2cobnVsbCwgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudCk7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiLS0tIElOU0lERSBEQkdFVFRFUiAtLS1cIik7XHJcblxyXG4gICAgICAvLyBJbml6aW8gUmV0cm9jb21wYXRpYmlsaXTDoFxyXG5cclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckhhc1Jlc2V0QnV0dG9uID09PSBcInVuZGVmaW5lZFwiKXtcclxuICAgICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckhhc1Jlc2V0QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgfSAgICAgXHJcblxyXG4gICAgICAvLyBGaW5lIFJldHJvY29tcGF0aWJpbGl0w6AgICAgXHJcblxyXG4gICAgICAvLyBJbml6aW86IFRhYmVsbGEgbXVsdGlzZWxlY3Q/XHJcblxyXG4gICAgICBpZiAodGhpcy5maWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnRWxlbmNvIGdlbmVyaWNvJ10pe1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aXNlbGVjdCA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlICE9IG51bGwpe1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbiA9IHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2Uua2V5O1xyXG4gICAgICAgICAgdGhpcy5tdWx0aXNlbGVjdFBoYXNlID0gMjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV07ICAgIFxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudHMgPT0gbnVsbCl7IHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IG5ldyBBcnJheTxMaXN0VmFsdWVFbGVtZW50PigpOyB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEZpbmU6IFRhYmVsbGEgbXVsdGlzZWxlY3Q/XHJcblxyXG4gICAgaWYgKHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQgIT0gbnVsbCl7XHJcbiAgICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLm1vZGUgPSBRdWVyeUVkaXRvck1vZGVFbnVtLlJFU1VMVDtcclxuICAgICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcuZmllbGQgPSB0aGlzLmZpZWxkO1xyXG4gICAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5yZWNvcmQgPSB0aGlzLnJlY29yZDtcclxuICAgICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcuaW5Db25maWcgPSB0aGlzLmluQ29uZmlnO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUub3BlbmVkRmllbGRzLmZpbmQoeCA9PiB0eXBlb2YgeC5RdWVyeVByb3BlcnR5VmFsdWUgIT09IFwib2JqZWN0XCIgJiYgeC5RdWVyeVByb3BlcnR5VmFsdWUgPT0gJz8nKSAhPSBudWxsKXtcclxuICAgICAgICBcclxuICAgICAgICAvLyBJbCBjYW1wbyBoYSBhbG1lbm8gdW4gdmFsb3JlIGNvbiBcIj9cIlxyXG4gICAgICAgIHRoaXMuaGF2ZVF1ZXN0aW9ucyA9IHRydWU7XHJcblxyXG4gICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJDSEVDS0lORyBCQUNLVVBTIE9QRU5FRCBGSUVMRFMuLi4uXCIsIHRoaXMuYmFja3VwUXVlc3Rpb25GaWVsZHMpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5iYWNrdXBRdWVzdGlvbkZpZWxkcyA9PSBudWxsKXtcclxuICAgICAgICAgIHRoaXMuYmFja3VwUXVlc3Rpb25GaWVsZHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG4gICAgICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZS5vcGVuZWRGaWVsZHMuZm9yRWFjaCgocnFmKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYmFja3VwUXVlc3Rpb25GaWVsZHMucHVzaChycWYuUHJvcGVydHlOYW1lKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZS5vcGVuZWRGaWVsZHMuZmluZCh4ID0+IHR5cGVvZiB4LlF1ZXJ5UHJvcGVydHlWYWx1ZSAhPT0gXCJvYmplY3RcIiAmJiB4LlF1ZXJ5UHJvcGVydHlWYWx1ZS5pbmRleE9mKCchJykgIT0gLTEpICE9IG51bGwpe1xyXG5cclxuICAgICAgICAvLyBJbCBjYW1wbyBoYSBhbG1lbm8gdW4gdmFsb3JlIGNvbiBcIiFub21lcmVsYXppb25lXCJcclxuICAgICAgICB0aGlzLmhhdmVSZWxhdGlvbnMgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlLm9wZW5lZEZpZWxkcy5maWx0ZXIoeCA9PiB4LlF1ZXJ5UHJvcGVydHlWYWx1ZS5pbmRleE9mKCchJykgIT0gLTEpLmZvckVhY2goKGZpZWxkV2l0aFJlbGF0aW9uKSA9PiB7XHJcblxyXG4gICAgICAgICAgdmFyIGZpZWxkUmVsYXRlZCA9IGZpZWxkV2l0aFJlbGF0aW9uLlF1ZXJ5UHJvcGVydHlWYWx1ZS5yZXBsYWNlKFwiIVwiLFwiXCIpO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdID09IG51bGwpe1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSBFJyBOVUxMXCIsIHRoaXMuZmllbGQuTmFtZSwgZmllbGRSZWxhdGVkLCB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdLCB0aGlzLnJlY29yZCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVsYXRpb25zLnB1c2goe2ZpZWxkOiBmaWVsZFJlbGF0ZWQsIGxvYWRlZDogZmFsc2UsIGFjdHVhbHZhbHVlOiB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdfSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tSZWxhdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSBDSEVDS1wiLCB0aGlzLmZpZWxkLk5hbWUsIGZpZWxkUmVsYXRlZCwgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSwgdGhpcy5yZWNvcmQpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRSZWxhdGlvbiA9IHRoaXMucmVsYXRpb25zLmZpbmQoeCA9PiB4LmZpZWxkID09IGZpZWxkUmVsYXRlZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFJlbGF0aW9uICE9IG51bGwpe1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gR2VzdGlvbmUgZGVpIGNhbWJpIGRpIHZhbG9yZSBkZWkgY2FtcGkgcmVsYXppb25hdGlcclxuICAgICAgICAgICAgICAgICAgLy8gSWwgY2FtcG8gcmVsYXppb25hdG8gSU5JWklBTE1FTlRFIE5PTiBFJyBOVUxMLCBlIGNhbWJpYSB2YWxvcmUgaW4gcXVhbGNvc2EgY2hlIE5PTiBFJyBOVUxMXHJcbiAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UmVsYXRpb24uYWN0dWFsdmFsdWUgIT0gbnVsbCAmJiB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdICE9IG51bGwgJiYgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSAhPSBjdXJyZW50UmVsYXRpb24uYWN0dWFsdmFsdWUpe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdIEhBIENBTUJJQVRPIFZBTE9SRSEhXCIsIHRoaXMuZmllbGQuTmFtZSwgZmllbGRSZWxhdGVkLCB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdLCB0aGlzLnJlY29yZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlbGF0aW9uLmFjdHVhbHZhbHVlID0gdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXTtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVsYXRpb24ubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZFdpdGhSZWxhdGlvbi5RdWVyeVByb3BlcnR5VmFsdWUgPSB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkQ29tcG9uZW50KCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vIElsIGNhbXBvIHJlbGF6aW9uYXRvIElOSVpJQUxNRU5URSBOT04gRScgTlVMTCwgZSBjYW1iaWEgdmFsb3JlIElOIE5VTExcclxuICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudFJlbGF0aW9uLmFjdHVhbHZhbHVlICE9IG51bGwgJiYgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSA9PSBudWxsKXtcclxuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSBFJyBUT1JOQVRPIEFEIEVTU0VSRSBOVUxMISEgOihcIiwgdGhpcy5maWVsZC5OYW1lLCBmaWVsZFJlbGF0ZWQsIHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0sIHRoaXMucmVjb3JkKTtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVsYXRpb24uYWN0dWFsdmFsdWUgPSB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZWxhdGlvbi5sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkV2l0aFJlbGF0aW9uLlF1ZXJ5UHJvcGVydHlWYWx1ZSA9IFwiIVwiK2ZpZWxkUmVsYXRlZDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVjdXBlcm8gQmFja3VwXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrdXBRdWVzdGlvbkZpZWxkcy5mb3JFYWNoKChib2YpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUub3BlbmVkRmllbGRzLmZpbmQoeCA9PiB4LlByb3BlcnR5TmFtZSA9PSBib2YpLlF1ZXJ5UHJvcGVydHlWYWx1ZSA9IFwiP1wiO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZENvbXBvbmVudCgpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBJbCBjYW1wbyByZWxhemlvbmF0byBJTklaSUFMTUVOVEUgRScgTlVMTCwgZSBjYW1iaWEgdmFsb3JlXHJcbiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRSZWxhdGlvbi5hY3R1YWx2YWx1ZSA9PSBudWxsICYmIHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gIT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gTk9OIEUnIFBJVScgTlVMTCEhIDopXCIsIHRoaXMuZmllbGQuTmFtZSwgZmllbGRSZWxhdGVkLCB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdLCB0aGlzLnJlY29yZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlbGF0aW9uLmFjdHVhbHZhbHVlID0gdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXTtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVsYXRpb24ubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZFdpdGhSZWxhdGlvbi5RdWVyeVByb3BlcnR5VmFsdWUgPSB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkQ29tcG9uZW50KCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tSZWxhdGlvbnMoKTtcclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sMjAwKTtcclxuXHJcblxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF0gTk9OIEUnIE5VTEwhISA6KVwiLCB0aGlzLmZpZWxkLk5hbWUsIGZpZWxkUmVsYXRlZCwgdGhpcy5yZWNvcmRbZmllbGRSZWxhdGVkXSwgdGhpcy5yZWNvcmQpO1xyXG4gICAgICAgICAgICBmaWVsZFdpdGhSZWxhdGlvbi5RdWVyeVByb3BlcnR5VmFsdWUgPSB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdICE9IG51bGwgPyB0aGlzLnJlY29yZFtmaWVsZFJlbGF0ZWRdIDogJyc7XHJcbiAgICAgICAgICAgIHRoaXMucmVsYXRpb25zLnB1c2goe2ZpZWxkOiBmaWVsZFJlbGF0ZWQsIGxvYWRlZDogdHJ1ZSwgYWN0dWFsdmFsdWU6IHRoaXMucmVjb3JkW2ZpZWxkUmVsYXRlZF19KTtcclxuICAgICAgICAgICAgdGhpcy5jaGVja1JlbGF0aW9ucygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgfSk7ICAgICAgICBcclxuXHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIXRoaXMuaGF2ZVJlbGF0aW9ucyl7XHJcbiAgICAgICAgdGhpcy5yZWxhdGlvbnNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9ICAgICBcclxuXHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgaWYgKHRoaXMuZGF0YSA9PSBudWxsKXtcclxuXHJcbiAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoJy4vYXNzZXRzL21vY2t1cHMvbW9ja2VkRnJvbVF1ZXJ5RWRpdG9yX1JFU1VMVF9NQU5ZX05VTUVSSUMudHh0Jywge3Jlc3BvbnNlVHlwZTogJ3RleHQnfSlcclxuICAgICAgLnN1YnNjcmliZShtb2NrZWRGcm9tUXVlcnlFZGl0b3IgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IEpTT04ucGFyc2UobW9ja2VkRnJvbVF1ZXJ5RWRpdG9yKTtcclxuICAgICAgICB0aGlzLmRhdGEgPSBKU09OLnBhcnNlKHRoaXMuZGF0YS5yZXN1bHQpO1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc1Jlc3VsdCh0aGlzLmRhdGEsW10pO1xyXG4gICAgICAgfSk7ICAgICAgXHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHJlbG9hZENvbXBvbmVudCgpe1xyXG4gICAgLy9jb25zb2xlLmxvZyhcIlJFTE9BRCBDT01QT05FTlQgQ0FMTEVEXCIsIHRoaXMucmVjb3JkLCB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5yZWNvcmQpO1xyXG5cclxuICAgIHRoaXMucmVsb2FkID0gZmFsc2U7XHJcbiAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5yZWNvcmQgPSB0aGlzLnJlY29yZDtcclxuICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLmZpZWxkID0gdGhpcy5maWVsZDtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5yZWxvYWQgPSB0cnVlOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiUkVMT0FERUQgUVVFUllFRElUT1JcIik7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSwgMzAwMCk7IFxyXG4gIH1cclxuXHJcbiAgY2hlY2tSZWxhdGlvbnMoKXtcclxuICAgIHRoaXMucmVsYXRpb25zTG9hZGVkID0gdGhpcy5yZWxhdGlvbnMuZmluZCh4ID0+IHgubG9hZGVkKSAhPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgb25FeHRlcm5hbFNRTFJlc3VsdE91dChldjogZXZlbnRPdXQpe1xyXG5cclxuICAgIC8vY29uc29sZS5sb2coXCJSaXN1bHRhdG8gZGVsbCdlbGFib3JhemlvbmUgZGVsIHF1ZXJ5IGVkaXRvcjogb25FeHRlcm5hbFNRTFJlc3VsdE91dFwiLCBldik7XHJcblxyXG4gICAgaWYgKGV2LkJlaGF2aW91cnMuaW5kZXhPZihcInNlbmQtb3V0XCIpICE9IC0xKXsgdGhpcy5vdXQuZW1pdChldik7IH1cclxuXHJcbiAgICB0aGlzLmRhdGEgPSBKU09OLnBhcnNlKGV2LlBhcmFtcy5yZXN1bHQpO1xyXG4gICAgdGhpcy5wcm9jZXNzUmVzdWx0KHRoaXMuZGF0YSxldi5CZWhhdmlvdXJzKTtcclxuXHJcbiAgfVxyXG5cclxuICBwcm9jZXNzUmVzdWx0KGRhdGE6IGFueSwgYmVoYXZpb3VyczogQXJyYXk8c3RyaW5nPiA9IFtdKXtcclxuICAgIFxyXG4gICAgLy9kYXRhIMOoIGwnYXJyYXkgZGVpIHJlY29yZCB0b3JuYXRpIGRhbCBkYlxyXG5cclxuICAgIC8vIHNlIGhvIGRlbGxlIHJpc3Bvc3RlXHJcbiAgICBpZiAoZGF0YS5sZW5ndGggPiAwKXtcclxuXHJcbiAgICAgIC8vIGNvbnRyb2xsbyBxdWFudGkgYXR0cmlidXRpIGhhIGxhIHJpc3Bvc3RhXHJcbiAgICAgIHRoaXMua2V5cyA9IE9iamVjdC5rZXlzKGRhdGFbMF0pO1xyXG5cclxuICAgICAgLy8gc2UgaG8gc29sYW1lbnRlIGwnSUQgZSBpbCBjYW1wbyBzY2VsdG8gZWQgaG8gdW5hIHNvbGEgcmlzcG9zdGEgcHJlbmRvIGlsIHZhbG9yZSBkaXJldHRhbWVudGVcclxuICAgICAgaWYgKHRoaXMua2V5cy5sZW5ndGggPT0gMiAmJiBkYXRhLmxlbmd0aCA9PSAxKXtcclxuICAgICAgICAvLyBTZSBobyB1biBzb2xvIG9jY2hpZXR0byBzZWxlemlvbmF0byBlIGxhIHF1ZXJ5IHJlc3RpdHVpc2NlIHVuIHNvbG8gdmFsb3JlLCBsbyBidXR0byBmdW9yaSBhdXRvbWF0aWNhbWVudGVcclxuICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwibmVsbGEgcmlzcG9zdGEgaG8gc29sYW1lbnRlIGwnSUQgZSBpbCBjYW1wbyBzY2VsdG8gZWQgaG8gdW5hIHNvbGEgcmlzcG9zdGFcIik7XHJcbiAgICAgICAgdGhpcy5zaG93VGFibGUgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzTXVsdGlzZWxlY3Qpe1xyXG4gICAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIm5vbiBtdWx0aXNlbGVjdFwiKTtcclxuICAgICAgICAgIC8vIE5vbiDDqCBtdWx0aXNlbGVjdFxyXG4gICAgICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IGRhdGFbMF1bdGhpcy5rZXlzWzFdXTtcclxuXHJcbiAgICAgICAgICAvLyBDb211bnF1ZSBzaWEgY2kgcG9ydGlhbW8gZGlldHJvIGwnSUQgZGVsbGEgc2VsZXppb25lIGNvbiB1biBjYW1wbyBjdXN0b20sIHB1w7Igc2VtcHJlIHNlcnZpcmVcclxuICAgICAgICAgIGlmKGRhdGFbMF0uaGFzT3duUHJvcGVydHkoXCJJRFwiKSl7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb25zLmFkZGl0aW9uYWxQYXJhbXMgPT0gbnVsbCl7IHRoaXMuY29uZmlndXJhdGlvbnMuYWRkaXRpb25hbFBhcmFtcyA9IHt9OyB9XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMuYWRkaXRpb25hbFBhcmFtc1t0aGlzLmZpZWxkLk5hbWUrXCJfX19fSURcIl0gPSBkYXRhWzBdWydJRCddO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFtkYXRhWzBdW3RoaXMua2V5c1sxXV0sZGF0YVswXVsnSUQnXV0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwibXVsdGlzZWxlY3RcIik7XHJcbiAgICAgICAgICAvLyBFJyB1biBlbGVuY28gZ2VuZXJpY28gZGJnZXR0ZXIgbXVsdGlzZWxlY3RcclxuICAgICAgICAgIC8vIGRldm8gZmFyZ2xpIGxhIHNydXR0dXJhIGRlbCBkYXRvXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSBuZXcgQXJyYXk8TGlzdFZhbHVlRWxlbWVudD4oKTtcclxuICAgICAgICAgIHZhciBzZWxlY3RlZEVsZW1lbnQgPSBuZXcgTGlzdFZhbHVlRWxlbWVudCgpO1xyXG4gICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LklEID0gZGF0YVswXVsnSUQnXTtcclxuICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5GaWVsZCA9IHRoaXMua2V5c1sxXTtcclxuICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5LZXkgPSBkYXRhWzBdW3RoaXMua2V5c1sxXV07XHJcbiAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQuVmFsdWUgPSBkYXRhWzBdW3RoaXMua2V5c1sxXV07XHJcblxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzLnB1c2goc2VsZWN0ZWRFbGVtZW50KTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFt0aGlzLnNlbGVjdGVkRWxlbWVudHNdKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKGRhdGEubGVuZ3RoID09IDEgJiYgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSAhPSBudWxsKXtcclxuICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiaG8gdW5hIHNvbGEgcmlzcG9zdGEgZWQgaG8gdW5hIGNvbG9ubmEgZGEgY3VpIMOoIGZvcnphdG8gaWwgcmVjdXBlcm8gZGVsIHZhbG9yZVwiKTtcclxuXHJcbiAgICAgICAgdGhpcy5zaG93VGFibGUgPSBmYWxzZTtcclxuXHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc011bHRpc2VsZWN0KXtcclxuICAgICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJub24gbXVsdGlzZWxlY3RcIik7XHJcbiAgICAgICAgICAvLyBOb24gw6ggbXVsdGlzZWxlY3RcclxuICAgICAgICAgIHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV0gPSBkYXRhWzBdW3RoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2Uua2V5XTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFtkYXRhWzBdW3RoaXMua2V5c1sxXSxkYXRhWzBdWydJRCddXV0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwibXVsdGlzZWxlY3RcIik7XHJcbiAgICAgICAgICAvLyBFJyB1biBlbGVuY28gZ2VuZXJpY28gZGJnZXR0ZXIgbXVsdGlzZWxlY3RcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IG5ldyBBcnJheTxMaXN0VmFsdWVFbGVtZW50PigpO1xyXG4gICAgICAgICAgdmFyIHNlbGVjdGVkRWxlbWVudCA9IG5ldyBMaXN0VmFsdWVFbGVtZW50KCk7XHJcbiAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQuSUQgPSBkYXRhWzBdWydJRCddO1xyXG4gICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LkZpZWxkID0gdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZS5rZXk7XHJcbiAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQuS2V5ID0gZGF0YVswXVt0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlLmtleV07XHJcbiAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQuVmFsdWUgPSBkYXRhWzBdW3RoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2Uua2V5XTtcclxuXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMucHVzaChzZWxlY3RlZEVsZW1lbnQpO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQoW3RoaXMuc2VsZWN0ZWRFbGVtZW50c10pOyAgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiaG8gcGnDuSBkaSB1bmEgcmlzcG9zdGFcIik7XHJcblxyXG4gICAgICAgIHRoaXMubXVsdGlwbGVWYWx1ZXNUb0Nob29zZSA9IHRydWU7XHJcbiAgICAgICAgaWYgKGJlaGF2aW91cnMuaW5kZXhPZihcIm1hbmFnZS1xdWVzdGlvbi1pbi1kYmdldHRlclwiKSAhPSAtMSl7XHJcbiAgICAgICAgICB0aGlzLnNob3dUYWJsZSA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICBpZiAoIXRoaXMuRGlyZWN0bHlPcGVuVGFibGUpe1xyXG4gICAgICAgICAgICB0aGlzLnNob3dUYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zaG93VGFibGUgPSB0cnVlOyAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgXHJcbiAgICB9XHJcbiAgICBcclxuICB9XHJcblxyXG4gIHNlbGVjdFZhbHVlKHJvdywga2V5KXtcclxuICAgIHZhciBrZXl1c2VkO1xyXG4gICAgdmFyIHZhbHVlID0gcm93W2tleV07XHJcblxyXG4gICAgdmFyIHZhbHVlVG9CZVNldCA9IFwiXCI7XHJcblxyXG4gICAgaWYodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9PSBudWxsKXtcclxuICAgICAgdmFsdWVUb0JlU2V0ID0gdmFsdWU7XHJcbiAgICAgIGtleXVzZWQgPSBrZXk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YWx1ZVRvQmVTZXQgPSByb3dbdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZS5rZXldO1xyXG4gICAgICBrZXl1c2VkID0gdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZS5rZXk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZhbHVlVG9CZVNldCA9PSBudWxsKXsgdmFsdWVUb0JlU2V0ID0gXCJcIjsgfVxyXG5cclxuXHJcbiAgICAvLyBDb211bnF1ZSBzaWEgY2kgcG9ydGlhbW8gZGlldHJvIGwnSUQgZGVsbGEgc2VsZXppb25lIGNvbiB1biBjYW1wbyBjdXN0b20sIHB1w7Igc2VtcHJlIHNlcnZpcmVcclxuICAgIGlmKHJvdy5oYXNPd25Qcm9wZXJ0eShcIklEXCIpKXtcclxuICAgICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbnMuYWRkaXRpb25hbFBhcmFtcyA9PSBudWxsKXsgdGhpcy5jb25maWd1cmF0aW9ucy5hZGRpdGlvbmFsUGFyYW1zID0ge307IH1cclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9ucy5hZGRpdGlvbmFsUGFyYW1zW3RoaXMuZmllbGQuTmFtZStcIl9fX19JRFwiXSA9IHJvd1snSUQnXTtcclxuICAgIH1cclxuICAgIFxyXG5cclxuICAgIC8vRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuU3VjY2VzcyhcIlVuIHNvbG8gcmlzdWx0YXRvIHRyb3ZhdG8sIMOoIHN0YXRvIGluc2VyaXRvIGluIGF1dG9tYXRpY29cIik7XHJcblxyXG4gICAgaWYgKCF0aGlzLmlzTXVsdGlzZWxlY3Qpe1xyXG4gICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwibm9uIG11bHRpc2VsZWN0XCIpO1xyXG4gICAgICAvLyBOb24gw6ggbXVsdGlzZWxlY3RcclxuICAgICAgdGhpcy5yZWNvcmRbdGhpcy5maWVsZC5OYW1lXSA9IHZhbHVlVG9CZVNldDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQoW3ZhbHVlVG9CZVNldCxyb3dbJ0lEJ11dKTsgICAgXHJcbiAgICAgIHRoaXMuc2hvd1RhYmxlID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiaG8gbXVsdGlzZWxlY3RcIik7XHJcblxyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnRzLmZpbmQoeCA9PiB4LklEID09IHJvd1snSUQnXSkgPT0gbnVsbCl7XHJcbiAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImhvIHBpw7kgZGkgdW5hIHJpc3Bvc3RhXCIpO1xyXG5cclxuICAgICAgICAvLyBFJyB1biBlbGVuY28gZ2VuZXJpY28gZGJnZXR0ZXIgbXVsdGlzZWxlY3RcclxuICAgICAgICB2YXIgc2VsZWN0ZWRFbGVtZW50ID0gbmV3IExpc3RWYWx1ZUVsZW1lbnQoKTtcclxuICAgICAgICBzZWxlY3RlZEVsZW1lbnQuSUQgPSByb3dbJ0lEJ107XHJcbiAgICAgICAgc2VsZWN0ZWRFbGVtZW50LlNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICBzZWxlY3RlZEVsZW1lbnQuRmllbGQgPSBrZXl1c2VkO1xyXG4gICAgICAgIHNlbGVjdGVkRWxlbWVudC5LZXkgPSB2YWx1ZVRvQmVTZXQ7XHJcbiAgICAgICAgc2VsZWN0ZWRFbGVtZW50LktleVNWID0ga2V5O1xyXG4gICAgICAgIHNlbGVjdGVkRWxlbWVudC5LZXlVc2VkU1YgPSBrZXl1c2VkO1xyXG4gICAgICAgIHNlbGVjdGVkRWxlbWVudC5WYWx1ZSA9IHZhbHVlVG9CZVNldDtcclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzLnB1c2goc2VsZWN0ZWRFbGVtZW50KTtcclxuXHJcbiAgICAgICAgdmFyIGNvcnJlc3BvbmRpbmdDb2wgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvbC1cIitrZXl1c2VkK1wiLWlkLVwiK3Jvd1snSUQnXSk7XHJcbiAgICAgICAgaWYgKGNvcnJlc3BvbmRpbmdDb2wgPT0gbnVsbCl7IGNvcnJlc3BvbmRpbmdDb2wgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvbC1cIitrZXkrXCItaWQtXCIrcm93WydJRCddKTsgfVxyXG4gICAgICAgIGNvcnJlc3BvbmRpbmdDb2wuY2xhc3NMaXN0LmFkZChcInJvdy1zZWxlY3RlZFwiKTtcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5zZWxlY3RlZEVsZW1lbnRzLmZpbmRJbmRleCh4ID0+IHguSUQgPT0gcm93WydJRCddKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHMuc3BsaWNlKGluZGV4LDEpO1xyXG5cclxuICAgICAgICB2YXIgY29ycmVzcG9uZGluZ0NvbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29sLVwiK2tleXVzZWQrXCItaWQtXCIrcm93WydJRCddKTtcclxuICAgICAgICBpZiAoY29ycmVzcG9uZGluZ0NvbCA9PSBudWxsKXsgY29ycmVzcG9uZGluZ0NvbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29sLVwiK2tleStcIi1pZC1cIityb3dbJ0lEJ10pOyB9XHJcbiAgICAgICAgY29ycmVzcG9uZGluZ0NvbC5jbGFzc0xpc3QucmVtb3ZlKFwicm93LXNlbGVjdGVkXCIpOyAgICAgICAgXHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICAvL3RoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFt0aGlzLnNlbGVjdGVkRWxlbWVudHNdKTsgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgfVxyXG5cclxuXHJcbiAgfVxyXG5cclxuICByZW5kZXJTZWxlY3RlZCgpe1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cyA9IHRoaXMucmVjb3JkW3RoaXMuZmllbGQuTmFtZV07XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnRzID09IG51bGwpeyB0aGlzLnNlbGVjdGVkRWxlbWVudHMgPSBuZXcgQXJyYXk8TGlzdFZhbHVlRWxlbWVudD4oKTsgfVxyXG5cclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJyZW5kZXJTZWxlY3RlZFwiLCB0aGlzLnNlbGVjdGVkRWxlbWVudHMpO1xyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID4gMCl7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cy5mb3JFYWNoKChzZWxlY3RlZEVsZW1lbnQpID0+IHtcclxuICAgICAgICB2YXIgY29ycmVzcG9uZGluZ0NvbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29sLVwiK3NlbGVjdGVkRWxlbWVudC5GaWVsZCtcIi1pZC1cIitzZWxlY3RlZEVsZW1lbnQuSUQpO1xyXG4gICAgICAgIGlmIChjb3JyZXNwb25kaW5nQ29sICE9IG51bGwpIHtcclxuICAgICAgICAgIGNvcnJlc3BvbmRpbmdDb2wuY2xhc3NMaXN0LmFkZChcInJvdy1zZWxlY3RlZFwiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29ycmVzcG9uZGluZ0NvbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29sLVwiK3NlbGVjdGVkRWxlbWVudC5LZXlTVitcIi1pZC1cIitzZWxlY3RlZEVsZW1lbnQuSUQpO1xyXG4gICAgICAgICAgaWYgKGNvcnJlc3BvbmRpbmdDb2wgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBjb3JyZXNwb25kaW5nQ29sLmNsYXNzTGlzdC5hZGQoXCJyb3ctc2VsZWN0ZWRcIik7XHJcbiAgICAgICAgICB9IGVsc2UgIHtcclxuICAgICAgICAgICAgY29ycmVzcG9uZGluZ0NvbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29sLVwiK3NlbGVjdGVkRWxlbWVudC5LZXkrXCItaWQtXCIrc2VsZWN0ZWRFbGVtZW50LklEKTtcclxuICAgICAgICAgICAgaWYgKGNvcnJlc3BvbmRpbmdDb2wgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmdDb2wuY2xhc3NMaXN0LmFkZChcInJvdy1zZWxlY3RlZFwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgY2xvc2UoKXtcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFtcIioqKipDTE9TRSoqKipcIiwwXSk7XHJcbiAgICB0aGlzLnNob3dUYWJsZSA9IGZhbHNlO1xyXG4gIH1cclxuICBcclxuICBkZWxldGUoKXtcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KFtudWxsLDBdKTtcclxuICAgIHRoaXMuc2hvd1RhYmxlID0gZmFsc2U7XHJcbiAgfSAgXHJcblxyXG4gIGFjdGl2YXRlVGFibGUoKXtcclxuICAgIHRoaXMuc2hvd1RhYmxlID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnJlbmRlclNlbGVjdGVkKCk7XHJcbiAgICB9LDIwMCk7XHJcbiAgfVxyXG5cclxuICByZWxvYWREYXRhKCl7XHJcbiAgICB0aGlzLmRvUmVsb2FkLmVtaXQobnVsbCk7XHJcbiAgfSAgXHJcblxyXG4gIHNlbGVjdENvbHVtbihrZXkpe1xyXG4gICAgaWYgKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPT0gbnVsbCl7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW4gPSBrZXk7XHJcbiAgICAgIHRoaXMubXVsdGlzZWxlY3RQaGFzZSA9IDI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25maXJtU2VsZWN0aW9uKCl7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdChbdGhpcy5zZWxlY3RlZEVsZW1lbnRzXSk7IFxyXG4gICAgdGhpcy5zaG93VGFibGUgPSBmYWxzZTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBMaXN0VmFsdWVFbGVtZW50IHtcclxuICBJRDogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIFNlbGVjdGVkOiBib29sZWFuO1xyXG4gIEZpZWxkOiBzdHJpbmc7XHJcbiAgS2V5OiBzdHJpbmc7XHJcbiAgS2V5U1Y6IHN0cmluZztcclxuICBLZXlVc2VkU1Y6IHN0cmluZztcclxuICBWYWx1ZTogc3RyaW5nO1xyXG5cclxufVxyXG5cclxuLy8gTyBjb3PDrCBvIHNjaGlhbnRhdG8gYSBtYW5vXHJcbmV4cG9ydCBlbnVtIFF1ZXJ5RWRpdG9yTW9kZUVudW0ge1xyXG4gIFwiQ09ORklHVVJBVE9SXCIgPSAxLFxyXG4gIFwiQ09NUE9TRVJcIiA9IDIsXHJcbiAgXCJSRVNVTFRcIiA9IDNcclxufSIsIjxkaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgW2FwcER5bmFtaWNMb2FkZXJdIFtkYXRhXT1cIlF1ZXJ5RWRpdG9yQ29tcG9uZW50XCIgKG91dCk9XCJvbkV4dGVybmFsU1FMUmVzdWx0T3V0KCRldmVudCk7XCIgKm5nSWY9XCJRdWVyeUVkaXRvckNvbXBvbmVudCAhPSBudWxsICYmIHJlbGF0aW9uc0xvYWRlZCAmJiByZWxvYWRcIj48L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJmbG9hdGluZ3RhYmxlIGRyYWdnYWJsZVwiIGNka0RyYWcgKm5nSWY9XCJzaG93VGFibGVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPjxtYXQtaWNvbiAoY2xpY2spPVwiY2xvc2UoKVwiPmNsb3NlPC9tYXQtaWNvbj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPjxtYXQtaWNvbiAoY2xpY2spPVwiZGVsZXRlKClcIj5kZWxldGU8L21hdC1pY29uPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPjxtYXQtaWNvbj5kcmFnX2luZGljYXRvcjwvbWF0LWljb24+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5mb1wiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWlzTXVsdGlzZWxlY3RcIj5TZWxlemlvbmEgaWwgdmFsb3JlIGRhIHJlZ2lzdHJhcmUuPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXNNdWx0aXNlbGVjdCAmJiBtdWx0aXNlbGVjdFBoYXNlID09IDFcIj5TZWxlemlvbmEgdW5hIGNvbG9ubmE8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpc011bHRpc2VsZWN0ICYmIG11bHRpc2VsZWN0UGhhc2UgPT0gMiAmJiBzZWxlY3RlZENvbHVtbiAhPSBudWxsICYmIGZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID09IG51bGxcIj5IYWkgc2VsZXppb25hdG86IDxiPnt7c2VsZWN0ZWRDb2x1bW4uc3BsaXQoXCJfX1wiKVsxXX19PC9iPi48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpc011bHRpc2VsZWN0ICYmIG11bHRpc2VsZWN0UGhhc2UgPT0gMlwiPlNlbGV6aW9uYSBhbG1lbm8gdW4gZWxlbWVudG8gcHJlc2VudGUgc290dG8gYWxsYSBjb2xvbm5hIHNlbGV6aW9uYXRhPC9zcGFuPiAgICAgICAgXHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpc011bHRpc2VsZWN0ICYmIG11bHRpc2VsZWN0UGhhc2UgPT0gMiAmJiBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tY29uZmlybVwiIChjbGljayk9XCJjb25maXJtU2VsZWN0aW9uKClcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiA+Y2hlY2s8L21hdC1pY29uPiBDb25mZXJtYSBzZWxlemlvbmVcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgXHJcbiAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZVwiIFtuZ0NsYXNzXT1cInsndGFibGUtbm90Zm9yY2VkJzogZmllbGQuRmllbGRUeXBlICE9IGZpZWxkVHlwZUVudW1bJ0VsZW5jbyBnZW5lcmljbyddICYmIGZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID09IG51bGwsICd0YWJsZS1mb3JjZWQnOiBmaWVsZC5GaWVsZFR5cGUgIT0gZmllbGRUeXBlRW51bVsnRWxlbmNvIGdlbmVyaWNvJ10gJiYgZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgIT0gbnVsbCwgJ3RhYmxlLW11bHRpc2VsZWN0LW5vdGZvcmNlZCc6IGZpZWxkLkZpZWxkVHlwZSA9PSBmaWVsZFR5cGVFbnVtWydFbGVuY28gZ2VuZXJpY28nXSAgJiYgZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPT0gbnVsbCwgJ3RhYmxlLW11bHRpc2VsZWN0LWZvcmNlZCc6IGZpZWxkLkZpZWxkVHlwZSA9PSBmaWVsZFR5cGVFbnVtWydFbGVuY28gZ2VuZXJpY28nXSAgJiYgZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgIT0gbnVsbH1cIj5cclxuICAgICAgICA8dHI+PHRoICpuZ0Zvcj1cImxldCBrZXkgb2Yga2V5czsgbGV0IGZpcnN0ID0gZmlyc3RcIiAoY2xpY2spPVwic2VsZWN0Q29sdW1uKGtleSlcIiBpZD1cImhlYWRjb2wte3trZXl9fVwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpcnN0XCI+e3trZXl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmlyc3RcIj57e2tleS5zcGxpdChcIl9fXCIpWzFdfX08L3NwYW4+XHJcbiAgICAgICAgPC90aD48L3RyPlxyXG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIGRhdGFcIiBjbGFzcz1cInJvd3NcIj5cclxuICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBrZXkgb2Yga2V5c1wiIChjbGljayk9XCJzZWxlY3RWYWx1ZShyb3csIGtleSlcIiBpZD1cImNvbC17e2tleX19LWlkLXt7cm93WydJRCddfX1cIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gXHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvd1trZXldICE9IG51bGwgJiYgcm93W2tleV0udG9TdHJpbmcoKS5sZW5ndGggPD0gMTAwXCIgW2lubmVySFRNTF09XCJyb3dba2V5XVwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvd1trZXldICE9IG51bGwgJiYgcm93W2tleV0udG9TdHJpbmcoKS5sZW5ndGggPiAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e3Jvd1trZXldICE9IG51bGwgPyByb3dba2V5XS50b1N0cmluZygpLnN1YnN0cmluZygwLDEwMCkgOiAnJ319XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvd1trZXldICE9IG51bGwgJiYgcm93W2tleV0udG9TdHJpbmcoKS5sZW5ndGggPiAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAuLi5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwicm93W2tleV1cIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgIDwvdGFibGU+XHJcblxyXG4gICAgPCEtLSBcclxuICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLW5vdGZvcmNlZFwiICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPT0gbnVsbFwiPlxyXG4gICAgICAgIDx0cj48dGggKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzOyBsZXQgZmlyc3QgPSBmaXJzdFwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpcnN0XCI+e3trZXl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmlyc3RcIj57e2tleS5zcGxpdChcIl9fXCIpWzFdfX08L3NwYW4+XHJcbiAgICAgICAgPC90aD48L3RyPlxyXG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIGRhdGFcIiBjbGFzcz1cInJvd3NcIj5cclxuICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBrZXkgb2Yga2V5c1wiIChjbGljayk9XCJzZWxlY3RWYWx1ZU5vdEZvcmNlZChyb3dba2V5XSlcIj5cclxuICAgICAgICAgICAgICAgIHt7cm93W2tleV0gIT0gbnVsbCA/IHJvd1trZXldLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsMTAwKSA6ICcnfX1cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93W2tleV0gIT0gbnVsbCAmJiByb3dba2V5XS50b1N0cmluZygpLmxlbmd0aCA+IDEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIC4uLlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L3RhYmxlPlxyXG5cclxuICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWZvcmNlZFwiICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgIT0gbnVsbFwiPlxyXG4gICAgICAgIDx0cj48dGggKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzOyBsZXQgZmlyc3QgPSBmaXJzdFwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpcnN0XCI+e3trZXl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmlyc3RcIj57e2tleS5zcGxpdChcIl9fXCIpWzFdfX08L3NwYW4+XHJcbiAgICAgICAgPC90aD48L3RyPlxyXG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIGRhdGFcIiBjbGFzcz1cInJvd3NcIiAoY2xpY2spPVwic2VsZWN0VmFsdWVGb3JjZWQocm93KVwiPlxyXG4gICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzXCI+XHJcbiAgICAgICAgICAgICAgICB7e3Jvd1trZXldICE9IG51bGwgPyByb3dba2V5XS50b1N0cmluZygpLnN1YnN0cmluZygwLDEwMCkgOiAnJ319XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvd1trZXldICE9IG51bGwgJiYgcm93W2tleV0udG9TdHJpbmcoKS5sZW5ndGggPiAxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAuLi5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC90YWJsZT5cclxuICAgIC0tPlxyXG5cclxuPC9kaXY+XHJcblxyXG48c3BhbiAqbmdJZj1cInZhbHVlICE9IG51bGxcIj57e3ZhbHVlfX08L3NwYW4+XHJcblxyXG48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1hcnJvdy1kb3duXCIgKGNsaWNrKT1cImFjdGl2YXRlVGFibGUoKVwiICpuZ0lmPVwibXVsdGlwbGVWYWx1ZXNUb0Nob29zZVwiPlxyXG4gICAgPG1hdC1pY29uPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxyXG48L2J1dHRvbj5cclxuPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tYXJyb3ctZG93blwiIChjbGljayk9XCJyZWxvYWREYXRhKClcIiAqbmdJZj1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckhhc1Jlc2V0QnV0dG9uXCI+XHJcbiAgICA8bWF0LWljb24+bG9vcDwvbWF0LWljb24+XHJcbjwvYnV0dG9uPiJdfQ==
@@ -5940,6 +5940,8 @@ class DbgetterComponent {
5940
5940
  selectedElement.Selected = true;
5941
5941
  selectedElement.Field = keyused;
5942
5942
  selectedElement.Key = valueToBeSet;
5943
+ selectedElement.KeySV = key;
5944
+ selectedElement.KeyUsedSV = keyused;
5943
5945
  selectedElement.Value = valueToBeSet;
5944
5946
  this.selectedElements.push(selectedElement);
5945
5947
  var correspondingCol = document.getElementById("col-" + keyused + "-id-" + row['ID']);
@@ -5968,7 +5970,22 @@ class DbgetterComponent {
5968
5970
  GlobalService.debugLog("renderSelected", this.selectedElements);
5969
5971
  if (this.selectedElements.length > 0) {
5970
5972
  this.selectedElements.forEach((selectedElement) => {
5971
- document.getElementById("col-" + selectedElement.Field + "-id-" + selectedElement.ID).classList.add("row-selected");
5973
+ var correspondingCol = document.getElementById("col-" + selectedElement.Field + "-id-" + selectedElement.ID);
5974
+ if (correspondingCol != null) {
5975
+ correspondingCol.classList.add("row-selected");
5976
+ }
5977
+ else {
5978
+ correspondingCol = document.getElementById("col-" + selectedElement.KeySV + "-id-" + selectedElement.ID);
5979
+ if (correspondingCol != null) {
5980
+ correspondingCol.classList.add("row-selected");
5981
+ }
5982
+ else {
5983
+ correspondingCol = document.getElementById("col-" + selectedElement.Key + "-id-" + selectedElement.ID);
5984
+ if (correspondingCol != null) {
5985
+ correspondingCol.classList.add("row-selected");
5986
+ }
5987
+ }
5988
+ }
5972
5989
  });
5973
5990
  }
5974
5991
  }