@bnsights/bbsf-controls 1.0.171 → 1.0.172

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.
@@ -228,6 +228,7 @@ export class TagsInputComponent {
228
228
  }
229
229
  }
230
230
  onTagsChanged(result) {
231
+ this.options.displayValue = "";
231
232
  //console.log(this.tags)
232
233
  if (result["change"] == "add") {
233
234
  this.selectedId.push(result.tag.id);
@@ -249,6 +250,15 @@ export class TagsInputComponent {
249
250
  this.tagsFormControl.updateValueAndValidity();
250
251
  this.group.updateValueAndValidity();
251
252
  this.onChange.emit(originalValue);
253
+ if (this.tags) {
254
+ let displayValues = this.tags;
255
+ displayValues.forEach((tag, index) => {
256
+ this.options.displayValue += tag.name;
257
+ if (index < displayValues.length - 1) {
258
+ this.options.displayValue += ',';
259
+ }
260
+ });
261
+ }
252
262
  this.checkIsTagInFilter();
253
263
  }
254
264
  onNoOptionsMatch(event) {
@@ -300,4 +310,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
300
310
  type: ViewChild,
301
311
  args: ['searchKey', { static: false }]
302
312
  }] } });
303
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFnc0lucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9UYWdzSW5wdXQvVGFnc0lucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9UYWdzSW5wdXQvVGFnc0lucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFXLFFBQVEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFxRCxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDNUssT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUF5RCxNQUFNLGdCQUFnQixDQUFDO0FBSTNILE9BQU8sRUFBRSxLQUFLLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBbUQsbUJBQW1CLEVBQWtCLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7O0FBU2hJLE1BQU0sT0FBTyxrQkFBa0I7YUFDdEIsMkJBQXNCLEdBQUcsSUFBSSxBQUFQLENBQVE7SUFDckMsNENBQTRDO0lBQzVDLFlBQW9CLElBQWdCLEVBQVUsY0FBOEIsRUFBVSxxQkFBNEMsRUFBc0IsZ0JBQWtDLEVBQVMsb0JBQXdDLEVBQ2pPLGNBQThCLEVBQVUsd0JBQWtELEVBQzFGLGNBQThCO1FBRnBCLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBVSwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQXNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBUyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQW9CO1FBQ2pPLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLDZCQUF3QixHQUF4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QUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7WUFDakMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN4QztJQUNILENBQUM7K0dBNVNVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHFUQ2YvQixraEZBeUNBOzs0RkQxQmEsa0JBQWtCO2tCQUw5QixTQUFTOytCQUVFLGdCQUFnQjs7MEJBTTJHLFFBQVE7MktBTXBJLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNvQyxTQUFTO3NCQUFuRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIERvQ2hlY2ssIE9wdGlvbmFsLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFNpbXBsZUNoYW5nZSwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzLCBGb3JtR3JvdXAsIEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IFRhZ3NJbnB1dE9wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL1RhZ3NJbnB1dE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLCBSZXF1ZXN0T3B0aW9uc01vZGVsLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IEdsb2JhbFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0dsb2JhbFNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnQkJTRi1UYWdzSW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9UYWdzSW5wdXQuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWdzSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgc3RhdGljIGNvbnRyb2xDb250YWluZXJzdGF0aWMgPSBudWxsO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgcHJpdmF0ZSByZXF1ZXN0SGFuZGxlclNlcnZpY2U6IFJlcXVlc3RIYW5kbGVyU2VydmljZSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLCBwdWJsaWMgVGFnc0lucHV0Q29udHJvbEhvc3Q6IEZvcm1Hcm91cERpcmVjdGl2ZSxcclxuICAgIHByaXZhdGUgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTogQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnbG9iYWxTZXR0aW5nczogR2xvYmFsU2V0dGluZ3MpIHtcclxuICAgIFRhZ3NJbnB1dENvbXBvbmVudC5jb250cm9sQ29udGFpbmVyc3RhdGljID0gdGhpcy5jb250cm9sQ29udGFpbmVyO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgb3B0aW9uczogVGFnc0lucHV0T3B0aW9ucztcclxuICBASW5wdXQoKSBEcm9wZG93blRlbXBsYXRlVmFyaWFibGU6IGFueTtcclxuICBAT3V0cHV0KCkgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQFZpZXdDaGlsZCgnc2VhcmNoS2V5JywgeyBzdGF0aWM6IGZhbHNlIH0pIHNlYXJjaEtleTogYW55O1xyXG4gIHNlYXJjaEtleVZhbHVlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIC8vIFRhZ0lucHV0Q29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIHNlbGVjdGVkSWQ6IGFueVtdID0gW107XHJcbiAgdGFncyA9IFtdO1xyXG4gIG5ld1NlbGVjdGlvblZhbGlkYXRpb25LZXk6IHN0cmluZyA9IFwiXCI7XHJcbiAgdGFnc0Zvcm1Hcm91cDogRm9ybUdyb3VwO1xyXG4gIHRhZ3NGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIGlzTm9NYXRjaDogYW55O1xyXG4gIG1hcmtBbGxBc1RvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICB2YWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gIGNoYW5nZVZhbHVlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgc2VhcmNoUmVzdWx0SGFzSXRlbXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0ZXh0RGlyO1xyXG4gIHN0YXRpYyBzaG93RXJyb3JPZklucHV0cyhlcnJvcnM6IGFueSkge1xyXG4gICAgY29uc3QgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IFRhZ3NJbnB1dENvbXBvbmVudC5jb250cm9sQ29udGFpbmVyc3RhdGljO1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gY29udHJvbENvbnRhaW5lcnN0YXRpYy5jb250cm9sIGFzIEZvcm1Hcm91cDtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGVycm9ycykge1xyXG4gICAgICBpZiAoZXJyb3JzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZXJhdG9yIG9mIGVycm9yc1trZXldKSB7XHJcbiAgICAgICAgICBjb25zdCBmb3JtQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoa2V5KSBhcyBGb3JtQ29udHJvbDtcclxuICAgICAgICAgIGZvcm1Db250cm9sLnNldEVycm9ycyh7IFwiRmx1ZW50QXBpXCI6IGl0ZXJhdG9yIH0pO1xyXG4gICAgICAgICAgZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNoYW5nZVZhbHVlU3Vic2NyaXB0aW9uKVxyXG4gICAgICB0aGlzLmNoYW5nZVZhbHVlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5uYW1lKVxyXG4gICAgICB0aGlzLm5hbWUgPSB0aGlzLm9wdGlvbnMubmFtZTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmlzUmVhZG9ubHkgJiYgIXRoaXMub3B0aW9ucy52YWx1ZSlcclxuICAgICAgdGhpcy5vcHRpb25zLnZhbHVlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdOQScpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZm9yY2VEaXJlY3Rpb24pXHJcbiAgICAgIHRoaXMudGV4dERpciA9IHRoaXMub3B0aW9ucy5mb3JjZURpcmVjdGlvbiA9PSAyID8gJ3J0bCcgOiAnbHRyJztcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy50ZXh0RGlyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykgPT0gJ2FyJyA/ICdydGwnIDogJ2x0cic7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5pc0NyZWF0ZWRCZWZvciA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMub3B0aW9ucy5kYXRhc291cmNlSXRlbVRleHQgPSB0aGlzLm9wdGlvbnMuZGF0YXNvdXJjZUl0ZW1UZXh0LnRvTG93ZXJDYXNlKCk7XHJcbiAgICB0aGlzLnRhZ3NGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTs7XHJcbiAgICB0aGlzLnRhZ3NGb3JtR3JvdXAuYWRkQ29udHJvbChcInRhZ3NcIiwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbCA9IHRoaXMudGFnc0Zvcm1Hcm91cC5jb250cm9sc1tcInRhZ3NcIl07IC8vICBuZXcgRm9ybUNvbnRyb2woJycsdmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm5hbWUsIHRoaXMudGFnc0Zvcm1Db250cm9sKTtcclxuXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy52aWV3VHlwZSlcclxuICAgICAgdGhpcy5vcHRpb25zLnZpZXdUeXBlID0gdGhpcy5nbG9iYWxTZXR0aW5ncy52aWV3VHlwZTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmxhYmVsS2V5ICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLmxhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5sYWJlbFZhbHVlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5sYWJlbEtleSk7XHJcblxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMubm9SZXN1bHRUZXh0KVxyXG4gICAgICB0aGlzLm9wdGlvbnMubm9SZXN1bHRUZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTm9JdGVtc01hdGNoXCIpO1xyXG5cclxuICAgIC8vIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm9wdGlvbnMuTmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICAvLyB0aGlzLlRhZ0lucHV0Q29udHJvbCA9IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5vcHRpb25zLk5hbWVdOyAvLyAgbmV3IEZvcm1Db250cm9sKCcnLHZhbGlkYXRpb25SdWxlcyk7XHJcblxyXG4gICAgdGhpcy50YWdzRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5vcHRpb25zLnZhbHVlKTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmlzUmVxdWlyZWQpIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmN1c3RvbVZhbGlkYXRpb24ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgVmFsaWRhdGlvbnMgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmFsaWRhdGlvbjtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFZhbGlkYXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IFZhbGlkYXRpb24gPSBWYWxpZGF0aW9uc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgIH1cclxuXHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlc2FzeW5jKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy52YWx1ZSAhPSB1bmRlZmluZWQgJiYgdGhpcy5vcHRpb25zLnZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9ucy52YWx1ZS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5vcHRpb25zLnZhbHVlW2luZGV4XTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSWQucHVzaChlbGVtZW50LmlkKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRhZ3MgPSB0aGlzLm9wdGlvbnMudmFsdWU7XHJcbiAgICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5UYWdzSW5wdXRDb250cm9sSG9zdC5uZ1N1Ym1pdC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JvdXAubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICAvL0NoZWNrIGZvciBjaGFuZ2luZyBpbiB2YWx1ZVxyXG4gICAgdGhpcy5jaGFuZ2VWYWx1ZVN1YnNjcmlwdGlvbiA9IHRoaXMudGFnc0Zvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoYyA9PiB7XHJcbiAgICAgIHRoaXMudGFncyA9IHRoaXMudGFnc0Zvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSWQgPSB0aGlzLnRhZ3M/LmZpbHRlcihpdGVtID0+IGl0ZW0uaWQpLm1hcChpdGVtID0+IGl0ZW0uaWQpO1xyXG4gICAgICBpZiAodGhpcy50YWdzID09IG51bGwpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoS2V5KSBcclxuICAgICAgICAgIHRoaXMuc2VhcmNoS2V5ID0ge307XHJcblxyXG4gICAgICAgIHRoaXMuc2VhcmNoS2V5LnNlbGVjdGVkID0gXCJcIjtcclxuICAgICAgICB0aGlzLnRhZ3MgPSBbXTtcclxuICAgICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC5zZXRWYWx1ZShbXSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmF0dHJpYnV0ZUxpc3QgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMubmFtZSk7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuYXR0cmlidXRlTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSh0aGlzLm9wdGlvbnMuYXR0cmlidXRlTGlzdFtpbmRleF0ua2V5LCB0aGlzLm9wdGlvbnMuYXR0cmlidXRlTGlzdFtpbmRleF0udmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5uYW1lKS5nZXRFbGVtZW50c0J5VGFnTmFtZShcImlucHV0XCIpWzBdO1xyXG4gICAgaW5wdXRFbGVtZW50LnNldEF0dHJpYnV0ZShcImF1dG9jb21wbGV0ZVwiLCBcIm9mZlwiKTtcclxuICB9XHJcblxyXG4gIHJlc2V0RXJyb3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5yZW1vdmVHbG9iYWxFcnJvcigpO1xyXG4gIH07XHJcblxyXG4gIHNob3dHbG9iYWxFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2hvd0dsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvclZhbGlkYXRpb24oRXJyb3JMaXN0KSB7XHJcbiAgICBpZiAodGhpcy5tYXJrQWxsQXNUb3VjaGVkICYmIHRoaXMuZ3JvdXAuaW52YWxpZCkge1xyXG4gICAgICB0aGlzLnNob3dHbG9iYWxFcnJvcigpO1xyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9sVXRpbGl0eS5nZXRFcnJvclZhbGlkYXRpb25NYXNzYWdlKEVycm9yTGlzdCwgdGhpcy5ncm91cCwgdGhpcy5vcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGNvcHlJbnB1dE1lc3NhZ2UoaW5wdXRFbGVtZW50KSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkNvcHlJbnB1dE1lc3NhZ2UoaW5wdXRFbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHNlYXJjaEZ1bmN0aW9uRmFjdG9yeShUZXh0OiBhbnkpOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xyXG4gICAgLy9JZiBubyB0ZXh0IHRoZW4gcmV0dXJuIGVtcHR5IG9ic2VydmFibGVcclxuICAgIGlmICghVGV4dCkge1xyXG4gICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC5zZXRFcnJvcnMoeyBcImVycm9yTWFzc2FnZVwiOiBudWxsIH0pO1xyXG4gICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIHJldHVybiBFTVBUWTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlYXJjaEtleVZhbHVlID09IFRleHQpXHJcbiAgICAgIHJldHVybjtcclxuICAgIHRoaXMuc2VhcmNoS2V5VmFsdWUgPSBUZXh0O1xyXG4gICAgbGV0IFVybCA9IGAke3RoaXMub3B0aW9ucy5hY3Rpb25VUkx9PyR7dGhpcy5vcHRpb25zLnF1ZXJ5UGFyYW1OYW1lfT0ke2VuY29kZVVSSUNvbXBvbmVudChUZXh0KX0mJHt0aGlzLm9wdGlvbnMuc2VsZWN0ZWRJdGVtc1BhcmFtTmFtZX09JHt0aGlzLnNlbGVjdGVkSWR9YDtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZXh0cmFGaWx0ZXJzKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLmV4dHJhRmlsdGVycyA9PT0gXCJzdHJpbmdcIilcclxuICAgICAgICBVcmwgPSBVcmwgKyBgJiR7dGhpcy5vcHRpb25zLmV4dHJhRmlsdGVyc31gO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgVXJsID0gVXJsICsgYCYke3RoaXMub3B0aW9ucy5leHRyYUZpbHRlcnMoKX1gO1xyXG4gICAgfVxyXG4gICAgbGV0IHJlcXVlc3RPcHRpb25zTW9kZWwgPSBuZXcgUmVxdWVzdE9wdGlvbnNNb2RlbCgpO1xyXG4gICAgcmVxdWVzdE9wdGlvbnNNb2RlbC5kaXNhYmxlQmxvY2tVSSA9IHRydWU7XHJcbiAgICByZXF1ZXN0T3B0aW9uc01vZGVsLmRpc2FibGVTdWNjZXNzTm90aWZpY2F0aW9uID0gdHJ1ZTtcclxuICAgIGxldCBNb2RlbCA9IHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmdldChVcmwsIG51bGwsIG51bGwsIHJlcXVlc3RPcHRpb25zTW9kZWwpO1xyXG4gICAgcmV0dXJuIE1vZGVsIGFzIGFueTtcclxuICB9XHJcblxyXG4gIGFkZFRhZyhldmVudCwga2V5KSB7XHJcbiAgICAvL0NoZWNrIGlmIGlucHV0IGlzIHlhYiBwcmVzc1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gXCJUYWJcIilcclxuICAgICAgcmV0dXJuO1xyXG4gICAgLy9DaGVjayBpZiBpbnB1dCBpcyBlbnRlciBwcmVzc1xyXG4gICAgaWYgKHRoaXMuaXNOb01hdGNoID09IHRydWUgJiYgZXZlbnQua2V5ID09IFwiRW50ZXJcIiAmJiB0aGlzLm9wdGlvbnMuYWxsb3dOZXdTZWxlY3Rpb24gJiYga2V5LnNlbGVjdGVkKSB7XHJcbiAgICAgIGlmICghKHRoaXMudGFncy5sZW5ndGggPj0gdGhpcy5vcHRpb25zLm1heE51bWJlclRhZ3MpKSB7XHJcbiAgICAgICAgdGhpcy50YWdzLnB1c2goeyBuYW1lOiBrZXkuc2VsZWN0ZWQgfSk7XHJcbiAgICAgICAgdGhpcy5ncm91cC5nZXQodGhpcy5uYW1lKS5zZXRWYWx1ZSh0aGlzLnRhZ3MpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMubmFtZSkubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIGlmICh0aGlzLmdyb3VwLmdldCh0aGlzLm5hbWUpLnZhbGlkKSB7XHJcbiAgICAgICAgICBrZXkuc2VsZWN0ZWQgPSBudWxsO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLnRhZ3MucG9wKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vQ2hlY2sgaWYgaW5wdXQgaXMgY2hhcmFjaHRlclxyXG4gICAgZWxzZSBpZiAoU3RyaW5nLmZyb21DaGFyQ29kZShldmVudC5rZXlDb2RlKS5tYXRjaCgvKFxcd3xcXHMpL2cpKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzTm9NYXRjaCAmJiAhdGhpcy5vcHRpb25zLmFsbG93TmV3U2VsZWN0aW9uICYmIGtleS5zZWxlY3RlZCkge1xyXG4gICAgICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLnNldEVycm9ycyh7IFwiZXJyb3JNYXNzYWdlXCI6IHRoaXMub3B0aW9ucy5ub1Jlc3VsdFRleHQgfSk7XHJcbiAgICAgICAgdGhpcy50YWdzRm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuaXNOb01hdGNoID09IGZhbHNlICYmIHRoaXMub3B0aW9ucy5hbGxvd05ld1NlbGVjdGlvbiA9PSBmYWxzZSkge1xyXG4gICAgICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy9SZW1vdmUgdW5tYXRjaGVkIGVycm9yIGluY2FzZSBvZiBkZWxldGluZyBzZWFyY2ggdmFsdWVcclxuICAgIGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gXCJCYWNrc3BhY2VcIiAmJiBrZXkuc2VsZWN0ZWQ/Lmxlbmd0aCA8PSAxICYmIHRoaXMudGFnc0Zvcm1Db250cm9sLmhhc0Vycm9yKCdlcnJvck1hc3NhZ2UnKSkge1xyXG4gICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC5zZXRFcnJvcnMoeyBcImVycm9yTWFzc2FnZVwiOiBudWxsIH0pO1xyXG4gICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSWQ/Lmxlbmd0aCA9PSAwICYmIHRoaXMub3B0aW9ucy5pc1JlcXVpcmVkKSB7XHJcbiAgICAgICAgdGhpcy50YWdzRm9ybUNvbnRyb2wuc2V0RXJyb3JzKHsgcmVxdWlyZWQ6IFwiXCIgfSk7XHJcbiAgICAgICAgdGhpcy50YWdzRm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblRhZ3NDaGFuZ2VkKHJlc3VsdCkge1xyXG4gICAgLy9jb25zb2xlLmxvZyh0aGlzLnRhZ3MpXHJcbiAgICBpZiAocmVzdWx0W1wiY2hhbmdlXCJdID09IFwiYWRkXCIpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZElkLnB1c2gocmVzdWx0LnRhZy5pZCk7XHJcbiAgICB9XHJcbiAgICBpZiAocmVzdWx0W1wiY2hhbmdlXCJdID09IFwicmVtb3ZlXCIpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZElkID0gdGhpcy5zZWxlY3RlZElkLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPSByZXN1bHQudGFnLmlkKTtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJZC5sZW5ndGggPT0gMCAmJiB0aGlzLm9wdGlvbnMuaXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy50YWdzRm9ybUNvbnRyb2wuc2V0RXJyb3JzKHsgcmVxdWlyZWQ6IFwiXCIgfSk7XHJcbiAgICAgICAgdGhpcy50YWdzRm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLmludmFsaWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBvcmlnaW5hbFZhbHVlID0gdGhpcy50YWdzRm9ybUNvbnRyb2wudmFsdWUubWFwKGZ1bmN0aW9uIChhKSB7IHJldHVybiBhLmlkOyB9KTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMucGF0Y2hGdW5jdGlvbiAmJiB0aGlzLm9wdGlvbnMucGF0Y2hQYXRoICYmIHRoaXMudGFnc0Zvcm1Db250cm9sLnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0Y2hDb250cm9sVmFsdWUob3JpZ2luYWxWYWx1ZSwgdGhpcy5vcHRpb25zLnBhdGNoRnVuY3Rpb24sIHRoaXMub3B0aW9ucy5wYXRjaFBhdGgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLnZhbHVlID0gdGhpcy50YWdzO1xyXG4gICAgdGhpcy5ncm91cC5nZXQodGhpcy5uYW1lKS5zZXRWYWx1ZSh0aGlzLnRhZ3MpO1xyXG4gICAgdGhpcy50YWdzRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5ncm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQob3JpZ2luYWxWYWx1ZSk7XHJcbiAgICB0aGlzLmNoZWNrSXNUYWdJbkZpbHRlcigpO1xyXG4gIH1cclxuXHJcbiAgb25Ob09wdGlvbnNNYXRjaChldmVudCkge1xyXG4gICAgdGhpcy5pc05vTWF0Y2ggPSBldmVudDtcclxuICB9XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgcmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5yZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24odGhpcy50YWdzRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpO1xyXG4gIH07XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBhZGRSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LmFkZFJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLnRhZ3NGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucyk7XHJcbiAgfTtcclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG5cclxuICByZW1vdmVDdXN0b21WYWxpZGF0aW9uID0gKGN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkucmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbih0aGlzLnRhZ3NGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIGN1c3RvbVZhbGlkYXRpb24pO1xyXG4gIH07XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBhZGRDdXN0b21WYWxpZGF0aW9uID0gKGN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuYWRkQ3VzdG9tVmFsaWRhdGlvbih0aGlzLnRhZ3NGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIGN1c3RvbVZhbGlkYXRpb24pO1xyXG4gIH07XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgaXNWYWxpZCA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuaXNWYWxpZCh0aGlzLnRhZ3NGb3JtQ29udHJvbCk7XHJcbiAgfTtcclxuXHJcbiAgb25UYWdzSW5wdXRCbHVyKFNlYXJjaEtleSkge1xyXG4gICAgaWYgKFNlYXJjaEtleS5zZWxlY3RlZCAmJiB0aGlzLm9wdGlvbnMuYWxsb3dOZXdTZWxlY3Rpb24gJiYgdGhpcy5pc05vTWF0Y2ggJiYgdGhpcy50YWdzLmxlbmd0aCA8IHRoaXMub3B0aW9ucy5tYXhOdW1iZXJUYWdzKSB7XHJcbiAgICAgIHRoaXMudGFncy5wdXNoKHsgbmFtZTogU2VhcmNoS2V5LnNlbGVjdGVkIH0pO1xyXG4gICAgICB0aGlzLmdyb3VwLmdldCh0aGlzLm5hbWUpLnNldFZhbHVlKHRoaXMudGFncyk7XHJcbiAgICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMubmFtZSkubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLmdyb3VwLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgaWYgKHRoaXMuZ3JvdXAuZ2V0KHRoaXMubmFtZSkudmFsaWQpIHtcclxuICAgICAgICBTZWFyY2hLZXkuc2VsZWN0ZWQgPSBudWxsO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy50YWdzLnBvcCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRUYWdzVmFsdWUoKSB7XHJcbiAgICBpZiAodGhpcy50YWdzLmxlbmd0aCA+IDApXHJcbiAgICAgIHJldHVybiB0aGlzLnRhZ3MubWFwKGl0ZW0gPT4gaXRlbS5uYW1lKTtcclxuICB9XHJcblxyXG4gIGNoZWNrSXNUYWdJbkZpbHRlcigpIHtcclxuICAgIGlmICh0aGlzLkRyb3Bkb3duVGVtcGxhdGVWYXJpYWJsZSkge1xyXG4gICAgICB0aGlzLkRyb3Bkb3duVGVtcGxhdGVWYXJpYWJsZS50b2dnbGUoKTtcclxuICAgICAgdGhpcy5Ecm9wZG93blRlbXBsYXRlVmFyaWFibGUudG9nZ2xlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBiYnNmLWNvbnRyb2wgYmJzZi10YWdzLWlucHV0XCIgW2Zvcm1Hcm91cF09XCJ0YWdzRm9ybUdyb3VwXCI+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cIihvcHRpb25zLnZpZXdUeXBlPT0xKT8nYmJzZi12ZXJ0aWNhbCc6J2Jic2YtaG9yaXpvbnRhbCdcIj5cclxuICAgICAgPCEtLWxhYmVsLS0+XHJcbiAgICAgIDxsYWJlbCAqbmdJZj1cIiFvcHRpb25zLmhpZGVMYWJlbFwiIGNsYXNzPVwiYmJzZi1sYWJlbCB7e29wdGlvbnMubGFiZWxFeHRyYUNsYXNzZXN9fVwiPlxyXG4gICAgICAgIHt7b3B0aW9ucy5sYWJlbFZhbHVlfX1cclxuICAgICAgICA8IS0tQXN0ZXJpc2stLT5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIigob3B0aW9ucy5zaG93QXN0ZXJpc2smJm9wdGlvbnMuaXNSZXF1aXJlZCl8fChvcHRpb25zLmlzUmVxdWlyZWQpKSYmIW9wdGlvbnMuaXNSZWFkb25seVwiXHJcbiAgICAgICAgICBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgPC9sYWJlbD5cclxuICAgICAgPCEtLWlucHV0LS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLWlucHV0LWNvbnRhaW5lclwiICpuZ0lmPVwiIW9wdGlvbnMuaXNSZWFkb25seVwiPlxyXG4gICAgICAgIDxiLXRhZ3MtaW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCB7e29wdGlvbnMuZXh0cmFDbGFzc2VzfX1cIiBbZGlyXT1cInRleHREaXJcIlxyXG4gICAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cImVtYWlsLWVycm9yXCIgYXJpYS1pbnZhbGlkPVwidHJ1ZVwiIGZvcm1Db250cm9sTmFtZT1cInRhZ3NcIlxyXG4gICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwidGFnc0Zvcm1Db250cm9sLmludmFsaWQgJiYgdGFnc0Zvcm1Db250cm9sLnRvdWNoZWRcIiBwbGFjZWhvbGRlcj1cInt7b3B0aW9ucy5wbGFjZWhvbGRlcn19XCJcclxuICAgICAgICAgIGlkPVwie3tuYW1lfX1cIiAob25UYWdzQ2hhbmdlZCk9XCJvblRhZ3NDaGFuZ2VkKCRldmVudClcIiBbKG5nTW9kZWwpXT1cInRhZ3NcIlxyXG4gICAgICAgICAgW3JlbW92ZUxhc3RPbkJhY2tzcGFjZV09XCJvcHRpb25zLnJlbW92ZUxhc3RPbkJhY2tzcGFjZVwiIChvbk5vT3B0aW9uc01hdGNoKT1cIm9uTm9PcHRpb25zTWF0Y2goJGV2ZW50KVwiXHJcbiAgICAgICAgICBbb3B0aW9uc109XCJzZWFyY2hGdW5jdGlvbkZhY3Rvcnkoc2VhcmNoS2V5LnNlbGVjdGVkKVwiICNzZWFyY2hLZXlcclxuICAgICAgICAgIFtzY3JvbGxhYmxlT3B0aW9uc109XCJvcHRpb25zLnNjcm9sbGFibGVPcHRpb25zXCIgW3Njcm9sbGFibGVPcHRpb25zSW5WaWV3XT1cIm9wdGlvbnMubWF4U2VhcmNoUmVzdWx0c0NvdW50XCJcclxuICAgICAgICAgIChrZXlkb3duKT1cImFkZFRhZygkZXZlbnQsc2VhcmNoS2V5KVwiIFtWaWV3TW9kZV09XCJvcHRpb25zLnRhZ0lucHV0TW9kZVwiIFttYXhUYWdzXT1cIm9wdGlvbnMubWF4TnVtYmVyVGFnc1wiXHJcbiAgICAgICAgICBbbWluTGVuZ3RoQmVmb3JlT3B0aW9uc109XCJvcHRpb25zLm1pblNlYXJjaExlbmd0aFwiIFtzaG93RGVzY3JpcHRpb25dPVwib3B0aW9ucy5zaG93RGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgW2RlZmF1bHRJbWFnZVVSTF09XCJvcHRpb25zLmRlZmF1bHRJbWdVcmxcIiBuYW1lPVwidGFnc1wiIChvbkJsdXJJbnB1dCk9XCJvblRhZ3NJbnB1dEJsdXIoc2VhcmNoS2V5KVwiPlxyXG4gICAgICAgIDwvYi10YWdzLWlucHV0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSByZWFkb25seSAtLT5cclxuICAgICAgPGRpdiAqbmdJZj1cIm9wdGlvbnMuaXNSZWFkb25seVwiPjxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmlld1wiPnt7Z2V0VGFnc1ZhbHVlKCl9fTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzdWJ0ZXh0LWNvbnRhaW5lclwiICpuZ0lmPVwiIW9wdGlvbnMuaXNSZWFkb25seVwiPlxyXG4gICAgICA8IS0tIExhYmVsRGVzY3JpcHRpb24tLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImJic2YtY29udHJvbC1kZXNjXCIgKm5nSWY9XCJvcHRpb25zLmxhYmVsRGVzY3JpcHRpb24hPW51bGxcIj57e29wdGlvbnMubGFiZWxEZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICAgIDwhLS0gcmVxdWlyZWRUZXh0LS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLXZhbGlkYXRpb25cIiAqbmdJZj1cIih0YWdzRm9ybUNvbnRyb2wuaW52YWxpZCAmJiB0YWdzRm9ybUNvbnRyb2wudG91Y2hlZClcIj5cclxuICAgICAgICB7e2dldEVycm9yVmFsaWRhdGlvbih0YWdzRm9ybUNvbnRyb2wuZXJyb3JzfGtleXZhbHVlKX19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiKGdyb3VwLnZhbGlkJiZncm91cC5kaXJ0eSYmZ3JvdXAudG91Y2hlZCApfHwoZ3JvdXAudW50b3VjaGVkJiZncm91cC5pbnZhbGlkJiZncm91cC5kaXJ0eSlcIj5cclxuICAgICAge3tyZXNldEVycm9yKCl9fTwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcbiJdfQ==
313
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFnc0lucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9UYWdzSW5wdXQvVGFnc0lucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9UYWdzSW5wdXQvVGFnc0lucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFXLFFBQVEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFxRCxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDNUssT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUF5RCxNQUFNLGdCQUFnQixDQUFDO0FBSTNILE9BQU8sRUFBRSxLQUFLLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBbUQsbUJBQW1CLEVBQWtCLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7O0FBU2hJLE1BQU0sT0FBTyxrQkFBa0I7YUFDdEIsMkJBQXNCLEdBQUcsSUFBSSxBQUFQLENBQVE7SUFDckMsNENBQTRDO0lBQzVDLFlBQW9CLElBQWdCLEVBQVUsY0FBOEIsRUFBVSxxQkFBNEMsRUFBc0IsZ0JBQWtDLEVBQVMsb0JBQXdDLEVBQ2pPLGNBQThCLEVBQVUsd0JBQWtELEVBQzFGLGNBQThCO1FBRnBCLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBVSwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQXNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBUyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQW9CO1FBQ2pPLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLDZCQUF3QixHQUF4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SW5pdCwgSW5wdXQsIERvQ2hlY2ssIE9wdGlvbmFsLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFNpbXBsZUNoYW5nZSwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzLCBGb3JtR3JvdXAsIEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IFRhZ3NJbnB1dE9wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL1RhZ3NJbnB1dE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLCBSZXF1ZXN0T3B0aW9uc01vZGVsLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IEdsb2JhbFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0dsb2JhbFNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnQkJTRi1UYWdzSW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9UYWdzSW5wdXQuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWdzSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgc3RhdGljIGNvbnRyb2xDb250YWluZXJzdGF0aWMgPSBudWxsO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgcHJpdmF0ZSByZXF1ZXN0SGFuZGxlclNlcnZpY2U6IFJlcXVlc3RIYW5kbGVyU2VydmljZSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLCBwdWJsaWMgVGFnc0lucHV0Q29udHJvbEhvc3Q6IEZvcm1Hcm91cERpcmVjdGl2ZSxcclxuICAgIHByaXZhdGUgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTogQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnbG9iYWxTZXR0aW5nczogR2xvYmFsU2V0dGluZ3MpIHtcclxuICAgIFRhZ3NJbnB1dENvbXBvbmVudC5jb250cm9sQ29udGFpbmVyc3RhdGljID0gdGhpcy5jb250cm9sQ29udGFpbmVyO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgb3B0aW9uczogVGFnc0lucHV0T3B0aW9ucztcclxuICBASW5wdXQoKSBEcm9wZG93blRlbXBsYXRlVmFyaWFibGU6IGFueTtcclxuICBAT3V0cHV0KCkgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQFZpZXdDaGlsZCgnc2VhcmNoS2V5JywgeyBzdGF0aWM6IGZhbHNlIH0pIHNlYXJjaEtleTogYW55O1xyXG4gIHNlYXJjaEtleVZhbHVlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIC8vIFRhZ0lucHV0Q29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIHNlbGVjdGVkSWQ6IGFueVtdID0gW107XHJcbiAgdGFncyA9IFtdO1xyXG4gIG5ld1NlbGVjdGlvblZhbGlkYXRpb25LZXk6IHN0cmluZyA9IFwiXCI7XHJcbiAgdGFnc0Zvcm1Hcm91cDogRm9ybUdyb3VwO1xyXG4gIHRhZ3NGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIGlzTm9NYXRjaDogYW55O1xyXG4gIG1hcmtBbGxBc1RvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICB2YWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gIGNoYW5nZVZhbHVlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgc2VhcmNoUmVzdWx0SGFzSXRlbXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0ZXh0RGlyO1xyXG4gIHN0YXRpYyBzaG93RXJyb3JPZklucHV0cyhlcnJvcnM6IGFueSkge1xyXG4gICAgY29uc3QgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IFRhZ3NJbnB1dENvbXBvbmVudC5jb250cm9sQ29udGFpbmVyc3RhdGljO1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gY29udHJvbENvbnRhaW5lcnN0YXRpYy5jb250cm9sIGFzIEZvcm1Hcm91cDtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGVycm9ycykge1xyXG4gICAgICBpZiAoZXJyb3JzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZXJhdG9yIG9mIGVycm9yc1trZXldKSB7XHJcbiAgICAgICAgICBjb25zdCBmb3JtQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoa2V5KSBhcyBGb3JtQ29udHJvbDtcclxuICAgICAgICAgIGZvcm1Db250cm9sLnNldEVycm9ycyh7IFwiRmx1ZW50QXBpXCI6IGl0ZXJhdG9yIH0pO1xyXG4gICAgICAgICAgZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNoYW5nZVZhbHVlU3Vic2NyaXB0aW9uKVxyXG4gICAgICB0aGlzLmNoYW5nZVZhbHVlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5uYW1lKVxyXG4gICAgICB0aGlzLm5hbWUgPSB0aGlzLm9wdGlvbnMubmFtZTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmlzUmVhZG9ubHkgJiYgIXRoaXMub3B0aW9ucy52YWx1ZSlcclxuICAgICAgdGhpcy5vcHRpb25zLnZhbHVlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdOQScpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZm9yY2VEaXJlY3Rpb24pXHJcbiAgICAgIHRoaXMudGV4dERpciA9IHRoaXMub3B0aW9ucy5mb3JjZURpcmVjdGlvbiA9PSAyID8gJ3J0bCcgOiAnbHRyJztcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy50ZXh0RGlyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykgPT0gJ2FyJyA/ICdydGwnIDogJ2x0cic7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5pc0NyZWF0ZWRCZWZvciA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMub3B0aW9ucy5kYXRhc291cmNlSXRlbVRleHQgPSB0aGlzLm9wdGlvbnMuZGF0YXNvdXJjZUl0ZW1UZXh0LnRvTG93ZXJDYXNlKCk7XHJcbiAgICB0aGlzLnRhZ3NGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTs7XHJcbiAgICB0aGlzLnRhZ3NGb3JtR3JvdXAuYWRkQ29udHJvbChcInRhZ3NcIiwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbCA9IHRoaXMudGFnc0Zvcm1Hcm91cC5jb250cm9sc1tcInRhZ3NcIl07IC8vICBuZXcgRm9ybUNvbnRyb2woJycsdmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm5hbWUsIHRoaXMudGFnc0Zvcm1Db250cm9sKTtcclxuXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy52aWV3VHlwZSlcclxuICAgICAgdGhpcy5vcHRpb25zLnZpZXdUeXBlID0gdGhpcy5nbG9iYWxTZXR0aW5ncy52aWV3VHlwZTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmxhYmVsS2V5ICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLmxhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5sYWJlbFZhbHVlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5sYWJlbEtleSk7XHJcblxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMubm9SZXN1bHRUZXh0KVxyXG4gICAgICB0aGlzLm9wdGlvbnMubm9SZXN1bHRUZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTm9JdGVtc01hdGNoXCIpO1xyXG5cclxuICAgIC8vIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm9wdGlvbnMuTmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICAvLyB0aGlzLlRhZ0lucHV0Q29udHJvbCA9IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5vcHRpb25zLk5hbWVdOyAvLyAgbmV3IEZvcm1Db250cm9sKCcnLHZhbGlkYXRpb25SdWxlcyk7XHJcblxyXG4gICAgdGhpcy50YWdzRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5vcHRpb25zLnZhbHVlKTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmlzUmVxdWlyZWQpIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmN1c3RvbVZhbGlkYXRpb24ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgVmFsaWRhdGlvbnMgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmFsaWRhdGlvbjtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFZhbGlkYXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IFZhbGlkYXRpb24gPSBWYWxpZGF0aW9uc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgIH1cclxuXHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlc2FzeW5jKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy52YWx1ZSAhPSB1bmRlZmluZWQgJiYgdGhpcy5vcHRpb25zLnZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9ucy52YWx1ZS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5vcHRpb25zLnZhbHVlW2luZGV4XTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSWQucHVzaChlbGVtZW50LmlkKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRhZ3MgPSB0aGlzLm9wdGlvbnMudmFsdWU7XHJcbiAgICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5UYWdzSW5wdXRDb250cm9sSG9zdC5uZ1N1Ym1pdC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JvdXAubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICAvL0NoZWNrIGZvciBjaGFuZ2luZyBpbiB2YWx1ZVxyXG4gICAgdGhpcy5jaGFuZ2VWYWx1ZVN1YnNjcmlwdGlvbiA9IHRoaXMudGFnc0Zvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoYyA9PiB7XHJcbiAgICAgIHRoaXMudGFncyA9IHRoaXMudGFnc0Zvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSWQgPSB0aGlzLnRhZ3M/LmZpbHRlcihpdGVtID0+IGl0ZW0uaWQpLm1hcChpdGVtID0+IGl0ZW0uaWQpO1xyXG4gICAgICBpZiAodGhpcy50YWdzID09IG51bGwpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoS2V5KSBcclxuICAgICAgICAgIHRoaXMuc2VhcmNoS2V5ID0ge307XHJcblxyXG4gICAgICAgIHRoaXMuc2VhcmNoS2V5LnNlbGVjdGVkID0gXCJcIjtcclxuICAgICAgICB0aGlzLnRhZ3MgPSBbXTtcclxuICAgICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC5zZXRWYWx1ZShbXSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmF0dHJpYnV0ZUxpc3QgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMubmFtZSk7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuYXR0cmlidXRlTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSh0aGlzLm9wdGlvbnMuYXR0cmlidXRlTGlzdFtpbmRleF0ua2V5LCB0aGlzLm9wdGlvbnMuYXR0cmlidXRlTGlzdFtpbmRleF0udmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5uYW1lKS5nZXRFbGVtZW50c0J5VGFnTmFtZShcImlucHV0XCIpWzBdO1xyXG4gICAgaW5wdXRFbGVtZW50LnNldEF0dHJpYnV0ZShcImF1dG9jb21wbGV0ZVwiLCBcIm9mZlwiKTtcclxuICB9XHJcblxyXG4gIHJlc2V0RXJyb3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5yZW1vdmVHbG9iYWxFcnJvcigpO1xyXG4gIH07XHJcblxyXG4gIHNob3dHbG9iYWxFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2hvd0dsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvclZhbGlkYXRpb24oRXJyb3JMaXN0KSB7XHJcbiAgICBpZiAodGhpcy5tYXJrQWxsQXNUb3VjaGVkICYmIHRoaXMuZ3JvdXAuaW52YWxpZCkge1xyXG4gICAgICB0aGlzLnNob3dHbG9iYWxFcnJvcigpO1xyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9sVXRpbGl0eS5nZXRFcnJvclZhbGlkYXRpb25NYXNzYWdlKEVycm9yTGlzdCwgdGhpcy5ncm91cCwgdGhpcy5vcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGNvcHlJbnB1dE1lc3NhZ2UoaW5wdXRFbGVtZW50KSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkNvcHlJbnB1dE1lc3NhZ2UoaW5wdXRFbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHNlYXJjaEZ1bmN0aW9uRmFjdG9yeShUZXh0OiBhbnkpOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xyXG4gICAgLy9JZiBubyB0ZXh0IHRoZW4gcmV0dXJuIGVtcHR5IG9ic2VydmFibGVcclxuICAgIGlmICghVGV4dCkge1xyXG4gICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC5zZXRFcnJvcnMoeyBcImVycm9yTWFzc2FnZVwiOiBudWxsIH0pO1xyXG4gICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIHJldHVybiBFTVBUWTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlYXJjaEtleVZhbHVlID09IFRleHQpXHJcbiAgICAgIHJldHVybjtcclxuICAgIHRoaXMuc2VhcmNoS2V5VmFsdWUgPSBUZXh0O1xyXG4gICAgbGV0IFVybCA9IGAke3RoaXMub3B0aW9ucy5hY3Rpb25VUkx9PyR7dGhpcy5vcHRpb25zLnF1ZXJ5UGFyYW1OYW1lfT0ke2VuY29kZVVSSUNvbXBvbmVudChUZXh0KX0mJHt0aGlzLm9wdGlvbnMuc2VsZWN0ZWRJdGVtc1BhcmFtTmFtZX09JHt0aGlzLnNlbGVjdGVkSWR9YDtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZXh0cmFGaWx0ZXJzKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLmV4dHJhRmlsdGVycyA9PT0gXCJzdHJpbmdcIilcclxuICAgICAgICBVcmwgPSBVcmwgKyBgJiR7dGhpcy5vcHRpb25zLmV4dHJhRmlsdGVyc31gO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgVXJsID0gVXJsICsgYCYke3RoaXMub3B0aW9ucy5leHRyYUZpbHRlcnMoKX1gO1xyXG4gICAgfVxyXG4gICAgbGV0IHJlcXVlc3RPcHRpb25zTW9kZWwgPSBuZXcgUmVxdWVzdE9wdGlvbnNNb2RlbCgpO1xyXG4gICAgcmVxdWVzdE9wdGlvbnNNb2RlbC5kaXNhYmxlQmxvY2tVSSA9IHRydWU7XHJcbiAgICByZXF1ZXN0T3B0aW9uc01vZGVsLmRpc2FibGVTdWNjZXNzTm90aWZpY2F0aW9uID0gdHJ1ZTtcclxuICAgIGxldCBNb2RlbCA9IHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmdldChVcmwsIG51bGwsIG51bGwsIHJlcXVlc3RPcHRpb25zTW9kZWwpO1xyXG4gICAgcmV0dXJuIE1vZGVsIGFzIGFueTtcclxuICB9XHJcblxyXG4gIGFkZFRhZyhldmVudCwga2V5KSB7XHJcbiAgICAvL0NoZWNrIGlmIGlucHV0IGlzIHlhYiBwcmVzc1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gXCJUYWJcIilcclxuICAgICAgcmV0dXJuO1xyXG4gICAgLy9DaGVjayBpZiBpbnB1dCBpcyBlbnRlciBwcmVzc1xyXG4gICAgaWYgKHRoaXMuaXNOb01hdGNoID09IHRydWUgJiYgZXZlbnQua2V5ID09IFwiRW50ZXJcIiAmJiB0aGlzLm9wdGlvbnMuYWxsb3dOZXdTZWxlY3Rpb24gJiYga2V5LnNlbGVjdGVkKSB7XHJcbiAgICAgIGlmICghKHRoaXMudGFncy5sZW5ndGggPj0gdGhpcy5vcHRpb25zLm1heE51bWJlclRhZ3MpKSB7XHJcbiAgICAgICAgdGhpcy50YWdzLnB1c2goeyBuYW1lOiBrZXkuc2VsZWN0ZWQgfSk7XHJcbiAgICAgICAgdGhpcy5ncm91cC5nZXQodGhpcy5uYW1lKS5zZXRWYWx1ZSh0aGlzLnRhZ3MpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMubmFtZSkubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIGlmICh0aGlzLmdyb3VwLmdldCh0aGlzLm5hbWUpLnZhbGlkKSB7XHJcbiAgICAgICAgICBrZXkuc2VsZWN0ZWQgPSBudWxsO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLnRhZ3MucG9wKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vQ2hlY2sgaWYgaW5wdXQgaXMgY2hhcmFjaHRlclxyXG4gICAgZWxzZSBpZiAoU3RyaW5nLmZyb21DaGFyQ29kZShldmVudC5rZXlDb2RlKS5tYXRjaCgvKFxcd3xcXHMpL2cpKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzTm9NYXRjaCAmJiAhdGhpcy5vcHRpb25zLmFsbG93TmV3U2VsZWN0aW9uICYmIGtleS5zZWxlY3RlZCkge1xyXG4gICAgICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLnNldEVycm9ycyh7IFwiZXJyb3JNYXNzYWdlXCI6IHRoaXMub3B0aW9ucy5ub1Jlc3VsdFRleHQgfSk7XHJcbiAgICAgICAgdGhpcy50YWdzRm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuaXNOb01hdGNoID09IGZhbHNlICYmIHRoaXMub3B0aW9ucy5hbGxvd05ld1NlbGVjdGlvbiA9PSBmYWxzZSkge1xyXG4gICAgICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy9SZW1vdmUgdW5tYXRjaGVkIGVycm9yIGluY2FzZSBvZiBkZWxldGluZyBzZWFyY2ggdmFsdWVcclxuICAgIGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gXCJCYWNrc3BhY2VcIiAmJiBrZXkuc2VsZWN0ZWQ/Lmxlbmd0aCA8PSAxICYmIHRoaXMudGFnc0Zvcm1Db250cm9sLmhhc0Vycm9yKCdlcnJvck1hc3NhZ2UnKSkge1xyXG4gICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC5zZXRFcnJvcnMoeyBcImVycm9yTWFzc2FnZVwiOiBudWxsIH0pO1xyXG4gICAgICB0aGlzLnRhZ3NGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSWQ/Lmxlbmd0aCA9PSAwICYmIHRoaXMub3B0aW9ucy5pc1JlcXVpcmVkKSB7XHJcbiAgICAgICAgdGhpcy50YWdzRm9ybUNvbnRyb2wuc2V0RXJyb3JzKHsgcmVxdWlyZWQ6IFwiXCIgfSk7XHJcbiAgICAgICAgdGhpcy50YWdzRm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblRhZ3NDaGFuZ2VkKHJlc3VsdCkge1xyXG4gICAgdGhpcy5vcHRpb25zLmRpc3BsYXlWYWx1ZT1cIlwiO1xyXG4gICAgLy9jb25zb2xlLmxvZyh0aGlzLnRhZ3MpXHJcbiAgICBpZiAocmVzdWx0W1wiY2hhbmdlXCJdID09IFwiYWRkXCIpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZElkLnB1c2gocmVzdWx0LnRhZy5pZCk7XHJcbiAgICB9XHJcbiAgICBpZiAocmVzdWx0W1wiY2hhbmdlXCJdID09IFwicmVtb3ZlXCIpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZElkID0gdGhpcy5zZWxlY3RlZElkLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPSByZXN1bHQudGFnLmlkKTtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJZC5sZW5ndGggPT0gMCAmJiB0aGlzLm9wdGlvbnMuaXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy50YWdzRm9ybUNvbnRyb2wuc2V0RXJyb3JzKHsgcmVxdWlyZWQ6IFwiXCIgfSk7XHJcbiAgICAgICAgdGhpcy50YWdzRm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgIHRoaXMudGFnc0Zvcm1Db250cm9sLmludmFsaWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBvcmlnaW5hbFZhbHVlID0gdGhpcy50YWdzRm9ybUNvbnRyb2wudmFsdWUubWFwKGZ1bmN0aW9uIChhKSB7IHJldHVybiBhLmlkOyB9KTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMucGF0Y2hGdW5jdGlvbiAmJiB0aGlzLm9wdGlvbnMucGF0Y2hQYXRoICYmIHRoaXMudGFnc0Zvcm1Db250cm9sLnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0Y2hDb250cm9sVmFsdWUob3JpZ2luYWxWYWx1ZSwgdGhpcy5vcHRpb25zLnBhdGNoRnVuY3Rpb24sIHRoaXMub3B0aW9ucy5wYXRjaFBhdGgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLnZhbHVlID0gdGhpcy50YWdzO1xyXG4gICAgdGhpcy5ncm91cC5nZXQodGhpcy5uYW1lKS5zZXRWYWx1ZSh0aGlzLnRhZ3MpO1xyXG4gICAgdGhpcy50YWdzRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5ncm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQob3JpZ2luYWxWYWx1ZSk7XHJcbiAgICBpZiAodGhpcy50YWdzKSB7XHJcbiAgICAgIGxldCBkaXNwbGF5VmFsdWVzID0gdGhpcy50YWdzIGFzIGFueVtdO1xyXG4gICAgICBkaXNwbGF5VmFsdWVzLmZvckVhY2goKHRhZywgaW5kZXgpID0+IHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuZGlzcGxheVZhbHVlICs9IHRhZy5uYW1lO1xyXG4gICAgICAgIGlmIChpbmRleCA8IGRpc3BsYXlWYWx1ZXMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmRpc3BsYXlWYWx1ZSArPSAnLCc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuY2hlY2tJc1RhZ0luRmlsdGVyKCk7XHJcbiAgfVxyXG5cclxuICBvbk5vT3B0aW9uc01hdGNoKGV2ZW50KSB7XHJcbiAgICB0aGlzLmlzTm9NYXRjaCA9IGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICByZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLnRhZ3NGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucyk7XHJcbiAgfTtcclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIGFkZFJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuYWRkUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMudGFnc0Zvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKTtcclxuICB9O1xyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcblxyXG4gIHJlbW92ZUN1c3RvbVZhbGlkYXRpb24gPSAoY3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5yZW1vdmVDdXN0b21WYWxpZGF0aW9uKHRoaXMudGFnc0Zvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgY3VzdG9tVmFsaWRhdGlvbik7XHJcbiAgfTtcclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIGFkZEN1c3RvbVZhbGlkYXRpb24gPSAoY3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5hZGRDdXN0b21WYWxpZGF0aW9uKHRoaXMudGFnc0Zvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgY3VzdG9tVmFsaWRhdGlvbik7XHJcbiAgfTtcclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBpc1ZhbGlkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5pc1ZhbGlkKHRoaXMudGFnc0Zvcm1Db250cm9sKTtcclxuICB9O1xyXG5cclxuICBvblRhZ3NJbnB1dEJsdXIoU2VhcmNoS2V5KSB7XHJcbiAgICBpZiAoU2VhcmNoS2V5LnNlbGVjdGVkICYmIHRoaXMub3B0aW9ucy5hbGxvd05ld1NlbGVjdGlvbiAmJiB0aGlzLmlzTm9NYXRjaCAmJiB0aGlzLnRhZ3MubGVuZ3RoIDwgdGhpcy5vcHRpb25zLm1heE51bWJlclRhZ3MpIHtcclxuICAgICAgdGhpcy50YWdzLnB1c2goeyBuYW1lOiBTZWFyY2hLZXkuc2VsZWN0ZWQgfSk7XHJcbiAgICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMubmFtZSkuc2V0VmFsdWUodGhpcy50YWdzKTtcclxuICAgICAgdGhpcy5ncm91cC5nZXQodGhpcy5uYW1lKS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgIHRoaXMuZ3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICBpZiAodGhpcy5ncm91cC5nZXQodGhpcy5uYW1lKS52YWxpZCkge1xyXG4gICAgICAgIFNlYXJjaEtleS5zZWxlY3RlZCA9IG51bGw7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLnRhZ3MucG9wKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFRhZ3NWYWx1ZSgpIHtcclxuICAgIGlmICh0aGlzLnRhZ3MubGVuZ3RoID4gMClcclxuICAgICAgcmV0dXJuIHRoaXMudGFncy5tYXAoaXRlbSA9PiBpdGVtLm5hbWUpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJc1RhZ0luRmlsdGVyKCkge1xyXG4gICAgaWYgKHRoaXMuRHJvcGRvd25UZW1wbGF0ZVZhcmlhYmxlKSB7XHJcbiAgICAgIHRoaXMuRHJvcGRvd25UZW1wbGF0ZVZhcmlhYmxlLnRvZ2dsZSgpO1xyXG4gICAgICB0aGlzLkRyb3Bkb3duVGVtcGxhdGVWYXJpYWJsZS50b2dnbGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGJic2YtY29udHJvbCBiYnNmLXRhZ3MtaW5wdXRcIiBbZm9ybUdyb3VwXT1cInRhZ3NGb3JtR3JvdXBcIj5cclxuICAgIDxkaXYgW25nQ2xhc3NdPVwiKG9wdGlvbnMudmlld1R5cGU9PTEpPydiYnNmLXZlcnRpY2FsJzonYmJzZi1ob3Jpem9udGFsJ1wiPlxyXG4gICAgICA8IS0tbGFiZWwtLT5cclxuICAgICAgPGxhYmVsICpuZ0lmPVwiIW9wdGlvbnMuaGlkZUxhYmVsXCIgY2xhc3M9XCJiYnNmLWxhYmVsIHt7b3B0aW9ucy5sYWJlbEV4dHJhQ2xhc3Nlc319XCI+XHJcbiAgICAgICAge3tvcHRpb25zLmxhYmVsVmFsdWV9fVxyXG4gICAgICAgIDwhLS1Bc3Rlcmlzay0tPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiKChvcHRpb25zLnNob3dBc3RlcmlzayYmb3B0aW9ucy5pc1JlcXVpcmVkKXx8KG9wdGlvbnMuaXNSZXF1aXJlZCkpJiYhb3B0aW9ucy5pc1JlYWRvbmx5XCJcclxuICAgICAgICAgIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPlxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgICA8IS0taW5wdXQtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImJic2YtaW5wdXQtY29udGFpbmVyXCIgKm5nSWY9XCIhb3B0aW9ucy5pc1JlYWRvbmx5XCI+XHJcbiAgICAgICAgPGItdGFncy1pbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHt7b3B0aW9ucy5leHRyYUNsYXNzZXN9fVwiIFtkaXJdPVwidGV4dERpclwiXHJcbiAgICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiZW1haWwtZXJyb3JcIiBhcmlhLWludmFsaWQ9XCJ0cnVlXCIgZm9ybUNvbnRyb2xOYW1lPVwidGFnc1wiXHJcbiAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJ0YWdzRm9ybUNvbnRyb2wuaW52YWxpZCAmJiB0YWdzRm9ybUNvbnRyb2wudG91Y2hlZFwiIHBsYWNlaG9sZGVyPVwie3tvcHRpb25zLnBsYWNlaG9sZGVyfX1cIlxyXG4gICAgICAgICAgaWQ9XCJ7e25hbWV9fVwiIChvblRhZ3NDaGFuZ2VkKT1cIm9uVGFnc0NoYW5nZWQoJGV2ZW50KVwiIFsobmdNb2RlbCldPVwidGFnc1wiXHJcbiAgICAgICAgICBbcmVtb3ZlTGFzdE9uQmFja3NwYWNlXT1cIm9wdGlvbnMucmVtb3ZlTGFzdE9uQmFja3NwYWNlXCIgKG9uTm9PcHRpb25zTWF0Y2gpPVwib25Ob09wdGlvbnNNYXRjaCgkZXZlbnQpXCJcclxuICAgICAgICAgIFtvcHRpb25zXT1cInNlYXJjaEZ1bmN0aW9uRmFjdG9yeShzZWFyY2hLZXkuc2VsZWN0ZWQpXCIgI3NlYXJjaEtleVxyXG4gICAgICAgICAgW3Njcm9sbGFibGVPcHRpb25zXT1cIm9wdGlvbnMuc2Nyb2xsYWJsZU9wdGlvbnNcIiBbc2Nyb2xsYWJsZU9wdGlvbnNJblZpZXddPVwib3B0aW9ucy5tYXhTZWFyY2hSZXN1bHRzQ291bnRcIlxyXG4gICAgICAgICAgKGtleWRvd24pPVwiYWRkVGFnKCRldmVudCxzZWFyY2hLZXkpXCIgW1ZpZXdNb2RlXT1cIm9wdGlvbnMudGFnSW5wdXRNb2RlXCIgW21heFRhZ3NdPVwib3B0aW9ucy5tYXhOdW1iZXJUYWdzXCJcclxuICAgICAgICAgIFttaW5MZW5ndGhCZWZvcmVPcHRpb25zXT1cIm9wdGlvbnMubWluU2VhcmNoTGVuZ3RoXCIgW3Nob3dEZXNjcmlwdGlvbl09XCJvcHRpb25zLnNob3dEZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICBbZGVmYXVsdEltYWdlVVJMXT1cIm9wdGlvbnMuZGVmYXVsdEltZ1VybFwiIG5hbWU9XCJ0YWdzXCIgKG9uQmx1cklucHV0KT1cIm9uVGFnc0lucHV0Qmx1cihzZWFyY2hLZXkpXCI+XHJcbiAgICAgICAgPC9iLXRhZ3MtaW5wdXQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIHJlYWRvbmx5IC0tPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwib3B0aW9ucy5pc1JlYWRvbmx5XCI+PHNwYW4gY2xhc3M9XCJyZWFkb25seS12aWV3XCI+e3tnZXRUYWdzVmFsdWUoKX19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInN1YnRleHQtY29udGFpbmVyXCIgKm5nSWY9XCIhb3B0aW9ucy5pc1JlYWRvbmx5XCI+XHJcbiAgICAgIDwhLS0gTGFiZWxEZXNjcmlwdGlvbi0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYmJzZi1jb250cm9sLWRlc2NcIiAqbmdJZj1cIm9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiE9bnVsbFwiPnt7b3B0aW9ucy5sYWJlbERlc2NyaXB0aW9ufX08L2Rpdj5cclxuICAgICAgPCEtLSByZXF1aXJlZFRleHQtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImJic2YtdmFsaWRhdGlvblwiICpuZ0lmPVwiKHRhZ3NGb3JtQ29udHJvbC5pbnZhbGlkICYmIHRhZ3NGb3JtQ29udHJvbC50b3VjaGVkKVwiPlxyXG4gICAgICAgIHt7Z2V0RXJyb3JWYWxpZGF0aW9uKHRhZ3NGb3JtQ29udHJvbC5lcnJvcnN8a2V5dmFsdWUpfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIoZ3JvdXAudmFsaWQmJmdyb3VwLmRpcnR5JiZncm91cC50b3VjaGVkICl8fChncm91cC51bnRvdWNoZWQmJmdyb3VwLmludmFsaWQmJmdyb3VwLmRpcnR5KVwiPlxyXG4gICAgICB7e3Jlc2V0RXJyb3IoKX19PC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuIl19
@@ -193,6 +193,7 @@ export class TextAreaComponent {
193
193
  .replace('${current}', current.toString());
194
194
  }
195
195
  this.onChange.emit(this.textAreaFormControl.value);
196
+ this.options.displayValue = this.textAreaFormControl.value;
196
197
  }
197
198
  onFocus(isFocus) {
198
199
  this.isShowWordCount = isFocus;
@@ -335,4 +336,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
335
336
  }], onChange: [{
336
337
  type: Output
337
338
  }] } });
338
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dEFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL1RleHRBcmVhL1RleHRBcmVhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9UZXh0QXJlYS9UZXh0QXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBMEQsTUFBTSxlQUFlLENBQUM7QUFDakosT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQW9FLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFXM0gsTUFBTSxPQUFPLGlCQUFpQjthQUNyQiwyQkFBc0IsR0FBRyxJQUFJLEFBQVAsQ0FBUTtJQUNyQyxZQUNVLGNBQThCLEVBQ2xCLGdCQUFrQyxFQUMvQyxtQkFBdUMsRUFDdEMsY0FBOEIsRUFDOUIsd0JBQWtELEVBQ2xELGNBQThCLEVBQzlCLHdCQUFrRCxFQUNsRCxlQUFnQztRQVBoQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDbEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUMvQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3RDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQU9oQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUd4QyxjQUFTLEdBQVcsQ0FBQyxDQUFDO1FBQ3RCLG1CQUFjLEdB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Z0IsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1NBQzlEO0lBQ0gsQ0FBQztJQUNELDZCQUE2QixDQUFDLFlBQXFCLElBQUk7UUFDckQsTUFBTSxtQkFBbUIsR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDNUQsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNqRCxJQUFJLFNBQVMsRUFBRTtZQUNiLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNqQjthQUFNO1lBQ0wsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQzsrR0F0WFUsaUJBQWlCO21HQUFqQixpQkFBaUIsd0lDWjlCLCtwSUFxRUE7OzRGRHpEYSxpQkFBaUI7a0JBSjdCLFNBQVM7K0JBQ0UsZUFBZTs7MEJBT3RCLFFBQVE7Z1BBV0YsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENoYW5nZURldGVjdG9yUmVmLCBIb3N0TGlzdGVuZXIsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycywgRm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBMYW5ndWFnZVNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IFRleHRBcmVhT3B0aW9ucyB9IGZyb20gJy4uLy4uL1NoYXJlZC9Nb2RlbHMvVGV4dEFyZWFPcHRpb25zJztcclxuaW1wb3J0IHsgR2xvYmFsU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvR2xvYmFsU2V0dGluZ3Muc2VydmljZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdCQlNGLVRleHRBcmVhJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vVGV4dEFyZWEuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXh0QXJlYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgc3RhdGljIGNvbnRyb2xDb250YWluZXJzdGF0aWMgPSBudWxsO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb250cm9sVXRpbGl0eTogQ29udHJvbFV0aWxpdHksXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXHJcbiAgICBwdWJsaWMgdGV4dEFyZWFDb250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgcHJpdmF0ZSB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTogQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnbG9iYWxTZXR0aW5nczogR2xvYmFsU2V0dGluZ3MsXHJcbiAgICBwcml2YXRlIHNwZWVjaFJlY29nbml0aW9uU2VydmljZTogU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZVxyXG4gICkge1xyXG4gICAgVGV4dEFyZWFDb21wb25lbnQuY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IHRoaXMuY29udHJvbENvbnRhaW5lcjtcclxuICAgIHRoaXMuY3VycmVudExhbmd1YWdlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJyk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgb3B0aW9uczogVGV4dEFyZWFPcHRpb25zO1xyXG4gIEBPdXRwdXQoKSBvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgdGV4dEFyZWFGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIHdvcmRDb3VudDogbnVtYmVyID0gMDtcclxuICB3b3JkQ291bnRBcnJheTogbnVtYmVyID0gMDtcclxuICBpc1Nob3dXb3JkQ291bnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtYXJrQWxsQXNUb3VjaGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmFsaWRhdGlvblJ1bGVzID0gW107XHJcbiAgdmFsaWRhdGlvblJ1bGVzYXN5bmMgPSBbXTtcclxuICAvL0ZvciBTaG93IHdhcm5pbmcgbWVzc2FnZSBvZiBtYXggbGVuZ3RoIGxpbWl0XHJcbiAgY3VycmVudENoYXJzQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgc2hvd0NoYXJzTGltaXRNc2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBoYXNDaGFyc0xpbWl0VmFsaWRhdGlvbkVycm9yOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY2hhcnNMaW1pdE1zZ0NsYXNzOiBzdHJpbmc7XHJcbiAgbWluQ2hhcnNMaW1pdDogbnVtYmVyID0gLTE7IC8vVG8gZGlzYWJsZSBjaGFycyBsaW1pdCBmZWF0dXJlIGJ5IGRlZmF1bHRcclxuICBtYXhMaW1pdFdhcm5pbmdNc2c6IHN0cmluZyA9ICcnO1xyXG4gIGlzTWljT246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgdGV4dERpcjtcclxuICBpc0ZvY3VzZWQ6IGJvb2xlYW47XHJcbiAgY3VycmVudExhbmd1YWdlOiBTdHJpbmc7XHJcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgc2VsZWN0ZWRTcGVlY2hMYW5ndWFnZURpc3BsYXlUZXh0OiBzdHJpbmc7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5pc1JlYWRvbmx5ICYmICF0aGlzLm9wdGlvbnMudmFsdWUpXHJcbiAgICAgIHRoaXMub3B0aW9ucy52YWx1ZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnTkEnKTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmZvcmNlRGlyZWN0aW9uKVxyXG4gICAgICB0aGlzLnRleHREaXIgPSB0aGlzLm9wdGlvbnMuZm9yY2VEaXJlY3Rpb24gPT0gMiA/ICdydGwnIDogJ2x0cic7XHJcbiAgICBlbHNlIHRoaXMudGV4dERpciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpID09ICdhcicgPyAncnRsJyA6ICdsdHInO1xyXG5cclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLmlzQ3JlYXRlZEJlZm9yID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5ncm91cC5hZGRDb250cm9sKHRoaXMub3B0aW9ucy5uYW1lLCBuZXcgRm9ybUNvbnRyb2woJycpKTtcclxuICAgIHRoaXMudGV4dEFyZWFGb3JtQ29udHJvbCA9IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5vcHRpb25zLm5hbWVdOyAvLyAgbmV3IEZvcm1Db250cm9sKCcnLHZhbGlkYXRpb25SdWxlcyk7XHJcblxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMubWF4TGVuZ3RoKSB0aGlzLm9wdGlvbnMubWF4TGVuZ3RoID0gdGhpcy5nbG9iYWxTZXR0aW5ncy5tYXhMZW5ndGhUZXh0QXJlYTtcclxuXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy52aWV3VHlwZSkgdGhpcy5vcHRpb25zLnZpZXdUeXBlID0gdGhpcy5nbG9iYWxTZXR0aW5ncy52aWV3VHlwZTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmxhYmVsS2V5ICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLmxhYmVsS2V5ICE9ICcnKVxyXG4gICAgICB0aGlzLm9wdGlvbnMubGFiZWxWYWx1ZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSh0aGlzLm9wdGlvbnMubGFiZWxLZXkpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZW5hYmxlU3BlZWNoUmVjb2duaXRpb24pIHtcclxuICAgICAgLy8gSW5pdGlhbGl6ZSBsYW5ndWFnZSBmb3JtIGNvbnRyb2xcclxuICAgICAgY29uc3QgbGFuZ3VhZ2VDb250cm9sTmFtZSA9ICdMYW5ndWFnZV8nICsgdGhpcy5vcHRpb25zLm5hbWU7XHJcbiAgICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICBsYW5ndWFnZUNvbnRyb2xOYW1lLFxyXG4gICAgICAgIG5ldyBGb3JtQ29udHJvbCh0aGlzLm9wdGlvbnMuc2VsZWN0ZWRTcGVlY2hMYW5ndWFnZSB8fCAnJylcclxuICAgICAgKTtcclxuICAgICAgLy9HZXQgYWxsIGxhbmd1YWdlcyBpZiBub3Qgc2V0XHJcbiAgICAgIGlmICghdGhpcy5vcHRpb25zLnNwZWVjaExhbmd1YWdlcykge1xyXG4gICAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldExhbmd1YWdlcygpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuc3BlZWNoTGFuZ3VhZ2VzID0gcmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5zZXRTcGVlY2hMYW5ndWFnZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0U3BlZWNoTGFuZ3VhZ2UoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy50ZXh0QXJlYUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy52YWx1ZSk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmN1c3RvbVZhbGlkYXRpb24ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgVmFsaWRhdGlvbnMgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmFsaWRhdGlvbjtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFZhbGlkYXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IFZhbGlkYXRpb24gPSBWYWxpZGF0aW9uc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMubWluTGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHRoaXMub3B0aW9ucy5taW5MZW5ndGgpKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMubWF4TGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMub3B0aW9ucy5tYXhMZW5ndGgpKTtcclxuXHJcbiAgICAgIGlmICghdGhpcy5vcHRpb25zLm1heExlbmd0aFdhcm5pbmdMaW1pdClcclxuICAgICAgICB0aGlzLm9wdGlvbnMubWF4TGVuZ3RoV2FybmluZ0xpbWl0ID0gdGhpcy5nbG9iYWxTZXR0aW5ncy5tYXhMZW5ndGhXYXJuaW5nTGltaXQ7XHJcblxyXG4gICAgICB0aGlzLm1pbkNoYXJzTGltaXQgPSB0aGlzLm9wdGlvbnMubWF4TGVuZ3RoIC0gdGhpcy5vcHRpb25zLm1heExlbmd0aFdhcm5pbmdMaW1pdDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaXNSZXF1aXJlZCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy50ZXh0QXJlYUZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy50ZXh0QXJlYUZvcm1Db250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlc2FzeW5jKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnRleHRBcmVhRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudGV4dEFyZWFDb250cm9sSG9zdC5uZ1N1Ym1pdC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JvdXAubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnNldEF0dHJpYnV0ZUZvckNvbnRyb2wodGhpcy5vcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHJlc2V0RXJyb3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5yZW1vdmVHbG9iYWxFcnJvcigpO1xyXG4gIH07XHJcblxyXG4gIHNob3dHbG9iYWxFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2hvd0dsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvclZhbGlkYXRpb24oRXJyb3JMaXN0KSB7XHJcbiAgICBpZiAodGhpcy5tYXJrQWxsQXNUb3VjaGVkICYmIHRoaXMuZ3JvdXAuaW52YWxpZCkge1xyXG4gICAgICB0aGlzLnNob3dHbG9iYWxFcnJvcigpO1xyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2xVdGlsaXR5LmdldEVycm9yVmFsaWRhdGlvbk1hc3NhZ2UoRXJyb3JMaXN0LCB0aGlzLmdyb3VwLCB0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuICBnZXRJbnB1dFR5cGUodHlwZTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9sVXRpbGl0eS5nZXRJbnB1dFR5cGUodHlwZSk7XHJcbiAgfVxyXG5cclxuICB0cmltQ29udHJvbFZhbHVlKCkge1xyXG4gICAgbGV0IG9yaWdpbmFsVmFsdWUgPSB0aGlzLmNvbnRyb2xVdGlsaXR5LnRyaW1Db250cm9sVmFsdWUodGhpcy50ZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgIHRoaXMudGV4dEFyZWFGb3JtQ29udHJvbC5wYXRjaFZhbHVlKG9yaWdpbmFsVmFsdWUpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5wYXRjaEZ1bmN0aW9uICYmIHRoaXMub3B0aW9ucy5wYXRjaFBhdGggJiYgdGhpcy50ZXh0QXJlYUZvcm1Db250cm9sLnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0Y2hDb250cm9sVmFsdWUoXHJcbiAgICAgICAgb3JpZ2luYWxWYWx1ZSxcclxuICAgICAgICB0aGlzLm9wdGlvbnMucGF0Y2hGdW5jdGlvbixcclxuICAgICAgICB0aGlzLm9wdGlvbnMucGF0Y2hQYXRoXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb3B5SW5wdXRNZXNzYWdlKGlucHV0RWxlbWVudCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5Db3B5SW5wdXRNZXNzYWdlKGlucHV0RWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvblRleHRDaGFuZ2UoKSB7XHJcbiAgICBpZiAodGhpcy50ZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlID09ICcnKSB7XHJcbiAgICAgIHRoaXMud29yZENvdW50QXJyYXkgPSAwO1xyXG4gICAgICB0aGlzLndvcmRDb3VudCA9IDA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLndvcmRDb3VudEFycmF5ID0gdGhpcy50ZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlLnNwbGl0KCcgJykubGVuZ3RoO1xyXG4gICAgICBpZiAodGhpcy53b3JkQ291bnRBcnJheSA+IDApIHtcclxuICAgICAgICBpZiAodGhpcy53b3JkQ291bnRBcnJheSA+IHRoaXMub3B0aW9ucy5tYXhXb3JkQ291bnQpIHtcclxuICAgICAgICAgIHRoaXMud29yZENvdW50ID0gdGhpcy5vcHRpb25zLm1heFdvcmRDb3VudDtcclxuICAgICAgICAgIHRoaXMudGV4dEFyZWFGb3JtQ29udHJvbC5zZXRFcnJvcnMoe1xyXG4gICAgICAgICAgICBlcnJvck1hc3NhZ2U6IGAgIFdvcmQgY291bnQgbXVzdCBiZSBsZXNzIHRoZW4gb3IgZXF1YWwgICR7dGhpcy5vcHRpb25zLm1heFdvcmRDb3VudH1gXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMudGV4dEFyZWFGb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICB0aGlzLnRleHRBcmVhRm9ybUNvbnRyb2wuaW52YWxpZDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy53b3JkQ291bnQgPSB0aGlzLndvcmRDb3VudEFycmF5O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy9DaGVjayBmb3IgbWF4bGVuZ3RoIGxpbWl0IGNvdW50XHJcbiAgICAvL01heExlbmd0aCBzaG91bGQgYmUgZ3JldGFlciB0aGFuIG9yIGVxdWFscyBjaGFycyBsaW1pdCBzbyB0aGF0IG1pbkNoYXJzTGltaXQgd291bGQgYmUgPj0gMFxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tYXhMZW5ndGggJiYgdGhpcy5taW5DaGFyc0xpbWl0ID49IDApIHtcclxuICAgICAgdGhpcy5jdXJyZW50Q2hhcnNDb3VudCA9IHRoaXMudGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZS5sZW5ndGg7XHJcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRDaGFyc0NvdW50ID4gdGhpcy5taW5DaGFyc0xpbWl0KSB7XHJcbiAgICAgICAgdGhpcy5zaG93Q2hhcnNMaW1pdE1zZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5oYXNDaGFyc0xpbWl0VmFsaWRhdGlvbkVycm9yID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudENoYXJzQ291bnQgPT0gdGhpcy5vcHRpb25zLm1heExlbmd0aCkgdGhpcy5jaGFyc0xpbWl0TXNnQ2xhc3MgPSAnZGFuZ2VyJztcclxuICAgICAgICBlbHNlIHRoaXMuY2hhcnNMaW1pdE1zZ0NsYXNzID0gJ3dhcm5pbmcnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd0NoYXJzTGltaXRNc2cgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmhhc0NoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3IgPSBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IG1heDogbnVtYmVyID0gdGhpcy5vcHRpb25zLm1heExlbmd0aDtcclxuICAgICAgbGV0IGN1cnJlbnQ6IG51bWJlciA9IHRoaXMuY3VycmVudENoYXJzQ291bnQ7XHJcbiAgICAgIGxldCBtc2c6IHN0cmluZyA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnTWF4TGVuZ3RoTGltaXRXYXJuaW5nJyk7XHJcblxyXG4gICAgICAvLyBSZXBsYWNlIHBsYWNlaG9sZGVycyB3aXRoIGFjdHVhbCB2YWx1ZXNcclxuICAgICAgdGhpcy5tYXhMaW1pdFdhcm5pbmdNc2cgPSBtc2dcclxuICAgICAgICAucmVwbGFjZSgnJHttYXh9JywgbWF4LnRvU3RyaW5nKCkpXHJcbiAgICAgICAgLnJlcGxhY2UoJyR7Y3VycmVudH0nLCBjdXJyZW50LnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRoaXMudGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzKGlzRm9jdXM6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuaXNTaG93V29yZENvdW50ID0gaXNGb2N1cztcclxuXHJcbiAgICAvL29uRm9jdXNcclxuICAgIGlmIChpc0ZvY3VzKSB7XHJcbiAgICAgIGlmICh0aGlzLmhhc0NoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3IpXHJcbiAgICAgICAgLy9jaGVjayBpZiB0aGVyZSB3YXMgcHJldmlvdXMgdmFsaWRhdGlvbiBlcnJvclxyXG4gICAgICAgIHRoaXMuc2hvd0NoYXJzTGltaXRNc2cgPSB0cnVlO1xyXG4gICAgfSAvL29uRm9jdXNPdXRcclxuICAgIGVsc2UgdGhpcy5zaG93Q2hhcnNMaW1pdE1zZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICByZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbihcclxuICAgICAgdGhpcy50ZXh0QXJlYUZvcm1Db250cm9sLFxyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcyxcclxuICAgICAgdGhpcy5vcHRpb25zXHJcbiAgICApO1xyXG4gIH07XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBhZGRSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LmFkZFJlcXVpcmVkVmFsaWRhdGlvbihcclxuICAgICAgdGhpcy50ZXh0QXJlYUZvcm1Db250cm9sLFxyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcyxcclxuICAgICAgdGhpcy5vcHRpb25zXHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgcmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbiA9IChjdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnJlbW92ZUN1c3RvbVZhbGlkYXRpb24oXHJcbiAgICAgIHRoaXMudGV4dEFyZWFGb3JtQ29udHJvbCxcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMsXHJcbiAgICAgIGN1c3RvbVZhbGlkYXRpb25cclxuICAgICk7XHJcbiAgfTtcclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIGFkZEN1c3RvbVZhbGlkYXRpb24gPSAoY3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5hZGRDdXN0b21WYWxpZGF0aW9uKFxyXG4gICAgICB0aGlzLnRleHRBcmVhRm9ybUNvbnRyb2wsXHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLFxyXG4gICAgICBjdXN0b21WYWxpZGF0aW9uXHJcbiAgICApO1xyXG4gIH07XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBpc1ZhbGlkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5pc1ZhbGlkKHRoaXMudGV4dEFyZWFGb3JtQ29udHJvbCk7XHJcbiAgfTtcclxuICAvL3JlZ2lvbiBTcGVlY2ggUmVjb2duaXRpb25cclxuICBzZXRTcGVlY2hMYW5ndWFnZSgpIHtcclxuICAgIGNvbnN0IGxhbmd1YWdlQ29udHJvbE5hbWUgPSAnTGFuZ3VhZ2VfJyArIHRoaXMub3B0aW9ucy5uYW1lO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuYXV0b1NhdmVTcGVlY2hMYW5ndWFnZXRvTG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgIGxldCBzYXZlZExhbmd1YWdlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3NwZWVjaExhbmd1YWdlJyk7XHJcbiAgICAgIGlmIChzYXZlZExhbmd1YWdlKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnNlbGVjdGVkU3BlZWNoTGFuZ3VhZ2UgPSBzYXZlZExhbmd1YWdlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubG9hZFNlbGVjdGVkU3BlZWNoTGFuZ3VhZ2UoKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3BlZWNoTGFuZ3VhZ2UnLCB0aGlzLm9wdGlvbnMuc2VsZWN0ZWRTcGVlY2hMYW5ndWFnZSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubG9hZFNlbGVjdGVkU3BlZWNoTGFuZ3VhZ2UoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZ3JvdXAuZ2V0KGxhbmd1YWdlQ29udHJvbE5hbWUpLnNldFZhbHVlKHRoaXMub3B0aW9ucy5zZWxlY3RlZFNwZWVjaExhbmd1YWdlKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkU3BlZWNoTGFuZ3VhZ2VEaXNwbGF5VGV4dCA9IHRoaXMub3B0aW9ucy5zcGVlY2hMYW5ndWFnZXMuZmluZChcclxuICAgICAgKGwpID0+IGwuZGlhbGVjdCA9PSB0aGlzLm9wdGlvbnMuc2VsZWN0ZWRTcGVlY2hMYW5ndWFnZVxyXG4gICAgKS5wcmVmaXg7XHJcbiAgfVxyXG4gIGxvYWRTZWxlY3RlZFNwZWVjaExhbmd1YWdlKCkge1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuc2VsZWN0ZWRTcGVlY2hMYW5ndWFnZSkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UgPT0gJ2VuJyAmJlxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5zcGVlY2hMYW5ndWFnZXMuc29tZSgobGFuZ3VhZ2UpID0+IGxhbmd1YWdlLmVuZ2xpc2hOYW1lID09PSAnRW5nbGlzaCcpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5zZWxlY3RlZFNwZWVjaExhbmd1YWdlID0gdGhpcy5vcHRpb25zLnNwZWVjaExhbmd1YWdlcy5maW5kKFxyXG4gICAgICAgICAgKGxhbmd1YWdlKSA9PiBsYW5ndWFnZS5lbmdsaXNoTmFtZSA9PT0gJ0VuZ2xpc2gnXHJcbiAgICAgICAgKS5kaWFsZWN0O1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHRoaXMuY3VycmVudExhbmd1YWdlID09ICdhcicgJiZcclxuICAgICAgICB0aGlzLm9wdGlvbnMuc3BlZWNoTGFuZ3VhZ2VzLnNvbWUoKGxhbmd1YWdlKSA9PiBsYW5ndWFnZS5lbmdsaXNoTmFtZSA9PT0gJ0FyYWJpYycpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5zZWxlY3RlZFNwZWVjaExhbmd1YWdlID0gdGhpcy5vcHRpb25zLnNwZWVjaExhbmd1YWdlcy5maW5kKFxyXG4gICAgICAgICAgKGxhbmd1YWdlKSA9PiBsYW5ndWFnZS5lbmdsaXNoTmFtZSA9PT0gJ0FyYWJpYydcclxuICAgICAgICApLmRpYWxlY3Q7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnNlbGVjdGVkU3BlZWNoTGFuZ3VhZ2UgPSB0aGlzLm9wdGlvbnMuc3BlZWNoTGFuZ3VhZ2VzWzBdLmRpYWxlY3Q7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgc3RhcnRTcGVlY2hSZWNvZ25pdGlvbigpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2UuaXNTdXBwb3J0ZWQpIHtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlFcnJvck1lc3NhZ2UoXHJcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdCcm93c2VyTm90U3VwcG9ydFNwZWVjaFJlY29nbml0aW9uJylcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy9EaXNhYmxlIFNlbGVjdCBMYW5ndWFnZVxyXG4gICAgdGhpcy5lbmFibGVPckRpc2FibGVMYW5ndWFnZVNlbGVjdChmYWxzZSk7XHJcbiAgICB0aGlzLmlzTWljT24gPSB0cnVlO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnNwZWVjaFJlY29nbml0aW9uU2VydmljZVxyXG4gICAgICAuc3RhcnRMaXN0ZW5pbmcodGhpcy5vcHRpb25zLnNlbGVjdGVkU3BlZWNoTGFuZ3VhZ2UpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICh0cmFuc2NyaXB0OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgIGlmICh0cmFuc2NyaXB0KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMudmFsdWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMudmFsdWUgKz0gJyAnO1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlyZU9uQ2hhbmdlKHRoaXMub3B0aW9ucy52YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGNoYXJJbmRleCA9IDA7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucy52YWx1ZSArPSB0cmFuc2NyaXB0W2NoYXJJbmRleF07XHJcbiAgICAgICAgICAgICAgdGhpcy5maXJlT25DaGFuZ2UodGhpcy5vcHRpb25zLnZhbHVlKTtcclxuICAgICAgICAgICAgICBjaGFySW5kZXgrKztcclxuICAgICAgICAgICAgICBpZiAoY2hhckluZGV4ID09PSB0cmFuc2NyaXB0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LCAxMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgdGhpcy5zdG9wU3BlZWNoUmVjb2duaXRpb24oKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAvL0VuYWJsZSBTZWxlY3QgTGFuZ3VhZ2VcclxuICAgICAgICAgIHRoaXMuZW5hYmxlT3JEaXNhYmxlTGFuZ3VhZ2VTZWxlY3QoKTtcclxuICAgICAgICAgIHRoaXMuaXNNaWNPbiA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdG9wU3BlZWNoUmVjb2duaXRpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLmVuYWJsZU9yRGlzYWJsZUxhbmd1YWdlU2VsZWN0KCk7XHJcbiAgICBpZiAoIXRoaXMuc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlLmlzU3VwcG9ydGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuaXNNaWNPbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2Uuc3RvcExpc3RlbmluZygpO1xyXG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGZpcmVPbkNoYW5nZSh0ZXh0KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGV4dCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5lbmFibGVTcGVlY2hSZWNvZ25pdGlvbikge1xyXG4gICAgICB0aGlzLnN0b3BTcGVlY2hSZWNvZ25pdGlvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TcGVlY2hMYW5ndWFnZUNoYW5nZShldmVudCkge1xyXG4gICAgbGV0IHNlbGVjdGVkTGFuZ19EaWFsZWN0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgdGhpcy5zZWxlY3RlZFNwZWVjaExhbmd1YWdlRGlzcGxheVRleHQgPSB0aGlzLm9wdGlvbnMuc3BlZWNoTGFuZ3VhZ2VzLmZpbmQoXHJcbiAgICAgIChsKSA9PiBsLmRpYWxlY3QgPT0gc2VsZWN0ZWRMYW5nX0RpYWxlY3RcclxuICAgICkucHJlZml4O1xyXG4gICAgdGhpcy5vcHRpb25zLnNlbGVjdGVkU3BlZWNoTGFuZ3VhZ2UgPSBzZWxlY3RlZExhbmdfRGlhbGVjdDtcclxuXHJcbiAgICBjb25zdCBsYW5ndWFnZUNvbnRyb2xOYW1lID0gJ0xhbmd1YWdlXycgKyB0aGlzLm9wdGlvbnMubmFtZTtcclxuICAgIGxldCBzZWxlY3QgPSB0aGlzLmdyb3VwLmdldChsYW5ndWFnZUNvbnRyb2xOYW1lKTtcclxuICAgIHNlbGVjdC5zZXRWYWx1ZShzZWxlY3RlZExhbmdfRGlhbGVjdCk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hdXRvU2F2ZVNwZWVjaExhbmd1YWdldG9Mb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3NwZWVjaExhbmd1YWdlJywgc2VsZWN0ZWRMYW5nX0RpYWxlY3QpO1xyXG4gICAgfVxyXG4gIH1cclxuICBlbmFibGVPckRpc2FibGVMYW5ndWFnZVNlbGVjdChpc0VuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICBjb25zdCBsYW5ndWFnZUNvbnRyb2xOYW1lID0gJ0xhbmd1YWdlXycgKyB0aGlzLm9wdGlvbnMubmFtZTtcclxuICAgIGxldCBzZWxlY3QgPSB0aGlzLmdyb3VwLmdldChsYW5ndWFnZUNvbnRyb2xOYW1lKTtcclxuICAgIGlmIChpc0VuYWJsZWQpIHtcclxuICAgICAgc2VsZWN0LmVuYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VsZWN0LmRpc2FibGUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kUmVnaW9uXHJcbn1cclxuXHJcblxyXG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBiYnNmLWNvbnRyb2wgYmJzZi10ZXh0YXJlYVwiIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cclxuICA8ZGl2IFtuZ0NsYXNzXT1cIihvcHRpb25zLnZpZXdUeXBlPT0xKT8nYmJzZi12ZXJ0aWNhbCc6J2Jic2YtaG9yaXpvbnRhbCdcIj5cclxuICAgIDwhLS1sYWJlbC0tPlxyXG4gICAgPGxhYmVsICpuZ0lmPVwiIW9wdGlvbnMuaGlkZUxhYmVsXCIgY2xhc3M9XCJiYnNmLWxhYmVsIHt7b3B0aW9ucy5sYWJlbEV4dHJhQ2xhc3Nlc319XCI+XHJcbiAgICAgIHt7b3B0aW9ucy5sYWJlbFZhbHVlfX1cclxuICAgICAgPCEtLUFzdGVyaXNrLS0+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiKChvcHRpb25zLnNob3dBc3RlcmlzayYmb3B0aW9ucy5pc1JlcXVpcmVkKXx8KG9wdGlvbnMuaXNSZXF1aXJlZCkpJiYhb3B0aW9ucy5pc1JlYWRvbmx5XCJcclxuICAgICAgICBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgIDwvbGFiZWw+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIW9wdGlvbnMuaXNSZWFkb25seVwiIGNsYXNzPVwiYmJzZi1pbnB1dC1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7XHJcbiAgICAgICdwLTEyMHB4Jzogb3B0aW9ucy5lbmFibGVTcGVlY2hSZWNvZ25pdGlvbiAmJiBvcHRpb25zLmVuYWJsZUNvcHlUb0NsaXBib2FyZCxcclxuICAgICAgJ3AtODBweCc6IG9wdGlvbnMuZW5hYmxlU3BlZWNoUmVjb2duaXRpb24gJiYgIW9wdGlvbnMuZW5hYmxlQ29weVRvQ2xpcGJvYXJkLFxyXG4gICAgICAncC00MHB4JzogIW9wdGlvbnMuZW5hYmxlU3BlZWNoUmVjb2duaXRpb24gJiYgb3B0aW9ucy5lbmFibGVDb3B5VG9DbGlwYm9hcmRcclxuICAgIH1cIj5cclxuICAgICAgPCEtLWlucHV0LS0+XHJcbiAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImZvcm0tY29udHJvbCB7e29wdGlvbnMuZXh0cmFDbGFzc2VzfX1cIiAoZm9jdXMpPVwib25Gb2N1cyh0cnVlKVwiIChmb2N1c291dCk9XCJvbkZvY3VzKGZhbHNlKVwiXHJcbiAgICAgICAgW2Rpcl09XCJ0ZXh0RGlyXCIgYXJpYS1kZXNjcmliZWRieT1cImVtYWlsLWVycm9yXCIgYXJpYS1pbnZhbGlkPVwidHJ1ZVwiIGZvcm1Db250cm9sTmFtZT1cInt7b3B0aW9ucy5uYW1lfX1cIlxyXG4gICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cInRleHRBcmVhRm9ybUNvbnRyb2wuaW52YWxpZCAmJiB0ZXh0QXJlYUZvcm1Db250cm9sLnRvdWNoZWRcIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3tvcHRpb25zLnBsYWNlaG9sZGVyfX1cIiBpZD1cInt7b3B0aW9ucy5uYW1lfX1cIiBhdXRvY29tcGxldGU9XCJ7e29wdGlvbnMuYXV0b0NvbXBsZXRlfX1cIlxyXG4gICAgICAgIChjaGFuZ2UpPVwidHJpbUNvbnRyb2xWYWx1ZSgpXCIgcm93cz1cInt7b3B0aW9ucy5yb3dzfX1cIiAoa2V5dXApPVwib25UZXh0Q2hhbmdlKClcIiBjb2xzPVwie3tvcHRpb25zLmNvbHN9fVwiXHJcbiAgICAgICAgbWF4bGVuZ3RoPVwie3tvcHRpb25zLm1heExlbmd0aH19XCIgbWlubGVuZ3RoPVwie3tvcHRpb25zLm1pbkxlbmd0aH19XCIgWyhuZ01vZGVsKV09XCJvcHRpb25zLnZhbHVlXCJcclxuICAgICAgICAoa2V5ZG93bik9XCJ3b3JkQ291bnRBcnJheT5vcHRpb25zLm1heFdvcmRDb3VudCYmJGV2ZW50LmtleUNvZGUgIT04PyRldmVudC5wcmV2ZW50RGVmYXVsdCgpOm51bGxcIlxyXG4gICAgICAgICNUZXh0QXJlYWlucHV0PjwvdGV4dGFyZWE+XHJcbiAgICAgIDwhLS1Db3B5VG9DbGlwYm9hcmQtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvcHktY2xpcGJvYXJkXCIgKm5nSWY9XCJvcHRpb25zLmVuYWJsZUNvcHlUb0NsaXBib2FyZFwiIChjbGljayk9XCJjb3B5SW5wdXRNZXNzYWdlKFRleHRBcmVhaW5wdXQpXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY29weVwiPjwvaT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydleHBhbmRlZCc6IGlzRm9jdXNlZH1cIiBjbGFzcz1cImxhbmd1YWdlLWNvbnRhaW5lciB7e29wdGlvbnMuZXh0cmFDbGFzc01pY0xhbmd1YWdlfX1cIiAqbmdJZj1cIm9wdGlvbnMuZW5hYmxlU3BlZWNoUmVjb2duaXRpb25cIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTVcIiBbaW5saW5lU1ZHXT1cIm9wdGlvbnMuaWNvbk1pYz8gb3B0aW9ucy5pY29uTWljIDogJy4vc3JjL2Fzc2V0cy9pbWFnZXMvbWljLnN2ZydcIiAoY2xpY2spPVwic3RhcnRTcGVlY2hSZWNvZ25pdGlvbigpXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIiFpc01pY09uXCI+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tNVwiIFtpbmxpbmVTVkddPVwib3B0aW9ucy5pY29uTWljT2ZmPyBvcHRpb25zLmljb25NaWNPZmYgOiAnLi9zcmMvYXNzZXRzL2ltYWdlcy9taWMtb2ZmLnN2ZydcIiAoY2xpY2spPVwic3RvcFNwZWVjaFJlY29nbml0aW9uKClcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNNaWNPblwiPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYW5ndWFnZS10ZXh0XCI+e3sgc2VsZWN0ZWRTcGVlY2hMYW5ndWFnZURpc3BsYXlUZXh0IH19PC9zcGFuPlxyXG4gICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImxhbmd1YWdlLXNlbGVjdFwiIFtmb3JtQ29udHJvbE5hbWVdPVwiJ0xhbmd1YWdlXycrb3B0aW9ucy5uYW1lXCIgKGNoYW5nZSk9XCJvblNwZWVjaExhbmd1YWdlQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2Ygb3B0aW9ucy5zcGVlY2hMYW5ndWFnZXNcIiBbdmFsdWVdPVwibGFuZ3VhZ2UuZGlhbGVjdFwiPlxyXG4gICAgICAgICAgICAgIHt7bGFuZ3VhZ2UubmFtZX19XHJcbiAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9zZWxlY3Q+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIHJlYWRvbmx5IC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIm9wdGlvbnMuaXNSZWFkb25seVwiPjxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmlld1wiPnt7b3B0aW9ucy52YWx1ZX19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3VidGV4dC1jb250YWluZXJcIj5cclxuICAgICAgPCEtLXdvcmRDb3VudC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYmJzZi13b3JkLWNvdW50XCIgKm5nSWY9XCJvcHRpb25zLm1heFdvcmRDb3VudD4wJiZpc1Nob3dXb3JkQ291bnRcIj5cclxuICAgICAgICB7e3dvcmRDb3VudH19L3t7b3B0aW9ucy5tYXhXb3JkQ291bnR9fSBXb3JkczwvZGl2PlxyXG4gICAgICA8IS0tIENoYXJzTGltaXRNc2ctLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImJic2YtY2hhcmFjdGVyLWNvdW50XCIgKm5nSWY9XCJzaG93Q2hhcnNMaW1pdE1zZ1wiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieydiYWRnZS1saWdodC13YXJuaW5nJzogY2hhcnNMaW1pdE1zZ0NsYXNzID09PSAnd2FybmluZycsICdiYWRnZS1saWdodC1kYW5nZXInIDogY2hhcnNMaW1pdE1zZ0NsYXNzID09PSAnZGFuZ2VyJyB9XCI+XHJcbiAgICAgICAge3ttYXhMaW1pdFdhcm5pbmdNc2d9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBMYWJlbERlc2NyaXB0aW9uLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLWNvbnRyb2wtZGVzY1wiICpuZ0lmPVwib3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIT1udWxsXCI+e3tvcHRpb25zLmxhYmVsRGVzY3JpcHRpb259fTwvZGl2PlxyXG4gICAgICA8IS0tIHJlcXVpcmVkVGV4dC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYmJzZi12YWxpZGF0aW9uXCIgW2Rpcl09XCJ0ZXh0RGlyXCIgKm5nSWY9XCIodGV4dEFyZWFGb3JtQ29udHJvbC5pbnZhbGlkICYmIHRleHRBcmVhRm9ybUNvbnRyb2wudG91Y2hlZClcIj5cclxuICAgICAgICB7e2dldEVycm9yVmFsaWRhdGlvbih0ZXh0QXJlYUZvcm1Db250cm9sLmVycm9yc3xrZXl2YWx1ZSl9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIihncm91cC52YWxpZCYmZ3JvdXAuZGlydHkmJmdyb3VwLnRvdWNoZWQgKXx8KGdyb3VwLnVudG91Y2hlZCYmZ3JvdXAuaW52YWxpZCYmZ3JvdXAuZGlydHkpIFwiPlxyXG4gICAgICB7e3Jlc2V0RXJyb3IoKX19PC9kaXY+XHJcbiAgPC9kaXY+XHJcbiJdfQ==
339
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dEFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL1RleHRBcmVhL1RleHRBcmVhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9UZXh0QXJlYS9UZXh0QXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBMEQsTUFBTSxlQUFlLENBQUM7QUFDakosT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQW9FLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFXM0gsTUFBTSxPQUFPLGlCQUFpQjthQUNyQiwyQkFBc0IsR0FBRyxJQUFJLEFBQVAsQ0FBUTtJQUNyQyxZQUNVLGNBQThCLEVBQ2xCLGdCQUFrQyxFQUMvQyxtQkFBdUMsRUFDdEMsY0FBOEIsRUFDOUIsd0JBQWtELEVBQ2xELGNBQThCLEVBQzlCLHdCQUFrRCxFQUNsRCxlQUFnQztRQVBoQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDbEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUMvQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3RDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQU9oQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUd4QyxjQUFTLEdBQVcsQ0FBQyxDQUFDO1FBQ3RCLG1CQUFjLEdB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LElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQ0FBb0MsRUFBRTtZQUNyRCxZQUFZLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDLENBQUM7U0FDOUQ7SUFDSCxDQUFDO0lBQ0QsNkJBQTZCLENBQUMsWUFBcUIsSUFBSTtRQUNyRCxNQUFNLG1CQUFtQixHQUFHLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUM1RCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2pELElBQUksU0FBUyxFQUFFO1lBQ2IsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2pCO2FBQU07WUFDTCxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDbEI7SUFDSCxDQUFDOytHQXZYVSxpQkFBaUI7bUdBQWpCLGlCQUFpQix3SUNaOUIsK3BJQXFFQTs7NEZEekRhLGlCQUFpQjtrQkFKN0IsU0FBUzsrQkFDRSxlQUFlOzswQkFPdEIsUUFBUTtnUEFXRixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE9wdGlvbmFsLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEhvc3RMaXN0ZW5lciwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzLCBGb3JtR3JvdXAsIEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIExhbmd1YWdlU2VydmljZSwgVXRpbGl0eVNlcnZpY2UsIFNwZWVjaFJlY29nbml0aW9uU2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IENvbnRyb2xVdGlsaXR5IH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0NvbnRyb2xVdGlsaXR5JztcclxuaW1wb3J0IHsgVGV4dEFyZWFPcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9UZXh0QXJlYU9wdGlvbnMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTZXR0aW5ncyB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9HbG9iYWxTZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ0JCU0YtVGV4dEFyZWEnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9UZXh0QXJlYS5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRleHRBcmVhQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IG51bGw7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSxcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcclxuICAgIHB1YmxpYyB0ZXh0QXJlYUNvbnRyb2xIb3N0OiBGb3JtR3JvdXBEaXJlY3RpdmUsXHJcbiAgICBwcml2YXRlIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOiBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdsb2JhbFNldHRpbmdzOiBHbG9iYWxTZXR0aW5ncyxcclxuICAgIHByaXZhdGUgc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlOiBTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBUZXh0QXJlYUNvbXBvbmVudC5jb250cm9sQ29udGFpbmVyc3RhdGljID0gdGhpcy5jb250cm9sQ29udGFpbmVyO1xyXG4gICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKTtcclxuICB9XHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBvcHRpb25zOiBUZXh0QXJlYU9wdGlvbnM7XHJcbiAgQE91dHB1dCgpIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICB0ZXh0QXJlYUZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgd29yZENvdW50OiBudW1iZXIgPSAwO1xyXG4gIHdvcmRDb3VudEFycmF5OiBudW1iZXIgPSAwO1xyXG4gIGlzU2hvd1dvcmRDb3VudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG1hcmtBbGxBc1RvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICB2YWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gIC8vRm9yIFNob3cgd2FybmluZyBtZXNzYWdlIG9mIG1heCBsZW5ndGggbGltaXRcclxuICBjdXJyZW50Q2hhcnNDb3VudDogbnVtYmVyID0gMDtcclxuICBzaG93Q2hhcnNMaW1pdE1zZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGhhc0NoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjaGFyc0xpbWl0TXNnQ2xhc3M6IHN0cmluZztcclxuICBtaW5DaGFyc0xpbWl0OiBudW1iZXIgPSAtMTsgLy9UbyBkaXNhYmxlIGNoYXJzIGxpbWl0IGZlYXR1cmUgYnkgZGVmYXVsdFxyXG4gIG1heExpbWl0V2FybmluZ01zZzogc3RyaW5nID0gJyc7XHJcbiAgaXNNaWNPbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyB0ZXh0RGlyO1xyXG4gIGlzRm9jdXNlZDogYm9vbGVhbjtcclxuICBjdXJyZW50TGFuZ3VhZ2U6IFN0cmluZztcclxuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBzZWxlY3RlZFNwZWVjaExhbmd1YWdlRGlzcGxheVRleHQ6IHN0cmluZztcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmlzUmVhZG9ubHkgJiYgIXRoaXMub3B0aW9ucy52YWx1ZSlcclxuICAgICAgdGhpcy5vcHRpb25zLnZhbHVlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdOQScpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZm9yY2VEaXJlY3Rpb24pXHJcbiAgICAgIHRoaXMudGV4dERpciA9IHRoaXMub3B0aW9ucy5mb3JjZURpcmVjdGlvbiA9PSAyID8gJ3J0bCcgOiAnbHRyJztcclxuICAgIGVsc2UgdGhpcy50ZXh0RGlyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykgPT0gJ2FyJyA/ICdydGwnIDogJ2x0cic7XHJcblxyXG4gICAgdGhpcy5jb250cm9sVmFsaWRhdGlvblNlcnZpY2UuaXNDcmVhdGVkQmVmb3IgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmdyb3VwLmFkZENvbnRyb2wodGhpcy5vcHRpb25zLm5hbWUsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xyXG4gICAgdGhpcy50ZXh0QXJlYUZvcm1Db250cm9sID0gdGhpcy5ncm91cC5jb250cm9sc1t0aGlzLm9wdGlvbnMubmFtZV07IC8vICBuZXcgRm9ybUNvbnRyb2woJycsdmFsaWRhdGlvblJ1bGVzKTtcclxuXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5tYXhMZW5ndGgpIHRoaXMub3B0aW9ucy5tYXhMZW5ndGggPSB0aGlzLmdsb2JhbFNldHRpbmdzLm1heExlbmd0aFRleHRBcmVhO1xyXG5cclxuICAgIGlmICghdGhpcy5vcHRpb25zLnZpZXdUeXBlKSB0aGlzLm9wdGlvbnMudmlld1R5cGUgPSB0aGlzLmdsb2JhbFNldHRpbmdzLnZpZXdUeXBlO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMubGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMubGFiZWxLZXkgIT0gJycpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5sYWJlbFZhbHVlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5sYWJlbEtleSk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5lbmFibGVTcGVlY2hSZWNvZ25pdGlvbikge1xyXG4gICAgICAvLyBJbml0aWFsaXplIGxhbmd1YWdlIGZvcm0gY29udHJvbFxyXG4gICAgICBjb25zdCBsYW5ndWFnZUNvbnRyb2xOYW1lID0gJ0xhbmd1YWdlXycgKyB0aGlzLm9wdGlvbnMubmFtZTtcclxuICAgICAgdGhpcy5ncm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgIGxhbmd1YWdlQ29udHJvbE5hbWUsXHJcbiAgICAgICAgbmV3IEZvcm1Db250cm9sKHRoaXMub3B0aW9ucy5zZWxlY3RlZFNwZWVjaExhbmd1YWdlIHx8ICcnKVxyXG4gICAgICApO1xyXG4gICAgICAvL0dldCBhbGwgbGFuZ3VhZ2VzIGlmIG5vdCBzZXRcclxuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuc3BlZWNoTGFuZ3VhZ2VzKSB7XHJcbiAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0TGFuZ3VhZ2VzKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5zcGVlY2hMYW5ndWFnZXMgPSByZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLnNldFNwZWVjaExhbmd1YWdlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXRTcGVlY2hMYW5ndWFnZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnRleHRBcmVhRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5vcHRpb25zLnZhbHVlKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tVmFsaWRhdGlvbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBWYWxpZGF0aW9ucyA9IHRoaXMub3B0aW9ucy5jdXN0b21WYWxpZGF0aW9uO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgVmFsaWRhdGlvbnMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgVmFsaWRhdGlvbiA9IFZhbGlkYXRpb25zW2luZGV4XTtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRpb24uZnVuY3Rpb25Cb2R5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5taW5MZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgodGhpcy5vcHRpb25zLm1pbkxlbmd0aCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tYXhMZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5vcHRpb25zLm1heExlbmd0aCkpO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMubWF4TGVuZ3RoV2FybmluZ0xpbWl0KVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5tYXhMZW5ndGhXYXJuaW5nTGltaXQgPSB0aGlzLmdsb2JhbFNldHRpbmdzLm1heExlbmd0aFdhcm5pbmdMaW1pdDtcclxuXHJcbiAgICAgIHRoaXMubWluQ2hhcnNMaW1pdCA9IHRoaXMub3B0aW9ucy5tYXhMZW5ndGggLSB0aGlzLm9wdGlvbnMubWF4TGVuZ3RoV2FybmluZ0xpbWl0O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5pc1JlcXVpcmVkKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRleHRBcmVhRm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLnRleHRBcmVhRm9ybUNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzYXN5bmMpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMudGV4dEFyZWFGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50ZXh0QXJlYUNvbnRyb2xIb3N0Lm5nU3VibWl0LnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgdGhpcy5ncm91cC5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCA9IHRydWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2V0QXR0cmlidXRlRm9yQ29udHJvbCh0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRFcnJvciA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLnJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfTtcclxuXHJcbiAgc2hvd0dsb2JhbEVycm9yKCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5zaG93R2xvYmFsRXJyb3IoKTtcclxuICB9XHJcblxyXG4gIGdldEVycm9yVmFsaWRhdGlvbihFcnJvckxpc3QpIHtcclxuICAgIGlmICh0aGlzLm1hcmtBbGxBc1RvdWNoZWQgJiYgdGhpcy5ncm91cC5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKCk7XHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFV0aWxpdHkuZ2V0RXJyb3JWYWxpZGF0aW9uTWFzc2FnZShFcnJvckxpc3QsIHRoaXMuZ3JvdXAsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG4gIGdldElucHV0VHlwZSh0eXBlOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2xVdGlsaXR5LmdldElucHV0VHlwZSh0eXBlKTtcclxuICB9XHJcblxyXG4gIHRyaW1Db250cm9sVmFsdWUoKSB7XHJcbiAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuY29udHJvbFV0aWxpdHkudHJpbUNvbnRyb2xWYWx1ZSh0aGlzLnRleHRBcmVhRm9ybUNvbnRyb2wudmFsdWUpO1xyXG4gICAgdGhpcy50ZXh0QXJlYUZvcm1Db250cm9sLnBhdGNoVmFsdWUob3JpZ2luYWxWYWx1ZSk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnBhdGNoRnVuY3Rpb24gJiYgdGhpcy5vcHRpb25zLnBhdGNoUGF0aCAmJiB0aGlzLnRleHRBcmVhRm9ybUNvbnRyb2wudmFsaWQpIHtcclxuICAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5wYXRjaENvbnRyb2xWYWx1ZShcclxuICAgICAgICBvcmlnaW5hbFZhbHVlLFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wYXRjaEZ1bmN0aW9uLFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wYXRjaFBhdGhcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvcHlJbnB1dE1lc3NhZ2UoaW5wdXRFbGVtZW50KSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkNvcHlJbnB1dE1lc3NhZ2UoaW5wdXRFbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9uVGV4dENoYW5nZSgpIHtcclxuICAgIGlmICh0aGlzLnRleHRBcmVhRm9ybUNvbnRyb2wudmFsdWUgPT0gJycpIHtcclxuICAgICAgdGhpcy53b3JkQ291bnRBcnJheSA9IDA7XHJcbiAgICAgIHRoaXMud29yZENvdW50ID0gMDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMud29yZENvdW50QXJyYXkgPSB0aGlzLnRleHRBcmVhRm9ybUNvbnRyb2wudmFsdWUuc3BsaXQoJyAnKS5sZW5ndGg7XHJcbiAgICAgIGlmICh0aGlzLndvcmRDb3VudEFycmF5ID4gMCkge1xyXG4gICAgICAgIGlmICh0aGlzLndvcmRDb3VudEFycmF5ID4gdGhpcy5vcHRpb25zLm1heFdvcmRDb3VudCkge1xyXG4gICAgICAgICAgdGhpcy53b3JkQ291bnQgPSB0aGlzLm9wdGlvbnMubWF4V29yZENvdW50O1xyXG4gICAgICAgICAgdGhpcy50ZXh0QXJlYUZvcm1Db250cm9sLnNldEVycm9ycyh7XHJcbiAgICAgICAgICAgIGVycm9yTWFzc2FnZTogYCAgV29yZCBjb3VudCBtdXN0IGJlIGxlc3MgdGhlbiBvciBlcXVhbCAgJHt0aGlzLm9wdGlvbnMubWF4V29yZENvdW50fWBcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy50ZXh0QXJlYUZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICAgIHRoaXMudGV4dEFyZWFGb3JtQ29udHJvbC5pbnZhbGlkO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLndvcmRDb3VudCA9IHRoaXMud29yZENvdW50QXJyYXk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvL0NoZWNrIGZvciBtYXhsZW5ndGggbGltaXQgY291bnRcclxuICAgIC8vTWF4TGVuZ3RoIHNob3VsZCBiZSBncmV0YWVyIHRoYW4gb3IgZXF1YWxzIGNoYXJzIGxpbWl0IHNvIHRoYXQgbWluQ2hhcnNMaW1pdCB3b3VsZCBiZSA+PSAwXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm1heExlbmd0aCAmJiB0aGlzLm1pbkNoYXJzTGltaXQgPj0gMCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRDaGFyc0NvdW50ID0gdGhpcy50ZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlLmxlbmd0aDtcclxuICAgICAgaWYgKHRoaXMuY3VycmVudENoYXJzQ291bnQgPiB0aGlzLm1pbkNoYXJzTGltaXQpIHtcclxuICAgICAgICB0aGlzLnNob3dDaGFyc0xpbWl0TXNnID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmhhc0NoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3IgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50Q2hhcnNDb3VudCA9PSB0aGlzLm9wdGlvbnMubWF4TGVuZ3RoKSB0aGlzLmNoYXJzTGltaXRNc2dDbGFzcyA9ICdkYW5nZXInO1xyXG4gICAgICAgIGVsc2UgdGhpcy5jaGFyc0xpbWl0TXNnQ2xhc3MgPSAnd2FybmluZyc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zaG93Q2hhcnNMaW1pdE1zZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaGFzQ2hhcnNMaW1pdFZhbGlkYXRpb25FcnJvciA9IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgbWF4OiBudW1iZXIgPSB0aGlzLm9wdGlvbnMubWF4TGVuZ3RoO1xyXG4gICAgICBsZXQgY3VycmVudDogbnVtYmVyID0gdGhpcy5jdXJyZW50Q2hhcnNDb3VudDtcclxuICAgICAgbGV0IG1zZzogc3RyaW5nID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdNYXhMZW5ndGhMaW1pdFdhcm5pbmcnKTtcclxuXHJcbiAgICAgIC8vIFJlcGxhY2UgcGxhY2Vob2xkZXJzIHdpdGggYWN0dWFsIHZhbHVlc1xyXG4gICAgICB0aGlzLm1heExpbWl0V2FybmluZ01zZyA9IG1zZ1xyXG4gICAgICAgIC5yZXBsYWNlKCcke21heH0nLCBtYXgudG9TdHJpbmcoKSlcclxuICAgICAgICAucmVwbGFjZSgnJHtjdXJyZW50fScsIGN1cnJlbnQudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy50ZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgIHRoaXMub3B0aW9ucy5kaXNwbGF5VmFsdWUgPSB0aGlzLnRleHRBcmVhRm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzKGlzRm9jdXM6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuaXNTaG93V29yZENvdW50ID0gaXNGb2N1cztcclxuXHJcbiAgICAvL29uRm9jdXNcclxuICAgIGlmIChpc0ZvY3VzKSB7XHJcbiAgICAgIGlmICh0aGlzLmhhc0NoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3IpXHJcbiAgICAgICAgLy9jaGVjayBpZiB0aGVyZSB3YXMgcHJldmlvdXMgdmFsaWRhdGlvbiBlcnJvclxyXG4gICAgICAgIHRoaXMuc2hvd0NoYXJzTGltaXRNc2cgPSB0cnVlO1xyXG4gICAgfSAvL29uRm9jdXNPdXRcclxuICAgIGVsc2UgdGhpcy5zaG93Q2hhcnNMaW1pdE1zZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICByZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbihcclxuICAgICAgdGhpcy50ZXh0QXJlYUZvcm1Db250cm9sLFxyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcyxcclxuICAgICAgdGhpcy5vcHRpb25zXHJcbiAgICApO1xyXG4gIH07XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBhZGRSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LmFkZFJlcXVpcmVkVmFsaWRhdGlvbihcclxuICAgICAgdGhpcy50ZXh0QXJlYUZvcm1Db250cm9sLFxyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcyxcclxuICAgICAgdGhpcy5vcHRpb25zXHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgcmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbiA9IChjdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnJlbW92ZUN1c3RvbVZhbGlkYXRpb24oXHJcbiAgICAgIHRoaXMudGV4dEFyZWFGb3JtQ29udHJvbCxcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMsXHJcbiAgICAgIGN1c3RvbVZhbGlkYXRpb25cclxuICAgICk7XHJcbiAgfTtcclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIGFkZEN1c3RvbVZhbGlkYXRpb24gPSAoY3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5hZGRDdXN0b21WYWxpZGF0aW9uKFxyXG4gICAgICB0aGlzLnRleHRBcmVhRm9ybUNvbnRyb2wsXHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLFxyXG4gICAgICBjdXN0b21WYWxpZGF0aW9uXHJcbiAgICApO1xyXG4gIH07XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBpc1ZhbGlkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5pc1ZhbGlkKHRoaXMudGV4dEFyZWFGb3JtQ29udHJvbCk7XHJcbiAgfTtcclxuICAvL3JlZ2lvbiBTcGVlY2ggUmVjb2duaXRpb25cclxuICBzZXRTcGVlY2hMYW5ndWFnZSgpIHtcclxuICAgIGNvbnN0IGxhbmd1YWdlQ29udHJvbE5hbWUgPSAnTGFuZ3VhZ2VfJyArIHRoaXMub3B0aW9ucy5uYW1lO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuYXV0b1NhdmVTcGVlY2hMYW5ndWFnZXRvTG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgIGxldCBzYXZlZExhbmd1YWdlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3NwZWVjaExhbmd1YWdlJyk7XHJcbiAgICAgIGlmIChzYXZlZExhbmd1YWdlKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnNlbGVjdGVkU3BlZWNoTGFuZ3VhZ2UgPSBzYXZlZExhbmd1YWdlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubG9hZFNlbGVjdGVkU3BlZWNoTGFuZ3VhZ2UoKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3BlZWNoTGFuZ3VhZ2UnLCB0aGlzLm9wdGlvbnMuc2VsZWN0ZWRTcGVlY2hMYW5ndWFnZSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubG9hZFNlbGVjdGVkU3BlZWNoTGFuZ3VhZ2UoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZ3JvdXAuZ2V0KGxhbmd1YWdlQ29udHJvbE5hbWUpLnNldFZhbHVlKHRoaXMub3B0aW9ucy5zZWxlY3RlZFNwZWVjaExhbmd1YWdlKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkU3BlZWNoTGFuZ3VhZ2VEaXNwbGF5VGV4dCA9IHRoaXMub3B0aW9ucy5zcGVlY2hMYW5ndWFnZXMuZmluZChcclxuICAgICAgKGwpID0+IGwuZGlhbGVjdCA9PSB0aGlzLm9wdGlvbnMuc2VsZWN0ZWRTcGVlY2hMYW5ndWFnZVxyXG4gICAgKS5wcmVmaXg7XHJcbiAgfVxyXG4gIGxvYWRTZWxlY3RlZFNwZWVjaExhbmd1YWdlKCkge1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuc2VsZWN0ZWRTcGVlY2hMYW5ndWFnZSkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UgPT0gJ2VuJyAmJlxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5zcGVlY2hMYW5ndWFnZXMuc29tZSgobGFuZ3VhZ2UpID0+IGxhbmd1YWdlLmVuZ2xpc2hOYW1lID09PSAnRW5nbGlzaCcpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5zZWxlY3RlZFNwZWVjaExhbmd1YWdlID0gdGhpcy5vcHRpb25zLnNwZWVjaExhbmd1YWdlcy5maW5kKFxyXG4gICAgICAgICAgKGxhbmd1YWdlKSA9PiBsYW5ndWFnZS5lbmdsaXNoTmFtZSA9PT0gJ0VuZ2xpc2gnXHJcbiAgICAgICAgKS5kaWFsZWN0O1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHRoaXMuY3VycmVudExhbmd1YWdlID09ICdhcicgJiZcclxuICAgICAgICB0aGlzLm9wdGlvbnMuc3BlZWNoTGFuZ3VhZ2VzLnNvbWUoKGxhbmd1YWdlKSA9PiBsYW5ndWFnZS5lbmdsaXNoTmFtZSA9PT0gJ0FyYWJpYycpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5zZWxlY3RlZFNwZWVjaExhbmd1YWdlID0gdGhpcy5vcHRpb25zLnNwZWVjaExhbmd1YWdlcy5maW5kKFxyXG4gICAgICAgICAgKGxhbmd1YWdlKSA9PiBsYW5ndWFnZS5lbmdsaXNoTmFtZSA9PT0gJ0FyYWJpYydcclxuICAgICAgICApLmRpYWxlY3Q7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnNlbGVjdGVkU3BlZWNoTGFuZ3VhZ2UgPSB0aGlzLm9wdGlvbnMuc3BlZWNoTGFuZ3VhZ2VzWzBdLmRpYWxlY3Q7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgc3RhcnRTcGVlY2hSZWNvZ25pdGlvbigpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2UuaXNTdXBwb3J0ZWQpIHtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlFcnJvck1lc3NhZ2UoXHJcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdCcm93c2VyTm90U3VwcG9ydFNwZWVjaFJlY29nbml0aW9uJylcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy9EaXNhYmxlIFNlbGVjdCBMYW5ndWFnZVxyXG4gICAgdGhpcy5lbmFibGVPckRpc2FibGVMYW5ndWFnZVNlbGVjdChmYWxzZSk7XHJcbiAgICB0aGlzLmlzTWljT24gPSB0cnVlO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnNwZWVjaFJlY29nbml0aW9uU2VydmljZVxyXG4gICAgICAuc3RhcnRMaXN0ZW5pbmcodGhpcy5vcHRpb25zLnNlbGVjdGVkU3BlZWNoTGFuZ3VhZ2UpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICh0cmFuc2NyaXB0OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgIGlmICh0cmFuc2NyaXB0KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMudmFsdWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMudmFsdWUgKz0gJyAnO1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlyZU9uQ2hhbmdlKHRoaXMub3B0aW9ucy52YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGNoYXJJbmRleCA9IDA7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucy52YWx1ZSArPSB0cmFuc2NyaXB0W2NoYXJJbmRleF07XHJcbiAgICAgICAgICAgICAgdGhpcy5maXJlT25DaGFuZ2UodGhpcy5vcHRpb25zLnZhbHVlKTtcclxuICAgICAgICAgICAgICBjaGFySW5kZXgrKztcclxuICAgICAgICAgICAgICBpZiAoY2hhckluZGV4ID09PSB0cmFuc2NyaXB0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LCAxMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgdGhpcy5zdG9wU3BlZWNoUmVjb2duaXRpb24oKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAvL0VuYWJsZSBTZWxlY3QgTGFuZ3VhZ2VcclxuICAgICAgICAgIHRoaXMuZW5hYmxlT3JEaXNhYmxlTGFuZ3VhZ2VTZWxlY3QoKTtcclxuICAgICAgICAgIHRoaXMuaXNNaWNPbiA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdG9wU3BlZWNoUmVjb2duaXRpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLmVuYWJsZU9yRGlzYWJsZUxhbmd1YWdlU2VsZWN0KCk7XHJcbiAgICBpZiAoIXRoaXMuc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlLmlzU3VwcG9ydGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuaXNNaWNPbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2Uuc3RvcExpc3RlbmluZygpO1xyXG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGZpcmVPbkNoYW5nZSh0ZXh0KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGV4dCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5lbmFibGVTcGVlY2hSZWNvZ25pdGlvbikge1xyXG4gICAgICB0aGlzLnN0b3BTcGVlY2hSZWNvZ25pdGlvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TcGVlY2hMYW5ndWFnZUNoYW5nZShldmVudCkge1xyXG4gICAgbGV0IHNlbGVjdGVkTGFuZ19EaWFsZWN0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgdGhpcy5zZWxlY3RlZFNwZWVjaExhbmd1YWdlRGlzcGxheVRleHQgPSB0aGlzLm9wdGlvbnMuc3BlZWNoTGFuZ3VhZ2VzLmZpbmQoXHJcbiAgICAgIChsKSA9PiBsLmRpYWxlY3QgPT0gc2VsZWN0ZWRMYW5nX0RpYWxlY3RcclxuICAgICkucHJlZml4O1xyXG4gICAgdGhpcy5vcHRpb25zLnNlbGVjdGVkU3BlZWNoTGFuZ3VhZ2UgPSBzZWxlY3RlZExhbmdfRGlhbGVjdDtcclxuXHJcbiAgICBjb25zdCBsYW5ndWFnZUNvbnRyb2xOYW1lID0gJ0xhbmd1YWdlXycgKyB0aGlzLm9wdGlvbnMubmFtZTtcclxuICAgIGxldCBzZWxlY3QgPSB0aGlzLmdyb3VwLmdldChsYW5ndWFnZUNvbnRyb2xOYW1lKTtcclxuICAgIHNlbGVjdC5zZXRWYWx1ZShzZWxlY3RlZExhbmdfRGlhbGVjdCk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hdXRvU2F2ZVNwZWVjaExhbmd1YWdldG9Mb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3NwZWVjaExhbmd1YWdlJywgc2VsZWN0ZWRMYW5nX0RpYWxlY3QpO1xyXG4gICAgfVxyXG4gIH1cclxuICBlbmFibGVPckRpc2FibGVMYW5ndWFnZVNlbGVjdChpc0VuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICBjb25zdCBsYW5ndWFnZUNvbnRyb2xOYW1lID0gJ0xhbmd1YWdlXycgKyB0aGlzLm9wdGlvbnMubmFtZTtcclxuICAgIGxldCBzZWxlY3QgPSB0aGlzLmdyb3VwLmdldChsYW5ndWFnZUNvbnRyb2xOYW1lKTtcclxuICAgIGlmIChpc0VuYWJsZWQpIHtcclxuICAgICAgc2VsZWN0LmVuYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VsZWN0LmRpc2FibGUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kUmVnaW9uXHJcbn1cclxuXHJcblxyXG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBiYnNmLWNvbnRyb2wgYmJzZi10ZXh0YXJlYVwiIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cclxuICA8ZGl2IFtuZ0NsYXNzXT1cIihvcHRpb25zLnZpZXdUeXBlPT0xKT8nYmJzZi12ZXJ0aWNhbCc6J2Jic2YtaG9yaXpvbnRhbCdcIj5cclxuICAgIDwhLS1sYWJlbC0tPlxyXG4gICAgPGxhYmVsICpuZ0lmPVwiIW9wdGlvbnMuaGlkZUxhYmVsXCIgY2xhc3M9XCJiYnNmLWxhYmVsIHt7b3B0aW9ucy5sYWJlbEV4dHJhQ2xhc3Nlc319XCI+XHJcbiAgICAgIHt7b3B0aW9ucy5sYWJlbFZhbHVlfX1cclxuICAgICAgPCEtLUFzdGVyaXNrLS0+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiKChvcHRpb25zLnNob3dBc3RlcmlzayYmb3B0aW9ucy5pc1JlcXVpcmVkKXx8KG9wdGlvbnMuaXNSZXF1aXJlZCkpJiYhb3B0aW9ucy5pc1JlYWRvbmx5XCJcclxuICAgICAgICBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgIDwvbGFiZWw+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIW9wdGlvbnMuaXNSZWFkb25seVwiIGNsYXNzPVwiYmJzZi1pbnB1dC1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7XHJcbiAgICAgICdwLTEyMHB4Jzogb3B0aW9ucy5lbmFibGVTcGVlY2hSZWNvZ25pdGlvbiAmJiBvcHRpb25zLmVuYWJsZUNvcHlUb0NsaXBib2FyZCxcclxuICAgICAgJ3AtODBweCc6IG9wdGlvbnMuZW5hYmxlU3BlZWNoUmVjb2duaXRpb24gJiYgIW9wdGlvbnMuZW5hYmxlQ29weVRvQ2xpcGJvYXJkLFxyXG4gICAgICAncC00MHB4JzogIW9wdGlvbnMuZW5hYmxlU3BlZWNoUmVjb2duaXRpb24gJiYgb3B0aW9ucy5lbmFibGVDb3B5VG9DbGlwYm9hcmRcclxuICAgIH1cIj5cclxuICAgICAgPCEtLWlucHV0LS0+XHJcbiAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImZvcm0tY29udHJvbCB7e29wdGlvbnMuZXh0cmFDbGFzc2VzfX1cIiAoZm9jdXMpPVwib25Gb2N1cyh0cnVlKVwiIChmb2N1c291dCk9XCJvbkZvY3VzKGZhbHNlKVwiXHJcbiAgICAgICAgW2Rpcl09XCJ0ZXh0RGlyXCIgYXJpYS1kZXNjcmliZWRieT1cImVtYWlsLWVycm9yXCIgYXJpYS1pbnZhbGlkPVwidHJ1ZVwiIGZvcm1Db250cm9sTmFtZT1cInt7b3B0aW9ucy5uYW1lfX1cIlxyXG4gICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cInRleHRBcmVhRm9ybUNvbnRyb2wuaW52YWxpZCAmJiB0ZXh0QXJlYUZvcm1Db250cm9sLnRvdWNoZWRcIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3tvcHRpb25zLnBsYWNlaG9sZGVyfX1cIiBpZD1cInt7b3B0aW9ucy5uYW1lfX1cIiBhdXRvY29tcGxldGU9XCJ7e29wdGlvbnMuYXV0b0NvbXBsZXRlfX1cIlxyXG4gICAgICAgIChjaGFuZ2UpPVwidHJpbUNvbnRyb2xWYWx1ZSgpXCIgcm93cz1cInt7b3B0aW9ucy5yb3dzfX1cIiAoa2V5dXApPVwib25UZXh0Q2hhbmdlKClcIiBjb2xzPVwie3tvcHRpb25zLmNvbHN9fVwiXHJcbiAgICAgICAgbWF4bGVuZ3RoPVwie3tvcHRpb25zLm1heExlbmd0aH19XCIgbWlubGVuZ3RoPVwie3tvcHRpb25zLm1pbkxlbmd0aH19XCIgWyhuZ01vZGVsKV09XCJvcHRpb25zLnZhbHVlXCJcclxuICAgICAgICAoa2V5ZG93bik9XCJ3b3JkQ291bnRBcnJheT5vcHRpb25zLm1heFdvcmRDb3VudCYmJGV2ZW50LmtleUNvZGUgIT04PyRldmVudC5wcmV2ZW50RGVmYXVsdCgpOm51bGxcIlxyXG4gICAgICAgICNUZXh0QXJlYWlucHV0PjwvdGV4dGFyZWE+XHJcbiAgICAgIDwhLS1Db3B5VG9DbGlwYm9hcmQtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvcHktY2xpcGJvYXJkXCIgKm5nSWY9XCJvcHRpb25zLmVuYWJsZUNvcHlUb0NsaXBib2FyZFwiIChjbGljayk9XCJjb3B5SW5wdXRNZXNzYWdlKFRleHRBcmVhaW5wdXQpXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY29weVwiPjwvaT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydleHBhbmRlZCc6IGlzRm9jdXNlZH1cIiBjbGFzcz1cImxhbmd1YWdlLWNvbnRhaW5lciB7e29wdGlvbnMuZXh0cmFDbGFzc01pY0xhbmd1YWdlfX1cIiAqbmdJZj1cIm9wdGlvbnMuZW5hYmxlU3BlZWNoUmVjb2duaXRpb25cIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTVcIiBbaW5saW5lU1ZHXT1cIm9wdGlvbnMuaWNvbk1pYz8gb3B0aW9ucy5pY29uTWljIDogJy4vc3JjL2Fzc2V0cy9pbWFnZXMvbWljLnN2ZydcIiAoY2xpY2spPVwic3RhcnRTcGVlY2hSZWNvZ25pdGlvbigpXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIiFpc01pY09uXCI+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tNVwiIFtpbmxpbmVTVkddPVwib3B0aW9ucy5pY29uTWljT2ZmPyBvcHRpb25zLmljb25NaWNPZmYgOiAnLi9zcmMvYXNzZXRzL2ltYWdlcy9taWMtb2ZmLnN2ZydcIiAoY2xpY2spPVwic3RvcFNwZWVjaFJlY29nbml0aW9uKClcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNNaWNPblwiPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYW5ndWFnZS10ZXh0XCI+e3sgc2VsZWN0ZWRTcGVlY2hMYW5ndWFnZURpc3BsYXlUZXh0IH19PC9zcGFuPlxyXG4gICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImxhbmd1YWdlLXNlbGVjdFwiIFtmb3JtQ29udHJvbE5hbWVdPVwiJ0xhbmd1YWdlXycrb3B0aW9ucy5uYW1lXCIgKGNoYW5nZSk9XCJvblNwZWVjaExhbmd1YWdlQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2Ygb3B0aW9ucy5zcGVlY2hMYW5ndWFnZXNcIiBbdmFsdWVdPVwibGFuZ3VhZ2UuZGlhbGVjdFwiPlxyXG4gICAgICAgICAgICAgIHt7bGFuZ3VhZ2UubmFtZX19XHJcbiAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9zZWxlY3Q+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIHJlYWRvbmx5IC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIm9wdGlvbnMuaXNSZWFkb25seVwiPjxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmlld1wiPnt7b3B0aW9ucy52YWx1ZX19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3VidGV4dC1jb250YWluZXJcIj5cclxuICAgICAgPCEtLXdvcmRDb3VudC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYmJzZi13b3JkLWNvdW50XCIgKm5nSWY9XCJvcHRpb25zLm1heFdvcmRDb3VudD4wJiZpc1Nob3dXb3JkQ291bnRcIj5cclxuICAgICAgICB7e3dvcmRDb3VudH19L3t7b3B0aW9ucy5tYXhXb3JkQ291bnR9fSBXb3JkczwvZGl2PlxyXG4gICAgICA8IS0tIENoYXJzTGltaXRNc2ctLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImJic2YtY2hhcmFjdGVyLWNvdW50XCIgKm5nSWY9XCJzaG93Q2hhcnNMaW1pdE1zZ1wiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieydiYWRnZS1saWdodC13YXJuaW5nJzogY2hhcnNMaW1pdE1zZ0NsYXNzID09PSAnd2FybmluZycsICdiYWRnZS1saWdodC1kYW5nZXInIDogY2hhcnNMaW1pdE1zZ0NsYXNzID09PSAnZGFuZ2VyJyB9XCI+XHJcbiAgICAgICAge3ttYXhMaW1pdFdhcm5pbmdNc2d9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBMYWJlbERlc2NyaXB0aW9uLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLWNvbnRyb2wtZGVzY1wiICpuZ0lmPVwib3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIT1udWxsXCI+e3tvcHRpb25zLmxhYmVsRGVzY3JpcHRpb259fTwvZGl2PlxyXG4gICAgICA8IS0tIHJlcXVpcmVkVGV4dC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYmJzZi12YWxpZGF0aW9uXCIgW2Rpcl09XCJ0ZXh0RGlyXCIgKm5nSWY9XCIodGV4dEFyZWFGb3JtQ29udHJvbC5pbnZhbGlkICYmIHRleHRBcmVhRm9ybUNvbnRyb2wudG91Y2hlZClcIj5cclxuICAgICAgICB7e2dldEVycm9yVmFsaWRhdGlvbih0ZXh0QXJlYUZvcm1Db250cm9sLmVycm9yc3xrZXl2YWx1ZSl9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIihncm91cC52YWxpZCYmZ3JvdXAuZGlydHkmJmdyb3VwLnRvdWNoZWQgKXx8KGdyb3VwLnVudG91Y2hlZCYmZ3JvdXAuaW52YWxpZCYmZ3JvdXAuZGlydHkpIFwiPlxyXG4gICAgICB7e3Jlc2V0RXJyb3IoKX19PC9kaXY+XHJcbiAgPC9kaXY+XHJcbiJdfQ==