@wavemaker/app-ng-runtime 11.4.0-next.28151 → 11.4.0-next.28701

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 (77) hide show
  1. app-ng-runtime/build-task/bundles/index.umd.js +1 -1
  2. app-ng-runtime/build-task/bundles/index.umd.js.map +1 -1
  3. app-ng-runtime/build-task/esm2015/data/form/form-field/form-field.build.js +2 -2
  4. app-ng-runtime/build-task/fesm2015/index.js +1 -1
  5. app-ng-runtime/build-task/fesm2015/index.js.map +1 -1
  6. app-ng-runtime/components/base/bundles/index.umd.js +23 -1
  7. app-ng-runtime/components/base/bundles/index.umd.js.map +1 -1
  8. app-ng-runtime/components/base/esm2015/public_api.js +2 -2
  9. app-ng-runtime/components/base/esm2015/utils/widget-utils.js +16 -1
  10. app-ng-runtime/components/base/esm2015/widgets/common/base/base-field-validations.js +3 -2
  11. app-ng-runtime/components/base/esm2015/widgets/common/dialog/dialog.service.js +7 -1
  12. app-ng-runtime/components/base/fesm2015/index.js +23 -2
  13. app-ng-runtime/components/base/fesm2015/index.js.map +1 -1
  14. app-ng-runtime/components/base/index.metadata.json +1 -1
  15. app-ng-runtime/components/base/public_api.d.ts +1 -1
  16. app-ng-runtime/components/base/utils/widget-utils.d.ts +7 -0
  17. app-ng-runtime/components/data/form/bundles/index.umd.js +37 -13
  18. app-ng-runtime/components/data/form/bundles/index.umd.js.map +1 -1
  19. app-ng-runtime/components/data/form/esm2015/form-field/form-field.directive.js +26 -7
  20. app-ng-runtime/components/data/form/esm2015/form.component.js +10 -5
  21. app-ng-runtime/components/data/form/fesm2015/index.js +34 -10
  22. app-ng-runtime/components/data/form/fesm2015/index.js.map +1 -1
  23. app-ng-runtime/components/data/form/index.metadata.json +1 -1
  24. app-ng-runtime/components/data/list/bundles/index.umd.js +2 -2
  25. app-ng-runtime/components/data/list/bundles/index.umd.js.map +1 -1
  26. app-ng-runtime/components/data/list/esm2015/list.component.js +3 -3
  27. app-ng-runtime/components/data/list/fesm2015/index.js +2 -2
  28. app-ng-runtime/components/data/list/fesm2015/index.js.map +1 -1
  29. app-ng-runtime/components/data/list/index.metadata.json +1 -1
  30. app-ng-runtime/components/data/list/list.component.d.ts +1 -1
  31. app-ng-runtime/components/data/pagination/bundles/index.umd.js +1 -1
  32. app-ng-runtime/components/data/pagination/bundles/index.umd.js.map +1 -1
  33. app-ng-runtime/components/data/pagination/esm2015/pagination.component.js +2 -2
  34. app-ng-runtime/components/data/pagination/fesm2015/index.js +1 -1
  35. app-ng-runtime/components/data/pagination/fesm2015/index.js.map +1 -1
  36. app-ng-runtime/components/data/table/bundles/index.umd.js +57 -12
  37. app-ng-runtime/components/data/table/bundles/index.umd.js.map +1 -1
  38. app-ng-runtime/components/data/table/esm2015/table.component.js +56 -13
  39. app-ng-runtime/components/data/table/esm2015/table.props.js +3 -1
  40. app-ng-runtime/components/data/table/fesm2015/index.js +57 -12
  41. app-ng-runtime/components/data/table/fesm2015/index.js.map +1 -1
  42. app-ng-runtime/components/data/table/index.metadata.json +1 -1
  43. app-ng-runtime/components/data/table/table.component.d.ts +9 -0
  44. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +5 -0
  45. app-ng-runtime/components/dialogs/default/bundles/index.umd.js.map +1 -1
  46. app-ng-runtime/components/dialogs/default/esm2015/base-dialog.js +7 -2
  47. app-ng-runtime/components/dialogs/default/fesm2015/index.js +6 -1
  48. app-ng-runtime/components/dialogs/default/fesm2015/index.js.map +1 -1
  49. app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +1 -0
  50. app-ng-runtime/components/input/epoch/bundles/index.umd.js +13 -7
  51. app-ng-runtime/components/input/epoch/bundles/index.umd.js.map +1 -1
  52. app-ng-runtime/components/input/epoch/esm2015/base-date-time.component.js +13 -7
  53. app-ng-runtime/components/input/epoch/esm2015/date/date.component.js +2 -2
  54. app-ng-runtime/components/input/epoch/fesm2015/index.js +13 -7
  55. app-ng-runtime/components/input/epoch/fesm2015/index.js.map +1 -1
  56. app-ng-runtime/components/input/epoch/index.metadata.json +1 -1
  57. app-ng-runtime/components/navigation/menu/bundles/index.umd.js +25 -19
  58. app-ng-runtime/components/navigation/menu/bundles/index.umd.js.map +1 -1
  59. app-ng-runtime/components/navigation/menu/esm2015/menu-dropdown-item/menu-dropdown-item.component.js +15 -5
  60. app-ng-runtime/components/navigation/menu/esm2015/menu.component.js +14 -19
  61. app-ng-runtime/components/navigation/menu/fesm2015/index.js +25 -20
  62. app-ng-runtime/components/navigation/menu/fesm2015/index.js.map +1 -1
  63. app-ng-runtime/components/navigation/menu/index.metadata.json +1 -1
  64. app-ng-runtime/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +7 -4
  65. app-ng-runtime/components/navigation/menu/menu.component.d.ts +3 -7
  66. app-ng-runtime/components/navigation/popover/bundles/index.umd.js +3 -0
  67. app-ng-runtime/components/navigation/popover/bundles/index.umd.js.map +1 -1
  68. app-ng-runtime/components/navigation/popover/esm2015/popover.component.js +4 -1
  69. app-ng-runtime/components/navigation/popover/fesm2015/index.js +3 -0
  70. app-ng-runtime/components/navigation/popover/fesm2015/index.js.map +1 -1
  71. app-ng-runtime/core/bundles/index.umd.js +7 -1
  72. app-ng-runtime/core/bundles/index.umd.js.map +1 -1
  73. app-ng-runtime/core/esm2015/services/pagination.service.js +8 -2
  74. app-ng-runtime/core/fesm2015/index.js +7 -1
  75. app-ng-runtime/core/fesm2015/index.js.map +1 -1
  76. app-ng-runtime/package.json +1 -1
  77. app-ng-runtime/scripts/datatable/datatable.js +63 -13
@@ -234,7 +234,7 @@ DateComponent.initializeProps = registerProps();
234
234
  DateComponent.decorators = [
235
235
  { type: Component, args: [{
236
236
  selector: '[wmDate]',
237
- template: " <input class=\"form-control app-textbox app-dateinput display-input\"\n focus-target\n type=\"text\"\n [name]=\"name\"\n [tabindex]=\"tabindex\"\n [value]=\"displayValue\"\n (click)=\"toggleDpDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event);\"\n (blur)=\"onInputBlur($event)\"\n [disabled]=\"disabled || readonly\"\n [autofocus]=\"autofocus\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"hint\"\n (change)=\"onDisplayDateChange($event)\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event);\">\n\n <span class=\"input-group-btn\">\n <button type=\"button\"\n class=\"btn btn-default btn-time\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled || readonly\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : 'Choose date by pressing enter'\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"toggleDpDropdown($event, false)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-calendar\"></i>\n </button>\n </span>\n <div style=\"width: 0;display: inline-block;\">\n <input class=\"model-holder\"\n aria-label=\"datepicker dropdownmenu\"\n aria-controls=\"date\"\n [container]=\"containerTarget || 'body'\"\n [bsConfig]=\"_dateOptions\"\n [isOpen]=\"isOpen\"\n #datepicker=\"bsDatepicker\"\n bsDatepicker\n [daysDisabled]=\"excludedDaysToDisable\"\n [datesDisabled]=\"excludedDatesToDisable\"\n placement=\"bottom right\"\n [isDisabled]=\"disabled || readonly\"\n [bsValue]=\"bsDataValue\"\n (onShown)=\"onDatePickerOpen()\"\n (onHidden)=\"hideDatepickerDropdown()\"\n (bsValueChange)=\"onDateChange($event)\">\n</div>\n\n<ng-template [ngIf]=\"loadNativeDateInput\">\n <wm-datetimepicker\n dateTimePicker\n mode=\"DATE\"\n [config]=\"_dateOptions\"\n [placement]=\"modal\"\n [excludedDaysToDisable]=\"excludedDaysToDisable\"\n [excludedDatesToDisable]=\"excludedDatesToDisable\"\n [displayFormat]=\"dateInputFormat\"\n [value]=\"bsDataValue\"\n (change)=\"onDateChange($event)\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n tabindex=\"1000000\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event);\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n (click)=\"!(disabled || readonly || isCurrentDate) && showDatePickerModal()\">\n </div>\n</ng-template>\n",
237
+ template: " <input class=\"form-control app-textbox app-dateinput display-input\"\n focus-target\n type=\"text\"\n [name]=\"name\"\n [tabindex]=\"tabindex\"\n [value]=\"displayValue\"\n (click)=\"toggleDpDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event);\"\n (blur)=\"onInputBlur($event)\"\n [disabled]=\"disabled || readonly\"\n [autofocus]=\"autofocus\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"hint\"\n (change)=\"onDisplayDateChange($event)\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event);\">\n\n <span class=\"input-group-btn\">\n <button type=\"button\"\n class=\"btn btn-default btn-time\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled || readonly\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : 'Choose date by pressing enter'\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"toggleDpDropdown($event, false)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-calendar\"></i>\n </button>\n </span>\n <div style=\"width: 0;display: inline-block;\">\n <input class=\"model-holder\"\n aria-label=\"datepicker dropdownmenu\"\n aria-controls=\"date\"\n [container]=\"containerTarget || 'body'\"\n [bsConfig]=\"_dateOptions\"\n [isOpen]=\"isOpen\"\n #datepicker=\"bsDatepicker\"\n bsDatepicker\n [daysDisabled]=\"excludedDaysToDisable\"\n [datesDisabled]=\"excludedDatesToDisable\"\n placement=\"bottom right\"\n [isDisabled]=\"disabled || readonly\"\n [bsValue]=\"bsDataValue\"\n (onShown)=\"onDatePickerOpen()\"\n (onHidden)=\"hideDatepickerDropdown()\"\n (bsValueChange)=\"onDateChange($event)\">\n</div>\n\n<ng-template [ngIf]=\"loadNativeDateInput\">\n <wm-datetimepicker\n dateTimePicker\n mode=\"DATE\"\n [config]=\"_dateOptions\"\n [placement]=\"modal\"\n [excludedDaysToDisable]=\"excludedDaysToDisable\"\n [excludedDatesToDisable]=\"excludedDatesToDisable\"\n [displayFormat]=\"dateInputFormat\"\n [value]=\"bsDataValue\"\n (change)=\"onDateChange($event)\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n tabindex=\"1000000\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event);\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n (click)=\"!(disabled || readonly || isCurrentDate) && showDatePickerModal()\">\n </div>\n</ng-template>\n",
238
238
  providers: [
239
239
  provideAs(DateComponent, NG_VALUE_ACCESSOR, true),
240
240
  provideAs(DateComponent, NG_VALIDATORS, true),
@@ -251,4 +251,4 @@ DateComponent.ctorParameters = () => [
251
251
  DateComponent.propDecorators = {
252
252
  bsDatePickerDirective: [{ type: ViewChild, args: [BsDatepickerDirective,] }]
253
253
  };
254
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZXBvY2gvc3JjL2RhdGUvZGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHlCQUF5QixFQUFFLFdBQVcsRUFBYyxjQUFjLEVBQUUsVUFBVSxFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUFFLHlCQUF5QixFQUFFLHFCQUFxQixFQUFPLE1BQU0sVUFBVSxDQUFDO0FBQ3RPLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBSzdDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQztBQUNwQyxNQUFNLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQztBQUMzQyxNQUFNLGFBQWEsR0FBa0I7SUFDakMsVUFBVSxFQUFFLFNBQVM7SUFDckIsU0FBUyxFQUFFLFdBQVc7Q0FDekIsQ0FBQztBQVdGLE1BQU0sT0FBTyxhQUFjLFNBQVEscUJBQXFCO0lBdURwRCx3RkFBd0Y7SUFDeEYsWUFDSSxHQUFh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Q0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztpQkFDMUU7Z0JBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2hDO2lCQUFNO2dCQUNILElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2FBQ2pDO1NBQ0o7YUFBTTtZQUNILElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWSxDQUFDLE1BQU07UUFFZjs7Ozs7YUFLSztRQUNMLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzFCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7WUFDakMsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixDQUFDOztBQXBQTSw2QkFBZSxHQUFHLGFBQWEsRUFBRSxDQUFDOztZQVY1QyxTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLGcwRkFBb0M7Z0JBQ3BDLFNBQVMsRUFBRTtvQkFDUCxTQUFTLENBQUMsYUFBYSxFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQztvQkFDakQsU0FBUyxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDO29CQUM3QyxrQkFBa0IsQ0FBQyxhQUFhLENBQUM7aUJBQ3BDO2FBQ0o7OztZQTdCOEMsUUFBUTtZQUE5QyxpQkFBaUI7WUFNbUMsV0FBVzs0Q0FvRi9ELE1BQU0sU0FBQyxxQkFBcUI7OztvQ0FQaEMsU0FBUyxTQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0b3IsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIE5HX1ZBTElEQVRPUlMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFVkVOVF9NQU5BR0VSX1BMVUdJTlMgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHsgQnNEYXRlcGlja2VyRGlyZWN0aXZlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kYXRlcGlja2VyJztcblxuaW1wb3J0IHsgYWRqdXN0Q29udGFpbmVyUG9zaXRpb24sIGFkZEV2ZW50TGlzdGVuZXJPbkVsZW1lbnQsIEFwcERlZmF1bHRzLCBFVkVOVF9MSUZFLCBGb3JtV2lkZ2V0VHlwZSwgZ2V0RGF0ZU9iaiwgZ2V0RGlzcGxheURhdGVUaW1lRm9ybWF0LCBnZXRGb3JtYXR0ZWREYXRlLCBhZGp1c3RDb250YWluZXJSaWdodEVkZ2VzLCBnZXRNb21lbnRMb2NhbGVPYmplY3QsIEFwcCB9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7SVdpZGdldENvbmZpZywgcHJvdmlkZUFzLCBwcm92aWRlQXNXaWRnZXRSZWYsIHNldEZvY3VzVHJhcCwgc3R5bGVyfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IEJhc2VEYXRlVGltZUNvbXBvbmVudCB9IGZyb20gJy4vLi4vYmFzZS1kYXRlLXRpbWUuY29tcG9uZW50JztcbmltcG9ydCB7IHJlZ2lzdGVyUHJvcHMgfSBmcm9tICcuL2RhdGUucHJvcHMnO1xuaW1wb3J0IHsgY3JlYXRlRm9jdXNUcmFwIH0gZnJvbSAnQHdhdmVtYWtlci9mb2N1cy10cmFwL2Rpc3QvZm9jdXMtdHJhcCc7XG5cbmRlY2xhcmUgY29uc3QgXywgJCwgbW9tZW50O1xuXG5jb25zdCBDVVJSRU5UX0RBVEUgPSAnQ1VSUkVOVF9EQVRFJztcbmNvbnN0IERFRkFVTFRfQ0xTID0gJ2FwcC1kYXRlIGlucHV0LWdyb3VwJztcbmNvbnN0IFdJREdFVF9DT05GSUc6IElXaWRnZXRDb25maWcgPSB7XG4gICAgd2lkZ2V0VHlwZTogJ3dtLWRhdGUnLFxuICAgIGhvc3RDbGFzczogREVGQVVMVF9DTFNcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnW3dtRGF0ZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzKERhdGVDb21wb25lbnQsIE5HX1ZBTFVFX0FDQ0VTU09SLCB0cnVlKSxcbiAgICAgICAgcHJvdmlkZUFzKERhdGVDb21wb25lbnQsIE5HX1ZBTElEQVRPUlMsIHRydWUpLFxuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoRGF0ZUNvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlRGF0ZVRpbWVDb21wb25lbnQge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG5cbiAgICBwdWJsaWMgYnNEYXRhVmFsdWU7XG4gICAgcHVibGljIHNob3dkcm9wZG93bm9uOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBkYXRlQ29udGFpbmVyQ2xzOiBzdHJpbmc7XG4gICAgcHVibGljIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgaXNFbnRlclByZXNzZWRPbkRhdGVJbnB1dCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2JzRGVmYXVsdExvYWRDaGVjazogYm9vbGVhbjtcbiAgICBwdWJsaWMgaGludDogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBrZXlFdmVudFBsdWdpbjtcbiAgICBwcml2YXRlIGRlcmVnaXN0ZXJFdmVudExpc3RlbmVyO1xuICAgIHByaXZhdGUgaXNDdXJyZW50RGF0ZTtcbiAgICBwcml2YXRlIGZvY3VzVHJhcDtcblxuICAgIGdldCB0aW1lc3RhbXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJzRGF0YVZhbHVlID8gdGhpcy5ic0RhdGFWYWx1ZS52YWx1ZU9mKCkgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0IGRhdGVJbnB1dEZvcm1hdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVPcHRpb25zLmRhdGVJbnB1dEZvcm1hdCB8fCAneXl5eS1NTS1kZCc7XG4gICAgfVxuXG4gICAgZ2V0IGRpc3BsYXlWYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIGdldEZvcm1hdHRlZERhdGUodGhpcy5kYXRlUGlwZSwgdGhpcy5ic0RhdGFWYWx1ZSwgdGhpcy5kYXRlSW5wdXRGb3JtYXQsIHRoaXMudGltZVpvbmUsIG51bGwsIHRoaXMuaXNDdXJyZW50RGF0ZSwgdGhpcykgfHwgJyc7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZURpc3BsYXlWYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIGdldEZvcm1hdHRlZERhdGUodGhpcy5kYXRlUGlwZSwgdGhpcy5ic0RhdGFWYWx1ZSwgJ3l5eXktTU0tZGQnLCB0aGlzLnRpbWVab25lLCBudWxsLCB0aGlzLmlzQ3VycmVudERhdGUsIHRoaXMpIHx8ICcnO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBnZXQgZGF0YXZhbHVlKCkge1xuICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVkRGF0ZSh0aGlzLmRhdGVQaXBlLCB0aGlzLmJzRGF0YVZhbHVlLCB0aGlzLm91dHB1dGZvcm1hdCwgdGhpcy50aW1lWm9uZSwgbnVsbCwgdGhpcy5pc0N1cnJlbnREYXRlLCB0aGlzKSB8fCAnJztcbiAgICB9XG5cbiAgICAvLyBUb2RvW1NodWJoYW1dOiBuZWVkcyB0byBiZSByZWRlZmluZWRcbiAgICAvLyBzZXRzIHRoZSBkYXRhVmFsdWUgYW5kIGNvbXB1dGVzIHRoZSBkaXNwbGF5IG1vZGVsIHZhbHVlc1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzZXQgZGF0YXZhbHVlKG5ld1ZhbCkge1xuICAgICAgICBpZiAobmV3VmFsID09PSBDVVJSRU5UX0RBVEUpIHtcbiAgICAgICAgICAgIHRoaXMuYnNEYXRhVmFsdWUgPSB0aGlzLnRpbWVab25lID8gZ2V0TW9tZW50TG9jYWxlT2JqZWN0KHRoaXMudGltZVpvbmUpIDogbmV3IERhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuaXNDdXJyZW50RGF0ZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJzRGF0YVZhbHVlID0gbmV3VmFsID8gZ2V0RGF0ZU9iaihuZXdWYWwsIHtpc05hdGl2ZVBpY2tlcjogdGhpcy5sb2FkTmF0aXZlRGF0ZUlucHV0fSwgdGhpcy50aW1lWm9uZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLmlzQ3VycmVudERhdGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyB1cGRhdGUgdGhlIHByZXZpb3VzIGRhdGF2YWx1ZS5cbiAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSwgdW5kZWZpbmVkLCB0cnVlKTtcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZChCc0RhdGVwaWNrZXJEaXJlY3RpdmUpIHByb3RlY3RlZCBic0RhdGVQaWNrZXJEaXJlY3RpdmU7XG5cbiAgICAvLyBUT0RPIHVzZSBCc0xvY2FsZVNlcnZpY2UgdG8gc2V0IHRoZSBjdXJyZW50IHVzZXIncyBsb2NhbGUgdG8gc2VlIHRoZSBsb2NhbGl6ZWQgbGFiZWxzXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluajogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGFwcERlZmF1bHRzOiBBcHBEZWZhdWx0cyxcbiAgICAgICAgQEluamVjdChFVkVOVF9NQU5BR0VSX1BMVUdJTlMpIGV2dE1uZ3JQbHVnaW5zXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRyk7XG4gICAgICAgIHN0eWxlcih0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMpO1xuXG4gICAgICAgIC8vIEtleUV2ZW50c1BsdWdpblxuICAgICAgICB0aGlzLmtleUV2ZW50UGx1Z2luID0gZXZ0TW5nclBsdWdpbnNbMV07XG4gICAgICAgIHRoaXMuZGF0ZUNvbnRhaW5lckNscyA9IGBhcHAtZGF0ZS0ke3RoaXMud2lkZ2V0SWR9YDtcbiAgICAgICAgdGhpcy5fZGF0ZU9wdGlvbnMuY29udGFpbmVyQ2xhc3MgPSBgYXBwLWRhdGUgJHt0aGlzLmRhdGVDb250YWluZXJDbHN9YDtcbiAgICAgICAgdGhpcy5fZGF0ZU9wdGlvbnMuc2hvd1dlZWtOdW1iZXJzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2JzRGVmYXVsdExvYWRDaGVjayA9IHRydWU7XG4gICAgICAgIHRoaXMuZGF0ZXBhdHRlcm4gPSB0aGlzLmFwcERlZmF1bHRzLmRhdGVGb3JtYXQgfHwgZ2V0RGlzcGxheURhdGVUaW1lRm9ybWF0KEZvcm1XaWRnZXRUeXBlLkRBVEUpO1xuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1hdCgnZGF0ZXBhdHRlcm4nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB0cmlnZ2VyZWQgd2hlbiB0aGUgZGF0ZSBpbnB1dCBjaGFuZ2VzXG4gICAgICovXG4gICAgb25EaXNwbGF5RGF0ZUNoYW5nZSgkZXZlbnQsIGlzTmF0aXZlUGlja2VyOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbnRlclByZXNzZWRPbkRhdGVJbnB1dCkge1xuICAgICAgICAgICAgdGhpcy5pc0VudGVyUHJlc3NlZE9uRGF0ZUlucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3VmFsID0gZ2V0RGF0ZU9iaigkZXZlbnQudGFyZ2V0LnZhbHVlLCB7cGF0dGVybjogdGhpcy5kYXRlcGF0dGVybiwgaXNOYXRpdmVQaWNrZXI6IGlzTmF0aXZlUGlja2VyfSk7XG4gICAgICAgIC8vIGRhdGUgcGF0dGVybiB2YWxpZGF0aW9uXG4gICAgICAgIC8vIGlmIGludmFsaWQgcGF0dGVybiBpcyBlbnRlcmVkLCBkZXZpY2UgaXMgc2hvd2luZyBhbiBlcnJvci5cbiAgICAgICAgaWYgKCF0aGlzLmZvcm1hdFZhbGlkYXRpb24obmV3VmFsLCAkZXZlbnQudGFyZ2V0LnZhbHVlLCBpc05hdGl2ZVBpY2tlcikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBtaW4gZGF0ZSBhbmQgbWF4IGRhdGUgdmFsaWRhdGlvbiBpbiBtb2JpbGUgdmlldy5cbiAgICAgICAgLy8gaWYgaW52YWxpZCBkYXRlcyBhcmUgZW50ZXJlZCwgZGV2aWNlIGlzIHNob3dpbmcgYW4gYWxlcnQuXG4gICAgICAgIGlmIChpc05hdGl2ZVBpY2tlciAmJiB0aGlzLm1pbkRhdGVNYXhEYXRlVmFsaWRhdGlvbk9uSW5wdXQobmV3VmFsLCAkZXZlbnQsIHRoaXMuZGlzcGxheVZhbHVlLCBpc05hdGl2ZVBpY2tlcikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldERhdGFWYWx1ZShuZXdWYWwpO1xuICAgIH1cblxuICAgIC8vIHNldHMgdGhlIGRhdGFWYWx1ZSBhbmQgY29tcHV0ZXMgdGhlIGRpc3BsYXkgbW9kZWwgdmFsdWVzXG4gICAgcHJpdmF0ZSBzZXREYXRhVmFsdWUobmV3VmFsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW52YWxpZERhdGVUaW1lRm9ybWF0ID0gZmFsc2U7XG4gICAgICAgIC8vIG1pbiBkYXRlIGFuZCBtYXggZGF0ZSB2YWxpZGF0aW9uIGluIHdlYi5cbiAgICAgICAgLy8gaWYgaW52YWxpZCBkYXRlcyBhcmUgZW50ZXJlZCwgZGV2aWNlIGlzIHNob3dpbmcgdmFsaWRhdGlvbiBtZXNzYWdlLlxuICAgICAgICB0aGlzLm1pbkRhdGVNYXhEYXRlVmFsaWRhdGlvbk9uSW5wdXQobmV3VmFsKTtcbiAgICAgICAgaWYgKGdldEZvcm1hdHRlZERhdGUodGhpcy5kYXRlUGlwZSwgbmV3VmFsLCB0aGlzLmRhdGVJbnB1dEZvcm1hdCwgdGhpcy50aW1lWm9uZSwgbnVsbCwgdGhpcy5pc0N1cnJlbnREYXRlLCB0aGlzKSA9PT0gdGhpcy5kaXNwbGF5VmFsdWUpIHtcbiAgICAgICAgICAgICQodGhpcy5uYXRpdmVFbGVtZW50KS5maW5kKCcuZGlzcGxheS1pbnB1dCcpLnZhbCh0aGlzLmRpc3BsYXlWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5ld1ZhbCkge1xuICAgICAgICAgICAgdGhpcy5ic0RhdGFWYWx1ZSA9IG5ld1ZhbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYnNEYXRhVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSwge30sIHRydWUpO1xuICAgIH1cblxuICAgIG9uRGF0ZVBpY2tlck9wZW4oKSB7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5ic0RhdGFWYWx1ZSA/IHRoaXMuYWN0aXZlRGF0ZSA9IHRoaXMuYnNEYXRhVmFsdWUgOiB0aGlzLmFjdGl2ZURhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBpZiAoIXRoaXMuYnNEYXRhVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuaGlnaHRsaWdodFRvZGF5KCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXZSBhcmUgdXNpbmcgdGhlIHR3byBpbnB1dCB0YWdzKFRvIG1haW50YWluIHRoZSBtb2RhbCBhbmQgcHJveHkgbW9kYWwpIGZvciB0aGUgZGF0ZSBjb250cm9sLlxuICAgICAgICAvLyBTbyBhY3R1YWwgYm9vdHN0cmFwIGlucHV0IHRhcmdldCB3aWR0aCB3ZSBtYWRlIGl0IHRvIDAsIHNvIGJvb3RzdHJhcCBjYWxjdWxhdGluZyB0aGUgY2FsZW5kYXIgY29udGFpbmVyIHRvcCBwb3NpdGlvbiBpbXByb3Blcmx5LlxuICAgICAgICAvLyBUbyBmaXggdGhlIGNvbnRhaW5lciB0b3AgcG9zaXRpb24gc2V0IHRoZSB3aWR0aCAxcHg7XG4gICAgICAgIHRoaXMuJGVsZW1lbnQuZmluZCgnLm1vZGVsLWhvbGRlcicpLndpZHRoKCcxcHgnKTtcbiAgICAgICAgY29uc3QgZHBDb250YWluZXJFbCA9ICQoJ2JzLWRhdGVwaWNrZXItY29udGFpbmVyJyk7XG4gICAgICAgIGRwQ29udGFpbmVyRWwuYXR0cignYXJpYS1sYWJlbCcsICdVc2UgQXJyb3cga2V5cyB0byBuYXZpZ2F0ZSBkYXRlcywgQ2hvb3NlIERhdGUgZnJvbSBkYXRlcGlja2VyJyk7XG4gICAgICAgICQoJy5icy1jYWxlbmRhci1jb250YWluZXInKS5yZW1vdmVBdHRyKCdyb2xlJyk7XG4gICAgICAgIGNvbnN0IGRhdGVQaWNrZXJDb250YWluZXIgPSAkKCcuYnMtZGF0ZXBpY2tlci1jb250YWluZXInKVswXTtcbiAgICAgICAgdGhpcy5mb2N1c1RyYXAgPSBzZXRGb2N1c1RyYXAoZGF0ZVBpY2tlckNvbnRhaW5lciwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuZm9jdXNUcmFwLmFjdGl2YXRlKCk7XG4gICAgICAgIHRoaXMuYWRkRGF0ZXBpY2tlcktleWJvYXJkRXZlbnRzKHRoaXMsIGZhbHNlKTtcbiAgICAgICAgYWRqdXN0Q29udGFpbmVyUG9zaXRpb24oJCgnYnMtZGF0ZXBpY2tlci1jb250YWluZXInKSwgdGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLmJzRGF0ZVBpY2tlckRpcmVjdGl2ZS5fZGF0ZXBpY2tlcik7XG4gICAgICAgIGFkanVzdENvbnRhaW5lclJpZ2h0RWRnZXMoJCgnYnMtZGF0ZXBpY2tlci1jb250YWluZXInKSwgdGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLmJzRGF0ZVBpY2tlckRpcmVjdGl2ZS5fZGF0ZXBpY2tlcik7XG4gICAgfVxuICAgIG9uSW5wdXRCbHVyKCRldmVudCkge1xuICAgICAgICBpZiAoISQoJGV2ZW50LnJlbGF0ZWRUYXJnZXQpLmhhc0NsYXNzKCdjdXJyZW50LWRhdGUnKSkge1xuICAgICAgICAgICAgdGhpcy5pbnZva2VPblRvdWNoZWQoKTtcbiAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnYmx1cicsIHsgJGV2ZW50IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhpZGVEYXRlcGlja2VyRHJvcGRvd24oKSB7XG4gICAgICAgIHRoaXMuaW52b2tlT25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9jdXNUcmFwPy5kZWFjdGl2YXRlKCk7XG4gICAgICAgIHRoaXMuaXNFbnRlclByZXNzZWRPbkRhdGVJbnB1dCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5kZXJlZ2lzdGVyRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kZXJlZ2lzdGVyRXZlbnRMaXN0ZW5lcigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYmx1ckRhdGVJbnB1dCh0aGlzLmlzT3Blbik7XG4gICAgfVxuXG4gICAgLy8gY2hhbmdlIGFuZCBibHVyIGV2ZW50cyBhcmUgYWRkZWQgZnJvbSB0aGUgdGVtcGxhdGVcbiAgICBwcm90ZWN0ZWQgaGFuZGxlRXZlbnQobm9kZTogSFRNTEVsZW1lbnQsIGV2ZW50TmFtZTogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24sIGxvY2FsczogYW55KSB7XG4gICAgICAgIGlmICghXy5pbmNsdWRlcyhbJ2JsdXInLCAnZm9jdXMnLCAnY2hhbmdlJywgJ2NsaWNrJ10sIGV2ZW50TmFtZSkpIHtcbiAgICAgICAgICAgIHN1cGVyLmhhbmRsZUV2ZW50KG5vZGUsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIGxvY2Fscyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB1c2VkIHRvIHRvZ2dsZSB0aGUgZHJvcGRvd24gb2YgdGhlIGRhdGUgd2lkZ2V0XG4gICAgICovXG4gICAgIHB1YmxpYyB0b2dnbGVEcERyb3Bkb3duKCRldmVudCwgc2tpcEZvY3VzOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCkge1xuICAgICAgICAgICAgLy9GaXhlcyBjbGljayBldmVudCBnZXR0aW5nIHRyaWdncmVkIHR3aWNlIGluIE1vYmlsZSBkZXZpY2VzLlxuICAgICAgICAgICAgaWYoIXNraXBGb2N1cyl7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkRhdGVUaW1lSW5wdXRGb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICgkZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xuICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdjbGljaycsIHsgJGV2ZW50OiAkZXZlbnQgfSk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzT25JbnB1dEVsKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCRldmVudC50YXJnZXQgJiYgJCgkZXZlbnQudGFyZ2V0KS5pcygnaW5wdXQnKSAmJiAhKHRoaXMuaXNEcm9wRG93bkRpc3BsYXlFbmFibGVkT25JbnB1dCh0aGlzLnNob3dkcm9wZG93bm9uKSkpIHtcbiAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJzRGF0ZVBpY2tlckRpcmVjdGl2ZS50b2dnbGUoKTtcbiAgICAgICAgdGhpcy5hZGRCb2R5Q2xpY2tMaXN0ZW5lcih0aGlzLmJzRGF0ZVBpY2tlckRpcmVjdGl2ZS5pc09wZW4pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkQm9keUNsaWNrTGlzdGVuZXIoc2tpcExpc3RlbmVyKSB7XG4gICAgICAgIGlmICghc2tpcExpc3RlbmVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYm9keUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5Jyk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYnNEYXRlQ29udGFpbmVyRWxlbWVudCA9IGJvZHlFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke3RoaXMuZGF0ZUNvbnRhaW5lckNsc31gKTtcbiAgICAgICAgICAgIHRoaXMuZGVyZWdpc3RlckV2ZW50TGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyT25FbGVtZW50KGJvZHlFbGVtZW50LCBic0RhdGVDb250YWluZXJFbGVtZW50LCB0aGlzLm5hdGl2ZUVsZW1lbnQsICdjbGljaycsIHRoaXMuaXNEcm9wRG93bkRpc3BsYXlFbmFibGVkT25JbnB1dCh0aGlzLnNob3dkcm9wZG93bm9uKSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICB9LCBFVkVOVF9MSUZFLk9OQ0UsIHRydWUpO1xuICAgICAgICB9LCAzNTApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHRyaWdnZXJlZCB3aGVuIHByZXNzaW5nIGtleSBvbiB0aGUgZGF0ZSBpbnB1dFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkRpc3BsYXlLZXlkb3duKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzRHJvcERvd25EaXNwbGF5RW5hYmxlZE9uSW5wdXQodGhpcy5zaG93ZHJvcGRvd25vbikpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5rZXlFdmVudFBsdWdpbi5jb25zdHJ1Y3Rvci5nZXRFdmVudEZ1bGxLZXkoZXZlbnQpO1xuICAgICAgICAgICAgaWYgKGFjdGlvbiA9PT0gJ2VudGVyJyB8fCBhY3Rpb24gPT09ICdhcnJvd2Rvd24nKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3VmFsID0gZ2V0RGF0ZU9iaihldmVudC50YXJnZXQudmFsdWUsIHtwYXR0ZXJuOiB0aGlzLmRhdGVwYXR0ZXJufSk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gZ2V0Rm9ybWF0dGVkRGF0ZSh0aGlzLmRhdGVQaXBlLCBuZXdWYWwsIHRoaXMuZGF0ZUlucHV0Rm9ybWF0LCB0aGlzLnRpbWVab25lLCBudWxsLCB0aGlzLmlzQ3VycmVudERhdGUsIHRoaXMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0VmFsID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRyaW0oKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXRWYWwgJiYgdGhpcy5kYXRlcGF0dGVybiA9PT0gJ3RpbWVzdGFtcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFfLmlzTmFOKGlucHV0VmFsKSAmJiBfLnBhcnNlSW50KGlucHV0VmFsKSAhPT0gZm9ybWF0dGVkRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkRGF0ZVRpbWVGb3JtYXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSwgZXZlbnQsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXRWYWwgJiYgaW5wdXRWYWwgIT09IGZvcm1hdHRlZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkRGF0ZVRpbWVGb3JtYXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludm9rZU9uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlLCBldmVudCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZERhdGVUaW1lRm9ybWF0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNFbnRlclByZXNzZWRPbkRhdGVJbnB1dCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnNEYXRlUGlja2VyRGlyZWN0aXZlLmJzVmFsdWUgPSAgZXZlbnQudGFyZ2V0LnZhbHVlID8gbmV3VmFsIDogJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlRHBEcm9wZG93bihldmVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZURhdGVwaWNrZXJEcm9wZG93bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oaWRlRGF0ZXBpY2tlckRyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB0cmlnZ2VyZWQgd2hlbiB0aGUgZGF0ZSBzZWxlY3Rpb24gY2hhbmdlc1xuICAgICAqL1xuICAgIG9uRGF0ZUNoYW5nZShuZXdWYWwpOiB2b2lkIHtcblxuICAgICAgICAvKipcbiAgICAgICAgICogIE5neC1ib290c3RyYXAgdXBncmFkZSA6IFRvIGF2b2lkIHRoZSBwYWdlIGxvYWQgZGF0ZWNoYW5nZSBldmVudDtcbiAgICAgICAgICogIFRPRE86XG4gICAgICAgICAqICBodHRwczovL2dpdGh1Yi5jb20vdmFsb3Itc29mdHdhcmUvbmd4LWJvb3RzdHJhcC9pc3N1ZXMvNjAxNlxuICAgICAgICAgKiAgRm9yIGFib3ZlIGlzc3VlLCBvbmNlIHdlIGdldCB0aGUgc29sdXRpb24gZnJvbSBOZ3gtQm9vdHN0cmFwIHRlYW0sICByZW1vdmUgdGhlIF9ic0RlZmF1bHRMb2FkQ2hlY2sgY2hlY2sgYW5kIHVwZGF0ZSBhY2NvcmRpbmdseS5cbiAgICAgICAgICogKi9cbiAgICAgICAgaWYgKHRoaXMuX2JzRGVmYXVsdExvYWRDaGVjaykge1xuICAgICAgICAgICAgdGhpcy5fYnNEZWZhdWx0TG9hZENoZWNrID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXREYXRhVmFsdWUobmV3VmFsKTtcbiAgICB9XG59XG4iXX0=
254
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZXBvY2gvc3JjL2RhdGUvZGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHlCQUF5QixFQUFFLFdBQVcsRUFBYyxjQUFjLEVBQUUsVUFBVSxFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUFFLHlCQUF5QixFQUFFLHFCQUFxQixFQUFPLE1BQU0sVUFBVSxDQUFDO0FBQ3RPLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBSzdDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQztBQUNwQyxNQUFNLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQztBQUMzQyxNQUFNLGFBQWEsR0FBa0I7SUFDakMsVUFBVSxFQUFFLFNBQVM7SUFDckIsU0FBUyxFQUFFLFdBQVc7Q0FDekIsQ0FBQztBQVdGLE1BQU0sT0FBTyxhQUFjLFNBQVEscUJBQXFCO0lBdURwRCx3RkFBd0Y7SUFDeEYsWUFDSSxHQUFhLEVBQ0wsS0FBd0IsRUFDeEIsV0FBd0IsRUFDRCxjQUFjO1FBRTdDLEtBQUssQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFKbEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFyRDdCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFDdkIsOEJBQXlCLEdBQUcsS0FBSyxDQUFDO1FBd0R0QyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVqQyxrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFlBQVksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxHQUFHLFlBQVksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDdkUsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzFDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsSUFBSSx3QkFBd0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBekRELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDZixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxJQUFJLFlBQVksQ0FBQztJQUM3RCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ1osT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4SSxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDbEIsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hJLENBQUM7SUFFRCxhQUFhO0lBQ2IsSUFBSSxTQUFTO1FBQ1QsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNySSxDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLDJEQUEyRDtJQUMzRCxhQUFhO0lBQ2IsSUFBSSxTQUFTLENBQUMsTUFBTTtRQUNoQixJQUFJLE1BQU0sS0FBSyxZQUFZLEVBQUU7WUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDckYsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDN0I7YUFBTTtZQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3RILElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1NBQzlCO1FBQ0QsaUNBQWlDO1FBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBd0JEOztPQUVHO0lBQ0gsbUJBQW1CLENBQUMsTUFBTSxFQUFFLGlCQUEwQixLQUFLO1FBQ3ZELElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFO1lBQ2hDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxLQUFLLENBQUM7WUFDdkMsT0FBTztTQUNWO1FBQ0QsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBQyxDQUFDLENBQUM7UUFDNUcsMEJBQTBCO1FBQzFCLDZEQUE2RDtRQUM3RCxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsRUFBRTtZQUNyRSxPQUFPO1NBQ1Y7UUFDRCxtREFBbUQ7UUFDbkQsNERBQTREO1FBQzVELElBQUksY0FBYyxJQUFJLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLEVBQUU7WUFDM0csT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsMkRBQTJEO0lBQ25ELFlBQVksQ0FBQyxNQUFNO1FBQ3ZCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDbkMsMkNBQTJDO1FBQzNDLHNFQUFzRTtRQUN0RSxJQUFJLENBQUMsK0JBQStCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNwSSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDdkU7UUFDRCxJQUFJLE1BQU0sRUFBRTtZQUNSLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO1NBQzdCO2FBQU07WUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztTQUNoQztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGdCQUFnQjtRQUNaLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3JGLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ25CLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUMxQjtRQUVELCtGQUErRjtRQUMvRixtSUFBbUk7UUFDbkksdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUNuRCxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSwrREFBK0QsQ0FBQyxDQUFDO1FBQ2xHLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5Qyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsSCx5QkFBeUIsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN4SCxDQUFDO0lBQ0QsV0FBVyxDQUFDLE1BQU07UUFDZCxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDbkQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ2hEO0lBQ0wsQ0FBQztJQUVNLHNCQUFzQjs7UUFDekIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUUsVUFBVSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQztRQUN2QyxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtZQUM5QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxxREFBcUQ7SUFDM0MsV0FBVyxDQUFDLElBQWlCLEVBQUUsU0FBaUIsRUFBRSxRQUFrQixFQUFFLE1BQVc7UUFDdkYsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRTtZQUM5RCxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3hEO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFlBQXFCLEtBQUs7UUFDdkQsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDMUIsNkRBQTZEO1lBQzdELElBQUcsQ0FBQyxTQUFTLEVBQUM7Z0JBQ1YsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDL0I7U0FDSjtRQUNELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7WUFDekIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN6QjtRQUNELElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFO1lBQy9HLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU8sb0JBQW9CLENBQUMsWUFBWTtRQUNyQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2YsT0FBTztTQUNWO1FBQ0QsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osTUFBTSxzQkFBc0IsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUN0RixJQUFJLENBQUMsdUJBQXVCLEdBQUcseUJBQXlCLENBQUMsV0FBVyxFQUFFLHNCQUFzQixFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRyxFQUFFO2dCQUN2TCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUN4QixDQUFDLGdCQUFtQixJQUFJLENBQUMsQ0FBQztRQUM5QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRUQ7O09BRUc7SUFDSSxnQkFBZ0IsQ0FBQyxLQUFLO1FBQ3pCLElBQUksSUFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUMzRCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RFLElBQUksTUFBTSxLQUFLLE9BQU8sSUFBSSxNQUFNLEtBQUssV0FBVyxFQUFFO2dCQUM5QyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBQyxDQUFDLENBQUM7Z0JBQzNFLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNuSSxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxXQUFXLEVBQUU7b0JBQzlDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssYUFBYSxFQUFFO3dCQUM5RCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO3dCQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO3FCQUNyRDtpQkFDSjtxQkFBTSxJQUFJLFFBQVEsSUFBSSxRQUFRLEtBQUssYUFBYSxFQUFFO29CQUMvQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO29CQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO2lCQUNyRDtxQkFBTTtvQkFDSCxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO29CQUNuQyxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDO29CQUN0QyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxHQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztpQkFDMUU7Z0JBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2hDO2lCQUFNO2dCQUNILElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2FBQ2pDO1NBQ0o7YUFBTTtZQUNILElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWSxDQUFDLE1BQU07UUFFZjs7Ozs7YUFLSztRQUNMLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzFCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7WUFDakMsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixDQUFDOztBQXBQTSw2QkFBZSxHQUFHLGFBQWEsRUFBRSxDQUFDOztZQVY1QyxTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLGkwRkFBb0M7Z0JBQ3BDLFNBQVMsRUFBRTtvQkFDUCxTQUFTLENBQUMsYUFBYSxFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQztvQkFDakQsU0FBUyxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDO29CQUM3QyxrQkFBa0IsQ0FBQyxhQUFhLENBQUM7aUJBQ3BDO2FBQ0o7OztZQTdCOEMsUUFBUTtZQUE5QyxpQkFBaUI7WUFNbUMsV0FBVzs0Q0FvRi9ELE1BQU0sU0FBQyxxQkFBcUI7OztvQ0FQaEMsU0FBUyxTQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0b3IsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIE5HX1ZBTElEQVRPUlMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFVkVOVF9NQU5BR0VSX1BMVUdJTlMgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHsgQnNEYXRlcGlja2VyRGlyZWN0aXZlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kYXRlcGlja2VyJztcblxuaW1wb3J0IHsgYWRqdXN0Q29udGFpbmVyUG9zaXRpb24sIGFkZEV2ZW50TGlzdGVuZXJPbkVsZW1lbnQsIEFwcERlZmF1bHRzLCBFVkVOVF9MSUZFLCBGb3JtV2lkZ2V0VHlwZSwgZ2V0RGF0ZU9iaiwgZ2V0RGlzcGxheURhdGVUaW1lRm9ybWF0LCBnZXRGb3JtYXR0ZWREYXRlLCBhZGp1c3RDb250YWluZXJSaWdodEVkZ2VzLCBnZXRNb21lbnRMb2NhbGVPYmplY3QsIEFwcCB9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7SVdpZGdldENvbmZpZywgcHJvdmlkZUFzLCBwcm92aWRlQXNXaWRnZXRSZWYsIHNldEZvY3VzVHJhcCwgc3R5bGVyfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IEJhc2VEYXRlVGltZUNvbXBvbmVudCB9IGZyb20gJy4vLi4vYmFzZS1kYXRlLXRpbWUuY29tcG9uZW50JztcbmltcG9ydCB7IHJlZ2lzdGVyUHJvcHMgfSBmcm9tICcuL2RhdGUucHJvcHMnO1xuaW1wb3J0IHsgY3JlYXRlRm9jdXNUcmFwIH0gZnJvbSAnQHdhdmVtYWtlci9mb2N1cy10cmFwL2Rpc3QvZm9jdXMtdHJhcCc7XG5cbmRlY2xhcmUgY29uc3QgXywgJCwgbW9tZW50O1xuXG5jb25zdCBDVVJSRU5UX0RBVEUgPSAnQ1VSUkVOVF9EQVRFJztcbmNvbnN0IERFRkFVTFRfQ0xTID0gJ2FwcC1kYXRlIGlucHV0LWdyb3VwJztcbmNvbnN0IFdJREdFVF9DT05GSUc6IElXaWRnZXRDb25maWcgPSB7XG4gICAgd2lkZ2V0VHlwZTogJ3dtLWRhdGUnLFxuICAgIGhvc3RDbGFzczogREVGQVVMVF9DTFNcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnW3dtRGF0ZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzKERhdGVDb21wb25lbnQsIE5HX1ZBTFVFX0FDQ0VTU09SLCB0cnVlKSxcbiAgICAgICAgcHJvdmlkZUFzKERhdGVDb21wb25lbnQsIE5HX1ZBTElEQVRPUlMsIHRydWUpLFxuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoRGF0ZUNvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlRGF0ZVRpbWVDb21wb25lbnQge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG5cbiAgICBwdWJsaWMgYnNEYXRhVmFsdWU7XG4gICAgcHVibGljIHNob3dkcm9wZG93bm9uOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBkYXRlQ29udGFpbmVyQ2xzOiBzdHJpbmc7XG4gICAgcHVibGljIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgaXNFbnRlclByZXNzZWRPbkRhdGVJbnB1dCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2JzRGVmYXVsdExvYWRDaGVjazogYm9vbGVhbjtcbiAgICBwdWJsaWMgaGludDogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBrZXlFdmVudFBsdWdpbjtcbiAgICBwcml2YXRlIGRlcmVnaXN0ZXJFdmVudExpc3RlbmVyO1xuICAgIHByaXZhdGUgaXNDdXJyZW50RGF0ZTtcbiAgICBwcml2YXRlIGZvY3VzVHJhcDtcblxuICAgIGdldCB0aW1lc3RhbXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJzRGF0YVZhbHVlID8gdGhpcy5ic0RhdGFWYWx1ZS52YWx1ZU9mKCkgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0IGRhdGVJbnB1dEZvcm1hdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVPcHRpb25zLmRhdGVJbnB1dEZvcm1hdCB8fCAneXl5eS1NTS1kZCc7XG4gICAgfVxuXG4gICAgZ2V0IGRpc3BsYXlWYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIGdldEZvcm1hdHRlZERhdGUodGhpcy5kYXRlUGlwZSwgdGhpcy5ic0RhdGFWYWx1ZSwgdGhpcy5kYXRlSW5wdXRGb3JtYXQsIHRoaXMudGltZVpvbmUsIG51bGwsIHRoaXMuaXNDdXJyZW50RGF0ZSwgdGhpcykgfHwgJyc7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZURpc3BsYXlWYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIGdldEZvcm1hdHRlZERhdGUodGhpcy5kYXRlUGlwZSwgdGhpcy5ic0RhdGFWYWx1ZSwgJ3l5eXktTU0tZGQnLCB0aGlzLnRpbWVab25lLCBudWxsLCB0aGlzLmlzQ3VycmVudERhdGUsIHRoaXMpIHx8ICcnO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBnZXQgZGF0YXZhbHVlKCkge1xuICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVkRGF0ZSh0aGlzLmRhdGVQaXBlLCB0aGlzLmJzRGF0YVZhbHVlLCB0aGlzLm91dHB1dGZvcm1hdCwgdGhpcy50aW1lWm9uZSwgbnVsbCwgdGhpcy5pc0N1cnJlbnREYXRlLCB0aGlzKSB8fCAnJztcbiAgICB9XG5cbiAgICAvLyBUb2RvW1NodWJoYW1dOiBuZWVkcyB0byBiZSByZWRlZmluZWRcbiAgICAvLyBzZXRzIHRoZSBkYXRhVmFsdWUgYW5kIGNvbXB1dGVzIHRoZSBkaXNwbGF5IG1vZGVsIHZhbHVlc1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzZXQgZGF0YXZhbHVlKG5ld1ZhbCkge1xuICAgICAgICBpZiAobmV3VmFsID09PSBDVVJSRU5UX0RBVEUpIHtcbiAgICAgICAgICAgIHRoaXMuYnNEYXRhVmFsdWUgPSB0aGlzLnRpbWVab25lID8gZ2V0TW9tZW50TG9jYWxlT2JqZWN0KHRoaXMudGltZVpvbmUpIDogbmV3IERhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuaXNDdXJyZW50RGF0ZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJzRGF0YVZhbHVlID0gbmV3VmFsID8gZ2V0RGF0ZU9iaihuZXdWYWwsIHtpc05hdGl2ZVBpY2tlcjogdGhpcy5sb2FkTmF0aXZlRGF0ZUlucHV0fSwgdGhpcy50aW1lWm9uZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLmlzQ3VycmVudERhdGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyB1cGRhdGUgdGhlIHByZXZpb3VzIGRhdGF2YWx1ZS5cbiAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSwgdW5kZWZpbmVkLCB0cnVlKTtcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZChCc0RhdGVwaWNrZXJEaXJlY3RpdmUpIHByb3RlY3RlZCBic0RhdGVQaWNrZXJEaXJlY3RpdmU7XG5cbiAgICAvLyBUT0RPIHVzZSBCc0xvY2FsZVNlcnZpY2UgdG8gc2V0IHRoZSBjdXJyZW50IHVzZXIncyBsb2NhbGUgdG8gc2VlIHRoZSBsb2NhbGl6ZWQgbGFiZWxzXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluajogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGFwcERlZmF1bHRzOiBBcHBEZWZhdWx0cyxcbiAgICAgICAgQEluamVjdChFVkVOVF9NQU5BR0VSX1BMVUdJTlMpIGV2dE1uZ3JQbHVnaW5zXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRyk7XG4gICAgICAgIHN0eWxlcih0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMpO1xuXG4gICAgICAgIC8vIEtleUV2ZW50c1BsdWdpblxuICAgICAgICB0aGlzLmtleUV2ZW50UGx1Z2luID0gZXZ0TW5nclBsdWdpbnNbMV07XG4gICAgICAgIHRoaXMuZGF0ZUNvbnRhaW5lckNscyA9IGBhcHAtZGF0ZS0ke3RoaXMud2lkZ2V0SWR9YDtcbiAgICAgICAgdGhpcy5fZGF0ZU9wdGlvbnMuY29udGFpbmVyQ2xhc3MgPSBgYXBwLWRhdGUgJHt0aGlzLmRhdGVDb250YWluZXJDbHN9YDtcbiAgICAgICAgdGhpcy5fZGF0ZU9wdGlvbnMuc2hvd1dlZWtOdW1iZXJzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2JzRGVmYXVsdExvYWRDaGVjayA9IHRydWU7XG4gICAgICAgIHRoaXMuZGF0ZXBhdHRlcm4gPSB0aGlzLmFwcERlZmF1bHRzLmRhdGVGb3JtYXQgfHwgZ2V0RGlzcGxheURhdGVUaW1lRm9ybWF0KEZvcm1XaWRnZXRUeXBlLkRBVEUpO1xuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1hdCgnZGF0ZXBhdHRlcm4nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB0cmlnZ2VyZWQgd2hlbiB0aGUgZGF0ZSBpbnB1dCBjaGFuZ2VzXG4gICAgICovXG4gICAgb25EaXNwbGF5RGF0ZUNoYW5nZSgkZXZlbnQsIGlzTmF0aXZlUGlja2VyOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbnRlclByZXNzZWRPbkRhdGVJbnB1dCkge1xuICAgICAgICAgICAgdGhpcy5pc0VudGVyUHJlc3NlZE9uRGF0ZUlucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3VmFsID0gZ2V0RGF0ZU9iaigkZXZlbnQudGFyZ2V0LnZhbHVlLCB7cGF0dGVybjogdGhpcy5kYXRlcGF0dGVybiwgaXNOYXRpdmVQaWNrZXI6IGlzTmF0aXZlUGlja2VyfSk7XG4gICAgICAgIC8vIGRhdGUgcGF0dGVybiB2YWxpZGF0aW9uXG4gICAgICAgIC8vIGlmIGludmFsaWQgcGF0dGVybiBpcyBlbnRlcmVkLCBkZXZpY2UgaXMgc2hvd2luZyBhbiBlcnJvci5cbiAgICAgICAgaWYgKCF0aGlzLmZvcm1hdFZhbGlkYXRpb24obmV3VmFsLCAkZXZlbnQudGFyZ2V0LnZhbHVlLCBpc05hdGl2ZVBpY2tlcikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBtaW4gZGF0ZSBhbmQgbWF4IGRhdGUgdmFsaWRhdGlvbiBpbiBtb2JpbGUgdmlldy5cbiAgICAgICAgLy8gaWYgaW52YWxpZCBkYXRlcyBhcmUgZW50ZXJlZCwgZGV2aWNlIGlzIHNob3dpbmcgYW4gYWxlcnQuXG4gICAgICAgIGlmIChpc05hdGl2ZVBpY2tlciAmJiB0aGlzLm1pbkRhdGVNYXhEYXRlVmFsaWRhdGlvbk9uSW5wdXQobmV3VmFsLCAkZXZlbnQsIHRoaXMuZGlzcGxheVZhbHVlLCBpc05hdGl2ZVBpY2tlcikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldERhdGFWYWx1ZShuZXdWYWwpO1xuICAgIH1cblxuICAgIC8vIHNldHMgdGhlIGRhdGFWYWx1ZSBhbmQgY29tcHV0ZXMgdGhlIGRpc3BsYXkgbW9kZWwgdmFsdWVzXG4gICAgcHJpdmF0ZSBzZXREYXRhVmFsdWUobmV3VmFsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW52YWxpZERhdGVUaW1lRm9ybWF0ID0gZmFsc2U7XG4gICAgICAgIC8vIG1pbiBkYXRlIGFuZCBtYXggZGF0ZSB2YWxpZGF0aW9uIGluIHdlYi5cbiAgICAgICAgLy8gaWYgaW52YWxpZCBkYXRlcyBhcmUgZW50ZXJlZCwgZGV2aWNlIGlzIHNob3dpbmcgdmFsaWRhdGlvbiBtZXNzYWdlLlxuICAgICAgICB0aGlzLm1pbkRhdGVNYXhEYXRlVmFsaWRhdGlvbk9uSW5wdXQobmV3VmFsKTtcbiAgICAgICAgaWYgKGdldEZvcm1hdHRlZERhdGUodGhpcy5kYXRlUGlwZSwgbmV3VmFsLCB0aGlzLmRhdGVJbnB1dEZvcm1hdCwgdGhpcy50aW1lWm9uZSwgbnVsbCwgdGhpcy5pc0N1cnJlbnREYXRlLCB0aGlzKSA9PT0gdGhpcy5kaXNwbGF5VmFsdWUpIHtcbiAgICAgICAgICAgICQodGhpcy5uYXRpdmVFbGVtZW50KS5maW5kKCcuZGlzcGxheS1pbnB1dCcpLnZhbCh0aGlzLmRpc3BsYXlWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5ld1ZhbCkge1xuICAgICAgICAgICAgdGhpcy5ic0RhdGFWYWx1ZSA9IG5ld1ZhbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYnNEYXRhVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSwge30sIHRydWUpO1xuICAgIH1cblxuICAgIG9uRGF0ZVBpY2tlck9wZW4oKSB7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5ic0RhdGFWYWx1ZSA/IHRoaXMuYWN0aXZlRGF0ZSA9IHRoaXMuYnNEYXRhVmFsdWUgOiB0aGlzLmFjdGl2ZURhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBpZiAoIXRoaXMuYnNEYXRhVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuaGlnaHRsaWdodFRvZGF5KCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXZSBhcmUgdXNpbmcgdGhlIHR3byBpbnB1dCB0YWdzKFRvIG1haW50YWluIHRoZSBtb2RhbCBhbmQgcHJveHkgbW9kYWwpIGZvciB0aGUgZGF0ZSBjb250cm9sLlxuICAgICAgICAvLyBTbyBhY3R1YWwgYm9vdHN0cmFwIGlucHV0IHRhcmdldCB3aWR0aCB3ZSBtYWRlIGl0IHRvIDAsIHNvIGJvb3RzdHJhcCBjYWxjdWxhdGluZyB0aGUgY2FsZW5kYXIgY29udGFpbmVyIHRvcCBwb3NpdGlvbiBpbXByb3Blcmx5LlxuICAgICAgICAvLyBUbyBmaXggdGhlIGNvbnRhaW5lciB0b3AgcG9zaXRpb24gc2V0IHRoZSB3aWR0aCAxcHg7XG4gICAgICAgIHRoaXMuJGVsZW1lbnQuZmluZCgnLm1vZGVsLWhvbGRlcicpLndpZHRoKCcxcHgnKTtcbiAgICAgICAgY29uc3QgZHBDb250YWluZXJFbCA9ICQoJ2JzLWRhdGVwaWNrZXItY29udGFpbmVyJyk7XG4gICAgICAgIGRwQ29udGFpbmVyRWwuYXR0cignYXJpYS1sYWJlbCcsICdVc2UgQXJyb3cga2V5cyB0byBuYXZpZ2F0ZSBkYXRlcywgQ2hvb3NlIERhdGUgZnJvbSBkYXRlcGlja2VyJyk7XG4gICAgICAgICQoJy5icy1jYWxlbmRhci1jb250YWluZXInKS5yZW1vdmVBdHRyKCdyb2xlJyk7XG4gICAgICAgIGNvbnN0IGRhdGVQaWNrZXJDb250YWluZXIgPSAkKCcuYnMtZGF0ZXBpY2tlci1jb250YWluZXInKVswXTtcbiAgICAgICAgdGhpcy5mb2N1c1RyYXAgPSBzZXRGb2N1c1RyYXAoZGF0ZVBpY2tlckNvbnRhaW5lciwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuZm9jdXNUcmFwLmFjdGl2YXRlKCk7XG4gICAgICAgIHRoaXMuYWRkRGF0ZXBpY2tlcktleWJvYXJkRXZlbnRzKHRoaXMsIGZhbHNlKTtcbiAgICAgICAgYWRqdXN0Q29udGFpbmVyUG9zaXRpb24oJCgnYnMtZGF0ZXBpY2tlci1jb250YWluZXInKSwgdGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLmJzRGF0ZVBpY2tlckRpcmVjdGl2ZS5fZGF0ZXBpY2tlcik7XG4gICAgICAgIGFkanVzdENvbnRhaW5lclJpZ2h0RWRnZXMoJCgnYnMtZGF0ZXBpY2tlci1jb250YWluZXInKSwgdGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLmJzRGF0ZVBpY2tlckRpcmVjdGl2ZS5fZGF0ZXBpY2tlcik7XG4gICAgfVxuICAgIG9uSW5wdXRCbHVyKCRldmVudCkge1xuICAgICAgICBpZiAoISQoJGV2ZW50LnJlbGF0ZWRUYXJnZXQpLmhhc0NsYXNzKCdjdXJyZW50LWRhdGUnKSkge1xuICAgICAgICAgICAgdGhpcy5pbnZva2VPblRvdWNoZWQoKTtcbiAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnYmx1cicsIHsgJGV2ZW50IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhpZGVEYXRlcGlja2VyRHJvcGRvd24oKSB7XG4gICAgICAgIHRoaXMuaW52b2tlT25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9jdXNUcmFwPy5kZWFjdGl2YXRlKCk7XG4gICAgICAgIHRoaXMuaXNFbnRlclByZXNzZWRPbkRhdGVJbnB1dCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5kZXJlZ2lzdGVyRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kZXJlZ2lzdGVyRXZlbnRMaXN0ZW5lcigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYmx1ckRhdGVJbnB1dCh0aGlzLmlzT3Blbik7XG4gICAgfVxuXG4gICAgLy8gY2hhbmdlIGFuZCBibHVyIGV2ZW50cyBhcmUgYWRkZWQgZnJvbSB0aGUgdGVtcGxhdGVcbiAgICBwcm90ZWN0ZWQgaGFuZGxlRXZlbnQobm9kZTogSFRNTEVsZW1lbnQsIGV2ZW50TmFtZTogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24sIGxvY2FsczogYW55KSB7XG4gICAgICAgIGlmICghXy5pbmNsdWRlcyhbJ2JsdXInLCAnZm9jdXMnLCAnY2hhbmdlJywgJ2NsaWNrJ10sIGV2ZW50TmFtZSkpIHtcbiAgICAgICAgICAgIHN1cGVyLmhhbmRsZUV2ZW50KG5vZGUsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIGxvY2Fscyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB1c2VkIHRvIHRvZ2dsZSB0aGUgZHJvcGRvd24gb2YgdGhlIGRhdGUgd2lkZ2V0XG4gICAgICovXG4gICAgIHB1YmxpYyB0b2dnbGVEcERyb3Bkb3duKCRldmVudCwgc2tpcEZvY3VzOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHRoaXMubG9hZE5hdGl2ZURhdGVJbnB1dCkge1xuICAgICAgICAgICAgLy9GaXhlcyBjbGljayBldmVudCBnZXR0aW5nIHRyaWdncmVkIHR3aWNlIGluIE1vYmlsZSBkZXZpY2VzLlxuICAgICAgICAgICAgaWYoIXNraXBGb2N1cyl7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkRhdGVUaW1lSW5wdXRGb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICgkZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xuICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdjbGljaycsIHsgJGV2ZW50OiAkZXZlbnQgfSk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzT25JbnB1dEVsKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCRldmVudC50YXJnZXQgJiYgJCgkZXZlbnQudGFyZ2V0KS5pcygnaW5wdXQnKSAmJiAhKHRoaXMuaXNEcm9wRG93bkRpc3BsYXlFbmFibGVkT25JbnB1dCh0aGlzLnNob3dkcm9wZG93bm9uKSkpIHtcbiAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJzRGF0ZVBpY2tlckRpcmVjdGl2ZS50b2dnbGUoKTtcbiAgICAgICAgdGhpcy5hZGRCb2R5Q2xpY2tMaXN0ZW5lcih0aGlzLmJzRGF0ZVBpY2tlckRpcmVjdGl2ZS5pc09wZW4pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkQm9keUNsaWNrTGlzdGVuZXIoc2tpcExpc3RlbmVyKSB7XG4gICAgICAgIGlmICghc2tpcExpc3RlbmVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYm9keUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5Jyk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYnNEYXRlQ29udGFpbmVyRWxlbWVudCA9IGJvZHlFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke3RoaXMuZGF0ZUNvbnRhaW5lckNsc31gKTtcbiAgICAgICAgICAgIHRoaXMuZGVyZWdpc3RlckV2ZW50TGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyT25FbGVtZW50KGJvZHlFbGVtZW50LCBic0RhdGVDb250YWluZXJFbGVtZW50LCB0aGlzLm5hdGl2ZUVsZW1lbnQsICdjbGljaycsIHRoaXMuaXNEcm9wRG93bkRpc3BsYXlFbmFibGVkT25JbnB1dCh0aGlzLnNob3dkcm9wZG93bm9uKSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICB9LCBFVkVOVF9MSUZFLk9OQ0UsIHRydWUpO1xuICAgICAgICB9LCAzNTApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHRyaWdnZXJlZCB3aGVuIHByZXNzaW5nIGtleSBvbiB0aGUgZGF0ZSBpbnB1dFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkRpc3BsYXlLZXlkb3duKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzRHJvcERvd25EaXNwbGF5RW5hYmxlZE9uSW5wdXQodGhpcy5zaG93ZHJvcGRvd25vbikpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5rZXlFdmVudFBsdWdpbi5jb25zdHJ1Y3Rvci5nZXRFdmVudEZ1bGxLZXkoZXZlbnQpO1xuICAgICAgICAgICAgaWYgKGFjdGlvbiA9PT0gJ2VudGVyJyB8fCBhY3Rpb24gPT09ICdhcnJvd2Rvd24nKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3VmFsID0gZ2V0RGF0ZU9iaihldmVudC50YXJnZXQudmFsdWUsIHtwYXR0ZXJuOiB0aGlzLmRhdGVwYXR0ZXJufSk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gZ2V0Rm9ybWF0dGVkRGF0ZSh0aGlzLmRhdGVQaXBlLCBuZXdWYWwsIHRoaXMuZGF0ZUlucHV0Rm9ybWF0LCB0aGlzLnRpbWVab25lLCBudWxsLCB0aGlzLmlzQ3VycmVudERhdGUsIHRoaXMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0VmFsID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRyaW0oKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXRWYWwgJiYgdGhpcy5kYXRlcGF0dGVybiA9PT0gJ3RpbWVzdGFtcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFfLmlzTmFOKGlucHV0VmFsKSAmJiBfLnBhcnNlSW50KGlucHV0VmFsKSAhPT0gZm9ybWF0dGVkRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkRGF0ZVRpbWVGb3JtYXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSwgZXZlbnQsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXRWYWwgJiYgaW5wdXRWYWwgIT09IGZvcm1hdHRlZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkRGF0ZVRpbWVGb3JtYXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludm9rZU9uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlLCBldmVudCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZERhdGVUaW1lRm9ybWF0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNFbnRlclByZXNzZWRPbkRhdGVJbnB1dCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnNEYXRlUGlja2VyRGlyZWN0aXZlLmJzVmFsdWUgPSAgZXZlbnQudGFyZ2V0LnZhbHVlID8gbmV3VmFsIDogJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlRHBEcm9wZG93bihldmVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZURhdGVwaWNrZXJEcm9wZG93bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oaWRlRGF0ZXBpY2tlckRyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZCB0cmlnZ2VyZWQgd2hlbiB0aGUgZGF0ZSBzZWxlY3Rpb24gY2hhbmdlc1xuICAgICAqL1xuICAgIG9uRGF0ZUNoYW5nZShuZXdWYWwpOiB2b2lkIHtcblxuICAgICAgICAvKipcbiAgICAgICAgICogIE5neC1ib290c3RyYXAgdXBncmFkZSA6IFRvIGF2b2lkIHRoZSBwYWdlIGxvYWQgZGF0ZWNoYW5nZSBldmVudDtcbiAgICAgICAgICogIFRPRE86XG4gICAgICAgICAqICBodHRwczovL2dpdGh1Yi5jb20vdmFsb3Itc29mdHdhcmUvbmd4LWJvb3RzdHJhcC9pc3N1ZXMvNjAxNlxuICAgICAgICAgKiAgRm9yIGFib3ZlIGlzc3VlLCBvbmNlIHdlIGdldCB0aGUgc29sdXRpb24gZnJvbSBOZ3gtQm9vdHN0cmFwIHRlYW0sICByZW1vdmUgdGhlIF9ic0RlZmF1bHRMb2FkQ2hlY2sgY2hlY2sgYW5kIHVwZGF0ZSBhY2NvcmRpbmdseS5cbiAgICAgICAgICogKi9cbiAgICAgICAgaWYgKHRoaXMuX2JzRGVmYXVsdExvYWRDaGVjaykge1xuICAgICAgICAgICAgdGhpcy5fYnNEZWZhdWx0TG9hZENoZWNrID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXREYXRhVmFsdWUobmV3VmFsKTtcbiAgICB9XG59XG4iXX0=
@@ -536,6 +536,7 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
536
536
  * @param isMouseEvent - boolean value represents the event is mouse event/ keyboard event
537
537
  */
538
538
  setActiveDateFocus(newDate, isMouseEvent) {
539
+ this.setNextData(newDate);
539
540
  const activeMonth = this.activeDate.getMonth();
540
541
  // check for keyboard event
541
542
  if (!isMouseEvent) {
@@ -630,8 +631,8 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
630
631
  this.setFocusForMonthOrDay();
631
632
  }
632
633
  });
633
- datePickerHead.find('.next').attr('aria-label', `Next Month ${this.next.fullMonth} ${this.next.date.getFullYear()}`);
634
- datePickerHead.find('.previous').attr('aria-label', `Previous Month ${this.prev.fullMonth} ${this.prev.date.getFullYear()}`);
634
+ datePickerHead.find('.next').attr('aria-label', `Next Month, ${this.next.fullMonth} ${this.next.date.getFullYear()}`);
635
+ datePickerHead.find('.previous').attr('aria-label', `Previous Month, ${this.prev.fullMonth} ${this.prev.date.getFullYear()}`);
635
636
  }
636
637
  /**
637
638
  * This method sets focus for months/days depending on the loaded datepicker table
@@ -713,16 +714,20 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
713
714
  this.loadDays();
714
715
  this.setActiveDateFocus(this.activeDate);
715
716
  }
717
+ setNextData(nextDate) {
718
+ this.next = this.getMonth(nextDate, 1);
719
+ this.prev = this.getMonth(nextDate, -1);
720
+ }
716
721
  /**
717
722
  * This method is used to add tabindex, keybord and mouse events for days
718
723
  */
719
724
  loadDays() {
720
725
  setTimeout(() => {
721
726
  $('[bsdatepickerdaydecorator]').not('.is-other-month').attr('tabindex', '0');
722
- if (this.clicked === false) {
723
- this.next = this.getMonth(this.activeDate, 1);
724
- this.prev = this.getMonth(this.activeDate, -1);
725
- }
727
+ // if (this.clicked === false) {
728
+ // this.next = this.getMonth(this.activeDate, 1);
729
+ // this.prev = this.getMonth(this.activeDate, -1);
730
+ // }
726
731
  this.addKeyBoardEventsForDays();
727
732
  this.addDatepickerMouseEvents();
728
733
  });
@@ -855,6 +860,7 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
855
860
  * This method is used to set focus for active month
856
861
  */
857
862
  setActiveMonthFocus(newDate, isMoouseEvent) {
863
+ this.setNextData(newDate);
858
864
  const newMonth = months[newDate.getMonth()];
859
865
  // check for keyboard event
860
866
  if (!isMoouseEvent) {
@@ -1522,7 +1528,7 @@ DateComponent.initializeProps = registerProps$2();
1522
1528
  DateComponent.decorators = [
1523
1529
  { type: Component, args: [{
1524
1530
  selector: '[wmDate]',
1525
- template: " <input class=\"form-control app-textbox app-dateinput display-input\"\n focus-target\n type=\"text\"\n [name]=\"name\"\n [tabindex]=\"tabindex\"\n [value]=\"displayValue\"\n (click)=\"toggleDpDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event);\"\n (blur)=\"onInputBlur($event)\"\n [disabled]=\"disabled || readonly\"\n [autofocus]=\"autofocus\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"hint\"\n (change)=\"onDisplayDateChange($event)\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event);\">\n\n <span class=\"input-group-btn\">\n <button type=\"button\"\n class=\"btn btn-default btn-time\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled || readonly\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : 'Choose date by pressing enter'\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"toggleDpDropdown($event, false)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-calendar\"></i>\n </button>\n </span>\n <div style=\"width: 0;display: inline-block;\">\n <input class=\"model-holder\"\n aria-label=\"datepicker dropdownmenu\"\n aria-controls=\"date\"\n [container]=\"containerTarget || 'body'\"\n [bsConfig]=\"_dateOptions\"\n [isOpen]=\"isOpen\"\n #datepicker=\"bsDatepicker\"\n bsDatepicker\n [daysDisabled]=\"excludedDaysToDisable\"\n [datesDisabled]=\"excludedDatesToDisable\"\n placement=\"bottom right\"\n [isDisabled]=\"disabled || readonly\"\n [bsValue]=\"bsDataValue\"\n (onShown)=\"onDatePickerOpen()\"\n (onHidden)=\"hideDatepickerDropdown()\"\n (bsValueChange)=\"onDateChange($event)\">\n</div>\n\n<ng-template [ngIf]=\"loadNativeDateInput\">\n <wm-datetimepicker\n dateTimePicker\n mode=\"DATE\"\n [config]=\"_dateOptions\"\n [placement]=\"modal\"\n [excludedDaysToDisable]=\"excludedDaysToDisable\"\n [excludedDatesToDisable]=\"excludedDatesToDisable\"\n [displayFormat]=\"dateInputFormat\"\n [value]=\"bsDataValue\"\n (change)=\"onDateChange($event)\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n tabindex=\"1000000\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event);\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n (click)=\"!(disabled || readonly || isCurrentDate) && showDatePickerModal()\">\n </div>\n</ng-template>\n",
1531
+ template: " <input class=\"form-control app-textbox app-dateinput display-input\"\n focus-target\n type=\"text\"\n [name]=\"name\"\n [tabindex]=\"tabindex\"\n [value]=\"displayValue\"\n (click)=\"toggleDpDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event);\"\n (blur)=\"onInputBlur($event)\"\n [disabled]=\"disabled || readonly\"\n [autofocus]=\"autofocus\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"hint\"\n (change)=\"onDisplayDateChange($event)\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event);\">\n\n <span class=\"input-group-btn\">\n <button type=\"button\"\n class=\"btn btn-default btn-time\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled || readonly\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : 'Choose date by pressing enter'\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"toggleDpDropdown($event, false)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-calendar\"></i>\n </button>\n </span>\n <div style=\"width: 0;display: inline-block;\">\n <input class=\"model-holder\"\n aria-label=\"datepicker dropdownmenu\"\n aria-controls=\"date\"\n [container]=\"containerTarget || 'body'\"\n [bsConfig]=\"_dateOptions\"\n [isOpen]=\"isOpen\"\n #datepicker=\"bsDatepicker\"\n bsDatepicker\n [daysDisabled]=\"excludedDaysToDisable\"\n [datesDisabled]=\"excludedDatesToDisable\"\n placement=\"bottom right\"\n [isDisabled]=\"disabled || readonly\"\n [bsValue]=\"bsDataValue\"\n (onShown)=\"onDatePickerOpen()\"\n (onHidden)=\"hideDatepickerDropdown()\"\n (bsValueChange)=\"onDateChange($event)\">\n</div>\n\n<ng-template [ngIf]=\"loadNativeDateInput\">\n <wm-datetimepicker\n dateTimePicker\n mode=\"DATE\"\n [config]=\"_dateOptions\"\n [placement]=\"modal\"\n [excludedDaysToDisable]=\"excludedDaysToDisable\"\n [excludedDatesToDisable]=\"excludedDatesToDisable\"\n [displayFormat]=\"dateInputFormat\"\n [value]=\"bsDataValue\"\n (change)=\"onDateChange($event)\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n tabindex=\"1000000\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event);\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n (click)=\"!(disabled || readonly || isCurrentDate) && showDatePickerModal()\">\n </div>\n</ng-template>\n",
1526
1532
  providers: [
1527
1533
  provideAs(DateComponent, NG_VALUE_ACCESSOR, true),
1528
1534
  provideAs(DateComponent, NG_VALIDATORS, true),