@c8y/ngx-components 1017.0.8 → 1017.0.10

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 (79) hide show
  1. package/core/dynamic-component/dynamic-component.component.d.ts +1 -0
  2. package/core/dynamic-component/dynamic-component.model.d.ts +45 -9
  3. package/esm2020/actility-device-registration/actility-device-registration.component.mjs +3 -3
  4. package/esm2020/context-dashboard/context-dashboard.component.mjs +3 -3
  5. package/esm2020/context-dashboard/dashboard-detail.component.mjs +3 -3
  6. package/esm2020/context-dashboard/device-info-dashboard/device-info-dashboard.component.mjs +43 -51
  7. package/esm2020/context-dashboard/widget-preview.component.mjs +3 -3
  8. package/esm2020/core/authentication/sms-challenge.component.mjs +3 -3
  9. package/esm2020/core/authentication/totp-challenge.component.mjs +3 -3
  10. package/esm2020/core/breadcrumb/breadcrumb-outlet.component.mjs +3 -3
  11. package/esm2020/core/dashboard/dashboard-child.component.mjs +3 -3
  12. package/esm2020/core/dashboard/widget-time-context.component.mjs +3 -3
  13. package/esm2020/core/data-grid/data-grid.component.mjs +3 -3
  14. package/esm2020/core/date-picker/date-picker.component.mjs +3 -3
  15. package/esm2020/core/drop-area/drop-area.component.mjs +3 -3
  16. package/esm2020/core/dynamic-component/dynamic-component.component.mjs +21 -5
  17. package/esm2020/core/dynamic-component/dynamic-component.model.mjs +7 -1
  18. package/esm2020/core/file-picker/file-picker.component.mjs +3 -3
  19. package/esm2020/core/header/application/app-switcher.component.mjs +3 -3
  20. package/esm2020/core/login/credentials.component.mjs +3 -3
  21. package/esm2020/core/login/login.component.mjs +3 -3
  22. package/esm2020/core/modal/modal.component.mjs +3 -3
  23. package/esm2020/core/select/typeahead.component.mjs +3 -3
  24. package/esm2020/device-grid/columns/alarms.cell-renderer.component.mjs +3 -3
  25. package/esm2020/loriot-device-registration/loriot-device-registration-button.component.mjs +3 -1
  26. package/esm2020/loriot-device-registration/loriot-device-registration.component.mjs +3 -3
  27. package/esm2020/operations/bulk-operations-list/bulk-operations-list.component.mjs +3 -3
  28. package/esm2020/operations/operations-list/operations-list-item.component.mjs +3 -3
  29. package/esm2020/operations/operations-list/operations-list.component.mjs +3 -3
  30. package/esm2020/register-device/bulk/bulk-device-registration-modal.component.mjs +3 -3
  31. package/esm2020/register-device/extensible/bulk/extensible-bulk-device-registration-modal.component.mjs +3 -3
  32. package/esm2020/register-device/extensible/single/extensible-device-registration-modal.component.mjs +3 -3
  33. package/esm2020/register-device/general/general-device-registration.component.mjs +3 -3
  34. package/esm2020/repository/software/device-tab/device-software-list.component.mjs +3 -3
  35. package/esm2020/repository/software/device-tab/installed-software.component.mjs +3 -3
  36. package/esm2020/repository/software/list/add-software-modal.component.mjs +3 -3
  37. package/esm2020/sigfox-device-registration/sigfox-device-registration.component.mjs +3 -3
  38. package/fesm2015/c8y-ngx-components-actility-device-registration.mjs +2 -2
  39. package/fesm2015/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
  40. package/fesm2015/c8y-ngx-components-context-dashboard.mjs +48 -56
  41. package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  42. package/fesm2015/c8y-ngx-components-device-grid.mjs +2 -2
  43. package/fesm2015/c8y-ngx-components-device-grid.mjs.map +1 -1
  44. package/fesm2015/c8y-ngx-components-loriot-device-registration.mjs +4 -2
  45. package/fesm2015/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
  46. package/fesm2015/c8y-ngx-components-operations-bulk-operations-list.mjs +2 -2
  47. package/fesm2015/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  48. package/fesm2015/c8y-ngx-components-operations-operations-list.mjs +4 -4
  49. package/fesm2015/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  50. package/fesm2015/c8y-ngx-components-register-device.mjs +8 -8
  51. package/fesm2015/c8y-ngx-components-register-device.mjs.map +1 -1
  52. package/fesm2015/c8y-ngx-components-repository-software.mjs +6 -6
  53. package/fesm2015/c8y-ngx-components-repository-software.mjs.map +1 -1
  54. package/fesm2015/c8y-ngx-components-sigfox-device-registration.mjs +2 -2
  55. package/fesm2015/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
  56. package/fesm2015/c8y-ngx-components.mjs +72 -46
  57. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  58. package/fesm2020/c8y-ngx-components-actility-device-registration.mjs +2 -2
  59. package/fesm2020/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
  60. package/fesm2020/c8y-ngx-components-context-dashboard.mjs +48 -56
  61. package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  62. package/fesm2020/c8y-ngx-components-device-grid.mjs +2 -2
  63. package/fesm2020/c8y-ngx-components-device-grid.mjs.map +1 -1
  64. package/fesm2020/c8y-ngx-components-loriot-device-registration.mjs +4 -2
  65. package/fesm2020/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
  66. package/fesm2020/c8y-ngx-components-operations-bulk-operations-list.mjs +2 -2
  67. package/fesm2020/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  68. package/fesm2020/c8y-ngx-components-operations-operations-list.mjs +4 -4
  69. package/fesm2020/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  70. package/fesm2020/c8y-ngx-components-register-device.mjs +8 -8
  71. package/fesm2020/c8y-ngx-components-register-device.mjs.map +1 -1
  72. package/fesm2020/c8y-ngx-components-repository-software.mjs +6 -6
  73. package/fesm2020/c8y-ngx-components-repository-software.mjs.map +1 -1
  74. package/fesm2020/c8y-ngx-components-sigfox-device-registration.mjs +2 -2
  75. package/fesm2020/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
  76. package/fesm2020/c8y-ngx-components.mjs +54 -32
  77. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  78. package/locales/locales.pot +6 -9
  79. package/package.json +2 -2
@@ -36,11 +36,11 @@ export class DatePickerComponent {
36
36
  }
37
37
  }
38
38
  DatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
39
- DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DatePickerComponent, selector: "c8y-date-picker", outputs: { onDateSelected: "onDateSelected" }, ngImport: i0, template: "<div\n dropdown\n class=\"c8y-child-assets-selector dropdown\"\n #datefilter=\"bs-dropdown\"\n placement=\"bottom left\"\n [insideClick]=\"true\"\n>\n <button\n id=\"date-range\"\n dropdownToggle\n title=\"{{ 'Date filter' | translate }}\"\n type=\"button\"\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n >\n <i c8yIcon=\"calendar-o\" class=\"m-r-4 text-primary\"></i>\n <span class=\"text-truncate\">\n <span *ngIf=\"dateFrom\">\n <span class=\"text-label-small\">{{ 'From`date`' | translate }}</span>\n {{ dateFrom | date }}\n </span>\n <span *ngIf=\"dateTo\">\n <span class=\"text-label-small\">{{ 'To`date`' | translate }}</span>\n {{ dateTo | date }}\n </span>\n <span *ngIf=\"!dateFrom && !dateTo\">\n {{ 'Filter by date' | translate }}\n </span>\n </span>\n </button>\n <div\n id=\"dropdown-date-range\"\n *dropdownMenu\n class=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"date-range\"\n >\n <form [formGroup]=\"fgDatePicker\" class=\"dropdown-form\">\n <span for=\"dateFrom\" class=\"text-medium m-b-4\" translate>Date from</span>\n <c8y-form-group class=\"datepicker d-block m-b-16\" style=\"max-height: 32px\">\n <input\n id=\"dateFrom\"\n formControlName=\"dateFrom\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date from' | translate }}\"\n bsDatepicker\n [maxDate]=\"dateTo\"\n (bsValueChange)=\"dateFrom = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <span for=\"dateTo\" class=\"text-medium m-b-4\" translate>Date to</span>\n <c8y-form-group class=\"datepicker m-l-0 d-block\" style=\"max-height: 32px\">\n <input\n name=\"dateTo\"\n id=\"dateTo\"\n formControlName=\"dateTo\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date to' | translate }}\"\n bsDatepicker\n [minDate]=\"dateFrom\"\n (bsValueChange)=\"dateTo = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <div class=\"p-t-24\">\n <button\n title=\"{{ 'Clear selection' | translate }}\"\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"clearFilter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Clear`selection`' | translate }}\n </button>\n <button\n [disabled]=\"!fgDatePicker.get('dateFrom').value && !fgDatePicker.get('dateTo').value\"\n title=\"{{ 'Apply selection' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-sm\"\n (click)=\"filter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Apply`selection`' | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i5.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i5.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i6.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i6.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: i7.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i8.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: i4.DatePipe, name: "date" }, { kind: "pipe", type: i9.C8yTranslatePipe, name: "translate" }] });
39
+ DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DatePickerComponent, selector: "c8y-date-picker", outputs: { onDateSelected: "onDateSelected" }, ngImport: i0, template: "<div\n dropdown\n class=\"c8y-child-assets-selector dropdown\"\n #datefilter=\"bs-dropdown\"\n placement=\"bottom left\"\n [insideClick]=\"true\"\n>\n <button\n id=\"date-range\"\n dropdownToggle\n title=\"{{ 'Date filter' | translate }}\"\n type=\"button\"\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n aria-haspopup=\"true\"\n >\n <i c8yIcon=\"calendar-o\" class=\"m-r-4 text-primary\"></i>\n <span class=\"text-truncate\">\n <span *ngIf=\"dateFrom\">\n <span class=\"text-label-small\">{{ 'From`date`' | translate }}</span>\n {{ dateFrom | date }}\n </span>\n <span *ngIf=\"dateTo\">\n <span class=\"text-label-small\">{{ 'To`date`' | translate }}</span>\n {{ dateTo | date }}\n </span>\n <span *ngIf=\"!dateFrom && !dateTo\">\n {{ 'Filter by date' | translate }}\n </span>\n </span>\n </button>\n <div\n id=\"dropdown-date-range\"\n *dropdownMenu\n class=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"date-range\"\n >\n <form [formGroup]=\"fgDatePicker\" class=\"dropdown-form\">\n <span for=\"dateFrom\" class=\"text-medium m-b-4\" translate>Date from</span>\n <c8y-form-group class=\"datepicker d-block m-b-16\" style=\"max-height: 32px\">\n <input\n id=\"dateFrom\"\n formControlName=\"dateFrom\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date from' | translate }}\"\n bsDatepicker\n [maxDate]=\"dateTo\"\n (bsValueChange)=\"dateFrom = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <span for=\"dateTo\" class=\"text-medium m-b-4\" translate>Date to</span>\n <c8y-form-group class=\"datepicker m-l-0 d-block\" style=\"max-height: 32px\">\n <input\n name=\"dateTo\"\n id=\"dateTo\"\n formControlName=\"dateTo\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date to' | translate }}\"\n bsDatepicker\n [minDate]=\"dateFrom\"\n (bsValueChange)=\"dateTo = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <div class=\"p-t-24\">\n <button\n title=\"{{ 'Clear selection' | translate }}\"\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"clearFilter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Clear`selection`' | translate }}\n </button>\n <button\n [disabled]=\"!fgDatePicker.get('dateFrom').value && !fgDatePicker.get('dateTo').value\"\n title=\"{{ 'Apply selection' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-sm\"\n (click)=\"filter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Apply`selection`' | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i5.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i5.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i6.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i6.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: i7.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i8.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: i4.DatePipe, name: "date" }, { kind: "pipe", type: i9.C8yTranslatePipe, name: "translate" }] });
40
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatePickerComponent, decorators: [{
41
41
  type: Component,
42
- args: [{ selector: 'c8y-date-picker', template: "<div\n dropdown\n class=\"c8y-child-assets-selector dropdown\"\n #datefilter=\"bs-dropdown\"\n placement=\"bottom left\"\n [insideClick]=\"true\"\n>\n <button\n id=\"date-range\"\n dropdownToggle\n title=\"{{ 'Date filter' | translate }}\"\n type=\"button\"\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n >\n <i c8yIcon=\"calendar-o\" class=\"m-r-4 text-primary\"></i>\n <span class=\"text-truncate\">\n <span *ngIf=\"dateFrom\">\n <span class=\"text-label-small\">{{ 'From`date`' | translate }}</span>\n {{ dateFrom | date }}\n </span>\n <span *ngIf=\"dateTo\">\n <span class=\"text-label-small\">{{ 'To`date`' | translate }}</span>\n {{ dateTo | date }}\n </span>\n <span *ngIf=\"!dateFrom && !dateTo\">\n {{ 'Filter by date' | translate }}\n </span>\n </span>\n </button>\n <div\n id=\"dropdown-date-range\"\n *dropdownMenu\n class=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"date-range\"\n >\n <form [formGroup]=\"fgDatePicker\" class=\"dropdown-form\">\n <span for=\"dateFrom\" class=\"text-medium m-b-4\" translate>Date from</span>\n <c8y-form-group class=\"datepicker d-block m-b-16\" style=\"max-height: 32px\">\n <input\n id=\"dateFrom\"\n formControlName=\"dateFrom\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date from' | translate }}\"\n bsDatepicker\n [maxDate]=\"dateTo\"\n (bsValueChange)=\"dateFrom = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <span for=\"dateTo\" class=\"text-medium m-b-4\" translate>Date to</span>\n <c8y-form-group class=\"datepicker m-l-0 d-block\" style=\"max-height: 32px\">\n <input\n name=\"dateTo\"\n id=\"dateTo\"\n formControlName=\"dateTo\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date to' | translate }}\"\n bsDatepicker\n [minDate]=\"dateFrom\"\n (bsValueChange)=\"dateTo = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <div class=\"p-t-24\">\n <button\n title=\"{{ 'Clear selection' | translate }}\"\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"clearFilter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Clear`selection`' | translate }}\n </button>\n <button\n [disabled]=\"!fgDatePicker.get('dateFrom').value && !fgDatePicker.get('dateTo').value\"\n title=\"{{ 'Apply selection' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-sm\"\n (click)=\"filter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Apply`selection`' | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n" }]
42
+ args: [{ selector: 'c8y-date-picker', template: "<div\n dropdown\n class=\"c8y-child-assets-selector dropdown\"\n #datefilter=\"bs-dropdown\"\n placement=\"bottom left\"\n [insideClick]=\"true\"\n>\n <button\n id=\"date-range\"\n dropdownToggle\n title=\"{{ 'Date filter' | translate }}\"\n type=\"button\"\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n aria-haspopup=\"true\"\n >\n <i c8yIcon=\"calendar-o\" class=\"m-r-4 text-primary\"></i>\n <span class=\"text-truncate\">\n <span *ngIf=\"dateFrom\">\n <span class=\"text-label-small\">{{ 'From`date`' | translate }}</span>\n {{ dateFrom | date }}\n </span>\n <span *ngIf=\"dateTo\">\n <span class=\"text-label-small\">{{ 'To`date`' | translate }}</span>\n {{ dateTo | date }}\n </span>\n <span *ngIf=\"!dateFrom && !dateTo\">\n {{ 'Filter by date' | translate }}\n </span>\n </span>\n </button>\n <div\n id=\"dropdown-date-range\"\n *dropdownMenu\n class=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"date-range\"\n >\n <form [formGroup]=\"fgDatePicker\" class=\"dropdown-form\">\n <span for=\"dateFrom\" class=\"text-medium m-b-4\" translate>Date from</span>\n <c8y-form-group class=\"datepicker d-block m-b-16\" style=\"max-height: 32px\">\n <input\n id=\"dateFrom\"\n formControlName=\"dateFrom\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date from' | translate }}\"\n bsDatepicker\n [maxDate]=\"dateTo\"\n (bsValueChange)=\"dateFrom = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <span for=\"dateTo\" class=\"text-medium m-b-4\" translate>Date to</span>\n <c8y-form-group class=\"datepicker m-l-0 d-block\" style=\"max-height: 32px\">\n <input\n name=\"dateTo\"\n id=\"dateTo\"\n formControlName=\"dateTo\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date to' | translate }}\"\n bsDatepicker\n [minDate]=\"dateFrom\"\n (bsValueChange)=\"dateTo = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <div class=\"p-t-24\">\n <button\n title=\"{{ 'Clear selection' | translate }}\"\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"clearFilter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Clear`selection`' | translate }}\n </button>\n <button\n [disabled]=\"!fgDatePicker.get('dateFrom').value && !fgDatePicker.get('dateTo').value\"\n title=\"{{ 'Apply selection' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-sm\"\n (click)=\"filter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Apply`selection`' | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n" }]
43
43
  }], propDecorators: { onDateSelected: [{
44
44
  type: Output
45
45
  }] } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7OztBQU94RCxNQUFNLE9BQU8sbUJBQW1CO0lBSmhDO1FBS1ksbUJBQWMsR0FBOEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQTRCMUU7SUF0QkMsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDaEMsUUFBUSxFQUFFLElBQUksV0FBVyxFQUFFO1lBQzNCLE1BQU0sRUFBRSxJQUFJLFdBQVcsRUFBRTtTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDeEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDdEQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztZQUN6QixRQUFRLEVBQUUsSUFBSTtZQUNkLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQzs7Z0hBNUJVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHNHQ1JoQyx1L0ZBc0ZBOzJGRDlFYSxtQkFBbUI7a0JBSi9CLFNBQVM7K0JBQ0UsaUJBQWlCOzhCQUlqQixjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGlja2VkRGF0ZXMgfSBmcm9tICcuL2RhdGUtcGlja2VyLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhdGUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQE91dHB1dCgpIG9uRGF0ZVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8UGlja2VkRGF0ZXM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGRhdGVGcm9tOiBzdHJpbmc7XG4gIGRhdGVUbzogc3RyaW5nO1xuICBmZ0RhdGVQaWNrZXI6IEZvcm1Hcm91cDtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZnRGF0ZVBpY2tlciA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgZGF0ZUZyb206IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgICAgZGF0ZVRvOiBuZXcgRm9ybUNvbnRyb2woKVxuICAgIH0pO1xuICB9XG5cbiAgZmlsdGVyKCkge1xuICAgIHRoaXMub25EYXRlU2VsZWN0ZWQuZW1pdCh0aGlzLmZnRGF0ZVBpY2tlci52YWx1ZSk7XG4gICAgdGhpcy5kYXRlRnJvbSA9IHRoaXMuZmdEYXRlUGlja2VyLmdldCgnZGF0ZUZyb20nKS52YWx1ZTtcbiAgICB0aGlzLmRhdGVUbyA9IHRoaXMuZmdEYXRlUGlja2VyLmdldCgnZGF0ZVRvJykudmFsdWU7XG4gIH1cblxuICBjbGVhckZpbHRlcigpIHtcbiAgICB0aGlzLmZnRGF0ZVBpY2tlci5zZXRWYWx1ZSh7XG4gICAgICBkYXRlRnJvbTogbnVsbCxcbiAgICAgIGRhdGVUbzogbnVsbFxuICAgIH0pO1xuICAgIHRoaXMub25EYXRlU2VsZWN0ZWQuZW1pdChudWxsKTtcbiAgICB0aGlzLmRhdGVGcm9tID0gbnVsbDtcbiAgICB0aGlzLmRhdGVUbyA9IG51bGw7XG4gIH1cbn1cbiIsIjxkaXZcbiAgZHJvcGRvd25cbiAgY2xhc3M9XCJjOHktY2hpbGQtYXNzZXRzLXNlbGVjdG9yIGRyb3Bkb3duXCJcbiAgI2RhdGVmaWx0ZXI9XCJicy1kcm9wZG93blwiXG4gIHBsYWNlbWVudD1cImJvdHRvbSBsZWZ0XCJcbiAgW2luc2lkZUNsaWNrXT1cInRydWVcIlxuPlxuICA8YnV0dG9uXG4gICAgaWQ9XCJkYXRlLXJhbmdlXCJcbiAgICBkcm9wZG93blRvZ2dsZVxuICAgIHRpdGxlPVwie3sgJ0RhdGUgZmlsdGVyJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJidG4gZHJvcGRvd24tdG9nZ2xlIGQtZmxleCBhLWktY2VudGVyIGM4eS1kcm9wZG93blwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwiY2FsZW5kYXItb1wiIGNsYXNzPVwibS1yLTQgdGV4dC1wcmltYXJ5XCI+PC9pPlxuICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgPHNwYW4gKm5nSWY9XCJkYXRlRnJvbVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWwtc21hbGxcIj57eyAnRnJvbWBkYXRlYCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIHt7IGRhdGVGcm9tIHwgZGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJkYXRlVG9cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWxhYmVsLXNtYWxsXCI+e3sgJ1RvYGRhdGVgJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAge3sgZGF0ZVRvIHwgZGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhZGF0ZUZyb20gJiYgIWRhdGVUb1wiPlxuICAgICAgICB7eyAnRmlsdGVyIGJ5IGRhdGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbiAgPGRpdlxuICAgIGlkPVwiZHJvcGRvd24tZGF0ZS1yYW5nZVwiXG4gICAgKmRyb3Bkb3duTWVudVxuICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudVwiXG4gICAgcm9sZT1cIm1lbnVcIlxuICAgIGFyaWEtbGFiZWxsZWRieT1cImRhdGUtcmFuZ2VcIlxuICA+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmZ0RhdGVQaWNrZXJcIiBjbGFzcz1cImRyb3Bkb3duLWZvcm1cIj5cbiAgICAgIDxzcGFuIGZvcj1cImRhdGVGcm9tXCIgY2xhc3M9XCJ0ZXh0LW1lZGl1bSBtLWItNFwiIHRyYW5zbGF0ZT5EYXRlIGZyb208L3NwYW4+XG4gICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJkYXRlcGlja2VyIGQtYmxvY2sgbS1iLTE2XCIgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzMnB4XCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGlkPVwiZGF0ZUZyb21cIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRhdGVGcm9tXCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmaXQtdyB0ZXh0LWxlZnRcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ0RhdGUgZnJvbScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIGJzRGF0ZXBpY2tlclxuICAgICAgICAgIFttYXhEYXRlXT1cImRhdGVUb1wiXG4gICAgICAgICAgKGJzVmFsdWVDaGFuZ2UpPVwiZGF0ZUZyb20gPSAkZXZlbnRcIlxuICAgICAgICAgIFtic0NvbmZpZ109XCJ7IGN1c3RvbVRvZGF5Q2xhc3M6ICd0b2RheScsIHJldHVybkZvY3VzVG9JbnB1dDogdHJ1ZSB9XCJcbiAgICAgICAgLz5cbiAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8c3BhbiBmb3I9XCJkYXRlVG9cIiBjbGFzcz1cInRleHQtbWVkaXVtIG0tYi00XCIgdHJhbnNsYXRlPkRhdGUgdG88L3NwYW4+XG4gICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJkYXRlcGlja2VyIG0tbC0wIGQtYmxvY2tcIiBzdHlsZT1cIm1heC1oZWlnaHQ6IDMycHhcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbmFtZT1cImRhdGVUb1wiXG4gICAgICAgICAgaWQ9XCJkYXRlVG9cIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRhdGVUb1wiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZml0LXcgdGV4dC1sZWZ0XCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdEYXRlIHRvJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgYnNEYXRlcGlja2VyXG4gICAgICAgICAgW21pbkRhdGVdPVwiZGF0ZUZyb21cIlxuICAgICAgICAgIChic1ZhbHVlQ2hhbmdlKT1cImRhdGVUbyA9ICRldmVudFwiXG4gICAgICAgICAgW2JzQ29uZmlnXT1cInsgY3VzdG9tVG9kYXlDbGFzczogJ3RvZGF5JywgcmV0dXJuRm9jdXNUb0lucHV0OiB0cnVlIH1cIlxuICAgICAgICAvPlxuICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLXQtMjRcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHRpdGxlPVwie3sgJ0NsZWFyIHNlbGVjdGlvbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbVwiXG4gICAgICAgICAgKGNsaWNrKT1cImNsZWFyRmlsdGVyKCk7IGRhdGVmaWx0ZXIuaXNPcGVuID0gIWRhdGVmaWx0ZXIuaXNPcGVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdDbGVhcmBzZWxlY3Rpb25gJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhZmdEYXRlUGlja2VyLmdldCgnZGF0ZUZyb20nKS52YWx1ZSAmJiAhZmdEYXRlUGlja2VyLmdldCgnZGF0ZVRvJykudmFsdWVcIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ0FwcGx5IHNlbGVjdGlvbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiXG4gICAgICAgICAgKGNsaWNrKT1cImZpbHRlcigpOyBkYXRlZmlsdGVyLmlzT3BlbiA9ICFkYXRlZmlsdGVyLmlzT3BlblwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnQXBwbHlgc2VsZWN0aW9uYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7OztBQU94RCxNQUFNLE9BQU8sbUJBQW1CO0lBSmhDO1FBS1ksbUJBQWMsR0FBOEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQTRCMUU7SUF0QkMsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDaEMsUUFBUSxFQUFFLElBQUksV0FBVyxFQUFFO1lBQzNCLE1BQU0sRUFBRSxJQUFJLFdBQVcsRUFBRTtTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDeEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDdEQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztZQUN6QixRQUFRLEVBQUUsSUFBSTtZQUNkLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQzs7Z0hBNUJVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHNHQ1JoQyxtaEdBdUZBOzJGRC9FYSxtQkFBbUI7a0JBSi9CLFNBQVM7K0JBQ0UsaUJBQWlCOzhCQUlqQixjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGlja2VkRGF0ZXMgfSBmcm9tICcuL2RhdGUtcGlja2VyLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhdGUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQE91dHB1dCgpIG9uRGF0ZVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8UGlja2VkRGF0ZXM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGRhdGVGcm9tOiBzdHJpbmc7XG4gIGRhdGVUbzogc3RyaW5nO1xuICBmZ0RhdGVQaWNrZXI6IEZvcm1Hcm91cDtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZnRGF0ZVBpY2tlciA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgZGF0ZUZyb206IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgICAgZGF0ZVRvOiBuZXcgRm9ybUNvbnRyb2woKVxuICAgIH0pO1xuICB9XG5cbiAgZmlsdGVyKCkge1xuICAgIHRoaXMub25EYXRlU2VsZWN0ZWQuZW1pdCh0aGlzLmZnRGF0ZVBpY2tlci52YWx1ZSk7XG4gICAgdGhpcy5kYXRlRnJvbSA9IHRoaXMuZmdEYXRlUGlja2VyLmdldCgnZGF0ZUZyb20nKS52YWx1ZTtcbiAgICB0aGlzLmRhdGVUbyA9IHRoaXMuZmdEYXRlUGlja2VyLmdldCgnZGF0ZVRvJykudmFsdWU7XG4gIH1cblxuICBjbGVhckZpbHRlcigpIHtcbiAgICB0aGlzLmZnRGF0ZVBpY2tlci5zZXRWYWx1ZSh7XG4gICAgICBkYXRlRnJvbTogbnVsbCxcbiAgICAgIGRhdGVUbzogbnVsbFxuICAgIH0pO1xuICAgIHRoaXMub25EYXRlU2VsZWN0ZWQuZW1pdChudWxsKTtcbiAgICB0aGlzLmRhdGVGcm9tID0gbnVsbDtcbiAgICB0aGlzLmRhdGVUbyA9IG51bGw7XG4gIH1cbn1cbiIsIjxkaXZcbiAgZHJvcGRvd25cbiAgY2xhc3M9XCJjOHktY2hpbGQtYXNzZXRzLXNlbGVjdG9yIGRyb3Bkb3duXCJcbiAgI2RhdGVmaWx0ZXI9XCJicy1kcm9wZG93blwiXG4gIHBsYWNlbWVudD1cImJvdHRvbSBsZWZ0XCJcbiAgW2luc2lkZUNsaWNrXT1cInRydWVcIlxuPlxuICA8YnV0dG9uXG4gICAgaWQ9XCJkYXRlLXJhbmdlXCJcbiAgICBkcm9wZG93blRvZ2dsZVxuICAgIHRpdGxlPVwie3sgJ0RhdGUgZmlsdGVyJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJidG4gZHJvcGRvd24tdG9nZ2xlIGQtZmxleCBhLWktY2VudGVyIGM4eS1kcm9wZG93blwiXG4gICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cImNhbGVuZGFyLW9cIiBjbGFzcz1cIm0tci00IHRleHQtcHJpbWFyeVwiPjwvaT5cbiAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiZGF0ZUZyb21cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWxhYmVsLXNtYWxsXCI+e3sgJ0Zyb21gZGF0ZWAnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICB7eyBkYXRlRnJvbSB8IGRhdGUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiZGF0ZVRvXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbFwiPnt7ICdUb2BkYXRlYCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIHt7IGRhdGVUbyB8IGRhdGUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIWRhdGVGcm9tICYmICFkYXRlVG9cIj5cbiAgICAgICAge3sgJ0ZpbHRlciBieSBkYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG4gIDxkaXZcbiAgICBpZD1cImRyb3Bkb3duLWRhdGUtcmFuZ2VcIlxuICAgICpkcm9wZG93bk1lbnVcbiAgICBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIlxuICAgIHJvbGU9XCJtZW51XCJcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJkYXRlLXJhbmdlXCJcbiAgPlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmdEYXRlUGlja2VyXCIgY2xhc3M9XCJkcm9wZG93bi1mb3JtXCI+XG4gICAgICA8c3BhbiBmb3I9XCJkYXRlRnJvbVwiIGNsYXNzPVwidGV4dC1tZWRpdW0gbS1iLTRcIiB0cmFuc2xhdGU+RGF0ZSBmcm9tPC9zcGFuPlxuICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwiZGF0ZXBpY2tlciBkLWJsb2NrIG0tYi0xNlwiIHN0eWxlPVwibWF4LWhlaWdodDogMzJweFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBpZD1cImRhdGVGcm9tXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkYXRlRnJvbVwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZml0LXcgdGV4dC1sZWZ0XCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdEYXRlIGZyb20nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICBic0RhdGVwaWNrZXJcbiAgICAgICAgICBbbWF4RGF0ZV09XCJkYXRlVG9cIlxuICAgICAgICAgIChic1ZhbHVlQ2hhbmdlKT1cImRhdGVGcm9tID0gJGV2ZW50XCJcbiAgICAgICAgICBbYnNDb25maWddPVwieyBjdXN0b21Ub2RheUNsYXNzOiAndG9kYXknLCByZXR1cm5Gb2N1c1RvSW5wdXQ6IHRydWUgfVwiXG4gICAgICAgIC8+XG4gICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgPHNwYW4gZm9yPVwiZGF0ZVRvXCIgY2xhc3M9XCJ0ZXh0LW1lZGl1bSBtLWItNFwiIHRyYW5zbGF0ZT5EYXRlIHRvPC9zcGFuPlxuICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwiZGF0ZXBpY2tlciBtLWwtMCBkLWJsb2NrXCIgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzMnB4XCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG5hbWU9XCJkYXRlVG9cIlxuICAgICAgICAgIGlkPVwiZGF0ZVRvXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkYXRlVG9cIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZpdC13IHRleHQtbGVmdFwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnRGF0ZSB0bycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIGJzRGF0ZXBpY2tlclxuICAgICAgICAgIFttaW5EYXRlXT1cImRhdGVGcm9tXCJcbiAgICAgICAgICAoYnNWYWx1ZUNoYW5nZSk9XCJkYXRlVG8gPSAkZXZlbnRcIlxuICAgICAgICAgIFtic0NvbmZpZ109XCJ7IGN1c3RvbVRvZGF5Q2xhc3M6ICd0b2RheScsIHJldHVybkZvY3VzVG9JbnB1dDogdHJ1ZSB9XCJcbiAgICAgICAgLz5cbiAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8ZGl2IGNsYXNzPVwicC10LTI0XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0aXRsZT1cInt7ICdDbGVhciBzZWxlY3Rpb24nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc21cIlxuICAgICAgICAgIChjbGljayk9XCJjbGVhckZpbHRlcigpOyBkYXRlZmlsdGVyLmlzT3BlbiA9ICFkYXRlZmlsdGVyLmlzT3BlblwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnQ2xlYXJgc2VsZWN0aW9uYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWZnRGF0ZVBpY2tlci5nZXQoJ2RhdGVGcm9tJykudmFsdWUgJiYgIWZnRGF0ZVBpY2tlci5nZXQoJ2RhdGVUbycpLnZhbHVlXCJcbiAgICAgICAgICB0aXRsZT1cInt7ICdBcHBseSBzZWxlY3Rpb24nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIlxuICAgICAgICAgIChjbGljayk9XCJmaWx0ZXIoKTsgZGF0ZWZpbHRlci5pc09wZW4gPSAhZGF0ZWZpbHRlci5pc09wZW5cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ0FwcGx5YHNlbGVjdGlvbmAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -283,10 +283,10 @@ export class DropAreaComponent {
283
283
  }
284
284
  }
285
285
  DropAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DropAreaComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FilesService }, { token: i2.TranslateService }, { token: i3.BytesPipe }], target: i0.ɵɵFactoryTarget.Component });
286
- DropAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DropAreaComponent, selector: "c8y-drop-area", inputs: { formControl: "formControl", title: "title", message: "message", icon: "icon", loadingMessage: "loadingMessage", forceHideList: "forceHideList", alwaysShow: "alwaysShow", clickToOpen: "clickToOpen", loading: "loading", progress: "progress", maxAllowedFiles: "maxAllowedFiles", files: "files", accept: "accept" }, outputs: { dropped: "dropped" }, host: { listeners: { "keyup": "onkeyup($event)" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DropAreaComponent, multi: true }], viewQueries: [{ propertyName: "area", first: true, predicate: ["area"], descendants: true, static: true }, { propertyName: "zone", first: true, predicate: ["zone"], descendants: true }, { propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], ngImport: i0, template: "<div\n class=\"drop-zone\"\n *ngIf=\"!shouldShowFilesList()\"\n [ngClass]=\"{ 'has-errors': errors }\"\n [style.pointerEvents]=\"loading ? 'none' : 'auto'\"\n #zone\n (dragleave)=\"stopDragging()\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onOver()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n (click)=\"showPicker($event)\"\n tabindex=\"0\"\n>\n <div class=\"file-placeholder\" [ngClass]=\"{ 'drag-over': isOver }\">\n <div *ngIf=\"loading\" class=\"d-flex p-4 flex-center\">\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 50%\"\n >\n <div\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner-snake\" *ngIf=\"progress === -1\"></div>\n <p class=\"m-t-auto m-b-auto m-r-8\">\n {{ loadingMessage | translate }}\n </p>\n </div>\n\n <div *ngIf=\"!loading\" class=\"hint-placeholder pointer\">\n <i class=\"dlt-c8y-icon-{{ icon }}\"></i>\n <p *ngIf=\"!errors\">\n <b>{{ message | translate }}</b>\n <br />\n <span *ngIf=\"alwaysShow && clickToOpen\" translate></span>\n </p>\n <div *ngIf=\"errors\" class=\"has-errors\">\n <p class=\"form-control-feedback-message\">\n {{ errorMessage | translate }}\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"drop-zone\"\n *ngIf=\"shouldShowFilesList()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n>\n <div *ngIf=\"loading\" class=\"p-absolute p-4 fit-w fit-h d-flex d-col j-c-center a-i-center\">\n <p class=\"m-b-8\">\n <strong>\n {{ loadingMessage | translate }}\n </strong>\n </p>\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 80%\"\n >\n <div\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner p-relative m-0\" *ngIf=\"progress === -1\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </div>\n <div *ngIf=\"!loading\" class=\"file-placeholder p-4\">\n <div class=\"d-flex p-4\">\n <i c8yIcon=\"file-o\" class=\"m-r-8\"></i>\n <span title=\"{{ filesNameString }}\" class=\"text-truncate\">\n {{ filesNameString }}\n </span>\n <button\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto\"\n >\n <i c8yIcon=\"minus-circle\" (click)=\"onDelete()\"></i>\n </button>\n </div>\n </div>\n</div>\n\n<input\n #picker\n *ngIf=\"clickToOpen\"\n (change)=\"onPick($event)\"\n (click)=\"picker.focus()\"\n (blur)=\"onTouched()\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n type=\"file\"\n class=\"hidden\"\n/>\n<div #area [hidden]=\"isOver || loading\" (dragover)=\"toggle()\">\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i7.C8yTranslatePipe, name: "translate" }] });
286
+ DropAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DropAreaComponent, selector: "c8y-drop-area", inputs: { formControl: "formControl", title: "title", message: "message", icon: "icon", loadingMessage: "loadingMessage", forceHideList: "forceHideList", alwaysShow: "alwaysShow", clickToOpen: "clickToOpen", loading: "loading", progress: "progress", maxAllowedFiles: "maxAllowedFiles", files: "files", accept: "accept" }, outputs: { dropped: "dropped" }, host: { listeners: { "keyup": "onkeyup($event)" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DropAreaComponent, multi: true }], viewQueries: [{ propertyName: "area", first: true, predicate: ["area"], descendants: true, static: true }, { propertyName: "zone", first: true, predicate: ["zone"], descendants: true }, { propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], ngImport: i0, template: "<div\n class=\"drop-zone\"\n *ngIf=\"!shouldShowFilesList()\"\n [ngClass]=\"{ 'has-errors': errors }\"\n [style.pointerEvents]=\"loading ? 'none' : 'auto'\"\n #zone\n (dragleave)=\"stopDragging()\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onOver()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n (click)=\"showPicker($event)\"\n tabindex=\"0\"\n>\n <div class=\"file-placeholder\" [ngClass]=\"{ 'drag-over': isOver }\">\n <div *ngIf=\"loading\" class=\"d-flex p-4 flex-center\">\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 50%\"\n >\n <div\n [attr.aria-label]=\"progress + '%'\"\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner-snake\" *ngIf=\"progress === -1\"></div>\n <p class=\"m-t-auto m-b-auto m-r-8\">\n {{ loadingMessage | translate }}\n </p>\n </div>\n\n <div *ngIf=\"!loading\" class=\"hint-placeholder pointer\">\n <i class=\"dlt-c8y-icon-{{ icon }}\"></i>\n <p *ngIf=\"!errors\">\n <b>{{ message | translate }}</b>\n <br />\n <span *ngIf=\"alwaysShow && clickToOpen\" translate></span>\n </p>\n <div *ngIf=\"errors\" class=\"has-errors\">\n <p class=\"form-control-feedback-message\">\n {{ errorMessage | translate }}\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"drop-zone\"\n *ngIf=\"shouldShowFilesList()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n>\n <div *ngIf=\"loading\" class=\"p-absolute p-4 fit-w fit-h d-flex d-col j-c-center a-i-center\">\n <p class=\"m-b-8\">\n <strong>\n {{ loadingMessage | translate }}\n </strong>\n </p>\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 80%\"\n >\n <div\n [attr.aria-label]=\"progress + '%'\"\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner p-relative m-0\" *ngIf=\"progress === -1\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </div>\n <div *ngIf=\"!loading\" class=\"file-placeholder p-4\">\n <div class=\"d-flex p-4\">\n <i c8yIcon=\"file-o\" class=\"m-r-8\"></i>\n <span title=\"{{ filesNameString }}\" class=\"text-truncate\">\n {{ filesNameString }}\n </span>\n <button\n title=\"{{ 'Remove' | translate }}\"\n aria-label=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto\"\n >\n <i c8yIcon=\"minus-circle\" (click)=\"onDelete()\"></i>\n </button>\n </div>\n </div>\n</div>\n<label for=\"file\" class=\"sr-only\">{{ 'Select file' | translate }}</label>\n<input\n #picker\n *ngIf=\"clickToOpen\"\n (change)=\"onPick($event)\"\n (click)=\"picker.focus()\"\n (blur)=\"onTouched()\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n type=\"file\"\n class=\"hidden\"\n id=\"file\"\n/>\n<div #area [hidden]=\"isOver || loading\" (dragover)=\"toggle()\">\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i7.C8yTranslatePipe, name: "translate" }] });
287
287
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DropAreaComponent, decorators: [{
288
288
  type: Component,
289
- args: [{ selector: 'c8y-drop-area', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DropAreaComponent, multi: true }], template: "<div\n class=\"drop-zone\"\n *ngIf=\"!shouldShowFilesList()\"\n [ngClass]=\"{ 'has-errors': errors }\"\n [style.pointerEvents]=\"loading ? 'none' : 'auto'\"\n #zone\n (dragleave)=\"stopDragging()\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onOver()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n (click)=\"showPicker($event)\"\n tabindex=\"0\"\n>\n <div class=\"file-placeholder\" [ngClass]=\"{ 'drag-over': isOver }\">\n <div *ngIf=\"loading\" class=\"d-flex p-4 flex-center\">\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 50%\"\n >\n <div\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner-snake\" *ngIf=\"progress === -1\"></div>\n <p class=\"m-t-auto m-b-auto m-r-8\">\n {{ loadingMessage | translate }}\n </p>\n </div>\n\n <div *ngIf=\"!loading\" class=\"hint-placeholder pointer\">\n <i class=\"dlt-c8y-icon-{{ icon }}\"></i>\n <p *ngIf=\"!errors\">\n <b>{{ message | translate }}</b>\n <br />\n <span *ngIf=\"alwaysShow && clickToOpen\" translate></span>\n </p>\n <div *ngIf=\"errors\" class=\"has-errors\">\n <p class=\"form-control-feedback-message\">\n {{ errorMessage | translate }}\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"drop-zone\"\n *ngIf=\"shouldShowFilesList()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n>\n <div *ngIf=\"loading\" class=\"p-absolute p-4 fit-w fit-h d-flex d-col j-c-center a-i-center\">\n <p class=\"m-b-8\">\n <strong>\n {{ loadingMessage | translate }}\n </strong>\n </p>\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 80%\"\n >\n <div\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner p-relative m-0\" *ngIf=\"progress === -1\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </div>\n <div *ngIf=\"!loading\" class=\"file-placeholder p-4\">\n <div class=\"d-flex p-4\">\n <i c8yIcon=\"file-o\" class=\"m-r-8\"></i>\n <span title=\"{{ filesNameString }}\" class=\"text-truncate\">\n {{ filesNameString }}\n </span>\n <button\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto\"\n >\n <i c8yIcon=\"minus-circle\" (click)=\"onDelete()\"></i>\n </button>\n </div>\n </div>\n</div>\n\n<input\n #picker\n *ngIf=\"clickToOpen\"\n (change)=\"onPick($event)\"\n (click)=\"picker.focus()\"\n (blur)=\"onTouched()\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n type=\"file\"\n class=\"hidden\"\n/>\n<div #area [hidden]=\"isOver || loading\" (dragover)=\"toggle()\">\n <ng-content></ng-content>\n</div>\n" }]
289
+ args: [{ selector: 'c8y-drop-area', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DropAreaComponent, multi: true }], template: "<div\n class=\"drop-zone\"\n *ngIf=\"!shouldShowFilesList()\"\n [ngClass]=\"{ 'has-errors': errors }\"\n [style.pointerEvents]=\"loading ? 'none' : 'auto'\"\n #zone\n (dragleave)=\"stopDragging()\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onOver()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n (click)=\"showPicker($event)\"\n tabindex=\"0\"\n>\n <div class=\"file-placeholder\" [ngClass]=\"{ 'drag-over': isOver }\">\n <div *ngIf=\"loading\" class=\"d-flex p-4 flex-center\">\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 50%\"\n >\n <div\n [attr.aria-label]=\"progress + '%'\"\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner-snake\" *ngIf=\"progress === -1\"></div>\n <p class=\"m-t-auto m-b-auto m-r-8\">\n {{ loadingMessage | translate }}\n </p>\n </div>\n\n <div *ngIf=\"!loading\" class=\"hint-placeholder pointer\">\n <i class=\"dlt-c8y-icon-{{ icon }}\"></i>\n <p *ngIf=\"!errors\">\n <b>{{ message | translate }}</b>\n <br />\n <span *ngIf=\"alwaysShow && clickToOpen\" translate></span>\n </p>\n <div *ngIf=\"errors\" class=\"has-errors\">\n <p class=\"form-control-feedback-message\">\n {{ errorMessage | translate }}\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"drop-zone\"\n *ngIf=\"shouldShowFilesList()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n>\n <div *ngIf=\"loading\" class=\"p-absolute p-4 fit-w fit-h d-flex d-col j-c-center a-i-center\">\n <p class=\"m-b-8\">\n <strong>\n {{ loadingMessage | translate }}\n </strong>\n </p>\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 80%\"\n >\n <div\n [attr.aria-label]=\"progress + '%'\"\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner p-relative m-0\" *ngIf=\"progress === -1\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </div>\n <div *ngIf=\"!loading\" class=\"file-placeholder p-4\">\n <div class=\"d-flex p-4\">\n <i c8yIcon=\"file-o\" class=\"m-r-8\"></i>\n <span title=\"{{ filesNameString }}\" class=\"text-truncate\">\n {{ filesNameString }}\n </span>\n <button\n title=\"{{ 'Remove' | translate }}\"\n aria-label=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto\"\n >\n <i c8yIcon=\"minus-circle\" (click)=\"onDelete()\"></i>\n </button>\n </div>\n </div>\n</div>\n<label for=\"file\" class=\"sr-only\">{{ 'Select file' | translate }}</label>\n<input\n #picker\n *ngIf=\"clickToOpen\"\n (change)=\"onPick($event)\"\n (click)=\"picker.focus()\"\n (blur)=\"onTouched()\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n type=\"file\"\n class=\"hidden\"\n id=\"file\"\n/>\n<div #area [hidden]=\"isOver || loading\" (dragover)=\"toggle()\">\n <ng-content></ng-content>\n</div>\n" }]
290
290
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.FilesService }, { type: i2.TranslateService }, { type: i3.BytesPipe }]; }, propDecorators: { formControl: [{
291
291
  type: Input
292
292
  }], title: [{
@@ -335,4 +335,4 @@ var ReadAsType;
335
335
  ReadAsType[ReadAsType["ARRAY_BUFFER"] = 2] = "ARRAY_BUFFER";
336
336
  ReadAsType[ReadAsType["BINARY_STRING"] = 3] = "BINARY_STRING";
337
337
  })(ReadAsType || (ReadAsType = {}));
338
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZHJvcC1hcmVhL2Ryb3AtYXJlYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2Ryb3AtYXJlYS9kcm9wLWFyZWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQUUxQzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQU9ILE1BQU0sT0FBTyxpQkFBaUI7SUFzRDVCLFlBQ1UsRUFBcUIsRUFDckIsWUFBMEIsRUFDMUIsU0FBMkIsRUFDM0IsS0FBZ0I7UUFIaEIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsVUFBSyxHQUFMLEtBQUssQ0FBVztRQXhEakIsVUFBSyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQixZQUFPLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFD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QUFFO2dCQUNJLE1BQU07c0JBQTdDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFVdEMsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQzs7QUFzUm5DLElBQUssVUFLSjtBQUxELFdBQUssVUFBVTtJQUNiLDJDQUFJLENBQUE7SUFDSixtREFBUSxDQUFBO0lBQ1IsMkRBQVksQ0FBQTtJQUNaLDZEQUFhLENBQUE7QUFDZixDQUFDLEVBTEksVUFBVSxLQUFWLFVBQVUsUUFLZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBnZXQsIG1hcCwgc29tZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCeXRlc1BpcGUgfSBmcm9tICcuLi9jb21tb24vYnl0ZXMucGlwZSc7XG5pbXBvcnQgeyBGaWxlc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vZmlsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcblxuLyoqXG4gKiBBIGRyb3Atem9uZSB3aGljaCBpcyBhIGZpbGUgc2VsZWN0b3IgYWxsb3dpbmcgdXNlcnMgdG8gc2VsZWN0IGZpbGUocykgZnJvbSB0aGVpciBmaWxlIHN5c3RlbSwgZWl0aGVyIG5hdGl2ZWx5IG9yIGJ5IGRyYWcgYW5kIGRyb3AuXG4gKlxuICogIyMgRXhhbXBsZTpcbiAqXG4gKiBgYGBodG1sXG4gKiAgPGRpdj5cbiAqICAgIDxjOHktZHJvcC1hcmVhXG4gKiAgICAgIChkcm9wcGVkKT1cInVwbG9hZEZpbGUoJGV2ZW50KVwiXG4gKiAgICAgIFtpY29uXT1cIid1cGxvYWQnXCJcbiAqICAgICAgW2FjY2VwdF09XCInLnppcCwuN3osdmlkZW8nXCI+XG4gKiAgICA8L2M4eS1kcm9wLWFyZWE+XG4gKiAgPC9kaXY+XG4gKiBgYGBcbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZHJvcC1hcmVhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3AtYXJlYS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBEcm9wQXJlYUNvbXBvbmVudCwgbXVsdGk6IHRydWUgfV1cbn0pXG5leHBvcnQgY2xhc3MgRHJvcEFyZWFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCkgZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIEBJbnB1dCgpIHRpdGxlID0gZ2V0dGV4dCgnVXBsb2FkIGZpbGUnKTtcbiAgQElucHV0KCkgbWVzc2FnZSA9IGdldHRleHQoJ0Ryb3AgZmlsZSBoZXJlJyk7XG4gIEBJbnB1dCgpIGljb24gPSAncGx1cy1zcXVhcmUnO1xuICBASW5wdXQoKSBsb2FkaW5nTWVzc2FnZSA9IGdldHRleHQoJ1VwbG9hZGluZ+KApicpO1xuICBASW5wdXQoKSBmb3JjZUhpZGVMaXN0OiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBBZmZlY3RzIGRpc3BsYXlpbmcgYm90aCB0aGUgZHJvcCB6b25lIGFuZCB0aGUgbGlzdCBvZiBkcm9wcGVkIGZpbGVzLiAqL1xuICBASW5wdXQoKSBhbHdheXNTaG93ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsaWNrVG9PcGVuID0gdHJ1ZTtcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuICAvKipcbiAgICogQ3VycmVudCBwcm9ncmVzcyBvZiB0aGUgdXBsb2FkIGFzIGEgcGVyY2VudGFnZS4gSWYgbm90IGdpdmVuIGEgc3Bpbm5lciB3aWxsIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIHByb2dyZXNzID0gLTE7IC8vIC0xID0gc3Bpbm5lclxuICBAT3V0cHV0KCkgZHJvcHBlZDogRXZlbnRFbWl0dGVyPERyb3BwZWRGaWxlW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBtYXhBbGxvd2VkRmlsZXMgPSBJbmZpbml0eTtcbiAgQElucHV0KCkgZmlsZXM6IEZpbGVMaXN0O1xuICAvKiogU3BlY2lmaWVzIGEgZmlsdGVyIGZvciB3aGF0IGZpbGUgdHlwZXMgdGhlIHVzZXIgY2FuIHBpY2sgZnJvbSB0aGUgZmlsZSBpbnB1dCBkaWFsb2cgYm94LlxuICAgKiAjIyBFeGFtcGxlOlxuICAgKlxuICAgKiBTcGVjaWZ5IGZpbGUgdHlwZXMgYnkgZXh0ZW5zaW9uczpcbiAgICogYGBgaHRtbFxuICAgKiAgLi4uXG4gICAqICBbYWNjZXB0XT1cIicuemlwLC43eidcIlxuICAgKiAgLi4uXG4gICAqIGBgYFxuICAgKlxuICAgKiBTcGVjaWZ5IGZpbGUgdHlwZXMgYnkgZXh0ZW5zaW9ucyBhbmQgZ2VuZXJpYyB0eXBlcyBbR0VORVJJQ19GSUxFX1RZUEVde0BsaW5rIEdFTkVSSUNfRklMRV9UWVBFfTpcbiAgICogYGBgaHRtbFxuICAgKiAgLi4uXG4gICAqICBbYWNjZXB0XT1cIicucGRmLGFyY2hpdmUnXCJcbiAgICogIC4uLlxuICAgKiBgYGBcbiAgICpcbiAgICogU3BlY2lmeSBmaWxlIHR5cGVzIGJ5IGdlbmVyaWMgdHlwZXMgW0dFTkVSSUNfRklMRV9UWVBFXXtAbGluayBHRU5FUklDX0ZJTEVfVFlQRX06XG4gICAqICBgYGBodG1sXG4gICAqICAuLi5cbiAgICogIFthY2NlcHRdPVwiJ2FyY2hpdmUsdmlkZW8nXCJcbiAgICogIC4uLlxuICAgKlxuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgpIGFjY2VwdDogc3RyaW5nO1xuICBpc092ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZXJyb3JzOiBib29sZWFuID0gZmFsc2U7XG4gIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICBmaWxlc05hbWVTdHJpbmc6IHN0cmluZztcbiAgYWNjZXB0ZWRFeHRzOiBzdHJpbmdbXTtcblxuICBAVmlld0NoaWxkKCdhcmVhJywgeyBzdGF0aWM6IHRydWUgfSkgYXJlYTogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnem9uZScsIHsgc3RhdGljOiBmYWxzZSB9KSB6b25lOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdwaWNrZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgcGlja2VyOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZmlsZXNTZXJ2aWNlOiBGaWxlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBieXRlczogQnl0ZXNQaXBlXG4gICkge31cblxuICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gIG9ua2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLnBpY2tlci5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hY2NlcHRlZEV4dHMgPSB0aGlzLmZpbGVzU2VydmljZS5leHRyYWN0RmlsZUV4dGVuc2lvbnModGhpcy5hY2NlcHQpLm1hcCh0ID0+IGAuJHt0fWApO1xuICAgIHRoaXMuYWx3YXlzU2hvdyA9IHRoaXMuYWx3YXlzU2hvdyB8fCB0aGlzLmFyZWEubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPT09IDA7XG5cbiAgICBpZiAodGhpcy5maWxlcyAmJiB0aGlzLmlzRmlsZXNBbk9iamVjdE9yQXJyYXkoKSAmJiB0aGlzLmZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMub25GaWxlc1NlbGVjdGVkKHRoaXMuZmlsZXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBzdHlsZSBvZiB0aGUgZHJvcCB6b25lIGVsZW1lbnQgd2hlbiBhIGZpbGUgaXMgZHJhZ2dlZCBvdmVyIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICB0b2dnbGUoKTogdm9pZCB7XG4gICAgdGhpcy56b25lLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5hcmVhLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgJ3B4JztcbiAgICB0aGlzLm9uT3ZlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3dzIGNvbXB1dGVyIGJyb3dzZXIgd2l0aCBmaWxlcyB0byBkcm9wIGludG8gZHJvcC1hcmVhIHpvbmUuXG4gICAqL1xuICBzaG93UGlja2VyKCRldmVudD8pOiB2b2lkIHtcbiAgICB0aGlzLnByZXZlbnREZWZhdWx0KCRldmVudCk7XG4gICAgdGhpcy5waWNrZXIubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIHRoaXMucGlja2VyLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgd2hlbiBmaWxlIGlzIG9uIG92ZXIgZHJvcCBhcmVhLCBidXQgbm90IGRyb3BwZWQuXG4gICAqL1xuICBvbk92ZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzT3Zlcikge1xuICAgICAgdGhpcy5pc092ZXIgPSB0cnVlO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCB0aGlzLnByZXZlbnREZWZhdWx0KTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCB0aGlzLnByZXZlbnREZWZhdWx0KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIHdoZW4gZmlsZSBpcyBkcm9wcGVkLlxuICAgKi9cbiAgb25QaWNrKCRldmVudCk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3JzID0gZmFsc2U7XG4gICAgdGhpcy5wcmV2ZW50RGVmYXVsdCgkZXZlbnQpO1xuICAgIHRoaXMub25GaWxlc1NlbGVjdGVkKCRldmVudC50YXJnZXQuZmlsZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBmaWxlIHdoZW4gaXQgaXMgZHJvcHBlZCBpbnRvIGRyb3AtYXJlYS5cbiAgICovXG4gIG9uRHJvcCgkZXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnByZXZlbnREZWZhdWx0KCRldmVudCk7XG4gICAgdGhpcy5vbkZpbGVzU2VsZWN0ZWQoJGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyk7XG4gICAgdGhpcy5zdG9wRHJhZ2dpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgY29uZGl0aW9uIHdoYXQgc2hvdWxkIGJlIGRpc3BsYXllZDogZHJvcC1hcmVhIHpvbmUgb3IgbGlzdCBvZiBkcm9wcGVkIGZpbGVzLlxuICAgKi9cbiAgc2hvdWxkU2hvd0ZpbGVzTGlzdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pc0ZpbGVzQW5PYmplY3RPckFycmF5KCkgJiZcbiAgICAgICF0aGlzLmZvcmNlSGlkZUxpc3QgJiZcbiAgICAgIHRoaXMuYWx3YXlzU2hvdyAmJlxuICAgICAgIXRoaXMuaXNGaWxlc0FycmF5RW1wdHkoKSAmJlxuICAgICAgIXRoaXMuaGFzRW1wdHlGaWxlcygpICYmXG4gICAgICAhdGhpcy5pc1Rvb01hbnlGaWxlcygpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgd2hlbiBmaWxlIGlzIHBpY2tlZCBvdmVyIHdlYiBhcHBsaWNhdGlvbi5cbiAgICovXG4gIHN0b3BEcmFnZ2luZygpOiB2b2lkIHtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIHRoaXMucHJldmVudERlZmF1bHQpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCB0aGlzLnByZXZlbnREZWZhdWx0KTtcbiAgICB0aGlzLmlzT3ZlciA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBmaWxlcyBhbHJlYWR5IGRyb3BwZWQgZmlsZXMuXG4gICAqL1xuICBvbkRlbGV0ZSgpIHtcbiAgICBkZWxldGUgdGhpcy5maWxlcztcbiAgICBkZWxldGUgdGhpcy5maWxlc05hbWVTdHJpbmc7XG4gICAgdGhpcy5jbGVhckVycm9ycygpO1xuICAgIHRoaXMuZHJvcHBlZC5lbWl0KG51bGwpO1xuICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9IF8gPT4gdW5kZWZpbmVkO1xuICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5maWxlcyA9IHZhbHVlO1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMub25EZWxldGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWxlc05hbWVTdHJpbmcgPSB0aGlzLmdldEZpbGVzTmFtZXNBc1N0cmluZyh2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9uRmlsZXNTZWxlY3RlZChmaWxlczogRmlsZUxpc3QpIHtcbiAgICBjb25zdCBoYXNWYWxpZE5hbWVMZW5ndGggPSB0aGlzLmZpbGVzU2VydmljZS5jaGVja01heExlbmd0aChmaWxlcyk7XG4gICAgaWYgKCFoYXNWYWxpZE5hbWVMZW5ndGgpIHtcbiAgICAgIHRoaXMub25GaWxlSW52YWxpZE5hbWVMZW5ndGgoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBoYXZlVmFsaWRUeXBlcyA9IHRoaXMuZmlsZXNTZXJ2aWNlLmhhdmVWYWxpZEV4dGVuc2lvbnMoZmlsZXMsIHRoaXMuYWNjZXB0KTtcbiAgICBpZiAoIWhhdmVWYWxpZFR5cGVzKSB7XG4gICAgICB0aGlzLm9uRmlsZUludmFsaWRUeXBlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGF2ZVZhbGlkU2l6ZXMgPSBhd2FpdCB0aGlzLmZpbGVzU2VydmljZS5oYXZlVmFsaWRTaXplcyhmaWxlcyk7XG4gICAgaWYgKCFoYXZlVmFsaWRTaXplcykge1xuICAgICAgYXdhaXQgdGhpcy5vbkZpbGVJbnZhbGlkU2l6ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZmlsZXMgPSBmaWxlcztcbiAgICB0aGlzLmZpbGVzTmFtZVN0cmluZyA9IHRoaXMuZ2V0RmlsZXNOYW1lc0FzU3RyaW5nKGZpbGVzKTtcbiAgICB0aGlzLmVycm9ycyA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuaXNUb29NYW55RmlsZXMoKSkge1xuICAgICAgdGhpcy5lcnJvcnMgPSB0cnVlO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0RXJyb3JzKHsgdG9vTWFueUZpbGVzOiB0cnVlIH0pO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBnZXR0ZXh0KCdUb28gbWFueSBmaWxlcyBzZWxlY3RlZC4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNFbXB0eUZpbGVzKCkpIHtcbiAgICAgIHRoaXMuZXJyb3JzID0gdHJ1ZTtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldEVycm9ycyh7IGVtcHR5RmlsZXM6IHRydWUgfSk7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGdldHRleHQoJ0ZpbGUgbXVzdCBub3QgYmUgZW1wdHksIHNlbGVjdCBhbm90aGVyIG9uZS4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkcm9wcGVkRmlsZXM6IERyb3BwZWRGaWxlW10gPSB0aGlzLmNvbXBvc2UoZmlsZXMpO1xuICAgIHRoaXMuZHJvcHBlZC5lbWl0KGRyb3BwZWRGaWxlcyk7XG4gICAgdGhpcy5vbkNoYW5nZShkcm9wcGVkRmlsZXMpO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIG9uRmlsZUludmFsaWROYW1lTGVuZ3RoKCkge1xuICAgIHRoaXMuZXJyb3JzID0gdHJ1ZTtcbiAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRFcnJvcnMoeyBpbnZhbGlkTmFtZUxlbmd0aDogdHJ1ZSB9KTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGdldHRleHQoJ1RoZSBmaWxlbmFtZSBpcyB0b28gbG9uZy4nKTtcbiAgfVxuXG4gIHByaXZhdGUgb25GaWxlSW52YWxpZFR5cGUoKSB7XG4gICAgdGhpcy5lcnJvcnMgPSB0cnVlO1xuICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldEVycm9ycyh7IGludmFsaWRUeXBlOiB0cnVlIH0pO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZ2V0dGV4dCgnVGhlIHNlbGVjdGVkIGZpbGUgaXMgbm90IHN1cHBvcnRlZC4nKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgb25GaWxlSW52YWxpZFNpemUoKSB7XG4gICAgY29uc3QgbXNnID0gZ2V0dGV4dCgnVGhlIHNlbGVjdGVkIGZpbGUgaXMgdG9vIGxhcmdlLiBUaGUgc2l6ZSBsaW1pdCBpcyB7eyBsaW1pdCB9fS4nKTtcbiAgICBjb25zdCBsaW1pdCA9IHRoaXMuYnl0ZXMudHJhbnNmb3JtKGF3YWl0IHRoaXMuZmlsZXNTZXJ2aWNlLmxvYWRCeXRlc1NpemVMaW1pdCgpKTtcbiAgICB0aGlzLmVycm9ycyA9IHRydWU7XG4gICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0RXJyb3JzKHsgaW52YWxpZFNpemU6IHRydWUgfSk7XG5cbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQobXNnLCB7IGxpbWl0IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWxlc05hbWVzQXNTdHJpbmcoZmlsZXM6IEZpbGVMaXN0KTogc3RyaW5nIHtcbiAgICByZXR1cm4gbWFwKGZpbGVzLCAoeyBuYW1lIH0pID0+IG5hbWUpLmpvaW4oJywgJyk7XG4gIH1cblxuICBwcml2YXRlIGlzRmlsZXNBcnJheUVtcHR5KCkge1xuICAgIHJldHVybiBnZXQodGhpcywgJ2ZpbGVzLmxlbmd0aCcsIDApID09PSAwO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Rvb01hbnlGaWxlcygpIHtcbiAgICByZXR1cm4gZ2V0KHRoaXMsICdmaWxlcy5sZW5ndGgnLCAwKSA+IHRoaXMubWF4QWxsb3dlZEZpbGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0ZpbGVzQW5PYmplY3RPckFycmF5KCkge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5maWxlcyA9PT0gJ29iamVjdCc7XG4gIH1cblxuICBwcml2YXRlIGhhc0VtcHR5RmlsZXMoKSB7XG4gICAgbGV0IHJlc3VsdCA9IHRydWU7XG4gICAgaWYgKCF0aGlzLmlzRmlsZXNBcnJheUVtcHR5KCkpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMuaXNBbnlGaWxlRW1wdHkoKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgaXNBbnlGaWxlRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHNvbWUoQXJyYXkuZnJvbSh0aGlzLmZpbGVzKSwgWydzaXplJywgMF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckVycm9ycygpIHtcbiAgICBkZWxldGUgdGhpcy5lcnJvck1lc3NhZ2U7XG4gICAgdGhpcy5lcnJvcnMgPSBmYWxzZTtcbiAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRFcnJvcnMobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIHByZXZlbnREZWZhdWx0KCRldmVudD8pIHtcbiAgICBpZiAoJGV2ZW50KSB7XG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbXBvc2UoZmlsZXM6IEZpbGVMaXN0KTogRHJvcHBlZEZpbGVbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oZmlsZXMpLm1hcChmaWxlID0+ICh7XG4gICAgICBmaWxlLFxuICAgICAgcmVhZEFzSnNvbjogYXN5bmMgKCkgPT4gSlNPTi5wYXJzZShhd2FpdCB0aGlzLnJlYWQoZmlsZSwgUmVhZEFzVHlwZS5URVhUKSksXG4gICAgICByZWFkQXNUZXh0OiBhc3luYyAoKSA9PiB0aGlzLnJlYWQoZmlsZSwgUmVhZEFzVHlwZS5URVhUKSxcbiAgICAgIHJlYWRBc0FycmF5QnVmZmVyOiBhc3luYyAoKSA9PiB0aGlzLnJlYWQoZmlsZSwgUmVhZEFzVHlwZS5BUlJBWV9CVUZGRVIpLFxuICAgICAgcmVhZEFzQmluYXJ5U3RyaW5nOiBhc3luYyAoKSA9PiB0aGlzLnJlYWQoZmlsZSwgUmVhZEFzVHlwZS5CSU5BUllfU1RSSU5HKSxcbiAgICAgIHJlYWRBc0RhdGFVUkw6IGFzeW5jICgpID0+IHRoaXMucmVhZChmaWxlLCBSZWFkQXNUeXBlLkRBVEFfVVJMKVxuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVhZChmaWxlLCB0eXBlOiBSZWFkQXNUeXBlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgUmVhZEFzVHlwZS5URVhUOiB7XG4gICAgICAgICAgcmVhZGVyLnJlYWRBc1RleHQoZmlsZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBSZWFkQXNUeXBlLkFSUkFZX0JVRkZFUjoge1xuICAgICAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFJlYWRBc1R5cGUuQklOQVJZX1NUUklORzoge1xuICAgICAgICAgIHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBSZWFkQXNUeXBlLkRBVEFfVVJMOiB7XG4gICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB0aGlzLm9uTG9hZChyZWFkZXIsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uTG9hZChyZWFkZXIsIHJlc29sdmUsIHJlamVjdCkge1xuICAgIGlmIChyZWFkZXIucmVhZHlTdGF0ZSAhPT0gMikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmVhZGVyLmVycm9yKSB7XG4gICAgICByZWplY3QocmVhZGVyLmVycm9yKTtcbiAgICB9XG4gICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERyb3BwZWRGaWxlIHtcbiAgZmlsZTogRmlsZTtcbiAgcmVhZEFzVGV4dCgpO1xuICByZWFkQXNBcnJheUJ1ZmZlcigpO1xuICByZWFkQXNCaW5hcnlTdHJpbmcoKTtcbiAgcmVhZEFzRGF0YVVSTCgpO1xuICByZWFkQXNKc29uKCk7XG59XG5cbmVudW0gUmVhZEFzVHlwZSB7XG4gIFRFWFQsXG4gIERBVEFfVVJMLFxuICBBUlJBWV9CVUZGRVIsXG4gIEJJTkFSWV9TVFJJTkdcbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJkcm9wLXpvbmVcIlxuICAqbmdJZj1cIiFzaG91bGRTaG93RmlsZXNMaXN0KClcIlxuICBbbmdDbGFzc109XCJ7ICdoYXMtZXJyb3JzJzogZXJyb3JzIH1cIlxuICBbc3R5bGUucG9pbnRlckV2ZW50c109XCJsb2FkaW5nID8gJ25vbmUnIDogJ2F1dG8nXCJcbiAgI3pvbmVcbiAgKGRyYWdsZWF2ZSk9XCJzdG9wRHJhZ2dpbmcoKVwiXG4gIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgKGRyYWdvdmVyKT1cIm9uT3ZlcigpXCJcbiAgW3N0eWxlLmRpc3BsYXldPVwiaXNPdmVyIHx8IGFsd2F5c1Nob3cgfHwgbG9hZGluZyA/ICdibG9jaycgOiAnbm9uZSdcIlxuICAoY2xpY2spPVwic2hvd1BpY2tlcigkZXZlbnQpXCJcbiAgdGFiaW5kZXg9XCIwXCJcbj5cbiAgPGRpdiBjbGFzcz1cImZpbGUtcGxhY2Vob2xkZXJcIiBbbmdDbGFzc109XCJ7ICdkcmFnLW92ZXInOiBpc092ZXIgfVwiPlxuICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJkLWZsZXggcC00IGZsZXgtY2VudGVyXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicHJvZ3Jlc3MgcHJvZ3Jlc3Mtc3RyaXBlZCBhY3RpdmUgbS0wXCJcbiAgICAgICAgKm5nSWY9XCJwcm9ncmVzcyAhPT0gLTFcIlxuICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogNTAlXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwicHJvZ3Jlc3MtYmFyXCJcbiAgICAgICAgICByb2xlPVwicHJvZ3Jlc3NiYXJcIlxuICAgICAgICAgIGFyaWEtdmFsdWVub3c9XCIwXCJcbiAgICAgICAgICBhcmlhLXZhbHVlbWluPVwiMFwiXG4gICAgICAgICAgYXJpYS12YWx1ZW1heD1cIjEwMFwiXG4gICAgICAgICAgW3N0eWxlLndpZHRoXT1cInByb2dyZXNzICsgJyUnXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1zbmFrZVwiICpuZ0lmPVwicHJvZ3Jlc3MgPT09IC0xXCI+PC9kaXY+XG4gICAgICA8cCBjbGFzcz1cIm0tdC1hdXRvIG0tYi1hdXRvIG0tci04XCI+XG4gICAgICAgIHt7IGxvYWRpbmdNZXNzYWdlIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmdcIiBjbGFzcz1cImhpbnQtcGxhY2Vob2xkZXIgcG9pbnRlclwiPlxuICAgICAgPGkgY2xhc3M9XCJkbHQtYzh5LWljb24te3sgaWNvbiB9fVwiPjwvaT5cbiAgICAgIDxwICpuZ0lmPVwiIWVycm9yc1wiPlxuICAgICAgICA8Yj57eyBtZXNzYWdlIHwgdHJhbnNsYXRlIH19PC9iPlxuICAgICAgICA8YnIgLz5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJhbHdheXNTaG93ICYmIGNsaWNrVG9PcGVuXCIgdHJhbnNsYXRlPjwvc3Bhbj5cbiAgICAgIDwvcD5cbiAgICAgIDxkaXYgKm5nSWY9XCJlcnJvcnNcIiBjbGFzcz1cImhhcy1lcnJvcnNcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJmb3JtLWNvbnRyb2wtZmVlZGJhY2stbWVzc2FnZVwiPlxuICAgICAgICAgIHt7IGVycm9yTWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdlxuICBjbGFzcz1cImRyb3Atem9uZVwiXG4gICpuZ0lmPVwic2hvdWxkU2hvd0ZpbGVzTGlzdCgpXCJcbiAgW3N0eWxlLmRpc3BsYXldPVwiaXNPdmVyIHx8IGFsd2F5c1Nob3cgfHwgbG9hZGluZyA/ICdibG9jaycgOiAnbm9uZSdcIlxuICB0YWJpbmRleD1cIjBcIlxuPlxuICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwicC1hYnNvbHV0ZSBwLTQgZml0LXcgZml0LWggZC1mbGV4IGQtY29sIGotYy1jZW50ZXIgYS1pLWNlbnRlclwiPlxuICAgIDxwIGNsYXNzPVwibS1iLThcIj5cbiAgICAgIDxzdHJvbmc+XG4gICAgICAgIHt7IGxvYWRpbmdNZXNzYWdlIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3N0cm9uZz5cbiAgICA8L3A+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwcm9ncmVzcyBwcm9ncmVzcy1zdHJpcGVkIGFjdGl2ZSBtLTBcIlxuICAgICAgKm5nSWY9XCJwcm9ncmVzcyAhPT0gLTFcIlxuICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDgwJVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInByb2dyZXNzLWJhclwiXG4gICAgICAgIHJvbGU9XCJwcm9ncmVzc2JhclwiXG4gICAgICAgIGFyaWEtdmFsdWVub3c9XCIwXCJcbiAgICAgICAgYXJpYS12YWx1ZW1pbj1cIjBcIlxuICAgICAgICBhcmlhLXZhbHVlbWF4PVwiMTAwXCJcbiAgICAgICAgW3N0eWxlLndpZHRoXT1cInByb2dyZXNzICsgJyUnXCJcbiAgICAgID48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lciBwLXJlbGF0aXZlIG0tMFwiICpuZ0lmPVwicHJvZ3Jlc3MgPT09IC0xXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicmVjdDFcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZWN0MlwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJlY3QzXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicmVjdDRcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZWN0NVwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nXCIgY2xhc3M9XCJmaWxlLXBsYWNlaG9sZGVyIHAtNFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggcC00XCI+XG4gICAgICA8aSBjOHlJY29uPVwiZmlsZS1vXCIgY2xhc3M9XCJtLXItOFwiPjwvaT5cbiAgICAgIDxzcGFuIHRpdGxlPVwie3sgZmlsZXNOYW1lU3RyaW5nIH19XCIgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+XG4gICAgICAgIHt7IGZpbGVzTmFtZVN0cmluZyB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0aXRsZT1cInt7ICdSZW1vdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kb3QgYnRuLWRvdC0tZGFuZ2VyIHNob3dPbkhvdmVyIG0tbC1hdXRvXCJcbiAgICAgID5cbiAgICAgICAgPGkgYzh5SWNvbj1cIm1pbnVzLWNpcmNsZVwiIChjbGljayk9XCJvbkRlbGV0ZSgpXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxpbnB1dFxuICAjcGlja2VyXG4gICpuZ0lmPVwiY2xpY2tUb09wZW5cIlxuICAoY2hhbmdlKT1cIm9uUGljaygkZXZlbnQpXCJcbiAgKGNsaWNrKT1cInBpY2tlci5mb2N1cygpXCJcbiAgKGJsdXIpPVwib25Ub3VjaGVkKClcIlxuICBbYWNjZXB0XT1cImFjY2VwdGVkRXh0c1wiXG4gIFttdWx0aXBsZV09XCJtYXhBbGxvd2VkRmlsZXMgPiAxXCJcbiAgdHlwZT1cImZpbGVcIlxuICBjbGFzcz1cImhpZGRlblwiXG4vPlxuPGRpdiAjYXJlYSBbaGlkZGVuXT1cImlzT3ZlciB8fCBsb2FkaW5nXCIgKGRyYWdvdmVyKT1cInRvZ2dsZSgpXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
338
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZHJvcC1hcmVhL2Ryb3AtYXJlYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2Ryb3AtYXJlYS9kcm9wLWFyZWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQUUxQzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQU9ILE1BQU0sT0FBTyxpQkFBaUI7SUFzRDVCLFlBQ1UsRUFBcUIsRUFDckIsWUFBMEIsRUFDMUIsU0FBMkIsRUFDM0IsS0FBZ0I7UUFIaEIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsVUFBSyxHQUFMLEtBQUssQ0FBVztRQXhEakIsVUFBSyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQixZQUFPLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFD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QUFFO2dCQUNJLE1BQU07c0JBQTdDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFVdEMsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQzs7QUFzUm5DLElBQUssVUFLSjtBQUxELFdBQUssVUFBVTtJQUNiLDJDQUFJLENBQUE7SUFDSixtREFBUSxDQUFBO0lBQ1IsMkRBQVksQ0FBQTtJQUNaLDZEQUFhLENBQUE7QUFDZixDQUFDLEVBTEksVUFBVSxLQUFWLFVBQVUsUUFLZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBnZXQsIG1hcCwgc29tZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCeXRlc1BpcGUgfSBmcm9tICcuLi9jb21tb24vYnl0ZXMucGlwZSc7XG5pbXBvcnQgeyBGaWxlc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vZmlsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcblxuLyoqXG4gKiBBIGRyb3Atem9uZSB3aGljaCBpcyBhIGZpbGUgc2VsZWN0b3IgYWxsb3dpbmcgdXNlcnMgdG8gc2VsZWN0IGZpbGUocykgZnJvbSB0aGVpciBmaWxlIHN5c3RlbSwgZWl0aGVyIG5hdGl2ZWx5IG9yIGJ5IGRyYWcgYW5kIGRyb3AuXG4gKlxuICogIyMgRXhhbXBsZTpcbiAqXG4gKiBgYGBodG1sXG4gKiAgPGRpdj5cbiAqICAgIDxjOHktZHJvcC1hcmVhXG4gKiAgICAgIChkcm9wcGVkKT1cInVwbG9hZEZpbGUoJGV2ZW50KVwiXG4gKiAgICAgIFtpY29uXT1cIid1cGxvYWQnXCJcbiAqICAgICAgW2FjY2VwdF09XCInLnppcCwuN3osdmlkZW8nXCI+XG4gKiAgICA8L2M4eS1kcm9wLWFyZWE+XG4gKiAgPC9kaXY+XG4gKiBgYGBcbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZHJvcC1hcmVhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3AtYXJlYS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBEcm9wQXJlYUNvbXBvbmVudCwgbXVsdGk6IHRydWUgfV1cbn0pXG5leHBvcnQgY2xhc3MgRHJvcEFyZWFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCkgZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIEBJbnB1dCgpIHRpdGxlID0gZ2V0dGV4dCgnVXBsb2FkIGZpbGUnKTtcbiAgQElucHV0KCkgbWVzc2FnZSA9IGdldHRleHQoJ0Ryb3AgZmlsZSBoZXJlJyk7XG4gIEBJbnB1dCgpIGljb24gPSAncGx1cy1zcXVhcmUnO1xuICBASW5wdXQoKSBsb2FkaW5nTWVzc2FnZSA9IGdldHRleHQoJ1VwbG9hZGluZ+KApicpO1xuICBASW5wdXQoKSBmb3JjZUhpZGVMaXN0OiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBBZmZlY3RzIGRpc3BsYXlpbmcgYm90aCB0aGUgZHJvcCB6b25lIGFuZCB0aGUgbGlzdCBvZiBkcm9wcGVkIGZpbGVzLiAqL1xuICBASW5wdXQoKSBhbHdheXNTaG93ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsaWNrVG9PcGVuID0gdHJ1ZTtcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuICAvKipcbiAgICogQ3VycmVudCBwcm9ncmVzcyBvZiB0aGUgdXBsb2FkIGFzIGEgcGVyY2VudGFnZS4gSWYgbm90IGdpdmVuIGEgc3Bpbm5lciB3aWxsIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIHByb2dyZXNzID0gLTE7IC8vIC0xID0gc3Bpbm5lclxuICBAT3V0cHV0KCkgZHJvcHBlZDogRXZlbnRFbWl0dGVyPERyb3BwZWRGaWxlW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBtYXhBbGxvd2VkRmlsZXMgPSBJbmZpbml0eTtcbiAgQElucHV0KCkgZmlsZXM6IEZpbGVMaXN0O1xuICAvKiogU3BlY2lmaWVzIGEgZmlsdGVyIGZvciB3aGF0IGZpbGUgdHlwZXMgdGhlIHVzZXIgY2FuIHBpY2sgZnJvbSB0aGUgZmlsZSBpbnB1dCBkaWFsb2cgYm94LlxuICAgKiAjIyBFeGFtcGxlOlxuICAgKlxuICAgKiBTcGVjaWZ5IGZpbGUgdHlwZXMgYnkgZXh0ZW5zaW9uczpcbiAgICogYGBgaHRtbFxuICAgKiAgLi4uXG4gICAqICBbYWNjZXB0XT1cIicuemlwLC43eidcIlxuICAgKiAgLi4uXG4gICAqIGBgYFxuICAgKlxuICAgKiBTcGVjaWZ5IGZpbGUgdHlwZXMgYnkgZXh0ZW5zaW9ucyBhbmQgZ2VuZXJpYyB0eXBlcyBbR0VORVJJQ19GSUxFX1RZUEVde0BsaW5rIEdFTkVSSUNfRklMRV9UWVBFfTpcbiAgICogYGBgaHRtbFxuICAgKiAgLi4uXG4gICAqICBbYWNjZXB0XT1cIicucGRmLGFyY2hpdmUnXCJcbiAgICogIC4uLlxuICAgKiBgYGBcbiAgICpcbiAgICogU3BlY2lmeSBmaWxlIHR5cGVzIGJ5IGdlbmVyaWMgdHlwZXMgW0dFTkVSSUNfRklMRV9UWVBFXXtAbGluayBHRU5FUklDX0ZJTEVfVFlQRX06XG4gICAqICBgYGBodG1sXG4gICAqICAuLi5cbiAgICogIFthY2NlcHRdPVwiJ2FyY2hpdmUsdmlkZW8nXCJcbiAgICogIC4uLlxuICAgKlxuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgpIGFjY2VwdDogc3RyaW5nO1xuICBpc092ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZXJyb3JzOiBib29sZWFuID0gZmFsc2U7XG4gIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICBmaWxlc05hbWVTdHJpbmc6IHN0cmluZztcbiAgYWNjZXB0ZWRFeHRzOiBzdHJpbmdbXTtcblxuICBAVmlld0NoaWxkKCdhcmVhJywgeyBzdGF0aWM6IHRydWUgfSkgYXJlYTogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnem9uZScsIHsgc3RhdGljOiBmYWxzZSB9KSB6b25lOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdwaWNrZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgcGlja2VyOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZmlsZXNTZXJ2aWNlOiBGaWxlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBieXRlczogQnl0ZXNQaXBlXG4gICkge31cblxuICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gIG9ua2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLnBpY2tlci5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hY2NlcHRlZEV4dHMgPSB0aGlzLmZpbGVzU2VydmljZS5leHRyYWN0RmlsZUV4dGVuc2lvbnModGhpcy5hY2NlcHQpLm1hcCh0ID0+IGAuJHt0fWApO1xuICAgIHRoaXMuYWx3YXlzU2hvdyA9IHRoaXMuYWx3YXlzU2hvdyB8fCB0aGlzLmFyZWEubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPT09IDA7XG5cbiAgICBpZiAodGhpcy5maWxlcyAmJiB0aGlzLmlzRmlsZXNBbk9iamVjdE9yQXJyYXkoKSAmJiB0aGlzLmZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMub25GaWxlc1NlbGVjdGVkKHRoaXMuZmlsZXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBzdHlsZSBvZiB0aGUgZHJvcCB6b25lIGVsZW1lbnQgd2hlbiBhIGZpbGUgaXMgZHJhZ2dlZCBvdmVyIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICB0b2dnbGUoKTogdm9pZCB7XG4gICAgdGhpcy56b25lLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5hcmVhLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgJ3B4JztcbiAgICB0aGlzLm9uT3ZlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3dzIGNvbXB1dGVyIGJyb3dzZXIgd2l0aCBmaWxlcyB0byBkcm9wIGludG8gZHJvcC1hcmVhIHpvbmUuXG4gICAqL1xuICBzaG93UGlja2VyKCRldmVudD8pOiB2b2lkIHtcbiAgICB0aGlzLnByZXZlbnREZWZhdWx0KCRldmVudCk7XG4gICAgdGhpcy5waWNrZXIubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIHRoaXMucGlja2VyLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgd2hlbiBmaWxlIGlzIG9uIG92ZXIgZHJvcCBhcmVhLCBidXQgbm90IGRyb3BwZWQuXG4gICAqL1xuICBvbk92ZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzT3Zlcikge1xuICAgICAgdGhpcy5pc092ZXIgPSB0cnVlO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCB0aGlzLnByZXZlbnREZWZhdWx0KTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCB0aGlzLnByZXZlbnREZWZhdWx0KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIHdoZW4gZmlsZSBpcyBkcm9wcGVkLlxuICAgKi9cbiAgb25QaWNrKCRldmVudCk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3JzID0gZmFsc2U7XG4gICAgdGhpcy5wcmV2ZW50RGVmYXVsdCgkZXZlbnQpO1xuICAgIHRoaXMub25GaWxlc1NlbGVjdGVkKCRldmVudC50YXJnZXQuZmlsZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBmaWxlIHdoZW4gaXQgaXMgZHJvcHBlZCBpbnRvIGRyb3AtYXJlYS5cbiAgICovXG4gIG9uRHJvcCgkZXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnByZXZlbnREZWZhdWx0KCRldmVudCk7XG4gICAgdGhpcy5vbkZpbGVzU2VsZWN0ZWQoJGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyk7XG4gICAgdGhpcy5zdG9wRHJhZ2dpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgY29uZGl0aW9uIHdoYXQgc2hvdWxkIGJlIGRpc3BsYXllZDogZHJvcC1hcmVhIHpvbmUgb3IgbGlzdCBvZiBkcm9wcGVkIGZpbGVzLlxuICAgKi9cbiAgc2hvdWxkU2hvd0ZpbGVzTGlzdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pc0ZpbGVzQW5PYmplY3RPckFycmF5KCkgJiZcbiAgICAgICF0aGlzLmZvcmNlSGlkZUxpc3QgJiZcbiAgICAgIHRoaXMuYWx3YXlzU2hvdyAmJlxuICAgICAgIXRoaXMuaXNGaWxlc0FycmF5RW1wdHkoKSAmJlxuICAgICAgIXRoaXMuaGFzRW1wdHlGaWxlcygpICYmXG4gICAgICAhdGhpcy5pc1Rvb01hbnlGaWxlcygpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgd2hlbiBmaWxlIGlzIHBpY2tlZCBvdmVyIHdlYiBhcHBsaWNhdGlvbi5cbiAgICovXG4gIHN0b3BEcmFnZ2luZygpOiB2b2lkIHtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIHRoaXMucHJldmVudERlZmF1bHQpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCB0aGlzLnByZXZlbnREZWZhdWx0KTtcbiAgICB0aGlzLmlzT3ZlciA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBmaWxlcyBhbHJlYWR5IGRyb3BwZWQgZmlsZXMuXG4gICAqL1xuICBvbkRlbGV0ZSgpIHtcbiAgICBkZWxldGUgdGhpcy5maWxlcztcbiAgICBkZWxldGUgdGhpcy5maWxlc05hbWVTdHJpbmc7XG4gICAgdGhpcy5jbGVhckVycm9ycygpO1xuICAgIHRoaXMuZHJvcHBlZC5lbWl0KG51bGwpO1xuICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9IF8gPT4gdW5kZWZpbmVkO1xuICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5maWxlcyA9IHZhbHVlO1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMub25EZWxldGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWxlc05hbWVTdHJpbmcgPSB0aGlzLmdldEZpbGVzTmFtZXNBc1N0cmluZyh2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9uRmlsZXNTZWxlY3RlZChmaWxlczogRmlsZUxpc3QpIHtcbiAgICBjb25zdCBoYXNWYWxpZE5hbWVMZW5ndGggPSB0aGlzLmZpbGVzU2VydmljZS5jaGVja01heExlbmd0aChmaWxlcyk7XG4gICAgaWYgKCFoYXNWYWxpZE5hbWVMZW5ndGgpIHtcbiAgICAgIHRoaXMub25GaWxlSW52YWxpZE5hbWVMZW5ndGgoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBoYXZlVmFsaWRUeXBlcyA9IHRoaXMuZmlsZXNTZXJ2aWNlLmhhdmVWYWxpZEV4dGVuc2lvbnMoZmlsZXMsIHRoaXMuYWNjZXB0KTtcbiAgICBpZiAoIWhhdmVWYWxpZFR5cGVzKSB7XG4gICAgICB0aGlzLm9uRmlsZUludmFsaWRUeXBlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGF2ZVZhbGlkU2l6ZXMgPSBhd2FpdCB0aGlzLmZpbGVzU2VydmljZS5oYXZlVmFsaWRTaXplcyhmaWxlcyk7XG4gICAgaWYgKCFoYXZlVmFsaWRTaXplcykge1xuICAgICAgYXdhaXQgdGhpcy5vbkZpbGVJbnZhbGlkU2l6ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZmlsZXMgPSBmaWxlcztcbiAgICB0aGlzLmZpbGVzTmFtZVN0cmluZyA9IHRoaXMuZ2V0RmlsZXNOYW1lc0FzU3RyaW5nKGZpbGVzKTtcbiAgICB0aGlzLmVycm9ycyA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuaXNUb29NYW55RmlsZXMoKSkge1xuICAgICAgdGhpcy5lcnJvcnMgPSB0cnVlO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0RXJyb3JzKHsgdG9vTWFueUZpbGVzOiB0cnVlIH0pO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBnZXR0ZXh0KCdUb28gbWFueSBmaWxlcyBzZWxlY3RlZC4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNFbXB0eUZpbGVzKCkpIHtcbiAgICAgIHRoaXMuZXJyb3JzID0gdHJ1ZTtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldEVycm9ycyh7IGVtcHR5RmlsZXM6IHRydWUgfSk7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGdldHRleHQoJ0ZpbGUgbXVzdCBub3QgYmUgZW1wdHksIHNlbGVjdCBhbm90aGVyIG9uZS4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkcm9wcGVkRmlsZXM6IERyb3BwZWRGaWxlW10gPSB0aGlzLmNvbXBvc2UoZmlsZXMpO1xuICAgIHRoaXMuZHJvcHBlZC5lbWl0KGRyb3BwZWRGaWxlcyk7XG4gICAgdGhpcy5vbkNoYW5nZShkcm9wcGVkRmlsZXMpO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIG9uRmlsZUludmFsaWROYW1lTGVuZ3RoKCkge1xuICAgIHRoaXMuZXJyb3JzID0gdHJ1ZTtcbiAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRFcnJvcnMoeyBpbnZhbGlkTmFtZUxlbmd0aDogdHJ1ZSB9KTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGdldHRleHQoJ1RoZSBmaWxlbmFtZSBpcyB0b28gbG9uZy4nKTtcbiAgfVxuXG4gIHByaXZhdGUgb25GaWxlSW52YWxpZFR5cGUoKSB7XG4gICAgdGhpcy5lcnJvcnMgPSB0cnVlO1xuICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldEVycm9ycyh7IGludmFsaWRUeXBlOiB0cnVlIH0pO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZ2V0dGV4dCgnVGhlIHNlbGVjdGVkIGZpbGUgaXMgbm90IHN1cHBvcnRlZC4nKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgb25GaWxlSW52YWxpZFNpemUoKSB7XG4gICAgY29uc3QgbXNnID0gZ2V0dGV4dCgnVGhlIHNlbGVjdGVkIGZpbGUgaXMgdG9vIGxhcmdlLiBUaGUgc2l6ZSBsaW1pdCBpcyB7eyBsaW1pdCB9fS4nKTtcbiAgICBjb25zdCBsaW1pdCA9IHRoaXMuYnl0ZXMudHJhbnNmb3JtKGF3YWl0IHRoaXMuZmlsZXNTZXJ2aWNlLmxvYWRCeXRlc1NpemVMaW1pdCgpKTtcbiAgICB0aGlzLmVycm9ycyA9IHRydWU7XG4gICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0RXJyb3JzKHsgaW52YWxpZFNpemU6IHRydWUgfSk7XG5cbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQobXNnLCB7IGxpbWl0IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWxlc05hbWVzQXNTdHJpbmcoZmlsZXM6IEZpbGVMaXN0KTogc3RyaW5nIHtcbiAgICByZXR1cm4gbWFwKGZpbGVzLCAoeyBuYW1lIH0pID0+IG5hbWUpLmpvaW4oJywgJyk7XG4gIH1cblxuICBwcml2YXRlIGlzRmlsZXNBcnJheUVtcHR5KCkge1xuICAgIHJldHVybiBnZXQodGhpcywgJ2ZpbGVzLmxlbmd0aCcsIDApID09PSAwO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Rvb01hbnlGaWxlcygpIHtcbiAgICByZXR1cm4gZ2V0KHRoaXMsICdmaWxlcy5sZW5ndGgnLCAwKSA+IHRoaXMubWF4QWxsb3dlZEZpbGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0ZpbGVzQW5PYmplY3RPckFycmF5KCkge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5maWxlcyA9PT0gJ29iamVjdCc7XG4gIH1cblxuICBwcml2YXRlIGhhc0VtcHR5RmlsZXMoKSB7XG4gICAgbGV0IHJlc3VsdCA9IHRydWU7XG4gICAgaWYgKCF0aGlzLmlzRmlsZXNBcnJheUVtcHR5KCkpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMuaXNBbnlGaWxlRW1wdHkoKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgaXNBbnlGaWxlRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHNvbWUoQXJyYXkuZnJvbSh0aGlzLmZpbGVzKSwgWydzaXplJywgMF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckVycm9ycygpIHtcbiAgICBkZWxldGUgdGhpcy5lcnJvck1lc3NhZ2U7XG4gICAgdGhpcy5lcnJvcnMgPSBmYWxzZTtcbiAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRFcnJvcnMobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIHByZXZlbnREZWZhdWx0KCRldmVudD8pIHtcbiAgICBpZiAoJGV2ZW50KSB7XG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbXBvc2UoZmlsZXM6IEZpbGVMaXN0KTogRHJvcHBlZEZpbGVbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oZmlsZXMpLm1hcChmaWxlID0+ICh7XG4gICAgICBmaWxlLFxuICAgICAgcmVhZEFzSnNvbjogYXN5bmMgKCkgPT4gSlNPTi5wYXJzZShhd2FpdCB0aGlzLnJlYWQoZmlsZSwgUmVhZEFzVHlwZS5URVhUKSksXG4gICAgICByZWFkQXNUZXh0OiBhc3luYyAoKSA9PiB0aGlzLnJlYWQoZmlsZSwgUmVhZEFzVHlwZS5URVhUKSxcbiAgICAgIHJlYWRBc0FycmF5QnVmZmVyOiBhc3luYyAoKSA9PiB0aGlzLnJlYWQoZmlsZSwgUmVhZEFzVHlwZS5BUlJBWV9CVUZGRVIpLFxuICAgICAgcmVhZEFzQmluYXJ5U3RyaW5nOiBhc3luYyAoKSA9PiB0aGlzLnJlYWQoZmlsZSwgUmVhZEFzVHlwZS5CSU5BUllfU1RSSU5HKSxcbiAgICAgIHJlYWRBc0RhdGFVUkw6IGFzeW5jICgpID0+IHRoaXMucmVhZChmaWxlLCBSZWFkQXNUeXBlLkRBVEFfVVJMKVxuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVhZChmaWxlLCB0eXBlOiBSZWFkQXNUeXBlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgUmVhZEFzVHlwZS5URVhUOiB7XG4gICAgICAgICAgcmVhZGVyLnJlYWRBc1RleHQoZmlsZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBSZWFkQXNUeXBlLkFSUkFZX0JVRkZFUjoge1xuICAgICAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFJlYWRBc1R5cGUuQklOQVJZX1NUUklORzoge1xuICAgICAgICAgIHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBSZWFkQXNUeXBlLkRBVEFfVVJMOiB7XG4gICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB0aGlzLm9uTG9hZChyZWFkZXIsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uTG9hZChyZWFkZXIsIHJlc29sdmUsIHJlamVjdCkge1xuICAgIGlmIChyZWFkZXIucmVhZHlTdGF0ZSAhPT0gMikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmVhZGVyLmVycm9yKSB7XG4gICAgICByZWplY3QocmVhZGVyLmVycm9yKTtcbiAgICB9XG4gICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERyb3BwZWRGaWxlIHtcbiAgZmlsZTogRmlsZTtcbiAgcmVhZEFzVGV4dCgpO1xuICByZWFkQXNBcnJheUJ1ZmZlcigpO1xuICByZWFkQXNCaW5hcnlTdHJpbmcoKTtcbiAgcmVhZEFzRGF0YVVSTCgpO1xuICByZWFkQXNKc29uKCk7XG59XG5cbmVudW0gUmVhZEFzVHlwZSB7XG4gIFRFWFQsXG4gIERBVEFfVVJMLFxuICBBUlJBWV9CVUZGRVIsXG4gIEJJTkFSWV9TVFJJTkdcbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJkcm9wLXpvbmVcIlxuICAqbmdJZj1cIiFzaG91bGRTaG93RmlsZXNMaXN0KClcIlxuICBbbmdDbGFzc109XCJ7ICdoYXMtZXJyb3JzJzogZXJyb3JzIH1cIlxuICBbc3R5bGUucG9pbnRlckV2ZW50c109XCJsb2FkaW5nID8gJ25vbmUnIDogJ2F1dG8nXCJcbiAgI3pvbmVcbiAgKGRyYWdsZWF2ZSk9XCJzdG9wRHJhZ2dpbmcoKVwiXG4gIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgKGRyYWdvdmVyKT1cIm9uT3ZlcigpXCJcbiAgW3N0eWxlLmRpc3BsYXldPVwiaXNPdmVyIHx8IGFsd2F5c1Nob3cgfHwgbG9hZGluZyA/ICdibG9jaycgOiAnbm9uZSdcIlxuICAoY2xpY2spPVwic2hvd1BpY2tlcigkZXZlbnQpXCJcbiAgdGFiaW5kZXg9XCIwXCJcbj5cbiAgPGRpdiBjbGFzcz1cImZpbGUtcGxhY2Vob2xkZXJcIiBbbmdDbGFzc109XCJ7ICdkcmFnLW92ZXInOiBpc092ZXIgfVwiPlxuICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJkLWZsZXggcC00IGZsZXgtY2VudGVyXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicHJvZ3Jlc3MgcHJvZ3Jlc3Mtc3RyaXBlZCBhY3RpdmUgbS0wXCJcbiAgICAgICAgKm5nSWY9XCJwcm9ncmVzcyAhPT0gLTFcIlxuICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogNTAlXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicHJvZ3Jlc3MgKyAnJSdcIlxuICAgICAgICAgIGNsYXNzPVwicHJvZ3Jlc3MtYmFyXCJcbiAgICAgICAgICByb2xlPVwicHJvZ3Jlc3NiYXJcIlxuICAgICAgICAgIGFyaWEtdmFsdWVub3c9XCIwXCJcbiAgICAgICAgICBhcmlhLXZhbHVlbWluPVwiMFwiXG4gICAgICAgICAgYXJpYS12YWx1ZW1heD1cIjEwMFwiXG4gICAgICAgICAgW3N0eWxlLndpZHRoXT1cInByb2dyZXNzICsgJyUnXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1zbmFrZVwiICpuZ0lmPVwicHJvZ3Jlc3MgPT09IC0xXCI+PC9kaXY+XG4gICAgICA8cCBjbGFzcz1cIm0tdC1hdXRvIG0tYi1hdXRvIG0tci04XCI+XG4gICAgICAgIHt7IGxvYWRpbmdNZXNzYWdlIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmdcIiBjbGFzcz1cImhpbnQtcGxhY2Vob2xkZXIgcG9pbnRlclwiPlxuICAgICAgPGkgY2xhc3M9XCJkbHQtYzh5LWljb24te3sgaWNvbiB9fVwiPjwvaT5cbiAgICAgIDxwICpuZ0lmPVwiIWVycm9yc1wiPlxuICAgICAgICA8Yj57eyBtZXNzYWdlIHwgdHJhbnNsYXRlIH19PC9iPlxuICAgICAgICA8YnIgLz5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJhbHdheXNTaG93ICYmIGNsaWNrVG9PcGVuXCIgdHJhbnNsYXRlPjwvc3Bhbj5cbiAgICAgIDwvcD5cbiAgICAgIDxkaXYgKm5nSWY9XCJlcnJvcnNcIiBjbGFzcz1cImhhcy1lcnJvcnNcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJmb3JtLWNvbnRyb2wtZmVlZGJhY2stbWVzc2FnZVwiPlxuICAgICAgICAgIHt7IGVycm9yTWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdlxuICBjbGFzcz1cImRyb3Atem9uZVwiXG4gICpuZ0lmPVwic2hvdWxkU2hvd0ZpbGVzTGlzdCgpXCJcbiAgW3N0eWxlLmRpc3BsYXldPVwiaXNPdmVyIHx8IGFsd2F5c1Nob3cgfHwgbG9hZGluZyA/ICdibG9jaycgOiAnbm9uZSdcIlxuICB0YWJpbmRleD1cIjBcIlxuPlxuICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwicC1hYnNvbHV0ZSBwLTQgZml0LXcgZml0LWggZC1mbGV4IGQtY29sIGotYy1jZW50ZXIgYS1pLWNlbnRlclwiPlxuICAgIDxwIGNsYXNzPVwibS1iLThcIj5cbiAgICAgIDxzdHJvbmc+XG4gICAgICAgIHt7IGxvYWRpbmdNZXNzYWdlIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3N0cm9uZz5cbiAgICA8L3A+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwcm9ncmVzcyBwcm9ncmVzcy1zdHJpcGVkIGFjdGl2ZSBtLTBcIlxuICAgICAgKm5nSWY9XCJwcm9ncmVzcyAhPT0gLTFcIlxuICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDgwJVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInByb2dyZXNzICsgJyUnXCJcbiAgICAgICAgY2xhc3M9XCJwcm9ncmVzcy1iYXJcIlxuICAgICAgICByb2xlPVwicHJvZ3Jlc3NiYXJcIlxuICAgICAgICBhcmlhLXZhbHVlbm93PVwiMFwiXG4gICAgICAgIGFyaWEtdmFsdWVtaW49XCIwXCJcbiAgICAgICAgYXJpYS12YWx1ZW1heD1cIjEwMFwiXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJwcm9ncmVzcyArICclJ1wiXG4gICAgICA+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNwaW5uZXIgcC1yZWxhdGl2ZSBtLTBcIiAqbmdJZj1cInByb2dyZXNzID09PSAtMVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJlY3QxXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicmVjdDJcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZWN0M1wiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJlY3Q0XCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicmVjdDVcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCIhbG9hZGluZ1wiIGNsYXNzPVwiZmlsZS1wbGFjZWhvbGRlciBwLTRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IHAtNFwiPlxuICAgICAgPGkgYzh5SWNvbj1cImZpbGUtb1wiIGNsYXNzPVwibS1yLThcIj48L2k+XG4gICAgICA8c3BhbiB0aXRsZT1cInt7IGZpbGVzTmFtZVN0cmluZyB9fVwiIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICB7eyBmaWxlc05hbWVTdHJpbmcgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdGl0bGU9XCJ7eyAnUmVtb3ZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJ7eyAnUmVtb3ZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tZG90IGJ0bi1kb3QtLWRhbmdlciBzaG93T25Ib3ZlciBtLWwtYXV0b1wiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJtaW51cy1jaXJjbGVcIiAoY2xpY2spPVwib25EZWxldGUoKVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGxhYmVsIGZvcj1cImZpbGVcIiBjbGFzcz1cInNyLW9ubHlcIj57eyAnU2VsZWN0IGZpbGUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbjxpbnB1dFxuICAjcGlja2VyXG4gICpuZ0lmPVwiY2xpY2tUb09wZW5cIlxuICAoY2hhbmdlKT1cIm9uUGljaygkZXZlbnQpXCJcbiAgKGNsaWNrKT1cInBpY2tlci5mb2N1cygpXCJcbiAgKGJsdXIpPVwib25Ub3VjaGVkKClcIlxuICBbYWNjZXB0XT1cImFjY2VwdGVkRXh0c1wiXG4gIFttdWx0aXBsZV09XCJtYXhBbGxvd2VkRmlsZXMgPiAxXCJcbiAgdHlwZT1cImZpbGVcIlxuICBjbGFzcz1cImhpZGRlblwiXG4gIGlkPVwiZmlsZVwiXG4vPlxuPGRpdiAjYXJlYSBbaGlkZGVuXT1cImlzT3ZlciB8fCBsb2FkaW5nXCIgKGRyYWdvdmVyKT1cInRvZ2dsZSgpXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
@@ -1,5 +1,5 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef, Injector } from '@angular/core';
2
- import { DynamicComponentErrorStrategy } from './dynamic-component.model';
2
+ import { DynamicComponentErrorStrategy, isLazyDynamicComponents, isEagerDynamicComponents } from './dynamic-component.model';
3
3
  import { DynamicComponentService } from './dynamic-component.service';
4
4
  import { isObservable, of, Subject } from 'rxjs';
5
5
  import { takeUntil } from 'rxjs/operators';
@@ -103,7 +103,7 @@ export class DynamicComponentComponent {
103
103
  return;
104
104
  }
105
105
  }
106
- this.loadComponent(cmp, errors);
106
+ await this.loadComponent(cmp, errors);
107
107
  const ngOnChanges = this.componentRef?.instance?.ngOnChanges;
108
108
  if (ngOnChanges) {
109
109
  ngOnChanges.call(this.componentRef.instance, changes);
@@ -113,10 +113,10 @@ export class DynamicComponentComponent {
113
113
  this.destroy$.next();
114
114
  this.destroy$.complete();
115
115
  }
116
- loadComponent(dynamicComponent, errors = []) {
116
+ async loadComponent(dynamicComponent, errors = []) {
117
117
  try {
118
118
  this.error = undefined;
119
- const componentType = this.mode === 'component' ? dynamicComponent.component : dynamicComponent.configComponent;
119
+ const componentType = await this.getComponentType(dynamicComponent);
120
120
  this.host.clear();
121
121
  this.componentRef = this.host.createComponent(componentType, {
122
122
  environmentInjector: (dynamicComponent.injector || this.injector)
@@ -131,6 +131,22 @@ export class DynamicComponentComponent {
131
131
  console.warn(ex);
132
132
  }
133
133
  }
134
+ async getComponentType(dynamicComponent) {
135
+ if (isLazyDynamicComponents(dynamicComponent)) {
136
+ const componentPromiseFunction = this.mode === 'component'
137
+ ? dynamicComponent.loadComponent
138
+ : dynamicComponent.loadConfigComponent;
139
+ if (!componentPromiseFunction) {
140
+ return;
141
+ }
142
+ return await componentPromiseFunction();
143
+ }
144
+ else if (isEagerDynamicComponents(dynamicComponent)) {
145
+ return this.mode === 'component'
146
+ ? dynamicComponent.component
147
+ : dynamicComponent.configComponent;
148
+ }
149
+ }
134
150
  subscribeForOverlayChange() {
135
151
  this.componentInstance.alerts.anyAlertExists$
136
152
  .pipe(takeUntil(this.destroy$))
@@ -172,4 +188,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
172
188
  type: ViewChild,
173
189
  args: ['host', { read: ViewContainerRef, static: true }]
174
190
  }] } });
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9keW5hbWljLWNvbXBvbmVudC9keW5hbWljLWNvbXBvbmVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2R5bmFtaWMtY29tcG9uZW50L2R5bmFtaWMtY29tcG9uZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUVoQixRQUFRLEVBSVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLDZCQUE2QixFQUU5QixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7O0FBRXhFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBS0gsTUFBTSxPQUFPLHlCQUF5QjtJQStDcEM7O09BRUc7SUFDSCxZQUNVLHVCQUFnRCxFQUNoRCxRQUFrQjtRQURsQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELGFBQVEsR0FBUixRQUFRLENBQVU7UUExQzVCOzs7V0FHRztRQUNNLFNBQUksR0FBMkIsV0FB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QUFFO1lBQ3RCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pCO1FBQ0QsTUFBTSxJQUFJLEdBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUF5QixDQUFDLFlBQVksQ0FBQztRQUN2RSxJQUFJLElBQUksRUFBRTtZQUNSLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xFLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUN2QixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNqQjtZQUNELE9BQU8sWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFFLEVBQUUsQ0FBQyxNQUFNLENBQXlCLENBQUM7U0FDNUU7UUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQixDQUFDOztzSEFuSlUseUJBQXlCOzBHQUF6Qix5QkFBeUIsNlVBK0JULGdCQUFnQixnRUN4RjdDLDhvQ0FpQ0E7MkZEd0JhLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDRSx1QkFBdUI7cUlBUXhCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBSUcsTUFBTTtzQkFBZCxLQUFLO2dCQUtHLElBQUk7c0JBQVosS0FBSztnQkFJRyxhQUFhO3NCQUFyQixLQUFLO2dCQUtHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFJSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBSXNELElBQUk7c0JBQWhFLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIENvbXBvbmVudFJlZixcbiAgSW5qZWN0b3IsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uQ2hhbmdlcyxcbiAgRW52aXJvbm1lbnRJbmplY3RvclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIER5bmFtaWNDb21wb25lbnQsXG4gIER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uLFxuICBEeW5hbWljQ29tcG9uZW50RXJyb3JTdHJhdGVneSxcbiAgT25CZWZvcmVTYXZlXG59IGZyb20gJy4vZHluYW1pYy1jb21wb25lbnQubW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuL2R5bmFtaWMtY29tcG9uZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZmxhdHRlbiwgZ2V0LCBpc1VuZGVmaW5lZCwgc2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IER5bmFtaWNDb21wb25lbnRBbGVydEFnZ3JlZ2F0b3IgfSBmcm9tICcuL2R5bmFtaWMtY29tcG9uZW50LWFsZXJ0LWFnZ3JlZ2F0b3InO1xuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudEFsZXJ0IH0gZnJvbSAnLi9keW5hbWljLWNvbXBvbmVudC1hbGVydC5tb2RlbCc7XG5cbi8qKlxuICogQzh5IGR5bmFtaWMgY29tcG9uZW50LlxuICogIyMgRXhhbXBsZTpcbiAqXG4gKiByZWdpc3RlciBjb21wb25lbnQgaW4gSE9PSyBpbiBtb2R1bGU6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgaW1wb3J0IHsgaG9va0NvbXBvbmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuICpcbiAqIEBOZ01vZHVsZSh7XG4gKiAgLi4uLFxuICogIHByb3ZpZGVyczogW1xuICogICAgaG9va0NvbXBvbmVudCh7XG4gKiAgICAgIGlkOiAndGVzdC1jb21wb25lbnQnLFxuICogICAgICBsYWJlbDogJ015IHRlc3QgY29tcG9uZW50JyxcbiAqICAgICAgZGVzY3JpcHRpb246ICd0aGlzIGlzIHRlc3QgY29tcG9uZW50JyxcbiAqICAgICAgY29tcG9uZW50OiBUZXN0Q29tcG9uZW50XG4gKiAgICB9KVxuICogIC4uLlxuICogIF1cbiAqXG4gKiBgYGBcbiAqIFNob3dpbmcgZHluYW1pYyBjb21wb25lbnQ6XG4gKiBgYGBodG1sXG4gKiA8Yzh5LWR5bmFtaWMtY29tcG9uZW50IFtjb21wb25lbnRJZF09XCIndGVzdC1jb21wb25lbnQnXCIgW2NvbmZpZ109XCJjb25maWdcIj48L2M4eS1keW5hbWljLWNvbXBvbmVudD5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZHluYW1pYy1jb21wb25lbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1jb21wb25lbnQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNDb21wb25lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByZWdpc3RlcmVkIGNvbXBvbmVudC4gSXQgbmVlZHMgdG8gYmUgYSBjb21wb25lbnQgdGhhdCBpcyBob29rZWRcbiAgICogd2l0aCB0aGUgSE9PS19DT01QT05FTlRTIGV4dGVuc2lvbiBob29rLlxuICAgKi9cbiAgQElucHV0KCkgY29tcG9uZW50SWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIHRvIHBhc3MuXG4gICAqL1xuICBASW5wdXQoKSBjb25maWc6IGFueTtcbiAgLyoqXG4gICAqIER5bmFtaWNDb21wb25lbnRzIGNhbiBoYXZlIHR3byBtb2RlcywgYW4gZWRpdCAoY29uZmlnKSBhbmQgYW4gdmlldyAoY29tcG9uZW50KSBtb2RlLlxuICAgKiBCeSBkZWZhdWx0IGl0IGlzIHNob3duIGluIHRoZSBjb21wb25lbnQgbW9kZS5cbiAgICovXG4gIEBJbnB1dCgpIG1vZGU6ICdjb25maWcnIHwgJ2NvbXBvbmVudCcgPSAnY29tcG9uZW50JztcbiAgLyoqXG4gICAqIERpc2FibGUgdGhpcyB0byBoaWRlIHRoZSBlcnJvciB0aGF0IGlzIHNob3duIGlmIHRoZSBjb21wb25lbnQgd2FzIG5vdCBmb3VuZC5cbiAgICovXG4gIEBJbnB1dCgpIG5vdEZvdW5kRXJyb3IgPSB0cnVlO1xuICAvKipcbiAgICogSWYgc2V0IHRvIHRydWUsIGl0IHdpbGwgZXhlY3V0ZSB0aGUgY29tcG9uZW50cyByZXNvbHZlcnMgYmVmb3JlIGluaXRpYWxpemluZyB0aGUgY29tcG9uZW50LlxuICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICovXG4gIEBJbnB1dCgpIGV4ZWN1dGVSZXNvbHZlcnMgPSBmYWxzZTtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBzZXQgYWRkaXRpb25hbCBjbGFzc2VzIGZvciB3aWRnZXQgc3R5bGluZy5cbiAgICovXG4gIEBPdXRwdXQoKSB1cGRhdGVXaWRnZXRDbGFzc2VzID0gbmV3IEV2ZW50RW1pdHRlcjx7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfT4oKTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2hvc3QnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KSBob3N0OiBWaWV3Q29udGFpbmVyUmVmO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZXJyb3I6IGFueTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGV4cGFuZEVycm9yRGV0YWlscyA9IGZhbHNlO1xuICBjb21wb25lbnRJbnN0YW5jZTogRHluYW1pY0NvbXBvbmVudDtcbiAgZXJyb3JTdHJhdGVneTogRHluYW1pY0NvbXBvbmVudEVycm9yU3RyYXRlZ3k7XG4gIGR5bmFtaWNDb21wb25lbnRFcnJvclN0cmF0ZWd5OiB0eXBlb2YgRHluYW1pY0NvbXBvbmVudEVycm9yU3RyYXRlZ3kgPVxuICAgIER5bmFtaWNDb21wb25lbnRFcnJvclN0cmF0ZWd5O1xuICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxDb21wb25lbnQ+O1xuXG4gIC8qKlxuICAgKiBAaWdub3JlIG9ubHkgRElcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZHluYW1pY0NvbXBvbmVudFNlcnZpY2U6IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yXG4gICkge31cblxuICAvKipcbiAgICogQ2FsbHMgdGhlIGR5bmFtaWMgY29tcG9uZW50IGxpZmUgY3ljbGUgaG9vay4gQ3VycmVudGx5IG9ubHlcbiAgICogc3VwcG9ydGluZyBvbkJlZm9yZVNhdmUsIGEgaG9vayB3aGljaCBpcyBjYWxsZWQgYmVmb3JlIGEgY29uZmlnIGNvbXBvbmVudFxuICAgKiBpcyBzYXZlZC5cbiAgICovXG4gIGNhbGxMaWZlQ3ljbGVIb29rcygpIHtcbiAgICByZXR1cm4gdGhpcy5jYWxsT25CZWZvcmVTYXZlSG9vaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCBjbXAgPSBhd2FpdCB0aGlzLmR5bmFtaWNDb21wb25lbnRTZXJ2aWNlLmdldEJ5SWQodGhpcy5jb21wb25lbnRJZCk7XG4gICAgbGV0IGVycm9ycyA9IG5ldyBBcnJheTxEeW5hbWljQ29tcG9uZW50QWxlcnQ+KCk7XG4gICAgaWYgKGNtcCkge1xuICAgICAgdGhpcy5lcnJvclN0cmF0ZWd5ID0gY21wLmVycm9yU3RyYXRlZ3kgfHwgRHluYW1pY0NvbXBvbmVudEVycm9yU3RyYXRlZ3kuQ1VTVE9NO1xuICAgICAgaWYgKHRoaXMuZXhlY3V0ZVJlc29sdmVycykge1xuICAgICAgICBjb25zdCBbcmVzb2x2ZWRDb25maWddID0gYXdhaXQgdGhpcy5keW5hbWljQ29tcG9uZW50U2VydmljZS5leGVjdXRlUmVzb2x2ZXJzKFtcbiAgICAgICAgICB7IGNvbXBvbmVudElkOiB0aGlzLmNvbXBvbmVudElkLCBjb25maWc6IHRoaXMuY29uZmlnIH1cbiAgICAgICAgXSk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHJlc29sdmVkQ29uZmlnKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHNldCh0aGlzLmNvbmZpZywga2V5LCB2YWx1ZSkpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXNvbHZlZFZhbHVlc09mQ29uZmlndXJhdGlvbjogQXJyYXk8RHluYW1pY0NvbXBvbmVudEFsZXJ0IHwgRHluYW1pY0NvbXBvbmVudEFsZXJ0W10+ID1cbiAgICAgICAgY21wLnJlc29sdmVcbiAgICAgICAgICA/IE9iamVjdC5rZXlzKGNtcC5yZXNvbHZlKS5tYXAocmVzb2x2ZWRLZXkgPT4gZ2V0KHRoaXMuY29uZmlnLCByZXNvbHZlZEtleSkpXG4gICAgICAgICAgOiBbXTtcbiAgICAgIGNvbnN0IGZsYXR0ZW5lZFJlc29sdmVkVmFsdWVzT2ZDb25maWd1cmF0aW9uID0gZmxhdHRlbihyZXNvbHZlZFZhbHVlc09mQ29uZmlndXJhdGlvbik7XG4gICAgICBlcnJvcnMgPSBmbGF0dGVuZWRSZXNvbHZlZFZhbHVlc09mQ29uZmlndXJhdGlvbi5maWx0ZXIoXG4gICAgICAgIHBvdGVudGlhbEVycm9yID0+IHBvdGVudGlhbEVycm9yICYmIHBvdGVudGlhbEVycm9yIGluc3RhbmNlb2YgRHluYW1pY0NvbXBvbmVudEFsZXJ0XG4gICAgICApO1xuICAgICAgaWYgKGVycm9ycy5sZW5ndGggJiYgY21wLmVycm9yU3RyYXRlZ3kgPT09IER5bmFtaWNDb21wb25lbnRFcnJvclN0cmF0ZWd5Lk5PVF9SRU5ERVIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubG9hZENvbXBvbmVudChjbXAsIGVycm9ycyk7XG4gICAgY29uc3QgbmdPbkNoYW5nZXMgPSAodGhpcy5jb21wb25lbnRSZWY/Lmluc3RhbmNlIGFzIE9uQ2hhbmdlcyk/Lm5nT25DaGFuZ2VzO1xuICAgIGlmIChuZ09uQ2hhbmdlcykge1xuICAgICAgbmdPbkNoYW5nZXMuY2FsbCh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSwgY2hhbmdlcyk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkQ29tcG9uZW50KFxuICAgIGR5bmFtaWNDb21wb25lbnQ6IER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uLFxuICAgIGVycm9yczogRHluYW1pY0NvbXBvbmVudEFsZXJ0W10gPSBbXVxuICApIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5lcnJvciA9IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGNvbXBvbmVudFR5cGUgPVxuICAgICAgICB0aGlzLm1vZGUgPT09ICdjb21wb25lbnQnID8gZHluYW1pY0NvbXBvbmVudC5jb21wb25lbnQgOiBkeW5hbWljQ29tcG9uZW50LmNvbmZpZ0NvbXBvbmVudDtcbiAgICAgIHRoaXMuaG9zdC5jbGVhcigpO1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmhvc3QuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFR5cGUsIHtcbiAgICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogKGR5bmFtaWNDb21wb25lbnQuaW5qZWN0b3IgfHwgdGhpcy5pbmplY3RvcikgYXMgRW52aXJvbm1lbnRJbmplY3RvclxuICAgICAgfSk7XG4gICAgICB0aGlzLmNvbXBvbmVudEluc3RhbmNlID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgRHluYW1pY0NvbXBvbmVudDtcbiAgICAgIHRoaXMuY29tcG9uZW50SW5zdGFuY2UuY29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgICB0aGlzLmNvbXBvbmVudEluc3RhbmNlLmFsZXJ0cyA9IG5ldyBEeW5hbWljQ29tcG9uZW50QWxlcnRBZ2dyZWdhdG9yKGVycm9ycyk7XG4gICAgICB0aGlzLnN1YnNjcmliZUZvck92ZXJsYXlDaGFuZ2UoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5lcnJvciA9IGV4O1xuICAgICAgY29uc29sZS53YXJuKGV4KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZUZvck92ZXJsYXlDaGFuZ2UoKSB7XG4gICAgdGhpcy5jb21wb25lbnRJbnN0YW5jZS5hbGVydHMuYW55QWxlcnRFeGlzdHMkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKGFueUFsZXJ0c0V4aXN0cyA9PlxuICAgICAgICB0aGlzLnVwZGF0ZVdpZGdldENsYXNzZXMuZW1pdCh7ICdhbGVydHMtb3ZlcmxheSc6IGFueUFsZXJ0c0V4aXN0cyB9KVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsbE9uQmVmb3JlU2F2ZUhvb2soKSB7XG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgIH1cbiAgICBjb25zdCBob29rID0gKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIE9uQmVmb3JlU2F2ZSkub25CZWZvcmVTYXZlO1xuICAgIGlmIChob29rKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBob29rLmNhbGwodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UsIHRoaXMuY29uZmlnKTtcbiAgICAgIGlmIChpc1VuZGVmaW5lZChyZXN1bHQpKSB7XG4gICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc09ic2VydmFibGUocmVzdWx0KSA/IHJlc3VsdCA6IChvZihyZXN1bHQpIGFzIE9ic2VydmFibGU8Ym9vbGVhbj4pO1xuICAgIH1cbiAgICByZXR1cm4gb2YodHJ1ZSk7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjaG9zdD48L25nLXRlbXBsYXRlPlxuXG48ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZyBtLThcIiByb2xlPVwiYWxlcnRcIiAqbmdJZj1cImVycm9yICYmIG5vdEZvdW5kRXJyb3JcIj5cbiAgPHN0cm9uZyBjbGFzcz1cIm1lc3NhZ2VcIj5cbiAgICB7e1xuICAgICAgJ1RoaXMgd2lkZ2V0IGNhbm5vdCBiZSByZW5kZXJlZCBiZWNhdXNlIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGRvZXMgbm90IHN1cHBvcnQgdGhlIGZvbGxvd2luZyBjb21wb25lbnQ6J1xuICAgICAgICB8IHRyYW5zbGF0ZVxuICAgIH19XG4gICAge3sgY29tcG9uZW50SWQgfX0uXG4gIDwvc3Ryb25nPlxuICA8cCBjbGFzcz1cInRleHQtbXV0ZWQgbS10LThcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1jbGVhblwiIChjbGljayk9XCJleHBhbmRFcnJvckRldGFpbHMgPSAhZXhwYW5kRXJyb3JEZXRhaWxzXCI+XG4gICAgICA8aSBjOHlJY29uPVwiY2hldnJvbi1kb3duXCI+PC9pPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhZXhwYW5kRXJyb3JEZXRhaWxzXCIgdHJhbnNsYXRlPlNob3cgZGV0YWlsczwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiZXhwYW5kRXJyb3JEZXRhaWxzXCIgdHJhbnNsYXRlPkhpZGUgZGV0YWlsczwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9wPlxuICA8ZGl2IFtjb2xsYXBzZV09XCIhZXhwYW5kRXJyb3JEZXRhaWxzXCIgW2lzQW5pbWF0ZWRdPVwidHJ1ZVwiPlxuICAgIDxwcmU+XG4gICAgICB7eyBlcnJvciB9fVxuICAgIDwvcHJlPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2XG4gIGNsYXNzPVwib3ZlcmxheS1jZW50ZXItdmVydGljYWxseSBkLWZsZXggZC1jb2wgYS1pLXN0cmV0Y2ggai1jLXN0YXJ0IHAtMTYgcC1yLTI0IHAtbC0yNFwiXG4gICpuZ0lmPVwiXG4gICAgZXJyb3JTdHJhdGVneSA9PT0gZHluYW1pY0NvbXBvbmVudEVycm9yU3RyYXRlZ3kuT1ZFUkxBWV9FUlJPUiAmJlxuICAgICAgY29tcG9uZW50SW5zdGFuY2U/LmFsZXJ0cz8uYW55QWxlcnRFeGlzdHMkIHwgYXN5bmNcbiAgXCJcbj5cbiAgPGM4eS1keW5hbWljLWNvbXBvbmVudC1hbGVydHMgW2FsZXJ0c109XCJjb21wb25lbnRJbnN0YW5jZS5hbGVydHNcIj48L2M4eS1keW5hbWljLWNvbXBvbmVudC1hbGVydHM+XG48L2Rpdj5cbiJdfQ==
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9keW5hbWljLWNvbXBvbmVudC9keW5hbWljLWNvbXBvbmVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2R5bmFtaWMtY29tcG9uZW50L2R5bmFtaWMtY29tcG9uZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUVoQixRQUFRLEVBS1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLDZCQUE2QixFQUM3Qix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBRXpCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzNELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7QUFFeEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFLSCxNQUFNLE9BQU8seUJBQXlCO0lBK0NwQzs7T0FFRztJQUNILFlBQ1UsdUJBQWdELEVBQ2hELFFBQWtCO1FBRGxCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQTFDNUI7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Qix5QkFBeUIsNlVBK0JULGdCQUFnQixnRUMzRjdDLDhvQ0FpQ0E7MkZEMkJhLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDRSx1QkFBdUI7cUlBUXhCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBSUcsTUFBTTtzQkFBZCxLQUFLO2dCQUtHLElBQUk7c0JBQVosS0FBSztnQkFJRyxhQUFhO3NCQUFyQixLQUFLO2dCQUtHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFJSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBSXNELElBQUk7c0JBQWhFLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIENvbXBvbmVudFJlZixcbiAgSW5qZWN0b3IsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uQ2hhbmdlcyxcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgVHlwZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIER5bmFtaWNDb21wb25lbnQsXG4gIER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uLFxuICBEeW5hbWljQ29tcG9uZW50RXJyb3JTdHJhdGVneSxcbiAgaXNMYXp5RHluYW1pY0NvbXBvbmVudHMsXG4gIGlzRWFnZXJEeW5hbWljQ29tcG9uZW50cyxcbiAgT25CZWZvcmVTYXZlXG59IGZyb20gJy4vZHluYW1pYy1jb21wb25lbnQubW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuL2R5bmFtaWMtY29tcG9uZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZmxhdHRlbiwgZ2V0LCBpc1VuZGVmaW5lZCwgc2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IER5bmFtaWNDb21wb25lbnRBbGVydEFnZ3JlZ2F0b3IgfSBmcm9tICcuL2R5bmFtaWMtY29tcG9uZW50LWFsZXJ0LWFnZ3JlZ2F0b3InO1xuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudEFsZXJ0IH0gZnJvbSAnLi9keW5hbWljLWNvbXBvbmVudC1hbGVydC5tb2RlbCc7XG5cbi8qKlxuICogQzh5IGR5bmFtaWMgY29tcG9uZW50LlxuICogIyMgRXhhbXBsZTpcbiAqXG4gKiByZWdpc3RlciBjb21wb25lbnQgaW4gSE9PSyBpbiBtb2R1bGU6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgaW1wb3J0IHsgaG9va0NvbXBvbmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuICpcbiAqIEBOZ01vZHVsZSh7XG4gKiAgLi4uLFxuICogIHByb3ZpZGVyczogW1xuICogICAgaG9va0NvbXBvbmVudCh7XG4gKiAgICAgIGlkOiAndGVzdC1jb21wb25lbnQnLFxuICogICAgICBsYWJlbDogJ015IHRlc3QgY29tcG9uZW50JyxcbiAqICAgICAgZGVzY3JpcHRpb246ICd0aGlzIGlzIHRlc3QgY29tcG9uZW50JyxcbiAqICAgICAgY29tcG9uZW50OiBUZXN0Q29tcG9uZW50XG4gKiAgICB9KVxuICogIC4uLlxuICogIF1cbiAqXG4gKiBgYGBcbiAqIFNob3dpbmcgZHluYW1pYyBjb21wb25lbnQ6XG4gKiBgYGBodG1sXG4gKiA8Yzh5LWR5bmFtaWMtY29tcG9uZW50IFtjb21wb25lbnRJZF09XCIndGVzdC1jb21wb25lbnQnXCIgW2NvbmZpZ109XCJjb25maWdcIj48L2M4eS1keW5hbWljLWNvbXBvbmVudD5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZHluYW1pYy1jb21wb25lbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1jb21wb25lbnQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNDb21wb25lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByZWdpc3RlcmVkIGNvbXBvbmVudC4gSXQgbmVlZHMgdG8gYmUgYSBjb21wb25lbnQgdGhhdCBpcyBob29rZWRcbiAgICogd2l0aCB0aGUgSE9PS19DT01QT05FTlRTIGV4dGVuc2lvbiBob29rLlxuICAgKi9cbiAgQElucHV0KCkgY29tcG9uZW50SWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIHRvIHBhc3MuXG4gICAqL1xuICBASW5wdXQoKSBjb25maWc6IGFueTtcbiAgLyoqXG4gICAqIER5bmFtaWNDb21wb25lbnRzIGNhbiBoYXZlIHR3byBtb2RlcywgYW4gZWRpdCAoY29uZmlnKSBhbmQgYW4gdmlldyAoY29tcG9uZW50KSBtb2RlLlxuICAgKiBCeSBkZWZhdWx0IGl0IGlzIHNob3duIGluIHRoZSBjb21wb25lbnQgbW9kZS5cbiAgICovXG4gIEBJbnB1dCgpIG1vZGU6ICdjb25maWcnIHwgJ2NvbXBvbmVudCcgPSAnY29tcG9uZW50JztcbiAgLyoqXG4gICAqIERpc2FibGUgdGhpcyB0byBoaWRlIHRoZSBlcnJvciB0aGF0IGlzIHNob3duIGlmIHRoZSBjb21wb25lbnQgd2FzIG5vdCBmb3VuZC5cbiAgICovXG4gIEBJbnB1dCgpIG5vdEZvdW5kRXJyb3IgPSB0cnVlO1xuICAvKipcbiAgICogSWYgc2V0IHRvIHRydWUsIGl0IHdpbGwgZXhlY3V0ZSB0aGUgY29tcG9uZW50cyByZXNvbHZlcnMgYmVmb3JlIGluaXRpYWxpemluZyB0aGUgY29tcG9uZW50LlxuICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICovXG4gIEBJbnB1dCgpIGV4ZWN1dGVSZXNvbHZlcnMgPSBmYWxzZTtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBzZXQgYWRkaXRpb25hbCBjbGFzc2VzIGZvciB3aWRnZXQgc3R5bGluZy5cbiAgICovXG4gIEBPdXRwdXQoKSB1cGRhdGVXaWRnZXRDbGFzc2VzID0gbmV3IEV2ZW50RW1pdHRlcjx7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfT4oKTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2hvc3QnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KSBob3N0OiBWaWV3Q29udGFpbmVyUmVmO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZXJyb3I6IGFueTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGV4cGFuZEVycm9yRGV0YWlscyA9IGZhbHNlO1xuICBjb21wb25lbnRJbnN0YW5jZTogRHluYW1pY0NvbXBvbmVudDtcbiAgZXJyb3JTdHJhdGVneTogRHluYW1pY0NvbXBvbmVudEVycm9yU3RyYXRlZ3k7XG4gIGR5bmFtaWNDb21wb25lbnRFcnJvclN0cmF0ZWd5OiB0eXBlb2YgRHluYW1pY0NvbXBvbmVudEVycm9yU3RyYXRlZ3kgPVxuICAgIER5bmFtaWNDb21wb25lbnRFcnJvclN0cmF0ZWd5O1xuICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxDb21wb25lbnQ+O1xuXG4gIC8qKlxuICAgKiBAaWdub3JlIG9ubHkgRElcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZHluYW1pY0NvbXBvbmVudFNlcnZpY2U6IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yXG4gICkge31cblxuICAvKipcbiAgICogQ2FsbHMgdGhlIGR5bmFtaWMgY29tcG9uZW50IGxpZmUgY3ljbGUgaG9vay4gQ3VycmVudGx5IG9ubHlcbiAgICogc3VwcG9ydGluZyBvbkJlZm9yZVNhdmUsIGEgaG9vayB3aGljaCBpcyBjYWxsZWQgYmVmb3JlIGEgY29uZmlnIGNvbXBvbmVudFxuICAgKiBpcyBzYXZlZC5cbiAgICovXG4gIGNhbGxMaWZlQ3ljbGVIb29rcygpIHtcbiAgICByZXR1cm4gdGhpcy5jYWxsT25CZWZvcmVTYXZlSG9vaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCBjbXAgPSBhd2FpdCB0aGlzLmR5bmFtaWNDb21wb25lbnRTZXJ2aWNlLmdldEJ5SWQodGhpcy5jb21wb25lbnRJZCk7XG4gICAgbGV0IGVycm9ycyA9IG5ldyBBcnJheTxEeW5hbWljQ29tcG9uZW50QWxlcnQ+KCk7XG4gICAgaWYgKGNtcCkge1xuICAgICAgdGhpcy5lcnJvclN0cmF0ZWd5ID0gY21wLmVycm9yU3RyYXRlZ3kgfHwgRHluYW1pY0NvbXBvbmVudEVycm9yU3RyYXRlZ3kuQ1VTVE9NO1xuICAgICAgaWYgKHRoaXMuZXhlY3V0ZVJlc29sdmVycykge1xuICAgICAgICBjb25zdCBbcmVzb2x2ZWRDb25maWddID0gYXdhaXQgdGhpcy5keW5hbWljQ29tcG9uZW50U2VydmljZS5leGVjdXRlUmVzb2x2ZXJzKFtcbiAgICAgICAgICB7IGNvbXBvbmVudElkOiB0aGlzLmNvbXBvbmVudElkLCBjb25maWc6IHRoaXMuY29uZmlnIH1cbiAgICAgICAgXSk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHJlc29sdmVkQ29uZmlnKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHNldCh0aGlzLmNvbmZpZywga2V5LCB2YWx1ZSkpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXNvbHZlZFZhbHVlc09mQ29uZmlndXJhdGlvbjogQXJyYXk8RHluYW1pY0NvbXBvbmVudEFsZXJ0IHwgRHluYW1pY0NvbXBvbmVudEFsZXJ0W10+ID1cbiAgICAgICAgY21wLnJlc29sdmVcbiAgICAgICAgICA/IE9iamVjdC5rZXlzKGNtcC5yZXNvbHZlKS5tYXAocmVzb2x2ZWRLZXkgPT4gZ2V0KHRoaXMuY29uZmlnLCByZXNvbHZlZEtleSkpXG4gICAgICAgICAgOiBbXTtcbiAgICAgIGNvbnN0IGZsYXR0ZW5lZFJlc29sdmVkVmFsdWVzT2ZDb25maWd1cmF0aW9uID0gZmxhdHRlbihyZXNvbHZlZFZhbHVlc09mQ29uZmlndXJhdGlvbik7XG4gICAgICBlcnJvcnMgPSBmbGF0dGVuZWRSZXNvbHZlZFZhbHVlc09mQ29uZmlndXJhdGlvbi5maWx0ZXIoXG4gICAgICAgIHBvdGVudGlhbEVycm9yID0+IHBvdGVudGlhbEVycm9yICYmIHBvdGVudGlhbEVycm9yIGluc3RhbmNlb2YgRHluYW1pY0NvbXBvbmVudEFsZXJ0XG4gICAgICApO1xuICAgICAgaWYgKGVycm9ycy5sZW5ndGggJiYgY21wLmVycm9yU3RyYXRlZ3kgPT09IER5bmFtaWNDb21wb25lbnRFcnJvclN0cmF0ZWd5Lk5PVF9SRU5ERVIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGF3YWl0IHRoaXMubG9hZENvbXBvbmVudChjbXAsIGVycm9ycyk7XG4gICAgY29uc3QgbmdPbkNoYW5nZXMgPSAodGhpcy5jb21wb25lbnRSZWY/Lmluc3RhbmNlIGFzIE9uQ2hhbmdlcyk/Lm5nT25DaGFuZ2VzO1xuICAgIGlmIChuZ09uQ2hhbmdlcykge1xuICAgICAgbmdPbkNoYW5nZXMuY2FsbCh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSwgY2hhbmdlcyk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkQ29tcG9uZW50KFxuICAgIGR5bmFtaWNDb21wb25lbnQ6IER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uLFxuICAgIGVycm9yczogRHluYW1pY0NvbXBvbmVudEFsZXJ0W10gPSBbXVxuICApIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5lcnJvciA9IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGNvbXBvbmVudFR5cGUgPSBhd2FpdCB0aGlzLmdldENvbXBvbmVudFR5cGUoZHluYW1pY0NvbXBvbmVudCk7XG5cbiAgICAgIHRoaXMuaG9zdC5jbGVhcigpO1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmhvc3QuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFR5cGUsIHtcbiAgICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogKGR5bmFtaWNDb21wb25lbnQuaW5qZWN0b3IgfHwgdGhpcy5pbmplY3RvcikgYXMgRW52aXJvbm1lbnRJbmplY3RvclxuICAgICAgfSk7XG4gICAgICB0aGlzLmNvbXBvbmVudEluc3RhbmNlID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgRHluYW1pY0NvbXBvbmVudDtcbiAgICAgIHRoaXMuY29tcG9uZW50SW5zdGFuY2UuY29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgICB0aGlzLmNvbXBvbmVudEluc3RhbmNlLmFsZXJ0cyA9IG5ldyBEeW5hbWljQ29tcG9uZW50QWxlcnRBZ2dyZWdhdG9yKGVycm9ycyk7XG4gICAgICB0aGlzLnN1YnNjcmliZUZvck92ZXJsYXlDaGFuZ2UoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5lcnJvciA9IGV4O1xuICAgICAgY29uc29sZS53YXJuKGV4KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldENvbXBvbmVudFR5cGUoZHluYW1pY0NvbXBvbmVudDogRHluYW1pY0NvbXBvbmVudERlZmluaXRpb24pOiBQcm9taXNlPFR5cGU8YW55Pj4ge1xuICAgIGlmIChpc0xhenlEeW5hbWljQ29tcG9uZW50cyhkeW5hbWljQ29tcG9uZW50KSkge1xuICAgICAgY29uc3QgY29tcG9uZW50UHJvbWlzZUZ1bmN0aW9uID1cbiAgICAgICAgdGhpcy5tb2RlID09PSAnY29tcG9uZW50J1xuICAgICAgICAgID8gZHluYW1pY0NvbXBvbmVudC5sb2FkQ29tcG9uZW50XG4gICAgICAgICAgOiBkeW5hbWljQ29tcG9uZW50LmxvYWRDb25maWdDb21wb25lbnQ7XG4gICAgICBpZiAoIWNvbXBvbmVudFByb21pc2VGdW5jdGlvbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXR1cm4gYXdhaXQgY29tcG9uZW50UHJvbWlzZUZ1bmN0aW9uKCk7XG4gICAgfSBlbHNlIGlmIChpc0VhZ2VyRHluYW1pY0NvbXBvbmVudHMoZHluYW1pY0NvbXBvbmVudCkpIHtcbiAgICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdjb21wb25lbnQnXG4gICAgICAgID8gZHluYW1pY0NvbXBvbmVudC5jb21wb25lbnRcbiAgICAgICAgOiBkeW5hbWljQ29tcG9uZW50LmNvbmZpZ0NvbXBvbmVudDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZUZvck92ZXJsYXlDaGFuZ2UoKSB7XG4gICAgdGhpcy5jb21wb25lbnRJbnN0YW5jZS5hbGVydHMuYW55QWxlcnRFeGlzdHMkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKGFueUFsZXJ0c0V4aXN0cyA9PlxuICAgICAgICB0aGlzLnVwZGF0ZVdpZGdldENsYXNzZXMuZW1pdCh7ICdhbGVydHMtb3ZlcmxheSc6IGFueUFsZXJ0c0V4aXN0cyB9KVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsbE9uQmVmb3JlU2F2ZUhvb2soKSB7XG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgIH1cbiAgICBjb25zdCBob29rID0gKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIE9uQmVmb3JlU2F2ZSkub25CZWZvcmVTYXZlO1xuICAgIGlmIChob29rKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBob29rLmNhbGwodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UsIHRoaXMuY29uZmlnKTtcbiAgICAgIGlmIChpc1VuZGVmaW5lZChyZXN1bHQpKSB7XG4gICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc09ic2VydmFibGUocmVzdWx0KSA/IHJlc3VsdCA6IChvZihyZXN1bHQpIGFzIE9ic2VydmFibGU8Ym9vbGVhbj4pO1xuICAgIH1cbiAgICByZXR1cm4gb2YodHJ1ZSk7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjaG9zdD48L25nLXRlbXBsYXRlPlxuXG48ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZyBtLThcIiByb2xlPVwiYWxlcnRcIiAqbmdJZj1cImVycm9yICYmIG5vdEZvdW5kRXJyb3JcIj5cbiAgPHN0cm9uZyBjbGFzcz1cIm1lc3NhZ2VcIj5cbiAgICB7e1xuICAgICAgJ1RoaXMgd2lkZ2V0IGNhbm5vdCBiZSByZW5kZXJlZCBiZWNhdXNlIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGRvZXMgbm90IHN1cHBvcnQgdGhlIGZvbGxvd2luZyBjb21wb25lbnQ6J1xuICAgICAgICB8IHRyYW5zbGF0ZVxuICAgIH19XG4gICAge3sgY29tcG9uZW50SWQgfX0uXG4gIDwvc3Ryb25nPlxuICA8cCBjbGFzcz1cInRleHQtbXV0ZWQgbS10LThcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1jbGVhblwiIChjbGljayk9XCJleHBhbmRFcnJvckRldGFpbHMgPSAhZXhwYW5kRXJyb3JEZXRhaWxzXCI+XG4gICAgICA8aSBjOHlJY29uPVwiY2hldnJvbi1kb3duXCI+PC9pPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhZXhwYW5kRXJyb3JEZXRhaWxzXCIgdHJhbnNsYXRlPlNob3cgZGV0YWlsczwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiZXhwYW5kRXJyb3JEZXRhaWxzXCIgdHJhbnNsYXRlPkhpZGUgZGV0YWlsczwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9wPlxuICA8ZGl2IFtjb2xsYXBzZV09XCIhZXhwYW5kRXJyb3JEZXRhaWxzXCIgW2lzQW5pbWF0ZWRdPVwidHJ1ZVwiPlxuICAgIDxwcmU+XG4gICAgICB7eyBlcnJvciB9fVxuICAgIDwvcHJlPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2XG4gIGNsYXNzPVwib3ZlcmxheS1jZW50ZXItdmVydGljYWxseSBkLWZsZXggZC1jb2wgYS1pLXN0cmV0Y2ggai1jLXN0YXJ0IHAtMTYgcC1yLTI0IHAtbC0yNFwiXG4gICpuZ0lmPVwiXG4gICAgZXJyb3JTdHJhdGVneSA9PT0gZHluYW1pY0NvbXBvbmVudEVycm9yU3RyYXRlZ3kuT1ZFUkxBWV9FUlJPUiAmJlxuICAgICAgY29tcG9uZW50SW5zdGFuY2U/LmFsZXJ0cz8uYW55QWxlcnRFeGlzdHMkIHwgYXN5bmNcbiAgXCJcbj5cbiAgPGM4eS1keW5hbWljLWNvbXBvbmVudC1hbGVydHMgW2FsZXJ0c109XCJjb21wb25lbnRJbnN0YW5jZS5hbGVydHNcIj48L2M4eS1keW5hbWljLWNvbXBvbmVudC1hbGVydHM+XG48L2Rpdj5cbiJdfQ==
@@ -37,6 +37,12 @@ export const HOOK_COMPONENTS = new InjectionToken('HOOK_COMPONENTS');
37
37
  export function hookComponent(components, options) {
38
38
  return hookGeneric(components, HOOK_COMPONENTS, options);
39
39
  }
40
+ export function isLazyDynamicComponents(componentDefinition) {
41
+ return !!componentDefinition?.loadComponent;
42
+ }
43
+ export function isEagerDynamicComponents(componentDefinition) {
44
+ return !!componentDefinition?.component;
45
+ }
40
46
  export var DynamicComponentErrorStrategy;
41
47
  (function (DynamicComponentErrorStrategy) {
42
48
  /**
@@ -52,4 +58,4 @@ export var DynamicComponentErrorStrategy;
52
58
  */
53
59
  DynamicComponentErrorStrategy["CUSTOM"] = "CUSTOM";
54
60
  })(DynamicComponentErrorStrategy || (DynamicComponentErrorStrategy = {}));
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2R5bmFtaWMtY29tcG9uZW50L2R5bmFtaWMtY29tcG9uZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBRS9ELE9BQU8sRUFHTCxXQUFXLEVBRVosTUFBTSwyQkFBMkIsQ0FBQztBQUluQzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsSUFBSSxjQUFjLENBQzdELCtCQUErQixDQUNoQyxDQUFDO0FBeUJGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FBOEIsaUJBQWlCLENBQUMsQ0FBQztBQUVsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQzNCLFVBQXVELEVBQ3ZELE9BQThCO0lBRTlCLE9BQU8sV0FBVyxDQUE2QixVQUFVLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZGLENBQUM7QUFtRUQsTUFBTSxDQUFOLElBQVksNkJBYVg7QUFiRCxXQUFZLDZCQUE2QjtJQUN2Qzs7T0FFRztJQUNILDBEQUF5QixDQUFBO0lBQ3pCOztPQUVHO0lBQ0gsZ0VBQStCLENBQUE7SUFDL0I7O09BRUc7SUFDSCxrREFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBYlcsNkJBQTZCLEtBQTdCLDZCQUE2QixRQWF4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBJbmplY3RvciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgRXh0ZW5zaW9uRmFjdG9yeSxcbiAgR2VuZXJpY0hvb2tUeXBlLFxuICBob29rR2VuZXJpYyxcbiAgSG9va09wdGlvbnNcbn0gZnJvbSAnLi4vY29tbW9uL2V4dGVuc2lvbi1ob29rcyc7XG5pbXBvcnQgeyBEeW5hbWljQ29tcG9uZW50QWxlcnRBZ2dyZWdhdG9yIH0gZnJvbSAnLi9keW5hbWljLWNvbXBvbmVudC1hbGVydC1hZ2dyZWdhdG9yJztcbmltcG9ydCB7IER5bmFtaWNEZXRhaWxzUmVzb2x2ZXIgfSBmcm9tICcuL2R5bmFtaWMtZGV0YWlscy1yZXNvbHZlcic7XG5cbi8qKlxuICogVGltZSB0aGUgaG9vayB3YWl0cyB1bnRpbCBpdCBlbWl0cyBhbiB1bmRlZmluZWQgdmFsdWUuXG4gKiBVc2VkIGZvciBub3QgZGVmaW5lZCB3aWRnZXRzIC0+IGJ5IGRlZmF1bHQgYWZ0ZXIgNXMgd2VcbiAqIHNob3cgYW4gZXJyb3IgdGhhdCB0aGUgd2lkZ2V0IGNvdWxkIG5vdCBiZSBsb2FkZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBSRVNPTFZJTkdfQ09NUE9ORU5UX1dBSVRfVElNRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxudW1iZXI+KFxuICAnUkVTT0xWSU5HX0NPTVBPTkVOVF9XQUlUX1RJTUUnXG4pO1xuXG4vKipcbiAqIEFuIGV4dGVuc2lvbiBIT09LIGNhbiB1c2UgZWl0aGVyIGEgcHVyZSB2YWx1ZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqICB7IHByb3ZpZGU6IEhPT0tfWCwgdXNlVmFsdWU6IHsgLi4uaG9va1ZhbHVlIH0sIG11bHRpOiB0cnVlIH1cbiAqIGBgYFxuICpcbiAqIE9yIGFuIGFycmF5IHRvIGRpcmVjdGx5IHJlZ2lzdGVyIG11bHRpcGxlOlxuICogYGBgdHlwZXNjcmlwdFxuICogIHsgcHJvdmlkZTogSE9PS19YLCB1c2VWYWx1ZTogW3sgLi4uaG9va1ZhbHVlcyB9XSwgbXVsdGk6IHRydWUgfVxuICogYGBgXG4gKlxuICogT3IgYW4gRXh0ZW5zaW9uRmFjdG9yeSB3aGljaCBhbGxvd3MgdG8gZGVmaW5lIGEgZ2V0KCkgZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb25cbiAqIGdldHMgY2FsbGVkIG9uIGVhY2ggbmF2aWdhdGlvbiB3aXRoIHRoZSBjdXJyZW50IHJvdXRlIGFuZCBjYW4gcmV0dXJuIHZhbHVlc1xuICogYXN5bmMgKG9ic2VydmFibGUgb3IgcHJvbWlzZSkuXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgeyBwcm92aWRlOiBIT09LX1gsIHVzZUZhY3Rvcnk6IHsgZ2V0OiAocm91dGUpID0+IGRvU29tZXRoaW5nQXN5bmMocm91dGUpIH0sIG11bHRpOiB0cnVlIH1cbiAqIGBgYFxuICovXG5leHBvcnQgdHlwZSBEeW5hbWljQ29tcG9uZW50RXh0ZW5zaW9uID1cbiAgfCBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvblxuICB8IER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uW11cbiAgfCBFeHRlbnNpb25GYWN0b3J5PER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uPjtcblxuLyoqXG4gKiBBIGhvb2sgdG8gYWRkIGR5bmFtaWMgY29tcG9uZW50cyB0byB0aGUgVUkgKGUuZy4gd2lkZ2V0cykuXG4gKiBDb25zaWRlciB1c2luZyB0aGUgYGhvb2tDb21wb25lbnRgIGZ1bmN0aW9uIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBIT09LX0NPTVBPTkVOVFMgPSBuZXcgSW5qZWN0aW9uVG9rZW48RHluYW1pY0NvbXBvbmVudEV4dGVuc2lvbltdPignSE9PS19DT01QT05FTlRTJyk7XG5cbi8qKlxuICogQSBob29rIHRvIGFkZCBkeW5hbWljIGNvbXBvbmVudHMgdG8gdGhlIFVJIChlLmcuIHdpZGdldHMpLlxuICpcbiAqIFlvdSBjYW4gZWl0aGVyIHByb3ZpZGUgYSBzaW5nbGUgYER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uYCBhcyBwYXJhbWV0ZXI6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgaG9va0NvbXBvbmVudCguLi4pXG4gKiBgYGBcbiAqXG4gKiBPciBhbiBhcnJheSB0byBkaXJlY3RseSByZWdpc3RlciBtdWx0aXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqICBob29rQ29tcG9uZW50KFsuLi5dKVxuICogYGBgXG4gKlxuICogT3IgeW91IHByb3ZpZGUgYW4gU2VydmljZSB0aGF0IGltcGxlbWVudHMgYEV4dGVuc2lvbkZhY3Rvcnk8RHluYW1pY0NvbXBvbmVudERlZmluaXRpb24+YFxuICogYGBgdHlwZXNjcmlwdFxuICogIGV4cG9ydCBjbGFzcyBNeUR5bmFtaWNDb21wb25lbnREZWZpbml0aW9uRmFjdG9yeSBpbXBsZW1lbnRzIEV4dGVuc2lvbkZhY3Rvcnk8RHluYW1pY0NvbXBvbmVudERlZmluaXRpb24+IHsuLi59XG4gKiAgLi4uXG4gKiAgaG9va0NvbXBvbmVudChNeUR5bmFtaWNDb21wb25lbnREZWZpbml0aW9uRmFjdG9yeSlcbiAqIGBgYFxuICogQSB0eXBlZCBhbHRlcm5hdGl2ZSB0byBgSE9PS19DT01QT05FTlRTYC5cbiAqIEBwYXJhbSBjb21wb25lbnRzIFRoZSBgRHluYW1pY0NvbXBvbmVudERlZmluaXRpb25gJ3Mgb3IgYEV4dGVuc2lvbkZhY3RvcnlgIHRvIGJlIHByb3ZpZGVkLlxuICogQHJldHVybnMgQW4gYFByb3ZpZGVyYCB0byBiZSBwcm92aWRlZCBpbiB5b3VyIG1vZHVsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhvb2tDb21wb25lbnQoXG4gIGNvbXBvbmVudHM6IEdlbmVyaWNIb29rVHlwZTxEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbj4sXG4gIG9wdGlvbnM/OiBQYXJ0aWFsPEhvb2tPcHRpb25zPlxuKSB7XG4gIHJldHVybiBob29rR2VuZXJpYzxEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbj4oY29tcG9uZW50cywgSE9PS19DT01QT05FTlRTLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBBIGR5bmFtaWMgY29tcG9uZW50IGNhbiBiZSBkZWZpbmVkIGluIGEgdGhlIEhPT0tfQ09NUE9ORU5UUyB0byBkaXNwbGF5IGFueSBraW5kXG4gKiBvZiBjb21wb25lbnQgZHluYW1pY2FsbHkganVzdCBieSByZWZlcmVuY2luZyBpdCdzIGlkLiBUaGUgbW9zdCBjb21tb24gdXNlIGNhc2UgaXMgb24gZGFzaGJvYXJkcyxcbiAqIHdoZXJlIHRoZSBgY29uZmlnQ29tcG9uZW50YCBpcyB1c2VkIHRvIGRlZmluZSB3aGF0IGlzIGRpc3BsYXllZCBvbiB0aGUgYGNvbXBvbmVudGBcbiAqIG9uIHRoZSBkYXNoYm9hcmQuXG4gKlxuICogVG8gdXNlIHRoZSBjb21wb25lbnQgeW91IGNhbiB1c2UgdGhlIGM4eS1keW5hbWljLWNvbXBvbmVudC5cbiAqXG4gKiBgYGBcbiAqICAgPGM4eS1keW5hbWljLWNvbXBvbmVudFxuICogICAgIGNvbXBvbmVudElkPVwiYW5ndWxhci53aWRnZXQuZGVtb1wiXG4gKiAgICAgW2NvbmZpZ109XCJ7IHRleHQ6ICdIZWxsbyB3b3JsZCcgfVwiXG4gKiAgICAgW21vZGVdPVwiZWRpdENvbXBvbmVudCA/ICdjb25maWcnIDogJ2NvbXBvbmVudCdcIlxuICogICA+PC9jOHktZHluYW1pYy1jb21wb25lbnQ+XG4gKiAgIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uIHtcbiAgLyoqXG4gICAqIFVuaXF1ZSBzZXJpYWxpemFibGUgaWRcbiAgICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHdoaWNoIGlzIHVzZWQgd2hlbiB0aGUgY29tcG9uZW50IHNob3VsZCBiZSBkaXNwbGF5ZWQgKGUuZy4gb24gYSBkYXNoYm9hcmQpXG4gICAqL1xuICBjb21wb25lbnQ6IFR5cGU8YW55PjtcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGNvbXBvbmVudCB1c2VkIHdoZW4gYSB3aWRnZXQgaXMgYWRkZWQgb3IgZWRpdGVkLlxuICAgKi9cbiAgY29uZmlnQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICAvKipcbiAgICogVGhlIGxhYmVsIHNob3duIGZvciB0aGlzIGR5bmFtaWMgY29tcG9uZW50IG9uIGFkZCB3aWRnZXRzXG4gICAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIHNob3duIG9uIGFkZCB3aWRnZXRcbiAgICovXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBZGQgYW55IHJhbmRvbSBkYXRhLCBzcGVjaWFsbHkgdG8gYW5ndWxhci5qcyBkYXNoYm9hcmRzLlxuICAgKiBTaG91bGQgYmUgc2VhcmlsemFibGVkIHRvIGFsbG93IHRvIHNhdmUgaXQgdG8gdGhlIEFQSS5cbiAgICovXG4gIGRhdGE/OiBhbnk7XG4gIC8qKlxuICAgKiBBbiB1cmwgdG8gYW4gcHJldmlldyBpbWFnZS5cbiAgICovXG4gIHByZXZpZXdJbWFnZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBpbmplY3RvciB0byB1c2UgdG8gaW5qZWN0IHRoaXMgY29tcG9uZW50LiBJZiB1c2VkIGluIGEgbW9kdWxlIGZlZGVyYXRpb25cbiAgICogcGx1Z2luLCB0aGUgaW5qZWN0b3Igb2YgdGhlIHBsdWdpbiBzaG91bGQgYmUgdXNlZC4gRGVmYXVsdHMgdG8gdGhlIHJvb3QgaW5qZWN0b3IuXG4gICAqL1xuICBpbmplY3Rvcj86IEluamVjdG9yO1xuICAvKipcbiAgICogQXR0cmlidXRlcyBvZiB0aGUgZHluYW1pYyBjb21wb25lbnRzIGNvbmZpZ3VyYXRpb24gdG8gYmUgcmVzb2x2ZWQuXG4gICAqL1xuICByZXNvbHZlPzogeyBba2V5OiBzdHJpbmddOiBUeXBlPER5bmFtaWNEZXRhaWxzUmVzb2x2ZXI+IH07XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGR5bmFtaWMgY29tcG9uZW50IG9yIHdpZGdldCBpdHNlbGYgc2hvdWxkIHJlbmRlciBhbGVydHMuXG4gICAqL1xuICBlcnJvclN0cmF0ZWd5PzogRHluYW1pY0NvbXBvbmVudEVycm9yU3RyYXRlZ3k7XG4gIC8qKlxuICAgKiBPcmRlcmluZyBvZiB0aGUgY29tcG9uZW50c1xuICAgKi9cbiAgcHJpb3JpdHk/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBlbnVtIER5bmFtaWNDb21wb25lbnRFcnJvclN0cmF0ZWd5IHtcbiAgLyoqXG4gICAqIFdpbGwgbm90IHJlbmRlci9pbml0aWFsaXplIHRoZSBXaWRnZXQgaW4gY2FzZSBhbiBlcnJvciB3YXMgZGV0ZWN0ZWQuXG4gICAqL1xuICBOT1RfUkVOREVSID0gJ05PVF9SRU5ERVInLFxuICAvKipcbiAgICogV2lsbCBhZGQgYW4gb3ZlcmxheSBvdmVyIHRoZSBXaWRnZXQsIGRpc3BsYXlpbmcgdGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBPVkVSTEFZX0VSUk9SID0gJ09WRVJMQVlfRVJST1InLFxuICAvKipcbiAgICogVGhlIHdpZGdldCBpbXBsZW1lbnRzIGVycm9yIGhhbmRsaW5nIG9uIGl0cyBvd24uXG4gICAqL1xuICBDVVNUT00gPSAnQ1VTVE9NJ1xufVxuXG4vKipcbiAqIFVzZSB0aGlzIGludGVyZmFjZSBvbiBhbnkgY29tcG9uZW50IHRvIGRlZmluZSB0aGUgaW50ZXJjaGFuZ2UgYmV0d2VlblxuICogY29uZmlnIGFuZCBkaXNwbGF5IGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIHdoaWNoIGlzIHNoYXJlZCBiZXR3ZWVuIGNvbmZpZ3VyYXRpb24gY29tcG9uZW50IGFuZCBkaXNwbGF5IGNvbXBvbmVudC5cbiAgICogU2hvdWxkIGJlIHNlYXJpbHphYmxlZCB0byBhbGxvdyB0byBzYXZlIGl0IHRvIHRoZSBBUEkuXG4gICAqL1xuICBjb25maWc6IGFueTtcbiAgLyoqXG4gICAqIEFsZXJ0cyByZWxhdGVkIHRvIHRoZSBkeW5hbWljIGNvbXBvbmVudC5cbiAgICogQ2FuIGVpdGhlciBiZSBzZXQgYnkgdGhlIGR5bmFtaWMgY29tcG9uZW50IGl0IHNlbGYgb3IgdmlhIGl0J3MgcmVzb2x2ZXJzLlxuICAgKi9cbiAgYWxlcnRzPzogRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvcjtcbiAgLyoqXG4gICAqIEEgcmVmZXJlbmNlIHRvIHRoZSBuZzFGb3JtIG9uIGFuZ3VsYXJqcyBkYXNoYm9hcmRzIHRvIGRpc2FibGUvZW5hYmxlIHRoZSBzYXZlIGJ1dHRvbi5cbiAgICogQGRlcHJlY2F0ZWQ6IFdpbGwgbm90IHdvcmsgb24gQW5ndWxhci1EYXNoYm9hcmRzICgxLjYuMS4wKS4gVXNlIGBDb250ZXh0U2VydmljZURhc2hib2FyZC5mb3JtRGlzYWJsZWRgIGluc3RlYWQuXG4gICAqL1xuICBuZzFGb3JtUmVmPzogYW55O1xufVxuXG4vKipcbiAqIEFuIGxpZmVjeWNsZSBob29rIHdoaWNoIGlzIGNhbGxlZCBiZWZvcmUgYW4gY29uZmlndXJhdGlvbiBpcyBzYXZlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPbkJlZm9yZVNhdmUge1xuICAvKipcbiAgICogQ2FsbGVkIGJlZm9yZSBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGlzIHNhdmVkLiBUaGUgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gbWFuaXB1bGF0ZSB0aGVcbiAgICogcGFzc2VkIGNvbmZpZyBvYmplY3Qgb3IgdG8gY2FuY2VsIHRoZSBzYXZpbmcgKHJldHVybiBmYWxzZSBvciBPYnNlcnZhYmxlPGJvb2xlYW4+KS5cbiAgICovXG4gIG9uQmVmb3JlU2F2ZShjb25maWc/OiBhbnkpOiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPiB8IE9ic2VydmFibGU8Ym9vbGVhbj47XG59XG4iXX0=
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2R5bmFtaWMtY29tcG9uZW50L2R5bmFtaWMtY29tcG9uZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBRS9ELE9BQU8sRUFHTCxXQUFXLEVBRVosTUFBTSwyQkFBMkIsQ0FBQztBQUluQzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsSUFBSSxjQUFjLENBQzdELCtCQUErQixDQUNoQyxDQUFDO0FBeUJGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FBOEIsaUJBQWlCLENBQUMsQ0FBQztBQUVsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQzNCLFVBQXVELEVBQ3ZELE9BQThCO0lBRTlCLE9BQU8sV0FBVyxDQUE2QixVQUFVLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZGLENBQUM7QUF5R0QsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxtQkFBc0M7SUFFdEMsT0FBTyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsYUFBYSxDQUFDO0FBQzlDLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQ3RDLG1CQUFzQztJQUV0QyxPQUFPLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxTQUFTLENBQUM7QUFDMUMsQ0FBQztBQUVELE1BQU0sQ0FBTixJQUFZLDZCQWFYO0FBYkQsV0FBWSw2QkFBNkI7SUFDdkM7O09BRUc7SUFDSCwwREFBeUIsQ0FBQTtJQUN6Qjs7T0FFRztJQUNILGdFQUErQixDQUFBO0lBQy9COztPQUVHO0lBQ0gsa0RBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQWJXLDZCQUE2QixLQUE3Qiw2QkFBNkIsUUFheEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEV4dGVuc2lvbkZhY3RvcnksXG4gIEdlbmVyaWNIb29rVHlwZSxcbiAgaG9va0dlbmVyaWMsXG4gIEhvb2tPcHRpb25zXG59IGZyb20gJy4uL2NvbW1vbi9leHRlbnNpb24taG9va3MnO1xuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvciB9IGZyb20gJy4vZHluYW1pYy1jb21wb25lbnQtYWxlcnQtYWdncmVnYXRvcic7XG5pbXBvcnQgeyBEeW5hbWljRGV0YWlsc1Jlc29sdmVyIH0gZnJvbSAnLi9keW5hbWljLWRldGFpbHMtcmVzb2x2ZXInO1xuXG4vKipcbiAqIFRpbWUgdGhlIGhvb2sgd2FpdHMgdW50aWwgaXQgZW1pdHMgYW4gdW5kZWZpbmVkIHZhbHVlLlxuICogVXNlZCBmb3Igbm90IGRlZmluZWQgd2lkZ2V0cyAtPiBieSBkZWZhdWx0IGFmdGVyIDVzIHdlXG4gKiBzaG93IGFuIGVycm9yIHRoYXQgdGhlIHdpZGdldCBjb3VsZCBub3QgYmUgbG9hZGVkLlxuICovXG5leHBvcnQgY29uc3QgUkVTT0xWSU5HX0NPTVBPTkVOVF9XQUlUX1RJTUUgPSBuZXcgSW5qZWN0aW9uVG9rZW48bnVtYmVyPihcbiAgJ1JFU09MVklOR19DT01QT05FTlRfV0FJVF9USU1FJ1xuKTtcblxuLyoqXG4gKiBBbiBleHRlbnNpb24gSE9PSyBjYW4gdXNlIGVpdGhlciBhIHB1cmUgdmFsdWU6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgeyBwcm92aWRlOiBIT09LX1gsIHVzZVZhbHVlOiB7IC4uLmhvb2tWYWx1ZSB9LCBtdWx0aTogdHJ1ZSB9XG4gKiBgYGBcbiAqXG4gKiBPciBhbiBhcnJheSB0byBkaXJlY3RseSByZWdpc3RlciBtdWx0aXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqICB7IHByb3ZpZGU6IEhPT0tfWCwgdXNlVmFsdWU6IFt7IC4uLmhvb2tWYWx1ZXMgfV0sIG11bHRpOiB0cnVlIH1cbiAqIGBgYFxuICpcbiAqIE9yIGFuIEV4dGVuc2lvbkZhY3Rvcnkgd2hpY2ggYWxsb3dzIHRvIGRlZmluZSBhIGdldCgpIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uXG4gKiBnZXRzIGNhbGxlZCBvbiBlYWNoIG5hdmlnYXRpb24gd2l0aCB0aGUgY3VycmVudCByb3V0ZSBhbmQgY2FuIHJldHVybiB2YWx1ZXNcbiAqIGFzeW5jIChvYnNlcnZhYmxlIG9yIHByb21pc2UpLlxuICogYGBgdHlwZXNjcmlwdFxuICogIHsgcHJvdmlkZTogSE9PS19YLCB1c2VGYWN0b3J5OiB7IGdldDogKHJvdXRlKSA9PiBkb1NvbWV0aGluZ0FzeW5jKHJvdXRlKSB9LCBtdWx0aTogdHJ1ZSB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgRHluYW1pY0NvbXBvbmVudEV4dGVuc2lvbiA9XG4gIHwgRHluYW1pY0NvbXBvbmVudERlZmluaXRpb25cbiAgfCBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbltdXG4gIHwgRXh0ZW5zaW9uRmFjdG9yeTxEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbj47XG5cbi8qKlxuICogQSBob29rIHRvIGFkZCBkeW5hbWljIGNvbXBvbmVudHMgdG8gdGhlIFVJIChlLmcuIHdpZGdldHMpLlxuICogQ29uc2lkZXIgdXNpbmcgdGhlIGBob29rQ29tcG9uZW50YCBmdW5jdGlvbiBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgSE9PS19DT01QT05FTlRTID0gbmV3IEluamVjdGlvblRva2VuPER5bmFtaWNDb21wb25lbnRFeHRlbnNpb25bXT4oJ0hPT0tfQ09NUE9ORU5UUycpO1xuXG4vKipcbiAqIEEgaG9vayB0byBhZGQgZHluYW1pYyBjb21wb25lbnRzIHRvIHRoZSBVSSAoZS5nLiB3aWRnZXRzKS5cbiAqXG4gKiBZb3UgY2FuIGVpdGhlciBwcm92aWRlIGEgc2luZ2xlIGBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbmAgYXMgcGFyYW1ldGVyOlxuICogYGBgdHlwZXNjcmlwdFxuICogIGhvb2tDb21wb25lbnQoLi4uKVxuICogYGBgXG4gKlxuICogT3IgYW4gYXJyYXkgdG8gZGlyZWN0bHkgcmVnaXN0ZXIgbXVsdGlwbGU6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgaG9va0NvbXBvbmVudChbLi4uXSlcbiAqIGBgYFxuICpcbiAqIE9yIHlvdSBwcm92aWRlIGFuIFNlcnZpY2UgdGhhdCBpbXBsZW1lbnRzIGBFeHRlbnNpb25GYWN0b3J5PER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uPmBcbiAqIGBgYHR5cGVzY3JpcHRcbiAqICBleHBvcnQgY2xhc3MgTXlEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbkZhY3RvcnkgaW1wbGVtZW50cyBFeHRlbnNpb25GYWN0b3J5PER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uPiB7Li4ufVxuICogIC4uLlxuICogIGhvb2tDb21wb25lbnQoTXlEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbkZhY3RvcnkpXG4gKiBgYGBcbiAqIEEgdHlwZWQgYWx0ZXJuYXRpdmUgdG8gYEhPT0tfQ09NUE9ORU5UU2AuXG4gKiBAcGFyYW0gY29tcG9uZW50cyBUaGUgYER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uYCdzIG9yIGBFeHRlbnNpb25GYWN0b3J5YCB0byBiZSBwcm92aWRlZC5cbiAqIEByZXR1cm5zIEFuIGBQcm92aWRlcmAgdG8gYmUgcHJvdmlkZWQgaW4geW91ciBtb2R1bGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBob29rQ29tcG9uZW50KFxuICBjb21wb25lbnRzOiBHZW5lcmljSG9va1R5cGU8RHluYW1pY0NvbXBvbmVudERlZmluaXRpb24+LFxuICBvcHRpb25zPzogUGFydGlhbDxIb29rT3B0aW9ucz5cbikge1xuICByZXR1cm4gaG9va0dlbmVyaWM8RHluYW1pY0NvbXBvbmVudERlZmluaXRpb24+KGNvbXBvbmVudHMsIEhPT0tfQ09NUE9ORU5UUywgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogQSBkeW5hbWljIGNvbXBvbmVudCBjYW4gYmUgZGVmaW5lZCBpbiBhIHRoZSBIT09LX0NPTVBPTkVOVFMgdG8gZGlzcGxheSBhbnkga2luZFxuICogb2YgY29tcG9uZW50IGR5bmFtaWNhbGx5IGp1c3QgYnkgcmVmZXJlbmNpbmcgaXQncyBpZC4gVGhlIG1vc3QgY29tbW9uIHVzZSBjYXNlIGlzIG9uIGRhc2hib2FyZHMsXG4gKiB3aGVyZSB0aGUgYGNvbmZpZ0NvbXBvbmVudGAgaXMgdXNlZCB0byBkZWZpbmUgd2hhdCBpcyBkaXNwbGF5ZWQgb24gdGhlIGBjb21wb25lbnRgXG4gKiBvbiB0aGUgZGFzaGJvYXJkLlxuICpcbiAqIFRvIHVzZSB0aGUgY29tcG9uZW50IHlvdSBjYW4gdXNlIHRoZSBjOHktZHluYW1pYy1jb21wb25lbnQuXG4gKlxuICogYGBgXG4gKiAgIDxjOHktZHluYW1pYy1jb21wb25lbnRcbiAqICAgICBjb21wb25lbnRJZD1cImFuZ3VsYXIud2lkZ2V0LmRlbW9cIlxuICogICAgIFtjb25maWddPVwieyB0ZXh0OiAnSGVsbG8gd29ybGQnIH1cIlxuICogICAgIFttb2RlXT1cImVkaXRDb21wb25lbnQgPyAnY29uZmlnJyA6ICdjb21wb25lbnQnXCJcbiAqICAgPjwvYzh5LWR5bmFtaWMtY29tcG9uZW50PlxuICogICBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgRHluYW1pY0NvbXBvbmVudERlZmluaXRpb24gPSBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbkJhc2UgJiBEeW5hbWljQ29tcG9uZW50cztcblxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbkJhc2Uge1xuICAvKipcbiAgICogVW5pcXVlIHNlcmlhbGl6YWJsZSBpZFxuICAgKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBsYWJlbCBzaG93biBmb3IgdGhpcyBkeW5hbWljIGNvbXBvbmVudCBvbiBhZGQgd2lkZ2V0c1xuICAgKi9cbiAgbGFiZWw6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBzaG93biBvbiBhZGQgd2lkZ2V0XG4gICAqL1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKipcbiAgICogQWRkIGFueSByYW5kb20gZGF0YSwgc3BlY2lhbGx5IHRvIGFuZ3VsYXIuanMgZGFzaGJvYXJkcy5cbiAgICogU2hvdWxkIGJlIHNlYXJpbHphYmxlZCB0byBhbGxvdyB0byBzYXZlIGl0IHRvIHRoZSBBUEkuXG4gICAqL1xuICBkYXRhPzogYW55O1xuICAvKipcbiAgICogQW4gdXJsIHRvIGFuIHByZXZpZXcgaW1hZ2UuXG4gICAqL1xuICBwcmV2aWV3SW1hZ2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgaW5qZWN0b3IgdG8gdXNlIHRvIGluamVjdCB0aGlzIGNvbXBvbmVudC4gSWYgdXNlZCBpbiBhIG1vZHVsZSBmZWRlcmF0aW9uXG4gICAqIHBsdWdpbiwgdGhlIGluamVjdG9yIG9mIHRoZSBwbHVnaW4gc2hvdWxkIGJlIHVzZWQuIERlZmF1bHRzIHRvIHRoZSByb290IGluamVjdG9yLlxuICAgKi9cbiAgaW5qZWN0b3I/OiBJbmplY3RvcjtcbiAgLyoqXG4gICAqIEF0dHJpYnV0ZXMgb2YgdGhlIGR5bmFtaWMgY29tcG9uZW50cyBjb25maWd1cmF0aW9uIHRvIGJlIHJlc29sdmVkLlxuICAgKi9cbiAgcmVzb2x2ZT86IHsgW2tleTogc3RyaW5nXTogVHlwZTxEeW5hbWljRGV0YWlsc1Jlc29sdmVyPiB9O1xuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBkeW5hbWljIGNvbXBvbmVudCBvciB3aWRnZXQgaXRzZWxmIHNob3VsZCByZW5kZXIgYWxlcnRzLlxuICAgKi9cbiAgZXJyb3JTdHJhdGVneT86IER5bmFtaWNDb21wb25lbnRFcnJvclN0cmF0ZWd5O1xuICAvKipcbiAgICogT3JkZXJpbmcgb2YgdGhlIGNvbXBvbmVudHNcbiAgICovXG4gIHByaW9yaXR5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBEeW5hbWljQ29tcG9uZW50cyA9IEVhZ2VyRHluYW1pY0NvbXBvbmVudHMgfCBMYXp5RHluYW1pY0NvbXBvbmVudHM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWFnZXJEeW5hbWljQ29tcG9uZW50cyB7XG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHdoaWNoIGlzIHVzZWQgd2hlbiB0aGUgY29tcG9uZW50IHNob3VsZCBiZSBkaXNwbGF5ZWQgKGUuZy4gb24gYSBkYXNoYm9hcmQpXG4gICAqL1xuICBjb21wb25lbnQ6IFR5cGU8YW55PjtcbiAgbG9hZENvbXBvbmVudD86IG5ldmVyO1xuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gY29tcG9uZW50IHVzZWQgd2hlbiBhIHdpZGdldCBpcyBhZGRlZCBvciBlZGl0ZWQuXG4gICAqL1xuICBjb25maWdDb21wb25lbnQ/OiBUeXBlPGFueT47XG4gIGxvYWRDb25maWdDb21wb25lbnQ/OiBuZXZlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYXp5RHluYW1pY0NvbXBvbmVudHMge1xuICAvKipcbiAgICogQSBmdW5jdGlvbiByZXR1cm5pbmcgYSBwcm9taXNlIG9mIHRoZSBjb21wb25lbnQgd2hpY2ggaXMgdXNlZCB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIGRpc3BsYXllZCAoZS5nLiBvbiBhIGRhc2hib2FyZClcbiAgICpcbiAgICogQSBzYW1wbGUgZnVuY3Rpb24gdG8gYmUgcHJvdmlkZWQgY291bGQgbG9vayBsaWtlIHRoaXM6XG4gICAqIGBgYFxuICAgKiBhc3luYyBmdW5jdGlvbiBsb2FkVmlld0NvbXBvbmVudCgpIHtcbiAgICogIGNvbnN0IHsgTGF6eVdpZGdldFZpZXdDb21wb25lbnQgfSA9IGF3YWl0IGltcG9ydCgnLi9sYXp5LXdpZGdldC12aWV3Jyk7XG4gICAqICByZXR1cm4gTGF6eVdpZGdldFZpZXdDb21wb25lbnQ7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBsb2FkQ29tcG9uZW50OiAoKSA9PiBQcm9taXNlPFR5cGU8YW55Pj47XG4gIGNvbXBvbmVudD86IG5ldmVyO1xuICAvKipcbiAgICogQSBmdW5jdGlvbiByZXR1cm5pbmcgYSBwcm9taXNlIG9mIHRoZSBjb25maWd1cmF0aW9uIGNvbXBvbmVudCB1c2VkIHdoZW4gYSB3aWRnZXQgaXMgYWRkZWQgb3IgZWRpdGVkLlxuICAgKlxuICAgKiBBIHNhbXBsZSBmdW5jdGlvbiB0byBiZSBwcm92aWRlZCBjb3VsZCBsb29rIGxpa2UgdGhpczpcbiAgICogYGBgXG4gICAqIGFzeW5jIGZ1bmN0aW9uIGxvYWRDb25maWdDb21wb25lbnQoKSB7XG4gICAqICBjb25zdCB7IExhenlXaWRnZXRDb25maWdDb21wb25lbnQgfSA9IGF3YWl0IGltcG9ydCgnLi9sYXp5LXdpZGdldC1jb25maWcnKTtcbiAgICogIHJldHVybiBMYXp5V2lkZ2V0Q29uZmlnQ29tcG9uZW50O1xuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgbG9hZENvbmZpZ0NvbXBvbmVudD86ICgpID0+IFByb21pc2U8VHlwZTxhbnk+PjtcbiAgY29uZmlnQ29tcG9uZW50PzogbmV2ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xhenlEeW5hbWljQ29tcG9uZW50cyhcbiAgY29tcG9uZW50RGVmaW5pdGlvbjogRHluYW1pY0NvbXBvbmVudHNcbik6IGNvbXBvbmVudERlZmluaXRpb24gaXMgTGF6eUR5bmFtaWNDb21wb25lbnRzIHtcbiAgcmV0dXJuICEhY29tcG9uZW50RGVmaW5pdGlvbj8ubG9hZENvbXBvbmVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRWFnZXJEeW5hbWljQ29tcG9uZW50cyhcbiAgY29tcG9uZW50RGVmaW5pdGlvbjogRHluYW1pY0NvbXBvbmVudHNcbik6IGNvbXBvbmVudERlZmluaXRpb24gaXMgRWFnZXJEeW5hbWljQ29tcG9uZW50cyB7XG4gIHJldHVybiAhIWNvbXBvbmVudERlZmluaXRpb24/LmNvbXBvbmVudDtcbn1cblxuZXhwb3J0IGVudW0gRHluYW1pY0NvbXBvbmVudEVycm9yU3RyYXRlZ3kge1xuICAvKipcbiAgICogV2lsbCBub3QgcmVuZGVyL2luaXRpYWxpemUgdGhlIFdpZGdldCBpbiBjYXNlIGFuIGVycm9yIHdhcyBkZXRlY3RlZC5cbiAgICovXG4gIE5PVF9SRU5ERVIgPSAnTk9UX1JFTkRFUicsXG4gIC8qKlxuICAgKiBXaWxsIGFkZCBhbiBvdmVybGF5IG92ZXIgdGhlIFdpZGdldCwgZGlzcGxheWluZyB0aGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIE9WRVJMQVlfRVJST1IgPSAnT1ZFUkxBWV9FUlJPUicsXG4gIC8qKlxuICAgKiBUaGUgd2lkZ2V0IGltcGxlbWVudHMgZXJyb3IgaGFuZGxpbmcgb24gaXRzIG93bi5cbiAgICovXG4gIENVU1RPTSA9ICdDVVNUT00nXG59XG5cbi8qKlxuICogVXNlIHRoaXMgaW50ZXJmYWNlIG9uIGFueSBjb21wb25lbnQgdG8gZGVmaW5lIHRoZSBpbnRlcmNoYW5nZSBiZXR3ZWVuXG4gKiBjb25maWcgYW5kIGRpc3BsYXkgY29tcG9uZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNDb21wb25lbnQge1xuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gd2hpY2ggaXMgc2hhcmVkIGJldHdlZW4gY29uZmlndXJhdGlvbiBjb21wb25lbnQgYW5kIGRpc3BsYXkgY29tcG9uZW50LlxuICAgKiBTaG91bGQgYmUgc2VhcmlsemFibGVkIHRvIGFsbG93IHRvIHNhdmUgaXQgdG8gdGhlIEFQSS5cbiAgICovXG4gIGNvbmZpZzogYW55O1xuICAvKipcbiAgICogQWxlcnRzIHJlbGF0ZWQgdG8gdGhlIGR5bmFtaWMgY29tcG9uZW50LlxuICAgKiBDYW4gZWl0aGVyIGJlIHNldCBieSB0aGUgZHluYW1pYyBjb21wb25lbnQgaXQgc2VsZiBvciB2aWEgaXQncyByZXNvbHZlcnMuXG4gICAqL1xuICBhbGVydHM/OiBEeW5hbWljQ29tcG9uZW50QWxlcnRBZ2dyZWdhdG9yO1xuICAvKipcbiAgICogQSByZWZlcmVuY2UgdG8gdGhlIG5nMUZvcm0gb24gYW5ndWxhcmpzIGRhc2hib2FyZHMgdG8gZGlzYWJsZS9lbmFibGUgdGhlIHNhdmUgYnV0dG9uLlxuICAgKiBAZGVwcmVjYXRlZDogV2lsbCBub3Qgd29yayBvbiBBbmd1bGFyLURhc2hib2FyZHMgKDEuNi4xLjApLiBVc2UgYENvbnRleHRTZXJ2aWNlRGFzaGJvYXJkLmZvcm1EaXNhYmxlZGAgaW5zdGVhZC5cbiAgICovXG4gIG5nMUZvcm1SZWY/OiBhbnk7XG59XG5cbi8qKlxuICogQW4gbGlmZWN5Y2xlIGhvb2sgd2hpY2ggaXMgY2FsbGVkIGJlZm9yZSBhbiBjb25maWd1cmF0aW9uIGlzIHNhdmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9uQmVmb3JlU2F2ZSB7XG4gIC8qKlxuICAgKiBDYWxsZWQgYmVmb3JlIGEgY29uZmlndXJhdGlvbiBvYmplY3QgaXMgc2F2ZWQuIFRoZSBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBtYW5pcHVsYXRlIHRoZVxuICAgKiBwYXNzZWQgY29uZmlnIG9iamVjdCBvciB0byBjYW5jZWwgdGhlIHNhdmluZyAocmV0dXJuIGZhbHNlIG9yIE9ic2VydmFibGU8Ym9vbGVhbj4pLlxuICAgKi9cbiAgb25CZWZvcmVTYXZlKGNvbmZpZz86IGFueSk6IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+IHwgT2JzZXJ2YWJsZTxib29sZWFuPjtcbn1cbiJdfQ==