@eo-sdk/client 10.6.17 → 10.6.18

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.
@@ -261,6 +261,8 @@ let MediaComponent = MediaComponent_1 = class MediaComponent {
261
261
  // set api to iframe window
262
262
  const win = iframe?.contentWindow || iframe;
263
263
  win['api'] = window['api'];
264
+ // disable beforeunload popup (Reload site? Changes that you made may not be saved.)
265
+ win.addEventListener('beforeunload', (event) => event.stopImmediatePropagation());
264
266
  if (win['api']?.content) {
265
267
  win['api'].content.resolveViewerParams = (parameters) => {
266
268
  const uri = parameters.path.replace(location.origin, '');
@@ -311,4 +313,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
311
313
  }], dmsObject: [{
312
314
  type: Input
313
315
  }] } });
314
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvbWVkaWEvbWVkaWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvbWVkaWEvbWVkaWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUF3QixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFVNUcsT0FBTyxFQUFDLHFCQUFxQixFQUFxQixNQUFNLDJCQUEyQixDQUFDO0FBQ3BGLE9BQU8sRUFBQyxTQUFTLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFLN0MsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7O0FBMEI1RCxJQUFNLGNBQWMsc0JBQXBCLE1BQU0sY0FBYztJQW9FekIsSUFDSSxjQUFjLENBQUMsV0FBVztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUNJLGFBQWEsQ0FBQyxVQUFVO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFDSSxVQUFVLENBQUMsR0FBVztRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFDSSxXQUFX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c3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBSZW5kZXJlcjIsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb25maWcsXG4gIERtc09iamVjdCxcbiAgRG1zT2JqZWN0QXR0YWNobWVudCxcbiAgRG1zU2VydmljZSxcbiAgT2JqZWN0VHlwZSxcbiAgU3lzdGVtU2VydmljZSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7UG9wb3V0VHJpZ2dlclBvc2l0aW9uLCBQb3BvdXRXaW5kb3dDb25maWd9IGZyb20gJ0B5dXV2aXMvY29tcG9uZW50cy9wb3BvdXQnO1xuaW1wb3J0IHtmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3Rha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0ZpbGVTaXplUGlwZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGlwZXMvZmlsZXNpemUucGlwZSc7XG5pbXBvcnQge1BsdWdpbnNTZXJ2aWNlfSBmcm9tICcuLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2FwaS9wbHVnaW5zLnNlcnZpY2UnO1xuaW1wb3J0IHtDb250ZW50UHJldmlld1NlcnZpY2V9IGZyb20gJy4vY29udGVudC1wcmV2aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHtVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdlckNvbmZpZyB7XG4gIG1pbWVUeXBlPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIGZpbGVFeHRlbnNpb24/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgdmlld2VyOiBzdHJpbmc7XG4gIGVycm9yPzogYm9vbGVhbjtcbiAgdHlwZT86ICdjb21wYXJlJyB8ICdleHRlbmQnIHwgJ2Vycm9yJyB8ICdkZWZhdWx0Jztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHJldmlld0ZpbGUge1xuICB1cmk6IHN0cmluZztcbiAgdXJpUGRmOiBzdHJpbmc7XG4gIG1pbWV0eXBlOiBzdHJpbmc7XG4gIG1pbWVncm91cDogc3RyaW5nO1xuICBzaXplOiBudW1iZXI7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGZpbGVFeHRlbnNpb24/OiBzdHJpbmc7XG4gIG1lZGlhVHlwZU5hbWU/OiBzdHJpbmc7XG59XG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLW1lZGlhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lZGlhLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVkaWEuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbQ29udGVudFByZXZpZXdTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBNZWRpYUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgc3RhdGljIFZJREVPX1ZJRVdFUiA9ICd2aWV3ZXIvdmlldy9hcGkvdmlkZW8vP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9JztcbiAgc3RhdGljIFBERl9WSUVXRVIgPSAndmlld2VyL3ZpZXcvYXBpL3BkZi93ZWIvdmlld2VyLmh0bWw/ZmlsZT0mcGF0aD0ke3BhdGh9JnBhdGhQZGY9JHtwYXRoUGRmfSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9JmNzcz0lMjN0b29sYmFyVmlld2VyUmlnaHQlMjAlMjNwcmludCU3QmRpc3BsYXklM0FibG9jayFpbXBvcnRhbnQlM0IlN0QnO1xuXG4gIHByaXZhdGUgU0laRV9MSU1JVCA9IDEwMjQgKiAxMDI0ICogMTA7IC8vIDEwTUJcbiAgcHJpdmF0ZSBwZGZqczogYW55O1xuICBsYXRlc3RVcmk6IHN0cmluZztcbiAgc2xpZGVVcmk6IHN0cmluZztcbiAgdmlld2VyOiBhbnk7XG4gIGRtc09iamVjdFRpdGxlOiBzdHJpbmc7XG4gIHByaXZhdGUgX3ByZXZpZXdVcmk6IHN0cmluZztcbiAgcHJpdmF0ZSBfZG1zT2JqZWN0OiBEbXNPYmplY3Q7XG4gIGZpbGVTaXplUGlwZTogRmlsZVNpemVQaXBlO1xuICBjdXJyZW50SW5kZXg6IG51bWJlcjtcbiAgYXR0YWNobWVudHM6IERtc09iamVjdEF0dGFjaG1lbnRbXSA9IFtdO1xuICBhdHRhY2htZW50c0xvYWRpbmc6IFN1YnNjcmlwdGlvbjtcbiAgYXR0YWNobWVudHNTaG93bjogYm9vbGVhbjtcbiAgc2VhcmNoVGVybTogc3RyaW5nO1xuICBtZWRpYVR5cGU6IE9iamVjdFR5cGU7XG4gIGN1c3RvbUNvbmZpZzogYW55W10gPSBbXTtcblxuICBwb3BvdXRUcmlnZ2VyUG9zaXRpb24gPSBQb3BvdXRUcmlnZ2VyUG9zaXRpb24uQk9UVE9NX1JJR0hUXG4gIHBvcG91dFdpbmRvd0NvbmZpZzogUG9wb3V0V2luZG93Q29uZmlnO1xuXG5cblxuXG4gIGRlZmF1bHRWaWV3ZXJzID0gW1xuICAgIHtcbiAgICAgIFwibWltZVR5cGVcIjogW1wiYXBwbGljYXRpb24vanNvblwiLCBcInRleHQvanNvblwiLCBcInRleHQvcGxhaW5cIiwgXCJ0ZXh0L3htbFwiLCBcInRleHQvamF2YVwiLCBcInRleHQvamF2YXNjcmlwdFwiLCBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiwgXCJ0ZXh0L2h0bWxcIiwgXCJ0ZXh0L21hcmtkb3duXCIsIFwidGV4dC94LXdlYi1tYXJrZG93blwiLCBcInRleHQveC1tYXJrZG93blwiXSxcbiAgICAgIFwidmlld2VyXCI6IFwidmlld2VyL3ZpZXcvYXBpL21vbmFjby8/cGF0aD0ke3BhdGh9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX1cIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJtaW1lVHlwZVwiOiBbXCJhdWRpby9tcDNcIiwgXCJhdWRpby93ZWJtXCIsIFwiYXVkaW8vb2dnXCIsIFwiYXVkaW8vbXBlZ1wiLCBcInZpZGVvL21wNFwiLCBcInZpZGVvL3dlYm1cIiwgXCJ2aWRlby9vZ2dcIiwgXCJhcHBsaWNhdGlvbi9vZ2dcIl0sXG4gICAgICBcInZpZXdlclwiOiBcInZpZXdlci92aWV3L2FwaS92aWRlby8/cGF0aD0ke3BhdGh9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX1cIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJtaW1lVHlwZVwiOiBbXCJpbWFnZS90aWZmXCIsIFwiaW1hZ2UvanBlZ1wiLCBcImltYWdlL3BuZ1wiLCBcImltYWdlL2FwbmdcIiwgXCJpbWFnZS9naWZcIiwgXCJpbWFnZS9zdmcreG1sXCIsIFwiaW1hZ2Uvd2VicFwiXSxcbiAgICAgIFwidmlld2VyXCI6IFwidmlld2VyL3ZpZXcvYXBpL2ltZy8/cGF0aD0ke3BhdGh9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX1cIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJtaW1lVHlwZVwiOiBbXCJtZXNzYWdlL3JmYzgyMlwiLCBcImFwcGxpY2F0aW9uL3ZuZC5tcy1vdXRsb29rXCJdLFxuICAgICAgXCJ2aWV3ZXJcIjogXCJ2aWV3ZXIvdmlldy9hcGkvbWFpbC8/cGF0aD0ke3BhdGh9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX1cIlxuICAgIH0sXG4gICAgLy8gT05MWSBhcHBsaWVzIHRvIGxvY2FsaG9zdCBlbnY7IGZpeGVkIGVtYWlsIGNvcnMgZm9yIGxvY2FsaG9zdCB0ZXN0aW5nXG4gICAge1xuICAgICAgXCJ0eXBlXCI6IFwiZXh0ZW5kXCIsXG4gICAgICBcInZpZXdlclwiOiBcIigpID0+IHsgaWYgKHBhcmFtZXRlcnMudmlld2VyLm1hdGNoKCcvdmlldy9hcGkvbWFpbC8nKSAmJiBwYXJhbWV0ZXJzLnBhdGgubWF0Y2goJ2xvY2FsaG9zdCcpKSB7IHZhciBob3N0ID0gJ2xvY2FsaG9zdDo0MjAwJzsgdmFyIGNvcnMgPSAna29saWJyaXByb2xpYW50Lm9wdGltYWwtc3lzdGVtcy5kZSc7IHBhcmFtZXRlcnMucGF0aCA9IHBhcmFtZXRlcnMucGF0aC5yZXBsYWNlKGhvc3QsIGNvcnMpOyByZXR1cm4gcGFyYW1ldGVycy52aWV3ZXIgKyAnJmNvcnM9JyArIGNvcnM7fSByZXR1cm4gcGFyYW1ldGVycy52aWV3ZXI7IH1cIlxuICAgIH0sXG4gICAgLy8gV2UgbmVlZCBhbm90aGVyIHBhdGhQZGYgZm9yIGVtYWlsIGF0dGFjaG1lbnQgZmlsZXMuIFRoaXMgd2lsbCBvbmx5IGNvbWUgaW4gcGxhY2UgaWYgdGhlIG1pbWV0eXBlIGlzIHBkZiBvciBvbmUgb2YgdGhlIG5vdCBzdXBwb3J0ZWQgb25lcy4gKHZpZXdlciBhdHRhY2htZW50cyAmIGFwaSBhdHRhY2htZW50cyBjYW4gYmUgcGFyc2VkIGluIGRpZmZlcmVudCBvcmRlciwgc28gd2UgaGF2ZSB0byBtYXRjaCB0aGVtIGJ5IGZpbGVuYW1lKVxuICAgIHtcInZpZXdlclwiOiBcIigpID0+IHt2YXIgYXR0YWNobWVudCA9IHBhcmFtZXRlcnMucGF0aFBkZi5tYXRjaChuZXcgUmVnRXhwKCdhdHRhY2htZW50PShcXFxcXFxcXGQrKScpKTsgdmFyIGEgPSBhdHRhY2htZW50ICYmIGFwaS5jb250ZW50LnZpZXdlcigpLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lmcmFtZScpLmNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhW2RhdGEtc3JjJD1cXFwiJyArIGF0dGFjaG1lbnRbMF0gKyAnXFxcIl0nKTsgIHZhciBwYXJhbXMgPSBhICYmIChhcGkuY29udGVudC5hdHRhY2htZW50cyB8fCBbXSkuZmluZChhdHQgPT4gYXBpLnV0aWwuZGVjb2RlSHRtbENoYXJDb2RlcyhhdHQubmFtZSkgPT09IGEuZ2V0QXR0cmlidXRlKCdkYXRhLWZpbGVuYW1lJykpOyBpZihwYXJhbXMgJiYgcGFyYW1zLnByZXZpZXdVcmkpIHsgZGVidWdnZXI7IHBhcmFtZXRlcnMucGF0aFBkZiA9IGxvY2F0aW9uLm9yaWdpbiArIHBhcmFtcy5wcmV2aWV3VXJpOyB9IHJldHVybiBwYXJhbWV0ZXJzLmRlZmF1bHRWaWV3ZXI7fVwifSxcbiAgICB7XCJlcnJvclwiOiB0cnVlLCBcInR5cGVcIjogXCJlcnJvclwiLCBcInZpZXdlclwiOiBcInZpZXdlci92aWV3L2FwaS9lcnJvci8/cGF0aD0ke3BhdGh9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX1cIn1cbiAgXTtcblxuICBpc1VuZG9ja2VkOiBib29sZWFuO1xuICBsb2FkaW5nOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHVuZG9ja0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCkgZW5hYmxlQ2xvc2VCdG4gPSBmYWxzZTtcbiAgLy8gYnkgZGVmYXVsdCwgdGhlIHZpZXdlciBpZ25vcmVzIHRoZSB2ZXJzaW9uIG9mIHRoZSBkbXMgb2JqZWN0LiBUaGlzIHdpbGwgYWx3YXlzIHNob3cgdGhlIGxhdGVzdCB2ZXJzaW9uLlxuICAvLyBXZSBuZWVkIHRoaXMgdG8gYmUgYWJsZSB0byByZWZyZXNoIHRoZSB2aWV3ZXIgYmVjYXVzZSBvdGhlcndpc2UgcGRmanMgd29ya2VyIHdpbGwgZmFpbC5cbiAgQElucHV0KCkgdXNlVmVyc2lvbiA9IGZhbHNlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm9wZW4nKSBvcGVuO1xuXG4gIEBWaWV3Q2hpbGQoJ2lmcmFtZScsIHtzdGF0aWM6IHRydWV9KSBpZnJhbWU7XG5cbiAgQElucHV0KCdhdHRhY2htZW50cycpXG4gIHNldCBzZXRBdHRhY2htZW50cyhhdHRhY2htZW50cykge1xuICAgIHRoaXMuYXR0YWNobWVudHMgPSBhdHRhY2htZW50cztcbiAgICB0aGlzLmF0dGFjaG1lbnRzU2hvd24gPSBmYWxzZTtcbiAgfVxuXG4gIEBJbnB1dCgnc2VhcmNoVGVybScpXG4gIHNldCBzZXRTZWFyY2hUZXJtKHNlYXJjaFRlcm0pIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0gPSBzZWFyY2hUZXJtIHx8ICcnO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHByZXZpZXdVcmkodXJpOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wcmV2aWV3VXJpID0gdXJpO1xuICAgIHRoaXMudG9nZ2xlVmlld2VyKCk7XG4gIH1cblxuICBnZXQgcHJldmlld1VyaSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJldmlld1VyaTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBwcmV2aWV3RmlsZShmaWxlOiBQcmV2aWV3RmlsZSkge1xuICAgIGlmIChmaWxlKSB7XG4gICAgICB0aGlzLnZpZXdlciA9IHRoaXMuZ2V0Vmlld2VyKGZpbGUpO1xuICAgICAgdGhpcy5tZWRpYVR5cGUgPSBmaWxlLm1lZGlhVHlwZU5hbWUgJiYgdGhpcy5zeXN0ZW0uZ2V0T2JqZWN0VHlwZShmaWxlLm1lZGlhVHlwZU5hbWUpO1xuICAgICAgdGhpcy5wcmV2aWV3VXJpID0gdGhpcy52aWV3ZXIucHJldmlld1VyaTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcmV2aWV3VXJpID0gJyc7XG4gICAgICB0aGlzLnBvcG91dFdpbmRvd0NvbmZpZyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy5fc2V0UG9wb3V0V2luZG93Q29uZmlnKCFmaWxlKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBkbXNPYmplY3QoaXRlbTogRG1zT2JqZWN0KSB7XG4gICAgdGhpcy5fZG1zT2JqZWN0ID0gaXRlbTtcbiAgICB0aGlzLmRtc09iamVjdFRpdGxlID0gaXRlbS50aXRsZSB8fCAnLi4uJztcblxuXG4gICAgdGhpcy5zZXRBdHRhY2htZW50cyA9IFtdO1xuICAgIGlmICh0aGlzLmF0dGFjaG1lbnRzTG9hZGluZykge1xuICAgICAgLy8gY2FuY2VsIGFueSBwZW5kaW5nIHJlcXVlc3RzXG4gICAgICB0aGlzLmF0dGFjaG1lbnRzTG9hZGluZy51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAoaXRlbS5jb250ZW50ICYmIGl0ZW0uY29udGVudC5jb250ZW50cyAmJiBpdGVtLmNvbnRlbnQuY29udGVudHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBmaWxlID0gaXRlbS5jb250ZW50LmNvbnRlbnRzWzBdIHx8IHt9O1xuXG4gICAgICB0aGlzLnByZXZpZXdGaWxlID0ge1xuICAgICAgICB1cmk6IHRoaXMuZG1zLmdldFByZXZpZXcoaXRlbS5jb250ZW50LmlkLCBpdGVtLmNvbnRlbnQudHlwZSwgdGhpcy51c2VWZXJzaW9uID8gaXRlbS52ZXJzaW9uIDogbnVsbCwgdW5kZWZpbmVkLCB0cnVlKSxcbiAgICAgICAgdXJpUGRmOiB0aGlzLmRtcy5nZXRQcmV2aWV3KGl0ZW0uY29udGVudC5pZCwgaXRlbS5jb250ZW50LnR5cGUsIHRoaXMudXNlVmVyc2lvbiA/IGl0ZW0udmVyc2lvbiA6IG51bGwsICdQREYnLCB0cnVlKSxcbiAgICAgICAgbWltZXR5cGU6IGZpbGUubWltZXR5cGUsXG4gICAgICAgIG1pbWVncm91cDogZmlsZS5taW1lZ3JvdXAsXG4gICAgICAgIHNpemU6IGZpbGUuc2l6ZSxcbiAgICAgICAgcGF0aDogZmlsZS5wYXRoLFxuICAgICAgICBtZWRpYVR5cGVOYW1lOiBpdGVtLnR5cGVOYW1lXG4gICAgICB9O1xuXG4gICAgICBpZiAoISFmaWxlLm1pbWVncm91cD8ubWF0Y2goL15tYWlsfG9jdGV0LXN0cmVhbS8pICYmIHRoaXMudmlld2VyLnZpZXdlci5tYXRjaCgnL3ZpZXcvYXBpL3BkZi8nKSkge1xuICAgICAgICB0aGlzLnNsaWRlVXJpID0gdGhpcy5kbXMuZ2V0U2xpZGUoaXRlbS5jb250ZW50LmlkLCBpdGVtLmNvbnRlbnQudHlwZSwgdGhpcy51c2VWZXJzaW9uID8gaXRlbS52ZXJzaW9uIDogbnVsbCwgMjU2KTtcbiAgICAgICAgdGhpcy5hdHRhY2htZW50c0xvYWRpbmcgPSB0aGlzLmRtcy5nZXRBdHRhY2htZW50cyhpdGVtKS5zdWJzY3JpYmUoYSA9PiB0aGlzLnNldEF0dGFjaG1lbnRzID0gYSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnZpZXdlci52aWV3ZXIubWF0Y2goJy92aWV3L2FwaS9tYWlsLycpKSB7XG4gICAgICAgIHRoaXMuZG1zLmdldEF0dGFjaG1lbnRzKGl0ZW0pLnN1YnNjcmliZShhID0+IHdpbmRvdy5hcGkuY29udGVudC5hdHRhY2htZW50cyA9IGEpO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJldmlld1VyaSA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkbXM6IERtc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgc3lzdGVtOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWcsXG4gICAgcHJpdmF0ZSBwbHVnaW5zU2VydmljZTogUGx1Z2luc1NlcnZpY2UpIHtcbiAgICB0aGlzLlNJWkVfTElNSVQgPSB0aGlzLmNvbmZpZy5nZXRSYXcoJ3ByZXZpZXcuZmlsZVNpemVMaW1pdCcpIHx8IHRoaXMuU0laRV9MSU1JVDtcbiAgICB0aGlzLmN1c3RvbUNvbmZpZyA9ICh0aGlzLmNvbmZpZy5nZXRSYXcoJ3ByZXZpZXcudmlld2VycycpIHx8IFtdKS5jb25jYXQodGhpcy5kZWZhdWx0Vmlld2Vycyk7XG5cbiAgICB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwaS5jb250ZW50LmNhdGNoRXJyb3IoKS5zdWJzY3JpYmUoKGV2dDogYW55KSA9PiB7XG4gICAgICBjb25zdCB7ZXJyLCB3aW4sIHBhcmFtZXRlcnN9ID0gZXZ0LmRhdGE7XG4gICAgICBjb25zdCB1cmkgPSB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwcGx5RnVuY3Rpb24odGhpcy5jdXN0b21Db25maWc/LmZpbmQoKHYpID0+IHYuZXJyb3IpPy52aWV3ZXIsICdhcGksIGVyciwgd2luLCBwYXJhbWV0ZXJzJywgW1xuICAgICAgICB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwaSxcbiAgICAgICAgZXJyLFxuICAgICAgICB3aW4sXG4gICAgICAgIHBhcmFtZXRlcnNcbiAgICAgIF0pO1xuICAgICAgdXJpICYmIHdpbiAmJiAod2luLmxvY2F0aW9uLmhyZWYgPSB0aGlzLnJlc29sdmVVcmkodXJpLCBwYXJhbWV0ZXJzKSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRQb3BvdXRXaW5kb3dDb25maWcocmVzZXQ/OiBib29sZWFuKSB7XG4gICAgY29uc3Qgd2luSW5zZXQgPSAyMDtcbiAgICB0aGlzLnBvcG91dFdpbmRvd0NvbmZpZyA9ICFyZXNldCA/IHtcbiAgICAgIHRpdGxlOiB0aGlzLmRtc09iamVjdFRpdGxlLFxuICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgYmxvY2tTdGFydDogd2luSW5zZXQsXG4gICAgICAgIGlubGluZVN0YXJ0OiB3aW5kb3cuc2NyZWVuLndpZHRoIC8gMlxuICAgICAgfSwgc2l6ZToge1xuICAgICAgICB3aWR0aDogd2luZG93LnNjcmVlbi53aWR0aCAvIDIgLSB3aW5JbnNldCxcbiAgICAgICAgaGVpZ2h0OiB3aW5kb3cuc2NyZWVuLmhlaWdodCAtIHdpbkluc2V0ICogMixcbiAgICAgIH1cbiAgICB9IDogdW5kZWZpbmVkO1xuICB9XG5cbiAgc2VsZWN0QXR0YWNobWVudChhdHRhY2htZW50PzogYW55KSB7XG4gICAgY29uc3QgcHJldmlld1VyaSA9IGF0dGFjaG1lbnQgJiYgdGhpcy5nZXRWaWV3ZXIoe3VyaVBkZjogYXR0YWNobWVudC5wcmV2aWV3VXJpfSBhcyBQcmV2aWV3RmlsZSkucHJldmlld1VyaTtcbiAgICB0aGlzLmxvYWREb2N1bWVudChwcmV2aWV3VXJpIHx8IHRoaXMucHJldmlld1VyaSwgdHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlVmlld2VyKCkge1xuICAgIHRoaXMub3BlbiA9ICEhdGhpcy5wcmV2aWV3VXJpO1xuICAgIGlmICghIXRoaXMucHJldmlld1VyaSkge1xuICAgICAgdGhpcy5sb2FkRG9jdW1lbnQodGhpcy5wcmV2aWV3VXJpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaCgpIHtcbiAgICB0aGlzLmxvYWREb2N1bWVudCh0aGlzLnByZXZpZXdVcmksIHRydWUpO1xuICB9XG5cbiAgZ2V0Vmlld2VyKGZpbGU6IFByZXZpZXdGaWxlKTogYW55IHtcbiAgICBjb25zdCBpc1ZpZGVvID0gISFmaWxlLm1pbWVncm91cD8ubWF0Y2goL15hdWRpb3xedmlkZW8vKTtcbiAgICBjb25zdCBkZWZhdWx0Vmlld2VyID0gaXNWaWRlbyA/IE1lZGlhQ29tcG9uZW50LlZJREVPX1ZJRVdFUiA6IE1lZGlhQ29tcG9uZW50LlBERl9WSUVXRVI7XG4gICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IGZpbGUuZmlsZUV4dGVuc2lvbiB8fCAoZmlsZS5wYXRoPy5pbmNsdWRlcygnLicpID8gZmlsZS5wYXRoLnNwbGl0KCcuJykucG9wKCkgOiAnJyk7XG4gICAgY29uc3QgbWltZVR5cGUgPSBmaWxlLm1pbWV0eXBlO1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY3VzdG9tQ29uZmlnLmZpbmQoKGM6IFZpZXdlckNvbmZpZykgPT4ge1xuICAgICAgY29uc3QgbWF0Y2hNVCA9ICFjLm1pbWVUeXBlIHx8ICh0eXBlb2YgYy5taW1lVHlwZSA9PT0gJ3N0cmluZycgPyBbYy5taW1lVHlwZV0gOiBjLm1pbWVUeXBlKS5pbmNsdWRlcyhtaW1lVHlwZT8udG9Mb3dlckNhc2UoKSk7XG4gICAgICBjb25zdCBtYXRjaEZFID0gIWMuZmlsZUV4dGVuc2lvbiB8fCAodHlwZW9mIGMuZmlsZUV4dGVuc2lvbiA9PT0gJ3N0cmluZycgPyBbYy5maWxlRXh0ZW5zaW9uXSA6IGMuZmlsZUV4dGVuc2lvbikuaW5jbHVkZXMoKGZpbGVFeHRlbnNpb24pLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgcmV0dXJuIG1hdGNoTVQgJiYgbWF0Y2hGRSAmJiAoIWMudHlwZSB8fCBjLnR5cGUgPT09ICdkZWZhdWx0Jyk7XG4gICAgfSk7XG4gICAgY29uc3QgcGFyYW1ldGVycyA9IHtcbiAgICAgIGZpbGUsXG4gICAgICBwYXRoOiBsb2NhdGlvbi5vcmlnaW4gKyBmaWxlLnVyaSxcbiAgICAgIHBhdGhQZGY6IGxvY2F0aW9uLm9yaWdpbiArIGZpbGUudXJpUGRmLFxuICAgICAgdmlld2VyOiBjb25maWc/LnZpZXdlciB8fCBkZWZhdWx0Vmlld2VyLFxuICAgICAgbG9hZDogY29uZmlnPy5sb2FkLFxuICAgICAgZmlsZUV4dGVuc2lvbixcbiAgICAgIG1pbWVUeXBlLFxuICAgICAgdGhlbWU6ICcnLFxuICAgICAgZGVmYXVsdFZpZXdlcixcbiAgICAgIHByZXZpZXdVcmk6ICcnXG4gICAgfTtcbiAgICBwYXJhbWV0ZXJzLnZpZXdlciA9IHRoaXMucGx1Z2luc1NlcnZpY2UuYXBwbHlGdW5jdGlvbihwYXJhbWV0ZXJzLnZpZXdlciwgJ2NvbXBvbmVudCwgZG1zT2JqZWN0LCBwYXJhbWV0ZXJzJywgW3RoaXMsIHRoaXMuX2Rtc09iamVjdCwgcGFyYW1ldGVyc10pIHx8IGRlZmF1bHRWaWV3ZXI7XG5cbiAgICBjb25zdCBleHRlbmQgPSB0aGlzLmN1c3RvbUNvbmZpZy5maW5kKChjKSA9PiBjLnR5cGUgPT09ICdleHRlbmQnKTtcbiAgICBpZiAoZXh0ZW5kKSBwYXJhbWV0ZXJzLnZpZXdlciA9IHRoaXMucGx1Z2luc1NlcnZpY2UuYXBwbHlGdW5jdGlvbihleHRlbmQudmlld2VyLCAnY29tcG9uZW50LCBkbXNPYmplY3QsIHBhcmFtZXRlcnMnLCBbdGhpcywgdGhpcy5fZG1zT2JqZWN0LCBwYXJhbWV0ZXJzXSk7XG5cbiAgICBwYXJhbWV0ZXJzLnByZXZpZXdVcmkgPSB0aGlzLnJlc29sdmVVcmkocGFyYW1ldGVycy52aWV3ZXIsIHBhcmFtZXRlcnMpO1xuICAgIHJldHVybiBwYXJhbWV0ZXJzO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlVXJpKHZpZXdlcjogc3RyaW5nLCBwYXJhbWV0ZXJzOiBhbnkpIHtcbiAgICBsZXQgb3JpZ2luID0gJyc7XG4gICAgaWYgKCF2aWV3ZXIuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG4gICAgICBvcmlnaW4gPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgdGhpcy5jb25maWcuZ2V0UmF3KCd1cmkuY29udGV4dFBhdGgnKTtcbiAgICAgIGlmICghb3JpZ2luLmVuZHNXaXRoKCcvJykgJiYgIXZpZXdlci5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgICAgb3JpZ2luICs9ICcvJztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9yaWdpbiArIHZpZXdlclxuICAgICAgLnJlcGxhY2UoJyR7b3JpZ2luYWxQYXRofScsIHBhcmFtZXRlcnMucGF0aClcbiAgICAgIC5yZXBsYWNlKCcke3BhdGh9JywgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtZXRlcnMucGF0aCkpXG4gICAgICAucmVwbGFjZSgnJHtwYXRoUGRmfScsIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXJzLnBhdGhQZGYpKVxuICAgICAgLnJlcGxhY2UoJyR7ZmlsZUV4dGVuc2lvbn0nLCBlbmNvZGVVUklDb21wb25lbnQocGFyYW1ldGVycy5maWxlRXh0ZW5zaW9uKSlcbiAgICAgIC5yZXBsYWNlKCcke21pbWVUeXBlfScsIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXJzLm1pbWVUeXBlKSlcbiAgICAgIC5yZXBsYWNlKCcke3RoZW1lfScsIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXJzLnRoZW1lKSlcbiAgICAgIC5yZXBsYWNlKCcke2xhbmd9JywgQ29udGVudFByZXZpZXdTZXJ2aWNlLm1hcExhbmcodGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcpKTtcbiAgfVxuXG4gIGxvYWREb2N1bWVudCh1cmk6IHN0cmluZywgZm9yY2U/OiBib29sZWFuKSB7XG4gICAgaWYgKCFmb3JjZSAmJiAoIXVyaSB8fCAodXJpID09PSB0aGlzLmxhdGVzdFVyaSkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMubGF0ZXN0VXJpID0gdXJpIHx8ICcnO1xuXG4gICAgaWYgKHRoaXMucHJldmlld1VyaSkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudCwgJ3NyYycsIHRoaXMubGF0ZXN0VXJpKTtcbiAgICAgIGNvbnN0IG9ubG9hZCA9ICgpID0+IHRoaXMucGx1Z2luc1NlcnZpY2UuYXBwbHlGdW5jdGlvbih0aGlzLnZpZXdlcj8ubG9hZCwgJ2lmcmFtZSwgY29tcG9uZW50JywgW3RoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQsIHRoaXNdKTtcbiAgICAgIHRoaXMuaWZyYW1lSW5pdCh0aGlzLmlmcmFtZS5uYXRpdmVFbGVtZW50LCB0aGlzLnZpZXdlcj8ubG9hZCAmJiBvbmxvYWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmlmcmFtZS5uYXRpdmVFbGVtZW50LCAnc3JjJywgdGhpcy5sYXRlc3RVcmkpO1xuICAgICAgY29uc3Qgb25sb2FkID0gKCkgPT4gdGhpcy5wbHVnaW5zU2VydmljZS5hcHBseUZ1bmN0aW9uKHRoaXMudmlld2VyPy5sb2FkLCAnaWZyYW1lLCBjb21wb25lbnQnLCBbdGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudCwgdGhpc10pO1xuICAgICAgdGhpcy5pZnJhbWVJbml0KHRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQsIHRoaXMudmlld2VyPy5sb2FkICYmIG9ubG9hZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBzZWFyY2ggaW5zaWRlIFBERi5KUyBiYXNlZCBvbiBzZWFyY2ggdGVybVxuICAgKiBAcGFyYW0gdGVybSBzZWFyY2ggdGVybVxuICAgKiBAcGFyYW0gd2luIGlmcmFtZSB3aW5kb3dcbiAgICovXG4gIHByaXZhdGUgc2VhcmNoUERGKHRlcm0gPSAnJywgd2luOiBhbnkpIHtcbiAgICAvLyByZW1vdmUgYWxsIHNwZWNpYWwgY2hhcmFjdGVyc1xuICAgIHRlcm0gPSAodGVybSB8fCAnJykucmVwbGFjZSgvW1xcXCJ8XFwqXS9nLCAnJykudHJpbSgpO1xuICAgIGlmICh0ZXJtICYmIHdpbj8uUERGVmlld2VyQXBwbGljYXRpb24/LmFwcENvbmZpZz8uZmluZEJhcikge1xuICAgICAgd2luLlBERlZpZXdlckFwcGxpY2F0aW9uLmFwcENvbmZpZy5maW5kQmFyLmZpbmRGaWVsZC52YWx1ZSA9IHRlcm07XG4gICAgICB3aW4uUERGVmlld2VyQXBwbGljYXRpb24uYXBwQ29uZmlnLmZpbmRCYXIuaGlnaGxpZ2h0QWxsQ2hlY2tib3guY2hlY2tlZCA9IHRydWU7XG4gICAgICB3aW4uUERGVmlld2VyQXBwbGljYXRpb24uYXBwQ29uZmlnLmZpbmRCYXIuY2FzZVNlbnNpdGl2ZUNoZWNrYm94LmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgIC8vIHRyaWdnZXIgZmluZCBldmVudCBvbiBwZGYuanMgbG9hZFxuICAgICAgd2luLlBERlZpZXdlckFwcGxpY2F0aW9uLmluaXRpYWxpemVkUHJvbWlzZT8udGhlbigoKSA9PiB3aW4uUERGVmlld2VyQXBwbGljYXRpb24uZmluZEJhci5kaXNwYXRjaEV2ZW50KCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJldmVudERyb3BFdmVudCh3aW46IGFueSkge1xuICAgIGlmICh3aW4/LmxvY2F0aW9uPy5vcmlnaW4gPT09IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pIHtcbiAgICAgIHdpbj8uZG9jdW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCAoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKSk7XG4gICAgICAvLyBkaXNwYWNoIGRyYWcgJiBkcm9wIGV2ZW50cyB0byBtYWluIHdpbmRvd1xuICAgICAgd2luPy5kb2N1bWVudD8uYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2VudGVyJywgKGUpID0+IHtcbiAgICAgICAgd2luZG93LmRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IERyYWdFdmVudCgnZHJhZ2VudGVyJywgZSkpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHdpbmRvdy5kb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBEcmFnRXZlbnQoJ2RyYWdsZWF2ZScsIGUpKSwgMTApO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaWZyYW1lSW5pdChpZnJhbWUgPSB0aGlzLmlmcmFtZSwgb25sb2FkPzogRnVuY3Rpb24pIHtcbiAgICBpZiAoaWZyYW1lKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgaWZyYW1lLl9pbml0IHx8IGZyb21FdmVudChpZnJhbWUsICdsb2FkJylcbiAgICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHdpbiA9IHRoaXMuc2V0QXBpKGlmcmFtZSk7XG4gICAgICAgICAgb25sb2FkICYmIG9ubG9hZCgpO1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hQREYodGhpcy5zZWFyY2hUZXJtLCB3aW4pO1xuICAgICAgICAgICAgdGhpcy5wcmV2ZW50RHJvcEV2ZW50KHdpbik7XG4gICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgfSk7XG4gICAgICBpZnJhbWUuX2luaXQgPSAhIXRoaXMuc2V0QXBpKGlmcmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRBcGkoaWZyYW1lOiBhbnkpIHtcbiAgICAvLyBzZXQgYXBpIHRvIGlmcmFtZSB3aW5kb3dcbiAgICBjb25zdCB3aW4gPSBpZnJhbWU/LmNvbnRlbnRXaW5kb3cgfHwgaWZyYW1lO1xuICAgIHdpblsnYXBpJ10gPSB3aW5kb3dbJ2FwaSddO1xuICAgIGlmICh3aW5bJ2FwaSddPy5jb250ZW50KSB7XG4gICAgICB3aW5bJ2FwaSddLmNvbnRlbnQucmVzb2x2ZVZpZXdlclBhcmFtcyA9IChwYXJhbWV0ZXJzOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgdXJpID0gcGFyYW1ldGVycy5wYXRoLnJlcGxhY2UobG9jYXRpb24ub3JpZ2luLCAnJyk7XG4gICAgICAgIGNvbnN0IHZpZXdlciA9IHRoaXMuZ2V0Vmlld2VyKHt1cmksIG1pbWV0eXBlOiBwYXJhbWV0ZXJzLm1pbWVUeXBlLCBmaWxlRXh0ZW5zaW9uOiBwYXJhbWV0ZXJzLmZpbGVFeHRlbnNpb24sIHVyaVBkZjogdXJpLCBtaW1lZ3JvdXA6ICcnLCBzaXplOiAxfSk7XG4gICAgICAgIHJldHVybiB7dXJpOiB2aWV3ZXIucHJldmlld1VyaSB8fCBwYXJhbWV0ZXJzLnBhdGh9O1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICB9XG5cbn1cbiIsIjxkaXYgW2hpZGRlbl09XCIhb3BlblwiPlxuICA8IS0tIGF0dGFjaG1lbnRzIG92ZXJsYXkgLS0+XG4gIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50c1wiICpuZ0lmPVwiYXR0YWNobWVudHM/Lmxlbmd0aFwiXG4gICAgW25nQ2xhc3NdPVwie25vdG1haW46IGxhdGVzdFVyaSAhPT0gcHJldmlld1VyaSAmJiAhYXR0YWNobWVudHNTaG93biwgYWN0aXZlOiBhdHRhY2htZW50c1Nob3dufVwiXG4gICAgKGVvT3V0c2lkZUNsaWNrKT1cImF0dGFjaG1lbnRzU2hvd24gPSBmYWxzZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50cy1saXN0XCIgKm5nSWY9XCJhdHRhY2htZW50c1Nob3duXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXR0YWNobWVudCBtYWluXCIgKGNsaWNrKT1cInNlbGVjdEF0dGFjaG1lbnQobnVsbClcIiBbbmdDbGFzc109XCJ7Y3VycmVudDogbGF0ZXN0VXJpID09PSBwcmV2aWV3VXJpfVwiPnt7ZG1zT2JqZWN0VGl0bGV9fTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnRcIiAqbmdGb3I9XCJsZXQgYSBvZiBhdHRhY2htZW50c1wiIChjbGljayk9XCJzZWxlY3RBdHRhY2htZW50KGEpXCIgW25nQ2xhc3NdPVwie2N1cnJlbnQ6IGxhdGVzdFVyaSA9PT0gYS5wcmV2aWV3VXJpfVwiPlxuICAgICAgICB7e2EubmFtZX19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxlby1pY29uIGNsYXNzPVwiYnV0dG9uXCIgW2JhZGdlXT1cImF0dGFjaG1lbnRzPy5sZW5ndGhcIiAoY2xpY2spPVwiYXR0YWNobWVudHNTaG93biA9ICFhdHRhY2htZW50c1Nob3duXCJcbiAgICAgIFtpY29uU3JjXT1cImF0dGFjaG1lbnRzU2hvd24gPyAnYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19jbGVhci5zdmcnIDogJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfYXR0YWNobWVudC5zdmcnXCI+PC9lby1pY29uPlxuICA8L2Rpdj5cblxuICA8eXZjLXBvcG91dFxuICBbcG9wb3V0V2luZG93Q29uZmlnXT1cInBvcG91dFdpbmRvd0NvbmZpZ1wiXG4gIFt0cmlnZ2VyUG9zaXRpb25dPVwicG9wb3V0VHJpZ2dlclBvc2l0aW9uXCIgW2Rpc2FibGVkXT1cInVuZG9ja0Rpc2FibGVkXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwicHJldmlldy1jb250YWluZXJcIiBbc3R5bGUub3ZlcmZsb3ddPVwiJ2hpZGRlbidcIj5cbiAgICAgIDxpZnJhbWUgW2hpZGRlbl09XCJpc1VuZG9ja2VkIHx8IGxvYWRpbmdcIiAjaWZyYW1lIGhlaWdodD1cIjEwMCVcIiB3aWR0aD1cIjEwMCVcIiBmcmFtZWJvcmRlcj1cIjBcIj48L2lmcmFtZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJsb2FkZXItb3ZlcmxheV9fbWFza1wiICpuZ0lmPVwibG9hZGluZ1wiPlxuICAgICAgICA8ZW8tbG9hZGluZy1zcGlubmVyIGNsYXNzPVwiaWZyYW1lX19sb2FkZXJcIj48L2VvLWxvYWRpbmctc3Bpbm5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNsaWRlXCIgKm5nSWY9XCJpc1VuZG9ja2VkXCI+XG4gICAgICAgIDxlby1pY29uICpuZ0lmPVwibWVkaWFUeXBlXCIgW29iamVjdFR5cGVdPVwibWVkaWFUeXBlXCI+PC9lby1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwveXZjLXBvcG91dD5cbjwvZGl2PlxuXG48ZGl2IFtoaWRkZW5dPVwib3BlblwiIGNsYXNzPVwiZW1wdHktY29udGFpbmVyXCI+XG4gIDxlby1pY29uIGNsYXNzPVwibm9maWxlXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfbm8tZmlsZS5zdmcnXCI+PC9lby1pY29uPlxuPC9kaXY+XG4iXX0=
316
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvbWVkaWEvbWVkaWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvbWVkaWEvbWVkaWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUF3QixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFVNUcsT0FBTyxFQUFDLHFCQUFxQixFQUFxQixNQUFNLDJCQUEyQixDQUFDO0FBQ3BGLE9BQU8sRUFBQyxTQUFTLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFLN0MsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7O0FBMEI1RCxJQUFNLGNBQWMsc0JBQXBCLE1BQU0sY0FBYztJQW9FekIsSUFDSSxjQUFjLENBQUMsV0FBVztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUNJLGFBQWEsQ0FBQyxVQUFVO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFDSSxVQUFVLENBQUMsR0FBVztRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFDSSxXQUFXLENBQUMsSUFBaUI7UUFDL0IsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNyRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1NBQzFDO2FBQU07WUFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsU0FBUyxDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELElBQ0ksU0FBUyxDQUFDLElBQWU7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztRQUcxQyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMzQiw4QkFBOEI7WUFDOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3ZDO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUN6RSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFNUMsSUFBSSxDQUFDLFdBQVcsR0FBRztnQkFDakIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDO2dCQUNwSCxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUM7Z0JBQ25ILFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUN6QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUTthQUM3QixDQUFDO1lBRUYsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtnQkFDL0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ2xILElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ2pHO1lBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRTtnQkFDL0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ2xGO1NBRUY7YUFBTTtZQUNMLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVELFlBQW1CLFNBQTJCLEVBQ3BDLEdBQWUsRUFDZixRQUFtQixFQUNuQixNQUFxQixFQUNyQixNQUFjLEVBQ2QsY0FBOEI7UUFMckIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDcEMsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQUNmLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBNUloQyxlQUFVLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPO1FBVTlDLGdCQUFXLEdBQTBCLEVBQUUsQ0FBQztRQUt4QyxpQkFBWSxHQUFVLEVBQUUsQ0FBQztRQUV6QiwwQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQyxZQUFZLENBQUE7UUFNMUQsbUJBQWMsR0FBRztZQUNmO2dCQUNFLFVBQVUsRUFBRSxDQUFDLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixDQUFDO2dCQUN6TSxRQUFRLEVBQUUsc0hBQXNIO2FBQ2pJO1lBQ0Q7Z0JBQ0UsVUFBVSxFQUFFLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixDQUFDO2dCQUM3SCxRQUFRLEVBQUUscUhBQXFIO2FBQ2hJO1lBQ0Q7Z0JBQ0UsVUFBVSxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsWUFBWSxDQUFDO2dCQUMvRyxRQUFRLEVBQUUsbUhBQW1IO2FBQzlIO1lBQ0Q7Z0JBQ0UsVUFBVSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsNEJBQTRCLENBQUM7Z0JBQzVELFFBQVEsRUFBRSxvSEFBb0g7YUFDL0g7WUFDRCx3RUFBd0U7WUFDeEU7Z0JBQ0UsTUFBTSxFQUFFLFFBQVE7Z0JBQ2hCLFFBQVEsRUFBRSwrU0FBK1M7YUFDMVQ7WUFDRCwwUEFBMFA7WUFDMVAsRUFBQyxRQUFRLEVBQUUsaWdCQUFpZ0IsRUFBQztZQUM3Z0IsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLHFIQUFxSCxFQUFDO1NBQ2xLLENBQUM7UUFLTyxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUV2QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUNoQywwR0FBMEc7UUFDMUcsMEZBQTBGO1FBQ2pGLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFtRjFCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ2pGLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFOUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2xFLE1BQU0sRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDeEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsMkJBQTJCLEVBQUU7Z0JBQzFILElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRztnQkFDdkIsR0FBRztnQkFDSCxHQUFHO2dCQUNILFVBQVU7YUFDWCxDQUFDLENBQUM7WUFDSCxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxLQUFlO1FBQzVDLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYztZQUMxQixRQUFRLEVBQUU7Z0JBQ1IsVUFBVSxFQUFFLFFBQVE7Z0JBQ3BCLFdBQVcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDO2FBQ3JDLEVBQUUsSUFBSSxFQUFFO2dCQUNQLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsUUFBUTtnQkFDekMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLFFBQVEsR0FBRyxDQUFDO2FBQzVDO1NBQ0YsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFnQjtRQUMvQixNQUFNLFVBQVUsR0FBRyxVQUFVLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsVUFBVSxFQUFnQixDQUFDLENBQUMsVUFBVSxDQUFDO1FBQzNHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFpQjtRQUN6QixNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekQsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxnQkFBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsZ0JBQWMsQ0FBQyxVQUFVLENBQUM7UUFDeEYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekcsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQWUsRUFBRSxFQUFFO1lBQ3hELE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQzlILE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLGFBQWEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUN4SixPQUFPLE9BQU8sSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQztRQUNqRSxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sVUFBVSxHQUFHO1lBQ2pCLElBQUk7WUFDSixJQUFJLEVBQUUsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRztZQUNoQyxPQUFPLEVBQUUsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTTtZQUN0QyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxhQUFhO1lBQ3ZDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSTtZQUNsQixhQUFhO1lBQ2IsUUFBUTtZQUNSLEtBQUssRUFBRSxFQUFFO1lBQ1QsYUFBYTtZQUNiLFVBQVUsRUFBRSxFQUFFO1NBQ2YsQ0FBQztRQUNGLFVBQVUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxrQ0FBa0MsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksYUFBYSxDQUFDO1FBRW5LLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBQ2xFLElBQUksTUFBTTtZQUFFLFVBQVUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxrQ0FBa0MsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFMUosVUFBVSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDdkUsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVPLFVBQVUsQ0FBQyxNQUFjLEVBQUUsVUFBZTtRQUNoRCxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDOUIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDeEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNwRCxNQUFNLElBQUksR0FBRyxDQUFDO2FBQ2Y7U0FDRjtRQUNELE9BQU8sTUFBTSxHQUFHLE1BQU07YUFDbkIsT0FBTyxDQUFDLGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUM7YUFDM0MsT0FBTyxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdkQsT0FBTyxDQUFDLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDN0QsT0FBTyxDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUN6RSxPQUFPLENBQUMsYUFBYSxFQUFFLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUMvRCxPQUFPLENBQUMsVUFBVSxFQUFFLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN6RCxPQUFPLENBQUMsU0FBUyxFQUFFLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUFXLEVBQUUsS0FBZTtRQUN2QyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUU7WUFDaEQsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUUzQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM3RSxNQUFNLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDbEksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQztTQUN6RTthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM3RSxNQUFNLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDbEksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQztTQUN6RTtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssU0FBUyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsR0FBUTtRQUNuQyxnQ0FBZ0M7UUFDaEMsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkQsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUU7WUFDekQsR0FBRyxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDbEUsR0FBRyxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUMvRSxHQUFHLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ2pGLG9DQUFvQztZQUNwQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztTQUMzRztJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxHQUFRO1FBQy9CLElBQUksR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEtBQUssTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDcEQsR0FBRyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLDRDQUE0QztZQUM1QyxHQUFHLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNqRCxNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0QsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JGLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQWlCO1FBQ2hELElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsTUFBTSxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQztpQkFDdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDMUIsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNoQyxNQUFNLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDckMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM3QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDVixDQUFDLENBQUMsQ0FBQztZQUNMLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdEM7SUFDSCxDQUFDO0lBRU8sTUFBTSxDQUFDLE1BQVc7UUFDeEIsMkJBQTJCO1FBQzNCLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxhQUFhLElBQUksTUFBTSxDQUFDO1FBQzVDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0Isb0ZBQW9GO1FBQ3BGLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxLQUFZLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUM7UUFFekYsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFO1lBQ3ZCLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxVQUFlLEVBQUUsRUFBRTtnQkFDM0QsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDekQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7Z0JBQ2xKLE9BQU8sRUFBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFDLENBQUM7WUFDckQsQ0FBQyxDQUFDO1NBQ0g7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxlQUFlO0lBQ2YsQ0FBQztJQUVELFdBQVc7SUFDWCxDQUFDOztBQW5VTSwyQkFBWSxHQUFHLHFIQUFxSCxDQUFDO0FBQ3JJLHlCQUFVLEdBQUcsa09BQWtPLENBQUM7MkdBSDVPLGNBQWM7K0ZBQWQsY0FBYyxtWEFGZCxDQUFDLHFCQUFxQixDQUFDLDBJQ3pDcEMsa3REQW1DQTtBRFFhLGNBQWM7SUFQMUIsWUFBWSxFQUFFO0dBT0YsY0FBYyxDQXVVMUI7U0F2VVksY0FBYzsyRkFBZCxjQUFjO2tCQU4xQixTQUFTOytCQUNFLFVBQVUsYUFHVCxDQUFDLHFCQUFxQixDQUFDO3NPQTREekIsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ3FCLElBQUk7c0JBQTlCLFdBQVc7dUJBQUMsWUFBWTtnQkFFWSxNQUFNO3NCQUExQyxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBRy9CLGNBQWM7c0JBRGpCLEtBQUs7dUJBQUMsYUFBYTtnQkFPaEIsYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyxZQUFZO2dCQU1mLFVBQVU7c0JBRGIsS0FBSztnQkFXRixXQUFXO3NCQURkLEtBQUs7Z0JBY0YsU0FBUztzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBSZW5kZXJlcjIsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb25maWcsXG4gIERtc09iamVjdCxcbiAgRG1zT2JqZWN0QXR0YWNobWVudCxcbiAgRG1zU2VydmljZSxcbiAgT2JqZWN0VHlwZSxcbiAgU3lzdGVtU2VydmljZSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7UG9wb3V0VHJpZ2dlclBvc2l0aW9uLCBQb3BvdXRXaW5kb3dDb25maWd9IGZyb20gJ0B5dXV2aXMvY29tcG9uZW50cy9wb3BvdXQnO1xuaW1wb3J0IHtmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3Rha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0ZpbGVTaXplUGlwZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGlwZXMvZmlsZXNpemUucGlwZSc7XG5pbXBvcnQge1BsdWdpbnNTZXJ2aWNlfSBmcm9tICcuLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2FwaS9wbHVnaW5zLnNlcnZpY2UnO1xuaW1wb3J0IHtDb250ZW50UHJldmlld1NlcnZpY2V9IGZyb20gJy4vY29udGVudC1wcmV2aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHtVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdlckNvbmZpZyB7XG4gIG1pbWVUeXBlPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIGZpbGVFeHRlbnNpb24/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgdmlld2VyOiBzdHJpbmc7XG4gIGVycm9yPzogYm9vbGVhbjtcbiAgdHlwZT86ICdjb21wYXJlJyB8ICdleHRlbmQnIHwgJ2Vycm9yJyB8ICdkZWZhdWx0Jztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHJldmlld0ZpbGUge1xuICB1cmk6IHN0cmluZztcbiAgdXJpUGRmOiBzdHJpbmc7XG4gIG1pbWV0eXBlOiBzdHJpbmc7XG4gIG1pbWVncm91cDogc3RyaW5nO1xuICBzaXplOiBudW1iZXI7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGZpbGVFeHRlbnNpb24/OiBzdHJpbmc7XG4gIG1lZGlhVHlwZU5hbWU/OiBzdHJpbmc7XG59XG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLW1lZGlhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lZGlhLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVkaWEuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbQ29udGVudFByZXZpZXdTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBNZWRpYUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgc3RhdGljIFZJREVPX1ZJRVdFUiA9ICd2aWV3ZXIvdmlldy9hcGkvdmlkZW8vP3BhdGg9JHtwYXRofSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9JztcbiAgc3RhdGljIFBERl9WSUVXRVIgPSAndmlld2VyL3ZpZXcvYXBpL3BkZi93ZWIvdmlld2VyLmh0bWw/ZmlsZT0mcGF0aD0ke3BhdGh9JnBhdGhQZGY9JHtwYXRoUGRmfSZtaW1lVHlwZT0ke21pbWVUeXBlfSZmaWxlRXh0ZW5zaW9uPSR7ZmlsZUV4dGVuc2lvbn0mbGFuZz0ke2xhbmd9JnRoZW1lPSR7dGhlbWV9JmNzcz0lMjN0b29sYmFyVmlld2VyUmlnaHQlMjAlMjNwcmludCU3QmRpc3BsYXklM0FibG9jayFpbXBvcnRhbnQlM0IlN0QnO1xuXG4gIHByaXZhdGUgU0laRV9MSU1JVCA9IDEwMjQgKiAxMDI0ICogMTA7IC8vIDEwTUJcbiAgcHJpdmF0ZSBwZGZqczogYW55O1xuICBsYXRlc3RVcmk6IHN0cmluZztcbiAgc2xpZGVVcmk6IHN0cmluZztcbiAgdmlld2VyOiBhbnk7XG4gIGRtc09iamVjdFRpdGxlOiBzdHJpbmc7XG4gIHByaXZhdGUgX3ByZXZpZXdVcmk6IHN0cmluZztcbiAgcHJpdmF0ZSBfZG1zT2JqZWN0OiBEbXNPYmplY3Q7XG4gIGZpbGVTaXplUGlwZTogRmlsZVNpemVQaXBlO1xuICBjdXJyZW50SW5kZXg6IG51bWJlcjtcbiAgYXR0YWNobWVudHM6IERtc09iamVjdEF0dGFjaG1lbnRbXSA9IFtdO1xuICBhdHRhY2htZW50c0xvYWRpbmc6IFN1YnNjcmlwdGlvbjtcbiAgYXR0YWNobWVudHNTaG93bjogYm9vbGVhbjtcbiAgc2VhcmNoVGVybTogc3RyaW5nO1xuICBtZWRpYVR5cGU6IE9iamVjdFR5cGU7XG4gIGN1c3RvbUNvbmZpZzogYW55W10gPSBbXTtcblxuICBwb3BvdXRUcmlnZ2VyUG9zaXRpb24gPSBQb3BvdXRUcmlnZ2VyUG9zaXRpb24uQk9UVE9NX1JJR0hUXG4gIHBvcG91dFdpbmRvd0NvbmZpZzogUG9wb3V0V2luZG93Q29uZmlnO1xuXG5cblxuXG4gIGRlZmF1bHRWaWV3ZXJzID0gW1xuICAgIHtcbiAgICAgIFwibWltZVR5cGVcIjogW1wiYXBwbGljYXRpb24vanNvblwiLCBcInRleHQvanNvblwiLCBcInRleHQvcGxhaW5cIiwgXCJ0ZXh0L3htbFwiLCBcInRleHQvamF2YVwiLCBcInRleHQvamF2YXNjcmlwdFwiLCBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiwgXCJ0ZXh0L2h0bWxcIiwgXCJ0ZXh0L21hcmtkb3duXCIsIFwidGV4dC94LXdlYi1tYXJrZG93blwiLCBcInRleHQveC1tYXJrZG93blwiXSxcbiAgICAgIFwidmlld2VyXCI6IFwidmlld2VyL3ZpZXcvYXBpL21vbmFjby8/cGF0aD0ke3BhdGh9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX1cIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJtaW1lVHlwZVwiOiBbXCJhdWRpby9tcDNcIiwgXCJhdWRpby93ZWJtXCIsIFwiYXVkaW8vb2dnXCIsIFwiYXVkaW8vbXBlZ1wiLCBcInZpZGVvL21wNFwiLCBcInZpZGVvL3dlYm1cIiwgXCJ2aWRlby9vZ2dcIiwgXCJhcHBsaWNhdGlvbi9vZ2dcIl0sXG4gICAgICBcInZpZXdlclwiOiBcInZpZXdlci92aWV3L2FwaS92aWRlby8/cGF0aD0ke3BhdGh9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX1cIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJtaW1lVHlwZVwiOiBbXCJpbWFnZS90aWZmXCIsIFwiaW1hZ2UvanBlZ1wiLCBcImltYWdlL3BuZ1wiLCBcImltYWdlL2FwbmdcIiwgXCJpbWFnZS9naWZcIiwgXCJpbWFnZS9zdmcreG1sXCIsIFwiaW1hZ2Uvd2VicFwiXSxcbiAgICAgIFwidmlld2VyXCI6IFwidmlld2VyL3ZpZXcvYXBpL2ltZy8/cGF0aD0ke3BhdGh9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX1cIlxuICAgIH0sXG4gICAge1xuICAgICAgXCJtaW1lVHlwZVwiOiBbXCJtZXNzYWdlL3JmYzgyMlwiLCBcImFwcGxpY2F0aW9uL3ZuZC5tcy1vdXRsb29rXCJdLFxuICAgICAgXCJ2aWV3ZXJcIjogXCJ2aWV3ZXIvdmlldy9hcGkvbWFpbC8/cGF0aD0ke3BhdGh9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX1cIlxuICAgIH0sXG4gICAgLy8gT05MWSBhcHBsaWVzIHRvIGxvY2FsaG9zdCBlbnY7IGZpeGVkIGVtYWlsIGNvcnMgZm9yIGxvY2FsaG9zdCB0ZXN0aW5nXG4gICAge1xuICAgICAgXCJ0eXBlXCI6IFwiZXh0ZW5kXCIsXG4gICAgICBcInZpZXdlclwiOiBcIigpID0+IHsgaWYgKHBhcmFtZXRlcnMudmlld2VyLm1hdGNoKCcvdmlldy9hcGkvbWFpbC8nKSAmJiBwYXJhbWV0ZXJzLnBhdGgubWF0Y2goJ2xvY2FsaG9zdCcpKSB7IHZhciBob3N0ID0gJ2xvY2FsaG9zdDo0MjAwJzsgdmFyIGNvcnMgPSAna29saWJyaXByb2xpYW50Lm9wdGltYWwtc3lzdGVtcy5kZSc7IHBhcmFtZXRlcnMucGF0aCA9IHBhcmFtZXRlcnMucGF0aC5yZXBsYWNlKGhvc3QsIGNvcnMpOyByZXR1cm4gcGFyYW1ldGVycy52aWV3ZXIgKyAnJmNvcnM9JyArIGNvcnM7fSByZXR1cm4gcGFyYW1ldGVycy52aWV3ZXI7IH1cIlxuICAgIH0sXG4gICAgLy8gV2UgbmVlZCBhbm90aGVyIHBhdGhQZGYgZm9yIGVtYWlsIGF0dGFjaG1lbnQgZmlsZXMuIFRoaXMgd2lsbCBvbmx5IGNvbWUgaW4gcGxhY2UgaWYgdGhlIG1pbWV0eXBlIGlzIHBkZiBvciBvbmUgb2YgdGhlIG5vdCBzdXBwb3J0ZWQgb25lcy4gKHZpZXdlciBhdHRhY2htZW50cyAmIGFwaSBhdHRhY2htZW50cyBjYW4gYmUgcGFyc2VkIGluIGRpZmZlcmVudCBvcmRlciwgc28gd2UgaGF2ZSB0byBtYXRjaCB0aGVtIGJ5IGZpbGVuYW1lKVxuICAgIHtcInZpZXdlclwiOiBcIigpID0+IHt2YXIgYXR0YWNobWVudCA9IHBhcmFtZXRlcnMucGF0aFBkZi5tYXRjaChuZXcgUmVnRXhwKCdhdHRhY2htZW50PShcXFxcXFxcXGQrKScpKTsgdmFyIGEgPSBhdHRhY2htZW50ICYmIGFwaS5jb250ZW50LnZpZXdlcigpLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lmcmFtZScpLmNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhW2RhdGEtc3JjJD1cXFwiJyArIGF0dGFjaG1lbnRbMF0gKyAnXFxcIl0nKTsgIHZhciBwYXJhbXMgPSBhICYmIChhcGkuY29udGVudC5hdHRhY2htZW50cyB8fCBbXSkuZmluZChhdHQgPT4gYXBpLnV0aWwuZGVjb2RlSHRtbENoYXJDb2RlcyhhdHQubmFtZSkgPT09IGEuZ2V0QXR0cmlidXRlKCdkYXRhLWZpbGVuYW1lJykpOyBpZihwYXJhbXMgJiYgcGFyYW1zLnByZXZpZXdVcmkpIHsgZGVidWdnZXI7IHBhcmFtZXRlcnMucGF0aFBkZiA9IGxvY2F0aW9uLm9yaWdpbiArIHBhcmFtcy5wcmV2aWV3VXJpOyB9IHJldHVybiBwYXJhbWV0ZXJzLmRlZmF1bHRWaWV3ZXI7fVwifSxcbiAgICB7XCJlcnJvclwiOiB0cnVlLCBcInR5cGVcIjogXCJlcnJvclwiLCBcInZpZXdlclwiOiBcInZpZXdlci92aWV3L2FwaS9lcnJvci8/cGF0aD0ke3BhdGh9Jm1pbWVUeXBlPSR7bWltZVR5cGV9JmZpbGVFeHRlbnNpb249JHtmaWxlRXh0ZW5zaW9ufSZsYW5nPSR7bGFuZ30mdGhlbWU9JHt0aGVtZX1cIn1cbiAgXTtcblxuICBpc1VuZG9ja2VkOiBib29sZWFuO1xuICBsb2FkaW5nOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHVuZG9ja0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCkgZW5hYmxlQ2xvc2VCdG4gPSBmYWxzZTtcbiAgLy8gYnkgZGVmYXVsdCwgdGhlIHZpZXdlciBpZ25vcmVzIHRoZSB2ZXJzaW9uIG9mIHRoZSBkbXMgb2JqZWN0LiBUaGlzIHdpbGwgYWx3YXlzIHNob3cgdGhlIGxhdGVzdCB2ZXJzaW9uLlxuICAvLyBXZSBuZWVkIHRoaXMgdG8gYmUgYWJsZSB0byByZWZyZXNoIHRoZSB2aWV3ZXIgYmVjYXVzZSBvdGhlcndpc2UgcGRmanMgd29ya2VyIHdpbGwgZmFpbC5cbiAgQElucHV0KCkgdXNlVmVyc2lvbiA9IGZhbHNlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm9wZW4nKSBvcGVuO1xuXG4gIEBWaWV3Q2hpbGQoJ2lmcmFtZScsIHtzdGF0aWM6IHRydWV9KSBpZnJhbWU7XG5cbiAgQElucHV0KCdhdHRhY2htZW50cycpXG4gIHNldCBzZXRBdHRhY2htZW50cyhhdHRhY2htZW50cykge1xuICAgIHRoaXMuYXR0YWNobWVudHMgPSBhdHRhY2htZW50cztcbiAgICB0aGlzLmF0dGFjaG1lbnRzU2hvd24gPSBmYWxzZTtcbiAgfVxuXG4gIEBJbnB1dCgnc2VhcmNoVGVybScpXG4gIHNldCBzZXRTZWFyY2hUZXJtKHNlYXJjaFRlcm0pIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0gPSBzZWFyY2hUZXJtIHx8ICcnO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHByZXZpZXdVcmkodXJpOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wcmV2aWV3VXJpID0gdXJpO1xuICAgIHRoaXMudG9nZ2xlVmlld2VyKCk7XG4gIH1cblxuICBnZXQgcHJldmlld1VyaSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJldmlld1VyaTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBwcmV2aWV3RmlsZShmaWxlOiBQcmV2aWV3RmlsZSkge1xuICAgIGlmIChmaWxlKSB7XG4gICAgICB0aGlzLnZpZXdlciA9IHRoaXMuZ2V0Vmlld2VyKGZpbGUpO1xuICAgICAgdGhpcy5tZWRpYVR5cGUgPSBmaWxlLm1lZGlhVHlwZU5hbWUgJiYgdGhpcy5zeXN0ZW0uZ2V0T2JqZWN0VHlwZShmaWxlLm1lZGlhVHlwZU5hbWUpO1xuICAgICAgdGhpcy5wcmV2aWV3VXJpID0gdGhpcy52aWV3ZXIucHJldmlld1VyaTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcmV2aWV3VXJpID0gJyc7XG4gICAgICB0aGlzLnBvcG91dFdpbmRvd0NvbmZpZyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy5fc2V0UG9wb3V0V2luZG93Q29uZmlnKCFmaWxlKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBkbXNPYmplY3QoaXRlbTogRG1zT2JqZWN0KSB7XG4gICAgdGhpcy5fZG1zT2JqZWN0ID0gaXRlbTtcbiAgICB0aGlzLmRtc09iamVjdFRpdGxlID0gaXRlbS50aXRsZSB8fCAnLi4uJztcblxuXG4gICAgdGhpcy5zZXRBdHRhY2htZW50cyA9IFtdO1xuICAgIGlmICh0aGlzLmF0dGFjaG1lbnRzTG9hZGluZykge1xuICAgICAgLy8gY2FuY2VsIGFueSBwZW5kaW5nIHJlcXVlc3RzXG4gICAgICB0aGlzLmF0dGFjaG1lbnRzTG9hZGluZy51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAoaXRlbS5jb250ZW50ICYmIGl0ZW0uY29udGVudC5jb250ZW50cyAmJiBpdGVtLmNvbnRlbnQuY29udGVudHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBmaWxlID0gaXRlbS5jb250ZW50LmNvbnRlbnRzWzBdIHx8IHt9O1xuXG4gICAgICB0aGlzLnByZXZpZXdGaWxlID0ge1xuICAgICAgICB1cmk6IHRoaXMuZG1zLmdldFByZXZpZXcoaXRlbS5jb250ZW50LmlkLCBpdGVtLmNvbnRlbnQudHlwZSwgdGhpcy51c2VWZXJzaW9uID8gaXRlbS52ZXJzaW9uIDogbnVsbCwgdW5kZWZpbmVkLCB0cnVlKSxcbiAgICAgICAgdXJpUGRmOiB0aGlzLmRtcy5nZXRQcmV2aWV3KGl0ZW0uY29udGVudC5pZCwgaXRlbS5jb250ZW50LnR5cGUsIHRoaXMudXNlVmVyc2lvbiA/IGl0ZW0udmVyc2lvbiA6IG51bGwsICdQREYnLCB0cnVlKSxcbiAgICAgICAgbWltZXR5cGU6IGZpbGUubWltZXR5cGUsXG4gICAgICAgIG1pbWVncm91cDogZmlsZS5taW1lZ3JvdXAsXG4gICAgICAgIHNpemU6IGZpbGUuc2l6ZSxcbiAgICAgICAgcGF0aDogZmlsZS5wYXRoLFxuICAgICAgICBtZWRpYVR5cGVOYW1lOiBpdGVtLnR5cGVOYW1lXG4gICAgICB9O1xuXG4gICAgICBpZiAoISFmaWxlLm1pbWVncm91cD8ubWF0Y2goL15tYWlsfG9jdGV0LXN0cmVhbS8pICYmIHRoaXMudmlld2VyLnZpZXdlci5tYXRjaCgnL3ZpZXcvYXBpL3BkZi8nKSkge1xuICAgICAgICB0aGlzLnNsaWRlVXJpID0gdGhpcy5kbXMuZ2V0U2xpZGUoaXRlbS5jb250ZW50LmlkLCBpdGVtLmNvbnRlbnQudHlwZSwgdGhpcy51c2VWZXJzaW9uID8gaXRlbS52ZXJzaW9uIDogbnVsbCwgMjU2KTtcbiAgICAgICAgdGhpcy5hdHRhY2htZW50c0xvYWRpbmcgPSB0aGlzLmRtcy5nZXRBdHRhY2htZW50cyhpdGVtKS5zdWJzY3JpYmUoYSA9PiB0aGlzLnNldEF0dGFjaG1lbnRzID0gYSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnZpZXdlci52aWV3ZXIubWF0Y2goJy92aWV3L2FwaS9tYWlsLycpKSB7XG4gICAgICAgIHRoaXMuZG1zLmdldEF0dGFjaG1lbnRzKGl0ZW0pLnN1YnNjcmliZShhID0+IHdpbmRvdy5hcGkuY29udGVudC5hdHRhY2htZW50cyA9IGEpO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJldmlld1VyaSA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkbXM6IERtc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgc3lzdGVtOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWcsXG4gICAgcHJpdmF0ZSBwbHVnaW5zU2VydmljZTogUGx1Z2luc1NlcnZpY2UpIHtcbiAgICB0aGlzLlNJWkVfTElNSVQgPSB0aGlzLmNvbmZpZy5nZXRSYXcoJ3ByZXZpZXcuZmlsZVNpemVMaW1pdCcpIHx8IHRoaXMuU0laRV9MSU1JVDtcbiAgICB0aGlzLmN1c3RvbUNvbmZpZyA9ICh0aGlzLmNvbmZpZy5nZXRSYXcoJ3ByZXZpZXcudmlld2VycycpIHx8IFtdKS5jb25jYXQodGhpcy5kZWZhdWx0Vmlld2Vycyk7XG5cbiAgICB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwaS5jb250ZW50LmNhdGNoRXJyb3IoKS5zdWJzY3JpYmUoKGV2dDogYW55KSA9PiB7XG4gICAgICBjb25zdCB7ZXJyLCB3aW4sIHBhcmFtZXRlcnN9ID0gZXZ0LmRhdGE7XG4gICAgICBjb25zdCB1cmkgPSB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwcGx5RnVuY3Rpb24odGhpcy5jdXN0b21Db25maWc/LmZpbmQoKHYpID0+IHYuZXJyb3IpPy52aWV3ZXIsICdhcGksIGVyciwgd2luLCBwYXJhbWV0ZXJzJywgW1xuICAgICAgICB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFwaSxcbiAgICAgICAgZXJyLFxuICAgICAgICB3aW4sXG4gICAgICAgIHBhcmFtZXRlcnNcbiAgICAgIF0pO1xuICAgICAgdXJpICYmIHdpbiAmJiAod2luLmxvY2F0aW9uLmhyZWYgPSB0aGlzLnJlc29sdmVVcmkodXJpLCBwYXJhbWV0ZXJzKSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRQb3BvdXRXaW5kb3dDb25maWcocmVzZXQ/OiBib29sZWFuKSB7XG4gICAgY29uc3Qgd2luSW5zZXQgPSAyMDtcbiAgICB0aGlzLnBvcG91dFdpbmRvd0NvbmZpZyA9ICFyZXNldCA/IHtcbiAgICAgIHRpdGxlOiB0aGlzLmRtc09iamVjdFRpdGxlLFxuICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgYmxvY2tTdGFydDogd2luSW5zZXQsXG4gICAgICAgIGlubGluZVN0YXJ0OiB3aW5kb3cuc2NyZWVuLndpZHRoIC8gMlxuICAgICAgfSwgc2l6ZToge1xuICAgICAgICB3aWR0aDogd2luZG93LnNjcmVlbi53aWR0aCAvIDIgLSB3aW5JbnNldCxcbiAgICAgICAgaGVpZ2h0OiB3aW5kb3cuc2NyZWVuLmhlaWdodCAtIHdpbkluc2V0ICogMixcbiAgICAgIH1cbiAgICB9IDogdW5kZWZpbmVkO1xuICB9XG5cbiAgc2VsZWN0QXR0YWNobWVudChhdHRhY2htZW50PzogYW55KSB7XG4gICAgY29uc3QgcHJldmlld1VyaSA9IGF0dGFjaG1lbnQgJiYgdGhpcy5nZXRWaWV3ZXIoe3VyaVBkZjogYXR0YWNobWVudC5wcmV2aWV3VXJpfSBhcyBQcmV2aWV3RmlsZSkucHJldmlld1VyaTtcbiAgICB0aGlzLmxvYWREb2N1bWVudChwcmV2aWV3VXJpIHx8IHRoaXMucHJldmlld1VyaSwgdHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlVmlld2VyKCkge1xuICAgIHRoaXMub3BlbiA9ICEhdGhpcy5wcmV2aWV3VXJpO1xuICAgIGlmICghIXRoaXMucHJldmlld1VyaSkge1xuICAgICAgdGhpcy5sb2FkRG9jdW1lbnQodGhpcy5wcmV2aWV3VXJpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaCgpIHtcbiAgICB0aGlzLmxvYWREb2N1bWVudCh0aGlzLnByZXZpZXdVcmksIHRydWUpO1xuICB9XG5cbiAgZ2V0Vmlld2VyKGZpbGU6IFByZXZpZXdGaWxlKTogYW55IHtcbiAgICBjb25zdCBpc1ZpZGVvID0gISFmaWxlLm1pbWVncm91cD8ubWF0Y2goL15hdWRpb3xedmlkZW8vKTtcbiAgICBjb25zdCBkZWZhdWx0Vmlld2VyID0gaXNWaWRlbyA/IE1lZGlhQ29tcG9uZW50LlZJREVPX1ZJRVdFUiA6IE1lZGlhQ29tcG9uZW50LlBERl9WSUVXRVI7XG4gICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IGZpbGUuZmlsZUV4dGVuc2lvbiB8fCAoZmlsZS5wYXRoPy5pbmNsdWRlcygnLicpID8gZmlsZS5wYXRoLnNwbGl0KCcuJykucG9wKCkgOiAnJyk7XG4gICAgY29uc3QgbWltZVR5cGUgPSBmaWxlLm1pbWV0eXBlO1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY3VzdG9tQ29uZmlnLmZpbmQoKGM6IFZpZXdlckNvbmZpZykgPT4ge1xuICAgICAgY29uc3QgbWF0Y2hNVCA9ICFjLm1pbWVUeXBlIHx8ICh0eXBlb2YgYy5taW1lVHlwZSA9PT0gJ3N0cmluZycgPyBbYy5taW1lVHlwZV0gOiBjLm1pbWVUeXBlKS5pbmNsdWRlcyhtaW1lVHlwZT8udG9Mb3dlckNhc2UoKSk7XG4gICAgICBjb25zdCBtYXRjaEZFID0gIWMuZmlsZUV4dGVuc2lvbiB8fCAodHlwZW9mIGMuZmlsZUV4dGVuc2lvbiA9PT0gJ3N0cmluZycgPyBbYy5maWxlRXh0ZW5zaW9uXSA6IGMuZmlsZUV4dGVuc2lvbikuaW5jbHVkZXMoKGZpbGVFeHRlbnNpb24pLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgcmV0dXJuIG1hdGNoTVQgJiYgbWF0Y2hGRSAmJiAoIWMudHlwZSB8fCBjLnR5cGUgPT09ICdkZWZhdWx0Jyk7XG4gICAgfSk7XG4gICAgY29uc3QgcGFyYW1ldGVycyA9IHtcbiAgICAgIGZpbGUsXG4gICAgICBwYXRoOiBsb2NhdGlvbi5vcmlnaW4gKyBmaWxlLnVyaSxcbiAgICAgIHBhdGhQZGY6IGxvY2F0aW9uLm9yaWdpbiArIGZpbGUudXJpUGRmLFxuICAgICAgdmlld2VyOiBjb25maWc/LnZpZXdlciB8fCBkZWZhdWx0Vmlld2VyLFxuICAgICAgbG9hZDogY29uZmlnPy5sb2FkLFxuICAgICAgZmlsZUV4dGVuc2lvbixcbiAgICAgIG1pbWVUeXBlLFxuICAgICAgdGhlbWU6ICcnLFxuICAgICAgZGVmYXVsdFZpZXdlcixcbiAgICAgIHByZXZpZXdVcmk6ICcnXG4gICAgfTtcbiAgICBwYXJhbWV0ZXJzLnZpZXdlciA9IHRoaXMucGx1Z2luc1NlcnZpY2UuYXBwbHlGdW5jdGlvbihwYXJhbWV0ZXJzLnZpZXdlciwgJ2NvbXBvbmVudCwgZG1zT2JqZWN0LCBwYXJhbWV0ZXJzJywgW3RoaXMsIHRoaXMuX2Rtc09iamVjdCwgcGFyYW1ldGVyc10pIHx8IGRlZmF1bHRWaWV3ZXI7XG5cbiAgICBjb25zdCBleHRlbmQgPSB0aGlzLmN1c3RvbUNvbmZpZy5maW5kKChjKSA9PiBjLnR5cGUgPT09ICdleHRlbmQnKTtcbiAgICBpZiAoZXh0ZW5kKSBwYXJhbWV0ZXJzLnZpZXdlciA9IHRoaXMucGx1Z2luc1NlcnZpY2UuYXBwbHlGdW5jdGlvbihleHRlbmQudmlld2VyLCAnY29tcG9uZW50LCBkbXNPYmplY3QsIHBhcmFtZXRlcnMnLCBbdGhpcywgdGhpcy5fZG1zT2JqZWN0LCBwYXJhbWV0ZXJzXSk7XG5cbiAgICBwYXJhbWV0ZXJzLnByZXZpZXdVcmkgPSB0aGlzLnJlc29sdmVVcmkocGFyYW1ldGVycy52aWV3ZXIsIHBhcmFtZXRlcnMpO1xuICAgIHJldHVybiBwYXJhbWV0ZXJzO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlVXJpKHZpZXdlcjogc3RyaW5nLCBwYXJhbWV0ZXJzOiBhbnkpIHtcbiAgICBsZXQgb3JpZ2luID0gJyc7XG4gICAgaWYgKCF2aWV3ZXIuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG4gICAgICBvcmlnaW4gPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgdGhpcy5jb25maWcuZ2V0UmF3KCd1cmkuY29udGV4dFBhdGgnKTtcbiAgICAgIGlmICghb3JpZ2luLmVuZHNXaXRoKCcvJykgJiYgIXZpZXdlci5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgICAgb3JpZ2luICs9ICcvJztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9yaWdpbiArIHZpZXdlclxuICAgICAgLnJlcGxhY2UoJyR7b3JpZ2luYWxQYXRofScsIHBhcmFtZXRlcnMucGF0aClcbiAgICAgIC5yZXBsYWNlKCcke3BhdGh9JywgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtZXRlcnMucGF0aCkpXG4gICAgICAucmVwbGFjZSgnJHtwYXRoUGRmfScsIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXJzLnBhdGhQZGYpKVxuICAgICAgLnJlcGxhY2UoJyR7ZmlsZUV4dGVuc2lvbn0nLCBlbmNvZGVVUklDb21wb25lbnQocGFyYW1ldGVycy5maWxlRXh0ZW5zaW9uKSlcbiAgICAgIC5yZXBsYWNlKCcke21pbWVUeXBlfScsIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXJzLm1pbWVUeXBlKSlcbiAgICAgIC5yZXBsYWNlKCcke3RoZW1lfScsIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbWV0ZXJzLnRoZW1lKSlcbiAgICAgIC5yZXBsYWNlKCcke2xhbmd9JywgQ29udGVudFByZXZpZXdTZXJ2aWNlLm1hcExhbmcodGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcpKTtcbiAgfVxuXG4gIGxvYWREb2N1bWVudCh1cmk6IHN0cmluZywgZm9yY2U/OiBib29sZWFuKSB7XG4gICAgaWYgKCFmb3JjZSAmJiAoIXVyaSB8fCAodXJpID09PSB0aGlzLmxhdGVzdFVyaSkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMubGF0ZXN0VXJpID0gdXJpIHx8ICcnO1xuXG4gICAgaWYgKHRoaXMucHJldmlld1VyaSkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudCwgJ3NyYycsIHRoaXMubGF0ZXN0VXJpKTtcbiAgICAgIGNvbnN0IG9ubG9hZCA9ICgpID0+IHRoaXMucGx1Z2luc1NlcnZpY2UuYXBwbHlGdW5jdGlvbih0aGlzLnZpZXdlcj8ubG9hZCwgJ2lmcmFtZSwgY29tcG9uZW50JywgW3RoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQsIHRoaXNdKTtcbiAgICAgIHRoaXMuaWZyYW1lSW5pdCh0aGlzLmlmcmFtZS5uYXRpdmVFbGVtZW50LCB0aGlzLnZpZXdlcj8ubG9hZCAmJiBvbmxvYWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmlmcmFtZS5uYXRpdmVFbGVtZW50LCAnc3JjJywgdGhpcy5sYXRlc3RVcmkpO1xuICAgICAgY29uc3Qgb25sb2FkID0gKCkgPT4gdGhpcy5wbHVnaW5zU2VydmljZS5hcHBseUZ1bmN0aW9uKHRoaXMudmlld2VyPy5sb2FkLCAnaWZyYW1lLCBjb21wb25lbnQnLCBbdGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudCwgdGhpc10pO1xuICAgICAgdGhpcy5pZnJhbWVJbml0KHRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQsIHRoaXMudmlld2VyPy5sb2FkICYmIG9ubG9hZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBzZWFyY2ggaW5zaWRlIFBERi5KUyBiYXNlZCBvbiBzZWFyY2ggdGVybVxuICAgKiBAcGFyYW0gdGVybSBzZWFyY2ggdGVybVxuICAgKiBAcGFyYW0gd2luIGlmcmFtZSB3aW5kb3dcbiAgICovXG4gIHByaXZhdGUgc2VhcmNoUERGKHRlcm0gPSAnJywgd2luOiBhbnkpIHtcbiAgICAvLyByZW1vdmUgYWxsIHNwZWNpYWwgY2hhcmFjdGVyc1xuICAgIHRlcm0gPSAodGVybSB8fCAnJykucmVwbGFjZSgvW1xcXCJ8XFwqXS9nLCAnJykudHJpbSgpO1xuICAgIGlmICh0ZXJtICYmIHdpbj8uUERGVmlld2VyQXBwbGljYXRpb24/LmFwcENvbmZpZz8uZmluZEJhcikge1xuICAgICAgd2luLlBERlZpZXdlckFwcGxpY2F0aW9uLmFwcENvbmZpZy5maW5kQmFyLmZpbmRGaWVsZC52YWx1ZSA9IHRlcm07XG4gICAgICB3aW4uUERGVmlld2VyQXBwbGljYXRpb24uYXBwQ29uZmlnLmZpbmRCYXIuaGlnaGxpZ2h0QWxsQ2hlY2tib3guY2hlY2tlZCA9IHRydWU7XG4gICAgICB3aW4uUERGVmlld2VyQXBwbGljYXRpb24uYXBwQ29uZmlnLmZpbmRCYXIuY2FzZVNlbnNpdGl2ZUNoZWNrYm94LmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgIC8vIHRyaWdnZXIgZmluZCBldmVudCBvbiBwZGYuanMgbG9hZFxuICAgICAgd2luLlBERlZpZXdlckFwcGxpY2F0aW9uLmluaXRpYWxpemVkUHJvbWlzZT8udGhlbigoKSA9PiB3aW4uUERGVmlld2VyQXBwbGljYXRpb24uZmluZEJhci5kaXNwYXRjaEV2ZW50KCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJldmVudERyb3BFdmVudCh3aW46IGFueSkge1xuICAgIGlmICh3aW4/LmxvY2F0aW9uPy5vcmlnaW4gPT09IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pIHtcbiAgICAgIHdpbj8uZG9jdW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCAoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKSk7XG4gICAgICAvLyBkaXNwYWNoIGRyYWcgJiBkcm9wIGV2ZW50cyB0byBtYWluIHdpbmRvd1xuICAgICAgd2luPy5kb2N1bWVudD8uYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2VudGVyJywgKGUpID0+IHtcbiAgICAgICAgd2luZG93LmRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IERyYWdFdmVudCgnZHJhZ2VudGVyJywgZSkpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHdpbmRvdy5kb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBEcmFnRXZlbnQoJ2RyYWdsZWF2ZScsIGUpKSwgMTApO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaWZyYW1lSW5pdChpZnJhbWUgPSB0aGlzLmlmcmFtZSwgb25sb2FkPzogRnVuY3Rpb24pIHtcbiAgICBpZiAoaWZyYW1lKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgaWZyYW1lLl9pbml0IHx8IGZyb21FdmVudChpZnJhbWUsICdsb2FkJylcbiAgICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHdpbiA9IHRoaXMuc2V0QXBpKGlmcmFtZSk7XG4gICAgICAgICAgb25sb2FkICYmIG9ubG9hZCgpO1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hQREYodGhpcy5zZWFyY2hUZXJtLCB3aW4pO1xuICAgICAgICAgICAgdGhpcy5wcmV2ZW50RHJvcEV2ZW50KHdpbik7XG4gICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgfSk7XG4gICAgICBpZnJhbWUuX2luaXQgPSAhIXRoaXMuc2V0QXBpKGlmcmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRBcGkoaWZyYW1lOiBhbnkpIHtcbiAgICAvLyBzZXQgYXBpIHRvIGlmcmFtZSB3aW5kb3dcbiAgICBjb25zdCB3aW4gPSBpZnJhbWU/LmNvbnRlbnRXaW5kb3cgfHwgaWZyYW1lO1xuICAgIHdpblsnYXBpJ10gPSB3aW5kb3dbJ2FwaSddO1xuXG4gICAgLy8gZGlzYWJsZSBiZWZvcmV1bmxvYWQgcG9wdXAgKFJlbG9hZCBzaXRlPyBDaGFuZ2VzIHRoYXQgeW91IG1hZGUgbWF5IG5vdCBiZSBzYXZlZC4pXG4gICAgd2luLmFkZEV2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIChldmVudDogRXZlbnQpID0+IGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpKTtcblxuICAgIGlmICh3aW5bJ2FwaSddPy5jb250ZW50KSB7XG4gICAgICB3aW5bJ2FwaSddLmNvbnRlbnQucmVzb2x2ZVZpZXdlclBhcmFtcyA9IChwYXJhbWV0ZXJzOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgdXJpID0gcGFyYW1ldGVycy5wYXRoLnJlcGxhY2UobG9jYXRpb24ub3JpZ2luLCAnJyk7XG4gICAgICAgIGNvbnN0IHZpZXdlciA9IHRoaXMuZ2V0Vmlld2VyKHt1cmksIG1pbWV0eXBlOiBwYXJhbWV0ZXJzLm1pbWVUeXBlLCBmaWxlRXh0ZW5zaW9uOiBwYXJhbWV0ZXJzLmZpbGVFeHRlbnNpb24sIHVyaVBkZjogdXJpLCBtaW1lZ3JvdXA6ICcnLCBzaXplOiAxfSk7XG4gICAgICAgIHJldHVybiB7dXJpOiB2aWV3ZXIucHJldmlld1VyaSB8fCBwYXJhbWV0ZXJzLnBhdGh9O1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICB9XG5cbn1cbiIsIjxkaXYgW2hpZGRlbl09XCIhb3BlblwiPlxuICA8IS0tIGF0dGFjaG1lbnRzIG92ZXJsYXkgLS0+XG4gIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50c1wiICpuZ0lmPVwiYXR0YWNobWVudHM/Lmxlbmd0aFwiXG4gICAgW25nQ2xhc3NdPVwie25vdG1haW46IGxhdGVzdFVyaSAhPT0gcHJldmlld1VyaSAmJiAhYXR0YWNobWVudHNTaG93biwgYWN0aXZlOiBhdHRhY2htZW50c1Nob3dufVwiXG4gICAgKGVvT3V0c2lkZUNsaWNrKT1cImF0dGFjaG1lbnRzU2hvd24gPSBmYWxzZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50cy1saXN0XCIgKm5nSWY9XCJhdHRhY2htZW50c1Nob3duXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXR0YWNobWVudCBtYWluXCIgKGNsaWNrKT1cInNlbGVjdEF0dGFjaG1lbnQobnVsbClcIiBbbmdDbGFzc109XCJ7Y3VycmVudDogbGF0ZXN0VXJpID09PSBwcmV2aWV3VXJpfVwiPnt7ZG1zT2JqZWN0VGl0bGV9fTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnRcIiAqbmdGb3I9XCJsZXQgYSBvZiBhdHRhY2htZW50c1wiIChjbGljayk9XCJzZWxlY3RBdHRhY2htZW50KGEpXCIgW25nQ2xhc3NdPVwie2N1cnJlbnQ6IGxhdGVzdFVyaSA9PT0gYS5wcmV2aWV3VXJpfVwiPlxuICAgICAgICB7e2EubmFtZX19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxlby1pY29uIGNsYXNzPVwiYnV0dG9uXCIgW2JhZGdlXT1cImF0dGFjaG1lbnRzPy5sZW5ndGhcIiAoY2xpY2spPVwiYXR0YWNobWVudHNTaG93biA9ICFhdHRhY2htZW50c1Nob3duXCJcbiAgICAgIFtpY29uU3JjXT1cImF0dGFjaG1lbnRzU2hvd24gPyAnYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19jbGVhci5zdmcnIDogJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfYXR0YWNobWVudC5zdmcnXCI+PC9lby1pY29uPlxuICA8L2Rpdj5cblxuICA8eXZjLXBvcG91dFxuICBbcG9wb3V0V2luZG93Q29uZmlnXT1cInBvcG91dFdpbmRvd0NvbmZpZ1wiXG4gIFt0cmlnZ2VyUG9zaXRpb25dPVwicG9wb3V0VHJpZ2dlclBvc2l0aW9uXCIgW2Rpc2FibGVkXT1cInVuZG9ja0Rpc2FibGVkXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwicHJldmlldy1jb250YWluZXJcIiBbc3R5bGUub3ZlcmZsb3ddPVwiJ2hpZGRlbidcIj5cbiAgICAgIDxpZnJhbWUgW2hpZGRlbl09XCJpc1VuZG9ja2VkIHx8IGxvYWRpbmdcIiAjaWZyYW1lIGhlaWdodD1cIjEwMCVcIiB3aWR0aD1cIjEwMCVcIiBmcmFtZWJvcmRlcj1cIjBcIj48L2lmcmFtZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJsb2FkZXItb3ZlcmxheV9fbWFza1wiICpuZ0lmPVwibG9hZGluZ1wiPlxuICAgICAgICA8ZW8tbG9hZGluZy1zcGlubmVyIGNsYXNzPVwiaWZyYW1lX19sb2FkZXJcIj48L2VvLWxvYWRpbmctc3Bpbm5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNsaWRlXCIgKm5nSWY9XCJpc1VuZG9ja2VkXCI+XG4gICAgICAgIDxlby1pY29uICpuZ0lmPVwibWVkaWFUeXBlXCIgW29iamVjdFR5cGVdPVwibWVkaWFUeXBlXCI+PC9lby1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwveXZjLXBvcG91dD5cbjwvZGl2PlxuXG48ZGl2IFtoaWRkZW5dPVwib3BlblwiIGNsYXNzPVwiZW1wdHktY29udGFpbmVyXCI+XG4gIDxlby1pY29uIGNsYXNzPVwibm9maWxlXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfbm8tZmlsZS5zdmcnXCI+PC9lby1pY29uPlxuPC9kaXY+XG4iXX0=
@@ -99,10 +99,10 @@ export class FormElementComponent {
99
99
  }
100
100
  }
101
101
  FormElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: FormElementComponent, deps: [{ token: i1.TranslateService }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
102
- FormElementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: FormElementComponent, selector: "eo-form-element", inputs: { situation: "situation", skipToggle: "skipToggle", elementSetter: ["element", "elementSetter"] }, queries: [{ propertyName: "contentElementTemplates", predicate: FormElementTemplate }], viewQueries: [{ propertyName: "formField", first: true, predicate: ["formField"], descendants: true }, { propertyName: "elementTemplates", predicate: FormElementTemplate, descendants: true }], ngImport: i0, template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\n\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\" *ngIf=\"elementTemplate\">\n\n <ng-container *ngTemplateOutlet=\"elementTemplate; context: {element, formElementRef}\"></ng-container>\n\n <!-- the fields description -->\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">{{formElementRef._eoFormElement.description}}</div>\n\n <!-- error/validation messages -->\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\n\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\n <div *ngIf=\"formElementRef.errors.precision\" translate\n [translateParams]=\"formElementRef.errors.precision.translateValues\">\n {{formElementRef.errors.precision.translateKey}}</div>\n <div *ngIf=\"formElementRef.errors.scale\" translate\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}\n </div>\n\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>\n eo.form.property.string.regex.nomatch</div>\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>\n eo.form.property.string.error.classification.email</div>\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url\n </div>\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\n <div *ngIf=\"formElementRef.errors.maxlength\" translate\n [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\n <div *ngIf=\"formElementRef.errors.minlength\" translate\n [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\n </div>\n\n </div>\n\n\n\n <!-- STRING -->\n <ng-template eoFormElementTemplate propertyType=\"STRING\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect\"\n [multiline]=\"formElementRef._eoFormElement.multiline\"\n [classification]=\"formElementRef._eoFormElement.classification\" [regex]=\"formElementRef._eoFormElement.regex\"\n [qname]=\"formElementRef._eoFormElement.qname\" [size]=\"formElementRef._eoFormElement.size\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-string>\n\n <!-- Dynamic List -->\n <eo-dynamic-list\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification === 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [listObject]=\"formElementRef._eoFormElement.list\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-dynamic-list>\n\n\n <!-- Reference -->\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [reference]=\"formElementRef._eoFormElement.reference\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect ? formElementRef._eoFormElement.multiselect : situation === 'SEARCH'\"\n [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID-Reference -->\n <ng-template eoFormElementTemplate propertyType=\"REFERENCE\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-id-reference [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\n [reference]=\"formElementRef._eoFormElement.reference\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [contextId]=\"formElementRef._eoFormElement.contextId\"\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"></eo-id-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID -->\n <ng-template eoFormElementTemplate propertyType=\"ID\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [regex]=\"'^[0-9a-fA-F]*$'\"\n [qname]=\"formElementRef._eoFormElement.qname\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [minLength]=\"32\" [maxLength]=\"32\"></eo-string>\n\n </eo-form-input>\n </ng-template>\n\n\n <!-- BOOLEAN -->\n <ng-template eoFormElementTemplate propertyType=\"BOOLEAN\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" class=\"checkbox\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" [required]=\"formElementRef._eoFormElement.required\"\n [disabled]=\"formElementRef._eoFormElement.readonly\" (onToggleLabel)=\"labelToggled($event)\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [required]=\"formElementRef._eoFormElement.required\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [tristate]=\"true\"></eo-checkbox>\n </eo-form-input>\n </ng-template>\n\n <!-- CODESYSTEM -->\n <ng-template eoFormElementTemplate propertyType=\"CODESYSTEM\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\n [pickerTitle]=\"formElementRef._eoFormElement.label\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [codesystem]=\"formElementRef._eoFormElement.codesystem\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-codesystem>\n </eo-form-input>\n </ng-template>\n\n <!-- ORGANIZATION -->\n <ng-template eoFormElementTemplate propertyType=\"ORGANIZATION\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [filterObject]=\"formElementRef._eoFormElement.filter\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-organization>\n </eo-form-input>\n </ng-template>\n\n <!-- NUMBER -->\n <ng-template eoFormElementTemplate propertyType=\"NUMBER\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-number *ngIf=\"situation !== 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\n </eo-number>\n\n <eo-number-range *ngIf=\"situation === 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-number-range>\n </eo-form-input>\n </ng-template>\n\n <!-- DATE AND DATETIME -->\n <ng-template eoFormElementTemplate propertyType=\"DATETIME\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-date *ngIf=\"situation !== 'SEARCH'\" [withTime]=\"formElementRef._eoFormElement.withtime\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-date>\n\n <eo-datetime-range *ngIf=\"situation === 'SEARCH'\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [withTime]=\"formElementRef._eoFormElement.withtime\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-datetime-range>\n </eo-form-input>\n </ng-template>\n\n <ng-content></ng-content>\n\n <!-- print out the type if it's not matching anything -->\n <ng-template #tplUnknown><b>{{formElementRef._eoFormElement.type}}</b></ng-template>\n</div>\n", styles: [":host-context(.dark) .form-element .form-field .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host{flex:1 1 auto}:host.label-toggled::ng-deep eo-form-input label{text-decoration:line-through}.form-element{box-sizing:border-box}.form-element .form-field{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.form-element .form-field .description{border:0;font-size:var(--font-hint);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.form-element .form-field .err-msg{color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.form-element .form-field .table{flex-flow:column;align-items:flex-start;border-color:transparent}.form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i5.FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: i6.CodesystemComponent, selector: "eo-codesystem", inputs: ["situation", "pickerTitle", "placeholder", "codesystem", "multiselect", "readonly", "inputStyleClass", "emptyMessage", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: i7.DateComponent, selector: "eo-date", inputs: ["withTime", "readonly", "onlyFutureDates"] }, { kind: "component", type: i8.DatetimeRangeComponent, selector: "eo-datetime-range", inputs: ["withTime", "pickerTitle", "operator"] }, { kind: "component", type: i9.NumberComponent, selector: "eo-number", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: i10.NumberRangeComponent, selector: "eo-number-range", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: i11.OrganizationComponent, selector: "eo-organization", inputs: ["removeCurrentUser", "situation", "multiselect", "readonly", "dataMeta", "placeholder", "exceptions", "filterObject"], outputs: ["onValueResolved", "onDataMetaChanged"] }, { kind: "component", type: i12.CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: i13.StringComponent, selector: "eo-string", inputs: ["autocomplete", "multiselect", "multiline", "readonly", "autofocus", "classification", "situation", "regex", "qname", "size", "minLength", "maxLength"] }, { kind: "component", type: i14.ReferenceComponent, selector: "eo-reference", inputs: ["readonly", "multiselect", "reference", "minLength", "maxLength"], outputs: ["onReferenceClicked"] }, { kind: "component", type: i15.DynamicListComponent, selector: "eo-dynamic-list", inputs: ["situation", "multiselect", "pickerTitle", "readonly", "filterFunction", "listObject"] }, { kind: "component", type: i16.IdReferenceComponent, selector: "eo-id-reference", inputs: ["readonly", "multiselect", "situation", "contextId", "exceptionIDs", "dataToRender", "reference", "queryFilters", "objectTypesFilter"] }, { kind: "directive", type: i17.FormElementTemplate, selector: "[eoFormElementTemplate]", inputs: ["propertyType"] }] });
102
+ FormElementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: FormElementComponent, selector: "eo-form-element", inputs: { situation: "situation", skipToggle: "skipToggle", elementSetter: ["element", "elementSetter"] }, queries: [{ propertyName: "contentElementTemplates", predicate: FormElementTemplate }], viewQueries: [{ propertyName: "formField", first: true, predicate: ["formField"], descendants: true }, { propertyName: "elementTemplates", predicate: FormElementTemplate, descendants: true }], ngImport: i0, template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\n\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\" *ngIf=\"elementTemplate\">\n\n <ng-container *ngTemplateOutlet=\"elementTemplate; context: {element, formElementRef}\"></ng-container>\n\n <!-- the fields description -->\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">{{formElementRef._eoFormElement.description}}</div>\n\n <!-- error/validation messages -->\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\n\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\n <div *ngIf=\"formElementRef.errors.precision\" translate\n [translateParams]=\"formElementRef.errors.precision.translateValues\">\n {{formElementRef.errors.precision.translateKey}}</div>\n <div *ngIf=\"formElementRef.errors.scale\" translate\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}\n </div>\n\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>\n eo.form.property.string.regex.nomatch</div>\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>\n eo.form.property.string.error.classification.email</div>\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url\n </div>\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\n <div *ngIf=\"formElementRef.errors.maxlength\" translate\n [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\n <div *ngIf=\"formElementRef.errors.minlength\" translate\n [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\n </div>\n\n </div>\n\n\n\n <!-- STRING -->\n <ng-template eoFormElementTemplate propertyType=\"STRING\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect\"\n [multiline]=\"formElementRef._eoFormElement.multiline\"\n [classification]=\"formElementRef._eoFormElement.classification\" [regex]=\"formElementRef._eoFormElement.regex\"\n [qname]=\"formElementRef._eoFormElement.qname\" [size]=\"formElementRef._eoFormElement.size\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-string>\n\n <!-- Dynamic List -->\n <eo-dynamic-list\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification === 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [listObject]=\"formElementRef._eoFormElement.list\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-dynamic-list>\n\n\n <!-- Reference -->\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [reference]=\"formElementRef._eoFormElement.reference\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect ? formElementRef._eoFormElement.multiselect : situation === 'SEARCH'\"\n [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID-Reference -->\n <ng-template eoFormElementTemplate propertyType=\"REFERENCE\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-id-reference [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\n [reference]=\"formElementRef._eoFormElement.reference\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [contextId]=\"formElementRef._eoFormElement.contextId\"\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"></eo-id-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID -->\n <ng-template eoFormElementTemplate propertyType=\"ID\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [regex]=\"'^[0-9a-fA-F]*$'\"\n [qname]=\"formElementRef._eoFormElement.qname\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [minLength]=\"32\" [maxLength]=\"32\"></eo-string>\n\n </eo-form-input>\n </ng-template>\n\n\n <!-- BOOLEAN -->\n <ng-template eoFormElementTemplate propertyType=\"BOOLEAN\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" class=\"checkbox\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" [required]=\"formElementRef._eoFormElement.required\"\n [disabled]=\"formElementRef._eoFormElement.readonly\" (onToggleLabel)=\"labelToggled($event)\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [required]=\"formElementRef._eoFormElement.required\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [tristate]=\"true\"></eo-checkbox>\n </eo-form-input>\n </ng-template>\n\n <!-- CODESYSTEM -->\n <ng-template eoFormElementTemplate propertyType=\"CODESYSTEM\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\n [pickerTitle]=\"formElementRef._eoFormElement.label\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [codesystem]=\"formElementRef._eoFormElement.codesystem\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-codesystem>\n </eo-form-input>\n </ng-template>\n\n <!-- ORGANIZATION -->\n <ng-template eoFormElementTemplate propertyType=\"ORGANIZATION\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [filterObject]=\"formElementRef._eoFormElement.filter\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-organization>\n </eo-form-input>\n </ng-template>\n\n <!-- NUMBER -->\n <ng-template eoFormElementTemplate propertyType=\"NUMBER\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-number *ngIf=\"situation !== 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\n </eo-number>\n\n <eo-number-range *ngIf=\"situation === 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-number-range>\n </eo-form-input>\n </ng-template>\n\n <!-- DATE AND DATETIME -->\n <ng-template eoFormElementTemplate propertyType=\"DATETIME\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-date *ngIf=\"situation !== 'SEARCH'\" [withTime]=\"formElementRef._eoFormElement.withtime\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-date>\n\n <eo-datetime-range *ngIf=\"situation === 'SEARCH'\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [withTime]=\"formElementRef._eoFormElement.withtime\"\n [operator]=\"element?.value[element._eoFormControlWrapper.controlName] ? element.value[element._eoFormControlWrapper.controlName]?.operator: 'eq'\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-datetime-range>\n </eo-form-input>\n </ng-template>\n\n <ng-content></ng-content>\n\n <!-- print out the type if it's not matching anything -->\n <ng-template #tplUnknown><b>{{formElementRef._eoFormElement.type}}</b></ng-template>\n</div>\n", styles: [":host-context(.dark) .form-element .form-field .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host{flex:1 1 auto}:host.label-toggled::ng-deep eo-form-input label{text-decoration:line-through}.form-element{box-sizing:border-box}.form-element .form-field{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.form-element .form-field .description{border:0;font-size:var(--font-hint);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.form-element .form-field .err-msg{color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.form-element .form-field .table{flex-flow:column;align-items:flex-start;border-color:transparent}.form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i5.FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: i6.CodesystemComponent, selector: "eo-codesystem", inputs: ["situation", "pickerTitle", "placeholder", "codesystem", "multiselect", "readonly", "inputStyleClass", "emptyMessage", "filterFunction", "disablingFilterFunction"] }, { kind: "component", type: i7.DateComponent, selector: "eo-date", inputs: ["withTime", "readonly", "onlyFutureDates"] }, { kind: "component", type: i8.DatetimeRangeComponent, selector: "eo-datetime-range", inputs: ["withTime", "pickerTitle", "operator"] }, { kind: "component", type: i9.NumberComponent, selector: "eo-number", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: i10.NumberRangeComponent, selector: "eo-number-range", inputs: ["scale", "precision", "grouping", "pattern", "readonly"] }, { kind: "component", type: i11.OrganizationComponent, selector: "eo-organization", inputs: ["removeCurrentUser", "situation", "multiselect", "readonly", "dataMeta", "placeholder", "exceptions", "filterObject"], outputs: ["onValueResolved", "onDataMetaChanged"] }, { kind: "component", type: i12.CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: i13.StringComponent, selector: "eo-string", inputs: ["autocomplete", "multiselect", "multiline", "readonly", "autofocus", "classification", "situation", "regex", "qname", "size", "minLength", "maxLength"] }, { kind: "component", type: i14.ReferenceComponent, selector: "eo-reference", inputs: ["readonly", "multiselect", "reference", "minLength", "maxLength"], outputs: ["onReferenceClicked"] }, { kind: "component", type: i15.DynamicListComponent, selector: "eo-dynamic-list", inputs: ["situation", "multiselect", "pickerTitle", "readonly", "filterFunction", "listObject"] }, { kind: "component", type: i16.IdReferenceComponent, selector: "eo-id-reference", inputs: ["readonly", "multiselect", "situation", "contextId", "exceptionIDs", "dataToRender", "reference", "queryFilters", "objectTypesFilter"] }, { kind: "directive", type: i17.FormElementTemplate, selector: "[eoFormElementTemplate]", inputs: ["propertyType"] }] });
103
103
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: FormElementComponent, decorators: [{
104
104
  type: Component,
105
- args: [{ selector: 'eo-form-element', template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\n\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\" *ngIf=\"elementTemplate\">\n\n <ng-container *ngTemplateOutlet=\"elementTemplate; context: {element, formElementRef}\"></ng-container>\n\n <!-- the fields description -->\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">{{formElementRef._eoFormElement.description}}</div>\n\n <!-- error/validation messages -->\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\n\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\n <div *ngIf=\"formElementRef.errors.precision\" translate\n [translateParams]=\"formElementRef.errors.precision.translateValues\">\n {{formElementRef.errors.precision.translateKey}}</div>\n <div *ngIf=\"formElementRef.errors.scale\" translate\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}\n </div>\n\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>\n eo.form.property.string.regex.nomatch</div>\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>\n eo.form.property.string.error.classification.email</div>\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url\n </div>\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\n <div *ngIf=\"formElementRef.errors.maxlength\" translate\n [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\n <div *ngIf=\"formElementRef.errors.minlength\" translate\n [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\n </div>\n\n </div>\n\n\n\n <!-- STRING -->\n <ng-template eoFormElementTemplate propertyType=\"STRING\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect\"\n [multiline]=\"formElementRef._eoFormElement.multiline\"\n [classification]=\"formElementRef._eoFormElement.classification\" [regex]=\"formElementRef._eoFormElement.regex\"\n [qname]=\"formElementRef._eoFormElement.qname\" [size]=\"formElementRef._eoFormElement.size\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-string>\n\n <!-- Dynamic List -->\n <eo-dynamic-list\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification === 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [listObject]=\"formElementRef._eoFormElement.list\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-dynamic-list>\n\n\n <!-- Reference -->\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [reference]=\"formElementRef._eoFormElement.reference\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect ? formElementRef._eoFormElement.multiselect : situation === 'SEARCH'\"\n [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID-Reference -->\n <ng-template eoFormElementTemplate propertyType=\"REFERENCE\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-id-reference [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\n [reference]=\"formElementRef._eoFormElement.reference\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [contextId]=\"formElementRef._eoFormElement.contextId\"\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"></eo-id-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID -->\n <ng-template eoFormElementTemplate propertyType=\"ID\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [regex]=\"'^[0-9a-fA-F]*$'\"\n [qname]=\"formElementRef._eoFormElement.qname\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [minLength]=\"32\" [maxLength]=\"32\"></eo-string>\n\n </eo-form-input>\n </ng-template>\n\n\n <!-- BOOLEAN -->\n <ng-template eoFormElementTemplate propertyType=\"BOOLEAN\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" class=\"checkbox\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" [required]=\"formElementRef._eoFormElement.required\"\n [disabled]=\"formElementRef._eoFormElement.readonly\" (onToggleLabel)=\"labelToggled($event)\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [required]=\"formElementRef._eoFormElement.required\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [tristate]=\"true\"></eo-checkbox>\n </eo-form-input>\n </ng-template>\n\n <!-- CODESYSTEM -->\n <ng-template eoFormElementTemplate propertyType=\"CODESYSTEM\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\n [pickerTitle]=\"formElementRef._eoFormElement.label\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [codesystem]=\"formElementRef._eoFormElement.codesystem\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-codesystem>\n </eo-form-input>\n </ng-template>\n\n <!-- ORGANIZATION -->\n <ng-template eoFormElementTemplate propertyType=\"ORGANIZATION\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [filterObject]=\"formElementRef._eoFormElement.filter\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-organization>\n </eo-form-input>\n </ng-template>\n\n <!-- NUMBER -->\n <ng-template eoFormElementTemplate propertyType=\"NUMBER\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-number *ngIf=\"situation !== 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\n </eo-number>\n\n <eo-number-range *ngIf=\"situation === 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-number-range>\n </eo-form-input>\n </ng-template>\n\n <!-- DATE AND DATETIME -->\n <ng-template eoFormElementTemplate propertyType=\"DATETIME\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-date *ngIf=\"situation !== 'SEARCH'\" [withTime]=\"formElementRef._eoFormElement.withtime\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-date>\n\n <eo-datetime-range *ngIf=\"situation === 'SEARCH'\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [withTime]=\"formElementRef._eoFormElement.withtime\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-datetime-range>\n </eo-form-input>\n </ng-template>\n\n <ng-content></ng-content>\n\n <!-- print out the type if it's not matching anything -->\n <ng-template #tplUnknown><b>{{formElementRef._eoFormElement.type}}</b></ng-template>\n</div>\n", styles: [":host-context(.dark) .form-element .form-field .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host{flex:1 1 auto}:host.label-toggled::ng-deep eo-form-input label{text-decoration:line-through}.form-element{box-sizing:border-box}.form-element .form-field{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.form-element .form-field .description{border:0;font-size:var(--font-hint);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.form-element .form-field .err-msg{color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.form-element .form-field .table{flex-flow:column;align-items:flex-start;border-color:transparent}.form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"] }]
105
+ args: [{ selector: 'eo-form-element', template: "<div class=\"form-element\" [formGroup]=\"element\" *ngIf=\"element\">\n\n <div class=\"form-field t-{{formElementRef._eoFormElement.type}}\" #formField\n [ngClass]=\"{disabled: !!formElementRef._eoFormElement.readonly}\" *ngIf=\"elementTemplate\">\n\n <ng-container *ngTemplateOutlet=\"elementTemplate; context: {element, formElementRef}\"></ng-container>\n\n <!-- the fields description -->\n <div class=\"description\" *ngIf=\"formElementRef._eoFormElement.description\">{{formElementRef._eoFormElement.description}}</div>\n\n <!-- error/validation messages -->\n <div class=\"err-msg\" *ngIf=\"formElementRef.errors\">\n\n <div *ngIf=\"formElementRef.errors.daterange\" translate>eo.form.property.daterange.invalid</div>\n <div *ngIf=\"formElementRef.errors.numberrange\" translate>eo.form.property.numberrange.invalid</div>\n <div *ngIf=\"formElementRef.errors.number\" translate>eo.form.property.number</div>\n <div *ngIf=\"formElementRef.errors.precision\" translate\n [translateParams]=\"formElementRef.errors.precision.translateValues\">\n {{formElementRef.errors.precision.translateKey}}</div>\n <div *ngIf=\"formElementRef.errors.scale\" translate\n [translateParams]=\"formElementRef.errors.scale.translateValues\">{{formElementRef.errors.scale.translateKey}}\n </div>\n\n <div *ngIf=\"formElementRef.errors.regex || formElementRef.errors.pattern\" translate>\n eo.form.property.string.regex.nomatch</div>\n <div *ngIf=\"formElementRef.errors.classificationemail\" translate>\n eo.form.property.string.error.classification.email</div>\n <div *ngIf=\"formElementRef.errors.classificationurl\" translate>eo.form.property.string.error.classification.url\n </div>\n <div *ngIf=\"formElementRef.errors.onlyWhitespaces\" translate>eo.form.property.string.error.whitespaces</div>\n <div *ngIf=\"formElementRef.errors.datecontrol\" translate>eo.form.property.date.invalid</div>\n <div *ngIf=\"formElementRef.errors.codesystem\" translate>eo.form.property.codesystem.value.invalid</div>\n <div *ngIf=\"formElementRef.errors.eoformScript\">{{formElementRef._eoFormElement.error.msg}}</div>\n <div *ngIf=\"formElementRef.errors.required\" translate>eo.form.property.required</div>\n <div *ngIf=\"formElementRef.errors.maxlength\" translate\n [translateParams]=\"{maxlength: formElementRef._eoFormElement.maxlen}\">eo.form.property.maxlength</div>\n <div *ngIf=\"formElementRef.errors.minlength\" translate\n [translateParams]=\"{minlength: formElementRef._eoFormElement.minlen}\">eo.form.property.minlength</div>\n <div *ngIf=\"formElementRef.errors.deletedIDReference\" translate>eo.form.property.idreference.deleted</div>\n <div *ngIf=\"formElementRef.errors.deletedOrgObject\" translate>eo.form.property.orgobject.deleted</div>\n </div>\n\n </div>\n\n\n\n <!-- STRING -->\n <ng-template eoFormElementTemplate propertyType=\"STRING\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification !== 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect\"\n [multiline]=\"formElementRef._eoFormElement.multiline\"\n [classification]=\"formElementRef._eoFormElement.classification\" [regex]=\"formElementRef._eoFormElement.regex\"\n [qname]=\"formElementRef._eoFormElement.qname\" [size]=\"formElementRef._eoFormElement.size\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-string>\n\n <!-- Dynamic List -->\n <eo-dynamic-list\n *ngIf=\"!formElementRef._eoFormElement.reference && formElementRef._eoFormElement.classification === 'selector'\"\n [situation]=\"element._eoFormControlWrapper.situation\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [listObject]=\"formElementRef._eoFormElement.list\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-dynamic-list>\n\n\n <!-- Reference -->\n <eo-reference *ngIf=\"formElementRef._eoFormElement.reference\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [readonly]=\"formElementRef._eoFormElement.readonly\" [reference]=\"formElementRef._eoFormElement.reference\"\n [multiselect]=\"!!formElementRef._eoFormElement.multiselect ? formElementRef._eoFormElement.multiselect : situation === 'SEARCH'\"\n [minLength]=\"formElementRef._eoFormElement.minlen\"\n [maxLength]=\"formElementRef._eoFormElement.maxlen\"></eo-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID-Reference -->\n <ng-template eoFormElementTemplate propertyType=\"REFERENCE\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-id-reference [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [situation]=\"element._eoFormControlWrapper.situation\"\n [dataToRender]=\"formElementRef._eoFormElement.dataToRender\"\n [reference]=\"formElementRef._eoFormElement.reference\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [contextId]=\"formElementRef._eoFormElement.contextId\"\n [exceptionIDs]=\"formElementRef._eoFormElement.exceptionIDs\"\n [queryFilters]=\"formElementRef._eoFormElement.queryFilters\"\n [objectTypesFilter]=\"formElementRef._eoFormElement.objectTypesFilter\"></eo-id-reference>\n </eo-form-input>\n </ng-template>\n\n <!-- ID -->\n <ng-template eoFormElementTemplate propertyType=\"ID\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-string [situation]=\"element._eoFormControlWrapper.situation\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [autocomplete]=\"formElementRef._eoFormElement.autocomplete\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\" [regex]=\"'^[0-9a-fA-F]*$'\"\n [qname]=\"formElementRef._eoFormElement.qname\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [minLength]=\"32\" [maxLength]=\"32\"></eo-string>\n\n </eo-form-input>\n </ng-template>\n\n\n <!-- BOOLEAN -->\n <ng-template eoFormElementTemplate propertyType=\"BOOLEAN\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\" class=\"checkbox\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" [required]=\"formElementRef._eoFormElement.required\"\n [disabled]=\"formElementRef._eoFormElement.readonly\" (onToggleLabel)=\"labelToggled($event)\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-checkbox [formControlName]=\"element._eoFormControlWrapper.controlName\"\n [required]=\"formElementRef._eoFormElement.required\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [tristate]=\"true\"></eo-checkbox>\n </eo-form-input>\n </ng-template>\n\n <!-- CODESYSTEM -->\n <ng-template eoFormElementTemplate propertyType=\"CODESYSTEM\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-codesystem [situation]=\"element._eoFormControlWrapper.situation\"\n [pickerTitle]=\"formElementRef._eoFormElement.label\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [codesystem]=\"formElementRef._eoFormElement.codesystem\"\n [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n [filterFunction]=\"formElementRef._eoFormElement.filterFunction\"\n [disablingFilterFunction]=\"formElementRef._eoFormElement.disablingFilterFunction\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-codesystem>\n </eo-form-input>\n </ng-template>\n\n <!-- ORGANIZATION -->\n <ng-template eoFormElementTemplate propertyType=\"ORGANIZATION\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-organization [situation]=\"element._eoFormControlWrapper.situation\"\n [dataMeta]=\"formElementRef._eoFormElement.dataMeta\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [filterObject]=\"formElementRef._eoFormElement.filter\" [multiselect]=\"formElementRef._eoFormElement.multiselect\"\n (onDataMetaChanged)=\"organizationDataMetaResolved($event)\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-organization>\n </eo-form-input>\n </ng-template>\n\n <!-- NUMBER -->\n <ng-template eoFormElementTemplate propertyType=\"NUMBER\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-number *ngIf=\"situation !== 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\">\n </eo-number>\n\n <eo-number-range *ngIf=\"situation === 'SEARCH'\" [readonly]=\"formElementRef._eoFormElement.readonly\"\n [precision]=\"formElementRef._eoFormElement.precision\" [scale]=\"formElementRef._eoFormElement.scale\"\n [grouping]=\"formElementRef._eoFormElement.grouping\" [pattern]=\"formElementRef._eoFormElement.pattern\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-number-range>\n </eo-form-input>\n </ng-template>\n\n <!-- DATE AND DATETIME -->\n <ng-template eoFormElementTemplate propertyType=\"DATETIME\" let-element=\"element\" let-formElementRef=\"formElementRef\">\n <eo-form-input [tag]=\"tag\"\n [label]=\"formElementRef._eoFormElement.label ? formElementRef._eoFormElement.label : formElementRef._eoFormElement.name\"\n [isNull]=\"isNull\"\n [skipToggle]=\"skipToggle || situation !== 'SEARCH'\" (onToggleLabel)=\"labelToggled($event)\"\n [required]=\"formElementRef._eoFormElement.required\" [disabled]=\"formElementRef._eoFormElement.readonly\"\n [invalid]=\"formElementRef.invalid\">\n\n <eo-date *ngIf=\"situation !== 'SEARCH'\" [withTime]=\"formElementRef._eoFormElement.withtime\"\n [readonly]=\"formElementRef._eoFormElement.readonly\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-date>\n\n <eo-datetime-range *ngIf=\"situation === 'SEARCH'\" [pickerTitle]=\"formElementRef._eoFormElement.label\"\n [withTime]=\"formElementRef._eoFormElement.withtime\"\n [operator]=\"element?.value[element._eoFormControlWrapper.controlName] ? element.value[element._eoFormControlWrapper.controlName]?.operator: 'eq'\"\n [formControlName]=\"element._eoFormControlWrapper.controlName\"></eo-datetime-range>\n </eo-form-input>\n </ng-template>\n\n <ng-content></ng-content>\n\n <!-- print out the type if it's not matching anything -->\n <ng-template #tplUnknown><b>{{formElementRef._eoFormElement.type}}</b></ng-template>\n</div>\n", styles: [":host-context(.dark) .form-element .form-field .err-msg{background-color:var(--color-error);color:var(--color-white);margin:calc(var(--app-pane-padding) / 4) 0;padding:calc(var(--app-pane-padding) / 4);border:0;border-radius:2px}:host{flex:1 1 auto}:host.label-toggled::ng-deep eo-form-input label{text-decoration:line-through}.form-element{box-sizing:border-box}.form-element .form-field{margin:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2)}.form-element .form-field .description{border:0;font-size:var(--font-hint);font-style:italic;padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 8) 0 calc(var(--app-pane-padding) / 8)}.form-element .form-field .err-msg{color:var(--color-error);padding:calc(var(--app-pane-padding) / 4) 0;border:0}.form-element .form-field .table{flex-flow:column;align-items:flex-start;border-color:transparent}.form-element .form-field .table .label{padding-bottom:calc(var(--app-pane-padding) / 4)}.form-element.ng-dirty:not(.ng-invalid)>.form-field:not(.focused)::ng-deep label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)!important}\n"] }]
106
106
  }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { elementTemplates: [{
107
107
  type: ViewChildren,
108
108
  args: [FormElementTemplate, { emitDistinctChangesOnly: true }]
@@ -120,4 +120,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
120
120
  type: ViewChild,
121
121
  args: ['formField']
122
122
  }] } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1mb3JtL29iamVjdC1mb3JtL2Zvcm0tZWxlbWVudC9mb3JtLWVsZW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxlQUFlLEVBQWMsS0FBSyxFQUFxQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3ZKLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUXRFLE1BQU0sT0FBTyxvQkFBb0I7SUFtQi9CLHFGQUFxRjtJQUNyRixJQUNJLGFBQWEsQ0FBQyxFQUE0QjtRQUM1QyxJQUFJLEVBQUUsRUFBRTtZQUVOLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUU7Z0JBQ3BELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDekI7WUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7Z0JBQzNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUMx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dUJBQXVCLEVBQUUsSUFBSSxFQUFDO2dCQUNLLHVCQUF1QjtzQkFBN0YsZUFBZTt1QkFBQyxtQkFBbUIsRUFBRSxFQUFDLHVCQUF1QixFQUFFLElBQUksRUFBQztnQkFjNUQsU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUlGLGFBQWE7c0JBRGhCLEtBQUs7dUJBQUMsU0FBUztnQkF3QlEsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZiwgSW5wdXQsIFF1ZXJ5TGlzdCwgUmVuZGVyZXIyLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtPYmplY3RGb3JtQ29udHJvbFdyYXBwZXJ9IGZyb20gJy4uL29iamVjdC1mb3JtLWNvbnRyb2wtd3JhcHBlcic7XG5pbXBvcnQge0Zvcm1FbGVtZW50VGVtcGxhdGV9IGZyb20gJy4vZm9ybS1lbGVtZW50LXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLWZvcm0tZWxlbWVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWVsZW1lbnQuY29tcG9uZW50LnNjc3MnXSxcbiAgLy9lbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1FbGVtZW50Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGRyZW4oRm9ybUVsZW1lbnRUZW1wbGF0ZSwge2VtaXREaXN0aW5jdENoYW5nZXNPbmx5OiB0cnVlfSkgZWxlbWVudFRlbXBsYXRlczogUXVlcnlMaXN0PEZvcm1FbGVtZW50VGVtcGxhdGU+O1xuICBAQ29udGVudENoaWxkcmVuKEZvcm1FbGVtZW50VGVtcGxhdGUsIHtlbWl0RGlzdGluY3RDaGFuZ2VzT25seTogdHJ1ZX0pIGNvbnRlbnRFbGVtZW50VGVtcGxhdGVzOiBRdWVyeUxpc3Q8Rm9ybUVsZW1lbnRUZW1wbGF0ZT47XG5cblxuICBcbiAgZWxlbWVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmb3JtRWxlbWVudFJlZjogYW55O1xuICBlbGVtZW50OiBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXI7XG4gIGZvY3VzZWQ7XG4gIGlzTnVsbDogYm9vbGVhbjtcbiAgdGFnOiB7XG4gICAgbGFiZWw6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nXG4gIH07XG5cbiAgQElucHV0KCkgc2l0dWF0aW9uO1xuICBASW5wdXQoKSBza2lwVG9nZ2xlOiBib29sZWFuO1xuXG4gIC8vIGVsZW1lbnQgaXMgc3VwcG9zZWQgdG8gYmUgYSBzcGVjaWFsIFVudHlwZWRGb3JtR3JvdXAgaG9sZGluZyBhIHNpbmdsZSBmb3JtIGVsZW1lbnRcbiAgQElucHV0KCdlbGVtZW50JylcbiAgc2V0IGVsZW1lbnRTZXR0ZXIoZWw6IE9iamVjdEZvcm1Db250cm9sV3JhcHBlcikge1xuICAgIGlmIChlbCkge1xuXG4gICAgICB0aGlzLmVsZW1lbnQgPSBlbDtcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYgPSBlbC5jb250cm9sc1tlbC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVdO1xuICAgICAgaWYgKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZSkge1xuICAgICAgICB0aGlzLmxhYmVsVG9nZ2xlZCh0cnVlKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnR5cGUgPT09ICdSRUZFUkVOQ0UnKSB7XG4gICAgICAgIHRoaXMuYWRkRGF0YVRvUmVuZGVyKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQudHlwZSA9PT0gJ0lEJykge1xuICAgICAgICB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1pbmxlbiA9IDMyO1xuICAgICAgICB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1heGxlbiA9IDMyO1xuICAgICAgfVxuICAgICAgdGhpcy5mZXRjaFRhZ3MoKTtcblxuICAgICAgaWYgKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHkgJiYgdGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZCkge1xuICAgICAgICB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQFZpZXdDaGlsZCgnZm9ybUZpZWxkJykgZm9ybUZpZWxkOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRGF0YVRvUmVuZGVyKGVsZW1lbnQpIHtcbiAgICBjb25zdCBtdWx0aXNlbGVjdCA9IGVsZW1lbnQubXVsdGlzZWxlY3Q7XG4gICAgY29uc3QgZGF0YU1ldGEgPSBlbGVtZW50LmRhdGFNZXRhO1xuICAgIGlmIChtdWx0aXNlbGVjdCAmJiBkYXRhTWV0YSkge1xuICAgICAgZWxlbWVudC5kYXRhVG9SZW5kZXIgPSBkYXRhTWV0YS5tYXAoKGRNLCBpKSA9PiB7XG4gICAgICAgIGRNLmlkID0gZWxlbWVudC52YWx1ZVtpXTtcbiAgICAgICAgcmV0dXJuIGRNO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICghbXVsdGlzZWxlY3QgJiYgZGF0YU1ldGEpIHtcbiAgICAgIGRhdGFNZXRhLmlkID0gZWxlbWVudC52YWx1ZTtcbiAgICAgIGVsZW1lbnQuZGF0YVRvUmVuZGVyID0gW2RhdGFNZXRhXTtcbiAgICB9XG4gIH1cblxuICBsYWJlbFRvZ2dsZWQodG9nZ2xlZDogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5za2lwVG9nZ2xlICYmIHRoaXMuZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgY29uc3QgdG9nZ2xlQ2xhc3MgPSAnbGFiZWwtdG9nZ2xlZCc7XG4gICAgICB0aGlzLmlzTnVsbCA9IHRvZ2dsZWQ7XG4gICAgICBpZiAodG9nZ2xlZCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgdG9nZ2xlQ2xhc3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRvZ2dsZUNsYXNzKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZSA9IHRvZ2dsZWQ7XG4gICAgICB0aGlzLmVsZW1lbnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cbiAgfVxuXG4gIG9yZ2FuaXphdGlvbkRhdGFNZXRhUmVzb2x2ZWQoZGF0YSkge1xuICAgIC8vIG5ldyBtZXRhIGRhdGEgd2lsbCBhbHdheXMgYXJyaXZlIGFzIGFycmF5IGV2ZW4gZm9yIHNpbmdsZSBpbnB1dHMsIHNvIHdlIGhhdmUgdG8gY29udmVydFxuICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZGF0YU1ldGEgPSB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0ID8gZGF0YSA6IGRhdGFbMF07XG4gIH1cblxuICBmZXRjaFRhZ3MoKSB7XG4gICAgdGhpcy50YWcgPSBudWxsO1xuICAgIGlmICh0aGlzLnNpdHVhdGlvbiA9PT0gJ0NSRUFURScgJiZcbiAgICAgICh0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lmhhc093blByb3BlcnR5KCdkZWZhdWx0dmFsdWVmdW5jdGlvbicpIHx8IHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuaGFzT3duUHJvcGVydHkoJ2RlZmF1bHR2YWx1ZScpKSkge1xuICAgICAgdGhpcy50YWcgPSB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRlZmF1bHR2YWx1ZWZ1bmN0aW9uID09PSAnRVhUUkFDVElPTicgPyB7XG4gICAgICAgIGxhYmVsOiAnZXgnLFxuICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uZm9ybS5lbGVtZW50LnRhZy5leCcpXG4gICAgICB9IDoge1xuICAgICAgICBsYWJlbDogJ2RmJyxcbiAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmZvcm0uZWxlbWVudC50YWcuZGYnKVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgdHBscyA9IFsuLi50aGlzLmVsZW1lbnRUZW1wbGF0ZXMudG9BcnJheSgpLCAuLi50aGlzLmNvbnRlbnRFbGVtZW50VGVtcGxhdGVzLnRvQXJyYXkoKV07XG4gICAgY29uc3QgZGlyID0gdHBscy5maW5kKHRwbCA9PiB0cGwucHJvcGVydHlUeXBlID09PSB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnR5cGUpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5lbGVtZW50VGVtcGxhdGUgPSBkaXIgPyBkaXIudGVtcGxhdGUgOiB1bmRlZmluZWRcbiAgICB9KVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1lbGVtZW50XCIgW2Zvcm1Hcm91cF09XCJlbGVtZW50XCIgKm5nSWY9XCJlbGVtZW50XCI+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGQgdC17e2Zvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnR5cGV9fVwiICNmb3JtRmllbGRcbiAgICBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6ICEhZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHl9XCIgKm5nSWY9XCJlbGVtZW50VGVtcGxhdGVcIj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbGVtZW50VGVtcGxhdGU7IGNvbnRleHQ6IHtlbGVtZW50LCBmb3JtRWxlbWVudFJlZn1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gdGhlIGZpZWxkcyBkZXNjcmlwdGlvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRlc2NyaXB0aW9uXCI+e3tmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5kZXNjcmlwdGlvbn19PC9kaXY+XG5cbiAgICA8IS0tIGVycm9yL3ZhbGlkYXRpb24gbWVzc2FnZXMgLS0+XG4gICAgPGRpdiBjbGFzcz1cImVyci1tc2dcIiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9yc1wiPlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmRhdGVyYW5nZVwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5LmRhdGVyYW5nZS5pbnZhbGlkPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLm51bWJlcnJhbmdlXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkubnVtYmVycmFuZ2UuaW52YWxpZDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5udW1iZXJcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5udW1iZXI8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMucHJlY2lzaW9uXCIgdHJhbnNsYXRlXG4gICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLnByZWNpc2lvbi50cmFuc2xhdGVWYWx1ZXNcIj5cbiAgICAgICAge3tmb3JtRWxlbWVudFJlZi5lcnJvcnMucHJlY2lzaW9uLnRyYW5zbGF0ZUtleX19PC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLnNjYWxlXCIgdHJhbnNsYXRlXG4gICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLnNjYWxlLnRyYW5zbGF0ZVZhbHVlc1wiPnt7Zm9ybUVsZW1lbnRSZWYuZXJyb3JzLnNjYWxlLnRyYW5zbGF0ZUtleX19XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5yZWdleCB8fCBmb3JtRWxlbWVudFJlZi5lcnJvcnMucGF0dGVyblwiIHRyYW5zbGF0ZT5cbiAgICAgICAgZW8uZm9ybS5wcm9wZXJ0eS5zdHJpbmcucmVnZXgubm9tYXRjaDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5jbGFzc2lmaWNhdGlvbmVtYWlsXCIgdHJhbnNsYXRlPlxuICAgICAgICBlby5mb3JtLnByb3BlcnR5LnN0cmluZy5lcnJvci5jbGFzc2lmaWNhdGlvbi5lbWFpbDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5jbGFzc2lmaWNhdGlvbnVybFwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5LnN0cmluZy5lcnJvci5jbGFzc2lmaWNhdGlvbi51cmxcbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5vbmx5V2hpdGVzcGFjZXNcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5zdHJpbmcuZXJyb3Iud2hpdGVzcGFjZXM8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuZGF0ZWNvbnRyb2xcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5kYXRlLmludmFsaWQ8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuY29kZXN5c3RlbVwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5LmNvZGVzeXN0ZW0udmFsdWUuaW52YWxpZDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5lb2Zvcm1TY3JpcHRcIj57e2Zvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmVycm9yLm1zZ319PC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLnJlcXVpcmVkXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkucmVxdWlyZWQ8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMubWF4bGVuZ3RoXCIgdHJhbnNsYXRlXG4gICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwie21heGxlbmd0aDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWF4bGVufVwiPmVvLmZvcm0ucHJvcGVydHkubWF4bGVuZ3RoPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLm1pbmxlbmd0aFwiIHRyYW5zbGF0ZVxuICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInttaW5sZW5ndGg6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1pbmxlbn1cIj5lby5mb3JtLnByb3BlcnR5Lm1pbmxlbmd0aDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5kZWxldGVkSURSZWZlcmVuY2VcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5pZHJlZmVyZW5jZS5kZWxldGVkPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmRlbGV0ZWRPcmdPYmplY3RcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5vcmdvYmplY3QuZGVsZXRlZDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuXG5cblxuICA8IS0tIFNUUklORyAtLT5cbiAgPG5nLXRlbXBsYXRlIGVvRm9ybUVsZW1lbnRUZW1wbGF0ZSBwcm9wZXJ0eVR5cGU9XCJTVFJJTkdcIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICAgIDxlby1mb3JtLWlucHV0IFt0YWddPVwidGFnXCJcbiAgICAgIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA/IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsIDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubmFtZVwiXG4gICAgICBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgICA8ZW8tc3RyaW5nXG4gICAgICAgICpuZ0lmPVwiIWZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlZmVyZW5jZSAmJiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5jbGFzc2lmaWNhdGlvbiAhPT0gJ3NlbGVjdG9yJ1wiXG4gICAgICAgIFtzaXR1YXRpb25dPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiXG4gICAgICAgIFthdXRvY29tcGxldGVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgW211bHRpc2VsZWN0XT1cIiEhZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3RcIlxuICAgICAgICBbbXVsdGlsaW5lXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpbGluZVwiXG4gICAgICAgIFtjbGFzc2lmaWNhdGlvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5jbGFzc2lmaWNhdGlvblwiIFtyZWdleF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWdleFwiXG4gICAgICAgIFtxbmFtZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5xbmFtZVwiIFtzaXplXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnNpemVcIlxuICAgICAgICBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIiBbbWluTGVuZ3RoXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1pbmxlblwiXG4gICAgICAgIFttYXhMZW5ndGhdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWF4bGVuXCI+PC9lby1zdHJpbmc+XG5cbiAgICAgIDwhLS0gRHluYW1pYyBMaXN0IC0tPlxuICAgICAgPGVvLWR5bmFtaWMtbGlzdFxuICAgICAgICAqbmdJZj1cIiFmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWZlcmVuY2UgJiYgZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuY2xhc3NpZmljYXRpb24gPT09ICdzZWxlY3RvcidcIlxuICAgICAgICBbc2l0dWF0aW9uXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLnNpdHVhdGlvblwiIFtwaWNrZXJUaXRsZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbFwiXG4gICAgICAgIFtmaWx0ZXJGdW5jdGlvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5maWx0ZXJGdW5jdGlvblwiXG4gICAgICAgIFttdWx0aXNlbGVjdF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdFwiIFtsaXN0T2JqZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lmxpc3RcIlxuICAgICAgICBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCI+PC9lby1keW5hbWljLWxpc3Q+XG5cblxuICAgICAgPCEtLSBSZWZlcmVuY2UgLS0+XG4gICAgICA8ZW8tcmVmZXJlbmNlICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVmZXJlbmNlXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiXG4gICAgICAgIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiIFtyZWZlcmVuY2VdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVmZXJlbmNlXCJcbiAgICAgICAgW211bHRpc2VsZWN0XT1cIiEhZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3QgPyBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdCA6IHNpdHVhdGlvbiA9PT0gJ1NFQVJDSCdcIlxuICAgICAgICBbbWluTGVuZ3RoXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1pbmxlblwiXG4gICAgICAgIFttYXhMZW5ndGhdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWF4bGVuXCI+PC9lby1yZWZlcmVuY2U+XG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gSUQtUmVmZXJlbmNlIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIlJFRkVSRU5DRVwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgPGVvLWZvcm0taW5wdXQgW3RhZ109XCJ0YWdcIlxuICAgICAgW2xhYmVsXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsID8gZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgOiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5uYW1lXCJcbiAgICAgIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGUgfHwgc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIChvblRvZ2dsZUxhYmVsKT1cImxhYmVsVG9nZ2xlZCgkZXZlbnQpXCJcbiAgICAgIFtyZXF1aXJlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZFwiIFtkaXNhYmxlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICAgIDxlby1pZC1yZWZlcmVuY2UgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiXG4gICAgICAgIFtzaXR1YXRpb25dPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uXCJcbiAgICAgICAgW2RhdGFUb1JlbmRlcl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5kYXRhVG9SZW5kZXJcIlxuICAgICAgICBbcmVmZXJlbmNlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlZmVyZW5jZVwiIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICAgIFttdWx0aXNlbGVjdF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdFwiIFtjb250ZXh0SWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuY29udGV4dElkXCJcbiAgICAgICAgW2V4Y2VwdGlvbklEc109XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5leGNlcHRpb25JRHNcIlxuICAgICAgICBbcXVlcnlGaWx0ZXJzXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnF1ZXJ5RmlsdGVyc1wiXG4gICAgICAgIFtvYmplY3RUeXBlc0ZpbHRlcl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5vYmplY3RUeXBlc0ZpbHRlclwiPjwvZW8taWQtcmVmZXJlbmNlPlxuICAgIDwvZW8tZm9ybS1pbnB1dD5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8IS0tIElEIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIklEXCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCIgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiXG4gICAgICBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgPyBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm5hbWVcIlxuICAgICAgW2lzTnVsbF09XCJpc051bGxcIlxuICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZSB8fCBzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgKG9uVG9nZ2xlTGFiZWwpPVwibGFiZWxUb2dnbGVkKCRldmVudClcIlxuICAgICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgIFtpbnZhbGlkXT1cImZvcm1FbGVtZW50UmVmLmludmFsaWRcIj5cblxuICAgICAgPGVvLXN0cmluZyBbc2l0dWF0aW9uXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLnNpdHVhdGlvblwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIlxuICAgICAgICBbYXV0b2NvbXBsZXRlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmF1dG9jb21wbGV0ZVwiXG4gICAgICAgIFttdWx0aXNlbGVjdF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdFwiIFtyZWdleF09XCInXlswLTlhLWZBLUZdKiQnXCJcbiAgICAgICAgW3FuYW1lXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnFuYW1lXCIgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgICAgW21pbkxlbmd0aF09XCIzMlwiIFttYXhMZW5ndGhdPVwiMzJcIj48L2VvLXN0cmluZz5cblxuICAgIDwvZW8tZm9ybS1pbnB1dD5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuXG4gIDwhLS0gQk9PTEVBTiAtLT5cbiAgPG5nLXRlbXBsYXRlIGVvRm9ybUVsZW1lbnRUZW1wbGF0ZSBwcm9wZXJ0eVR5cGU9XCJCT09MRUFOXCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCIgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiIGNsYXNzPVwiY2hlY2tib3hcIlxuICAgICAgW2xhYmVsXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsID8gZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgOiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5uYW1lXCJcbiAgICAgIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGUgfHwgc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIFtyZXF1aXJlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICAgIDxlby1jaGVja2JveCBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgICAgW3RyaXN0YXRlXT1cInRydWVcIj48L2VvLWNoZWNrYm94PlxuICAgIDwvZW8tZm9ybS1pbnB1dD5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8IS0tIENPREVTWVNURU0gLS0+XG4gIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiQ09ERVNZU1RFTVwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiXG4gICAgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiXG4gICAgICBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgPyBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm5hbWVcIlxuICAgICAgW2lzTnVsbF09XCJpc051bGxcIlxuICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZSB8fCBzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgKG9uVG9nZ2xlTGFiZWwpPVwibGFiZWxUb2dnbGVkKCRldmVudClcIlxuICAgICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgIFtpbnZhbGlkXT1cImZvcm1FbGVtZW50UmVmLmludmFsaWRcIj5cblxuICAgICAgPGVvLWNvZGVzeXN0ZW0gW3NpdHVhdGlvbl09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5zaXR1YXRpb25cIlxuICAgICAgICBbcGlja2VyVGl0bGVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWxcIiBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbY29kZXN5c3RlbV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5jb2Rlc3lzdGVtXCJcbiAgICAgICAgW211bHRpc2VsZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0XCJcbiAgICAgICAgW2ZpbHRlckZ1bmN0aW9uXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmZpbHRlckZ1bmN0aW9uXCJcbiAgICAgICAgW2Rpc2FibGluZ0ZpbHRlckZ1bmN0aW9uXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRpc2FibGluZ0ZpbHRlckZ1bmN0aW9uXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiPjwvZW8tY29kZXN5c3RlbT5cbiAgICA8L2VvLWZvcm0taW5wdXQ+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBPUkdBTklaQVRJT04gLS0+XG4gIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiT1JHQU5JWkFUSU9OXCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCJcbiAgICBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICAgIDxlby1mb3JtLWlucHV0IFt0YWddPVwidGFnXCJcbiAgICAgIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA/IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsIDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubmFtZVwiXG4gICAgICBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgICA8ZW8tb3JnYW5pemF0aW9uIFtzaXR1YXRpb25dPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uXCJcbiAgICAgICAgW2RhdGFNZXRhXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRhdGFNZXRhXCIgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgICAgW2ZpbHRlck9iamVjdF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5maWx0ZXJcIiBbbXVsdGlzZWxlY3RdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3RcIlxuICAgICAgICAob25EYXRhTWV0YUNoYW5nZWQpPVwib3JnYW5pemF0aW9uRGF0YU1ldGFSZXNvbHZlZCgkZXZlbnQpXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiPjwvZW8tb3JnYW5pemF0aW9uPlxuICAgIDwvZW8tZm9ybS1pbnB1dD5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8IS0tIE5VTUJFUiAtLT5cbiAgPG5nLXRlbXBsYXRlIGVvRm9ybUVsZW1lbnRUZW1wbGF0ZSBwcm9wZXJ0eVR5cGU9XCJOVU1CRVJcIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICAgIDxlby1mb3JtLWlucHV0IFt0YWddPVwidGFnXCJcbiAgICAgIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA/IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsIDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubmFtZVwiXG4gICAgICBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgICA8ZW8tbnVtYmVyICpuZ0lmPVwic2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICAgIFtwcmVjaXNpb25dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucHJlY2lzaW9uXCIgW3NjYWxlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnNjYWxlXCJcbiAgICAgICAgW2dyb3VwaW5nXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lmdyb3VwaW5nXCIgW3BhdHRlcm5dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucGF0dGVyblwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIj5cbiAgICAgIDwvZW8tbnVtYmVyPlxuXG4gICAgICA8ZW8tbnVtYmVyLXJhbmdlICpuZ0lmPVwic2l0dWF0aW9uID09PSAnU0VBUkNIJ1wiIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICAgIFtwcmVjaXNpb25dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucHJlY2lzaW9uXCIgW3NjYWxlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnNjYWxlXCJcbiAgICAgICAgW2dyb3VwaW5nXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lmdyb3VwaW5nXCIgW3BhdHRlcm5dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucGF0dGVyblwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIj48L2VvLW51bWJlci1yYW5nZT5cbiAgICA8L2VvLWZvcm0taW5wdXQ+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBEQVRFIEFORCBEQVRFVElNRSAtLT5cbiAgPG5nLXRlbXBsYXRlIGVvRm9ybUVsZW1lbnRUZW1wbGF0ZSBwcm9wZXJ0eVR5cGU9XCJEQVRFVElNRVwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgPGVvLWZvcm0taW5wdXQgW3RhZ109XCJ0YWdcIlxuICAgICAgW2xhYmVsXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsID8gZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgOiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5uYW1lXCJcbiAgICAgIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGUgfHwgc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIChvblRvZ2dsZUxhYmVsKT1cImxhYmVsVG9nZ2xlZCgkZXZlbnQpXCJcbiAgICAgIFtyZXF1aXJlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZFwiIFtkaXNhYmxlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICAgIDxlby1kYXRlICpuZ0lmPVwic2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIFt3aXRoVGltZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC53aXRodGltZVwiXG4gICAgICAgIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIj48L2VvLWRhdGU+XG5cbiAgICAgIDxlby1kYXRldGltZS1yYW5nZSAqbmdJZj1cInNpdHVhdGlvbiA9PT0gJ1NFQVJDSCdcIiBbcGlja2VyVGl0bGVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWxcIlxuICAgICAgICBbd2l0aFRpbWVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQud2l0aHRpbWVcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCI+PC9lby1kYXRldGltZS1yYW5nZT5cbiAgICA8L2VvLWZvcm0taW5wdXQ+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gIDwhLS0gcHJpbnQgb3V0IHRoZSB0eXBlIGlmIGl0J3Mgbm90IG1hdGNoaW5nIGFueXRoaW5nIC0tPlxuICA8bmctdGVtcGxhdGUgI3RwbFVua25vd24+PGI+e3tmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC50eXBlfX08L2I+PC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1mb3JtL29iamVjdC1mb3JtL2Zvcm0tZWxlbWVudC9mb3JtLWVsZW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxlQUFlLEVBQWMsS0FBSyxFQUFxQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3ZKLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUXRFLE1BQU0sT0FBTyxvQkFBb0I7SUFtQi9CLHFGQUFxRjtJQUNyRixJQUNJLGFBQWEsQ0FBQyxFQUE0QjtRQUM1QyxJQUFJLEVBQUUsRUFBRTtZQUVOLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUU7Z0JBQ3BELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDekI7WUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7Z0JBQzNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUMx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dUJBQXVCLEVBQUUsSUFBSSxFQUFDO2dCQUNLLHVCQUF1QjtzQkFBN0YsZUFBZTt1QkFBQyxtQkFBbUIsRUFBRSxFQUFDLHVCQUF1QixFQUFFLElBQUksRUFBQztnQkFjNUQsU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUlGLGFBQWE7c0JBRGhCLEtBQUs7dUJBQUMsU0FBUztnQkF3QlEsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZiwgSW5wdXQsIFF1ZXJ5TGlzdCwgUmVuZGVyZXIyLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtPYmplY3RGb3JtQ29udHJvbFdyYXBwZXJ9IGZyb20gJy4uL29iamVjdC1mb3JtLWNvbnRyb2wtd3JhcHBlcic7XG5pbXBvcnQge0Zvcm1FbGVtZW50VGVtcGxhdGV9IGZyb20gJy4vZm9ybS1lbGVtZW50LXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLWZvcm0tZWxlbWVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWVsZW1lbnQuY29tcG9uZW50LnNjc3MnXSxcbiAgLy9lbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1FbGVtZW50Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGRyZW4oRm9ybUVsZW1lbnRUZW1wbGF0ZSwge2VtaXREaXN0aW5jdENoYW5nZXNPbmx5OiB0cnVlfSkgZWxlbWVudFRlbXBsYXRlczogUXVlcnlMaXN0PEZvcm1FbGVtZW50VGVtcGxhdGU+O1xuICBAQ29udGVudENoaWxkcmVuKEZvcm1FbGVtZW50VGVtcGxhdGUsIHtlbWl0RGlzdGluY3RDaGFuZ2VzT25seTogdHJ1ZX0pIGNvbnRlbnRFbGVtZW50VGVtcGxhdGVzOiBRdWVyeUxpc3Q8Rm9ybUVsZW1lbnRUZW1wbGF0ZT47XG5cblxuICBcbiAgZWxlbWVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmb3JtRWxlbWVudFJlZjogYW55O1xuICBlbGVtZW50OiBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXI7XG4gIGZvY3VzZWQ7XG4gIGlzTnVsbDogYm9vbGVhbjtcbiAgdGFnOiB7XG4gICAgbGFiZWw6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nXG4gIH07XG5cbiAgQElucHV0KCkgc2l0dWF0aW9uO1xuICBASW5wdXQoKSBza2lwVG9nZ2xlOiBib29sZWFuO1xuXG4gIC8vIGVsZW1lbnQgaXMgc3VwcG9zZWQgdG8gYmUgYSBzcGVjaWFsIFVudHlwZWRGb3JtR3JvdXAgaG9sZGluZyBhIHNpbmdsZSBmb3JtIGVsZW1lbnRcbiAgQElucHV0KCdlbGVtZW50JylcbiAgc2V0IGVsZW1lbnRTZXR0ZXIoZWw6IE9iamVjdEZvcm1Db250cm9sV3JhcHBlcikge1xuICAgIGlmIChlbCkge1xuXG4gICAgICB0aGlzLmVsZW1lbnQgPSBlbDtcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYgPSBlbC5jb250cm9sc1tlbC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVdO1xuICAgICAgaWYgKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZSkge1xuICAgICAgICB0aGlzLmxhYmVsVG9nZ2xlZCh0cnVlKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnR5cGUgPT09ICdSRUZFUkVOQ0UnKSB7XG4gICAgICAgIHRoaXMuYWRkRGF0YVRvUmVuZGVyKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQudHlwZSA9PT0gJ0lEJykge1xuICAgICAgICB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1pbmxlbiA9IDMyO1xuICAgICAgICB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1heGxlbiA9IDMyO1xuICAgICAgfVxuICAgICAgdGhpcy5mZXRjaFRhZ3MoKTtcblxuICAgICAgaWYgKHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHkgJiYgdGhpcy5mb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZCkge1xuICAgICAgICB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQFZpZXdDaGlsZCgnZm9ybUZpZWxkJykgZm9ybUZpZWxkOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRGF0YVRvUmVuZGVyKGVsZW1lbnQpIHtcbiAgICBjb25zdCBtdWx0aXNlbGVjdCA9IGVsZW1lbnQubXVsdGlzZWxlY3Q7XG4gICAgY29uc3QgZGF0YU1ldGEgPSBlbGVtZW50LmRhdGFNZXRhO1xuICAgIGlmIChtdWx0aXNlbGVjdCAmJiBkYXRhTWV0YSkge1xuICAgICAgZWxlbWVudC5kYXRhVG9SZW5kZXIgPSBkYXRhTWV0YS5tYXAoKGRNLCBpKSA9PiB7XG4gICAgICAgIGRNLmlkID0gZWxlbWVudC52YWx1ZVtpXTtcbiAgICAgICAgcmV0dXJuIGRNO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICghbXVsdGlzZWxlY3QgJiYgZGF0YU1ldGEpIHtcbiAgICAgIGRhdGFNZXRhLmlkID0gZWxlbWVudC52YWx1ZTtcbiAgICAgIGVsZW1lbnQuZGF0YVRvUmVuZGVyID0gW2RhdGFNZXRhXTtcbiAgICB9XG4gIH1cblxuICBsYWJlbFRvZ2dsZWQodG9nZ2xlZDogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5za2lwVG9nZ2xlICYmIHRoaXMuZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgY29uc3QgdG9nZ2xlQ2xhc3MgPSAnbGFiZWwtdG9nZ2xlZCc7XG4gICAgICB0aGlzLmlzTnVsbCA9IHRvZ2dsZWQ7XG4gICAgICBpZiAodG9nZ2xlZCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgdG9nZ2xlQ2xhc3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRvZ2dsZUNsYXNzKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZSA9IHRvZ2dsZWQ7XG4gICAgICB0aGlzLmVsZW1lbnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cbiAgfVxuXG4gIG9yZ2FuaXphdGlvbkRhdGFNZXRhUmVzb2x2ZWQoZGF0YSkge1xuICAgIC8vIG5ldyBtZXRhIGRhdGEgd2lsbCBhbHdheXMgYXJyaXZlIGFzIGFycmF5IGV2ZW4gZm9yIHNpbmdsZSBpbnB1dHMsIHNvIHdlIGhhdmUgdG8gY29udmVydFxuICAgIHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuZGF0YU1ldGEgPSB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0ID8gZGF0YSA6IGRhdGFbMF07XG4gIH1cblxuICBmZXRjaFRhZ3MoKSB7XG4gICAgdGhpcy50YWcgPSBudWxsO1xuICAgIGlmICh0aGlzLnNpdHVhdGlvbiA9PT0gJ0NSRUFURScgJiZcbiAgICAgICh0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lmhhc093blByb3BlcnR5KCdkZWZhdWx0dmFsdWVmdW5jdGlvbicpIHx8IHRoaXMuZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuaGFzT3duUHJvcGVydHkoJ2RlZmF1bHR2YWx1ZScpKSkge1xuICAgICAgdGhpcy50YWcgPSB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRlZmF1bHR2YWx1ZWZ1bmN0aW9uID09PSAnRVhUUkFDVElPTicgPyB7XG4gICAgICAgIGxhYmVsOiAnZXgnLFxuICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uZm9ybS5lbGVtZW50LnRhZy5leCcpXG4gICAgICB9IDoge1xuICAgICAgICBsYWJlbDogJ2RmJyxcbiAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmZvcm0uZWxlbWVudC50YWcuZGYnKVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgdHBscyA9IFsuLi50aGlzLmVsZW1lbnRUZW1wbGF0ZXMudG9BcnJheSgpLCAuLi50aGlzLmNvbnRlbnRFbGVtZW50VGVtcGxhdGVzLnRvQXJyYXkoKV07XG4gICAgY29uc3QgZGlyID0gdHBscy5maW5kKHRwbCA9PiB0cGwucHJvcGVydHlUeXBlID09PSB0aGlzLmZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnR5cGUpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5lbGVtZW50VGVtcGxhdGUgPSBkaXIgPyBkaXIudGVtcGxhdGUgOiB1bmRlZmluZWRcbiAgICB9KVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1lbGVtZW50XCIgW2Zvcm1Hcm91cF09XCJlbGVtZW50XCIgKm5nSWY9XCJlbGVtZW50XCI+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGQgdC17e2Zvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnR5cGV9fVwiICNmb3JtRmllbGRcbiAgICBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6ICEhZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHl9XCIgKm5nSWY9XCJlbGVtZW50VGVtcGxhdGVcIj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbGVtZW50VGVtcGxhdGU7IGNvbnRleHQ6IHtlbGVtZW50LCBmb3JtRWxlbWVudFJlZn1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gdGhlIGZpZWxkcyBkZXNjcmlwdGlvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRlc2NyaXB0aW9uXCI+e3tmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5kZXNjcmlwdGlvbn19PC9kaXY+XG5cbiAgICA8IS0tIGVycm9yL3ZhbGlkYXRpb24gbWVzc2FnZXMgLS0+XG4gICAgPGRpdiBjbGFzcz1cImVyci1tc2dcIiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9yc1wiPlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmRhdGVyYW5nZVwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5LmRhdGVyYW5nZS5pbnZhbGlkPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLm51bWJlcnJhbmdlXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkubnVtYmVycmFuZ2UuaW52YWxpZDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5udW1iZXJcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5udW1iZXI8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMucHJlY2lzaW9uXCIgdHJhbnNsYXRlXG4gICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLnByZWNpc2lvbi50cmFuc2xhdGVWYWx1ZXNcIj5cbiAgICAgICAge3tmb3JtRWxlbWVudFJlZi5lcnJvcnMucHJlY2lzaW9uLnRyYW5zbGF0ZUtleX19PC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLnNjYWxlXCIgdHJhbnNsYXRlXG4gICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLnNjYWxlLnRyYW5zbGF0ZVZhbHVlc1wiPnt7Zm9ybUVsZW1lbnRSZWYuZXJyb3JzLnNjYWxlLnRyYW5zbGF0ZUtleX19XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5yZWdleCB8fCBmb3JtRWxlbWVudFJlZi5lcnJvcnMucGF0dGVyblwiIHRyYW5zbGF0ZT5cbiAgICAgICAgZW8uZm9ybS5wcm9wZXJ0eS5zdHJpbmcucmVnZXgubm9tYXRjaDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5jbGFzc2lmaWNhdGlvbmVtYWlsXCIgdHJhbnNsYXRlPlxuICAgICAgICBlby5mb3JtLnByb3BlcnR5LnN0cmluZy5lcnJvci5jbGFzc2lmaWNhdGlvbi5lbWFpbDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5jbGFzc2lmaWNhdGlvbnVybFwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5LnN0cmluZy5lcnJvci5jbGFzc2lmaWNhdGlvbi51cmxcbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5vbmx5V2hpdGVzcGFjZXNcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5zdHJpbmcuZXJyb3Iud2hpdGVzcGFjZXM8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuZGF0ZWNvbnRyb2xcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5kYXRlLmludmFsaWQ8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMuY29kZXN5c3RlbVwiIHRyYW5zbGF0ZT5lby5mb3JtLnByb3BlcnR5LmNvZGVzeXN0ZW0udmFsdWUuaW52YWxpZDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5lb2Zvcm1TY3JpcHRcIj57e2Zvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmVycm9yLm1zZ319PC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLnJlcXVpcmVkXCIgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkucmVxdWlyZWQ8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtRWxlbWVudFJlZi5lcnJvcnMubWF4bGVuZ3RoXCIgdHJhbnNsYXRlXG4gICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwie21heGxlbmd0aDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWF4bGVufVwiPmVvLmZvcm0ucHJvcGVydHkubWF4bGVuZ3RoPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLm1pbmxlbmd0aFwiIHRyYW5zbGF0ZVxuICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInttaW5sZW5ndGg6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1pbmxlbn1cIj5lby5mb3JtLnByb3BlcnR5Lm1pbmxlbmd0aDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1FbGVtZW50UmVmLmVycm9ycy5kZWxldGVkSURSZWZlcmVuY2VcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5pZHJlZmVyZW5jZS5kZWxldGVkPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuZXJyb3JzLmRlbGV0ZWRPcmdPYmplY3RcIiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5vcmdvYmplY3QuZGVsZXRlZDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuXG5cblxuICA8IS0tIFNUUklORyAtLT5cbiAgPG5nLXRlbXBsYXRlIGVvRm9ybUVsZW1lbnRUZW1wbGF0ZSBwcm9wZXJ0eVR5cGU9XCJTVFJJTkdcIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICAgIDxlby1mb3JtLWlucHV0IFt0YWddPVwidGFnXCJcbiAgICAgIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA/IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsIDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubmFtZVwiXG4gICAgICBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgICA8ZW8tc3RyaW5nXG4gICAgICAgICpuZ0lmPVwiIWZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlZmVyZW5jZSAmJiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5jbGFzc2lmaWNhdGlvbiAhPT0gJ3NlbGVjdG9yJ1wiXG4gICAgICAgIFtzaXR1YXRpb25dPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiXG4gICAgICAgIFthdXRvY29tcGxldGVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgW211bHRpc2VsZWN0XT1cIiEhZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3RcIlxuICAgICAgICBbbXVsdGlsaW5lXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpbGluZVwiXG4gICAgICAgIFtjbGFzc2lmaWNhdGlvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5jbGFzc2lmaWNhdGlvblwiIFtyZWdleF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWdleFwiXG4gICAgICAgIFtxbmFtZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5xbmFtZVwiIFtzaXplXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnNpemVcIlxuICAgICAgICBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIiBbbWluTGVuZ3RoXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1pbmxlblwiXG4gICAgICAgIFttYXhMZW5ndGhdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWF4bGVuXCI+PC9lby1zdHJpbmc+XG5cbiAgICAgIDwhLS0gRHluYW1pYyBMaXN0IC0tPlxuICAgICAgPGVvLWR5bmFtaWMtbGlzdFxuICAgICAgICAqbmdJZj1cIiFmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWZlcmVuY2UgJiYgZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuY2xhc3NpZmljYXRpb24gPT09ICdzZWxlY3RvcidcIlxuICAgICAgICBbc2l0dWF0aW9uXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLnNpdHVhdGlvblwiIFtwaWNrZXJUaXRsZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbFwiXG4gICAgICAgIFtmaWx0ZXJGdW5jdGlvbl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5maWx0ZXJGdW5jdGlvblwiXG4gICAgICAgIFttdWx0aXNlbGVjdF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdFwiIFtsaXN0T2JqZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lmxpc3RcIlxuICAgICAgICBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCI+PC9lby1keW5hbWljLWxpc3Q+XG5cblxuICAgICAgPCEtLSBSZWZlcmVuY2UgLS0+XG4gICAgICA8ZW8tcmVmZXJlbmNlICpuZ0lmPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVmZXJlbmNlXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiXG4gICAgICAgIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiIFtyZWZlcmVuY2VdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVmZXJlbmNlXCJcbiAgICAgICAgW211bHRpc2VsZWN0XT1cIiEhZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3QgPyBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdCA6IHNpdHVhdGlvbiA9PT0gJ1NFQVJDSCdcIlxuICAgICAgICBbbWluTGVuZ3RoXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm1pbmxlblwiXG4gICAgICAgIFttYXhMZW5ndGhdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubWF4bGVuXCI+PC9lby1yZWZlcmVuY2U+XG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gSUQtUmVmZXJlbmNlIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIlJFRkVSRU5DRVwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgPGVvLWZvcm0taW5wdXQgW3RhZ109XCJ0YWdcIlxuICAgICAgW2xhYmVsXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsID8gZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgOiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5uYW1lXCJcbiAgICAgIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGUgfHwgc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIChvblRvZ2dsZUxhYmVsKT1cImxhYmVsVG9nZ2xlZCgkZXZlbnQpXCJcbiAgICAgIFtyZXF1aXJlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZFwiIFtkaXNhYmxlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICAgIDxlby1pZC1yZWZlcmVuY2UgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiXG4gICAgICAgIFtzaXR1YXRpb25dPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uXCJcbiAgICAgICAgW2RhdGFUb1JlbmRlcl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5kYXRhVG9SZW5kZXJcIlxuICAgICAgICBbcmVmZXJlbmNlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlZmVyZW5jZVwiIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICAgIFttdWx0aXNlbGVjdF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdFwiIFtjb250ZXh0SWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuY29udGV4dElkXCJcbiAgICAgICAgW2V4Y2VwdGlvbklEc109XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5leGNlcHRpb25JRHNcIlxuICAgICAgICBbcXVlcnlGaWx0ZXJzXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnF1ZXJ5RmlsdGVyc1wiXG4gICAgICAgIFtvYmplY3RUeXBlc0ZpbHRlcl09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5vYmplY3RUeXBlc0ZpbHRlclwiPjwvZW8taWQtcmVmZXJlbmNlPlxuICAgIDwvZW8tZm9ybS1pbnB1dD5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8IS0tIElEIC0tPlxuICA8bmctdGVtcGxhdGUgZW9Gb3JtRWxlbWVudFRlbXBsYXRlIHByb3BlcnR5VHlwZT1cIklEXCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCIgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiXG4gICAgICBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgPyBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm5hbWVcIlxuICAgICAgW2lzTnVsbF09XCJpc051bGxcIlxuICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZSB8fCBzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgKG9uVG9nZ2xlTGFiZWwpPVwibGFiZWxUb2dnbGVkKCRldmVudClcIlxuICAgICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgIFtpbnZhbGlkXT1cImZvcm1FbGVtZW50UmVmLmludmFsaWRcIj5cblxuICAgICAgPGVvLXN0cmluZyBbc2l0dWF0aW9uXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLnNpdHVhdGlvblwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIlxuICAgICAgICBbYXV0b2NvbXBsZXRlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmF1dG9jb21wbGV0ZVwiXG4gICAgICAgIFttdWx0aXNlbGVjdF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5tdWx0aXNlbGVjdFwiIFtyZWdleF09XCInXlswLTlhLWZBLUZdKiQnXCJcbiAgICAgICAgW3FuYW1lXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnFuYW1lXCIgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgICAgW21pbkxlbmd0aF09XCIzMlwiIFttYXhMZW5ndGhdPVwiMzJcIj48L2VvLXN0cmluZz5cblxuICAgIDwvZW8tZm9ybS1pbnB1dD5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuXG4gIDwhLS0gQk9PTEVBTiAtLT5cbiAgPG5nLXRlbXBsYXRlIGVvRm9ybUVsZW1lbnRUZW1wbGF0ZSBwcm9wZXJ0eVR5cGU9XCJCT09MRUFOXCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCIgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiIGNsYXNzPVwiY2hlY2tib3hcIlxuICAgICAgW2xhYmVsXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsID8gZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgOiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5uYW1lXCJcbiAgICAgIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGUgfHwgc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIFtyZXF1aXJlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICAgIDxlby1jaGVja2JveCBbZm9ybUNvbnRyb2xOYW1lXT1cImVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgICAgW3RyaXN0YXRlXT1cInRydWVcIj48L2VvLWNoZWNrYm94PlxuICAgIDwvZW8tZm9ybS1pbnB1dD5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8IS0tIENPREVTWVNURU0gLS0+XG4gIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiQ09ERVNZU1RFTVwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiXG4gICAgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICA8ZW8tZm9ybS1pbnB1dCBbdGFnXT1cInRhZ1wiXG4gICAgICBbbGFiZWxdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgPyBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm5hbWVcIlxuICAgICAgW2lzTnVsbF09XCJpc051bGxcIlxuICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZSB8fCBzaXR1YXRpb24gIT09ICdTRUFSQ0gnXCIgKG9uVG9nZ2xlTGFiZWwpPVwibGFiZWxUb2dnbGVkKCRldmVudClcIlxuICAgICAgW3JlcXVpcmVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgIFtpbnZhbGlkXT1cImZvcm1FbGVtZW50UmVmLmludmFsaWRcIj5cblxuICAgICAgPGVvLWNvZGVzeXN0ZW0gW3NpdHVhdGlvbl09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5zaXR1YXRpb25cIlxuICAgICAgICBbcGlja2VyVGl0bGVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWxcIiBbcmVhZG9ubHldPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgICBbY29kZXN5c3RlbV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5jb2Rlc3lzdGVtXCJcbiAgICAgICAgW211bHRpc2VsZWN0XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0XCJcbiAgICAgICAgW2ZpbHRlckZ1bmN0aW9uXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmZpbHRlckZ1bmN0aW9uXCJcbiAgICAgICAgW2Rpc2FibGluZ0ZpbHRlckZ1bmN0aW9uXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRpc2FibGluZ0ZpbHRlckZ1bmN0aW9uXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiPjwvZW8tY29kZXN5c3RlbT5cbiAgICA8L2VvLWZvcm0taW5wdXQ+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBPUkdBTklaQVRJT04gLS0+XG4gIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiT1JHQU5JWkFUSU9OXCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCJcbiAgICBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICAgIDxlby1mb3JtLWlucHV0IFt0YWddPVwidGFnXCJcbiAgICAgIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA/IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsIDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubmFtZVwiXG4gICAgICBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgICA8ZW8tb3JnYW5pemF0aW9uIFtzaXR1YXRpb25dPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuc2l0dWF0aW9uXCJcbiAgICAgICAgW2RhdGFNZXRhXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmRhdGFNZXRhXCIgW3JlYWRvbmx5XT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5XCJcbiAgICAgICAgW2ZpbHRlck9iamVjdF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5maWx0ZXJcIiBbbXVsdGlzZWxlY3RdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3RcIlxuICAgICAgICAob25EYXRhTWV0YUNoYW5nZWQpPVwib3JnYW5pemF0aW9uRGF0YU1ldGFSZXNvbHZlZCgkZXZlbnQpXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiPjwvZW8tb3JnYW5pemF0aW9uPlxuICAgIDwvZW8tZm9ybS1pbnB1dD5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8IS0tIE5VTUJFUiAtLT5cbiAgPG5nLXRlbXBsYXRlIGVvRm9ybUVsZW1lbnRUZW1wbGF0ZSBwcm9wZXJ0eVR5cGU9XCJOVU1CRVJcIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICAgIDxlby1mb3JtLWlucHV0IFt0YWddPVwidGFnXCJcbiAgICAgIFtsYWJlbF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5sYWJlbCA/IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsIDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubmFtZVwiXG4gICAgICBbaXNOdWxsXT1cImlzTnVsbFwiXG4gICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlIHx8IHNpdHVhdGlvbiAhPT0gJ1NFQVJDSCdcIiAob25Ub2dnbGVMYWJlbCk9XCJsYWJlbFRvZ2dsZWQoJGV2ZW50KVwiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHlcIlxuICAgICAgW2ludmFsaWRdPVwiZm9ybUVsZW1lbnRSZWYuaW52YWxpZFwiPlxuXG4gICAgICA8ZW8tbnVtYmVyICpuZ0lmPVwic2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICAgIFtwcmVjaXNpb25dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucHJlY2lzaW9uXCIgW3NjYWxlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnNjYWxlXCJcbiAgICAgICAgW2dyb3VwaW5nXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lmdyb3VwaW5nXCIgW3BhdHRlcm5dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucGF0dGVyblwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIj5cbiAgICAgIDwvZW8tbnVtYmVyPlxuXG4gICAgICA8ZW8tbnVtYmVyLXJhbmdlICpuZ0lmPVwic2l0dWF0aW9uID09PSAnU0VBUkNIJ1wiIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICAgIFtwcmVjaXNpb25dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucHJlY2lzaW9uXCIgW3NjYWxlXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnNjYWxlXCJcbiAgICAgICAgW2dyb3VwaW5nXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50Lmdyb3VwaW5nXCIgW3BhdHRlcm5dPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQucGF0dGVyblwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIj48L2VvLW51bWJlci1yYW5nZT5cbiAgICA8L2VvLWZvcm0taW5wdXQ+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBEQVRFIEFORCBEQVRFVElNRSAtLT5cbiAgPG5nLXRlbXBsYXRlIGVvRm9ybUVsZW1lbnRUZW1wbGF0ZSBwcm9wZXJ0eVR5cGU9XCJEQVRFVElNRVwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgPGVvLWZvcm0taW5wdXQgW3RhZ109XCJ0YWdcIlxuICAgICAgW2xhYmVsXT1cImZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmxhYmVsID8gZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWwgOiBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5uYW1lXCJcbiAgICAgIFtpc051bGxdPVwiaXNOdWxsXCJcbiAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGUgfHwgc2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIChvblRvZ2dsZUxhYmVsKT1cImxhYmVsVG9nZ2xlZCgkZXZlbnQpXCJcbiAgICAgIFtyZXF1aXJlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZFwiIFtkaXNhYmxlZF09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICBbaW52YWxpZF09XCJmb3JtRWxlbWVudFJlZi5pbnZhbGlkXCI+XG5cbiAgICAgIDxlby1kYXRlICpuZ0lmPVwic2l0dWF0aW9uICE9PSAnU0VBUkNIJ1wiIFt3aXRoVGltZV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC53aXRodGltZVwiXG4gICAgICAgIFtyZWFkb25seV09XCJmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5yZWFkb25seVwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVcIj48L2VvLWRhdGU+XG5cbiAgICAgIDxlby1kYXRldGltZS1yYW5nZSAqbmdJZj1cInNpdHVhdGlvbiA9PT0gJ1NFQVJDSCdcIiBbcGlja2VyVGl0bGVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQubGFiZWxcIlxuICAgICAgICBbd2l0aFRpbWVdPVwiZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQud2l0aHRpbWVcIlxuICAgICAgICBbb3BlcmF0b3JdPVwiZWxlbWVudD8udmFsdWVbZWxlbWVudC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVdID8gZWxlbWVudC52YWx1ZVtlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZV0/Lm9wZXJhdG9yOiAnZXEnXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Ll9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZVwiPjwvZW8tZGF0ZXRpbWUtcmFuZ2U+XG4gICAgPC9lby1mb3JtLWlucHV0PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICA8IS0tIHByaW50IG91dCB0aGUgdHlwZSBpZiBpdCdzIG5vdCBtYXRjaGluZyBhbnl0aGluZyAtLT5cbiAgPG5nLXRlbXBsYXRlICN0cGxVbmtub3duPjxiPnt7Zm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQudHlwZX19PC9iPjwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==