mmhglobal-dynamicform 2.3.2 → 2.5.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 (102) hide show
  1. package/README.md +7 -0
  2. package/esm2020/lib/components/buttonfieldbase.component.mjs +4 -4
  3. package/esm2020/lib/components/containerfieldbase.component.mjs +4 -4
  4. package/esm2020/lib/components/datalistingfieldbase.component.mjs +4 -4
  5. package/esm2020/lib/components/fieldbase.component.mjs +6 -6
  6. package/esm2020/lib/components/inputfieldbase.component.mjs +4 -4
  7. package/esm2020/lib/directives/elementcontainer.directive.mjs +4 -4
  8. package/esm2020/lib/directives/fieldelement.directive.mjs +4 -4
  9. package/esm2020/lib/directives/scrollbar.theme.directive.mjs +4 -4
  10. package/esm2020/lib/embed-components/input-field-addons/input-field-addons.component.mjs +8 -7
  11. package/esm2020/lib/embed-components/page-loader/page-loader.component.mjs +4 -4
  12. package/esm2020/lib/embed-components/processing-record-loader/processing-record-loader.component.mjs +4 -4
  13. package/esm2020/lib/input-error-message/input-error-message.component.mjs +9 -8
  14. package/esm2020/lib/kcard/kcard.component.mjs +17 -15
  15. package/esm2020/lib/mmhglobal-dynamicform.module.mjs +5 -5
  16. package/esm2020/lib/pipe/htmlSanitize.pipe.mjs +4 -4
  17. package/esm2020/lib/services/component-error-handler.service.mjs +4 -4
  18. package/esm2020/lib/services/main.service.mjs +4 -4
  19. package/esm2020/lib/services/zcomponent.debug.service.mjs +4 -4
  20. package/esm2020/lib/services/zcomponent.service.mjs +4 -4
  21. package/esm2020/lib/sfquerybuilder/sfquerybuilder.component.mjs +4 -4
  22. package/esm2020/lib/uiactionbutton/uiactionbutton.component.mjs +5 -5
  23. package/esm2020/lib/uiappmenucontent/uiappmenucontent.component.mjs +4 -4
  24. package/esm2020/lib/uibulletin/uibulletin.component.mjs +4 -4
  25. package/esm2020/lib/uicontainer/uicontainer.component.mjs +4 -4
  26. package/esm2020/lib/uicontent/uicontent.component.mjs +4 -4
  27. package/esm2020/lib/uiheader/uiheader.component.mjs +4 -4
  28. package/esm2020/lib/uimenubutton/uimenubutton.component.mjs +5 -5
  29. package/esm2020/lib/uimenucontent/uimenucontent.component.mjs +4 -4
  30. package/esm2020/lib/uipage/uipage.component.mjs +4 -4
  31. package/esm2020/lib/uivalidationmessage/uivalidationmessage.component.mjs +4 -4
  32. package/esm2020/lib/zbullet/zbullet.component.mjs +4 -4
  33. package/esm2020/lib/zbuttons/zbuttons.component.mjs +8 -7
  34. package/esm2020/lib/zcard/zcard.component.mjs +4 -4
  35. package/esm2020/lib/zchart/zchart.component.mjs +4 -4
  36. package/esm2020/lib/zcheckbox/zcheckbox.component.mjs +4 -4
  37. package/esm2020/lib/zchip/zchip.component.mjs +4 -4
  38. package/esm2020/lib/zcodeeditor/zcodeeditor.component.mjs +4 -4
  39. package/esm2020/lib/zcodeeditor/zcodeeditor.pipe.mjs +4 -4
  40. package/esm2020/lib/zdaterange/zdaterange.component.mjs +4 -4
  41. package/esm2020/lib/zdatetime/dateIonicFormatParser.pipe.mjs +4 -4
  42. package/esm2020/lib/zdatetime/dateIonicMinMaxDate.pipe.mjs +4 -4
  43. package/esm2020/lib/zdatetime/dateKendoFormatParser.pipe.mjs +4 -4
  44. package/esm2020/lib/zdatetime/dateParser.pipe.mjs +4 -4
  45. package/esm2020/lib/zdatetime/zdatetime.component.mjs +4 -4
  46. package/esm2020/lib/zdiv/zdiv.component.mjs +4 -4
  47. package/esm2020/lib/zdiv/zdiv.pipe.mjs +4 -4
  48. package/esm2020/lib/zform/zform.component.mjs +4 -4
  49. package/esm2020/lib/zformcontrol/zformcontrol.component.mjs +4 -4
  50. package/esm2020/lib/zgauge/zgauge.component.mjs +4 -4
  51. package/esm2020/lib/zgrid/container/zgrid-container.component.mjs +4 -4
  52. package/esm2020/lib/zgrid/date-range-cell-filter.component.mjs +4 -4
  53. package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +4 -4
  54. package/esm2020/lib/zgrid/zgrid.component.mjs +17 -10
  55. package/esm2020/lib/zgrid/zgrid.popup.anchor-target.directive.mjs +4 -4
  56. package/esm2020/lib/zimg/zimg.component.mjs +4 -4
  57. package/esm2020/lib/zinput-container/zinput-container.component.mjs +4 -4
  58. package/esm2020/lib/zinput-container/zinput-container.pipe.mjs +4 -4
  59. package/esm2020/lib/zkcard/zkcard.component.mjs +12 -11
  60. package/esm2020/lib/zlabel/zlabel.component.mjs +15 -13
  61. package/esm2020/lib/zmfb/zmfb.component.mjs +4 -4
  62. package/esm2020/lib/zmodal/zmodal-mobile.component.mjs +4 -4
  63. package/esm2020/lib/zmodal/zmodal.component.mjs +4 -4
  64. package/esm2020/lib/znumeric/znumeric.component.mjs +4 -4
  65. package/esm2020/lib/znumeric/znumeric.component.pipe.mjs +4 -4
  66. package/esm2020/lib/zpostselectinput/zpostselectinput.component.mjs +4 -4
  67. package/esm2020/lib/zprogressbar/zprogressbar.component.mjs +4 -4
  68. package/esm2020/lib/zquerybuilder/zquerybuilder.component.mjs +4 -4
  69. package/esm2020/lib/zreport/zreport.component.mjs +9 -8
  70. package/esm2020/lib/zscheduler/zscheduler.component.mjs +4 -4
  71. package/esm2020/lib/zscheduler/zscheduler.toolbar.component.mjs +4 -4
  72. package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +4 -4
  73. package/esm2020/lib/zselectmultiple/zselectmultiple.directive.mjs +4 -4
  74. package/esm2020/lib/zselectmultiple/zselectmultiple.pipe.mjs +4 -4
  75. package/esm2020/lib/ztab/ztab.component.mjs +8 -7
  76. package/esm2020/lib/ztab/ztab.pipe.mjs +4 -4
  77. package/esm2020/lib/ztext/ztext.component.mjs +4 -4
  78. package/esm2020/lib/ztextarea/ztextarea.component.mjs +4 -4
  79. package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +4 -4
  80. package/esm2020/lib/ztree/ztree.component.mjs +4 -4
  81. package/esm2020/lib/ztreelist/ztreelist.component.mjs +4 -4
  82. package/esm2020/lib/ztrendcard/ztrendcard.component.mjs +4 -4
  83. package/esm2020/lib/zudf/zudf.component.mjs +5 -5
  84. package/esm2020/lib/zunknown/zunknown.component.mjs +4 -4
  85. package/esm2020/lib/zupload/zupload.component.mjs +4 -4
  86. package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +9 -7
  87. package/fesm2015/mmhglobal-dynamicform.mjs +359 -342
  88. package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
  89. package/fesm2020/mmhglobal-dynamicform.mjs +359 -342
  90. package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
  91. package/lib/components/fieldbase.component.d.ts +2 -2
  92. package/lib/embed-components/input-field-addons/input-field-addons.component.d.ts +3 -2
  93. package/lib/input-error-message/input-error-message.component.d.ts +3 -2
  94. package/lib/kcard/kcard.component.d.ts +3 -2
  95. package/lib/zbuttons/zbuttons.component.d.ts +3 -2
  96. package/lib/zgrid/zgrid.component.d.ts +4 -2
  97. package/lib/zkcard/zkcard.component.d.ts +4 -3
  98. package/lib/zlabel/zlabel.component.d.ts +3 -2
  99. package/lib/zreport/zreport.component.d.ts +4 -3
  100. package/lib/ztab/ztab.component.d.ts +3 -2
  101. package/lib/zworkflowbuttons/zworkflowbuttons.component.d.ts +4 -2
  102. package/package.json +1 -1
@@ -50,10 +50,10 @@ export class ZprogressbarComponent extends FieldBase {
50
50
  });
51
51
  }
52
52
  }
53
- ZprogressbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ZprogressbarComponent, deps: [{ token: i1.ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
54
- ZprogressbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ZprogressbarComponent, selector: "app-zprogressbar", usesInheritance: true, ngImport: i0, template: "<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [style]=\"componentProperties.style.style\" class=\"e1tag-style\">\r\n <div class=\"top-title e1tag-style1\" [style]=\"componentProperties.style.style1\" *ngIf=\"data.Label\">\r\n {{data.Label}}\r\n </div>\r\n <kendo-progressbar [min]=\"minValue\" [max]=\"maxValue\" [indeterminate]=\"options.indeterminate\" [value]=\"value\" class=\"e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\" [progressCssStyle]=\"options.progressStyles\"\r\n [emptyCssStyle]=\"options.emptyStyles\" [label]=\"options.label\" [animation]=\"options.animation\"></kendo-progressbar>\r\n</div>\r\n", styles: [""], components: [{ type: i2.ProgressBarComponent, selector: "kendo-progressbar", inputs: ["label", "progressCssStyle", "progressCssClass", "emptyCssStyle", "emptyCssClass", "animation"], outputs: ["animationEnd"], exportAs: ["kendoProgressBar"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
55
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ZprogressbarComponent, decorators: [{
53
+ ZprogressbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZprogressbarComponent, deps: [{ token: i1.ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
54
+ ZprogressbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZprogressbarComponent, selector: "app-zprogressbar", usesInheritance: true, ngImport: i0, template: "<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [style]=\"componentProperties.style.style\" class=\"e1tag-style\">\r\n <div class=\"top-title e1tag-style1\" [style]=\"componentProperties.style.style1\" *ngIf=\"data.Label\">\r\n {{data.Label}}\r\n </div>\r\n <kendo-progressbar [min]=\"minValue\" [max]=\"maxValue\" [indeterminate]=\"options.indeterminate\" [value]=\"value\" class=\"e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\" [progressCssStyle]=\"options.progressStyles\"\r\n [emptyCssStyle]=\"options.emptyStyles\" [label]=\"options.label\" [animation]=\"options.animation\"></kendo-progressbar>\r\n</div>\r\n", styles: [""], components: [{ type: i2.ProgressBarComponent, selector: "kendo-progressbar", inputs: ["label", "progressCssStyle", "progressCssClass", "emptyCssStyle", "emptyCssClass", "animation"], outputs: ["animationEnd"], exportAs: ["kendoProgressBar"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZprogressbarComponent, decorators: [{
56
56
  type: Component,
57
57
  args: [{ selector: 'app-zprogressbar', template: "<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [style]=\"componentProperties.style.style\" class=\"e1tag-style\">\r\n <div class=\"top-title e1tag-style1\" [style]=\"componentProperties.style.style1\" *ngIf=\"data.Label\">\r\n {{data.Label}}\r\n </div>\r\n <kendo-progressbar [min]=\"minValue\" [max]=\"maxValue\" [indeterminate]=\"options.indeterminate\" [value]=\"value\" class=\"e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\" [progressCssStyle]=\"options.progressStyles\"\r\n [emptyCssStyle]=\"options.emptyStyles\" [label]=\"options.label\" [animation]=\"options.animation\"></kendo-progressbar>\r\n</div>\r\n", styles: [""] }]
58
58
  }], ctorParameters: function () { return [{ type: i1.ZComponentService }]; } });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienByb2dyZXNzYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pwcm9ncmVzc2Jhci96cHJvZ3Jlc3NiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenByb2dyZXNzYmFyL3pwcm9ncmVzc2Jhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUdsRCw2QkFBNkI7QUFFN0IsOEJBQThCO0FBRTlCLDJDQUEyQztBQUMzQyxPQUFPLEVBQWMsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7O0FBUzlELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxTQUFTO0lBc0JsRCxZQUFZLFdBQThCO1FBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBckJ4RCxjQUFTLEdBQXlCO1lBQ3hDLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztRQUVNLFVBQUssR0FBa0I7WUFDN0IsT0FBTyxFQUFFLElBQUk7WUFDYixNQUFNLEVBQUUsU0FBUztZQUNqQixRQUFRLEVBQUUsT0FBTztTQUNsQixDQUFDO1FBR0ssYUFBUSxHQUFHLENBQUMsQ0FBQztRQUNiLGFBQVEsR0FBRyxHQUFHLENBQUM7UUFDZixZQUFPLEdBQUc7WUFDZixhQUFhLEVBQUUsS0FBSztZQUNwQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQUM7SUFFK0QsQ0FBQztJQUVsRSxRQUFRO1FBQ04sS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFFbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7WUFFcEQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDckIsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzlDLElBQUksVUFBVSxLQUFLLFFBQVEsRUFBRTtvQkFDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQ2hEO3FCQUFNLElBQUksVUFBVSxLQUFLLFFBQVEsRUFBRTtvQkFDbEMsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNyRixJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxRQUFRLEVBQUU7d0JBQ3JDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztxQkFDMUM7aUJBQ0Y7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7bUhBM0NVLHFCQUFxQjt1R0FBckIscUJBQXFCLCtFQ25CbEMsaXVCQVVBOzRGRFNhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTGFiZWxTZXR0aW5ncywgUHJvZ3Jlc3NCYXJBbmltYXRpb24gfSBmcm9tIFwiQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItcHJvZ3Jlc3NiYXJcIjtcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciB9IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcbmltcG9ydCB7IEZpZWxkQmFzZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL2ZpZWxkYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlXCI7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtenByb2dyZXNzYmFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4venByb2dyZXNzYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96cHJvZ3Jlc3NiYXIuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFpwcm9ncmVzc2JhckNvbXBvbmVudCBleHRlbmRzIEZpZWxkQmFzZSBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSBhbmltYXRpb246IFByb2dyZXNzQmFyQW5pbWF0aW9uID0ge1xyXG4gICAgZHVyYXRpb246IDEwMDAsXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBsYWJlbDogTGFiZWxTZXR0aW5ncyA9IHtcclxuICAgIHZpc2libGU6IHRydWUsXHJcbiAgICBmb3JtYXQ6IFwicGVyY2VudFwiLFxyXG4gICAgcG9zaXRpb246IFwic3RhcnRcIixcclxuICB9O1xyXG5cclxuICBwdWJsaWMgdmFsdWU7XHJcbiAgcHVibGljIG1pblZhbHVlID0gMDtcclxuICBwdWJsaWMgbWF4VmFsdWUgPSAxMDA7XHJcbiAgcHVibGljIG9wdGlvbnMgPSB7XHJcbiAgICBpbmRldGVybWluYXRlOiBmYWxzZSxcclxuICAgIGFuaW1hdGlvbjogdGhpcy5hbmltYXRpb24sXHJcbiAgICBsYWJlbDogdGhpcy5sYWJlbCxcclxuICAgIHByb2dyZXNzU3R5bGVzOiBudWxsLFxyXG4gICAgZW1wdHlTdHlsZXM6IG51bGwsXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoY29tcFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlKSB7IHN1cGVyKGNvbXBTZXJ2aWNlKSB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgc3VwZXIuaW5pdENvbXBvbmVudCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcblxyXG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5ncm91cC56TW9kZWxbdGhpcy5kYXRhLlZhbHVlXTtcclxuICAgICAgdGhpcy5taW5WYWx1ZSA9IHRoaXMuZGF0YS5NaW5WYWx1ZSB8fCB0aGlzLm1pblZhbHVlO1xyXG4gICAgICB0aGlzLm1heFZhbHVlID0gdGhpcy5kYXRhLk1heFZhbHVlIHx8IHRoaXMubWF4VmFsdWU7XHJcblxyXG4gICAgICBpZiAodGhpcy5kYXRhLk9wdGlvbnMpIHtcclxuICAgICAgICBjb25zdCBvcHRpb25UeXBlID0gdHlwZW9mICh0aGlzLmRhdGEuT3B0aW9ucyk7XHJcbiAgICAgICAgaWYgKG9wdGlvblR5cGUgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMub3B0aW9ucywgdGhpcy5kYXRhLk9wdGlvbnMpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAob3B0aW9uVHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIGNvbnN0IG9wdGlvblZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIHRoaXMuZGF0YS5PcHRpb25zKTtcclxuICAgICAgICAgIGlmICh0eXBlb2YgKG9wdGlvblZhbHVlKSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm9wdGlvbnMsIG9wdGlvblZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgKm5nSWY9XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSlcIlxyXG4gIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlXCIgY2xhc3M9XCJlMXRhZy1zdHlsZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ0b3AtdGl0bGUgZTF0YWctc3R5bGUxXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCIgKm5nSWY9XCJkYXRhLkxhYmVsXCI+XHJcbiAgICB7e2RhdGEuTGFiZWx9fVxyXG4gIDwvZGl2PlxyXG4gIDxrZW5kby1wcm9ncmVzc2JhciBbbWluXT1cIm1pblZhbHVlXCIgW21heF09XCJtYXhWYWx1ZVwiIFtpbmRldGVybWluYXRlXT1cIm9wdGlvbnMuaW5kZXRlcm1pbmF0ZVwiIFt2YWx1ZV09XCJ2YWx1ZVwiIGNsYXNzPVwiZTF0YWctc3R5bGUyXCJcclxuICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMlwiIFtwcm9ncmVzc0Nzc1N0eWxlXT1cIm9wdGlvbnMucHJvZ3Jlc3NTdHlsZXNcIlxyXG4gICAgW2VtcHR5Q3NzU3R5bGVdPVwib3B0aW9ucy5lbXB0eVN0eWxlc1wiIFtsYWJlbF09XCJvcHRpb25zLmxhYmVsXCIgW2FuaW1hdGlvbl09XCJvcHRpb25zLmFuaW1hdGlvblwiPjwva2VuZG8tcHJvZ3Jlc3NiYXI+XHJcbjwvZGl2PlxyXG4iXX0=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienByb2dyZXNzYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pwcm9ncmVzc2Jhci96cHJvZ3Jlc3NiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenByb2dyZXNzYmFyL3pwcm9ncmVzc2Jhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUdsRCw2QkFBNkI7QUFFN0IsOEJBQThCO0FBRTlCLDJDQUEyQztBQUMzQyxPQUFPLEVBQWMsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7O0FBUzlELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxTQUFTO0lBc0JsRCxZQUFZLFdBQThCO1FBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBckJ4RCxjQUFTLEdBQXlCO1lBQ3hDLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztRQUVNLFVBQUssR0FBa0I7WUFDN0IsT0FBTyxFQUFFLElBQUk7WUFDYixNQUFNLEVBQUUsU0FBUztZQUNqQixRQUFRLEVBQUUsT0FBTztTQUNsQixDQUFDO1FBR0ssYUFBUSxHQUFHLENBQUMsQ0FBQztRQUNiLGFBQVEsR0FBRyxHQUFHLENBQUM7UUFDZixZQUFPLEdBQUc7WUFDZixhQUFhLEVBQUUsS0FBSztZQUNwQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQUM7SUFFK0QsQ0FBQztJQUVsRSxRQUFRO1FBQ04sS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFFbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7WUFFcEQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDckIsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzlDLElBQUksVUFBVSxLQUFLLFFBQVEsRUFBRTtvQkFDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQ2hEO3FCQUFNLElBQUksVUFBVSxLQUFLLFFBQVEsRUFBRTtvQkFDbEMsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNyRixJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxRQUFRLEVBQUU7d0JBQ3JDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztxQkFDMUM7aUJBQ0Y7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7a0hBM0NVLHFCQUFxQjtzR0FBckIscUJBQXFCLCtFQ25CbEMsaXVCQVVBOzJGRFNhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTGFiZWxTZXR0aW5ncywgUHJvZ3Jlc3NCYXJBbmltYXRpb24gfSBmcm9tIFwiQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItcHJvZ3Jlc3NiYXJcIjtcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciB9IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcbmltcG9ydCB7IEZpZWxkQmFzZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL2ZpZWxkYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlXCI7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtenByb2dyZXNzYmFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4venByb2dyZXNzYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96cHJvZ3Jlc3NiYXIuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFpwcm9ncmVzc2JhckNvbXBvbmVudCBleHRlbmRzIEZpZWxkQmFzZSBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSBhbmltYXRpb246IFByb2dyZXNzQmFyQW5pbWF0aW9uID0ge1xyXG4gICAgZHVyYXRpb246IDEwMDAsXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBsYWJlbDogTGFiZWxTZXR0aW5ncyA9IHtcclxuICAgIHZpc2libGU6IHRydWUsXHJcbiAgICBmb3JtYXQ6IFwicGVyY2VudFwiLFxyXG4gICAgcG9zaXRpb246IFwic3RhcnRcIixcclxuICB9O1xyXG5cclxuICBwdWJsaWMgdmFsdWU7XHJcbiAgcHVibGljIG1pblZhbHVlID0gMDtcclxuICBwdWJsaWMgbWF4VmFsdWUgPSAxMDA7XHJcbiAgcHVibGljIG9wdGlvbnMgPSB7XHJcbiAgICBpbmRldGVybWluYXRlOiBmYWxzZSxcclxuICAgIGFuaW1hdGlvbjogdGhpcy5hbmltYXRpb24sXHJcbiAgICBsYWJlbDogdGhpcy5sYWJlbCxcclxuICAgIHByb2dyZXNzU3R5bGVzOiBudWxsLFxyXG4gICAgZW1wdHlTdHlsZXM6IG51bGwsXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoY29tcFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlKSB7IHN1cGVyKGNvbXBTZXJ2aWNlKSB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgc3VwZXIuaW5pdENvbXBvbmVudCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcblxyXG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5ncm91cC56TW9kZWxbdGhpcy5kYXRhLlZhbHVlXTtcclxuICAgICAgdGhpcy5taW5WYWx1ZSA9IHRoaXMuZGF0YS5NaW5WYWx1ZSB8fCB0aGlzLm1pblZhbHVlO1xyXG4gICAgICB0aGlzLm1heFZhbHVlID0gdGhpcy5kYXRhLk1heFZhbHVlIHx8IHRoaXMubWF4VmFsdWU7XHJcblxyXG4gICAgICBpZiAodGhpcy5kYXRhLk9wdGlvbnMpIHtcclxuICAgICAgICBjb25zdCBvcHRpb25UeXBlID0gdHlwZW9mICh0aGlzLmRhdGEuT3B0aW9ucyk7XHJcbiAgICAgICAgaWYgKG9wdGlvblR5cGUgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMub3B0aW9ucywgdGhpcy5kYXRhLk9wdGlvbnMpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAob3B0aW9uVHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIGNvbnN0IG9wdGlvblZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIHRoaXMuZGF0YS5PcHRpb25zKTtcclxuICAgICAgICAgIGlmICh0eXBlb2YgKG9wdGlvblZhbHVlKSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm9wdGlvbnMsIG9wdGlvblZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgKm5nSWY9XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSlcIlxyXG4gIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlXCIgY2xhc3M9XCJlMXRhZy1zdHlsZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ0b3AtdGl0bGUgZTF0YWctc3R5bGUxXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCIgKm5nSWY9XCJkYXRhLkxhYmVsXCI+XHJcbiAgICB7e2RhdGEuTGFiZWx9fVxyXG4gIDwvZGl2PlxyXG4gIDxrZW5kby1wcm9ncmVzc2JhciBbbWluXT1cIm1pblZhbHVlXCIgW21heF09XCJtYXhWYWx1ZVwiIFtpbmRldGVybWluYXRlXT1cIm9wdGlvbnMuaW5kZXRlcm1pbmF0ZVwiIFt2YWx1ZV09XCJ2YWx1ZVwiIGNsYXNzPVwiZTF0YWctc3R5bGUyXCJcclxuICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMlwiIFtwcm9ncmVzc0Nzc1N0eWxlXT1cIm9wdGlvbnMucHJvZ3Jlc3NTdHlsZXNcIlxyXG4gICAgW2VtcHR5Q3NzU3R5bGVdPVwib3B0aW9ucy5lbXB0eVN0eWxlc1wiIFtsYWJlbF09XCJvcHRpb25zLmxhYmVsXCIgW2FuaW1hdGlvbl09XCJvcHRpb25zLmFuaW1hdGlvblwiPjwva2VuZG8tcHJvZ3Jlc3NiYXI+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -174,9 +174,9 @@ export class ZquerybuilderComponent {
174
174
  }
175
175
  }
176
176
  }
177
- ZquerybuilderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ZquerybuilderComponent, deps: [{ token: i1.FieldService }, { token: i1.ResourceApiService }, { token: i1.WebApiService }], target: i0.ɵɵFactoryTarget.Component });
178
- ZquerybuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ZquerybuilderComponent, selector: "app-zquerybuilder", inputs: { classNames: "classNames", data: "data", group: "group", form: "form" }, viewQueries: [{ propertyName: "queryBuilder", first: true, predicate: QueryBuilderComponent, descendants: true }], ngImport: i0, template: "<ion-item *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <ion-label [attr.for]=\"data.Value\"\r\n *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\"\r\n [position]=\"data.LabelPosition ? data.LabelPosition : 'stacked'\">\r\n {{data.Label}}\r\n <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n color=\"danger\">*</ion-text>\r\n </ion-label>\r\n <div class=\"qbcontainer\">\r\n <query-builder [(ngModel)]='queryCtrl'\r\n [(config)]='currentConfig'\r\n [allowRuleset]='allowRuleset'\r\n [allowCollapse]='allowCollapse'\r\n [filters]='filters'\r\n [persistValueOnFieldChange]='persistValueOnFieldChange'>\r\n <!--AND OR Swtich-->\r\n <ng-container *querySwitchGroup=\"let ruleset; let onChange=onChange\">\r\n <kendo-dropdownlist [(ngModel)]=\"ruleset.condition\"\r\n (ngModelChange)=\"onChange($event, rule)\"\r\n [data]=\"conditionList\"\r\n [disabled]=\"isDisabled\"\r\n style=\"text-transform: uppercase;\">\r\n </kendo-dropdownlist>\r\n </ng-container>\r\n <!--Rule RuleSet Remove Rule Set Button-->\r\n <ng-container *queryButtonGroup=\"let ruleset; let addRule=addRule; let addRuleSet=addRuleSet; let removeRuleSet=removeRuleSet\">\r\n <!--Add Rule Button-->\r\n <ion-button fill=\"outline\"\r\n size=\"small\"\r\n strong=\"false\"\r\n (click)=\"addRule()\"\r\n [disabled]=\"isDisabled\"\r\n class=\"buttonadd\">\r\n <fa-icon [icon]=\"'plus'\" style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Add</span>\r\n </ion-button>\r\n <!--Add RuleSet Button-->\r\n <ion-button *ngIf=\"addRuleSet\"\r\n fill=\"outline\"\r\n size=\"small\"\r\n strong=\"false\"\r\n (click)=\"addRuleSet()\"\r\n [disabled]=\"isDisabled\"\r\n class=\"buttonadd\">\r\n <fa-icon [icon]=\"'plus'\" style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Add Rule Set</span>\r\n </ion-button>\r\n <!--Remove RuleSet Button-->\r\n <ion-button *ngIf=\"removeRuleSet\"\r\n fill=\"outline\"\r\n size=\"small\"\r\n strong=\"false\"\r\n (click)=\"removeRuleSet()\"\r\n [disabled]=\"isDisabled\"\r\n class=\"buttonremove\">\r\n <fa-icon [icon]=\"'times'\" style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Remove Rule Set</span>\r\n </ion-button>\r\n </ng-container>\r\n <!--Remove Rule Button-->\r\n <ng-container *queryRemoveButton=\"let rule; let removeRule=removeRule\">\r\n <ion-button fill=\"outline\"\r\n size=\"small\"\r\n strong=\"false\"\r\n (click)=\"removeRule(rule)\"\r\n [disabled]=\"isDisabled\"\r\n class=\"buttonremove\">\r\n <fa-icon [icon]=\"'minus'\"\r\n style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Remove Rule</span>\r\n </ion-button>\r\n </ng-container>\r\n <!--Name dropdown-->\r\n <ng-container *queryField=\"let rule; let fields=fields; let onChange=onChange; let getFields=getFields\">\r\n <kendo-dropdownlist [(ngModel)]=\"rule.field\"\r\n (ngModelChange)=\"onChange($event, rule)\"\r\n [data]=\"getFields(rule.entity)\"\r\n textField=\"name\"\r\n valueField=\"value\"\r\n [value]=\"value\"\r\n [valuePrimitive]=\"true\"\r\n [disabled]=\"isDisabled\"\r\n style=\"padding-right:10px;\">\r\n </kendo-dropdownlist>\r\n </ng-container>\r\n <!--Operator dropdown-->\r\n <ng-container *queryOperator=\"let rule; let operators=operators; let onChange=onChange\" style=\"padding:10px\">\r\n <kendo-dropdownlist [(ngModel)]=\"rule.operator\"\r\n (ngModelChange)=\"onChange($event, rule)\"\r\n [data]=\"getOperators(operators, rule)\"\r\n textField=\"name\"\r\n valueField=\"value\"\r\n [value]=\"value\"\r\n [valuePrimitive]=\"true\"\r\n [disabled]=\"isDisabled\"\r\n style=\"padding-right:10px;\">\r\n </kendo-dropdownlist>\r\n </ng-container>\r\n <!--Text Field-->\r\n <ng-container *queryInput=\"let rule; let field=field; type: 'string'; let onChange=onChange\">\r\n <kendo-textbox [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n [clearButton]=\"true\"\r\n [disabled]=\"isDisabled\"\r\n class=\"customTextbox\">\r\n </kendo-textbox>\r\n </ng-container>\r\n <!--TextArea Field-->\r\n <ng-container *queryInput=\"let rule; type: 'textarea'; let onChange=onChange\">\r\n <kendo-textarea [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n [rows]=\"5\"\r\n [cols]=\"40\"\r\n resizable=\"none\"\r\n [disabled]=\"isDisabled\">\r\n </kendo-textarea>\r\n </ng-container>\r\n <!--Number Field-->\r\n <ng-container *queryInput=\"let rule; let field=field; type: 'number'; let onChange=onChange\">\r\n <kendo-numerictextbox [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n [value]=\"value\"\r\n [decimals]=\"0\"\r\n [disabled]=\"isDisabled\">\r\n </kendo-numerictextbox>\r\n </ng-container>\r\n <!--Date Field-->\r\n <ng-container *queryInput=\"let rule; type: 'date'; let onChange=onChange\">\r\n <kendo-datepicker [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n calendarType=\"classic\"\r\n [value]=\"value\"\r\n [disabled]=\"isDisabled\">\r\n </kendo-datepicker>\r\n </ng-container>\r\n <!--Category Field-->\r\n <ng-container *queryInput=\"let rule; let options=options; type: 'category'; let onChange=onChange\">\r\n <kendo-dropdownlist [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n [data]=\"getOptionList(options, rule)\"\r\n textField=\"name\"\r\n valueField=\"value\"\r\n [value]=\"value\"\r\n [valuePrimitive]=\"true\"\r\n [disabled]=\"isDisabled\">\r\n </kendo-dropdownlist>\r\n </ng-container>\r\n <!--DropDown MultiSelect Field-->\r\n <ng-container *queryInput=\"let rule; let options=options; type: 'multiselect'; let onChange=onChange\">\r\n <kendo-multiselect [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n [data]=\"getOptionList(options, rule)\"\r\n textField=\"name\"\r\n valueField=\"value\"\r\n [value]=\"value\"\r\n [valuePrimitive]=\"true\"\r\n [autoClose]=\"false\"\r\n style=\"width:30%\"\r\n [disabled]=\"isDisabled\">\r\n </kendo-multiselect>\r\n </ng-container>\r\n <!--Boolean Field-->\r\n <ng-container *queryInput=\"let rule; type: 'boolean'; let onChange=onChange\">\r\n <input type=\"checkbox\"\r\n [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n class=\"customCheckBox\"\r\n [disabled]=\"isDisabled\"\r\n kendoCheckBox />\r\n </ng-container>\r\n </query-builder>\r\n <br>\r\n <div *ngIf=\"data.ShowQueryResult\">\r\n <div>\r\n <label>Query Result</label>\r\n </div>\r\n <textarea class=\"output\"\r\n resizable=\"none\"\r\n [rows]=\"10\"\r\n [cols]=\"40\">{{queryCtrl | json}}</textarea>\r\n <br>\r\n </div>\r\n <div style=\"width:100%\" slot=\"end\">\r\n <ion-button *ngIf=\"!isDisabled\"\r\n strong=\"false\"\r\n (click)=\"completeRule(true, null)\"\r\n class=\"buttonapply\">\r\n <fa-icon [icon]=\"'save'\" style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Apply</span>\r\n </ion-button>\r\n <ion-button *ngIf=\"isDisabled\"\r\n strong=\"false\"\r\n (click)=\"completeRule(false, null)\"\r\n class=\"buttonapply\">\r\n <fa-icon [icon]=\"'save'\" style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Undo Apply</span>\r\n </ion-button>\r\n </div>\r\n </div>\r\n</ion-item>\r\n", styles: [".qbcontainer{border-radius:5px;border:1px solid rgba(0,0,0,.08);padding:10px;margin:10px 0;width:100%}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}:host ::ng-deep query-builder .k-dropdown .k-dropdown-wrap,:host ::ng-deep query-builder .k-dropdowntree .k-dropdown-wrap{background-color:#fff}:host ::ng-deep query-builder .customTextbox{width:calc(100% - 440px);min-width:230px}:host ::ng-deep query-builder .customCheckBox{width:27px;height:27px}:host ::ng-deep query-builder .buttonadd{background-color:#479400;color:#fff;border-color:#479400}:host ::ng-deep query-builder .buttonremove{background-color:#f04141;color:#fff;border-color:#f04141;margin-top:0}.buttonapply{background-color:#5596e6;color:#fff;border-color:#5596e6}\n"], components: [{ type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i2.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { type: i3.QueryBuilderComponent, selector: "query-builder", inputs: ["data", "allowRuleset", "allowCollapse", "emptyMessage", "config", "persistValueOnFieldChange", "value", "disabled", "classNames", "operatorMap", "parentValue", "parentArrowIconTemplate", "parentInputTemplates", "parentOperatorTemplate", "parentFieldTemplate", "parentEntityTemplate", "parentSwitchGroupTemplate", "parentButtonGroupTemplate", "parentRemoveButtonTemplate", "parentEmptyWarningTemplate", "parentChangeCallback", "parentTouchedCallback"] }, { type: i4.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["iconClass", "loading", "data", "value", "textField", "valueField", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i5.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i6.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "errorIcon", "clearButtonIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { type: i6.TextAreaComponent, selector: "kendo-textarea", inputs: ["focusableId", "flow", "rows", "cols", "maxlength", "tabindex", "tabIndex", "resizable", "size", "rounded", "fillMode"], outputs: ["focus", "blur", "valueChange"], exportAs: ["kendoTextArea"] }, { type: i6.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur"], exportAs: ["kendoNumericTextBox"] }, { type: i7.DatePickerComponent, selector: "kendo-datepicker", inputs: ["cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }, { type: i4.MultiSelectComponent, selector: "kendo-multiselect", inputs: ["focusableId", "autoClose", "loading", "data", "value", "valueField", "textField", "tabindex", "tabIndex", "size", "rounded", "fillMode", "placeholder", "disabled", "itemDisabled", "checkboxes", "readonly", "filterable", "virtual", "popupSettings", "listHeight", "valuePrimitive", "clearButton", "tagMapper", "allowCustom", "valueNormalizer"], outputs: ["filterChange", "valueChange", "open", "opened", "close", "closed", "focus", "blur", "removeTag"], exportAs: ["kendoMultiSelect"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.QuerySwitchGroupDirective, selector: "[querySwitchGroup]" }, { type: i3.QueryButtonGroupDirective, selector: "[queryButtonGroup]" }, { type: i3.QueryRemoveButtonDirective, selector: "[queryRemoveButton]" }, { type: i3.QueryFieldDirective, selector: "[queryField]" }, { type: i3.QueryOperatorDirective, selector: "[queryOperator]" }, { type: i3.QueryInputDirective, selector: "[queryInput]", inputs: ["queryInputType"] }, { type: i9.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i6.CheckBoxDirective, selector: "input[kendoCheckBox]", inputs: ["size", "rounded"] }], pipes: { "json": i8.JsonPipe } });
179
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ZquerybuilderComponent, decorators: [{
177
+ ZquerybuilderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZquerybuilderComponent, deps: [{ token: i1.FieldService }, { token: i1.ResourceApiService }, { token: i1.WebApiService }], target: i0.ɵɵFactoryTarget.Component });
178
+ ZquerybuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZquerybuilderComponent, selector: "app-zquerybuilder", inputs: { classNames: "classNames", data: "data", group: "group", form: "form" }, viewQueries: [{ propertyName: "queryBuilder", first: true, predicate: QueryBuilderComponent, descendants: true }], ngImport: i0, template: "<ion-item *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <ion-label [attr.for]=\"data.Value\"\r\n *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\"\r\n [position]=\"data.LabelPosition ? data.LabelPosition : 'stacked'\">\r\n {{data.Label}}\r\n <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n color=\"danger\">*</ion-text>\r\n </ion-label>\r\n <div class=\"qbcontainer\">\r\n <query-builder [(ngModel)]='queryCtrl'\r\n [(config)]='currentConfig'\r\n [allowRuleset]='allowRuleset'\r\n [allowCollapse]='allowCollapse'\r\n [filters]='filters'\r\n [persistValueOnFieldChange]='persistValueOnFieldChange'>\r\n <!--AND OR Swtich-->\r\n <ng-container *querySwitchGroup=\"let ruleset; let onChange=onChange\">\r\n <kendo-dropdownlist [(ngModel)]=\"ruleset.condition\"\r\n (ngModelChange)=\"onChange($event, rule)\"\r\n [data]=\"conditionList\"\r\n [disabled]=\"isDisabled\"\r\n style=\"text-transform: uppercase;\">\r\n </kendo-dropdownlist>\r\n </ng-container>\r\n <!--Rule RuleSet Remove Rule Set Button-->\r\n <ng-container *queryButtonGroup=\"let ruleset; let addRule=addRule; let addRuleSet=addRuleSet; let removeRuleSet=removeRuleSet\">\r\n <!--Add Rule Button-->\r\n <ion-button fill=\"outline\"\r\n size=\"small\"\r\n strong=\"false\"\r\n (click)=\"addRule()\"\r\n [disabled]=\"isDisabled\"\r\n class=\"buttonadd\">\r\n <fa-icon [icon]=\"'plus'\" style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Add</span>\r\n </ion-button>\r\n <!--Add RuleSet Button-->\r\n <ion-button *ngIf=\"addRuleSet\"\r\n fill=\"outline\"\r\n size=\"small\"\r\n strong=\"false\"\r\n (click)=\"addRuleSet()\"\r\n [disabled]=\"isDisabled\"\r\n class=\"buttonadd\">\r\n <fa-icon [icon]=\"'plus'\" style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Add Rule Set</span>\r\n </ion-button>\r\n <!--Remove RuleSet Button-->\r\n <ion-button *ngIf=\"removeRuleSet\"\r\n fill=\"outline\"\r\n size=\"small\"\r\n strong=\"false\"\r\n (click)=\"removeRuleSet()\"\r\n [disabled]=\"isDisabled\"\r\n class=\"buttonremove\">\r\n <fa-icon [icon]=\"'times'\" style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Remove Rule Set</span>\r\n </ion-button>\r\n </ng-container>\r\n <!--Remove Rule Button-->\r\n <ng-container *queryRemoveButton=\"let rule; let removeRule=removeRule\">\r\n <ion-button fill=\"outline\"\r\n size=\"small\"\r\n strong=\"false\"\r\n (click)=\"removeRule(rule)\"\r\n [disabled]=\"isDisabled\"\r\n class=\"buttonremove\">\r\n <fa-icon [icon]=\"'minus'\"\r\n style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Remove Rule</span>\r\n </ion-button>\r\n </ng-container>\r\n <!--Name dropdown-->\r\n <ng-container *queryField=\"let rule; let fields=fields; let onChange=onChange; let getFields=getFields\">\r\n <kendo-dropdownlist [(ngModel)]=\"rule.field\"\r\n (ngModelChange)=\"onChange($event, rule)\"\r\n [data]=\"getFields(rule.entity)\"\r\n textField=\"name\"\r\n valueField=\"value\"\r\n [value]=\"value\"\r\n [valuePrimitive]=\"true\"\r\n [disabled]=\"isDisabled\"\r\n style=\"padding-right:10px;\">\r\n </kendo-dropdownlist>\r\n </ng-container>\r\n <!--Operator dropdown-->\r\n <ng-container *queryOperator=\"let rule; let operators=operators; let onChange=onChange\" style=\"padding:10px\">\r\n <kendo-dropdownlist [(ngModel)]=\"rule.operator\"\r\n (ngModelChange)=\"onChange($event, rule)\"\r\n [data]=\"getOperators(operators, rule)\"\r\n textField=\"name\"\r\n valueField=\"value\"\r\n [value]=\"value\"\r\n [valuePrimitive]=\"true\"\r\n [disabled]=\"isDisabled\"\r\n style=\"padding-right:10px;\">\r\n </kendo-dropdownlist>\r\n </ng-container>\r\n <!--Text Field-->\r\n <ng-container *queryInput=\"let rule; let field=field; type: 'string'; let onChange=onChange\">\r\n <kendo-textbox [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n [clearButton]=\"true\"\r\n [disabled]=\"isDisabled\"\r\n class=\"customTextbox\">\r\n </kendo-textbox>\r\n </ng-container>\r\n <!--TextArea Field-->\r\n <ng-container *queryInput=\"let rule; type: 'textarea'; let onChange=onChange\">\r\n <kendo-textarea [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n [rows]=\"5\"\r\n [cols]=\"40\"\r\n resizable=\"none\"\r\n [disabled]=\"isDisabled\">\r\n </kendo-textarea>\r\n </ng-container>\r\n <!--Number Field-->\r\n <ng-container *queryInput=\"let rule; let field=field; type: 'number'; let onChange=onChange\">\r\n <kendo-numerictextbox [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n [value]=\"value\"\r\n [decimals]=\"0\"\r\n [disabled]=\"isDisabled\">\r\n </kendo-numerictextbox>\r\n </ng-container>\r\n <!--Date Field-->\r\n <ng-container *queryInput=\"let rule; type: 'date'; let onChange=onChange\">\r\n <kendo-datepicker [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n calendarType=\"classic\"\r\n [value]=\"value\"\r\n [disabled]=\"isDisabled\">\r\n </kendo-datepicker>\r\n </ng-container>\r\n <!--Category Field-->\r\n <ng-container *queryInput=\"let rule; let options=options; type: 'category'; let onChange=onChange\">\r\n <kendo-dropdownlist [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n [data]=\"getOptionList(options, rule)\"\r\n textField=\"name\"\r\n valueField=\"value\"\r\n [value]=\"value\"\r\n [valuePrimitive]=\"true\"\r\n [disabled]=\"isDisabled\">\r\n </kendo-dropdownlist>\r\n </ng-container>\r\n <!--DropDown MultiSelect Field-->\r\n <ng-container *queryInput=\"let rule; let options=options; type: 'multiselect'; let onChange=onChange\">\r\n <kendo-multiselect [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n [data]=\"getOptionList(options, rule)\"\r\n textField=\"name\"\r\n valueField=\"value\"\r\n [value]=\"value\"\r\n [valuePrimitive]=\"true\"\r\n [autoClose]=\"false\"\r\n style=\"width:30%\"\r\n [disabled]=\"isDisabled\">\r\n </kendo-multiselect>\r\n </ng-container>\r\n <!--Boolean Field-->\r\n <ng-container *queryInput=\"let rule; type: 'boolean'; let onChange=onChange\">\r\n <input type=\"checkbox\"\r\n [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n class=\"customCheckBox\"\r\n [disabled]=\"isDisabled\"\r\n kendoCheckBox />\r\n </ng-container>\r\n </query-builder>\r\n <br>\r\n <div *ngIf=\"data.ShowQueryResult\">\r\n <div>\r\n <label>Query Result</label>\r\n </div>\r\n <textarea class=\"output\"\r\n resizable=\"none\"\r\n [rows]=\"10\"\r\n [cols]=\"40\">{{queryCtrl | json}}</textarea>\r\n <br>\r\n </div>\r\n <div style=\"width:100%\" slot=\"end\">\r\n <ion-button *ngIf=\"!isDisabled\"\r\n strong=\"false\"\r\n (click)=\"completeRule(true, null)\"\r\n class=\"buttonapply\">\r\n <fa-icon [icon]=\"'save'\" style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Apply</span>\r\n </ion-button>\r\n <ion-button *ngIf=\"isDisabled\"\r\n strong=\"false\"\r\n (click)=\"completeRule(false, null)\"\r\n class=\"buttonapply\">\r\n <fa-icon [icon]=\"'save'\" style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Undo Apply</span>\r\n </ion-button>\r\n </div>\r\n </div>\r\n</ion-item>\r\n", styles: [".qbcontainer{border-radius:5px;border:1px solid rgba(0,0,0,.08);padding:10px;margin:10px 0;width:100%}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}:host ::ng-deep query-builder .k-dropdown .k-dropdown-wrap,:host ::ng-deep query-builder .k-dropdowntree .k-dropdown-wrap{background-color:#fff}:host ::ng-deep query-builder .customTextbox{width:calc(100% - 440px);min-width:230px}:host ::ng-deep query-builder .customCheckBox{width:27px;height:27px}:host ::ng-deep query-builder .buttonadd{background-color:#479400;color:#fff;border-color:#479400}:host ::ng-deep query-builder .buttonremove{background-color:#f04141;color:#fff;border-color:#f04141;margin-top:0}.buttonapply{background-color:#5596e6;color:#fff;border-color:#5596e6}\n"], components: [{ type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i2.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { type: i3.QueryBuilderComponent, selector: "query-builder", inputs: ["data", "allowRuleset", "allowCollapse", "emptyMessage", "config", "persistValueOnFieldChange", "value", "disabled", "classNames", "operatorMap", "parentValue", "parentArrowIconTemplate", "parentInputTemplates", "parentOperatorTemplate", "parentFieldTemplate", "parentEntityTemplate", "parentSwitchGroupTemplate", "parentButtonGroupTemplate", "parentRemoveButtonTemplate", "parentEmptyWarningTemplate", "parentChangeCallback", "parentTouchedCallback"] }, { type: i4.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["iconClass", "loading", "data", "value", "textField", "valueField", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i5.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i6.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "errorIcon", "clearButtonIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { type: i6.TextAreaComponent, selector: "kendo-textarea", inputs: ["focusableId", "flow", "rows", "cols", "maxlength", "tabindex", "tabIndex", "resizable", "size", "rounded", "fillMode"], outputs: ["focus", "blur", "valueChange"], exportAs: ["kendoTextArea"] }, { type: i6.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur"], exportAs: ["kendoNumericTextBox"] }, { type: i7.DatePickerComponent, selector: "kendo-datepicker", inputs: ["cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }, { type: i4.MultiSelectComponent, selector: "kendo-multiselect", inputs: ["focusableId", "autoClose", "loading", "data", "value", "valueField", "textField", "tabindex", "tabIndex", "size", "rounded", "fillMode", "placeholder", "disabled", "itemDisabled", "checkboxes", "readonly", "filterable", "virtual", "popupSettings", "listHeight", "valuePrimitive", "clearButton", "tagMapper", "allowCustom", "valueNormalizer"], outputs: ["filterChange", "valueChange", "open", "opened", "close", "closed", "focus", "blur", "removeTag"], exportAs: ["kendoMultiSelect"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.QuerySwitchGroupDirective, selector: "[querySwitchGroup]" }, { type: i3.QueryButtonGroupDirective, selector: "[queryButtonGroup]" }, { type: i3.QueryRemoveButtonDirective, selector: "[queryRemoveButton]" }, { type: i3.QueryFieldDirective, selector: "[queryField]" }, { type: i3.QueryOperatorDirective, selector: "[queryOperator]" }, { type: i3.QueryInputDirective, selector: "[queryInput]", inputs: ["queryInputType"] }, { type: i9.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i6.CheckBoxDirective, selector: "input[kendoCheckBox]", inputs: ["size", "rounded"] }], pipes: { "json": i8.JsonPipe } });
179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZquerybuilderComponent, decorators: [{
180
180
  type: Component,
181
181
  args: [{ selector: 'app-zquerybuilder', template: "<ion-item *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <ion-label [attr.for]=\"data.Value\"\r\n *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\"\r\n [position]=\"data.LabelPosition ? data.LabelPosition : 'stacked'\">\r\n {{data.Label}}\r\n <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n color=\"danger\">*</ion-text>\r\n </ion-label>\r\n <div class=\"qbcontainer\">\r\n <query-builder [(ngModel)]='queryCtrl'\r\n [(config)]='currentConfig'\r\n [allowRuleset]='allowRuleset'\r\n [allowCollapse]='allowCollapse'\r\n [filters]='filters'\r\n [persistValueOnFieldChange]='persistValueOnFieldChange'>\r\n <!--AND OR Swtich-->\r\n <ng-container *querySwitchGroup=\"let ruleset; let onChange=onChange\">\r\n <kendo-dropdownlist [(ngModel)]=\"ruleset.condition\"\r\n (ngModelChange)=\"onChange($event, rule)\"\r\n [data]=\"conditionList\"\r\n [disabled]=\"isDisabled\"\r\n style=\"text-transform: uppercase;\">\r\n </kendo-dropdownlist>\r\n </ng-container>\r\n <!--Rule RuleSet Remove Rule Set Button-->\r\n <ng-container *queryButtonGroup=\"let ruleset; let addRule=addRule; let addRuleSet=addRuleSet; let removeRuleSet=removeRuleSet\">\r\n <!--Add Rule Button-->\r\n <ion-button fill=\"outline\"\r\n size=\"small\"\r\n strong=\"false\"\r\n (click)=\"addRule()\"\r\n [disabled]=\"isDisabled\"\r\n class=\"buttonadd\">\r\n <fa-icon [icon]=\"'plus'\" style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Add</span>\r\n </ion-button>\r\n <!--Add RuleSet Button-->\r\n <ion-button *ngIf=\"addRuleSet\"\r\n fill=\"outline\"\r\n size=\"small\"\r\n strong=\"false\"\r\n (click)=\"addRuleSet()\"\r\n [disabled]=\"isDisabled\"\r\n class=\"buttonadd\">\r\n <fa-icon [icon]=\"'plus'\" style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Add Rule Set</span>\r\n </ion-button>\r\n <!--Remove RuleSet Button-->\r\n <ion-button *ngIf=\"removeRuleSet\"\r\n fill=\"outline\"\r\n size=\"small\"\r\n strong=\"false\"\r\n (click)=\"removeRuleSet()\"\r\n [disabled]=\"isDisabled\"\r\n class=\"buttonremove\">\r\n <fa-icon [icon]=\"'times'\" style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Remove Rule Set</span>\r\n </ion-button>\r\n </ng-container>\r\n <!--Remove Rule Button-->\r\n <ng-container *queryRemoveButton=\"let rule; let removeRule=removeRule\">\r\n <ion-button fill=\"outline\"\r\n size=\"small\"\r\n strong=\"false\"\r\n (click)=\"removeRule(rule)\"\r\n [disabled]=\"isDisabled\"\r\n class=\"buttonremove\">\r\n <fa-icon [icon]=\"'minus'\"\r\n style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Remove Rule</span>\r\n </ion-button>\r\n </ng-container>\r\n <!--Name dropdown-->\r\n <ng-container *queryField=\"let rule; let fields=fields; let onChange=onChange; let getFields=getFields\">\r\n <kendo-dropdownlist [(ngModel)]=\"rule.field\"\r\n (ngModelChange)=\"onChange($event, rule)\"\r\n [data]=\"getFields(rule.entity)\"\r\n textField=\"name\"\r\n valueField=\"value\"\r\n [value]=\"value\"\r\n [valuePrimitive]=\"true\"\r\n [disabled]=\"isDisabled\"\r\n style=\"padding-right:10px;\">\r\n </kendo-dropdownlist>\r\n </ng-container>\r\n <!--Operator dropdown-->\r\n <ng-container *queryOperator=\"let rule; let operators=operators; let onChange=onChange\" style=\"padding:10px\">\r\n <kendo-dropdownlist [(ngModel)]=\"rule.operator\"\r\n (ngModelChange)=\"onChange($event, rule)\"\r\n [data]=\"getOperators(operators, rule)\"\r\n textField=\"name\"\r\n valueField=\"value\"\r\n [value]=\"value\"\r\n [valuePrimitive]=\"true\"\r\n [disabled]=\"isDisabled\"\r\n style=\"padding-right:10px;\">\r\n </kendo-dropdownlist>\r\n </ng-container>\r\n <!--Text Field-->\r\n <ng-container *queryInput=\"let rule; let field=field; type: 'string'; let onChange=onChange\">\r\n <kendo-textbox [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n [clearButton]=\"true\"\r\n [disabled]=\"isDisabled\"\r\n class=\"customTextbox\">\r\n </kendo-textbox>\r\n </ng-container>\r\n <!--TextArea Field-->\r\n <ng-container *queryInput=\"let rule; type: 'textarea'; let onChange=onChange\">\r\n <kendo-textarea [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n [rows]=\"5\"\r\n [cols]=\"40\"\r\n resizable=\"none\"\r\n [disabled]=\"isDisabled\">\r\n </kendo-textarea>\r\n </ng-container>\r\n <!--Number Field-->\r\n <ng-container *queryInput=\"let rule; let field=field; type: 'number'; let onChange=onChange\">\r\n <kendo-numerictextbox [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n [value]=\"value\"\r\n [decimals]=\"0\"\r\n [disabled]=\"isDisabled\">\r\n </kendo-numerictextbox>\r\n </ng-container>\r\n <!--Date Field-->\r\n <ng-container *queryInput=\"let rule; type: 'date'; let onChange=onChange\">\r\n <kendo-datepicker [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n calendarType=\"classic\"\r\n [value]=\"value\"\r\n [disabled]=\"isDisabled\">\r\n </kendo-datepicker>\r\n </ng-container>\r\n <!--Category Field-->\r\n <ng-container *queryInput=\"let rule; let options=options; type: 'category'; let onChange=onChange\">\r\n <kendo-dropdownlist [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n [data]=\"getOptionList(options, rule)\"\r\n textField=\"name\"\r\n valueField=\"value\"\r\n [value]=\"value\"\r\n [valuePrimitive]=\"true\"\r\n [disabled]=\"isDisabled\">\r\n </kendo-dropdownlist>\r\n </ng-container>\r\n <!--DropDown MultiSelect Field-->\r\n <ng-container *queryInput=\"let rule; let options=options; type: 'multiselect'; let onChange=onChange\">\r\n <kendo-multiselect [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n [data]=\"getOptionList(options, rule)\"\r\n textField=\"name\"\r\n valueField=\"value\"\r\n [value]=\"value\"\r\n [valuePrimitive]=\"true\"\r\n [autoClose]=\"false\"\r\n style=\"width:30%\"\r\n [disabled]=\"isDisabled\">\r\n </kendo-multiselect>\r\n </ng-container>\r\n <!--Boolean Field-->\r\n <ng-container *queryInput=\"let rule; type: 'boolean'; let onChange=onChange\">\r\n <input type=\"checkbox\"\r\n [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n class=\"customCheckBox\"\r\n [disabled]=\"isDisabled\"\r\n kendoCheckBox />\r\n </ng-container>\r\n </query-builder>\r\n <br>\r\n <div *ngIf=\"data.ShowQueryResult\">\r\n <div>\r\n <label>Query Result</label>\r\n </div>\r\n <textarea class=\"output\"\r\n resizable=\"none\"\r\n [rows]=\"10\"\r\n [cols]=\"40\">{{queryCtrl | json}}</textarea>\r\n <br>\r\n </div>\r\n <div style=\"width:100%\" slot=\"end\">\r\n <ion-button *ngIf=\"!isDisabled\"\r\n strong=\"false\"\r\n (click)=\"completeRule(true, null)\"\r\n class=\"buttonapply\">\r\n <fa-icon [icon]=\"'save'\" style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Apply</span>\r\n </ion-button>\r\n <ion-button *ngIf=\"isDisabled\"\r\n strong=\"false\"\r\n (click)=\"completeRule(false, null)\"\r\n class=\"buttonapply\">\r\n <fa-icon [icon]=\"'save'\" style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Undo Apply</span>\r\n </ion-button>\r\n </div>\r\n </div>\r\n</ion-item>\r\n", styles: [".qbcontainer{border-radius:5px;border:1px solid rgba(0,0,0,.08);padding:10px;margin:10px 0;width:100%}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}:host ::ng-deep query-builder .k-dropdown .k-dropdown-wrap,:host ::ng-deep query-builder .k-dropdowntree .k-dropdown-wrap{background-color:#fff}:host ::ng-deep query-builder .customTextbox{width:calc(100% - 440px);min-width:230px}:host ::ng-deep query-builder .customCheckBox{width:27px;height:27px}:host ::ng-deep query-builder .buttonadd{background-color:#479400;color:#fff;border-color:#479400}:host ::ng-deep query-builder .buttonremove{background-color:#f04141;color:#fff;border-color:#f04141;margin-top:0}.buttonapply{background-color:#5596e6;color:#fff;border-color:#5596e6}\n"] }]
182
182
  }], ctorParameters: function () { return [{ type: i1.FieldService }, { type: i1.ResourceApiService }, { type: i1.WebApiService }]; }, propDecorators: { queryBuilder: [{
@@ -207,4 +207,4 @@ export function toQueryRule(queryBuilderModel) {
207
207
  }
208
208
  return rule;
209
209
  }
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienF1ZXJ5YnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96cXVlcnlidWlsZGVyL3pxdWVyeWJ1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenF1ZXJ5YnVpbGRlci96cXVlcnlidWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHcEUsNkJBQTZCO0FBRTdCLDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsR0FBRyxFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBOEMscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRywyQ0FBMkM7QUFDM0MsT0FBTyxFQUNTLGdCQUFnQixFQUFFLG9CQUFvQixFQUNoQyx3QkFBd0IsRUFDN0MsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7QUFTekIsTUFBTSxPQUFPLHNCQUFzQjtJQXlCakMsWUFDVSxZQUEwQixFQUMxQixrQkFBc0MsRUFDdEMsYUFBNEI7UUFGNUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXJCdEMsMkJBQTJCO1FBQzNCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFFTix3QkFBbUIsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFFakQsa0JBQWEsR0FBdUI7WUFDekMsTUFBTSxFQUFFLEVBQUU7WUFDVixrQkFBa0IsRUFBRSxJQUFJO1NBQ3pCLENBQUM7UUFDSyxpQkFBWSxHQUFZLElB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c0JBQVosS0FBSzs7QUF3TlIsTUFBTSxVQUFVLFdBQVcsQ0FBQyxpQkFBc0I7SUFDaEQsSUFBSSxJQUFJLEdBQWMsRUFBRSxDQUFDO0lBQ3pCLElBQUksaUJBQWlCLENBQUMsU0FBUyxFQUFFO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDO1FBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQy9EO1NBQU07UUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztRQUMzQyxJQUFJLENBQUMsS0FBSyxHQUFHLGlCQUFpQixDQUFDLEtBQUssWUFBWSxLQUFLO1lBQ25ELENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsS0FBSztZQUNqRyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDdkc7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFF1ZXJ5QnVpbGRlckNvbmZpZywgUXVlcnlCdWlsZGVyQ2xhc3NOYW1lcywgUXVlcnlCdWlsZGVyQ29tcG9uZW50IH0gZnJvbSAnYW5ndWxhcjItcXVlcnktYnVpbGRlcic7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7XHJcbiAgRmllbGRTZXJ2aWNlLCBaQ29tcG9uZW50SGVscGVyLCBaQ29tcG9uZW50UHJvcGVydGllcywgWkZpZWxkLCBaR3JvdXAsXHJcbiAgRm9udEF3ZVNvbWVTZXJ2aWNlLCBEZWZhdWx0UGFnZVNldHRpbmdQYXJhbXMsIFdlYkFwaVNlcnZpY2UsIFJlc291cmNlQXBpU2VydmljZVxyXG59IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtenF1ZXJ5YnVpbGRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3pxdWVyeWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3pxdWVyeWJ1aWxkZXIuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFpxdWVyeWJ1aWxkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoUXVlcnlCdWlsZGVyQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSkgcXVlcnlCdWlsZGVyOiBRdWVyeUJ1aWxkZXJDb21wb25lbnQ7XHJcbiAgQElucHV0KCkgY2xhc3NOYW1lczogUXVlcnlCdWlsZGVyQ2xhc3NOYW1lcztcclxuICBASW5wdXQoKSBkYXRhOiBaRmllbGQ7XHJcbiAgQElucHV0KCkgZ3JvdXA6IFpHcm91cDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIC8vcWJJdGVtczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIHFiSXRlbXMgPSB7fTtcclxuXHJcbiAgcHVibGljIGNvbXBvbmVudFByb3BlcnRpZXMgPSBuZXcgWkNvbXBvbmVudFByb3BlcnRpZXMoKTtcclxuICBwdWJsaWMgcXVlcnlDdHJsOiBhbnk7XHJcbiAgcHVibGljIGN1cnJlbnRDb25maWc6IFF1ZXJ5QnVpbGRlckNvbmZpZyA9IHtcclxuICAgIGZpZWxkczoge30sXHJcbiAgICBhbGxvd0VtcHR5UnVsZXNldHM6IHRydWVcclxuICB9O1xyXG4gIHB1YmxpYyBhbGxvd1J1bGVzZXQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBhbGxvd0NvbGxhcHNlOiBib29sZWFuPSBmYWxzZTtcclxuICBwdWJsaWMgcGVyc2lzdFZhbHVlT25GaWVsZENoYW5nZTogYm9vbGVhbiA9IGZhbHNlOyBcclxuICBwdWJsaWMgaXNEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBydWxlOiBhbnk7XHJcbiAgcHVibGljIHZhbHVlOiBhbnk7XHJcbiAgcHJpdmF0ZSBmaWVsZHM6IGFueTtcclxuICBwdWJsaWMgZmlsdGVyczogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZmllbGRTZXJ2aWNlOiBGaWVsZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc291cmNlQXBpU2VydmljZTogUmVzb3VyY2VBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB3ZWJBcGlTZXJ2aWNlOiBXZWJBcGlTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG4gICAgXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnNldENvbXBvbmVudFByb3BlcnRpZXModGhpcyk7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnJlZ2lzdGVyQ29tcG9uZW50KHRoaXMpO1xyXG4gICAgIFxyXG4gICAgaWYgKHRoaXMuZGF0YVsnQWxsb3dDb2xsYXBzZSddID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuYWxsb3dDb2xsYXBzZSA9IHRoaXMuZGF0YVsnQWxsb3dDb2xsYXBzZSddO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGFbJ0FsbG93UnVsZXNldCddID09PSBmYWxzZSkge1xyXG4gICAgICB0aGlzLmFsbG93UnVsZXNldCA9IHRoaXMuZGF0YVsnQWxsb3dSdWxlc2V0J107XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YVsnRmlsdGVycyddKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVycyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbChcclxuICAgICAgICB0aGlzLFxyXG4gICAgICAgIHRoaXMuZGF0YVsnRmlsdGVycyddLFxyXG4gICAgICAgIHRoaXMuZ3JvdXBcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpZWxkcyA9IHRoaXMuZmllbGRTZXJ2aWNlLmdldEZvcm1GaWVsZENvZGUodGhpcy5kYXRhLlZhbHVlLCBcIkZvcm1GaWVsZFwiLCBudWxsLCBudWxsKTsgXHJcbiAgICAgXHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmZpZWxkcy5zdWJzY3JpYmUoZGF0YSA9PiB7IFxyXG4gICAgICAgIGRhdGEuZm9yRWFjaCgoZmllbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgLy8gSGFuZGxlIE9wdGlvbnNcclxuICAgICAgICAgIGxldCBvcHRpb25MaXN0ID0gW107XHJcbiAgICAgICAgICBpZiAoZmllbGQuVHlwZSA9PSAnY2F0ZWdvcnknIHx8IGZpZWxkLlR5cGUgPT0gJ211bHRpc2VsZWN0Jykge1xyXG4gICAgICAgICAgICBpZiAoZmllbGRbJ1ZhbHVlT3B0aW9ucyddKSB7XHJcbiAgICAgICAgICAgICAgZmllbGRbJ1ZhbHVlT3B0aW9ucyddLmZvckVhY2goKHZhbHVlT3B0aW9uOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbkxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgIG5hbWU6IHZhbHVlT3B0aW9uLk5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZU9wdGlvbi5WYWx1ZVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0T3B0aW9ucyA9IGZpZWxkWydTZWxlY3RPcHRpb25zJ107XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcnMpIHtcclxuICAgICAgICAgICAgICAgIHNlbGVjdE9wdGlvbnNbJ0ZpbHRlcnMnXSA9IHRoaXMuZmlsdGVycztcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IHBhcmFtID0gT2JqZWN0LmFzc2lnbih7fSwgRGVmYXVsdFBhZ2VTZXR0aW5nUGFyYW1zKTtcclxuICAgICAgICAgICAgICBwYXJhbS5wYWdlU2l6ZSA9IHNlbGVjdE9wdGlvbnNbJ1BhZ2VTaXplJ107XHJcbiAgICAgICAgICAgICAgcGFyYW0uY29sdW1ucyA9IHNlbGVjdE9wdGlvbnNbJ0NvbHVtbnMnXTtcclxuICAgICAgICAgICAgICBwYXJhbS5maWx0ZXJzICs9IHNlbGVjdE9wdGlvbnNbJ0ZpbHRlcnMnXTtcclxuICAgICAgICAgICAgICBwYXJhbS5zb3J0Q29sdW1uTmFtZSA9IHNlbGVjdE9wdGlvbnNbJ1NvcnRDb2x1bW5OYW1lJ107XHJcbiAgICAgICAgICAgICAgcGFyYW0uc29ydE9yZGVyID0gc2VsZWN0T3B0aW9uc1snU29ydE9yZGVyJ107XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMud2ViQXBpU2VydmljZVxyXG4gICAgICAgICAgICAgICAgLmh0dHBQb3N0JCh0aGlzLnJlc291cmNlQXBpU2VydmljZS5nZXRQYWdlVXJsKHNlbGVjdE9wdGlvbnNbJ1Jlc291cmNlVVJMJ10pLCBwYXJhbSlcclxuICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICBtYXAoKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXNwLmRhdGFTZXQuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb25MaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtW3NlbGVjdE9wdGlvbnNbJ05hbWUnXV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBpdGVtW3NlbGVjdE9wdGlvbnNbJ1ZhbHVlJ11dXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnFiSXRlbXNbZmllbGQuVmFsdWVdWydvcHRpb25zJ10gPSBvcHRpb25MaXN0XHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICApLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gRGVmYXVsdCBydWxlIHRvIGRpc3BsYXlcclxuICAgICAgICAgIHRoaXMucWJJdGVtc1tmaWVsZC5WYWx1ZV0gPSB7XHJcbiAgICAgICAgICAgIG5hbWU6IGZpZWxkLk5hbWUsXHJcbiAgICAgICAgICAgIHZhbHVlOiBmaWVsZC5WYWx1ZSxcclxuICAgICAgICAgICAgdHlwZTogZmllbGQuVHlwZSxcclxuICAgICAgICAgICAgb3BlcmF0b3JMaXN0OiBmaWVsZFsnT3BlcmF0b3JzJ10sXHJcbiAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbkxpc3QsXHJcbiAgICAgICAgICAgIG51bGxhYmxlOiBmaWVsZFsnSXNOdWxsYWJsZSddLFxyXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZpZWxkWydEZWZhdWx0VmFsdWUnXSA/IGZpZWxkWydEZWZhdWx0VmFsdWUnXSA6IG51bGxcclxuICAgICAgICAgIH0gXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgIFxyXG4gICAgICAgIHRoaXMuY3VycmVudENvbmZpZyA9IHtcclxuICAgICAgICAgIGZpZWxkczogdGhpcy5xYkl0ZW1zLFxyXG4gICAgICAgICAgYWxsb3dFbXB0eVJ1bGVzZXRzOiB0cnVlXHJcbiAgICAgICAgfTtcclxuICAgICAgICAgXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gYXBwZW5kIGRlZmF1bHQgcXVlcnkgaWYgYW55LlxyXG4gICAgICBpZiAodGhpcy5kYXRhWydEZWZhdWx0UXVlcnknXSkge1xyXG4gICAgICAgIGxldCBkZWZhdWx0UXVlcnlWYWx1ZVN0cmluZyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbChcclxuICAgICAgICAgIHRoaXMsXHJcbiAgICAgICAgICB0aGlzLmRhdGFbJ0RlZmF1bHRRdWVyeSddLFxyXG4gICAgICAgICAgdGhpcy5ncm91cFxyXG4gICAgICAgICk7IFxyXG5cclxuICAgICAgICBpZiAoZGVmYXVsdFF1ZXJ5VmFsdWVTdHJpbmcpIHtcclxuICAgICAgICAgIHRoaXMuc2V0UXVlcnlWYWx1ZShkZWZhdWx0UXVlcnlWYWx1ZVN0cmluZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiZXJyb3I6IFwiLCBlcnJvcik7XHJcbiAgICB9IFxyXG4gIH1cclxuICAgIFxyXG4gIHB1YmxpYyBjb21wbGV0ZVJ1bGUoaXNVbmRvOiBib29sZWFuLCBxdWVyeVZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuaXNEaXNhYmxlZCA9IGlzVW5kbzsgXHJcbiAgICBjb25zdCBxYlJlc3VsdFZhbHVlTmFtZSA9IHRoaXMuZGF0YS5UeXBlICsgJ18nICsgdGhpcy5kYXRhLlZhbHVlO1xyXG4gICAgdGhpcy5ncm91cFtxYlJlc3VsdFZhbHVlTmFtZV0gPSB0aGlzLnF1ZXJ5QnVpbGRlci52YWx1ZSAgXHJcblxyXG4gICAgaWYgKHF1ZXJ5VmFsdWUpIHtcclxuICAgICAgdGhpcy5ncm91cFtxYlJlc3VsdFZhbHVlTmFtZV0gPSBxdWVyeVZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghaXNVbmRvKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBbcWJSZXN1bHRWYWx1ZU5hbWVdID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZ3JvdXAuek1vZGVsKSB7XHJcbiAgICAgIFpDb21wb25lbnRIZWxwZXIuc2V0TW9kZWxWYWx1ZSh0aGlzLmRhdGEuVmFsdWUsIHRoaXMuZ3JvdXBbcWJSZXN1bHRWYWx1ZU5hbWVdLCB0aGlzLmdyb3VwKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kYXRhWydPbkFwcGx5Q2xpY2snXSAmJiAhcXVlcnlWYWx1ZSkge1xyXG4gICAgICBsZXQgY2FsbEZ1bmMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwoXHJcbiAgICAgICAgdGhpcyxcclxuICAgICAgICB0aGlzLmRhdGFbJ09uQXBwbHlDbGljayddLFxyXG4gICAgICAgIHRoaXMuZ3JvdXBcclxuICAgICAgKTtcclxuICAgICAgY29uc3QgbmV3RnVuYyA9IGNhbGxGdW5jLmJpbmQodGhpcyk7XHJcbiAgICAgIG5ld0Z1bmModGhpcy5ncm91cCwgdGhpcy5ncm91cFtxYlJlc3VsdFZhbHVlTmFtZV0sIHRoaXMuZmllbGRzKTtcclxuICAgIH0gXHJcbiAgfVxyXG4gICBcclxuICBwdWJsaWMgYm9vdHN0cmFwQ2xhc3NOYW1lczogUXVlcnlCdWlsZGVyQ2xhc3NOYW1lcyA9IHtcclxuICAgIGFycm93SWNvbjogJ2ZhIGZhLWNoZXZyb24tcmlnaHQgcHgtMicsXHJcbiAgICBidXR0b246ICdidG4nLFxyXG4gICAgYnV0dG9uR3JvdXA6ICdidG4tZ3JvdXAnLFxyXG4gICAgcmlnaHRBbGlnbjogJ29yZGVyLTEyIG1sLWF1dG8nLFxyXG4gICAgc3dpdGNoUm93OiAnZC1mbGV4IHB4LTInLFxyXG4gICAgc3dpdGNoR3JvdXA6ICdkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyJyxcclxuICAgIHN3aXRjaFJhZGlvOiAnY3VzdG9tLWNvbnRyb2wtaW5wdXQnLFxyXG4gICAgc3dpdGNoTGFiZWw6ICdjdXN0b20tY29udHJvbC1sYWJlbCcsXHJcbiAgICBzd2l0Y2hDb250cm9sOiAnY3VzdG9tLWNvbnRyb2wgY3VzdG9tLXJhZGlvIGN1c3RvbS1jb250cm9sLWlubGluZScsXHJcbiAgICByb3c6ICdyb3cgcC0yIG0tMScsXHJcbiAgICBydWxlOiAnYm9yZGVyJyxcclxuICAgIHJ1bGVTZXQ6ICdib3JkZXInLFxyXG4gICAgaW52YWxpZFJ1bGVTZXQ6ICdhbGVydCBhbGVydC1kYW5nZXInLFxyXG4gICAgZW1wdHlXYXJuaW5nOiAndGV4dC1kYW5nZXIgbXgtYXV0bycsXHJcbiAgICBvcGVyYXRvckNvbnRyb2w6ICdmb3JtLWNvbnRyb2wnLFxyXG4gICAgb3BlcmF0b3JDb250cm9sU2l6ZTogJ2NvbC1hdXRvIHByLTAnLFxyXG4gICAgZmllbGRDb250cm9sOiAnZm9ybS1jb250cm9sJyxcclxuICAgIGZpZWxkQ29udHJvbFNpemU6ICdjb2wtYXV0byBwci0wJyxcclxuICAgIGVudGl0eUNvbnRyb2w6ICdmb3JtLWNvbnRyb2wnLFxyXG4gICAgZW50aXR5Q29udHJvbFNpemU6ICdjb2wtYXV0byBwci0wJyxcclxuICAgIGlucHV0Q29udHJvbDogJ2Zvcm0tY29udHJvbCcsXHJcbiAgICBpbnB1dENvbnRyb2xTaXplOiAnY29sLWF1dG8nXHJcbiAgfTtcclxuXHJcbiAgcHVibGljIGNvbmRpdGlvbkxpc3Q6IEFycmF5PHN0cmluZz4gPSBbXHJcbiAgICBcIkFORFwiLFxyXG4gICAgXCJPUlwiXHJcbiAgXTtcclxuXHJcbiAgcHVibGljIGdldE9wZXJhdG9ycyhkZWZhdWx0T3BlcmF0b3JMaXN0OiBhbnksIHJ1bGU6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMucWJJdGVtc1tydWxlLmZpZWxkXS5vcGVyYXRvckxpc3QgPyB0aGlzLnFiSXRlbXNbcnVsZS5maWVsZF0ub3BlcmF0b3JMaXN0IDogZGVmYXVsdE9wZXJhdG9yTGlzdDtcclxuICB9XHJcbiAgIFxyXG4gIHB1YmxpYyBnZXRPcHRpb25MaXN0KG9wdGlvbnNMaXN0OiBhbnksIHJ1bGU6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMucWJJdGVtc1tydWxlLmZpZWxkXS5vcHRpb25zID8gdGhpcy5xYkl0ZW1zW3J1bGUuZmllbGRdLm9wdGlvbnMgOiBvcHRpb25zTGlzdDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRRdWVyeVZhbHVlKHF1ZXJ5VmFsdWVTdHJpbmc6IHN0cmluZykge1xyXG4gICAgaWYgKHF1ZXJ5VmFsdWVTdHJpbmcpIHtcclxuICAgICAgY29uc3QgZGVmYXVsdFF1ZXJ5VmFsdWVKc29uID0gdG9RdWVyeVJ1bGUoSlNPTi5wYXJzZShxdWVyeVZhbHVlU3RyaW5nKSk7XHJcbiAgICAgIHRoaXMucXVlcnlDdHJsID0gZGVmYXVsdFF1ZXJ5VmFsdWVKc29uO1xyXG5cclxuICAgICAgLy8gZGVmYXVsdCBsb2NrIHRoZSBxdWVyeSBidWlsZGVyIGlmIHRoZXJlIGRlZmF1bHQgcXVlcnlcclxuICAgICAgdGhpcy5jb21wbGV0ZVJ1bGUodHJ1ZSwgZGVmYXVsdFF1ZXJ5VmFsdWVKc29uKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlSdWxlIHtcclxuICBjb25kaXRpb246IHN0cmluZztcclxuICBydWxlczogUXVlcnlSdWxlW107XHJcbiAgZmllbGQ6IHN0cmluZztcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgb3BlcmF0b3I6IHN0cmluZztcclxuICB2YWx1ZTogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0b1F1ZXJ5UnVsZShxdWVyeUJ1aWxkZXJNb2RlbDogYW55KTogUXVlcnlSdWxlIHtcclxuICBsZXQgcnVsZSA9IDxRdWVyeVJ1bGU+e307XHJcbiAgaWYgKHF1ZXJ5QnVpbGRlck1vZGVsLmNvbmRpdGlvbikge1xyXG4gICAgcnVsZS5jb25kaXRpb24gPSBxdWVyeUJ1aWxkZXJNb2RlbC5jb25kaXRpb247XHJcbiAgICBydWxlLnJ1bGVzID0gcXVlcnlCdWlsZGVyTW9kZWwucnVsZXMubWFwKHEgPT4gdG9RdWVyeVJ1bGUocSkpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBydWxlLmZpZWxkID0gcXVlcnlCdWlsZGVyTW9kZWwuZmllbGQ7XHJcbiAgICBydWxlLnR5cGUgPSBxdWVyeUJ1aWxkZXJNb2RlbC50eXBlO1xyXG4gICAgcnVsZS5vcGVyYXRvciA9IHF1ZXJ5QnVpbGRlck1vZGVsLm9wZXJhdG9yO1xyXG4gICAgcnVsZS52YWx1ZSA9IHF1ZXJ5QnVpbGRlck1vZGVsLnZhbHVlIGluc3RhbmNlb2YgQXJyYXlcclxuICAgICAgPyBxdWVyeUJ1aWxkZXJNb2RlbC50eXBlID09PSAnZGF0ZScgPyBuZXcgRGF0ZShxdWVyeUJ1aWxkZXJNb2RlbC52YWx1ZSkgOiBxdWVyeUJ1aWxkZXJNb2RlbC52YWx1ZVxyXG4gICAgICA6IFtxdWVyeUJ1aWxkZXJNb2RlbC50eXBlID09PSAnZGF0ZScgPyBuZXcgRGF0ZShxdWVyeUJ1aWxkZXJNb2RlbC52YWx1ZSkgOiBxdWVyeUJ1aWxkZXJNb2RlbC52YWx1ZV07XHJcbiAgfVxyXG4gIHJldHVybiBydWxlO1xyXG59XHJcbiIsIjxpb24taXRlbSAqbmdJZj1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlKVwiPlxyXG4gIDxpb24tbGFiZWwgW2F0dHIuZm9yXT1cImRhdGEuVmFsdWVcIlxyXG4gICAgICAgICAgICAgKm5nSWY9XCJkYXRhLlNob3dMYWJlbCA9PT0gdW5kZWZpbmVkIHx8IGRhdGEuU2hvd0xhYmVsXCJcclxuICAgICAgICAgICAgIFtwb3NpdGlvbl09XCJkYXRhLkxhYmVsUG9zaXRpb24gPyBkYXRhLkxhYmVsUG9zaXRpb24gOiAnc3RhY2tlZCdcIj5cclxuICAgIHt7ZGF0YS5MYWJlbH19XHJcbiAgICA8aW9uLXRleHQgKm5nSWY9XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWRGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZEZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZClcIlxyXG4gICAgICAgICAgICAgIGNvbG9yPVwiZGFuZ2VyXCI+KjwvaW9uLXRleHQ+XHJcbiAgPC9pb24tbGFiZWw+XHJcbiAgPGRpdiBjbGFzcz1cInFiY29udGFpbmVyXCI+XHJcbiAgICA8cXVlcnktYnVpbGRlciBbKG5nTW9kZWwpXT0ncXVlcnlDdHJsJ1xyXG4gICAgICAgICAgICAgICAgICAgWyhjb25maWcpXT0nY3VycmVudENvbmZpZydcclxuICAgICAgICAgICAgICAgICAgIFthbGxvd1J1bGVzZXRdPSdhbGxvd1J1bGVzZXQnXHJcbiAgICAgICAgICAgICAgICAgICBbYWxsb3dDb2xsYXBzZV09J2FsbG93Q29sbGFwc2UnXHJcbiAgICAgICAgICAgICAgICAgICBbZmlsdGVyc109J2ZpbHRlcnMnXHJcbiAgICAgICAgICAgICAgICAgICBbcGVyc2lzdFZhbHVlT25GaWVsZENoYW5nZV09J3BlcnNpc3RWYWx1ZU9uRmllbGRDaGFuZ2UnPlxyXG4gICAgICA8IS0tQU5EIE9SIFN3dGljaC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpxdWVyeVN3aXRjaEdyb3VwPVwibGV0IHJ1bGVzZXQ7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgIDxrZW5kby1kcm9wZG93bmxpc3QgWyhuZ01vZGVsKV09XCJydWxlc2V0LmNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQsIHJ1bGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImNvbmRpdGlvbkxpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1wiPlxyXG4gICAgICAgIDwva2VuZG8tZHJvcGRvd25saXN0PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLVJ1bGUgUnVsZVNldCBSZW1vdmUgUnVsZSBTZXQgQnV0dG9uLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5QnV0dG9uR3JvdXA9XCJsZXQgcnVsZXNldDsgbGV0IGFkZFJ1bGU9YWRkUnVsZTsgbGV0IGFkZFJ1bGVTZXQ9YWRkUnVsZVNldDsgbGV0IHJlbW92ZVJ1bGVTZXQ9cmVtb3ZlUnVsZVNldFwiPlxyXG4gICAgICAgIDwhLS1BZGQgUnVsZSBCdXR0b24tLT5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwib3V0bGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJvbmc9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZFJ1bGUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uYWRkXCI+XHJcbiAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCIncGx1cydcIiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDVweDtcIj48L2ZhLWljb24+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImlvbi10ZXh0LWNhcGl0YWxpemVcIj5BZGQ8L3NwYW4+XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDwhLS1BZGQgUnVsZVNldCBCdXR0b24tLT5cclxuICAgICAgICA8aW9uLWJ1dHRvbiAqbmdJZj1cImFkZFJ1bGVTZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9uZz1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkUnVsZVNldCgpXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b25hZGRcIj5cclxuICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cIidwbHVzJ1wiIHN0eWxlPVwicGFkZGluZy1yaWdodDogNXB4O1wiPjwvZmEtaWNvbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW9uLXRleHQtY2FwaXRhbGl6ZVwiPkFkZCBSdWxlIFNldDwvc3Bhbj5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPCEtLVJlbW92ZSBSdWxlU2V0IEJ1dHRvbi0tPlxyXG4gICAgICAgIDxpb24tYnV0dG9uICpuZ0lmPVwicmVtb3ZlUnVsZVNldFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm91dGxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb25nPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVSdWxlU2V0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbnJlbW92ZVwiPlxyXG4gICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiJ3RpbWVzJ1wiIHN0eWxlPVwicGFkZGluZy1yaWdodDogNXB4O1wiPjwvZmEtaWNvbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW9uLXRleHQtY2FwaXRhbGl6ZVwiPlJlbW92ZSBSdWxlIFNldDwvc3Bhbj5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tUmVtb3ZlIFJ1bGUgQnV0dG9uLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5UmVtb3ZlQnV0dG9uPVwibGV0IHJ1bGU7IGxldCByZW1vdmVSdWxlPXJlbW92ZVJ1bGVcIj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwib3V0bGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJvbmc9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVJ1bGUocnVsZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbnJlbW92ZVwiPlxyXG4gICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiJ21pbnVzJ1wiXHJcbiAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDVweDtcIj48L2ZhLWljb24+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImlvbi10ZXh0LWNhcGl0YWxpemVcIj5SZW1vdmUgUnVsZTwvc3Bhbj5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tTmFtZSBkcm9wZG93bi0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpxdWVyeUZpZWxkPVwibGV0IHJ1bGU7IGxldCBmaWVsZHM9ZmllbGRzOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2U7IGxldCBnZXRGaWVsZHM9Z2V0RmllbGRzXCI+XHJcbiAgICAgICAgPGtlbmRvLWRyb3Bkb3dubGlzdCBbKG5nTW9kZWwpXT1cInJ1bGUuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50LCBydWxlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJnZXRGaWVsZHMocnVsZS5lbnRpdHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRGaWVsZD1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVGaWVsZD1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVQcmltaXRpdmVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmctcmlnaHQ6MTBweDtcIj5cclxuICAgICAgICA8L2tlbmRvLWRyb3Bkb3dubGlzdD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS1PcGVyYXRvciBkcm9wZG93bi0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpxdWVyeU9wZXJhdG9yPVwibGV0IHJ1bGU7IGxldCBvcGVyYXRvcnM9b3BlcmF0b3JzOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIiBzdHlsZT1cInBhZGRpbmc6MTBweFwiPlxyXG4gICAgICAgIDxrZW5kby1kcm9wZG93bmxpc3QgWyhuZ01vZGVsKV09XCJydWxlLm9wZXJhdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudCwgcnVsZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiZ2V0T3BlcmF0b3JzKG9wZXJhdG9ycywgcnVsZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEZpZWxkPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUZpZWxkPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZVByaW1pdGl2ZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZy1yaWdodDoxMHB4O1wiPlxyXG4gICAgICAgIDwva2VuZG8tZHJvcGRvd25saXN0PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLVRleHQgRmllbGQtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgZmllbGQ9ZmllbGQ7IHR5cGU6ICdzdHJpbmcnOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICA8a2VuZG8tdGV4dGJveCBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtjbGVhckJ1dHRvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b21UZXh0Ym94XCI+XHJcbiAgICAgICAgPC9rZW5kby10ZXh0Ym94PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLVRleHRBcmVhIEZpZWxkLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgdHlwZTogJ3RleHRhcmVhJzsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgPGtlbmRvLXRleHRhcmVhIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm93c109XCI1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbHNdPVwiNDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNpemFibGU9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIj5cclxuICAgICAgICA8L2tlbmRvLXRleHRhcmVhPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLU51bWJlciBGaWVsZC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IGxldCBmaWVsZD1maWVsZDsgdHlwZTogJ251bWJlcic7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgIDxrZW5kby1udW1lcmljdGV4dGJveCBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlY2ltYWxzXT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiPlxyXG4gICAgICAgIDwva2VuZG8tbnVtZXJpY3RleHRib3g+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tRGF0ZSBGaWVsZC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IHR5cGU6ICdkYXRlJzsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgPGtlbmRvLWRhdGVwaWNrZXIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhclR5cGU9XCJjbGFzc2ljXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCI+XHJcbiAgICAgICAgPC9rZW5kby1kYXRlcGlja2VyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLUNhdGVnb3J5IEZpZWxkLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IG9wdGlvbnM9b3B0aW9uczsgdHlwZTogJ2NhdGVnb3J5JzsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgPGtlbmRvLWRyb3Bkb3dubGlzdCBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJnZXRPcHRpb25MaXN0KG9wdGlvbnMsIHJ1bGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRGaWVsZD1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVGaWVsZD1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVQcmltaXRpdmVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiPlxyXG4gICAgICAgIDwva2VuZG8tZHJvcGRvd25saXN0PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLURyb3BEb3duIE11bHRpU2VsZWN0IEZpZWxkLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IG9wdGlvbnM9b3B0aW9uczsgdHlwZTogJ211bHRpc2VsZWN0JzsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgPGtlbmRvLW11bHRpc2VsZWN0IFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJnZXRPcHRpb25MaXN0KG9wdGlvbnMsIHJ1bGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEZpZWxkPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZVByaW1pdGl2ZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6MzAlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIj5cclxuICAgICAgICA8L2tlbmRvLW11bHRpc2VsZWN0PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLUJvb2xlYW4gRmllbGQtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyB0eXBlOiAnYm9vbGVhbic7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b21DaGVja0JveFwiXHJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICAga2VuZG9DaGVja0JveCAvPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvcXVlcnktYnVpbGRlcj5cclxuICAgIDxicj5cclxuICAgIDxkaXYgKm5nSWY9XCJkYXRhLlNob3dRdWVyeVJlc3VsdFwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxsYWJlbD5RdWVyeSBSZXN1bHQ8L2xhYmVsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHRleHRhcmVhIGNsYXNzPVwib3V0cHV0XCJcclxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZT1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgW3Jvd3NdPVwiMTBcIlxyXG4gICAgICAgICAgICAgICAgW2NvbHNdPVwiNDBcIj57e3F1ZXJ5Q3RybCB8IGpzb259fTwvdGV4dGFyZWE+XHJcbiAgICAgIDxicj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBzdHlsZT1cIndpZHRoOjEwMCVcIiBzbG90PVwiZW5kXCI+XHJcbiAgICAgIDxpb24tYnV0dG9uICpuZ0lmPVwiIWlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICBzdHJvbmc9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb21wbGV0ZVJ1bGUodHJ1ZSwgbnVsbClcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbmFwcGx5XCI+XHJcbiAgICAgICAgPGZhLWljb24gW2ljb25dPVwiJ3NhdmUnXCIgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiA1cHg7XCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW9uLXRleHQtY2FwaXRhbGl6ZVwiPkFwcGx5PC9zcGFuPlxyXG4gICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgIDxpb24tYnV0dG9uICpuZ0lmPVwiaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0cm9uZz1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbXBsZXRlUnVsZShmYWxzZSwgbnVsbClcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbmFwcGx5XCI+XHJcbiAgICAgICAgPGZhLWljb24gW2ljb25dPVwiJ3NhdmUnXCIgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiA1cHg7XCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW9uLXRleHQtY2FwaXRhbGl6ZVwiPlVuZG8gQXBwbHk8L3NwYW4+XHJcbiAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2lvbi1pdGVtPlxyXG4iXX0=
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienF1ZXJ5YnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96cXVlcnlidWlsZGVyL3pxdWVyeWJ1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenF1ZXJ5YnVpbGRlci96cXVlcnlidWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHcEUsNkJBQTZCO0FBRTdCLDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsR0FBRyxFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBOEMscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRywyQ0FBMkM7QUFDM0MsT0FBTyxFQUNTLGdCQUFnQixFQUFFLG9CQUFvQixFQUNoQyx3QkFBd0IsRUFDN0MsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7QUFTekIsTUFBTSxPQUFPLHNCQUFzQjtJQXlCakMsWUFDVSxZQUEwQixFQUMxQixrQkFBc0MsRUFDdEMsYUFBNEI7UUFGNUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXJCdEMsMkJBQTJCO1FBQzNCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFFTix3QkFBbUIsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFFakQsa0JBQWEsR0FBdUI7WUFDekMsTUFBTSxFQUFFLEVBQUU7WUFDVixrQkFBa0IsRUFBRSxJQUFJO1NBQ3pCLENBQUM7UUFDSyxpQkFBWSxHQUFZLElB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c0JBQVosS0FBSzs7QUF3TlIsTUFBTSxVQUFVLFdBQVcsQ0FBQyxpQkFBc0I7SUFDaEQsSUFBSSxJQUFJLEdBQWMsRUFBRSxDQUFDO0lBQ3pCLElBQUksaUJBQWlCLENBQUMsU0FBUyxFQUFFO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDO1FBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQy9EO1NBQU07UUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztRQUMzQyxJQUFJLENBQUMsS0FBSyxHQUFHLGlCQUFpQixDQUFDLEtBQUssWUFBWSxLQUFLO1lBQ25ELENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsS0FBSztZQUNqRyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDdkc7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFF1ZXJ5QnVpbGRlckNvbmZpZywgUXVlcnlCdWlsZGVyQ2xhc3NOYW1lcywgUXVlcnlCdWlsZGVyQ29tcG9uZW50IH0gZnJvbSAnYW5ndWxhcjItcXVlcnktYnVpbGRlcic7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7XHJcbiAgRmllbGRTZXJ2aWNlLCBaQ29tcG9uZW50SGVscGVyLCBaQ29tcG9uZW50UHJvcGVydGllcywgWkZpZWxkLCBaR3JvdXAsXHJcbiAgRm9udEF3ZVNvbWVTZXJ2aWNlLCBEZWZhdWx0UGFnZVNldHRpbmdQYXJhbXMsIFdlYkFwaVNlcnZpY2UsIFJlc291cmNlQXBpU2VydmljZVxyXG59IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtenF1ZXJ5YnVpbGRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3pxdWVyeWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3pxdWVyeWJ1aWxkZXIuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFpxdWVyeWJ1aWxkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoUXVlcnlCdWlsZGVyQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSkgcXVlcnlCdWlsZGVyOiBRdWVyeUJ1aWxkZXJDb21wb25lbnQ7XHJcbiAgQElucHV0KCkgY2xhc3NOYW1lczogUXVlcnlCdWlsZGVyQ2xhc3NOYW1lcztcclxuICBASW5wdXQoKSBkYXRhOiBaRmllbGQ7XHJcbiAgQElucHV0KCkgZ3JvdXA6IFpHcm91cDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIC8vcWJJdGVtczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIHFiSXRlbXMgPSB7fTtcclxuXHJcbiAgcHVibGljIGNvbXBvbmVudFByb3BlcnRpZXMgPSBuZXcgWkNvbXBvbmVudFByb3BlcnRpZXMoKTtcclxuICBwdWJsaWMgcXVlcnlDdHJsOiBhbnk7XHJcbiAgcHVibGljIGN1cnJlbnRDb25maWc6IFF1ZXJ5QnVpbGRlckNvbmZpZyA9IHtcclxuICAgIGZpZWxkczoge30sXHJcbiAgICBhbGxvd0VtcHR5UnVsZXNldHM6IHRydWVcclxuICB9O1xyXG4gIHB1YmxpYyBhbGxvd1J1bGVzZXQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBhbGxvd0NvbGxhcHNlOiBib29sZWFuPSBmYWxzZTtcclxuICBwdWJsaWMgcGVyc2lzdFZhbHVlT25GaWVsZENoYW5nZTogYm9vbGVhbiA9IGZhbHNlOyBcclxuICBwdWJsaWMgaXNEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBydWxlOiBhbnk7XHJcbiAgcHVibGljIHZhbHVlOiBhbnk7XHJcbiAgcHJpdmF0ZSBmaWVsZHM6IGFueTtcclxuICBwdWJsaWMgZmlsdGVyczogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZmllbGRTZXJ2aWNlOiBGaWVsZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc291cmNlQXBpU2VydmljZTogUmVzb3VyY2VBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB3ZWJBcGlTZXJ2aWNlOiBXZWJBcGlTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG4gICAgXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnNldENvbXBvbmVudFByb3BlcnRpZXModGhpcyk7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnJlZ2lzdGVyQ29tcG9uZW50KHRoaXMpO1xyXG4gICAgIFxyXG4gICAgaWYgKHRoaXMuZGF0YVsnQWxsb3dDb2xsYXBzZSddID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuYWxsb3dDb2xsYXBzZSA9IHRoaXMuZGF0YVsnQWxsb3dDb2xsYXBzZSddO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGFbJ0FsbG93UnVsZXNldCddID09PSBmYWxzZSkge1xyXG4gICAgICB0aGlzLmFsbG93UnVsZXNldCA9IHRoaXMuZGF0YVsnQWxsb3dSdWxlc2V0J107XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YVsnRmlsdGVycyddKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVycyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbChcclxuICAgICAgICB0aGlzLFxyXG4gICAgICAgIHRoaXMuZGF0YVsnRmlsdGVycyddLFxyXG4gICAgICAgIHRoaXMuZ3JvdXBcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpZWxkcyA9IHRoaXMuZmllbGRTZXJ2aWNlLmdldEZvcm1GaWVsZENvZGUodGhpcy5kYXRhLlZhbHVlLCBcIkZvcm1GaWVsZFwiLCBudWxsLCBudWxsKTsgXHJcbiAgICAgXHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmZpZWxkcy5zdWJzY3JpYmUoZGF0YSA9PiB7IFxyXG4gICAgICAgIGRhdGEuZm9yRWFjaCgoZmllbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgLy8gSGFuZGxlIE9wdGlvbnNcclxuICAgICAgICAgIGxldCBvcHRpb25MaXN0ID0gW107XHJcbiAgICAgICAgICBpZiAoZmllbGQuVHlwZSA9PSAnY2F0ZWdvcnknIHx8IGZpZWxkLlR5cGUgPT0gJ211bHRpc2VsZWN0Jykge1xyXG4gICAgICAgICAgICBpZiAoZmllbGRbJ1ZhbHVlT3B0aW9ucyddKSB7XHJcbiAgICAgICAgICAgICAgZmllbGRbJ1ZhbHVlT3B0aW9ucyddLmZvckVhY2goKHZhbHVlT3B0aW9uOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbkxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgIG5hbWU6IHZhbHVlT3B0aW9uLk5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZU9wdGlvbi5WYWx1ZVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0T3B0aW9ucyA9IGZpZWxkWydTZWxlY3RPcHRpb25zJ107XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcnMpIHtcclxuICAgICAgICAgICAgICAgIHNlbGVjdE9wdGlvbnNbJ0ZpbHRlcnMnXSA9IHRoaXMuZmlsdGVycztcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IHBhcmFtID0gT2JqZWN0LmFzc2lnbih7fSwgRGVmYXVsdFBhZ2VTZXR0aW5nUGFyYW1zKTtcclxuICAgICAgICAgICAgICBwYXJhbS5wYWdlU2l6ZSA9IHNlbGVjdE9wdGlvbnNbJ1BhZ2VTaXplJ107XHJcbiAgICAgICAgICAgICAgcGFyYW0uY29sdW1ucyA9IHNlbGVjdE9wdGlvbnNbJ0NvbHVtbnMnXTtcclxuICAgICAgICAgICAgICBwYXJhbS5maWx0ZXJzICs9IHNlbGVjdE9wdGlvbnNbJ0ZpbHRlcnMnXTtcclxuICAgICAgICAgICAgICBwYXJhbS5zb3J0Q29sdW1uTmFtZSA9IHNlbGVjdE9wdGlvbnNbJ1NvcnRDb2x1bW5OYW1lJ107XHJcbiAgICAgICAgICAgICAgcGFyYW0uc29ydE9yZGVyID0gc2VsZWN0T3B0aW9uc1snU29ydE9yZGVyJ107XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMud2ViQXBpU2VydmljZVxyXG4gICAgICAgICAgICAgICAgLmh0dHBQb3N0JCh0aGlzLnJlc291cmNlQXBpU2VydmljZS5nZXRQYWdlVXJsKHNlbGVjdE9wdGlvbnNbJ1Jlc291cmNlVVJMJ10pLCBwYXJhbSlcclxuICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICBtYXAoKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXNwLmRhdGFTZXQuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb25MaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtW3NlbGVjdE9wdGlvbnNbJ05hbWUnXV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBpdGVtW3NlbGVjdE9wdGlvbnNbJ1ZhbHVlJ11dXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnFiSXRlbXNbZmllbGQuVmFsdWVdWydvcHRpb25zJ10gPSBvcHRpb25MaXN0XHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICApLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gRGVmYXVsdCBydWxlIHRvIGRpc3BsYXlcclxuICAgICAgICAgIHRoaXMucWJJdGVtc1tmaWVsZC5WYWx1ZV0gPSB7XHJcbiAgICAgICAgICAgIG5hbWU6IGZpZWxkLk5hbWUsXHJcbiAgICAgICAgICAgIHZhbHVlOiBmaWVsZC5WYWx1ZSxcclxuICAgICAgICAgICAgdHlwZTogZmllbGQuVHlwZSxcclxuICAgICAgICAgICAgb3BlcmF0b3JMaXN0OiBmaWVsZFsnT3BlcmF0b3JzJ10sXHJcbiAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbkxpc3QsXHJcbiAgICAgICAgICAgIG51bGxhYmxlOiBmaWVsZFsnSXNOdWxsYWJsZSddLFxyXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZpZWxkWydEZWZhdWx0VmFsdWUnXSA/IGZpZWxkWydEZWZhdWx0VmFsdWUnXSA6IG51bGxcclxuICAgICAgICAgIH0gXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgIFxyXG4gICAgICAgIHRoaXMuY3VycmVudENvbmZpZyA9IHtcclxuICAgICAgICAgIGZpZWxkczogdGhpcy5xYkl0ZW1zLFxyXG4gICAgICAgICAgYWxsb3dFbXB0eVJ1bGVzZXRzOiB0cnVlXHJcbiAgICAgICAgfTtcclxuICAgICAgICAgXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gYXBwZW5kIGRlZmF1bHQgcXVlcnkgaWYgYW55LlxyXG4gICAgICBpZiAodGhpcy5kYXRhWydEZWZhdWx0UXVlcnknXSkge1xyXG4gICAgICAgIGxldCBkZWZhdWx0UXVlcnlWYWx1ZVN0cmluZyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbChcclxuICAgICAgICAgIHRoaXMsXHJcbiAgICAgICAgICB0aGlzLmRhdGFbJ0RlZmF1bHRRdWVyeSddLFxyXG4gICAgICAgICAgdGhpcy5ncm91cFxyXG4gICAgICAgICk7IFxyXG5cclxuICAgICAgICBpZiAoZGVmYXVsdFF1ZXJ5VmFsdWVTdHJpbmcpIHtcclxuICAgICAgICAgIHRoaXMuc2V0UXVlcnlWYWx1ZShkZWZhdWx0UXVlcnlWYWx1ZVN0cmluZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiZXJyb3I6IFwiLCBlcnJvcik7XHJcbiAgICB9IFxyXG4gIH1cclxuICAgIFxyXG4gIHB1YmxpYyBjb21wbGV0ZVJ1bGUoaXNVbmRvOiBib29sZWFuLCBxdWVyeVZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuaXNEaXNhYmxlZCA9IGlzVW5kbzsgXHJcbiAgICBjb25zdCBxYlJlc3VsdFZhbHVlTmFtZSA9IHRoaXMuZGF0YS5UeXBlICsgJ18nICsgdGhpcy5kYXRhLlZhbHVlO1xyXG4gICAgdGhpcy5ncm91cFtxYlJlc3VsdFZhbHVlTmFtZV0gPSB0aGlzLnF1ZXJ5QnVpbGRlci52YWx1ZSAgXHJcblxyXG4gICAgaWYgKHF1ZXJ5VmFsdWUpIHtcclxuICAgICAgdGhpcy5ncm91cFtxYlJlc3VsdFZhbHVlTmFtZV0gPSBxdWVyeVZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghaXNVbmRvKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBbcWJSZXN1bHRWYWx1ZU5hbWVdID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZ3JvdXAuek1vZGVsKSB7XHJcbiAgICAgIFpDb21wb25lbnRIZWxwZXIuc2V0TW9kZWxWYWx1ZSh0aGlzLmRhdGEuVmFsdWUsIHRoaXMuZ3JvdXBbcWJSZXN1bHRWYWx1ZU5hbWVdLCB0aGlzLmdyb3VwKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kYXRhWydPbkFwcGx5Q2xpY2snXSAmJiAhcXVlcnlWYWx1ZSkge1xyXG4gICAgICBsZXQgY2FsbEZ1bmMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwoXHJcbiAgICAgICAgdGhpcyxcclxuICAgICAgICB0aGlzLmRhdGFbJ09uQXBwbHlDbGljayddLFxyXG4gICAgICAgIHRoaXMuZ3JvdXBcclxuICAgICAgKTtcclxuICAgICAgY29uc3QgbmV3RnVuYyA9IGNhbGxGdW5jLmJpbmQodGhpcyk7XHJcbiAgICAgIG5ld0Z1bmModGhpcy5ncm91cCwgdGhpcy5ncm91cFtxYlJlc3VsdFZhbHVlTmFtZV0sIHRoaXMuZmllbGRzKTtcclxuICAgIH0gXHJcbiAgfVxyXG4gICBcclxuICBwdWJsaWMgYm9vdHN0cmFwQ2xhc3NOYW1lczogUXVlcnlCdWlsZGVyQ2xhc3NOYW1lcyA9IHtcclxuICAgIGFycm93SWNvbjogJ2ZhIGZhLWNoZXZyb24tcmlnaHQgcHgtMicsXHJcbiAgICBidXR0b246ICdidG4nLFxyXG4gICAgYnV0dG9uR3JvdXA6ICdidG4tZ3JvdXAnLFxyXG4gICAgcmlnaHRBbGlnbjogJ29yZGVyLTEyIG1sLWF1dG8nLFxyXG4gICAgc3dpdGNoUm93OiAnZC1mbGV4IHB4LTInLFxyXG4gICAgc3dpdGNoR3JvdXA6ICdkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyJyxcclxuICAgIHN3aXRjaFJhZGlvOiAnY3VzdG9tLWNvbnRyb2wtaW5wdXQnLFxyXG4gICAgc3dpdGNoTGFiZWw6ICdjdXN0b20tY29udHJvbC1sYWJlbCcsXHJcbiAgICBzd2l0Y2hDb250cm9sOiAnY3VzdG9tLWNvbnRyb2wgY3VzdG9tLXJhZGlvIGN1c3RvbS1jb250cm9sLWlubGluZScsXHJcbiAgICByb3c6ICdyb3cgcC0yIG0tMScsXHJcbiAgICBydWxlOiAnYm9yZGVyJyxcclxuICAgIHJ1bGVTZXQ6ICdib3JkZXInLFxyXG4gICAgaW52YWxpZFJ1bGVTZXQ6ICdhbGVydCBhbGVydC1kYW5nZXInLFxyXG4gICAgZW1wdHlXYXJuaW5nOiAndGV4dC1kYW5nZXIgbXgtYXV0bycsXHJcbiAgICBvcGVyYXRvckNvbnRyb2w6ICdmb3JtLWNvbnRyb2wnLFxyXG4gICAgb3BlcmF0b3JDb250cm9sU2l6ZTogJ2NvbC1hdXRvIHByLTAnLFxyXG4gICAgZmllbGRDb250cm9sOiAnZm9ybS1jb250cm9sJyxcclxuICAgIGZpZWxkQ29udHJvbFNpemU6ICdjb2wtYXV0byBwci0wJyxcclxuICAgIGVudGl0eUNvbnRyb2w6ICdmb3JtLWNvbnRyb2wnLFxyXG4gICAgZW50aXR5Q29udHJvbFNpemU6ICdjb2wtYXV0byBwci0wJyxcclxuICAgIGlucHV0Q29udHJvbDogJ2Zvcm0tY29udHJvbCcsXHJcbiAgICBpbnB1dENvbnRyb2xTaXplOiAnY29sLWF1dG8nXHJcbiAgfTtcclxuXHJcbiAgcHVibGljIGNvbmRpdGlvbkxpc3Q6IEFycmF5PHN0cmluZz4gPSBbXHJcbiAgICBcIkFORFwiLFxyXG4gICAgXCJPUlwiXHJcbiAgXTtcclxuXHJcbiAgcHVibGljIGdldE9wZXJhdG9ycyhkZWZhdWx0T3BlcmF0b3JMaXN0OiBhbnksIHJ1bGU6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMucWJJdGVtc1tydWxlLmZpZWxkXS5vcGVyYXRvckxpc3QgPyB0aGlzLnFiSXRlbXNbcnVsZS5maWVsZF0ub3BlcmF0b3JMaXN0IDogZGVmYXVsdE9wZXJhdG9yTGlzdDtcclxuICB9XHJcbiAgIFxyXG4gIHB1YmxpYyBnZXRPcHRpb25MaXN0KG9wdGlvbnNMaXN0OiBhbnksIHJ1bGU6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMucWJJdGVtc1tydWxlLmZpZWxkXS5vcHRpb25zID8gdGhpcy5xYkl0ZW1zW3J1bGUuZmllbGRdLm9wdGlvbnMgOiBvcHRpb25zTGlzdDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRRdWVyeVZhbHVlKHF1ZXJ5VmFsdWVTdHJpbmc6IHN0cmluZykge1xyXG4gICAgaWYgKHF1ZXJ5VmFsdWVTdHJpbmcpIHtcclxuICAgICAgY29uc3QgZGVmYXVsdFF1ZXJ5VmFsdWVKc29uID0gdG9RdWVyeVJ1bGUoSlNPTi5wYXJzZShxdWVyeVZhbHVlU3RyaW5nKSk7XHJcbiAgICAgIHRoaXMucXVlcnlDdHJsID0gZGVmYXVsdFF1ZXJ5VmFsdWVKc29uO1xyXG5cclxuICAgICAgLy8gZGVmYXVsdCBsb2NrIHRoZSBxdWVyeSBidWlsZGVyIGlmIHRoZXJlIGRlZmF1bHQgcXVlcnlcclxuICAgICAgdGhpcy5jb21wbGV0ZVJ1bGUodHJ1ZSwgZGVmYXVsdFF1ZXJ5VmFsdWVKc29uKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlSdWxlIHtcclxuICBjb25kaXRpb246IHN0cmluZztcclxuICBydWxlczogUXVlcnlSdWxlW107XHJcbiAgZmllbGQ6IHN0cmluZztcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgb3BlcmF0b3I6IHN0cmluZztcclxuICB2YWx1ZTogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0b1F1ZXJ5UnVsZShxdWVyeUJ1aWxkZXJNb2RlbDogYW55KTogUXVlcnlSdWxlIHtcclxuICBsZXQgcnVsZSA9IDxRdWVyeVJ1bGU+e307XHJcbiAgaWYgKHF1ZXJ5QnVpbGRlck1vZGVsLmNvbmRpdGlvbikge1xyXG4gICAgcnVsZS5jb25kaXRpb24gPSBxdWVyeUJ1aWxkZXJNb2RlbC5jb25kaXRpb247XHJcbiAgICBydWxlLnJ1bGVzID0gcXVlcnlCdWlsZGVyTW9kZWwucnVsZXMubWFwKHEgPT4gdG9RdWVyeVJ1bGUocSkpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBydWxlLmZpZWxkID0gcXVlcnlCdWlsZGVyTW9kZWwuZmllbGQ7XHJcbiAgICBydWxlLnR5cGUgPSBxdWVyeUJ1aWxkZXJNb2RlbC50eXBlO1xyXG4gICAgcnVsZS5vcGVyYXRvciA9IHF1ZXJ5QnVpbGRlck1vZGVsLm9wZXJhdG9yO1xyXG4gICAgcnVsZS52YWx1ZSA9IHF1ZXJ5QnVpbGRlck1vZGVsLnZhbHVlIGluc3RhbmNlb2YgQXJyYXlcclxuICAgICAgPyBxdWVyeUJ1aWxkZXJNb2RlbC50eXBlID09PSAnZGF0ZScgPyBuZXcgRGF0ZShxdWVyeUJ1aWxkZXJNb2RlbC52YWx1ZSkgOiBxdWVyeUJ1aWxkZXJNb2RlbC52YWx1ZVxyXG4gICAgICA6IFtxdWVyeUJ1aWxkZXJNb2RlbC50eXBlID09PSAnZGF0ZScgPyBuZXcgRGF0ZShxdWVyeUJ1aWxkZXJNb2RlbC52YWx1ZSkgOiBxdWVyeUJ1aWxkZXJNb2RlbC52YWx1ZV07XHJcbiAgfVxyXG4gIHJldHVybiBydWxlO1xyXG59XHJcbiIsIjxpb24taXRlbSAqbmdJZj1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlKVwiPlxyXG4gIDxpb24tbGFiZWwgW2F0dHIuZm9yXT1cImRhdGEuVmFsdWVcIlxyXG4gICAgICAgICAgICAgKm5nSWY9XCJkYXRhLlNob3dMYWJlbCA9PT0gdW5kZWZpbmVkIHx8IGRhdGEuU2hvd0xhYmVsXCJcclxuICAgICAgICAgICAgIFtwb3NpdGlvbl09XCJkYXRhLkxhYmVsUG9zaXRpb24gPyBkYXRhLkxhYmVsUG9zaXRpb24gOiAnc3RhY2tlZCdcIj5cclxuICAgIHt7ZGF0YS5MYWJlbH19XHJcbiAgICA8aW9uLXRleHQgKm5nSWY9XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWRGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZEZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZClcIlxyXG4gICAgICAgICAgICAgIGNvbG9yPVwiZGFuZ2VyXCI+KjwvaW9uLXRleHQ+XHJcbiAgPC9pb24tbGFiZWw+XHJcbiAgPGRpdiBjbGFzcz1cInFiY29udGFpbmVyXCI+XHJcbiAgICA8cXVlcnktYnVpbGRlciBbKG5nTW9kZWwpXT0ncXVlcnlDdHJsJ1xyXG4gICAgICAgICAgICAgICAgICAgWyhjb25maWcpXT0nY3VycmVudENvbmZpZydcclxuICAgICAgICAgICAgICAgICAgIFthbGxvd1J1bGVzZXRdPSdhbGxvd1J1bGVzZXQnXHJcbiAgICAgICAgICAgICAgICAgICBbYWxsb3dDb2xsYXBzZV09J2FsbG93Q29sbGFwc2UnXHJcbiAgICAgICAgICAgICAgICAgICBbZmlsdGVyc109J2ZpbHRlcnMnXHJcbiAgICAgICAgICAgICAgICAgICBbcGVyc2lzdFZhbHVlT25GaWVsZENoYW5nZV09J3BlcnNpc3RWYWx1ZU9uRmllbGRDaGFuZ2UnPlxyXG4gICAgICA8IS0tQU5EIE9SIFN3dGljaC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpxdWVyeVN3aXRjaEdyb3VwPVwibGV0IHJ1bGVzZXQ7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgIDxrZW5kby1kcm9wZG93bmxpc3QgWyhuZ01vZGVsKV09XCJydWxlc2V0LmNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQsIHJ1bGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImNvbmRpdGlvbkxpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1wiPlxyXG4gICAgICAgIDwva2VuZG8tZHJvcGRvd25saXN0PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLVJ1bGUgUnVsZVNldCBSZW1vdmUgUnVsZSBTZXQgQnV0dG9uLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5QnV0dG9uR3JvdXA9XCJsZXQgcnVsZXNldDsgbGV0IGFkZFJ1bGU9YWRkUnVsZTsgbGV0IGFkZFJ1bGVTZXQ9YWRkUnVsZVNldDsgbGV0IHJlbW92ZVJ1bGVTZXQ9cmVtb3ZlUnVsZVNldFwiPlxyXG4gICAgICAgIDwhLS1BZGQgUnVsZSBCdXR0b24tLT5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwib3V0bGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJvbmc9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZFJ1bGUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uYWRkXCI+XHJcbiAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCIncGx1cydcIiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDVweDtcIj48L2ZhLWljb24+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImlvbi10ZXh0LWNhcGl0YWxpemVcIj5BZGQ8L3NwYW4+XHJcbiAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgIDwhLS1BZGQgUnVsZVNldCBCdXR0b24tLT5cclxuICAgICAgICA8aW9uLWJ1dHRvbiAqbmdJZj1cImFkZFJ1bGVTZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9uZz1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkUnVsZVNldCgpXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b25hZGRcIj5cclxuICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cIidwbHVzJ1wiIHN0eWxlPVwicGFkZGluZy1yaWdodDogNXB4O1wiPjwvZmEtaWNvbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW9uLXRleHQtY2FwaXRhbGl6ZVwiPkFkZCBSdWxlIFNldDwvc3Bhbj5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPCEtLVJlbW92ZSBSdWxlU2V0IEJ1dHRvbi0tPlxyXG4gICAgICAgIDxpb24tYnV0dG9uICpuZ0lmPVwicmVtb3ZlUnVsZVNldFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm91dGxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb25nPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVSdWxlU2V0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbnJlbW92ZVwiPlxyXG4gICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiJ3RpbWVzJ1wiIHN0eWxlPVwicGFkZGluZy1yaWdodDogNXB4O1wiPjwvZmEtaWNvbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW9uLXRleHQtY2FwaXRhbGl6ZVwiPlJlbW92ZSBSdWxlIFNldDwvc3Bhbj5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tUmVtb3ZlIFJ1bGUgQnV0dG9uLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5UmVtb3ZlQnV0dG9uPVwibGV0IHJ1bGU7IGxldCByZW1vdmVSdWxlPXJlbW92ZVJ1bGVcIj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwib3V0bGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJvbmc9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVJ1bGUocnVsZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbnJlbW92ZVwiPlxyXG4gICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiJ21pbnVzJ1wiXHJcbiAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDVweDtcIj48L2ZhLWljb24+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImlvbi10ZXh0LWNhcGl0YWxpemVcIj5SZW1vdmUgUnVsZTwvc3Bhbj5cclxuICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tTmFtZSBkcm9wZG93bi0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpxdWVyeUZpZWxkPVwibGV0IHJ1bGU7IGxldCBmaWVsZHM9ZmllbGRzOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2U7IGxldCBnZXRGaWVsZHM9Z2V0RmllbGRzXCI+XHJcbiAgICAgICAgPGtlbmRvLWRyb3Bkb3dubGlzdCBbKG5nTW9kZWwpXT1cInJ1bGUuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50LCBydWxlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJnZXRGaWVsZHMocnVsZS5lbnRpdHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRGaWVsZD1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVGaWVsZD1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVQcmltaXRpdmVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmctcmlnaHQ6MTBweDtcIj5cclxuICAgICAgICA8L2tlbmRvLWRyb3Bkb3dubGlzdD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS1PcGVyYXRvciBkcm9wZG93bi0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpxdWVyeU9wZXJhdG9yPVwibGV0IHJ1bGU7IGxldCBvcGVyYXRvcnM9b3BlcmF0b3JzOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIiBzdHlsZT1cInBhZGRpbmc6MTBweFwiPlxyXG4gICAgICAgIDxrZW5kby1kcm9wZG93bmxpc3QgWyhuZ01vZGVsKV09XCJydWxlLm9wZXJhdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudCwgcnVsZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiZ2V0T3BlcmF0b3JzKG9wZXJhdG9ycywgcnVsZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEZpZWxkPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUZpZWxkPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZVByaW1pdGl2ZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZy1yaWdodDoxMHB4O1wiPlxyXG4gICAgICAgIDwva2VuZG8tZHJvcGRvd25saXN0PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLVRleHQgRmllbGQtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgZmllbGQ9ZmllbGQ7IHR5cGU6ICdzdHJpbmcnOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICA8a2VuZG8tdGV4dGJveCBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtjbGVhckJ1dHRvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b21UZXh0Ym94XCI+XHJcbiAgICAgICAgPC9rZW5kby10ZXh0Ym94PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLVRleHRBcmVhIEZpZWxkLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgdHlwZTogJ3RleHRhcmVhJzsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgPGtlbmRvLXRleHRhcmVhIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm93c109XCI1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbHNdPVwiNDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNpemFibGU9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIj5cclxuICAgICAgICA8L2tlbmRvLXRleHRhcmVhPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLU51bWJlciBGaWVsZC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IGxldCBmaWVsZD1maWVsZDsgdHlwZTogJ251bWJlcic7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgIDxrZW5kby1udW1lcmljdGV4dGJveCBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlY2ltYWxzXT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiPlxyXG4gICAgICAgIDwva2VuZG8tbnVtZXJpY3RleHRib3g+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tRGF0ZSBGaWVsZC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IHR5cGU6ICdkYXRlJzsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgPGtlbmRvLWRhdGVwaWNrZXIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhclR5cGU9XCJjbGFzc2ljXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCI+XHJcbiAgICAgICAgPC9rZW5kby1kYXRlcGlja2VyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLUNhdGVnb3J5IEZpZWxkLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IG9wdGlvbnM9b3B0aW9uczsgdHlwZTogJ2NhdGVnb3J5JzsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgPGtlbmRvLWRyb3Bkb3dubGlzdCBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJnZXRPcHRpb25MaXN0KG9wdGlvbnMsIHJ1bGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRGaWVsZD1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVGaWVsZD1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVQcmltaXRpdmVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiPlxyXG4gICAgICAgIDwva2VuZG8tZHJvcGRvd25saXN0PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLURyb3BEb3duIE11bHRpU2VsZWN0IEZpZWxkLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IG9wdGlvbnM9b3B0aW9uczsgdHlwZTogJ211bHRpc2VsZWN0JzsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgPGtlbmRvLW11bHRpc2VsZWN0IFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJnZXRPcHRpb25MaXN0KG9wdGlvbnMsIHJ1bGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEZpZWxkPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZVByaW1pdGl2ZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6MzAlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIj5cclxuICAgICAgICA8L2tlbmRvLW11bHRpc2VsZWN0PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLUJvb2xlYW4gRmllbGQtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyB0eXBlOiAnYm9vbGVhbic7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b21DaGVja0JveFwiXHJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICAga2VuZG9DaGVja0JveCAvPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvcXVlcnktYnVpbGRlcj5cclxuICAgIDxicj5cclxuICAgIDxkaXYgKm5nSWY9XCJkYXRhLlNob3dRdWVyeVJlc3VsdFwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxsYWJlbD5RdWVyeSBSZXN1bHQ8L2xhYmVsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHRleHRhcmVhIGNsYXNzPVwib3V0cHV0XCJcclxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZT1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgW3Jvd3NdPVwiMTBcIlxyXG4gICAgICAgICAgICAgICAgW2NvbHNdPVwiNDBcIj57e3F1ZXJ5Q3RybCB8IGpzb259fTwvdGV4dGFyZWE+XHJcbiAgICAgIDxicj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBzdHlsZT1cIndpZHRoOjEwMCVcIiBzbG90PVwiZW5kXCI+XHJcbiAgICAgIDxpb24tYnV0dG9uICpuZ0lmPVwiIWlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICBzdHJvbmc9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb21wbGV0ZVJ1bGUodHJ1ZSwgbnVsbClcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbmFwcGx5XCI+XHJcbiAgICAgICAgPGZhLWljb24gW2ljb25dPVwiJ3NhdmUnXCIgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiA1cHg7XCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW9uLXRleHQtY2FwaXRhbGl6ZVwiPkFwcGx5PC9zcGFuPlxyXG4gICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgIDxpb24tYnV0dG9uICpuZ0lmPVwiaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0cm9uZz1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbXBsZXRlUnVsZShmYWxzZSwgbnVsbClcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbmFwcGx5XCI+XHJcbiAgICAgICAgPGZhLWljb24gW2ljb25dPVwiJ3NhdmUnXCIgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiA1cHg7XCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW9uLXRleHQtY2FwaXRhbGl6ZVwiPlVuZG8gQXBwbHk8L3NwYW4+XHJcbiAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2lvbi1pdGVtPlxyXG4iXX0=
@@ -8,8 +8,9 @@ import * as i1 from "../services/zcomponent.service";
8
8
  import * as i2 from "mmhglobal-zcore";
9
9
  import * as i3 from "@progress/telerik-angular-report-viewer";
10
10
  export class ZreportComponent extends FieldBase {
11
- constructor(compService, resourceApiService) {
11
+ constructor(compService, fontAweSomeService, resourceApiService) {
12
12
  super(compService);
13
+ this.fontAweSomeService = fontAweSomeService;
13
14
  this.resourceApiService = resourceApiService;
14
15
  this.title = "Report Viewer";
15
16
  this.viewerContainerStyle = {
@@ -98,8 +99,8 @@ export class ZreportComponent extends FieldBase {
98
99
  // this.paramToResizeReportViewer = false;
99
100
  //}
100
101
  }
101
- getFontAwesome(iconName) {
102
- return ZComponentHelper.getFontAwesome(iconName);
102
+ getFontAwesome(iconName, fontAweSomeService) {
103
+ return ZComponentHelper.getFontAwesome(iconName, fontAweSomeService);
103
104
  }
104
105
  resizeViewer(e, args) {
105
106
  //console.log("Page ready.");
@@ -118,16 +119,16 @@ export class ZreportComponent extends FieldBase {
118
119
  }
119
120
  }
120
121
  }
121
- ZreportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ZreportComponent, deps: [{ token: i1.ZComponentService }, { token: i2.ResourceApiService }], target: i0.ɵɵFactoryTarget.Component });
122
- ZreportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ZreportComponent, selector: "app-zreport", host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "viewer", first: true, predicate: ["reportViewer1"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div width=\"100%\" height=\"800px\">\r\n <!--<ion-button class=\"button-container\"\r\n fill=\"outline\"\r\n color=\"dark\"\r\n size=\"small\"\r\n strong=\"false\"\r\n [hidden]=\"false\"\r\n [disabled]=\"false\"\r\n (click)=\"ReportViewer.refreshReport()\">\r\n <div style=\"padding-right: 5px;\"></div>\r\n <span class=\"ion-text-capitalize\">Refresh</span>\r\n </ion-button>\r\n\r\n <ion-button class=\"button-container\"\r\n fill=\"outline\"\r\n color=\"dark\"\r\n size=\"small\"\r\n strong=\"false\"\r\n [hidden]=\"false\"\r\n [disabled]=\"false\"\r\n (click)=\"ReportViewer.commands.print.exec()\">\r\n <fa-icon [icon]=\"getFontAwesome('print')\"></fa-icon>\r\n <div style=\"padding-right: 5px;\"></div>\r\n <span class=\"ion-text-capitalize\">Print</span>\r\n </ion-button>-->\r\n\r\n <tr-viewer #reportViewer1\r\n [containerStyle]=\"viewerContainerStyle\"\r\n [serviceUrl]=\"resourceURL\"\r\n [reportSource]=\"ReportSource\"\r\n [viewMode]=\"'INTERACTIVE'\"\r\n [scaleMode]=\"'SPECIFIC'\"\r\n [scale]=\"1.0\"\r\n [enableAccessibility]=\"false\"\r\n [ready]=\"ready\"\r\n [viewerToolTipOpening]=\"viewerToolTipOpening\"\r\n [exportBegin]=\"exportBeginHandler\"\r\n [exportEnd]=\"exportEndHandler\"\r\n [pageReady]=\"onPageReady\"\r\n [renderingEnd]=\"onRenderingEnd\">\r\n </tr-viewer>\r\n</div>\r\n", styles: ["#reportViewer1{height:200px}#reportViewer1 .k-splitter .k-scrollable{overflow:hidden}.k-pdf-export,.k-pdf-export *{font-family:Arial Unicode MS}\n"], components: [{ type: i3.TelerikReportViewerComponent, selector: "tr-viewer", inputs: ["keepClientAlive", "id", "serviceUrl", "reportServer", "templateUrl", "initialPageAreaImageUrl", "reportSource", "sendEmail", "parameters", "scale", "scaleMode", "viewMode", "pageMode", "persistSession", "parameterEditors", "authenticationToken", "printMode", "selector", "disabledButtonClass", "checkedButtonClass", "enableAccessibility", "searchMetadataOnDemand", "parametersAreaVisible", "documentMapVisible", "ready", "error", "parametersAreaPosition", "documentMapAreaPosition", "exportBegin", "exportEnd", "sendEmailBegin", "sendEmailEnd", "pageReady", "printBegin", "printEnd", "renderingBegin", "renderingEnd", "updateUi", "interactiveActionExecuting", "interactiveActionEnter", "interactiveActionLeave", "viewerToolTipOpening", "containerStyle"] }] });
123
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ZreportComponent, decorators: [{
122
+ ZreportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZreportComponent, deps: [{ token: i1.ZComponentService }, { token: i2.FontAweSomeService }, { token: i2.ResourceApiService }], target: i0.ɵɵFactoryTarget.Component });
123
+ ZreportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZreportComponent, selector: "app-zreport", host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "viewer", first: true, predicate: ["reportViewer1"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div width=\"100%\" height=\"800px\">\r\n <!--<ion-button class=\"button-container\"\r\n fill=\"outline\"\r\n color=\"dark\"\r\n size=\"small\"\r\n strong=\"false\"\r\n [hidden]=\"false\"\r\n [disabled]=\"false\"\r\n (click)=\"ReportViewer.refreshReport()\">\r\n <div style=\"padding-right: 5px;\"></div>\r\n <span class=\"ion-text-capitalize\">Refresh</span>\r\n </ion-button>\r\n\r\n <ion-button class=\"button-container\"\r\n fill=\"outline\"\r\n color=\"dark\"\r\n size=\"small\"\r\n strong=\"false\"\r\n [hidden]=\"false\"\r\n [disabled]=\"false\"\r\n (click)=\"ReportViewer.commands.print.exec()\">\r\n <fa-icon [icon]=\"getFontAwesome('print')\"></fa-icon>\r\n <div style=\"padding-right: 5px;\"></div>\r\n <span class=\"ion-text-capitalize\">Print</span>\r\n </ion-button>-->\r\n\r\n <tr-viewer #reportViewer1\r\n [containerStyle]=\"viewerContainerStyle\"\r\n [serviceUrl]=\"resourceURL\"\r\n [reportSource]=\"ReportSource\"\r\n [viewMode]=\"'INTERACTIVE'\"\r\n [scaleMode]=\"'SPECIFIC'\"\r\n [scale]=\"1.0\"\r\n [enableAccessibility]=\"false\"\r\n [ready]=\"ready\"\r\n [viewerToolTipOpening]=\"viewerToolTipOpening\"\r\n [exportBegin]=\"exportBeginHandler\"\r\n [exportEnd]=\"exportEndHandler\"\r\n [pageReady]=\"onPageReady\"\r\n [renderingEnd]=\"onRenderingEnd\">\r\n </tr-viewer>\r\n</div>\r\n", styles: ["#reportViewer1{height:200px}#reportViewer1 .k-splitter .k-scrollable{overflow:hidden}.k-pdf-export,.k-pdf-export *{font-family:Arial Unicode MS}\n"], components: [{ type: i3.TelerikReportViewerComponent, selector: "tr-viewer", inputs: ["keepClientAlive", "id", "serviceUrl", "reportServer", "templateUrl", "initialPageAreaImageUrl", "reportSource", "sendEmail", "parameters", "scale", "scaleMode", "viewMode", "pageMode", "persistSession", "parameterEditors", "authenticationToken", "printMode", "selector", "disabledButtonClass", "checkedButtonClass", "enableAccessibility", "searchMetadataOnDemand", "parametersAreaVisible", "documentMapVisible", "ready", "error", "parametersAreaPosition", "documentMapAreaPosition", "exportBegin", "exportEnd", "sendEmailBegin", "sendEmailEnd", "pageReady", "printBegin", "printEnd", "renderingBegin", "renderingEnd", "updateUi", "interactiveActionExecuting", "interactiveActionEnter", "interactiveActionLeave", "viewerToolTipOpening", "containerStyle"] }] });
124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZreportComponent, decorators: [{
124
125
  type: Component,
125
126
  args: [{ selector: "app-zreport", template: "<div width=\"100%\" height=\"800px\">\r\n <!--<ion-button class=\"button-container\"\r\n fill=\"outline\"\r\n color=\"dark\"\r\n size=\"small\"\r\n strong=\"false\"\r\n [hidden]=\"false\"\r\n [disabled]=\"false\"\r\n (click)=\"ReportViewer.refreshReport()\">\r\n <div style=\"padding-right: 5px;\"></div>\r\n <span class=\"ion-text-capitalize\">Refresh</span>\r\n </ion-button>\r\n\r\n <ion-button class=\"button-container\"\r\n fill=\"outline\"\r\n color=\"dark\"\r\n size=\"small\"\r\n strong=\"false\"\r\n [hidden]=\"false\"\r\n [disabled]=\"false\"\r\n (click)=\"ReportViewer.commands.print.exec()\">\r\n <fa-icon [icon]=\"getFontAwesome('print')\"></fa-icon>\r\n <div style=\"padding-right: 5px;\"></div>\r\n <span class=\"ion-text-capitalize\">Print</span>\r\n </ion-button>-->\r\n\r\n <tr-viewer #reportViewer1\r\n [containerStyle]=\"viewerContainerStyle\"\r\n [serviceUrl]=\"resourceURL\"\r\n [reportSource]=\"ReportSource\"\r\n [viewMode]=\"'INTERACTIVE'\"\r\n [scaleMode]=\"'SPECIFIC'\"\r\n [scale]=\"1.0\"\r\n [enableAccessibility]=\"false\"\r\n [ready]=\"ready\"\r\n [viewerToolTipOpening]=\"viewerToolTipOpening\"\r\n [exportBegin]=\"exportBeginHandler\"\r\n [exportEnd]=\"exportEndHandler\"\r\n [pageReady]=\"onPageReady\"\r\n [renderingEnd]=\"onRenderingEnd\">\r\n </tr-viewer>\r\n</div>\r\n", styles: ["#reportViewer1{height:200px}#reportViewer1 .k-splitter .k-scrollable{overflow:hidden}.k-pdf-export,.k-pdf-export *{font-family:Arial Unicode MS}\n"] }]
126
- }], ctorParameters: function () { return [{ type: i1.ZComponentService }, { type: i2.ResourceApiService }]; }, propDecorators: { viewer: [{
127
+ }], ctorParameters: function () { return [{ type: i1.ZComponentService }, { type: i2.FontAweSomeService }, { type: i2.ResourceApiService }]; }, propDecorators: { viewer: [{
127
128
  type: ViewChild,
128
129
  args: ['reportViewer1', { static: false }]
129
130
  }], onResize: [{
130
131
  type: HostListener,
131
132
  args: ['window:resize', ['$event']]
132
133
  }] } });
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienJlcG9ydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96cmVwb3J0L3pyZXBvcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenJlcG9ydC96cmVwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBNEIsWUFBWSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUlwSCwyQ0FBMkM7QUFDM0MsT0FBTyxFQUFzQixnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7QUFZOUQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFNBQVM7SUFnQjdDLFlBQVksV0FBOEIsRUFBVSxrQkFBc0M7UUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7UUFBNUQsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQWIxRixVQUFLLEdBQUcsZUFBZSxDQUFDO1FBQ2pCLHlCQUFvQixHQUFHO1lBQzVCLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLEtBQUssRUFBRSxNQUFNO1lBQ2IsTUFBTSxFQUFFLE9BQU87WUFDZixDQUFDLGFBQWEsQ0FBQyxFQUFFLGVBQWU7U0FDakMsQ0FBQztRQUVLLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDbkIsOEJBQXlCLEdBQUcsS0FBSyxDQUFDO0lBRXVFLENBQUM7SUFFbEgsUUFBUTtRQUNOLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lB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QU41QixTQUFTOytCQUNFLGFBQWE7eUlBTXdCLE1BQU07c0JBQXBELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFrRTdDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgSG9zdExpc3RlbmVyLCBBZnRlclZpZXdJbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7IFRlbGVyaWtSZXBvcnRWaWV3ZXJDb21wb25lbnQgfSBmcm9tIFwiQHByb2dyZXNzL3RlbGVyaWstYW5ndWxhci1yZXBvcnQtdmlld2VyXCI7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7IFJlc291cmNlQXBpU2VydmljZSwgWkNvbXBvbmVudEhlbHBlciB9IGZyb20gXCJtbWhnbG9iYWwtemNvcmVcIjtcclxuaW1wb3J0IHsgRmllbGRCYXNlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvZmllbGRiYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy96Y29tcG9uZW50LnNlcnZpY2VcIjtcclxuXHJcbi8vIGltcG9ydCAqIGFzICQgZnJvbSAnanF1ZXJ5JztcclxuZGVjbGFyZSB2YXIgJDogYW55O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLXpyZXBvcnRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3pyZXBvcnQuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4venJlcG9ydC5jb21wb25lbnQuc2Nzc1wiXSxcclxuICAvLyBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBacmVwb3J0Q29tcG9uZW50IGV4dGVuZHMgRmllbGRCYXNlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBAVmlld0NoaWxkKCdyZXBvcnRWaWV3ZXIxJywgeyBzdGF0aWM6IGZhbHNlIH0pIHZpZXdlcjogVGVsZXJpa1JlcG9ydFZpZXdlckNvbXBvbmVudDtcclxuXHJcbiAgdGl0bGUgPSBcIlJlcG9ydCBWaWV3ZXJcIjtcclxuICBwdWJsaWMgdmlld2VyQ29udGFpbmVyU3R5bGUgPSB7XHJcbiAgICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxyXG4gICAgd2lkdGg6IFwiMTAwJVwiLFxyXG4gICAgaGVpZ2h0OiBcIjgwMHB4XCIsXHJcbiAgICBbJ2ZvbnQtZmFtaWx5J106ICdtcyBzYW5zIHNlcmlmJ1xyXG4gIH07XHJcblxyXG4gIHB1YmxpYyBpc1Zpc2libGUgPSB0cnVlO1xyXG4gIHB1YmxpYyByZXNvdXJjZVVSTCA9IG51bGw7XHJcbiAgcHVibGljIFJlcG9ydFNvdXJjZSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBwYXJhbVRvUmVzaXplUmVwb3J0Vmlld2VyID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNvbXBTZXJ2aWNlOiBaQ29tcG9uZW50U2VydmljZSwgcHJpdmF0ZSByZXNvdXJjZUFwaVNlcnZpY2U6IFJlc291cmNlQXBpU2VydmljZSkgeyBzdXBlcihjb21wU2VydmljZSkgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHN1cGVyLmluaXRDb21wb25lbnQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5yZXNvdXJjZVVSTCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTCh0aGlzLmRhdGEuUmVzb3VyY2VVUkwpO1xyXG4gICAgICBpZiAoIXRoaXMucmVzb3VyY2VVUkwpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcInJlc291cmNlVVJMIGlzIGVtcHR5LlwiKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCEhdGhpcy5kYXRhLklzQXV0b0dlbmVyYXRlUmVwb3J0KSB7XHJcbiAgICAgICAgdGhpcy5SZXBvcnRTb3VyY2UgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLlJlcG9ydFNvdXJjZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgLy8gTG9jYWxpemF0aW9uLlxyXG4gICAgY29uc3QgbGFuZ3VhZ2UgPSBuYXZpZ2F0b3IubGFuZ3VhZ2U7XHJcbiAgICBsZXQgcmVzb3VyY2VzID0gJ0xvYWRpbmcuLi4nOyAvLyBEZWZhdWx0LlxyXG5cclxuICAgIHRoaXMudmlld2VyLnZpZXdlck9iamVjdC5zdHJpbmdSZXNvdXJjZXMgPSBPYmplY3QuYXNzaWduKHRoaXMudmlld2VyLnZpZXdlck9iamVjdC5zdHJpbmdSZXNvdXJjZXMsIHJlc291cmNlcyk7XHJcbiAgfVxyXG5cclxuICByZWFkeSgpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiUmVwb3J0IHJlYWR5LlwiKTtcclxuICAgIC8vaWYgKHRoaXMuZGF0YVsnaGlkZUhpc3RvcnlCYWNrJ10pIHsgJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl9oaXN0b3J5QmFjayddXCIpLnBhcmVudCgpLmhpZGUoKTsgfVxyXG4gICAgLy9pZiAodGhpcy5kYXRhWydoaWRlSGlzdG9yeUZvcndhcmQnXSkgeyAkKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX2hpc3RvcnlGb3J3YXJkJ11cIikucGFyZW50KCkuaGlkZSgpOyB9XHJcbiAgICAvL2lmICh0aGlzLmRhdGFbJ2hpZGVSZWZyZXNoJ10pIHsgJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl9yZWZyZXNoJ11cIikucGFyZW50KCkuaGlkZSgpOyB9XHJcbiAgICAvL2lmICh0aGlzLmRhdGFbJ2hpZGVTdG9wUmVuZGVyaW5nJ10pIHsgJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl9zdG9wUmVuZGVyaW5nJ11cIikucGFyZW50KCkuaGlkZSgpOyB9XHJcbiAgICAvL2lmICh0aGlzLmRhdGFbJ2hpZGVHb1RvRmlyc3RQYWdlJ10pIHsgJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl9nb1RvRmlyc3RQYWdlJ11cIikucGFyZW50KCkuaGlkZSgpOyB9XHJcbiAgICAvL2lmICh0aGlzLmRhdGFbJ2hpZGVHb1RvUHJldlBhZ2UnXSkgeyAkKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX2dvVG9QcmV2UGFnZSddXCIpLnBhcmVudCgpLmhpZGUoKTsgfVxyXG4gICAgLy9pZiAodGhpcy5kYXRhWydoaWRlR29Ub05leHRQYWdlJ10pIHsgJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl9nb1RvTmV4dFBhZ2UnXVwiKS5wYXJlbnQoKS5oaWRlKCk7IH1cclxuICAgIC8vaWYgKHRoaXMuZGF0YVsnaGlkZUdvVG9MYXN0UGFnZSddKSB7ICQoXCJbZGF0YS1jb21tYW5kKj0ndGVsZXJpa19SZXBvcnRWaWV3ZXJfZ29Ub0xhc3RQYWdlJ11cIikucGFyZW50KCkuaGlkZSgpOyB9XHJcbiAgICAvL2lmICh0aGlzLmRhdGFbJ2hpZGVUb2dnbGVQcmludFByZXZpZXcnXSkgeyAkKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX3RvZ2dsZVByaW50UHJldmlldyddXCIpLnBhcmVudCgpLmhpZGUoKTsgfVxyXG4gICAgLy9pZiAodGhpcy5kYXRhWydoaWRlRXhwb3J0J10pIHsgJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl9leHBvcnQnXVwiKS5wYXJlbnQoKS5oaWRlKCk7IH1cclxuICAgIC8vaWYgKHRoaXMuZGF0YVsnaGlkZVByaW50J10pIHsgJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl9wcmludCddXCIpLnBhcmVudCgpLmhpZGUoKTsgfVxyXG4gICAgJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl90b2dnbGVEb2N1bWVudE1hcCddXCIpLnBhcmVudCgpLmhpZGUoKTtcclxuICAgICQoXCJbZGF0YS1jb21tYW5kKj0ndGVsZXJpa19SZXBvcnRWaWV3ZXJfdG9nZ2xlUGFyYW1ldGVyc0FyZWEnXVwiKS5wYXJlbnQoKS5oaWRlKCk7XHJcbiAgICAvL2lmICh0aGlzLmRhdGFbJ2hpZGVab29tSW4nXSkgeyAkKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX3pvb21JbiddXCIpLnBhcmVudCgpLmhpZGUoKTsgfVxyXG4gICAgLy9pZiAodGhpcy5kYXRhWydoaWRlWm9vbU91dCddKSB7ICQoXCJbZGF0YS1jb21tYW5kKj0ndGVsZXJpa19SZXBvcnRWaWV3ZXJfem9vbU91dCddXCIpLnBhcmVudCgpLmhpZGUoKTsgfVxyXG4gICAgLy9pZiAodGhpcy5kYXRhWydoaWRlVG9nZ2xlWm9vbU1vZGUnXSkgeyAkKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX3RvZ2dsZVpvb21Nb2RlJ11cIikucGFyZW50KCkuaGlkZSgpOyB9XHJcbiAgICAkKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX3RvZ2dsZVNlYXJjaERpYWxvZyddXCIpLnBhcmVudCgpLmhpZGUoKTtcclxuICB9XHJcblxyXG4gIG9uUGFnZVJlYWR5KGU6IGFueSwgYXJnczogYW55KSB7XHJcbiAgICAvLyBkb2VzbnQgc2VlbSB0byB3b3JrIGluIGFuZ3VsYXIgMTNcclxuICAgIC8vdGhpcy5yZXNpemVWaWV3ZXIoZSwgYXJncyk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvblJlc2l6ZSgpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiUmVwb3J0IHJlc2l6ZWQuXCIpO1xyXG4gIH1cclxuXHJcbiAgdmlld2VyVG9vbFRpcE9wZW5pbmcoZTogYW55LCBhcmdzOiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKCd2aWV3ZXJUb29sVGlwT3BlbmluZyAnICsgYXJncy50b29sVGlwLnRleHQpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0QmVnaW5IYW5kbGVyKGU6IGFueSwgYXJnczogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhcIkV4cG9ydCBiZWdpbi5cIik7XHJcbiAgfVxyXG5cclxuICBleHBvcnRFbmRIYW5kbGVyKGU6IGFueSwgYXJnczogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhcIkV4cG9ydCBlbmQuXCIpO1xyXG4gIH1cclxuXHJcbiAgb25SZW5kZXJpbmdFbmQoZTogYW55LCBhcmdzOiBhbnkpOiB2b2lkIHtcclxuICAgIC8vIE9jY3VycyBhZnRlciByZW5kZXJpbmcgdGhlIHJlcG9ydC5cclxuICAgIGNvbnNvbGUubG9nKFwiUmVuZGVyaW5nIGVuZGVkLlwiKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZW5lcmF0ZVJlcG9ydCgpIHtcclxuICAgIGNvbnN0IHJzID0gdGhpcy5ncm91cFtcIlJlcG9ydFNvdXJjZVwiXTtcclxuICAgIHRoaXMucmVzb3VyY2VVUkwgPSByc1sndXJsJ107XHJcbiAgICB0aGlzLnZpZXdlci5zZXRSZXBvcnRTb3VyY2UocnMpO1xyXG4gICAgdGhpcy52aWV3ZXIucmVmcmVzaFJlcG9ydCgpO1xyXG5cclxuXHJcbiAgICAvL2lmICh0aGlzLnZpZXdlclsnaGVpZ2h0J10pIHtcclxuICAgIC8vICB0aGlzLnZpZXdlclsnaGVpZ2h0J10oMTApO1xyXG4gICAgLy99XHJcblxyXG4gICAgLy92YXIgZG9jdW1lbnRNYXBTcGxpdHRlciA9ICQoXCIudHJ2LWRvY3VtZW50LW1hcC1zcGxpdHRlclwiKS5kYXRhKFwia2VuZG9TcGxpdHRlclwiKTtcclxuICAgIC8vZG9jdW1lbnRNYXBTcGxpdHRlci5yZXNpemUodHJ1ZSk7XHJcblxyXG4gICAgLy92YXIgcGFyYW1ldGVyU3BsaXR0ZXIgPSAkKFwiLnRydi1wYXJhbWV0ZXJzLXNwbGl0dGVyXCIpLmRhdGEoXCJrZW5kb1NwbGl0dGVyXCIpO1xyXG4gICAgLy9wYXJhbWV0ZXJTcGxpdHRlci5yZXNpemUodHJ1ZSk7XHJcbiAgICBcclxuXHJcbiAgICAvL2lmICh0aGlzLmRhdGFbJ0F1dG9SZXNpemUnXSkge1xyXG4gICAgLy8gIHRoaXMucGFyYW1Ub1Jlc2l6ZVJlcG9ydFZpZXdlciA9IHRydWU7XHJcbiAgICAvL30gZWxzZSB7XHJcbiAgICAvLyAgdGhpcy5wYXJhbVRvUmVzaXplUmVwb3J0Vmlld2VyID0gZmFsc2U7XHJcbiAgICAvL31cclxuICB9XHJcblxyXG4gIGdldEZvbnRBd2Vzb21lKGljb25OYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBaQ29tcG9uZW50SGVscGVyLmdldEZvbnRBd2Vzb21lKGljb25OYW1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzaXplVmlld2VyKGU/OiBhbnksIGFyZ3M/OiBhbnkpIHtcclxuICAgIC8vY29uc29sZS5sb2coXCJQYWdlIHJlYWR5LlwiKTtcclxuICAgIGlmICh0aGlzLnBhcmFtVG9SZXNpemVSZXBvcnRWaWV3ZXIpIHtcclxuICAgICAgLy9jdXJyZW50bHkgZG9lc24ndCBzZWVtIHRvIHdvcmsuXHJcbiAgICAgIGNvbnN0IHBhZ2VIZWlnaHQgPSAkKFwiLnRydi1wYWdlcy1hcmVhIC50cnYtcGFnZS13cmFwcGVyXCIpLmhlaWdodCgpICsgJChcIi50cnYtbmF2XCIpLm91dGVySGVpZ2h0KCkgKyAyOyAvLyBDYWxjdWxhdGUgdGhlIHJlcG9ydCBwYWdlIGhlaWdodFxyXG4gICAgICBjb25zdCB2aWV3ZXIgPSAkKFwiI3JlcG9ydFZpZXdlcjFcIik7XHJcbiAgICAgIGNvbnN0IHZpZXdlckhlaWdodCA9IHZpZXdlci5oZWlnaHQoKTtcclxuXHJcbiAgICAgIGlmICh2aWV3ZXJIZWlnaHQgIT09IHBhZ2VIZWlnaHQpIHtcclxuICAgICAgICB2aWV3ZXIuaGVpZ2h0KHBhZ2VIZWlnaHQpO1xyXG4gICAgICAgIGNvbnN0IGRvY3VtZW50TWFwU3BsaXR0ZXIgPSAkKFwiLnRydi1kb2N1bWVudC1tYXAtc3BsaXR0ZXJcIikuZGF0YShcImtlbmRvU3BsaXR0ZXJcIik7XHJcbiAgICAgICAgZG9jdW1lbnRNYXBTcGxpdHRlci5yZXNpemUodHJ1ZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHBhcmFtZXRlclNwbGl0dGVyID0gJChcIi50cnYtcGFyYW1ldGVycy1zcGxpdHRlclwiKS5kYXRhKFwia2VuZG9TcGxpdHRlclwiKTtcclxuICAgICAgICBwYXJhbWV0ZXJTcGxpdHRlci5yZXNpemUodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI4MDBweFwiPlxyXG4gIDwhLS08aW9uLWJ1dHRvbiBjbGFzcz1cImJ1dHRvbi1jb250YWluZXJcIlxyXG4gICAgICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcclxuICAgICAgICAgICAgICBjb2xvcj1cImRhcmtcIlxyXG4gICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgICAgICAgc3Ryb25nPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtoaWRkZW5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlJlcG9ydFZpZXdlci5yZWZyZXNoUmVwb3J0KClcIj5cclxuICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiA1cHg7XCI+PC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImlvbi10ZXh0LWNhcGl0YWxpemVcIj5SZWZyZXNoPC9zcGFuPlxyXG4gIDwvaW9uLWJ1dHRvbj5cclxuXHJcbiAgPGlvbi1idXR0b24gY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCJcclxuICAgICAgICAgICAgICBmaWxsPVwib3V0bGluZVwiXHJcbiAgICAgICAgICAgICAgY29sb3I9XCJkYXJrXCJcclxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgICAgIHN0cm9uZz1cImZhbHNlXCJcclxuICAgICAgICAgICAgICBbaGlkZGVuXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJSZXBvcnRWaWV3ZXIuY29tbWFuZHMucHJpbnQuZXhlYygpXCI+XHJcbiAgICA8ZmEtaWNvbiBbaWNvbl09XCJnZXRGb250QXdlc29tZSgncHJpbnQnKVwiPjwvZmEtaWNvbj5cclxuICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiA1cHg7XCI+PC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImlvbi10ZXh0LWNhcGl0YWxpemVcIj5QcmludDwvc3Bhbj5cclxuICA8L2lvbi1idXR0b24+LS0+XHJcblxyXG4gIDx0ci12aWV3ZXIgI3JlcG9ydFZpZXdlcjFcclxuICAgICAgICAgICAgIFtjb250YWluZXJTdHlsZV09XCJ2aWV3ZXJDb250YWluZXJTdHlsZVwiXHJcbiAgICAgICAgICAgICBbc2VydmljZVVybF09XCJyZXNvdXJjZVVSTFwiXHJcbiAgICAgICAgICAgICBbcmVwb3J0U291cmNlXT1cIlJlcG9ydFNvdXJjZVwiXHJcbiAgICAgICAgICAgICBbdmlld01vZGVdPVwiJ0lOVEVSQUNUSVZFJ1wiXHJcbiAgICAgICAgICAgICBbc2NhbGVNb2RlXT1cIidTUEVDSUZJQydcIlxyXG4gICAgICAgICAgICAgW3NjYWxlXT1cIjEuMFwiXHJcbiAgICAgICAgICAgICBbZW5hYmxlQWNjZXNzaWJpbGl0eV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICBbcmVhZHldPVwicmVhZHlcIlxyXG4gICAgICAgICAgICAgW3ZpZXdlclRvb2xUaXBPcGVuaW5nXT1cInZpZXdlclRvb2xUaXBPcGVuaW5nXCJcclxuICAgICAgICAgICAgIFtleHBvcnRCZWdpbl09XCJleHBvcnRCZWdpbkhhbmRsZXJcIlxyXG4gICAgICAgICAgICAgW2V4cG9ydEVuZF09XCJleHBvcnRFbmRIYW5kbGVyXCJcclxuICAgICAgICAgICAgIFtwYWdlUmVhZHldPVwib25QYWdlUmVhZHlcIlxyXG4gICAgICAgICAgICAgW3JlbmRlcmluZ0VuZF09XCJvblJlbmRlcmluZ0VuZFwiPlxyXG4gIDwvdHItdmlld2VyPlxyXG48L2Rpdj5cclxuIl19
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienJlcG9ydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96cmVwb3J0L3pyZXBvcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenJlcG9ydC96cmVwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBNEIsWUFBWSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUlwSCwyQ0FBMkM7QUFDM0MsT0FBTyxFQUEwQyxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7QUFZOUQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFNBQVM7SUFnQjdDLFlBQ0UsV0FBOEIsRUFDdkIsa0JBQXNDLEVBQ3JDLGtCQUFzQztRQUU5QyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7UUFIWCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3JDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFoQmhELFVBQUssR0FBRyxlQUFlLENBQUM7UUFDakIseUJBQW9CLEdBQUc7WUFDNUIsUUFBUSxFQUFFLFVBQVU7WUFDcEIsS0FBSyxFQUFFLE1BQU07WUFDYixNQUFNLEVBQUUsT0FBTztZQUNmLENBQUMsYUFBYSxDQUFDLEVBQUUsZUFBZTtTQUNqQyxDQUFDO1FBRUssY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQixpQkFBWSxHQUFHLElBQUksQ0FBQztRQUNuQiw4QkFBeUIsR0FBRyxLQUFLLENBQUM7SUFRMUMsQ0FBQztJQUVELFFBQVE7UUFDTixL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QUNILENBQUM7OzZHQTVJVSxnQkFBZ0I7aUdBQWhCLGdCQUFnQixpUENuQjdCLG1vREEwQ0E7MkZEdkJhLGdCQUFnQjtrQkFONUIsU0FBUzsrQkFDRSxhQUFhOzBLQU13QixNQUFNO3NCQUFwRCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBd0U3QyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24sIEhvc3RMaXN0ZW5lciwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5pbXBvcnQgeyBUZWxlcmlrUmVwb3J0Vmlld2VyQ29tcG9uZW50IH0gZnJvbSBcIkBwcm9ncmVzcy90ZWxlcmlrLWFuZ3VsYXItcmVwb3J0LXZpZXdlclwiO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBGb250QXdlU29tZVNlcnZpY2UsIFJlc291cmNlQXBpU2VydmljZSwgWkNvbXBvbmVudEhlbHBlciB9IGZyb20gXCJtbWhnbG9iYWwtemNvcmVcIjtcclxuaW1wb3J0IHsgRmllbGRCYXNlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvZmllbGRiYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy96Y29tcG9uZW50LnNlcnZpY2VcIjtcclxuXHJcbi8vIGltcG9ydCAqIGFzICQgZnJvbSAnanF1ZXJ5JztcclxuZGVjbGFyZSB2YXIgJDogYW55O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLXpyZXBvcnRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3pyZXBvcnQuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4venJlcG9ydC5jb21wb25lbnQuc2Nzc1wiXSxcclxuICAvLyBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBacmVwb3J0Q29tcG9uZW50IGV4dGVuZHMgRmllbGRCYXNlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBAVmlld0NoaWxkKCdyZXBvcnRWaWV3ZXIxJywgeyBzdGF0aWM6IGZhbHNlIH0pIHZpZXdlcjogVGVsZXJpa1JlcG9ydFZpZXdlckNvbXBvbmVudDtcclxuXHJcbiAgdGl0bGUgPSBcIlJlcG9ydCBWaWV3ZXJcIjtcclxuICBwdWJsaWMgdmlld2VyQ29udGFpbmVyU3R5bGUgPSB7XHJcbiAgICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxyXG4gICAgd2lkdGg6IFwiMTAwJVwiLFxyXG4gICAgaGVpZ2h0OiBcIjgwMHB4XCIsXHJcbiAgICBbJ2ZvbnQtZmFtaWx5J106ICdtcyBzYW5zIHNlcmlmJ1xyXG4gIH07XHJcblxyXG4gIHB1YmxpYyBpc1Zpc2libGUgPSB0cnVlO1xyXG4gIHB1YmxpYyByZXNvdXJjZVVSTCA9IG51bGw7XHJcbiAgcHVibGljIFJlcG9ydFNvdXJjZSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBwYXJhbVRvUmVzaXplUmVwb3J0Vmlld2VyID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgY29tcFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIGZvbnRBd2VTb21lU2VydmljZTogRm9udEF3ZVNvbWVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXNvdXJjZUFwaVNlcnZpY2U6IFJlc291cmNlQXBpU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoY29tcFNlcnZpY2UpXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHN1cGVyLmluaXRDb21wb25lbnQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5yZXNvdXJjZVVSTCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTCh0aGlzLmRhdGEuUmVzb3VyY2VVUkwpO1xyXG4gICAgICBpZiAoIXRoaXMucmVzb3VyY2VVUkwpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcInJlc291cmNlVVJMIGlzIGVtcHR5LlwiKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCEhdGhpcy5kYXRhLklzQXV0b0dlbmVyYXRlUmVwb3J0KSB7XHJcbiAgICAgICAgdGhpcy5SZXBvcnRTb3VyY2UgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLlJlcG9ydFNvdXJjZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgLy8gTG9jYWxpemF0aW9uLlxyXG4gICAgY29uc3QgbGFuZ3VhZ2UgPSBuYXZpZ2F0b3IubGFuZ3VhZ2U7XHJcbiAgICBsZXQgcmVzb3VyY2VzID0gJ0xvYWRpbmcuLi4nOyAvLyBEZWZhdWx0LlxyXG5cclxuICAgIHRoaXMudmlld2VyLnZpZXdlck9iamVjdC5zdHJpbmdSZXNvdXJjZXMgPSBPYmplY3QuYXNzaWduKHRoaXMudmlld2VyLnZpZXdlck9iamVjdC5zdHJpbmdSZXNvdXJjZXMsIHJlc291cmNlcyk7XHJcbiAgfVxyXG5cclxuICByZWFkeSgpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiUmVwb3J0IHJlYWR5LlwiKTtcclxuICAgIC8vaWYgKHRoaXMuZGF0YVsnaGlkZUhpc3RvcnlCYWNrJ10pIHsgJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl9oaXN0b3J5QmFjayddXCIpLnBhcmVudCgpLmhpZGUoKTsgfVxyXG4gICAgLy9pZiAodGhpcy5kYXRhWydoaWRlSGlzdG9yeUZvcndhcmQnXSkgeyAkKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX2hpc3RvcnlGb3J3YXJkJ11cIikucGFyZW50KCkuaGlkZSgpOyB9XHJcbiAgICAvL2lmICh0aGlzLmRhdGFbJ2hpZGVSZWZyZXNoJ10pIHsgJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl9yZWZyZXNoJ11cIikucGFyZW50KCkuaGlkZSgpOyB9XHJcbiAgICAvL2lmICh0aGlzLmRhdGFbJ2hpZGVTdG9wUmVuZGVyaW5nJ10pIHsgJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl9zdG9wUmVuZGVyaW5nJ11cIikucGFyZW50KCkuaGlkZSgpOyB9XHJcbiAgICAvL2lmICh0aGlzLmRhdGFbJ2hpZGVHb1RvRmlyc3RQYWdlJ10pIHsgJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl9nb1RvRmlyc3RQYWdlJ11cIikucGFyZW50KCkuaGlkZSgpOyB9XHJcbiAgICAvL2lmICh0aGlzLmRhdGFbJ2hpZGVHb1RvUHJldlBhZ2UnXSkgeyAkKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX2dvVG9QcmV2UGFnZSddXCIpLnBhcmVudCgpLmhpZGUoKTsgfVxyXG4gICAgLy9pZiAodGhpcy5kYXRhWydoaWRlR29Ub05leHRQYWdlJ10pIHsgJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl9nb1RvTmV4dFBhZ2UnXVwiKS5wYXJlbnQoKS5oaWRlKCk7IH1cclxuICAgIC8vaWYgKHRoaXMuZGF0YVsnaGlkZUdvVG9MYXN0UGFnZSddKSB7ICQoXCJbZGF0YS1jb21tYW5kKj0ndGVsZXJpa19SZXBvcnRWaWV3ZXJfZ29Ub0xhc3RQYWdlJ11cIikucGFyZW50KCkuaGlkZSgpOyB9XHJcbiAgICAvL2lmICh0aGlzLmRhdGFbJ2hpZGVUb2dnbGVQcmludFByZXZpZXcnXSkgeyAkKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX3RvZ2dsZVByaW50UHJldmlldyddXCIpLnBhcmVudCgpLmhpZGUoKTsgfVxyXG4gICAgLy9pZiAodGhpcy5kYXRhWydoaWRlRXhwb3J0J10pIHsgJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl9leHBvcnQnXVwiKS5wYXJlbnQoKS5oaWRlKCk7IH1cclxuICAgIC8vaWYgKHRoaXMuZGF0YVsnaGlkZVByaW50J10pIHsgJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl9wcmludCddXCIpLnBhcmVudCgpLmhpZGUoKTsgfVxyXG4gICAgJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl90b2dnbGVEb2N1bWVudE1hcCddXCIpLnBhcmVudCgpLmhpZGUoKTtcclxuICAgICQoXCJbZGF0YS1jb21tYW5kKj0ndGVsZXJpa19SZXBvcnRWaWV3ZXJfdG9nZ2xlUGFyYW1ldGVyc0FyZWEnXVwiKS5wYXJlbnQoKS5oaWRlKCk7XHJcbiAgICAvL2lmICh0aGlzLmRhdGFbJ2hpZGVab29tSW4nXSkgeyAkKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX3pvb21JbiddXCIpLnBhcmVudCgpLmhpZGUoKTsgfVxyXG4gICAgLy9pZiAodGhpcy5kYXRhWydoaWRlWm9vbU91dCddKSB7ICQoXCJbZGF0YS1jb21tYW5kKj0ndGVsZXJpa19SZXBvcnRWaWV3ZXJfem9vbU91dCddXCIpLnBhcmVudCgpLmhpZGUoKTsgfVxyXG4gICAgLy9pZiAodGhpcy5kYXRhWydoaWRlVG9nZ2xlWm9vbU1vZGUnXSkgeyAkKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX3RvZ2dsZVpvb21Nb2RlJ11cIikucGFyZW50KCkuaGlkZSgpOyB9XHJcbiAgICAkKFwiW2RhdGEtY29tbWFuZCo9J3RlbGVyaWtfUmVwb3J0Vmlld2VyX3RvZ2dsZVNlYXJjaERpYWxvZyddXCIpLnBhcmVudCgpLmhpZGUoKTtcclxuICB9XHJcblxyXG4gIG9uUGFnZVJlYWR5KGU6IGFueSwgYXJnczogYW55KSB7XHJcbiAgICAvLyBkb2VzbnQgc2VlbSB0byB3b3JrIGluIGFuZ3VsYXIgMTNcclxuICAgIC8vdGhpcy5yZXNpemVWaWV3ZXIoZSwgYXJncyk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvblJlc2l6ZSgpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiUmVwb3J0IHJlc2l6ZWQuXCIpO1xyXG4gIH1cclxuXHJcbiAgdmlld2VyVG9vbFRpcE9wZW5pbmcoZTogYW55LCBhcmdzOiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKCd2aWV3ZXJUb29sVGlwT3BlbmluZyAnICsgYXJncy50b29sVGlwLnRleHQpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0QmVnaW5IYW5kbGVyKGU6IGFueSwgYXJnczogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhcIkV4cG9ydCBiZWdpbi5cIik7XHJcbiAgfVxyXG5cclxuICBleHBvcnRFbmRIYW5kbGVyKGU6IGFueSwgYXJnczogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhcIkV4cG9ydCBlbmQuXCIpO1xyXG4gIH1cclxuXHJcbiAgb25SZW5kZXJpbmdFbmQoZTogYW55LCBhcmdzOiBhbnkpOiB2b2lkIHtcclxuICAgIC8vIE9jY3VycyBhZnRlciByZW5kZXJpbmcgdGhlIHJlcG9ydC5cclxuICAgIGNvbnNvbGUubG9nKFwiUmVuZGVyaW5nIGVuZGVkLlwiKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZW5lcmF0ZVJlcG9ydCgpIHtcclxuICAgIGNvbnN0IHJzID0gdGhpcy5ncm91cFtcIlJlcG9ydFNvdXJjZVwiXTtcclxuICAgIHRoaXMucmVzb3VyY2VVUkwgPSByc1sndXJsJ107XHJcbiAgICB0aGlzLnZpZXdlci5zZXRSZXBvcnRTb3VyY2UocnMpO1xyXG4gICAgdGhpcy52aWV3ZXIucmVmcmVzaFJlcG9ydCgpO1xyXG5cclxuXHJcbiAgICAvL2lmICh0aGlzLnZpZXdlclsnaGVpZ2h0J10pIHtcclxuICAgIC8vICB0aGlzLnZpZXdlclsnaGVpZ2h0J10oMTApO1xyXG4gICAgLy99XHJcblxyXG4gICAgLy92YXIgZG9jdW1lbnRNYXBTcGxpdHRlciA9ICQoXCIudHJ2LWRvY3VtZW50LW1hcC1zcGxpdHRlclwiKS5kYXRhKFwia2VuZG9TcGxpdHRlclwiKTtcclxuICAgIC8vZG9jdW1lbnRNYXBTcGxpdHRlci5yZXNpemUodHJ1ZSk7XHJcblxyXG4gICAgLy92YXIgcGFyYW1ldGVyU3BsaXR0ZXIgPSAkKFwiLnRydi1wYXJhbWV0ZXJzLXNwbGl0dGVyXCIpLmRhdGEoXCJrZW5kb1NwbGl0dGVyXCIpO1xyXG4gICAgLy9wYXJhbWV0ZXJTcGxpdHRlci5yZXNpemUodHJ1ZSk7XHJcbiAgICBcclxuXHJcbiAgICAvL2lmICh0aGlzLmRhdGFbJ0F1dG9SZXNpemUnXSkge1xyXG4gICAgLy8gIHRoaXMucGFyYW1Ub1Jlc2l6ZVJlcG9ydFZpZXdlciA9IHRydWU7XHJcbiAgICAvL30gZWxzZSB7XHJcbiAgICAvLyAgdGhpcy5wYXJhbVRvUmVzaXplUmVwb3J0Vmlld2VyID0gZmFsc2U7XHJcbiAgICAvL31cclxuICB9XHJcblxyXG4gIGdldEZvbnRBd2Vzb21lKGljb25OYW1lOiBzdHJpbmcsIGZvbnRBd2VTb21lU2VydmljZT86IEZvbnRBd2VTb21lU2VydmljZSkge1xyXG4gICAgcmV0dXJuIFpDb21wb25lbnRIZWxwZXIuZ2V0Rm9udEF3ZXNvbWUoaWNvbk5hbWUsIGZvbnRBd2VTb21lU2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2l6ZVZpZXdlcihlPzogYW55LCBhcmdzPzogYW55KSB7XHJcbiAgICAvL2NvbnNvbGUubG9nKFwiUGFnZSByZWFkeS5cIik7XHJcbiAgICBpZiAodGhpcy5wYXJhbVRvUmVzaXplUmVwb3J0Vmlld2VyKSB7XHJcbiAgICAgIC8vY3VycmVudGx5IGRvZXNuJ3Qgc2VlbSB0byB3b3JrLlxyXG4gICAgICBjb25zdCBwYWdlSGVpZ2h0ID0gJChcIi50cnYtcGFnZXMtYXJlYSAudHJ2LXBhZ2Utd3JhcHBlclwiKS5oZWlnaHQoKSArICQoXCIudHJ2LW5hdlwiKS5vdXRlckhlaWdodCgpICsgMjsgLy8gQ2FsY3VsYXRlIHRoZSByZXBvcnQgcGFnZSBoZWlnaHRcclxuICAgICAgY29uc3Qgdmlld2VyID0gJChcIiNyZXBvcnRWaWV3ZXIxXCIpO1xyXG4gICAgICBjb25zdCB2aWV3ZXJIZWlnaHQgPSB2aWV3ZXIuaGVpZ2h0KCk7XHJcblxyXG4gICAgICBpZiAodmlld2VySGVpZ2h0ICE9PSBwYWdlSGVpZ2h0KSB7XHJcbiAgICAgICAgdmlld2VyLmhlaWdodChwYWdlSGVpZ2h0KTtcclxuICAgICAgICBjb25zdCBkb2N1bWVudE1hcFNwbGl0dGVyID0gJChcIi50cnYtZG9jdW1lbnQtbWFwLXNwbGl0dGVyXCIpLmRhdGEoXCJrZW5kb1NwbGl0dGVyXCIpO1xyXG4gICAgICAgIGRvY3VtZW50TWFwU3BsaXR0ZXIucmVzaXplKHRydWUpO1xyXG5cclxuICAgICAgICBjb25zdCBwYXJhbWV0ZXJTcGxpdHRlciA9ICQoXCIudHJ2LXBhcmFtZXRlcnMtc3BsaXR0ZXJcIikuZGF0YShcImtlbmRvU3BsaXR0ZXJcIik7XHJcbiAgICAgICAgcGFyYW1ldGVyU3BsaXR0ZXIucmVzaXplKHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiODAwcHhcIj5cclxuICA8IS0tPGlvbi1idXR0b24gY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCJcclxuICAgICAgICAgICAgICBmaWxsPVwib3V0bGluZVwiXHJcbiAgICAgICAgICAgICAgY29sb3I9XCJkYXJrXCJcclxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgICAgIHN0cm9uZz1cImZhbHNlXCJcclxuICAgICAgICAgICAgICBbaGlkZGVuXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJSZXBvcnRWaWV3ZXIucmVmcmVzaFJlcG9ydCgpXCI+XHJcbiAgICA8ZGl2IHN0eWxlPVwicGFkZGluZy1yaWdodDogNXB4O1wiPjwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJpb24tdGV4dC1jYXBpdGFsaXplXCI+UmVmcmVzaDwvc3Bhbj5cclxuICA8L2lvbi1idXR0b24+XHJcblxyXG4gIDxpb24tYnV0dG9uIGNsYXNzPVwiYnV0dG9uLWNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICAgZmlsbD1cIm91dGxpbmVcIlxyXG4gICAgICAgICAgICAgIGNvbG9yPVwiZGFya1wiXHJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICAgICAgICBzdHJvbmc9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgW2hpZGRlbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiUmVwb3J0Vmlld2VyLmNvbW1hbmRzLnByaW50LmV4ZWMoKVwiPlxyXG4gICAgPGZhLWljb24gW2ljb25dPVwiZ2V0Rm9udEF3ZXNvbWUoJ3ByaW50JylcIj48L2ZhLWljb24+XHJcbiAgICA8ZGl2IHN0eWxlPVwicGFkZGluZy1yaWdodDogNXB4O1wiPjwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJpb24tdGV4dC1jYXBpdGFsaXplXCI+UHJpbnQ8L3NwYW4+XHJcbiAgPC9pb24tYnV0dG9uPi0tPlxyXG5cclxuICA8dHItdmlld2VyICNyZXBvcnRWaWV3ZXIxXHJcbiAgICAgICAgICAgICBbY29udGFpbmVyU3R5bGVdPVwidmlld2VyQ29udGFpbmVyU3R5bGVcIlxyXG4gICAgICAgICAgICAgW3NlcnZpY2VVcmxdPVwicmVzb3VyY2VVUkxcIlxyXG4gICAgICAgICAgICAgW3JlcG9ydFNvdXJjZV09XCJSZXBvcnRTb3VyY2VcIlxyXG4gICAgICAgICAgICAgW3ZpZXdNb2RlXT1cIidJTlRFUkFDVElWRSdcIlxyXG4gICAgICAgICAgICAgW3NjYWxlTW9kZV09XCInU1BFQ0lGSUMnXCJcclxuICAgICAgICAgICAgIFtzY2FsZV09XCIxLjBcIlxyXG4gICAgICAgICAgICAgW2VuYWJsZUFjY2Vzc2liaWxpdHldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgW3JlYWR5XT1cInJlYWR5XCJcclxuICAgICAgICAgICAgIFt2aWV3ZXJUb29sVGlwT3BlbmluZ109XCJ2aWV3ZXJUb29sVGlwT3BlbmluZ1wiXHJcbiAgICAgICAgICAgICBbZXhwb3J0QmVnaW5dPVwiZXhwb3J0QmVnaW5IYW5kbGVyXCJcclxuICAgICAgICAgICAgIFtleHBvcnRFbmRdPVwiZXhwb3J0RW5kSGFuZGxlclwiXHJcbiAgICAgICAgICAgICBbcGFnZVJlYWR5XT1cIm9uUGFnZVJlYWR5XCJcclxuICAgICAgICAgICAgIFtyZW5kZXJpbmdFbmRdPVwib25SZW5kZXJpbmdFbmRcIj5cclxuICA8L3RyLXZpZXdlcj5cclxuPC9kaXY+XHJcbiJdfQ==