chrv-components 1.8.10 → 1.8.12

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.
Binary file
@@ -94,10 +94,12 @@ export class ChrFormComponent {
94
94
  * @param dateFormat optional date format for date and datetime inputs
95
95
  */
96
96
  this.setValue = (key, value, dateFormat = null) => {
97
- if (dateFormat == null)
98
- this.form.get(key)?.setValue(value);
99
- else
100
- this.form.get(key)?.setValue(this.datePipe.transform(value, dateFormat));
97
+ const val = dateFormat == null ? value : this.datePipe.transform(value, dateFormat);
98
+ this.form.get(key)?.setValue(val, {
99
+ emitEvent: false,
100
+ emitViewToModelChange: false,
101
+ });
102
+ this.model[key] = val;
101
103
  this.changeDetector.detectChanges();
102
104
  };
103
105
  /**
@@ -156,11 +158,11 @@ export class ChrFormComponent {
156
158
  switch (control.type) {
157
159
  case "date":
158
160
  return value
159
- ? this.transformDate(value, "yyyy-MM-dd")
161
+ ? this.transformDate(typeof value == "string" ? new Date(value) : value, "yyyy-MM-dd")
160
162
  : this.transformDate(control.value, "yyyy-MM-dd");
161
163
  case "datetime":
162
164
  return value
163
- ? this.transformDate(value, "yyyy-MM-ddTHH:mm")
165
+ ? this.transformDate(typeof value == "string" ? new Date(value) : value, "yyyy-MM-ddTHH:mm")
164
166
  : this.transformDate(control.value, "yyyy-MM-ddTHH:mm");
165
167
  default:
166
168
  return value || control.value;
@@ -301,4 +303,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
301
303
  }], tabDisplay: [{
302
304
  type: Input
303
305
  }] } });
304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWix1QkFBdUIsR0FNdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFlLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFHTixVQUFVLEVBQ1YsV0FBVyxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQ04sUUFBUSxFQUNSLFlBQVksRUFDWix5QkFBeUIsR0FDekIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUNOLElBQUksRUFDSixzQkFBc0IsR0FDdEIsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FB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TTtnQkFFRSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU07Z0JBRUUsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUdFLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDb21wb25lbnQsXG5cdElucHV0LFxuXHRPdXRwdXQsXG5cdEV2ZW50RW1pdHRlcixcblx0QWZ0ZXJWaWV3SW5pdCxcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdFZpZXdFbmNhcHN1bGF0aW9uLFxuXHRDaGFuZ2VEZXRlY3RvclJlZixcblx0T25DaGFuZ2VzLFxuXHRTaW1wbGVDaGFuZ2VzLFxuXHRPbkluaXQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBWYWxpZGF0b3JGbiwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7XG5cdEZvcm1CdWlsZGVyLFxuXHRGb3JtR3JvdXAsXG5cdFZhbGlkYXRvcnMsXG5cdEZvcm1Db250cm9sLFxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE1hdEVycm9yIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwXCI7XG5pbXBvcnQgeyBDaHJTZWFyY2hTZWxlY3RDb21wb25lbnQgfSBmcm9tIFwiLi4vY2hyLXNlYXJjaC1zZWxlY3QvY2hyLXNlYXJjaC1zZWxlY3QuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGVcIjtcbmltcG9ydCB7XG5cdERhdGVQaXBlLFxuXHRDb21tb25Nb2R1bGUsXG5cdERBVEVfUElQRV9ERUZBVUxUX09QVElPTlMsXG59IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGVcIjtcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdGFic1wiO1xuaW1wb3J0IHtcblx0dHlwZSxcblx0VHlwZVZhbGlkYXRvckRpcmVjdGl2ZSxcbn0gZnJvbSBcIi4uL21vZGVscy9jaHItdmFsaWRhdG9ycy90eXBlLXZhbGlkYXRvclwiO1xuaW1wb3J0IHsgZGVjaW1hbCB9IGZyb20gXCIuLi9tb2RlbHMvY2hyLXZhbGlkYXRvcnMvZGVjaW1hbC12YWxpZGF0b3JcIjtcbmltcG9ydCB7IG1heERhdGUgfSBmcm9tIFwiLi4vbW9kZWxzL2Noci12YWxpZGF0b3JzL21heC1kYXRlLXZhbGlkYXRvclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtQ29udHJvbENvbGxlY3Rpb24ge1xuXHRba2V5OiBzdHJpbmddOiBGb3JtQ29udHJvbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2VhcmNoRmlsdGVyIHtcblx0ZGlzcGxheTogc3RyaW5nO1xuXHRjYWxsYmFjaz86IEZ1bmN0aW9uO1xuXHR0b29sdGlwPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb250cm9sVmFsaWRhdGlvbiB7XG5cdHJ1bGU6IHN0cmluZztcblx0dmFsdWU/OiBhbnk7XG5cdGRpc3BsYXk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRyb2wge1xuXHRsYWJlbD86IHN0cmluZztcblx0bmFtZTogc3RyaW5nO1xuXHRzcGFuPzogc3RyaW5nO1xuXHR3aWR0aD86IFwiY29sXCIgfCBcInJvd1wiO1xuXHRjb2w/OiBudW1iZXI7XG5cdHJvdz86IG51bWJlcjtcblx0dHlwZTpcblx0XHR8IFwidGV4dFwiXG5cdFx0fCBcInBhc3N3b3JkXCJcblx0XHR8IFwidGV4dEFyZWFcIlxuXHRcdHwgXCJudW1iZXJcIlxuXHRcdHwgXCJkYXRlXCJcblx0XHR8IFwiZGF0ZXRpbWVcIlxuXHRcdHwgXCJzZWFyY2hTZWxlY3RcIlxuXHRcdHwgXCJjb2xvclwiXG5cdFx0fCBcInRvZ2dsZVwiO1xuXHR2YWx1ZT86IGFueTtcblx0ZGF0YT86IGFueVtdIHwgbnVsbDtcblx0aWNvbj86IHN0cmluZztcblx0aWNvbkNhbGxiYWNrPzogRnVuY3Rpb247XG5cdGljb25DYWxsYmFja0Rpc2FibGVkPzogYm9vbGVhbjtcblx0aWNvblRvb2x0aXA/OiBzdHJpbmc7XG5cdGZuPzogKG9iamVjdDogYW55KSA9PiBzdHJpbmc7XG5cdGZpbHRlcnM/OiBJU2VhcmNoRmlsdGVyW107XG5cdHZhbGlkYXRpb25zPzogSUNvbnRyb2xWYWxpZGF0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1TZWN0aW9uIHtcblx0dGl0bGU/OiBzdHJpbmc7XG5cdGNvbnRyb2xzOiBJQ29udHJvbFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtQ29udHJvbCB7XG5cdFtrZXk6IHN0cmluZ106IGFueTtcbn1cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogXCJhcHAtY2hyLWZvcm1cIixcblx0dGVtcGxhdGVVcmw6IFwiLi9jaHItZm9ybS5jb21wb25lbnQuaHRtbFwiLFxuXHRzdHlsZVVybHM6IFtcblx0XHRcIi4vY2hyLWZvcm0uY29tcG9uZW50LnNjc3NcIixcblx0XHRcIi4uLy4uLy4uLy4uLy4uL3RhaWx3aW5kYnVpbGQuY3NzXCIsXG5cdFx0XCIuL2Noci1mb3JtLmNvbXBvbmVudC5zY3NzXCIsXG5cdF0sXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtcblx0XHRSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuXHRcdEZvcm1zTW9kdWxlLFxuXHRcdE1hdFRvb2x0aXBNb2R1bGUsXG5cdFx0TWF0SWNvbk1vZHVsZSxcblx0XHRNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcblx0XHRNYXRFcnJvcixcblx0XHRDaHJTZWFyY2hTZWxlY3RDb21wb25lbnQsXG5cdFx0TWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuXHRcdERhdGVQaXBlLFxuXHRcdENvbW1vbk1vZHVsZSxcblx0XHRUeXBlVmFsaWRhdG9yRGlyZWN0aXZlLFxuXHRcdE1hdFRhYnNNb2R1bGUsXG5cdF0sXG5cdHByb3ZpZGVyczogW1xuXHRcdERhdGVQaXBlLFxuXHRcdHtcblx0XHRcdHByb3ZpZGU6IERBVEVfUElQRV9ERUZBVUxUX09QVElPTlMsXG5cdFx0XHR1c2VWYWx1ZTogeyBkYXRlRm9ybWF0OiBcInNob3J0RGF0ZVwiIH0sXG5cdFx0fSxcblx0XSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxufSlcbmV4cG9ydCBjbGFzcyBDaHJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblx0QElucHV0KCkgc2VjdGlvbnM/OiBJRm9ybVNlY3Rpb25bXTtcblx0QElucHV0KCkgY29udHJvbHM/OiBJQ29udHJvbFtdO1xuXG5cdEBJbnB1dCgpIHZhbGlkPzogYm9vbGVhbjtcblx0QE91dHB1dCgpIHZhbGlkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cblx0QElucHV0KCkgbW9kZWw6IGFueSA9IG51bGw7XG5cdEBPdXRwdXQoKSBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuXHRASW5wdXQoKSBkaXNhYmxlZD86IGJvb2xlYW47XG5cdEBPdXRwdXQoKSB2YWx1ZXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cdEBJbnB1dCgpIHN1Ym1pdD86IEZ1bmN0aW9uO1xuXG5cdEBJbnB1dCgpIGNvbXBhY3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRAT3V0cHV0KCkgZm9ybUNoYW5nZTogRXZlbnRFbWl0dGVyPElGb3JtQ29udHJvbD4gPVxuXHRcdG5ldyBFdmVudEVtaXR0ZXI8SUZvcm1Db250cm9sPigpO1xuXG5cdEBJbnB1dCgpIHRhYkRpc3BsYXk6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRmb3JtOiBGb3JtR3JvdXAgPSB0aGlzLmJ1aWxkZXIuZ3JvdXAoe30pO1xuXG5cdHByaXZhdGUgdmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG5cdHByaXZhdGUgY29udHJvbFR5cGVzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cdHByaXZhdGUgZmxhdHRlbmVkQ29udHJvbHM6IElDb250cm9sW10gPSBbXTtcblxuXHRwdWJsaWMgaW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIGJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuXHRcdHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlLFxuXHRcdHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXG5cdCkge1xuXHRcdGlmICh0aGlzLmNvbnRyb2xzICE9IG51bGwgJiYgdGhpcy5zZWN0aW9ucyAhPSBudWxsKVxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRcIllvdSBjYW4ndCB1c2UgYm90aCBjb250cm9scyBhbmQgc2VjdGlvbnMgaW4gdGhlIHNhbWUgZm9ybVwiXG5cdFx0XHQpO1xuXHR9XG5cblx0bmdPbkluaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5mbGF0dGVuZWRDb250cm9scyA9XG5cdFx0XHR0aGlzLnNlY3Rpb25zXG5cdFx0XHRcdD8ubWFwKChzKSA9PiBzLmNvbnRyb2xzKVxuXHRcdFx0XHQuZmxhdCgpXG5cdFx0XHRcdC5jb25jYXQodGhpcy5jb250cm9scyA/PyBbXSkgfHwgW107XG5cdFx0dGhpcy5pbml0TW9kZWwoKTtcblx0XHR0aGlzLmluaXRWYWx1ZXMoKTtcblx0XHR0aGlzLmluaXRDb250cm9scygpO1xuXHRcdHRoaXMuaW5pdExpc3RlbmVycygpO1xuXHRcdHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXHR9XG5cblx0cHJpdmF0ZSBpbml0TW9kZWwgPSAoKSA9PiB7XG5cdFx0aWYgKHRoaXMubW9kZWwgPT0gbnVsbCkgdGhpcy5tb2RlbCA9IHt9O1xuXG5cdFx0Zm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcblx0XHRcdGlmICghdGhpcy5tb2RlbFtjb250cm9sLm5hbWVdKSB0aGlzLm1vZGVsW2NvbnRyb2wubmFtZV0gPSBjb250cm9sLnZhbHVlO1xuXHRcdH1cblx0fTtcblxuXHRwcml2YXRlIGluaXRWYWx1ZXMgPSAoKSA9PiB7XG5cdFx0Zm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcblx0XHRcdGlmICghdGhpcy52YWx1ZXNbY29udHJvbC5uYW1lXSlcblx0XHRcdFx0dGhpcy52YWx1ZXNbY29udHJvbC5uYW1lXSA9IHRoaXMudG9JbnB1dFZhbHVlKFxuXHRcdFx0XHRcdGNvbnRyb2wsXG5cdFx0XHRcdFx0dGhpcy5tb2RlbFtjb250cm9sLm5hbWVdXG5cdFx0XHRcdCk7XG5cdFx0fVxuXHR9O1xuXG5cdHByaXZhdGUgaW5pdENvbnRyb2xzID0gKCkgPT4ge1xuXHRcdGNvbnN0IGZvcm1Db250cm9scyA9IHt9IGFzIElGb3JtQ29udHJvbENvbGxlY3Rpb247XG5cdFx0Zm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcblx0XHRcdGNvbnN0IHZhbGlkYXRvcnMgPSB0aGlzLl9nZXRWYWxpZGF0b3JzKGNvbnRyb2wudmFsaWRhdGlvbnMpO1xuXHRcdFx0Zm9ybUNvbnRyb2xzW2NvbnRyb2wubmFtZV0gPSBuZXcgRm9ybUNvbnRyb2woXG5cdFx0XHRcdHRoaXMudmFsdWVzW2NvbnRyb2wubmFtZV0sXG5cdFx0XHRcdHZhbGlkYXRvcnNcblx0XHRcdCk7XG5cdFx0XHR0aGlzLmNvbnRyb2xUeXBlc1tjb250cm9sLm5hbWVdID0gY29udHJvbC50eXBlO1xuXHRcdH1cblxuXHRcdHRoaXMuZm9ybSA9IHRoaXMuYnVpbGRlci5ncm91cChmb3JtQ29udHJvbHMpO1xuXHRcdHRoaXMudmFsaWQgPSB0aGlzLmZvcm0udmFsaWQ7XG5cdH07XG5cblx0cHJpdmF0ZSBpbml0TGlzdGVuZXJzID0gKCkgPT4ge1xuXHRcdHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZXMpID0+IHtcblx0XHRcdGZvciAoY29uc3Qga2V5IGluIHZhbHVlcykge1xuXHRcdFx0XHRpZiAodmFsdWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcblx0XHRcdFx0XHR0aGlzLm1vZGVsW2tleV0gPSB2YWx1ZXNba2V5XTtcblx0XHRcdFx0XHR0aGlzLnZhbHVlc1trZXldID0gdmFsdWVzW2tleV07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMudmFsaWQgPSB0aGlzLmZvcm0udmFsaWQ7XG5cdFx0XHR0aGlzLnZhbGlkQ2hhbmdlLmVtaXQodGhpcy52YWxpZCk7XG5cdFx0XHR0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XG5cdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblx0XHR9KTtcblx0fTtcblxuXHR2YWx1ZSA9IChpbnB1dD86IHN0cmluZykgPT4gdGhpcy5nZXRWYWx1ZShpbnB1dCk7XG5cblx0Z2V0VmFsdWUgPSAoaW5wdXQ/OiBzdHJpbmcpID0+IHtcblx0XHRpZiAoaW5wdXQpIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbaW5wdXRdPy52YWx1ZTtcblx0XHRyZXR1cm4gdGhpcy5mb3JtLnZhbHVlO1xuXHR9O1xuXG5cdGlzVmFsaWQgPSAoaW5wdXQ/OiBzdHJpbmcpID0+IHtcblx0XHRpZiAoaW5wdXQpIHJldHVybiB0aGlzLmZvcm0uZ2V0KGlucHV0KT8udmFsaWQ7XG5cdFx0cmV0dXJuIHRoaXMudmFsaWQ7XG5cdH07XG5cblx0aXNDb250cm9sUmVxdWlyZWQgPSAoY29udHJvbDogSUNvbnRyb2wpID0+IHtcblx0XHRyZXR1cm4gY29udHJvbC52YWxpZGF0aW9ucz8uZmluZCgodikgPT4gdi5ydWxlLnRvTG93ZXJDYXNlKCkgPT0gXCJyZXF1aXJlZFwiKTtcblx0fTtcblxuXHQvKipcblx0ICogVXBkYXRlIHRoZSB2YWx1ZSBvZiBhIGNvbnRyb2wgV0lUSE9VVCB0cmlnZ2VyaW5nIHRoZSBtb2RlbENoYW5nZSBldmVudFxuXHQgKiBAcGFyYW0ga2V5IGlucHV0IGtleSAoY29udHJvbCBuYW1lKVxuXHQgKiBAcGFyYW0gdmFsdWUgdmFsdWUgdG8gc2V0XG5cdCAqIEBwYXJhbSBkYXRlRm9ybWF0IG9wdGlvbmFsIGRhdGUgZm9ybWF0IGZvciBkYXRlIGFuZCBkYXRldGltZSBpbnB1dHNcblx0ICovXG5cdHNldFZhbHVlID0gKGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCBkYXRlRm9ybWF0OiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuXHRcdGlmIChkYXRlRm9ybWF0ID09IG51bGwpIHRoaXMuZm9ybS5nZXQoa2V5KT8uc2V0VmFsdWUodmFsdWUpO1xuXHRcdGVsc2Vcblx0XHRcdHRoaXMuZm9ybS5nZXQoa2V5KT8uc2V0VmFsdWUodGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsIGRhdGVGb3JtYXQpKTtcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblx0fTtcblxuXHQvKipcblx0ICogVXBkYXRlIHRoZSB2YWx1ZSBvZiB0aGUgZm9ybSdzIG1vZGVsIFdJVEhPVVQgdHJpZ2dlcmluZyB0aGUgbW9kZWxDaGFuZ2UgZXZlbnRcblx0ICogQHBhcmFtIG1vZGVsIHRoZSBtb2RlbCB0byBzZXRcblx0ICogQHBhcmFtIGRhdGVGb3JtYXQgb3B0aW9uYWwgZGF0ZSBmb3JtYXQgZm9yIGRhdGUgYW5kIGRhdGV0aW1lIGlucHV0c1xuXHQgKi9cblx0c2V0ID0gKG1vZGVsOiBhbnksIGRhdGVGb3JtYXQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSA9PiB7XG5cdFx0Zm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobW9kZWwpKSB7XG5cdFx0XHR0aGlzLnNldFZhbHVlKGtleSwgbW9kZWxba2V5XSwgZGF0ZUZvcm1hdCk7XG5cdFx0fVxuXHR9O1xuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIHRoZSB2YWx1ZSBvZiBhIGNvbnRyb2wuIFRoaXMgV0lMTCB0cmlnZ2VyIHRoZSBtb2RlbENoYW5nZSBldmVudFxuXHQgKiBAcGFyYW0ga2V5IGlucHV0IGtleSAoY29udHJvbCBuYW1lKVxuXHQgKiBAcGFyYW0gdmFsdWUgdmFsdWUgdG8gc2V0XG5cdCAqIEBwYXJhbSBkYXRlRm9ybWF0IG9wdGlvbmFsIGRhdGUgZm9ybWF0IGZvciBkYXRlIGFuZCBkYXRldGltZSBpbnB1dHNcblx0ICovXG5cdHBhdGNoVmFsdWUgPSAoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIGRhdGVGb3JtYXQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSA9PiB7XG5cdFx0aWYgKGRhdGVGb3JtYXQgPT0gbnVsbCkgdGhpcy5zZXRWYWx1ZSQoa2V5LCB2YWx1ZSk7XG5cdFx0ZWxzZSB0aGlzLnNldFZhbHVlJChrZXksIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCBkYXRlRm9ybWF0KSk7XG5cdFx0dGhpcy5mb3JtLmdldChrZXkpPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG5cdFx0dGhpcy5tb2RlbENoYW5nZS5lbWl0KHRoaXMubW9kZWwpO1xuXHRcdHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIHRoZSB2YWx1ZSBvZiB0aGUgZm9ybSdzIG1vZGVsLiBUaGlzIFdJTEwgdHJpZ2dlciB0aGUgbW9kZWxDaGFuZ2UgZXZlbnQgb25jZSBmb3IgZWFjaCBpbnB1dFxuXHQgKiBAcGFyYW0gbW9kZWwgbW9kZWwgdG8gc2V0XG5cdCAqIEBwYXJhbSBkYXRlRm9ybWF0IG9wdGlvbmFsIGRhdGUgZm9ybWF0IGZvciBkYXRlIGFuZCBkYXRldGltZSBpbnB1dHNcblx0ICovXG5cdHBhdGNoID0gKG1vZGVsOiBhbnksIGRhdGVGb3JtYXQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSA9PiB7XG5cdFx0Zm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobW9kZWwpKSB7XG5cdFx0XHR0aGlzLnBhdGNoVmFsdWUoa2V5LCBtb2RlbFtrZXldLCBkYXRlRm9ybWF0KTtcblx0XHR9XG5cdH07XG5cblx0Y2hlY2tWYWxpZGl0eSA9ICgpID0+IHtcblx0XHRmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGhpcy5mbGF0dGVuZWRDb250cm9scykge1xuXHRcdFx0dGhpcy5mb3JtLmdldChjb250cm9sLm5hbWUpPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG5cdFx0fVxuXHRcdHRoaXMudmFsaWQgPSB0aGlzLmZvcm0udmFsaWQ7XG5cdFx0dGhpcy5kZXRlY3RDaGFuZ2VzKCk7XG5cdH07XG5cblx0dXBkYXRlVmFsdWVBbmRWYWxpZGl0eSA9ICh0b3VjaGVkOiBib29sZWFuID0gZmFsc2UpID0+IHtcblx0XHR0aGlzLmZvcm0ubWFya0FzRGlydHkoKTtcblx0XHRpZiAodG91Y2hlZCkgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcblx0XHR0aGlzLmZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogdHJ1ZSB9KTtcblx0fTtcblxuXHRwcml2YXRlIHNldFZhbHVlJCA9IChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuXHRcdHRoaXMuZm9ybS5nZXQoa2V5KT8ucGF0Y2hWYWx1ZSh2YWx1ZSk7XG5cdFx0dGhpcy52YWx1ZXNba2V5XSA9IHZhbHVlO1xuXHR9O1xuXG5cdHByaXZhdGUgdG9JbnB1dFZhbHVlID0gKGNvbnRyb2w6IElDb250cm9sLCB2YWx1ZTogYW55IHwgbnVsbCA9IG51bGwpID0+IHtcblx0XHRzd2l0Y2ggKGNvbnRyb2wudHlwZSkge1xuXHRcdFx0Y2FzZSBcImRhdGVcIjpcblx0XHRcdFx0cmV0dXJuIHZhbHVlXG5cdFx0XHRcdFx0PyB0aGlzLnRyYW5zZm9ybURhdGUodmFsdWUsIFwieXl5eS1NTS1kZFwiKVxuXHRcdFx0XHRcdDogdGhpcy50cmFuc2Zvcm1EYXRlKGNvbnRyb2wudmFsdWUsIFwieXl5eS1NTS1kZFwiKTtcblx0XHRcdGNhc2UgXCJkYXRldGltZVwiOlxuXHRcdFx0XHRyZXR1cm4gdmFsdWVcblx0XHRcdFx0XHQ/IHRoaXMudHJhbnNmb3JtRGF0ZSh2YWx1ZSwgXCJ5eXl5LU1NLWRkVEhIOm1tXCIpXG5cdFx0XHRcdFx0OiB0aGlzLnRyYW5zZm9ybURhdGUoY29udHJvbC52YWx1ZSwgXCJ5eXl5LU1NLWRkVEhIOm1tXCIpO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0cmV0dXJuIHZhbHVlIHx8IGNvbnRyb2wudmFsdWU7XG5cdFx0fVxuXHR9O1xuXG5cdHByaXZhdGUgdHJhbnNmb3JtRGF0ZSA9ICh2YWx1ZTogYW55LCBmb3JtYXQ6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0KTtcblx0fTtcblxuXHRwdWJsaWMgcmVzaXplID0gKHRleHRBcmVhOiBIVE1MVGV4dEFyZWFFbGVtZW50KSA9PiB7XG5cdFx0Y29uc3QgaW5pdGlhbEhlaWdodCA9IHRleHRBcmVhLnN0eWxlLmhlaWdodDtcblx0XHR0ZXh0QXJlYS5zdHlsZS5oZWlnaHQgPSBpbml0aWFsSGVpZ2h0O1xuXHRcdHRleHRBcmVhLnN0eWxlLmhlaWdodCA9IFwiXCIgKyB0ZXh0QXJlYS5zY3JvbGxIZWlnaHQgKyBcInB4XCI7XG5cdH07XG5cblx0cHVibGljIGRvU3VibWl0ID0gKCkgPT4ge1xuXHRcdHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG5cdFx0aWYgKHRoaXMudmFsaWQgJiYgdGhpcy5mb3JtLnZhbGlkKSB0aGlzLnN1Ym1pdD8uKHRoaXMuZm9ybS52YWx1ZSk7XG5cdH07XG5cblx0cHJpdmF0ZSBkZXRlY3RDaGFuZ2VzID0gKCkgPT4ge1xuXHRcdHRoaXMuZm9ybS5tYXJrQXNEaXJ0eSgpO1xuXHRcdHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXHR9O1xuXG5cdHByaXZhdGUgX2dldFZhbGlkYXRvcnMgPSAodmFsaWRhdGlvbnM/OiBJQ29udHJvbFZhbGlkYXRpb25bXSkgPT4ge1xuXHRcdGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcblx0XHRpZiAoIXZhbGlkYXRpb25zKSByZXR1cm4gdmFsaWRhdG9ycztcblx0XHQvL1N3aXRjaCBjYXNlIGJyZWFrcyB0aGUgbW9iaWxlIGFwcCBzbyB3ZSdsbCBkbyBpZiBzdGF0ZW1lbnRzXG5cdFx0Zm9yIChjb25zdCB2YWxpZGF0aW9uIG9mIHZhbGlkYXRpb25zKSB7XG5cdFx0XHRjb25zdCBydWxlID0gdmFsaWRhdGlvbi5ydWxlLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG5cdFx0XHRpZiAocnVsZSA9PSBcIm1pblwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIHBldGl0ZSAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbih2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcIm1heFwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIGdyYW5kZSAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heCh2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcInJlcXVpcmVkXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZSBjaGFtcHMgZXN0IHJlcXVpcyAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwiZW1haWxcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNldHRlIGFkcmVzc2UgZW1haWwgbidlc3QgcGFzIHZhbGlkZSAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLmVtYWlsKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwibWlubGVuZ3RoXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSB2YWxldXIgZXN0IHRyb3AgcGV0aXRlICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwibWF4bGVuZ3RoXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSB2YWxldXIgZXN0IHRyb3AgZ3JhbmRlICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwidHlwZVwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIG4nZXN0IHBhcyB2YWxpZGUgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2godHlwZSh2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcImRlY2ltYWxcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBgTGUgbm9tYnJlIGRlIGTDqWNpbWFsIG4nZXN0IHBhcyB2YWxpZGUgKG1heDogJHt2YWxpZGF0aW9uLnZhbHVlfSkgIWA7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChkZWNpbWFsKHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwibWF4ZGF0ZVwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IGBDZXR0ZSBkYXRlIGVzdCB0cm9wIGdyYW5kZSAhIChtYXg6ICR7dmFsaWRhdGlvbi52YWx1ZX0pICFgO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2gobWF4RGF0ZSh2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB2YWxpZGF0b3JzO1xuXHR9O1xufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1jZW50ZXIgbWluLWgtNS82IG10LTJcIj5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKm5nSWY9XCJpbml0aWFsaXplZFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFiRGlzcGxheSB8fCAhc2VjdGlvbnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJzaW5nbGVUZW1wbGF0ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2NvbnRyb2xzOiBjb250cm9sc31cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRhYkRpc3BsYXkgJiYgc2VjdGlvbnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWN0aW9uVGVtcGxhdGVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntzZWN0aW9uczogc2VjdGlvbnN9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYkRpc3BsYXkgJiYgc2VjdGlvbnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWJzVGVtcGxhdGVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntzZWN0czogc2VjdGlvbnN9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZm9ybT5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3RhYnNUZW1wbGF0ZSBsZXQtc2VjdGlvbnM9J3NlY3RzJz5cbiAgPGZpZWxkc2V0IFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgIDxtYXQtdGFiLWdyb3VwPlxuICAgICAgQGZvciAoc2VjdGlvbiBvZiBzZWN0aW9uczsgdHJhY2sgc2VjdGlvbjsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgICA8bWF0LXRhYiBbbGFiZWxdPVwic2VjdGlvbi50aXRsZSB8fCAnw4l0YXBlICcgKyAoaW5kZXggKyAxKVwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaW5pdGlhbGl6ZWRcIiBjbGFzcz1cIm10LTRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbXBhY3QgPyAnZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTQnOidncmlkIGdhcC15LTIgZ2FwLXgtNiBzbTpncmlkLWNvbHMtMidcIj5cbiAgICAgICAgICBAZm9yIChjdHJsIG9mIHNlY3Rpb24uY29udHJvbHM7IHRyYWNrIGluZGV4OyBsZXQgaW5kZXggPSAkaW5kZXg7IGxldFxuICAgICAgICAgIGxhc3QgPVxuICAgICAgICAgICRsYXN0KVxuICAgICAgICAgIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRyb2xUZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2NvbnRyb2w6IGN0cmwsIGluZGV4OiBpbmRleCwgbGFzdDogJGxhc3R9XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LXRhYj5cbiAgICAgIH1cbiAgICA8L21hdC10YWItZ3JvdXA+XG4gIDwvZmllbGRzZXQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NpbmdsZVRlbXBsYXRlIGxldC1jb250cm9scz1cImNvbnRyb2xzXCI+XG4gIDxmaWVsZHNldCBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiaW5pdGlhbGl6ZWRcIlxuICAgICAgW25nQ2xhc3NdPVwiY29tcGFjdCA/ICdncmlkIGdhcC15LTIgZ2FwLXgtNiBzbTpncmlkLWNvbHMtNCc6J2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy0yJ1wiPlxuICAgICAgQGZvciAoY29udHJvbCBvZiBjb250cm9sczsgdHJhY2sgY29udHJvbDsgbGV0IGluZGV4ID0gJGluZGV4OyBsZXQgbGFzdCA9ICRsYXN0KSB7XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRyb2xUZW1wbGF0ZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Y29udHJvbDogY29udHJvbCwgaW5kZXg6IGluZGV4LCBsYXN0OiBsYXN0fVwiPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICB9XG4gICAgPC9kaXY+XG5cbiAgPC9maWVsZHNldD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2VjdGlvblRlbXBsYXRlIGxldC1zZWN0aW9ucz0nc2VjdGlvbnMnPlxuICA8ZmllbGRzZXQgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgQGZvciAoc2VjdGlvbiBvZiBzZWN0aW9uczsgdHJhY2sgc2VjdGlvbjsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgPGRpdj5cbiAgICAgIEBpZiAoc2VjdGlvbi50aXRsZSkge1xuICAgICAgPGgyIGNsYXNzPVwibWItMiBmb250LWJvbGQgdGV4dC14bCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiPlxuICAgICAgICB7eyBzZWN0aW9uLnRpdGxlIH19XG4gICAgICA8L2gyPlxuICAgICAgfVxuICAgICAgPGRpdiAqbmdJZj1cImluaXRpYWxpemVkXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiY29tcGFjdCA/ICdncmlkIGdhcC15LTIgZ2FwLXgtNiBzbTpncmlkLWNvbHMtNCc6J2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy0yJ1wiPlxuICAgICAgICBAZm9yIChjb250cm9sIG9mIHNlY3Rpb24uY29udHJvbHM7IHRyYWNrIGluZGV4OyBsZXQgaW5kZXggPSAkaW5kZXg7IGxldFxuICAgICAgICBsYXN0ID1cbiAgICAgICAgJGxhc3QpXG4gICAgICAgIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250cm9sVGVtcGxhdGVcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Y29udHJvbDogY29udHJvbCwgaW5kZXg6IGluZGV4LCBsYXN0OiAkbGFzdH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgQGlmIChpbmRleCAhPSAoc2VjdGlvbnN8fFtdKS5sZW5ndGggLSAxICYmICFjb21wYWN0KSB7XG4gICAgICA8ZGl2IGNsYXNzPVwicHktNFwiPlxuICAgICAgICA8aHIgY2xhc3M9XCJcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgfVxuICA8L2ZpZWxkc2V0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjb250cm9sVGVtcGxhdGUgbGV0LWNvbnRyb2w9J2NvbnRyb2wnIGxldC1sYXN0PSdsYXN0JyBsZXQtaW5kZXg9J2luZGV4Jz5cbiAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGgtbWluIG10LTJcIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBbbmdDbGFzc109XCJ7XG4gICAgJ3NtOmNvbC1zcGFuLTInOiAoY29udHJvbC53aWR0aCA9PSAncm93JyAmJiAhY29tcGFjdCkgfHwgY29udHJvbC50eXBlPT0ndGV4dEFyZWEnICYmIGNvbXBhY3QgJiYgY29udHJvbC53aWR0aCAhPSAncm93JyxcbiAgICAnc206Y29sLXNwYW4tNCc6IGNvbnRyb2wud2lkdGggPT0ncm93JyAmJiBjb21wYWN0LFxuICAgIH1cIj5cbiAgICBAaWYgKGNvbnRyb2wudHlwZT09J3NlYXJjaFNlbGVjdCcpIHtcbiAgICA8ZGl2IGFwcC1jaHItc2VhcmNoLXNlbGVjdCBjbGFzcz1cInJlbGF0aXZlIGlucHV0IHotMCB3LWZ1bGxcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiXG4gICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgW2RhdGFdPVwiY29udHJvbC5kYXRhIHx8IFtdXCIgW2Rpc3BsYXldPVwiY29udHJvbC5mbiFcIiBbbmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIlxuICAgICAgW2ZpbHRlcnNdPVwiY29udHJvbC5maWx0ZXJzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgYWJzb2x1dGUgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiIFtmb3JdPVwiY29udHJvbC5uYW1lXCI+e3tcbiAgICAgICAgY29udHJvbC5sYWJlbFxuICAgICAgICB9fVxuICAgICAgICBAaWYgKGlzQ29udHJvbFJlcXVpcmVkKGNvbnRyb2wpKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1yZWQtNTAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgICA6XG4gICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgY29udHJvbC52YWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbikge1xuICAgICAgICBAaWYgKFxuICAgICAgICBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiZcbiAgICAgICAgZm9ybS5oYXNFcnJvcih2YWxpZGF0aW9uLnJ1bGUudG9Mb3dlckNhc2UoKSwgY29udHJvbC5uYW1lKVxuICAgICAgICApIHtcbiAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cInRleHQtcmVkLTUwMCBkYXJrOnRleHQtcmVkLTgwMFwiPnt7IHZhbGlkYXRpb24uZGlzcGxheSB9fTwvbWF0LWVycm9yPlxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgfVxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSB6LTAgdy1mdWxsIGdyb3VwL2lucHV0cyBjb250ZW50XCI+XG4gICAgICA8IS0tIEhlcmUgd2Ugd2lsbCAqbmdJZiBlYWNoIHR5cGUgb2YgaW5wdXQgY2F1c2UgaXQncyB0aGUgY2xlYW5lc3Qgd2F5IEkgY2FuIGltYWdpbmUtLT5cbiAgICAgIDwhLS1URVhULS0+XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAndGV4dCcpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cInRleHRcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiIFwiIFt2YWx1ZV09XCJtb2RlbD8uW2NvbnRyb2wubmFtZV0gfHwgY29udHJvbC52YWx1ZSB8fCAnJ1wiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBweS0yLjUgcHgtMCB3LWZ1bGwgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICA8IS0tUEFTU1dPUkQtLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdwYXNzd29yZCcpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cInBhc3N3b3JkXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIiBcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMi41IHB4LTAgdy1mdWxsIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgfVxuICAgICAgPCEtLVRFWFQgQVJFQS0tPlxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ3RleHRBcmVhJykge1xuICAgICAgPHRleHRhcmVhICN0ZXh0QXJlYSBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIlxuICAgICAgICAoaW5wdXQpPVwicmVzaXplKHRleHRBcmVhKVwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgY2xhc3M9XCJuby1zY3JvbGxiYXIgaW5wdXQgIXJlc2l6ZS1ub25lIGhlaWdodC1ub3JtYWxpemVkIGJsb2NrIHB5LTIgcHgtMCB3LWZ1bGwgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiPjwvdGV4dGFyZWE+XG4gICAgICB9XG4gICAgICA8IS0tTlVNQkVSLS0+XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAnbnVtYmVyJykge1xuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICB0eXBlPVwibnVtYmVyXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgcGxhY2Vob2xkZXI9XCIgXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMi41IHB4LTAgdy1mdWxsIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgfVxuICAgICAgPCEtLURBVEUtLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdkYXRlJykge1xuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICB0eXBlPVwiZGF0ZVwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCIgXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTIgcHgtMCB3LWZ1bGwgaGVpZ2h0LW5vcm1hbGl6ZWQgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAnZGF0ZXRpbWUnKSB7XG4gICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgIHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCIgXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTIgcHgtMCB3LWZ1bGwgaGVpZ2h0LW5vcm1hbGl6ZWQgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICA8IS0tQ09MT1ItLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdjb2xvcicpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cImNvbG9yXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIiBcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiIHN0eWxlPVwiaGVpZ2h0OiA0MnB4O1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMS41IG0tMCBweC0wIHctZnVsbCBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgIH1cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICd0b2dnbGUnKXtcbiAgICAgIDxpbnB1dCAjdG9nZ2xlIHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiaGlkZGVuIGNoZWNrYm94XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIiAvPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInJlbGF0aXZlIHRvZ2dsZS13cmFwcGVyIGJsb2NrIGlucHV0IGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLWdyYXktMzAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCI+XG4gICAgICAgIDxkaXYgKGNsaWNrKT1cInRvZ2dsZT8uY2xpY2soKVwiIGNsYXNzPVwicmVsYXRpdmUgYmxvY2sgaW5wdXQgdG9nZ2xlXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSAhPSAnc2VhcmNoU2VsZWN0Jykge1xuICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgYWJzb2x1dGUgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiIFtmb3JdPVwiY29udHJvbC5uYW1lXCI+e3tcbiAgICAgICAgY29udHJvbC5sYWJlbFxuICAgICAgICB9fVxuICAgICAgICBAaWYoY29udHJvbC5sYWJlbCAmJiBjb250cm9sLmxhYmVsICE9ICcnICYmIGNvbnRyb2wubGFiZWwgIT0gJyAnKXtcbiAgICAgICAgQGlmIChpc0NvbnRyb2xSZXF1aXJlZChjb250cm9sKSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgICAgOlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgY29udHJvbC52YWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbikge1xuICAgICAgICBAaWYgKFxuICAgICAgICBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiZcbiAgICAgICAgZm9ybS5oYXNFcnJvcih2YWxpZGF0aW9uLnJ1bGUudG9Mb3dlckNhc2UoKSwgY29udHJvbC5uYW1lKVxuICAgICAgICApIHtcbiAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cInRleHQtcmVkLTUwMCBkYXJrOnRleHQtcmVkLTgwMFwiPnt7IHZhbGlkYXRpb24uZGlzcGxheSB9fTwvbWF0LWVycm9yPlxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvbGFiZWw+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbnRyb2wuaWNvbiAmJiAhZGlzYWJsZWQpIHtcbiAgICAgIDxzcGFuXG4gICAgICAgIFtuZ0NsYXNzXT1cImNvbnRyb2wuaWNvbkNhbGxiYWNrRGlzYWJsZWQgPyAndGV4dC1ncmF5LTQwMCBkYXJrOnRleHQtZ3JheS01MDAnOid0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSdcIlxuICAgICAgICBjbGFzcz1cImFic29sdXRlIHAtMi41IGJvdHRvbS0wIHJpZ2h0LTBcIiBbbWF0VG9vbHRpcF09XCJjb250cm9sLmljb25Ub29sdGlwIHx8ICcnXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxuICAgICAgICAoY2xpY2spPVwiIWNvbnRyb2wuaWNvbkNhbGxiYWNrRGlzYWJsZWQgJiYgY29udHJvbC5pY29uQ2FsbGJhY2s/Lihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnZhbHVlKVwiPjxtYXQtaWNvblxuICAgICAgICAgIGNsYXNzPVwiZmxleCBpbnB1dCBqdXN0aWZ5LWNlbnRlciBhbGlnbi1taWRkbGUgaXRlbXMtY2VudGVyIGNvbnRlbnQtY2VudGVyIHRleHQtbGdcIj57e2NvbnRyb2wuaWNvbn19PC9tYXQtaWNvbj48L3NwYW4+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmIChjb250cm9sLnNwYW4pIHtcbiAgICA8c3BhblxuICAgICAgW25nQ2xhc3NdPVwiIWZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzIHx8ICFmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgPyAndGV4dC1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS0zMDAnIDogJyF0ZXh0LXJlZC01MDAgZGFyazohdGV4dC1yZWQtODAwJ1wiXG4gICAgICBjbGFzcz1cImgtMCB0ZXh0LXhzXCI+e3sgY29udHJvbC5zcGFuXG4gICAgICB9fTwvc3Bhbj5cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
306
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWix1QkFBdUIsR0FNdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFlLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFHTixVQUFVLEVBQ1YsV0FBVyxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQ04sUUFBUSxFQUNSLFlBQVksRUFDWix5QkFBeUIsR0FDekIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUNOLElBQUksRUFDSixzQkFBc0IsR0FDdEIsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FB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QUFzQjt3QkFDdEIsYUFBYTtxQkFDYixhQUNVO3dCQUNWLFFBQVE7d0JBQ1I7NEJBQ0MsT0FBTyxFQUFFLHlCQUF5Qjs0QkFDbEMsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRTt5QkFDckM7cUJBQ0QsbUJBQ2dCLHVCQUF1QixDQUFDLE9BQU87dUlBR3ZDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFRSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU07Z0JBRUUsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUdFLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDb21wb25lbnQsXG5cdElucHV0LFxuXHRPdXRwdXQsXG5cdEV2ZW50RW1pdHRlcixcblx0QWZ0ZXJWaWV3SW5pdCxcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdFZpZXdFbmNhcHN1bGF0aW9uLFxuXHRDaGFuZ2VEZXRlY3RvclJlZixcblx0T25DaGFuZ2VzLFxuXHRTaW1wbGVDaGFuZ2VzLFxuXHRPbkluaXQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBWYWxpZGF0b3JGbiwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7XG5cdEZvcm1CdWlsZGVyLFxuXHRGb3JtR3JvdXAsXG5cdFZhbGlkYXRvcnMsXG5cdEZvcm1Db250cm9sLFxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE1hdEVycm9yIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwXCI7XG5pbXBvcnQgeyBDaHJTZWFyY2hTZWxlY3RDb21wb25lbnQgfSBmcm9tIFwiLi4vY2hyLXNlYXJjaC1zZWxlY3QvY2hyLXNlYXJjaC1zZWxlY3QuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGVcIjtcbmltcG9ydCB7XG5cdERhdGVQaXBlLFxuXHRDb21tb25Nb2R1bGUsXG5cdERBVEVfUElQRV9ERUZBVUxUX09QVElPTlMsXG59IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGVcIjtcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdGFic1wiO1xuaW1wb3J0IHtcblx0dHlwZSxcblx0VHlwZVZhbGlkYXRvckRpcmVjdGl2ZSxcbn0gZnJvbSBcIi4uL21vZGVscy9jaHItdmFsaWRhdG9ycy90eXBlLXZhbGlkYXRvclwiO1xuaW1wb3J0IHsgZGVjaW1hbCB9IGZyb20gXCIuLi9tb2RlbHMvY2hyLXZhbGlkYXRvcnMvZGVjaW1hbC12YWxpZGF0b3JcIjtcbmltcG9ydCB7IG1heERhdGUgfSBmcm9tIFwiLi4vbW9kZWxzL2Noci12YWxpZGF0b3JzL21heC1kYXRlLXZhbGlkYXRvclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtQ29udHJvbENvbGxlY3Rpb24ge1xuXHRba2V5OiBzdHJpbmddOiBGb3JtQ29udHJvbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2VhcmNoRmlsdGVyIHtcblx0ZGlzcGxheTogc3RyaW5nO1xuXHRjYWxsYmFjaz86IEZ1bmN0aW9uO1xuXHR0b29sdGlwPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb250cm9sVmFsaWRhdGlvbiB7XG5cdHJ1bGU6IHN0cmluZztcblx0dmFsdWU/OiBhbnk7XG5cdGRpc3BsYXk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRyb2wge1xuXHRsYWJlbD86IHN0cmluZztcblx0bmFtZTogc3RyaW5nO1xuXHRzcGFuPzogc3RyaW5nO1xuXHR3aWR0aD86IFwiY29sXCIgfCBcInJvd1wiO1xuXHRjb2w/OiBudW1iZXI7XG5cdHJvdz86IG51bWJlcjtcblx0dHlwZTpcblx0XHR8IFwidGV4dFwiXG5cdFx0fCBcInBhc3N3b3JkXCJcblx0XHR8IFwidGV4dEFyZWFcIlxuXHRcdHwgXCJudW1iZXJcIlxuXHRcdHwgXCJkYXRlXCJcblx0XHR8IFwiZGF0ZXRpbWVcIlxuXHRcdHwgXCJzZWFyY2hTZWxlY3RcIlxuXHRcdHwgXCJjb2xvclwiXG5cdFx0fCBcInRvZ2dsZVwiO1xuXHR2YWx1ZT86IGFueTtcblx0ZGF0YT86IGFueVtdIHwgbnVsbDtcblx0aWNvbj86IHN0cmluZztcblx0aWNvbkNhbGxiYWNrPzogRnVuY3Rpb247XG5cdGljb25DYWxsYmFja0Rpc2FibGVkPzogYm9vbGVhbjtcblx0aWNvblRvb2x0aXA/OiBzdHJpbmc7XG5cdGZuPzogKG9iamVjdDogYW55KSA9PiBzdHJpbmc7XG5cdGZpbHRlcnM/OiBJU2VhcmNoRmlsdGVyW107XG5cdHZhbGlkYXRpb25zPzogSUNvbnRyb2xWYWxpZGF0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1TZWN0aW9uIHtcblx0dGl0bGU/OiBzdHJpbmc7XG5cdGNvbnRyb2xzOiBJQ29udHJvbFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtQ29udHJvbCB7XG5cdFtrZXk6IHN0cmluZ106IGFueTtcbn1cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogXCJhcHAtY2hyLWZvcm1cIixcblx0dGVtcGxhdGVVcmw6IFwiLi9jaHItZm9ybS5jb21wb25lbnQuaHRtbFwiLFxuXHRzdHlsZVVybHM6IFtcblx0XHRcIi4vY2hyLWZvcm0uY29tcG9uZW50LnNjc3NcIixcblx0XHRcIi4uLy4uLy4uLy4uLy4uL3RhaWx3aW5kYnVpbGQuY3NzXCIsXG5cdFx0XCIuL2Noci1mb3JtLmNvbXBvbmVudC5zY3NzXCIsXG5cdF0sXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtcblx0XHRSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuXHRcdEZvcm1zTW9kdWxlLFxuXHRcdE1hdFRvb2x0aXBNb2R1bGUsXG5cdFx0TWF0SWNvbk1vZHVsZSxcblx0XHRNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcblx0XHRNYXRFcnJvcixcblx0XHRDaHJTZWFyY2hTZWxlY3RDb21wb25lbnQsXG5cdFx0TWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuXHRcdERhdGVQaXBlLFxuXHRcdENvbW1vbk1vZHVsZSxcblx0XHRUeXBlVmFsaWRhdG9yRGlyZWN0aXZlLFxuXHRcdE1hdFRhYnNNb2R1bGUsXG5cdF0sXG5cdHByb3ZpZGVyczogW1xuXHRcdERhdGVQaXBlLFxuXHRcdHtcblx0XHRcdHByb3ZpZGU6IERBVEVfUElQRV9ERUZBVUxUX09QVElPTlMsXG5cdFx0XHR1c2VWYWx1ZTogeyBkYXRlRm9ybWF0OiBcInNob3J0RGF0ZVwiIH0sXG5cdFx0fSxcblx0XSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxufSlcbmV4cG9ydCBjbGFzcyBDaHJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblx0QElucHV0KCkgc2VjdGlvbnM/OiBJRm9ybVNlY3Rpb25bXTtcblx0QElucHV0KCkgY29udHJvbHM/OiBJQ29udHJvbFtdO1xuXG5cdEBJbnB1dCgpIHZhbGlkPzogYm9vbGVhbjtcblx0QE91dHB1dCgpIHZhbGlkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cblx0QElucHV0KCkgbW9kZWw6IGFueSA9IG51bGw7XG5cdEBPdXRwdXQoKSBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuXHRASW5wdXQoKSBkaXNhYmxlZD86IGJvb2xlYW47XG5cdEBPdXRwdXQoKSB2YWx1ZXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cdEBJbnB1dCgpIHN1Ym1pdD86IEZ1bmN0aW9uO1xuXG5cdEBJbnB1dCgpIGNvbXBhY3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRAT3V0cHV0KCkgZm9ybUNoYW5nZTogRXZlbnRFbWl0dGVyPElGb3JtQ29udHJvbD4gPVxuXHRcdG5ldyBFdmVudEVtaXR0ZXI8SUZvcm1Db250cm9sPigpO1xuXG5cdEBJbnB1dCgpIHRhYkRpc3BsYXk6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRmb3JtOiBGb3JtR3JvdXAgPSB0aGlzLmJ1aWxkZXIuZ3JvdXAoe30pO1xuXG5cdHByaXZhdGUgdmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG5cdHByaXZhdGUgY29udHJvbFR5cGVzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cdHByaXZhdGUgZmxhdHRlbmVkQ29udHJvbHM6IElDb250cm9sW10gPSBbXTtcblxuXHRwdWJsaWMgaW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIGJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuXHRcdHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlLFxuXHRcdHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXG5cdCkge1xuXHRcdGlmICh0aGlzLmNvbnRyb2xzICE9IG51bGwgJiYgdGhpcy5zZWN0aW9ucyAhPSBudWxsKVxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRcIllvdSBjYW4ndCB1c2UgYm90aCBjb250cm9scyBhbmQgc2VjdGlvbnMgaW4gdGhlIHNhbWUgZm9ybVwiXG5cdFx0XHQpO1xuXHR9XG5cblx0bmdPbkluaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5mbGF0dGVuZWRDb250cm9scyA9XG5cdFx0XHR0aGlzLnNlY3Rpb25zXG5cdFx0XHRcdD8ubWFwKChzKSA9PiBzLmNvbnRyb2xzKVxuXHRcdFx0XHQuZmxhdCgpXG5cdFx0XHRcdC5jb25jYXQodGhpcy5jb250cm9scyA/PyBbXSkgfHwgW107XG5cdFx0dGhpcy5pbml0TW9kZWwoKTtcblx0XHR0aGlzLmluaXRWYWx1ZXMoKTtcblx0XHR0aGlzLmluaXRDb250cm9scygpO1xuXHRcdHRoaXMuaW5pdExpc3RlbmVycygpO1xuXHRcdHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXHR9XG5cblx0cHJpdmF0ZSBpbml0TW9kZWwgPSAoKSA9PiB7XG5cdFx0aWYgKHRoaXMubW9kZWwgPT0gbnVsbCkgdGhpcy5tb2RlbCA9IHt9O1xuXG5cdFx0Zm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcblx0XHRcdGlmICghdGhpcy5tb2RlbFtjb250cm9sLm5hbWVdKSB0aGlzLm1vZGVsW2NvbnRyb2wubmFtZV0gPSBjb250cm9sLnZhbHVlO1xuXHRcdH1cblx0fTtcblxuXHRwcml2YXRlIGluaXRWYWx1ZXMgPSAoKSA9PiB7XG5cdFx0Zm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcblx0XHRcdGlmICghdGhpcy52YWx1ZXNbY29udHJvbC5uYW1lXSlcblx0XHRcdFx0dGhpcy52YWx1ZXNbY29udHJvbC5uYW1lXSA9IHRoaXMudG9JbnB1dFZhbHVlKFxuXHRcdFx0XHRcdGNvbnRyb2wsXG5cdFx0XHRcdFx0dGhpcy5tb2RlbFtjb250cm9sLm5hbWVdXG5cdFx0XHRcdCk7XG5cdFx0fVxuXHR9O1xuXG5cdHByaXZhdGUgaW5pdENvbnRyb2xzID0gKCkgPT4ge1xuXHRcdGNvbnN0IGZvcm1Db250cm9scyA9IHt9IGFzIElGb3JtQ29udHJvbENvbGxlY3Rpb247XG5cdFx0Zm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcblx0XHRcdGNvbnN0IHZhbGlkYXRvcnMgPSB0aGlzLl9nZXRWYWxpZGF0b3JzKGNvbnRyb2wudmFsaWRhdGlvbnMpO1xuXHRcdFx0Zm9ybUNvbnRyb2xzW2NvbnRyb2wubmFtZV0gPSBuZXcgRm9ybUNvbnRyb2woXG5cdFx0XHRcdHRoaXMudmFsdWVzW2NvbnRyb2wubmFtZV0sXG5cdFx0XHRcdHZhbGlkYXRvcnNcblx0XHRcdCk7XG5cdFx0XHR0aGlzLmNvbnRyb2xUeXBlc1tjb250cm9sLm5hbWVdID0gY29udHJvbC50eXBlO1xuXHRcdH1cblxuXHRcdHRoaXMuZm9ybSA9IHRoaXMuYnVpbGRlci5ncm91cChmb3JtQ29udHJvbHMpO1xuXHRcdHRoaXMudmFsaWQgPSB0aGlzLmZvcm0udmFsaWQ7XG5cdH07XG5cblx0cHJpdmF0ZSBpbml0TGlzdGVuZXJzID0gKCkgPT4ge1xuXHRcdHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZXMpID0+IHtcblx0XHRcdGZvciAoY29uc3Qga2V5IGluIHZhbHVlcykge1xuXHRcdFx0XHRpZiAodmFsdWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcblx0XHRcdFx0XHR0aGlzLm1vZGVsW2tleV0gPSB2YWx1ZXNba2V5XTtcblx0XHRcdFx0XHR0aGlzLnZhbHVlc1trZXldID0gdmFsdWVzW2tleV07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMudmFsaWQgPSB0aGlzLmZvcm0udmFsaWQ7XG5cdFx0XHR0aGlzLnZhbGlkQ2hhbmdlLmVtaXQodGhpcy52YWxpZCk7XG5cdFx0XHR0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XG5cdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblx0XHR9KTtcblx0fTtcblxuXHR2YWx1ZSA9IChpbnB1dD86IHN0cmluZykgPT4gdGhpcy5nZXRWYWx1ZShpbnB1dCk7XG5cblx0Z2V0VmFsdWUgPSAoaW5wdXQ/OiBzdHJpbmcpID0+IHtcblx0XHRpZiAoaW5wdXQpIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbaW5wdXRdPy52YWx1ZTtcblx0XHRyZXR1cm4gdGhpcy5mb3JtLnZhbHVlO1xuXHR9O1xuXG5cdGlzVmFsaWQgPSAoaW5wdXQ/OiBzdHJpbmcpID0+IHtcblx0XHRpZiAoaW5wdXQpIHJldHVybiB0aGlzLmZvcm0uZ2V0KGlucHV0KT8udmFsaWQ7XG5cdFx0cmV0dXJuIHRoaXMudmFsaWQ7XG5cdH07XG5cblx0aXNDb250cm9sUmVxdWlyZWQgPSAoY29udHJvbDogSUNvbnRyb2wpID0+IHtcblx0XHRyZXR1cm4gY29udHJvbC52YWxpZGF0aW9ucz8uZmluZCgodikgPT4gdi5ydWxlLnRvTG93ZXJDYXNlKCkgPT0gXCJyZXF1aXJlZFwiKTtcblx0fTtcblxuXHQvKipcblx0ICogVXBkYXRlIHRoZSB2YWx1ZSBvZiBhIGNvbnRyb2wgV0lUSE9VVCB0cmlnZ2VyaW5nIHRoZSBtb2RlbENoYW5nZSBldmVudFxuXHQgKiBAcGFyYW0ga2V5IGlucHV0IGtleSAoY29udHJvbCBuYW1lKVxuXHQgKiBAcGFyYW0gdmFsdWUgdmFsdWUgdG8gc2V0XG5cdCAqIEBwYXJhbSBkYXRlRm9ybWF0IG9wdGlvbmFsIGRhdGUgZm9ybWF0IGZvciBkYXRlIGFuZCBkYXRldGltZSBpbnB1dHNcblx0ICovXG5cdHNldFZhbHVlID0gKGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCBkYXRlRm9ybWF0OiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuXHRcdGNvbnN0IHZhbCA9XG5cdFx0XHRkYXRlRm9ybWF0ID09IG51bGwgPyB2YWx1ZSA6IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCBkYXRlRm9ybWF0KTtcblx0XHR0aGlzLmZvcm0uZ2V0KGtleSk/LnNldFZhbHVlKHZhbCwge1xuXHRcdFx0ZW1pdEV2ZW50OiBmYWxzZSxcblx0XHRcdGVtaXRWaWV3VG9Nb2RlbENoYW5nZTogZmFsc2UsXG5cdFx0fSk7XG5cdFx0dGhpcy5tb2RlbFtrZXldID0gdmFsO1xuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBVcGRhdGUgdGhlIHZhbHVlIG9mIHRoZSBmb3JtJ3MgbW9kZWwgV0lUSE9VVCB0cmlnZ2VyaW5nIHRoZSBtb2RlbENoYW5nZSBldmVudFxuXHQgKiBAcGFyYW0gbW9kZWwgdGhlIG1vZGVsIHRvIHNldFxuXHQgKiBAcGFyYW0gZGF0ZUZvcm1hdCBvcHRpb25hbCBkYXRlIGZvcm1hdCBmb3IgZGF0ZSBhbmQgZGF0ZXRpbWUgaW5wdXRzXG5cdCAqL1xuXHRzZXQgPSAobW9kZWw6IGFueSwgZGF0ZUZvcm1hdDogc3RyaW5nIHwgbnVsbCA9IG51bGwpID0+IHtcblx0XHRmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhtb2RlbCkpIHtcblx0XHRcdHRoaXMuc2V0VmFsdWUoa2V5LCBtb2RlbFtrZXldLCBkYXRlRm9ybWF0KTtcblx0XHR9XG5cdH07XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgdGhlIHZhbHVlIG9mIGEgY29udHJvbC4gVGhpcyBXSUxMIHRyaWdnZXIgdGhlIG1vZGVsQ2hhbmdlIGV2ZW50XG5cdCAqIEBwYXJhbSBrZXkgaW5wdXQga2V5IChjb250cm9sIG5hbWUpXG5cdCAqIEBwYXJhbSB2YWx1ZSB2YWx1ZSB0byBzZXRcblx0ICogQHBhcmFtIGRhdGVGb3JtYXQgb3B0aW9uYWwgZGF0ZSBmb3JtYXQgZm9yIGRhdGUgYW5kIGRhdGV0aW1lIGlucHV0c1xuXHQgKi9cblx0cGF0Y2hWYWx1ZSA9IChrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgZGF0ZUZvcm1hdDogc3RyaW5nIHwgbnVsbCA9IG51bGwpID0+IHtcblx0XHRpZiAoZGF0ZUZvcm1hdCA9PSBudWxsKSB0aGlzLnNldFZhbHVlJChrZXksIHZhbHVlKTtcblx0XHRlbHNlIHRoaXMuc2V0VmFsdWUkKGtleSwgdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsIGRhdGVGb3JtYXQpKTtcblx0XHR0aGlzLmZvcm0uZ2V0KGtleSk/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcblx0XHR0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XG5cdFx0dGhpcy5kZXRlY3RDaGFuZ2VzKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgdGhlIHZhbHVlIG9mIHRoZSBmb3JtJ3MgbW9kZWwuIFRoaXMgV0lMTCB0cmlnZ2VyIHRoZSBtb2RlbENoYW5nZSBldmVudCBvbmNlIGZvciBlYWNoIGlucHV0XG5cdCAqIEBwYXJhbSBtb2RlbCBtb2RlbCB0byBzZXRcblx0ICogQHBhcmFtIGRhdGVGb3JtYXQgb3B0aW9uYWwgZGF0ZSBmb3JtYXQgZm9yIGRhdGUgYW5kIGRhdGV0aW1lIGlucHV0c1xuXHQgKi9cblx0cGF0Y2ggPSAobW9kZWw6IGFueSwgZGF0ZUZvcm1hdDogc3RyaW5nIHwgbnVsbCA9IG51bGwpID0+IHtcblx0XHRmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhtb2RlbCkpIHtcblx0XHRcdHRoaXMucGF0Y2hWYWx1ZShrZXksIG1vZGVsW2tleV0sIGRhdGVGb3JtYXQpO1xuXHRcdH1cblx0fTtcblxuXHRjaGVja1ZhbGlkaXR5ID0gKCkgPT4ge1xuXHRcdGZvciAoY29uc3QgY29udHJvbCBvZiB0aGlzLmZsYXR0ZW5lZENvbnRyb2xzKSB7XG5cdFx0XHR0aGlzLmZvcm0uZ2V0KGNvbnRyb2wubmFtZSk/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcblx0XHR9XG5cdFx0dGhpcy52YWxpZCA9IHRoaXMuZm9ybS52YWxpZDtcblx0XHR0aGlzLmRldGVjdENoYW5nZXMoKTtcblx0fTtcblxuXHR1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5ID0gKHRvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZSkgPT4ge1xuXHRcdHRoaXMuZm9ybS5tYXJrQXNEaXJ0eSgpO1xuXHRcdGlmICh0b3VjaGVkKSB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuXHRcdHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuXHR9O1xuXG5cdHByaXZhdGUgc2V0VmFsdWUkID0gKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG5cdFx0dGhpcy5mb3JtLmdldChrZXkpPy5wYXRjaFZhbHVlKHZhbHVlKTtcblx0XHR0aGlzLnZhbHVlc1trZXldID0gdmFsdWU7XG5cdH07XG5cblx0cHJpdmF0ZSB0b0lucHV0VmFsdWUgPSAoY29udHJvbDogSUNvbnRyb2wsIHZhbHVlOiBhbnkgfCBudWxsID0gbnVsbCkgPT4ge1xuXHRcdHN3aXRjaCAoY29udHJvbC50eXBlKSB7XG5cdFx0XHRjYXNlIFwiZGF0ZVwiOlxuXHRcdFx0XHRyZXR1cm4gdmFsdWVcblx0XHRcdFx0XHQ/IHRoaXMudHJhbnNmb3JtRGF0ZShcblx0XHRcdFx0XHRcdFx0dHlwZW9mIHZhbHVlID09IFwic3RyaW5nXCIgPyBuZXcgRGF0ZSh2YWx1ZSkgOiB2YWx1ZSxcblx0XHRcdFx0XHRcdFx0XCJ5eXl5LU1NLWRkXCJcblx0XHRcdFx0XHQgIClcblx0XHRcdFx0XHQ6IHRoaXMudHJhbnNmb3JtRGF0ZShjb250cm9sLnZhbHVlLCBcInl5eXktTU0tZGRcIik7XG5cdFx0XHRjYXNlIFwiZGF0ZXRpbWVcIjpcblx0XHRcdFx0cmV0dXJuIHZhbHVlXG5cdFx0XHRcdFx0PyB0aGlzLnRyYW5zZm9ybURhdGUoXG5cdFx0XHRcdFx0XHRcdHR5cGVvZiB2YWx1ZSA9PSBcInN0cmluZ1wiID8gbmV3IERhdGUodmFsdWUpIDogdmFsdWUsXG5cdFx0XHRcdFx0XHRcdFwieXl5eS1NTS1kZFRISDptbVwiXG5cdFx0XHRcdFx0ICApXG5cdFx0XHRcdFx0OiB0aGlzLnRyYW5zZm9ybURhdGUoY29udHJvbC52YWx1ZSwgXCJ5eXl5LU1NLWRkVEhIOm1tXCIpO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0cmV0dXJuIHZhbHVlIHx8IGNvbnRyb2wudmFsdWU7XG5cdFx0fVxuXHR9O1xuXG5cdHByaXZhdGUgdHJhbnNmb3JtRGF0ZSA9ICh2YWx1ZTogYW55LCBmb3JtYXQ6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0KTtcblx0fTtcblxuXHRwdWJsaWMgcmVzaXplID0gKHRleHRBcmVhOiBIVE1MVGV4dEFyZWFFbGVtZW50KSA9PiB7XG5cdFx0Y29uc3QgaW5pdGlhbEhlaWdodCA9IHRleHRBcmVhLnN0eWxlLmhlaWdodDtcblx0XHR0ZXh0QXJlYS5zdHlsZS5oZWlnaHQgPSBpbml0aWFsSGVpZ2h0O1xuXHRcdHRleHRBcmVhLnN0eWxlLmhlaWdodCA9IFwiXCIgKyB0ZXh0QXJlYS5zY3JvbGxIZWlnaHQgKyBcInB4XCI7XG5cdH07XG5cblx0cHVibGljIGRvU3VibWl0ID0gKCkgPT4ge1xuXHRcdHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG5cdFx0aWYgKHRoaXMudmFsaWQgJiYgdGhpcy5mb3JtLnZhbGlkKSB0aGlzLnN1Ym1pdD8uKHRoaXMuZm9ybS52YWx1ZSk7XG5cdH07XG5cblx0cHJpdmF0ZSBkZXRlY3RDaGFuZ2VzID0gKCkgPT4ge1xuXHRcdHRoaXMuZm9ybS5tYXJrQXNEaXJ0eSgpO1xuXHRcdHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXHR9O1xuXG5cdHByaXZhdGUgX2dldFZhbGlkYXRvcnMgPSAodmFsaWRhdGlvbnM/OiBJQ29udHJvbFZhbGlkYXRpb25bXSkgPT4ge1xuXHRcdGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcblx0XHRpZiAoIXZhbGlkYXRpb25zKSByZXR1cm4gdmFsaWRhdG9ycztcblx0XHQvL1N3aXRjaCBjYXNlIGJyZWFrcyB0aGUgbW9iaWxlIGFwcCBzbyB3ZSdsbCBkbyBpZiBzdGF0ZW1lbnRzXG5cdFx0Zm9yIChjb25zdCB2YWxpZGF0aW9uIG9mIHZhbGlkYXRpb25zKSB7XG5cdFx0XHRjb25zdCBydWxlID0gdmFsaWRhdGlvbi5ydWxlLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG5cdFx0XHRpZiAocnVsZSA9PSBcIm1pblwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIHBldGl0ZSAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbih2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcIm1heFwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIGdyYW5kZSAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heCh2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcInJlcXVpcmVkXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZSBjaGFtcHMgZXN0IHJlcXVpcyAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwiZW1haWxcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNldHRlIGFkcmVzc2UgZW1haWwgbidlc3QgcGFzIHZhbGlkZSAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLmVtYWlsKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwibWlubGVuZ3RoXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSB2YWxldXIgZXN0IHRyb3AgcGV0aXRlICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwibWF4bGVuZ3RoXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSB2YWxldXIgZXN0IHRyb3AgZ3JhbmRlICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwidHlwZVwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIG4nZXN0IHBhcyB2YWxpZGUgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2godHlwZSh2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcImRlY2ltYWxcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBgTGUgbm9tYnJlIGRlIGTDqWNpbWFsIG4nZXN0IHBhcyB2YWxpZGUgKG1heDogJHt2YWxpZGF0aW9uLnZhbHVlfSkgIWA7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChkZWNpbWFsKHZhbGlkYXRpb24udmFsdWUpKTtcblx0XHRcdH1cblx0XHRcdGlmIChydWxlID09IFwibWF4ZGF0ZVwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IGBDZXR0ZSBkYXRlIGVzdCB0cm9wIGdyYW5kZSAhIChtYXg6ICR7dmFsaWRhdGlvbi52YWx1ZX0pICFgO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2gobWF4RGF0ZSh2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB2YWxpZGF0b3JzO1xuXHR9O1xufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1jZW50ZXIgbWluLWgtNS82IG10LTJcIj5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKm5nSWY9XCJpbml0aWFsaXplZFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFiRGlzcGxheSB8fCAhc2VjdGlvbnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJzaW5nbGVUZW1wbGF0ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2NvbnRyb2xzOiBjb250cm9sc31cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRhYkRpc3BsYXkgJiYgc2VjdGlvbnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWN0aW9uVGVtcGxhdGVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntzZWN0aW9uczogc2VjdGlvbnN9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYkRpc3BsYXkgJiYgc2VjdGlvbnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWJzVGVtcGxhdGVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntzZWN0czogc2VjdGlvbnN9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZm9ybT5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3RhYnNUZW1wbGF0ZSBsZXQtc2VjdGlvbnM9J3NlY3RzJz5cbiAgPGZpZWxkc2V0IFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgIDxtYXQtdGFiLWdyb3VwPlxuICAgICAgQGZvciAoc2VjdGlvbiBvZiBzZWN0aW9uczsgdHJhY2sgc2VjdGlvbjsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgICA8bWF0LXRhYiBbbGFiZWxdPVwic2VjdGlvbi50aXRsZSB8fCAnw4l0YXBlICcgKyAoaW5kZXggKyAxKVwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaW5pdGlhbGl6ZWRcIiBjbGFzcz1cIm10LTRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbXBhY3QgPyAnZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTQnOidncmlkIGdhcC15LTIgZ2FwLXgtNiBzbTpncmlkLWNvbHMtMidcIj5cbiAgICAgICAgICBAZm9yIChjdHJsIG9mIHNlY3Rpb24uY29udHJvbHM7IHRyYWNrIGluZGV4OyBsZXQgaW5kZXggPSAkaW5kZXg7IGxldFxuICAgICAgICAgIGxhc3QgPVxuICAgICAgICAgICRsYXN0KVxuICAgICAgICAgIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRyb2xUZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2NvbnRyb2w6IGN0cmwsIGluZGV4OiBpbmRleCwgbGFzdDogJGxhc3R9XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LXRhYj5cbiAgICAgIH1cbiAgICA8L21hdC10YWItZ3JvdXA+XG4gIDwvZmllbGRzZXQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NpbmdsZVRlbXBsYXRlIGxldC1jb250cm9scz1cImNvbnRyb2xzXCI+XG4gIDxmaWVsZHNldCBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiaW5pdGlhbGl6ZWRcIlxuICAgICAgW25nQ2xhc3NdPVwiY29tcGFjdCA/ICdncmlkIGdhcC15LTIgZ2FwLXgtNiBzbTpncmlkLWNvbHMtNCc6J2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy0yJ1wiPlxuICAgICAgQGZvciAoY29udHJvbCBvZiBjb250cm9sczsgdHJhY2sgY29udHJvbDsgbGV0IGluZGV4ID0gJGluZGV4OyBsZXQgbGFzdCA9ICRsYXN0KSB7XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRyb2xUZW1wbGF0ZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Y29udHJvbDogY29udHJvbCwgaW5kZXg6IGluZGV4LCBsYXN0OiBsYXN0fVwiPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICB9XG4gICAgPC9kaXY+XG5cbiAgPC9maWVsZHNldD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2VjdGlvblRlbXBsYXRlIGxldC1zZWN0aW9ucz0nc2VjdGlvbnMnPlxuICA8ZmllbGRzZXQgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgQGZvciAoc2VjdGlvbiBvZiBzZWN0aW9uczsgdHJhY2sgc2VjdGlvbjsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgPGRpdj5cbiAgICAgIEBpZiAoc2VjdGlvbi50aXRsZSkge1xuICAgICAgPGgyIGNsYXNzPVwibWItMiBmb250LWJvbGQgdGV4dC14bCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZVwiPlxuICAgICAgICB7eyBzZWN0aW9uLnRpdGxlIH19XG4gICAgICA8L2gyPlxuICAgICAgfVxuICAgICAgPGRpdiAqbmdJZj1cImluaXRpYWxpemVkXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiY29tcGFjdCA/ICdncmlkIGdhcC15LTIgZ2FwLXgtNiBzbTpncmlkLWNvbHMtNCc6J2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy0yJ1wiPlxuICAgICAgICBAZm9yIChjb250cm9sIG9mIHNlY3Rpb24uY29udHJvbHM7IHRyYWNrIGluZGV4OyBsZXQgaW5kZXggPSAkaW5kZXg7IGxldFxuICAgICAgICBsYXN0ID1cbiAgICAgICAgJGxhc3QpXG4gICAgICAgIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250cm9sVGVtcGxhdGVcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Y29udHJvbDogY29udHJvbCwgaW5kZXg6IGluZGV4LCBsYXN0OiAkbGFzdH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgQGlmIChpbmRleCAhPSAoc2VjdGlvbnN8fFtdKS5sZW5ndGggLSAxICYmICFjb21wYWN0KSB7XG4gICAgICA8ZGl2IGNsYXNzPVwicHktNFwiPlxuICAgICAgICA8aHIgY2xhc3M9XCJcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgfVxuICA8L2ZpZWxkc2V0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjb250cm9sVGVtcGxhdGUgbGV0LWNvbnRyb2w9J2NvbnRyb2wnIGxldC1sYXN0PSdsYXN0JyBsZXQtaW5kZXg9J2luZGV4Jz5cbiAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGgtbWluIG10LTJcIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBbbmdDbGFzc109XCJ7XG4gICAgJ3NtOmNvbC1zcGFuLTInOiAoY29udHJvbC53aWR0aCA9PSAncm93JyAmJiAhY29tcGFjdCkgfHwgY29udHJvbC50eXBlPT0ndGV4dEFyZWEnICYmIGNvbXBhY3QgJiYgY29udHJvbC53aWR0aCAhPSAncm93JyxcbiAgICAnc206Y29sLXNwYW4tNCc6IGNvbnRyb2wud2lkdGggPT0ncm93JyAmJiBjb21wYWN0LFxuICAgIH1cIj5cbiAgICBAaWYgKGNvbnRyb2wudHlwZT09J3NlYXJjaFNlbGVjdCcpIHtcbiAgICA8ZGl2IGFwcC1jaHItc2VhcmNoLXNlbGVjdCBjbGFzcz1cInJlbGF0aXZlIGlucHV0IHotMCB3LWZ1bGxcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiXG4gICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgW2RhdGFdPVwiY29udHJvbC5kYXRhIHx8IFtdXCIgW2Rpc3BsYXldPVwiY29udHJvbC5mbiFcIiBbbmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIlxuICAgICAgW2ZpbHRlcnNdPVwiY29udHJvbC5maWx0ZXJzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgYWJzb2x1dGUgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiIFtmb3JdPVwiY29udHJvbC5uYW1lXCI+e3tcbiAgICAgICAgY29udHJvbC5sYWJlbFxuICAgICAgICB9fVxuICAgICAgICBAaWYgKGlzQ29udHJvbFJlcXVpcmVkKGNvbnRyb2wpKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1yZWQtNTAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgICA6XG4gICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgY29udHJvbC52YWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbikge1xuICAgICAgICBAaWYgKFxuICAgICAgICBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiZcbiAgICAgICAgZm9ybS5oYXNFcnJvcih2YWxpZGF0aW9uLnJ1bGUudG9Mb3dlckNhc2UoKSwgY29udHJvbC5uYW1lKVxuICAgICAgICApIHtcbiAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cInRleHQtcmVkLTUwMCBkYXJrOnRleHQtcmVkLTgwMFwiPnt7IHZhbGlkYXRpb24uZGlzcGxheSB9fTwvbWF0LWVycm9yPlxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgfVxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSB6LTAgdy1mdWxsIGdyb3VwL2lucHV0cyBjb250ZW50XCI+XG4gICAgICA8IS0tIEhlcmUgd2Ugd2lsbCAqbmdJZiBlYWNoIHR5cGUgb2YgaW5wdXQgY2F1c2UgaXQncyB0aGUgY2xlYW5lc3Qgd2F5IEkgY2FuIGltYWdpbmUtLT5cbiAgICAgIDwhLS1URVhULS0+XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAndGV4dCcpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cInRleHRcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiIFwiIFt2YWx1ZV09XCJtb2RlbD8uW2NvbnRyb2wubmFtZV0gfHwgY29udHJvbC52YWx1ZSB8fCAnJ1wiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBweS0yLjUgcHgtMCB3LWZ1bGwgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICA8IS0tUEFTU1dPUkQtLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdwYXNzd29yZCcpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cInBhc3N3b3JkXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIiBcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMi41IHB4LTAgdy1mdWxsIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgfVxuICAgICAgPCEtLVRFWFQgQVJFQS0tPlxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ3RleHRBcmVhJykge1xuICAgICAgPHRleHRhcmVhICN0ZXh0QXJlYSBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIlxuICAgICAgICAoaW5wdXQpPVwicmVzaXplKHRleHRBcmVhKVwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgY2xhc3M9XCJuby1zY3JvbGxiYXIgaW5wdXQgIXJlc2l6ZS1ub25lIGhlaWdodC1ub3JtYWxpemVkIGJsb2NrIHB5LTIgcHgtMCB3LWZ1bGwgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiPjwvdGV4dGFyZWE+XG4gICAgICB9XG4gICAgICA8IS0tTlVNQkVSLS0+XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAnbnVtYmVyJykge1xuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICB0eXBlPVwibnVtYmVyXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgcGxhY2Vob2xkZXI9XCIgXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMi41IHB4LTAgdy1mdWxsIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgfVxuICAgICAgPCEtLURBVEUtLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdkYXRlJykge1xuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICB0eXBlPVwiZGF0ZVwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCIgXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTIgcHgtMCB3LWZ1bGwgaGVpZ2h0LW5vcm1hbGl6ZWQgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAnZGF0ZXRpbWUnKSB7XG4gICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgIHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCIgXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTIgcHgtMCB3LWZ1bGwgaGVpZ2h0LW5vcm1hbGl6ZWQgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICA8IS0tQ09MT1ItLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdjb2xvcicpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cImNvbG9yXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIiBcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiIHN0eWxlPVwiaGVpZ2h0OiA0MnB4O1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMS41IG0tMCBweC0wIHctZnVsbCBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgIH1cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICd0b2dnbGUnKXtcbiAgICAgIDxpbnB1dCAjdG9nZ2xlIHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiaGlkZGVuIGNoZWNrYm94XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIiAvPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInJlbGF0aXZlIHRvZ2dsZS13cmFwcGVyIGJsb2NrIGlucHV0IGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLWdyYXktMzAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCI+XG4gICAgICAgIDxkaXYgKGNsaWNrKT1cInRvZ2dsZT8uY2xpY2soKVwiIGNsYXNzPVwicmVsYXRpdmUgYmxvY2sgaW5wdXQgdG9nZ2xlXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSAhPSAnc2VhcmNoU2VsZWN0Jykge1xuICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgYWJzb2x1dGUgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiIFtmb3JdPVwiY29udHJvbC5uYW1lXCI+e3tcbiAgICAgICAgY29udHJvbC5sYWJlbFxuICAgICAgICB9fVxuICAgICAgICBAaWYoY29udHJvbC5sYWJlbCAmJiBjb250cm9sLmxhYmVsICE9ICcnICYmIGNvbnRyb2wubGFiZWwgIT0gJyAnKXtcbiAgICAgICAgQGlmIChpc0NvbnRyb2xSZXF1aXJlZChjb250cm9sKSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgICAgOlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgY29udHJvbC52YWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbikge1xuICAgICAgICBAaWYgKFxuICAgICAgICBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiZcbiAgICAgICAgZm9ybS5oYXNFcnJvcih2YWxpZGF0aW9uLnJ1bGUudG9Mb3dlckNhc2UoKSwgY29udHJvbC5uYW1lKVxuICAgICAgICApIHtcbiAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cInRleHQtcmVkLTUwMCBkYXJrOnRleHQtcmVkLTgwMFwiPnt7IHZhbGlkYXRpb24uZGlzcGxheSB9fTwvbWF0LWVycm9yPlxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvbGFiZWw+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbnRyb2wuaWNvbiAmJiAhZGlzYWJsZWQpIHtcbiAgICAgIDxzcGFuXG4gICAgICAgIFtuZ0NsYXNzXT1cImNvbnRyb2wuaWNvbkNhbGxiYWNrRGlzYWJsZWQgPyAndGV4dC1ncmF5LTQwMCBkYXJrOnRleHQtZ3JheS01MDAnOid0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSdcIlxuICAgICAgICBjbGFzcz1cImFic29sdXRlIHAtMi41IGJvdHRvbS0wIHJpZ2h0LTBcIiBbbWF0VG9vbHRpcF09XCJjb250cm9sLmljb25Ub29sdGlwIHx8ICcnXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxuICAgICAgICAoY2xpY2spPVwiIWNvbnRyb2wuaWNvbkNhbGxiYWNrRGlzYWJsZWQgJiYgY29udHJvbC5pY29uQ2FsbGJhY2s/Lihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnZhbHVlKVwiPjxtYXQtaWNvblxuICAgICAgICAgIGNsYXNzPVwiZmxleCBpbnB1dCBqdXN0aWZ5LWNlbnRlciBhbGlnbi1taWRkbGUgaXRlbXMtY2VudGVyIGNvbnRlbnQtY2VudGVyIHRleHQtbGdcIj57e2NvbnRyb2wuaWNvbn19PC9tYXQtaWNvbj48L3NwYW4+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmIChjb250cm9sLnNwYW4pIHtcbiAgICA8c3BhblxuICAgICAgW25nQ2xhc3NdPVwiIWZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzIHx8ICFmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgPyAndGV4dC1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS0zMDAnIDogJyF0ZXh0LXJlZC01MDAgZGFyazohdGV4dC1yZWQtODAwJ1wiXG4gICAgICBjbGFzcz1cImgtMCB0ZXh0LXhzXCI+e3sgY29udHJvbC5zcGFuXG4gICAgICB9fTwvc3Bhbj5cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -776,10 +776,12 @@ class ChrFormComponent {
776
776
  * @param dateFormat optional date format for date and datetime inputs
777
777
  */
778
778
  this.setValue = (key, value, dateFormat = null) => {
779
- if (dateFormat == null)
780
- this.form.get(key)?.setValue(value);
781
- else
782
- this.form.get(key)?.setValue(this.datePipe.transform(value, dateFormat));
779
+ const val = dateFormat == null ? value : this.datePipe.transform(value, dateFormat);
780
+ this.form.get(key)?.setValue(val, {
781
+ emitEvent: false,
782
+ emitViewToModelChange: false,
783
+ });
784
+ this.model[key] = val;
783
785
  this.changeDetector.detectChanges();
784
786
  };
785
787
  /**
@@ -838,11 +840,11 @@ class ChrFormComponent {
838
840
  switch (control.type) {
839
841
  case "date":
840
842
  return value
841
- ? this.transformDate(value, "yyyy-MM-dd")
843
+ ? this.transformDate(typeof value == "string" ? new Date(value) : value, "yyyy-MM-dd")
842
844
  : this.transformDate(control.value, "yyyy-MM-dd");
843
845
  case "datetime":
844
846
  return value
845
- ? this.transformDate(value, "yyyy-MM-ddTHH:mm")
847
+ ? this.transformDate(typeof value == "string" ? new Date(value) : value, "yyyy-MM-ddTHH:mm")
846
848
  : this.transformDate(control.value, "yyyy-MM-ddTHH:mm");
847
849
  default:
848
850
  return value || control.value;