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
@@ -81,9 +81,9 @@ export class ZgridContainerComponent extends FieldBase {
81
81
  this.innerWidth = (window.innerWidth * 0.8);
82
82
  }
83
83
  }
84
- ZgridContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ZgridContainerComponent, deps: [{ token: i1.ZComponentService }, { token: i2.MainService }], target: i0.ɵɵFactoryTarget.Component });
85
- ZgridContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ZgridContainerComponent, selector: "app-zgrid-container", host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "formPage", first: true, predicate: ["formPage"], descendants: true, read: ViewContainerRef }, { propertyName: "drawer", first: true, predicate: DrawerComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"grid-container\" *ngIf=\"data.ComponentStyleType === 'style2'\">\r\n <kendo-drawer-container [style]=\"componentProperties.containerStyle.style\" class=\"e1tag-container-style\">\r\n <kendo-drawer #drawer mode=\"overlay\" [position]=\"'end'\" [mini]=\"false\" [animation]=\"{duration: 800}\" [expanded]=\"isShowFormPage\"\r\n [style]=\"componentProperties.containerStyle.style1\" class=\"e1tag-container-style1\" [width]=\"innerWidth\"\r\n (expandedChange)=\"onExpandChange($event)\">\r\n <ng-template kendoDrawerTemplate>\r\n <div [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2\">\r\n <div class=\"formHeader\">\r\n <label class=\"formHeader-title\">Employee Profile</label>\r\n <ion-button size=\"small\" fill=\"clear\" color=\"medium\" (click)=\"drawer.toggle()\">\r\n <fa-icon class=\"close-btn-icon\" icon=\"times\"></fa-icon>\r\n </ion-button>\r\n </div>\r\n <ng-container #formPage></ng-container>\r\n </div>\r\n </ng-template>\r\n </kendo-drawer>\r\n\r\n <kendo-drawer-content [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\">\r\n <app-zgrid [style]=\"componentProperties.containerStyle.style4\" class=\"e1tag-container-style4\" [data]=\"data\"\r\n [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\" [componentProperties]=\"componentProperties\"\r\n (showFormPage)=\"drawer.toggle($event)\">\r\n </app-zgrid>\r\n </kendo-drawer-content>\r\n </kendo-drawer-container>\r\n</div>\r\n\r\n\r\n<div class=\"grid-container\" *ngIf=\"data.ComponentStyleType !== 'style2'\">\r\n <app-zgrid [style]=\"componentProperties.containerStyle.style4\" class=\"e1tag-container-style4\" [data]=\"data\"\r\n [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\" [componentProperties]=\"componentProperties\"\r\n (showFormPage)=\"toggleFormPage($event)\">\r\n </app-zgrid>\r\n <div>\r\n <div *ngIf=\"!group.isLoading\" [class.embeddedFormPage]=\"isShowFormPage\">\r\n <ng-container #formPage></ng-container>\r\n </div>\r\n <div *ngIf=\"group.isLoading\" class=\"spinner-container\">\r\n <app-page-loader></app-page-loader>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host ::ng-deep kendo-drawer{box-shadow:-1px 0 11px 1px var(--ion-color-primary);background:#f1f9ff}:host ::ng-deep kendo-drawer .k-drawer-wrapper{padding:10px;padding-top:calc(var(--ion-header-height) + 10px)}:host ::ng-deep kendo-drawer .formHeader{display:flex}:host ::ng-deep kendo-drawer .formHeader>.formHeader-title{margin:10px 0 0 20px;font-size:calc(var(--page-title-font-size) + 2px);font-weight:600;flex-grow:1}:host ::ng-deep kendo-drawer .formHeader .close-btn-icon{font-size:calc(var(--page-title-font-size) + 4px)}.embeddedFormPage{min-height:1200px;padding:8px 10px 20px;background:#ffffff;border-radius:5px;box-shadow:0 -3px 9px 4px #0167ae;margin:30px 15px 15px}\n"], components: [{ type: i3.DrawerContainerComponent, selector: "kendo-drawer-container" }, { type: i3.DrawerComponent, selector: "kendo-drawer", inputs: ["mode", "position", "mini", "expanded", "width", "miniWidth", "autoCollapse", "items", "isItemExpanded", "animation"], outputs: ["expand", "collapse", "select", "expandedChange"], exportAs: ["kendoDrawer"] }, { type: i4.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: i3.DrawerContentComponent, selector: "kendo-drawer-content" }, { type: i6.ZgridComponent, selector: "app-zgrid" }, { type: i7.PageLoaderComponent, selector: "app-page-loader" }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.DrawerTemplateDirective, selector: "[kendoDrawerTemplate]" }] });
86
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ZgridContainerComponent, decorators: [{
84
+ ZgridContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZgridContainerComponent, deps: [{ token: i1.ZComponentService }, { token: i2.MainService }], target: i0.ɵɵFactoryTarget.Component });
85
+ ZgridContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZgridContainerComponent, selector: "app-zgrid-container", host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "formPage", first: true, predicate: ["formPage"], descendants: true, read: ViewContainerRef }, { propertyName: "drawer", first: true, predicate: DrawerComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"grid-container\" *ngIf=\"data.ComponentStyleType === 'style2'\">\r\n <kendo-drawer-container [style]=\"componentProperties.containerStyle.style\" class=\"e1tag-container-style\">\r\n <kendo-drawer #drawer mode=\"overlay\" [position]=\"'end'\" [mini]=\"false\" [animation]=\"{duration: 800}\" [expanded]=\"isShowFormPage\"\r\n [style]=\"componentProperties.containerStyle.style1\" class=\"e1tag-container-style1\" [width]=\"innerWidth\"\r\n (expandedChange)=\"onExpandChange($event)\">\r\n <ng-template kendoDrawerTemplate>\r\n <div [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2\">\r\n <div class=\"formHeader\">\r\n <label class=\"formHeader-title\">Employee Profile</label>\r\n <ion-button size=\"small\" fill=\"clear\" color=\"medium\" (click)=\"drawer.toggle()\">\r\n <fa-icon class=\"close-btn-icon\" icon=\"times\"></fa-icon>\r\n </ion-button>\r\n </div>\r\n <ng-container #formPage></ng-container>\r\n </div>\r\n </ng-template>\r\n </kendo-drawer>\r\n\r\n <kendo-drawer-content [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\">\r\n <app-zgrid [style]=\"componentProperties.containerStyle.style4\" class=\"e1tag-container-style4\" [data]=\"data\"\r\n [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\" [componentProperties]=\"componentProperties\"\r\n (showFormPage)=\"drawer.toggle($event)\">\r\n </app-zgrid>\r\n </kendo-drawer-content>\r\n </kendo-drawer-container>\r\n</div>\r\n\r\n\r\n<div class=\"grid-container\" *ngIf=\"data.ComponentStyleType !== 'style2'\">\r\n <app-zgrid [style]=\"componentProperties.containerStyle.style4\" class=\"e1tag-container-style4\" [data]=\"data\"\r\n [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\" [componentProperties]=\"componentProperties\"\r\n (showFormPage)=\"toggleFormPage($event)\">\r\n </app-zgrid>\r\n <div>\r\n <div *ngIf=\"!group.isLoading\" [class.embeddedFormPage]=\"isShowFormPage\">\r\n <ng-container #formPage></ng-container>\r\n </div>\r\n <div *ngIf=\"group.isLoading\" class=\"spinner-container\">\r\n <app-page-loader></app-page-loader>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host ::ng-deep kendo-drawer{box-shadow:-1px 0 11px 1px var(--ion-color-primary);background:#f1f9ff}:host ::ng-deep kendo-drawer .k-drawer-wrapper{padding:10px;padding-top:calc(var(--ion-header-height) + 10px)}:host ::ng-deep kendo-drawer .formHeader{display:flex}:host ::ng-deep kendo-drawer .formHeader>.formHeader-title{margin:10px 0 0 20px;font-size:calc(var(--page-title-font-size) + 2px);font-weight:600;flex-grow:1}:host ::ng-deep kendo-drawer .formHeader .close-btn-icon{font-size:calc(var(--page-title-font-size) + 4px)}.embeddedFormPage{min-height:1200px;padding:8px 10px 20px;background:#ffffff;border-radius:5px;box-shadow:0 -3px 9px 4px #0167ae;margin:30px 15px 15px}\n"], components: [{ type: i3.DrawerContainerComponent, selector: "kendo-drawer-container" }, { type: i3.DrawerComponent, selector: "kendo-drawer", inputs: ["mode", "position", "mini", "expanded", "width", "miniWidth", "autoCollapse", "items", "isItemExpanded", "animation"], outputs: ["expand", "collapse", "select", "expandedChange"], exportAs: ["kendoDrawer"] }, { type: i4.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: i3.DrawerContentComponent, selector: "kendo-drawer-content" }, { type: i6.ZgridComponent, selector: "app-zgrid" }, { type: i7.PageLoaderComponent, selector: "app-page-loader" }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.DrawerTemplateDirective, selector: "[kendoDrawerTemplate]" }] });
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZgridContainerComponent, decorators: [{
87
87
  type: Component,
88
88
  args: [{ selector: "app-zgrid-container", template: "<div class=\"grid-container\" *ngIf=\"data.ComponentStyleType === 'style2'\">\r\n <kendo-drawer-container [style]=\"componentProperties.containerStyle.style\" class=\"e1tag-container-style\">\r\n <kendo-drawer #drawer mode=\"overlay\" [position]=\"'end'\" [mini]=\"false\" [animation]=\"{duration: 800}\" [expanded]=\"isShowFormPage\"\r\n [style]=\"componentProperties.containerStyle.style1\" class=\"e1tag-container-style1\" [width]=\"innerWidth\"\r\n (expandedChange)=\"onExpandChange($event)\">\r\n <ng-template kendoDrawerTemplate>\r\n <div [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2\">\r\n <div class=\"formHeader\">\r\n <label class=\"formHeader-title\">Employee Profile</label>\r\n <ion-button size=\"small\" fill=\"clear\" color=\"medium\" (click)=\"drawer.toggle()\">\r\n <fa-icon class=\"close-btn-icon\" icon=\"times\"></fa-icon>\r\n </ion-button>\r\n </div>\r\n <ng-container #formPage></ng-container>\r\n </div>\r\n </ng-template>\r\n </kendo-drawer>\r\n\r\n <kendo-drawer-content [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\">\r\n <app-zgrid [style]=\"componentProperties.containerStyle.style4\" class=\"e1tag-container-style4\" [data]=\"data\"\r\n [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\" [componentProperties]=\"componentProperties\"\r\n (showFormPage)=\"drawer.toggle($event)\">\r\n </app-zgrid>\r\n </kendo-drawer-content>\r\n </kendo-drawer-container>\r\n</div>\r\n\r\n\r\n<div class=\"grid-container\" *ngIf=\"data.ComponentStyleType !== 'style2'\">\r\n <app-zgrid [style]=\"componentProperties.containerStyle.style4\" class=\"e1tag-container-style4\" [data]=\"data\"\r\n [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\" [componentProperties]=\"componentProperties\"\r\n (showFormPage)=\"toggleFormPage($event)\">\r\n </app-zgrid>\r\n <div>\r\n <div *ngIf=\"!group.isLoading\" [class.embeddedFormPage]=\"isShowFormPage\">\r\n <ng-container #formPage></ng-container>\r\n </div>\r\n <div *ngIf=\"group.isLoading\" class=\"spinner-container\">\r\n <app-page-loader></app-page-loader>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host ::ng-deep kendo-drawer{box-shadow:-1px 0 11px 1px var(--ion-color-primary);background:#f1f9ff}:host ::ng-deep kendo-drawer .k-drawer-wrapper{padding:10px;padding-top:calc(var(--ion-header-height) + 10px)}:host ::ng-deep kendo-drawer .formHeader{display:flex}:host ::ng-deep kendo-drawer .formHeader>.formHeader-title{margin:10px 0 0 20px;font-size:calc(var(--page-title-font-size) + 2px);font-weight:600;flex-grow:1}:host ::ng-deep kendo-drawer .formHeader .close-btn-icon{font-size:calc(var(--page-title-font-size) + 4px)}.embeddedFormPage{min-height:1200px;padding:8px 10px 20px;background:#ffffff;border-radius:5px;box-shadow:0 -3px 9px 4px #0167ae;margin:30px 15px 15px}\n"] }]
89
89
  }], ctorParameters: function () { return [{ type: i1.ZComponentService }, { type: i2.MainService }]; }, propDecorators: { formPage: [{
@@ -96,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
96
96
  type: HostListener,
97
97
  args: ['window:resize', ['$event']]
98
98
  }] } });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemdyaWQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pncmlkL2NvbnRhaW5lci96Z3JpZC1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemdyaWQvY29udGFpbmVyL3pncmlkLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBcUIsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7QUFTakUsTUFBTSxPQUFPLHVCQUF3QixTQUFRLFNBQVM7SUFNcEQsWUFBWSxXQUE4QixFQUFVLFdBQXdCO1FBQzFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUQrQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUZyRSxtQkFBYyxHQUFHLEtBQUssQ0FBQztJQUk5QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxRQUFRLENBQUMsRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjthQUNJLElBQUksSUFBSSxDQUFDLElBQUks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QyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ2QsTUFBTTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQWdEMUIsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmLCBIb3N0TGlzdGVuZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBEcmF3ZXJDb21wb25lbnQgfSBmcm9tIFwiQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItbGF5b3V0XCI7XHJcbmltcG9ydCB7IFpDb21wb25lbnRIZWxwZXIgfSBmcm9tIFwibW1oZ2xvYmFsLXpjb3JlXCI7XHJcbmltcG9ydCB7IGZpbHRlciwgaW50ZXJ2YWwsIHRhcCwgZmlyc3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBGaWVsZEJhc2UgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9maWVsZGJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IE1haW5TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL21haW4uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy96Y29tcG9uZW50LnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFwcC16Z3JpZC1jb250YWluZXJcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3pncmlkLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi96Z3JpZC1jb250YWluZXIuY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBaZ3JpZENvbnRhaW5lckNvbXBvbmVudCBleHRlbmRzIEZpZWxkQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdmb3JtUGFnZScsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBmb3JtUGFnZTtcclxuICBAVmlld0NoaWxkKERyYXdlckNvbXBvbmVudCkgcHVibGljIGRyYXdlcjogRHJhd2VyQ29tcG9uZW50O1xyXG4gIHB1YmxpYyBpbm5lcldpZHRoOiBhbnk7XHJcbiAgcHVibGljIGlzU2hvd0Zvcm1QYWdlID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNvbXBTZXJ2aWNlOiBaQ29tcG9uZW50U2VydmljZSwgcHJpdmF0ZSBtYWluU2VydmljZTogTWFpblNlcnZpY2UpIHtcclxuICAgIHN1cGVyKGNvbXBTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5Db21wb25lbnRTdHlsZVR5cGUgPT09IGBzdHlsZSR7Mn1gKSB7XHJcbiAgICAgIHRoaXMuc2V0dXBTdHlsZTIoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuZGF0YS5Db21wb25lbnRTdHlsZVR5cGUgPT09IGBzdHlsZSR7M31gKSB7XHJcbiAgICAgIHRoaXMuc2V0dXBTdHlsZTMoKTtcclxuICAgIH1cclxuICAgIHN1cGVyLmluaXRDb21wb25lbnQoKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkgeyB9XHJcblxyXG4gIC8vI3JlZ2lvbiBIZWxwZXIgRnVuY3Rpb25zXHJcbiAgcHJpdmF0ZSBkaXNwbGF5Rm9ybVBhZ2UoKSB7XHJcbiAgICBjb25zdCBwYWdlRWxlbWVudCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSh0aGlzLmRhdGFbJ0NvbnRhaW5lckZvcm0nXSwgdGhpcy5ncm91cCk7XHJcbiAgICB0aGlzLm1haW5TZXJ2aWNlLmxvYWRDb250YWluZXJWaWV3KHsgdmlld0NvbnRhaW5lclJlZjogdGhpcy5mb3JtUGFnZSB9LCBwYWdlRWxlbWVudCwgdGhpcy5kYXRhLCB0aGlzLmdyb3VwKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBTdHlsZSAzOiBERUNcclxuICBwcml2YXRlIHNldHVwU3R5bGUzKCkge1xyXG4gICAgdGhpcy5ncm91cFtgZTFDbG9zZUdyaWRDb250YWluZXJgXSA9IHRoaXMudG9nZ2xlRm9ybVBhZ2UuYmluZCh0aGlzLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9nZ2xlRm9ybVBhZ2UoaXNTaG93PzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pc1Nob3dGb3JtUGFnZSA9IGlzU2hvdztcclxuICAgIGlmIChpc1Nob3cpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5Rm9ybVBhZ2UoKTtcclxuICAgICAgdGhpcy5tYWluU2VydmljZS5zY3JvbGxUb0VtYmJlZENvbXBvbmVudFBhZ2UoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5kYXRhLkNvbnRhaW5lckZvcm1BdXRvU2Nyb2xsKSB7XHJcbiAgICAgICAgdGhpcy5tYWluU2VydmljZS5zY3JvbGxUb1RvcE9mUGFnZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZm9ybVBhZ2UuY2xlYXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBTdGx5ZSAyOiBEcmF3ZXJcclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvblJlc2l6ZShldmVudCkge1xyXG4gICAgdGhpcy5zZXREcmF3ZXJXaWR0aCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cFN0eWxlMigpIHtcclxuICAgIHRoaXMuc2V0RHJhd2VyV2lkdGgoKTtcclxuICAgIHRoaXMuZ3JvdXBbYGUxQ2xvc2VHcmlkQ29udGFpbmVyYF0gPSB0aGlzLnRvZ2dsZURyYXdlci5iaW5kKHRoaXMsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlRHJhd2VyKCkge1xyXG4gICAgdGhpcy5kcmF3ZXIudG9nZ2xlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25FeHBhbmRDaGFuZ2UoaXNFeHBhbmRlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc1Nob3dGb3JtUGFnZSA9IGlzRXhwYW5kZWQ7XHJcbiAgICBpZiAoaXNFeHBhbmRlZCkge1xyXG4gICAgICB0aGlzLnNldHVwRHJhd2VyQ29udGVudCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cERyYXdlckNvbnRlbnQoKSB7XHJcbiAgICAvLyBOZWVkIHRvIHdhaXQgZm9yIGZvcm0gcGFnZSB0byByZW5kZXIgaW4gRE9NXHJcbiAgICBpZiAodGhpcy5kYXRhWydDb250YWluZXJGb3JtJ10pIHtcclxuICAgICAgaW50ZXJ2YWwoNTAwKS5waXBlKFxyXG4gICAgICAgIGZpbHRlcih4ID0+XHJcbiAgICAgICAgICB0aGlzLmZvcm1QYWdlXHJcbiAgICAgICAgKSxcclxuICAgICAgICBmaXJzdCgpLFxyXG4gICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRpc3BsYXlGb3JtUGFnZSgpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldERyYXdlcldpZHRoKCkge1xyXG4gICAgdGhpcy5pbm5lcldpZHRoID0gKHdpbmRvdy5pbm5lcldpZHRoICogMC44KTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImdyaWQtY29udGFpbmVyXCIgKm5nSWY9XCJkYXRhLkNvbXBvbmVudFN0eWxlVHlwZSA9PT0gJ3N0eWxlMidcIj5cclxuICA8a2VuZG8tZHJhd2VyLWNvbnRhaW5lciBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZS5zdHlsZVwiIGNsYXNzPVwiZTF0YWctY29udGFpbmVyLXN0eWxlXCI+XHJcbiAgICA8a2VuZG8tZHJhd2VyICNkcmF3ZXIgbW9kZT1cIm92ZXJsYXlcIiBbcG9zaXRpb25dPVwiJ2VuZCdcIiBbbWluaV09XCJmYWxzZVwiIFthbmltYXRpb25dPVwie2R1cmF0aW9uOiA4MDB9XCIgW2V4cGFuZGVkXT1cImlzU2hvd0Zvcm1QYWdlXCJcclxuICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGUuc3R5bGUxXCIgY2xhc3M9XCJlMXRhZy1jb250YWluZXItc3R5bGUxXCIgW3dpZHRoXT1cImlubmVyV2lkdGhcIlxyXG4gICAgICAoZXhwYW5kZWRDaGFuZ2UpPVwib25FeHBhbmRDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUga2VuZG9EcmF3ZXJUZW1wbGF0ZT5cclxuICAgICAgICA8ZGl2IFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlMlwiIGNsYXNzPVwiZTF0YWctY29udGFpbmVyLXN0eWxlMlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1IZWFkZXJcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybUhlYWRlci10aXRsZVwiPkVtcGxveWVlIFByb2ZpbGU8L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaXplPVwic21hbGxcIiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cIm1lZGl1bVwiIChjbGljayk9XCJkcmF3ZXIudG9nZ2xlKClcIj5cclxuICAgICAgICAgICAgICA8ZmEtaWNvbiBjbGFzcz1cImNsb3NlLWJ0bi1pY29uXCIgaWNvbj1cInRpbWVzXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgI2Zvcm1QYWdlPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9rZW5kby1kcmF3ZXI+XHJcblxyXG4gICAgPGtlbmRvLWRyYXdlci1jb250ZW50IFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlM1wiIGNsYXNzPVwiZTF0YWctY29udGFpbmVyLXN0eWxlM1wiPlxyXG4gICAgICA8YXBwLXpncmlkIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlNFwiIGNsYXNzPVwiZTF0YWctY29udGFpbmVyLXN0eWxlNFwiIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgICAgIFtncm91cF09XCJncm91cFwiIFtmb3JtXT1cImZvcm1cIiBbY29udGFpbmVyRmllbGRdPVwiY29udGFpbmVyRmllbGRcIiBbY29tcG9uZW50UHJvcGVydGllc109XCJjb21wb25lbnRQcm9wZXJ0aWVzXCJcclxuICAgICAgICAoc2hvd0Zvcm1QYWdlKT1cImRyYXdlci50b2dnbGUoJGV2ZW50KVwiPlxyXG4gICAgICA8L2FwcC16Z3JpZD5cclxuICAgIDwva2VuZG8tZHJhd2VyLWNvbnRlbnQ+XHJcbiAgPC9rZW5kby1kcmF3ZXItY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcblxyXG48ZGl2IGNsYXNzPVwiZ3JpZC1jb250YWluZXJcIiAqbmdJZj1cImRhdGEuQ29tcG9uZW50U3R5bGVUeXBlICE9PSAnc3R5bGUyJ1wiPlxyXG4gIDxhcHAtemdyaWQgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGUuc3R5bGU0XCIgY2xhc3M9XCJlMXRhZy1jb250YWluZXItc3R5bGU0XCIgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICBbZ3JvdXBdPVwiZ3JvdXBcIiBbZm9ybV09XCJmb3JtXCIgW2NvbnRhaW5lckZpZWxkXT1cImNvbnRhaW5lckZpZWxkXCIgW2NvbXBvbmVudFByb3BlcnRpZXNdPVwiY29tcG9uZW50UHJvcGVydGllc1wiXHJcbiAgICAoc2hvd0Zvcm1QYWdlKT1cInRvZ2dsZUZvcm1QYWdlKCRldmVudClcIj5cclxuICA8L2FwcC16Z3JpZD5cclxuICA8ZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIiFncm91cC5pc0xvYWRpbmdcIiBbY2xhc3MuZW1iZWRkZWRGb3JtUGFnZV09XCJpc1Nob3dGb3JtUGFnZVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICNmb3JtUGFnZT48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImdyb3VwLmlzTG9hZGluZ1wiIGNsYXNzPVwic3Bpbm5lci1jb250YWluZXJcIj5cclxuICAgICAgPGFwcC1wYWdlLWxvYWRlcj48L2FwcC1wYWdlLWxvYWRlcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemdyaWQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pncmlkL2NvbnRhaW5lci96Z3JpZC1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemdyaWQvY29udGFpbmVyL3pncmlkLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBcUIsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7QUFTakUsTUFBTSxPQUFPLHVCQUF3QixTQUFRLFNBQVM7SUFNcEQsWUFBWSxXQUE4QixFQUFVLFdBQXdCO1FBQzFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUQrQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUZyRSxtQkFBYyxHQUFHLEtBQUssQ0FBQztJQUk5QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxRQUFRLENBQUMsRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjthQUNJLElBQUksSUFBSSxDQUFDLElBQUks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QyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ2QsTUFBTTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQWdEMUIsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmLCBIb3N0TGlzdGVuZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBEcmF3ZXJDb21wb25lbnQgfSBmcm9tIFwiQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItbGF5b3V0XCI7XHJcbmltcG9ydCB7IFpDb21wb25lbnRIZWxwZXIgfSBmcm9tIFwibW1oZ2xvYmFsLXpjb3JlXCI7XHJcbmltcG9ydCB7IGZpbHRlciwgaW50ZXJ2YWwsIHRhcCwgZmlyc3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBGaWVsZEJhc2UgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9maWVsZGJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IE1haW5TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL21haW4uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy96Y29tcG9uZW50LnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFwcC16Z3JpZC1jb250YWluZXJcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3pncmlkLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi96Z3JpZC1jb250YWluZXIuY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBaZ3JpZENvbnRhaW5lckNvbXBvbmVudCBleHRlbmRzIEZpZWxkQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdmb3JtUGFnZScsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBmb3JtUGFnZTtcclxuICBAVmlld0NoaWxkKERyYXdlckNvbXBvbmVudCkgcHVibGljIGRyYXdlcjogRHJhd2VyQ29tcG9uZW50O1xyXG4gIHB1YmxpYyBpbm5lcldpZHRoOiBhbnk7XHJcbiAgcHVibGljIGlzU2hvd0Zvcm1QYWdlID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNvbXBTZXJ2aWNlOiBaQ29tcG9uZW50U2VydmljZSwgcHJpdmF0ZSBtYWluU2VydmljZTogTWFpblNlcnZpY2UpIHtcclxuICAgIHN1cGVyKGNvbXBTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5Db21wb25lbnRTdHlsZVR5cGUgPT09IGBzdHlsZSR7Mn1gKSB7XHJcbiAgICAgIHRoaXMuc2V0dXBTdHlsZTIoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuZGF0YS5Db21wb25lbnRTdHlsZVR5cGUgPT09IGBzdHlsZSR7M31gKSB7XHJcbiAgICAgIHRoaXMuc2V0dXBTdHlsZTMoKTtcclxuICAgIH1cclxuICAgIHN1cGVyLmluaXRDb21wb25lbnQoKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkgeyB9XHJcblxyXG4gIC8vI3JlZ2lvbiBIZWxwZXIgRnVuY3Rpb25zXHJcbiAgcHJpdmF0ZSBkaXNwbGF5Rm9ybVBhZ2UoKSB7XHJcbiAgICBjb25zdCBwYWdlRWxlbWVudCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSh0aGlzLmRhdGFbJ0NvbnRhaW5lckZvcm0nXSwgdGhpcy5ncm91cCk7XHJcbiAgICB0aGlzLm1haW5TZXJ2aWNlLmxvYWRDb250YWluZXJWaWV3KHsgdmlld0NvbnRhaW5lclJlZjogdGhpcy5mb3JtUGFnZSB9LCBwYWdlRWxlbWVudCwgdGhpcy5kYXRhLCB0aGlzLmdyb3VwKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBTdHlsZSAzOiBERUNcclxuICBwcml2YXRlIHNldHVwU3R5bGUzKCkge1xyXG4gICAgdGhpcy5ncm91cFtgZTFDbG9zZUdyaWRDb250YWluZXJgXSA9IHRoaXMudG9nZ2xlRm9ybVBhZ2UuYmluZCh0aGlzLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9nZ2xlRm9ybVBhZ2UoaXNTaG93PzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pc1Nob3dGb3JtUGFnZSA9IGlzU2hvdztcclxuICAgIGlmIChpc1Nob3cpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5Rm9ybVBhZ2UoKTtcclxuICAgICAgdGhpcy5tYWluU2VydmljZS5zY3JvbGxUb0VtYmJlZENvbXBvbmVudFBhZ2UoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5kYXRhLkNvbnRhaW5lckZvcm1BdXRvU2Nyb2xsKSB7XHJcbiAgICAgICAgdGhpcy5tYWluU2VydmljZS5zY3JvbGxUb1RvcE9mUGFnZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZm9ybVBhZ2UuY2xlYXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBTdGx5ZSAyOiBEcmF3ZXJcclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvblJlc2l6ZShldmVudCkge1xyXG4gICAgdGhpcy5zZXREcmF3ZXJXaWR0aCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cFN0eWxlMigpIHtcclxuICAgIHRoaXMuc2V0RHJhd2VyV2lkdGgoKTtcclxuICAgIHRoaXMuZ3JvdXBbYGUxQ2xvc2VHcmlkQ29udGFpbmVyYF0gPSB0aGlzLnRvZ2dsZURyYXdlci5iaW5kKHRoaXMsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlRHJhd2VyKCkge1xyXG4gICAgdGhpcy5kcmF3ZXIudG9nZ2xlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25FeHBhbmRDaGFuZ2UoaXNFeHBhbmRlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc1Nob3dGb3JtUGFnZSA9IGlzRXhwYW5kZWQ7XHJcbiAgICBpZiAoaXNFeHBhbmRlZCkge1xyXG4gICAgICB0aGlzLnNldHVwRHJhd2VyQ29udGVudCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cERyYXdlckNvbnRlbnQoKSB7XHJcbiAgICAvLyBOZWVkIHRvIHdhaXQgZm9yIGZvcm0gcGFnZSB0byByZW5kZXIgaW4gRE9NXHJcbiAgICBpZiAodGhpcy5kYXRhWydDb250YWluZXJGb3JtJ10pIHtcclxuICAgICAgaW50ZXJ2YWwoNTAwKS5waXBlKFxyXG4gICAgICAgIGZpbHRlcih4ID0+XHJcbiAgICAgICAgICB0aGlzLmZvcm1QYWdlXHJcbiAgICAgICAgKSxcclxuICAgICAgICBmaXJzdCgpLFxyXG4gICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRpc3BsYXlGb3JtUGFnZSgpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldERyYXdlcldpZHRoKCkge1xyXG4gICAgdGhpcy5pbm5lcldpZHRoID0gKHdpbmRvdy5pbm5lcldpZHRoICogMC44KTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImdyaWQtY29udGFpbmVyXCIgKm5nSWY9XCJkYXRhLkNvbXBvbmVudFN0eWxlVHlwZSA9PT0gJ3N0eWxlMidcIj5cclxuICA8a2VuZG8tZHJhd2VyLWNvbnRhaW5lciBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZS5zdHlsZVwiIGNsYXNzPVwiZTF0YWctY29udGFpbmVyLXN0eWxlXCI+XHJcbiAgICA8a2VuZG8tZHJhd2VyICNkcmF3ZXIgbW9kZT1cIm92ZXJsYXlcIiBbcG9zaXRpb25dPVwiJ2VuZCdcIiBbbWluaV09XCJmYWxzZVwiIFthbmltYXRpb25dPVwie2R1cmF0aW9uOiA4MDB9XCIgW2V4cGFuZGVkXT1cImlzU2hvd0Zvcm1QYWdlXCJcclxuICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGUuc3R5bGUxXCIgY2xhc3M9XCJlMXRhZy1jb250YWluZXItc3R5bGUxXCIgW3dpZHRoXT1cImlubmVyV2lkdGhcIlxyXG4gICAgICAoZXhwYW5kZWRDaGFuZ2UpPVwib25FeHBhbmRDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUga2VuZG9EcmF3ZXJUZW1wbGF0ZT5cclxuICAgICAgICA8ZGl2IFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlMlwiIGNsYXNzPVwiZTF0YWctY29udGFpbmVyLXN0eWxlMlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1IZWFkZXJcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybUhlYWRlci10aXRsZVwiPkVtcGxveWVlIFByb2ZpbGU8L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaXplPVwic21hbGxcIiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cIm1lZGl1bVwiIChjbGljayk9XCJkcmF3ZXIudG9nZ2xlKClcIj5cclxuICAgICAgICAgICAgICA8ZmEtaWNvbiBjbGFzcz1cImNsb3NlLWJ0bi1pY29uXCIgaWNvbj1cInRpbWVzXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgI2Zvcm1QYWdlPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9rZW5kby1kcmF3ZXI+XHJcblxyXG4gICAgPGtlbmRvLWRyYXdlci1jb250ZW50IFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlM1wiIGNsYXNzPVwiZTF0YWctY29udGFpbmVyLXN0eWxlM1wiPlxyXG4gICAgICA8YXBwLXpncmlkIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlNFwiIGNsYXNzPVwiZTF0YWctY29udGFpbmVyLXN0eWxlNFwiIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgICAgIFtncm91cF09XCJncm91cFwiIFtmb3JtXT1cImZvcm1cIiBbY29udGFpbmVyRmllbGRdPVwiY29udGFpbmVyRmllbGRcIiBbY29tcG9uZW50UHJvcGVydGllc109XCJjb21wb25lbnRQcm9wZXJ0aWVzXCJcclxuICAgICAgICAoc2hvd0Zvcm1QYWdlKT1cImRyYXdlci50b2dnbGUoJGV2ZW50KVwiPlxyXG4gICAgICA8L2FwcC16Z3JpZD5cclxuICAgIDwva2VuZG8tZHJhd2VyLWNvbnRlbnQ+XHJcbiAgPC9rZW5kby1kcmF3ZXItY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcblxyXG48ZGl2IGNsYXNzPVwiZ3JpZC1jb250YWluZXJcIiAqbmdJZj1cImRhdGEuQ29tcG9uZW50U3R5bGVUeXBlICE9PSAnc3R5bGUyJ1wiPlxyXG4gIDxhcHAtemdyaWQgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGUuc3R5bGU0XCIgY2xhc3M9XCJlMXRhZy1jb250YWluZXItc3R5bGU0XCIgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICBbZ3JvdXBdPVwiZ3JvdXBcIiBbZm9ybV09XCJmb3JtXCIgW2NvbnRhaW5lckZpZWxkXT1cImNvbnRhaW5lckZpZWxkXCIgW2NvbXBvbmVudFByb3BlcnRpZXNdPVwiY29tcG9uZW50UHJvcGVydGllc1wiXHJcbiAgICAoc2hvd0Zvcm1QYWdlKT1cInRvZ2dsZUZvcm1QYWdlKCRldmVudClcIj5cclxuICA8L2FwcC16Z3JpZD5cclxuICA8ZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIiFncm91cC5pc0xvYWRpbmdcIiBbY2xhc3MuZW1iZWRkZWRGb3JtUGFnZV09XCJpc1Nob3dGb3JtUGFnZVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICNmb3JtUGFnZT48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImdyb3VwLmlzTG9hZGluZ1wiIGNsYXNzPVwic3Bpbm5lci1jb250YWluZXJcIj5cclxuICAgICAgPGFwcC1wYWdlLWxvYWRlcj48L2FwcC1wYWdlLWxvYWRlcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -62,8 +62,8 @@ export class DateRangeFilterCellComponent extends BaseFilterCellComponent {
62
62
  return ZComponentHelper.isNullUndefinedEmpty(this.data.ResourceURL);
63
63
  }
64
64
  }
65
- DateRangeFilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangeFilterCellComponent, deps: [{ token: i1.FilterService }], target: i0.ɵɵFactoryTarget.Component });
66
- DateRangeFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: DateRangeFilterCellComponent, selector: "date-range-filter-cell", inputs: { filter: "filter", field: "field", data: "data" }, usesInheritance: true, ngImport: i0, template: `
65
+ DateRangeFilterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DateRangeFilterCellComponent, deps: [{ token: i1.FilterService }], target: i0.ɵɵFactoryTarget.Component });
66
+ DateRangeFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: DateRangeFilterCellComponent, selector: "date-range-filter-cell", inputs: { filter: "filter", field: "field", data: "data" }, usesInheritance: true, ngImport: i0, template: `
67
67
  <kendo-daterange >
68
68
  <kendo-dateinput
69
69
  class="range-filter"
@@ -93,7 +93,7 @@ DateRangeFilterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
93
93
  <span class="k-icon k-i-filter-clear" style="width:15px"></span>
94
94
  </button>
95
95
  `, isInline: true, styles: ["kendo-daterange>kendo-dateinput.range-filter{display:inline-block}.k-button{margin-left:4px}\n"], components: [{ type: i2.DateRangeComponent, selector: "kendo-daterange" }, { type: i2.DateInputComponent, selector: "kendo-dateinput", inputs: ["focusableId", "pickerType", "disabled", "readonly", "title", "tabindex", "role", "ariaReadOnly", "tabIndex", "format", "formatPlaceholder", "placeholder", "steps", "max", "min", "rangeValidation", "autoCorrect", "incompleteDateValidation", "twoDigitYearMax", "value", "spinners", "isPopupOpen", "hasPopup", "size", "rounded", "fillMode"], outputs: ["valueChange", "valueUpdate", "focus", "blur"], exportAs: ["kendo-dateinput"] }], directives: [{ type: i2.DateRangeStartInputDirective, selector: "[kendoDateRangeStartInput]", inputs: ["autoCorrectOn", "navigateCalendarOnFocus"] }, { type: i2.DateRangeEndInputDirective, selector: "[kendoDateRangeEndInput]", inputs: ["autoCorrectOn", "navigateCalendarOnFocus"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
96
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangeFilterCellComponent, decorators: [{
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DateRangeFilterCellComponent, decorators: [{
97
97
  type: Component,
98
98
  args: [{
99
99
  selector: 'date-range-filter-cell',
@@ -143,4 +143,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
143
143
  }], data: [{
144
144
  type: Input
145
145
  }] } });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1jZWxsLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96Z3JpZC9kYXRlLXJhbmdlLWNlbGwtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQWlCLE1BQU0sOEJBQThCLENBQUM7QUFFdEYsT0FBTyxFQUFFLGdCQUFnQixFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBMkMxRCxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsdUJBQXVCO0lBVXZFLFlBQVksYUFBNEI7UUFDdEMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpDLE9BQU8sQ0FBQyxLQUFLLElBQXNCLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBVyxHQUFHO1FBQ1osTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxPQUFPLENBQUMsR0FBRyxJQUFzQixFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FDdkMsQ0FBQztJQUNKLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBVyxFQUFFLEdBQVM7UUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBRXJELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUVuQixJQUFJLEtBQUssRUFBRTtZQUNULE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ1gsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQzFCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLEtBQUssRUFBRSxLQUFLO2FBQ2IsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLEdBQUcsRUFBRTtZQUNQLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDWCxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDMUIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsS0FBSyxFQUFFLEdBQUc7YUFDWCxDQUFDLENBQUM7U0FDSjtRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUk7WUFDMUIsS0FBSyxFQUFFLEtBQUs7WUFDWixPQUFPLEVBQUUsRUFBRTtTQUNaLENBQUM7UUFFRixJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztTQUMvQjtRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTyxjQUFjLENBQUMsRUFBVTtRQUMvQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQzVDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU8sWUFBWTtRQUNsQixPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLGlCQUFpQixDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDMUcsQ0FBQztJQUVPLGNBQWM7UUFDcEIsT0FBTyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7OzBIQWhGVSw0QkFBNEI7OEdBQTVCLDRCQUE0QixpSkEvQjdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTZCUDs0RkFFUSw0QkFBNEI7a0JBekN4QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLE1BQU0sRUFBRSxDQUFDOzs7Ozs7O0tBT04sQ0FBRTtvQkFDTCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBNkJQO2lCQUNKO29HQUdRLE1BQU07c0JBRFosS0FBSztnQkFJQyxLQUFLO3NCQURYLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEJhc2VGaWx0ZXJDZWxsQ29tcG9uZW50LCBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSBcIkBwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWdyaWRcIjtcclxuaW1wb3J0IHsgRmlsdGVyRGVzY3JpcHRvciB9IGZyb20gXCJAcHJvZ3Jlc3Mva2VuZG8tZGF0YS1xdWVyeS9kaXN0L2VzL21haW5cIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudEhlbHBlciwgWkZpZWxkIH0gZnJvbSBcIm1taGdsb2JhbC16Y29yZVwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb25zdGFudCB9IGZyb20gXCIuLi9jb25zdGFudHMvY29uc3RhbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGF0ZS1yYW5nZS1maWx0ZXItY2VsbCcsXHJcbiAgc3R5bGVzOiBbYFxyXG4gICAgICAgIGtlbmRvLWRhdGVyYW5nZSA+IGtlbmRvLWRhdGVpbnB1dC5yYW5nZS1maWx0ZXIge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC5rLWJ1dHRvbiB7XHJcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7XHJcbiAgICAgICAgfVxyXG4gICAgYCBdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGtlbmRvLWRhdGVyYW5nZSA+XHJcbiAgICAgICAgICAgPGtlbmRvLWRhdGVpbnB1dFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyYW5nZS1maWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAga2VuZG9EYXRlUmFuZ2VTdGFydElucHV0XHJcbiAgICAgICAgICAgICAgICBbZm9ybWF0XT1cIidkZC1NTS15eXl5J1wiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImRkLU1NLXl5eXlcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInN0YXJ0XCJcclxuICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJmaWx0ZXJSYW5nZSgkZXZlbnQsIGVuZClcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDo4NHB4XCI+XHJcbiAgICAgICAgICAgIDwva2VuZG8tZGF0ZWlucHV0PlxyXG4gICAgICAgICAgICAtXHJcbiAgICAgICAgICAgIDxrZW5kby1kYXRlaW5wdXRcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicmFuZ2UtZmlsdGVyXCJcclxuICAgICAgICAgICAgICAgIGtlbmRvRGF0ZVJhbmdlRW5kSW5wdXRcclxuICAgICAgICAgICAgICAgIFtmb3JtYXRdPVwiJ2RkLU1NLXl5eXknXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZGQtTU0teXl5eVwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZW5kXCJcclxuICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJmaWx0ZXJSYW5nZShzdGFydCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOjg1cHhcIj5cclxuICAgICAgICAgICAgPC9rZW5kby1kYXRlaW5wdXQ+XHJcbiAgICAgICAgPC9rZW5kby1kYXRlcmFuZ2U+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cImhhc0ZpbHRlclwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiay1idXR0b24gay1idXR0b24taWNvblwiXHJcbiAgICAgICAgICAgIHRpdGxlPVwiQ2xlYXJcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoKVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImstaWNvbiBrLWktZmlsdGVyLWNsZWFyXCIgc3R5bGU9XCJ3aWR0aDoxNXB4XCI+PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgYFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZVJhbmdlRmlsdGVyQ2VsbENvbXBvbmVudCBleHRlbmRzIEJhc2VGaWx0ZXJDZWxsQ29tcG9uZW50IHtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBmaWx0ZXI6IGFueTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZmllbGQ6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGF0YTogWkZpZWxkO1xyXG5cclxuICBjb25zdHJ1Y3RvcihmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihmaWx0ZXJTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc3RhcnQoKTogRGF0ZSB7XHJcbiAgICBjb25zdCBmaXJzdCA9IHRoaXMuZmluZEJ5T3BlcmF0b3IoXCJndGVcIik7XHJcblxyXG4gICAgcmV0dXJuIChmaXJzdCB8fCA8RmlsdGVyRGVzY3JpcHRvcj57fSkudmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGVuZCgpOiBEYXRlIHtcclxuICAgIGNvbnN0IGVuZCA9IHRoaXMuZmluZEJ5T3BlcmF0b3IoXCJsdGVcIik7XHJcbiAgICByZXR1cm4gKGVuZCB8fCA8RmlsdGVyRGVzY3JpcHRvcj57fSkudmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGhhc0ZpbHRlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlcnNCeUZpZWxkKHRoaXMuZ2V0RmllbGROYW1lKCkpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXJGaWx0ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyKFxyXG4gICAgICB0aGlzLnJlbW92ZUZpbHRlcih0aGlzLmdldEZpZWxkTmFtZSgpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmaWx0ZXJSYW5nZShzdGFydDogRGF0ZSwgZW5kOiBEYXRlKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlciA9IHRoaXMucmVtb3ZlRmlsdGVyKHRoaXMuZ2V0RmllbGROYW1lKCkpO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlcnMgPSBbXTtcclxuXHJcbiAgICBpZiAoc3RhcnQpIHtcclxuICAgICAgZmlsdGVycy5wdXNoKHtcclxuICAgICAgICBmaWVsZDogdGhpcy5nZXRGaWVsZE5hbWUoKSxcclxuICAgICAgICBvcGVyYXRvcjogXCJndGVcIixcclxuICAgICAgICB2YWx1ZTogc3RhcnRcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGVuZCkge1xyXG4gICAgICBlbmQuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KTtcclxuICAgICAgZmlsdGVycy5wdXNoKHtcclxuICAgICAgICBmaWVsZDogdGhpcy5nZXRGaWVsZE5hbWUoKSxcclxuICAgICAgICBvcGVyYXRvcjogXCJsdGVcIixcclxuICAgICAgICB2YWx1ZTogZW5kXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJvb3QgPSB0aGlzLmZpbHRlciB8fCB7XHJcbiAgICAgIGxvZ2ljOiBcImFuZFwiLFxyXG4gICAgICBmaWx0ZXJzOiBbXVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoZmlsdGVycy5sZW5ndGgpIHtcclxuICAgICAgcm9vdC5maWx0ZXJzLnB1c2goLi4uZmlsdGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlcihyb290KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZEJ5T3BlcmF0b3Iob3A6IHN0cmluZyk6IEZpbHRlckRlc2NyaXB0b3Ige1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyc0J5RmllbGQodGhpcy5nZXRGaWVsZE5hbWUoKSlcclxuICAgICAgLmZpbHRlcigoeyBvcGVyYXRvciB9KSA9PiBvcGVyYXRvciA9PT0gb3ApWzBdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGaWVsZE5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmlzVXNlTG9jYWxEYXRhKCkgPyBgJHt0aGlzLmZpZWxkfSR7Q29tcG9uZW50Q29uc3RhbnQuR3JpZENvbERhdGVGaWx0ZXJTdWZmaXh9YCA6IHRoaXMuZmllbGQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzVXNlTG9jYWxEYXRhKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIFpDb21wb25lbnRIZWxwZXIuaXNOdWxsVW5kZWZpbmVkRW1wdHkodGhpcy5kYXRhLlJlc291cmNlVVJMKTtcclxuICB9XHJcbn1cclxuIl19
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1jZWxsLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96Z3JpZC9kYXRlLXJhbmdlLWNlbGwtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQWlCLE1BQU0sOEJBQThCLENBQUM7QUFFdEYsT0FBTyxFQUFFLGdCQUFnQixFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBMkMxRCxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsdUJBQXVCO0lBVXZFLFlBQVksYUFBNEI7UUFDdEMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpDLE9BQU8sQ0FBQyxLQUFLLElBQXNCLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBVyxHQUFHO1FBQ1osTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxPQUFPLENBQUMsR0FBRyxJQUFzQixFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FDdkMsQ0FBQztJQUNKLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBVyxFQUFFLEdBQVM7UUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBRXJELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUVuQixJQUFJLEtBQUssRUFBRTtZQUNULE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ1gsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQzFCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLEtBQUssRUFBRSxLQUFLO2FBQ2IsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLEdBQUcsRUFBRTtZQUNQLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDWCxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDMUIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsS0FBSyxFQUFFLEdBQUc7YUFDWCxDQUFDLENBQUM7U0FDSjtRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUk7WUFDMUIsS0FBSyxFQUFFLEtBQUs7WUFDWixPQUFPLEVBQUUsRUFBRTtTQUNaLENBQUM7UUFFRixJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztTQUMvQjtRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTyxjQUFjLENBQUMsRUFBVTtRQUMvQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQzVDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU8sWUFBWTtRQUNsQixPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLGlCQUFpQixDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDMUcsQ0FBQztJQUVPLGNBQWM7UUFDcEIsT0FBTyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7O3lIQWhGVSw0QkFBNEI7NkdBQTVCLDRCQUE0QixpSkEvQjdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTZCUDsyRkFFUSw0QkFBNEI7a0JBekN4QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLE1BQU0sRUFBRSxDQUFDOzs7Ozs7O0tBT04sQ0FBRTtvQkFDTCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBNkJQO2lCQUNKO29HQUdRLE1BQU07c0JBRFosS0FBSztnQkFJQyxLQUFLO3NCQURYLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEJhc2VGaWx0ZXJDZWxsQ29tcG9uZW50LCBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSBcIkBwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWdyaWRcIjtcclxuaW1wb3J0IHsgRmlsdGVyRGVzY3JpcHRvciB9IGZyb20gXCJAcHJvZ3Jlc3Mva2VuZG8tZGF0YS1xdWVyeS9kaXN0L2VzL21haW5cIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudEhlbHBlciwgWkZpZWxkIH0gZnJvbSBcIm1taGdsb2JhbC16Y29yZVwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb25zdGFudCB9IGZyb20gXCIuLi9jb25zdGFudHMvY29uc3RhbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGF0ZS1yYW5nZS1maWx0ZXItY2VsbCcsXHJcbiAgc3R5bGVzOiBbYFxyXG4gICAgICAgIGtlbmRvLWRhdGVyYW5nZSA+IGtlbmRvLWRhdGVpbnB1dC5yYW5nZS1maWx0ZXIge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC5rLWJ1dHRvbiB7XHJcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7XHJcbiAgICAgICAgfVxyXG4gICAgYCBdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGtlbmRvLWRhdGVyYW5nZSA+XHJcbiAgICAgICAgICAgPGtlbmRvLWRhdGVpbnB1dFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyYW5nZS1maWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAga2VuZG9EYXRlUmFuZ2VTdGFydElucHV0XHJcbiAgICAgICAgICAgICAgICBbZm9ybWF0XT1cIidkZC1NTS15eXl5J1wiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImRkLU1NLXl5eXlcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInN0YXJ0XCJcclxuICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJmaWx0ZXJSYW5nZSgkZXZlbnQsIGVuZClcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDo4NHB4XCI+XHJcbiAgICAgICAgICAgIDwva2VuZG8tZGF0ZWlucHV0PlxyXG4gICAgICAgICAgICAtXHJcbiAgICAgICAgICAgIDxrZW5kby1kYXRlaW5wdXRcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicmFuZ2UtZmlsdGVyXCJcclxuICAgICAgICAgICAgICAgIGtlbmRvRGF0ZVJhbmdlRW5kSW5wdXRcclxuICAgICAgICAgICAgICAgIFtmb3JtYXRdPVwiJ2RkLU1NLXl5eXknXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZGQtTU0teXl5eVwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZW5kXCJcclxuICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJmaWx0ZXJSYW5nZShzdGFydCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOjg1cHhcIj5cclxuICAgICAgICAgICAgPC9rZW5kby1kYXRlaW5wdXQ+XHJcbiAgICAgICAgPC9rZW5kby1kYXRlcmFuZ2U+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cImhhc0ZpbHRlclwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiay1idXR0b24gay1idXR0b24taWNvblwiXHJcbiAgICAgICAgICAgIHRpdGxlPVwiQ2xlYXJcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoKVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImstaWNvbiBrLWktZmlsdGVyLWNsZWFyXCIgc3R5bGU9XCJ3aWR0aDoxNXB4XCI+PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgYFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZVJhbmdlRmlsdGVyQ2VsbENvbXBvbmVudCBleHRlbmRzIEJhc2VGaWx0ZXJDZWxsQ29tcG9uZW50IHtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBmaWx0ZXI6IGFueTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZmllbGQ6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGF0YTogWkZpZWxkO1xyXG5cclxuICBjb25zdHJ1Y3RvcihmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihmaWx0ZXJTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc3RhcnQoKTogRGF0ZSB7XHJcbiAgICBjb25zdCBmaXJzdCA9IHRoaXMuZmluZEJ5T3BlcmF0b3IoXCJndGVcIik7XHJcblxyXG4gICAgcmV0dXJuIChmaXJzdCB8fCA8RmlsdGVyRGVzY3JpcHRvcj57fSkudmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGVuZCgpOiBEYXRlIHtcclxuICAgIGNvbnN0IGVuZCA9IHRoaXMuZmluZEJ5T3BlcmF0b3IoXCJsdGVcIik7XHJcbiAgICByZXR1cm4gKGVuZCB8fCA8RmlsdGVyRGVzY3JpcHRvcj57fSkudmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGhhc0ZpbHRlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlcnNCeUZpZWxkKHRoaXMuZ2V0RmllbGROYW1lKCkpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXJGaWx0ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyKFxyXG4gICAgICB0aGlzLnJlbW92ZUZpbHRlcih0aGlzLmdldEZpZWxkTmFtZSgpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmaWx0ZXJSYW5nZShzdGFydDogRGF0ZSwgZW5kOiBEYXRlKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlciA9IHRoaXMucmVtb3ZlRmlsdGVyKHRoaXMuZ2V0RmllbGROYW1lKCkpO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlcnMgPSBbXTtcclxuXHJcbiAgICBpZiAoc3RhcnQpIHtcclxuICAgICAgZmlsdGVycy5wdXNoKHtcclxuICAgICAgICBmaWVsZDogdGhpcy5nZXRGaWVsZE5hbWUoKSxcclxuICAgICAgICBvcGVyYXRvcjogXCJndGVcIixcclxuICAgICAgICB2YWx1ZTogc3RhcnRcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGVuZCkge1xyXG4gICAgICBlbmQuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KTtcclxuICAgICAgZmlsdGVycy5wdXNoKHtcclxuICAgICAgICBmaWVsZDogdGhpcy5nZXRGaWVsZE5hbWUoKSxcclxuICAgICAgICBvcGVyYXRvcjogXCJsdGVcIixcclxuICAgICAgICB2YWx1ZTogZW5kXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJvb3QgPSB0aGlzLmZpbHRlciB8fCB7XHJcbiAgICAgIGxvZ2ljOiBcImFuZFwiLFxyXG4gICAgICBmaWx0ZXJzOiBbXVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoZmlsdGVycy5sZW5ndGgpIHtcclxuICAgICAgcm9vdC5maWx0ZXJzLnB1c2goLi4uZmlsdGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlcihyb290KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZEJ5T3BlcmF0b3Iob3A6IHN0cmluZyk6IEZpbHRlckRlc2NyaXB0b3Ige1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyc0J5RmllbGQodGhpcy5nZXRGaWVsZE5hbWUoKSlcclxuICAgICAgLmZpbHRlcigoeyBvcGVyYXRvciB9KSA9PiBvcGVyYXRvciA9PT0gb3ApWzBdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGaWVsZE5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmlzVXNlTG9jYWxEYXRhKCkgPyBgJHt0aGlzLmZpZWxkfSR7Q29tcG9uZW50Q29uc3RhbnQuR3JpZENvbERhdGVGaWx0ZXJTdWZmaXh9YCA6IHRoaXMuZmllbGQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzVXNlTG9jYWxEYXRhKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIFpDb21wb25lbnRIZWxwZXIuaXNOdWxsVW5kZWZpbmVkRW1wdHkodGhpcy5kYXRhLlJlc291cmNlVVJMKTtcclxuICB9XHJcbn1cclxuIl19
@@ -532,9 +532,9 @@ export class ZGridBindingDirective extends DataBindingDirective {
532
532
  ZComponentHelper.getGridColumns(columns, this.gridColumns, this.zgridbinding.group, this.getGridSettings(), this.usableColumns);
533
533
  }
534
534
  }
535
- ZGridBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ZGridBindingDirective, deps: [{ token: GridComponent }, { token: i1.WebApiService }, { token: i1.ToastService }, { token: i1.AuthService }, { token: i1.StorageSessionService }, { token: i2.Router }, { token: i1.ZGridStatePersistingService }], target: i0.ɵɵFactoryTarget.Directive });
536
- ZGridBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: ZGridBindingDirective, selector: "[zgridbinding]", inputs: { zgridbinding: "zgridbinding" }, usesInheritance: true, ngImport: i0 });
537
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ZGridBindingDirective, decorators: [{
535
+ ZGridBindingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZGridBindingDirective, deps: [{ token: GridComponent }, { token: i1.WebApiService }, { token: i1.ToastService }, { token: i1.AuthService }, { token: i1.StorageSessionService }, { token: i2.Router }, { token: i1.ZGridStatePersistingService }], target: i0.ɵɵFactoryTarget.Directive });
536
+ ZGridBindingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.4.0", type: ZGridBindingDirective, selector: "[zgridbinding]", inputs: { zgridbinding: "zgridbinding" }, usesInheritance: true, ngImport: i0 });
537
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZGridBindingDirective, decorators: [{
538
538
  type: Directive,
539
539
  args: [{
540
540
  selector: "[zgridbinding]",
@@ -545,4 +545,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
545
545
  }] }, { type: i1.WebApiService }, { type: i1.ToastService }, { type: i1.AuthService }, { type: i1.StorageSessionService }, { type: i2.Router }, { type: i1.ZGridStatePersistingService }]; }, propDecorators: { zgridbinding: [{
546
546
  type: Input
547
547
  }] } });
548
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemdyaWQuYmluZGluZy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96Z3JpZC96Z3JpZC5iaW5kaW5nLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBcUIsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU01RSxPQUFPLEVBQTRCLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGFBQWEsR0FHZCxNQUFNLDhCQUE4QixDQUFDO0FBT3RDLDJDQUEyQztBQUMzQyxPQUFPLEVBRUwsZ0JBQWdCLEVBRWpCLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFNekIsTUFBTSxPQUFPLHFCQUFzQixTQUFRLG9CQUFvQjtJQTRDN0QsWUFDeUIsSUFBSSxFQUNuQixhQUE0QixFQUM1QixZQUEwQixFQUMxQixXQUF3QixFQUN4QixjQUFxQyxFQUNyQyxNQUFjLEVBQ2QsMkJBQXdEO1FBRWhFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQVBKLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUNyQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQTFDbEUsVUFBSyxHQUFVO1lBQ2IsSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLEVBQUUsRUFBRTtTQUNULENBQUM7UUFFRixnQkFBVyxHQUFVLEVBQUUsQ0FBQztR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Q0FBQyxlQUFlLEVBQUUsRUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FDbkIsQ0FBQztJQUNKLENBQUM7O21IQWhwQlUscUJBQXFCLGtCQTZDdEIsYUFBYTt1R0E3Q1oscUJBQXFCOzRGQUFyQixxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7OzBCQThDSSxNQUFNOzJCQUFDLGFBQWE7Z09BM0NkLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgT25Jbml0LCBPbkRlc3Ryb3ksIElucHV0LCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YXAsIHN3aXRjaE1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQge1xyXG4gIERhdGFCaW5kaW5nRGlyZWN0aXZlLFxyXG4gIEdyaWRDb21wb25lbnQsXHJcbiAgRGF0YVN0YXRlQ2hhbmdlRXZlbnQsXHJcbiAgUGFnZUNoYW5nZUV2ZW50LFxyXG59IGZyb20gXCJAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1ncmlkXCI7XHJcbmltcG9ydCB7XHJcbiAgU29ydERlc2NyaXB0b3IsXHJcbiAgU3RhdGUsXHJcbiAgRmlsdGVyRGVzY3JpcHRvcixcclxufSBmcm9tIFwiQHByb2dyZXNzL2tlbmRvLWRhdGEtcXVlcnlcIjtcclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHtcclxuICBBdXRoU2VydmljZSwgR3JpZENhY2hpbmcsIFdlYkFwaVNlcnZpY2UsXHJcbiAgWkNvbXBvbmVudEhlbHBlciwgWkZpZWxkLCBaR3JpZFBvc3RBcGlQYXJhbXMsIFpHcmlkQ29sdW1uU2V0dGluZ3MsXHJcbiAgWkdyaWRTdGF0ZVBlcnNpc3RpbmdTZXJ2aWNlLCBaR3JvdXAsIFN0b3JhZ2VTZXNzaW9uU2VydmljZSwgVG9hc3RTZXJ2aWNlXHJcbn0gZnJvbSBcIm1taGdsb2JhbC16Y29yZVwiO1xyXG5cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiBcIlt6Z3JpZGJpbmRpbmddXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBaR3JpZEJpbmRpbmdEaXJlY3RpdmUgZXh0ZW5kcyBEYXRhQmluZGluZ0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHNlcnZpY2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBASW5wdXQoKSB6Z3JpZGJpbmRpbmc6IHtcclxuICAgIGRhdGE6IFpGaWVsZDtcclxuICAgIGdyb3VwOiBaR3JvdXA7XHJcbiAgICBwYXJhbXM6IFpHcmlkUG9zdEFwaVBhcmFtcztcclxuICAgIGdyaWRTdWJqZWN0OiBTdWJqZWN0PGFueT47XHJcbiAgfTtcclxuXHJcbiAgc3RhdGU6IFN0YXRlID0ge1xyXG4gICAgc2tpcDogMCxcclxuICAgIHRha2U6IDEwLFxyXG4gIH07XHJcblxyXG4gIGdyaWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICB1c2FibGVDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICByZXNvdXJjZVVSTCA9IG51bGw7XHJcblxyXG4gIHBhZ2luYXRpb25BcGlQb3N0VXJsID0gbnVsbDtcclxuXHJcbiAgZGF0YVNvdXJjZSA9IG51bGw7XHJcblxyXG4gIGdldCBmaWVsZCgpIHtcclxuICAgIHJldHVybiB0aGlzLnpncmlkYmluZGluZy5kYXRhO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdycCgpIHtcclxuICAgIHJldHVybiB0aGlzLnpncmlkYmluZGluZy5ncm91cDtcclxuICB9XHJcblxyXG4gIGdldCBncmlkU3ViamVjdCgpIHtcclxuICAgIHJldHVybiB0aGlzLnpncmlkYmluZGluZy5ncmlkU3ViamVjdDtcclxuICB9XHJcblxyXG4gIGdldCBwYXJhbXMoKTogWkdyaWRQb3N0QXBpUGFyYW1zIHtcclxuICAgIHJldHVybiB0aGlzLnpncmlkYmluZGluZy5wYXJhbXM7XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0RGF0YSgpIHtcclxuICAgIHJldHVybiB0aGlzLmdyaWQuZGF0YTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChHcmlkQ29tcG9uZW50KSBncmlkLFxyXG4gICAgcHJpdmF0ZSB3ZWJhcGlTZXJ2aWNlOiBXZWJBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgekdyaWRTdGF0ZVBlcnNpc3RpbmdTZXJ2aWNlOiBaR3JpZFN0YXRlUGVyc2lzdGluZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKGdyaWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuXHJcbiAgICB0aGlzLmdyaWQubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnN0YXRlLnRha2UgPSB0aGlzLmZpZWxkLlBhZ2VTaXplIHx8IDIwO1xyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IHRoaXMuc3RhdGUudGFrZTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IHRoaXMuZmllbGQuRGF0YVNvdXJjZSA/IHRoaXMuZmllbGQuRGF0YVNvdXJjZSA6IG51bGw7XHJcblxyXG4gICAgaWYgKCF0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy5yZXNvdXJjZVVSTCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZShcclxuICAgICAgICB0aGlzLmZpZWxkLlJlc291cmNlVVJMLFxyXG4gICAgICAgIHRoaXMuZ3JwXHJcbiAgICAgICk7XHJcblxyXG4gICAgICAvLyBjb25zb2xlLmxvZyhcIkF0IHpncmlkLmNvbXBvbmVudCAoT25Jbml0KSByZXNvdXJjZVVSTDogXCIsIHJlc291cmNlVVJMKTtcclxuICAgICAgaWYgKCF0aGlzLnJlc291cmNlVVJMKSB7XHJcbiAgICAgICAgdGhpcy5ncmlkLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy56Z3JpZGJpbmRpbmcuZGF0YS5OYW1lICE9PSBcIkFjdGl2aXR5TG9nR3JpZFwiKSB7XHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICAgIFwiTm8gaW5pdGlhbGlzZSBmb3IgRmllbGQuUmVzb3VyY2VVUkw6IFwiLFxyXG4gICAgICAgICAgICB0aGlzLmZpZWxkLlJlc291cmNlVVJMXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGFycmF5ID0gdGhpcy5yZXNvdXJjZVVSTC5zcGxpdChcIi9hcGkvXCIpO1xyXG4gICAgICBpZiAoISFhcnJheVsxXSkge1xyXG4gICAgICAgIGFycmF5WzFdID0gXCJQYWdlXCIgKyBhcnJheVsxXTtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25BcGlQb3N0VXJsID0gYXJyYXkuam9pbihcIi9hcGkvXCIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGFyciA9IHRoaXMucmVzb3VyY2VVUkwuc3BsaXQoXCIvXCIpO1xyXG4gICAgICAgIGFyclthcnIubGVuZ3RoIC0gMl0gPSBcIlBhZ2VcIiArIGFyclthcnIubGVuZ3RoIC0gMl07XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uQXBpUG9zdFVybCA9IGFyci5qb2luKFwiL1wiKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zZXRGaWx0ZXJQYXJhbXNCeVBhcmVudFJlZklkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdGhpcy5ncmlkU3ViamVjdC5uZXh0KHRoaXMpO1xyXG4gICAgaWYgKHRoaXMuZmllbGRbJ0Rpc2FibGVHZW5lcmF0ZUNvbHVtbkJ5Rm9ybSddKSB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbkZpZWxkcyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSh0aGlzLmZpZWxkLkNvbHVtbkZpZWxkcywgdGhpcy5ncnApO1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjb2x1bW5GaWVsZHMpKSB7XHJcbiAgICAgICAgdGhpcy5zZXRDb2x1bW5zKGNvbHVtbkZpZWxkcyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmZpZWxkWydTa2lwTG9hZFJlc291cmNlVVJMRGF0YSddKSB7XHJcbiAgICAgICAgdGhpcy5ncmlkLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmdyaWRTdWJqZWN0Lm5leHQodGhpcyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5nZXREYXRhQmluZGluZygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5nZW5lcmF0ZUdyaWRDb2x1bW5zKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEZpbHRlclBhcmFtc0J5UGFyZW50UmVmSWQoKSB7XHJcbiAgICAvLyBVc2UgZmllbGQgb3duIHJlZmVyZW5jZUlkIGlmIGF2YWlsYWJsZVxyXG4gICAgY29uc3QgcmVmSWQgPSB0aGlzLmdldEZpZWxkUmVmZXJlbmNlSWQoKSB8fCB0aGlzLmdycC5yZWZlcmVuY2VJZDtcclxuICAgIGNvbnN0IHJlZkZpZWxkID0gdGhpcy5maWVsZC5SZWZlcmVuY2VGaWVsZCB8fCB0aGlzLmdycC5wYXJlbnRSZWZlcmVuY2VGaWVsZDtcclxuICAgIGlmIChyZWZJZCAmJiByZWZGaWVsZCkge1xyXG4gICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHtcclxuICAgICAgICBrZXk6IHJlZkZpZWxkLFxyXG4gICAgICAgIG9wczogXCI9XCIsXHJcbiAgICAgICAgdmFsdWU6IHJlZklkLFxyXG4gICAgICB9O1xyXG4gICAgICAvLyBpZiAodGhpcy5wYXJhbXMuZmlsdGVyUGFyYW1zLmZpbmQoeCA9PiB4LmtleSA9PT0gZmlsdGVyVmFsdWUua2V5KSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMucGFyYW1zLmZpbHRlclBhcmFtcy5wdXNoKGZpbHRlclZhbHVlKTtcclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGaWVsZFJlZmVyZW5jZUlkKCkge1xyXG4gICAgbGV0IGZpZWxkUmVmZXJlbmNlSWQgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMuZmllbGQuUmVmZXJlbmNlSWQpIHtcclxuICAgICAgZmllbGRSZWZlcmVuY2VJZCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZShcclxuICAgICAgICB0aGlzLmZpZWxkLlJlZmVyZW5jZUlkLFxyXG4gICAgICAgIHRoaXMuZ3JwXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmllbGRSZWZlcmVuY2VJZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlcnZpY2VTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5zZXJ2aWNlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdlbmVyYXRlR3JpZENvbHVtbnMoKSB7XHJcbiAgICBjb25zdCBjb2x1bW5GaWVsZHMkOiBPYnNlcnZhYmxlPGFueT4gPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUoXHJcbiAgICAgIHRoaXMuZmllbGQuQ29sdW1uRmllbGRzLFxyXG4gICAgICB0aGlzLmdycFxyXG4gICAgKTtcclxuICAgIGNvbHVtbkZpZWxkcyQucGlwZShcclxuICAgICAgdGFwKChkYXRhKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZ3JpZFNldHRpbmcgPSB0aGlzLmdldEdyaWRTZXR0aW5ncygpO1xyXG5cclxuICAgICAgICBaQ29tcG9uZW50SGVscGVyLmdldEdyaWRDb2x1bW5zKFxyXG4gICAgICAgICAgZGF0YSxcclxuICAgICAgICAgIHRoaXMuZ3JpZENvbHVtbnMsXHJcbiAgICAgICAgICB0aGlzLnpncmlkYmluZGluZy5ncm91cCxcclxuICAgICAgICAgIGdyaWRTZXR0aW5nLFxyXG4gICAgICAgICAgdGhpcy51c2FibGVDb2x1bW5zXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmdldEZpbHRlclBhcmFtc0NvbHVtbnMoKTtcclxuICAgICAgICB0aGlzLmdldEZpbHRlcigpO1xyXG4gICAgICAgIHRoaXMuZ2V0RmlsdGVyUGFyYW1zKCk7XHJcbiAgICAgICAgdGhpcy5nZXRTb3J0aW5nKCk7XHJcbiAgICAgICAgdGhpcy5nZXRHcmFudFR5cGUoKTtcclxuICAgICAgICB0aGlzLnNldEhpZGRlbkNvbHVtbihncmlkU2V0dGluZyk7XHJcblxyXG4gICAgICAgIHRoaXMucGFyYW1zLnJlZmVySWQgPSB0aGlzLmdldEZpZWxkUmVmZXJlbmNlSWQoKSB8fCB0aGlzLmdycC5yZWZlcmVuY2VJZCB8fCBudWxsO1xyXG4gICAgICAgIC8vIH0pLFxyXG4gICAgICAgIC8vIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgLy8gICAvL0dldCBTZXNzaW9uXHJcbiAgICAgICAgLy8gICByZXR1cm4gdGhpcy5nZXRHcmlkU2Vzc2lvbkZpbHRlcih0aGlzLmdycCwgdGhpcyk7XHJcbiAgICAgICAgLy8gfSksXHJcbiAgICAgICAgLy8gc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAvLyAgICAvL0JlZm9yZSBnZXQgZ3JpZCBkYXRhXHJcbiAgICAgICAgLy8gICByZXR1cm4gdGhpcy5iZWZvcmVHcmlkR2V0RGF0YSh0aGlzLmdycCwgdGhpcyk7XHJcbiAgICAgICAgLy8gfSksXHJcbiAgICAgICAgLy8gc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAvLyAgIC8vU2V0IGdyaWQgZGF0YVxyXG4gICAgICAgIC8vICAgcmV0dXJuIHRoaXMuc2V0R3JpZFNlc3Npb25GaWx0ZXIodGhpcy5ncnAsIHRoaXMpO1xyXG4gICAgICB9KVxyXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5maWVsZFsnU2tpcExvYWRSZXNvdXJjZVVSTERhdGEnXSkge1xyXG4gICAgICAgIHRoaXMuZ3JpZC5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ncmlkU3ViamVjdC5uZXh0KHRoaXMpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ2V0RGF0YUJpbmRpbmcoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0U2tpcExvYWRSZXNvdXJjZVVSTERhdGEoc2V0dGluZ1ZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmZpZWxkWydTa2lwTG9hZFJlc291cmNlVVJMRGF0YSddID0gIXNldHRpbmdWYWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRDb2x1bW5OYW1lKGNvbFZhbHVlOiBzdHJpbmcsIGNvbE5hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5ncmlkQ29sdW1ucy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICBpZiAoZmllbGQuVmFsdWUgPT0gY29sVmFsdWUpIHtcclxuICAgICAgICBmaWVsZC50aXRsZSA9IGNvbE5hbWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Q29sdW1uVmlzaWJsZShjb2xWYWx1ZTogc3RyaW5nLCBjb25maWc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZ3JpZENvbHVtbnMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgaWYgKGZpZWxkLlZhbHVlID09IGNvbFZhbHVlKSB7XHJcbiAgICAgICAgZmllbGQuaGlkZGVuID0gIWNvbmZpZztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RmlsdGVyUGFyYW1zQ29sdW1ucygpIHtcclxuICAgIGNvbnN0IGNvbEZpZWxkczogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gICAgdGhpcy5ncmlkQ29sdW1ucy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICBpZiAoZmllbGQudmFsdWVFeHByKSB7XHJcbiAgICAgICAgY29sRmllbGRzLnB1c2goZmllbGQudmFsdWVFeHByICsgXCIgYXMgXCIgKyBmaWVsZC5maWVsZCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29sRmllbGRzLnB1c2goZmllbGQuZmllbGQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoY29sRmllbGRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKGNvbEZpZWxkcy5pbmRleE9mKFwiSWRcIikgPT09IC0xKSB7XHJcbiAgICAgICAgY29sRmllbGRzLnB1c2goXCJJZFwiKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCB0bXBHcmlkQ29sdW1uOiBhbnlbXSA9IFtdO1xyXG4gICAgdG1wR3JpZENvbHVtbi5wdXNoKGNvbEZpZWxkcy5qb2luKFwiLFwiKSk7XHJcbiAgICBpZiAodGhpcy51c2FibGVDb2x1bW5zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdG1wR3JpZENvbHVtbi5wdXNoKHRoaXMudXNhYmxlQ29sdW1ucy5qb2luKFwiLFwiKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBhcmFtcy5jb2x1bW5zID0gdG1wR3JpZENvbHVtbi5qb2luKFwiLFwiKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RmlsdGVyKCkge1xyXG4gICAgaWYgKHRoaXMucGFyYW1zLmZpbHRlcnMgJiYgdGhpcy5maWVsZC5GaWx0ZXJzKSB7XHJcbiAgICAgIHRoaXMucGFyYW1zLmZpbHRlcnMgPSB0aGlzLnBhcmFtcy5maWx0ZXJzICsgXCIgJiYgXCIgKyB0aGlzLmZpZWxkLkZpbHRlcnM7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnBhcmFtcy5maWx0ZXJzICYmIHRoaXMuZmllbGQuRmlsdGVycykge1xyXG4gICAgICB0aGlzLnBhcmFtcy5maWx0ZXJzID0gdGhpcy5maWVsZC5GaWx0ZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmZpZWxkLkZpbHRlcnMgJiYgdGhpcy5maWVsZC5GaWx0ZXJzLmluZGV4T2YoXCJncm91cC5cIikgIT09IC0xKSB7XHJcbiAgICAgIGNvbnN0IGZpbHRlcktleVZhbFBhaXJzID0gdGhpcy5maWVsZC5GaWx0ZXJzLnNwbGl0KFwiIFwiKTtcclxuICAgICAgY29uc3QgZ3JwVmFsdWVzID0gZmlsdGVyS2V5VmFsUGFpcnMuZmlsdGVyKFxyXG4gICAgICAgIChlbGVtZW50KSA9PiBlbGVtZW50LnRyaW0oKS5pbmRleE9mKFwiZ3JvdXAuXCIpICE9PSAtMVxyXG4gICAgICApO1xyXG5cclxuICAgICAgZ3JwVmFsdWVzLmZvckVhY2goKHZhbCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGFjdHVhbFZhbCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSh2YWwsIHRoaXMuZ3JwKTtcclxuICAgICAgICB0aGlzLnBhcmFtcy5maWx0ZXJzID0gdGhpcy5wYXJhbXMuZmlsdGVycy5yZXBsYWNlKHZhbCwgYWN0dWFsVmFsKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpbHRlclBhcmFtcygpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkWydGaWx0ZXJQYXJhbXMnXSkge1xyXG4gICAgICBpZiAodGhpcy5maWVsZFsnRmlsdGVyUGFyYW1zJ10uaW5kZXhPZihcImdyb3VwLlwiKSAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLnBhcmFtcy5maWx0ZXJQYXJhbXMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUodGhpcy5maWVsZFsnRmlsdGVyUGFyYW1zJ10sIHRoaXMuZ3JwKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBhcmFtcy5maWx0ZXJQYXJhbXMgPSB0aGlzLmZpZWxkWydGaWx0ZXJQYXJhbXMnXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTb3J0aW5nKCkge1xyXG4gICAgaWYgKHRoaXMuZmllbGQuU29ydE9yZGVyKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLlNvcnRPcmRlci5pbmRleE9mKFwiZ3JvdXAuXCIpICE9PSAtMSkge1xyXG4gICAgICAgIHRoaXMucGFyYW1zLnNvcnRPcmRlciA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSh0aGlzLmZpZWxkLlNvcnRPcmRlciwgdGhpcy5ncnApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucGFyYW1zLnNvcnRPcmRlciA9IHRoaXMuZmllbGQuU29ydE9yZGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEdyYW50VHlwZSgpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkLkdyYW50VHlwZSkge1xyXG4gICAgICB0aGlzLnBhcmFtcy5ncmFudFR5cGUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUodGhpcy5maWVsZC5HcmFudFR5cGUudG9TdHJpbmcoKSwgdGhpcy5ncnApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRIaWRkZW5Db2x1bW4oZ3JpZFNldHRpbmc6IFpHcmlkQ29sdW1uU2V0dGluZ3NbXSkge1xyXG4gICAgaWYgKHRoaXMuZ3JpZENvbHVtbnMgJiYgZ3JpZFNldHRpbmcpIHtcclxuICAgICAgLy8gZmlsdGVyIG91dCBoaWRkZW4gPT0gZmFsc2UgYXJyYXkuXHJcbiAgICAgIGNvbnN0IGdyaWRTZXR0aW5nSGlkZGVuQ29sID0gZ3JpZFNldHRpbmcuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1bJ2hpZGRlbiddID09IHRydWU7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gZmluZCBhbmQgc2V0IHRoZSBoaWRkZW4gdG8gY3VycmVudCBjb2x1bW4gc2V0dGluZy5cclxuICAgICAgT2JqZWN0LnZhbHVlcyhncmlkU2V0dGluZ0hpZGRlbkNvbCkuZm9yRWFjaCh2YWx1ZSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZENvbHVtbnMuZmluZCgoYykgPT4gYy5maWVsZCA9PT0gdmFsdWUuZmllbGQpKSB7XHJcbiAgICAgICAgICB0aGlzLmdyaWRDb2x1bW5zLmZpbmQoKGMpID0+IGMuZmllbGQgPT09IHZhbHVlLmZpZWxkKVsnaGlkZGVuJ10gPSB2YWx1ZVsnaGlkZGVuJ107XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgZ2V0RGF0YUJpbmRpbmcoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyaWQubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgaWYgKCF0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy5wYXJhbXMucGFnZVNpemUgPSB0aGlzLnN0YXRlLnRha2U7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLkV4dGVybmFsUGFnaW5hdGlvbikge1xyXG4gICAgICAgIC8vIEZvciBQT1NUIG1ldGhvZCBQYWdlIFdlYkFQSVxyXG4gICAgICAgIHRoaXMud2ViYXBpU2VydmljZVxyXG4gICAgICAgICAgLnBvc3RBcGkoXHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkFwaVBvc3RVcmwsXHJcbiAgICAgICAgICAgIHRoaXMucGFyYW1zLFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICB0cnVlXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKGRhdGEpID0+IHRoaXMuaGFuZGxlR2V0RGF0YUJpbmRpbmdDb21wbGV0ZShkYXRhKSxcclxuICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KFwiRXJyb3Igb2NjdXIgaW4gbG9hZGluZyB0aGUgZGF0YVwiLCBcIm1pZGRsZVwiLCBmYWxzZSwgMTUwMCwgXCJkYW5nZXJcIik7XHJcbiAgICAgICAgICAgICAgdGhpcy5ncmlkLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgLy8gRm9yIEdFVCBtZXRob2RcclxuICAgICAgICB0aGlzLndlYmFwaVNlcnZpY2VcclxuICAgICAgICAgIC5nZXRBcGkodGhpcy5yZXNvdXJjZVVSTCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgdHJ1ZSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgbGV0IF9kYXRhID0gbnVsbDtcclxuICAgICAgICAgICAgbGV0IF90b3RhbENvdW50ID0gMDtcclxuXHJcbiAgICAgICAgICAgIGlmIChkYXRhLmRhdGFTZXQpIHtcclxuICAgICAgICAgICAgICBfZGF0YSA9IGRhdGEuZGF0YVNldDtcclxuICAgICAgICAgICAgICBfdG90YWxDb3VudCA9IGRhdGEudG90YWxDb3VudDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBfZGF0YSA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgX3RvdGFsQ291bnQgPSBkYXRhLmxlbmd0aDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVHZXREYXRhQmluZGluZ0NvbXBsZXRlKHsgZGF0YVNldDogX2RhdGEsIHRvdGFsQ291bnQ6IF90b3RhbENvdW50IH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zdCBkcyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZShcclxuICAgICAgICB0aGlzLmZpZWxkLkRhdGFTb3VyY2UsXHJcbiAgICAgICAgdGhpcy5ncnBcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuZGF0YSA9IGRzO1xyXG4gICAgICB0aGlzLmdyaWQubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmdyaWRTdWJqZWN0Lm5leHQodGhpcyk7XHJcbiAgICAgIHRoaXMubm90aWZ5RGF0YUNoYW5nZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVHZXREYXRhQmluZGluZ0NvbXBsZXRlKGRhdGEpIHtcclxuICAgIHRoaXMuYWdncmVnYXRlSGFuZGxpbmcoZGF0YS5kYXRhU2V0KTtcclxuICAgIHRoaXMuZ3JpZC5kYXRhID0geyBkYXRhOiBkYXRhLmRhdGFTZXQsIHRvdGFsOiBkYXRhLnRvdGFsQ291bnQgfTtcclxuICAgIHRoaXMuZ3JpZC5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLmFmdGVyRGF0YUJpbmRlZChkYXRhKTtcclxuICAgIHRoaXMuZ3JpZFN1YmplY3QubmV4dCh0aGlzKTtcclxuICAgIHRoaXMubm90aWZ5RGF0YUNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZnRlckRhdGFCaW5kZWQoZGF0YSkge1xyXG4gICAgLy8gYWxsb3cgdG8gY2FsbCBiYWNrIHByb2plY3QgcGFnZSBhZnRlciBkYXRhIGJpbmRlZC5cclxuICAgIGxldCBiaW5kZWRWYWx1ZSA9IHRoaXMuemdyaWRiaW5kaW5nLmRhdGFbJ0FmdGVyRGF0YUJpbmRlZCddO1xyXG4gICAgaWYgKGJpbmRlZFZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IG1lID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcyk7XHJcbiAgICAgIGxldCBjYWxsRnVuYztcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gYmluZGVkVmFsdWUubWF0Y2goL1xcYlxcKC4qL2dpKTtcclxuICAgICAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgICAgICBiaW5kZWRWYWx1ZSA9IGJpbmRlZFZhbHVlLnJlcGxhY2UocGFyYW1zWzBdLCBcIlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYmluZGVkVmFsdWUgPSBiaW5kZWRWYWx1ZS5yZXBsYWNlKCdtb2RhbEdyb3VwLicsICdncm91cC4nKTtcclxuICAgICAgICBjYWxsRnVuYyA9IGV2YWwoJ21lLnpncmlkYmluZGluZy4nICsgYmluZGVkVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgIFwiRXJyb3Igd2hlbiBnZXRHcm91cFZhbHVlOiBcIixcclxuICAgICAgICAgIGV2ZW50LnRhcmdldCxcclxuICAgICAgICAgIFwiID4gRXJyb3I6IFwiLFxyXG4gICAgICAgICAgZXJyb3JcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodHlwZW9mIGNhbGxGdW5jID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICBjb25zdCBuZXdGdW5jID0gY2FsbEZ1bmMuYmluZChtZSk7XHJcbiAgICAgICAgbmV3RnVuYyhldmVudCwgbWUuemdyaWRiaW5kaW5nLmRhdGEsIGRhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXJEYXRhKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncmlkLmRhdGEgPSB7IGRhdGE6IFtdLCB0b3RhbDogMCB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZ2dyZWdhdGVIYW5kbGluZyhkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IGFnZ3JlZ2F0ZUNvbHVtbnMgPSB0aGlzLmdyaWRDb2x1bW5zLmZpbHRlcih4ID0+IHguYWdncmVnYXRlVHlwZSk7XHJcblxyXG4gICAgYWdncmVnYXRlQ29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgIGNvbnN0IGZpZWxkID0gY29sLmZpZWxkO1xyXG5cclxuICAgICAgbGV0IF9hZ2dyZWdhdGVWYWx1ZSA9IG51bGw7XHJcbiAgICAgIHN3aXRjaCAoY29sLmFnZ3JlZ2F0ZVR5cGUuc2xpY2UoMCwgLTEpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICBjYXNlIFwidG90YWxcIjoge1xyXG4gICAgICAgICAgX2FnZ3JlZ2F0ZVZhbHVlID0gZGF0YS5yZWR1Y2UoKHRvdGFsLCBuZXh0KSA9PiB0b3RhbCArIG5leHRbZmllbGRdLCAwKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIFwic3VtXCI6IHtcclxuICAgICAgICAgIF9hZ2dyZWdhdGVWYWx1ZSA9IGRhdGEucmVkdWNlKCh0b3RhbCwgbmV4dCkgPT4gdG90YWwgKyBuZXh0W2ZpZWxkXSwgMCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSBcImF2ZXJhZ2VcIjoge1xyXG4gICAgICAgICAgX2FnZ3JlZ2F0ZVZhbHVlID0gZGF0YS5yZWR1Y2UoKHRvdGFsLCBuZXh0KSA9PiB0b3RhbCArIG5leHRbZmllbGRdLCAwKSAvIGRhdGEubGVuZ3RoO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgXCJjb3VudFwiOiB7XHJcbiAgICAgICAgICBfYWdncmVnYXRlVmFsdWUgPSBkYXRhLmxlbmd0aDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIFwibWF4XCI6IHtcclxuICAgICAgICAgIF9hZ2dyZWdhdGVWYWx1ZSA9IGRhdGEucmVkdWNlKChwLCBjKSA9PiBwW2ZpZWxkXSA+IGNbZmllbGRdID8gcCA6IGMpW2ZpZWxkXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIFwibWluXCI6IHtcclxuICAgICAgICAgIF9hZ2dyZWdhdGVWYWx1ZSA9IGRhdGEucmVkdWNlKChwLCBjKSA9PiBwW2ZpZWxkXSA8IGNbZmllbGRdID8gcCA6IGMpW2ZpZWxkXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgY29sLmFnZ3JlZ2F0ZVZhbHVlID0gX2FnZ3JlZ2F0ZVZhbHVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFnZ3JlZ2F0ZVJlc2V0VmFsdWUoKSB7XHJcbiAgICBjb25zdCBhZ2dyZWdhdGVDb2x1bW5zID0gdGhpcy5ncmlkQ29sdW1ucy5maWx0ZXIoeCA9PiB4LmFnZ3JlZ2F0ZVR5cGUpO1xyXG4gICAgYWdncmVnYXRlQ29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgIGNvbC5hZ2dyZWdhdGVWYWx1ZSA9IDA7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgcGFnZUNoYW5nZShldmVudDogUGFnZUNoYW5nZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhcmFtcy5wYWdlTm8gPSBldmVudC5za2lwIC8gdGhpcy5wYXJhbXMucGFnZVNpemU7XHJcbiAgICB0aGlzLnN0YXRlLnNraXAgPSBldmVudC5za2lwO1xyXG4gICAgdGhpcy5nZXREYXRhQmluZGluZygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNvcnRDaGFuZ2Uoc29ydDogU29ydERlc2NyaXB0b3JbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5zb3J0ID0gc29ydDtcclxuICAgIHRoaXMucGFyYW1zLnNvcnRDb2x1bW5OYW1lcyA9IFtdO1xyXG4gICAgdGhpcy5wYXJhbXMuc29ydE9yZGVycyA9IFtdO1xyXG5cclxuICAgIHNvcnQuZm9yRWFjaCgoZikgPT4ge1xyXG4gICAgICBpZiAoZi5kaXIpIHtcclxuICAgICAgICB0aGlzLnBhcmFtcy5zb3J0T3JkZXJzLnB1c2goZi5kaXIpO1xyXG5cclxuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZ3JpZENvbHVtbnMuZmluZCgoYykgPT4gYy5maWVsZCA9PT0gZi5maWVsZCk7XHJcbiAgICAgICAgaWYgKGZpZWxkLnZhbHVlRXhwciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLnBhcmFtcy5zb3J0Q29sdW1uTmFtZXMucHVzaChmaWVsZC52YWx1ZUV4cHIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnBhcmFtcy5zb3J0Q29sdW1uTmFtZXMucHVzaChmLmZpZWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5nZXREYXRhQmluZGluZygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbHRlckNoYW5nZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhcmFtcy5wYWdlTm8gPSAwO1xyXG4gICAgdGhpcy5wYXJhbXMuZmlsdGVyUGFyYW1zID0gW107XHJcbiAgICB0aGlzLnNldEZpbHRlclBhcmFtc0J5UGFyZW50UmVmSWQoKTtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhldmVudCk7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgaWYgKGV2ZW50LmZpbHRlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGV2ZW50LmZpbHRlcnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmdyaWRDb2x1bW5zLmZpbmQoKGMpID0+IGMuZmllbGQgPT09IGl0ZW0uZmllbGQpO1xyXG5cclxuICAgICAgICAgIGlmIChpdGVtLmZpbHRlcnMpIHtcclxuICAgICAgICAgICAgaXRlbS5maWx0ZXJzLmZvckVhY2goKGY6IEZpbHRlckRlc2NyaXB0b3IpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoZi52YWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgZi52YWx1ZSA9IFwiXCI7IC8vIGNvbnZlcnQgbnVsbCB0byBcIlwiXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMucGFyYW1zLmZpbHRlclBhcmFtcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGtleTogZi5maWVsZCBhcyBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICBvcHM6IHRoaXMubWFwRmlsdGVyT3BlcmF0b3IoZi5vcGVyYXRvciksXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogZi52YWx1ZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0udmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICBpdGVtLnZhbHVlID0gXCJcIjsgLy8gY29udmVydCBudWxsIHRvIFwiXCJcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB0aGlzLnpncmlkYmluZGluZy5kYXRhWydGaWx0ZXJXaXRob3V0QnJhY2tldCddID8gYCR7ZmllbGQudmFsdWVFeHByfWAgOiBgKCR7ZmllbGQudmFsdWVFeHByfSlgO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5wYXJhbXMuZmlsdGVyUGFyYW1zLnB1c2goe1xyXG4gICAgICAgICAgICAgIGtleTogZmllbGQudmFsdWVFeHByICE9PSB1bmRlZmluZWQgPyBmaWx0ZXJWYWx1ZSA6IGl0ZW0uZmllbGQsXHJcbiAgICAgICAgICAgICAgb3BzOiB0aGlzLm1hcEZpbHRlck9wZXJhdG9yKGl0ZW0ub3BlcmF0b3IpLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0R3JpZFNlc3Npb25GaWx0ZXIodGhpcy5ncnAsIHRoaXMpO1xyXG4gICAgdGhpcy5nZXREYXRhQmluZGluZygpO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGF0YVN0YXRlQ2hhbmdlKHN0YXRlOiBEYXRhU3RhdGVDaGFuZ2VFdmVudCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5zdGF0ZSA9IHN0YXRlO1xyXG4gICAgdGhpcy5za2lwID0gc3RhdGUuc2tpcDtcclxuICAgIHRoaXMucGFnZVNpemUgPSBzdGF0ZS50YWtlO1xyXG4gICAgdGhpcy5zdGF0ZS5za2lwID0gc3RhdGUuc2tpcDtcclxuICAgIHRoaXMuc3RhdGUudGFrZSA9IHN0YXRlLnRha2U7XHJcbiAgICB0aGlzLmdyaWQubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmFnZ3JlZ2F0ZVJlc2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFwRmlsdGVyT3BlcmF0b3Iob3BlcmF0b3I6IGFueSkge1xyXG4gICAgc3dpdGNoIChvcGVyYXRvcikge1xyXG4gICAgICBjYXNlIFwiZXFcIjpcclxuICAgICAgICByZXR1cm4gXCJlcVwiO1xyXG4gICAgICBjYXNlIFwibmVxXCI6XHJcbiAgICAgICAgcmV0dXJuIFwibmVxXCI7XHJcbiAgICAgIGNhc2UgXCJsdFwiOlxyXG4gICAgICAgIHJldHVybiBcImx0XCI7XHJcbiAgICAgIGNhc2UgXCJsdGVcIjpcclxuICAgICAgICByZXR1cm4gXCJsdGVcIjtcclxuICAgICAgY2FzZSBcImd0XCI6XHJcbiAgICAgICAgcmV0dXJuIFwiZ3RcIjtcclxuICAgICAgY2FzZSBcImd0ZVwiOlxyXG4gICAgICAgIHJldHVybiBcImd0ZVwiO1xyXG4gICAgICBjYXNlIFwic3RhcnRzd2l0aFwiOlxyXG4gICAgICAgIHJldHVybiBcInN0YXJ0c3dpdGhcIjtcclxuICAgICAgY2FzZSBcImVuZHN3aXRoXCI6XHJcbiAgICAgICAgcmV0dXJuIFwiZW5kc3dpdGhcIjtcclxuICAgICAgY2FzZSBcImlzbnVsbFwiOlxyXG4gICAgICAgIHJldHVybiBcImlzbnVsbFwiO1xyXG4gICAgICBjYXNlIFwiaXNub3RudWxsXCI6XHJcbiAgICAgICAgcmV0dXJuIFwiaXNub3RudWxsXCI7XHJcbiAgICAgIGNhc2UgXCJjb250YWluc1wiOiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpZWxkWydGaWx0ZXJDb250YWluc1VzaW5nRXF1YWwnXSkge1xyXG4gICAgICAgICAgcmV0dXJuIFwiY29udGFpbnNcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gXCI9PVwiO1xyXG4gICAgICAvLyBlcSwgbmVxLCBpc251bGwsIGlzbm90bnVsbCwgZW5kc3dpdGgsIHN0YXJ0c3dpdGhcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0R3JpZFNldHRpbmdzKCk6IFpHcmlkQ29sdW1uU2V0dGluZ3NbXSB7XHJcbiAgICBjb25zdCBfc3RvcmFnZUtleSA9ICdpb25pYy1maWVsZDo6JyArIHRoaXMuYXV0aFNlcnZpY2UuZTFUb2tlbi51c2VyTmFtZSArICc6OicgKyB0aGlzLmZpZWxkLk5hbWUgKyAnOjonICsgdGhpcy5yb3V0ZXIudXJsO1xyXG5cclxuICAgIC8vIEZpbmQgYW55IHNldHRpbmcgZnJvbSBsb2NhbHN0b3JhZ2UuLlxyXG4gICAgbGV0IF9hcnJHcmlkQ2FjaGluZzogR3JpZENhY2hpbmdbXSA9IHRoaXMuekdyaWRTdGF0ZVBlcnNpc3RpbmdTZXJ2aWNlLmdldChfc3RvcmFnZUtleSk7XHJcbiAgICBpZiAoX2FyckdyaWRDYWNoaW5nKSB7XHJcbiAgICAgIGNvbnN0IF9ncmlkQ2FjaGluZzogR3JpZENhY2hpbmcgPSBKU09OLnBhcnNlKF9hcnJHcmlkQ2FjaGluZ1snVmFsdWUnXSk7XHJcbiAgICAgIGlmIChfZ3JpZENhY2hpbmcpIHtcclxuICAgICAgICByZXR1cm4gX2dyaWRDYWNoaW5nLmdyaWRTZXR0aW5ncy5jb2x1bW5zQ29uZmlnLnNvcnQoKGEsIGIpID0+IGEub3JkZXJJbmRleCAtIGIub3JkZXJJbmRleCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBiZWZvcmVHcmlkR2V0RGF0YShncm91cDogWkdyb3VwLCBtZTogYW55KSB7XHJcbiAgICBjb25zb2xlLndhcm4oXCJiZWZvcmVEYXRhQmluZGluZyB0cmlnZ2VyZWRcIik7XHJcbiAgICBpZiAoIWdyb3VwLmJlZm9yZUdyaWRHZXREYXRhKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcImdyb3VwLmJlZm9yZURhdGFCaW5kaW5nIGlzIHVuZGVmaW5lZFwiKTtcclxuICAgICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdyb3VwLmJlZm9yZUdyaWRHZXREYXRhKGdyb3VwLCBtZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEdyaWRTZXNzaW9uRmlsdGVyKGdyb3VwOiBaR3JvdXAsIG1lOiBhbnkpIHtcclxuICAgIGlmICghZ3JvdXBbXCJHcmlkU3RvcmFnZUtleVwiXSkge1xyXG4gICAgICByZXR1cm4gb2YoW10pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IFN0b3JhZ2VLZXkgPSBncm91cFtcIkdyaWRTdG9yYWdlS2V5XCJdO1xyXG5cclxuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlKSB7XHJcbiAgICAgIGNvbnN0IHN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICAgICAgb2YodHJ1ZSlcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldChTdG9yYWdlS2V5KTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgdGFwKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWRhdGEgfHwgIWRhdGEudmFsdWUgfHwgZGF0YS52YWx1ZSA9PT0gXCJudWxsXCIpIHtcclxuICAgICAgICAgICAgICBzdWJqZWN0Lm5leHQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBKU09OLnBhcnNlKGRhdGEudmFsdWUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc3RhdGUuZmlsdGVyID0gSlNPTi5wYXJzZShyZXN1bHRbXCJTdGF0ZUZpbHRlclwiXSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJhbXMuZmlsdGVyUGFyYW1zID0gSlNPTi5wYXJzZShyZXN1bHRbXCJGaWx0ZXJQYXJhbXNcIl0pO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLnN0YXRlLmZpbHRlci5maWx0ZXJzLmZvckVhY2goKGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGQuZmllbGQuaW5jbHVkZXMoJ1VUQycpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGQudmFsdWUgPSBuZXcgRGF0ZShkLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgc3ViamVjdC5uZXh0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgIHJldHVybiBzdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBvZihbXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEdyaWRTZXNzaW9uRmlsdGVyKGdyb3VwOiBaR3JvdXAsIG1lOiBhbnkpIHtcclxuICAgIGlmICghZ3JvdXBbXCJHcmlkU3RvcmFnZUtleVwiXSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBTdG9yYWdlS2V5ID0gZ3JvdXBbXCJHcmlkU3RvcmFnZUtleVwiXTtcclxuXHJcbiAgICBpZiAobWUuc3RhdGUuZmlsdGVyICYmIHRoaXMuc3RvcmFnZVNlcnZpY2UgJiYgdGhpcy5maWVsZFsnU2F2ZUZpbHRlciddKSB7XHJcbiAgICAgIC8vbGlzdCBvZiBkYXRhIGZvciBTdGF0ZUZpbHRlciBhbmQgRmlsdGVyUGFyYW1zXHJcbiAgICAgIGNvbnN0IGxzdEdyaWRGaWx0ZXIgPSB7IFwiU3RhdGVGaWx0ZXJcIjogSlNPTi5zdHJpbmdpZnkobWUuc3RhdGUuZmlsdGVyKSwgXCJGaWx0ZXJQYXJhbXNcIjogSlNPTi5zdHJpbmdpZnkobWUucGFyYW1zLmZpbHRlclBhcmFtcykgfVxyXG4gICAgICAvL2NyZWF0ZSBzZXNzaW9uIHN0b3JhZ2VcclxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoU3RvcmFnZUtleSwgSlNPTi5zdHJpbmdpZnkobHN0R3JpZEZpbHRlcikpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldENvbHVtbnMoY29sdW1uczogYW55W10pIHtcclxuICAgIFpDb21wb25lbnRIZWxwZXIuZ2V0R3JpZENvbHVtbnMoXHJcbiAgICAgIGNvbHVtbnMsXHJcbiAgICAgIHRoaXMuZ3JpZENvbHVtbnMsXHJcbiAgICAgIHRoaXMuemdyaWRiaW5kaW5nLmdyb3VwLFxyXG4gICAgICB0aGlzLmdldEdyaWRTZXR0aW5ncygpLFxyXG4gICAgICB0aGlzLnVzYWJsZUNvbHVtbnNcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
548
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemdyaWQuYmluZGluZy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96Z3JpZC96Z3JpZC5iaW5kaW5nLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBcUIsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU01RSxPQUFPLEVBQTRCLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGFBQWEsR0FHZCxNQUFNLDhCQUE4QixDQUFDO0FBT3RDLDJDQUEyQztBQUMzQyxPQUFPLEVBRUwsZ0JBQWdCLEVBRWpCLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFNekIsTUFBTSxPQUFPLHFCQUFzQixTQUFRLG9CQUFvQjtJQTRDN0QsWUFDeUIsSUFBSSxFQUNuQixhQUE0QixFQUM1QixZQUEwQixFQUMxQixXQUF3QixFQUN4QixjQUFxQyxFQUNyQyxNQUFjLEVBQ2QsMkJBQXdEO1FBRWhFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQVBKLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUNyQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQTFDbEUsVUFBSyxHQUFVO1lBQ2IsSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLEVBQUUsRUFBRTtTQUNULENBQUM7UUFFRixnQkFBVyxHQUFVLEVBQUUsQ0FBQztR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Q0FBQyxlQUFlLEVBQUUsRUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FDbkIsQ0FBQztJQUNKLENBQUM7O2tIQWhwQlUscUJBQXFCLGtCQTZDdEIsYUFBYTtzR0E3Q1oscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7OzBCQThDSSxNQUFNOzJCQUFDLGFBQWE7Z09BM0NkLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgT25Jbml0LCBPbkRlc3Ryb3ksIElucHV0LCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YXAsIHN3aXRjaE1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQge1xyXG4gIERhdGFCaW5kaW5nRGlyZWN0aXZlLFxyXG4gIEdyaWRDb21wb25lbnQsXHJcbiAgRGF0YVN0YXRlQ2hhbmdlRXZlbnQsXHJcbiAgUGFnZUNoYW5nZUV2ZW50LFxyXG59IGZyb20gXCJAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1ncmlkXCI7XHJcbmltcG9ydCB7XHJcbiAgU29ydERlc2NyaXB0b3IsXHJcbiAgU3RhdGUsXHJcbiAgRmlsdGVyRGVzY3JpcHRvcixcclxufSBmcm9tIFwiQHByb2dyZXNzL2tlbmRvLWRhdGEtcXVlcnlcIjtcclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHtcclxuICBBdXRoU2VydmljZSwgR3JpZENhY2hpbmcsIFdlYkFwaVNlcnZpY2UsXHJcbiAgWkNvbXBvbmVudEhlbHBlciwgWkZpZWxkLCBaR3JpZFBvc3RBcGlQYXJhbXMsIFpHcmlkQ29sdW1uU2V0dGluZ3MsXHJcbiAgWkdyaWRTdGF0ZVBlcnNpc3RpbmdTZXJ2aWNlLCBaR3JvdXAsIFN0b3JhZ2VTZXNzaW9uU2VydmljZSwgVG9hc3RTZXJ2aWNlXHJcbn0gZnJvbSBcIm1taGdsb2JhbC16Y29yZVwiO1xyXG5cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiBcIlt6Z3JpZGJpbmRpbmddXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBaR3JpZEJpbmRpbmdEaXJlY3RpdmUgZXh0ZW5kcyBEYXRhQmluZGluZ0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHNlcnZpY2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBASW5wdXQoKSB6Z3JpZGJpbmRpbmc6IHtcclxuICAgIGRhdGE6IFpGaWVsZDtcclxuICAgIGdyb3VwOiBaR3JvdXA7XHJcbiAgICBwYXJhbXM6IFpHcmlkUG9zdEFwaVBhcmFtcztcclxuICAgIGdyaWRTdWJqZWN0OiBTdWJqZWN0PGFueT47XHJcbiAgfTtcclxuXHJcbiAgc3RhdGU6IFN0YXRlID0ge1xyXG4gICAgc2tpcDogMCxcclxuICAgIHRha2U6IDEwLFxyXG4gIH07XHJcblxyXG4gIGdyaWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICB1c2FibGVDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICByZXNvdXJjZVVSTCA9IG51bGw7XHJcblxyXG4gIHBhZ2luYXRpb25BcGlQb3N0VXJsID0gbnVsbDtcclxuXHJcbiAgZGF0YVNvdXJjZSA9IG51bGw7XHJcblxyXG4gIGdldCBmaWVsZCgpIHtcclxuICAgIHJldHVybiB0aGlzLnpncmlkYmluZGluZy5kYXRhO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdycCgpIHtcclxuICAgIHJldHVybiB0aGlzLnpncmlkYmluZGluZy5ncm91cDtcclxuICB9XHJcblxyXG4gIGdldCBncmlkU3ViamVjdCgpIHtcclxuICAgIHJldHVybiB0aGlzLnpncmlkYmluZGluZy5ncmlkU3ViamVjdDtcclxuICB9XHJcblxyXG4gIGdldCBwYXJhbXMoKTogWkdyaWRQb3N0QXBpUGFyYW1zIHtcclxuICAgIHJldHVybiB0aGlzLnpncmlkYmluZGluZy5wYXJhbXM7XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0RGF0YSgpIHtcclxuICAgIHJldHVybiB0aGlzLmdyaWQuZGF0YTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChHcmlkQ29tcG9uZW50KSBncmlkLFxyXG4gICAgcHJpdmF0ZSB3ZWJhcGlTZXJ2aWNlOiBXZWJBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgekdyaWRTdGF0ZVBlcnNpc3RpbmdTZXJ2aWNlOiBaR3JpZFN0YXRlUGVyc2lzdGluZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKGdyaWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuXHJcbiAgICB0aGlzLmdyaWQubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnN0YXRlLnRha2UgPSB0aGlzLmZpZWxkLlBhZ2VTaXplIHx8IDIwO1xyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IHRoaXMuc3RhdGUudGFrZTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IHRoaXMuZmllbGQuRGF0YVNvdXJjZSA/IHRoaXMuZmllbGQuRGF0YVNvdXJjZSA6IG51bGw7XHJcblxyXG4gICAgaWYgKCF0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy5yZXNvdXJjZVVSTCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZShcclxuICAgICAgICB0aGlzLmZpZWxkLlJlc291cmNlVVJMLFxyXG4gICAgICAgIHRoaXMuZ3JwXHJcbiAgICAgICk7XHJcblxyXG4gICAgICAvLyBjb25zb2xlLmxvZyhcIkF0IHpncmlkLmNvbXBvbmVudCAoT25Jbml0KSByZXNvdXJjZVVSTDogXCIsIHJlc291cmNlVVJMKTtcclxuICAgICAgaWYgKCF0aGlzLnJlc291cmNlVVJMKSB7XHJcbiAgICAgICAgdGhpcy5ncmlkLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy56Z3JpZGJpbmRpbmcuZGF0YS5OYW1lICE9PSBcIkFjdGl2aXR5TG9nR3JpZFwiKSB7XHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICAgIFwiTm8gaW5pdGlhbGlzZSBmb3IgRmllbGQuUmVzb3VyY2VVUkw6IFwiLFxyXG4gICAgICAgICAgICB0aGlzLmZpZWxkLlJlc291cmNlVVJMXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGFycmF5ID0gdGhpcy5yZXNvdXJjZVVSTC5zcGxpdChcIi9hcGkvXCIpO1xyXG4gICAgICBpZiAoISFhcnJheVsxXSkge1xyXG4gICAgICAgIGFycmF5WzFdID0gXCJQYWdlXCIgKyBhcnJheVsxXTtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25BcGlQb3N0VXJsID0gYXJyYXkuam9pbihcIi9hcGkvXCIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGFyciA9IHRoaXMucmVzb3VyY2VVUkwuc3BsaXQoXCIvXCIpO1xyXG4gICAgICAgIGFyclthcnIubGVuZ3RoIC0gMl0gPSBcIlBhZ2VcIiArIGFyclthcnIubGVuZ3RoIC0gMl07XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uQXBpUG9zdFVybCA9IGFyci5qb2luKFwiL1wiKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zZXRGaWx0ZXJQYXJhbXNCeVBhcmVudFJlZklkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdGhpcy5ncmlkU3ViamVjdC5uZXh0KHRoaXMpO1xyXG4gICAgaWYgKHRoaXMuZmllbGRbJ0Rpc2FibGVHZW5lcmF0ZUNvbHVtbkJ5Rm9ybSddKSB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbkZpZWxkcyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSh0aGlzLmZpZWxkLkNvbHVtbkZpZWxkcywgdGhpcy5ncnApO1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjb2x1bW5GaWVsZHMpKSB7XHJcbiAgICAgICAgdGhpcy5zZXRDb2x1bW5zKGNvbHVtbkZpZWxkcyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmZpZWxkWydTa2lwTG9hZFJlc291cmNlVVJMRGF0YSddKSB7XHJcbiAgICAgICAgdGhpcy5ncmlkLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmdyaWRTdWJqZWN0Lm5leHQodGhpcyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5nZXREYXRhQmluZGluZygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5nZW5lcmF0ZUdyaWRDb2x1bW5zKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEZpbHRlclBhcmFtc0J5UGFyZW50UmVmSWQoKSB7XHJcbiAgICAvLyBVc2UgZmllbGQgb3duIHJlZmVyZW5jZUlkIGlmIGF2YWlsYWJsZVxyXG4gICAgY29uc3QgcmVmSWQgPSB0aGlzLmdldEZpZWxkUmVmZXJlbmNlSWQoKSB8fCB0aGlzLmdycC5yZWZlcmVuY2VJZDtcclxuICAgIGNvbnN0IHJlZkZpZWxkID0gdGhpcy5maWVsZC5SZWZlcmVuY2VGaWVsZCB8fCB0aGlzLmdycC5wYXJlbnRSZWZlcmVuY2VGaWVsZDtcclxuICAgIGlmIChyZWZJZCAmJiByZWZGaWVsZCkge1xyXG4gICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHtcclxuICAgICAgICBrZXk6IHJlZkZpZWxkLFxyXG4gICAgICAgIG9wczogXCI9XCIsXHJcbiAgICAgICAgdmFsdWU6IHJlZklkLFxyXG4gICAgICB9O1xyXG4gICAgICAvLyBpZiAodGhpcy5wYXJhbXMuZmlsdGVyUGFyYW1zLmZpbmQoeCA9PiB4LmtleSA9PT0gZmlsdGVyVmFsdWUua2V5KSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMucGFyYW1zLmZpbHRlclBhcmFtcy5wdXNoKGZpbHRlclZhbHVlKTtcclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGaWVsZFJlZmVyZW5jZUlkKCkge1xyXG4gICAgbGV0IGZpZWxkUmVmZXJlbmNlSWQgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMuZmllbGQuUmVmZXJlbmNlSWQpIHtcclxuICAgICAgZmllbGRSZWZlcmVuY2VJZCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZShcclxuICAgICAgICB0aGlzLmZpZWxkLlJlZmVyZW5jZUlkLFxyXG4gICAgICAgIHRoaXMuZ3JwXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmllbGRSZWZlcmVuY2VJZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlcnZpY2VTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5zZXJ2aWNlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdlbmVyYXRlR3JpZENvbHVtbnMoKSB7XHJcbiAgICBjb25zdCBjb2x1bW5GaWVsZHMkOiBPYnNlcnZhYmxlPGFueT4gPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUoXHJcbiAgICAgIHRoaXMuZmllbGQuQ29sdW1uRmllbGRzLFxyXG4gICAgICB0aGlzLmdycFxyXG4gICAgKTtcclxuICAgIGNvbHVtbkZpZWxkcyQucGlwZShcclxuICAgICAgdGFwKChkYXRhKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZ3JpZFNldHRpbmcgPSB0aGlzLmdldEdyaWRTZXR0aW5ncygpO1xyXG5cclxuICAgICAgICBaQ29tcG9uZW50SGVscGVyLmdldEdyaWRDb2x1bW5zKFxyXG4gICAgICAgICAgZGF0YSxcclxuICAgICAgICAgIHRoaXMuZ3JpZENvbHVtbnMsXHJcbiAgICAgICAgICB0aGlzLnpncmlkYmluZGluZy5ncm91cCxcclxuICAgICAgICAgIGdyaWRTZXR0aW5nLFxyXG4gICAgICAgICAgdGhpcy51c2FibGVDb2x1bW5zXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmdldEZpbHRlclBhcmFtc0NvbHVtbnMoKTtcclxuICAgICAgICB0aGlzLmdldEZpbHRlcigpO1xyXG4gICAgICAgIHRoaXMuZ2V0RmlsdGVyUGFyYW1zKCk7XHJcbiAgICAgICAgdGhpcy5nZXRTb3J0aW5nKCk7XHJcbiAgICAgICAgdGhpcy5nZXRHcmFudFR5cGUoKTtcclxuICAgICAgICB0aGlzLnNldEhpZGRlbkNvbHVtbihncmlkU2V0dGluZyk7XHJcblxyXG4gICAgICAgIHRoaXMucGFyYW1zLnJlZmVySWQgPSB0aGlzLmdldEZpZWxkUmVmZXJlbmNlSWQoKSB8fCB0aGlzLmdycC5yZWZlcmVuY2VJZCB8fCBudWxsO1xyXG4gICAgICAgIC8vIH0pLFxyXG4gICAgICAgIC8vIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgLy8gICAvL0dldCBTZXNzaW9uXHJcbiAgICAgICAgLy8gICByZXR1cm4gdGhpcy5nZXRHcmlkU2Vzc2lvbkZpbHRlcih0aGlzLmdycCwgdGhpcyk7XHJcbiAgICAgICAgLy8gfSksXHJcbiAgICAgICAgLy8gc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAvLyAgICAvL0JlZm9yZSBnZXQgZ3JpZCBkYXRhXHJcbiAgICAgICAgLy8gICByZXR1cm4gdGhpcy5iZWZvcmVHcmlkR2V0RGF0YSh0aGlzLmdycCwgdGhpcyk7XHJcbiAgICAgICAgLy8gfSksXHJcbiAgICAgICAgLy8gc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAvLyAgIC8vU2V0IGdyaWQgZGF0YVxyXG4gICAgICAgIC8vICAgcmV0dXJuIHRoaXMuc2V0R3JpZFNlc3Npb25GaWx0ZXIodGhpcy5ncnAsIHRoaXMpO1xyXG4gICAgICB9KVxyXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5maWVsZFsnU2tpcExvYWRSZXNvdXJjZVVSTERhdGEnXSkge1xyXG4gICAgICAgIHRoaXMuZ3JpZC5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ncmlkU3ViamVjdC5uZXh0KHRoaXMpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ2V0RGF0YUJpbmRpbmcoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0U2tpcExvYWRSZXNvdXJjZVVSTERhdGEoc2V0dGluZ1ZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmZpZWxkWydTa2lwTG9hZFJlc291cmNlVVJMRGF0YSddID0gIXNldHRpbmdWYWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRDb2x1bW5OYW1lKGNvbFZhbHVlOiBzdHJpbmcsIGNvbE5hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5ncmlkQ29sdW1ucy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICBpZiAoZmllbGQuVmFsdWUgPT0gY29sVmFsdWUpIHtcclxuICAgICAgICBmaWVsZC50aXRsZSA9IGNvbE5hbWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Q29sdW1uVmlzaWJsZShjb2xWYWx1ZTogc3RyaW5nLCBjb25maWc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZ3JpZENvbHVtbnMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgaWYgKGZpZWxkLlZhbHVlID09IGNvbFZhbHVlKSB7XHJcbiAgICAgICAgZmllbGQuaGlkZGVuID0gIWNvbmZpZztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RmlsdGVyUGFyYW1zQ29sdW1ucygpIHtcclxuICAgIGNvbnN0IGNvbEZpZWxkczogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gICAgdGhpcy5ncmlkQ29sdW1ucy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICBpZiAoZmllbGQudmFsdWVFeHByKSB7XHJcbiAgICAgICAgY29sRmllbGRzLnB1c2goZmllbGQudmFsdWVFeHByICsgXCIgYXMgXCIgKyBmaWVsZC5maWVsZCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29sRmllbGRzLnB1c2goZmllbGQuZmllbGQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoY29sRmllbGRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKGNvbEZpZWxkcy5pbmRleE9mKFwiSWRcIikgPT09IC0xKSB7XHJcbiAgICAgICAgY29sRmllbGRzLnB1c2goXCJJZFwiKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCB0bXBHcmlkQ29sdW1uOiBhbnlbXSA9IFtdO1xyXG4gICAgdG1wR3JpZENvbHVtbi5wdXNoKGNvbEZpZWxkcy5qb2luKFwiLFwiKSk7XHJcbiAgICBpZiAodGhpcy51c2FibGVDb2x1bW5zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdG1wR3JpZENvbHVtbi5wdXNoKHRoaXMudXNhYmxlQ29sdW1ucy5qb2luKFwiLFwiKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBhcmFtcy5jb2x1bW5zID0gdG1wR3JpZENvbHVtbi5qb2luKFwiLFwiKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RmlsdGVyKCkge1xyXG4gICAgaWYgKHRoaXMucGFyYW1zLmZpbHRlcnMgJiYgdGhpcy5maWVsZC5GaWx0ZXJzKSB7XHJcbiAgICAgIHRoaXMucGFyYW1zLmZpbHRlcnMgPSB0aGlzLnBhcmFtcy5maWx0ZXJzICsgXCIgJiYgXCIgKyB0aGlzLmZpZWxkLkZpbHRlcnM7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnBhcmFtcy5maWx0ZXJzICYmIHRoaXMuZmllbGQuRmlsdGVycykge1xyXG4gICAgICB0aGlzLnBhcmFtcy5maWx0ZXJzID0gdGhpcy5maWVsZC5GaWx0ZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmZpZWxkLkZpbHRlcnMgJiYgdGhpcy5maWVsZC5GaWx0ZXJzLmluZGV4T2YoXCJncm91cC5cIikgIT09IC0xKSB7XHJcbiAgICAgIGNvbnN0IGZpbHRlcktleVZhbFBhaXJzID0gdGhpcy5maWVsZC5GaWx0ZXJzLnNwbGl0KFwiIFwiKTtcclxuICAgICAgY29uc3QgZ3JwVmFsdWVzID0gZmlsdGVyS2V5VmFsUGFpcnMuZmlsdGVyKFxyXG4gICAgICAgIChlbGVtZW50KSA9PiBlbGVtZW50LnRyaW0oKS5pbmRleE9mKFwiZ3JvdXAuXCIpICE9PSAtMVxyXG4gICAgICApO1xyXG5cclxuICAgICAgZ3JwVmFsdWVzLmZvckVhY2goKHZhbCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGFjdHVhbFZhbCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSh2YWwsIHRoaXMuZ3JwKTtcclxuICAgICAgICB0aGlzLnBhcmFtcy5maWx0ZXJzID0gdGhpcy5wYXJhbXMuZmlsdGVycy5yZXBsYWNlKHZhbCwgYWN0dWFsVmFsKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpbHRlclBhcmFtcygpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkWydGaWx0ZXJQYXJhbXMnXSkge1xyXG4gICAgICBpZiAodGhpcy5maWVsZFsnRmlsdGVyUGFyYW1zJ10uaW5kZXhPZihcImdyb3VwLlwiKSAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLnBhcmFtcy5maWx0ZXJQYXJhbXMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUodGhpcy5maWVsZFsnRmlsdGVyUGFyYW1zJ10sIHRoaXMuZ3JwKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBhcmFtcy5maWx0ZXJQYXJhbXMgPSB0aGlzLmZpZWxkWydGaWx0ZXJQYXJhbXMnXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTb3J0aW5nKCkge1xyXG4gICAgaWYgKHRoaXMuZmllbGQuU29ydE9yZGVyKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLlNvcnRPcmRlci5pbmRleE9mKFwiZ3JvdXAuXCIpICE9PSAtMSkge1xyXG4gICAgICAgIHRoaXMucGFyYW1zLnNvcnRPcmRlciA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSh0aGlzLmZpZWxkLlNvcnRPcmRlciwgdGhpcy5ncnApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucGFyYW1zLnNvcnRPcmRlciA9IHRoaXMuZmllbGQuU29ydE9yZGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEdyYW50VHlwZSgpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkLkdyYW50VHlwZSkge1xyXG4gICAgICB0aGlzLnBhcmFtcy5ncmFudFR5cGUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUodGhpcy5maWVsZC5HcmFudFR5cGUudG9TdHJpbmcoKSwgdGhpcy5ncnApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRIaWRkZW5Db2x1bW4oZ3JpZFNldHRpbmc6IFpHcmlkQ29sdW1uU2V0dGluZ3NbXSkge1xyXG4gICAgaWYgKHRoaXMuZ3JpZENvbHVtbnMgJiYgZ3JpZFNldHRpbmcpIHtcclxuICAgICAgLy8gZmlsdGVyIG91dCBoaWRkZW4gPT0gZmFsc2UgYXJyYXkuXHJcbiAgICAgIGNvbnN0IGdyaWRTZXR0aW5nSGlkZGVuQ29sID0gZ3JpZFNldHRpbmcuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1bJ2hpZGRlbiddID09IHRydWU7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gZmluZCBhbmQgc2V0IHRoZSBoaWRkZW4gdG8gY3VycmVudCBjb2x1bW4gc2V0dGluZy5cclxuICAgICAgT2JqZWN0LnZhbHVlcyhncmlkU2V0dGluZ0hpZGRlbkNvbCkuZm9yRWFjaCh2YWx1ZSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZENvbHVtbnMuZmluZCgoYykgPT4gYy5maWVsZCA9PT0gdmFsdWUuZmllbGQpKSB7XHJcbiAgICAgICAgICB0aGlzLmdyaWRDb2x1bW5zLmZpbmQoKGMpID0+IGMuZmllbGQgPT09IHZhbHVlLmZpZWxkKVsnaGlkZGVuJ10gPSB2YWx1ZVsnaGlkZGVuJ107XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgZ2V0RGF0YUJpbmRpbmcoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyaWQubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgaWYgKCF0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy5wYXJhbXMucGFnZVNpemUgPSB0aGlzLnN0YXRlLnRha2U7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLkV4dGVybmFsUGFnaW5hdGlvbikge1xyXG4gICAgICAgIC8vIEZvciBQT1NUIG1ldGhvZCBQYWdlIFdlYkFQSVxyXG4gICAgICAgIHRoaXMud2ViYXBpU2VydmljZVxyXG4gICAgICAgICAgLnBvc3RBcGkoXHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkFwaVBvc3RVcmwsXHJcbiAgICAgICAgICAgIHRoaXMucGFyYW1zLFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICB0cnVlXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKGRhdGEpID0+IHRoaXMuaGFuZGxlR2V0RGF0YUJpbmRpbmdDb21wbGV0ZShkYXRhKSxcclxuICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KFwiRXJyb3Igb2NjdXIgaW4gbG9hZGluZyB0aGUgZGF0YVwiLCBcIm1pZGRsZVwiLCBmYWxzZSwgMTUwMCwgXCJkYW5nZXJcIik7XHJcbiAgICAgICAgICAgICAgdGhpcy5ncmlkLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgLy8gRm9yIEdFVCBtZXRob2RcclxuICAgICAgICB0aGlzLndlYmFwaVNlcnZpY2VcclxuICAgICAgICAgIC5nZXRBcGkodGhpcy5yZXNvdXJjZVVSTCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgdHJ1ZSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgbGV0IF9kYXRhID0gbnVsbDtcclxuICAgICAgICAgICAgbGV0IF90b3RhbENvdW50ID0gMDtcclxuXHJcbiAgICAgICAgICAgIGlmIChkYXRhLmRhdGFTZXQpIHtcclxuICAgICAgICAgICAgICBfZGF0YSA9IGRhdGEuZGF0YVNldDtcclxuICAgICAgICAgICAgICBfdG90YWxDb3VudCA9IGRhdGEudG90YWxDb3VudDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBfZGF0YSA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgX3RvdGFsQ291bnQgPSBkYXRhLmxlbmd0aDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVHZXREYXRhQmluZGluZ0NvbXBsZXRlKHsgZGF0YVNldDogX2RhdGEsIHRvdGFsQ291bnQ6IF90b3RhbENvdW50IH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zdCBkcyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZShcclxuICAgICAgICB0aGlzLmZpZWxkLkRhdGFTb3VyY2UsXHJcbiAgICAgICAgdGhpcy5ncnBcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuZGF0YSA9IGRzO1xyXG4gICAgICB0aGlzLmdyaWQubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmdyaWRTdWJqZWN0Lm5leHQodGhpcyk7XHJcbiAgICAgIHRoaXMubm90aWZ5RGF0YUNoYW5nZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVHZXREYXRhQmluZGluZ0NvbXBsZXRlKGRhdGEpIHtcclxuICAgIHRoaXMuYWdncmVnYXRlSGFuZGxpbmcoZGF0YS5kYXRhU2V0KTtcclxuICAgIHRoaXMuZ3JpZC5kYXRhID0geyBkYXRhOiBkYXRhLmRhdGFTZXQsIHRvdGFsOiBkYXRhLnRvdGFsQ291bnQgfTtcclxuICAgIHRoaXMuZ3JpZC5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLmFmdGVyRGF0YUJpbmRlZChkYXRhKTtcclxuICAgIHRoaXMuZ3JpZFN1YmplY3QubmV4dCh0aGlzKTtcclxuICAgIHRoaXMubm90aWZ5RGF0YUNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZnRlckRhdGFCaW5kZWQoZGF0YSkge1xyXG4gICAgLy8gYWxsb3cgdG8gY2FsbCBiYWNrIHByb2plY3QgcGFnZSBhZnRlciBkYXRhIGJpbmRlZC5cclxuICAgIGxldCBiaW5kZWRWYWx1ZSA9IHRoaXMuemdyaWRiaW5kaW5nLmRhdGFbJ0FmdGVyRGF0YUJpbmRlZCddO1xyXG4gICAgaWYgKGJpbmRlZFZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IG1lID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcyk7XHJcbiAgICAgIGxldCBjYWxsRnVuYztcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gYmluZGVkVmFsdWUubWF0Y2goL1xcYlxcKC4qL2dpKTtcclxuICAgICAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgICAgICBiaW5kZWRWYWx1ZSA9IGJpbmRlZFZhbHVlLnJlcGxhY2UocGFyYW1zWzBdLCBcIlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYmluZGVkVmFsdWUgPSBiaW5kZWRWYWx1ZS5yZXBsYWNlKCdtb2RhbEdyb3VwLicsICdncm91cC4nKTtcclxuICAgICAgICBjYWxsRnVuYyA9IGV2YWwoJ21lLnpncmlkYmluZGluZy4nICsgYmluZGVkVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgIFwiRXJyb3Igd2hlbiBnZXRHcm91cFZhbHVlOiBcIixcclxuICAgICAgICAgIGV2ZW50LnRhcmdldCxcclxuICAgICAgICAgIFwiID4gRXJyb3I6IFwiLFxyXG4gICAgICAgICAgZXJyb3JcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodHlwZW9mIGNhbGxGdW5jID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICBjb25zdCBuZXdGdW5jID0gY2FsbEZ1bmMuYmluZChtZSk7XHJcbiAgICAgICAgbmV3RnVuYyhldmVudCwgbWUuemdyaWRiaW5kaW5nLmRhdGEsIGRhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXJEYXRhKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncmlkLmRhdGEgPSB7IGRhdGE6IFtdLCB0b3RhbDogMCB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZ2dyZWdhdGVIYW5kbGluZyhkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IGFnZ3JlZ2F0ZUNvbHVtbnMgPSB0aGlzLmdyaWRDb2x1bW5zLmZpbHRlcih4ID0+IHguYWdncmVnYXRlVHlwZSk7XHJcblxyXG4gICAgYWdncmVnYXRlQ29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgIGNvbnN0IGZpZWxkID0gY29sLmZpZWxkO1xyXG5cclxuICAgICAgbGV0IF9hZ2dyZWdhdGVWYWx1ZSA9IG51bGw7XHJcbiAgICAgIHN3aXRjaCAoY29sLmFnZ3JlZ2F0ZVR5cGUuc2xpY2UoMCwgLTEpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICBjYXNlIFwidG90YWxcIjoge1xyXG4gICAgICAgICAgX2FnZ3JlZ2F0ZVZhbHVlID0gZGF0YS5yZWR1Y2UoKHRvdGFsLCBuZXh0KSA9PiB0b3RhbCArIG5leHRbZmllbGRdLCAwKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIFwic3VtXCI6IHtcclxuICAgICAgICAgIF9hZ2dyZWdhdGVWYWx1ZSA9IGRhdGEucmVkdWNlKCh0b3RhbCwgbmV4dCkgPT4gdG90YWwgKyBuZXh0W2ZpZWxkXSwgMCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSBcImF2ZXJhZ2VcIjoge1xyXG4gICAgICAgICAgX2FnZ3JlZ2F0ZVZhbHVlID0gZGF0YS5yZWR1Y2UoKHRvdGFsLCBuZXh0KSA9PiB0b3RhbCArIG5leHRbZmllbGRdLCAwKSAvIGRhdGEubGVuZ3RoO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgXCJjb3VudFwiOiB7XHJcbiAgICAgICAgICBfYWdncmVnYXRlVmFsdWUgPSBkYXRhLmxlbmd0aDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIFwibWF4XCI6IHtcclxuICAgICAgICAgIF9hZ2dyZWdhdGVWYWx1ZSA9IGRhdGEucmVkdWNlKChwLCBjKSA9PiBwW2ZpZWxkXSA+IGNbZmllbGRdID8gcCA6IGMpW2ZpZWxkXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIFwibWluXCI6IHtcclxuICAgICAgICAgIF9hZ2dyZWdhdGVWYWx1ZSA9IGRhdGEucmVkdWNlKChwLCBjKSA9PiBwW2ZpZWxkXSA8IGNbZmllbGRdID8gcCA6IGMpW2ZpZWxkXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgY29sLmFnZ3JlZ2F0ZVZhbHVlID0gX2FnZ3JlZ2F0ZVZhbHVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFnZ3JlZ2F0ZVJlc2V0VmFsdWUoKSB7XHJcbiAgICBjb25zdCBhZ2dyZWdhdGVDb2x1bW5zID0gdGhpcy5ncmlkQ29sdW1ucy5maWx0ZXIoeCA9PiB4LmFnZ3JlZ2F0ZVR5cGUpO1xyXG4gICAgYWdncmVnYXRlQ29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgIGNvbC5hZ2dyZWdhdGVWYWx1ZSA9IDA7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgcGFnZUNoYW5nZShldmVudDogUGFnZUNoYW5nZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhcmFtcy5wYWdlTm8gPSBldmVudC5za2lwIC8gdGhpcy5wYXJhbXMucGFnZVNpemU7XHJcbiAgICB0aGlzLnN0YXRlLnNraXAgPSBldmVudC5za2lwO1xyXG4gICAgdGhpcy5nZXREYXRhQmluZGluZygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNvcnRDaGFuZ2Uoc29ydDogU29ydERlc2NyaXB0b3JbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5zb3J0ID0gc29ydDtcclxuICAgIHRoaXMucGFyYW1zLnNvcnRDb2x1bW5OYW1lcyA9IFtdO1xyXG4gICAgdGhpcy5wYXJhbXMuc29ydE9yZGVycyA9IFtdO1xyXG5cclxuICAgIHNvcnQuZm9yRWFjaCgoZikgPT4ge1xyXG4gICAgICBpZiAoZi5kaXIpIHtcclxuICAgICAgICB0aGlzLnBhcmFtcy5zb3J0T3JkZXJzLnB1c2goZi5kaXIpO1xyXG5cclxuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZ3JpZENvbHVtbnMuZmluZCgoYykgPT4gYy5maWVsZCA9PT0gZi5maWVsZCk7XHJcbiAgICAgICAgaWYgKGZpZWxkLnZhbHVlRXhwciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLnBhcmFtcy5zb3J0Q29sdW1uTmFtZXMucHVzaChmaWVsZC52YWx1ZUV4cHIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnBhcmFtcy5zb3J0Q29sdW1uTmFtZXMucHVzaChmLmZpZWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5nZXREYXRhQmluZGluZygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbHRlckNoYW5nZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhcmFtcy5wYWdlTm8gPSAwO1xyXG4gICAgdGhpcy5wYXJhbXMuZmlsdGVyUGFyYW1zID0gW107XHJcbiAgICB0aGlzLnNldEZpbHRlclBhcmFtc0J5UGFyZW50UmVmSWQoKTtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhldmVudCk7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgaWYgKGV2ZW50LmZpbHRlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGV2ZW50LmZpbHRlcnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmdyaWRDb2x1bW5zLmZpbmQoKGMpID0+IGMuZmllbGQgPT09IGl0ZW0uZmllbGQpO1xyXG5cclxuICAgICAgICAgIGlmIChpdGVtLmZpbHRlcnMpIHtcclxuICAgICAgICAgICAgaXRlbS5maWx0ZXJzLmZvckVhY2goKGY6IEZpbHRlckRlc2NyaXB0b3IpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoZi52YWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgZi52YWx1ZSA9IFwiXCI7IC8vIGNvbnZlcnQgbnVsbCB0byBcIlwiXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMucGFyYW1zLmZpbHRlclBhcmFtcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGtleTogZi5maWVsZCBhcyBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICBvcHM6IHRoaXMubWFwRmlsdGVyT3BlcmF0b3IoZi5vcGVyYXRvciksXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogZi52YWx1ZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0udmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICBpdGVtLnZhbHVlID0gXCJcIjsgLy8gY29udmVydCBudWxsIHRvIFwiXCJcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB0aGlzLnpncmlkYmluZGluZy5kYXRhWydGaWx0ZXJXaXRob3V0QnJhY2tldCddID8gYCR7ZmllbGQudmFsdWVFeHByfWAgOiBgKCR7ZmllbGQudmFsdWVFeHByfSlgO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5wYXJhbXMuZmlsdGVyUGFyYW1zLnB1c2goe1xyXG4gICAgICAgICAgICAgIGtleTogZmllbGQudmFsdWVFeHByICE9PSB1bmRlZmluZWQgPyBmaWx0ZXJWYWx1ZSA6IGl0ZW0uZmllbGQsXHJcbiAgICAgICAgICAgICAgb3BzOiB0aGlzLm1hcEZpbHRlck9wZXJhdG9yKGl0ZW0ub3BlcmF0b3IpLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0R3JpZFNlc3Npb25GaWx0ZXIodGhpcy5ncnAsIHRoaXMpO1xyXG4gICAgdGhpcy5nZXREYXRhQmluZGluZygpO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGF0YVN0YXRlQ2hhbmdlKHN0YXRlOiBEYXRhU3RhdGVDaGFuZ2VFdmVudCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5zdGF0ZSA9IHN0YXRlO1xyXG4gICAgdGhpcy5za2lwID0gc3RhdGUuc2tpcDtcclxuICAgIHRoaXMucGFnZVNpemUgPSBzdGF0ZS50YWtlO1xyXG4gICAgdGhpcy5zdGF0ZS5za2lwID0gc3RhdGUuc2tpcDtcclxuICAgIHRoaXMuc3RhdGUudGFrZSA9IHN0YXRlLnRha2U7XHJcbiAgICB0aGlzLmdyaWQubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmFnZ3JlZ2F0ZVJlc2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFwRmlsdGVyT3BlcmF0b3Iob3BlcmF0b3I6IGFueSkge1xyXG4gICAgc3dpdGNoIChvcGVyYXRvcikge1xyXG4gICAgICBjYXNlIFwiZXFcIjpcclxuICAgICAgICByZXR1cm4gXCJlcVwiO1xyXG4gICAgICBjYXNlIFwibmVxXCI6XHJcbiAgICAgICAgcmV0dXJuIFwibmVxXCI7XHJcbiAgICAgIGNhc2UgXCJsdFwiOlxyXG4gICAgICAgIHJldHVybiBcImx0XCI7XHJcbiAgICAgIGNhc2UgXCJsdGVcIjpcclxuICAgICAgICByZXR1cm4gXCJsdGVcIjtcclxuICAgICAgY2FzZSBcImd0XCI6XHJcbiAgICAgICAgcmV0dXJuIFwiZ3RcIjtcclxuICAgICAgY2FzZSBcImd0ZVwiOlxyXG4gICAgICAgIHJldHVybiBcImd0ZVwiO1xyXG4gICAgICBjYXNlIFwic3RhcnRzd2l0aFwiOlxyXG4gICAgICAgIHJldHVybiBcInN0YXJ0c3dpdGhcIjtcclxuICAgICAgY2FzZSBcImVuZHN3aXRoXCI6XHJcbiAgICAgICAgcmV0dXJuIFwiZW5kc3dpdGhcIjtcclxuICAgICAgY2FzZSBcImlzbnVsbFwiOlxyXG4gICAgICAgIHJldHVybiBcImlzbnVsbFwiO1xyXG4gICAgICBjYXNlIFwiaXNub3RudWxsXCI6XHJcbiAgICAgICAgcmV0dXJuIFwiaXNub3RudWxsXCI7XHJcbiAgICAgIGNhc2UgXCJjb250YWluc1wiOiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpZWxkWydGaWx0ZXJDb250YWluc1VzaW5nRXF1YWwnXSkge1xyXG4gICAgICAgICAgcmV0dXJuIFwiY29udGFpbnNcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gXCI9PVwiO1xyXG4gICAgICAvLyBlcSwgbmVxLCBpc251bGwsIGlzbm90bnVsbCwgZW5kc3dpdGgsIHN0YXJ0c3dpdGhcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0R3JpZFNldHRpbmdzKCk6IFpHcmlkQ29sdW1uU2V0dGluZ3NbXSB7XHJcbiAgICBjb25zdCBfc3RvcmFnZUtleSA9ICdpb25pYy1maWVsZDo6JyArIHRoaXMuYXV0aFNlcnZpY2UuZTFUb2tlbi51c2VyTmFtZSArICc6OicgKyB0aGlzLmZpZWxkLk5hbWUgKyAnOjonICsgdGhpcy5yb3V0ZXIudXJsO1xyXG5cclxuICAgIC8vIEZpbmQgYW55IHNldHRpbmcgZnJvbSBsb2NhbHN0b3JhZ2UuLlxyXG4gICAgbGV0IF9hcnJHcmlkQ2FjaGluZzogR3JpZENhY2hpbmdbXSA9IHRoaXMuekdyaWRTdGF0ZVBlcnNpc3RpbmdTZXJ2aWNlLmdldChfc3RvcmFnZUtleSk7XHJcbiAgICBpZiAoX2FyckdyaWRDYWNoaW5nKSB7XHJcbiAgICAgIGNvbnN0IF9ncmlkQ2FjaGluZzogR3JpZENhY2hpbmcgPSBKU09OLnBhcnNlKF9hcnJHcmlkQ2FjaGluZ1snVmFsdWUnXSk7XHJcbiAgICAgIGlmIChfZ3JpZENhY2hpbmcpIHtcclxuICAgICAgICByZXR1cm4gX2dyaWRDYWNoaW5nLmdyaWRTZXR0aW5ncy5jb2x1bW5zQ29uZmlnLnNvcnQoKGEsIGIpID0+IGEub3JkZXJJbmRleCAtIGIub3JkZXJJbmRleCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBiZWZvcmVHcmlkR2V0RGF0YShncm91cDogWkdyb3VwLCBtZTogYW55KSB7XHJcbiAgICBjb25zb2xlLndhcm4oXCJiZWZvcmVEYXRhQmluZGluZyB0cmlnZ2VyZWRcIik7XHJcbiAgICBpZiAoIWdyb3VwLmJlZm9yZUdyaWRHZXREYXRhKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcImdyb3VwLmJlZm9yZURhdGFCaW5kaW5nIGlzIHVuZGVmaW5lZFwiKTtcclxuICAgICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdyb3VwLmJlZm9yZUdyaWRHZXREYXRhKGdyb3VwLCBtZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEdyaWRTZXNzaW9uRmlsdGVyKGdyb3VwOiBaR3JvdXAsIG1lOiBhbnkpIHtcclxuICAgIGlmICghZ3JvdXBbXCJHcmlkU3RvcmFnZUtleVwiXSkge1xyXG4gICAgICByZXR1cm4gb2YoW10pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IFN0b3JhZ2VLZXkgPSBncm91cFtcIkdyaWRTdG9yYWdlS2V5XCJdO1xyXG5cclxuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlKSB7XHJcbiAgICAgIGNvbnN0IHN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICAgICAgb2YodHJ1ZSlcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldChTdG9yYWdlS2V5KTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgdGFwKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWRhdGEgfHwgIWRhdGEudmFsdWUgfHwgZGF0YS52YWx1ZSA9PT0gXCJudWxsXCIpIHtcclxuICAgICAgICAgICAgICBzdWJqZWN0Lm5leHQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBKU09OLnBhcnNlKGRhdGEudmFsdWUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc3RhdGUuZmlsdGVyID0gSlNPTi5wYXJzZShyZXN1bHRbXCJTdGF0ZUZpbHRlclwiXSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJhbXMuZmlsdGVyUGFyYW1zID0gSlNPTi5wYXJzZShyZXN1bHRbXCJGaWx0ZXJQYXJhbXNcIl0pO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLnN0YXRlLmZpbHRlci5maWx0ZXJzLmZvckVhY2goKGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGQuZmllbGQuaW5jbHVkZXMoJ1VUQycpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGQudmFsdWUgPSBuZXcgRGF0ZShkLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgc3ViamVjdC5uZXh0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgIHJldHVybiBzdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBvZihbXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEdyaWRTZXNzaW9uRmlsdGVyKGdyb3VwOiBaR3JvdXAsIG1lOiBhbnkpIHtcclxuICAgIGlmICghZ3JvdXBbXCJHcmlkU3RvcmFnZUtleVwiXSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBTdG9yYWdlS2V5ID0gZ3JvdXBbXCJHcmlkU3RvcmFnZUtleVwiXTtcclxuXHJcbiAgICBpZiAobWUuc3RhdGUuZmlsdGVyICYmIHRoaXMuc3RvcmFnZVNlcnZpY2UgJiYgdGhpcy5maWVsZFsnU2F2ZUZpbHRlciddKSB7XHJcbiAgICAgIC8vbGlzdCBvZiBkYXRhIGZvciBTdGF0ZUZpbHRlciBhbmQgRmlsdGVyUGFyYW1zXHJcbiAgICAgIGNvbnN0IGxzdEdyaWRGaWx0ZXIgPSB7IFwiU3RhdGVGaWx0ZXJcIjogSlNPTi5zdHJpbmdpZnkobWUuc3RhdGUuZmlsdGVyKSwgXCJGaWx0ZXJQYXJhbXNcIjogSlNPTi5zdHJpbmdpZnkobWUucGFyYW1zLmZpbHRlclBhcmFtcykgfVxyXG4gICAgICAvL2NyZWF0ZSBzZXNzaW9uIHN0b3JhZ2VcclxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoU3RvcmFnZUtleSwgSlNPTi5zdHJpbmdpZnkobHN0R3JpZEZpbHRlcikpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldENvbHVtbnMoY29sdW1uczogYW55W10pIHtcclxuICAgIFpDb21wb25lbnRIZWxwZXIuZ2V0R3JpZENvbHVtbnMoXHJcbiAgICAgIGNvbHVtbnMsXHJcbiAgICAgIHRoaXMuZ3JpZENvbHVtbnMsXHJcbiAgICAgIHRoaXMuemdyaWRiaW5kaW5nLmdyb3VwLFxyXG4gICAgICB0aGlzLmdldEdyaWRTZXR0aW5ncygpLFxyXG4gICAgICB0aGlzLnVzYWJsZUNvbHVtbnNcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==