@seniorsistemas/angular-components 16.10.11 → 16.10.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -104,10 +104,11 @@ var CustomFieldsComponent = /** @class */ (function () {
104
104
  .pipe(takeUntil(this.ngUsubscribe), finalize(function () {
105
105
  _this.formGroup.markAsPristine();
106
106
  _this.parentControl.markAsPristine();
107
+ if (_this.ready$)
108
+ _this.ready$.next(true);
107
109
  }))
108
110
  .subscribe(function (response) {
109
- var _a;
110
- var _b = __read(response, 2), customFieldsResponse = _b[0], localeOptions = _b[1];
111
+ var _a = __read(response, 2), customFieldsResponse = _a[0], localeOptions = _a[1];
111
112
  var defaults = {};
112
113
  defaults[CustomFieldType.String] = {};
113
114
  defaults[CustomFieldType.Boolean] = { defaultValue: false };
@@ -124,7 +125,7 @@ var CustomFieldsComponent = /** @class */ (function () {
124
125
  defaults[CustomFieldType.Any] = {};
125
126
  if (!customFieldsResponse || !customFieldsResponse.entity_)
126
127
  return;
127
- var _c = customFieldsResponse.entity_, active = _c.active, fields = _c.fields;
128
+ var _b = customFieldsResponse.entity_, active = _b.active, fields = _b.fields;
128
129
  if (!active)
129
130
  return;
130
131
  fields
@@ -159,7 +160,6 @@ var CustomFieldsComponent = /** @class */ (function () {
159
160
  _this.createFieldCustomization(fields);
160
161
  _this.formGroup.patchValue(_this.parseValuesForFields(_this.value));
161
162
  _this.ready = true;
162
- (_a = _this.ready$) === null || _a === void 0 ? void 0 : _a.next(true);
163
163
  });
164
164
  };
165
165
  CustomFieldsComponent.prototype.ngOnDestroy = function () {
@@ -591,4 +591,4 @@ function isUploading(file) {
591
591
  function errorOnUpload(file) {
592
592
  return function () { return (file.error ? { uploadError: true } : null); };
593
593
  }
594
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWZpZWxkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9jdXN0b20tZmllbGRzL2N1c3RvbS1maWVsZHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQXFCLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUNILGdCQUFnQixFQUNoQixvQkFBb0IsRUFDcEIsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQUUsYUFBYSxFQUN4QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFdBQVcsRUFDWCxVQUFVLEVBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxTQUFTLE1BQU0sY0FBYyxDQUFDO0FBQ3JDLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBK0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlELElBQUssZUFjSjtBQWRELFdBQUss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bnNlLCBIdHRwRXZlbnRUeXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgICBDb250cm9sQ29udGFpbmVyLFxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIEZvcm1BcnJheSxcbiAgICBGb3JtQ29udHJvbCxcbiAgICBGb3JtR3JvdXAsIE5HX1ZBTElEQVRPUlMsXG4gICAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgVmFsaWRhdG9yLFxuICAgIFZhbGlkYXRvckZuLFxuICAgIFZhbGlkYXRvcnNcbn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gXCJiaWdudW1iZXIuanNcIjtcbmltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSBcIm1vbWVudFwiO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmb3JrSm9pbiwgb2YsIHRocm93RXJyb3IgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgRmllbGRUeXBlLCBGb3JtRmllbGQgfSBmcm9tIFwiLi4vZHluYW1pYy1mb3JtL2luZGV4XCI7XG5pbXBvcnQgeyBGaWxlRHRvIH0gZnJvbSBcIi4uL2ZpbGUtdXBsb2FkL2luZGV4XCI7XG5pbXBvcnQgeyBMb2NhbGVPcHRpb25zIH0gZnJvbSBcIi4uL2xvY2FsZVwiO1xuaW1wb3J0IHsgTG9jYWxlU2VydmljZSB9IGZyb20gXCIuLi9sb2NhbGUvbG9jYWxlLnNlcnZpY2VcIjtcbmltcG9ydCB7IEN1c3RvbUZpZWxkc1NlcnZpY2UgfSBmcm9tIFwiLi9jdXN0b20tZmllbGRzLnNlcnZpY2VcIjtcblxuZW51bSBDdXN0b21GaWVsZFR5cGUge1xuICAgIFN0cmluZyA9IFwiU3RyaW5nXCIsXG4gICAgQm9vbGVhbiA9IFwiQm9vbGVhblwiLFxuICAgIEludGVnZXIgPSBcIkludGVnZXJcIixcbiAgICBEb3VibGUgPSBcIkRvdWJsZVwiLFxuICAgIERhdGUgPSBcIkRhdGVcIixcbiAgICBEYXRlVGltZSA9IFwiRGF0ZVRpbWVcIixcbiAgICBMb2NhbERhdGVUaW1lID0gXCJMb2NhbERhdGVUaW1lXCIsXG4gICAgVGltZSA9IFwiVGltZVwiLFxuICAgIE1vbmV5ID0gXCJNb25leVwiLFxuICAgIEJsb2IgPSBcIkJsb2JcIixcbiAgICBCaW5hcnkgPSBcIkJpbmFyeVwiLFxuICAgIEFueSA9IFwiQW55XCIsXG4gICAgRW51bSA9IFwiRW51bVwiXG59XG5cbmNvbnN0IG1vbWVudCA9IG1vbWVudF87IC8vIEBIQUNLIE5lY2Vzc2FyeSBiZWNhdXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9yb2xsdXAvcm9sbHVwL2lzc3Vlcy82NzBcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwicy1jdXN0b20tZmllbGRzXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9jdXN0b20tZmllbGRzLmNvbXBvbmVudC5odG1sXCIsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IEN1c3RvbUZpZWxkc0NvbXBvbmVudCxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IEN1c3RvbUZpZWxkc0NvbXBvbmVudCxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbUZpZWxkc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkb21haW46IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXJ2aWNlOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZW50aXR5OiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaW52YWxpZEVycm9yTGFiZWw6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlbnRpdHlPYmplY3Q6IGFueTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdXN0b21GaWVsZHNFbmRwb2ludCA9IFwicGxhdGZvcm0vZmllbGRfY3VzdG9taXphdGlvbi9xdWVyaWVzL2dldEVudGl0eVwiO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZpbGVMb2NhdGlvbkVuZHBvaW50ID0gXCJwbGF0Zm9ybS9maWVsZF9jdXN0b21pemF0aW9uL2FjdGlvbnMvcmVxdWVzdFVwbG9hZFwiO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlcXVlc3RBY2Nlc3NFbmRwb2ludCA9IFwicGxhdGZvcm0vZmllbGRfY3VzdG9taXphdGlvbi9hY3Rpb25zL3JlcXVlc3RBY2Nlc3NcIjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZXF1aXJlZEVycm9yTWVzc2FnZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc3BsYXlUaW1lSW5mb1NpZ246IG51bWJlcjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93RmlsZVVwbG9hZERhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZWFkeSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcblxuICAgIHB1YmxpYyBmaWVsZHM6IEZvcm1GaWVsZFtdID0gW107XG4gICAgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICAgIHByaXZhdGUgcmVhZHkgPSBmYWxzZTtcbiAgICBwcml2YXRlIG9uQ2hhbmdlOiBhbnk7XG4gICAgcHJpdmF0ZSBvblRvdWNoZWQ6IGFueTtcbiAgICBwcml2YXRlIHZhbHVlOiBhbnk7XG4gICAgcHJpdmF0ZSBuZ1VzdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuICAgIHByaXZhdGUgdXBsb2FkQ2FuY2VsZWQ6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBoYXNCbG9iOiBib29sZWFuO1xuICAgIHByaXZhdGUgaGFzVXBsb2FkZWQ6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjdXN0b21GaWVsZHNTZXJ2aWNlOiBDdXN0b21GaWVsZHNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGxvY2FsZVNlcnZpY2U6IExvY2FsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyXG4gICAgKSB7XG4gICAgfVxuXG4gICAgZ2V0IHBhcmVudEZvcm0oKTogRm9ybUdyb3VwIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbENvbnRhaW5lci5jb250cm9sIGFzIEZvcm1Hcm91cDtcbiAgICB9XG5cbiAgICBnZXQgcGFyZW50Q29udHJvbCgpOiBGb3JtQ29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmVudEZvcm0uZ2V0KFwiY3VzdG9tXCIpIGFzIEZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBGdW5jdGlvbikge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vbkNoYW5nZSh0aGlzLnBhcnNlRmllbGRzVmFsdWVzKCkpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5yZWFkeSkge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnBhcnNlVmFsdWVzRm9yRmllbGRzKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUobmV3VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVGaWxlc0lmU2V0Rm9ybVZhbHVlc0FmdGVySW5pdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh2YWx1ZSB8fCB7fSk7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB0aGlzLmZvcm1Hcm91cC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgZWxzZSB0aGlzLmZvcm1Hcm91cC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDdXN0b21GaWVsZHMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgaWYgKHRoaXMuZW50aXR5T2JqZWN0ICYmIHRoaXMuZW50aXR5T2JqZWN0LmVudGl0eV8pIHtcbiAgICAgICAgICAgIHJldHVybiBvZih0aGlzLmVudGl0eU9iamVjdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tRmllbGRzU2VydmljZS5nZXRDdXN0b21GaWVsZHModGhpcy5kb21haW4sIHRoaXMuc2VydmljZSwgdGhpcy5lbnRpdHksIHRoaXMuY3VzdG9tRmllbGRzRW5kcG9pbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRvbWFpbikgdGhyb3cgbmV3IEVycm9yKFwiWW91IG5lZWQgdG8gc3BlY2lmeSB0aGUgY3VzdG9tLWZpZWxkcyBkb21haW4hXCIpO1xuICAgICAgICBpZiAoIXRoaXMuc2VydmljZSkgdGhyb3cgbmV3IEVycm9yKFwiWW91IG5lZWQgdG8gc3BlY2lmeSB0aGUgY3VzdG9tLWZpZWxkcyBzZXJ2aWNlIVwiKTtcbiAgICAgICAgaWYgKCF0aGlzLmVudGl0eSkgdGhyb3cgbmV3IEVycm9yKFwiWW91IG5lZWQgdG8gc3BlY2lmeSB0aGUgY3VzdG9tLWZpZWxkcyBlbnRpdHkhXCIpO1xuXG4gICAgICAgIHRoaXMuZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgICAgIGNvbnN0IG9ic2VydmFibGVzID0gW3RoaXMuZ2V0Q3VzdG9tRmllbGRzKCksIHRoaXMubG9jYWxlU2VydmljZS5nZXQoKV07XG4gICAgICAgIGZvcmtKb2luKG9ic2VydmFibGVzKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVc3Vic2NyaWJlKSwgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRDb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IFtjdXN0b21GaWVsZHNSZXNwb25zZSwgbG9jYWxlT3B0aW9uc10gPSByZXNwb25zZTtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0czogYW55ID0ge307XG4gICAgICAgICAgICAgICAgZGVmYXVsdHNbQ3VzdG9tRmllbGRUeXBlLlN0cmluZ10gPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuQm9vbGVhbl0gPSB7IGRlZmF1bHRWYWx1ZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuSW50ZWdlcl0gPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuRG91YmxlXSA9IHsgZGVmYXVsdE1hc2s6IFwiXCIgfTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuTW9uZXldID0ge307XG4gICAgICAgICAgICAgICAgZGVmYXVsdHNbQ3VzdG9tRmllbGRUeXBlLkRhdGVdID0ge307XG4gICAgICAgICAgICAgICAgZGVmYXVsdHNbQ3VzdG9tRmllbGRUeXBlLkRhdGVUaW1lXSA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRzW0N1c3RvbUZpZWxkVHlwZS5Mb2NhbERhdGVUaW1lXSA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRzW0N1c3RvbUZpZWxkVHlwZS5UaW1lXSA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRzW0N1c3RvbUZpZWxkVHlwZS5CbG9iXSA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRzW0N1c3RvbUZpZWxkVHlwZS5FbnVtXSA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRzW0N1c3RvbUZpZWxkVHlwZS5CaW5hcnldID0ge307XG4gICAgICAgICAgICAgICAgZGVmYXVsdHNbQ3VzdG9tRmllbGRUeXBlLkFueV0gPSB7fTtcblxuICAgICAgICAgICAgICAgIGlmICghY3VzdG9tRmllbGRzUmVzcG9uc2UgfHwgIWN1c3RvbUZpZWxkc1Jlc3BvbnNlLmVudGl0eV8pIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGFjdGl2ZSwgZmllbGRzIH0gPSBjdXN0b21GaWVsZHNSZXNwb25zZS5lbnRpdHlfO1xuICAgICAgICAgICAgICAgIGlmICghYWN0aXZlKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICBmaWVsZHNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoZmllbGQ6IGFueSkgPT4gZmllbGQuY3VzdG9taXphYmxlICYmIGZpZWxkLmN1c3RvbWl6YXRpb24gJiYgZmllbGQuY3VzdG9taXphdGlvbi5hY3RpdmUpXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtRmllbGQgPSB0aGlzLmdldEZvcm1GaWVsZChmaWVsZCwgbG9jYWxlT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZFR5cGUgPSBmaWVsZC50eXBlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gQ3VzdG9tRmllbGRUeXBlLkJsb2IgJiYgdGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlW2Zvcm1GaWVsZC5uYW1lXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUJsb2JUb0ZpbGVVcGxvYWQoZm9ybUZpZWxkKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB2YWxpZGF0aW9uUmVnZXggfSA9IGZpZWxkLmN1c3RvbWl6YXRpb247XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFzSXNUeXBlcyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWVsZFR5cGUuQm9vbGVhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmllbGRUeXBlLkRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmllbGRUeXBlLkRhdGVUaW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpZWxkVHlwZS5Mb2NhbERhdGVUaW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpZWxkVHlwZS5UaW1lXG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvblJlZ2V4ICYmICFhc0lzVHlwZXMuaW5jbHVkZXMoZmllbGRUeXBlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKHZhbGlkYXRpb25SZWdleCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkVHlwZSA9PT0gQ3VzdG9tRmllbGRUeXBlLkludGVnZXIgJiYgIWZvcm1GaWVsZC5tYXNrKSB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKC9eXFwtP1xcZCokLykpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybUZpZWxkLnJlcXVpcmVkPy4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiBkZWZhdWx0c1tmaWVsZFR5cGVdLmRlZmF1bHRWYWx1ZSwgZGlzYWJsZWQ6IHRoaXMuZm9ybUdyb3VwLmRpc2FibGVkIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbChmb3JtRmllbGQubmFtZSwgY29udHJvbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkcy5wdXNoKGZvcm1GaWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVGaWVsZEN1c3RvbWl6YXRpb24oZmllbGRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHRoaXMucGFyc2VWYWx1ZXNGb3JGaWVsZHModGhpcy52YWx1ZSkpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVhZHkgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5yZWFkeSQ/Lm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubmdVc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1VzdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGUoKSB7XG4gICAgICAgIGNvbnN0IGVycm9yczogYW55ID0ge307XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZXJyb3JzOiBjb250cm9sRXJyb3JzIH0gPSB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQpO1xuICAgICAgICAgICAgaWYgKGNvbnRyb2xFcnJvcnMpIGVycm9yc1tmaWVsZF0gPSBjb250cm9sRXJyb3JzO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGVycm9ycztcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlVmFsdWVzRm9yRmllbGRzKHZhbHVlczogYW55KSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFZhbHVlcyA9IHsgLi4udmFsdWVzIH07XG5cbiAgICAgICAgdGhpcy5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHR5cGUsIG5hbWUgfSA9IGZpZWxkO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZXMgJiYgdmFsdWVzW25hbWVdO1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYXRhbWVudG8gZXhjbHVzaXZvIHBhcmEgY2FtcG9zIGJvb2xlYW4gcXVlIHRlbSBvIHN0YXR1cyBFbXB0eVxuICAgICAgICAgICAgICogRXNzYSBjb25kaWNpb25hbCBuZWNlc3NpdGEgZXN0YXIgYW50ZXMgZG8gaWYgKCF2YWx1ZSkgcmV0dXJuO1xuICAgICAgICAgICAgICogUG9pcyBlbGEgdGVtIHVtIHN0YXR1cyBxdWUgdXNhIG51bGwgbm8gdmFsb3IgZG8gY2FtcG8gcmFkaW8gYm9vbGVhblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gRmllbGRUeXBlLkJvb2xlYW4pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc1N0cmluZyA9IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIjtcbiAgICAgICAgICAgICAgICBjb25zdCBub3RWYWxpZCA9ICFpc1N0cmluZyAmJiB0eXBlb2YgdmFsdWUgIT09IFwiYm9vbGVhblwiO1xuICAgICAgICAgICAgICAgIGlmIChub3RWYWxpZCkge1xuICAgICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZXNbbmFtZV0gPSBudWxsO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENvbmRpY2lvbmFsIHBhcmEgY2FtcG9zIHF1ZSByZXRvcm5hbSBzdHJpbmcgZGUgYm9vbGVuIGRvIGJhY2thbmRcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzU3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZXNbbmFtZV0gPSB2YWx1ZSA9PT0gXCJ0cnVlXCIgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZXNbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5EYXRlOlxuICAgICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZXNbbmFtZV0gPSBtb21lbnQodmFsdWUpLnRvRGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5EYXRlVGltZTpcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWVzW25hbWVdID0gbW9tZW50KHZhbHVlKS50b0RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuTG9jYWxEYXRlVGltZTpcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWVzW25hbWVdID0gbW9tZW50KHZhbHVlLCBcIllZWVktTU0tRERbVF1ISDptbTpzcy5TU1NcIikudG9EYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLlRpbWU6XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlc1tuYW1lXSA9IG1vbWVudCh2YWx1ZSwgXCJISDptbTpzc1wiKS50b0RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBwYXJzZWRWYWx1ZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWxndW1hcyBlcXVpcGVzIHPDsyBzZXRhbSB2YWxvciBubyBmb3JtdWzDoXJpbywgYXDDs3MgbyBjYXJyZWdhbWVudG8gZGEgdGVsYVxuICAgICAqIENvbW8gw6kgYmVtIHBhZHLDo28gaXNzbywgZm9pIG5lY2Vzc8OhcmlvIGNyaWFyIGVzc2UgbcOpdG9kbyBwYXJhIGdlcmFyIG8gZmlsZVxuICAgICAqIGFww7NzIHNldGFyIG8gdmFsb3Igbm8gZm9ybXVsw6FyaW9cbiAgICAgKi9cbiAgICBwcml2YXRlIGNyZWF0ZUZpbGVzSWZTZXRGb3JtVmFsdWVzQWZ0ZXJJbml0KCkge1xuICAgICAgICBpZiAoIXRoaXMuaGFzVXBsb2FkZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGRzLmZpbHRlcigoZmllbGQ6IEZvcm1GaWVsZCkgPT4gZmllbGQudHlwZSA9PT0gRmllbGRUeXBlLkJsb2IpLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkudmFsdWUpIHRoaXMuY3JlYXRlQmxvYlRvRmlsZVVwbG9hZChmaWVsZCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VGaWVsZHNWYWx1ZXMoKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFZhbHVlczogYW55ID0ge307XG5cbiAgICAgICAgdGhpcy5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHR5cGUsIG5hbWUsIG1hc2ssIHNjYWxlIH0gPSBmaWVsZDtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuZm9ybUdyb3VwLmdldChuYW1lKS52YWx1ZTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLk51bWJlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXNrKSB2YWx1ZSA9IG5ldyBCaWdOdW1iZXIodmFsdWUpLnRvRml4ZWQoc2NhbGUgYXMgbnVtYmVyKS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLkRhdGU6XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5EYXRlVGltZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbW9tZW50KHZhbHVlKS5mb3JtYXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5Mb2NhbERhdGVUaW1lOlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBtb21lbnQodmFsdWUpLmZvcm1hdChcIllZWVktTU0tRERbVF1ISDptbTpzcy5TU1NcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuVGltZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbW9tZW50KHZhbHVlKS5mb3JtYXQoXCJISDptbTpzc1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBudWxsICYmICFOdW1iZXIuaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkVmFsdWVzW25hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNUeXBlTnVtYmVyT3JFbnVtKHR5cGUpKSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkVmFsdWVzW25hbWVdID0gZmllbGQubXVsdGlwbGUgPyBbXSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmhhc0Jsb2IpIHBhcnNlZFZhbHVlc1tcImZpZWxkQ3VzdG9taXphdGlvblwiXSA9IHRoaXMuZm9ybUdyb3VwLmdldChcImZpZWxkQ3VzdG9taXphdGlvblwiKS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHBhcnNlZFZhbHVlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVHlwZU51bWJlck9yRW51bSh0eXBlOiBGaWVsZFR5cGUpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgbnVtYmVyT3JFbnVtID0gW1xuICAgICAgICAgICAgRmllbGRUeXBlLk51bWJlcixcbiAgICAgICAgICAgIEZpZWxkVHlwZS5FbnVtXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiBudW1iZXJPckVudW0uaW5jbHVkZXModHlwZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGb3JtRmllbGQoZmllbGQ6IGFueSwgbG9jYWxlT3B0aW9uczogTG9jYWxlT3B0aW9ucyk6IEZvcm1GaWVsZCB7XG4gICAgICAgIGxldCBwYXJhbWV0ZXJzO1xuXG4gICAgICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBDdXN0b21GaWVsZFR5cGUuQmxvYjpcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzID0gdGhpcy5nZXRCbG9iUGFyYW1ldGVycygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDdXN0b21GaWVsZFR5cGUuQm9vbGVhbjpcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzID0gdGhpcy5nZXRCb29sZWFuUGFyYW1ldGVycygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIkVudW1lcmF0aW9uXCI6XG4gICAgICAgICAgICBjYXNlIEN1c3RvbUZpZWxkVHlwZS5FbnVtOlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSBGaWVsZFR5cGUuRW51bTtcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzID0gdGhpcy5nZXRFbnVtUGFyYW1ldGVycyhmaWVsZCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEN1c3RvbUZpZWxkVHlwZS5Nb25leTpcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzID0ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0QWRkb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsb2NhbGVPcHRpb25zPy5udW1iZXI/LmN1cnJlbmN5U3ltYm9sID8/IFwiUiRcIixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDdXN0b21GaWVsZFR5cGUuRG91YmxlOlxuICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5OdW1iZXJcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDdXN0b21GaWVsZFR5cGUuSW50ZWdlcjpcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzID0ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICBzY2FsZTogMFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSB7fTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgIG5hbWU6IGZpZWxkLmlkLFxuICAgICAgICAgICAgbGFiZWw6IGZpZWxkLmN1c3RvbWl6YXRpb24ubGFiZWwsXG4gICAgICAgICAgICB0b29sdGlwOiBmaWVsZC5jdXN0b21pemF0aW9uLnRvb2x0aXAsXG4gICAgICAgICAgICBpbmZvU2lnbjogZmllbGQuY3VzdG9taXphdGlvbi5pbmZvU2lnbixcbiAgICAgICAgICAgIHR5cGU6IGZpZWxkLnR5cGUsXG4gICAgICAgICAgICBtYXNrOiBmaWVsZC5jdXN0b21pemF0aW9uLm1hc2ssXG4gICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmllbGQuY3VzdG9taXphdGlvbi5tYW5kYXRvcnksXG4gICAgICAgICAgICBjYWxlbmRhck9wdGlvbnM6IGxvY2FsZU9wdGlvbnMuY2FsZW5kYXIsXG4gICAgICAgICAgICBjdXJyZW5jeU9wdGlvbnM6IGxvY2FsZU9wdGlvbnMubnVtYmVyLFxuICAgICAgICAgICAgLi4ucGFyYW1ldGVycyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRFbnVtUGFyYW1ldGVycyhmaWVsZDogYW55KTogb2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgIG11bHRpcGxlOiBmaWVsZC5jdXN0b21pemF0aW9uLmN1c3RvbUVudW1lcmF0aW9uLm11bHRpcGxlLFxuICAgICAgICAgICAgb3B0aW9uczogZmllbGQuY3VzdG9taXphdGlvbi5jdXN0b21FbnVtZXJhdGlvbi52YWx1ZXMubWFwKChlOiBhbnkpID0+ICh7IGxhYmVsOiBlLnZhbHVlLCB2YWx1ZTogZS5rZXkgfSkpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Qm9vbGVhblBhcmFtZXRlcnMoKTogb2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG9wdGlvbnNMYWJlbDoge1xuICAgICAgICAgICAgICAgIHRydWU6IHRoaXMuZ2V0VHJhbnNsYXRlTGFiZWwoYHRydWVfbGFiZWxgKSxcbiAgICAgICAgICAgICAgICBmYWxzZTogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgZmFsc2VfbGFiZWxgKSxcbiAgICAgICAgICAgICAgICBlbXB0eTogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgZW1wdHlfbGFiZWxgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRCbG9iUGFyYW1ldGVycygpOiBvYmplY3Qge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2l6ZToge1xuICAgICAgICAgICAgICAgIHNtOiAxMixcbiAgICAgICAgICAgICAgICBtZDogMTIsXG4gICAgICAgICAgICAgICAgbGc6IDEyLFxuICAgICAgICAgICAgICAgIHhsOiAxMixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhY2NlcHQ6IFwiaW1hZ2UvKiwgYXBwbGljYXRpb24vKiwgdGV4dC8qXCIsXG4gICAgICAgICAgICBjaG9vc2VMYWJlbDogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgY2hvb3NlX2xhYmVsYCksXG4gICAgICAgICAgICByZW1vdmVMYWJlbDogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgcmVtb3ZlX2xhYmVsYCksXG4gICAgICAgICAgICBjYW5jZWxMYWJlbDogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgY2FuY2VsX2xhYmVsYCksXG4gICAgICAgICAgICBzdWNjZXNzVG9vbHRpcDogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgc3VjY2Vzc190b29sdGlwYCksXG4gICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICBvblVwbG9hZEZpbGU6IChldmVudDogeyBmaWxlczogRmlsZUR0b1tdIH0sIGZvcm1maWVsZDogRm9ybUZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNVcGxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlKGV2ZW50LCBmb3JtZmllbGQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uUmVtb3ZlRmlsZTogKGV2ZW50OiB7IGZpbGU6IEZpbGVEdG8gfSwgZm9ybWZpZWxkOiBGb3JtRmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUZpbGUoZXZlbnQsIGZvcm1maWVsZCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25DYW5jZWxVcGxvYWQ6IChldmVudDogbnVtYmVyLCBmb3JtZmllbGQ6IEZvcm1GaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FuY2VsVXBsb2FkKGV2ZW50LCBmb3JtZmllbGQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uRG93bmxvYWRGaWxlOiAoZXZlbnQ6IHsgaW5kZXg6IG51bWJlcjsgYW5jaG9yOiBFbGVtZW50UmVmIH0sIGZvcm1maWVsZDogRm9ybUZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUoZXZlbnQsIGZvcm1maWVsZCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2hvd0ZpbGVVcGxvYWREYXRlOiB0aGlzLnNob3dGaWxlVXBsb2FkRGF0ZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIMOJIG5lY2Vzc8OhcmlvIGNyaWFyIG8gZmllbGRDdXN0b21pemF0aW9uIHF1YW5kbyBow6EgdW0gQmxvYiBuYSBlbnRpZGFkZSBwYXJhIGdlcmFyIG9cbiAgICAgKiBjb20gb3MgZmllbGRzIGluc2VyaWRvcyBlIGRlbGV0YWRvcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNyZWF0ZUZpZWxkQ3VzdG9taXphdGlvbihmaWVsZHM6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGFzQmxvYiA9ICEhZmllbGRzLmZpbHRlcigoZmllbGQ6IGFueSkgPT4gZmllbGQudHlwZSA9PT0gQ3VzdG9tRmllbGRUeXBlLkJsb2IpLmxlbmd0aDtcbiAgICAgICAgaWYgKHRoaXMuaGFzQmxvYikge1xuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICAgICAgICBcImZpZWxkQ3VzdG9taXphdGlvblwiLFxuICAgICAgICAgICAgICAgIG5ldyBGb3JtQXJyYXkoW1xuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogbmV3IEZvcm1Db250cm9sKHRoaXMuZG9tYWluKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IG5ldyBGb3JtQ29udHJvbCh0aGlzLnNlcnZpY2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiBuZXcgRm9ybUNvbnRyb2wodGhpcy5lbnRpdHkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG9EZWxldGU6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB7fSwgZGlzYWJsZWQ6IGZhbHNlIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG9JbnNlcnQ6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB7fSwgZGlzYWJsZWQ6IGZhbHNlIH0pLFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQmxvYlRvRmlsZVVwbG9hZChmaWVsZDogRm9ybUZpZWxkKSB7XG4gICAgICAgIGNvbnN0IG9iamVjdElkID0gdGhpcy52YWx1ZVtmaWVsZC5uYW1lXSA/IHRoaXMudmFsdWVbZmllbGQubmFtZV0gOiB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkudmFsdWU7XG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gb2JqZWN0SWQuc3Vic3RyaW5nKG9iamVjdElkLmxhc3RJbmRleE9mKFwiL1wiKSArIDEpO1xuICAgICAgICBjb25zdCBmaWxlOiBQYXJ0aWFsPEZpbGVEdG8+ID0geyBuYW1lOiBmaWxlTmFtZSwgb2JqZWN0SWQsIHNhdmVkRmlsZTogdHJ1ZSB9O1xuICAgICAgICBmaWVsZC5maWxlcyA9IFtmaWxlIGFzIEZpbGVEdG9dO1xuICAgIH1cblxuICAgIHByaXZhdGUgZG93bmxvYWRGaWxlKGV2ZW50OiB7IGluZGV4OiBudW1iZXI7IGFuY2hvcjogRWxlbWVudFJlZiB9LCBmaWVsZDogRm9ybUZpZWxkKSB7XG4gICAgICAgIGNvbnN0IHsgaW5kZXgsIGFuY2hvciB9ID0gZXZlbnQ7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRGaWxlID0gZmllbGQuZmlsZXNbaW5kZXhdO1xuICAgICAgICBpZiAoY3VycmVudEZpbGUub2JqZWN0VVJMKSB7XG4gICAgICAgICAgICBhbmNob3IubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXN0b21GaWVsZHNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLnJlcXVlc3RBY2Nlc3MoY3VycmVudEZpbGUub2JqZWN0SWQsIHRoaXMucmVxdWVzdEFjY2Vzc0VuZHBvaW50KVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVXN1YnNjcmliZSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YTogeyBmaWxlTmFtZTogc3RyaW5nOyB1cmk6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZmlsZU5hbWUsIHVyaSB9ID0gZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21GaWVsZHNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAuZ2V0RmlsZSh1cmkpXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1VzdWJzY3JpYmUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoYmxvYjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3RmlsZSA9IDxGaWxlRHRvPm5ldyBGaWxlKFtibG9iXSwgZmlsZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ZpbGUub2JqZWN0VVJMID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybCh1cmkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvci5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdXJpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdGaWxlLm9iamVjdElkID0gY3VycmVudEZpbGUub2JqZWN0SWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RmlsZS5zYXZlZEZpbGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmZpbGVzW2luZGV4XSA9IG5ld0ZpbGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuZmlsZXMgPSBbLi4uZmllbGQuZmlsZXNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvci5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBsb2FkRmlsZShldmVudDogeyBmaWxlczogRmlsZUR0b1tdIH0sIGZvcm1GaWVsZDogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgZmlsZXMgfSA9IGV2ZW50O1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZmllbGRzLmZpbmQoKHJlY29yZDogRm9ybUZpZWxkKSA9PiByZWNvcmQubmFtZSA9PT0gZm9ybUZpZWxkLm5hbWUpO1xuXG4gICAgICAgIC8vIFNlIG9jb3JyZXIgdW0gdXBsb2FkLCBqw6EgZXhpc3RpbmRvIHVtIGFycXVpdm8gY29tIHVwbG9hZCBmZWl0by4gw4kgbmVjZXNzw6FyaW8gZXhjbHVpciBvIG1lc21vLlxuICAgICAgICBpZiAoZmllbGQuZmlsZXMgJiYgZmllbGQuZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUZpbGUoeyBmaWxlOiBmaWVsZC5maWxlc1swXSB9LCBmaWVsZCk7XG4gICAgICAgIH1cbiAgICAgICAgZmllbGQuZmlsZXMgPSBmaWxlcztcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0gZmlsZXNbaV07XG4gICAgICAgICAgICBpZiAoIWZpbGUuc2F2ZWRGaWxlICYmICFmaWxlLnByb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgZmlsZS5pc1VwbG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLnNldFZhbGlkYXRvcnMoaXNVcGxvYWRpbmcoZmlsZSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21GaWVsZHNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5nZXRGaWxlTG9jYXRpb25VcmwoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluOiB0aGlzLmRvbWFpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiB0aGlzLnNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5TmFtZTogdGhpcy5lbnRpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGZpZWxkLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6IGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVMb2NhdGlvbkVuZHBvaW50XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1VzdWJzY3JpYmUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodGhpcy5kZWZhbHRDYXRjaEVycm9yKGZpZWxkLCBlcnIsIGkpKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgbG9jYXRpb24sIHZlcnNpb24sIG9iamVjdElkIH0gPSBkYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUub2JqZWN0SWQgPSBvYmplY3RJZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVbXCJ1cGxvYWRTdWJzY3JpYmVcIl0gPSB0aGlzLmN1c3RvbUZpZWxkc1NlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudXBsb2FkVGVtcEZpbGUobG9jYXRpb24sIGZpbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVXN1YnNjcmliZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHRoaXMuZGVmYWx0Q2F0Y2hFcnJvcihmaWVsZCwgZXJyLCBpKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLmlzVXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0eXBlIH0gPSByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnVwbG9hZENhbmNlbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLnByb2dyZXNzID0gTWF0aC5yb3VuZChyZXNwb25zZS5sb2FkZWQgLyByZXNwb25zZS50b3RhbCkgKiAxMDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5vYmplY3RVUkwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB7IG9iamVjdElkLCBuYW1lOiBmaWxlLm5hbWUsIHZlcnNpb246IGZpbGUudmVyc2lvbiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvSW5zZXJ0ID0gdGhpcy5mb3JtR3JvdXAuZ2V0KFwiZmllbGRDdXN0b21pemF0aW9uXCIpLnZhbHVlWzBdLnRvSW5zZXJ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChcImZpZWxkQ3VzdG9taXphdGlvblwiKS52YWx1ZVswXS50b0luc2VydCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udG9JbnNlcnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZC5uYW1lXTogdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkuc2V0VmFsdWUoYCR7ZmlsZS5vYmplY3RJZH0vJHtmaWxlLm5hbWV9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuZmlsZXMgPSBbZmlsZV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy51cGxvYWRDYW5jZWxlZCAmJiB0eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlKSB0aGlzLnVwbG9hZENhbmNlbGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5maWxlcyA9IFtmaWxlXTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZUZpbGUoZXZlbnQ6IHsgZmlsZTogRmlsZUR0byB9LCBmb3JtRmllbGQ6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGZpbGUgfSA9IGV2ZW50O1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZmllbGRzLmZpbmQoKHJlY29yZDogRm9ybUZpZWxkKSA9PiByZWNvcmQubmFtZSA9PT0gZm9ybUZpZWxkLm5hbWUpO1xuICAgICAgICBmaWVsZC5maWxlcyA9IFtdO1xuICAgICAgICBpZiAoZmlsZS5vYmplY3RJZCkge1xuICAgICAgICAgICAgLy8gUXVhbmRvIMOpIHVtIGFycXVpdm8gasOhIHNhbHZvIG8gb2JqZWN0SWQgasOhIMOpIG5vIGZvcm1hdG8gXCJvYmplY3RJZC9uYW1lXCJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZmlsZS5zYXZlZEZpbGUgPyBgJHtmaWxlLm9iamVjdElkfWAgOiBgJHtmaWxlLm9iamVjdElkfS8ke2ZpbGUubmFtZX1gO1xuICAgICAgICAgICAgY29uc3QgdG9EZWxldGUgPSB0aGlzLmZvcm1Hcm91cC5nZXQoXCJmaWVsZEN1c3RvbWl6YXRpb25cIikudmFsdWVbMF0udG9EZWxldGU7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5mb3JtR3JvdXAuZ2V0KFwiZmllbGRDdXN0b21pemF0aW9uXCIpLnZhbHVlWzBdLnRvSW5zZXJ0W2ZpZWxkLm5hbWVdO1xuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KFwiZmllbGRDdXN0b21pemF0aW9uXCIpLnZhbHVlWzBdLnRvRGVsZXRlID0ge1xuICAgICAgICAgICAgICAgIC4uLnRvRGVsZXRlLFxuICAgICAgICAgICAgICAgIFtmaWVsZC5uYW1lXTogWy4uLih0b0RlbGV0ZVtmaWVsZC5uYW1lXSB8fCBbXSksIHZhbHVlXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKS5zZXRWYWx1ZShcIlwiKTtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbmNlbFVwbG9hZChpbmRleDogbnVtYmVyLCBmb3JtRmllbGQ6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwbG9hZENhbmNlbGVkID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmZpZWxkcy5maW5kKChyZWNvcmQ6IEZvcm1GaWVsZCkgPT4gcmVjb3JkLm5hbWUgPT09IGZvcm1GaWVsZC5uYW1lKTtcbiAgICAgICAgZmllbGQuZmlsZXNbaW5kZXhdW1widXBsb2FkU3Vic2NyaWJlXCJdLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIGZpZWxkLmZpbGVzID0gW107XG4gICAgICAgIGRlbGV0ZSB0aGlzLmZvcm1Hcm91cC5nZXQoXCJmaWVsZEN1c3RvbWl6YXRpb25cIikudmFsdWVbMF0udG9JbnNlcnRbZmllbGQubmFtZV07XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKS5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLnNldFZhbHVlKFwiXCIpO1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVmYWx0Q2F0Y2hFcnJvcihmaWVsZDogRm9ybUZpZWxkLCBlcnI6IEh0dHBFcnJvclJlc3BvbnNlLCBpbmRleDogbnVtYmVyKTogT2JzZXJ2YWJsZTxuZXZlcj4ge1xuICAgICAgICBjb25zdCB7IGZpbGVzIH0gPSBmaWVsZDtcbiAgICAgICAgZmlsZXNbaW5kZXhdLmVycm9yID0gZXJyO1xuICAgICAgICBmaWxlc1tpbmRleF0uaXNVcGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgZmllbGQuZmlsZXMgPSBbLi4uZmlsZXNdO1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkuc2V0VmFsaWRhdG9ycyhbZXJyb3JPblVwbG9hZChmaWxlc1tpbmRleF0pXSk7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKG5ldyBFcnJvcihcImVycm9yIGluIHVwbG9hZCBmaWxlLiBEZXRhaWxzOiBcIiArIGVyci5tZXNzYWdlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUcmFuc2xhdGVMYWJlbChsYWJlbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGAke3RoaXMuZG9tYWlufS4ke3RoaXMuc2VydmljZX0uJHtsYWJlbH1gKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzVXBsb2FkaW5nKGZpbGU6IEZpbGVEdG8pOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuICgpID0+IChmaWxlLmlzVXBsb2FkaW5nID8geyBpc1VwbG9hZGluZzogdHJ1ZSB9IDogbnVsbCk7XG59XG5cbmZ1bmN0aW9uIGVycm9yT25VcGxvYWQoZmlsZTogRmlsZUR0byk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKCkgPT4gKGZpbGUuZXJyb3IgPyB7IHVwbG9hZEVycm9yOiB0cnVlIH0gOiBudWxsKTtcbn1cbiJdfQ==
594
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWZpZWxkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9jdXN0b20tZmllbGRzL2N1c3RvbS1maWVsZHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQXFCLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUNILGdCQUFnQixFQUNoQixvQkFBb0IsRUFDcEIsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQUUsYUFBYSxFQUN4QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFdBQVcsRUFDWCxVQUFVLEVBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxTQUFTLE1BQU0sY0FBYyxDQUFDO0FBQ3JDLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBK0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlELElBQUssZUFjSjtBQWRELFdBQUss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ImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwRXZlbnRUeXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgICBDb250cm9sQ29udGFpbmVyLFxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIEZvcm1BcnJheSxcbiAgICBGb3JtQ29udHJvbCxcbiAgICBGb3JtR3JvdXAsIE5HX1ZBTElEQVRPUlMsXG4gICAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgVmFsaWRhdG9yLFxuICAgIFZhbGlkYXRvckZuLFxuICAgIFZhbGlkYXRvcnNcbn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gXCJiaWdudW1iZXIuanNcIjtcbmltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSBcIm1vbWVudFwiO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmb3JrSm9pbiwgb2YsIHRocm93RXJyb3IgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgRmllbGRUeXBlLCBGb3JtRmllbGQgfSBmcm9tIFwiLi4vZHluYW1pYy1mb3JtL2luZGV4XCI7XG5pbXBvcnQgeyBGaWxlRHRvIH0gZnJvbSBcIi4uL2ZpbGUtdXBsb2FkL2luZGV4XCI7XG5pbXBvcnQgeyBMb2NhbGVPcHRpb25zIH0gZnJvbSBcIi4uL2xvY2FsZVwiO1xuaW1wb3J0IHsgTG9jYWxlU2VydmljZSB9IGZyb20gXCIuLi9sb2NhbGUvbG9jYWxlLnNlcnZpY2VcIjtcbmltcG9ydCB7IEN1c3RvbUZpZWxkc1NlcnZpY2UgfSBmcm9tIFwiLi9jdXN0b20tZmllbGRzLnNlcnZpY2VcIjtcblxuZW51bSBDdXN0b21GaWVsZFR5cGUge1xuICAgIFN0cmluZyA9IFwiU3RyaW5nXCIsXG4gICAgQm9vbGVhbiA9IFwiQm9vbGVhblwiLFxuICAgIEludGVnZXIgPSBcIkludGVnZXJcIixcbiAgICBEb3VibGUgPSBcIkRvdWJsZVwiLFxuICAgIERhdGUgPSBcIkRhdGVcIixcbiAgICBEYXRlVGltZSA9IFwiRGF0ZVRpbWVcIixcbiAgICBMb2NhbERhdGVUaW1lID0gXCJMb2NhbERhdGVUaW1lXCIsXG4gICAgVGltZSA9IFwiVGltZVwiLFxuICAgIE1vbmV5ID0gXCJNb25leVwiLFxuICAgIEJsb2IgPSBcIkJsb2JcIixcbiAgICBCaW5hcnkgPSBcIkJpbmFyeVwiLFxuICAgIEFueSA9IFwiQW55XCIsXG4gICAgRW51bSA9IFwiRW51bVwiXG59XG5cbmNvbnN0IG1vbWVudCA9IG1vbWVudF87IC8vIEBIQUNLIE5lY2Vzc2FyeSBiZWNhdXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9yb2xsdXAvcm9sbHVwL2lzc3Vlcy82NzBcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwicy1jdXN0b20tZmllbGRzXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9jdXN0b20tZmllbGRzLmNvbXBvbmVudC5odG1sXCIsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IEN1c3RvbUZpZWxkc0NvbXBvbmVudCxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IEN1c3RvbUZpZWxkc0NvbXBvbmVudCxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbUZpZWxkc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkb21haW46IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXJ2aWNlOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZW50aXR5OiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaW52YWxpZEVycm9yTGFiZWw6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlbnRpdHlPYmplY3Q6IGFueTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdXN0b21GaWVsZHNFbmRwb2ludCA9IFwicGxhdGZvcm0vZmllbGRfY3VzdG9taXphdGlvbi9xdWVyaWVzL2dldEVudGl0eVwiO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZpbGVMb2NhdGlvbkVuZHBvaW50ID0gXCJwbGF0Zm9ybS9maWVsZF9jdXN0b21pemF0aW9uL2FjdGlvbnMvcmVxdWVzdFVwbG9hZFwiO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlcXVlc3RBY2Nlc3NFbmRwb2ludCA9IFwicGxhdGZvcm0vZmllbGRfY3VzdG9taXphdGlvbi9hY3Rpb25zL3JlcXVlc3RBY2Nlc3NcIjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZXF1aXJlZEVycm9yTWVzc2FnZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc3BsYXlUaW1lSW5mb1NpZ246IG51bWJlcjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93RmlsZVVwbG9hZERhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZWFkeSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcblxuICAgIHB1YmxpYyBmaWVsZHM6IEZvcm1GaWVsZFtdID0gW107XG4gICAgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICAgIHByaXZhdGUgcmVhZHkgPSBmYWxzZTtcbiAgICBwcml2YXRlIG9uQ2hhbmdlOiBhbnk7XG4gICAgcHJpdmF0ZSBvblRvdWNoZWQ6IGFueTtcbiAgICBwcml2YXRlIHZhbHVlOiBhbnk7XG4gICAgcHJpdmF0ZSBuZ1VzdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuICAgIHByaXZhdGUgdXBsb2FkQ2FuY2VsZWQ6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBoYXNCbG9iOiBib29sZWFuO1xuICAgIHByaXZhdGUgaGFzVXBsb2FkZWQ6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjdXN0b21GaWVsZHNTZXJ2aWNlOiBDdXN0b21GaWVsZHNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGxvY2FsZVNlcnZpY2U6IExvY2FsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyXG4gICAgKSB7XG4gICAgfVxuXG4gICAgZ2V0IHBhcmVudEZvcm0oKTogRm9ybUdyb3VwIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbENvbnRhaW5lci5jb250cm9sIGFzIEZvcm1Hcm91cDtcbiAgICB9XG5cbiAgICBnZXQgcGFyZW50Q29udHJvbCgpOiBGb3JtQ29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmVudEZvcm0uZ2V0KFwiY3VzdG9tXCIpIGFzIEZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBGdW5jdGlvbikge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vbkNoYW5nZSh0aGlzLnBhcnNlRmllbGRzVmFsdWVzKCkpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5yZWFkeSkge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnBhcnNlVmFsdWVzRm9yRmllbGRzKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUobmV3VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVGaWxlc0lmU2V0Rm9ybVZhbHVlc0FmdGVySW5pdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh2YWx1ZSB8fCB7fSk7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB0aGlzLmZvcm1Hcm91cC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgZWxzZSB0aGlzLmZvcm1Hcm91cC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDdXN0b21GaWVsZHMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgaWYgKHRoaXMuZW50aXR5T2JqZWN0ICYmIHRoaXMuZW50aXR5T2JqZWN0LmVudGl0eV8pIHtcbiAgICAgICAgICAgIHJldHVybiBvZih0aGlzLmVudGl0eU9iamVjdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tRmllbGRzU2VydmljZS5nZXRDdXN0b21GaWVsZHModGhpcy5kb21haW4sIHRoaXMuc2VydmljZSwgdGhpcy5lbnRpdHksIHRoaXMuY3VzdG9tRmllbGRzRW5kcG9pbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRvbWFpbikgdGhyb3cgbmV3IEVycm9yKFwiWW91IG5lZWQgdG8gc3BlY2lmeSB0aGUgY3VzdG9tLWZpZWxkcyBkb21haW4hXCIpO1xuICAgICAgICBpZiAoIXRoaXMuc2VydmljZSkgdGhyb3cgbmV3IEVycm9yKFwiWW91IG5lZWQgdG8gc3BlY2lmeSB0aGUgY3VzdG9tLWZpZWxkcyBzZXJ2aWNlIVwiKTtcbiAgICAgICAgaWYgKCF0aGlzLmVudGl0eSkgdGhyb3cgbmV3IEVycm9yKFwiWW91IG5lZWQgdG8gc3BlY2lmeSB0aGUgY3VzdG9tLWZpZWxkcyBlbnRpdHkhXCIpO1xuXG4gICAgICAgIHRoaXMuZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgICAgIGNvbnN0IG9ic2VydmFibGVzID0gW3RoaXMuZ2V0Q3VzdG9tRmllbGRzKCksIHRoaXMubG9jYWxlU2VydmljZS5nZXQoKV07XG4gICAgICAgIGZvcmtKb2luKG9ic2VydmFibGVzKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVc3Vic2NyaWJlKSwgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRDb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeSQpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZHkkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IFtjdXN0b21GaWVsZHNSZXNwb25zZSwgbG9jYWxlT3B0aW9uc10gPSByZXNwb25zZTtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0czogYW55ID0ge307XG4gICAgICAgICAgICAgICAgZGVmYXVsdHNbQ3VzdG9tRmllbGRUeXBlLlN0cmluZ10gPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuQm9vbGVhbl0gPSB7IGRlZmF1bHRWYWx1ZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuSW50ZWdlcl0gPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuRG91YmxlXSA9IHsgZGVmYXVsdE1hc2s6IFwiXCIgfTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuTW9uZXldID0ge307XG4gICAgICAgICAgICAgICAgZGVmYXVsdHNbQ3VzdG9tRmllbGRUeXBlLkRhdGVdID0ge307XG4gICAgICAgICAgICAgICAgZGVmYXVsdHNbQ3VzdG9tRmllbGRUeXBlLkRhdGVUaW1lXSA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRzW0N1c3RvbUZpZWxkVHlwZS5Mb2NhbERhdGVUaW1lXSA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRzW0N1c3RvbUZpZWxkVHlwZS5UaW1lXSA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRzW0N1c3RvbUZpZWxkVHlwZS5CbG9iXSA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRzW0N1c3RvbUZpZWxkVHlwZS5FbnVtXSA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRzW0N1c3RvbUZpZWxkVHlwZS5CaW5hcnldID0ge307XG4gICAgICAgICAgICAgICAgZGVmYXVsdHNbQ3VzdG9tRmllbGRUeXBlLkFueV0gPSB7fTtcblxuICAgICAgICAgICAgICAgIGlmICghY3VzdG9tRmllbGRzUmVzcG9uc2UgfHwgIWN1c3RvbUZpZWxkc1Jlc3BvbnNlLmVudGl0eV8pIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGFjdGl2ZSwgZmllbGRzIH0gPSBjdXN0b21GaWVsZHNSZXNwb25zZS5lbnRpdHlfO1xuICAgICAgICAgICAgICAgIGlmICghYWN0aXZlKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICBmaWVsZHNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoZmllbGQ6IGFueSkgPT4gZmllbGQuY3VzdG9taXphYmxlICYmIGZpZWxkLmN1c3RvbWl6YXRpb24gJiYgZmllbGQuY3VzdG9taXphdGlvbi5hY3RpdmUpXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtRmllbGQgPSB0aGlzLmdldEZvcm1GaWVsZChmaWVsZCwgbG9jYWxlT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZFR5cGUgPSBmaWVsZC50eXBlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gQ3VzdG9tRmllbGRUeXBlLkJsb2IgJiYgdGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlW2Zvcm1GaWVsZC5uYW1lXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUJsb2JUb0ZpbGVVcGxvYWQoZm9ybUZpZWxkKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB2YWxpZGF0aW9uUmVnZXggfSA9IGZpZWxkLmN1c3RvbWl6YXRpb247XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFzSXNUeXBlcyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWVsZFR5cGUuQm9vbGVhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmllbGRUeXBlLkRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmllbGRUeXBlLkRhdGVUaW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpZWxkVHlwZS5Mb2NhbERhdGVUaW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpZWxkVHlwZS5UaW1lXG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvblJlZ2V4ICYmICFhc0lzVHlwZXMuaW5jbHVkZXMoZmllbGRUeXBlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKHZhbGlkYXRpb25SZWdleCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkVHlwZSA9PT0gQ3VzdG9tRmllbGRUeXBlLkludGVnZXIgJiYgIWZvcm1GaWVsZC5tYXNrKSB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKC9eXFwtP1xcZCokLykpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybUZpZWxkLnJlcXVpcmVkPy4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiBkZWZhdWx0c1tmaWVsZFR5cGVdLmRlZmF1bHRWYWx1ZSwgZGlzYWJsZWQ6IHRoaXMuZm9ybUdyb3VwLmRpc2FibGVkIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbChmb3JtRmllbGQubmFtZSwgY29udHJvbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkcy5wdXNoKGZvcm1GaWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVGaWVsZEN1c3RvbWl6YXRpb24oZmllbGRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHRoaXMucGFyc2VWYWx1ZXNGb3JGaWVsZHModGhpcy52YWx1ZSkpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVXN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIHRoaXMubmdVc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlKCkge1xuICAgICAgICBjb25zdCBlcnJvcnM6IGFueSA9IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGVycm9yczogY29udHJvbEVycm9ycyB9ID0gdGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkKTtcbiAgICAgICAgICAgIGlmIChjb250cm9sRXJyb3JzKSBlcnJvcnNbZmllbGRdID0gY29udHJvbEVycm9ycztcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZVZhbHVlc0ZvckZpZWxkcyh2YWx1ZXM6IGFueSkge1xuICAgICAgICBjb25zdCBwYXJzZWRWYWx1ZXMgPSB7IC4uLnZhbHVlcyB9O1xuXG4gICAgICAgIHRoaXMuZmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyB0eXBlLCBuYW1lIH0gPSBmaWVsZDtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzICYmIHZhbHVlc1tuYW1lXTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmF0YW1lbnRvIGV4Y2x1c2l2byBwYXJhIGNhbXBvcyBib29sZWFuIHF1ZSB0ZW0gbyBzdGF0dXMgRW1wdHlcbiAgICAgICAgICAgICAqIEVzc2EgY29uZGljaW9uYWwgbmVjZXNzaXRhIGVzdGFyIGFudGVzIGRvIGlmICghdmFsdWUpIHJldHVybjtcbiAgICAgICAgICAgICAqIFBvaXMgZWxhIHRlbSB1bSBzdGF0dXMgcXVlIHVzYSBudWxsIG5vIHZhbG9yIGRvIGNhbXBvIHJhZGlvIGJvb2xlYW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKHR5cGUgPT09IEZpZWxkVHlwZS5Cb29sZWFuKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNTdHJpbmcgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm90VmFsaWQgPSAhaXNTdHJpbmcgJiYgdHlwZW9mIHZhbHVlICE9PSBcImJvb2xlYW5cIjtcbiAgICAgICAgICAgICAgICBpZiAobm90VmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWVzW25hbWVdID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBDb25kaWNpb25hbCBwYXJhIGNhbXBvcyBxdWUgcmV0b3JuYW0gc3RyaW5nIGRlIGJvb2xlbiBkbyBiYWNrYW5kXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1N0cmluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWVzW25hbWVdID0gdmFsdWUgPT09IFwidHJ1ZVwiID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWVzW25hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdmFsdWUpIHJldHVybjtcblxuICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZTpcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWVzW25hbWVdID0gbW9tZW50KHZhbHVlKS50b0RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVRpbWU6XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlc1tuYW1lXSA9IG1vbWVudCh2YWx1ZSkudG9EYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLkxvY2FsRGF0ZVRpbWU6XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlc1tuYW1lXSA9IG1vbWVudCh2YWx1ZSwgXCJZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTXCIpLnRvRGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5UaW1lOlxuICAgICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZXNbbmFtZV0gPSBtb21lbnQodmFsdWUsIFwiSEg6bW06c3NcIikudG9EYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcGFyc2VkVmFsdWVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFsZ3VtYXMgZXF1aXBlcyBzw7Mgc2V0YW0gdmFsb3Igbm8gZm9ybXVsw6FyaW8sIGFww7NzIG8gY2FycmVnYW1lbnRvIGRhIHRlbGFcbiAgICAgKiBDb21vIMOpIGJlbSBwYWRyw6NvIGlzc28sIGZvaSBuZWNlc3PDoXJpbyBjcmlhciBlc3NlIG3DqXRvZG8gcGFyYSBnZXJhciBvIGZpbGVcbiAgICAgKiBhcMOzcyBzZXRhciBvIHZhbG9yIG5vIGZvcm11bMOhcmlvXG4gICAgICovXG4gICAgcHJpdmF0ZSBjcmVhdGVGaWxlc0lmU2V0Rm9ybVZhbHVlc0FmdGVySW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc1VwbG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkcy5maWx0ZXIoKGZpZWxkOiBGb3JtRmllbGQpID0+IGZpZWxkLnR5cGUgPT09IEZpZWxkVHlwZS5CbG9iKS5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLnZhbHVlKSB0aGlzLmNyZWF0ZUJsb2JUb0ZpbGVVcGxvYWQoZmllbGQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlRmllbGRzVmFsdWVzKCkge1xuICAgICAgICBjb25zdCBwYXJzZWRWYWx1ZXM6IGFueSA9IHt9O1xuXG4gICAgICAgIHRoaXMuZmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyB0eXBlLCBuYW1lLCBtYXNrLCBzY2FsZSB9ID0gZmllbGQ7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmZvcm1Hcm91cC5nZXQobmFtZSkudmFsdWU7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5OdW1iZXI6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFzaykgdmFsdWUgPSBuZXcgQmlnTnVtYmVyKHZhbHVlKS50b0ZpeGVkKHNjYWxlIGFzIG51bWJlcikudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5EYXRlOlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBtb21lbnQodmFsdWUpLmZvcm1hdChcIllZWVktTU0tRERcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVRpbWU6XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuTG9jYWxEYXRlVGltZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbW9tZW50KHZhbHVlKS5mb3JtYXQoXCJZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLlRpbWU6XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KFwiSEg6bW06c3NcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiAhTnVtYmVyLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlc1tuYW1lXSA9IHZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzVHlwZU51bWJlck9yRW51bSh0eXBlKSkge1xuICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlc1tuYW1lXSA9IGZpZWxkLm11bHRpcGxlID8gW10gOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5oYXNCbG9iKSBwYXJzZWRWYWx1ZXNbXCJmaWVsZEN1c3RvbWl6YXRpb25cIl0gPSB0aGlzLmZvcm1Hcm91cC5nZXQoXCJmaWVsZEN1c3RvbWl6YXRpb25cIikudmFsdWU7XG4gICAgICAgIHJldHVybiBwYXJzZWRWYWx1ZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1R5cGVOdW1iZXJPckVudW0odHlwZTogRmllbGRUeXBlKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IG51bWJlck9yRW51bSA9IFtcbiAgICAgICAgICAgIEZpZWxkVHlwZS5OdW1iZXIsXG4gICAgICAgICAgICBGaWVsZFR5cGUuRW51bVxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gbnVtYmVyT3JFbnVtLmluY2x1ZGVzKHR5cGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Rm9ybUZpZWxkKGZpZWxkOiBhbnksIGxvY2FsZU9wdGlvbnM6IExvY2FsZU9wdGlvbnMpOiBGb3JtRmllbGQge1xuICAgICAgICBsZXQgcGFyYW1ldGVycztcblxuICAgICAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmllbGRUeXBlLkJsb2I6XG4gICAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IHRoaXMuZ2V0QmxvYlBhcmFtZXRlcnMoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmllbGRUeXBlLkJvb2xlYW46XG4gICAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IHRoaXMuZ2V0Qm9vbGVhblBhcmFtZXRlcnMoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJFbnVtZXJhdGlvblwiOlxuICAgICAgICAgICAgY2FzZSBDdXN0b21GaWVsZFR5cGUuRW51bTpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gRmllbGRUeXBlLkVudW07XG4gICAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IHRoaXMuZ2V0RW51bVBhcmFtZXRlcnMoZmllbGQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDdXN0b21GaWVsZFR5cGUuTW9uZXk6XG4gICAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgbGVmdEFkZG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbG9jYWxlT3B0aW9ucz8ubnVtYmVyPy5jdXJyZW5jeVN5bWJvbCA/PyBcIlIkXCIsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmllbGRUeXBlLkRvdWJsZTpcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzID0ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTnVtYmVyXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmllbGRUeXBlLkludGVnZXI6XG4gICAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDBcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzID0ge307XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICBuYW1lOiBmaWVsZC5pZCxcbiAgICAgICAgICAgIGxhYmVsOiBmaWVsZC5jdXN0b21pemF0aW9uLmxhYmVsLFxuICAgICAgICAgICAgdG9vbHRpcDogZmllbGQuY3VzdG9taXphdGlvbi50b29sdGlwLFxuICAgICAgICAgICAgaW5mb1NpZ246IGZpZWxkLmN1c3RvbWl6YXRpb24uaW5mb1NpZ24sXG4gICAgICAgICAgICB0eXBlOiBmaWVsZC50eXBlLFxuICAgICAgICAgICAgbWFzazogZmllbGQuY3VzdG9taXphdGlvbi5tYXNrLFxuICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZpZWxkLmN1c3RvbWl6YXRpb24ubWFuZGF0b3J5LFxuICAgICAgICAgICAgY2FsZW5kYXJPcHRpb25zOiBsb2NhbGVPcHRpb25zLmNhbGVuZGFyLFxuICAgICAgICAgICAgY3VycmVuY3lPcHRpb25zOiBsb2NhbGVPcHRpb25zLm51bWJlcixcbiAgICAgICAgICAgIC4uLnBhcmFtZXRlcnMsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RW51bVBhcmFtZXRlcnMoZmllbGQ6IGFueSk6IG9iamVjdCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICBtdWx0aXBsZTogZmllbGQuY3VzdG9taXphdGlvbi5jdXN0b21FbnVtZXJhdGlvbi5tdWx0aXBsZSxcbiAgICAgICAgICAgIG9wdGlvbnM6IGZpZWxkLmN1c3RvbWl6YXRpb24uY3VzdG9tRW51bWVyYXRpb24udmFsdWVzLm1hcCgoZTogYW55KSA9PiAoeyBsYWJlbDogZS52YWx1ZSwgdmFsdWU6IGUua2V5IH0pKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEJvb2xlYW5QYXJhbWV0ZXJzKCk6IG9iamVjdCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvcHRpb25zTGFiZWw6IHtcbiAgICAgICAgICAgICAgICB0cnVlOiB0aGlzLmdldFRyYW5zbGF0ZUxhYmVsKGB0cnVlX2xhYmVsYCksXG4gICAgICAgICAgICAgICAgZmFsc2U6IHRoaXMuZ2V0VHJhbnNsYXRlTGFiZWwoYGZhbHNlX2xhYmVsYCksXG4gICAgICAgICAgICAgICAgZW1wdHk6IHRoaXMuZ2V0VHJhbnNsYXRlTGFiZWwoYGVtcHR5X2xhYmVsYCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QmxvYlBhcmFtZXRlcnMoKTogb2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNpemU6IHtcbiAgICAgICAgICAgICAgICBzbTogMTIsXG4gICAgICAgICAgICAgICAgbWQ6IDEyLFxuICAgICAgICAgICAgICAgIGxnOiAxMixcbiAgICAgICAgICAgICAgICB4bDogMTIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWNjZXB0OiBcImltYWdlLyosIGFwcGxpY2F0aW9uLyosIHRleHQvKlwiLFxuICAgICAgICAgICAgY2hvb3NlTGFiZWw6IHRoaXMuZ2V0VHJhbnNsYXRlTGFiZWwoYGNob29zZV9sYWJlbGApLFxuICAgICAgICAgICAgcmVtb3ZlTGFiZWw6IHRoaXMuZ2V0VHJhbnNsYXRlTGFiZWwoYHJlbW92ZV9sYWJlbGApLFxuICAgICAgICAgICAgY2FuY2VsTGFiZWw6IHRoaXMuZ2V0VHJhbnNsYXRlTGFiZWwoYGNhbmNlbF9sYWJlbGApLFxuICAgICAgICAgICAgc3VjY2Vzc1Rvb2x0aXA6IHRoaXMuZ2V0VHJhbnNsYXRlTGFiZWwoYHN1Y2Nlc3NfdG9vbHRpcGApLFxuICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgb25VcGxvYWRGaWxlOiAoZXZlbnQ6IHsgZmlsZXM6IEZpbGVEdG9bXSB9LCBmb3JtZmllbGQ6IEZvcm1GaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzVXBsb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZShldmVudCwgZm9ybWZpZWxkKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvblJlbW92ZUZpbGU6IChldmVudDogeyBmaWxlOiBGaWxlRHRvIH0sIGZvcm1maWVsZDogRm9ybUZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGaWxlKGV2ZW50LCBmb3JtZmllbGQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uQ2FuY2VsVXBsb2FkOiAoZXZlbnQ6IG51bWJlciwgZm9ybWZpZWxkOiBGb3JtRmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbFVwbG9hZChldmVudCwgZm9ybWZpZWxkKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkRvd25sb2FkRmlsZTogKGV2ZW50OiB7IGluZGV4OiBudW1iZXI7IGFuY2hvcjogRWxlbWVudFJlZiB9LCBmb3JtZmllbGQ6IEZvcm1GaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZG93bmxvYWRGaWxlKGV2ZW50LCBmb3JtZmllbGQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNob3dGaWxlVXBsb2FkRGF0ZTogdGhpcy5zaG93RmlsZVVwbG9hZERhdGVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDDiSBuZWNlc3PDoXJpbyBjcmlhciBvIGZpZWxkQ3VzdG9taXphdGlvbiBxdWFuZG8gaMOhIHVtIEJsb2IgbmEgZW50aWRhZGUgcGFyYSBnZXJhciBvXG4gICAgICogY29tIG9zIGZpZWxkcyBpbnNlcmlkb3MgZSBkZWxldGFkb3MuXG4gICAgICovXG4gICAgcHJpdmF0ZSBjcmVhdGVGaWVsZEN1c3RvbWl6YXRpb24oZmllbGRzOiBhbnlbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhc0Jsb2IgPSAhIWZpZWxkcy5maWx0ZXIoKGZpZWxkOiBhbnkpID0+IGZpZWxkLnR5cGUgPT09IEN1c3RvbUZpZWxkVHlwZS5CbG9iKS5sZW5ndGg7XG4gICAgICAgIGlmICh0aGlzLmhhc0Jsb2IpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAgICAgXCJmaWVsZEN1c3RvbWl6YXRpb25cIixcbiAgICAgICAgICAgICAgICBuZXcgRm9ybUFycmF5KFtcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb21haW46IG5ldyBGb3JtQ29udHJvbCh0aGlzLmRvbWFpbiksXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5zZXJ2aWNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogbmV3IEZvcm1Db250cm9sKHRoaXMuZW50aXR5KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvRGVsZXRlOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZToge30sIGRpc2FibGVkOiBmYWxzZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvSW5zZXJ0OiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZToge30sIGRpc2FibGVkOiBmYWxzZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUJsb2JUb0ZpbGVVcGxvYWQoZmllbGQ6IEZvcm1GaWVsZCkge1xuICAgICAgICBjb25zdCBvYmplY3RJZCA9IHRoaXMudmFsdWVbZmllbGQubmFtZV0gPyB0aGlzLnZhbHVlW2ZpZWxkLm5hbWVdIDogdGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLnZhbHVlO1xuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IG9iamVjdElkLnN1YnN0cmluZyhvYmplY3RJZC5sYXN0SW5kZXhPZihcIi9cIikgKyAxKTtcbiAgICAgICAgY29uc3QgZmlsZTogUGFydGlhbDxGaWxlRHRvPiA9IHsgbmFtZTogZmlsZU5hbWUsIG9iamVjdElkLCBzYXZlZEZpbGU6IHRydWUgfTtcbiAgICAgICAgZmllbGQuZmlsZXMgPSBbZmlsZSBhcyBGaWxlRHRvXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRvd25sb2FkRmlsZShldmVudDogeyBpbmRleDogbnVtYmVyOyBhbmNob3I6IEVsZW1lbnRSZWYgfSwgZmllbGQ6IEZvcm1GaWVsZCkge1xuICAgICAgICBjb25zdCB7IGluZGV4LCBhbmNob3IgfSA9IGV2ZW50O1xuICAgICAgICBjb25zdCBjdXJyZW50RmlsZSA9IGZpZWxkLmZpbGVzW2luZGV4XTtcbiAgICAgICAgaWYgKGN1cnJlbnRGaWxlLm9iamVjdFVSTCkge1xuICAgICAgICAgICAgYW5jaG9yLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tRmllbGRzU2VydmljZVxuICAgICAgICAgICAgICAgIC5yZXF1ZXN0QWNjZXNzKGN1cnJlbnRGaWxlLm9iamVjdElkLCB0aGlzLnJlcXVlc3RBY2Nlc3NFbmRwb2ludClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1VzdWJzY3JpYmUpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IHsgZmlsZU5hbWU6IHN0cmluZzsgdXJpOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZpbGVOYW1lLCB1cmkgfSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tRmllbGRzU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAgICAgLmdldEZpbGUodXJpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVc3Vic2NyaWJlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGJsb2I6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSA8RmlsZUR0bz5uZXcgRmlsZShbYmxvYl0sIGZpbGVOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdGaWxlLm9iamVjdFVSTCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwodXJpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3IubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIHVyaSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RmlsZS5vYmplY3RJZCA9IGN1cnJlbnRGaWxlLm9iamVjdElkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ZpbGUuc2F2ZWRGaWxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5maWxlc1tpbmRleF0gPSBuZXdGaWxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmZpbGVzID0gWy4uLmZpZWxkLmZpbGVzXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3IubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwbG9hZEZpbGUoZXZlbnQ6IHsgZmlsZXM6IEZpbGVEdG9bXSB9LCBmb3JtRmllbGQ6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGZpbGVzIH0gPSBldmVudDtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmZpZWxkcy5maW5kKChyZWNvcmQ6IEZvcm1GaWVsZCkgPT4gcmVjb3JkLm5hbWUgPT09IGZvcm1GaWVsZC5uYW1lKTtcblxuICAgICAgICAvLyBTZSBvY29ycmVyIHVtIHVwbG9hZCwgasOhIGV4aXN0aW5kbyB1bSBhcnF1aXZvIGNvbSB1cGxvYWQgZmVpdG8uIMOJIG5lY2Vzc8OhcmlvIGV4Y2x1aXIgbyBtZXNtby5cbiAgICAgICAgaWYgKGZpZWxkLmZpbGVzICYmIGZpZWxkLmZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVGaWxlKHsgZmlsZTogZmllbGQuZmlsZXNbMF0gfSwgZmllbGQpO1xuICAgICAgICB9XG4gICAgICAgIGZpZWxkLmZpbGVzID0gZmlsZXM7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IGZpbGVzW2ldO1xuICAgICAgICAgICAgaWYgKCFmaWxlLnNhdmVkRmlsZSAmJiAhZmlsZS5wcm9ncmVzcykge1xuICAgICAgICAgICAgICAgIGZpbGUuaXNVcGxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKS5zZXRWYWxpZGF0b3JzKGlzVXBsb2FkaW5nKGZpbGUpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tRmllbGRzU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAuZ2V0RmlsZUxvY2F0aW9uVXJsKFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21haW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZTogdGhpcy5zZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eU5hbWU6IHRoaXMuZW50aXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBmaWVsZC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlTG9jYXRpb25FbmRwb2ludFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVc3Vic2NyaWJlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHRoaXMuZGVmYWx0Q2F0Y2hFcnJvcihmaWVsZCwgZXJyLCBpKSkpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGxvY2F0aW9uLCB2ZXJzaW9uLCBvYmplY3RJZCB9ID0gZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUudmVyc2lvbiA9IHZlcnNpb247XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlLm9iamVjdElkID0gb2JqZWN0SWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlW1widXBsb2FkU3Vic2NyaWJlXCJdID0gdGhpcy5jdXN0b21GaWVsZHNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnVwbG9hZFRlbXBGaWxlKGxvY2F0aW9uLCBmaWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1VzdWJzY3JpYmUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih0aGlzLmRlZmFsdENhdGNoRXJyb3IoZmllbGQsIGVyciwgaSkpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5pc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdHlwZSB9ID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy51cGxvYWRDYW5jZWxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5wcm9ncmVzcyA9IE1hdGgucm91bmQocmVzcG9uc2UubG9hZGVkIC8gcmVzcG9uc2UudG90YWwpICogMTAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUub2JqZWN0VVJMID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0geyBvYmplY3RJZCwgbmFtZTogZmlsZS5uYW1lLCB2ZXJzaW9uOiBmaWxlLnZlcnNpb24gfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0b0luc2VydCA9IHRoaXMuZm9ybUdyb3VwLmdldChcImZpZWxkQ3VzdG9taXphdGlvblwiKS52YWx1ZVswXS50b0luc2VydDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoXCJmaWVsZEN1c3RvbWl6YXRpb25cIikudmFsdWVbMF0udG9JbnNlcnQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRvSW5zZXJ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGQubmFtZV06IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLnNldFZhbHVlKGAke2ZpbGUub2JqZWN0SWR9LyR7ZmlsZS5uYW1lfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKS5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmZpbGVzID0gW2ZpbGVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudXBsb2FkQ2FuY2VsZWQgJiYgdHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZSkgdGhpcy51cGxvYWRDYW5jZWxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuZmlsZXMgPSBbZmlsZV07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVGaWxlKGV2ZW50OiB7IGZpbGU6IEZpbGVEdG8gfSwgZm9ybUZpZWxkOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBmaWxlIH0gPSBldmVudDtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmZpZWxkcy5maW5kKChyZWNvcmQ6IEZvcm1GaWVsZCkgPT4gcmVjb3JkLm5hbWUgPT09IGZvcm1GaWVsZC5uYW1lKTtcbiAgICAgICAgZmllbGQuZmlsZXMgPSBbXTtcbiAgICAgICAgaWYgKGZpbGUub2JqZWN0SWQpIHtcbiAgICAgICAgICAgIC8vIFF1YW5kbyDDqSB1bSBhcnF1aXZvIGrDoSBzYWx2byBvIG9iamVjdElkIGrDoSDDqSBubyBmb3JtYXRvIFwib2JqZWN0SWQvbmFtZVwiXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGZpbGUuc2F2ZWRGaWxlID8gYCR7ZmlsZS5vYmplY3RJZH1gIDogYCR7ZmlsZS5vYmplY3RJZH0vJHtmaWxlLm5hbWV9YDtcbiAgICAgICAgICAgIGNvbnN0IHRvRGVsZXRlID0gdGhpcy5mb3JtR3JvdXAuZ2V0KFwiZmllbGRDdXN0b21pemF0aW9uXCIpLnZhbHVlWzBdLnRvRGVsZXRlO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuZm9ybUdyb3VwLmdldChcImZpZWxkQ3VzdG9taXphdGlvblwiKS52YWx1ZVswXS50b0luc2VydFtmaWVsZC5uYW1lXTtcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChcImZpZWxkQ3VzdG9taXphdGlvblwiKS52YWx1ZVswXS50b0RlbGV0ZSA9IHtcbiAgICAgICAgICAgICAgICAuLi50b0RlbGV0ZSxcbiAgICAgICAgICAgICAgICBbZmllbGQubmFtZV06IFsuLi4odG9EZWxldGVbZmllbGQubmFtZV0gfHwgW10pLCB2YWx1ZV0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkuc2V0VmFsdWUoXCJcIik7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYW5jZWxVcGxvYWQoaW5kZXg6IG51bWJlciwgZm9ybUZpZWxkOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGxvYWRDYW5jZWxlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5maWVsZHMuZmluZCgocmVjb3JkOiBGb3JtRmllbGQpID0+IHJlY29yZC5uYW1lID09PSBmb3JtRmllbGQubmFtZSk7XG4gICAgICAgIGZpZWxkLmZpbGVzW2luZGV4XVtcInVwbG9hZFN1YnNjcmliZVwiXS51bnN1YnNjcmliZSgpO1xuICAgICAgICBmaWVsZC5maWxlcyA9IFtdO1xuICAgICAgICBkZWxldGUgdGhpcy5mb3JtR3JvdXAuZ2V0KFwiZmllbGRDdXN0b21pemF0aW9uXCIpLnZhbHVlWzBdLnRvSW5zZXJ0W2ZpZWxkLm5hbWVdO1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKS5zZXRWYWx1ZShcIlwiKTtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlZmFsdENhdGNoRXJyb3IoZmllbGQ6IEZvcm1GaWVsZCwgZXJyOiBIdHRwRXJyb3JSZXNwb25zZSwgaW5kZXg6IG51bWJlcik6IE9ic2VydmFibGU8bmV2ZXI+IHtcbiAgICAgICAgY29uc3QgeyBmaWxlcyB9ID0gZmllbGQ7XG4gICAgICAgIGZpbGVzW2luZGV4XS5lcnJvciA9IGVycjtcbiAgICAgICAgZmlsZXNbaW5kZXhdLmlzVXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIGZpZWxkLmZpbGVzID0gWy4uLmZpbGVzXTtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLnNldFZhbGlkYXRvcnMoW2Vycm9yT25VcGxvYWQoZmlsZXNbaW5kZXhdKV0pO1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihuZXcgRXJyb3IoXCJlcnJvciBpbiB1cGxvYWQgZmlsZS4gRGV0YWlsczogXCIgKyBlcnIubWVzc2FnZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VHJhbnNsYXRlTGFiZWwobGFiZWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgJHt0aGlzLmRvbWFpbn0uJHt0aGlzLnNlcnZpY2V9LiR7bGFiZWx9YCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpc1VwbG9hZGluZyhmaWxlOiBGaWxlRHRvKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoKSA9PiAoZmlsZS5pc1VwbG9hZGluZyA/IHsgaXNVcGxvYWRpbmc6IHRydWUgfSA6IG51bGwpO1xufVxuXG5mdW5jdGlvbiBlcnJvck9uVXBsb2FkKGZpbGU6IEZpbGVEdG8pOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuICgpID0+IChmaWxlLmVycm9yID8geyB1cGxvYWRFcnJvcjogdHJ1ZSB9IDogbnVsbCk7XG59XG4iXX0=
@@ -17,10 +17,10 @@ var SectionComponent = /** @class */ (function () {
17
17
  ], SectionComponent.prototype, "errorMessages", void 0);
18
18
  SectionComponent = __decorate([
19
19
  Component({
20
- template: "\n <h3 class=\"sds-section-title\">{{config.header}}</h3>\n <ng-container *ngFor=\"let conf of config.configs\">\n <ng-container *sDynamicForm=\"{ id: id, config: conf, group: group, errorMessages: errorMessages }\"></ng-container>\n </ng-container>\n "
20
+ template: "\n <h3 *ngIf=\"config?.header\" class=\"sds-section-title\">{{config.header}}</h3>\n <ng-container *ngFor=\"let conf of config.configs\">\n <ng-container *sDynamicForm=\"{ id: id, config: conf, group: group, errorMessages: errorMessages }\"></ng-container>\n </ng-container>\n "
21
21
  })
22
22
  ], SectionComponent);
23
23
  return SectionComponent;
24
24
  }());
25
25
  export { SectionComponent };
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9zdHJ1Y3R1cmUvc2VjdGlvbi9zZWN0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFhakQ7SUFBQTtJQVNBLENBQUM7SUFQRztRQURDLEtBQUssRUFBRTtnREFDVTtJQUVsQjtRQURDLEtBQUssRUFBRTtvREFDZTtJQUV2QjtRQURDLEtBQUssRUFBRTttREFDZ0I7SUFFeEI7UUFEQyxLQUFLLEVBQUU7MkRBQ2tCO0lBUmpCLGdCQUFnQjtRQVI1QixTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsaVNBS1Q7U0FDSixDQUFDO09BQ1csZ0JBQWdCLENBUzVCO0lBQUQsdUJBQUM7Q0FBQSxBQVRELElBU0M7U0FUWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgU2VjdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9jb25maWd1cmF0aW9ucy9zdHJ1Y3R1cmUvc2VjdGlvblwiO1xuaW1wb3J0IHsgQmFzZVN0cnVjdHVyZUNvbXBvbmVudENvbmZpZyB9IGZyb20gXCIuLi9iYXNlLXN0cnVjdHVyZS1jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGgzIGNsYXNzPVwic2RzLXNlY3Rpb24tdGl0bGVcIj57e2NvbmZpZy5oZWFkZXJ9fTwvaDM+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbmYgb2YgY29uZmlnLmNvbmZpZ3NcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnNEeW5hbWljRm9ybT1cInsgaWQ6IGlkLCBjb25maWc6IGNvbmYsIGdyb3VwOiBncm91cCwgZXJyb3JNZXNzYWdlczogZXJyb3JNZXNzYWdlcyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIGAsXG59KVxuZXhwb3J0IGNsYXNzIFNlY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBCYXNlU3RydWN0dXJlQ29tcG9uZW50Q29uZmlnIHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZDogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbmZpZzogU2VjdGlvbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBncm91cDogRm9ybUdyb3VwO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVycm9yTWVzc2FnZXM6IGFueTtcbn1cbiJdfQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9zdHJ1Y3R1cmUvc2VjdGlvbi9zZWN0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFhakQ7SUFBQTtJQVNBLENBQUM7SUFQRztRQURDLEtBQUssRUFBRTtnREFDVTtJQUVsQjtRQURDLEtBQUssRUFBRTtvREFDZTtJQUV2QjtRQURDLEtBQUssRUFBRTttREFDZ0I7SUFFeEI7UUFEQyxLQUFLLEVBQUU7MkRBQ2tCO0lBUmpCLGdCQUFnQjtRQVI1QixTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsMFRBS1Q7U0FDSixDQUFDO09BQ1csZ0JBQWdCLENBUzVCO0lBQUQsdUJBQUM7Q0FBQSxBQVRELElBU0M7U0FUWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgU2VjdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9jb25maWd1cmF0aW9ucy9zdHJ1Y3R1cmUvc2VjdGlvblwiO1xuaW1wb3J0IHsgQmFzZVN0cnVjdHVyZUNvbXBvbmVudENvbmZpZyB9IGZyb20gXCIuLi9iYXNlLXN0cnVjdHVyZS1jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGgzICpuZ0lmPVwiY29uZmlnPy5oZWFkZXJcIiBjbGFzcz1cInNkcy1zZWN0aW9uLXRpdGxlXCI+e3tjb25maWcuaGVhZGVyfX08L2gzPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb25mIG9mIGNvbmZpZy5jb25maWdzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpzRHluYW1pY0Zvcm09XCJ7IGlkOiBpZCwgY29uZmlnOiBjb25mLCBncm91cDogZ3JvdXAsIGVycm9yTWVzc2FnZXM6IGVycm9yTWVzc2FnZXMgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICBgLFxufSlcbmV4cG9ydCBjbGFzcyBTZWN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgQmFzZVN0cnVjdHVyZUNvbXBvbmVudENvbmZpZyB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWQ6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb25maWc6IFNlY3Rpb247XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ3JvdXA6IEZvcm1Hcm91cDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlcnJvck1lc3NhZ2VzOiBhbnk7XG59XG4iXX0=
@@ -6113,7 +6113,7 @@ __decorate([
6113
6113
  SectionComponent = __decorate([
6114
6114
  Component({
6115
6115
  template: `
6116
- <h3 class="sds-section-title">{{config.header}}</h3>
6116
+ <h3 *ngIf="config?.header" class="sds-section-title">{{config.header}}</h3>
6117
6117
  <ng-container *ngFor="let conf of config.configs">
6118
6118
  <ng-container *sDynamicForm="{ id: id, config: conf, group: group, errorMessages: errorMessages }"></ng-container>
6119
6119
  </ng-container>
@@ -7217,9 +7217,10 @@ let CustomFieldsComponent = CustomFieldsComponent_1 = class CustomFieldsComponen
7217
7217
  .pipe(takeUntil(this.ngUsubscribe), finalize(() => {
7218
7218
  this.formGroup.markAsPristine();
7219
7219
  this.parentControl.markAsPristine();
7220
+ if (this.ready$)
7221
+ this.ready$.next(true);
7220
7222
  }))
7221
7223
  .subscribe((response) => {
7222
- var _a;
7223
7224
  const [customFieldsResponse, localeOptions] = response;
7224
7225
  const defaults = {};
7225
7226
  defaults[CustomFieldType.String] = {};
@@ -7272,7 +7273,6 @@ let CustomFieldsComponent = CustomFieldsComponent_1 = class CustomFieldsComponen
7272
7273
  this.createFieldCustomization(fields);
7273
7274
  this.formGroup.patchValue(this.parseValuesForFields(this.value));
7274
7275
  this.ready = true;
7275
- (_a = this.ready$) === null || _a === void 0 ? void 0 : _a.next(true);
7276
7276
  });
7277
7277
  }
7278
7278
  ngOnDestroy() {