imm-element-ui 1.1.6 → 1.1.8

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.
@@ -270,6 +270,15 @@ export class FormComponent {
270
270
  }
271
271
  });
272
272
  }
273
+ /**
274
+ * 触发字段禁用,针对表单字段
275
+ * @param keys 字段key列表
276
+ */
277
+ triggerDisabledEffect(keys) {
278
+ keys?.forEach((key) => {
279
+ this.setFieldDisabled(key);
280
+ });
281
+ }
273
282
  /**
274
283
  * 动态设置字段禁用,禁用前清除字段dirty标记
275
284
  * @param key 字段key
@@ -301,4 +310,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
301
310
  type: HostListener,
302
311
  args: ['window:resize', ['$event']]
303
312
  }] } });
304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL2Zvcm0vZm9ybS9mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvZm9ybS9mb3JtL2Zvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixZQUFZLEVBSVosTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBQ1QsTUFBTSxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBc0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFhLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQWMsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBMEI3RCxNQUFNLE9BQU8s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Q2hDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMvQyxLQUFLLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQ25DLENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7K0dBblVXLGFBQWE7bUdBQWIsYUFBYSxxZkFKZCxDQUFDLFFBQVEsQ0FBQyw4REFLUCxrQkFBa0IsZ0RDcERqQyx3SUFNQSx5RER3Q1csWUFBWSw4QkFBRSxtQkFBbUIsK0JBQUUsa0JBQWtCOzs0RkFLbkQsYUFBYTtrQkFSekIsU0FBUzsrQkFDQyxhQUFhLGNBQ1gsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixDQUFDLGFBQ3JELENBQUMsUUFBUSxDQUFDOzZHQUthLGVBQWU7c0JBQWhELFlBQVk7dUJBQUMsa0JBQWtCO2dCQTRCaEMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0Q29tcG9uZW50LFxyXG5cdGVmZmVjdCxcclxuXHRpbnB1dCxcclxuXHRjb21wdXRlZCxcclxuXHRWaWV3Q2hpbGRyZW4sXHJcblx0UXVlcnlMaXN0LFxyXG5cdEVsZW1lbnRSZWYsXHJcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0aW5qZWN0LFxyXG5cdEhvc3RMaXN0ZW5lcixcclxuXHR1bnRyYWNrZWQsXHJcblx0c2lnbmFsLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRvcnMsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1TdWJtaXR0ZWRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRmllbGRDb250cm9sIH0gZnJvbSAnLi4vZm9ybS1maWVsZC9maWVsZC1jb250cm9sJztcclxuaW1wb3J0IHsgRm9ybUZpZWxkLCBGb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9pMThuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmaWVsZFV0aWxzIH0gZnJvbSAnLi4vZm9ybS1maWVsZC9maWVsZC11dGlscyc7XHJcbmltcG9ydCB7IFVwc2VydCB9IGZyb20gJy4uLy4uL2FtL2FtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGdlbmVyYXRlVW5pcXVlSWQgfSBmcm9tICcuLi8uLi9zaGFyZS91dGlscyc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYWN0aW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1PcHRpb25zIHtcclxuXHRmaWVsZHM/OiBGb3JtRmllbGRbXTtcclxuXHRmb3JtPzogRm9ybUdyb3VwO1xyXG5cdG1haW5GaWVsZD86IHN0cmluZztcclxuXHRsYWJlbFdpZHRoPzogc3RyaW5nO1xyXG5cdGludGVyYWN0aXZlTGFiZWw/OiBib29sZWFuO1xyXG5cdGV4dHJhPzogYW55O1xyXG5cdG1vZGVsTmFtZT86IHN0cmluZztcclxuXHR0eXBlPzogc3RyaW5nO1xyXG5cdGZrPzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZXJuYWxEYXRhIHtcclxuXHRrZXk/OiBzdHJpbmc7XHJcblx0dmFsdWU/OiBhbnk7XHJcblx0bGFiZWw/OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnY3VzdG9tLWZvcm0nLFxyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0aW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybUZpZWxkQ29tcG9uZW50XSxcclxuXHRwcm92aWRlcnM6IFtEYXRlUGlwZV0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL2Zvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsOiAnLi9mb3JtLmNvbXBvbmVudC5zY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1Db21wb25lbnQge1xyXG5cdEBWaWV3Q2hpbGRyZW4oRm9ybUZpZWxkQ29tcG9uZW50KSBmaWVsZENvbXBvbmVudHM/OiBRdWVyeUxpc3Q8Rm9ybUZpZWxkQ29tcG9uZW50PjtcclxuXHRyb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG5cdGlzTmV3OiBib29sZWFuID0gZmFsc2U7XHJcblx0b3B0aW9ucyA9IGlucHV0PEZvcm1PcHRpb25zPih7fSk7XHJcblx0ZmllbGRzID0gY29tcHV0ZWQoKCkgPT4ge1xyXG5cdFx0dW50cmFja2VkKCgpID0+IHtcclxuXHRcdFx0dGhpcy5pbml0Rm9ybSgpO1xyXG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHR0aGlzLnJlQ2FsY0xhYmVsU2l6ZSgpO1xyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucygpLmZpZWxkcztcclxuXHR9KTtcclxuXHJcblx0aTE4blNlcnZpY2UgPSBpbmplY3QoSTE4blNlcnZpY2UpO1xyXG5cdG1vZGVsID0gaW5wdXQ8YW55PigpO1xyXG5cdHVwc2VydCA9IGlucHV0PFVwc2VydD4oKTtcclxuXHRyYXdNb2RlbDogYW55ID0ge307XHJcblx0Y2hhbmdlZE1vZGVsOiBhbnkgPSB7fTtcclxuXHRmaWVsZExpc3QhOiBGb3JtRmllbGRbXTtcclxuXHRob29rT2JzZXJ2ZXJzOiBGdW5jdGlvbltdID0gW107XHJcblx0bGFiZWxNaW5XaWR0aCA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblx0aXNNYWluOiBib29sZWFuID0gdHJ1ZTtcclxuXHRzdWJzZXJ0OiBhbnk7XHJcblx0ZXh0cmE6IGFueSA9IHt9O1xyXG5cclxuXHRhY3Rpb25zID0gaW5qZWN0KEFjdGlvblNlcnZpY2UpO1xyXG5cdEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG5cdG9uUmVzaXplKCkge1xyXG5cdFx0dGhpcy5yZUNhbGNMYWJlbFNpemUoKTtcclxuXHR9XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG5cdFx0cHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsXHJcblx0KSB7XHJcblx0XHR0aGlzLnJvdXRlci51cmwuc3BsaXQoJy8nKS5wb3AoKSA9PSAnbmV3JyAmJiAodGhpcy5pc05ldyA9IHRydWUpO1xyXG5cdFx0ZWZmZWN0KFxyXG5cdFx0XHQoKSA9PiB7XHJcblx0XHRcdFx0aWYgKCF0aGlzLm1vZGVsKCkpIHtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKHRoaXMuaXNOZXcpIHtcclxuXHRcdFx0XHRcdHRoaXMuZmllbGRMaXN0LmZvckVhY2goKGZpZWxkKSA9PiB7XHJcblx0XHRcdFx0XHRcdGlmICghZmllbGQuZGVmYXVsdCkgcmV0dXJuO1xyXG5cdFx0XHRcdFx0XHRpZiAodGhpcy5tb2RlbCgpW2ZpZWxkLmtleSFdICE9PSB1bmRlZmluZWQpIHJldHVybjtcclxuXHRcdFx0XHRcdFx0dW50cmFja2VkKCgpID0+IHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmhhbmRsZVZhbHVlQ2hhbmdlKGZpZWxkLmRlZmF1bHQsIGZpZWxkKTtcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5yYXdNb2RlbCA9IGZpZWxkVXRpbHMucHJlbG9hZExvZyh7IC4uLnRoaXMubW9kZWwoKSB9LCB0aGlzLmZpZWxkTGlzdCwgdGhpcy5kYXRlUGlwZSk7XHJcblx0XHRcdFx0dGhpcy5jaGFuZ2VkTW9kZWwgPSB7fTtcclxuXHRcdFx0XHR1bnRyYWNrZWQoKCkgPT4gdGhpcy50cmlnZ2VySG9vaygpKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxyXG5cdFx0KTtcclxuXHRcdGVmZmVjdChcclxuXHRcdFx0KCkgPT4ge1xyXG5cdFx0XHRcdGxldCBtb2RlbE5hbWUgPSB0aGlzLm9wdGlvbnMoKS5tb2RlbE5hbWUgfHwgJyc7XHJcblx0XHRcdFx0aWYgKG1vZGVsTmFtZSAhPSAnJykge1xyXG5cdFx0XHRcdFx0dGhpcy5pc01haW4gPSAhdGhpcy51cHNlcnQoKT8uc3Vic2VydD8uZmluZCgodjogYW55KSA9PiB2LnN1Yk1vZGVsTmFtZSA9PT0gbW9kZWxOYW1lKTtcclxuXHRcdFx0XHRcdGlmICghdGhpcy5pc01haW4pIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5zdWJzZXJ0ID0ge1xyXG5cdFx0XHRcdFx0XHRcdHN1Yk1vZGVsTmFtZTogbW9kZWxOYW1lLFxyXG5cdFx0XHRcdFx0XHRcdGZrOiB0aGlzLm9wdGlvbnMoKS5mayxcclxuXHRcdFx0XHRcdFx0XHRzdWJEYXRhOiBbXSxcclxuXHRcdFx0XHRcdFx0XHRtYXB0bXA6IG5ldyBNYXAoKSxcclxuXHRcdFx0XHRcdFx0XHRsb2d0bXA6IG5ldyBNYXAoKSxcclxuXHRcdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydD8ucHVzaCh0aGlzLnN1YnNlcnQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHR0aGlzLnJlQ2FsY0xhYmVsU2l6ZSgpO1xyXG5cdFx0fSk7XHJcblx0XHR0aGlzLmkxOG5TZXJ2aWNlLmNoYW5nZS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG5cdFx0XHR0aGlzLnJlQ2FsY0xhYmVsU2l6ZSgpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpIHtcclxuXHRcdHRoaXMuaG9va09ic2VydmVycy5mb3JFYWNoKCh1bnN1YnNjcmliZSkgPT4gdW5zdWJzY3JpYmUoKSk7XHJcblx0fVxyXG5cclxuXHRpbml0Rm9ybSgpIHtcclxuXHRcdGlmICghdGhpcy5vcHRpb25zKCkuZXh0cmEpIHtcclxuXHRcdFx0dGhpcy5vcHRpb25zKCkuZXh0cmEgPSB7fTtcclxuXHRcdH1cclxuXHRcdGlmICghdGhpcy5vcHRpb25zKCkuZm9ybSkge1xyXG5cdFx0XHR0aGlzLm9wdGlvbnMoKS5mb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmZpZWxkTGlzdCA9IFtdO1xyXG5cdFx0Ly9AdHMtaWdub3JlXHJcblx0XHRjb25zdCBpc0kxOG4gPSB3aW5kb3cuYXBwSXNJMThuO1xyXG5cdFx0dGhpcy5wYXJzZUZpZWxkcyh0aGlzLm9wdGlvbnMoKS5maWVsZHMgfHwgW10pO1xyXG5cdFx0dGhpcy5maWVsZExpc3QuZm9yRWFjaCgoZmllbGQsIGluZGV4KSA9PiB7XHJcblx0XHRcdGZpZWxkVXRpbHMuZmllbGRIYW5kbGVyKGZpZWxkKTtcclxuXHRcdFx0ZmllbGQudXVpZCA9IGAke2dlbmVyYXRlVW5pcXVlSWQoKX0ke2luZGV4fWA7XHJcblx0XHRcdGZpZWxkLmxhYmVsTWluV2lkdGggPSB0aGlzLmxhYmVsTWluV2lkdGg7XHJcblx0XHRcdGZpZWxkLmludGVyYWN0aXZlTGFiZWwgPSB0aGlzLm9wdGlvbnMoKS5pbnRlcmFjdGl2ZUxhYmVsID8/IHRydWU7XHJcblx0XHRcdGlmIChpc0kxOG4gJiYgKCFmaWVsZFV0aWxzLnByb3BzKGZpZWxkKS5pMThuS2V5IHx8IGZpZWxkVXRpbHMucHJvcHMoZmllbGQpLmkxOG5LZXkgPT0gJycpKSB7XHJcblx0XHRcdFx0ZmllbGRVdGlscy5wcm9wcyhmaWVsZCkuaTE4bktleSA9IGB0YWJsZXMuJHt0aGlzLm9wdGlvbnMoKS5tb2RlbE5hbWV9LiR7ZmllbGQua2V5fWA7XHJcblx0XHRcdH1cclxuXHRcdFx0ZmllbGQuZm9ybSA9IHRoaXM7XHJcblx0XHRcdGlmIChpc09ic2VydmFibGUoZmllbGQuaG9vaykpIHtcclxuXHRcdFx0XHR0aGlzLnVuaXF1ZUhvb2soZmllbGQsIGZpZWxkLmhvb2spO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuaGFuZGxlRmllbGRDb250cm9sKGZpZWxkKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0Z2V0RmllbGQoa2V5OiBzdHJpbmcpIHtcclxuXHRcdHJldHVybiB0aGlzLmZpZWxkTGlzdC5maW5kKChmaWVsZCkgPT4gZmllbGQua2V5ID09PSBrZXkpO1xyXG5cdH1cclxuXHJcblx0cGFyc2VGaWVsZHMoZmllbGRzOiBGb3JtRmllbGRbXSkge1xyXG5cdFx0ZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcblx0XHRcdGlmIChmaWVsZC5ncm91cCkge1xyXG5cdFx0XHRcdHRoaXMucGFyc2VGaWVsZHMoZmllbGQuZ3JvdXApO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuZmllbGRMaXN0LnB1c2goZmllbGQpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGhhbmRsZUZpZWxkQ29udHJvbChmaWVsZDogRm9ybUZpZWxkKSB7XHJcblx0XHRjb25zdCBmaWVsZENvbnRyb2wgPSBmaWVsZFV0aWxzLnByb3BzKGZpZWxkKT8ucmVxdWlyZWRcclxuXHRcdFx0PyBuZXcgRmllbGRDb250cm9sKG51bGwsIGZpZWxkLnZhbGlkYXRvcnMgPyBmaWVsZC52YWxpZGF0b3JzIDogVmFsaWRhdG9ycy5yZXF1aXJlZClcclxuXHRcdFx0OiBuZXcgRmllbGRDb250cm9sKG51bGwpO1xyXG5cdFx0dGhpcy5vcHRpb25zKCkuZm9ybT8uYWRkQ29udHJvbChmaWVsZC5rZXkgfHwgJycsIGZpZWxkQ29udHJvbCk7XHJcblx0XHRmaWVsZC5maWVsZENvbnRyb2wgPSBmaWVsZENvbnRyb2w7XHJcblx0XHRmaWVsZC5maWVsZENvbnRyb2w/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcblx0XHRcdGNvbnN0IHRhcmdldFZhbHVlID0gZmllbGRVdGlscy5mcm9tRmllbGRWYWx1ZShmaWVsZCwgdmFsdWUsIHRoaXMuZGF0ZVBpcGUpO1xyXG5cdFx0XHRpZiAoZmllbGRVdGlscy5pc0Zha2VkQ2hhbmdlKHRhcmdldFZhbHVlLCB0aGlzLm1vZGVsKClbZmllbGQua2V5IV0sIGZpZWxkKSkge1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoZmllbGRVdGlscy5wcm9wcyhmaWVsZCk/Lm9uTW9kZWxDaGFuZ2UgJiYgdHlwZW9mIGZpZWxkVXRpbHMucHJvcHMoZmllbGQpPy5vbk1vZGVsQ2hhbmdlID09PSAnZnVuY3Rpb24nKSB7XHJcblx0XHRcdFx0ZmllbGRVdGlscy5wcm9wcyhmaWVsZCk/Lm9uTW9kZWxDaGFuZ2UhKGZpZWxkLCB7IHZhbHVlIH0pO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuaGFuZGxlVmFsdWVDaGFuZ2UodGFyZ2V0VmFsdWUsIGZpZWxkKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0aGFuZGxlVmFsdWVDaGFuZ2UodmFsdWU6IGFueSwgZmllbGQ6IEZvcm1GaWVsZCkge1xyXG5cdFx0dGhpcy5tb2RlbCgpW2ZpZWxkLmtleSFdID0gdmFsdWU7XHJcblx0XHR0aGlzLmNoYW5nZWRNb2RlbFtmaWVsZC5rZXkhXSA9IHsgbmFtZTogZmllbGRVdGlscy5sYWJlbChmaWVsZCwgdGhpcy5pMThuU2VydmljZSksIHZhbHVlOiB2YWx1ZSwgdHlwZTogZmllbGQudHlwZSB9O1xyXG5cdFx0aWYgKHRoaXMuaXNNYWluKSB7XHJcblx0XHRcdHRoaXMuaGFuZGxlVXBzZXJ0KGZpZWxkLmtleSEsIHZhbHVlLCB0cnVlKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuaGFuZGxlU3Vic2VydChmaWVsZC5rZXkhLCB2YWx1ZSwgZmllbGQpO1xyXG5cdFx0fVxyXG5cdFx0Y29uc29sZS5sb2coJy0tLS0taGFuZGxlVmFsdWVDaGFuZ2UnLCB0aGlzLnVwc2VydCgpKTtcclxuXHRcdHRoaXMuaGFuZGxlSGlkZUV4cHJlc3Npb24oKTtcclxuXHRcdHRoaXMuYWN0aW9ucy5zYXZlU2lnbmFsLnNldCh0cnVlKTtcclxuXHR9XHJcblxyXG5cdGhhbmRsZVVwc2VydChrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgaXNMb2c/OiBib29sZWFuKSB7XHJcblx0XHRpZiAodGhpcy5pc05ldykge1xyXG5cdFx0XHR0aGlzLnVwc2VydCgpIS5hZGREYXRhIVtrZXldID0gdmFsdWU7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLnVwc2VydCgpIS51cGREYXRhIVtrZXldID0gdmFsdWU7XHJcblx0XHR9XHJcblx0XHRpZiAoIWlzTG9nKSByZXR1cm47XHJcblx0XHR0aGlzLnVwc2VydCgpIS5sb2chLmNvbnRlbnQgPSBmaWVsZFV0aWxzLnRyYW5zTG9nKFxyXG5cdFx0XHR0aGlzLnJhd01vZGVsLFxyXG5cdFx0XHR0aGlzLmNoYW5nZWRNb2RlbCxcclxuXHRcdFx0dGhpcy5tb2RlbCgpW3RoaXMub3B0aW9ucygpLm1haW5GaWVsZCFdLFxyXG5cdFx0XHR0aGlzLmlzTmV3LFxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdGhhbmRsZVN1YnNlcnQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIGZpZWxkOiBGb3JtRmllbGQpIHtcclxuXHRcdGNvbnN0IGNoYW5nZWRNb2RlbCA9IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh0aGlzLmNoYW5nZWRNb2RlbCkubWFwKChba2V5LCB2YWx1ZV0pID0+IFtrZXksICh2YWx1ZSBhcyBhbnkpLnZhbHVlXSkpO1xyXG5cdFx0dGhpcy5zdWJzZXJ0LmxvZ3RtcC5zZXQoMCwgY2hhbmdlZE1vZGVsKTtcclxuXHRcdHRoaXMuc3Vic2VydC5zdWJEYXRhWzBdID0gY2hhbmdlZE1vZGVsO1xyXG5cdFx0dGhpcy5zdWJzZXJ0Lm1hcHRtcC5zZXQoa2V5LCB7XHJcblx0XHRcdGlkOiB0aGlzLm1vZGVsKCk/LmlkID8/IDAsXHJcblx0XHRcdG9sZFZhbHVlOiB0aGlzLnJhd01vZGVsW2tleV0sXHJcblx0XHRcdG5ld1ZhbHVlOiB2YWx1ZSxcclxuXHRcdFx0bGFiZWw6IGZpZWxkVXRpbHMubGFiZWwoZmllbGQsIHRoaXMuaTE4blNlcnZpY2UpLFxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRoYW5kbGVIaWRlRXhwcmVzc2lvbigpIHtcclxuXHRcdHRoaXMuZmllbGRMaXN0LmZvckVhY2goKGZpZWxkKSA9PiB7XHJcblx0XHRcdGlmIChmaWVsZC5oaWRlRXhwcmVzc2lvbikge1xyXG5cdFx0XHRcdGZpZWxkLmhpZGUgPSBmaWVsZC5oaWRlRXhwcmVzc2lvbih0aGlzLm1vZGVsKCksIGZpZWxkKTtcclxuXHRcdFx0XHRpZiAoZmllbGQuaGlkZSkge1xyXG5cdFx0XHRcdFx0ZmllbGQuZmllbGRDb250cm9sPy5jbGVhclZhbGlkYXRvcnMoKTtcclxuXHRcdFx0XHRcdGZpZWxkLmZpZWxkQ29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGZpZWxkLmZpZWxkQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhcclxuXHRcdFx0XHRcdFx0ZmllbGRVdGlscy5wcm9wcyhmaWVsZCk/LnJlcXVpcmVkID8gKGZpZWxkLnZhbGlkYXRvcnMgPyBmaWVsZC52YWxpZGF0b3JzIDogVmFsaWRhdG9ycy5yZXF1aXJlZCkgOiB1bmRlZmluZWQsXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHR2YWxpZGF0ZSgpIHtcclxuXHRcdGZvciAobGV0IGtleSBpbiB0aGlzLm9wdGlvbnMoKS5mb3JtPy5jb250cm9scykge1xyXG5cdFx0XHQhdGhpcy5vcHRpb25zKCkuZm9ybT8uY29udHJvbHNba2V5XVsnZGlzYWJsZWQnXSAmJiB0aGlzLm9wdGlvbnMoKS5mb3JtPy5jb250cm9sc1trZXldLm1hcmtBc0RpcnR5KCk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gdGhpcy5vcHRpb25zKCkuZm9ybT8uZGlzYWJsZWQgPyB0cnVlIDogdGhpcy5vcHRpb25zKCkuZm9ybT8udmFsaWQ7XHJcblx0fVxyXG5cclxuXHR1bmlxdWVIb29rKGZpZWxkOiBGb3JtRmllbGQsIGhvb2s6IE9ic2VydmFibGU8KGZpZWxkPzogRm9ybUZpZWxkKSA9PiB2b2lkPikge1xyXG5cdFx0ZmllbGQuaG9vayA9IGhvb2sucGlwZShzaGFyZVJlcGxheSgxKSk7XHJcblx0fVxyXG5cclxuXHR0cmlnZ2VySG9vaygpIHtcclxuXHRcdHRoaXMuZmllbGRMaXN0LmZvckVhY2goKGZpZWxkKSA9PiB7XHJcblx0XHRcdGZpZWxkVXRpbHMudHJpZ2dlckhvb2tBbmRTZXRWYWx1ZShcclxuXHRcdFx0XHRmaWVsZCxcclxuXHRcdFx0XHR0aGlzLm1vZGVsKCk/LltmaWVsZC5rZXkhXSxcclxuXHRcdFx0XHRmYWxzZSxcclxuXHRcdFx0XHR0cnVlLFxyXG5cdFx0XHRcdHRoaXMuaG9va09ic2VydmVycyxcclxuXHRcdFx0XHQoKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLmhhbmRsZUhpZGVFeHByZXNzaW9uKCk7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHR0aGlzLmRhdGVQaXBlLFxyXG5cdFx0XHQpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRyZUNhbGNMYWJlbFNpemUoKSB7XHJcblx0XHRpZiAodGhpcy5vcHRpb25zKCkubGFiZWxXaWR0aCkge1xyXG5cdFx0XHR0aGlzLmxhYmVsTWluV2lkdGguc2V0KHRoaXMub3B0aW9ucygpLmxhYmVsV2lkdGgpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLmxhYmVsTWluV2lkdGguc2V0KHVuZGVmaW5lZCk7XHJcblx0XHR0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHR0aGlzLmhhbmRsZUZpZWxkTGFiZWxzKCk7XHJcblx0XHR0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0fVxyXG5cclxuXHRoYW5kbGVGaWVsZExhYmVscygpIHtcclxuXHRcdGNvbnN0IGZpZWxkTGFiZWxzOiBFbGVtZW50UmVmW10gPSBbXTtcclxuXHRcdHRoaXMuZ2V0RmllbGRMYWJlbHModGhpcy5maWVsZENvbXBvbmVudHMsIGZpZWxkTGFiZWxzKTtcclxuXHRcdGNvbnN0IG9mZnNldFdpZHRocyA9IGZpZWxkTGFiZWxzLm1hcCgoZmllbGRMYWJlbCkgPT4gZmllbGRMYWJlbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKTtcclxuXHRcdHRoaXMubGFiZWxNaW5XaWR0aC5zZXQoTWF0aC5tYXgoLi4ub2Zmc2V0V2lkdGhzKSArIDI0ICsgJ3B4Jyk7XHJcblx0fVxyXG5cclxuXHRnZXRGaWVsZExhYmVscyhmaWVsZENvbXBvbmVudHM6IFF1ZXJ5TGlzdDxGb3JtRmllbGRDb21wb25lbnQ+IHwgdW5kZWZpbmVkLCBmaWVsZExhYmVsczogRWxlbWVudFJlZltdKSB7XHJcblx0XHRpZiAoIWZpZWxkQ29tcG9uZW50cykge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRmaWVsZENvbXBvbmVudHM/LmZvckVhY2goKGNvbXBvbmVudCkgPT4ge1xyXG5cdFx0XHRjb25zdCBmaWVsZExhYmVsID0gY29tcG9uZW50LmdldEZpZWxkTGFiZWwoKTtcclxuXHRcdFx0aWYgKGZpZWxkTGFiZWwpIHtcclxuXHRcdFx0XHRmaWVsZExhYmVscy5wdXNoKGZpZWxkTGFiZWwpO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuZ2V0RmllbGRMYWJlbHMoY29tcG9uZW50LmdldEZpZWxkQ29tcG9uZW50cygpLCBmaWVsZExhYmVscyk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIOinpuWPkeaooeWei+WPmOWKqO+8jOmSiOWvueihqOWNleWtl+auteaVsOaNrlxyXG5cdCAqIEBwYXJhbSBtb2RlbCDpnIDopoHlj5jliqjnmoTmlbDmja5cclxuXHQgKiBAcGFyYW0gZW1pdEV2ZW50IOaYr+WQpuinpuWPkeS6i+S7tlxyXG5cdCAqIEBwYXJhbSBkZXRlY3RNb2RlbENoYW5nZSDmmK/lkKbop6blj5FkZXRlY3RNb2RlbENoYW5nZVxyXG5cdCAqL1xyXG5cdHRyaWdnZXJNb2RlbEVmZmVjdChtb2RlbDogYW55LCBlbWl0RXZlbnQ/OiBib29sZWFuLCBlbWl0SG9vaz86IGJvb2xlYW4pIHtcclxuXHRcdE9iamVjdC5rZXlzKG1vZGVsKS5mb3JFYWNoKChrZXkpID0+IHtcclxuXHRcdFx0Y29uc3QgZmllbGQgPSB0aGlzLmdldEZpZWxkKGtleSkhO1xyXG5cdFx0XHRpZiAoIWZpZWxkKSByZXR1cm47XHJcblx0XHRcdGZpZWxkVXRpbHMudHJpZ2dlckhvb2tBbmRTZXRWYWx1ZShcclxuXHRcdFx0XHRmaWVsZCxcclxuXHRcdFx0XHRtb2RlbFtrZXldLFxyXG5cdFx0XHRcdGVtaXRFdmVudCA/PyB0cnVlLFxyXG5cdFx0XHRcdGVtaXRIb29rID8/IHRydWUsXHJcblx0XHRcdFx0dGhpcy5ob29rT2JzZXJ2ZXJzLFxyXG5cdFx0XHRcdCgpID0+IHtcclxuXHRcdFx0XHRcdHRoaXMuaGFuZGxlSGlkZUV4cHJlc3Npb24oKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdHRoaXMuZGF0ZVBpcGUsXHJcblx0XHRcdCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIOinpuWPkeaVsOaNruWPmOWKqO+8jOmSiOWvuemdnuihqOWNleWtl+auteaVsOaNrlxyXG5cdCAqIEBwYXJhbSBkYXRhTGlzdCDlpJbpg6jmlbDmja7liJfooahcclxuXHQgKi9cclxuXHR0cmlnZ2VyRGF0YUVmZmVjdChkYXRhTGlzdDogRXh0ZXJuYWxEYXRhW10pIHtcclxuXHRcdGRhdGFMaXN0LmZvckVhY2goKGRhdGEpID0+IHtcclxuXHRcdFx0dGhpcy5tb2RlbCgpW2RhdGEua2V5IV0gPSBkYXRhLnZhbHVlO1xyXG5cdFx0XHRpZiAoZGF0YS5sYWJlbCkge1xyXG5cdFx0XHRcdHRoaXMuY2hhbmdlZE1vZGVsW2RhdGEua2V5IV0gPSB7IG5hbWU6IGRhdGEubGFiZWwsIHZhbHVlOiBkYXRhLnZhbHVlLCB0eXBlOiAnaW5wdXR0ZXh0JyB9O1xyXG5cdFx0XHRcdHRoaXMuaGFuZGxlVXBzZXJ0KGRhdGEua2V5ISwgZGF0YS52YWx1ZSwgdHJ1ZSk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5oYW5kbGVVcHNlcnQoZGF0YS5rZXkhLCBkYXRhLnZhbHVlKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiDliqjmgIHorr7nva7lrZfmrrXnpoHnlKjvvIznpoHnlKjliY3muIXpmaTlrZfmrrVkaXJ0eeagh+iusFxyXG5cdCAqIEBwYXJhbSBrZXkg5a2X5q61a2V5XHJcblx0ICovXHJcblx0c2V0RmllbGREaXNhYmxlZChrZXk6IHN0cmluZykge1xyXG5cdFx0dGhpcy5nZXRGaWVsZChrZXkpPy5maWVsZENvbnRyb2w/Lm1hcmtBc1ByaXN0aW5lKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuXHRcdHRoaXMuZ2V0RmllbGQoa2V5KT8uZmllbGRDb250cm9sPy5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIOihqOWNleaPkOS6pOWQjueahOaUtuWwvuWkhOeQhu+8jOS4gOiIrOWcqOaPkOS6pOaOpeWPo+eahOWbnuiwg+WHveaVsOaJp+ihjFxyXG5cdCAqL1xyXG5cdGZpbmFsaXplKCkge1xyXG5cdFx0dGhpcy5maWVsZExpc3QuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuXHRcdFx0aWYgKFsnaW1hZ2UnLCAndXBsb2FkJ10uaW5jbHVkZXMoZmllbGQudHlwZSEpKSB7XHJcblx0XHRcdFx0ZmllbGQuZmllbGRDb250cm9sPy5hZnRlclN1Ym1pdCgpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcbn1cclxuIiwiQGZvciAoZmllbGQgb2YgZmllbGRzKCk7IHRyYWNrIGZpZWxkKSB7XHJcblx0PGZvcm0tZmllbGRcclxuXHRcdGNsYXNzPVwidy1mdWxsXCJcclxuXHRcdFtmaWVsZF09XCJmaWVsZFwiPlxyXG5cdDwvZm9ybS1maWVsZD5cclxufVxyXG4iXX0=
313
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL2Zvcm0vZm9ybS9mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvZm9ybS9mb3JtL2Zvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixZQUFZLEVBSVosTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBQ1QsTUFBTSxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBc0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFhLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQWMsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBMEI3RCxNQUFNLE9BQU8s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Q0FBQyxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNoQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSyxDQUFDLEVBQUUsQ0FBQztnQkFDL0MsS0FBSyxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUNuQyxDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOytHQTdVVyxhQUFhO21HQUFiLGFBQWEscWZBSmQsQ0FBQyxRQUFRLENBQUMsOERBS1Asa0JBQWtCLGdEQ3BEakMsd0lBTUEseUREd0NXLFlBQVksOEJBQUUsbUJBQW1CLCtCQUFFLGtCQUFrQjs7NEZBS25ELGFBQWE7a0JBUnpCLFNBQVM7K0JBQ0MsYUFBYSxjQUNYLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsQ0FBQyxhQUNyRCxDQUFDLFFBQVEsQ0FBQzs2R0FLYSxlQUFlO3NCQUFoRCxZQUFZO3VCQUFDLGtCQUFrQjtnQkE0QmhDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG5cdENvbXBvbmVudCxcclxuXHRlZmZlY3QsXHJcblx0aW5wdXQsXHJcblx0Y29tcHV0ZWQsXHJcblx0Vmlld0NoaWxkcmVuLFxyXG5cdFF1ZXJ5TGlzdCxcclxuXHRFbGVtZW50UmVmLFxyXG5cdENoYW5nZURldGVjdG9yUmVmLFxyXG5cdGluamVjdCxcclxuXHRIb3N0TGlzdGVuZXIsXHJcblx0dW50cmFja2VkLFxyXG5cdHNpZ25hbCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3JtU3VibWl0dGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZpZWxkQ29udHJvbCB9IGZyb20gJy4uL2Zvcm0tZmllbGQvZmllbGQtY29udHJvbCc7XHJcbmltcG9ydCB7IEZvcm1GaWVsZCwgRm9ybUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS1maWVsZC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvaTE4bi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZmllbGRVdGlscyB9IGZyb20gJy4uL2Zvcm0tZmllbGQvZmllbGQtdXRpbHMnO1xyXG5pbXBvcnQgeyBVcHNlcnQgfSBmcm9tICcuLi8uLi9hbS9hbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBnZW5lcmF0ZVVuaXF1ZUlkIH0gZnJvbSAnLi4vLi4vc2hhcmUvdXRpbHMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBpc09ic2VydmFibGUsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2FjdGlvbi5zZXJ2aWNlJztcclxuZXhwb3J0IGludGVyZmFjZSBGb3JtT3B0aW9ucyB7XHJcblx0ZmllbGRzPzogRm9ybUZpZWxkW107XHJcblx0Zm9ybT86IEZvcm1Hcm91cDtcclxuXHRtYWluRmllbGQ/OiBzdHJpbmc7XHJcblx0bGFiZWxXaWR0aD86IHN0cmluZztcclxuXHRpbnRlcmFjdGl2ZUxhYmVsPzogYm9vbGVhbjtcclxuXHRleHRyYT86IGFueTtcclxuXHRtb2RlbE5hbWU/OiBzdHJpbmc7XHJcblx0dHlwZT86IHN0cmluZztcclxuXHRmaz86IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVybmFsRGF0YSB7XHJcblx0a2V5Pzogc3RyaW5nO1xyXG5cdHZhbHVlPzogYW55O1xyXG5cdGxhYmVsPzogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2N1c3RvbS1mb3JtJyxcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1GaWVsZENvbXBvbmVudF0sXHJcblx0cHJvdmlkZXJzOiBbRGF0ZVBpcGVdLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybDogJy4vZm9ybS5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtQ29tcG9uZW50IHtcclxuXHRAVmlld0NoaWxkcmVuKEZvcm1GaWVsZENvbXBvbmVudCkgZmllbGRDb21wb25lbnRzPzogUXVlcnlMaXN0PEZvcm1GaWVsZENvbXBvbmVudD47XHJcblx0cm91dGVyOiBSb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuXHRpc05ldzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdG9wdGlvbnMgPSBpbnB1dDxGb3JtT3B0aW9ucz4oe30pO1xyXG5cdGZpZWxkcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuXHRcdHVudHJhY2tlZCgoKSA9PiB7XHJcblx0XHRcdHRoaXMuaW5pdEZvcm0oKTtcclxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5yZUNhbGNMYWJlbFNpemUoKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHRcdHJldHVybiB0aGlzLm9wdGlvbnMoKS5maWVsZHM7XHJcblx0fSk7XHJcblxyXG5cdGkxOG5TZXJ2aWNlID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcclxuXHRtb2RlbCA9IGlucHV0PGFueT4oKTtcclxuXHR1cHNlcnQgPSBpbnB1dDxVcHNlcnQ+KCk7XHJcblx0cmF3TW9kZWw6IGFueSA9IHt9O1xyXG5cdGNoYW5nZWRNb2RlbDogYW55ID0ge307XHJcblx0ZmllbGRMaXN0ITogRm9ybUZpZWxkW107XHJcblx0aG9va09ic2VydmVyczogRnVuY3Rpb25bXSA9IFtdO1xyXG5cdGxhYmVsTWluV2lkdGggPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG5cdGlzTWFpbjogYm9vbGVhbiA9IHRydWU7XHJcblx0c3Vic2VydDogYW55O1xyXG5cdGV4dHJhOiBhbnkgPSB7fTtcclxuXHJcblx0YWN0aW9ucyA9IGluamVjdChBY3Rpb25TZXJ2aWNlKTtcclxuXHRASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuXHRvblJlc2l6ZSgpIHtcclxuXHRcdHRoaXMucmVDYWxjTGFiZWxTaXplKCk7XHJcblx0fVxyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuXHRcdHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlLFxyXG5cdCkge1xyXG5cdFx0dGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJykucG9wKCkgPT0gJ25ldycgJiYgKHRoaXMuaXNOZXcgPSB0cnVlKTtcclxuXHRcdGVmZmVjdChcclxuXHRcdFx0KCkgPT4ge1xyXG5cdFx0XHRcdGlmICghdGhpcy5tb2RlbCgpKSB7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmICh0aGlzLmlzTmV3KSB7XHJcblx0XHRcdFx0XHR0aGlzLmZpZWxkTGlzdC5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRpZiAoIWZpZWxkLmRlZmF1bHQpIHJldHVybjtcclxuXHRcdFx0XHRcdFx0aWYgKHRoaXMubW9kZWwoKVtmaWVsZC5rZXkhXSAhPT0gdW5kZWZpbmVkKSByZXR1cm47XHJcblx0XHRcdFx0XHRcdHVudHJhY2tlZCgoKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5oYW5kbGVWYWx1ZUNoYW5nZShmaWVsZC5kZWZhdWx0LCBmaWVsZCk7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMucmF3TW9kZWwgPSBmaWVsZFV0aWxzLnByZWxvYWRMb2coeyAuLi50aGlzLm1vZGVsKCkgfSwgdGhpcy5maWVsZExpc3QsIHRoaXMuZGF0ZVBpcGUpO1xyXG5cdFx0XHRcdHRoaXMuY2hhbmdlZE1vZGVsID0ge307XHJcblx0XHRcdFx0dW50cmFja2VkKCgpID0+IHRoaXMudHJpZ2dlckhvb2soKSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcclxuXHRcdCk7XHJcblx0XHRlZmZlY3QoXHJcblx0XHRcdCgpID0+IHtcclxuXHRcdFx0XHRsZXQgbW9kZWxOYW1lID0gdGhpcy5vcHRpb25zKCkubW9kZWxOYW1lIHx8ICcnO1xyXG5cdFx0XHRcdGlmIChtb2RlbE5hbWUgIT0gJycpIHtcclxuXHRcdFx0XHRcdHRoaXMuaXNNYWluID0gIXRoaXMudXBzZXJ0KCk/LnN1YnNlcnQ/LmZpbmQoKHY6IGFueSkgPT4gdi5zdWJNb2RlbE5hbWUgPT09IG1vZGVsTmFtZSk7XHJcblx0XHRcdFx0XHRpZiAoIXRoaXMuaXNNYWluKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc3Vic2VydCA9IHtcclxuXHRcdFx0XHRcdFx0XHRzdWJNb2RlbE5hbWU6IG1vZGVsTmFtZSxcclxuXHRcdFx0XHRcdFx0XHRmazogdGhpcy5vcHRpb25zKCkuZmssXHJcblx0XHRcdFx0XHRcdFx0c3ViRGF0YTogW10sXHJcblx0XHRcdFx0XHRcdFx0bWFwdG1wOiBuZXcgTWFwKCksXHJcblx0XHRcdFx0XHRcdFx0bG9ndG1wOiBuZXcgTWFwKCksXHJcblx0XHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnQ/LnB1c2godGhpcy5zdWJzZXJ0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0dGhpcy5yZUNhbGNMYWJlbFNpemUoKTtcclxuXHRcdH0pO1xyXG5cdFx0dGhpcy5pMThuU2VydmljZS5jaGFuZ2Uuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuXHRcdFx0dGhpcy5yZUNhbGNMYWJlbFNpemUoKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLmhvb2tPYnNlcnZlcnMuZm9yRWFjaCgodW5zdWJzY3JpYmUpID0+IHVuc3Vic2NyaWJlKCkpO1xyXG5cdH1cclxuXHJcblx0aW5pdEZvcm0oKSB7XHJcblx0XHRpZiAoIXRoaXMub3B0aW9ucygpLmV4dHJhKSB7XHJcblx0XHRcdHRoaXMub3B0aW9ucygpLmV4dHJhID0ge307XHJcblx0XHR9XHJcblx0XHRpZiAoIXRoaXMub3B0aW9ucygpLmZvcm0pIHtcclxuXHRcdFx0dGhpcy5vcHRpb25zKCkuZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5maWVsZExpc3QgPSBbXTtcclxuXHRcdC8vQHRzLWlnbm9yZVxyXG5cdFx0Y29uc3QgaXNJMThuID0gd2luZG93LmFwcElzSTE4bjtcclxuXHRcdHRoaXMucGFyc2VGaWVsZHModGhpcy5vcHRpb25zKCkuZmllbGRzIHx8IFtdKTtcclxuXHRcdHRoaXMuZmllbGRMaXN0LmZvckVhY2goKGZpZWxkLCBpbmRleCkgPT4ge1xyXG5cdFx0XHRmaWVsZFV0aWxzLmZpZWxkSGFuZGxlcihmaWVsZCk7XHJcblx0XHRcdGZpZWxkLnV1aWQgPSBgJHtnZW5lcmF0ZVVuaXF1ZUlkKCl9JHtpbmRleH1gO1xyXG5cdFx0XHRmaWVsZC5sYWJlbE1pbldpZHRoID0gdGhpcy5sYWJlbE1pbldpZHRoO1xyXG5cdFx0XHRmaWVsZC5pbnRlcmFjdGl2ZUxhYmVsID0gdGhpcy5vcHRpb25zKCkuaW50ZXJhY3RpdmVMYWJlbCA/PyB0cnVlO1xyXG5cdFx0XHRpZiAoaXNJMThuICYmICghZmllbGRVdGlscy5wcm9wcyhmaWVsZCkuaTE4bktleSB8fCBmaWVsZFV0aWxzLnByb3BzKGZpZWxkKS5pMThuS2V5ID09ICcnKSkge1xyXG5cdFx0XHRcdGZpZWxkVXRpbHMucHJvcHMoZmllbGQpLmkxOG5LZXkgPSBgdGFibGVzLiR7dGhpcy5vcHRpb25zKCkubW9kZWxOYW1lfS4ke2ZpZWxkLmtleX1gO1xyXG5cdFx0XHR9XHJcblx0XHRcdGZpZWxkLmZvcm0gPSB0aGlzO1xyXG5cdFx0XHRpZiAoaXNPYnNlcnZhYmxlKGZpZWxkLmhvb2spKSB7XHJcblx0XHRcdFx0dGhpcy51bmlxdWVIb29rKGZpZWxkLCBmaWVsZC5ob29rKTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLmhhbmRsZUZpZWxkQ29udHJvbChmaWVsZCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGdldEZpZWxkKGtleTogc3RyaW5nKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5maWVsZExpc3QuZmluZCgoZmllbGQpID0+IGZpZWxkLmtleSA9PT0ga2V5KTtcclxuXHR9XHJcblxyXG5cdHBhcnNlRmllbGRzKGZpZWxkczogRm9ybUZpZWxkW10pIHtcclxuXHRcdGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG5cdFx0XHRpZiAoZmllbGQuZ3JvdXApIHtcclxuXHRcdFx0XHR0aGlzLnBhcnNlRmllbGRzKGZpZWxkLmdyb3VwKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLmZpZWxkTGlzdC5wdXNoKGZpZWxkKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRoYW5kbGVGaWVsZENvbnRyb2woZmllbGQ6IEZvcm1GaWVsZCkge1xyXG5cdFx0Y29uc3QgZmllbGRDb250cm9sID0gZmllbGRVdGlscy5wcm9wcyhmaWVsZCk/LnJlcXVpcmVkXHJcblx0XHRcdD8gbmV3IEZpZWxkQ29udHJvbChudWxsLCBmaWVsZC52YWxpZGF0b3JzID8gZmllbGQudmFsaWRhdG9ycyA6IFZhbGlkYXRvcnMucmVxdWlyZWQpXHJcblx0XHRcdDogbmV3IEZpZWxkQ29udHJvbChudWxsKTtcclxuXHRcdHRoaXMub3B0aW9ucygpLmZvcm0/LmFkZENvbnRyb2woZmllbGQua2V5IHx8ICcnLCBmaWVsZENvbnRyb2wpO1xyXG5cdFx0ZmllbGQuZmllbGRDb250cm9sID0gZmllbGRDb250cm9sO1xyXG5cdFx0ZmllbGQuZmllbGRDb250cm9sPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG5cdFx0XHRjb25zdCB0YXJnZXRWYWx1ZSA9IGZpZWxkVXRpbHMuZnJvbUZpZWxkVmFsdWUoZmllbGQsIHZhbHVlLCB0aGlzLmRhdGVQaXBlKTtcclxuXHRcdFx0aWYgKGZpZWxkVXRpbHMuaXNGYWtlZENoYW5nZSh0YXJnZXRWYWx1ZSwgdGhpcy5tb2RlbCgpW2ZpZWxkLmtleSFdLCBmaWVsZCkpIHtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKGZpZWxkVXRpbHMucHJvcHMoZmllbGQpPy5vbk1vZGVsQ2hhbmdlICYmIHR5cGVvZiBmaWVsZFV0aWxzLnByb3BzKGZpZWxkKT8ub25Nb2RlbENoYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG5cdFx0XHRcdGZpZWxkVXRpbHMucHJvcHMoZmllbGQpPy5vbk1vZGVsQ2hhbmdlIShmaWVsZCwgeyB2YWx1ZSB9KTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLmhhbmRsZVZhbHVlQ2hhbmdlKHRhcmdldFZhbHVlLCBmaWVsZCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGhhbmRsZVZhbHVlQ2hhbmdlKHZhbHVlOiBhbnksIGZpZWxkOiBGb3JtRmllbGQpIHtcclxuXHRcdHRoaXMubW9kZWwoKVtmaWVsZC5rZXkhXSA9IHZhbHVlO1xyXG5cdFx0dGhpcy5jaGFuZ2VkTW9kZWxbZmllbGQua2V5IV0gPSB7IG5hbWU6IGZpZWxkVXRpbHMubGFiZWwoZmllbGQsIHRoaXMuaTE4blNlcnZpY2UpLCB2YWx1ZTogdmFsdWUsIHR5cGU6IGZpZWxkLnR5cGUgfTtcclxuXHRcdGlmICh0aGlzLmlzTWFpbikge1xyXG5cdFx0XHR0aGlzLmhhbmRsZVVwc2VydChmaWVsZC5rZXkhLCB2YWx1ZSwgdHJ1ZSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLmhhbmRsZVN1YnNlcnQoZmllbGQua2V5ISwgdmFsdWUsIGZpZWxkKTtcclxuXHRcdH1cclxuXHRcdGNvbnNvbGUubG9nKCctLS0tLWhhbmRsZVZhbHVlQ2hhbmdlJywgdGhpcy51cHNlcnQoKSk7XHJcblx0XHR0aGlzLmhhbmRsZUhpZGVFeHByZXNzaW9uKCk7XHJcblx0XHR0aGlzLmFjdGlvbnMuc2F2ZVNpZ25hbC5zZXQodHJ1ZSk7XHJcblx0fVxyXG5cclxuXHRoYW5kbGVVcHNlcnQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIGlzTG9nPzogYm9vbGVhbikge1xyXG5cdFx0aWYgKHRoaXMuaXNOZXcpIHtcclxuXHRcdFx0dGhpcy51cHNlcnQoKSEuYWRkRGF0YSFba2V5XSA9IHZhbHVlO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy51cHNlcnQoKSEudXBkRGF0YSFba2V5XSA9IHZhbHVlO1xyXG5cdFx0fVxyXG5cdFx0aWYgKCFpc0xvZykgcmV0dXJuO1xyXG5cdFx0dGhpcy51cHNlcnQoKSEubG9nIS5jb250ZW50ID0gZmllbGRVdGlscy50cmFuc0xvZyhcclxuXHRcdFx0dGhpcy5yYXdNb2RlbCxcclxuXHRcdFx0dGhpcy5jaGFuZ2VkTW9kZWwsXHJcblx0XHRcdHRoaXMubW9kZWwoKVt0aGlzLm9wdGlvbnMoKS5tYWluRmllbGQhXSxcclxuXHRcdFx0dGhpcy5pc05ldyxcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRoYW5kbGVTdWJzZXJ0KGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCBmaWVsZDogRm9ybUZpZWxkKSB7XHJcblx0XHRjb25zdCBjaGFuZ2VkTW9kZWwgPSBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModGhpcy5jaGFuZ2VkTW9kZWwpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBba2V5LCAodmFsdWUgYXMgYW55KS52YWx1ZV0pKTtcclxuXHRcdHRoaXMuc3Vic2VydC5sb2d0bXAuc2V0KDAsIGNoYW5nZWRNb2RlbCk7XHJcblx0XHR0aGlzLnN1YnNlcnQuc3ViRGF0YVswXSA9IGNoYW5nZWRNb2RlbDtcclxuXHRcdHRoaXMuc3Vic2VydC5tYXB0bXAuc2V0KGtleSwge1xyXG5cdFx0XHRpZDogdGhpcy5tb2RlbCgpPy5pZCA/PyAwLFxyXG5cdFx0XHRvbGRWYWx1ZTogdGhpcy5yYXdNb2RlbFtrZXldLFxyXG5cdFx0XHRuZXdWYWx1ZTogdmFsdWUsXHJcblx0XHRcdGxhYmVsOiBmaWVsZFV0aWxzLmxhYmVsKGZpZWxkLCB0aGlzLmkxOG5TZXJ2aWNlKSxcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0aGFuZGxlSGlkZUV4cHJlc3Npb24oKSB7XHJcblx0XHR0aGlzLmZpZWxkTGlzdC5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG5cdFx0XHRpZiAoZmllbGQuaGlkZUV4cHJlc3Npb24pIHtcclxuXHRcdFx0XHRmaWVsZC5oaWRlID0gZmllbGQuaGlkZUV4cHJlc3Npb24odGhpcy5tb2RlbCgpLCBmaWVsZCk7XHJcblx0XHRcdFx0aWYgKGZpZWxkLmhpZGUpIHtcclxuXHRcdFx0XHRcdGZpZWxkLmZpZWxkQ29udHJvbD8uY2xlYXJWYWxpZGF0b3JzKCk7XHJcblx0XHRcdFx0XHRmaWVsZC5maWVsZENvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRmaWVsZC5maWVsZENvbnRyb2w/LnNldFZhbGlkYXRvcnMoXHJcblx0XHRcdFx0XHRcdGZpZWxkVXRpbHMucHJvcHMoZmllbGQpPy5yZXF1aXJlZCA/IChmaWVsZC52YWxpZGF0b3JzID8gZmllbGQudmFsaWRhdG9ycyA6IFZhbGlkYXRvcnMucmVxdWlyZWQpIDogdW5kZWZpbmVkLFxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0dmFsaWRhdGUoKSB7XHJcblx0XHRmb3IgKGxldCBrZXkgaW4gdGhpcy5vcHRpb25zKCkuZm9ybT8uY29udHJvbHMpIHtcclxuXHRcdFx0IXRoaXMub3B0aW9ucygpLmZvcm0/LmNvbnRyb2xzW2tleV1bJ2Rpc2FibGVkJ10gJiYgdGhpcy5vcHRpb25zKCkuZm9ybT8uY29udHJvbHNba2V5XS5tYXJrQXNEaXJ0eSgpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucygpLmZvcm0/LmRpc2FibGVkID8gdHJ1ZSA6IHRoaXMub3B0aW9ucygpLmZvcm0/LnZhbGlkO1xyXG5cdH1cclxuXHJcblx0dW5pcXVlSG9vayhmaWVsZDogRm9ybUZpZWxkLCBob29rOiBPYnNlcnZhYmxlPChmaWVsZD86IEZvcm1GaWVsZCkgPT4gdm9pZD4pIHtcclxuXHRcdGZpZWxkLmhvb2sgPSBob29rLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xyXG5cdH1cclxuXHJcblx0dHJpZ2dlckhvb2soKSB7XHJcblx0XHR0aGlzLmZpZWxkTGlzdC5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG5cdFx0XHRmaWVsZFV0aWxzLnRyaWdnZXJIb29rQW5kU2V0VmFsdWUoXHJcblx0XHRcdFx0ZmllbGQsXHJcblx0XHRcdFx0dGhpcy5tb2RlbCgpPy5bZmllbGQua2V5IV0sXHJcblx0XHRcdFx0ZmFsc2UsXHJcblx0XHRcdFx0dHJ1ZSxcclxuXHRcdFx0XHR0aGlzLmhvb2tPYnNlcnZlcnMsXHJcblx0XHRcdFx0KCkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5oYW5kbGVIaWRlRXhwcmVzc2lvbigpO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0dGhpcy5kYXRlUGlwZSxcclxuXHRcdFx0KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cmVDYWxjTGFiZWxTaXplKCkge1xyXG5cdFx0aWYgKHRoaXMub3B0aW9ucygpLmxhYmVsV2lkdGgpIHtcclxuXHRcdFx0dGhpcy5sYWJlbE1pbldpZHRoLnNldCh0aGlzLm9wdGlvbnMoKS5sYWJlbFdpZHRoKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5sYWJlbE1pbldpZHRoLnNldCh1bmRlZmluZWQpO1xyXG5cdFx0dGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0dGhpcy5oYW5kbGVGaWVsZExhYmVscygpO1xyXG5cdFx0dGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdH1cclxuXHJcblx0aGFuZGxlRmllbGRMYWJlbHMoKSB7XHJcblx0XHRjb25zdCBmaWVsZExhYmVsczogRWxlbWVudFJlZltdID0gW107XHJcblx0XHR0aGlzLmdldEZpZWxkTGFiZWxzKHRoaXMuZmllbGRDb21wb25lbnRzLCBmaWVsZExhYmVscyk7XHJcblx0XHRjb25zdCBvZmZzZXRXaWR0aHMgPSBmaWVsZExhYmVscy5tYXAoKGZpZWxkTGFiZWwpID0+IGZpZWxkTGFiZWwubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCk7XHJcblx0XHR0aGlzLmxhYmVsTWluV2lkdGguc2V0KE1hdGgubWF4KC4uLm9mZnNldFdpZHRocykgKyAyNCArICdweCcpO1xyXG5cdH1cclxuXHJcblx0Z2V0RmllbGRMYWJlbHMoZmllbGRDb21wb25lbnRzOiBRdWVyeUxpc3Q8Rm9ybUZpZWxkQ29tcG9uZW50PiB8IHVuZGVmaW5lZCwgZmllbGRMYWJlbHM6IEVsZW1lbnRSZWZbXSkge1xyXG5cdFx0aWYgKCFmaWVsZENvbXBvbmVudHMpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0ZmllbGRDb21wb25lbnRzPy5mb3JFYWNoKChjb21wb25lbnQpID0+IHtcclxuXHRcdFx0Y29uc3QgZmllbGRMYWJlbCA9IGNvbXBvbmVudC5nZXRGaWVsZExhYmVsKCk7XHJcblx0XHRcdGlmIChmaWVsZExhYmVsKSB7XHJcblx0XHRcdFx0ZmllbGRMYWJlbHMucHVzaChmaWVsZExhYmVsKTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLmdldEZpZWxkTGFiZWxzKGNvbXBvbmVudC5nZXRGaWVsZENvbXBvbmVudHMoKSwgZmllbGRMYWJlbHMpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiDop6blj5HmqKHlnovlj5jliqjvvIzpkojlr7nooajljZXlrZfmrrXmlbDmja5cclxuXHQgKiBAcGFyYW0gbW9kZWwg6ZyA6KaB5Y+Y5Yqo55qE5pWw5o2uXHJcblx0ICogQHBhcmFtIGVtaXRFdmVudCDmmK/lkKbop6blj5Hkuovku7ZcclxuXHQgKiBAcGFyYW0gZGV0ZWN0TW9kZWxDaGFuZ2Ug5piv5ZCm6Kem5Y+RZGV0ZWN0TW9kZWxDaGFuZ2VcclxuXHQgKi9cclxuXHR0cmlnZ2VyTW9kZWxFZmZlY3QobW9kZWw6IGFueSwgZW1pdEV2ZW50PzogYm9vbGVhbiwgZW1pdEhvb2s/OiBib29sZWFuKSB7XHJcblx0XHRPYmplY3Qua2V5cyhtb2RlbCkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcblx0XHRcdGNvbnN0IGZpZWxkID0gdGhpcy5nZXRGaWVsZChrZXkpITtcclxuXHRcdFx0aWYgKCFmaWVsZCkgcmV0dXJuO1xyXG5cdFx0XHRmaWVsZFV0aWxzLnRyaWdnZXJIb29rQW5kU2V0VmFsdWUoXHJcblx0XHRcdFx0ZmllbGQsXHJcblx0XHRcdFx0bW9kZWxba2V5XSxcclxuXHRcdFx0XHRlbWl0RXZlbnQgPz8gdHJ1ZSxcclxuXHRcdFx0XHRlbWl0SG9vayA/PyB0cnVlLFxyXG5cdFx0XHRcdHRoaXMuaG9va09ic2VydmVycyxcclxuXHRcdFx0XHQoKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLmhhbmRsZUhpZGVFeHByZXNzaW9uKCk7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHR0aGlzLmRhdGVQaXBlLFxyXG5cdFx0XHQpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiDop6blj5HmlbDmja7lj5jliqjvvIzpkojlr7npnZ7ooajljZXlrZfmrrXmlbDmja5cclxuXHQgKiBAcGFyYW0gZGF0YUxpc3Qg5aSW6YOo5pWw5o2u5YiX6KGoXHJcblx0ICovXHJcblx0dHJpZ2dlckRhdGFFZmZlY3QoZGF0YUxpc3Q6IEV4dGVybmFsRGF0YVtdKSB7XHJcblx0XHRkYXRhTGlzdC5mb3JFYWNoKChkYXRhKSA9PiB7XHJcblx0XHRcdHRoaXMubW9kZWwoKVtkYXRhLmtleSFdID0gZGF0YS52YWx1ZTtcclxuXHRcdFx0aWYgKGRhdGEubGFiZWwpIHtcclxuXHRcdFx0XHR0aGlzLmNoYW5nZWRNb2RlbFtkYXRhLmtleSFdID0geyBuYW1lOiBkYXRhLmxhYmVsLCB2YWx1ZTogZGF0YS52YWx1ZSwgdHlwZTogJ2lucHV0dGV4dCcgfTtcclxuXHRcdFx0XHR0aGlzLmhhbmRsZVVwc2VydChkYXRhLmtleSEsIGRhdGEudmFsdWUsIHRydWUpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuaGFuZGxlVXBzZXJ0KGRhdGEua2V5ISwgZGF0YS52YWx1ZSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICog6Kem5Y+R5a2X5q6156aB55So77yM6ZKI5a+56KGo5Y2V5a2X5q61XHJcblx0ICogQHBhcmFtIGtleXMg5a2X5q61a2V55YiX6KGoXHJcblx0ICovXHJcblx0dHJpZ2dlckRpc2FibGVkRWZmZWN0KGtleXM6IHN0cmluZ1tdKSB7XHJcblx0XHRrZXlzPy5mb3JFYWNoKChrZXkpID0+IHtcclxuXHRcdFx0dGhpcy5zZXRGaWVsZERpc2FibGVkKGtleSk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIOWKqOaAgeiuvue9ruWtl+auteemgeeUqO+8jOemgeeUqOWJjea4hemZpOWtl+autWRpcnR55qCH6K6wXHJcblx0ICogQHBhcmFtIGtleSDlrZfmrrVrZXlcclxuXHQgKi9cclxuXHRzZXRGaWVsZERpc2FibGVkKGtleTogc3RyaW5nKSB7XHJcblx0XHR0aGlzLmdldEZpZWxkKGtleSk/LmZpZWxkQ29udHJvbD8ubWFya0FzUHJpc3RpbmUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG5cdFx0dGhpcy5nZXRGaWVsZChrZXkpPy5maWVsZENvbnRyb2w/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICog6KGo5Y2V5o+Q5Lqk5ZCO55qE5pS25bC+5aSE55CG77yM5LiA6Iis5Zyo5o+Q5Lqk5o6l5Y+j55qE5Zue6LCD5Ye95pWw5omn6KGMXHJcblx0ICovXHJcblx0ZmluYWxpemUoKSB7XHJcblx0XHR0aGlzLmZpZWxkTGlzdC5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG5cdFx0XHRpZiAoWydpbWFnZScsICd1cGxvYWQnXS5pbmNsdWRlcyhmaWVsZC50eXBlISkpIHtcclxuXHRcdFx0XHRmaWVsZC5maWVsZENvbnRyb2w/LmFmdGVyU3VibWl0KCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxufVxyXG4iLCJAZm9yIChmaWVsZCBvZiBmaWVsZHMoKTsgdHJhY2sgZmllbGQpIHtcclxuXHQ8Zm9ybS1maWVsZFxyXG5cdFx0Y2xhc3M9XCJ3LWZ1bGxcIlxyXG5cdFx0W2ZpZWxkXT1cImZpZWxkXCI+XHJcblx0PC9mb3JtLWZpZWxkPlxyXG59XHJcbiJdfQ==
@@ -3,13 +3,16 @@ import { ButtonModule } from 'primeng/button';
3
3
  import { DialogModule } from 'primeng/dialog';
4
4
  import { GridComponent } from '../grid/grid/grid.component';
5
5
  import { SearchComponent } from '../search/search/search.component';
6
+ import { DatePipe } from '@angular/common';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "../service/action.service";
8
- import * as i2 from "primeng/button";
9
- import * as i3 from "primeng/dialog";
9
+ import * as i2 from "@angular/common";
10
+ import * as i3 from "primeng/button";
11
+ import * as i4 from "primeng/dialog";
10
12
  export class RowSelectorComponent {
11
- constructor(action) {
13
+ constructor(action, datePipe) {
12
14
  this.action = action;
15
+ this.datePipe = datePipe;
13
16
  this.onOk = new EventEmitter();
14
17
  this.title = input('选择');
15
18
  this.selectionKeys = input([]);
@@ -60,16 +63,16 @@ export class RowSelectorComponent {
60
63
  this.grid.setScrollHeight();
61
64
  }
62
65
  }
63
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RowSelectorComponent, deps: [{ token: i1.ActionService }], target: i0.ɵɵFactoryTarget.Component }); }
64
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RowSelectorComponent, isStandalone: true, selector: "row-selector", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, selectionKeys: { classPropertyName: "selectionKeys", publicName: "selectionKeys", isSignal: true, isRequired: false, transformFunction: null }, gridOptions: { classPropertyName: "gridOptions", publicName: "gridOptions", isSignal: true, isRequired: false, transformFunction: null }, searchPrm: { classPropertyName: "searchPrm", publicName: "searchPrm", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onOk: "onOk", visible: "visibleChange" }, viewQueries: [{ propertyName: "grid", first: true, predicate: GridComponent, descendants: true }], ngImport: i0, template: "<p-dialog\n\t[header]=\"title()\"\n\t[modal]=\"true\"\n\t[style]=\"{ width: '50vw' }\"\n\t(onHide)=\"cancel()\"\n\t[maximizable]=\"true\"\n\t[appendTo]=\"'body'\"\n\t[focusOnShow]=\"false\"\n\t(onShow)=\"onShow()\"\n\t(onHide)=\"onHide()\"\n\t(onMaximize)=\"onMaximize($event)\"\n\t[(visible)]=\"visible\">\n\t@if (innerVisible) {\n\t\t<div class=\"flex flex-col gap-2\">\n\t\t\t<custom-search [gridOptions]=\"gridOptions()\"></custom-search>\n\t\t\t<custom-grid\n\t\t\t\t[showAct]=\"false\"\n\t\t\t\t[searchPrm]=\"searchPrm()\"\n\t\t\t\t[selectionKeys]=\"selectionKeys()\"\n\t\t\t\t[gridOptions]=\"gridOptions()\"></custom-grid>\n\t\t\t<div class=\"flex justify-end gap-2\">\n\t\t\t\t<p-button\n\t\t\t\t\tlabel=\"\u53D6\u6D88\"\n\t\t\t\t\t[text]=\"true\"\n\t\t\t\t\tseverity=\"secondary\"\n\t\t\t\t\t(click)=\"cancel()\" />\n\t\t\t\t<p-button\n\t\t\t\t\tlabel=\"\u786E\u5B9A\"\n\t\t\t\t\t[outlined]=\"true\"\n\t\t\t\t\t(click)=\"ok()\" />\n\t\t\t</div>\n\t\t</div>\n\t}\n</p-dialog>\n", styles: [":host ::ng-deep .p-disabled,:host ::ng-deep .p-component:disabled{opacity:1}:host ::ng-deep .p-inputtext{border-width:0;border-radius:0;box-shadow:none;background:#fff;padding:0}:host ::ng-deep .p-inputtext:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputtext:not(:disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:not(:disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered .p-autocomplete-input:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-label{padding:0}:host ::ng-deep .p-select{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-select .p-select-dropdown{display:none}:host ::ng-deep .p-select .p-select-clear-icon{display:none}:host ::ng-deep .p-select:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-select-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-open .p-select-dropdown{display:flex}:host ::ng-deep .p-select-open .p-select-clear-icon{display:flex}:host ::ng-deep .p-select:hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select:hover .p-select-dropdown{display:flex}:host ::ng-deep .p-select:hover .p-select-clear-icon{display:flex}:host ::ng-deep .p-select.ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select.ng-hovered .p-select-dropdown{display:flex}:host ::ng-deep .p-select.ng-hovered .p-select-clear-icon{display:flex}:host ::ng-deep .p-multiselect-label{padding:0}:host ::ng-deep .p-multiselect{border-width:0;border-radius:0;background:#fff;box-shadow:none}:host ::ng-deep .p-multiselect .p-multiselect-dropdown{display:none}:host ::ng-deep .p-multiselect:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-multiselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect-open .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled):hover .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-textarea{border-radius:0;box-shadow:none;padding:0;background:#fff;resize:none}:host ::ng-deep .p-textarea:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border:1px solid var(--p-red-500)!important}:host ::ng-deep .p-textarea:not(:disabled):hover{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:not(:disabled).ng-hovered{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:focus{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-treeselect-label{padding:0}:host ::ng-deep .p-treeselect{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-treeselect .p-treeselect-dropdown{display:none}:host ::ng-deep .ng-invalid.ng-dirty>.p-treeselect{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-treeselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect-open .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled):hover .p-treeselect-dropdown{display:flex}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled) .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-menubar{border-width:0;padding:0}:host ::ng-deep .p-menubar-submenu{z-index:3}:host ::ng-deep .p-fileupload-advanced{border-width:0;border-radius:0;background-color:#fff}:host ::ng-deep .p-fileupload-header{padding:0}:host ::ng-deep .p-fileupload-content{padding:0;display:block;border-width:0}:host ::ng-deep .p-inputnumber:not(.ng-valid).ng-dirty>.p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputnumber.ng-hovered:not(.p-disabled)>.p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-invalid.ng-dirty>.p-datepicker .p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .ng-hovered>.p-datepicker:not(.p-disabled) .p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor{border:1px solid #cbd5e1}:host ::ng-deep .cm-editor.cm-focused{outline:none!important;border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor:hover{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor.ng-hovered{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-gutters{background-color:#fff;border:\"none\"}:host ::ng-deep .cm-activeLineGutter{background-color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i3.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: GridComponent, selector: "custom-grid", inputs: ["gridOptions", "selectionKeys", "upsert", "rowData", "searchPrm", "addType", "selectData", "showAct", "actPos", "authLevel", "showDelete", "gridDisable"], outputs: ["deleteEmit", "addEmit"] }, { kind: "component", type: SearchComponent, selector: "custom-search", inputs: ["searchPrm", "gridOptions"] }] }); }
66
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RowSelectorComponent, deps: [{ token: i1.ActionService }, { token: i2.DatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
67
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RowSelectorComponent, isStandalone: true, selector: "row-selector", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, selectionKeys: { classPropertyName: "selectionKeys", publicName: "selectionKeys", isSignal: true, isRequired: false, transformFunction: null }, gridOptions: { classPropertyName: "gridOptions", publicName: "gridOptions", isSignal: true, isRequired: false, transformFunction: null }, searchPrm: { classPropertyName: "searchPrm", publicName: "searchPrm", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onOk: "onOk", visible: "visibleChange" }, providers: [DatePipe], viewQueries: [{ propertyName: "grid", first: true, predicate: GridComponent, descendants: true }], ngImport: i0, template: "<p-dialog\n\t[header]=\"title()\"\n\t[modal]=\"true\"\n\t[style]=\"{ width: '50vw' }\"\n\t(onHide)=\"cancel()\"\n\t[maximizable]=\"true\"\n\t[appendTo]=\"'body'\"\n\t[focusOnShow]=\"false\"\n\t(onShow)=\"onShow()\"\n\t(onHide)=\"onHide()\"\n\t(onMaximize)=\"onMaximize($event)\"\n\t[(visible)]=\"visible\">\n\t@if (innerVisible) {\n\t\t<div class=\"flex flex-col gap-2\">\n\t\t\t<custom-search [gridOptions]=\"gridOptions()\"></custom-search>\n\t\t\t<custom-grid\n\t\t\t\t[showAct]=\"false\"\n\t\t\t\t[searchPrm]=\"searchPrm()\"\n\t\t\t\t[selectionKeys]=\"selectionKeys()\"\n\t\t\t\t[gridOptions]=\"gridOptions()\"></custom-grid>\n\t\t\t<div class=\"flex justify-end gap-2\">\n\t\t\t\t<p-button\n\t\t\t\t\tlabel=\"\u53D6\u6D88\"\n\t\t\t\t\t[text]=\"true\"\n\t\t\t\t\tseverity=\"secondary\"\n\t\t\t\t\t(click)=\"cancel()\" />\n\t\t\t\t<p-button\n\t\t\t\t\tlabel=\"\u786E\u5B9A\"\n\t\t\t\t\t[outlined]=\"true\"\n\t\t\t\t\t(click)=\"ok()\" />\n\t\t\t</div>\n\t\t</div>\n\t}\n</p-dialog>\n", styles: [":host ::ng-deep .p-disabled,:host ::ng-deep .p-component:disabled{opacity:1}:host ::ng-deep .p-inputtext{border-width:0;border-radius:0;box-shadow:none;background:#fff;padding:0}:host ::ng-deep .p-inputtext:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputtext:not(:disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:not(:disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered .p-autocomplete-input:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-label{padding:0}:host ::ng-deep .p-select{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-select .p-select-dropdown{display:none}:host ::ng-deep .p-select .p-select-clear-icon{display:none}:host ::ng-deep .p-select:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-select-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-open .p-select-dropdown{display:flex}:host ::ng-deep .p-select-open .p-select-clear-icon{display:flex}:host ::ng-deep .p-select:hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select:hover .p-select-dropdown{display:flex}:host ::ng-deep .p-select:hover .p-select-clear-icon{display:flex}:host ::ng-deep .p-select.ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select.ng-hovered .p-select-dropdown{display:flex}:host ::ng-deep .p-select.ng-hovered .p-select-clear-icon{display:flex}:host ::ng-deep .p-multiselect-label{padding:0}:host ::ng-deep .p-multiselect{border-width:0;border-radius:0;background:#fff;box-shadow:none}:host ::ng-deep .p-multiselect .p-multiselect-dropdown{display:none}:host ::ng-deep .p-multiselect:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-multiselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect-open .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled):hover .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-textarea{border-radius:0;box-shadow:none;padding:0;background:#fff;resize:none}:host ::ng-deep .p-textarea:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border:1px solid var(--p-red-500)!important}:host ::ng-deep .p-textarea:not(:disabled):hover{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:not(:disabled).ng-hovered{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:focus{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-treeselect-label{padding:0}:host ::ng-deep .p-treeselect{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-treeselect .p-treeselect-dropdown{display:none}:host ::ng-deep .ng-invalid.ng-dirty>.p-treeselect{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-treeselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect-open .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled):hover .p-treeselect-dropdown{display:flex}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled) .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-menubar{border-width:0;padding:0}:host ::ng-deep .p-menubar-submenu{z-index:3}:host ::ng-deep .p-fileupload-advanced{border-width:0;border-radius:0;background-color:#fff}:host ::ng-deep .p-fileupload-header{padding:0}:host ::ng-deep .p-fileupload-content{padding:0;display:block;border-width:0}:host ::ng-deep .p-inputnumber:not(.ng-valid).ng-dirty>.p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputnumber.ng-hovered:not(.p-disabled)>.p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-invalid.ng-dirty>.p-datepicker .p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .ng-hovered>.p-datepicker:not(.p-disabled) .p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor{border:1px solid #cbd5e1}:host ::ng-deep .cm-editor.cm-focused{outline:none!important;border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor:hover{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor.ng-hovered{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-gutters{background-color:#fff;border:\"none\"}:host ::ng-deep .cm-activeLineGutter{background-color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i4.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: GridComponent, selector: "custom-grid", inputs: ["gridOptions", "selectionKeys", "upsert", "rowData", "searchPrm", "addType", "selectData", "showAct", "actPos", "authLevel", "showDelete", "gridDisable"], outputs: ["deleteEmit", "addEmit"] }, { kind: "component", type: SearchComponent, selector: "custom-search", inputs: ["searchPrm", "gridOptions"] }] }); }
65
68
  }
66
69
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RowSelectorComponent, decorators: [{
67
70
  type: Component,
68
- args: [{ selector: 'row-selector', standalone: true, imports: [ButtonModule, DialogModule, GridComponent, SearchComponent], template: "<p-dialog\n\t[header]=\"title()\"\n\t[modal]=\"true\"\n\t[style]=\"{ width: '50vw' }\"\n\t(onHide)=\"cancel()\"\n\t[maximizable]=\"true\"\n\t[appendTo]=\"'body'\"\n\t[focusOnShow]=\"false\"\n\t(onShow)=\"onShow()\"\n\t(onHide)=\"onHide()\"\n\t(onMaximize)=\"onMaximize($event)\"\n\t[(visible)]=\"visible\">\n\t@if (innerVisible) {\n\t\t<div class=\"flex flex-col gap-2\">\n\t\t\t<custom-search [gridOptions]=\"gridOptions()\"></custom-search>\n\t\t\t<custom-grid\n\t\t\t\t[showAct]=\"false\"\n\t\t\t\t[searchPrm]=\"searchPrm()\"\n\t\t\t\t[selectionKeys]=\"selectionKeys()\"\n\t\t\t\t[gridOptions]=\"gridOptions()\"></custom-grid>\n\t\t\t<div class=\"flex justify-end gap-2\">\n\t\t\t\t<p-button\n\t\t\t\t\tlabel=\"\u53D6\u6D88\"\n\t\t\t\t\t[text]=\"true\"\n\t\t\t\t\tseverity=\"secondary\"\n\t\t\t\t\t(click)=\"cancel()\" />\n\t\t\t\t<p-button\n\t\t\t\t\tlabel=\"\u786E\u5B9A\"\n\t\t\t\t\t[outlined]=\"true\"\n\t\t\t\t\t(click)=\"ok()\" />\n\t\t\t</div>\n\t\t</div>\n\t}\n</p-dialog>\n", styles: [":host ::ng-deep .p-disabled,:host ::ng-deep .p-component:disabled{opacity:1}:host ::ng-deep .p-inputtext{border-width:0;border-radius:0;box-shadow:none;background:#fff;padding:0}:host ::ng-deep .p-inputtext:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputtext:not(:disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:not(:disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered .p-autocomplete-input:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-label{padding:0}:host ::ng-deep .p-select{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-select .p-select-dropdown{display:none}:host ::ng-deep .p-select .p-select-clear-icon{display:none}:host ::ng-deep .p-select:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-select-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-open .p-select-dropdown{display:flex}:host ::ng-deep .p-select-open .p-select-clear-icon{display:flex}:host ::ng-deep .p-select:hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select:hover .p-select-dropdown{display:flex}:host ::ng-deep .p-select:hover .p-select-clear-icon{display:flex}:host ::ng-deep .p-select.ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select.ng-hovered .p-select-dropdown{display:flex}:host ::ng-deep .p-select.ng-hovered .p-select-clear-icon{display:flex}:host ::ng-deep .p-multiselect-label{padding:0}:host ::ng-deep .p-multiselect{border-width:0;border-radius:0;background:#fff;box-shadow:none}:host ::ng-deep .p-multiselect .p-multiselect-dropdown{display:none}:host ::ng-deep .p-multiselect:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-multiselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect-open .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled):hover .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-textarea{border-radius:0;box-shadow:none;padding:0;background:#fff;resize:none}:host ::ng-deep .p-textarea:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border:1px solid var(--p-red-500)!important}:host ::ng-deep .p-textarea:not(:disabled):hover{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:not(:disabled).ng-hovered{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:focus{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-treeselect-label{padding:0}:host ::ng-deep .p-treeselect{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-treeselect .p-treeselect-dropdown{display:none}:host ::ng-deep .ng-invalid.ng-dirty>.p-treeselect{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-treeselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect-open .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled):hover .p-treeselect-dropdown{display:flex}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled) .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-menubar{border-width:0;padding:0}:host ::ng-deep .p-menubar-submenu{z-index:3}:host ::ng-deep .p-fileupload-advanced{border-width:0;border-radius:0;background-color:#fff}:host ::ng-deep .p-fileupload-header{padding:0}:host ::ng-deep .p-fileupload-content{padding:0;display:block;border-width:0}:host ::ng-deep .p-inputnumber:not(.ng-valid).ng-dirty>.p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputnumber.ng-hovered:not(.p-disabled)>.p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-invalid.ng-dirty>.p-datepicker .p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .ng-hovered>.p-datepicker:not(.p-disabled) .p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor{border:1px solid #cbd5e1}:host ::ng-deep .cm-editor.cm-focused{outline:none!important;border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor:hover{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor.ng-hovered{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-gutters{background-color:#fff;border:\"none\"}:host ::ng-deep .cm-activeLineGutter{background-color:#fff}\n"] }]
69
- }], ctorParameters: () => [{ type: i1.ActionService }], propDecorators: { onOk: [{
71
+ args: [{ selector: 'row-selector', standalone: true, imports: [ButtonModule, DialogModule, GridComponent, SearchComponent], providers: [DatePipe], template: "<p-dialog\n\t[header]=\"title()\"\n\t[modal]=\"true\"\n\t[style]=\"{ width: '50vw' }\"\n\t(onHide)=\"cancel()\"\n\t[maximizable]=\"true\"\n\t[appendTo]=\"'body'\"\n\t[focusOnShow]=\"false\"\n\t(onShow)=\"onShow()\"\n\t(onHide)=\"onHide()\"\n\t(onMaximize)=\"onMaximize($event)\"\n\t[(visible)]=\"visible\">\n\t@if (innerVisible) {\n\t\t<div class=\"flex flex-col gap-2\">\n\t\t\t<custom-search [gridOptions]=\"gridOptions()\"></custom-search>\n\t\t\t<custom-grid\n\t\t\t\t[showAct]=\"false\"\n\t\t\t\t[searchPrm]=\"searchPrm()\"\n\t\t\t\t[selectionKeys]=\"selectionKeys()\"\n\t\t\t\t[gridOptions]=\"gridOptions()\"></custom-grid>\n\t\t\t<div class=\"flex justify-end gap-2\">\n\t\t\t\t<p-button\n\t\t\t\t\tlabel=\"\u53D6\u6D88\"\n\t\t\t\t\t[text]=\"true\"\n\t\t\t\t\tseverity=\"secondary\"\n\t\t\t\t\t(click)=\"cancel()\" />\n\t\t\t\t<p-button\n\t\t\t\t\tlabel=\"\u786E\u5B9A\"\n\t\t\t\t\t[outlined]=\"true\"\n\t\t\t\t\t(click)=\"ok()\" />\n\t\t\t</div>\n\t\t</div>\n\t}\n</p-dialog>\n", styles: [":host ::ng-deep .p-disabled,:host ::ng-deep .p-component:disabled{opacity:1}:host ::ng-deep .p-inputtext{border-width:0;border-radius:0;box-shadow:none;background:#fff;padding:0}:host ::ng-deep .p-inputtext:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputtext:not(:disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:not(:disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered .p-autocomplete-input:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-label{padding:0}:host ::ng-deep .p-select{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-select .p-select-dropdown{display:none}:host ::ng-deep .p-select .p-select-clear-icon{display:none}:host ::ng-deep .p-select:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-select-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-open .p-select-dropdown{display:flex}:host ::ng-deep .p-select-open .p-select-clear-icon{display:flex}:host ::ng-deep .p-select:hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select:hover .p-select-dropdown{display:flex}:host ::ng-deep .p-select:hover .p-select-clear-icon{display:flex}:host ::ng-deep .p-select.ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select.ng-hovered .p-select-dropdown{display:flex}:host ::ng-deep .p-select.ng-hovered .p-select-clear-icon{display:flex}:host ::ng-deep .p-multiselect-label{padding:0}:host ::ng-deep .p-multiselect{border-width:0;border-radius:0;background:#fff;box-shadow:none}:host ::ng-deep .p-multiselect .p-multiselect-dropdown{display:none}:host ::ng-deep .p-multiselect:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-multiselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect-open .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled):hover .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-textarea{border-radius:0;box-shadow:none;padding:0;background:#fff;resize:none}:host ::ng-deep .p-textarea:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border:1px solid var(--p-red-500)!important}:host ::ng-deep .p-textarea:not(:disabled):hover{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:not(:disabled).ng-hovered{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:focus{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-treeselect-label{padding:0}:host ::ng-deep .p-treeselect{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-treeselect .p-treeselect-dropdown{display:none}:host ::ng-deep .ng-invalid.ng-dirty>.p-treeselect{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-treeselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect-open .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled):hover .p-treeselect-dropdown{display:flex}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled) .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-menubar{border-width:0;padding:0}:host ::ng-deep .p-menubar-submenu{z-index:3}:host ::ng-deep .p-fileupload-advanced{border-width:0;border-radius:0;background-color:#fff}:host ::ng-deep .p-fileupload-header{padding:0}:host ::ng-deep .p-fileupload-content{padding:0;display:block;border-width:0}:host ::ng-deep .p-inputnumber:not(.ng-valid).ng-dirty>.p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputnumber.ng-hovered:not(.p-disabled)>.p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-invalid.ng-dirty>.p-datepicker .p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .ng-hovered>.p-datepicker:not(.p-disabled) .p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor{border:1px solid #cbd5e1}:host ::ng-deep .cm-editor.cm-focused{outline:none!important;border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor:hover{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor.ng-hovered{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-gutters{background-color:#fff;border:\"none\"}:host ::ng-deep .cm-activeLineGutter{background-color:#fff}\n"] }]
72
+ }], ctorParameters: () => [{ type: i1.ActionService }, { type: i2.DatePipe }], propDecorators: { onOk: [{
70
73
  type: Output
71
74
  }], grid: [{
72
75
  type: ViewChild,
73
76
  args: [GridComponent]
74
77
  }] } });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvcm93LXNlbGVjdG9yL3Jvdy1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3Jvdy1zZWxlY3Rvci9yb3ctc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGFBQWEsRUFBZSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7QUFVcEUsTUFBTSxPQUFPLG9CQUFvQjtJQVVoQyxZQUFvQixNQUFxQjtRQUFyQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBVC9CLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBRTNDLFVBQUssR0FBRyxLQUFLLENBQVMsSUFBSSxDQUFDLENBQUM7UUFDNUIsa0JBQWEsR0FBRyxLQUFLLENBQVEsRUFBRSxDQUFDLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxLQUFLLENBQWMsRUFBRSxDQUFDLENBQUM7UUFDckMsY0FBUyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUM5QixZQUFPLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLGlCQUFZLEdBQVksS0FBSyxDQUFDO0lBRWMsQ0FBQztJQUU3QyxHQUFHO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNoQyxDQUFDO0lBRUQsTUFBTTtRQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxFQUFFO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2xELE1BQU0sTUFBTSxHQUFRLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNuRCxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLE1BQU0sQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELGVBQWU7UUFDZCxNQUFNLE1BQU0sR0FBVSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU07UUFDTCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsTUFBTTtRQUNMLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNwQixJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2xELENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0YsQ0FBQzsrR0ExRFcsb0JBQW9CO21HQUFwQixvQkFBb0IsbTBCQUVyQixhQUFhLGdEQ2pCekIsMjlCQWtDQSxnckxEdkJXLFlBQVksaWJBQUUsWUFBWSxvNkJBQUUsYUFBYSxnUUFBRSxlQUFlOzs0RkFJeEQsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNDLGNBQWMsY0FDWixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUM7a0ZBSzNELElBQUk7c0JBQWIsTUFBTTtnQkFDbUIsSUFBSTtzQkFBN0IsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBpbnB1dCwgbW9kZWwsIGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xuaW1wb3J0IHsgU2VhcmNoIH0gZnJvbSAnLi4vYW0vYW0uY29tcG9uZW50JztcbmltcG9ydCB7IEdyaWRDb21wb25lbnQsIEdyaWRPcHRpb25zIH0gZnJvbSAnLi4vZ3JpZC9ncmlkL2dyaWQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaC9zZWFyY2gvc2VhcmNoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9hY3Rpb24uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ3Jvdy1zZWxlY3RvcicsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtCdXR0b25Nb2R1bGUsIERpYWxvZ01vZHVsZSwgR3JpZENvbXBvbmVudCwgU2VhcmNoQ29tcG9uZW50XSxcblx0dGVtcGxhdGVVcmw6ICcuL3Jvdy1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsOiAnLi9yb3ctc2VsZWN0b3IuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBSb3dTZWxlY3RvckNvbXBvbmVudCB7XG5cdEBPdXRwdXQoKSBvbk9rID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcblx0QFZpZXdDaGlsZChHcmlkQ29tcG9uZW50KSBncmlkITogR3JpZENvbXBvbmVudDtcblx0dGl0bGUgPSBpbnB1dDxzdHJpbmc+KCfpgInmi6knKTtcblx0c2VsZWN0aW9uS2V5cyA9IGlucHV0PGFueVtdPihbXSk7XG5cdGdyaWRPcHRpb25zID0gaW5wdXQ8R3JpZE9wdGlvbnM+KHt9KTtcblx0c2VhcmNoUHJtID0gaW5wdXQ8U2VhcmNoPih7fSk7XG5cdHZpc2libGUgPSBtb2RlbDxib29sZWFuPihmYWxzZSk7XG5cdGlubmVyVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aW9uOiBBY3Rpb25TZXJ2aWNlKSB7fVxuXG5cdGFwaSgpIHtcblx0XHRyZXR1cm4gdGhpcy5ncmlkLmdldEdyaWQoKS5hcGk7XG5cdH1cblxuXHRjYW5jZWwoKSB7XG5cdFx0dGhpcy52aXNpYmxlLnNldChmYWxzZSk7XG5cdH1cblxuXHRvaygpIHtcblx0XHRjb25zdCByZXN1bHQgPSB0aGlzLmdldFNlbGVjdGVkRGF0YSgpLm1hcCgoaXRlbSkgPT4ge1xuXHRcdFx0Y29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcblx0XHRcdHRoaXMuZ3JpZE9wdGlvbnMoKS5jb2x1bW5EZWZzPy5mb3JFYWNoKChjb2w6IGFueSkgPT4ge1xuXHRcdFx0XHRyZXN1bHRbY29sLmZpZWxkXSA9IGl0ZW1bY29sLmZpZWxkXTtcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9KTtcblx0XHR0aGlzLm9uT2suZW1pdChyZXN1bHQpO1xuXHRcdHRoaXMudmlzaWJsZS5zZXQoZmFsc2UpO1xuXHR9XG5cblx0Z2V0U2VsZWN0ZWREYXRhKCk6IGFueVtdIHtcblx0XHRjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG5cdFx0dGhpcy5hcGkoKS5mb3JFYWNoTm9kZSgobm9kZTogYW55KSA9PiB7XG5cdFx0XHRub2RlLmlzU2VsZWN0ZWQoKSAmJiByZXN1bHQucHVzaCh7IC4uLm5vZGUuZGF0YSB9KTtcblx0XHR9KTtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0b25TaG93KCkge1xuXHRcdHRoaXMuaW5uZXJWaXNpYmxlID0gdHJ1ZTtcblx0XHR0aGlzLmFjdGlvbi5zZXRQb3BNb2RlKHRydWUpO1xuXHR9XG5cblx0b25IaWRlKCkge1xuXHRcdHRoaXMuaW5uZXJWaXNpYmxlID0gZmFsc2U7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLmFjdGlvbi5zZXRQb3BNb2RlKGZhbHNlKTtcblx0XHR9KTtcblx0fVxuXG5cdG9uTWF4aW1pemUoZXZlbnQ6IGFueSkge1xuXHRcdGlmIChldmVudC5tYXhpbWl6ZWQpIHtcblx0XHRcdHRoaXMuZ3JpZC5zZXRTY3JvbGxIZWlnaHQoJ2NhbGMoMTAwdmggLSAxNTBweCknKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5ncmlkLnNldFNjcm9sbEhlaWdodCgpO1xuXHRcdH1cblx0fVxufVxuIiwiPHAtZGlhbG9nXG5cdFtoZWFkZXJdPVwidGl0bGUoKVwiXG5cdFttb2RhbF09XCJ0cnVlXCJcblx0W3N0eWxlXT1cInsgd2lkdGg6ICc1MHZ3JyB9XCJcblx0KG9uSGlkZSk9XCJjYW5jZWwoKVwiXG5cdFttYXhpbWl6YWJsZV09XCJ0cnVlXCJcblx0W2FwcGVuZFRvXT1cIidib2R5J1wiXG5cdFtmb2N1c09uU2hvd109XCJmYWxzZVwiXG5cdChvblNob3cpPVwib25TaG93KClcIlxuXHQob25IaWRlKT1cIm9uSGlkZSgpXCJcblx0KG9uTWF4aW1pemUpPVwib25NYXhpbWl6ZSgkZXZlbnQpXCJcblx0Wyh2aXNpYmxlKV09XCJ2aXNpYmxlXCI+XG5cdEBpZiAoaW5uZXJWaXNpYmxlKSB7XG5cdFx0PGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTJcIj5cblx0XHRcdDxjdXN0b20tc2VhcmNoIFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9ucygpXCI+PC9jdXN0b20tc2VhcmNoPlxuXHRcdFx0PGN1c3RvbS1ncmlkXG5cdFx0XHRcdFtzaG93QWN0XT1cImZhbHNlXCJcblx0XHRcdFx0W3NlYXJjaFBybV09XCJzZWFyY2hQcm0oKVwiXG5cdFx0XHRcdFtzZWxlY3Rpb25LZXlzXT1cInNlbGVjdGlvbktleXMoKVwiXG5cdFx0XHRcdFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9ucygpXCI+PC9jdXN0b20tZ3JpZD5cblx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIGdhcC0yXCI+XG5cdFx0XHRcdDxwLWJ1dHRvblxuXHRcdFx0XHRcdGxhYmVsPVwi5Y+W5raIXCJcblx0XHRcdFx0XHRbdGV4dF09XCJ0cnVlXCJcblx0XHRcdFx0XHRzZXZlcml0eT1cInNlY29uZGFyeVwiXG5cdFx0XHRcdFx0KGNsaWNrKT1cImNhbmNlbCgpXCIgLz5cblx0XHRcdFx0PHAtYnV0dG9uXG5cdFx0XHRcdFx0bGFiZWw9XCLnoa7lrppcIlxuXHRcdFx0XHRcdFtvdXRsaW5lZF09XCJ0cnVlXCJcblx0XHRcdFx0XHQoY2xpY2spPVwib2soKVwiIC8+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0fVxuPC9wLWRpYWxvZz5cbiJdfQ==
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvcm93LXNlbGVjdG9yL3Jvdy1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3Jvdy1zZWxlY3Rvci9yb3ctc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGFBQWEsRUFBZSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQVUzQyxNQUFNLE9BQU8sb0JBQW9CO0lBVWhDLFlBQ1MsTUFBcUIsRUFDckIsUUFBa0I7UUFEbEIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBWGpCLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBRTNDLFVBQUssR0FBRyxLQUFLLENBQVMsSUFBSSxDQUFDLENBQUM7UUFDNUIsa0JBQWEsR0FBRyxLQUFLLENBQVEsRUFBRSxDQUFDLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxLQUFLLENBQWMsRUFBRSxDQUFDLENBQUM7UUFDckMsY0FBUyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUM5QixZQUFPLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLGlCQUFZLEdBQVksS0FBSyxDQUFDO0lBSzNCLENBQUM7SUFFSixHQUFHO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNoQyxDQUFDO0lBRUQsTUFBTTtRQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxFQUFFO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2xELE1BQU0sTUFBTSxHQUFRLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNuRCxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLE1BQU0sQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELGVBQWU7UUFDZCxNQUFNLE1BQU0sR0FBVSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU07UUFDTCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsTUFBTTtRQUNMLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNwQixJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2xELENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0YsQ0FBQzsrR0E3RFcsb0JBQW9CO21HQUFwQixvQkFBb0IsZ3hCQUZyQixDQUFDLFFBQVEsQ0FBQyxnRUFJVixhQUFhLGdEQ25CekIsMjlCQWtDQSxnckxEdEJXLFlBQVksaWJBQUUsWUFBWSxvNkJBQUUsYUFBYSxnUUFBRSxlQUFlOzs0RkFLeEQsb0JBQW9CO2tCQVJoQyxTQUFTOytCQUNDLGNBQWMsY0FDWixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUMsYUFHMUQsQ0FBQyxRQUFRLENBQUM7eUdBR1gsSUFBSTtzQkFBYixNQUFNO2dCQUNtQixJQUFJO3NCQUE3QixTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIGlucHV0LCBtb2RlbCwgZWZmZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RpYWxvZyc7XG5pbXBvcnQgeyBTZWFyY2ggfSBmcm9tICcuLi9hbS9hbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3JpZENvbXBvbmVudCwgR3JpZE9wdGlvbnMgfSBmcm9tICcuLi9ncmlkL2dyaWQvZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC9zZWFyY2guY29tcG9uZW50JztcbmltcG9ydCB7IEFjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2FjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAncm93LXNlbGVjdG9yJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aW1wb3J0czogW0J1dHRvbk1vZHVsZSwgRGlhbG9nTW9kdWxlLCBHcmlkQ29tcG9uZW50LCBTZWFyY2hDb21wb25lbnRdLFxuXHR0ZW1wbGF0ZVVybDogJy4vcm93LXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmw6ICcuL3Jvdy1zZWxlY3Rvci5jb21wb25lbnQuc2NzcycsXG5cdHByb3ZpZGVyczogW0RhdGVQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgUm93U2VsZWN0b3JDb21wb25lbnQge1xuXHRAT3V0cHV0KCkgb25PayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG5cdEBWaWV3Q2hpbGQoR3JpZENvbXBvbmVudCkgZ3JpZCE6IEdyaWRDb21wb25lbnQ7XG5cdHRpdGxlID0gaW5wdXQ8c3RyaW5nPign6YCJ5oupJyk7XG5cdHNlbGVjdGlvbktleXMgPSBpbnB1dDxhbnlbXT4oW10pO1xuXHRncmlkT3B0aW9ucyA9IGlucHV0PEdyaWRPcHRpb25zPih7fSk7XG5cdHNlYXJjaFBybSA9IGlucHV0PFNlYXJjaD4oe30pO1xuXHR2aXNpYmxlID0gbW9kZWw8Ym9vbGVhbj4oZmFsc2UpO1xuXHRpbm5lclZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIGFjdGlvbjogQWN0aW9uU2VydmljZSxcblx0XHRwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcblx0KSB7fVxuXG5cdGFwaSgpIHtcblx0XHRyZXR1cm4gdGhpcy5ncmlkLmdldEdyaWQoKS5hcGk7XG5cdH1cblxuXHRjYW5jZWwoKSB7XG5cdFx0dGhpcy52aXNpYmxlLnNldChmYWxzZSk7XG5cdH1cblxuXHRvaygpIHtcblx0XHRjb25zdCByZXN1bHQgPSB0aGlzLmdldFNlbGVjdGVkRGF0YSgpLm1hcCgoaXRlbSkgPT4ge1xuXHRcdFx0Y29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcblx0XHRcdHRoaXMuZ3JpZE9wdGlvbnMoKS5jb2x1bW5EZWZzPy5mb3JFYWNoKChjb2w6IGFueSkgPT4ge1xuXHRcdFx0XHRyZXN1bHRbY29sLmZpZWxkXSA9IGl0ZW1bY29sLmZpZWxkXTtcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9KTtcblx0XHR0aGlzLm9uT2suZW1pdChyZXN1bHQpO1xuXHRcdHRoaXMudmlzaWJsZS5zZXQoZmFsc2UpO1xuXHR9XG5cblx0Z2V0U2VsZWN0ZWREYXRhKCk6IGFueVtdIHtcblx0XHRjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG5cdFx0dGhpcy5hcGkoKS5mb3JFYWNoTm9kZSgobm9kZTogYW55KSA9PiB7XG5cdFx0XHRub2RlLmlzU2VsZWN0ZWQoKSAmJiByZXN1bHQucHVzaCh7IC4uLm5vZGUuZGF0YSB9KTtcblx0XHR9KTtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0b25TaG93KCkge1xuXHRcdHRoaXMuaW5uZXJWaXNpYmxlID0gdHJ1ZTtcblx0XHR0aGlzLmFjdGlvbi5zZXRQb3BNb2RlKHRydWUpO1xuXHR9XG5cblx0b25IaWRlKCkge1xuXHRcdHRoaXMuaW5uZXJWaXNpYmxlID0gZmFsc2U7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLmFjdGlvbi5zZXRQb3BNb2RlKGZhbHNlKTtcblx0XHR9KTtcblx0fVxuXG5cdG9uTWF4aW1pemUoZXZlbnQ6IGFueSkge1xuXHRcdGlmIChldmVudC5tYXhpbWl6ZWQpIHtcblx0XHRcdHRoaXMuZ3JpZC5zZXRTY3JvbGxIZWlnaHQoJ2NhbGMoMTAwdmggLSAxNTBweCknKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5ncmlkLnNldFNjcm9sbEhlaWdodCgpO1xuXHRcdH1cblx0fVxufVxuIiwiPHAtZGlhbG9nXG5cdFtoZWFkZXJdPVwidGl0bGUoKVwiXG5cdFttb2RhbF09XCJ0cnVlXCJcblx0W3N0eWxlXT1cInsgd2lkdGg6ICc1MHZ3JyB9XCJcblx0KG9uSGlkZSk9XCJjYW5jZWwoKVwiXG5cdFttYXhpbWl6YWJsZV09XCJ0cnVlXCJcblx0W2FwcGVuZFRvXT1cIidib2R5J1wiXG5cdFtmb2N1c09uU2hvd109XCJmYWxzZVwiXG5cdChvblNob3cpPVwib25TaG93KClcIlxuXHQob25IaWRlKT1cIm9uSGlkZSgpXCJcblx0KG9uTWF4aW1pemUpPVwib25NYXhpbWl6ZSgkZXZlbnQpXCJcblx0Wyh2aXNpYmxlKV09XCJ2aXNpYmxlXCI+XG5cdEBpZiAoaW5uZXJWaXNpYmxlKSB7XG5cdFx0PGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTJcIj5cblx0XHRcdDxjdXN0b20tc2VhcmNoIFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9ucygpXCI+PC9jdXN0b20tc2VhcmNoPlxuXHRcdFx0PGN1c3RvbS1ncmlkXG5cdFx0XHRcdFtzaG93QWN0XT1cImZhbHNlXCJcblx0XHRcdFx0W3NlYXJjaFBybV09XCJzZWFyY2hQcm0oKVwiXG5cdFx0XHRcdFtzZWxlY3Rpb25LZXlzXT1cInNlbGVjdGlvbktleXMoKVwiXG5cdFx0XHRcdFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9ucygpXCI+PC9jdXN0b20tZ3JpZD5cblx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIGdhcC0yXCI+XG5cdFx0XHRcdDxwLWJ1dHRvblxuXHRcdFx0XHRcdGxhYmVsPVwi5Y+W5raIXCJcblx0XHRcdFx0XHRbdGV4dF09XCJ0cnVlXCJcblx0XHRcdFx0XHRzZXZlcml0eT1cInNlY29uZGFyeVwiXG5cdFx0XHRcdFx0KGNsaWNrKT1cImNhbmNlbCgpXCIgLz5cblx0XHRcdFx0PHAtYnV0dG9uXG5cdFx0XHRcdFx0bGFiZWw9XCLnoa7lrppcIlxuXHRcdFx0XHRcdFtvdXRsaW5lZF09XCJ0cnVlXCJcblx0XHRcdFx0XHQoY2xpY2spPVwib2soKVwiIC8+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0fVxuPC9wLWRpYWxvZz5cbiJdfQ==
@@ -224,7 +224,7 @@ export const calcRowSpan = (params, field) => {
224
224
  }
225
225
  return rowSpan;
226
226
  };
227
- export const convertCol = (options, col, authLevel, modelName, dragSort) => {
227
+ export const convertCol = (options, col, authLevel, dragSort) => {
228
228
  // @ts-ignore
229
229
  const isI18n = window.appIsI18n;
230
230
  // console.log('isI18n-----',isI18n)
@@ -237,7 +237,7 @@ export const convertCol = (options, col, authLevel, modelName, dragSort) => {
237
237
  item.rowDrag = true;
238
238
  }
239
239
  if (isI18n && (!item.hasOwnProperty('i18nKey') || item.i18nKey == '')) {
240
- item.i18nKey = `tables.${modelName}.${item.field}`;
240
+ item.i18nKey = `tables.${options.modelName}.${item.field}`;
241
241
  }
242
242
  if (item.hasOwnProperty('textWrap') && item.textWrap) {
243
243
  item.autoHeight = true;
@@ -334,7 +334,7 @@ export const convertGrid = (thisArg, gridList, fiterPreloads) => {
334
334
  gridOptions.rowSelection = undefined;
335
335
  }
336
336
  }
337
- convertCol(gridOptions, columnDefs, thisArg.authLevel, gridOptions.modelName, dragSort);
337
+ convertCol(gridOptions, columnDefs, thisArg.authLevel, dragSort);
338
338
  gridOptions.columnDefs = columnDefs;
339
339
  if (subTableSource === 'select') {
340
340
  thisArg.webget({ code: item.selectModelCode }).subscribe((res) => {
@@ -351,7 +351,7 @@ export const convertGrid = (thisArg, gridList, fiterPreloads) => {
351
351
  grid.selectDataCb = selectDataCb;
352
352
  grid.selectOptions.scrollHeight = '300px';
353
353
  grid.selectOptions.searchPrm = selectContent.searchPrm;
354
- gridOptionsHooker(grid.selectOptions);
354
+ convertCol(grid.selectOptions, grid.selectOptions.columnDefs, 1);
355
355
  });
356
356
  grid.searchPrm = { ...thisArg.searchPrm };
357
357
  }
@@ -417,7 +417,7 @@ export const pageListGridOptions = (gridOptions, thisArg) => {
417
417
  gridOptions.rowSelection = undefined;
418
418
  }
419
419
  }
420
- gridOptionsHooker(gridOptions);
420
+ convertCol(gridOptions, gridOptions.columnDefs, 1);
421
421
  return gridOptions;
422
422
  };
423
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3NoYXJlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNqQyxNQUFNLENBQUMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUN6QyxHQUFHO0tBQ0QsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxXQUFXO0tBQzlCLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxXQUFXO0tBQy9DLFdBQVcsRUFBRSxDQUFDLE9BQU87S0FDckIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVE7S0FDckIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ2xFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUVaLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsRUFBRTtJQUNwQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENB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QWEsSUFBSSxNQUFNLEVBQUMsQ0FBQztZQUN2QyxXQUFXLENBQUMsWUFBWSxHQUFHO2dCQUMxQixJQUFJLEVBQUUsV0FBVyxDQUFDLGFBQWEsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUEsVUFBVTtnQkFDckUsZUFBZSxFQUFFLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFNBQVM7YUFDdEYsQ0FBQTtRQUNGLENBQUM7YUFBTSxDQUFDO1lBQ1AsV0FBVyxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUE7UUFDckMsQ0FBQztJQUNGLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUM5QixPQUFPLFdBQVcsQ0FBQTtBQUNuQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBzaGFyZVJlcGxheSwgcGlwZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcclxuaW1wb3J0IHsgZm9ybVR5cGVUb1Byb3BzIH0gZnJvbSAnLi4vLi4vcHVibGljLWFwaSc7XHJcbmltcG9ydCBOUCBmcm9tICdudW1iZXItcHJlY2lzaW9uJ1xyXG5leHBvcnQgbGV0IHRvUGFzY2FsQ2FzZSA9IChzdHI6IHN0cmluZykgPT5cclxuXHRzdHJcclxuXHRcdC5yZXBsYWNlKC9fL2csICcgJykgLy8g5LiL5YiS57q/5pu/5o2i5Li656m65qC8XHJcblx0XHQucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgJyQxICQyJykgLy8g5bCP6am85bOw5YiG5Ymy5Li65Y2V6K+NXHJcblx0XHQudG9Mb3dlckNhc2UoKSAvLyDovazkuLrlsI/lhplcclxuXHRcdC5zcGxpdCgvXFxzKy8pIC8vIOaMieepuuagvOWIhuWJslxyXG5cdFx0Lm1hcCgod29yZCkgPT4gKHdvcmQgPyB3b3JkWzBdLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpIDogJycpKVxyXG5cdFx0LmpvaW4oJycpO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlVW5pcXVlSWQgPSAoKSA9PiB7XHJcblx0Y29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKS50b1N0cmluZygzNik7IC8vIOaXtumXtOaIs+i9rDM26L+b5Yi257yp55+t6ZW/5bqmXHJcblx0Y29uc3QgcmFuZG9tID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDQpOyAvLyDpmo/mnLrpg6jliIZcclxuXHRyZXR1cm4gYCR7dGltZXN0YW1wfSR7cmFuZG9tfWA7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQ2lyY3VsYXJJdGVyYXRvciA9IChhcnJheTogYW55W10pID0+IHtcclxuXHRsZXQgaW5kZXggPSAtMTtcclxuXHRyZXR1cm4ge1xyXG5cdFx0bmV4dDogKCkgPT4ge1xyXG5cdFx0XHRpbmRleCsrO1xyXG5cdFx0XHRyZXR1cm4gYXJyYXlbaW5kZXggJSBhcnJheS5sZW5ndGhdO1xyXG5cdFx0fSxcclxuXHRcdHByZXY6ICgpID0+IHtcclxuXHRcdFx0aW5kZXgtLTtcclxuXHRcdFx0cmV0dXJuIGFycmF5WygoaW5kZXggJSBhcnJheS5sZW5ndGgpICsgYXJyYXkubGVuZ3RoKSAlIGFycmF5Lmxlbmd0aF07XHJcblx0XHR9LFxyXG5cdH07XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgcGFyc2VGdW5jdGlvbnMgPSAob2JqOiBhbnksIF90aGlzOiBhbnkpOiBhbnkgPT4ge1xyXG5cdGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykge1xyXG5cdFx0Ly8g5bCd6K+V5qOA5rWL5piv5ZCm5piv5Ye95pWw5a2X56ym5LiyXHJcblx0XHRpZiAoKG9iai5pbmNsdWRlcygnPT4nKSB8fCBvYmouaW5jbHVkZXMoJ1Byb21pc2UnKSkgJiYgIWlzSlNPTlBhcnNhYmxlKG9iaikpIHtcclxuXHRcdFx0Y29uc3QgbyA9IGNvbXBpbGVUc1RvSnMob2JqKTtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coJ+ino+aekOWHveaVsDonLCBvYmopO1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdGNvbnN0IHNhbmRib3ggPSB7XHJcblx0XHRcdFx0XHRPYnNlcnZhYmxlLFxyXG5cdFx0XHRcdFx0b2YsXHJcblx0XHRcdFx0XHRzaGFyZVJlcGxheSxcclxuXHRcdFx0XHRcdHBpcGUsXHJcblx0XHRcdFx0XHRQcm9taXNlLCAvLyDmt7vliqAgUHJvbWlzZSDliLAgc2FuZGJveFxyXG5cdFx0XHRcdFx0YXN5bmM6IHRydWUsIC8vIOagh+iusOaUr+aMgeW8guatpVxyXG5cdFx0XHRcdFx0cmVzb2x2ZTogUHJvbWlzZS5yZXNvbHZlLmJpbmQoUHJvbWlzZSksXHJcblx0XHRcdFx0XHRyZWplY3Q6IFByb21pc2UucmVqZWN0LmJpbmQoUHJvbWlzZSksXHJcblx0XHRcdFx0XHROUCxcclxuXHRcdFx0XHR9O1xyXG5cclxuXHRcdFx0XHQvLyDlpITnkIYgUHJvbWlzZSDmnoTpgKDlh73mlbDnmoTmg4XlhrVcclxuXHRcdFx0XHRpZiAob2JqLmluY2x1ZGVzKCduZXcgUHJvbWlzZScpKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gbmV3IEZ1bmN0aW9uKFxyXG5cdFx0XHRcdFx0XHQnc2FuZGJveCcsXHJcblx0XHRcdFx0XHRcdGBcclxuXHRcdFx0XHRcdFx0XHR3aXRoKHNhbmRib3gpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAke299O1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0YCxcclxuXHRcdFx0XHRcdCkuYmluZChfdGhpcykoc2FuZGJveCk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvLyDlpITnkIbmma7pgJrlh73mlbDlkoznrq3lpLTlh73mlbBcclxuXHRcdFx0XHRyZXR1cm4gbmV3IEZ1bmN0aW9uKFxyXG5cdFx0XHRcdFx0J3NhbmRib3gnLFxyXG5cdFx0XHRcdFx0YFxyXG5cdFx0XHRcdFx0XHR3aXRoKHNhbmRib3gpIHtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKCR7b30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRgLFxyXG5cdFx0XHRcdCkuYmluZChfdGhpcykoc2FuZGJveCk7XHJcblx0XHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0XHRjb25zb2xlLmVycm9yKCflh73mlbDop6PmnpDlpLHotKU6JywgZSwgJ1xcbuWOn+Wni+Wtl+espuS4sjonLCBvYmopO1xyXG5cdFx0XHRcdHJldHVybiBvYmo7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmIChpc0pTT05QYXJzYWJsZShvYmopKSB7XHJcblx0XHRcdGxldCBqc29uID0gSlNPTi5wYXJzZShvYmopO1xyXG5cdFx0XHRyZXR1cm4gcGFyc2VGdW5jdGlvbnMoanNvbiwgX3RoaXMpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIG9iajtcclxuXHR9XHJcblx0aWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xyXG5cdFx0cmV0dXJuIG9iai5tYXAoKGl0ZW06IGFueSkgPT4gcGFyc2VGdW5jdGlvbnMoaXRlbSwgX3RoaXMpKTtcclxuXHR9XHJcblx0aWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkge1xyXG5cdFx0Y29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcclxuXHRcdGZvciAoY29uc3Qga2V5IGluIG9iaikge1xyXG5cdFx0XHRpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuXHRcdFx0XHRyZXN1bHRba2V5XSA9IHBhcnNlRnVuY3Rpb25zKG9ialtrZXldLCBfdGhpcyk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiByZXN1bHQ7XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gb2JqO1xyXG59O1xyXG5cclxuLy8g6L6F5Yqp5Ye95pWw77ya5qOA5p+l5piv5ZCm5YyF5ZCrIFByb21pc2Ug5p6E6YCg5Ye95pWwXHJcbmNvbnN0IGNvbnRhaW5zUHJvbWlzZUNvbnN0cnVjdG9yID0gKHN0cjogc3RyaW5nKTogYm9vbGVhbiA9PiB7XHJcblx0cmV0dXJuIC9uZXdcXHMrUHJvbWlzZS8udGVzdChzdHIpO1xyXG59O1xyXG5cclxuLy8g5L+u5pS5IGNvbXBpbGVUc1RvSnMg5Ye95pWw5Lul5pu05aW95Zyw5aSE55CGIFByb21pc2VcclxuZXhwb3J0IGNvbnN0IGNvbXBpbGVUc1RvSnMgPSAodHNDb2RlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xyXG5cdC8vIOWmguaenOaYryBQcm9taXNlIOaehOmAoOWHveaVsO+8jOS4jemcgOimgemineWkluWkhOeQhlxyXG5cdGlmIChjb250YWluc1Byb21pc2VDb25zdHJ1Y3Rvcih0c0NvZGUpKSB7XHJcblx0XHRyZXR1cm4gdHNDb2RlO1xyXG5cdH1cclxuXHJcblx0Y29uc3QgcmVzdWx0ID0gdHMudHJhbnNwaWxlTW9kdWxlKHRzQ29kZSwge1xyXG5cdFx0Y29tcGlsZXJPcHRpb25zOiB7XHJcblx0XHRcdG1vZHVsZTogdHMuTW9kdWxlS2luZC5Db21tb25KUyxcclxuXHRcdFx0dGFyZ2V0OiB0cy5TY3JpcHRUYXJnZXQuRVMyMDE1LFxyXG5cdFx0XHQvLyDlkK/nlKjlvILmraXlh73mlbDmlK/mjIFcclxuXHRcdFx0bGliOiBbJ2VzMjAxNScsICdlczIwMTUucHJvbWlzZScsICdkb20nXSxcclxuXHRcdH0sXHJcblx0fSk7XHJcblx0cmV0dXJuIHJlbW92ZVRyYWlsaW5nU2VtaWNvbG9uKHJlc3VsdC5vdXRwdXRUZXh0KTtcclxufTtcclxuXHJcbmNvbnN0IHJlbW92ZVRyYWlsaW5nU2VtaWNvbG9uID0gKGZ1bmNTdHI6IHN0cmluZyk6IHN0cmluZyA9PiB7XHJcblx0Ly8g5YWI5Y676Zmk5YmN5ZCO56m655m9XHJcblx0Y29uc3QgdHJpbW1lZCA9IGZ1bmNTdHIudHJpbSgpO1xyXG5cdC8vIOWPquabv+aNouacgOWQjuS4gOS4quWIhuWPt++8iOWmguaenOWug+S4jeWcqOiKseaLrOWPt+WGhe+8iVxyXG5cdGlmICh0cmltbWVkLmVuZHNXaXRoKCc7JykpIHtcclxuXHRcdHJldHVybiB0cmltbWVkLnNsaWNlKDAsIC0xKTtcclxuXHR9XHJcblx0cmV0dXJuIHRyaW1tZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNKU09OUGFyc2FibGUgPSAoc3RyOiBhbnkpID0+IHtcclxuXHR0cnkge1xyXG5cdFx0SlNPTi5wYXJzZShzdHIpO1xyXG5cdFx0cmV0dXJuIHRydWU7XHJcblx0fSBjYXRjaCAoZSkge1xyXG5cdFx0Ly8gbGV0IHN0cklzT2JqID0gL1xce1tefV0qXFx9fFxcW1teXFxdXSpcXF0vLnRlc3Qoc3RyKVxyXG5cdFx0Ly8gaWYoc3RySXNPYmope1xyXG5cdFx0Ly8gXHRjb25zb2xlLmVycm9yKCdKU09OIOino+aekOWksei0pTonLCBlLCAnXFxu5Y6f5aeL5a2X56ym5LiyOicsIHN0cilcclxuXHRcdC8vIH1cclxuXHRcdHJldHVybiBmYWxzZTtcclxuXHR9XHJcbn07XHJcblxyXG4vKipcclxuICog5qC55o2u5oyH5a6a55qE6ZSu5pWw57uE6L+H5ruk5a+56LGhXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogLSDopoHov4fmu6TnmoTljp/lp4vlr7nosaFcclxuICogQHBhcmFtIHtBcnJheX0ga2V5cyAtIOmcgOimgeS/neeVmeeahOmUruaVsOe7hFxyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSDov4fmu6TlkI7nmoTmlrDlr7nosaFcclxuICovXHJcbmV4cG9ydCBjb25zdCBmaWx0ZXJPYmplY3RCeUtleXMgPSAob2JqOiBhbnksIGtleXM6IHN0cmluZ1tdKSA9PiB7XHJcblx0Ly8g5Y+C5pWw5qCh6aqMXHJcblx0aWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCB8fCBBcnJheS5pc0FycmF5KG9iaikpIHtcclxuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ+esrOS4gOS4quWPguaVsOW/hemhu+aYr+aZrumAmuWvueixoScpO1xyXG5cdH1cclxuXHJcblx0aWYgKCFBcnJheS5pc0FycmF5KGtleXMpKSB7XHJcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCfnrKzkuozkuKrlj4LmlbDlv4XpobvmmK/mlbDnu4QnKTtcclxuXHR9XHJcblxyXG5cdC8vIOS9v+eUqHJlZHVjZeWIm+W7uuaWsOWvueixoVxyXG5cdHJldHVybiBrZXlzLnJlZHVjZSgoYWNjOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XHJcblx0XHQvLyDlj6rmnInlvZPljp/lr7nosaHmnInor6XlsZ7mgKfml7bmiY3mt7vliqDliLDmlrDlr7nosaFcclxuXHRcdGlmIChrZXkgaW4gb2JqKSB7XHJcblx0XHRcdGFjY1trZXldID0gb2JqW2tleV07XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gYWNjO1xyXG5cdH0sIHt9KTtcclxufTtcclxuLyoqXHJcbiAqIOiHquWumuS5ieWHveaVsOWOu+mZpOepuuWtl+espuS4slxyXG4gKiBAcGFyYW0gYWN0IFxyXG4gKiBAcmV0dXJucyBcclxuICovXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0QWN0ID0gKGFjdDphbnkpID0+e1xyXG5cdGFjdC5mb3JFYWNoKCh2OmFueSkgPT4ge1xyXG5cdFx0aWYodi5oYXNPd25Qcm9wZXJ0eSgnYnRuSGlkZGVuJykgJiZ0eXBlb2Ygdi5idG5IaWRkZW4gIT0gJ2Z1bmN0aW9uJyl7XHJcblx0XHRcdGRlbGV0ZSB2LmJ0bkhpZGRlblxyXG5cdFx0fVxyXG5cdFx0aWYodi5oYXNPd25Qcm9wZXJ0eSgnYnRuRGlzYWJsZWQnKSAmJnR5cGVvZiB2LmJ0bkRpc2FibGVkICE9ICdmdW5jdGlvbicpe1xyXG5cdFx0XHRkZWxldGUgdi5idG5EaXNhYmxlZFxyXG5cdFx0fVxyXG5cdFx0aWYodi5oYXNPd25Qcm9wZXJ0eSgnb25DbGljaycpICYmdHlwZW9mIHYub25DbGljayAhPSAnZnVuY3Rpb24nKXtcclxuXHRcdFx0ZGVsZXRlIHYub25DbGlja1xyXG5cdFx0fVxyXG5cdH0pXHJcblx0cmV0dXJuIGFjdDtcclxufVxyXG5cclxuLyoqXHJcbiAqIGZvcm1wYWdlIOmAmueUqGNvbnRlbnTlh73mlbDovaznp7tcclxuICogQHBhcmFtIGNvbnRlbnQgXHJcbiAqIEBwYXJhbSB0aGlzQXJnXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgY2hhbmdlQ29udGVudCA9IChjb250ZW50OiBhbnksdGhpc0FyZzphbnkpICA9PntcclxuXHQvLyBAdHMtaWdub3JlXHJcblx0Y29uc3QgaXNJMThuID0gd2luZG93LmFwcElzSTE4blxyXG5cdGNvbnRlbnQgPSBwYXJzZUZ1bmN0aW9ucyhjb250ZW50LHRoaXNBcmcpO1xyXG5cdGxldCB7IGdyaWRMaXN0LCBocmVmQnRuTGlzdCwgZ2V0UHJtLCBncm91cHMsIHN0YXR1c0tleSwgc3RhdHVzLCBzdGF0dXNTdGVwcyxzdGF0dXNDb25mID0gbnVsbCB9ID0gY29udGVudDtcclxuXHRpZiAoc3RhdHVzS2V5KSB7XHJcblx0XHR0aGlzQXJnLnN0YXR1c0tleSA9IHN0YXR1c0tleTtcclxuXHRcdHN0YXR1c1N0ZXBzLmZvckVhY2goKGl0ZW06YW55KSA9PiB7XHJcblx0XHRcdGlmKGlzSTE4biAmJiAoIWl0ZW0uaGFzT3duUHJvcGVydHkoJ2kxOG5LZXknKSB8fCBpdGVtLmkxOG5LZXkgPT0gJycpKXtcclxuXHRcdFx0XHRpdGVtLmkxOG5LZXkgPSBgdGFibGVzLiR7Z2V0UHJtLm1vZGVsTmFtZX0uJHtzdGF0dXNLZXl9JHtpdGVtLnZhbHVlfWBcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHR0aGlzQXJnLnN0ZXBzID0gc3RhdHVzU3RlcHNcclxuXHRcdHN0YXR1c0NvbmYgJiYgKHRoaXNBcmcuc3RhdHVzQ29uZiA9IHN0YXR1c0NvbmYpXHJcblx0fVxyXG5cclxuXHR0aGlzQXJnLmFjdGlvbnMgPSBjb252ZXJ0QWN0KGNvbnRlbnQuYWN0aW9ucylcclxuXHRjb250ZW50LmZvcm1EaXNhYmxlZCAmJiAodGhpc0FyZy5mb3JtRGlzYWJsZWQgPSBjb250ZW50LmZvcm1EaXNhYmxlZCk7XHJcblx0dGhpc0FyZy5nZXRQcm0gPSBnZXRQcm07XHJcblx0dGhpc0FyZy5nZXRQcm0ub3JnRmllbGQgPSBjb250ZW50Lm9yZ0ZpZWxkIHx8ICcnO1xyXG5cdHRoaXNBcmcuZ3JpZHMgPSBbXTtcclxuXHRsZXQgZml0ZXJQcmVsb2FkczphbnlbXSA9IFtdXHJcblxyXG5cdGNvbnZlcnRGb3JtKHRoaXNBcmcsZ3JvdXBzLGNvbnRlbnQuc291cmNlRGF0YSlcclxuXHRjb252ZXJ0R3JpZCh0aGlzQXJnLGdyaWRMaXN0LGZpdGVyUHJlbG9hZHMpXHJcblx0XHJcblx0dGhpc0FyZy5mb3JtRGV0YWlsID0gY29udGVudC5mb3JtRGV0YWlsXHJcblx0dGhpc0FyZy5zYXZlRnVuYyA9IGNvbnRlbnQuc2F2ZUZ1bmNcclxuXHR0aGlzQXJnLmlzTG9nID0gY29udGVudC5zb3VyY2VEYXRhLm1vZGVsLmxvZztcclxuXHR0aGlzQXJnLmdldFBybVsnZ2V0TG9nJ10gPSBjb250ZW50LnNvdXJjZURhdGEubW9kZWwubG9nO1xyXG5cdHRoaXNBcmcuZ2V0UHJtWydmaXRlclByZWxvYWRzJ10gPSBmaXRlclByZWxvYWRzXHJcblx0dGhpc0FyZy5ocmVmQnRuTGlzdCA9IGhyZWZCdG5MaXN0O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgY2FsY1Jvd1NwYW4gPSAocGFyYW1zOiBhbnksIGZpZWxkPzogc3RyaW5nKSA9PiB7XHJcblx0ZmllbGQgPSBmaWVsZCB8fCBwYXJhbXMuY29sRGVmLmZpZWxkO1xyXG5cdGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHBhcmFtcy5kYXRhW2ZpZWxkIV07XHJcblx0Y29uc3QgY3VycmVudFJvd0luZGV4ID0gcGFyYW1zLm5vZGUucm93SW5kZXg7XHJcblxyXG5cdGxldCByb3dTcGFuID0gMTtcclxuXHJcblx0Zm9yIChsZXQgaSA9IGN1cnJlbnRSb3dJbmRleCArIDE7IGkgPCBwYXJhbXMuYXBpLmdldERpc3BsYXllZFJvd0NvdW50KCk7IGkrKykge1xyXG5cdFx0Y29uc3Qgbm9kZSA9IHBhcmFtcy5hcGkuZ2V0RGlzcGxheWVkUm93QXRJbmRleChpKTtcclxuXHRcdGlmIChub2RlLmRhdGFbZmllbGQhXSA9PT0gY3VycmVudFZhbHVlKSB7XHJcblx0XHRcdHJvd1NwYW4rKztcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0aWYgKGN1cnJlbnRSb3dJbmRleCA+IDAgJiYgcGFyYW1zLmFwaS5nZXREaXNwbGF5ZWRSb3dBdEluZGV4KGN1cnJlbnRSb3dJbmRleCAtIDEpLmRhdGFbZmllbGQhXSA9PT0gY3VycmVudFZhbHVlKSB7XHJcblx0XHRyZXR1cm4gMTtcclxuXHR9XHJcblx0cmV0dXJuIHJvd1NwYW47XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0Q29sID0gKG9wdGlvbnM6YW55LGNvbDogYW55W10sIGF1dGhMZXZlbDpudW1iZXIsbW9kZWxOYW1lPzogc3RyaW5nLGRyYWdTb3J0PzpzdHJpbmcsKSA9PiB7XHJcblx0Ly8gQHRzLWlnbm9yZVxyXG5cdGNvbnN0IGlzSTE4biA9IHdpbmRvdy5hcHBJc0kxOG5cclxuXHQvLyBjb25zb2xlLmxvZygnaXNJMThuLS0tLS0nLGlzSTE4bilcclxuXHRjb2wuZm9yRWFjaCgoaXRlbTogYW55LGluZGV4Om51bWJlcikgPT4ge1xyXG5cdFx0aXRlbS5oaWRlID0gaXRlbS5oaWRlQ29sO1xyXG5cdFx0aWYgKGF1dGhMZXZlbCA8IDMpIHtcclxuXHRcdFx0aXRlbS5lZGl0YWJsZSA9IGZhbHNlO1xyXG5cdFx0fVxyXG5cdFx0aWYoZHJhZ1NvcnQgJiYgaW5kZXggPT09MCl7XHJcblx0XHRcdGl0ZW0ucm93RHJhZyA9IHRydWVcclxuXHRcdH1cclxuXHRcdGlmKGlzSTE4biAmJiAoIWl0ZW0uaGFzT3duUHJvcGVydHkoJ2kxOG5LZXknKSB8fCBpdGVtLmkxOG5LZXkgPT0gJycpKXtcclxuXHRcdFx0aXRlbS5pMThuS2V5ID0gYHRhYmxlcy4ke21vZGVsTmFtZX0uJHtpdGVtLmZpZWxkfWBcclxuXHRcdH1cclxuXHRcdGlmKGl0ZW0uaGFzT3duUHJvcGVydHkoJ3RleHRXcmFwJykgJiYgaXRlbS50ZXh0V3JhcCkge1xyXG5cdFx0XHRpdGVtLmF1dG9IZWlnaHQgPSB0cnVlXHJcblx0XHRcdGl0ZW0uY2VsbENsYXNzID0gJ2NlbGwtd3JhcC10ZXh0J1xyXG5cdFx0fVxyXG5cdFx0aWYoaXRlbS5yb3dTcGFuQ29uZil7XHJcblx0XHRcdGxldCByb3dTcGFuID0ge1xyXG5cdFx0XHRcdHJvd1NwYW46IChwYXJhbXM6IGFueSkgPT4gY2FsY1Jvd1NwYW4ocGFyYW1zKSxcclxuXHRcdFx0XHRjZWxsUmVuZGVyZXI6ICdyb3dTcGFuUmVuZGVyZXInLFxyXG5cdFx0XHRcdGNlbGxSZW5kZXJlclBhcmFtczoge1xyXG5cdFx0XHRcdFx0cm93U3BhbjogKHBhcmFtczogYW55KSA9PiBjYWxjUm93U3BhbihwYXJhbXMpLFxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRPYmplY3QuYXNzaWduKGl0ZW0scm93U3BhbilcclxuXHRcdFx0b3B0aW9ucy5zdXBwcmVzc1Jvd1RyYW5zZm9ybSA9IHRydWVcclxuXHRcdFx0b3B0aW9ucy5yb3dDbGFzcyA9ICdyb3dTcGFuJ1xyXG5cdFx0fVxyXG5cdFx0Ly8gaWYoaXRlbS5lZGl0YWJsZSl7XHJcblx0XHQvLyBcdGl0ZW0uaGVhZGVyQ2xhc3MgPSBpdGVtLmhhc093blByb3BlcnR5KCdoZWFkZXJDbGFzcycpIFxyXG5cdFx0Ly8gXHRcdD8gYCR7aXRlbS5oZWFkZXJDbGFzc30gZWRpdGFibGUtY29sdW1uLWhlYWRlcmAgXHJcblx0XHQvLyBcdFx0OiAnZWRpdGFibGUtY29sdW1uLWhlYWRlcidcclxuXHRcdC8vIH1cclxuXHR9KTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGdyaWRPcHRpb25zSG9va2VyID0gKGdyaWRPcHRpb25zOiBhbnkpID0+IHtcclxuXHRncmlkT3B0aW9ucz8uY29sdW1uRGVmcz8uZm9yRWFjaCgoY29sOiBhbnkpID0+IHtcclxuXHRcdGlmIChjb2wuaGlkZUNvbCkge1xyXG5cdFx0XHRjb2wuaGlkZSA9IGNvbC5oaWRlQ29sO1xyXG5cdFx0XHRkZWxldGUgY29sLmhpZGVDb2w7XHJcblx0XHR9XHJcblx0XHQvLyBAdHMtaWdub3JlXHJcblx0XHRjb25zdCBpc0kxOG4gPSB3aW5kb3cuYXBwSXNJMThuXHJcblx0XHRpZiggaXNJMThuICYmICghY29sLmhhc093blByb3BlcnR5KCdpMThuS2V5JykgfHwgY29sLmkxOG5LZXkgPT0gJycpKXtcclxuXHRcdFx0XHRjb2wuaTE4bktleSA9IGB0YWJsZXMuJHtncmlkT3B0aW9ucy5tb2RlbE5hbWV9LiR7Y29sLmZpZWxkfWBcclxuXHRcdFx0fVxyXG5cdFx0aWYoY29sLmhhc093blByb3BlcnR5KCd0ZXh0V3JhcCcpICYmIGNvbC50ZXh0V3JhcCkge1xyXG5cdFx0XHRjb2wuYXV0b0hlaWdodCA9IHRydWVcclxuXHRcdFx0Y29sLmNlbGxDbGFzcyA9ICdjZWxsLXdyYXAtdGV4dCdcclxuXHRcdH1cclxuXHRcdGlmKGNvbC5yb3dTcGFuQ29uZil7XHJcblx0XHRcdGxldCByb3dTcGFuID0ge1xyXG5cdFx0XHRcdHJvd1NwYW46IChwYXJhbXM6IGFueSkgPT4gY2FsY1Jvd1NwYW4ocGFyYW1zKSxcclxuXHRcdFx0XHRjZWxsUmVuZGVyZXI6ICdyb3dTcGFuUmVuZGVyZXInLFxyXG5cdFx0XHRcdGNlbGxSZW5kZXJlclBhcmFtczoge1xyXG5cdFx0XHRcdFx0cm93U3BhbjogKHBhcmFtczogYW55KSA9PiBjYWxjUm93U3BhbihwYXJhbXMpLFxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRPYmplY3QuYXNzaWduKGNvbCxyb3dTcGFuKVxyXG5cdFx0XHRncmlkT3B0aW9ucy5zdXBwcmVzc1Jvd1RyYW5zZm9ybSA9IHRydWVcclxuXHRcdFx0Z3JpZE9wdGlvbnMucm93Q2xhc3MgPSAncm93U3BhbidcclxuXHRcdH1cclxuXHR9KTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNvbnZlcnRHcmlkID0gKHRoaXNBcmc6YW55LGdyaWRMaXN0OmFueSxmaXRlclByZWxvYWRzOmFueSkgPT4ge1xyXG5cdGdyaWRMaXN0LmZvckVhY2goYXN5bmMgKGl0ZW06IGFueSkgPT4ge1xyXG5cdFx0IWl0ZW0udHlwZSAmJiAoaXRlbS50eXBlID0gJ2dyaWQnKVxyXG5cdFx0bGV0IGdyaWQ6YW55ID0ge3R5cGU6aXRlbS50eXBlfVxyXG5cdFx0aWYoaXRlbS5maXRlclByZWxvYWRzIGluc3RhbmNlb2YgQXJyYXkpe1xyXG5cdFx0XHRmaXRlclByZWxvYWRzID0gWy4uLmZpdGVyUHJlbG9hZHMsIC4uLml0ZW0uZml0ZXJQcmVsb2Fkc11cclxuXHRcdH1cclxuXHRcdGlmKGl0ZW0udHlwZSA9PSAnZ3JpZCcpe1xyXG5cdFx0XHRsZXQge1xyXG5cdFx0XHRcdGdyaWRPcHRpb25zOiB7IGNvbHVtbkRlZnMsIC4uLnJlc3RHcmlkT3B0aW9ucyB9LFxyXG5cdFx0XHRcdHN1YlRhYmxlU291cmNlLFxyXG5cdFx0XHRcdHN1YkRhdGFLZXksXHJcblx0XHRcdFx0dGl0bGUsXHJcblx0XHRcdFx0c2VsZWN0RGF0YUNiLFxyXG5cdFx0XHRcdGZrLFxyXG5cdFx0XHRcdG1haW5GaWVsZCxcclxuXHRcdFx0XHR1bmlxdWVGaWVsZCxcclxuXHRcdFx0XHRhZGREYXRhQ2IsXHJcblx0XHRcdFx0c2hvd0RlbGV0ZSA9IHRydWUsXHJcblx0XHRcdFx0c2Nyb2xsSGVpZ2h0LFxyXG5cdFx0XHRcdGRyYWdTb3J0LFxyXG5cdFx0XHRcdHNlbGVjdGlvbk1vZGUsXHJcblx0XHRcdFx0aXNSb3dTZWxlY3RhYmxlXHJcblx0XHRcdH0gPSBpdGVtO1xyXG5cdFx0XHRncmlkID0geyBzdWJUYWJsZVNvdXJjZSwgc3ViRGF0YUtleSwgdGl0bGUsc2hvd0RlbGV0ZSwgLi4uZ3JpZH07XHJcblx0XHRcdGxldCBncmlkT3B0aW9ucyA9IHtcclxuXHRcdFx0XHQuLi5yZXN0R3JpZE9wdGlvbnMsXHJcblx0XHRcdFx0ZmssXHJcblx0XHRcdFx0c3ViVGFibGVTb3VyY2UsXHJcblx0XHRcdFx0c3ViRGF0YUtleSxcclxuXHRcdFx0XHRtYWluRmllbGQsXHJcblx0XHRcdH07XHJcblx0XHRcdC8vIEB0cy1pZ25vcmVcclxuXHRcdFx0aWYod2luZG93LmFwcElzSTE4biAmJiAoIWl0ZW0uaGFzT3duUHJvcGVydHkoJ2kxOG5LZXknKSB8fCBpdGVtLmkxOG5LZXkgPT0gJycpKXtcclxuXHRcdFx0XHRncmlkLmkxOG5LZXkgPSBgdGFibGVzLiR7dGhpc0FyZy5nZXRQcm0ubW9kZWxOYW1lfS4ke3N1YkRhdGFLZXl9YFxyXG5cdFx0XHR9XHJcblx0XHRcdGlmKGdyaWRPcHRpb25zLnJvd01vZGVsVHlwZSA9PSAnY2xpZW50U2lkZScpe1xyXG5cdFx0XHRcdGdyaWRPcHRpb25zLnN1cHByZXNzUm93VmlydHVhbGlzYXRpb24gPSB0cnVlXHJcblx0XHRcdH1cclxuXHRcdFx0aWYoc2Nyb2xsSGVpZ2h0KXtcclxuXHRcdFx0XHRncmlkT3B0aW9ucy5zY3JvbGxIZWlnaHQgPSBzY3JvbGxIZWlnaHRcclxuXHRcdFx0fVxyXG5cdFx0XHRpZihkcmFnU29ydCl7XHJcblx0XHRcdFx0Z3JpZE9wdGlvbnMucm93RHJhZ01hbmFnZWQgPSB0cnVlXHJcblx0XHRcdFx0Z3JpZE9wdGlvbnMuZHJhZ1NvcnQgPSBkcmFnU29ydFxyXG5cdFx0XHR9XHJcblx0XHRcdGlmKHNlbGVjdGlvbk1vZGUpIHtcclxuXHRcdFx0XHRncmlkT3B0aW9ucy5zZWxlY3Rpb25Nb2RlID0gc2VsZWN0aW9uTW9kZVxyXG5cdFx0XHRcdGlmKHNlbGVjdGlvbk1vZGUgIT0gJ25vbmUnKXtcclxuXHRcdFx0XHRcdGdyaWRPcHRpb25zLnJvd1NlbGVjdGlvbiA9IHtcclxuXHRcdFx0XHRcdFx0bW9kZTogc2VsZWN0aW9uTW9kZSA9PSAnc2luZ2xlJyA/ICdzaW5nbGVSb3cnIDogJ211bHRpUm93JyxcclxuXHRcdFx0XHRcdFx0aXNSb3dTZWxlY3RhYmxlOiBpc1Jvd1NlbGVjdGFibGUgPyBpc1Jvd1NlbGVjdGFibGU6bnVsbFxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0ICBncmlkT3B0aW9ucy5yb3dTZWxlY3Rpb24gPSB1bmRlZmluZWRcclxuXHRcdFx0IFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGNvbnZlcnRDb2woZ3JpZE9wdGlvbnMsY29sdW1uRGVmcyx0aGlzQXJnLmF1dGhMZXZlbCwgZ3JpZE9wdGlvbnMubW9kZWxOYW1lLGRyYWdTb3J0KTtcclxuXHRcdFx0Z3JpZE9wdGlvbnMuY29sdW1uRGVmcyA9IGNvbHVtbkRlZnM7XHJcblx0XHRcdGlmIChzdWJUYWJsZVNvdXJjZSA9PT0gJ3NlbGVjdCcpIHtcclxuXHRcdFx0XHR0aGlzQXJnLndlYmdldCh7IGNvZGU6IGl0ZW0uc2VsZWN0TW9kZWxDb2RlIH0pLnN1YnNjcmliZSgocmVzOmFueSkgPT4ge1xyXG5cdFx0XHRcdFx0bGV0IHNlbGVjdENvbnRlbnQgPSBwYXJzZUZ1bmN0aW9ucyhKU09OLnBhcnNlKHJlcy5jb250ZW50KSwgdGhpc0FyZyk7XHJcblx0XHRcdFx0XHRncmlkLnNlbGVjdE9wdGlvbnMgPSBzZWxlY3RDb250ZW50Py5ncmlkT3B0aW9ucztcclxuXHRcdFx0XHRcdGdyaWQuc2VsZWN0T3B0aW9ucy5yb3dNb2RlbFR5cGUgPSBncmlkLnNlbGVjdE9wdGlvbnMucm93TW9kZWxUeXBlIHx8ICdzZXJ2ZXJTaWRlJztcclxuXHRcdFx0XHRcdGlmIChncmlkLnNlbGVjdE9wdGlvbnMucm93TW9kZWxUeXBlID09ICdzZXJ2ZXJTaWRlJykge1xyXG5cdFx0XHRcdFx0XHRncmlkLnNlbGVjdE9wdGlvbnMuc2VydmVyRnVuYyA9IGdyaWQuc2VsZWN0T3B0aW9ucy5zZXJ2ZXJGdW5jIHx8IHRoaXNBcmcud2ViX3NlYXJjaC5iaW5kKHRoaXNBcmcpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Z3JpZC5zZWxlY3RPcHRpb25zLmNsaWVudEZ1bmMgPSBncmlkLnNlbGVjdE9wdGlvbnMuY2xpZW50RnVuYyB8fCB0aGlzQXJnLndlYl9zZWFyY2guYmluZCh0aGlzQXJnKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGdyaWQudW5pcXVlRmllbGQgPSB1bmlxdWVGaWVsZDtcclxuXHRcdFx0XHRcdGdyaWQuc2VsZWN0RGF0YUNiID0gc2VsZWN0RGF0YUNiO1xyXG5cdFx0XHRcdFx0Z3JpZC5zZWxlY3RPcHRpb25zLnNjcm9sbEhlaWdodCA9ICczMDBweCc7XHJcblx0XHRcdFx0XHRncmlkLnNlbGVjdE9wdGlvbnMuc2VhcmNoUHJtID0gc2VsZWN0Q29udGVudC5zZWFyY2hQcm1cclxuXHRcdFx0XHRcdGdyaWRPcHRpb25zSG9va2VyKGdyaWQuc2VsZWN0T3B0aW9ucyk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0Z3JpZC5zZWFyY2hQcm0gPSB7IC4uLnRoaXNBcmcuc2VhcmNoUHJtIH07XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0YWRkRGF0YUNiICYmIChncmlkT3B0aW9ucy5hZGREYXRhQ2IgPSBhZGREYXRhQ2IpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGdyaWQuZ3JpZE9wdGlvbnMgPSBncmlkT3B0aW9ucztcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGl0ZW0uaW50ZXJhY3RpdmVMYWJlbCA9IHRydWVcclxuXHRcdFx0Z3JpZCA9IHtcclxuXHRcdFx0XHQuLi5pdGVtXHJcblx0XHRcdH1cclxuXHRcdFx0Z3JpZC5mb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuXHRcdH1cclxuXHRcdHRoaXNBcmcuZ3JpZHMucHVzaChncmlkKTtcclxuXHR9KTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNvbnZlcnRGb3JtID0gKHRoaXNBcmc6YW55LCBncm91cEFycjphbnksc291cmNlRGF0YTphbnkpID0+IHtcclxuXHRncm91cEFyci5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuXHRcdGlmICh0aGlzQXJnLmF1dGhMZXZlbCA8IDMpIHtcclxuXHRcdFx0aXRlbVtmb3JtVHlwZVRvUHJvcHNbaXRlbS50eXBlXV0uZGlzYWJsZWQgPSB0cnVlO1xyXG5cdFx0fVxyXG5cdH0pO1xyXG5cdHRoaXNBcmcuZm9ybU9wdGlvbnMgPSB7XHJcblx0XHRmaWVsZHM6IFtcclxuXHRcdFx0e1xyXG5cdFx0XHRcdGdyb3VwQ2xhc3M6ICdmbGV4IGZsZXgtcm93IGZsZXgtd3JhcCcsXHJcblx0XHRcdFx0Z3JvdXA6IGdyb3VwQXJyLFxyXG5cdFx0XHR9LFxyXG5cdFx0XSxcclxuXHRcdGZvcm06IG5ldyBGb3JtR3JvdXAoe30pLFxyXG5cdFx0bWFpbkZpZWxkOiBzb3VyY2VEYXRhLm1vZGVsLm1haW5GaWVsZHMsXHJcblx0XHRtb2RlbE5hbWU6IHNvdXJjZURhdGEubW9kZWwubW9kZWxOYW1lXHJcblx0fTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNsZWFyTG9jYWwgPSAoKSA9PiB7XHJcblx0bGV0IHRoZW1lQ29uZmlnU3RhdGUgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RoZW1lQ29uZmlnU3RhdGUnKVxyXG5cdHdpbmRvdy5sb2NhbFN0b3JhZ2UuY2xlYXIoKVxyXG5cdGlmKHRoZW1lQ29uZmlnU3RhdGUpe1xyXG5cdFx0d2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0aGVtZUNvbmZpZ1N0YXRlJyx0aGVtZUNvbmZpZ1N0YXRlKVxyXG5cdH1cclxuXHR3aW5kb3cuc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgcGFnZUxpc3RHcmlkT3B0aW9ucyA9IChncmlkT3B0aW9uczogYW55LHRoaXNBcmc6YW55KSA9PiB7XHJcblx0Z3JpZE9wdGlvbnMuc2Nyb2xsSGVpZ2h0ID0gJ2NhbGMoMTAwdmggLSA5NXB4KSc7XHJcblx0Z3JpZE9wdGlvbnMucm93TW9kZWxUeXBlID0gZ3JpZE9wdGlvbnMucm93TW9kZWxUeXBlIHx8ICdzZXJ2ZXJTaWRlJztcclxuXHRpZiAoZ3JpZE9wdGlvbnMucm93TW9kZWxUeXBlID09ICdzZXJ2ZXJTaWRlJykge1xyXG5cdFx0Z3JpZE9wdGlvbnMuc2VydmVyRnVuYyA9IGdyaWRPcHRpb25zLnNlcnZlckZ1bmMgfHwgdGhpc0FyZy53ZWJfc2VhcmNoLmJpbmQodGhpc0FyZyk7XHJcblx0fSBlbHNlIHtcclxuXHRcdGdyaWRPcHRpb25zLmNsaWVudEZ1bmMgPSBncmlkT3B0aW9ucy5jbGllbnRGdW5jIHx8IHRoaXNBcmcud2ViX3NlYXJjaC5iaW5kKHRoaXNBcmcpO1xyXG5cdH1cclxuXHRpZihncmlkT3B0aW9ucy5zZWxlY3Rpb25Nb2RlKSB7XHJcblx0XHRcdC8vIGdyaWRPcHRpb25zLnNlbGVjdGlvbk1vZGUgPSBzZWxlY3Rpb25Nb2RlXHJcblx0XHRpZihncmlkT3B0aW9ucy5zZWxlY3Rpb25Nb2RlICE9ICdub25lJyl7XHJcblx0XHRcdGdyaWRPcHRpb25zLnJvd1NlbGVjdGlvbiA9IHtcclxuXHRcdFx0XHRtb2RlOiBncmlkT3B0aW9ucy5zZWxlY3Rpb25Nb2RlID09ICdzaW5nbGUnID8gJ3NpbmdsZVJvdycgOidtdWx0aVJvdycsXHJcblx0XHRcdFx0aXNSb3dTZWxlY3RhYmxlOiBncmlkT3B0aW9ucy5pc1Jvd1NlbGVjdGFibGUgPyBncmlkT3B0aW9ucy5pc1Jvd1NlbGVjdGFibGUgOiB1bmRlZmluZWRcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Z3JpZE9wdGlvbnMucm93U2VsZWN0aW9uID0gdW5kZWZpbmVkXHJcblx0XHR9XHJcblx0fVxyXG5cdGdyaWRPcHRpb25zSG9va2VyKGdyaWRPcHRpb25zKVxyXG5cdHJldHVybiBncmlkT3B0aW9uc1xyXG59Il19
423
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3NoYXJlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNqQyxNQUFNLENBQUMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUN6QyxHQUFHO0tBQ0QsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxXQUFXO0tBQzlCLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxXQUFXO0tBQy9DLFdBQVcsRUFBRSxDQUFDLE9BQU87S0FDckIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVE7S0FDckIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ2xFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUVaLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsRUFBRTtJQUNwQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENB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SUFBRyxXQUFXLENBQUMsYUFBYSxJQUFJLE1BQU0sRUFBQyxDQUFDO1lBQ3ZDLFdBQVcsQ0FBQyxZQUFZLEdBQUc7Z0JBQzFCLElBQUksRUFBRSxXQUFXLENBQUMsYUFBYSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQSxVQUFVO2dCQUNyRSxlQUFlLEVBQUUsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsU0FBUzthQUN0RixDQUFBO1FBQ0YsQ0FBQzthQUFNLENBQUM7WUFDUCxXQUFXLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQTtRQUNyQyxDQUFDO0lBQ0YsQ0FBQztJQUNELFVBQVUsQ0FBQyxXQUFXLEVBQUMsV0FBVyxDQUFDLFVBQVcsRUFBQyxDQUFDLENBQUMsQ0FBQTtJQUNqRCxPQUFPLFdBQVcsQ0FBQTtBQUNuQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBzaGFyZVJlcGxheSwgcGlwZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcclxuaW1wb3J0IHsgZm9ybVR5cGVUb1Byb3BzIH0gZnJvbSAnLi4vLi4vcHVibGljLWFwaSc7XHJcbmltcG9ydCBOUCBmcm9tICdudW1iZXItcHJlY2lzaW9uJ1xyXG5leHBvcnQgbGV0IHRvUGFzY2FsQ2FzZSA9IChzdHI6IHN0cmluZykgPT5cclxuXHRzdHJcclxuXHRcdC5yZXBsYWNlKC9fL2csICcgJykgLy8g5LiL5YiS57q/5pu/5o2i5Li656m65qC8XHJcblx0XHQucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgJyQxICQyJykgLy8g5bCP6am85bOw5YiG5Ymy5Li65Y2V6K+NXHJcblx0XHQudG9Mb3dlckNhc2UoKSAvLyDovazkuLrlsI/lhplcclxuXHRcdC5zcGxpdCgvXFxzKy8pIC8vIOaMieepuuagvOWIhuWJslxyXG5cdFx0Lm1hcCgod29yZCkgPT4gKHdvcmQgPyB3b3JkWzBdLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpIDogJycpKVxyXG5cdFx0LmpvaW4oJycpO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlVW5pcXVlSWQgPSAoKSA9PiB7XHJcblx0Y29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKS50b1N0cmluZygzNik7IC8vIOaXtumXtOaIs+i9rDM26L+b5Yi257yp55+t6ZW/5bqmXHJcblx0Y29uc3QgcmFuZG9tID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDQpOyAvLyDpmo/mnLrpg6jliIZcclxuXHRyZXR1cm4gYCR7dGltZXN0YW1wfSR7cmFuZG9tfWA7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQ2lyY3VsYXJJdGVyYXRvciA9IChhcnJheTogYW55W10pID0+IHtcclxuXHRsZXQgaW5kZXggPSAtMTtcclxuXHRyZXR1cm4ge1xyXG5cdFx0bmV4dDogKCkgPT4ge1xyXG5cdFx0XHRpbmRleCsrO1xyXG5cdFx0XHRyZXR1cm4gYXJyYXlbaW5kZXggJSBhcnJheS5sZW5ndGhdO1xyXG5cdFx0fSxcclxuXHRcdHByZXY6ICgpID0+IHtcclxuXHRcdFx0aW5kZXgtLTtcclxuXHRcdFx0cmV0dXJuIGFycmF5WygoaW5kZXggJSBhcnJheS5sZW5ndGgpICsgYXJyYXkubGVuZ3RoKSAlIGFycmF5Lmxlbmd0aF07XHJcblx0XHR9LFxyXG5cdH07XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgcGFyc2VGdW5jdGlvbnMgPSAob2JqOiBhbnksIF90aGlzOiBhbnkpOiBhbnkgPT4ge1xyXG5cdGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykge1xyXG5cdFx0Ly8g5bCd6K+V5qOA5rWL5piv5ZCm5piv5Ye95pWw5a2X56ym5LiyXHJcblx0XHRpZiAoKG9iai5pbmNsdWRlcygnPT4nKSB8fCBvYmouaW5jbHVkZXMoJ1Byb21pc2UnKSkgJiYgIWlzSlNPTlBhcnNhYmxlKG9iaikpIHtcclxuXHRcdFx0Y29uc3QgbyA9IGNvbXBpbGVUc1RvSnMob2JqKTtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coJ+ino+aekOWHveaVsDonLCBvYmopO1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdGNvbnN0IHNhbmRib3ggPSB7XHJcblx0XHRcdFx0XHRPYnNlcnZhYmxlLFxyXG5cdFx0XHRcdFx0b2YsXHJcblx0XHRcdFx0XHRzaGFyZVJlcGxheSxcclxuXHRcdFx0XHRcdHBpcGUsXHJcblx0XHRcdFx0XHRQcm9taXNlLCAvLyDmt7vliqAgUHJvbWlzZSDliLAgc2FuZGJveFxyXG5cdFx0XHRcdFx0YXN5bmM6IHRydWUsIC8vIOagh+iusOaUr+aMgeW8guatpVxyXG5cdFx0XHRcdFx0cmVzb2x2ZTogUHJvbWlzZS5yZXNvbHZlLmJpbmQoUHJvbWlzZSksXHJcblx0XHRcdFx0XHRyZWplY3Q6IFByb21pc2UucmVqZWN0LmJpbmQoUHJvbWlzZSksXHJcblx0XHRcdFx0XHROUCxcclxuXHRcdFx0XHR9O1xyXG5cclxuXHRcdFx0XHQvLyDlpITnkIYgUHJvbWlzZSDmnoTpgKDlh73mlbDnmoTmg4XlhrVcclxuXHRcdFx0XHRpZiAob2JqLmluY2x1ZGVzKCduZXcgUHJvbWlzZScpKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gbmV3IEZ1bmN0aW9uKFxyXG5cdFx0XHRcdFx0XHQnc2FuZGJveCcsXHJcblx0XHRcdFx0XHRcdGBcclxuXHRcdFx0XHRcdFx0XHR3aXRoKHNhbmRib3gpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAke299O1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0YCxcclxuXHRcdFx0XHRcdCkuYmluZChfdGhpcykoc2FuZGJveCk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvLyDlpITnkIbmma7pgJrlh73mlbDlkoznrq3lpLTlh73mlbBcclxuXHRcdFx0XHRyZXR1cm4gbmV3IEZ1bmN0aW9uKFxyXG5cdFx0XHRcdFx0J3NhbmRib3gnLFxyXG5cdFx0XHRcdFx0YFxyXG5cdFx0XHRcdFx0XHR3aXRoKHNhbmRib3gpIHtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKCR7b30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRgLFxyXG5cdFx0XHRcdCkuYmluZChfdGhpcykoc2FuZGJveCk7XHJcblx0XHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0XHRjb25zb2xlLmVycm9yKCflh73mlbDop6PmnpDlpLHotKU6JywgZSwgJ1xcbuWOn+Wni+Wtl+espuS4sjonLCBvYmopO1xyXG5cdFx0XHRcdHJldHVybiBvYmo7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmIChpc0pTT05QYXJzYWJsZShvYmopKSB7XHJcblx0XHRcdGxldCBqc29uID0gSlNPTi5wYXJzZShvYmopO1xyXG5cdFx0XHRyZXR1cm4gcGFyc2VGdW5jdGlvbnMoanNvbiwgX3RoaXMpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIG9iajtcclxuXHR9XHJcblx0aWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xyXG5cdFx0cmV0dXJuIG9iai5tYXAoKGl0ZW06IGFueSkgPT4gcGFyc2VGdW5jdGlvbnMoaXRlbSwgX3RoaXMpKTtcclxuXHR9XHJcblx0aWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkge1xyXG5cdFx0Y29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcclxuXHRcdGZvciAoY29uc3Qga2V5IGluIG9iaikge1xyXG5cdFx0XHRpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuXHRcdFx0XHRyZXN1bHRba2V5XSA9IHBhcnNlRnVuY3Rpb25zKG9ialtrZXldLCBfdGhpcyk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiByZXN1bHQ7XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gb2JqO1xyXG59O1xyXG5cclxuLy8g6L6F5Yqp5Ye95pWw77ya5qOA5p+l5piv5ZCm5YyF5ZCrIFByb21pc2Ug5p6E6YCg5Ye95pWwXHJcbmNvbnN0IGNvbnRhaW5zUHJvbWlzZUNvbnN0cnVjdG9yID0gKHN0cjogc3RyaW5nKTogYm9vbGVhbiA9PiB7XHJcblx0cmV0dXJuIC9uZXdcXHMrUHJvbWlzZS8udGVzdChzdHIpO1xyXG59O1xyXG5cclxuLy8g5L+u5pS5IGNvbXBpbGVUc1RvSnMg5Ye95pWw5Lul5pu05aW95Zyw5aSE55CGIFByb21pc2VcclxuZXhwb3J0IGNvbnN0IGNvbXBpbGVUc1RvSnMgPSAodHNDb2RlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xyXG5cdC8vIOWmguaenOaYryBQcm9taXNlIOaehOmAoOWHveaVsO+8jOS4jemcgOimgemineWkluWkhOeQhlxyXG5cdGlmIChjb250YWluc1Byb21pc2VDb25zdHJ1Y3Rvcih0c0NvZGUpKSB7XHJcblx0XHRyZXR1cm4gdHNDb2RlO1xyXG5cdH1cclxuXHJcblx0Y29uc3QgcmVzdWx0ID0gdHMudHJhbnNwaWxlTW9kdWxlKHRzQ29kZSwge1xyXG5cdFx0Y29tcGlsZXJPcHRpb25zOiB7XHJcblx0XHRcdG1vZHVsZTogdHMuTW9kdWxlS2luZC5Db21tb25KUyxcclxuXHRcdFx0dGFyZ2V0OiB0cy5TY3JpcHRUYXJnZXQuRVMyMDE1LFxyXG5cdFx0XHQvLyDlkK/nlKjlvILmraXlh73mlbDmlK/mjIFcclxuXHRcdFx0bGliOiBbJ2VzMjAxNScsICdlczIwMTUucHJvbWlzZScsICdkb20nXSxcclxuXHRcdH0sXHJcblx0fSk7XHJcblx0cmV0dXJuIHJlbW92ZVRyYWlsaW5nU2VtaWNvbG9uKHJlc3VsdC5vdXRwdXRUZXh0KTtcclxufTtcclxuXHJcbmNvbnN0IHJlbW92ZVRyYWlsaW5nU2VtaWNvbG9uID0gKGZ1bmNTdHI6IHN0cmluZyk6IHN0cmluZyA9PiB7XHJcblx0Ly8g5YWI5Y676Zmk5YmN5ZCO56m655m9XHJcblx0Y29uc3QgdHJpbW1lZCA9IGZ1bmNTdHIudHJpbSgpO1xyXG5cdC8vIOWPquabv+aNouacgOWQjuS4gOS4quWIhuWPt++8iOWmguaenOWug+S4jeWcqOiKseaLrOWPt+WGhe+8iVxyXG5cdGlmICh0cmltbWVkLmVuZHNXaXRoKCc7JykpIHtcclxuXHRcdHJldHVybiB0cmltbWVkLnNsaWNlKDAsIC0xKTtcclxuXHR9XHJcblx0cmV0dXJuIHRyaW1tZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNKU09OUGFyc2FibGUgPSAoc3RyOiBhbnkpID0+IHtcclxuXHR0cnkge1xyXG5cdFx0SlNPTi5wYXJzZShzdHIpO1xyXG5cdFx0cmV0dXJuIHRydWU7XHJcblx0fSBjYXRjaCAoZSkge1xyXG5cdFx0Ly8gbGV0IHN0cklzT2JqID0gL1xce1tefV0qXFx9fFxcW1teXFxdXSpcXF0vLnRlc3Qoc3RyKVxyXG5cdFx0Ly8gaWYoc3RySXNPYmope1xyXG5cdFx0Ly8gXHRjb25zb2xlLmVycm9yKCdKU09OIOino+aekOWksei0pTonLCBlLCAnXFxu5Y6f5aeL5a2X56ym5LiyOicsIHN0cilcclxuXHRcdC8vIH1cclxuXHRcdHJldHVybiBmYWxzZTtcclxuXHR9XHJcbn07XHJcblxyXG4vKipcclxuICog5qC55o2u5oyH5a6a55qE6ZSu5pWw57uE6L+H5ruk5a+56LGhXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogLSDopoHov4fmu6TnmoTljp/lp4vlr7nosaFcclxuICogQHBhcmFtIHtBcnJheX0ga2V5cyAtIOmcgOimgeS/neeVmeeahOmUruaVsOe7hFxyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSDov4fmu6TlkI7nmoTmlrDlr7nosaFcclxuICovXHJcbmV4cG9ydCBjb25zdCBmaWx0ZXJPYmplY3RCeUtleXMgPSAob2JqOiBhbnksIGtleXM6IHN0cmluZ1tdKSA9PiB7XHJcblx0Ly8g5Y+C5pWw5qCh6aqMXHJcblx0aWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCB8fCBBcnJheS5pc0FycmF5KG9iaikpIHtcclxuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ+esrOS4gOS4quWPguaVsOW/hemhu+aYr+aZrumAmuWvueixoScpO1xyXG5cdH1cclxuXHJcblx0aWYgKCFBcnJheS5pc0FycmF5KGtleXMpKSB7XHJcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCfnrKzkuozkuKrlj4LmlbDlv4XpobvmmK/mlbDnu4QnKTtcclxuXHR9XHJcblxyXG5cdC8vIOS9v+eUqHJlZHVjZeWIm+W7uuaWsOWvueixoVxyXG5cdHJldHVybiBrZXlzLnJlZHVjZSgoYWNjOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XHJcblx0XHQvLyDlj6rmnInlvZPljp/lr7nosaHmnInor6XlsZ7mgKfml7bmiY3mt7vliqDliLDmlrDlr7nosaFcclxuXHRcdGlmIChrZXkgaW4gb2JqKSB7XHJcblx0XHRcdGFjY1trZXldID0gb2JqW2tleV07XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gYWNjO1xyXG5cdH0sIHt9KTtcclxufTtcclxuLyoqXHJcbiAqIOiHquWumuS5ieWHveaVsOWOu+mZpOepuuWtl+espuS4slxyXG4gKiBAcGFyYW0gYWN0IFxyXG4gKiBAcmV0dXJucyBcclxuICovXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0QWN0ID0gKGFjdDphbnkpID0+e1xyXG5cdGFjdC5mb3JFYWNoKCh2OmFueSkgPT4ge1xyXG5cdFx0aWYodi5oYXNPd25Qcm9wZXJ0eSgnYnRuSGlkZGVuJykgJiZ0eXBlb2Ygdi5idG5IaWRkZW4gIT0gJ2Z1bmN0aW9uJyl7XHJcblx0XHRcdGRlbGV0ZSB2LmJ0bkhpZGRlblxyXG5cdFx0fVxyXG5cdFx0aWYodi5oYXNPd25Qcm9wZXJ0eSgnYnRuRGlzYWJsZWQnKSAmJnR5cGVvZiB2LmJ0bkRpc2FibGVkICE9ICdmdW5jdGlvbicpe1xyXG5cdFx0XHRkZWxldGUgdi5idG5EaXNhYmxlZFxyXG5cdFx0fVxyXG5cdFx0aWYodi5oYXNPd25Qcm9wZXJ0eSgnb25DbGljaycpICYmdHlwZW9mIHYub25DbGljayAhPSAnZnVuY3Rpb24nKXtcclxuXHRcdFx0ZGVsZXRlIHYub25DbGlja1xyXG5cdFx0fVxyXG5cdH0pXHJcblx0cmV0dXJuIGFjdDtcclxufVxyXG5cclxuLyoqXHJcbiAqIGZvcm1wYWdlIOmAmueUqGNvbnRlbnTlh73mlbDovaznp7tcclxuICogQHBhcmFtIGNvbnRlbnQgXHJcbiAqIEBwYXJhbSB0aGlzQXJnXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgY2hhbmdlQ29udGVudCA9IChjb250ZW50OiBhbnksdGhpc0FyZzphbnkpICA9PntcclxuXHQvLyBAdHMtaWdub3JlXHJcblx0Y29uc3QgaXNJMThuID0gd2luZG93LmFwcElzSTE4blxyXG5cdGNvbnRlbnQgPSBwYXJzZUZ1bmN0aW9ucyhjb250ZW50LHRoaXNBcmcpO1xyXG5cdGxldCB7IGdyaWRMaXN0LCBocmVmQnRuTGlzdCwgZ2V0UHJtLCBncm91cHMsIHN0YXR1c0tleSwgc3RhdHVzLCBzdGF0dXNTdGVwcyxzdGF0dXNDb25mID0gbnVsbCB9ID0gY29udGVudDtcclxuXHRpZiAoc3RhdHVzS2V5KSB7XHJcblx0XHR0aGlzQXJnLnN0YXR1c0tleSA9IHN0YXR1c0tleTtcclxuXHRcdHN0YXR1c1N0ZXBzLmZvckVhY2goKGl0ZW06YW55KSA9PiB7XHJcblx0XHRcdGlmKGlzSTE4biAmJiAoIWl0ZW0uaGFzT3duUHJvcGVydHkoJ2kxOG5LZXknKSB8fCBpdGVtLmkxOG5LZXkgPT0gJycpKXtcclxuXHRcdFx0XHRpdGVtLmkxOG5LZXkgPSBgdGFibGVzLiR7Z2V0UHJtLm1vZGVsTmFtZX0uJHtzdGF0dXNLZXl9JHtpdGVtLnZhbHVlfWBcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHR0aGlzQXJnLnN0ZXBzID0gc3RhdHVzU3RlcHNcclxuXHRcdHN0YXR1c0NvbmYgJiYgKHRoaXNBcmcuc3RhdHVzQ29uZiA9IHN0YXR1c0NvbmYpXHJcblx0fVxyXG5cclxuXHR0aGlzQXJnLmFjdGlvbnMgPSBjb252ZXJ0QWN0KGNvbnRlbnQuYWN0aW9ucylcclxuXHRjb250ZW50LmZvcm1EaXNhYmxlZCAmJiAodGhpc0FyZy5mb3JtRGlzYWJsZWQgPSBjb250ZW50LmZvcm1EaXNhYmxlZCk7XHJcblx0dGhpc0FyZy5nZXRQcm0gPSBnZXRQcm07XHJcblx0dGhpc0FyZy5nZXRQcm0ub3JnRmllbGQgPSBjb250ZW50Lm9yZ0ZpZWxkIHx8ICcnO1xyXG5cdHRoaXNBcmcuZ3JpZHMgPSBbXTtcclxuXHRsZXQgZml0ZXJQcmVsb2FkczphbnlbXSA9IFtdXHJcblxyXG5cdGNvbnZlcnRGb3JtKHRoaXNBcmcsZ3JvdXBzLGNvbnRlbnQuc291cmNlRGF0YSlcclxuXHRjb252ZXJ0R3JpZCh0aGlzQXJnLGdyaWRMaXN0LGZpdGVyUHJlbG9hZHMpXHJcblx0XHJcblx0dGhpc0FyZy5mb3JtRGV0YWlsID0gY29udGVudC5mb3JtRGV0YWlsXHJcblx0dGhpc0FyZy5zYXZlRnVuYyA9IGNvbnRlbnQuc2F2ZUZ1bmNcclxuXHR0aGlzQXJnLmlzTG9nID0gY29udGVudC5zb3VyY2VEYXRhLm1vZGVsLmxvZztcclxuXHR0aGlzQXJnLmdldFBybVsnZ2V0TG9nJ10gPSBjb250ZW50LnNvdXJjZURhdGEubW9kZWwubG9nO1xyXG5cdHRoaXNBcmcuZ2V0UHJtWydmaXRlclByZWxvYWRzJ10gPSBmaXRlclByZWxvYWRzXHJcblx0dGhpc0FyZy5ocmVmQnRuTGlzdCA9IGhyZWZCdG5MaXN0O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgY2FsY1Jvd1NwYW4gPSAocGFyYW1zOiBhbnksIGZpZWxkPzogc3RyaW5nKSA9PiB7XHJcblx0ZmllbGQgPSBmaWVsZCB8fCBwYXJhbXMuY29sRGVmLmZpZWxkO1xyXG5cdGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHBhcmFtcy5kYXRhW2ZpZWxkIV07XHJcblx0Y29uc3QgY3VycmVudFJvd0luZGV4ID0gcGFyYW1zLm5vZGUucm93SW5kZXg7XHJcblxyXG5cdGxldCByb3dTcGFuID0gMTtcclxuXHJcblx0Zm9yIChsZXQgaSA9IGN1cnJlbnRSb3dJbmRleCArIDE7IGkgPCBwYXJhbXMuYXBpLmdldERpc3BsYXllZFJvd0NvdW50KCk7IGkrKykge1xyXG5cdFx0Y29uc3Qgbm9kZSA9IHBhcmFtcy5hcGkuZ2V0RGlzcGxheWVkUm93QXRJbmRleChpKTtcclxuXHRcdGlmIChub2RlLmRhdGFbZmllbGQhXSA9PT0gY3VycmVudFZhbHVlKSB7XHJcblx0XHRcdHJvd1NwYW4rKztcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0aWYgKGN1cnJlbnRSb3dJbmRleCA+IDAgJiYgcGFyYW1zLmFwaS5nZXREaXNwbGF5ZWRSb3dBdEluZGV4KGN1cnJlbnRSb3dJbmRleCAtIDEpLmRhdGFbZmllbGQhXSA9PT0gY3VycmVudFZhbHVlKSB7XHJcblx0XHRyZXR1cm4gMTtcclxuXHR9XHJcblx0cmV0dXJuIHJvd1NwYW47XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0Q29sID0gKG9wdGlvbnM6YW55LGNvbDogYW55W10sIGF1dGhMZXZlbDpudW1iZXIsZHJhZ1NvcnQ/OnN0cmluZywpID0+IHtcclxuXHQvLyBAdHMtaWdub3JlXHJcblx0Y29uc3QgaXNJMThuID0gd2luZG93LmFwcElzSTE4blxyXG5cdC8vIGNvbnNvbGUubG9nKCdpc0kxOG4tLS0tLScsaXNJMThuKVxyXG5cdGNvbC5mb3JFYWNoKChpdGVtOiBhbnksaW5kZXg6bnVtYmVyKSA9PiB7XHJcblx0XHRpdGVtLmhpZGUgPSBpdGVtLmhpZGVDb2w7XHJcblx0XHRpZiAoYXV0aExldmVsIDwgMykge1xyXG5cdFx0XHRpdGVtLmVkaXRhYmxlID0gZmFsc2U7XHJcblx0XHR9XHJcblx0XHRpZihkcmFnU29ydCAmJiBpbmRleCA9PT0wKXtcclxuXHRcdFx0aXRlbS5yb3dEcmFnID0gdHJ1ZVxyXG5cdFx0fVxyXG5cdFx0aWYoaXNJMThuICYmICghaXRlbS5oYXNPd25Qcm9wZXJ0eSgnaTE4bktleScpIHx8IGl0ZW0uaTE4bktleSA9PSAnJykpe1xyXG5cdFx0XHRpdGVtLmkxOG5LZXkgPSBgdGFibGVzLiR7b3B0aW9ucy5tb2RlbE5hbWV9LiR7aXRlbS5maWVsZH1gXHJcblx0XHR9XHJcblx0XHRpZihpdGVtLmhhc093blByb3BlcnR5KCd0ZXh0V3JhcCcpICYmIGl0ZW0udGV4dFdyYXApIHtcclxuXHRcdFx0aXRlbS5hdXRvSGVpZ2h0ID0gdHJ1ZVxyXG5cdFx0XHRpdGVtLmNlbGxDbGFzcyA9ICdjZWxsLXdyYXAtdGV4dCdcclxuXHRcdH1cclxuXHRcdGlmKGl0ZW0ucm93U3BhbkNvbmYpe1xyXG5cdFx0XHRsZXQgcm93U3BhbiA9IHtcclxuXHRcdFx0XHRyb3dTcGFuOiAocGFyYW1zOiBhbnkpID0+IGNhbGNSb3dTcGFuKHBhcmFtcyksXHJcblx0XHRcdFx0Y2VsbFJlbmRlcmVyOiAncm93U3BhblJlbmRlcmVyJyxcclxuXHRcdFx0XHRjZWxsUmVuZGVyZXJQYXJhbXM6IHtcclxuXHRcdFx0XHRcdHJvd1NwYW46IChwYXJhbXM6IGFueSkgPT4gY2FsY1Jvd1NwYW4ocGFyYW1zKSxcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0T2JqZWN0LmFzc2lnbihpdGVtLHJvd1NwYW4pXHJcblx0XHRcdG9wdGlvbnMuc3VwcHJlc3NSb3dUcmFuc2Zvcm0gPSB0cnVlXHJcblx0XHRcdG9wdGlvbnMucm93Q2xhc3MgPSAncm93U3BhbidcclxuXHRcdH1cclxuXHRcdC8vIGlmKGl0ZW0uZWRpdGFibGUpe1xyXG5cdFx0Ly8gXHRpdGVtLmhlYWRlckNsYXNzID0gaXRlbS5oYXNPd25Qcm9wZXJ0eSgnaGVhZGVyQ2xhc3MnKSBcclxuXHRcdC8vIFx0XHQ/IGAke2l0ZW0uaGVhZGVyQ2xhc3N9IGVkaXRhYmxlLWNvbHVtbi1oZWFkZXJgIFxyXG5cdFx0Ly8gXHRcdDogJ2VkaXRhYmxlLWNvbHVtbi1oZWFkZXInXHJcblx0XHQvLyB9XHJcblx0fSk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBncmlkT3B0aW9uc0hvb2tlciA9IChncmlkT3B0aW9uczogYW55KSA9PiB7XHJcblx0Z3JpZE9wdGlvbnM/LmNvbHVtbkRlZnM/LmZvckVhY2goKGNvbDogYW55KSA9PiB7XHJcblx0XHRpZiAoY29sLmhpZGVDb2wpIHtcclxuXHRcdFx0Y29sLmhpZGUgPSBjb2wuaGlkZUNvbDtcclxuXHRcdFx0ZGVsZXRlIGNvbC5oaWRlQ29sO1xyXG5cdFx0fVxyXG5cdFx0Ly8gQHRzLWlnbm9yZVxyXG5cdFx0Y29uc3QgaXNJMThuID0gd2luZG93LmFwcElzSTE4blxyXG5cdFx0aWYoIGlzSTE4biAmJiAoIWNvbC5oYXNPd25Qcm9wZXJ0eSgnaTE4bktleScpIHx8IGNvbC5pMThuS2V5ID09ICcnKSl7XHJcblx0XHRcdFx0Y29sLmkxOG5LZXkgPSBgdGFibGVzLiR7Z3JpZE9wdGlvbnMubW9kZWxOYW1lfS4ke2NvbC5maWVsZH1gXHJcblx0XHRcdH1cclxuXHRcdGlmKGNvbC5oYXNPd25Qcm9wZXJ0eSgndGV4dFdyYXAnKSAmJiBjb2wudGV4dFdyYXApIHtcclxuXHRcdFx0Y29sLmF1dG9IZWlnaHQgPSB0cnVlXHJcblx0XHRcdGNvbC5jZWxsQ2xhc3MgPSAnY2VsbC13cmFwLXRleHQnXHJcblx0XHR9XHJcblx0XHRpZihjb2wucm93U3BhbkNvbmYpe1xyXG5cdFx0XHRsZXQgcm93U3BhbiA9IHtcclxuXHRcdFx0XHRyb3dTcGFuOiAocGFyYW1zOiBhbnkpID0+IGNhbGNSb3dTcGFuKHBhcmFtcyksXHJcblx0XHRcdFx0Y2VsbFJlbmRlcmVyOiAncm93U3BhblJlbmRlcmVyJyxcclxuXHRcdFx0XHRjZWxsUmVuZGVyZXJQYXJhbXM6IHtcclxuXHRcdFx0XHRcdHJvd1NwYW46IChwYXJhbXM6IGFueSkgPT4gY2FsY1Jvd1NwYW4ocGFyYW1zKSxcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0T2JqZWN0LmFzc2lnbihjb2wscm93U3BhbilcclxuXHRcdFx0Z3JpZE9wdGlvbnMuc3VwcHJlc3NSb3dUcmFuc2Zvcm0gPSB0cnVlXHJcblx0XHRcdGdyaWRPcHRpb25zLnJvd0NsYXNzID0gJ3Jvd1NwYW4nXHJcblx0XHR9XHJcblx0fSk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0R3JpZCA9ICh0aGlzQXJnOmFueSxncmlkTGlzdDphbnksZml0ZXJQcmVsb2FkczphbnkpID0+IHtcclxuXHRncmlkTGlzdC5mb3JFYWNoKGFzeW5jIChpdGVtOiBhbnkpID0+IHtcclxuXHRcdCFpdGVtLnR5cGUgJiYgKGl0ZW0udHlwZSA9ICdncmlkJylcclxuXHRcdGxldCBncmlkOmFueSA9IHt0eXBlOml0ZW0udHlwZX1cclxuXHRcdGlmKGl0ZW0uZml0ZXJQcmVsb2FkcyBpbnN0YW5jZW9mIEFycmF5KXtcclxuXHRcdFx0Zml0ZXJQcmVsb2FkcyA9IFsuLi5maXRlclByZWxvYWRzLCAuLi5pdGVtLmZpdGVyUHJlbG9hZHNdXHJcblx0XHR9XHJcblx0XHRpZihpdGVtLnR5cGUgPT0gJ2dyaWQnKXtcclxuXHRcdFx0bGV0IHtcclxuXHRcdFx0XHRncmlkT3B0aW9uczogeyBjb2x1bW5EZWZzLCAuLi5yZXN0R3JpZE9wdGlvbnMgfSxcclxuXHRcdFx0XHRzdWJUYWJsZVNvdXJjZSxcclxuXHRcdFx0XHRzdWJEYXRhS2V5LFxyXG5cdFx0XHRcdHRpdGxlLFxyXG5cdFx0XHRcdHNlbGVjdERhdGFDYixcclxuXHRcdFx0XHRmayxcclxuXHRcdFx0XHRtYWluRmllbGQsXHJcblx0XHRcdFx0dW5pcXVlRmllbGQsXHJcblx0XHRcdFx0YWRkRGF0YUNiLFxyXG5cdFx0XHRcdHNob3dEZWxldGUgPSB0cnVlLFxyXG5cdFx0XHRcdHNjcm9sbEhlaWdodCxcclxuXHRcdFx0XHRkcmFnU29ydCxcclxuXHRcdFx0XHRzZWxlY3Rpb25Nb2RlLFxyXG5cdFx0XHRcdGlzUm93U2VsZWN0YWJsZVxyXG5cdFx0XHR9ID0gaXRlbTtcclxuXHRcdFx0Z3JpZCA9IHsgc3ViVGFibGVTb3VyY2UsIHN1YkRhdGFLZXksIHRpdGxlLHNob3dEZWxldGUsIC4uLmdyaWR9O1xyXG5cdFx0XHRsZXQgZ3JpZE9wdGlvbnMgPSB7XHJcblx0XHRcdFx0Li4ucmVzdEdyaWRPcHRpb25zLFxyXG5cdFx0XHRcdGZrLFxyXG5cdFx0XHRcdHN1YlRhYmxlU291cmNlLFxyXG5cdFx0XHRcdHN1YkRhdGFLZXksXHJcblx0XHRcdFx0bWFpbkZpZWxkLFxyXG5cdFx0XHR9O1xyXG5cdFx0XHQvLyBAdHMtaWdub3JlXHJcblx0XHRcdGlmKHdpbmRvdy5hcHBJc0kxOG4gJiYgKCFpdGVtLmhhc093blByb3BlcnR5KCdpMThuS2V5JykgfHwgaXRlbS5pMThuS2V5ID09ICcnKSl7XHJcblx0XHRcdFx0Z3JpZC5pMThuS2V5ID0gYHRhYmxlcy4ke3RoaXNBcmcuZ2V0UHJtLm1vZGVsTmFtZX0uJHtzdWJEYXRhS2V5fWBcclxuXHRcdFx0fVxyXG5cdFx0XHRpZihncmlkT3B0aW9ucy5yb3dNb2RlbFR5cGUgPT0gJ2NsaWVudFNpZGUnKXtcclxuXHRcdFx0XHRncmlkT3B0aW9ucy5zdXBwcmVzc1Jvd1ZpcnR1YWxpc2F0aW9uID0gdHJ1ZVxyXG5cdFx0XHR9XHJcblx0XHRcdGlmKHNjcm9sbEhlaWdodCl7XHJcblx0XHRcdFx0Z3JpZE9wdGlvbnMuc2Nyb2xsSGVpZ2h0ID0gc2Nyb2xsSGVpZ2h0XHJcblx0XHRcdH1cclxuXHRcdFx0aWYoZHJhZ1NvcnQpe1xyXG5cdFx0XHRcdGdyaWRPcHRpb25zLnJvd0RyYWdNYW5hZ2VkID0gdHJ1ZVxyXG5cdFx0XHRcdGdyaWRPcHRpb25zLmRyYWdTb3J0ID0gZHJhZ1NvcnRcclxuXHRcdFx0fVxyXG5cdFx0XHRpZihzZWxlY3Rpb25Nb2RlKSB7XHJcblx0XHRcdFx0Z3JpZE9wdGlvbnMuc2VsZWN0aW9uTW9kZSA9IHNlbGVjdGlvbk1vZGVcclxuXHRcdFx0XHRpZihzZWxlY3Rpb25Nb2RlICE9ICdub25lJyl7XHJcblx0XHRcdFx0XHRncmlkT3B0aW9ucy5yb3dTZWxlY3Rpb24gPSB7XHJcblx0XHRcdFx0XHRcdG1vZGU6IHNlbGVjdGlvbk1vZGUgPT0gJ3NpbmdsZScgPyAnc2luZ2xlUm93JyA6ICdtdWx0aVJvdycsXHJcblx0XHRcdFx0XHRcdGlzUm93U2VsZWN0YWJsZTogaXNSb3dTZWxlY3RhYmxlID8gaXNSb3dTZWxlY3RhYmxlOm51bGxcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdCAgZ3JpZE9wdGlvbnMucm93U2VsZWN0aW9uID0gdW5kZWZpbmVkXHJcblx0XHRcdCBcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRjb252ZXJ0Q29sKGdyaWRPcHRpb25zLGNvbHVtbkRlZnMsdGhpc0FyZy5hdXRoTGV2ZWwsZHJhZ1NvcnQpO1xyXG5cdFx0XHRncmlkT3B0aW9ucy5jb2x1bW5EZWZzID0gY29sdW1uRGVmcztcclxuXHRcdFx0aWYgKHN1YlRhYmxlU291cmNlID09PSAnc2VsZWN0Jykge1xyXG5cdFx0XHRcdHRoaXNBcmcud2ViZ2V0KHsgY29kZTogaXRlbS5zZWxlY3RNb2RlbENvZGUgfSkuc3Vic2NyaWJlKChyZXM6YW55KSA9PiB7XHJcblx0XHRcdFx0XHRsZXQgc2VsZWN0Q29udGVudCA9IHBhcnNlRnVuY3Rpb25zKEpTT04ucGFyc2UocmVzLmNvbnRlbnQpLCB0aGlzQXJnKTtcclxuXHRcdFx0XHRcdGdyaWQuc2VsZWN0T3B0aW9ucyA9IHNlbGVjdENvbnRlbnQ/LmdyaWRPcHRpb25zO1xyXG5cdFx0XHRcdFx0Z3JpZC5zZWxlY3RPcHRpb25zLnJvd01vZGVsVHlwZSA9IGdyaWQuc2VsZWN0T3B0aW9ucy5yb3dNb2RlbFR5cGUgfHwgJ3NlcnZlclNpZGUnO1xyXG5cdFx0XHRcdFx0aWYgKGdyaWQuc2VsZWN0T3B0aW9ucy5yb3dNb2RlbFR5cGUgPT0gJ3NlcnZlclNpZGUnKSB7XHJcblx0XHRcdFx0XHRcdGdyaWQuc2VsZWN0T3B0aW9ucy5zZXJ2ZXJGdW5jID0gZ3JpZC5zZWxlY3RPcHRpb25zLnNlcnZlckZ1bmMgfHwgdGhpc0FyZy53ZWJfc2VhcmNoLmJpbmQodGhpc0FyZyk7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRncmlkLnNlbGVjdE9wdGlvbnMuY2xpZW50RnVuYyA9IGdyaWQuc2VsZWN0T3B0aW9ucy5jbGllbnRGdW5jIHx8IHRoaXNBcmcud2ViX3NlYXJjaC5iaW5kKHRoaXNBcmcpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0Z3JpZC51bmlxdWVGaWVsZCA9IHVuaXF1ZUZpZWxkO1xyXG5cdFx0XHRcdFx0Z3JpZC5zZWxlY3REYXRhQ2IgPSBzZWxlY3REYXRhQ2I7XHJcblx0XHRcdFx0XHRncmlkLnNlbGVjdE9wdGlvbnMuc2Nyb2xsSGVpZ2h0ID0gJzMwMHB4JztcclxuXHRcdFx0XHRcdGdyaWQuc2VsZWN0T3B0aW9ucy5zZWFyY2hQcm0gPSBzZWxlY3RDb250ZW50LnNlYXJjaFBybVxyXG5cdFx0XHRcdFx0Y29udmVydENvbChncmlkLnNlbGVjdE9wdGlvbnMsZ3JpZC5zZWxlY3RPcHRpb25zLmNvbHVtbkRlZnMhLDEpO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdGdyaWQuc2VhcmNoUHJtID0geyAuLi50aGlzQXJnLnNlYXJjaFBybSB9O1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGFkZERhdGFDYiAmJiAoZ3JpZE9wdGlvbnMuYWRkRGF0YUNiID0gYWRkRGF0YUNiKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRncmlkLmdyaWRPcHRpb25zID0gZ3JpZE9wdGlvbnM7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRpdGVtLmludGVyYWN0aXZlTGFiZWwgPSB0cnVlXHJcblx0XHRcdGdyaWQgPSB7XHJcblx0XHRcdFx0Li4uaXRlbVxyXG5cdFx0XHR9XHJcblx0XHRcdGdyaWQuZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pXHJcblx0XHR9XHJcblx0XHR0aGlzQXJnLmdyaWRzLnB1c2goZ3JpZCk7XHJcblx0fSk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0Rm9ybSA9ICh0aGlzQXJnOmFueSwgZ3JvdXBBcnI6YW55LHNvdXJjZURhdGE6YW55KSA9PiB7XHJcblx0Z3JvdXBBcnIuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcblx0XHRpZiAodGhpc0FyZy5hdXRoTGV2ZWwgPCAzKSB7XHJcblx0XHRcdGl0ZW1bZm9ybVR5cGVUb1Byb3BzW2l0ZW0udHlwZV1dLmRpc2FibGVkID0gdHJ1ZTtcclxuXHRcdH1cclxuXHR9KTtcclxuXHR0aGlzQXJnLmZvcm1PcHRpb25zID0ge1xyXG5cdFx0ZmllbGRzOiBbXHJcblx0XHRcdHtcclxuXHRcdFx0XHRncm91cENsYXNzOiAnZmxleCBmbGV4LXJvdyBmbGV4LXdyYXAnLFxyXG5cdFx0XHRcdGdyb3VwOiBncm91cEFycixcclxuXHRcdFx0fSxcclxuXHRcdF0sXHJcblx0XHRmb3JtOiBuZXcgRm9ybUdyb3VwKHt9KSxcclxuXHRcdG1haW5GaWVsZDogc291cmNlRGF0YS5tb2RlbC5tYWluRmllbGRzLFxyXG5cdFx0bW9kZWxOYW1lOiBzb3VyY2VEYXRhLm1vZGVsLm1vZGVsTmFtZVxyXG5cdH07XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBjbGVhckxvY2FsID0gKCkgPT4ge1xyXG5cdGxldCB0aGVtZUNvbmZpZ1N0YXRlID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aGVtZUNvbmZpZ1N0YXRlJylcclxuXHR3aW5kb3cubG9jYWxTdG9yYWdlLmNsZWFyKClcclxuXHRpZih0aGVtZUNvbmZpZ1N0YXRlKXtcclxuXHRcdHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGhlbWVDb25maWdTdGF0ZScsdGhlbWVDb25maWdTdGF0ZSlcclxuXHR9XHJcblx0d2luZG93LnNlc3Npb25TdG9yYWdlLmNsZWFyKClcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHBhZ2VMaXN0R3JpZE9wdGlvbnMgPSAoZ3JpZE9wdGlvbnM6IGFueSx0aGlzQXJnOmFueSkgPT4ge1xyXG5cdGdyaWRPcHRpb25zLnNjcm9sbEhlaWdodCA9ICdjYWxjKDEwMHZoIC0gOTVweCknO1xyXG5cdGdyaWRPcHRpb25zLnJvd01vZGVsVHlwZSA9IGdyaWRPcHRpb25zLnJvd01vZGVsVHlwZSB8fCAnc2VydmVyU2lkZSc7XHJcblx0aWYgKGdyaWRPcHRpb25zLnJvd01vZGVsVHlwZSA9PSAnc2VydmVyU2lkZScpIHtcclxuXHRcdGdyaWRPcHRpb25zLnNlcnZlckZ1bmMgPSBncmlkT3B0aW9ucy5zZXJ2ZXJGdW5jIHx8IHRoaXNBcmcud2ViX3NlYXJjaC5iaW5kKHRoaXNBcmcpO1xyXG5cdH0gZWxzZSB7XHJcblx0XHRncmlkT3B0aW9ucy5jbGllbnRGdW5jID0gZ3JpZE9wdGlvbnMuY2xpZW50RnVuYyB8fCB0aGlzQXJnLndlYl9zZWFyY2guYmluZCh0aGlzQXJnKTtcclxuXHR9XHJcblx0aWYoZ3JpZE9wdGlvbnMuc2VsZWN0aW9uTW9kZSkge1xyXG5cdFx0XHQvLyBncmlkT3B0aW9ucy5zZWxlY3Rpb25Nb2RlID0gc2VsZWN0aW9uTW9kZVxyXG5cdFx0aWYoZ3JpZE9wdGlvbnMuc2VsZWN0aW9uTW9kZSAhPSAnbm9uZScpe1xyXG5cdFx0XHRncmlkT3B0aW9ucy5yb3dTZWxlY3Rpb24gPSB7XHJcblx0XHRcdFx0bW9kZTogZ3JpZE9wdGlvbnMuc2VsZWN0aW9uTW9kZSA9PSAnc2luZ2xlJyA/ICdzaW5nbGVSb3cnIDonbXVsdGlSb3cnLFxyXG5cdFx0XHRcdGlzUm93U2VsZWN0YWJsZTogZ3JpZE9wdGlvbnMuaXNSb3dTZWxlY3RhYmxlID8gZ3JpZE9wdGlvbnMuaXNSb3dTZWxlY3RhYmxlIDogdW5kZWZpbmVkXHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGdyaWRPcHRpb25zLnJvd1NlbGVjdGlvbiA9IHVuZGVmaW5lZFxyXG5cdFx0fVxyXG5cdH1cclxuXHRjb252ZXJ0Q29sKGdyaWRPcHRpb25zLGdyaWRPcHRpb25zLmNvbHVtbkRlZnMhLDEpXHJcblx0cmV0dXJuIGdyaWRPcHRpb25zXHJcbn0iXX0=