@acorex/components 5.2.2 → 5.2.53
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.
- package/README.md +2 -23
- package/esm2020/lib/accordion/accordion.component.mjs +44 -0
- package/esm2020/lib/accordion/accordion.module.mjs +20 -0
- package/esm2020/lib/base/base-page.class.mjs +94 -0
- package/esm2020/lib/base/components.class.mjs +17 -0
- package/esm2020/lib/base/element.class.mjs +294 -0
- package/esm2020/lib/base/events.class.mjs +6 -53
- package/esm2020/lib/button/button.component.mjs +58 -50
- package/esm2020/lib/button/button.module.mjs +11 -23
- package/esm2020/lib/calendar/calendar-box/calendar-box.component.mjs +413 -0
- package/esm2020/lib/calendar/calendar-box/calendar-box.module.mjs +22 -0
- package/esm2020/lib/calendar/scheduler/scheduler-views.property.mjs +54 -0
- package/esm2020/lib/calendar/scheduler/scheduler.class.mjs +18 -0
- package/esm2020/lib/calendar/scheduler/scheduler.component.mjs +213 -0
- package/esm2020/lib/calendar/scheduler/scheduler.module.mjs +68 -0
- package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.mjs +132 -0
- package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.mjs +37 -0
- package/esm2020/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.mjs +47 -0
- package/esm2020/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.mjs +95 -0
- package/esm2020/lib/calendar/scheduler/views/month/scheduler-month-view.component.mjs +204 -0
- package/esm2020/lib/calendar/scheduler/views/scheduler-view.component.mjs +99 -0
- package/esm2020/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.mjs +77 -0
- package/esm2020/lib/checkbox/checkbox.component.mjs +88 -31
- package/esm2020/lib/checkbox/checkbox.module.mjs +7 -8
- package/esm2020/lib/color-picker/color-box/color-box.component.mjs +422 -0
- package/esm2020/lib/color-picker/color-picker.component.mjs +82 -0
- package/esm2020/lib/color-picker/color-picker.module.mjs +24 -0
- package/esm2020/lib/context-menu/context-menu.component.mjs +65 -0
- package/esm2020/lib/context-menu/context-menu.directive.mjs +135 -0
- package/esm2020/lib/context-menu/context-menu.module.mjs +20 -0
- package/esm2020/lib/data-filter/columns/filter-column-date.component.mjs +138 -0
- package/esm2020/lib/data-filter/columns/filter-column-number.component.mjs +117 -0
- package/esm2020/lib/data-filter/columns/filter-column-selection.component.mjs +74 -0
- package/esm2020/lib/data-filter/columns/filter-column-string.component.mjs +117 -0
- package/esm2020/lib/data-filter/filter-panel/filter-panel.component.mjs +258 -0
- package/esm2020/lib/data-filter/filter.class.mjs +44 -0
- package/esm2020/lib/data-filter/filter.module.mjs +90 -0
- package/esm2020/lib/data-filter/toolbar/filter-toolbar.component.mjs +166 -0
- package/esm2020/lib/data-list/core/data-list.component.mjs +40 -0
- package/esm2020/lib/data-list/list/list.component.mjs +124 -0
- package/esm2020/lib/data-list/list/list.module.mjs +22 -0
- package/esm2020/lib/data-list/list/toolbar-list-view.component.mjs +85 -0
- package/esm2020/lib/data-source/datasource.component.mjs +47 -0
- package/esm2020/lib/data-source/datasource.module.mjs +18 -0
- package/esm2020/lib/data-source/read-param.mjs +5 -0
- package/esm2020/lib/date-picker/date-picker.component.mjs +705 -0
- package/esm2020/lib/date-picker/date-picker.module.mjs +25 -0
- package/esm2020/lib/dialog/dialog.component.mjs +17 -33
- package/esm2020/lib/dialog/dialog.module.mjs +10 -15
- package/esm2020/lib/dialog/dialog.service.mjs +129 -123
- package/esm2020/lib/drawer/content.component.mjs +18 -0
- package/esm2020/lib/drawer/drawer-container.component.mjs +25 -72
- package/esm2020/lib/drawer/drawer.component.mjs +100 -130
- package/esm2020/lib/drawer/drawer.module.mjs +7 -7
- package/esm2020/lib/dropdown/dropdown.component.mjs +177 -0
- package/esm2020/lib/dropdown/dropdown.module.mjs +17 -15
- package/esm2020/lib/fieldset/fieldset.component.mjs +59 -0
- package/esm2020/lib/fieldset/fieldset.module.mjs +19 -0
- package/esm2020/lib/form-group/form-group.component.mjs +34 -0
- package/esm2020/lib/form-group/form-group.module.mjs +21 -0
- package/esm2020/lib/label/label.component.mjs +13 -19
- package/esm2020/lib/label/label.module.mjs +5 -5
- package/esm2020/lib/loading/loading-indicator.component.mjs +17 -0
- package/esm2020/lib/loading/loading-panel.component.mjs +44 -0
- package/esm2020/lib/loading/loading.module.mjs +12 -26
- package/esm2020/lib/loading/loading.service.mjs +14 -123
- package/esm2020/lib/menu/menu-item.component.mjs +47 -0
- package/esm2020/lib/menu/menu.component.mjs +70 -119
- package/esm2020/lib/menu/menu.module.mjs +12 -30
- package/esm2020/lib/menu/menu2.component.mjs +96 -0
- package/esm2020/lib/number-box/number-box.component.mjs +586 -185
- package/esm2020/lib/number-box/number-box.module.mjs +10 -27
- package/esm2020/lib/page/content.component.mjs +32 -0
- package/esm2020/lib/page/footer.component.mjs +19 -0
- package/esm2020/lib/page/page.component.mjs +44 -49
- package/esm2020/lib/page/page.module.mjs +13 -10
- package/esm2020/lib/panel-box/panel-box.component.mjs +88 -0
- package/esm2020/lib/panel-box/panel-box.module.mjs +19 -0
- package/esm2020/lib/password-box/password-box.component.mjs +22 -50
- package/esm2020/lib/password-box/password-box.module.mjs +9 -21
- package/esm2020/lib/popover/custom-cdk-overlay.service.mjs +48 -0
- package/esm2020/lib/popover/overlay.service.mjs +87 -0
- package/esm2020/lib/popover/popover.component.mjs +83 -218
- package/esm2020/lib/popover/popover.module.mjs +5 -5
- package/esm2020/lib/popup/popup.component.mjs +112 -88
- package/esm2020/lib/popup/popup.module.mjs +14 -14
- package/esm2020/lib/popup/popup.service.mjs +20 -22
- package/esm2020/lib/progress-bar/progress-bar.component.mjs +12 -27
- package/esm2020/lib/progress-bar/progress-bar.module.mjs +6 -6
- package/esm2020/lib/property-editor/editors/check-editor/check-editor.mjs +61 -0
- package/esm2020/lib/property-editor/editors/check-editor/check.module.mjs +22 -0
- package/esm2020/lib/property-editor/editors/color-editor/color.editor.mjs +38 -0
- package/esm2020/lib/property-editor/editors/color-editor/color.module.mjs +24 -0
- package/esm2020/lib/property-editor/editors/column-editor/column.editor.mjs +115 -0
- package/esm2020/lib/property-editor/editors/column-editor/column.module.mjs +32 -0
- package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.mjs +211 -0
- package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.module.mjs +78 -0
- package/esm2020/lib/property-editor/editors/date-editor/date.editor.mjs +51 -0
- package/esm2020/lib/property-editor/editors/date-editor/date.module.mjs +24 -0
- package/esm2020/lib/property-editor/editors/number-editor/number.editor.mjs +63 -0
- package/esm2020/lib/property-editor/editors/number-editor/number.module.mjs +24 -0
- package/esm2020/lib/property-editor/editors/range-editor/range.editor.mjs +140 -0
- package/esm2020/lib/property-editor/editors/range-editor/range.module.mjs +61 -0
- package/esm2020/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.mjs +72 -0
- package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.editor.mjs +78 -0
- package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.module.mjs +25 -0
- package/esm2020/lib/property-editor/editors/selection-editor/selection-editor.mjs +69 -0
- package/esm2020/lib/property-editor/editors/selection-editor/selection.module.mjs +22 -0
- package/esm2020/lib/property-editor/editors/switch-editor/number.editor.mjs +29 -0
- package/esm2020/lib/property-editor/editors/switch-editor/number.module.mjs +25 -0
- package/esm2020/lib/property-editor/editors/text-editor/text.editor.mjs +32 -0
- package/esm2020/lib/property-editor/editors/text-editor/text.module.mjs +24 -0
- package/esm2020/lib/property-editor/editors/textarea-editor/textarea.editor.mjs +32 -0
- package/esm2020/lib/property-editor/editors/textarea-editor/textarea.module.mjs +24 -0
- package/esm2020/lib/property-editor/editors/time-editor/time.editor.mjs +43 -0
- package/esm2020/lib/property-editor/editors/time-editor/time.module.mjs +24 -0
- package/esm2020/lib/property-editor/property-editor-renderer.directive.mjs +152 -0
- package/esm2020/lib/property-editor/property-editor.class.mjs +101 -0
- package/esm2020/lib/property-editor/property-editor.module.mjs +196 -0
- package/esm2020/lib/query-builder/query-builder-group.component.mjs +124 -0
- package/esm2020/lib/query-builder/query-builder-popup/query-builder-popup.component.mjs +171 -0
- package/esm2020/lib/query-builder/query-builder-rule.component.mjs +357 -0
- package/esm2020/lib/query-builder/query-builder.class.mjs +20 -0
- package/esm2020/lib/query-builder/query-builder.component.mjs +82 -0
- package/esm2020/lib/query-builder/query-builder.module.mjs +59 -0
- package/esm2020/lib/query-builder/query-builder.service.mjs +191 -0
- package/esm2020/lib/search-bar/search-bar.component.mjs +235 -0
- package/esm2020/lib/search-bar/search-bar.module.mjs +28 -0
- package/esm2020/lib/searchbox/searchbox.component.mjs +79 -0
- package/esm2020/lib/searchbox/searchbox.module.mjs +24 -0
- package/esm2020/lib/selectbox/selectbox.component.mjs +886 -261
- package/esm2020/lib/selectbox/selectbox.module.mjs +33 -58
- package/esm2020/lib/selectbox/selectbox2.component.mjs +574 -0
- package/esm2020/lib/selection-list/selection-list.component.mjs +91 -40
- package/esm2020/lib/selection-list/selection-list.module.mjs +7 -10
- package/esm2020/lib/switch/switch.component.mjs +41 -23
- package/esm2020/lib/switch/switch.module.mjs +6 -7
- package/esm2020/lib/tab-page/tab-page-Renderer.component.mjs +71 -0
- package/esm2020/lib/tab-page/tab-page-host.component.mjs +116 -0
- package/esm2020/lib/tab-page/tab-page.module.mjs +21 -0
- package/esm2020/lib/tab-page/tab-page.service.mjs +156 -0
- package/esm2020/lib/tab-strip/tab-strip.component.mjs +36 -0
- package/esm2020/lib/tab-strip/tab-strip.module.mjs +19 -0
- package/esm2020/lib/tab-view/dynamic-tabs.directive.mjs +24 -0
- package/esm2020/lib/tab-view/tab-view.component.mjs +105 -0
- package/esm2020/lib/tab-view/tab-view.module.mjs +21 -0
- package/esm2020/lib/tab-view/tab.component.mjs +30 -0
- package/esm2020/lib/textarea/textarea.component.mjs +19 -18
- package/esm2020/lib/textarea/textarea.module.mjs +13 -18
- package/esm2020/lib/textbox/textbox.component.mjs +35 -23
- package/esm2020/lib/textbox/textbox.module.mjs +15 -34
- package/esm2020/lib/time-picker/time-picker.component.mjs +943 -0
- package/esm2020/lib/time-picker/time-picker.module.mjs +22 -0
- package/esm2020/lib/toast/toast-message/toast-message.component.mjs +74 -0
- package/esm2020/lib/toast/toast-wrapper/toast-wrapper.component.mjs +13 -0
- package/esm2020/lib/toast/toast.module.mjs +12 -13
- package/esm2020/lib/toast/toast.service.mjs +27 -97
- package/esm2020/lib/toolbar/group-button/toolbar-group-button.component.mjs +78 -0
- package/esm2020/lib/toolbar/menu/toolbar-menu.component.mjs +57 -0
- package/esm2020/lib/toolbar/search/toolbar-search.component.mjs +54 -0
- package/esm2020/lib/toolbar/title/toolbar-title.component.mjs +47 -0
- package/esm2020/lib/toolbar/toolbar-item.mjs +6 -0
- package/esm2020/lib/toolbar/toolbar.component.mjs +13 -0
- package/esm2020/lib/toolbar/toolbar.module.mjs +40 -0
- package/esm2020/lib/tooltip/tooltip.directive.mjs +84 -70
- package/esm2020/lib/tooltip/tooltip.module.mjs +8 -12
- package/esm2020/lib/tree-side-menu/tree-side-menu.component.mjs +646 -0
- package/esm2020/lib/tree-side-menu/tree-side-menu.module.mjs +35 -0
- package/esm2020/lib/tree-view/tree-view.component.mjs +726 -0
- package/esm2020/lib/tree-view/tree-view.module.mjs +22 -0
- package/esm2020/lib/upload-file/upload-file.component.mjs +170 -0
- package/esm2020/lib/upload-file/upload-file.events.mjs +2 -0
- package/esm2020/lib/upload-file/upload-file.module.mjs +24 -0
- package/esm2020/lib/validation/validation-form.component.mjs +65 -0
- package/esm2020/lib/validation/validation-rule.widget.mjs +25 -27
- package/esm2020/lib/validation/validation.class.mjs +1 -1
- package/esm2020/lib/validation/validation.component.mjs +89 -0
- package/esm2020/lib/validation/validation.module.mjs +12 -10
- package/esm2020/public-api.mjs +158 -51
- package/fesm2015/acorex-components.mjs +14726 -7264
- package/fesm2015/acorex-components.mjs.map +1 -1
- package/fesm2020/acorex-components.mjs +14592 -7157
- package/fesm2020/acorex-components.mjs.map +1 -1
- package/lib/accordion/accordion.component.d.ts +13 -0
- package/lib/accordion/accordion.module.d.ts +9 -0
- package/lib/base/base-page.class.d.ts +46 -0
- package/lib/base/components.class.d.ts +10 -0
- package/lib/base/element.class.d.ts +106 -0
- package/lib/base/events.class.d.ts +8 -75
- package/lib/button/button.component.d.ts +18 -18
- package/lib/button/button.module.d.ts +2 -6
- package/lib/calendar/calendar-box/calendar-box.component.d.ts +81 -0
- package/lib/calendar/calendar-box/calendar-box.module.d.ts +11 -0
- package/lib/calendar/scheduler/scheduler-views.property.d.ts +19 -0
- package/lib/calendar/scheduler/scheduler.class.d.ts +36 -0
- package/lib/calendar/scheduler/scheduler.component.d.ts +39 -0
- package/lib/calendar/scheduler/scheduler.module.d.ts +21 -0
- package/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.d.ts +25 -0
- package/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.d.ts +14 -0
- package/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.d.ts +16 -0
- package/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.d.ts +26 -0
- package/lib/calendar/scheduler/views/month/scheduler-month-view.component.d.ts +37 -0
- package/lib/calendar/scheduler/views/scheduler-view.component.d.ts +28 -0
- package/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.d.ts +24 -0
- package/lib/checkbox/checkbox.component.d.ts +27 -8
- package/lib/checkbox/checkbox.module.d.ts +1 -2
- package/lib/color-picker/color-box/color-box.component.d.ts +25 -0
- package/lib/color-picker/color-picker.component.d.ts +30 -0
- package/lib/color-picker/color-picker.module.d.ts +13 -0
- package/lib/context-menu/context-menu.component.d.ts +22 -0
- package/lib/context-menu/context-menu.directive.d.ts +38 -0
- package/lib/context-menu/context-menu.module.d.ts +9 -0
- package/lib/data-filter/columns/filter-column-date.component.d.ts +22 -0
- package/lib/data-filter/columns/filter-column-number.component.d.ts +15 -0
- package/lib/data-filter/columns/filter-column-selection.component.d.ts +18 -0
- package/lib/data-filter/columns/filter-column-string.component.d.ts +15 -0
- package/lib/data-filter/filter-panel/filter-panel.component.d.ts +45 -0
- package/lib/data-filter/filter.class.d.ts +40 -0
- package/lib/data-filter/filter.module.d.ts +24 -0
- package/lib/data-filter/toolbar/filter-toolbar.component.d.ts +25 -0
- package/lib/data-list/core/data-list.component.d.ts +15 -0
- package/lib/data-list/list/list.component.d.ts +40 -0
- package/lib/data-list/list/list.module.d.ts +11 -0
- package/lib/data-list/list/toolbar-list-view.component.d.ts +17 -0
- package/lib/data-source/datasource.component.d.ts +16 -0
- package/lib/data-source/datasource.module.d.ts +7 -0
- package/lib/data-source/read-param.d.ts +40 -0
- package/lib/date-picker/date-picker.component.d.ts +81 -0
- package/lib/date-picker/date-picker.module.d.ts +14 -0
- package/lib/dialog/dialog.component.d.ts +10 -11
- package/lib/dialog/dialog.module.d.ts +3 -6
- package/lib/dialog/dialog.service.d.ts +31 -31
- package/lib/{decorators → drawer}/content.component.d.ts +1 -2
- package/lib/drawer/drawer-container.component.d.ts +7 -10
- package/lib/drawer/drawer.component.d.ts +22 -21
- package/lib/drawer/drawer.module.d.ts +2 -2
- package/lib/dropdown/dropdown.component.d.ts +38 -0
- package/lib/dropdown/dropdown.module.d.ts +7 -7
- package/lib/fieldset/fieldset.component.d.ts +11 -0
- package/lib/fieldset/fieldset.module.d.ts +8 -0
- package/lib/form-group/form-group.component.d.ts +14 -0
- package/lib/form-group/form-group.module.d.ts +8 -0
- package/lib/label/label.component.d.ts +6 -9
- package/lib/loading/loading-indicator.component.d.ts +9 -0
- package/lib/loading/loading-panel.component.d.ts +13 -0
- package/lib/loading/loading.module.d.ts +5 -8
- package/lib/loading/loading.service.d.ts +4 -39
- package/lib/menu/menu-item.component.d.ts +18 -0
- package/lib/menu/menu.component.d.ts +30 -37
- package/lib/menu/menu.module.d.ts +5 -6
- package/lib/menu/menu2.component.d.ts +21 -0
- package/lib/number-box/number-box.component.d.ts +49 -72
- package/lib/number-box/number-box.module.d.ts +3 -6
- package/lib/page/content.component.d.ts +8 -0
- package/lib/page/{page-footer.component.d.ts → footer.component.d.ts} +1 -3
- package/lib/page/page.component.d.ts +9 -7
- package/lib/page/page.module.d.ts +6 -3
- package/lib/panel-box/panel-box.component.d.ts +19 -0
- package/lib/panel-box/panel-box.module.d.ts +8 -0
- package/lib/password-box/password-box.component.d.ts +8 -19
- package/lib/password-box/password-box.module.d.ts +3 -5
- package/lib/{base → popover}/custom-cdk-overlay.service.d.ts +0 -0
- package/lib/{base → popover}/overlay.service.d.ts +2 -3
- package/lib/popover/popover.component.d.ts +23 -42
- package/lib/popup/popup.component.d.ts +26 -32
- package/lib/popup/popup.module.d.ts +3 -2
- package/lib/popup/popup.service.d.ts +9 -25
- package/lib/progress-bar/progress-bar.component.d.ts +4 -15
- package/lib/property-editor/editors/check-editor/check-editor.d.ts +19 -0
- package/lib/property-editor/editors/check-editor/check.module.d.ts +11 -0
- package/lib/property-editor/editors/color-editor/color.editor.d.ts +13 -0
- package/lib/property-editor/editors/color-editor/color.module.d.ts +12 -0
- package/lib/property-editor/editors/column-editor/column.editor.d.ts +34 -0
- package/lib/property-editor/editors/column-editor/column.module.d.ts +20 -0
- package/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.d.ts +44 -0
- package/lib/property-editor/editors/conditional-color-editor/conditional-color.module.d.ts +19 -0
- package/lib/property-editor/editors/date-editor/date.editor.d.ts +28 -0
- package/lib/property-editor/editors/date-editor/date.module.d.ts +12 -0
- package/lib/property-editor/editors/number-editor/number.editor.d.ts +20 -0
- package/lib/property-editor/editors/number-editor/number.module.d.ts +12 -0
- package/lib/property-editor/editors/range-editor/range.editor.d.ts +29 -0
- package/lib/property-editor/editors/range-editor/range.module.d.ts +18 -0
- package/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.d.ts +29 -0
- package/lib/property-editor/editors/selectbox-editor/selectbox.editor.d.ts +29 -0
- package/lib/property-editor/editors/selectbox-editor/selectbox.module.d.ts +14 -0
- package/lib/property-editor/editors/selection-editor/selection-editor.d.ts +25 -0
- package/lib/property-editor/editors/selection-editor/selection.module.d.ts +11 -0
- package/lib/property-editor/editors/switch-editor/number.editor.d.ts +11 -0
- package/lib/property-editor/editors/switch-editor/number.module.d.ts +13 -0
- package/lib/property-editor/editors/text-editor/text.editor.d.ts +18 -0
- package/lib/property-editor/editors/text-editor/text.module.d.ts +12 -0
- package/lib/property-editor/editors/textarea-editor/textarea.editor.d.ts +17 -0
- package/lib/property-editor/editors/textarea-editor/textarea.module.d.ts +12 -0
- package/lib/property-editor/editors/time-editor/time.editor.d.ts +17 -0
- package/lib/property-editor/editors/time-editor/time.module.d.ts +12 -0
- package/lib/property-editor/property-editor-renderer.directive.d.ts +30 -0
- package/lib/property-editor/property-editor.class.d.ts +92 -0
- package/lib/property-editor/property-editor.module.d.ts +21 -0
- package/lib/query-builder/query-builder-group.component.d.ts +33 -0
- package/lib/query-builder/query-builder-popup/query-builder-popup.component.d.ts +35 -0
- package/lib/query-builder/query-builder-rule.component.d.ts +45 -0
- package/lib/query-builder/query-builder.class.d.ts +45 -0
- package/lib/query-builder/query-builder.component.d.ts +27 -0
- package/lib/query-builder/query-builder.module.d.ts +22 -0
- package/lib/query-builder/query-builder.service.d.ts +18 -0
- package/lib/search-bar/search-bar.component.d.ts +50 -0
- package/lib/search-bar/search-bar.module.d.ts +17 -0
- package/lib/searchbox/searchbox.component.d.ts +22 -0
- package/lib/searchbox/searchbox.module.d.ts +13 -0
- package/lib/selectbox/selectbox.component.d.ts +112 -70
- package/lib/selectbox/selectbox.module.d.ts +9 -14
- package/lib/selectbox/selectbox2.component.d.ts +103 -0
- package/lib/selection-list/selection-list.component.d.ts +27 -18
- package/lib/selection-list/selection-list.module.d.ts +1 -4
- package/lib/switch/switch.component.d.ts +17 -9
- package/lib/switch/switch.module.d.ts +1 -2
- package/lib/tab-page/tab-page-Renderer.component.d.ts +16 -0
- package/lib/tab-page/tab-page-host.component.d.ts +25 -0
- package/lib/tab-page/tab-page.module.d.ts +10 -0
- package/lib/tab-page/tab-page.service.d.ts +30 -0
- package/lib/tab-strip/tab-strip.component.d.ts +28 -0
- package/lib/tab-strip/tab-strip.module.d.ts +8 -0
- package/lib/tab-view/dynamic-tabs.directive.d.ts +16 -0
- package/lib/tab-view/tab-view.component.d.ts +26 -0
- package/lib/tab-view/tab-view.module.d.ts +10 -0
- package/lib/tab-view/tab.component.d.ts +12 -0
- package/lib/textarea/textarea.component.d.ts +8 -8
- package/lib/textarea/textarea.module.d.ts +4 -5
- package/lib/textbox/textbox.component.d.ts +12 -12
- package/lib/textbox/textbox.module.d.ts +4 -6
- package/lib/time-picker/time-picker.component.d.ts +52 -0
- package/lib/time-picker/time-picker.module.d.ts +11 -0
- package/lib/toast/toast-message/toast-message.component.d.ts +18 -0
- package/lib/toast/toast-wrapper/toast-wrapper.component.d.ts +8 -0
- package/lib/toast/toast.module.d.ts +4 -4
- package/lib/toast/toast.service.d.ts +13 -13
- package/lib/toolbar/group-button/toolbar-group-button.component.d.ts +12 -0
- package/lib/toolbar/menu/toolbar-menu.component.d.ts +24 -0
- package/lib/toolbar/search/toolbar-search.component.d.ts +16 -0
- package/lib/toolbar/title/toolbar-title.component.d.ts +9 -0
- package/lib/toolbar/toolbar-item.d.ts +3 -0
- package/lib/toolbar/toolbar.component.d.ts +8 -0
- package/lib/toolbar/toolbar.module.d.ts +14 -0
- package/lib/tooltip/tooltip.directive.d.ts +16 -13
- package/lib/tooltip/tooltip.module.d.ts +3 -5
- package/lib/tree-side-menu/tree-side-menu.component.d.ts +111 -0
- package/lib/tree-side-menu/tree-side-menu.module.d.ts +11 -0
- package/lib/tree-view/tree-view.component.d.ts +117 -0
- package/lib/tree-view/tree-view.module.d.ts +11 -0
- package/lib/upload-file/upload-file.component.d.ts +38 -0
- package/lib/upload-file/upload-file.events.d.ts +10 -0
- package/lib/upload-file/upload-file.module.d.ts +13 -0
- package/lib/validation/validation-form.component.d.ts +19 -0
- package/lib/validation/validation-rule.widget.d.ts +8 -10
- package/lib/validation/validation.class.d.ts +1 -2
- package/lib/validation/validation.component.d.ts +25 -0
- package/lib/validation/validation.module.d.ts +5 -3
- package/package.json +6 -8
- package/public-api.d.ts +155 -49
- package/esm2020/lib/action-sheet/action-sheet-item.component.mjs +0 -37
- package/esm2020/lib/action-sheet/action-sheet.component.mjs +0 -87
- package/esm2020/lib/action-sheet/action-sheet.module.mjs +0 -22
- package/esm2020/lib/action-sheet/index.mjs +0 -4
- package/esm2020/lib/alert/alert-button.component.mjs +0 -51
- package/esm2020/lib/alert/alert-content.component.mjs +0 -21
- package/esm2020/lib/alert/alert-footer.component.mjs +0 -27
- package/esm2020/lib/alert/alert-suffix.component.mjs +0 -27
- package/esm2020/lib/alert/alert-title.component.mjs +0 -23
- package/esm2020/lib/alert/alert.component.mjs +0 -123
- package/esm2020/lib/alert/alert.module.mjs +0 -44
- package/esm2020/lib/alert/index.mjs +0 -8
- package/esm2020/lib/avatar/avatar-group.component.mjs +0 -17
- package/esm2020/lib/avatar/avatar.component.mjs +0 -42
- package/esm2020/lib/avatar/avatar.module.mjs +0 -22
- package/esm2020/lib/avatar/index.mjs +0 -4
- package/esm2020/lib/badge/badge.component.mjs +0 -28
- package/esm2020/lib/badge/badge.module.mjs +0 -21
- package/esm2020/lib/badge/index.mjs +0 -3
- package/esm2020/lib/base/common.module.mjs +0 -19
- package/esm2020/lib/base/custom-cdk-overlay.service.mjs +0 -47
- package/esm2020/lib/base/drawing.class.mjs +0 -11
- package/esm2020/lib/base/index.mjs +0 -9
- package/esm2020/lib/base/infinite-scroll.directive.mjs +0 -63
- package/esm2020/lib/base/mixin/base-components.class.mjs +0 -100
- package/esm2020/lib/base/mixin/base-menu-mixin.class.mjs +0 -136
- package/esm2020/lib/base/mixin/button-mixin.class.mjs +0 -91
- package/esm2020/lib/base/mixin/clickable-mixin.class.mjs +0 -24
- package/esm2020/lib/base/mixin/color-look-mixing.class.mjs +0 -48
- package/esm2020/lib/base/mixin/constratctor.mjs +0 -2
- package/esm2020/lib/base/mixin/datalist-component.class.mjs +0 -148
- package/esm2020/lib/base/mixin/datalist.class.mjs +0 -3
- package/esm2020/lib/base/mixin/dropdown-mixin.class.mjs +0 -99
- package/esm2020/lib/base/mixin/index.mjs +0 -3
- package/esm2020/lib/base/mixin/interactive-mixin.class.mjs +0 -84
- package/esm2020/lib/base/mixin/loading-mixin.class.mjs +0 -18
- package/esm2020/lib/base/mixin/mixin.class.mjs +0 -27
- package/esm2020/lib/base/mixin/selection-component.class.mjs +0 -181
- package/esm2020/lib/base/mixin/sizable-mixin.class.mjs +0 -18
- package/esm2020/lib/base/mixin/textbox-mixin.class.mjs +0 -34
- package/esm2020/lib/base/mixin/value-mixin.class.mjs +0 -209
- package/esm2020/lib/base/overlay.service.mjs +0 -91
- package/esm2020/lib/base/responsive.directive.mjs +0 -34
- package/esm2020/lib/base/styles.class.mjs +0 -4
- package/esm2020/lib/breadcrumbs/breadcrumbs-item.class.mjs +0 -2
- package/esm2020/lib/breadcrumbs/breadcrumbs-item.component.mjs +0 -20
- package/esm2020/lib/breadcrumbs/breadcrumbs.component.mjs +0 -18
- package/esm2020/lib/breadcrumbs/breadcrumbs.module.mjs +0 -20
- package/esm2020/lib/breadcrumbs/index.mjs +0 -5
- package/esm2020/lib/button/button-group.component.mjs +0 -124
- package/esm2020/lib/button/button-item.class.mjs +0 -2
- package/esm2020/lib/button/button-item.component.mjs +0 -80
- package/esm2020/lib/button/index.mjs +0 -6
- package/esm2020/lib/calendar/calendar.class.mjs +0 -126
- package/esm2020/lib/calendar/calendar.component.mjs +0 -332
- package/esm2020/lib/calendar/calendar.module.mjs +0 -26
- package/esm2020/lib/calendar/index.mjs +0 -3
- package/esm2020/lib/carousel/carousel-arrows.component.mjs +0 -56
- package/esm2020/lib/carousel/carousel-item.component.mjs +0 -21
- package/esm2020/lib/carousel/carousel-pager.component.mjs +0 -74
- package/esm2020/lib/carousel/carousel-splidejs.class.mjs +0 -91
- package/esm2020/lib/carousel/carousel.class.mjs +0 -10
- package/esm2020/lib/carousel/carousel.component.mjs +0 -438
- package/esm2020/lib/carousel/carousel.module.mjs +0 -24
- package/esm2020/lib/carousel/index.mjs +0 -7
- package/esm2020/lib/checkbox/index.mjs +0 -3
- package/esm2020/lib/collapse/collapse-group.component.mjs +0 -50
- package/esm2020/lib/collapse/collapse.component.mjs +0 -42
- package/esm2020/lib/collapse/collapse.module.mjs +0 -20
- package/esm2020/lib/collapse/index.mjs +0 -4
- package/esm2020/lib/datalist/datalist.component.mjs +0 -75
- package/esm2020/lib/datalist/datalist.module.mjs +0 -24
- package/esm2020/lib/datalist/index.mjs +0 -3
- package/esm2020/lib/datepicker/datepicker.component.mjs +0 -185
- package/esm2020/lib/datepicker/datepicker.module.mjs +0 -47
- package/esm2020/lib/datepicker/index.mjs +0 -3
- package/esm2020/lib/decorators/addon.component.mjs +0 -20
- package/esm2020/lib/decorators/content.component.mjs +0 -26
- package/esm2020/lib/decorators/decorators.module.mjs +0 -25
- package/esm2020/lib/decorators/header.component.mjs +0 -26
- package/esm2020/lib/decorators/index.mjs +0 -8
- package/esm2020/lib/decorators/prefix.component.mjs +0 -26
- package/esm2020/lib/decorators/suffix.component.mjs +0 -26
- package/esm2020/lib/dialog/dialog.class.mjs +0 -2
- package/esm2020/lib/dialog/index.mjs +0 -5
- package/esm2020/lib/drawer/drawer-content.component.mjs +0 -27
- package/esm2020/lib/drawer/index.mjs +0 -5
- package/esm2020/lib/dropdown/dropdown-panel.component.mjs +0 -80
- package/esm2020/lib/dropdown/index.mjs +0 -3
- package/esm2020/lib/form/form-field.component.mjs +0 -20
- package/esm2020/lib/form/form-field.module.mjs +0 -21
- package/esm2020/lib/form/form-hint.component.mjs +0 -20
- package/esm2020/lib/form/form.component.mjs +0 -59
- package/esm2020/lib/form/index.mjs +0 -5
- package/esm2020/lib/icon/icon.component.mjs +0 -28
- package/esm2020/lib/icon/icon.module.mjs +0 -21
- package/esm2020/lib/icon/index.mjs +0 -3
- package/esm2020/lib/input-mask/index.mjs +0 -3
- package/esm2020/lib/input-mask/input-mask.component.mjs +0 -56
- package/esm2020/lib/input-mask/input-mask.module.mjs +0 -24
- package/esm2020/lib/label/index.mjs +0 -3
- package/esm2020/lib/loading/index.mjs +0 -6
- package/esm2020/lib/loading/loading-spinner.component.mjs +0 -35
- package/esm2020/lib/loading/loading.component.mjs +0 -62
- package/esm2020/lib/loading/loading.directive.mjs +0 -67
- package/esm2020/lib/menu/index.mjs +0 -3
- package/esm2020/lib/number-box/index.mjs +0 -3
- package/esm2020/lib/page/base-page.class.mjs +0 -86
- package/esm2020/lib/page/index.mjs +0 -6
- package/esm2020/lib/page/page-footer.component.mjs +0 -28
- package/esm2020/lib/page/page-header.component.mjs +0 -28
- package/esm2020/lib/password-box/index.mjs +0 -3
- package/esm2020/lib/picker/index.mjs +0 -3
- package/esm2020/lib/picker/picker.component.mjs +0 -48
- package/esm2020/lib/picker/picker.module.mjs +0 -20
- package/esm2020/lib/popover/index.mjs +0 -3
- package/esm2020/lib/popup/index.mjs +0 -4
- package/esm2020/lib/progress-bar/index.mjs +0 -3
- package/esm2020/lib/radio/index.mjs +0 -3
- package/esm2020/lib/radio/radio.component.mjs +0 -34
- package/esm2020/lib/radio/radio.module.mjs +0 -22
- package/esm2020/lib/range-slider/index.mjs +0 -3
- package/esm2020/lib/range-slider/range-slider.component.mjs +0 -16
- package/esm2020/lib/range-slider/range-slider.module.mjs +0 -21
- package/esm2020/lib/rating/index.mjs +0 -3
- package/esm2020/lib/rating/rating.component.mjs +0 -41
- package/esm2020/lib/rating/rating.component.module.mjs +0 -19
- package/esm2020/lib/result/index.mjs +0 -3
- package/esm2020/lib/result/result.component.mjs +0 -23
- package/esm2020/lib/result/result.module.mjs +0 -19
- package/esm2020/lib/selectbox/index.mjs +0 -3
- package/esm2020/lib/selection-list/index.mjs +0 -3
- package/esm2020/lib/switch/index.mjs +0 -3
- package/esm2020/lib/tabs/index.mjs +0 -6
- package/esm2020/lib/tabs/tab-content.directive.mjs +0 -29
- package/esm2020/lib/tabs/tab-item.component.mjs +0 -121
- package/esm2020/lib/tabs/tabs.class.mjs +0 -4
- package/esm2020/lib/tabs/tabs.component.mjs +0 -95
- package/esm2020/lib/tabs/tabs.module.mjs +0 -25
- package/esm2020/lib/textarea/index.mjs +0 -3
- package/esm2020/lib/textbox/index.mjs +0 -3
- package/esm2020/lib/time-box/index.mjs +0 -3
- package/esm2020/lib/time-box/time-box.component.mjs +0 -262
- package/esm2020/lib/time-box/time-box.module.mjs +0 -32
- package/esm2020/lib/toast/index.mjs +0 -5
- package/esm2020/lib/toast/toast.class.mjs +0 -2
- package/esm2020/lib/toast/toast.component.mjs +0 -52
- package/esm2020/lib/tooltip/index.mjs +0 -4
- package/esm2020/lib/tooltip/tooltip.component.mjs +0 -38
- package/esm2020/lib/treeview/index.mjs +0 -3
- package/esm2020/lib/treeview/tree-view.component.mjs +0 -108
- package/esm2020/lib/treeview/tree-view.module.mjs +0 -20
- package/esm2020/lib/validation/index.mjs +0 -3
- package/lib/action-sheet/action-sheet-item.component.d.ts +0 -15
- package/lib/action-sheet/action-sheet.component.d.ts +0 -19
- package/lib/action-sheet/action-sheet.module.d.ts +0 -11
- package/lib/action-sheet/index.d.ts +0 -3
- package/lib/alert/alert-button.component.d.ts +0 -13
- package/lib/alert/alert-content.component.d.ts +0 -5
- package/lib/alert/alert-footer.component.d.ts +0 -5
- package/lib/alert/alert-suffix.component.d.ts +0 -5
- package/lib/alert/alert-title.component.d.ts +0 -5
- package/lib/alert/alert.component.d.ts +0 -75
- package/lib/alert/alert.module.d.ts +0 -14
- package/lib/alert/index.d.ts +0 -7
- package/lib/avatar/avatar-group.component.d.ts +0 -8
- package/lib/avatar/avatar.component.d.ts +0 -22
- package/lib/avatar/avatar.module.d.ts +0 -9
- package/lib/avatar/index.d.ts +0 -3
- package/lib/badge/badge.component.d.ts +0 -41
- package/lib/badge/badge.module.d.ts +0 -8
- package/lib/badge/index.d.ts +0 -2
- package/lib/base/common.module.d.ts +0 -8
- package/lib/base/drawing.class.d.ts +0 -9
- package/lib/base/index.d.ts +0 -8
- package/lib/base/infinite-scroll.directive.d.ts +0 -25
- package/lib/base/mixin/base-components.class.d.ts +0 -85
- package/lib/base/mixin/base-menu-mixin.class.d.ts +0 -52
- package/lib/base/mixin/button-mixin.class.d.ts +0 -63
- package/lib/base/mixin/clickable-mixin.class.d.ts +0 -35
- package/lib/base/mixin/color-look-mixing.class.d.ts +0 -43
- package/lib/base/mixin/constratctor.d.ts +0 -4
- package/lib/base/mixin/datalist-component.class.d.ts +0 -58
- package/lib/base/mixin/datalist.class.d.ts +0 -11
- package/lib/base/mixin/dropdown-mixin.class.d.ts +0 -48
- package/lib/base/mixin/index.d.ts +0 -2
- package/lib/base/mixin/interactive-mixin.class.d.ts +0 -59
- package/lib/base/mixin/loading-mixin.class.d.ts +0 -39
- package/lib/base/mixin/mixin.class.d.ts +0 -687
- package/lib/base/mixin/selection-component.class.d.ts +0 -60
- package/lib/base/mixin/sizable-mixin.class.d.ts +0 -33
- package/lib/base/mixin/textbox-mixin.class.d.ts +0 -56
- package/lib/base/mixin/value-mixin.class.d.ts +0 -64
- package/lib/base/responsive.directive.d.ts +0 -10
- package/lib/base/styles.class.d.ts +0 -17
- package/lib/breadcrumbs/breadcrumbs-item.class.d.ts +0 -9
- package/lib/breadcrumbs/breadcrumbs-item.component.d.ts +0 -12
- package/lib/breadcrumbs/breadcrumbs.component.d.ts +0 -11
- package/lib/breadcrumbs/breadcrumbs.module.d.ts +0 -9
- package/lib/breadcrumbs/index.d.ts +0 -4
- package/lib/button/button-group.component.d.ts +0 -36
- package/lib/button/button-item.class.d.ts +0 -22
- package/lib/button/button-item.component.d.ts +0 -79
- package/lib/button/index.d.ts +0 -5
- package/lib/calendar/calendar.class.d.ts +0 -50
- package/lib/calendar/calendar.component.d.ts +0 -50
- package/lib/calendar/calendar.module.d.ts +0 -13
- package/lib/calendar/index.d.ts +0 -2
- package/lib/carousel/carousel-arrows.component.d.ts +0 -15
- package/lib/carousel/carousel-item.component.d.ts +0 -8
- package/lib/carousel/carousel-pager.component.d.ts +0 -22
- package/lib/carousel/carousel-splidejs.class.d.ts +0 -18
- package/lib/carousel/carousel.class.d.ts +0 -71
- package/lib/carousel/carousel.component.d.ts +0 -110
- package/lib/carousel/carousel.module.d.ts +0 -11
- package/lib/carousel/index.d.ts +0 -6
- package/lib/checkbox/index.d.ts +0 -2
- package/lib/collapse/collapse-group.component.d.ts +0 -15
- package/lib/collapse/collapse.component.d.ts +0 -16
- package/lib/collapse/collapse.module.d.ts +0 -9
- package/lib/collapse/index.d.ts +0 -3
- package/lib/datalist/datalist.component.d.ts +0 -25
- package/lib/datalist/datalist.module.d.ts +0 -11
- package/lib/datalist/index.d.ts +0 -2
- package/lib/datepicker/datepicker.component.d.ts +0 -151
- package/lib/datepicker/datepicker.module.d.ts +0 -16
- package/lib/datepicker/index.d.ts +0 -2
- package/lib/decorators/addon.component.d.ts +0 -8
- package/lib/decorators/decorators.module.d.ts +0 -12
- package/lib/decorators/header.component.d.ts +0 -8
- package/lib/decorators/index.d.ts +0 -7
- package/lib/decorators/prefix.component.d.ts +0 -8
- package/lib/decorators/suffix.component.d.ts +0 -8
- package/lib/dialog/dialog.class.d.ts +0 -12
- package/lib/dialog/index.d.ts +0 -4
- package/lib/drawer/drawer-content.component.d.ts +0 -8
- package/lib/drawer/index.d.ts +0 -4
- package/lib/dropdown/dropdown-panel.component.d.ts +0 -27
- package/lib/dropdown/index.d.ts +0 -2
- package/lib/form/form-field.component.d.ts +0 -8
- package/lib/form/form-field.module.d.ts +0 -10
- package/lib/form/form-hint.component.d.ts +0 -8
- package/lib/form/form.component.d.ts +0 -21
- package/lib/form/index.d.ts +0 -4
- package/lib/icon/icon.component.d.ts +0 -10
- package/lib/icon/icon.module.d.ts +0 -8
- package/lib/icon/index.d.ts +0 -2
- package/lib/input-mask/index.d.ts +0 -2
- package/lib/input-mask/input-mask.component.d.ts +0 -25
- package/lib/input-mask/input-mask.module.d.ts +0 -10
- package/lib/label/index.d.ts +0 -2
- package/lib/loading/index.d.ts +0 -5
- package/lib/loading/loading-spinner.component.d.ts +0 -6
- package/lib/loading/loading.component.d.ts +0 -21
- package/lib/loading/loading.directive.d.ts +0 -22
- package/lib/menu/index.d.ts +0 -2
- package/lib/number-box/index.d.ts +0 -2
- package/lib/page/base-page.class.d.ts +0 -45
- package/lib/page/index.d.ts +0 -5
- package/lib/page/page-header.component.d.ts +0 -7
- package/lib/password-box/index.d.ts +0 -2
- package/lib/picker/index.d.ts +0 -2
- package/lib/picker/picker.component.d.ts +0 -21
- package/lib/picker/picker.module.d.ts +0 -9
- package/lib/popover/index.d.ts +0 -2
- package/lib/popup/index.d.ts +0 -3
- package/lib/progress-bar/index.d.ts +0 -2
- package/lib/radio/index.d.ts +0 -2
- package/lib/radio/radio.component.d.ts +0 -17
- package/lib/radio/radio.module.d.ts +0 -9
- package/lib/range-slider/index.d.ts +0 -2
- package/lib/range-slider/range-slider.component.d.ts +0 -8
- package/lib/range-slider/range-slider.module.d.ts +0 -8
- package/lib/rating/index.d.ts +0 -2
- package/lib/rating/rating.component.d.ts +0 -21
- package/lib/rating/rating.component.module.d.ts +0 -8
- package/lib/result/index.d.ts +0 -2
- package/lib/result/result.component.d.ts +0 -12
- package/lib/result/result.module.d.ts +0 -8
- package/lib/selectbox/index.d.ts +0 -2
- package/lib/selection-list/index.d.ts +0 -2
- package/lib/switch/index.d.ts +0 -2
- package/lib/tabs/index.d.ts +0 -5
- package/lib/tabs/tab-content.directive.d.ts +0 -11
- package/lib/tabs/tab-item.component.d.ts +0 -49
- package/lib/tabs/tabs.class.d.ts +0 -6
- package/lib/tabs/tabs.component.d.ts +0 -24
- package/lib/tabs/tabs.module.d.ts +0 -12
- package/lib/textarea/index.d.ts +0 -2
- package/lib/textbox/index.d.ts +0 -2
- package/lib/time-box/index.d.ts +0 -2
- package/lib/time-box/time-box.component.d.ts +0 -48
- package/lib/time-box/time-box.module.d.ts +0 -11
- package/lib/toast/index.d.ts +0 -4
- package/lib/toast/toast.class.d.ts +0 -14
- package/lib/toast/toast.component.d.ts +0 -24
- package/lib/tooltip/index.d.ts +0 -3
- package/lib/tooltip/tooltip.component.d.ts +0 -10
- package/lib/treeview/index.d.ts +0 -2
- package/lib/treeview/tree-view.component.d.ts +0 -33
- package/lib/treeview/tree-view.module.d.ts +0 -9
- package/lib/validation/index.d.ts +0 -2
|
@@ -1,221 +1,622 @@
|
|
|
1
|
-
import { Component,
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { TEXTBOX_INPUTS, TEXTBOX_OUTPUT, } from '../base/mixin/textbox-mixin.class';
|
|
6
|
-
import _ from 'lodash';
|
|
1
|
+
import { Component, Input, ElementRef, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
+
import { Observable, Subject } from 'rxjs';
|
|
3
|
+
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
4
|
+
import { AXBaseTextComponent, AXValidatableComponent } from '../base/element.class';
|
|
7
5
|
import * as i0 from "@angular/core";
|
|
8
6
|
import * as i1 from "../button/button.component";
|
|
9
|
-
import * as i2 from "
|
|
10
|
-
import * as i3 from "
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* The NumberBox is a component which detects user interaction and triggers a corresponding event
|
|
16
|
-
*
|
|
17
|
-
* @category Components
|
|
18
|
-
*/
|
|
19
|
-
export class AXNumberBoxComponent extends AXBaseTextBoxMixin {
|
|
20
|
-
/**
|
|
21
|
-
* @ignore
|
|
22
|
-
*/
|
|
23
|
-
constructor(elementRef, cdr) {
|
|
24
|
-
super(elementRef, cdr);
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
import * as i3 from "@angular/forms";
|
|
9
|
+
export class AXNumberBoxComponent extends AXBaseTextComponent {
|
|
10
|
+
constructor(cdr, ref) {
|
|
11
|
+
super(cdr, ref);
|
|
25
12
|
this.cdr = cdr;
|
|
26
|
-
this.
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
this.
|
|
31
|
-
this.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
this.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
this.
|
|
40
|
-
this.
|
|
41
|
-
this.
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
*/
|
|
46
|
-
get thousandsSeparator() {
|
|
47
|
-
return this._thousandsSeparator;
|
|
48
|
-
}
|
|
49
|
-
set thousandsSeparator(v) {
|
|
50
|
-
this._setOption({
|
|
51
|
-
name: "thousandsSeparator",
|
|
52
|
-
value: v ?? '',
|
|
53
|
-
});
|
|
13
|
+
this.min = null;
|
|
14
|
+
this.max = null;
|
|
15
|
+
this.showSeparator = false;
|
|
16
|
+
this.showCurrency = false;
|
|
17
|
+
this.showCounter = true;
|
|
18
|
+
this.scrollWeel = true;
|
|
19
|
+
this.showDoubleCounter = false;
|
|
20
|
+
this.maxLength = 18;
|
|
21
|
+
this.userQuestionUpdate = new Subject();
|
|
22
|
+
this.userEdite = false;
|
|
23
|
+
this.findDots = false;
|
|
24
|
+
this.findMinus = false;
|
|
25
|
+
this.cursorPosition = 0;
|
|
26
|
+
this.decimalConstant = 0.1;
|
|
27
|
+
this.lastStep = null;
|
|
28
|
+
this.intStep = 1;
|
|
29
|
+
this.decimalNumber = null;
|
|
30
|
+
this.customStep = null;
|
|
31
|
+
this.textAlign = 'left';
|
|
54
32
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
*/
|
|
58
|
-
get padDecimalZeros() {
|
|
59
|
-
return this._padDecimalZeros;
|
|
33
|
+
get value() {
|
|
34
|
+
return this._values;
|
|
60
35
|
}
|
|
61
|
-
set
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
36
|
+
set value(v) {
|
|
37
|
+
if (v === '-') {
|
|
38
|
+
this.textValue = '-';
|
|
39
|
+
this._values = '-';
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
if (v === '' || v == null || v === undefined ? true : isNaN(Number(v.toString().replace(/,/g, ''))) === false) {
|
|
43
|
+
if (v === '' || v == null || v === undefined) {
|
|
44
|
+
this.textValue = '';
|
|
45
|
+
const old = this._values;
|
|
46
|
+
this._values = null;
|
|
47
|
+
if (this._values !== old) {
|
|
48
|
+
this.valueChange.emit(null);
|
|
49
|
+
this.onValueChanged.emit({
|
|
50
|
+
isUserChange: this.userEdite,
|
|
51
|
+
component: this,
|
|
52
|
+
value: null,
|
|
53
|
+
oldValue: this.showSeparator && old
|
|
54
|
+
? old === '-'
|
|
55
|
+
? null
|
|
56
|
+
: Number(old.replace(/,/g, ''))
|
|
57
|
+
: old === null || old === undefined
|
|
58
|
+
? null
|
|
59
|
+
: old === '-'
|
|
60
|
+
? null
|
|
61
|
+
: Number(old),
|
|
62
|
+
htmlElement: this.ref.nativeElement
|
|
63
|
+
});
|
|
64
|
+
this.userEdite = false;
|
|
65
|
+
this.cdr.detectChanges();
|
|
66
|
+
this.clearValidationStyle(this.input.nativeElement);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
v = v.toString();
|
|
71
|
+
// this.addCommas(v.toString());
|
|
72
|
+
this.textValue = this.showSeparator && v ? this.addCommas(v.toString()) : v;
|
|
73
|
+
// if (this.textValue.indexOf('.') !== -1) {
|
|
74
|
+
// // const dottt= (this.textValue.length-1) - this.textValue.indexOf('.')
|
|
75
|
+
// if (this.textValue.length - 1 - this.textValue.indexOf('.') < this.decimalNumber) {
|
|
76
|
+
// const a = this.decimalNumber - (this.textValue.length - 1 - this.textValue.indexOf('.'));
|
|
77
|
+
// const z = '0';
|
|
78
|
+
// this.textValue = this.textValue + '0';
|
|
79
|
+
// }
|
|
80
|
+
// }
|
|
81
|
+
if (this._values) {
|
|
82
|
+
const old = this._values;
|
|
83
|
+
if (old.toString().search(/\./g) !== v.toString().search(/\./g)) {
|
|
84
|
+
if (this.cursorPosition <= old.search(/\./g)) {
|
|
85
|
+
this.cursorPosition = v.search(/\./g);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
this.cursorPosition = v.length;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (v !== this._values) {
|
|
93
|
+
const old = this._values;
|
|
94
|
+
this._values = v;
|
|
95
|
+
this.valueChange.emit(this.showSeparator && v ? Number(v.replace(/,/g, '')) : Number(v));
|
|
96
|
+
this.onValueChanged.emit({
|
|
97
|
+
isUserChange: this.userEdite,
|
|
98
|
+
component: this,
|
|
99
|
+
value: this.showSeparator && v ? Number(v.replace(/,/g, '')) : Number(v),
|
|
100
|
+
oldValue: this.showSeparator && old
|
|
101
|
+
? old === '-'
|
|
102
|
+
? null
|
|
103
|
+
: Number(old.replace(/,/g, ''))
|
|
104
|
+
: old === null || old === undefined
|
|
105
|
+
? null
|
|
106
|
+
: old === '-'
|
|
107
|
+
? null
|
|
108
|
+
: Number(old),
|
|
109
|
+
htmlElement: this.ref.nativeElement
|
|
110
|
+
});
|
|
111
|
+
this.userEdite = false;
|
|
112
|
+
this.cdr.detectChanges();
|
|
113
|
+
this.clearValidationStyle(this.input.nativeElement);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
this.textValue = '';
|
|
119
|
+
v = null;
|
|
120
|
+
const old = this._values;
|
|
121
|
+
this._values = null;
|
|
122
|
+
if (this._values !== old) {
|
|
123
|
+
this.valueChange.emit(null);
|
|
124
|
+
this.onValueChanged.emit({
|
|
125
|
+
isUserChange: this.userEdite,
|
|
126
|
+
component: this,
|
|
127
|
+
value: null,
|
|
128
|
+
oldValue: this.showSeparator && old
|
|
129
|
+
? old === '-'
|
|
130
|
+
? null
|
|
131
|
+
: Number(old.replace(/,/g, ''))
|
|
132
|
+
: old === null || old === undefined
|
|
133
|
+
? null
|
|
134
|
+
: old === '-'
|
|
135
|
+
? null
|
|
136
|
+
: Number(old),
|
|
137
|
+
htmlElement: this.ref.nativeElement
|
|
138
|
+
});
|
|
139
|
+
this.userEdite = false;
|
|
140
|
+
this.cdr.detectChanges();
|
|
141
|
+
this.clearValidationStyle(this.input.nativeElement);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
calcSeparator(num) {
|
|
147
|
+
if (this.showSeparator) {
|
|
148
|
+
return num + +(num / 3);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
return num;
|
|
152
|
+
}
|
|
66
153
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
*/
|
|
70
|
-
get decimals() {
|
|
71
|
-
return this._decimals;
|
|
154
|
+
addCommas2(x) {
|
|
155
|
+
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
|
72
156
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
157
|
+
addCommas(nStr) {
|
|
158
|
+
nStr += '';
|
|
159
|
+
const x = nStr.split('.');
|
|
160
|
+
let x1 = x[0];
|
|
161
|
+
const x2 = x.length > 1 ? '.' + x[1] : '';
|
|
162
|
+
const rgx = /(\d+)(\d{3})/;
|
|
163
|
+
while (rgx.test(x1)) {
|
|
164
|
+
x1 = x1.replace(rgx, '$1' + ',' + '$2');
|
|
165
|
+
}
|
|
166
|
+
return x1 + x2;
|
|
78
167
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
168
|
+
ngOnInit() {
|
|
169
|
+
if (this.disabled === false) {
|
|
170
|
+
if (this.scrollWeel === true) {
|
|
171
|
+
setTimeout(() => {
|
|
172
|
+
if (this.readonly === false) {
|
|
173
|
+
this.input.nativeElement.addEventListener('wheel', (e) => {
|
|
174
|
+
this.handleWheel(e);
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}, 500);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// this.value = this.min.toString();
|
|
84
181
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
182
|
+
handleWheel(event) {
|
|
183
|
+
if (event.wheelDelta > 0) {
|
|
184
|
+
this.input.nativeElement.style.caretColor = 'transparent';
|
|
185
|
+
this.upStepHandel();
|
|
186
|
+
this.delaySearch();
|
|
187
|
+
setTimeout(() => {
|
|
188
|
+
this.setCaret();
|
|
189
|
+
this.input.nativeElement.style.caretColor = 'auto';
|
|
190
|
+
}, 0);
|
|
191
|
+
}
|
|
192
|
+
if (event.wheelDelta < 0) {
|
|
193
|
+
this.input.nativeElement.style.caretColor = 'transparent';
|
|
194
|
+
this.downStepHandel();
|
|
195
|
+
this.delaySearch();
|
|
196
|
+
setTimeout(() => {
|
|
197
|
+
this.setCaret();
|
|
198
|
+
this.input.nativeElement.style.caretColor = 'auto';
|
|
199
|
+
}, 0);
|
|
200
|
+
}
|
|
201
|
+
event.stopPropagation();
|
|
202
|
+
event.preventDefault();
|
|
90
203
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
204
|
+
handleKeyPress(event) {
|
|
205
|
+
this.userEdite = true;
|
|
206
|
+
const NumberDotpattern = /[0-9\.]/g;
|
|
207
|
+
const NumberMinusPattern = /[0-9\-]/g;
|
|
208
|
+
const inputChar = String.fromCharCode(event.charCode);
|
|
209
|
+
if (this.value && this.value.toString().match(/\./g) === null) {
|
|
210
|
+
this.findDots = false;
|
|
211
|
+
}
|
|
212
|
+
if (this.value && this.value.toString().search('-') === null) {
|
|
213
|
+
this.findMinus = false;
|
|
214
|
+
}
|
|
215
|
+
// get cursur position when key press
|
|
216
|
+
if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {
|
|
217
|
+
this.cursorPosition = this.input.nativeElement.selectionStart;
|
|
218
|
+
this.cursorPosition += 1;
|
|
219
|
+
}
|
|
220
|
+
// control cursor when in first Index
|
|
221
|
+
if (this.cursorPosition <= 1) {
|
|
222
|
+
if (!NumberMinusPattern.test(inputChar)) {
|
|
223
|
+
event.preventDefault();
|
|
224
|
+
}
|
|
225
|
+
if (this.value && this.value.match(/\-/g)) {
|
|
226
|
+
event.preventDefault();
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
// control cursor when in another index
|
|
230
|
+
if (this.cursorPosition !== 1) {
|
|
231
|
+
if (event.keyCode !== 8 && !NumberDotpattern.test(inputChar)) {
|
|
232
|
+
event.preventDefault();
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
// for contor decimal figur = 0 or null
|
|
236
|
+
if (this.decimalNumber === null || this.decimalNumber === 0) {
|
|
237
|
+
if (inputChar === '.') {
|
|
238
|
+
event.preventDefault();
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// control decimal number (figur of decimal)
|
|
242
|
+
if (this.value && this.value.toString().match(/\./g)) {
|
|
243
|
+
const figureAfterDot = this.value.length - this.value.indexOf('.');
|
|
244
|
+
const dotIndex = this.value.indexOf('.');
|
|
245
|
+
if (dotIndex - 1 + dotIndex + figureAfterDot > dotIndex - 1 + dotIndex + this.decimalNumber && this.cursorPosition - 1 > dotIndex) {
|
|
246
|
+
event.preventDefault();
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
// control '.' input
|
|
250
|
+
if (inputChar === '.') {
|
|
251
|
+
const lastChar = this.value.toString().charAt(this.value.length - 1);
|
|
252
|
+
// control . when last char is -
|
|
253
|
+
if (lastChar.toString().match(/\-/g)) {
|
|
254
|
+
event.preventDefault();
|
|
255
|
+
}
|
|
256
|
+
// control . when find first dot
|
|
257
|
+
if (this.findDots) {
|
|
258
|
+
event.preventDefault();
|
|
259
|
+
}
|
|
260
|
+
this.findDots = true;
|
|
261
|
+
this.findMinus = true;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
96
265
|
}
|
|
97
|
-
|
|
98
|
-
this.
|
|
99
|
-
|
|
100
|
-
|
|
266
|
+
handleKeyUp(event) {
|
|
267
|
+
this.userEdite = true;
|
|
268
|
+
if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
|
|
269
|
+
this.input.nativeElement.style.caretColor = 'auto';
|
|
270
|
+
event.preventDefault();
|
|
271
|
+
event.stopPropagation();
|
|
272
|
+
}
|
|
273
|
+
if (event.key === 'ArrowUp') {
|
|
274
|
+
this.setCaret();
|
|
275
|
+
}
|
|
276
|
+
if (event.key === 'ArrowDown') {
|
|
277
|
+
this.setCaret();
|
|
278
|
+
}
|
|
279
|
+
// left & right Button
|
|
280
|
+
if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {
|
|
281
|
+
if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {
|
|
282
|
+
this.cursorPosition = this.input.nativeElement.selectionStart;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
// home button
|
|
286
|
+
if (event.key === 'Home') {
|
|
287
|
+
this.cursorPosition = 0;
|
|
288
|
+
}
|
|
289
|
+
// end button
|
|
290
|
+
if (event.key === 'End') {
|
|
291
|
+
this.cursorPosition = this.value.length;
|
|
292
|
+
}
|
|
293
|
+
// set delay with rxjs
|
|
294
|
+
this.delaySearch();
|
|
295
|
+
// backspace Control
|
|
296
|
+
if (event.key === 'Backspace') {
|
|
297
|
+
if (this.value === null || this.value.length <= 0) {
|
|
298
|
+
this.cursorPosition = 0;
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
this.cursorPosition -= 1;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
handleKeyDown(event) {
|
|
306
|
+
this.userEdite = true;
|
|
307
|
+
if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
|
|
308
|
+
event.preventDefault();
|
|
309
|
+
event.stopPropagation();
|
|
310
|
+
}
|
|
311
|
+
if (this.readonly === false) {
|
|
312
|
+
const countAfterDot = this.value !== null && this.value !== '' && this.value !== undefined
|
|
313
|
+
? this.value.toString().length - 1 - this.value.toString().indexOf('.')
|
|
314
|
+
: 0;
|
|
315
|
+
const defaultStep = countAfterDot > this.decimalNumber ? Math.pow(this.decimalConstant, this.decimalNumber) : Math.pow(this.decimalConstant, countAfterDot);
|
|
316
|
+
// step and +- with up key and down key
|
|
317
|
+
if (this.value && this.value.toString().match(/\./g)) {
|
|
318
|
+
this.dotPosition = this.value.indexOf('.');
|
|
319
|
+
if (this.dotPosition >= this.cursorPosition) {
|
|
320
|
+
if (event.key === 'ArrowDown') {
|
|
321
|
+
this.tmp = parseFloat(this.value.replace(/,/g, ''));
|
|
322
|
+
this.count = this.tmp - +this.intStep;
|
|
323
|
+
if (this.min === null || Number(this.count) >= Number(this.min)) {
|
|
324
|
+
// this.value = this.count.toFixed(this.decimalNumber);
|
|
325
|
+
this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
if (event.key === 'ArrowUp') {
|
|
329
|
+
this.tmp = parseFloat(this.value.replace(/,/g, ''));
|
|
330
|
+
this.count = this.tmp + +this.intStep;
|
|
331
|
+
if (this.max === null || Number(this.count) <= Number(this.max)) {
|
|
332
|
+
this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
if (event.key === 'ArrowDown') {
|
|
338
|
+
if (this.min === null || Number(this.value) > Number(this.min)) {
|
|
339
|
+
if (this.customStep !== null) {
|
|
340
|
+
this.tmp = parseFloat(this.value.replace(/,/g, ''));
|
|
341
|
+
this.lastStep =
|
|
342
|
+
parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) +
|
|
343
|
+
parseFloat(this.customStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) -
|
|
344
|
+
parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot));
|
|
345
|
+
this.count = parseFloat(this.tmp) - this.lastStep;
|
|
346
|
+
this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
this.tmp = parseFloat(this.value.replace(/,/g, ''));
|
|
350
|
+
this.count = parseFloat(this.tmp) - defaultStep;
|
|
351
|
+
this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
if (event.key === 'ArrowUp') {
|
|
356
|
+
if (this.max === null || Number(this.value) < Number(this.max)) {
|
|
357
|
+
if (this.customStep !== null) {
|
|
358
|
+
this.tmp = parseFloat(this.value.replace(/,/g, ''));
|
|
359
|
+
this.lastStep =
|
|
360
|
+
parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) +
|
|
361
|
+
parseFloat(this.customStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) -
|
|
362
|
+
parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot));
|
|
363
|
+
this.count = parseFloat(this.tmp) + this.lastStep;
|
|
364
|
+
this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);
|
|
365
|
+
}
|
|
366
|
+
else {
|
|
367
|
+
this.tmp = parseFloat(this.value.replace(/,/g, ''));
|
|
368
|
+
this.count = parseFloat(this.tmp) + defaultStep;
|
|
369
|
+
this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
else {
|
|
376
|
+
if (event.key === 'ArrowDown') {
|
|
377
|
+
if (this.min != null && this.value == null) {
|
|
378
|
+
this.value = this.min.toString();
|
|
379
|
+
}
|
|
380
|
+
else {
|
|
381
|
+
if (this.min === null || Number(this.value) > parseInt(this.min.toString())) {
|
|
382
|
+
if (this.value == null) {
|
|
383
|
+
this.value = '0';
|
|
384
|
+
}
|
|
385
|
+
else {
|
|
386
|
+
this.tmp = +this.value.toString().replace(/,/g, '');
|
|
387
|
+
this.count = +this.tmp - +this.intStep;
|
|
388
|
+
this.value = this.count.toString().replace(/,/g, '');
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
if (event.key === 'ArrowUp') {
|
|
394
|
+
if (this.min != null && this.value == null) {
|
|
395
|
+
this.value = this.min.toString();
|
|
396
|
+
}
|
|
397
|
+
else {
|
|
398
|
+
if (this.max === null || Number(this.value) < parseInt(this.max.toString())) {
|
|
399
|
+
if (this.value == null) {
|
|
400
|
+
this.value = '0';
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
this.tmp = this.value.toString().replace(/,/g, '');
|
|
404
|
+
this.count = +this.tmp + +this.intStep;
|
|
405
|
+
this.value = this.count.toString().replace(/,/g, '');
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
// stop when keydown
|
|
413
|
+
if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
|
|
414
|
+
this.input.nativeElement.style.caretColor = 'transparent';
|
|
415
|
+
event.preventDefault();
|
|
416
|
+
event.stopPropagation();
|
|
417
|
+
return false;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
handleClick() {
|
|
421
|
+
if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {
|
|
422
|
+
this.cursorPosition = this.input.nativeElement.selectionStart;
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
delaySearch() {
|
|
426
|
+
Observable.create((observer) => {
|
|
427
|
+
this.userQuestionUpdate = observer;
|
|
101
428
|
});
|
|
429
|
+
this.userQuestionUpdate.pipe(debounceTime(1000), distinctUntilChanged()).subscribe((text) => this.checkMinMax(text));
|
|
430
|
+
// this.userQuestionUpdate.next((e.target as any).value);
|
|
431
|
+
setTimeout(() => {
|
|
432
|
+
this.userQuestionUpdate.next(this.input.nativeElement.value);
|
|
433
|
+
}, 50);
|
|
102
434
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
_onOptionChanged(option) {
|
|
108
|
-
super._onOptionChanged(option);
|
|
109
|
-
this._updateMask();
|
|
110
|
-
}
|
|
111
|
-
_updateMask() {
|
|
112
|
-
if (!this._maskObj) {
|
|
113
|
-
this._maskObj = IMask.createMask({
|
|
114
|
-
mask: Number,
|
|
115
|
-
min: this.minValue,
|
|
116
|
-
max: this.maxValue,
|
|
117
|
-
thousandsSeparator: this.thousandsSeparator || '',
|
|
118
|
-
scale: this.decimals,
|
|
119
|
-
radix: '.',
|
|
120
|
-
padFractionalZeros: this.decimals > 0 && this.padDecimalZeros
|
|
121
|
-
});
|
|
435
|
+
checkMinMax(text) {
|
|
436
|
+
let number;
|
|
437
|
+
if (text.indexOf(',') > 0) {
|
|
438
|
+
number = Number(text.replaceAll(',', ''));
|
|
122
439
|
}
|
|
123
440
|
else {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
radix: '.',
|
|
130
|
-
padFractionalZeros: this.decimals > 0 && this.padDecimalZeros
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
this._maskDirective?.maskRef?.updateValue();
|
|
134
|
-
this._maskDirective?.maskRef?.updateControl();
|
|
135
|
-
}
|
|
136
|
-
_handleOnKeydownEvent(e) {
|
|
137
|
-
const ignore = () => {
|
|
138
|
-
e.preventDefault();
|
|
139
|
-
e.stopPropagation();
|
|
140
|
-
};
|
|
141
|
-
const input = e.target;
|
|
142
|
-
const valStr = input.value;
|
|
143
|
-
const decimalPointIndex = valStr.indexOf('.');
|
|
144
|
-
const _cursorPos = input.selectionStart;
|
|
145
|
-
if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
|
|
146
|
-
if (decimalPointIndex > 0 && _cursorPos > decimalPointIndex && this.decimals > 0) {
|
|
147
|
-
e.key === 'ArrowDown' ? this.decimalStepDown() : this.decimalStepUp();
|
|
441
|
+
number = Number(text);
|
|
442
|
+
}
|
|
443
|
+
if (!!this.min) {
|
|
444
|
+
if (number < this.min) {
|
|
445
|
+
this.value = '';
|
|
148
446
|
}
|
|
149
|
-
|
|
150
|
-
|
|
447
|
+
}
|
|
448
|
+
if (!!this.max) {
|
|
449
|
+
if (number > this.max) {
|
|
450
|
+
this.value = '';
|
|
151
451
|
}
|
|
152
|
-
ignore();
|
|
153
|
-
setTimeout(() => {
|
|
154
|
-
input.setSelectionRange(_cursorPos, _cursorPos);
|
|
155
|
-
}, 5);
|
|
156
452
|
}
|
|
157
|
-
super._emitOnKeydownEvent(e);
|
|
158
453
|
}
|
|
159
|
-
|
|
160
|
-
|
|
454
|
+
doGetCaretPosition(ctrl) {
|
|
455
|
+
let CaretPos = 0;
|
|
456
|
+
if (ctrl.selectionStart || ctrl.selectionStart === 0) {
|
|
457
|
+
CaretPos = ctrl.selectionStart;
|
|
458
|
+
return CaretPos;
|
|
459
|
+
}
|
|
161
460
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
461
|
+
setCaretPosition(ctrl, pos) {
|
|
462
|
+
if (ctrl.setSelectionRange) {
|
|
463
|
+
ctrl.focus();
|
|
464
|
+
ctrl.setSelectionRange(pos, pos);
|
|
465
|
+
}
|
|
466
|
+
else if (ctrl.createTextRange) {
|
|
467
|
+
const range = ctrl.createTextRange();
|
|
468
|
+
range.collapse(true);
|
|
469
|
+
range.moveEnd('character', pos);
|
|
470
|
+
range.moveStart('character', pos);
|
|
471
|
+
range.select();
|
|
472
|
+
}
|
|
169
473
|
}
|
|
170
|
-
|
|
171
|
-
this.
|
|
474
|
+
setCaret() {
|
|
475
|
+
this.setCaretPosition(this.input.nativeElement, this.cursorPosition);
|
|
172
476
|
}
|
|
173
|
-
|
|
174
|
-
this.
|
|
477
|
+
upStepHandel() {
|
|
478
|
+
this.userEdite = true;
|
|
479
|
+
if (this.min != null && this.value == null) {
|
|
480
|
+
this.value = this.min.toString();
|
|
481
|
+
}
|
|
482
|
+
else {
|
|
483
|
+
if (this.readonly === false) {
|
|
484
|
+
const countAfterDot = this.value !== null && this.value !== '' && this.value !== undefined
|
|
485
|
+
? this.value.toString().length - 1 - this.value.toString().indexOf('.')
|
|
486
|
+
: 0;
|
|
487
|
+
if (this.value == null) {
|
|
488
|
+
this.value = '0';
|
|
489
|
+
}
|
|
490
|
+
else {
|
|
491
|
+
const defaultStep = countAfterDot > this.decimalNumber ? Math.pow(this.decimalConstant, this.decimalNumber) : Math.pow(this.decimalConstant, countAfterDot);
|
|
492
|
+
this.dotPosition = this.value.toString().indexOf('.') + 1;
|
|
493
|
+
if (this.value && this.value.toString().match(/\./g)) {
|
|
494
|
+
if (this.dotPosition > this.cursorPosition) {
|
|
495
|
+
this.tmp = parseFloat(this.value.replace(/,/g, ''));
|
|
496
|
+
this.count = this.tmp + +this.intStep;
|
|
497
|
+
if (this.max === null || Number(this.count) <= this.max) {
|
|
498
|
+
this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
else {
|
|
502
|
+
if (this.max === null || Number(this.value) < Number(this.max)) {
|
|
503
|
+
if (this.customStep !== null) {
|
|
504
|
+
this.tmp = parseFloat(this.value.replace(/,/g, ''));
|
|
505
|
+
this.lastStep =
|
|
506
|
+
parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) +
|
|
507
|
+
parseFloat(this.customStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) -
|
|
508
|
+
parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot));
|
|
509
|
+
this.count = parseFloat(this.tmp) + this.lastStep;
|
|
510
|
+
this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot).replace(/,/g, '');
|
|
511
|
+
}
|
|
512
|
+
else {
|
|
513
|
+
this.tmp = parseFloat(this.value.replace(/,/g, ''));
|
|
514
|
+
this.count = parseFloat(this.tmp) + defaultStep;
|
|
515
|
+
this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot).replace(/,/g, '');
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
else {
|
|
521
|
+
if (this.max === null || Number(this.value) < parseInt(this.max.toString())) {
|
|
522
|
+
this.tmp = this.value.toString().replace(/,/g, '');
|
|
523
|
+
this.count = +this.tmp + +this.intStep;
|
|
524
|
+
this.value = this.count.toString().replace(/,/g, '');
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
}
|
|
175
530
|
}
|
|
176
|
-
|
|
177
|
-
this.
|
|
531
|
+
downStepHandel() {
|
|
532
|
+
this.userEdite = true;
|
|
533
|
+
if (this.min != null && this.value == null) {
|
|
534
|
+
this.value = this.min.toString();
|
|
535
|
+
}
|
|
536
|
+
else {
|
|
537
|
+
if (this.readonly === false) {
|
|
538
|
+
const countAfterDot = this.value !== null && this.value !== '' && this.value !== undefined
|
|
539
|
+
? this.value.toString().length - 1 - this.value.toString().indexOf('.')
|
|
540
|
+
: 0;
|
|
541
|
+
if (this.value == null) {
|
|
542
|
+
this.value = '0';
|
|
543
|
+
}
|
|
544
|
+
else {
|
|
545
|
+
const defaultStep = countAfterDot > this.decimalNumber ? Math.pow(this.decimalConstant, this.decimalNumber) : Math.pow(this.decimalConstant, countAfterDot);
|
|
546
|
+
this.dotPosition = this.value.toString().indexOf('.') + 1;
|
|
547
|
+
if (this.value && this.value.toString().match(/\./g)) {
|
|
548
|
+
if (this.dotPosition > this.cursorPosition) {
|
|
549
|
+
this.tmp = parseFloat(this.value.replace(/,/g, ''));
|
|
550
|
+
this.count = parseFloat(this.value.replace(/,/g, '')) - +this.intStep;
|
|
551
|
+
if (this.min === null || Number(this.count) >= this.min) {
|
|
552
|
+
this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot).replace(/,/g, '');
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
else {
|
|
556
|
+
if (this.min === null || Number(this.value) > Number(this.min)) {
|
|
557
|
+
if (this.customStep !== null) {
|
|
558
|
+
this.tmp = parseFloat(this.value.replace(/,/g, ''));
|
|
559
|
+
this.lastStep =
|
|
560
|
+
parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) +
|
|
561
|
+
parseFloat(this.customStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) -
|
|
562
|
+
parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot));
|
|
563
|
+
this.count = parseFloat(this.tmp) - this.lastStep;
|
|
564
|
+
this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);
|
|
565
|
+
}
|
|
566
|
+
else {
|
|
567
|
+
this.tmp = parseFloat(this.value.replace(/,/g, ''));
|
|
568
|
+
this.count = parseFloat(this.tmp) - defaultStep;
|
|
569
|
+
this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
else {
|
|
575
|
+
if (this.min === null || Number(this.value) > parseInt(this.min.toString())) {
|
|
576
|
+
this.tmp = +this.value.toString().replace(/,/g, '');
|
|
577
|
+
this.count = +this.tmp - +this.intStep;
|
|
578
|
+
this.value = this.count.toString().replace(/,/g, '');
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
}
|
|
178
584
|
}
|
|
179
|
-
|
|
180
|
-
this.
|
|
585
|
+
handleInputBlur(e) {
|
|
586
|
+
this.checkMinMax(this.textValue);
|
|
587
|
+
this.onBlur.emit({
|
|
588
|
+
component: this,
|
|
589
|
+
htmlElement: this.ref.nativeElement,
|
|
590
|
+
htmlEvent: e
|
|
591
|
+
});
|
|
181
592
|
}
|
|
182
593
|
}
|
|
183
|
-
AXNumberBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.
|
|
184
|
-
AXNumberBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.
|
|
185
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.
|
|
594
|
+
AXNumberBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXNumberBoxComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
595
|
+
AXNumberBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AXNumberBoxComponent, selector: "ax-number-box", inputs: { min: "min", max: "max", showSeparator: "showSeparator", showCurrency: "showCurrency", showCounter: "showCounter", scrollWeel: "scrollWeel", showDoubleCounter: "showDoubleCounter", maxLength: "maxLength", intStep: "intStep", decimalNumber: "decimalNumber", customStep: "customStep" }, host: { styleAttribute: "width: 100%" }, providers: [{ provide: AXValidatableComponent, useExisting: AXNumberBoxComponent }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax form-item\" [class.disabled]=\"disabled\" [attr.id]=\"uid\" #fc>\r\n <div class=\"ax items-wrapper\">\r\n <ng-content select=\"[start]\">\r\n </ng-content>\r\n <ax-button icon=\"far fa-plus\" type=\"success blank\" (click)=\"upStepHandel()\" [disabled]=\"disabled\" *ngIf=\"showDoubleCounter\"></ax-button>\r\n </div>\r\n <div class=\"content\" #content>\r\n <div class=\"ax form-control input {{size}}\" [class.disabled]=\"disabled\" [class.readonly]=\"readonly\"\r\n [class.icon]=\"icon\">\r\n <input [autocomplete]=\"autocomplete\" [name]=\"name\" #input type=\"text\" class=\"ax {{size}}\" [maxlength]=\"calcSeparator(maxLength)\" [(ngModel)]=\"textValue\" placeholder=\"{{placeholder}}\"\r\n [readonly]=\"readonly\" [disabled]=\"disabled\" [ngClass]=\"setTextAlign()\"\r\n [class.clear]=\"value && allowClear\" (focus)=\"handleInputFocus($event)\" (blur)=\"handleInputBlur($event)\"\r\n (keypress)=\"handleKeyPress($event)\" (ngModelChange)=\"this.userQuestionUpdate.next($event)\"\r\n (keydown)=\"handleKeyDown($event)\" (click)=\"handleClick()\" (keyup)=\"handleKeyUp($event)\">\r\n <i class=\"{{icon}}\" *ngIf=\"icon\"></i>\r\n </div>\r\n </div>\r\n <div class=\"ax items-wrapper\">\r\n <ax-button *ngIf=\"value && allowClear\" [disabled]=\"disabled\" icon=\"far fa-times\" type=\"danger blank\"\r\n (click)=\"clear()\"></ax-button>\r\n <ax-button icon=\"far fa-minus\" type=\"danger blank\" (click)=\"downStepHandel()\" [disabled]=\"disabled\" *ngIf=\"showDoubleCounter\"></ax-button>\r\n <ng-content select=\"[end]\">\r\n </ng-content>\r\n <div class=\"arrow-number\" *ngIf=\"showCounter && !showDoubleCounter && !readonly\" >\r\n <ax-button type=\"light blank\" [disabled]=\"disabled\" icon=\"fas fa-angle-up\" [size]=\"size\"\r\n (mousedown)=\"upStepHandel()\" (mouseup)=\"delaySearch()\" [tabIndex]=\"-1\"></ax-button>\r\n <ax-button type=\"light blank\" [disabled]=\"disabled\" icon=\"fas fa-angle-down\" [size]=\"size\"\r\n (mousedown)=\"downStepHandel()\" (mouseup)=\"delaySearch()\" [tabIndex]=\"-1\"></ax-button>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", components: [{ type: i1.AXButtonComponent, selector: "ax-button", inputs: ["type", "icon", "submitBehavior", "cancelBehavior", "block", "loading", "selected"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
596
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXNumberBoxComponent, decorators: [{
|
|
186
597
|
type: Component,
|
|
187
|
-
args: [{ selector: 'ax-number-box',
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
'valueChange',
|
|
196
|
-
'onValueChanged',
|
|
197
|
-
'onBlur',
|
|
198
|
-
'onFocus',
|
|
199
|
-
...TEXTBOX_OUTPUT,
|
|
200
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'ax-editor-container' }, template: "<ng-content select=\"ax-prefix\">\r\n</ng-content>\r\n<input class=\"ax-input\" type=\"text\" \r\n [attr.placeholder]=\"placeholder\" \r\n [imask]=\"_maskObj\" \r\n [unmask]=\"'typed'\"\r\n [attr.min]=\"minValue\"\r\n [attr.max]=\"maxValue\" \r\n [class.ax-state-disabled]=\"disabled\" \r\n [class.ax-state-readonly]=\"readonly\"\r\n [disabled]=\"disabled\" \r\n [readonly]=\"readonly\" \r\n [tabindex]=\"tabIndex\" \r\n [(ngModel)]=\"value\"\r\n (focus)=\"_emitOnFocusEvent($event)\" \r\n (blur)=\"_emitOnFocusEvent($event)\" \r\n (keydown)=\"_handleOnKeydownEvent($event)\"\r\n [attr.autocomplete]=\"autoComplete\">\r\n\r\n<div class=\"ax-number-box-arrows\" *ngIf=\"showSpinButtons && !(disabled || readonly)\">\r\n <ax-button color=\"light\" look=\"blank\" (onClick)=\"_handleUpDownClick($event,1)\">\r\n <ax-prefix>\r\n <ax-icon class=\"ax-ic-arrow-fill ax-rotate-90\">\r\n </ax-icon>\r\n </ax-prefix>\r\n </ax-button>\r\n <ax-button color=\"light\" look=\"blank\" (onClick)=\"_handleUpDownClick($event,-1)\">\r\n <ax-prefix>\r\n <ax-icon class=\"ax-ic-arrow-fill ax--rotate-90\">\r\n </ax-icon>\r\n </ax-prefix>\r\n </ax-button>\r\n</div>\r\n<ng-content select=\"ax-suffix\">\r\n</ng-content>\r\n<ng-content select=\"ax-validation-rule\">\r\n</ng-content>" }]
|
|
201
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { thousandsSeparator: [{
|
|
598
|
+
args: [{ selector: 'ax-number-box', changeDetection: ChangeDetectionStrategy.OnPush, host: { style: 'width: 100%' }, providers: [{ provide: AXValidatableComponent, useExisting: AXNumberBoxComponent }], template: "<div class=\"ax form-item\" [class.disabled]=\"disabled\" [attr.id]=\"uid\" #fc>\r\n <div class=\"ax items-wrapper\">\r\n <ng-content select=\"[start]\">\r\n </ng-content>\r\n <ax-button icon=\"far fa-plus\" type=\"success blank\" (click)=\"upStepHandel()\" [disabled]=\"disabled\" *ngIf=\"showDoubleCounter\"></ax-button>\r\n </div>\r\n <div class=\"content\" #content>\r\n <div class=\"ax form-control input {{size}}\" [class.disabled]=\"disabled\" [class.readonly]=\"readonly\"\r\n [class.icon]=\"icon\">\r\n <input [autocomplete]=\"autocomplete\" [name]=\"name\" #input type=\"text\" class=\"ax {{size}}\" [maxlength]=\"calcSeparator(maxLength)\" [(ngModel)]=\"textValue\" placeholder=\"{{placeholder}}\"\r\n [readonly]=\"readonly\" [disabled]=\"disabled\" [ngClass]=\"setTextAlign()\"\r\n [class.clear]=\"value && allowClear\" (focus)=\"handleInputFocus($event)\" (blur)=\"handleInputBlur($event)\"\r\n (keypress)=\"handleKeyPress($event)\" (ngModelChange)=\"this.userQuestionUpdate.next($event)\"\r\n (keydown)=\"handleKeyDown($event)\" (click)=\"handleClick()\" (keyup)=\"handleKeyUp($event)\">\r\n <i class=\"{{icon}}\" *ngIf=\"icon\"></i>\r\n </div>\r\n </div>\r\n <div class=\"ax items-wrapper\">\r\n <ax-button *ngIf=\"value && allowClear\" [disabled]=\"disabled\" icon=\"far fa-times\" type=\"danger blank\"\r\n (click)=\"clear()\"></ax-button>\r\n <ax-button icon=\"far fa-minus\" type=\"danger blank\" (click)=\"downStepHandel()\" [disabled]=\"disabled\" *ngIf=\"showDoubleCounter\"></ax-button>\r\n <ng-content select=\"[end]\">\r\n </ng-content>\r\n <div class=\"arrow-number\" *ngIf=\"showCounter && !showDoubleCounter && !readonly\" >\r\n <ax-button type=\"light blank\" [disabled]=\"disabled\" icon=\"fas fa-angle-up\" [size]=\"size\"\r\n (mousedown)=\"upStepHandel()\" (mouseup)=\"delaySearch()\" [tabIndex]=\"-1\"></ax-button>\r\n <ax-button type=\"light blank\" [disabled]=\"disabled\" icon=\"fas fa-angle-down\" [size]=\"size\"\r\n (mousedown)=\"downStepHandel()\" (mouseup)=\"delaySearch()\" [tabIndex]=\"-1\"></ax-button>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n" }]
|
|
599
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { min: [{
|
|
600
|
+
type: Input
|
|
601
|
+
}], max: [{
|
|
602
|
+
type: Input
|
|
603
|
+
}], showSeparator: [{
|
|
604
|
+
type: Input
|
|
605
|
+
}], showCurrency: [{
|
|
202
606
|
type: Input
|
|
203
|
-
}],
|
|
607
|
+
}], showCounter: [{
|
|
204
608
|
type: Input
|
|
205
|
-
}],
|
|
609
|
+
}], scrollWeel: [{
|
|
206
610
|
type: Input
|
|
207
|
-
}],
|
|
611
|
+
}], showDoubleCounter: [{
|
|
208
612
|
type: Input
|
|
209
|
-
}],
|
|
613
|
+
}], maxLength: [{
|
|
210
614
|
type: Input
|
|
211
|
-
}],
|
|
615
|
+
}], intStep: [{
|
|
212
616
|
type: Input
|
|
213
|
-
}],
|
|
617
|
+
}], decimalNumber: [{
|
|
214
618
|
type: Input
|
|
215
|
-
}],
|
|
619
|
+
}], customStep: [{
|
|
216
620
|
type: Input
|
|
217
|
-
}], _maskDirective: [{
|
|
218
|
-
type: ViewChild,
|
|
219
|
-
args: [IMaskDirective]
|
|
220
621
|
}] } });
|
|
221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL251bWJlci1ib3gvbnVtYmVyLWJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL251bWJlci1ib3gvbnVtYmVyLWJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQix1QkFBdUIsRUFHdkIsS0FBSyxFQUdMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQTBDLE1BQU0sU0FBUyxDQUFDO0FBQ3JGLE9BQU8sRUFDTCxjQUFjLEVBQ2QsY0FBYyxHQUNmLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDOzs7Ozs7OztBQUV2Qjs7OztHQUlHO0FBdUJILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxrQkFBa0I7SUFpSDFEOztNQUVFO0lBQ0YsWUFDRSxVQUFzQixFQUNkLEdBQXNCO1FBRTlCLEtBQUssQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFGZixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWxHeEIscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBa0IxQzs7U0FFQztRQUVELFNBQUksR0FBVyxDQUFDLENBQUM7UUFJVCxjQUFTLEdBQVcsQ0FBQyxDQUFDO1FBZ0I5Qjs7VUFFRTtRQUVGLGdCQUFXLEdBQW9CLE1BQU0sQ0FBQztRQUV0Qzs7VUFFRTtRQUVGLG9CQUFlLEdBQVksSUFBSSxDQUFDO1FB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ZTtzQkFEZCxLQUFLO2dCQVFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBZ0JLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBa0JFLGNBQWM7c0JBRHJCLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBJTWFzayBmcm9tICdpbWFzayc7XHJcbmltcG9ydCB7IElNYXNrRGlyZWN0aXZlIH0gZnJvbSAnYW5ndWxhci1pbWFzayc7XHJcbmltcG9ydCB7IEFYQmFzZVRleHRCb3hNaXhpbiwgQVhDbGlja0V2ZW50LCBBWENvbXBvbmVudE9wdGlvbkNoYW5nZWQgfSBmcm9tICcuLi9iYXNlJztcclxuaW1wb3J0IHtcclxuICBURVhUQk9YX0lOUFVUUyxcclxuICBURVhUQk9YX09VVFBVVCxcclxufSBmcm9tICcuLi9iYXNlL21peGluL3RleHRib3gtbWl4aW4uY2xhc3MnO1xyXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBOdW1iZXJCb3ggaXMgYSBjb21wb25lbnQgd2hpY2ggZGV0ZWN0cyB1c2VyIGludGVyYWN0aW9uIGFuZCB0cmlnZ2VycyBhIGNvcnJlc3BvbmRpbmcgZXZlbnRcclxuICpcclxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXgtbnVtYmVyLWJveCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL251bWJlci1ib3guY29tcG9uZW50Lmh0bWwnLFxyXG4gIGlucHV0czogW1xyXG4gICAgJ2Rpc2FibGVkJyxcclxuICAgICdyZWFkb25seScsXHJcbiAgICAndGFiSW5kZXgnLFxyXG4gICAgJ3NpemUnLFxyXG4gICAgJ3ZhbHVlJyxcclxuICAgIC4uLlRFWFRCT1hfSU5QVVRTLFxyXG4gIF0sXHJcbiAgb3V0cHV0czogW1xyXG4gICAgJ3ZhbHVlQ2hhbmdlJyxcclxuICAgICdvblZhbHVlQ2hhbmdlZCcsXHJcbiAgICAnb25CbHVyJyxcclxuICAgICdvbkZvY3VzJyxcclxuICAgIC4uLlRFWFRCT1hfT1VUUFVULFxyXG4gIF0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBob3N0OiB7IGNsYXNzOiAnYXgtZWRpdG9yLWNvbnRhaW5lcicgfSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYTnVtYmVyQm94Q29tcG9uZW50IGV4dGVuZHMgQVhCYXNlVGV4dEJveE1peGluIHtcclxuXHJcblxyXG5cclxuXHJcbiAgcHJpdmF0ZSBfdGhvdXNhbmRzU2VwYXJhdG9yOiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgKiAgQSBjaGFyYWN0ZXIgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIHNlcGFyYXRvciBjaGFyYWN0ZXIuXHJcbiAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgdGhvdXNhbmRzU2VwYXJhdG9yKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGhvdXNhbmRzU2VwYXJhdG9yO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IHRob3VzYW5kc1NlcGFyYXRvcih2OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3NldE9wdGlvbih7XHJcbiAgICAgIG5hbWU6IFwidGhvdXNhbmRzU2VwYXJhdG9yXCIsXHJcbiAgICAgIHZhbHVlOiB2ID8/ICcnLFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3BhZERlY2ltYWxaZXJvczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKlxyXG4gICogIEEgY2hhcmFjdGVyIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSBzZXBhcmF0b3IgY2hhcmFjdGVyLlxyXG4gICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IHBhZERlY2ltYWxaZXJvcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9wYWREZWNpbWFsWmVyb3M7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgcGFkRGVjaW1hbFplcm9zKHY6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3NldE9wdGlvbih7XHJcbiAgICAgIG5hbWU6IFwicGFkRGVjaW1hbFplcm9zXCIsXHJcbiAgICAgIHZhbHVlOiB2LFxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIC8qKlxyXG4gKiAgU3BlY2lmaWVzIHRoZSB2YWx1ZSB0aGF0IGlzIHVzZWQgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCB0aGUgKipJbnRlZ2VyKiogcGFydCBvZiBudW1iZXJcclxuICovXHJcbiAgQElucHV0KClcclxuICBzdGVwOiBudW1iZXIgPSAxO1xyXG5cclxuXHJcblxyXG4gIHByaXZhdGUgX2RlY2ltYWxzOiBudW1iZXIgPSAwO1xyXG4gIC8qKlxyXG4gICogIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoYXQgdGhlIHVzZXIgY2FuIGVudGVyXHJcbiAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgZGVjaW1hbHMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWNpbWFscztcclxuICB9XHJcbiAgcHVibGljIHNldCBkZWNpbWFscyh2OiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3NldE9wdGlvbih7XHJcbiAgICAgIG5hbWU6IFwiZGVjaW1hbHNcIixcclxuICAgICAgdmFsdWU6IHYgPz8gMCxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgKiAgU3BlY2lmaWVzIHRoZSB2YWx1ZSB0aGF0IGlzIHVzZWQgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCB0aGUgKipEZWNpYW1sKiogcGFydCBvZiBudW1iZXJcclxuICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgZGVjaW1hbFN0ZXA6IG51bWJlciB8ICdhdXRvJyA9ICdhdXRvJztcclxuXHJcbiAgLyoqXHJcbiAgKiAgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIFVwIGFuZCBEb3duIHNwaW4gYnV0dG9ucyB3aWxsIGJlIHJlbmRlcmVkIG9yIG5vdFxyXG4gICovXHJcbiAgQElucHV0KClcclxuICBzaG93U3BpbkJ1dHRvbnM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIF9taW5WYWx1ZTogbnVtYmVyID0gTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVI7XHJcbiAgLyoqXHJcbiAgKiAgU3BlY2lmaWVzIHRoZSBzbWFsbGVzdCB2YWx1ZSB0aGF0IGlzIHZhbGlkXHJcbiAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgbWluVmFsdWUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9taW5WYWx1ZTtcclxuICB9XHJcbiAgcHVibGljIHNldCBtaW5WYWx1ZSh2OiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3NldE9wdGlvbih7XHJcbiAgICAgIG5hbWU6IFwibWluVmFsdWVcIixcclxuICAgICAgdmFsdWU6IHYgIT0gbnVsbCA/IE51bWJlcih2KSA6IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSLFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX21heFZhbHVlOiBudW1iZXIgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcclxuICAvKipcclxuICAqICBTcGVjaWZpZXMgdGhlIGdyZWF0ZXN0IHZhbHVlIHRoYXQgaXMgdmFsaWRcclxuICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBtYXhWYWx1ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX21heFZhbHVlO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IG1heFZhbHVlKHY6IG51bWJlcikge1xyXG4gICAgdGhpcy5fc2V0T3B0aW9uKHtcclxuICAgICAgbmFtZTogXCJtYXhWYWx1ZVwiLFxyXG4gICAgICB2YWx1ZTogdiAhPSBudWxsID8gTnVtYmVyKHYpIDogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICogIEBpZ25vcmVcclxuICAqL1xyXG4gIF9tYXNrT2JqOiBJTWFzay5NYXNrZWROdW1iZXI7XHJcblxyXG4gIEBWaWV3Q2hpbGQoSU1hc2tEaXJlY3RpdmUpXHJcbiAgcHJpdmF0ZSBfbWFza0RpcmVjdGl2ZTogSU1hc2tEaXJlY3RpdmU8SU1hc2suTWFza2VkTnVtYmVyPjtcclxuXHJcbiAgLyoqXHJcbiAgKiAgQGlnbm9yZVxyXG4gICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgICBzdXBlcihlbGVtZW50UmVmLCBjZHIpO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5vblZpZXdJbml0KCk7XHJcbiAgICB0aGlzLl91cGRhdGVNYXNrKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgX29uT3B0aW9uQ2hhbmdlZChvcHRpb246IEFYQ29tcG9uZW50T3B0aW9uQ2hhbmdlZCk6IHZvaWQge1xyXG4gICAgc3VwZXIuX29uT3B0aW9uQ2hhbmdlZChvcHRpb24pO1xyXG4gICAgdGhpcy5fdXBkYXRlTWFzaygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlTWFzaygpIHtcclxuICAgIGlmICghdGhpcy5fbWFza09iaikge1xyXG4gICAgICB0aGlzLl9tYXNrT2JqID0gSU1hc2suY3JlYXRlTWFzayh7XHJcbiAgICAgICAgbWFzazogTnVtYmVyLFxyXG4gICAgICAgIG1pbjogdGhpcy5taW5WYWx1ZSxcclxuICAgICAgICBtYXg6IHRoaXMubWF4VmFsdWUsXHJcbiAgICAgICAgdGhvdXNhbmRzU2VwYXJhdG9yOiB0aGlzLnRob3VzYW5kc1NlcGFyYXRvciB8fCAnJyxcclxuICAgICAgICBzY2FsZTogdGhpcy5kZWNpbWFscyxcclxuICAgICAgICByYWRpeDogJy4nLFxyXG4gICAgICAgIHBhZEZyYWN0aW9uYWxaZXJvczogdGhpcy5kZWNpbWFscyA+IDAgJiYgdGhpcy5wYWREZWNpbWFsWmVyb3NcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5fbWFza09iai51cGRhdGVPcHRpb25zKHtcclxuICAgICAgICBtaW46IHRoaXMubWluVmFsdWUsXHJcbiAgICAgICAgbWF4OiB0aGlzLm1heFZhbHVlLFxyXG4gICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogdGhpcy50aG91c2FuZHNTZXBhcmF0b3IgfHwgJycsXHJcbiAgICAgICAgc2NhbGU6IHRoaXMuZGVjaW1hbHMsXHJcbiAgICAgICAgcmFkaXg6ICcuJyxcclxuICAgICAgICBwYWRGcmFjdGlvbmFsWmVyb3M6IHRoaXMuZGVjaW1hbHMgPiAwICYmIHRoaXMucGFkRGVjaW1hbFplcm9zXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICB0aGlzLl9tYXNrRGlyZWN0aXZlPy5tYXNrUmVmPy51cGRhdGVWYWx1ZSgpO1xyXG4gICAgdGhpcy5fbWFza0RpcmVjdGl2ZT8ubWFza1JlZj8udXBkYXRlQ29udHJvbCgpO1xyXG4gIH1cclxuXHJcbiAgX2hhbmRsZU9uS2V5ZG93bkV2ZW50KGU6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGNvbnN0IGlnbm9yZSA9ICgpID0+IHtcclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGlucHV0ID0gZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGNvbnN0IHZhbFN0ciA9IGlucHV0LnZhbHVlO1xyXG4gICAgY29uc3QgZGVjaW1hbFBvaW50SW5kZXggPSB2YWxTdHIuaW5kZXhPZignLicpO1xyXG4gICAgY29uc3QgX2N1cnNvclBvcz1pbnB1dC5zZWxlY3Rpb25TdGFydDtcclxuXHJcbiAgICBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJyB8fCBlLmtleSA9PT0gJ0Fycm93RG93bicpIHtcclxuICAgICAgaWYgKGRlY2ltYWxQb2ludEluZGV4ID4gMCAmJiBfY3Vyc29yUG9zID4gZGVjaW1hbFBvaW50SW5kZXggJiYgdGhpcy5kZWNpbWFscyA+IDApIHtcclxuICAgICAgICBlLmtleSA9PT0gJ0Fycm93RG93bicgPyB0aGlzLmRlY2ltYWxTdGVwRG93bigpIDogdGhpcy5kZWNpbWFsU3RlcFVwKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZS5rZXkgPT09ICdBcnJvd0Rvd24nID8gdGhpcy5zdGVwRG93bigpIDogdGhpcy5zdGVwVXAoKTtcclxuICAgICAgfVxyXG4gICAgICBpZ25vcmUoKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoX2N1cnNvclBvcywgX2N1cnNvclBvcyk7XHJcbiAgICAgIH0sNSk7XHJcbiAgICB9XHJcbiAgICBzdXBlci5fZW1pdE9uS2V5ZG93bkV2ZW50KGUpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBfaGFuZGxlVXBEb3duQ2xpY2soZTogQVhDbGlja0V2ZW50LCB2OiAtMSB8IDEpIHtcclxuICAgIHYgPT0gMSA/IHRoaXMuc3RlcFVwKCkgOiB0aGlzLnN0ZXBEb3duKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgX29uVmFsdWVDaGFuZ2luZyh2YWx1ZTogYW55KSB7XHJcbiAgICBjb25zdCB2ID0gXy50b051bWJlcih2YWx1ZSk7XHJcbiAgICBpZiAodiA8IHRoaXMubWluVmFsdWUpXHJcbiAgICAgIHJldHVybiB0aGlzLm1pblZhbHVlO1xyXG4gICAgaWYgKHYgPiB0aGlzLm1heFZhbHVlKVxyXG4gICAgICByZXR1cm4gdGhpcy5tYXhWYWx1ZTtcclxuICAgIHJldHVybiB2O1xyXG4gIH1cclxuXHJcblxyXG4gIHN0ZXBVcCgpIHtcclxuICAgIHRoaXMudmFsdWUgKz0gXy50b051bWJlcih0aGlzLnN0ZXApO1xyXG4gIH1cclxuXHJcbiAgc3RlcERvd24oKSB7XHJcbiAgICB0aGlzLnZhbHVlIC09IF8udG9OdW1iZXIodGhpcy5zdGVwKTtcclxuICB9XHJcblxyXG4gIGRlY2ltYWxTdGVwVXAoKSB7XHJcbiAgICB0aGlzLnZhbHVlICs9IF8udG9OdW1iZXIodGhpcy5kZWNpbWFsU3RlcCA9PSAnYXV0bycgPyAoMSAvIE1hdGgucG93KDEwLCB0aGlzLmRlY2ltYWxzKSkgOiB0aGlzLmRlY2ltYWxTdGVwKTtcclxuICB9XHJcblxyXG4gIGRlY2ltYWxTdGVwRG93bigpIHtcclxuICAgIHRoaXMudmFsdWUgLT0gXy50b051bWJlcih0aGlzLmRlY2ltYWxTdGVwID09ICdhdXRvJyA/ICgxIC8gTWF0aC5wb3coMTAsIHRoaXMuZGVjaW1hbHMpKSA6IHRoaXMuZGVjaW1hbFN0ZXApO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtcHJlZml4XCI+XHJcbjwvbmctY29udGVudD5cclxuPGlucHV0IGNsYXNzPVwiYXgtaW5wdXRcIiB0eXBlPVwidGV4dFwiICBcclxuICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgXHJcbiAgICBbaW1hc2tdPVwiX21hc2tPYmpcIiBcclxuICAgIFt1bm1hc2tdPVwiJ3R5cGVkJ1wiXHJcbiAgICBbYXR0ci5taW5dPVwibWluVmFsdWVcIlxyXG4gICAgW2F0dHIubWF4XT1cIm1heFZhbHVlXCIgXHJcbiAgICBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBcclxuICAgIFtjbGFzcy5heC1zdGF0ZS1yZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBcclxuICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiIFxyXG4gICAgW3RhYmluZGV4XT1cInRhYkluZGV4XCIgXHJcbiAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgIChmb2N1cyk9XCJfZW1pdE9uRm9jdXNFdmVudCgkZXZlbnQpXCIgXHJcbiAgICAoYmx1cik9XCJfZW1pdE9uRm9jdXNFdmVudCgkZXZlbnQpXCIgXHJcbiAgICAoa2V5ZG93bik9XCJfaGFuZGxlT25LZXlkb3duRXZlbnQoJGV2ZW50KVwiXHJcbiAgICBbYXR0ci5hdXRvY29tcGxldGVdPVwiYXV0b0NvbXBsZXRlXCI+XHJcblxyXG48ZGl2IGNsYXNzPVwiYXgtbnVtYmVyLWJveC1hcnJvd3NcIiAqbmdJZj1cInNob3dTcGluQnV0dG9ucyAmJiAhKGRpc2FibGVkIHx8IHJlYWRvbmx5KVwiPlxyXG4gICAgPGF4LWJ1dHRvbiBjb2xvcj1cImxpZ2h0XCIgbG9vaz1cImJsYW5rXCIgKG9uQ2xpY2spPVwiX2hhbmRsZVVwRG93bkNsaWNrKCRldmVudCwxKVwiPlxyXG4gICAgICAgIDxheC1wcmVmaXg+XHJcbiAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiYXgtaWMtYXJyb3ctZmlsbCBheC1yb3RhdGUtOTBcIj5cclxuICAgICAgICAgICAgPC9heC1pY29uPlxyXG4gICAgICAgIDwvYXgtcHJlZml4PlxyXG4gICAgPC9heC1idXR0b24+XHJcbiAgICA8YXgtYnV0dG9uIGNvbG9yPVwibGlnaHRcIiBsb29rPVwiYmxhbmtcIiAob25DbGljayk9XCJfaGFuZGxlVXBEb3duQ2xpY2soJGV2ZW50LC0xKVwiPlxyXG4gICAgICAgIDxheC1wcmVmaXg+XHJcbiAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiYXgtaWMtYXJyb3ctZmlsbCBheC0tcm90YXRlLTkwXCI+XHJcbiAgICAgICAgICAgIDwvYXgtaWNvbj5cclxuICAgICAgICA8L2F4LXByZWZpeD5cclxuICAgIDwvYXgtYnV0dG9uPlxyXG48L2Rpdj5cclxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtc3VmZml4XCI+XHJcbjwvbmctY29udGVudD5cclxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtdmFsaWRhdGlvbi1ydWxlXCI+XHJcbjwvbmctY29udGVudD4iXX0=
|
|
622
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL251bWJlci1ib3gvbnVtYmVyLWJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL251bWJlci1ib3gvbnVtYmVyLWJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQWdCLGlCQUFpQixFQUFFLHVCQUF1QixFQUF5QixNQUFNLGVBQWUsQ0FBQztBQUM5SSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBUXBGLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxtQkFBbUI7SUE2SjNELFlBQXNCLEdBQXNCLEVBQUUsR0FBZTtRQUMzRCxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBREksUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUE1Sm5DLFFBQUcsR0FBVyxJQUFJLENBQUM7UUFDbkIsUUFBRyxHQUFXLElBQUksQ0FBQztRQUc1QixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUUvQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUc5QixnQkFBVyxHQUFZLElBQUksQ0FBQztRQUc1QixlQUFVLEdBQVksSUFBSSxDQUFDO1FBRzNCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUduQyxjQUFTLEdBQVcsRUFBRSxDQUFDO1FBRXZCLHVCQUFrQixHQUFHLElBQUks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QUFFLENBQUM7aUlBRzFFLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBR04sYUFBYTtzQkFEWixLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBaUJHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIENoYW5nZURldGVjdG9yUmVmLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQVhCYXNlVGV4dENvbXBvbmVudCwgQVhWYWxpZGF0YWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UvZWxlbWVudC5jbGFzcyc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXgtbnVtYmVyLWJveCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL251bWJlci1ib3guY29tcG9uZW50Lmh0bWwnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGhvc3Q6IHsgc3R5bGU6ICd3aWR0aDogMTAwJScgfSxcclxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFYVmFsaWRhdGFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWE51bWJlckJveENvbXBvbmVudCB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhOdW1iZXJCb3hDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VUZXh0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBtaW46IG51bWJlciA9IG51bGw7XHJcbiAgQElucHV0KCkgbWF4OiBudW1iZXIgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dTZXBhcmF0b3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHNob3dDdXJyZW5jeTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dDb3VudGVyOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzY3JvbGxXZWVsOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzaG93RG91YmxlQ291bnRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG1heExlbmd0aDogbnVtYmVyID0gMTg7XHJcblxyXG4gIHVzZXJRdWVzdGlvblVwZGF0ZSA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuXHJcbiAgdXNlckVkaXRlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHRtcDogYW55O1xyXG4gIGNvdW50OiBudW1iZXI7XHJcbiAgZmluZERvdHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBmaW5kTWludXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjdXJzb3JQb3NpdGlvbjogbnVtYmVyID0gMDtcclxuICBkb3RQb3NpdGlvbjogbnVtYmVyO1xyXG4gIHRleHRWYWx1ZTogc3RyaW5nO1xyXG4gIGRlY2ltYWxDb25zdGFudDogbnVtYmVyID0gMC4xO1xyXG4gIGxhc3RTdGVwOiBudW1iZXIgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKSBpbnRTdGVwOiBudW1iZXIgPSAxO1xyXG4gIEBJbnB1dCgpIGRlY2ltYWxOdW1iZXI6IG51bWJlciA9IG51bGw7XHJcbiAgQElucHV0KCkgY3VzdG9tU3RlcDogbnVtYmVyID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBfdmFsdWVzOiBzdHJpbmc7XHJcbiAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlcztcclxuICB9XHJcbiAgcHVibGljIHNldCB2YWx1ZSh2OiBzdHJpbmcpIHtcclxuICAgIGlmICh2ID09PSAnLScpIHtcclxuICAgICAgdGhpcy50ZXh0VmFsdWUgPSAnLSc7XHJcbiAgICAgIHRoaXMuX3ZhbHVlcyA9ICctJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh2ID09PSAnJyB8fCB2ID09IG51bGwgfHwgdiA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IGlzTmFOKE51bWJlcih2LnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCAnJykpKSA9PT0gZmFsc2UpIHtcclxuICAgICAgICBpZiAodiA9PT0gJycgfHwgdiA9PSBudWxsIHx8IHYgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy50ZXh0VmFsdWUgPSAnJztcclxuICAgICAgICAgIGNvbnN0IG9sZCA9IHRoaXMuX3ZhbHVlcztcclxuICAgICAgICAgIHRoaXMuX3ZhbHVlcyA9IG51bGw7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuX3ZhbHVlcyAhPT0gb2xkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlZC5lbWl0KHtcclxuICAgICAgICAgICAgICBpc1VzZXJDaGFuZ2U6IHRoaXMudXNlckVkaXRlLFxyXG4gICAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcclxuICAgICAgICAgICAgICBvbGRWYWx1ZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1NlcGFyYXRvciAmJiBvbGRcclxuICAgICAgICAgICAgICAgICAgPyBvbGQgPT09ICctJ1xyXG4gICAgICAgICAgICAgICAgICAgID8gbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgIDogTnVtYmVyKG9sZC5yZXBsYWNlKC8sL2csICcnKSlcclxuICAgICAgICAgICAgICAgICAgOiBvbGQgPT09IG51bGwgfHwgb2xkID09PSB1bmRlZmluZWRcclxuICAgICAgICAgICAgICAgICAgPyBudWxsXHJcbiAgICAgICAgICAgICAgICAgIDogb2xkID09PSAnLSdcclxuICAgICAgICAgICAgICAgICAgPyBudWxsXHJcbiAgICAgICAgICAgICAgICAgIDogTnVtYmVyKG9sZCksXHJcbiAgICAgICAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnRcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMudXNlckVkaXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jbGVhclZhbGlkYXRpb25TdHlsZSh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2ID0gdi50b1N0cmluZygpO1xyXG5cclxuICAgICAgICAgIC8vIHRoaXMuYWRkQ29tbWFzKHYudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICB0aGlzLnRleHRWYWx1ZSA9IHRoaXMuc2hvd1NlcGFyYXRvciAmJiB2ID8gdGhpcy5hZGRDb21tYXModi50b1N0cmluZygpKSA6IHY7XHJcblxyXG4gICAgICAgICAgLy8gaWYgKHRoaXMudGV4dFZhbHVlLmluZGV4T2YoJy4nKSAhPT0gLTEpIHtcclxuICAgICAgICAgIC8vICAgLy8gY29uc3QgZG90dHQ9ICh0aGlzLnRleHRWYWx1ZS5sZW5ndGgtMSkgLSB0aGlzLnRleHRWYWx1ZS5pbmRleE9mKCcuJylcclxuICAgICAgICAgIC8vICAgaWYgKHRoaXMudGV4dFZhbHVlLmxlbmd0aCAtIDEgLSB0aGlzLnRleHRWYWx1ZS5pbmRleE9mKCcuJykgPCB0aGlzLmRlY2ltYWxOdW1iZXIpIHtcclxuICAgICAgICAgIC8vICAgICBjb25zdCBhID0gdGhpcy5kZWNpbWFsTnVtYmVyIC0gKHRoaXMudGV4dFZhbHVlLmxlbmd0aCAtIDEgLSB0aGlzLnRleHRWYWx1ZS5pbmRleE9mKCcuJykpO1xyXG4gICAgICAgICAgLy8gICAgIGNvbnN0IHogPSAnMCc7XHJcbiAgICAgICAgICAvLyAgICAgdGhpcy50ZXh0VmFsdWUgPSB0aGlzLnRleHRWYWx1ZSArICcwJztcclxuICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICAgIGlmICh0aGlzLl92YWx1ZXMpIHtcclxuICAgICAgICAgICAgY29uc3Qgb2xkID0gdGhpcy5fdmFsdWVzO1xyXG4gICAgICAgICAgICBpZiAob2xkLnRvU3RyaW5nKCkuc2VhcmNoKC9cXC4vZykgIT09IHYudG9TdHJpbmcoKS5zZWFyY2goL1xcLi9nKSkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uIDw9IG9sZC5zZWFyY2goL1xcLi9nKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJzb3JQb3NpdGlvbiA9IHYuc2VhcmNoKC9cXC4vZyk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3Vyc29yUG9zaXRpb24gPSB2Lmxlbmd0aDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh2ICE9PSB0aGlzLl92YWx1ZXMpIHtcclxuICAgICAgICAgICAgY29uc3Qgb2xkID0gdGhpcy5fdmFsdWVzO1xyXG4gICAgICAgICAgICB0aGlzLl92YWx1ZXMgPSB2O1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5zaG93U2VwYXJhdG9yICYmIHYgPyBOdW1iZXIodi5yZXBsYWNlKC8sL2csICcnKSkgOiBOdW1iZXIodikpO1xyXG4gICAgICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICAgICAgICAgIGlzVXNlckNoYW5nZTogdGhpcy51c2VyRWRpdGUsXHJcbiAgICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnNob3dTZXBhcmF0b3IgJiYgdiA/IE51bWJlcih2LnJlcGxhY2UoLywvZywgJycpKSA6IE51bWJlcih2KSxcclxuICAgICAgICAgICAgICBvbGRWYWx1ZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1NlcGFyYXRvciAmJiBvbGRcclxuICAgICAgICAgICAgICAgICAgPyBvbGQgPT09ICctJ1xyXG4gICAgICAgICAgICAgICAgICAgID8gbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgIDogTnVtYmVyKG9sZC5yZXBsYWNlKC8sL2csICcnKSlcclxuICAgICAgICAgICAgICAgICAgOiBvbGQgPT09IG51bGwgfHwgb2xkID09PSB1bmRlZmluZWRcclxuICAgICAgICAgICAgICAgICAgPyBudWxsXHJcbiAgICAgICAgICAgICAgICAgIDogb2xkID09PSAnLSdcclxuICAgICAgICAgICAgICAgICAgPyBudWxsXHJcbiAgICAgICAgICAgICAgICAgIDogTnVtYmVyKG9sZCksXHJcbiAgICAgICAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnRcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMudXNlckVkaXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jbGVhclZhbGlkYXRpb25TdHlsZSh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnRleHRWYWx1ZSA9ICcnO1xyXG4gICAgICAgIHYgPSBudWxsO1xyXG4gICAgICAgIGNvbnN0IG9sZCA9IHRoaXMuX3ZhbHVlcztcclxuICAgICAgICB0aGlzLl92YWx1ZXMgPSBudWxsO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fdmFsdWVzICE9PSBvbGQpIHtcclxuICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChudWxsKTtcclxuICAgICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZWQuZW1pdCh7XHJcbiAgICAgICAgICAgIGlzVXNlckNoYW5nZTogdGhpcy51c2VyRWRpdGUsXHJcbiAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICAgICAgdmFsdWU6IG51bGwsXHJcbiAgICAgICAgICAgIG9sZFZhbHVlOlxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd1NlcGFyYXRvciAmJiBvbGRcclxuICAgICAgICAgICAgICAgID8gb2xkID09PSAnLSdcclxuICAgICAgICAgICAgICAgICAgPyBudWxsXHJcbiAgICAgICAgICAgICAgICAgIDogTnVtYmVyKG9sZC5yZXBsYWNlKC8sL2csICcnKSlcclxuICAgICAgICAgICAgICAgIDogb2xkID09PSBudWxsIHx8IG9sZCA9PT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICA/IG51bGxcclxuICAgICAgICAgICAgICAgIDogb2xkID09PSAnLSdcclxuICAgICAgICAgICAgICAgID8gbnVsbFxyXG4gICAgICAgICAgICAgICAgOiBOdW1iZXIob2xkKSxcclxuICAgICAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnRcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy51c2VyRWRpdGUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMuY2xlYXJWYWxpZGF0aW9uU3R5bGUodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHJlZjogRWxlbWVudFJlZikge1xyXG4gICAgc3VwZXIoY2RyLCByZWYpO1xyXG4gICAgdGhpcy50ZXh0QWxpZ24gPSAnbGVmdCc7XHJcbiAgfVxyXG5cclxuICBjYWxjU2VwYXJhdG9yKG51bTogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5zaG93U2VwYXJhdG9yKSB7XHJcbiAgICAgIHJldHVybiBudW0gKyArKG51bSAvIDMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZENvbW1hczIoeCkge1xyXG4gICAgcmV0dXJuIHgudG9TdHJpbmcoKS5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCAnLCcpO1xyXG4gIH1cclxuXHJcbiAgYWRkQ29tbWFzKG5TdHIpIHtcclxuICAgIG5TdHIgKz0gJyc7XHJcbiAgICBjb25zdCB4ID0gblN0ci5zcGxpdCgnLicpO1xyXG4gICAgbGV0IHgxID0geFswXTtcclxuICAgIGNvbnN0IHgyID0geC5sZW5ndGggPiAxID8gJy4nICsgeFsxXSA6ICcnO1xyXG4gICAgY29uc3Qgcmd4ID0gLyhcXGQrKShcXGR7M30pLztcclxuICAgIHdoaWxlIChyZ3gudGVzdCh4MSkpIHtcclxuICAgICAgeDEgPSB4MS5yZXBsYWNlKHJneCwgJyQxJyArICcsJyArICckMicpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHgxICsgeDI7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkID09PSBmYWxzZSkge1xyXG4gICAgICBpZiAodGhpcy5zY3JvbGxXZWVsID09PSB0cnVlKSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5yZWFkb25seSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgKGUpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmhhbmRsZVdoZWVsKGUpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCA1MDApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdGhpcy52YWx1ZSA9IHRoaXMubWluLnRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVXaGVlbChldmVudCkge1xyXG4gICAgaWYgKChldmVudCBhcyBhbnkpLndoZWVsRGVsdGEgPiAwKSB7XHJcbiAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ3RyYW5zcGFyZW50JztcclxuXHJcbiAgICAgIHRoaXMudXBTdGVwSGFuZGVsKCk7XHJcbiAgICAgIHRoaXMuZGVsYXlTZWFyY2goKTtcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0Q2FyZXQoKTtcclxuICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuY2FyZXRDb2xvciA9ICdhdXRvJztcclxuICAgICAgfSwgMCk7XHJcbiAgICB9XHJcbiAgICBpZiAoKGV2ZW50IGFzIGFueSkud2hlZWxEZWx0YSA8IDApIHtcclxuICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG5cclxuICAgICAgdGhpcy5kb3duU3RlcEhhbmRlbCgpO1xyXG4gICAgICB0aGlzLmRlbGF5U2VhcmNoKCk7XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnNldENhcmV0KCk7XHJcbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmNhcmV0Q29sb3IgPSAnYXV0byc7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfVxyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlS2V5UHJlc3MoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy51c2VyRWRpdGUgPSB0cnVlO1xyXG4gICAgY29uc3QgTnVtYmVyRG90cGF0dGVybiA9IC9bMC05XFwuXS9nO1xyXG4gICAgY29uc3QgTnVtYmVyTWludXNQYXR0ZXJuID0gL1swLTlcXC1dL2c7XHJcblxyXG4gICAgY29uc3QgaW5wdXRDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZShldmVudC5jaGFyQ29kZSk7XHJcblxyXG4gICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS50b1N0cmluZygpLm1hdGNoKC9cXC4vZykgPT09IG51bGwpIHtcclxuICAgICAgdGhpcy5maW5kRG90cyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS50b1N0cmluZygpLnNlYXJjaCgnLScpID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuZmluZE1pbnVzID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZ2V0IGN1cnN1ciBwb3NpdGlvbiB3aGVuIGtleSBwcmVzc1xyXG4gICAgaWYgKHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCB8fCB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT09IDApIHtcclxuICAgICAgdGhpcy5jdXJzb3JQb3NpdGlvbiA9IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydDtcclxuICAgICAgdGhpcy5jdXJzb3JQb3NpdGlvbiArPSAxO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGNvbnRyb2wgY3Vyc29yIHdoZW4gaW4gZmlyc3QgSW5kZXhcclxuICAgIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uIDw9IDEpIHtcclxuICAgICAgaWYgKCFOdW1iZXJNaW51c1BhdHRlcm4udGVzdChpbnB1dENoYXIpKSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLm1hdGNoKC9cXC0vZykpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBjb250cm9sIGN1cnNvciB3aGVuIGluIGFub3RoZXIgaW5kZXhcclxuICAgIGlmICh0aGlzLmN1cnNvclBvc2l0aW9uICE9PSAxKSB7XHJcbiAgICAgIGlmIChldmVudC5rZXlDb2RlICE9PSA4ICYmICFOdW1iZXJEb3RwYXR0ZXJuLnRlc3QoaW5wdXRDaGFyKSkge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gZm9yIGNvbnRvciBkZWNpbWFsIGZpZ3VyID0gMCBvciBudWxsXHJcbiAgICAgICAgaWYgKHRoaXMuZGVjaW1hbE51bWJlciA9PT0gbnVsbCB8fCB0aGlzLmRlY2ltYWxOdW1iZXIgPT09IDApIHtcclxuICAgICAgICAgIGlmIChpbnB1dENoYXIgPT09ICcuJykge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjb250cm9sIGRlY2ltYWwgbnVtYmVyIChmaWd1ciBvZiBkZWNpbWFsKVxyXG4gICAgICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUudG9TdHJpbmcoKS5tYXRjaCgvXFwuL2cpKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWd1cmVBZnRlckRvdCA9IHRoaXMudmFsdWUubGVuZ3RoIC0gdGhpcy52YWx1ZS5pbmRleE9mKCcuJyk7XHJcbiAgICAgICAgICBjb25zdCBkb3RJbmRleCA9IHRoaXMudmFsdWUuaW5kZXhPZignLicpO1xyXG4gICAgICAgICAgaWYgKGRvdEluZGV4IC0gMSArIGRvdEluZGV4ICsgZmlndXJlQWZ0ZXJEb3QgPiBkb3RJbmRleCAtIDEgKyBkb3RJbmRleCArIHRoaXMuZGVjaW1hbE51bWJlciAmJiB0aGlzLmN1cnNvclBvc2l0aW9uIC0gMSA+IGRvdEluZGV4KSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNvbnRyb2wgJy4nIGlucHV0XHJcbiAgICAgICAgaWYgKGlucHV0Q2hhciA9PT0gJy4nKSB7XHJcbiAgICAgICAgICBjb25zdCBsYXN0Q2hhciA9IHRoaXMudmFsdWUudG9TdHJpbmcoKS5jaGFyQXQodGhpcy52YWx1ZS5sZW5ndGggLSAxKTtcclxuICAgICAgICAgIC8vIGNvbnRyb2wgLiB3aGVuIGxhc3QgY2hhciBpcyAtXHJcbiAgICAgICAgICBpZiAobGFzdENoYXIudG9TdHJpbmcoKS5tYXRjaCgvXFwtL2cpKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBjb250cm9sIC4gd2hlbiBmaW5kIGZpcnN0IGRvdFxyXG4gICAgICAgICAgaWYgKHRoaXMuZmluZERvdHMpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZmluZERvdHMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5maW5kTWludXMgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIHRoaXMudXNlckVkaXRlID0gdHJ1ZTtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJyB8fCBldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ2F1dG8nO1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcclxuICAgICAgdGhpcy5zZXRDYXJldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgIHRoaXMuc2V0Q2FyZXQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBsZWZ0ICYgcmlnaHQgQnV0dG9uXHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0JyB8fCBldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xyXG4gICAgICBpZiAodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0IHx8IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuY3Vyc29yUG9zaXRpb24gPSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBob21lIGJ1dHRvblxyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0hvbWUnKSB7XHJcbiAgICAgIHRoaXMuY3Vyc29yUG9zaXRpb24gPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGVuZCBidXR0b25cclxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbmQnKSB7XHJcbiAgICAgIHRoaXMuY3Vyc29yUG9zaXRpb24gPSB0aGlzLnZhbHVlLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBzZXQgZGVsYXkgd2l0aCByeGpzXHJcbiAgICB0aGlzLmRlbGF5U2VhcmNoKCk7XHJcblxyXG4gICAgLy8gYmFja3NwYWNlIENvbnRyb2xcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnKSB7XHJcbiAgICAgIGlmICh0aGlzLnZhbHVlID09PSBudWxsIHx8IHRoaXMudmFsdWUubGVuZ3RoIDw9IDApIHtcclxuICAgICAgICB0aGlzLmN1cnNvclBvc2l0aW9uID0gMDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmN1cnNvclBvc2l0aW9uIC09IDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIHRoaXMudXNlckVkaXRlID0gdHJ1ZTtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJyB8fCBldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucmVhZG9ubHkgPT09IGZhbHNlKSB7XHJcbiAgICAgIGNvbnN0IGNvdW50QWZ0ZXJEb3QgPVxyXG4gICAgICAgIHRoaXMudmFsdWUgIT09IG51bGwgJiYgdGhpcy52YWx1ZSAhPT0gJycgJiYgdGhpcy52YWx1ZSAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICA/IHRoaXMudmFsdWUudG9TdHJpbmcoKS5sZW5ndGggLSAxIC0gdGhpcy52YWx1ZS50b1N0cmluZygpLmluZGV4T2YoJy4nKVxyXG4gICAgICAgICAgOiAwO1xyXG4gICAgICBjb25zdCBkZWZhdWx0U3RlcDogbnVtYmVyID1cclxuICAgICAgICBjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gTWF0aC5wb3codGhpcy5kZWNpbWFsQ29uc3RhbnQsIHRoaXMuZGVjaW1hbE51bWJlcikgOiBNYXRoLnBvdyh0aGlzLmRlY2ltYWxDb25zdGFudCwgY291bnRBZnRlckRvdCk7XHJcbiAgICAgIC8vIHN0ZXAgYW5kICstIHdpdGggdXAga2V5IGFuZCBkb3duIGtleVxyXG4gICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL1xcLi9nKSkge1xyXG4gICAgICAgIHRoaXMuZG90UG9zaXRpb24gPSB0aGlzLnZhbHVlLmluZGV4T2YoJy4nKTtcclxuICAgICAgICBpZiAodGhpcy5kb3RQb3NpdGlvbiA+PSB0aGlzLmN1cnNvclBvc2l0aW9uKSB7XHJcbiAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICAgICAgICB0aGlzLnRtcCA9IHBhcnNlRmxvYXQodGhpcy52YWx1ZS5yZXBsYWNlKC8sL2csICcnKSk7XHJcbiAgICAgICAgICAgIHRoaXMuY291bnQgPSB0aGlzLnRtcCAtICt0aGlzLmludFN0ZXA7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1pbiA9PT0gbnVsbCB8fCBOdW1iZXIodGhpcy5jb3VudCkgPj0gTnVtYmVyKHRoaXMubWluKSkge1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMudmFsdWUgPSB0aGlzLmNvdW50LnRvRml4ZWQodGhpcy5kZWNpbWFsTnVtYmVyKTtcclxuICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5jb3VudC50b0ZpeGVkKGNvdW50QWZ0ZXJEb3QgPiB0aGlzLmRlY2ltYWxOdW1iZXIgPyB0aGlzLmRlY2ltYWxOdW1iZXIgOiBjb3VudEFmdGVyRG90KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xyXG4gICAgICAgICAgICB0aGlzLnRtcCA9IHBhcnNlRmxvYXQodGhpcy52YWx1ZS5yZXBsYWNlKC8sL2csICcnKSk7XHJcbiAgICAgICAgICAgIHRoaXMuY291bnQgPSB0aGlzLnRtcCArICt0aGlzLmludFN0ZXA7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1heCA9PT0gbnVsbCB8fCBOdW1iZXIodGhpcy5jb3VudCkgPD0gTnVtYmVyKHRoaXMubWF4KSkge1xyXG4gICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNvdW50LnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1pbiA9PT0gbnVsbCB8fCBOdW1iZXIodGhpcy52YWx1ZSkgPiBOdW1iZXIodGhpcy5taW4pKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuY3VzdG9tU3RlcCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50bXAgPSBwYXJzZUZsb2F0KHRoaXMudmFsdWUucmVwbGFjZSgvLC9nLCAnJykpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0U3RlcCA9XHJcbiAgICAgICAgICAgICAgICAgIHBhcnNlRmxvYXQoZGVmYXVsdFN0ZXAudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCkpICtcclxuICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdCh0aGlzLmN1c3RvbVN0ZXAudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCkpIC1cclxuICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdChkZWZhdWx0U3RlcC50b0ZpeGVkKGNvdW50QWZ0ZXJEb3QgPiB0aGlzLmRlY2ltYWxOdW1iZXIgPyB0aGlzLmRlY2ltYWxOdW1iZXIgOiBjb3VudEFmdGVyRG90KSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50ID0gcGFyc2VGbG9hdCh0aGlzLnRtcCkgLSB0aGlzLmxhc3RTdGVwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY291bnQudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudG1wID0gcGFyc2VGbG9hdCh0aGlzLnZhbHVlLnJlcGxhY2UoLywvZywgJycpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY291bnQgPSBwYXJzZUZsb2F0KHRoaXMudG1wKSAtIGRlZmF1bHRTdGVwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY291bnQudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1heCA9PT0gbnVsbCB8fCBOdW1iZXIodGhpcy52YWx1ZSkgPCBOdW1iZXIodGhpcy5tYXgpKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuY3VzdG9tU3RlcCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50bXAgPSBwYXJzZUZsb2F0KHRoaXMudmFsdWUucmVwbGFjZSgvLC9nLCAnJykpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0U3RlcCA9XHJcbiAgICAgICAgICAgICAgICAgIHBhcnNlRmxvYXQoZGVmYXVsdFN0ZXAudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCkpICtcclxuICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdCh0aGlzLmN1c3RvbVN0ZXAudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCkpIC1cclxuICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdChkZWZhdWx0U3RlcC50b0ZpeGVkKGNvdW50QWZ0ZXJEb3QgPiB0aGlzLmRlY2ltYWxOdW1iZXIgPyB0aGlzLmRlY2ltYWxOdW1iZXIgOiBjb3VudEFmdGVyRG90KSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50ID0gcGFyc2VGbG9hdCh0aGlzLnRtcCkgKyB0aGlzLmxhc3RTdGVwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY291bnQudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudG1wID0gcGFyc2VGbG9hdCh0aGlzLnZhbHVlLnJlcGxhY2UoLywvZywgJycpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY291bnQgPSBwYXJzZUZsb2F0KHRoaXMudG1wKSArIGRlZmF1bHRTdGVwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY291bnQudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5taW4gIT0gbnVsbCAmJiB0aGlzLnZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWluLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5taW4gPT09IG51bGwgfHwgTnVtYmVyKHRoaXMudmFsdWUpID4gcGFyc2VJbnQodGhpcy5taW4udG9TdHJpbmcoKSkpIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gJzAnO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRtcCA9ICt0aGlzLnZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCAnJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50ID0gK3RoaXMudG1wIC0gK3RoaXMuaW50U3RlcDtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNvdW50LnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCAnJyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xyXG4gICAgICAgICAgaWYgKHRoaXMubWluICE9IG51bGwgJiYgdGhpcy52YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1pbi50b1N0cmluZygpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWF4ID09PSBudWxsIHx8IE51bWJlcih0aGlzLnZhbHVlKSA8IHBhcnNlSW50KHRoaXMubWF4LnRvU3RyaW5nKCkpKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9ICcwJztcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50bXAgPSB0aGlzLnZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCAnJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50ID0gK3RoaXMudG1wICsgK3RoaXMuaW50U3RlcDtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNvdW50LnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCAnJyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gc3RvcCB3aGVuIGtleWRvd25cclxuICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJyB8fCBldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zdHlsZS5jYXJldENvbG9yID0gJ3RyYW5zcGFyZW50JztcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUNsaWNrKCkge1xyXG4gICAgaWYgKHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCB8fCB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT09IDApIHtcclxuICAgICAgdGhpcy5jdXJzb3JQb3NpdGlvbiA9IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlbGF5U2VhcmNoKCkge1xyXG4gICAgT2JzZXJ2YWJsZS5jcmVhdGUoKG9ic2VydmVyKSA9PiB7XHJcbiAgICAgIHRoaXMudXNlclF1ZXN0aW9uVXBkYXRlID0gb2JzZXJ2ZXI7XHJcbiAgICB9KTtcclxuICAgIHRoaXMudXNlclF1ZXN0aW9uVXBkYXRlLnBpcGUoZGVib3VuY2VUaW1lKDEwMDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUoKHRleHQ6IHN0cmluZykgPT4gdGhpcy5jaGVja01pbk1heCh0ZXh0KSk7XHJcbiAgICAvLyB0aGlzLnVzZXJRdWVzdGlvblVwZGF0ZS5uZXh0KChlLnRhcmdldCBhcyBhbnkpLnZhbHVlKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnVzZXJRdWVzdGlvblVwZGF0ZS5uZXh0KHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSk7XHJcbiAgICB9LCA1MCk7XHJcbiAgfVxyXG5cclxuICBjaGVja01pbk1heCh0ZXh0KSB7XHJcbiAgICBsZXQgbnVtYmVyOiBudW1iZXI7XHJcbiAgICBpZiAodGV4dC5pbmRleE9mKCcsJykgPiAwKSB7XHJcbiAgICAgIG51bWJlciA9IE51bWJlcih0ZXh0LnJlcGxhY2VBbGwoJywnLCAnJykpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbnVtYmVyID0gTnVtYmVyKHRleHQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghIXRoaXMubWluKSB7XHJcbiAgICAgIGlmIChudW1iZXIgPCB0aGlzLm1pbikge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSAnJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCEhdGhpcy5tYXgpIHtcclxuICAgICAgaWYgKG51bWJlciA+IHRoaXMubWF4KSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9ICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb0dldENhcmV0UG9zaXRpb24oY3RybCkge1xyXG4gICAgbGV0IENhcmV0UG9zID0gMDtcclxuICAgIGlmIChjdHJsLnNlbGVjdGlvblN0YXJ0IHx8IGN0cmwuc2VsZWN0aW9uU3RhcnQgPT09IDApIHtcclxuICAgICAgQ2FyZXRQb3MgPSBjdHJsLnNlbGVjdGlvblN0YXJ0O1xyXG4gICAgICByZXR1cm4gQ2FyZXRQb3M7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDYXJldFBvc2l0aW9uKGN0cmwsIHBvcykge1xyXG4gICAgaWYgKGN0cmwuc2V0U2VsZWN0aW9uUmFuZ2UpIHtcclxuICAgICAgY3RybC5mb2N1cygpO1xyXG4gICAgICBjdHJsLnNldFNlbGVjdGlvblJhbmdlKHBvcywgcG9zKTtcclxuICAgIH0gZWxzZSBpZiAoY3RybC5jcmVhdGVUZXh0UmFuZ2UpIHtcclxuICAgICAgY29uc3QgcmFuZ2UgPSBjdHJsLmNyZWF0ZVRleHRSYW5nZSgpO1xyXG4gICAgICByYW5nZS5jb2xsYXBzZSh0cnVlKTtcclxuICAgICAgcmFuZ2UubW92ZUVuZCgnY2hhcmFjdGVyJywgcG9zKTtcclxuICAgICAgcmFuZ2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCBwb3MpO1xyXG4gICAgICByYW5nZS5zZWxlY3QoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldENhcmV0KCkge1xyXG4gICAgdGhpcy5zZXRDYXJldFBvc2l0aW9uKHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudCwgdGhpcy5jdXJzb3JQb3NpdGlvbik7XHJcbiAgfVxyXG5cclxuICB1cFN0ZXBIYW5kZWwoKSB7XHJcbiAgICB0aGlzLnVzZXJFZGl0ZSA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5taW4gIT0gbnVsbCAmJiB0aGlzLnZhbHVlID09IG51bGwpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWluLnRvU3RyaW5nKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5yZWFkb25seSA9PT0gZmFsc2UpIHtcclxuICAgICAgICBjb25zdCBjb3VudEFmdGVyRG90ID1cclxuICAgICAgICAgIHRoaXMudmFsdWUgIT09IG51bGwgJiYgdGhpcy52YWx1ZSAhPT0gJycgJiYgdGhpcy52YWx1ZSAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgID8gdGhpcy52YWx1ZS50b1N0cmluZygpLmxlbmd0aCAtIDEgLSB0aGlzLnZhbHVlLnRvU3RyaW5nKCkuaW5kZXhPZignLicpXHJcbiAgICAgICAgICAgIDogMDtcclxuICAgICAgICBpZiAodGhpcy52YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlID0gJzAnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBkZWZhdWx0U3RlcDogbnVtYmVyID1cclxuICAgICAgICAgICAgY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IE1hdGgucG93KHRoaXMuZGVjaW1hbENvbnN0YW50LCB0aGlzLmRlY2ltYWxOdW1iZXIpIDogTWF0aC5wb3codGhpcy5kZWNpbWFsQ29uc3RhbnQsIGNvdW50QWZ0ZXJEb3QpO1xyXG4gICAgICAgICAgdGhpcy5kb3RQb3NpdGlvbiA9IHRoaXMudmFsdWUudG9TdHJpbmcoKS5pbmRleE9mKCcuJykgKyAxO1xyXG4gICAgICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS50b1N0cmluZygpLm1hdGNoKC9cXC4vZykpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZG90UG9zaXRpb24gPiB0aGlzLmN1cnNvclBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50bXAgPSBwYXJzZUZsb2F0KHRoaXMudmFsdWUucmVwbGFjZSgvLC9nLCAnJykpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY291bnQgPSB0aGlzLnRtcCArICt0aGlzLmludFN0ZXA7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMubWF4ID09PSBudWxsIHx8IE51bWJlcih0aGlzLmNvdW50KSA8PSB0aGlzLm1heCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY291bnQudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLm1heCA9PT0gbnVsbCB8fCBOdW1iZXIodGhpcy52YWx1ZSkgPCBOdW1iZXIodGhpcy5tYXgpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXN0b21TdGVwICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudG1wID0gcGFyc2VGbG9hdCh0aGlzLnZhbHVlLnJlcGxhY2UoLywvZywgJycpKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0U3RlcCA9XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdChkZWZhdWx0U3RlcC50b0ZpeGVkKGNvdW50QWZ0ZXJEb3QgPiB0aGlzLmRlY2ltYWxOdW1iZXIgPyB0aGlzLmRlY2ltYWxOdW1iZXIgOiBjb3VudEFmdGVyRG90KSkgK1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlRmxvYXQodGhpcy5jdXN0b21TdGVwLnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpKSAtXHJcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdChkZWZhdWx0U3RlcC50b0ZpeGVkKGNvdW50QWZ0ZXJEb3QgPiB0aGlzLmRlY2ltYWxOdW1iZXIgPyB0aGlzLmRlY2ltYWxOdW1iZXIgOiBjb3VudEFmdGVyRG90KSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY291bnQgPSBwYXJzZUZsb2F0KHRoaXMudG1wKSArIHRoaXMubGFzdFN0ZXA7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNvdW50LnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpLnJlcGxhY2UoLywvZywgJycpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy50bXAgPSBwYXJzZUZsb2F0KHRoaXMudmFsdWUucmVwbGFjZSgvLC9nLCAnJykpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvdW50ID0gcGFyc2VGbG9hdCh0aGlzLnRtcCkgKyBkZWZhdWx0U3RlcDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY291bnQudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCkucmVwbGFjZSgvLC9nLCAnJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXggPT09IG51bGwgfHwgTnVtYmVyKHRoaXMudmFsdWUpIDwgcGFyc2VJbnQodGhpcy5tYXgudG9TdHJpbmcoKSkpIHtcclxuICAgICAgICAgICAgICB0aGlzLnRtcCA9IHRoaXMudmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKC8sL2csICcnKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvdW50ID0gK3RoaXMudG1wICsgK3RoaXMuaW50U3RlcDtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY291bnQudG9TdHJpbmcoKS5yZXBsYWNlKC8sL2csICcnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG93blN0ZXBIYW5kZWwoKSB7XHJcbiAgICB0aGlzLnVzZXJFZGl0ZSA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5taW4gIT0gbnVsbCAmJiB0aGlzLnZhbHVlID09IG51bGwpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWluLnRvU3RyaW5nKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5yZWFkb25seSA9PT0gZmFsc2UpIHtcclxuICAgICAgICBjb25zdCBjb3VudEFmdGVyRG90ID1cclxuICAgICAgICAgIHRoaXMudmFsdWUgIT09IG51bGwgJiYgdGhpcy52YWx1ZSAhPT0gJycgJiYgdGhpcy52YWx1ZSAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgID8gdGhpcy52YWx1ZS50b1N0cmluZygpLmxlbmd0aCAtIDEgLSB0aGlzLnZhbHVlLnRvU3RyaW5nKCkuaW5kZXhPZignLicpXHJcbiAgICAgICAgICAgIDogMDtcclxuICAgICAgICBpZiAodGhpcy52YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlID0gJzAnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBkZWZhdWx0U3RlcDogbnVtYmVyID1cclxuICAgICAgICAgICAgY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IE1hdGgucG93KHRoaXMuZGVjaW1hbENvbnN0YW50LCB0aGlzLmRlY2ltYWxOdW1iZXIpIDogTWF0aC5wb3codGhpcy5kZWNpbWFsQ29uc3RhbnQsIGNvdW50QWZ0ZXJEb3QpO1xyXG4gICAgICAgICAgdGhpcy5kb3RQb3NpdGlvbiA9IHRoaXMudmFsdWUudG9TdHJpbmcoKS5pbmRleE9mKCcuJykgKyAxO1xyXG4gICAgICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS50b1N0cmluZygpLm1hdGNoKC9cXC4vZykpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZG90UG9zaXRpb24gPiB0aGlzLmN1cnNvclBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50bXAgPSBwYXJzZUZsb2F0KHRoaXMudmFsdWUucmVwbGFjZSgvLC9nLCAnJykpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY291bnQgPSBwYXJzZUZsb2F0KHRoaXMudmFsdWUucmVwbGFjZSgvLC9nLCAnJykpIC0gK3RoaXMuaW50U3RlcDtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5taW4gPT09IG51bGwgfHwgTnVtYmVyKHRoaXMuY291bnQpID49IHRoaXMubWluKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5jb3VudC50b0ZpeGVkKGNvdW50QWZ0ZXJEb3QgPiB0aGlzLmRlY2ltYWxOdW1iZXIgPyB0aGlzLmRlY2ltYWxOdW1iZXIgOiBjb3VudEFmdGVyRG90KS5yZXBsYWNlKC8sL2csICcnKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMubWluID09PSBudWxsIHx8IE51bWJlcih0aGlzLnZhbHVlKSA+IE51bWJlcih0aGlzLm1pbikpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1c3RvbVN0ZXAgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy50bXAgPSBwYXJzZUZsb2F0KHRoaXMudmFsdWUucmVwbGFjZSgvLC9nLCAnJykpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmxhc3RTdGVwID1cclxuICAgICAgICAgICAgICAgICAgICBwYXJzZUZsb2F0KGRlZmF1bHRTdGVwLnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpKSArXHJcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdCh0aGlzLmN1c3RvbVN0ZXAudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCkpIC1cclxuICAgICAgICAgICAgICAgICAgICBwYXJzZUZsb2F0KGRlZmF1bHRTdGVwLnRvRml4ZWQoY291bnRBZnRlckRvdCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGNvdW50QWZ0ZXJEb3QpKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb3VudCA9IHBhcnNlRmxvYXQodGhpcy50bXApIC0gdGhpcy5sYXN0U3RlcDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY291bnQudG9GaXhlZChjb3VudEFmdGVyRG90ID4gdGhpcy5kZWNpbWFsTnVtYmVyID8gdGhpcy5kZWNpbWFsTnVtYmVyIDogY291bnRBZnRlckRvdCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnRtcCA9IHBhcnNlRmxvYXQodGhpcy52YWx1ZS5yZXBsYWNlKC8sL2csICcnKSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY291bnQgPSBwYXJzZUZsb2F0KHRoaXMudG1wKSAtIGRlZmF1bHRTdGVwO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5jb3VudC50b0ZpeGVkKGNvdW50QWZ0ZXJEb3QgPiB0aGlzLmRlY2ltYWxOdW1iZXIgPyB0aGlzLmRlY2ltYWxOdW1iZXIgOiBjb3VudEFmdGVyRG90KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1pbiA9PT0gbnVsbCB8fCBOdW1iZXIodGhpcy52YWx1ZSkgPiBwYXJzZUludCh0aGlzLm1pbi50b1N0cmluZygpKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMudG1wID0gK3RoaXMudmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKC8sL2csICcnKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvdW50ID0gK3RoaXMudG1wIC0gK3RoaXMuaW50U3RlcDtcclxuICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5jb3VudC50b1N0cmluZygpLnJlcGxhY2UoLywvZywgJycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVJbnB1dEJsdXIoZTogRXZlbnQpIHtcclxuICAgIHRoaXMuY2hlY2tNaW5NYXgodGhpcy50ZXh0VmFsdWUpO1xyXG4gICAgdGhpcy5vbkJsdXIuZW1pdCh7XHJcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgIGh0bWxFdmVudDogZVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJheCBmb3JtLWl0ZW1cIiBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbYXR0ci5pZF09XCJ1aWRcIiAjZmM+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXggaXRlbXMtd3JhcHBlclwiPlxyXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzdGFydF1cIj5cclxuICAgICAgICA8L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgPGF4LWJ1dHRvbiBpY29uPVwiZmFyIGZhLXBsdXNcIiB0eXBlPVwic3VjY2VzcyBibGFua1wiIChjbGljayk9XCJ1cFN0ZXBIYW5kZWwoKVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiICpuZ0lmPVwic2hvd0RvdWJsZUNvdW50ZXJcIj48L2F4LWJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIiAjY29udGVudD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXggZm9ybS1jb250cm9sIGlucHV0IHt7c2l6ZX19XCIgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCIgW2NsYXNzLnJlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgW2NsYXNzLmljb25dPVwiaWNvblwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgW2F1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIiBbbmFtZV09XCJuYW1lXCIgI2lucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJheCB7e3NpemV9fVwiIFttYXhsZW5ndGhdPVwiY2FsY1NlcGFyYXRvcihtYXhMZW5ndGgpXCIgWyhuZ01vZGVsKV09XCJ0ZXh0VmFsdWVcIiBwbGFjZWhvbGRlcj1cInt7cGxhY2Vob2xkZXJ9fVwiXHJcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbbmdDbGFzc109XCJzZXRUZXh0QWxpZ24oKVwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuY2xlYXJdPVwidmFsdWUgJiYgYWxsb3dDbGVhclwiIChmb2N1cyk9XCJoYW5kbGVJbnB1dEZvY3VzKCRldmVudClcIiAoYmx1cik9XCJoYW5kbGVJbnB1dEJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwiaGFuZGxlS2V5UHJlc3MoJGV2ZW50KVwiIChuZ01vZGVsQ2hhbmdlKT1cInRoaXMudXNlclF1ZXN0aW9uVXBkYXRlLm5leHQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJoYW5kbGVLZXlEb3duKCRldmVudClcIiAoY2xpY2spPVwiaGFuZGxlQ2xpY2soKVwiIChrZXl1cCk9XCJoYW5kbGVLZXlVcCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwie3tpY29ufX1cIiAqbmdJZj1cImljb25cIj48L2k+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJheCBpdGVtcy13cmFwcGVyXCI+XHJcbiAgICAgICAgPGF4LWJ1dHRvbiAqbmdJZj1cInZhbHVlICYmIGFsbG93Q2xlYXJcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBpY29uPVwiZmFyIGZhLXRpbWVzXCIgdHlwZT1cImRhbmdlciBibGFua1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGVhcigpXCI+PC9heC1idXR0b24+XHJcbiAgICAgICAgICAgIDxheC1idXR0b24gaWNvbj1cImZhciBmYS1taW51c1wiIHR5cGU9XCJkYW5nZXIgYmxhbmtcIiAoY2xpY2spPVwiZG93blN0ZXBIYW5kZWwoKVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiICpuZ0lmPVwic2hvd0RvdWJsZUNvdW50ZXJcIj48L2F4LWJ1dHRvbj5cclxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZW5kXVwiPlxyXG4gICAgICAgIDwvbmctY29udGVudD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctbnVtYmVyXCIgKm5nSWY9XCJzaG93Q291bnRlciAmJiAhc2hvd0RvdWJsZUNvdW50ZXIgJiYgIXJlYWRvbmx5XCIgPlxyXG4gICAgICAgICAgICA8YXgtYnV0dG9uIHR5cGU9XCJsaWdodCBibGFua1wiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIGljb249XCJmYXMgZmEtYW5nbGUtdXBcIiBbc2l6ZV09XCJzaXplXCJcclxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwidXBTdGVwSGFuZGVsKClcIiAobW91c2V1cCk9XCJkZWxheVNlYXJjaCgpXCIgW3RhYkluZGV4XT1cIi0xXCI+PC9heC1idXR0b24+XHJcbiAgICAgICAgICAgIDxheC1idXR0b24gdHlwZT1cImxpZ2h0IGJsYW5rXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgaWNvbj1cImZhcyBmYS1hbmdsZS1kb3duXCIgW3NpemVdPVwic2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cImRvd25TdGVwSGFuZGVsKClcIiAobW91c2V1cCk9XCJkZWxheVNlYXJjaCgpXCIgW3RhYkluZGV4XT1cIi0xXCI+PC9heC1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
|