mis-crystal-design-system 18.1.0-signal → 18.1.0

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.
Files changed (90) hide show
  1. package/async-search-dropdown/async-dropdown.component.d.ts +2 -2
  2. package/button/button.component.d.ts +0 -2
  3. package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +4 -0
  4. package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +9 -5
  5. package/dropdown/dropdown.component.d.ts +1 -1
  6. package/esm2022/async-search-dropdown/async-dropdown.component.mjs +2 -2
  7. package/esm2022/button/button.component.mjs +7 -15
  8. package/esm2022/checkbox/checkbox.component.mjs +4 -4
  9. package/esm2022/chip/chip.component.mjs +4 -4
  10. package/esm2022/datepicker_v2/tz-datepicker.directive.mjs +17 -10
  11. package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +87 -32
  12. package/esm2022/daterangepicker_v2/tz-daterangepicker.directive.mjs +6 -3
  13. package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +316 -141
  14. package/esm2022/drawer/drawer-body/drawer-body.component.mjs +4 -4
  15. package/esm2022/dropdown/dropdown.component.mjs +1 -1
  16. package/esm2022/fab/fab.component.mjs +4 -4
  17. package/esm2022/filter/filter-panel/filter-panel.component.mjs +28 -27
  18. package/esm2022/input/directives/input/input.directive.mjs +28 -10
  19. package/esm2022/input/mis-input.component.mjs +19 -13
  20. package/esm2022/loader/loader.component.mjs +13 -7
  21. package/esm2022/modal/module-wrapper/module-wrapper.component.mjs +4 -4
  22. package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +10 -5
  23. package/esm2022/phone-input/phone-input.component.mjs +4 -4
  24. package/esm2022/radio-button/radio-button.component.mjs +4 -4
  25. package/esm2022/ske-loader/ske-loader.component.mjs +4 -4
  26. package/esm2022/slider/slider.component.mjs +4 -4
  27. package/esm2022/snackbar/snackbar/snackbar.component.mjs +4 -4
  28. package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +24 -20
  29. package/esm2022/switch/switch.component.mjs +2 -4
  30. package/esm2022/table/sub-table/sub-table.component.mjs +18 -5
  31. package/esm2022/table/table.component.mjs +52 -28
  32. package/esm2022/toast/toast.component.mjs +4 -4
  33. package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +4 -4
  34. package/esm2022/virtual-scroll/virtual-scroll.component.mjs +4 -4
  35. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +1 -1
  36. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
  37. package/fesm2022/mis-crystal-design-system-button.mjs +6 -14
  38. package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -1
  39. package/fesm2022/mis-crystal-design-system-checkbox.mjs +3 -3
  40. package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -1
  41. package/fesm2022/mis-crystal-design-system-chip.mjs +3 -3
  42. package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -1
  43. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs +101 -39
  44. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
  45. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +320 -142
  46. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
  47. package/fesm2022/mis-crystal-design-system-drawer.mjs +3 -3
  48. package/fesm2022/mis-crystal-design-system-drawer.mjs.map +1 -1
  49. package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -1
  50. package/fesm2022/mis-crystal-design-system-fab.mjs +3 -3
  51. package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -1
  52. package/fesm2022/mis-crystal-design-system-filter.mjs +27 -26
  53. package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -1
  54. package/fesm2022/mis-crystal-design-system-input.mjs +45 -21
  55. package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -1
  56. package/fesm2022/mis-crystal-design-system-loader.mjs +12 -6
  57. package/fesm2022/mis-crystal-design-system-loader.mjs.map +1 -1
  58. package/fesm2022/mis-crystal-design-system-modal.mjs +3 -3
  59. package/fesm2022/mis-crystal-design-system-modal.mjs.map +1 -1
  60. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs +9 -4
  61. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -1
  62. package/fesm2022/mis-crystal-design-system-phone-input.mjs +3 -3
  63. package/fesm2022/mis-crystal-design-system-phone-input.mjs.map +1 -1
  64. package/fesm2022/mis-crystal-design-system-radio-button.mjs +3 -3
  65. package/fesm2022/mis-crystal-design-system-radio-button.mjs.map +1 -1
  66. package/fesm2022/mis-crystal-design-system-ske-loader.mjs +3 -3
  67. package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -1
  68. package/fesm2022/mis-crystal-design-system-slider.mjs +3 -3
  69. package/fesm2022/mis-crystal-design-system-slider.mjs.map +1 -1
  70. package/fesm2022/mis-crystal-design-system-snackbar.mjs +3 -3
  71. package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -1
  72. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs +23 -19
  73. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
  74. package/fesm2022/mis-crystal-design-system-switch.mjs +1 -3
  75. package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -1
  76. package/fesm2022/mis-crystal-design-system-table.mjs +68 -32
  77. package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
  78. package/fesm2022/mis-crystal-design-system-toast.mjs +3 -3
  79. package/fesm2022/mis-crystal-design-system-toast.mjs.map +1 -1
  80. package/fesm2022/mis-crystal-design-system-tooltip.mjs +3 -3
  81. package/fesm2022/mis-crystal-design-system-tooltip.mjs.map +1 -1
  82. package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs +3 -3
  83. package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs.map +1 -1
  84. package/filter/filter-panel/filter-panel.component.d.ts +1 -1
  85. package/input/directives/input/input.directive.d.ts +3 -4
  86. package/input/mis-input.component.d.ts +3 -6
  87. package/input/mis-input.component.scss +12 -4
  88. package/loader/loader.component.d.ts +7 -1
  89. package/package.json +13 -13
  90. package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +2 -2
@@ -120,8 +120,21 @@ export class SubTableComponent {
120
120
  }
121
121
  ngOnInit() { }
122
122
  ngAfterViewInit() {
123
- let height = this.table.nativeElement.offsetHeight;
124
- this.renderer.setStyle(this.table.nativeElement, "height", height - 56 + "px");
123
+ const config = this.config();
124
+ if (!config?.paginationConfig)
125
+ return; // ← Only set height if pagination exists (same as old code)
126
+ const rawHeight = config.height;
127
+ // Handle percentage values - use calc() to subtract 56px
128
+ if (typeof rawHeight === 'string' && rawHeight.includes('%')) {
129
+ const calcHeight = `calc(${rawHeight} - 56px)`;
130
+ this.renderer.setStyle(this.table.nativeElement, "height", calcHeight);
131
+ }
132
+ else {
133
+ // Handle pixel values - subtract 56px (same as old code)
134
+ const result = rawHeight - 56;
135
+ const finalHeight = result + "px";
136
+ this.renderer.setStyle(this.table.nativeElement, "height", finalHeight);
137
+ }
125
138
  }
126
139
  // Main container related functions
127
140
  getContainerHeight() {
@@ -175,15 +188,15 @@ export class SubTableComponent {
175
188
  i0.ɵɵstyleProp("overflow", "overlay")("height", ctx.config().dataContainerMaxHeight || "400px");
176
189
  i0.ɵɵproperty("minBufferPx", ctx.config().dataContainerMaxHeight || "400")("maxBufferPx", ctx.config().dataContainerMaxHeight + 200 || "600");
177
190
  i0.ɵɵadvance();
178
- i0.ɵɵproperty("cdkVirtualForOf", ctx.tableData);
191
+ i0.ɵɵproperty("cdkVirtualForOf", ctx.tableData());
179
192
  } }, dependencies: [i1.NgForOf, i1.NgIf, i1.NgStyle, i2.CdkFixedSizeVirtualScroll, i2.CdkVirtualForOf, i2.CdkVirtualScrollViewport, i3.CustomTableCellDirective], styles: ["#main-container[_ngcontent-%COMP%]{font-family:Lato,sans-serif}#table-container[_ngcontent-%COMP%]{height:inherit}#col-headers-container[_ngcontent-%COMP%]{display:flex;background-color:var(--bg-primary, #FFFFFF);height:36px;border-bottom:1px solid var(--border-primary, #E0E0E0)}#data-container[_ngcontent-%COMP%]{overflow:scroll;width:100%}#data-container[_ngcontent-%COMP%]::-webkit-scrollbar{width:8px}#data-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:var(--text-tertiary, #929DAB)}.col-header[_ngcontent-%COMP%]{height:100%;width:160px;display:flex;align-items:center;padding:0 16px}.col-header-text[_ngcontent-%COMP%]{font-style:normal;font-weight:700;font-size:14px;line-height:20px;display:flex;align-items:center;letter-spacing:.25px;margin:0}.t-row[_ngcontent-%COMP%]{display:flex;align-items:center;height:36px;width:100%;border-bottom:1px solid var(--border-primary, #E0E0E0)}.t-row[_ngcontent-%COMP%]:hover{background-color:var(--brand-success-lightest, #F1FFF3)}.t-col-container[_ngcontent-%COMP%]{padding:0 16px;height:100%}.t-col[_ngcontent-%COMP%]{display:flex;align-items:center;height:100%}.t-col-text[_ngcontent-%COMP%]{font-style:normal;font-weight:400;font-size:14px;line-height:20px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:flex;align-items:center;letter-spacing:.2px;margin:0}"] }); }
180
193
  }
181
194
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SubTableComponent, [{
182
195
  type: Component,
183
- args: [{ selector: "sub-table", template: "<div\n id=\"main-container\"\n [ngStyle]=\"{\n height: getContainerHeight(),\n width: getContainerWidth()\n }\"\n>\n <div id=\"table-container\" #table>\n <div\n id=\"col-headers-container\"\n *ngIf=\"!!config().showHeader\"\n [ngStyle]=\"{\n height: getColHeadersRowHeight(),\n 'border-top': getColHeadersRowBorderTop(),\n 'border-bottom': getColHeadersRowBorderBottom()\n }\"\n >\n <div\n class=\"col-header\"\n (click)=\"colHeader?.action ? colHeader?.action(colHeader) : null\"\n *ngFor=\"let colHeader of config()?.colHeaderConfig\"\n [style]=\"colHeader?.style\"\n [ngStyle]=\"{\n width: colHeader?.style?.width || '',\n cursor: colHeader.action ? 'pointer' : 'default',\n 'justify-content': colHeader?.style?.justifyContent\n ? colHeader?.style?.justifyContent\n : colHeader.type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p *ngIf=\"colHeader?.type !== 'custom'\" class=\"col-header-text\">\n {{ colHeader?.data || \" \" }}\n </p>\n <ng-template\n *ngIf=\"colHeader?.type === 'custom'\"\n customTableCell\n [customComponent]=\"colHeader?.componentRef\"\n [data]=\"colHeader.data\"\n ></ng-template>\n </div>\n </div>\n <div>\n <cdk-virtual-scroll-viewport\n [minBufferPx]=\"config().dataContainerMaxHeight || '400'\"\n [maxBufferPx]=\"config().dataContainerMaxHeight + 200 || '600'\"\n [style.overflow]=\"'overlay'\"\n [style.height]=\"config().dataContainerMaxHeight || '400px'\"\n itemSize=\"50\"\n id=\"data-container\"\n >\n <div\n class=\"row-wrapper\"\n *cdkVirtualFor=\"let row of tableData; let i = index\"\n [ngStyle]=\"{\n backgroundColor: i % 2 === 0 ? '#FAFAFA' : null\n }\"\n >\n <div class=\"t-row\">\n <div\n (click)=\"config()?.colConfig[i]?.action ? config()?.colConfig[i]?.action(col) : null\"\n *ngFor=\"let col of row; let i = index\"\n [ngStyle]=\"{\n width: config()?.colConfig[i]?.style?.width || config()?.colHeaderConfig[i]?.style?.width || ''\n }\"\n class=\"t-col-container\"\n >\n <div\n class=\"t-col\"\n [style]=\"config().colConfig[i]?.style\"\n [ngStyle]=\"{\n width: '100%',\n cursor: config().colConfig[i].action ? 'pointer' : 'default',\n 'justify-content': config().colConfig[i]?.style?.justifyContent\n ? config().colConfig[i]?.style?.justifyContent\n : config().colConfig[i].type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p\n *ngIf=\"config().colConfig[i].type !== 'custom'\"\n [ngStyle]=\"{\n color: config()?.colConfig[i]?.style?.color ? config()?.colConfig[i]?.style?.color : ''\n }\"\n class=\"t-col-text\"\n >\n {{ col }}\n </p>\n <ng-template\n *ngIf=\"config().colConfig[i].type === 'custom'\"\n [customComponent]=\"config().colConfig[i].componentRef\"\n [data]=\"col\"\n customTableCell\n ></ng-template>\n </div>\n </div>\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n </div>\n </div>\n</div>\n", styles: ["#main-container{font-family:Lato,sans-serif}#table-container{height:inherit}#col-headers-container{display:flex;background-color:var(--bg-primary, #FFFFFF);height:36px;border-bottom:1px solid var(--border-primary, #E0E0E0)}#data-container{overflow:scroll;width:100%}#data-container::-webkit-scrollbar{width:8px}#data-container::-webkit-scrollbar-thumb{background:var(--text-tertiary, #929DAB)}.col-header{height:100%;width:160px;display:flex;align-items:center;padding:0 16px}.col-header-text{font-style:normal;font-weight:700;font-size:14px;line-height:20px;display:flex;align-items:center;letter-spacing:.25px;margin:0}.t-row{display:flex;align-items:center;height:36px;width:100%;border-bottom:1px solid var(--border-primary, #E0E0E0)}.t-row:hover{background-color:var(--brand-success-lightest, #F1FFF3)}.t-col-container{padding:0 16px;height:100%}.t-col{display:flex;align-items:center;height:100%}.t-col-text{font-style:normal;font-weight:400;font-size:14px;line-height:20px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:flex;align-items:center;letter-spacing:.2px;margin:0}\n"] }]
196
+ args: [{ selector: "sub-table", template: "<div\n id=\"main-container\"\n [ngStyle]=\"{\n height: getContainerHeight(),\n width: getContainerWidth()\n }\"\n>\n <div id=\"table-container\" #table>\n <div\n id=\"col-headers-container\"\n *ngIf=\"!!config().showHeader\"\n [ngStyle]=\"{\n height: getColHeadersRowHeight(),\n 'border-top': getColHeadersRowBorderTop(),\n 'border-bottom': getColHeadersRowBorderBottom()\n }\"\n >\n <div\n class=\"col-header\"\n (click)=\"colHeader?.action ? colHeader?.action(colHeader) : null\"\n *ngFor=\"let colHeader of config()?.colHeaderConfig\"\n [style]=\"colHeader?.style\"\n [ngStyle]=\"{\n width: colHeader?.style?.width || '',\n cursor: colHeader.action ? 'pointer' : 'default',\n 'justify-content': colHeader?.style?.justifyContent\n ? colHeader?.style?.justifyContent\n : colHeader.type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p *ngIf=\"colHeader?.type !== 'custom'\" class=\"col-header-text\">\n {{ colHeader?.data || \" \" }}\n </p>\n <ng-template\n *ngIf=\"colHeader?.type === 'custom'\"\n customTableCell\n [customComponent]=\"colHeader?.componentRef\"\n [data]=\"colHeader.data\"\n ></ng-template>\n </div>\n </div>\n <div>\n <cdk-virtual-scroll-viewport\n [minBufferPx]=\"config().dataContainerMaxHeight || '400'\"\n [maxBufferPx]=\"config().dataContainerMaxHeight + 200 || '600'\"\n [style.overflow]=\"'overlay'\"\n [style.height]=\"config().dataContainerMaxHeight || '400px'\"\n itemSize=\"50\"\n id=\"data-container\"\n >\n \n <div\n class=\"row-wrapper\"\n *cdkVirtualFor=\"let row of tableData(); let i = index\"\n [ngStyle]=\"{\n backgroundColor: i % 2 === 0 ? '#FAFAFA' : null,\n }\"\n >\n <div class=\"t-row\">\n <div\n (click)=\"config()?.colConfig[i]?.action ? config()?.colConfig[i]?.action(col) : null\"\n *ngFor=\"let col of row; let i = index\"\n [ngStyle]=\"{\n width: config()?.colConfig[i]?.style?.width || config()?.colHeaderConfig[i]?.style?.width || ''\n }\"\n class=\"t-col-container\"\n >\n <div\n class=\"t-col\"\n [style]=\"config().colConfig[i]?.style\"\n [ngStyle]=\"{\n width: '100%',\n cursor: config().colConfig[i].action ? 'pointer' : 'default',\n 'justify-content': config().colConfig[i]?.style?.justifyContent\n ? config().colConfig[i]?.style?.justifyContent\n : config().colConfig[i].type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p\n *ngIf=\"config().colConfig[i].type !== 'custom'\"\n [ngStyle]=\"{\n color: config()?.colConfig[i]?.style?.color ? config()?.colConfig[i]?.style?.color : ''\n }\"\n class=\"t-col-text\"\n >\n {{ col }}\n </p>\n <ng-template\n *ngIf=\"config().colConfig[i].type === 'custom'\"\n [customComponent]=\"config().colConfig[i].componentRef\"\n [data]=\"col\"\n customTableCell\n ></ng-template>\n </div>\n </div>\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n </div>\n </div>\n</div>\n", styles: ["#main-container{font-family:Lato,sans-serif}#table-container{height:inherit}#col-headers-container{display:flex;background-color:var(--bg-primary, #FFFFFF);height:36px;border-bottom:1px solid var(--border-primary, #E0E0E0)}#data-container{overflow:scroll;width:100%}#data-container::-webkit-scrollbar{width:8px}#data-container::-webkit-scrollbar-thumb{background:var(--text-tertiary, #929DAB)}.col-header{height:100%;width:160px;display:flex;align-items:center;padding:0 16px}.col-header-text{font-style:normal;font-weight:700;font-size:14px;line-height:20px;display:flex;align-items:center;letter-spacing:.25px;margin:0}.t-row{display:flex;align-items:center;height:36px;width:100%;border-bottom:1px solid var(--border-primary, #E0E0E0)}.t-row:hover{background-color:var(--brand-success-lightest, #F1FFF3)}.t-col-container{padding:0 16px;height:100%}.t-col{display:flex;align-items:center;height:100%}.t-col-text{font-style:normal;font-weight:400;font-size:14px;line-height:20px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:flex;align-items:center;letter-spacing:.2px;margin:0}\n"] }]
184
197
  }], () => [{ type: i0.Renderer2 }], { table: [{
185
198
  type: ViewChild,
186
199
  args: ["table"]
187
200
  }] }); })();
188
201
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SubTableComponent, { className: "SubTableComponent" }); })();
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RhYmxlL3N1Yi10YWJsZS9zdWItdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvc3ViLXRhYmxlL3N1Yi10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBaUMsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7O0lDZ0MxRyw2QkFBZ0U7SUFDOUQsWUFDRjtJQUFBLGlCQUFJOzs7SUFERixjQUNGO0lBREUseUZBQ0Y7Ozs7SUFDQSxpR0FLQzs7O0lBREMsQUFEQSx5RkFBMkMsMkJBQ3BCOzs7O0lBdEIzQiw4QkFjQztJQVpDLG9TQUE0RCxJQUFJLEtBQUM7SUFnQmpFLEFBSEEsMEVBQWdFLDZEQVEvRDtJQUNILGlCQUFNOzs7SUFwQkosK0RBQTBCO0lBQzFCLGtkQVFFO0lBRUUsY0FBa0M7SUFBbEMscUZBQWtDO0lBSW5DLGNBQWtDO0lBQWxDLHFGQUFrQzs7O0lBNUJ6Qyw4QkFRQztJQUNDLHdFQWNDO0lBV0gsaUJBQU07Ozs7SUEvQkosZ0tBSUU7SUFLc0IsY0FBNEI7SUFBNUIsOEZBQTRCOzs7SUE2RDFDLDZCQU1DO0lBQ0MsWUFDRjtJQUFBLGlCQUFJOzs7Ozs7O0lBTkYsZ1pBRUU7SUFHRixjQUNGO0lBREUsdUNBQ0Y7Ozs7SUFDQSxpR0FLQzs7Ozs7O0lBRkMsQUFEQSw4RUFBc0QsZ0JBQzFDOzs7O0lBakNsQiwrQkFPQztJQU5DLHFSQUFTLGVBQVEseUdBQXlCLGVBQVEscUdBQThCLElBQUksS0FBQztJQU9yRiwrQkFZQztJQVVDLEFBVEEsMkVBTUMsNkRBUUE7SUFFTCxBQURFLGlCQUFNLEVB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O1lBcUMxQixlQUE0QjtZQUM1QixBQURBLHFDQUE0QiwwREFDK0I7WUFGM0QsQUFEQSwwRUFBd0QsbUVBQ007WUFRcEMsY0FBYztZQUFkLCtDQUFjOzs7aUZEL0NuQyxpQkFBaUI7Y0FMN0IsU0FBUzsyQkFDRSxXQUFXOzBDQVVELEtBQUs7a0JBQXhCLFNBQVM7bUJBQUMsT0FBTzs7a0ZBTlAsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFJlbmRlcmVyMiwgVmlld0NoaWxkLCBpbnB1dCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInN1Yi10YWJsZVwiLFxuICB0ZW1wbGF0ZVVybDogXCJzdWItdGFibGUuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCJzdWItdGFibGUuY29tcG9uZW50LmNzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBTdWJUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHNlbGVjdGVkUGFnZSA9IHNpZ25hbDxudW1iZXI+KDEpO1xuICBwYWdlcyA9IHNpZ25hbDxBcnJheTxudW1iZXI+PihbXSk7XG5cbiAgY29uZmlnID0gaW5wdXQ8U3ViVGFibGVDb25maWcgfCBhbnk+KCk7XG4gIHRhYmxlRGF0YSA9IGlucHV0PEFycmF5PEFycmF5PGFueT4+PihbXSk7XG4gIEBWaWV3Q2hpbGQoXCJ0YWJsZVwiKSB0YWJsZTogRWxlbWVudFJlZiB8IGFueTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxuXG4gIG5nT25Jbml0KCkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgbGV0IGhlaWdodCA9IHRoaXMudGFibGUubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQsIFwiaGVpZ2h0XCIsIGhlaWdodCAtIDU2ICsgXCJweFwiKTtcbiAgfVxuXG4gIC8vIE1haW4gY29udGFpbmVyIHJlbGF0ZWQgZnVuY3Rpb25zXG4gIGdldENvbnRhaW5lckhlaWdodCgpIHtcbiAgICBpZiAodGhpcy5jb25maWcoKS5oZWlnaHQpIHJldHVybiB0aGlzLmNvbmZpZygpLmhlaWdodDtcbiAgICBlbHNlIHJldHVybiBcIlwiO1xuICB9XG4gIGdldENvbnRhaW5lcldpZHRoKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZygpLndpZHRoKSByZXR1cm4gdGhpcy5jb25maWcoKS53aWR0aDtcbiAgICBlbHNlIHJldHVybiBcIlwiO1xuICB9XG5cbiAgLy8gQ29sdW1uIEhlYWRlcnMgcmVsYXRlZCBmdW5jdGlvbnNcbiAgZ2V0Q29sSGVhZGVyc1Jvd0hlaWdodCgpIHtcbiAgICBpZiAodGhpcy5jb25maWcoKS5jb2xIZWFkZXJzUm93Q29uZmlnICYmIHRoaXMuY29uZmlnKCkuY29sSGVhZGVyc1Jvd0NvbmZpZy5oZWlnaHQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZygpLmNvbEhlYWRlcnNSb3dDb25maWcuaGVpZ2h0O1xuICAgIH1cbiAgICByZXR1cm4gXCI0NHB4XCI7XG4gIH1cbiAgZ2V0Q29sSGVhZGVyc1Jvd0JvcmRlclRvcCgpIHtcbiAgICBpZiAodGhpcy5jb25maWcoKS5jb2xIZWFkZXJzUm93Q29uZmlnICYmIHRoaXMuY29uZmlnKCkuY29sSGVhZGVyc1Jvd0NvbmZpZy5zdHlsZT8uYm9yZGVyVG9wKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWcoKS5jb2xIZWFkZXJzUm93Q29uZmlnLnN0eWxlPy5ib3JkZXJUb3A7XG4gICAgfVxuICAgIHJldHVybiBcIlwiO1xuICB9XG4gIGdldENvbEhlYWRlcnNSb3dCb3JkZXJCb3R0b20oKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnKCkuY29sSGVhZGVyc1Jvd0NvbmZpZyAmJiB0aGlzLmNvbmZpZygpLmNvbEhlYWRlcnNSb3dDb25maWcuc3R5bGU/LmJvcmRlckJvdHRvbSkge1xuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnKCkuY29sSGVhZGVyc1Jvd0NvbmZpZy5zdHlsZT8uYm9yZGVyQm90dG9tO1xuICAgIH1cbiAgICByZXR1cm4gXCIxcHggc29saWQgI0UwRTBFMFwiO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3ViVGFibGVDb25maWcge1xuICBoZWlnaHQ6IHN0cmluZyB8IFwiMTAwJVwiO1xuICB3aWR0aDogc3RyaW5nIHwgXCIxMDAlXCI7XG4gIGRhdGFDb250YWluZXJNYXhIZWlnaHQ6IHN0cmluZyB8IFwiNDAwcHhcIjtcbiAgc2hvd0hlYWRlcj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHJvd0NvbmZpZzogU3ViVGFibGVSb3dDb25maWcgfCB1bmRlZmluZWQgfCBudWxsO1xuICBjb2xIZWFkZXJDb25maWc/OiBBcnJheTxTdWJUYWJsZUNvbEhlYWRlckNvbmZpZz47XG4gIGNvbENvbmZpZzogQXJyYXk8U3ViVGFibGVDb2xDb25maWc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1YlRhYmxlUm93Q29uZmlnIHtcbiAgaGVpZ2h0Pzogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiAgc3R5bGU/OiB7fTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU3ViVGFibGVDb2xIZWFkZXJDb25maWcge1xuICB0eXBlOiBcInRleHRcIiB8IFwibnVtYmVyXCIgfCBcImN1c3RvbVwiO1xuICBkYXRhOiBhbnk7XG4gIGNvbXBvbmVudFJlZj86IGFueTtcbiAgc3R5bGU/OiB7fTtcbiAgYWN0aW9uPzogYW55O1xufVxuZXhwb3J0IGludGVyZmFjZSBTdWJUYWJsZUNvbENvbmZpZyB7XG4gIHR5cGU6IFwidGV4dFwiIHwgXCJudW1iZXJcIiB8IFwiY3VzdG9tXCI7XG4gIGNvbXBvbmVudFJlZj86IGFueTtcbiAgc3R5bGU/OiB7fTtcbiAgYWN0aW9uPzogYW55O1xufVxuIiwiPGRpdlxuICBpZD1cIm1haW4tY29udGFpbmVyXCJcbiAgW25nU3R5bGVdPVwie1xuICAgIGhlaWdodDogZ2V0Q29udGFpbmVySGVpZ2h0KCksXG4gICAgd2lkdGg6IGdldENvbnRhaW5lcldpZHRoKClcbiAgfVwiXG4+XG4gIDxkaXYgaWQ9XCJ0YWJsZS1jb250YWluZXJcIiAjdGFibGU+XG4gICAgPGRpdlxuICAgICAgaWQ9XCJjb2wtaGVhZGVycy1jb250YWluZXJcIlxuICAgICAgKm5nSWY9XCIhIWNvbmZpZygpLnNob3dIZWFkZXJcIlxuICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICBoZWlnaHQ6IGdldENvbEhlYWRlcnNSb3dIZWlnaHQoKSxcbiAgICAgICAgJ2JvcmRlci10b3AnOiBnZXRDb2xIZWFkZXJzUm93Qm9yZGVyVG9wKCksXG4gICAgICAgICdib3JkZXItYm90dG9tJzogZ2V0Q29sSGVhZGVyc1Jvd0JvcmRlckJvdHRvbSgpXG4gICAgICB9XCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiY29sLWhlYWRlclwiXG4gICAgICAgIChjbGljayk9XCJjb2xIZWFkZXI/LmFjdGlvbiA/IGNvbEhlYWRlcj8uYWN0aW9uKGNvbEhlYWRlcikgOiBudWxsXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IGNvbEhlYWRlciBvZiBjb25maWcoKT8uY29sSGVhZGVyQ29uZmlnXCJcbiAgICAgICAgW3N0eWxlXT1cImNvbEhlYWRlcj8uc3R5bGVcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgd2lkdGg6IGNvbEhlYWRlcj8uc3R5bGU/LndpZHRoIHx8ICcnLFxuICAgICAgICAgIGN1cnNvcjogY29sSGVhZGVyLmFjdGlvbiA/ICdwb2ludGVyJyA6ICdkZWZhdWx0JyxcbiAgICAgICAgICAnanVzdGlmeS1jb250ZW50JzogY29sSGVhZGVyPy5zdHlsZT8uanVzdGlmeUNvbnRlbnRcbiAgICAgICAgICAgID8gY29sSGVhZGVyPy5zdHlsZT8uanVzdGlmeUNvbnRlbnRcbiAgICAgICAgICAgIDogY29sSGVhZGVyLnR5cGUgPT09ICdudW1iZXInXG4gICAgICAgICAgICA/ICdmbGV4LWVuZCdcbiAgICAgICAgICAgIDogJ3NwYWNlLWJldHdlZW4nXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8cCAqbmdJZj1cImNvbEhlYWRlcj8udHlwZSAhPT0gJ2N1c3RvbSdcIiBjbGFzcz1cImNvbC1oZWFkZXItdGV4dFwiPlxuICAgICAgICAgIHt7IGNvbEhlYWRlcj8uZGF0YSB8fCBcIiBcIiB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICpuZ0lmPVwiY29sSGVhZGVyPy50eXBlID09PSAnY3VzdG9tJ1wiXG4gICAgICAgICAgY3VzdG9tVGFibGVDZWxsXG4gICAgICAgICAgW2N1c3RvbUNvbXBvbmVudF09XCJjb2xIZWFkZXI/LmNvbXBvbmVudFJlZlwiXG4gICAgICAgICAgW2RhdGFdPVwiY29sSGVhZGVyLmRhdGFcIlxuICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXY+XG4gICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgICAgIFttaW5CdWZmZXJQeF09XCJjb25maWcoKS5kYXRhQ29udGFpbmVyTWF4SGVpZ2h0IHx8ICc0MDAnXCJcbiAgICAgICAgW21heEJ1ZmZlclB4XT1cImNvbmZpZygpLmRhdGFDb250YWluZXJNYXhIZWlnaHQgKyAyMDAgfHwgJzYwMCdcIlxuICAgICAgICBbc3R5bGUub3ZlcmZsb3ddPVwiJ292ZXJsYXknXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJjb25maWcoKS5kYXRhQ29udGFpbmVyTWF4SGVpZ2h0IHx8ICc0MDBweCdcIlxuICAgICAgICBpdGVtU2l6ZT1cIjUwXCJcbiAgICAgICAgaWQ9XCJkYXRhLWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInJvdy13cmFwcGVyXCJcbiAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCByb3cgb2YgdGFibGVEYXRhOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGkgJSAyID09PSAwID8gJyNGQUZBRkEnIDogbnVsbFxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInQtcm93XCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIChjbGljayk9XCJjb25maWcoKT8uY29sQ29uZmlnW2ldPy5hY3Rpb24gPyBjb25maWcoKT8uY29sQ29uZmlnW2ldPy5hY3Rpb24oY29sKSA6IG51bGxcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIHJvdzsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICB3aWR0aDogY29uZmlnKCk/LmNvbENvbmZpZ1tpXT8uc3R5bGU/LndpZHRoIHx8IGNvbmZpZygpPy5jb2xIZWFkZXJDb25maWdbaV0/LnN0eWxlPy53aWR0aCB8fCAnJ1xuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0LWNvbC1jb250YWluZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWNvbFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbmZpZygpLmNvbENvbmZpZ1tpXT8uc3R5bGVcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICBjdXJzb3I6IGNvbmZpZygpLmNvbENvbmZpZ1tpXS5hY3Rpb24gPyAncG9pbnRlcicgOiAnZGVmYXVsdCcsXG4gICAgICAgICAgICAgICAgICAnanVzdGlmeS1jb250ZW50JzogY29uZmlnKCkuY29sQ29uZmlnW2ldPy5zdHlsZT8uanVzdGlmeUNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgPyBjb25maWcoKS5jb2xDb25maWdbaV0/LnN0eWxlPy5qdXN0aWZ5Q29udGVudFxuICAgICAgICAgICAgICAgICAgICA6IGNvbmZpZygpLmNvbENvbmZpZ1tpXS50eXBlID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgICAgICAgICA/ICdmbGV4LWVuZCdcbiAgICAgICAgICAgICAgICAgICAgOiAnc3BhY2UtYmV0d2VlbidcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbmZpZygpLmNvbENvbmZpZ1tpXS50eXBlICE9PSAnY3VzdG9tJ1wiXG4gICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiBjb25maWcoKT8uY29sQ29uZmlnW2ldPy5zdHlsZT8uY29sb3IgPyBjb25maWcoKT8uY29sQ29uZmlnW2ldPy5zdHlsZT8uY29sb3IgOiAnJ1xuICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInQtY29sLXRleHRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGNvbCB9fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnKCkuY29sQ29uZmlnW2ldLnR5cGUgPT09ICdjdXN0b20nXCJcbiAgICAgICAgICAgICAgICAgIFtjdXN0b21Db21wb25lbnRdPVwiY29uZmlnKCkuY29sQ29uZmlnW2ldLmNvbXBvbmVudFJlZlwiXG4gICAgICAgICAgICAgICAgICBbZGF0YV09XCJjb2xcIlxuICAgICAgICAgICAgICAgICAgY3VzdG9tVGFibGVDZWxsXG4gICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RhYmxlL3N1Yi10YWJsZS9zdWItdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvc3ViLXRhYmxlL3N1Yi10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBaUMsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7O0lDZ0MxRyw2QkFBZ0U7SUFDOUQsWUFDRjtJQUFBLGlCQUFJOzs7SUFERixjQUNGO0lBREUseUZBQ0Y7Ozs7SUFDQSxpR0FLQzs7O0lBREMsQUFEQSx5RkFBMkMsMkJBQ3BCOzs7O0lBdEIzQiw4QkFjQztJQVpDLG9TQUE0RCxJQUFJLEtBQUM7SUFnQmpFLEFBSEEsMEVBQWdFLDZEQVEvRDtJQUNILGlCQUFNOzs7SUFwQkosK0RBQTBCO0lBQzFCLGtkQVFFO0lBRUUsY0FBa0M7SUFBbEMscUZBQWtDO0lBSW5DLGNBQWtDO0lBQWxDLHFGQUFrQzs7O0lBNUJ6Qyw4QkFRQztJQUNDLHdFQWNDO0lBV0gsaUJBQU07Ozs7SUEvQkosZ0tBSUU7SUFLc0IsY0FBNEI7SUFBNUIsOEZBQTRCOzs7SUE4RDFDLDZCQU1DO0lBQ0MsWUFDRjtJQUFBLGlCQUFJOzs7Ozs7O0lBTkYsZ1pBRUU7SUFHRixjQUNGO0lBREUsdUNBQ0Y7Ozs7SUFDQSxpR0FLQzs7Ozs7O0lBRkMsQUFEQSw4RUFBc0QsZ0JBQzFDOzs7O0lBakNsQiwrQkFPQztJQU5DLHFSQUFTLGVBQVEseUdBQXlCLGVBQVEscUdBQThCLElBQUksS0FBQztJQU9yRiwrQkFZQztJQVVDLEFBVEEsMkVBTUMsNkRBUUE7SUFFTCxBQURFLGlCQUFNLEVB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NEI7UUFDMUIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQztZQUMvRixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDO1FBQy9ELENBQUM7UUFDRCxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7a0hBekRVLGlCQUFpQjtvRUFBakIsaUJBQWlCOzs7Ozs7WUNBNUIsQUFQRiw4QkFNQyxnQkFDa0M7WUFDL0Isa0VBUUM7WUE0QkMsQUFERiwyQkFBSyxxQ0FRRjtZQUVDLGtFQU1DO1lBNkNULEFBREUsQUFERSxBQURFLGlCQUE4QixFQUMxQixFQUNGLEVBQ0Y7O1lBdEdKLHVHQUdFO1lBS0csZUFBMkI7WUFBM0IsZ0RBQTJCO1lBcUMxQixlQUE0QjtZQUM1QixBQURBLHFDQUE0QiwwREFDK0I7WUFGM0QsQUFEQSwwRUFBd0QsbUVBQ007WUFTcEMsY0FBZ0I7WUFBaEIsaURBQWdCOzs7aUZEaERyQyxpQkFBaUI7Y0FMN0IsU0FBUzsyQkFDRSxXQUFXOzBDQVVELEtBQUs7a0JBQXhCLFNBQVM7bUJBQUMsT0FBTzs7a0ZBTlAsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFJlbmRlcmVyMiwgVmlld0NoaWxkLCBpbnB1dCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInN1Yi10YWJsZVwiLFxuICB0ZW1wbGF0ZVVybDogXCJzdWItdGFibGUuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCJzdWItdGFibGUuY29tcG9uZW50LmNzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBTdWJUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHNlbGVjdGVkUGFnZSA9IHNpZ25hbDxudW1iZXI+KDEpO1xuICBwYWdlcyA9IHNpZ25hbDxBcnJheTxudW1iZXI+PihbXSk7XG5cbiAgY29uZmlnID0gaW5wdXQ8U3ViVGFibGVDb25maWcgfCBhbnk+KCk7XG4gIHRhYmxlRGF0YSA9IGlucHV0PEFycmF5PEFycmF5PGFueT4+PihbXSk7XG4gIEBWaWV3Q2hpbGQoXCJ0YWJsZVwiKSB0YWJsZTogRWxlbWVudFJlZiB8IGFueTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxuXG4gIG5nT25Jbml0KCkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWcoKTtcbiAgICBpZiAoIWNvbmZpZz8ucGFnaW5hdGlvbkNvbmZpZykgcmV0dXJuOyAgLy8g4oaQIE9ubHkgc2V0IGhlaWdodCBpZiBwYWdpbmF0aW9uIGV4aXN0cyAoc2FtZSBhcyBvbGQgY29kZSlcbiAgICBcbiAgICBjb25zdCByYXdIZWlnaHQgPSBjb25maWcuaGVpZ2h0O1xuICAgIFxuICAgIC8vIEhhbmRsZSBwZXJjZW50YWdlIHZhbHVlcyAtIHVzZSBjYWxjKCkgdG8gc3VidHJhY3QgNTZweFxuICAgIGlmICh0eXBlb2YgcmF3SGVpZ2h0ID09PSAnc3RyaW5nJyAmJiByYXdIZWlnaHQuaW5jbHVkZXMoJyUnKSkge1xuICAgICAgY29uc3QgY2FsY0hlaWdodCA9IGBjYWxjKCR7cmF3SGVpZ2h0fSAtIDU2cHgpYDtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50YWJsZS5uYXRpdmVFbGVtZW50LCBcImhlaWdodFwiLCBjYWxjSGVpZ2h0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSGFuZGxlIHBpeGVsIHZhbHVlcyAtIHN1YnRyYWN0IDU2cHggKHNhbWUgYXMgb2xkIGNvZGUpXG4gICAgICBjb25zdCByZXN1bHQgPSAocmF3SGVpZ2h0IGFzIGFueSkgLSA1NjtcbiAgICAgIGNvbnN0IGZpbmFsSGVpZ2h0ID0gcmVzdWx0ICsgXCJweFwiO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQsIFwiaGVpZ2h0XCIsIGZpbmFsSGVpZ2h0KTtcbiAgICB9XG4gIH1cblxuICAvLyBNYWluIGNvbnRhaW5lciByZWxhdGVkIGZ1bmN0aW9uc1xuICBnZXRDb250YWluZXJIZWlnaHQoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnKCkuaGVpZ2h0KSByZXR1cm4gdGhpcy5jb25maWcoKS5oZWlnaHQ7XG4gICAgZWxzZSByZXR1cm4gXCJcIjtcbiAgfVxuICBnZXRDb250YWluZXJXaWR0aCgpIHtcbiAgICBpZiAodGhpcy5jb25maWcoKS53aWR0aCkgcmV0dXJuIHRoaXMuY29uZmlnKCkud2lkdGg7XG4gICAgZWxzZSByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIC8vIENvbHVtbiBIZWFkZXJzIHJlbGF0ZWQgZnVuY3Rpb25zXG4gIGdldENvbEhlYWRlcnNSb3dIZWlnaHQoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnKCkuY29sSGVhZGVyc1Jvd0NvbmZpZyAmJiB0aGlzLmNvbmZpZygpLmNvbEhlYWRlcnNSb3dDb25maWcuaGVpZ2h0KSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWcoKS5jb2xIZWFkZXJzUm93Q29uZmlnLmhlaWdodDtcbiAgICB9XG4gICAgcmV0dXJuIFwiNDRweFwiO1xuICB9XG4gIGdldENvbEhlYWRlcnNSb3dCb3JkZXJUb3AoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnKCkuY29sSGVhZGVyc1Jvd0NvbmZpZyAmJiB0aGlzLmNvbmZpZygpLmNvbEhlYWRlcnNSb3dDb25maWcuc3R5bGU/LmJvcmRlclRvcCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnKCkuY29sSGVhZGVyc1Jvd0NvbmZpZy5zdHlsZT8uYm9yZGVyVG9wO1xuICAgIH1cbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuICBnZXRDb2xIZWFkZXJzUm93Qm9yZGVyQm90dG9tKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZygpLmNvbEhlYWRlcnNSb3dDb25maWcgJiYgdGhpcy5jb25maWcoKS5jb2xIZWFkZXJzUm93Q29uZmlnLnN0eWxlPy5ib3JkZXJCb3R0b20pIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZygpLmNvbEhlYWRlcnNSb3dDb25maWcuc3R5bGU/LmJvcmRlckJvdHRvbTtcbiAgICB9XG4gICAgcmV0dXJuIFwiMXB4IHNvbGlkICNFMEUwRTBcIjtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1YlRhYmxlQ29uZmlnIHtcbiAgaGVpZ2h0OiBzdHJpbmcgfCBcIjEwMCVcIjtcbiAgd2lkdGg6IHN0cmluZyB8IFwiMTAwJVwiO1xuICBkYXRhQ29udGFpbmVyTWF4SGVpZ2h0OiBzdHJpbmcgfCBcIjQwMHB4XCI7XG4gIHNob3dIZWFkZXI/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICByb3dDb25maWc6IFN1YlRhYmxlUm93Q29uZmlnIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiAgY29sSGVhZGVyQ29uZmlnPzogQXJyYXk8U3ViVGFibGVDb2xIZWFkZXJDb25maWc+O1xuICBjb2xDb25maWc6IEFycmF5PFN1YlRhYmxlQ29sQ29uZmlnPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdWJUYWJsZVJvd0NvbmZpZyB7XG4gIGhlaWdodD86IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw7XG4gIHN0eWxlPzoge307XG59XG5leHBvcnQgaW50ZXJmYWNlIFN1YlRhYmxlQ29sSGVhZGVyQ29uZmlnIHtcbiAgdHlwZTogXCJ0ZXh0XCIgfCBcIm51bWJlclwiIHwgXCJjdXN0b21cIjtcbiAgZGF0YTogYW55O1xuICBjb21wb25lbnRSZWY/OiBhbnk7XG4gIHN0eWxlPzoge307XG4gIGFjdGlvbj86IGFueTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU3ViVGFibGVDb2xDb25maWcge1xuICB0eXBlOiBcInRleHRcIiB8IFwibnVtYmVyXCIgfCBcImN1c3RvbVwiO1xuICBjb21wb25lbnRSZWY/OiBhbnk7XG4gIHN0eWxlPzoge307XG4gIGFjdGlvbj86IGFueTtcbn1cbiIsIjxkaXZcbiAgaWQ9XCJtYWluLWNvbnRhaW5lclwiXG4gIFtuZ1N0eWxlXT1cIntcbiAgICBoZWlnaHQ6IGdldENvbnRhaW5lckhlaWdodCgpLFxuICAgIHdpZHRoOiBnZXRDb250YWluZXJXaWR0aCgpXG4gIH1cIlxuPlxuICA8ZGl2IGlkPVwidGFibGUtY29udGFpbmVyXCIgI3RhYmxlPlxuICAgIDxkaXZcbiAgICAgIGlkPVwiY29sLWhlYWRlcnMtY29udGFpbmVyXCJcbiAgICAgICpuZ0lmPVwiISFjb25maWcoKS5zaG93SGVhZGVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgaGVpZ2h0OiBnZXRDb2xIZWFkZXJzUm93SGVpZ2h0KCksXG4gICAgICAgICdib3JkZXItdG9wJzogZ2V0Q29sSGVhZGVyc1Jvd0JvcmRlclRvcCgpLFxuICAgICAgICAnYm9yZGVyLWJvdHRvbSc6IGdldENvbEhlYWRlcnNSb3dCb3JkZXJCb3R0b20oKVxuICAgICAgfVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNvbC1oZWFkZXJcIlxuICAgICAgICAoY2xpY2spPVwiY29sSGVhZGVyPy5hY3Rpb24gPyBjb2xIZWFkZXI/LmFjdGlvbihjb2xIZWFkZXIpIDogbnVsbFwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb2xIZWFkZXIgb2YgY29uZmlnKCk/LmNvbEhlYWRlckNvbmZpZ1wiXG4gICAgICAgIFtzdHlsZV09XCJjb2xIZWFkZXI/LnN0eWxlXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgIHdpZHRoOiBjb2xIZWFkZXI/LnN0eWxlPy53aWR0aCB8fCAnJyxcbiAgICAgICAgICBjdXJzb3I6IGNvbEhlYWRlci5hY3Rpb24gPyAncG9pbnRlcicgOiAnZGVmYXVsdCcsXG4gICAgICAgICAgJ2p1c3RpZnktY29udGVudCc6IGNvbEhlYWRlcj8uc3R5bGU/Lmp1c3RpZnlDb250ZW50XG4gICAgICAgICAgICA/IGNvbEhlYWRlcj8uc3R5bGU/Lmp1c3RpZnlDb250ZW50XG4gICAgICAgICAgICA6IGNvbEhlYWRlci50eXBlID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgPyAnZmxleC1lbmQnXG4gICAgICAgICAgICA6ICdzcGFjZS1iZXR3ZWVuJ1xuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPHAgKm5nSWY9XCJjb2xIZWFkZXI/LnR5cGUgIT09ICdjdXN0b20nXCIgY2xhc3M9XCJjb2wtaGVhZGVyLXRleHRcIj5cbiAgICAgICAgICB7eyBjb2xIZWFkZXI/LmRhdGEgfHwgXCIgXCIgfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAqbmdJZj1cImNvbEhlYWRlcj8udHlwZSA9PT0gJ2N1c3RvbSdcIlxuICAgICAgICAgIGN1c3RvbVRhYmxlQ2VsbFxuICAgICAgICAgIFtjdXN0b21Db21wb25lbnRdPVwiY29sSGVhZGVyPy5jb21wb25lbnRSZWZcIlxuICAgICAgICAgIFtkYXRhXT1cImNvbEhlYWRlci5kYXRhXCJcbiAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFxuICAgICAgICBbbWluQnVmZmVyUHhdPVwiY29uZmlnKCkuZGF0YUNvbnRhaW5lck1heEhlaWdodCB8fCAnNDAwJ1wiXG4gICAgICAgIFttYXhCdWZmZXJQeF09XCJjb25maWcoKS5kYXRhQ29udGFpbmVyTWF4SGVpZ2h0ICsgMjAwIHx8ICc2MDAnXCJcbiAgICAgICAgW3N0eWxlLm92ZXJmbG93XT1cIidvdmVybGF5J1wiXG4gICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiY29uZmlnKCkuZGF0YUNvbnRhaW5lck1heEhlaWdodCB8fCAnNDAwcHgnXCJcbiAgICAgICAgaXRlbVNpemU9XCI1MFwiXG4gICAgICAgIGlkPVwiZGF0YS1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICBcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwicm93LXdyYXBwZXJcIlxuICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IHJvdyBvZiB0YWJsZURhdGEoKTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpICUgMiA9PT0gMCA/ICcjRkFGQUZBJyA6IG51bGwsXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidC1yb3dcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpZygpPy5jb2xDb25maWdbaV0/LmFjdGlvbiA/IGNvbmZpZygpPy5jb2xDb25maWdbaV0/LmFjdGlvbihjb2wpIDogbnVsbFwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2Ygcm93OyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgIHdpZHRoOiBjb25maWcoKT8uY29sQ29uZmlnW2ldPy5zdHlsZT8ud2lkdGggfHwgY29uZmlnKCk/LmNvbEhlYWRlckNvbmZpZ1tpXT8uc3R5bGU/LndpZHRoIHx8ICcnXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBjbGFzcz1cInQtY29sLWNvbnRhaW5lclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtY29sXCJcbiAgICAgICAgICAgICAgICBbc3R5bGVdPVwiY29uZmlnKCkuY29sQ29uZmlnW2ldPy5zdHlsZVwiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgIGN1cnNvcjogY29uZmlnKCkuY29sQ29uZmlnW2ldLmFjdGlvbiA/ICdwb2ludGVyJyA6ICdkZWZhdWx0JyxcbiAgICAgICAgICAgICAgICAgICdqdXN0aWZ5LWNvbnRlbnQnOiBjb25maWcoKS5jb2xDb25maWdbaV0/LnN0eWxlPy5qdXN0aWZ5Q29udGVudFxuICAgICAgICAgICAgICAgICAgICA/IGNvbmZpZygpLmNvbENvbmZpZ1tpXT8uc3R5bGU/Lmp1c3RpZnlDb250ZW50XG4gICAgICAgICAgICAgICAgICAgIDogY29uZmlnKCkuY29sQ29uZmlnW2ldLnR5cGUgPT09ICdudW1iZXInXG4gICAgICAgICAgICAgICAgICAgID8gJ2ZsZXgtZW5kJ1xuICAgICAgICAgICAgICAgICAgICA6ICdzcGFjZS1iZXR3ZWVuJ1xuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnKCkuY29sQ29uZmlnW2ldLnR5cGUgIT09ICdjdXN0b20nXCJcbiAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IGNvbmZpZygpPy5jb2xDb25maWdbaV0/LnN0eWxlPy5jb2xvciA/IGNvbmZpZygpPy5jb2xDb25maWdbaV0/LnN0eWxlPy5jb2xvciA6ICcnXG4gICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1jb2wtdGV4dFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgY29sIH19XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb25maWcoKS5jb2xDb25maWdbaV0udHlwZSA9PT0gJ2N1c3RvbSdcIlxuICAgICAgICAgICAgICAgICAgW2N1c3RvbUNvbXBvbmVudF09XCJjb25maWcoKS5jb2xDb25maWdbaV0uY29tcG9uZW50UmVmXCJcbiAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImNvbFwiXG4gICAgICAgICAgICAgICAgICBjdXN0b21UYWJsZUNlbGxcbiAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==