@ember-eui/core 10.0.0 → 10.0.1
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/dist/components/eui-accordion.js +11 -11
- package/dist/components/eui-accordion.js.map +1 -1
- package/dist/components/eui-auto-sizer.js +4 -4
- package/dist/components/eui-auto-sizer.js.map +1 -1
- package/dist/components/eui-avatar.js +5 -5
- package/dist/components/eui-avatar.js.map +1 -1
- package/dist/components/eui-badge-group.js +5 -5
- package/dist/components/eui-badge-group.js.map +1 -1
- package/dist/components/eui-badge.js +7 -7
- package/dist/components/eui-badge.js.map +1 -1
- package/dist/components/eui-beta-badge.js +4 -4
- package/dist/components/eui-beta-badge.js.map +1 -1
- package/dist/components/eui-bottom-bar.js +6 -6
- package/dist/components/eui-bottom-bar.js.map +1 -1
- package/dist/components/eui-breadcrumbs.js +12 -12
- package/dist/components/eui-breadcrumbs.js.map +1 -1
- package/dist/components/eui-button-content.js +4 -4
- package/dist/components/eui-button-content.js.map +1 -1
- package/dist/components/eui-button-empty.js +3 -3
- package/dist/components/eui-button-empty.js.map +1 -1
- package/dist/components/eui-button-group-button.js +8 -8
- package/dist/components/eui-button-group-button.js.map +1 -1
- package/dist/components/eui-button-group.js +5 -5
- package/dist/components/eui-button-group.js.map +1 -1
- package/dist/components/eui-button-icon.js +4 -4
- package/dist/components/eui-button-icon.js.map +1 -1
- package/dist/components/eui-button.js +6 -6
- package/dist/components/eui-button.js.map +1 -1
- package/dist/components/eui-call-out.js +5 -5
- package/dist/components/eui-call-out.js.map +1 -1
- package/dist/components/eui-card-select.js +5 -5
- package/dist/components/eui-card-select.js.map +1 -1
- package/dist/components/eui-card.js +13 -13
- package/dist/components/eui-card.js.map +1 -1
- package/dist/components/eui-checkable-card.js +5 -5
- package/dist/components/eui-checkable-card.js.map +1 -1
- package/dist/components/eui-checkbox-group.js +6 -6
- package/dist/components/eui-checkbox-group.js.map +1 -1
- package/dist/components/eui-checkbox.js +5 -5
- package/dist/components/eui-checkbox.js.map +1 -1
- package/dist/components/eui-code-block/controls.js +3 -3
- package/dist/components/eui-code-block/controls.js.map +1 -1
- package/dist/components/eui-code-block/full-screen-display.js +4 -4
- package/dist/components/eui-code-block/full-screen-display.js.map +1 -1
- package/dist/components/eui-code-block/virtualized.js +6 -6
- package/dist/components/eui-code-block/virtualized.js.map +1 -1
- package/dist/components/eui-code-block.js +14 -14
- package/dist/components/eui-code-block.js.map +1 -1
- package/dist/components/eui-code.js +8 -8
- package/dist/components/eui-code.js.map +1 -1
- package/dist/components/eui-collapsible-nav-group.js +6 -6
- package/dist/components/eui-collapsible-nav-group.js.map +1 -1
- package/dist/components/eui-collapsible-nav.js +7 -6
- package/dist/components/eui-collapsible-nav.js.map +1 -1
- package/dist/components/eui-combo-box/create-option.js +4 -4
- package/dist/components/eui-combo-box/create-option.js.map +1 -1
- package/dist/components/eui-combo-box/no-matches-message.js +2 -2
- package/dist/components/eui-combo-box/no-matches-message.js.map +1 -1
- package/dist/components/eui-combo-box/options.js +11 -11
- package/dist/components/eui-combo-box/options.js.map +1 -1
- package/dist/components/eui-combo-box/search-message.js +2 -2
- package/dist/components/eui-combo-box/search-message.js.map +1 -1
- package/dist/components/eui-combo-box/trigger/input.js +5 -5
- package/dist/components/eui-combo-box/trigger/input.js.map +1 -1
- package/dist/components/eui-combo-box/trigger.js +9 -9
- package/dist/components/eui-combo-box/trigger.js.map +1 -1
- package/dist/components/eui-combo-box-pill.js +4 -4
- package/dist/components/eui-combo-box-pill.js.map +1 -1
- package/dist/components/eui-combo-box.js +12 -12
- package/dist/components/eui-combo-box.js.map +1 -1
- package/dist/components/eui-comment-timeline.js +3 -3
- package/dist/components/eui-comment-timeline.js.map +1 -1
- package/dist/components/eui-comment.js +4 -4
- package/dist/components/eui-comment.js.map +1 -1
- package/dist/components/eui-confirm-modal.js +8 -8
- package/dist/components/eui-confirm-modal.js.map +1 -1
- package/dist/components/eui-context-menu-item.js +8 -8
- package/dist/components/eui-context-menu-item.js.map +1 -1
- package/dist/components/eui-copy.js +3 -3
- package/dist/components/eui-copy.js.map +1 -1
- package/dist/components/eui-described-form-group.js +4 -4
- package/dist/components/eui-described-form-group.js.map +1 -1
- package/dist/components/eui-description-list.js +4 -4
- package/dist/components/eui-description-list.js.map +1 -1
- package/dist/components/eui-dual-range.js +15 -15
- package/dist/components/eui-dual-range.js.map +1 -1
- package/dist/components/eui-empty-prompt.js +9 -9
- package/dist/components/eui-empty-prompt.js.map +1 -1
- package/dist/components/eui-field-number.js +5 -5
- package/dist/components/eui-field-number.js.map +1 -1
- package/dist/components/eui-field-password.js +9 -9
- package/dist/components/eui-field-password.js.map +1 -1
- package/dist/components/eui-field-search.js +11 -11
- package/dist/components/eui-field-search.js.map +1 -1
- package/dist/components/eui-field-text.js +5 -5
- package/dist/components/eui-field-text.js.map +1 -1
- package/dist/components/eui-file-picker.js +9 -9
- package/dist/components/eui-file-picker.js.map +1 -1
- package/dist/components/eui-flex-grid.js +4 -4
- package/dist/components/eui-flex-grid.js.map +1 -1
- package/dist/components/eui-flex-group.js +3 -3
- package/dist/components/eui-flex-group.js.map +1 -1
- package/dist/components/eui-flex-item.js +4 -4
- package/dist/components/eui-flex-item.js.map +1 -1
- package/dist/components/eui-flyout-body.js +3 -3
- package/dist/components/eui-flyout-body.js.map +1 -1
- package/dist/components/eui-flyout-header.js +2 -2
- package/dist/components/eui-flyout-header.js.map +1 -1
- package/dist/components/eui-flyout.js +15 -14
- package/dist/components/eui-flyout.js.map +1 -1
- package/dist/components/eui-form-control-layout-clear-button.js +3 -3
- package/dist/components/eui-form-control-layout-clear-button.js.map +1 -1
- package/dist/components/eui-form-control-layout-custom-icon.js +2 -2
- package/dist/components/eui-form-control-layout-custom-icon.js.map +1 -1
- package/dist/components/eui-form-control-layout-delimited.js +3 -3
- package/dist/components/eui-form-control-layout-delimited.js.map +1 -1
- package/dist/components/eui-form-control-layout-icons.js +5 -5
- package/dist/components/eui-form-control-layout-icons.js.map +1 -1
- package/dist/components/eui-form-control-layout.js +3 -3
- package/dist/components/eui-form-control-layout.js.map +1 -1
- package/dist/components/eui-form-fieldset.js +2 -2
- package/dist/components/eui-form-fieldset.js.map +1 -1
- package/dist/components/eui-form-label.js +3 -3
- package/dist/components/eui-form-label.js.map +1 -1
- package/dist/components/eui-form-legend.js +3 -3
- package/dist/components/eui-form-legend.js.map +1 -1
- package/dist/components/eui-form-row.js +8 -8
- package/dist/components/eui-form-row.js.map +1 -1
- package/dist/components/eui-form.js +4 -4
- package/dist/components/eui-form.js.map +1 -1
- package/dist/components/eui-global-toast-list.js +10 -10
- package/dist/components/eui-global-toast-list.js.map +1 -1
- package/dist/components/eui-header-alert.js +2 -2
- package/dist/components/eui-header-alert.js.map +1 -1
- package/dist/components/eui-header-breadcrumbs.js +2 -2
- package/dist/components/eui-header-breadcrumbs.js.map +1 -1
- package/dist/components/eui-header-link.js +3 -3
- package/dist/components/eui-header-link.js.map +1 -1
- package/dist/components/eui-header-links.js +9 -9
- package/dist/components/eui-header-links.js.map +1 -1
- package/dist/components/eui-header-logo.js +3 -3
- package/dist/components/eui-header-logo.js.map +1 -1
- package/dist/components/eui-header-section-item-button.js +6 -6
- package/dist/components/eui-header-section-item-button.js.map +1 -1
- package/dist/components/eui-header-section-item.js +3 -3
- package/dist/components/eui-header-section-item.js.map +1 -1
- package/dist/components/eui-header-section.js +3 -3
- package/dist/components/eui-header-section.js.map +1 -1
- package/dist/components/eui-header.js +4 -4
- package/dist/components/eui-header.js.map +1 -1
- package/dist/components/eui-health.js +3 -3
- package/dist/components/eui-health.js.map +1 -1
- package/dist/components/eui-horizontal-rule.js +3 -3
- package/dist/components/eui-horizontal-rule.js.map +1 -1
- package/dist/components/eui-i18n.js +4 -4
- package/dist/components/eui-i18n.js.map +1 -1
- package/dist/components/eui-icon-tip.js +4 -4
- package/dist/components/eui-icon-tip.js.map +1 -1
- package/dist/components/eui-icon.js +6 -6
- package/dist/components/eui-icon.js.map +1 -1
- package/dist/components/eui-image.js +9 -9
- package/dist/components/eui-image.js.map +1 -1
- package/dist/components/eui-inner-text.js +1 -1
- package/dist/components/eui-input-popover.js +9 -9
- package/dist/components/eui-input-popover.js.map +1 -1
- package/dist/components/eui-key-pad-menu-item.js +8 -8
- package/dist/components/eui-key-pad-menu-item.js.map +1 -1
- package/dist/components/eui-key-pad-menu.js +3 -3
- package/dist/components/eui-key-pad-menu.js.map +1 -1
- package/dist/components/eui-link.js +4 -4
- package/dist/components/eui-link.js.map +1 -1
- package/dist/components/eui-list-group-item.js +6 -6
- package/dist/components/eui-list-group-item.js.map +1 -1
- package/dist/components/eui-list-group.js +6 -6
- package/dist/components/eui-list-group.js.map +1 -1
- package/dist/components/eui-loading-content.js +2 -2
- package/dist/components/eui-loading-content.js.map +1 -1
- package/dist/components/eui-loading-logo.js +4 -4
- package/dist/components/eui-loading-logo.js.map +1 -1
- package/dist/components/eui-loading-spinner.js +3 -3
- package/dist/components/eui-loading-spinner.js.map +1 -1
- package/dist/components/eui-markdown-editor-drop-zone.js +2 -2
- package/dist/components/eui-markdown-editor-drop-zone.js.map +1 -1
- package/dist/components/eui-markdown-editor-footer.js +14 -14
- package/dist/components/eui-markdown-editor-footer.js.map +1 -1
- package/dist/components/eui-markdown-editor-text-area.js +3 -3
- package/dist/components/eui-markdown-editor-text-area.js.map +1 -1
- package/dist/components/eui-markdown-editor-toolbar.js +9 -9
- package/dist/components/eui-markdown-editor-toolbar.js.map +1 -1
- package/dist/components/eui-markdown-editor.js +16 -16
- package/dist/components/eui-markdown-editor.js.map +1 -1
- package/dist/components/eui-markdown-format/markdown-checkbox.js +4 -4
- package/dist/components/eui-markdown-format/markdown-checkbox.js.map +1 -1
- package/dist/components/eui-markdown-format/markdown-code-block.js +2 -2
- package/dist/components/eui-markdown-format/markdown-code-block.js.map +1 -1
- package/dist/components/eui-markdown-format/markdown-code.js +2 -2
- package/dist/components/eui-markdown-format/markdown-code.js.map +1 -1
- package/dist/components/eui-markdown-format/markdown-tooltip.js +3 -3
- package/dist/components/eui-markdown-format/markdown-tooltip.js.map +1 -1
- package/dist/components/eui-markdown-format.js +5 -5
- package/dist/components/eui-markdown-format.js.map +1 -1
- package/dist/components/eui-modal.js +11 -11
- package/dist/components/eui-modal.js.map +1 -1
- package/dist/components/eui-notification-badge.js +3 -3
- package/dist/components/eui-notification-badge.js.map +1 -1
- package/dist/components/eui-notification-event-messages.js +5 -5
- package/dist/components/eui-notification-event-messages.js.map +1 -1
- package/dist/components/eui-notification-event-meta.js +10 -10
- package/dist/components/eui-notification-event-meta.js.map +1 -1
- package/dist/components/eui-notification-event-read-button.js +3 -3
- package/dist/components/eui-notification-event-read-button.js.map +1 -1
- package/dist/components/eui-notification-event-read-icon.js +4 -4
- package/dist/components/eui-notification-event-read-icon.js.map +1 -1
- package/dist/components/eui-notification-event.js +9 -9
- package/dist/components/eui-notification-event.js.map +1 -1
- package/dist/components/eui-overlay-mask.js +6 -6
- package/dist/components/eui-overlay-mask.js.map +1 -1
- package/dist/components/eui-page-body.js +7 -7
- package/dist/components/eui-page-body.js.map +1 -1
- package/dist/components/eui-page-content-body.js +5 -5
- package/dist/components/eui-page-content-body.js.map +1 -1
- package/dist/components/eui-page-content-header.js +2 -2
- package/dist/components/eui-page-content-header.js.map +1 -1
- package/dist/components/eui-page-content.js +4 -4
- package/dist/components/eui-page-content.js.map +1 -1
- package/dist/components/eui-page-header-content.js +13 -13
- package/dist/components/eui-page-header-content.js.map +1 -1
- package/dist/components/eui-page-header.js +6 -6
- package/dist/components/eui-page-header.js.map +1 -1
- package/dist/components/eui-page-side-bar.js +3 -3
- package/dist/components/eui-page-side-bar.js.map +1 -1
- package/dist/components/eui-page-template.js +12 -12
- package/dist/components/eui-page-template.js.map +1 -1
- package/dist/components/eui-page.js +5 -5
- package/dist/components/eui-page.js.map +1 -1
- package/dist/components/eui-pagination/button-wrapper.js +5 -5
- package/dist/components/eui-pagination/button-wrapper.js.map +1 -1
- package/dist/components/eui-pagination/next-button.js +6 -6
- package/dist/components/eui-pagination/next-button.js.map +1 -1
- package/dist/components/eui-pagination/previous-button.js +5 -5
- package/dist/components/eui-pagination/previous-button.js.map +1 -1
- package/dist/components/eui-pagination-button.js +6 -6
- package/dist/components/eui-pagination-button.js.map +1 -1
- package/dist/components/eui-pagination.js +7 -7
- package/dist/components/eui-pagination.js.map +1 -1
- package/dist/components/eui-panel.js +4 -4
- package/dist/components/eui-panel.js.map +1 -1
- package/dist/components/eui-popover-footer.js +2 -2
- package/dist/components/eui-popover-footer.js.map +1 -1
- package/dist/components/eui-popover-title.js +2 -2
- package/dist/components/eui-popover-title.js.map +1 -1
- package/dist/components/eui-popover.js +18 -18
- package/dist/components/eui-popover.js.map +1 -1
- package/dist/components/eui-portal.js +1 -1
- package/dist/components/eui-progress.js +3 -3
- package/dist/components/eui-progress.js.map +1 -1
- package/dist/components/eui-radio-group.js +5 -5
- package/dist/components/eui-radio-group.js.map +1 -1
- package/dist/components/eui-radio.js +5 -5
- package/dist/components/eui-radio.js.map +1 -1
- package/dist/components/eui-range-highlight.js +4 -4
- package/dist/components/eui-range-highlight.js.map +1 -1
- package/dist/components/eui-range-input.js +5 -5
- package/dist/components/eui-range-input.js.map +1 -1
- package/dist/components/eui-range-label.js +3 -3
- package/dist/components/eui-range-label.js.map +1 -1
- package/dist/components/eui-range-levels.js +6 -6
- package/dist/components/eui-range-levels.js.map +1 -1
- package/dist/components/eui-range-slider.js +2 -2
- package/dist/components/eui-range-slider.js.map +1 -1
- package/dist/components/eui-range-thumb.js +3 -3
- package/dist/components/eui-range-thumb.js.map +1 -1
- package/dist/components/eui-range-ticks.js +6 -6
- package/dist/components/eui-range-ticks.js.map +1 -1
- package/dist/components/eui-range-tooltip.js +3 -3
- package/dist/components/eui-range-tooltip.js.map +1 -1
- package/dist/components/eui-range-track.js +8 -8
- package/dist/components/eui-range-track.js.map +1 -1
- package/dist/components/eui-range-wrapper.js +2 -2
- package/dist/components/eui-range-wrapper.js.map +1 -1
- package/dist/components/eui-range.js +12 -12
- package/dist/components/eui-range.js.map +1 -1
- package/dist/components/eui-select.js +6 -6
- package/dist/components/eui-select.js.map +1 -1
- package/dist/components/eui-selectable-list-item.js +3 -3
- package/dist/components/eui-selectable-list-item.js.map +1 -1
- package/dist/components/eui-show-for.js +1 -1
- package/dist/components/eui-side-nav-item/button.js +4 -4
- package/dist/components/eui-side-nav-item/button.js.map +1 -1
- package/dist/components/eui-side-nav-item.js +5 -5
- package/dist/components/eui-side-nav-item.js.map +1 -1
- package/dist/components/eui-side-nav.js +11 -11
- package/dist/components/eui-side-nav.js.map +1 -1
- package/dist/components/eui-spacer.js +3 -3
- package/dist/components/eui-spacer.js.map +1 -1
- package/dist/components/eui-split-panel/inner.js +3 -3
- package/dist/components/eui-split-panel/inner.js.map +1 -1
- package/dist/components/eui-split-panel/outer.js +5 -5
- package/dist/components/eui-split-panel/outer.js.map +1 -1
- package/dist/components/eui-stat/description.js +2 -2
- package/dist/components/eui-stat/description.js.map +1 -1
- package/dist/components/eui-stat/title.js +4 -4
- package/dist/components/eui-stat/title.js.map +1 -1
- package/dist/components/eui-stat.js +6 -6
- package/dist/components/eui-stat.js.map +1 -1
- package/dist/components/eui-step-horizontal.js +5 -5
- package/dist/components/eui-step-horizontal.js.map +1 -1
- package/dist/components/eui-step-number.js +4 -4
- package/dist/components/eui-step-number.js.map +1 -1
- package/dist/components/eui-step.js +4 -4
- package/dist/components/eui-step.js.map +1 -1
- package/dist/components/eui-super-date-picker/date-popover/absolute-tab.js +8 -8
- package/dist/components/eui-super-date-picker/date-popover/absolute-tab.js.map +1 -1
- package/dist/components/eui-super-date-picker/date-popover/datetime-picker.js +8 -8
- package/dist/components/eui-super-date-picker/date-popover/datetime-picker.js.map +1 -1
- package/dist/components/eui-super-date-picker/date-popover/eui-date-popover-button.js +8 -8
- package/dist/components/eui-super-date-picker/date-popover/eui-date-popover-button.js.map +1 -1
- package/dist/components/eui-super-date-picker/date-popover/eui-date-popover-content.js +7 -7
- package/dist/components/eui-super-date-picker/date-popover/eui-date-popover-content.js.map +1 -1
- package/dist/components/eui-super-date-picker/date-popover/now-tab.js +6 -6
- package/dist/components/eui-super-date-picker/date-popover/now-tab.js.map +1 -1
- package/dist/components/eui-super-date-picker/date-popover/relative-tab.js +11 -11
- package/dist/components/eui-super-date-picker/date-popover/relative-tab.js.map +1 -1
- package/dist/components/eui-super-date-picker/eui-date-picker-range.js +2 -2
- package/dist/components/eui-super-date-picker/eui-date-picker-range.js.map +1 -1
- package/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-commonly-used-time-ranges.js +6 -6
- package/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-commonly-used-time-ranges.js.map +1 -1
- package/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.js +14 -14
- package/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-quick-select.js.map +1 -1
- package/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-recently-used.js +6 -6
- package/dist/components/eui-super-date-picker/eui-quick-select-popover/eui-recently-used.js.map +1 -1
- package/dist/components/eui-super-date-picker/eui-quick-select-popover.js +9 -9
- package/dist/components/eui-super-date-picker/eui-quick-select-popover.js.map +1 -1
- package/dist/components/eui-super-date-picker/eui-super-update-button.js +6 -6
- package/dist/components/eui-super-date-picker/eui-super-update-button.js.map +1 -1
- package/dist/components/eui-super-date-picker.js +9 -9
- package/dist/components/eui-super-date-picker.js.map +1 -1
- package/dist/components/eui-switch.js +6 -6
- package/dist/components/eui-switch.js.map +1 -1
- package/dist/components/eui-tab.js +4 -4
- package/dist/components/eui-tab.js.map +1 -1
- package/dist/components/eui-tabbed-content.js +9 -9
- package/dist/components/eui-tabbed-content.js.map +1 -1
- package/dist/components/eui-tabs.js +2 -2
- package/dist/components/eui-tabs.js.map +1 -1
- package/dist/components/eui-text-align.js +3 -3
- package/dist/components/eui-text-align.js.map +1 -1
- package/dist/components/eui-text-area.js +6 -6
- package/dist/components/eui-text-area.js.map +1 -1
- package/dist/components/eui-text-color.js +3 -3
- package/dist/components/eui-text-color.js.map +1 -1
- package/dist/components/eui-text.js +4 -4
- package/dist/components/eui-text.js.map +1 -1
- package/dist/components/eui-title.js +3 -3
- package/dist/components/eui-title.js.map +1 -1
- package/dist/components/eui-toast.js +4 -4
- package/dist/components/eui-toast.js.map +1 -1
- package/dist/components/eui-tool-tip-popover.js +4 -4
- package/dist/components/eui-tool-tip-popover.js.map +1 -1
- package/dist/components/eui-tool-tip.js +9 -9
- package/dist/components/eui-tool-tip.js.map +1 -1
- package/dist/components/text-block.js +2 -2
- package/dist/components/text-block.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-dual-range.js","sources":["../../src/components/eui-dual-range.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { later } from '@ember/runloop';\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport onKey from 'ember-keyboard/modifiers/on-key';\nimport { and, eq, not, or } from 'ember-truth-helpers';\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport castTo from '../helpers/cast-to.ts';\nimport simpleStyle from '../modifiers/simple-style.ts';\nimport { keys } from '../utils/keys.ts';\nimport { isWithinRange } from '../utils/number/index.ts';\nimport { EUI_THUMB_SIZE } from '../utils/range/index.ts';\nimport EuiFormControlLayoutDelimited from './eui-form-control-layout-delimited.gts';\nimport EuiInputPopover from './eui-input-popover.gts';\nimport EuiRangeHighlight from './eui-range-highlight.gts';\nimport EuiRangeInput from './eui-range-input.gts';\nimport EuiRangeLabel from './eui-range-label.gts';\nimport EuiRangeSlider from './eui-range-slider.gts';\nimport EuiRangeThumb from './eui-range-thumb.gts';\nimport EuiRangeTrack from './eui-range-track.gts';\nimport EuiRangeWrapper from './eui-range-wrapper.gts';\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\nimport type { EuiRangeArgs } from './eui-range';\nimport type { EuiRangeInputArgs, EuiRangeInputSignature } from './eui-range-input';\nimport type { EuiRangeLevel } from './eui-range-levels';\nimport type { EuiRangeTick } from './eui-range-ticks';\nexport type ValueMember = number | string;\nexport interface EuiDualRangeArgs {\n value: [ValueMember, ValueMember];\n onBlur?: (event: FocusEvent) => void;\n onFocus?: (event: FocusEvent) => void;\n onChange: (values: [ValueMember, ValueMember], isValid: boolean, event: Event | MouseEvent | KeyboardEvent) => void;\n fullWidth?: boolean;\n isInvalid?: boolean;\n /**\n * Create colored indicators for certain intervals\n */ levels?: EuiRangeLevel[];\n /**\n * Shows static min/max labels on the sides of the range slider\n */ showLabels?: boolean;\n /**\n * Pass `true` to displays an extra input control for direct manipulation.\n * Pass `'inputWithPopover'` to only show the input but show the range in a dropdown.\n */ showInput?: EuiRangeArgs['showInput'];\n /**\n * Modifies the number of tick marks and at what interval\n */ tickInterval?: number;\n /**\n * Specified ticks at specified values\n */ ticks?: EuiRangeTick[];\n /**\n * Creates an input group with element(s) coming before input. Will only show if `showInput = inputWithPopover`.\n * `string` | `Component` or an array of these\n */ prepend?: EuiFormControlLayoutSignature['Blocks']['prepend'];\n /**\n * Creates an input group with element(s) coming after input. Will only show if `showInput = inputWithPopover`.\n * `string` | `Component` or an array of these\n */ append?: EuiFormControlLayoutSignature['Blocks']['append'];\n /**\n * Intended to be uses with aria attributes. Some attributes may be overwritten.\n */ minInputProps?: Partial<EuiRangeInputArgs>;\n /**\n * Intended to be uses with aria attributes. Some attributes may be overwritten.\n */ maxInputProps?: Partial<EuiRangeInputArgs>;\n readOnly?: boolean;\n disabled?: boolean;\n isPrependProvided?: boolean;\n isAppendProvided?: boolean;\n isFakeMaxBlock?: boolean;\n isFakeMinBlock?: boolean;\n disable?: boolean;\n ariaDescribedby?: string;\n ariaLabel?: string;\n name?: string;\n id?: string;\n compressed?: boolean;\n showRange?: boolean;\n showTicks?: boolean;\n step?: number;\n min?: number;\n max?: number;\n}\nexport interface EuiDualRangeSignature {\n Element: EuiRangeInputSignature['Element'];\n Args: EuiDualRangeArgs;\n Blocks: {\n prepend: EuiRangeInputSignature['Blocks']['prepend'];\n append: EuiRangeInputSignature['Blocks']['append'];\n min: [number?];\n max: [number?];\n };\n}\nexport default class EuiDualRangeComponent extends Component<EuiDualRangeSignature> {\n // Defaults\n @argOrDefaultDecorator(0)\n min: number;\n @argOrDefaultDecorator(100)\n max: number;\n @argOrDefaultDecorator(1)\n step: number;\n @argOrDefaultDecorator(false)\n fullWidth: boolean;\n @argOrDefaultDecorator(false)\n compressed: boolean;\n @argOrDefaultDecorator(false)\n showLabels: boolean;\n @argOrDefaultDecorator(false)\n showInput: boolean | string;\n @argOrDefaultDecorator(true)\n showRange: boolean;\n @argOrDefaultDecorator(false)\n showTicks: boolean;\n @argOrDefaultDecorator([])\n levels: EuiRangeLevel[];\n //State\n @tracked\n id: string = this.args.id || guidFor({});\n @tracked\n hasFocus = false;\n @tracked\n rangeSliderRefAvailable = false;\n @tracked\n isPopoverOpen = false;\n @tracked\n rangeWidth: number | undefined;\n @tracked\n isVisible = true;\n ///\n preventPopoverClose = false;\n rangeSliderRef: HTMLInputElement | null = null;\n @action\n didInsertRangeSlider(ref1: HTMLInputElement | null): void {\n this.rangeSliderRef = ref1;\n this.rangeSliderRefAvailable = !!ref1;\n this.rangeWidth = ref1 ? ref1.clientWidth : undefined;\n if (this.rangeSliderRef?.clientWidth && !this.isVisible) {\n this.isVisible = true;\n }\n }\n get lowerValue(): ValueMember {\n return this.args.value ? this.args.value[0] : this.min;\n }\n get upperValue(): ValueMember {\n return this.args.value ? this.args.value[1] : this.max;\n }\n get lowerValueIsValid(): boolean {\n return isWithinRange(this.min, this.upperValue, this.lowerValue);\n }\n get upperValueIsValid(): boolean {\n return isWithinRange(this.lowerValue, this.max, this.upperValue);\n }\n get isValid(): boolean {\n return this.lowerValueIsValid && this.upperValueIsValid;\n }\n @action\n _determineInvalidThumbMovement(newVal1: ValueMember, lower1: ValueMember, upper1: ValueMember, e1: Event): void {\n // If the values are invalid, find whether the new value is in the upper\n // or lower half and move the appropriate handle to the new value,\n // while the other handle gets moved to the opposite bound (if invalid)\n const lowerHalf1 = Math.abs(this.max - this.min) / 2 + this.min;\n const newValIsLow1 = isWithinRange(this.min, lowerHalf1, newVal1);\n if (newValIsLow1) {\n lower1 = newVal1;\n upper1 = !this.upperValueIsValid ? this.max : upper1;\n } else {\n lower1 = !this.lowerValueIsValid ? this.min : lower1;\n upper1 = newVal1;\n }\n this._handleOnChange(lower1, upper1, e1);\n }\n @action\n _determineValidThumbMovement(newVal1: ValueMember, lower1: ValueMember, upper1: ValueMember, e1: Event): void {\n // Lower thumb targeted or right-moving swap has occurred\n if (Math.abs((lower1 as number) - (newVal1 as number)) < Math.abs((upper1 as number) - (newVal1 as number))) {\n lower1 = newVal1;\n } else {\n upper1 = newVal1;\n }\n this._handleOnChange(lower1, upper1, e1);\n }\n @action\n _determineThumbMovement(newVal1: number, e1: Event): void {\n // Determine thumb movement based on slider interaction\n if (!this.isValid) {\n // Non-standard positioning follows\n this._determineInvalidThumbMovement(newVal1, this.lowerValue, this.upperValue, e1);\n } else {\n // Standard positioning based on click event proximity to thumb locations\n this._determineValidThumbMovement(newVal1, this.lowerValue, this.upperValue, e1);\n }\n }\n @action\n _handleOnChange(lower1: ValueMember, upper1: ValueMember, e1: Event): void {\n const isValid1 = isWithinRange(this.min, upper1, lower1) && isWithinRange(lower1, this.max, upper1);\n this.args.onChange([\n lower1,\n upper1\n ], isValid1, e1);\n }\n @action\n handleSliderChange(e1: Event): void {\n this._determineThumbMovement(Number((e1.currentTarget as HTMLInputElement).value), e1);\n }\n @action\n _resetToRangeEnds(e1: KeyboardEvent): void {\n // Arbitrary decision to pass `min` instead of `max`. Result is the same.\n this._determineInvalidThumbMovement(this.min, this.lowerValue, this.upperValue, e1);\n }\n @action\n _isDirectionalKeyPress(event1: KeyboardEvent): boolean {\n return ([\n keys.ARROW_UP,\n keys.ARROW_RIGHT,\n keys.ARROW_DOWN,\n keys.ARROW_LEFT\n ].indexOf(event1.key as keys) > -1);\n }\n @action\n handleInputKeyDown(e1: KeyboardEvent): void {\n // Relevant only when initial values are both `''` and `showInput` is set\n if (this._isDirectionalKeyPress(e1) && !this.isValid) {\n e1.preventDefault();\n this._resetToRangeEnds(e1);\n }\n }\n @action\n handleLowerInputChange(e1: Event): void {\n this._handleOnChange((e1.target as HTMLInputElement).value, this.upperValue, e1);\n }\n @action\n handleUpperInputChange(e1: Event): void {\n this._handleOnChange(this.lowerValue, (e1.target as HTMLInputElement).value, e1);\n }\n @action\n _handleKeyDown(value1: ValueMember, event1: KeyboardEvent): number {\n let newVal1 = Number(value1);\n let stepRemainder1 = 0;\n const step1 = this.args.step || 1;\n switch(event1.key){\n case keys.ARROW_UP:\n case keys.ARROW_RIGHT:\n event1.preventDefault();\n newVal1 += step1;\n stepRemainder1 = (newVal1 - this.min) % step1;\n if (step1 !== 1 && stepRemainder1 > 0) {\n newVal1 = newVal1 - stepRemainder1;\n }\n break;\n case keys.ARROW_DOWN:\n case keys.ARROW_LEFT:\n event1.preventDefault();\n newVal1 -= step1;\n stepRemainder1 = (newVal1 - this.min) % step1;\n if (step1 !== 1 && stepRemainder1 > 0) {\n newVal1 = newVal1 + (step1 - stepRemainder1);\n }\n break;\n }\n return newVal1;\n }\n @action\n handleLowerKeyDown(event1: KeyboardEvent): void {\n let lower1 = this.lowerValue;\n switch(event1.key){\n case keys.TAB:\n return;\n default:\n if (!this.lowerValueIsValid) {\n // Relevant only when initial value is `''` and `showInput` is not set\n event1.preventDefault();\n this._resetToRangeEnds(event1);\n return;\n }\n lower1 = this._handleKeyDown(lower1, event1);\n }\n if (lower1 >= (this.upperValue as number) || lower1 < this.min) return;\n this._handleOnChange(lower1, this.upperValue, event1);\n }\n @action\n handleUpperKeyDown(event1: KeyboardEvent): void {\n let upper1 = this.upperValue;\n switch(event1.key){\n case keys.TAB:\n return;\n default:\n if (!this.upperValueIsValid) {\n // Relevant only when initial value is `''` and `showInput` is not set\n event1.preventDefault();\n this._resetToRangeEnds(event1);\n return;\n }\n upper1 = this._handleKeyDown(upper1, event1);\n }\n if (upper1 <= (this.lowerValue as number) || upper1 > this.max) return;\n this._handleOnChange(this.lowerValue, upper1, event1);\n }\n @action\n calculateThumbPositionStyle(value1: number, width1?: number): {\n left: string;\n } {\n // Calculate the left position based on value\n const decimal1 = (value1 - this.min) / (this.max - this.min);\n // Must be between 0-100%\n let valuePosition1 = decimal1 <= 1 ? decimal1 : 1;\n valuePosition1 = valuePosition1 >= 0 ? valuePosition1 : 0;\n const trackWidth1 = this.args.showInput === 'inputWithPopover' && !!width1 ? width1 : this.rangeSliderRef?.clientWidth;\n let thumbToTrackRatio1 = 0;\n if (trackWidth1) {\n thumbToTrackRatio1 = EUI_THUMB_SIZE / trackWidth1;\n } else {\n thumbToTrackRatio1 = EUI_THUMB_SIZE / 1;\n }\n const trackPositionScale1 = (1 - thumbToTrackRatio1) * 100;\n return {\n left: `${valuePosition1 * trackPositionScale1}%`\n };\n }\n @action\n setPreventPopoverClose(value1: boolean): void {\n this.preventPopoverClose = value1;\n }\n get calculateLowerValueThumbPositionStyle(): {\n left: string;\n } {\n return this.calculateThumbPositionStyle(Number(this.lowerValue) || this.min, this.rangeWidth);\n }\n get calculateUpperValueThumbPositionStyle(): {\n left: string;\n } {\n return this.calculateThumbPositionStyle(Number(this.upperValue) || this.max, this.rangeWidth);\n }\n @action\n toggleHasFocus(): void {\n this.hasFocus = !this.hasFocus;\n }\n @action\n onThumbFocus(e1: FocusEvent): void {\n if (this.args.onFocus) {\n this.args.onFocus(e1);\n }\n this.hasFocus = true;\n }\n @action\n onThumbBlur(e1: FocusEvent): void {\n if (this.args.onBlur) {\n this.args.onBlur(e1);\n }\n this.hasFocus = false;\n }\n @action\n onInputFocus(e1: FocusEvent): void {\n if (this.args.onFocus) {\n this.args.onFocus(e1);\n }\n this.preventPopoverClose = true;\n this.isPopoverOpen = true;\n }\n @action\n onInputBlur(e1: FocusEvent): void {\n later(this, ()=>{\n // Safari does not recognize any focus-related eventing for input[type=range]\n // making it impossible to capture its state using active/focus/relatedTarget\n // Instead, a prevention flag is set on mousedown, with a waiting period here.\n // Mousedown is viable because in the popover case, it is inaccessible via keyboard (intentionally)\n if (this.preventPopoverClose) {\n this.preventPopoverClose = false;\n return;\n }\n if (this.args.onBlur) {\n this.args.onBlur(e1);\n }\n this.closePopover();\n }, 200);\n }\n @action\n closePopover(): void {\n this.preventPopoverClose = false;\n this.isPopoverOpen = false;\n }\n @action\n onResize(width1?: number): void {\n this.rangeWidth = width1;\n }\n get digitTolerance(): number {\n return Math.max(String(this.min).length, String(this.max).length);\n }\n get showInputOnly(): boolean {\n return this.showInput === 'inputWithPopover';\n }\n get canShowDropdown(): boolean {\n return this.showInputOnly && !this.args.readOnly && !this.args.disabled;\n }\n static{\n template(`\n {{#let\n (and (argOrDefault @isPrependProvided true) (has-block \"prepend\"))\n (and (argOrDefault @isAppendProvided true) (has-block \"append\"))\n (and (not (argOrDefault @isFakeMaxBlock false)) (has-block \"max\"))\n (and (not (argOrDefault @isFakeMinBlock false)) (has-block \"min\"))\n as |hasPrepend hasAppend hasMaxBlock hasMinBlock|\n }}\n {{#if this.showInputOnly}}\n <EuiInputPopover\n class=\"euiRange__popover\"\n @fullWidth={{this.fullWidth}}\n @isOpen={{this.isPopoverOpen}}\n @closePopover={{this.closePopover}}\n @disableFocusTrap={{true}}\n @onPanelResize={{this.onResize}}\n >\n <:input>\n <EuiFormControlLayoutDelimited\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n @readOnly={{@readOnly}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses to=\"prepend\"}}\n </:prepend>\n <:startControl as |classes|>\n <EuiRangeInput\n class={{classes}}\n @digitTolerance={{this.digitTolerance}}\n @side=\"min\"\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n @step={{this.step}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleLowerInputChange}}\n @name=\"{{@name}}-minValue\"\n @readOnly={{@readOnly}}\n @autoSize={{false}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{hasAppend}}\n @isAppendProvided={{hasPrepend}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on\n \"focus\"\n (if\n this.canShowDropdown this.onInputFocus (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if\n this.canShowDropdown this.onInputBlur (optional @onBlur)\n )\n }}\n {{on \"input\" this.handleLowerInputChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n </:startControl>\n <:endControl as |classes|>\n <EuiRangeInput\n class={{classes}}\n @digitTolerance={{this.digitTolerance}}\n @side=\"max\"\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @name=\"{{@name}}-maxValue\"\n @readOnly={{@readOnly}}\n @autoSize={{false}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{hasAppend}}\n @isAppendProvided={{hasPrepend}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on\n \"focus\"\n (if\n this.canShowDropdown this.onInputFocus (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if\n this.canShowDropdown this.onInputBlur (optional @onBlur)\n )\n }}\n {{on \"input\" this.handleUpperInputChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n </:endControl>\n <:append as |appendClasses|>\n {{yield appendClasses to=\"append\"}}\n </:append>\n </EuiFormControlLayoutDelimited>\n </:input>\n <:content>\n <EuiRangeWrapper\n class=\"euiDualRange\"\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n >\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{if (eq this.showInput true) \"true\" \"false\"}}\n @compressed={{this.compressed}}\n @disabled={{@disabled}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleSliderChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{this.compressed}}\n @hasFocus={{this.hasFocus}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.lowerValue to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo this.upperValue to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n class=\"euiDualRange__slider\"\n aria-hidden=\"true\"\n @id={{this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleSliderChange}}\n @showTicks={{this.showTicks}}\n @hasFocus={{this.hasFocus}}\n tabindex=\"-1\"\n @showRange={{this.showRange}}\n ...attributes\n {{didInsert this.didInsertRangeSlider}}\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleSliderChange}}\n />\n {{#if this.rangeSliderRefAvailable}}\n <EuiRangeThumb\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n {{!@glint-expect-error}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateLowerValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{onKey \"_all\" this.handleLowerKeyDown}}\n />\n <EuiRangeThumb\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n {{!@glint-expect-error}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateUpperValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{onKey \"_all\" this.handleUpperKeyDown}}\n />\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n </EuiRangeWrapper>\n </:content>\n </EuiInputPopover>\n {{else}}\n <EuiRangeWrapper\n class=\"euiDualRange\"\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n >\n {{#if this.showInput}}\n <EuiRangeInput\n @digitTolerance={{this.digitTolerance}}\n @side=\"min\"\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n @step={{this.step}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleLowerInputChange}}\n @name=\"{{@name}}-minValue\"\n @readOnly={{@readOnly}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{false}}\n @isAppendProvided={{false}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleLowerInputChange}}\n />\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{/if}}\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{if (eq this.showInput true) \"true\" \"false\"}}\n @compressed={{this.compressed}}\n @disabled={{@disabled}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleSliderChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{this.compressed}}\n @hasFocus={{this.hasFocus}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.lowerValue to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo this.upperValue to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n class=\"euiDualRange__slider\"\n aria-hidden=\"true\"\n @id={{this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleSliderChange}}\n @showTicks={{this.showTicks}}\n @hasFocus={{this.hasFocus}}\n tabindex=\"-1\"\n @showRange={{this.showRange}}\n ...attributes\n {{didInsert this.didInsertRangeSlider}}\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleSliderChange}}\n />\n {{#if this.rangeSliderRefAvailable}}\n <EuiRangeThumb\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n {{!@glint-expect-error}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateLowerValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{!@glint-expect-error}}\n {{on \"click\" this.handleLowerKeyDown}}\n />\n <EuiRangeThumb\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n {{!@glint-expect-error}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateUpperValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{on \"keydown\" this.handleUpperKeyDown}}\n />\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n {{#if this.showInput}}\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{! maxinput }}\n <EuiRangeInput\n @digitTolerance={{this.digitTolerance}}\n @side=\"max\"\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @name=\"{{@name}}-maxValue\"\n @readOnly={{@readOnly}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @controlOnly={{this.showInputOnly}}\n @isPrependProvided={{false}}\n @isAppendProvided={{false}}\n @disable={{@disable}}\n ...attributes\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleUpperInputChange}}\n />\n {{/if}}\n </EuiRangeWrapper>\n {{/if}}\n {{/let}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9iZXRvY2FudHU5My9wcnlzbWV4L2VtYmVyLWV1aS9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL2V1aS1kdWFsLXJhbmdlLmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tcG9uZW50IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG5pbXBvcnQgeyB0cmFja2VkIH0gZnJvbSAnQGdsaW1tZXIvdHJhY2tpbmcnO1xuaW1wb3J0IHsgZm4gfSBmcm9tICdAZW1iZXIvaGVscGVyJztcbmltcG9ydCB7IG9uIH0gZnJvbSAnQGVtYmVyL21vZGlmaWVyJztcbmltcG9ydCB7IGFjdGlvbiB9IGZyb20gJ0BlbWJlci9vYmplY3QnO1xuaW1wb3J0IHsgZ3VpZEZvciB9IGZyb20gJ0BlbWJlci9vYmplY3QvaW50ZXJuYWxzJztcbmltcG9ydCBkaWRJbnNlcnQgZnJvbSAnQGVtYmVyL3JlbmRlci1tb2RpZmllcnMvbW9kaWZpZXJzL2RpZC1pbnNlcnQnO1xuaW1wb3J0IHsgbGF0ZXIgfSBmcm9tICdAZW1iZXIvcnVubG9vcCc7XG5cbmltcG9ydCBvcHRpb25hbCBmcm9tICdlbWJlci1jb21wb3NhYmxlLWhlbHBlcnMvaGVscGVycy9vcHRpb25hbCc7XG5pbXBvcnQgb25LZXkgZnJvbSAnZW1iZXIta2V5Ym9hcmQvbW9kaWZpZXJzL29uLWtleSc7XG5pbXBvcnQgeyBhbmQsIGVxLCBub3QsIG9yIH0gZnJvbSAnZW1iZXItdHJ1dGgtaGVscGVycyc7XG5cbmltcG9ydCBhcmdPckRlZmF1bHQsIHsgYXJnT3JEZWZhdWx0RGVjb3JhdG9yIH0gZnJvbSAnLi4vaGVscGVycy9hcmctb3ItZGVmYXVsdC50cyc7XG5pbXBvcnQgY2FzdFRvIGZyb20gJy4uL2hlbHBlcnMvY2FzdC10by50cyc7XG5pbXBvcnQgc2ltcGxlU3R5bGUgZnJvbSAnLi4vbW9kaWZpZXJzL3NpbXBsZS1zdHlsZS50cyc7XG5pbXBvcnQgeyBrZXlzIH0gZnJvbSAnLi4vdXRpbHMva2V5cy50cyc7XG5pbXBvcnQgeyBpc1dpdGhpblJhbmdlIH0gZnJvbSAnLi4vdXRpbHMvbnVtYmVyL2luZGV4LnRzJztcbmltcG9ydCB7IEVVSV9USFVNQl9TSVpFIH0gZnJvbSAnLi4vdXRpbHMvcmFuZ2UvaW5kZXgudHMnO1xuaW1wb3J0IEV1aUZvcm1Db250cm9sTGF5b3V0RGVsaW1pdGVkIGZyb20gJy4vZXVpLWZvcm0tY29udHJvbC1sYXlvdXQtZGVsaW1pdGVkLmd0cyc7XG5pbXBvcnQgRXVpSW5wdXRQb3BvdmVyIGZyb20gJy4vZXVpLWlucHV0LXBvcG92ZXIuZ3RzJztcbmltcG9ydCBFdWlSYW5nZUhpZ2hsaWdodCBmcm9tICcuL2V1aS1yYW5nZS1oaWdobGlnaHQuZ3RzJztcbmltcG9ydCBFdWlSYW5nZUlucHV0IGZyb20gJy4vZXVpLXJhbmdlLWlucHV0Lmd0cyc7XG5pbXBvcnQgRXVpUmFuZ2VMYWJlbCBmcm9tICcuL2V1aS1yYW5nZS1sYWJlbC5ndHMnO1xuaW1wb3J0IEV1aVJhbmdlU2xpZGVyIGZyb20gJy4vZXVpLXJhbmdlLXNsaWRlci5ndHMnO1xuaW1wb3J0IEV1aVJhbmdlVGh1bWIgZnJvbSAnLi9ldWktcmFuZ2UtdGh1bWIuZ3RzJztcbmltcG9ydCBFdWlSYW5nZVRyYWNrIGZyb20gJy4vZXVpLXJhbmdlLXRyYWNrLmd0cyc7XG5pbXBvcnQgRXVpUmFuZ2VXcmFwcGVyIGZyb20gJy4vZXVpLXJhbmdlLXdyYXBwZXIuZ3RzJztcblxuaW1wb3J0IHR5cGUgeyBFdWlGb3JtQ29udHJvbExheW91dFNpZ25hdHVyZSB9IGZyb20gJy4vZXVpLWZvcm0tY29udHJvbC1sYXlvdXQnO1xuaW1wb3J0IHR5cGUgeyBFdWlSYW5nZUFyZ3MgfSBmcm9tICcuL2V1aS1yYW5nZSc7XG5pbXBvcnQgdHlwZSB7XG4gIEV1aVJhbmdlSW5wdXRBcmdzLFxuICBFdWlSYW5nZUlucHV0U2lnbmF0dXJlXG59IGZyb20gJy4vZXVpLXJhbmdlLWlucHV0JztcbmltcG9ydCB0eXBlIHsgRXVpUmFuZ2VMZXZlbCB9IGZyb20gJy4vZXVpLXJhbmdlLWxldmVscyc7XG5pbXBvcnQgdHlwZSB7IEV1aVJhbmdlVGljayB9IGZyb20gJy4vZXVpLXJhbmdlLXRpY2tzJztcblxuZXhwb3J0IHR5cGUgVmFsdWVNZW1iZXIgPSBudW1iZXIgfCBzdHJpbmc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXVpRHVhbFJhbmdlQXJncyB7XG4gIHZhbHVlOiBbVmFsdWVNZW1iZXIsIFZhbHVlTWVtYmVyXTtcbiAgb25CbHVyPzogKGV2ZW50OiBGb2N1c0V2ZW50KSA9PiB2b2lkO1xuICBvbkZvY3VzPzogKGV2ZW50OiBGb2N1c0V2ZW50KSA9PiB2b2lkO1xuICBvbkNoYW5nZTogKFxuICAgIHZhbHVlczogW1ZhbHVlTWVtYmVyLCBWYWx1ZU1lbWJlcl0sXG4gICAgaXNWYWxpZDogYm9vbGVhbixcbiAgICBldmVudDogRXZlbnQgfCBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudFxuICApID0-IHZvaWQ7XG4gIGZ1bGxXaWR0aD86IGJvb2xlYW47XG4gIGlzSW52YWxpZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDcmVhdGUgY29sb3JlZCBpbmRpY2F0b3JzIGZvciBjZXJ0YWluIGludGVydmFsc1xuICAgKi9cbiAgbGV2ZWxzPzogRXVpUmFuZ2VMZXZlbFtdO1xuICAvKipcbiAgICogU2hvd3Mgc3RhdGljIG1pbi9tYXggbGFiZWxzIG9uIHRoZSBzaWRlcyBvZiB0aGUgcmFuZ2Ugc2xpZGVyXG4gICAqL1xuICBzaG93TGFiZWxzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFBhc3MgYHRydWVgIHRvIGRpc3BsYXlzIGFuIGV4dHJhIGlucHV0IGNvbnRyb2wgZm9yIGRpcmVjdCBtYW5pcHVsYXRpb24uXG4gICAqIFBhc3MgYCdpbnB1dFdpdGhQb3BvdmVyJ2AgdG8gb25seSBzaG93IHRoZSBpbnB1dCBidXQgc2hvdyB0aGUgcmFuZ2UgaW4gYSBkcm9wZG93bi5cbiAgICovXG4gIHNob3dJbnB1dD86IEV1aVJhbmdlQXJnc1snc2hvd0lucHV0J107XG4gIC8qKlxuICAgKiBNb2RpZmllcyB0aGUgbnVtYmVyIG9mIHRpY2sgbWFya3MgYW5kIGF0IHdoYXQgaW50ZXJ2YWxcbiAgICovXG4gIHRpY2tJbnRlcnZhbD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFNwZWNpZmllZCB0aWNrcyBhdCBzcGVjaWZpZWQgdmFsdWVzXG4gICAqL1xuICB0aWNrcz86IEV1aVJhbmdlVGlja1tdO1xuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnB1dCBncm91cCB3aXRoIGVsZW1lbnQocykgY29taW5nIGJlZm9yZSBpbnB1dC4gIFdpbGwgb25seSBzaG93IGlmIGBzaG93SW5wdXQgPSBpbnB1dFdpdGhQb3BvdmVyYC5cbiAgICogYHN0cmluZ2AgfCBgQ29tcG9uZW50YCBvciBhbiBhcnJheSBvZiB0aGVzZVxuICAgKi9cbiAgcHJlcGVuZD86IEV1aUZvcm1Db250cm9sTGF5b3V0U2lnbmF0dXJlWydCbG9ja3MnXVsncHJlcGVuZCddO1xuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnB1dCBncm91cCB3aXRoIGVsZW1lbnQocykgY29taW5nIGFmdGVyIGlucHV0LiBXaWxsIG9ubHkgc2hvdyBpZiBgc2hvd0lucHV0ID0gaW5wdXRXaXRoUG9wb3ZlcmAuXG4gICAqIGBzdHJpbmdgIHwgYENvbXBvbmVudGAgb3IgYW4gYXJyYXkgb2YgdGhlc2VcbiAgICovXG4gIGFwcGVuZD86IEV1aUZvcm1Db250cm9sTGF5b3V0U2lnbmF0dXJlWydCbG9ja3MnXVsnYXBwZW5kJ107XG4gIC8qKlxuICAgKiAgSW50ZW5kZWQgdG8gYmUgdXNlcyB3aXRoIGFyaWEgYXR0cmlidXRlcy4gU29tZSBhdHRyaWJ1dGVzIG1heSBiZSBvdmVyd3JpdHRlbi5cbiAgICovXG4gIG1pbklucHV0UHJvcHM_OiBQYXJ0aWFsPEV1aVJhbmdlSW5wdXRBcmdzPjtcblxuICAvKipcbiAgICogIEludGVuZGVkIHRvIGJlIHVzZXMgd2l0aCBhcmlhIGF0dHJpYnV0ZXMuIFNvbWUgYXR0cmlidXRlcyBtYXkgYmUgb3ZlcndyaXR0ZW4uXG4gICAqL1xuICBtYXhJbnB1dFByb3BzPzogUGFydGlhbDxFdWlSYW5nZUlucHV0QXJncz47XG5cbiAgcmVhZE9ubHk_OiBib29sZWFuO1xuXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICBpc1ByZXBlbmRQcm92aWRlZD86IGJvb2xlYW47XG5cbiAgaXNBcHBlbmRQcm92aWRlZD86IGJvb2xlYW47XG5cbiAgaXNGYWtlTWF4QmxvY2s_OiBib29sZWFuO1xuXG4gIGlzRmFrZU1pbkJsb2NrPzogYm9vbGVhbjtcblxuICBkaXNhYmxlPzogYm9vbGVhbjtcblxuICBhcmlhRGVzY3JpYmVkYnk_OiBzdHJpbmc7XG5cbiAgYXJpYUxhYmVsPzogc3RyaW5nO1xuXG4gIG5hbWU_OiBzdHJpbmc7XG5cbiAgaWQ_OiBzdHJpbmc7XG5cbiAgY29tcHJlc3NlZD86IGJvb2xlYW47XG5cbiAgc2hvd1JhbmdlPzogYm9vbGVhbjtcblxuICBzaG93VGlja3M_OiBib29sZWFuO1xuXG4gIHN0ZXA_OiBudW1iZXI7XG5cbiAgbWluPzogbnVtYmVyO1xuXG4gIG1heD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdWlEdWFsUmFuZ2VTaWduYXR1cmUge1xuICBFbGVtZW50OiBFdWlSYW5nZUlucHV0U2lnbmF0dXJlWydFbGVtZW50J107XG4gIEFyZ3M6IEV1aUR1YWxSYW5nZUFyZ3M7XG4gIEJsb2Nrczoge1xuICAgIHByZXBlbmQ6IEV1aVJhbmdlSW5wdXRTaWduYXR1cmVbJ0Jsb2NrcyddWydwcmVwZW5kJ107XG4gICAgYXBwZW5kOiBFdWlSYW5nZUlucHV0U2lnbmF0dXJlWydCbG9ja3MnXVsnYXBwZW5kJ107XG4gICAgbWluOiBbbnVtYmVyP107XG4gICAgbWF4OiBbbnVtYmVyP107XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV1aUR1YWxSYW5nZUNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudDxFdWlEdWFsUmFuZ2VTaWduYXR1cmU-IHtcbiAgLy8gRGVmYXVsdHNcbiAgQGFyZ09yRGVmYXVsdERlY29yYXRvcigwKSBtaW4hOiBudW1iZXI7XG4gIEBhcmdPckRlZmF1bHREZWNvcmF0b3IoMTAwKSBtYXghOiBudW1iZXI7XG4gIEBhcmdPckRlZmF1bHREZWNvcmF0b3IoMSkgc3RlcCE6IG51bWJlcjtcbiAgQGFyZ09yRGVmYXVsdERlY29yYXRvcihmYWxzZSkgZnVsbFdpZHRoITogYm9vbGVhbjtcbiAgQGFyZ09yRGVmYXVsdERlY29yYXRvcihmYWxzZSkgY29tcHJlc3NlZCE6IGJvb2xlYW47XG4gIEBhcmdPckRlZmF1bHREZWNvcmF0b3IoZmFsc2UpIHNob3dMYWJlbHMhOiBib29sZWFuO1xuICBAYXJnT3JEZWZhdWx0RGVjb3JhdG9yKGZhbHNlKSBzaG93SW5wdXQhOiBib29sZWFuIHwgc3RyaW5nO1xuICBAYXJnT3JEZWZhdWx0RGVjb3JhdG9yKHRydWUpIHNob3dSYW5nZSE6IGJvb2xlYW47XG4gIEBhcmdPckRlZmF1bHREZWNvcmF0b3IoZmFsc2UpIHNob3dUaWNrcyE6IGJvb2xlYW47XG4gIEBhcmdPckRlZmF1bHREZWNvcmF0b3IoW10pIGxldmVscyE6IEV1aVJhbmdlTGV2ZWxbXTtcblxuICAvL1N0YXRlXG4gIEB0cmFja2VkIGlkOiBzdHJpbmcgPSB0aGlzLmFyZ3MuaWQgfHwgZ3VpZEZvcih7fSk7XG4gIEB0cmFja2VkIGhhc0ZvY3VzID0gZmFsc2U7XG4gIEB0cmFja2VkIHJhbmdlU2xpZGVyUmVmQXZhaWxhYmxlID0gZmFsc2U7XG4gIEB0cmFja2VkIGlzUG9wb3Zlck9wZW4gPSBmYWxzZTtcbiAgQHRyYWNrZWQgcmFuZ2VXaWR0aDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBAdHJhY2tlZCBpc1Zpc2libGUgPSB0cnVlO1xuICAvLy9cblxuICBwcmV2ZW50UG9wb3ZlckNsb3NlID0gZmFsc2U7XG4gIHJhbmdlU2xpZGVyUmVmOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgQGFjdGlvblxuICBkaWRJbnNlcnRSYW5nZVNsaWRlcihyZWY6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5yYW5nZVNsaWRlclJlZiA9IHJlZjtcblxuICAgIHRoaXMucmFuZ2VTbGlkZXJSZWZBdmFpbGFibGUgPSAhIXJlZjtcbiAgICB0aGlzLnJhbmdlV2lkdGggPSByZWYgPyByZWYuY2xpZW50V2lkdGggOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAodGhpcy5yYW5nZVNsaWRlclJlZj8uY2xpZW50V2lkdGggJiYgIXRoaXMuaXNWaXNpYmxlKSB7XG4gICAgICB0aGlzLmlzVmlzaWJsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGxvd2VyVmFsdWUoKTogVmFsdWVNZW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFyZ3MudmFsdWUgPyB0aGlzLmFyZ3MudmFsdWVbMF0gOiB0aGlzLm1pbjtcbiAgfVxuXG4gIGdldCB1cHBlclZhbHVlKCk6IFZhbHVlTWVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5hcmdzLnZhbHVlID8gdGhpcy5hcmdzLnZhbHVlWzFdIDogdGhpcy5tYXg7XG4gIH1cblxuICBnZXQgbG93ZXJWYWx1ZUlzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzV2l0aGluUmFuZ2UodGhpcy5taW4sIHRoaXMudXBwZXJWYWx1ZSwgdGhpcy5sb3dlclZhbHVlKTtcbiAgfVxuXG4gIGdldCB1cHBlclZhbHVlSXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNXaXRoaW5SYW5nZSh0aGlzLmxvd2VyVmFsdWUsIHRoaXMubWF4LCB0aGlzLnVwcGVyVmFsdWUpO1xuICB9XG5cbiAgZ2V0IGlzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubG93ZXJWYWx1ZUlzVmFsaWQgJiYgdGhpcy51cHBlclZhbHVlSXNWYWxpZDtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgX2RldGVybWluZUludmFsaWRUaHVtYk1vdmVtZW50KFxuICAgIG5ld1ZhbDogVmFsdWVNZW1iZXIsXG4gICAgbG93ZXI6IFZhbHVlTWVtYmVyLFxuICAgIHVwcGVyOiBWYWx1ZU1lbWJlcixcbiAgICBlOiBFdmVudFxuICApOiB2b2lkIHtcbiAgICAvLyBJZiB0aGUgdmFsdWVzIGFyZSBpbnZhbGlkLCBmaW5kIHdoZXRoZXIgdGhlIG5ldyB2YWx1ZSBpcyBpbiB0aGUgdXBwZXJcbiAgICAvLyBvciBsb3dlciBoYWxmIGFuZCBtb3ZlIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGUgdG8gdGhlIG5ldyB2YWx1ZSxcbiAgICAvLyB3aGlsZSB0aGUgb3RoZXIgaGFuZGxlIGdldHMgbW92ZWQgdG8gdGhlIG9wcG9zaXRlIGJvdW5kIChpZiBpbnZhbGlkKVxuICAgIGNvbnN0IGxvd2VySGFsZiA9IE1hdGguYWJzKHRoaXMubWF4IC0gdGhpcy5taW4pIC8gMiArIHRoaXMubWluO1xuICAgIGNvbnN0IG5ld1ZhbElzTG93ID0gaXNXaXRoaW5SYW5nZSh0aGlzLm1pbiwgbG93ZXJIYWxmLCBuZXdWYWwpO1xuXG4gICAgaWYgKG5ld1ZhbElzTG93KSB7XG4gICAgICBsb3dlciA9IG5ld1ZhbDtcbiAgICAgIHVwcGVyID0gIXRoaXMudXBwZXJWYWx1ZUlzVmFsaWQgPyB0aGlzLm1heCA6IHVwcGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb3dlciA9ICF0aGlzLmxvd2VyVmFsdWVJc1ZhbGlkID8gdGhpcy5taW4gOiBsb3dlcjtcbiAgICAgIHVwcGVyID0gbmV3VmFsO1xuICAgIH1cblxuICAgIHRoaXMuX2hhbmRsZU9uQ2hhbmdlKGxvd2VyLCB1cHBlciwgZSk7XG4gIH1cblxuICBAYWN0aW9uXG4gIF9kZXRlcm1pbmVWYWxpZFRodW1iTW92ZW1lbnQoXG4gICAgbmV3VmFsOiBWYWx1ZU1lbWJlcixcbiAgICBsb3dlcjogVmFsdWVNZW1iZXIsXG4gICAgdXBwZXI6IFZhbHVlTWVtYmVyLFxuICAgIGU6IEV2ZW50XG4gICk6IHZvaWQge1xuICAgIC8vIExvd2VyIHRodW1iIHRhcmdldGVkIG9yIHJpZ2h0LW1vdmluZyBzd2FwIGhhcyBvY2N1cnJlZFxuICAgIGlmIChcbiAgICAgIE1hdGguYWJzKChsb3dlciBhcyBudW1iZXIpIC0gKG5ld1ZhbCBhcyBudW1iZXIpKSA8XG4gICAgICBNYXRoLmFicygodXBwZXIgYXMgbnVtYmVyKSAtIChuZXdWYWwgYXMgbnVtYmVyKSlcbiAgICApIHtcbiAgICAgIGxvd2VyID0gbmV3VmFsO1xuICAgIH1cbiAgICAvLyBVcHBlciB0aHVtYiB0YXJnZXRlZCBvciBsZWZ0LW1vdmluZyBzd2FwIGhhcyBvY2N1cnJlZFxuICAgIGVsc2Uge1xuICAgICAgdXBwZXIgPSBuZXdWYWw7XG4gICAgfVxuXG4gICAgdGhpcy5faGFuZGxlT25DaGFuZ2UobG93ZXIsIHVwcGVyLCBlKTtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgX2RldGVybWluZVRodW1iTW92ZW1lbnQobmV3VmFsOiBudW1iZXIsIGU6IEV2ZW50KTogdm9pZCB7XG4gICAgLy8gRGV0ZXJtaW5lIHRodW1iIG1vdmVtZW50IGJhc2VkIG9uIHNsaWRlciBpbnRlcmFjdGlvblxuICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7XG4gICAgICAvLyBOb24tc3RhbmRhcmQgcG9zaXRpb25pbmcgZm9sbG93c1xuICAgICAgdGhpcy5fZGV0ZXJtaW5lSW52YWxpZFRodW1iTW92ZW1lbnQoXG4gICAgICAgIG5ld1ZhbCxcbiAgICAgICAgdGhpcy5sb3dlclZhbHVlLFxuICAgICAgICB0aGlzLnVwcGVyVmFsdWUsXG4gICAgICAgIGVcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFN0YW5kYXJkIHBvc2l0aW9uaW5nIGJhc2VkIG9uIGNsaWNrIGV2ZW50IHByb3hpbWl0eSB0byB0aHVtYiBsb2NhdGlvbnNcbiAgICAgIHRoaXMuX2RldGVybWluZVZhbGlkVGh1bWJNb3ZlbWVudChcbiAgICAgICAgbmV3VmFsLFxuICAgICAgICB0aGlzLmxvd2VyVmFsdWUsXG4gICAgICAgIHRoaXMudXBwZXJWYWx1ZSxcbiAgICAgICAgZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBAYWN0aW9uXG4gIF9oYW5kbGVPbkNoYW5nZShsb3dlcjogVmFsdWVNZW1iZXIsIHVwcGVyOiBWYWx1ZU1lbWJlciwgZTogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpc1ZhbGlkID1cbiAgICAgIGlzV2l0aGluUmFuZ2UodGhpcy5taW4sIHVwcGVyLCBsb3dlcikgJiZcbiAgICAgIGlzV2l0aGluUmFuZ2UobG93ZXIsIHRoaXMubWF4LCB1cHBlcik7XG5cbiAgICB0aGlzLmFyZ3Mub25DaGFuZ2UoW2xvd2VyLCB1cHBlcl0sIGlzVmFsaWQsIGUpO1xuICB9XG5cbiAgQGFjdGlvblxuICBoYW5kbGVTbGlkZXJDaGFuZ2UoZTogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXRlcm1pbmVUaHVtYk1vdmVtZW50KFxuICAgICAgTnVtYmVyKChlLmN1cnJlbnRUYXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpLFxuICAgICAgZVxuICAgICk7XG4gIH1cblxuICBAYWN0aW9uXG4gIF9yZXNldFRvUmFuZ2VFbmRzKGU6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBBcmJpdHJhcnkgZGVjaXNpb24gdG8gcGFzcyBgbWluYCBpbnN0ZWFkIG9mIGBtYXhgLiBSZXN1bHQgaXMgdGhlIHNhbWUuXG4gICAgdGhpcy5fZGV0ZXJtaW5lSW52YWxpZFRodW1iTW92ZW1lbnQoXG4gICAgICB0aGlzLm1pbixcbiAgICAgIHRoaXMubG93ZXJWYWx1ZSxcbiAgICAgIHRoaXMudXBwZXJWYWx1ZSxcbiAgICAgIGVcbiAgICApO1xuICB9XG5cbiAgQGFjdGlvblxuICBfaXNEaXJlY3Rpb25hbEtleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIFtcbiAgICAgICAga2V5cy5BUlJPV19VUCxcbiAgICAgICAga2V5cy5BUlJPV19SSUdIVCxcbiAgICAgICAga2V5cy5BUlJPV19ET1dOLFxuICAgICAgICBrZXlzLkFSUk9XX0xFRlRcbiAgICAgIF0uaW5kZXhPZihldmVudC5rZXkgYXMga2V5cykgPiAtMVxuICAgICk7XG4gIH1cblxuICBAYWN0aW9uXG4gIGhhbmRsZUlucHV0S2V5RG93bihlOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLy8gUmVsZXZhbnQgb25seSB3aGVuIGluaXRpYWwgdmFsdWVzIGFyZSBib3RoIGAnJ2AgYW5kIGBzaG93SW5wdXRgIGlzIHNldFxuICAgIGlmICh0aGlzLl9pc0RpcmVjdGlvbmFsS2V5UHJlc3MoZSkgJiYgIXRoaXMuaXNWYWxpZCkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5fcmVzZXRUb1JhbmdlRW5kcyhlKTtcbiAgICB9XG4gIH1cblxuICBAYWN0aW9uXG4gIGhhbmRsZUxvd2VySW5wdXRDaGFuZ2UoZTogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9oYW5kbGVPbkNoYW5nZShcbiAgICAgIChlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSxcbiAgICAgIHRoaXMudXBwZXJWYWx1ZSxcbiAgICAgIGVcbiAgICApO1xuICB9XG5cbiAgQGFjdGlvblxuICBoYW5kbGVVcHBlcklucHV0Q2hhbmdlKGU6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5faGFuZGxlT25DaGFuZ2UoXG4gICAgICB0aGlzLmxvd2VyVmFsdWUsXG4gICAgICAoZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUsXG4gICAgICBlXG4gICAgKTtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgX2hhbmRsZUtleURvd24odmFsdWU6IFZhbHVlTWVtYmVyLCBldmVudDogS2V5Ym9hcmRFdmVudCk6IG51bWJlciB7XG4gICAgbGV0IG5ld1ZhbCA9IE51bWJlcih2YWx1ZSk7XG4gICAgbGV0IHN0ZXBSZW1haW5kZXIgPSAwO1xuICAgIGNvbnN0IHN0ZXAgPSB0aGlzLmFyZ3Muc3RlcCB8fCAxO1xuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2Uga2V5cy5BUlJPV19VUDpcbiAgICAgIGNhc2Uga2V5cy5BUlJPV19SSUdIVDpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgbmV3VmFsICs9IHN0ZXA7XG4gICAgICAgIHN0ZXBSZW1haW5kZXIgPSAobmV3VmFsIC0gdGhpcy5taW4pICUgc3RlcDtcblxuICAgICAgICBpZiAoc3RlcCAhPT0gMSAmJiBzdGVwUmVtYWluZGVyID4gMCkge1xuICAgICAgICAgIG5ld1ZhbCA9IG5ld1ZhbCAtIHN0ZXBSZW1haW5kZXI7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Uga2V5cy5BUlJPV19ET1dOOlxuICAgICAgY2FzZSBrZXlzLkFSUk9XX0xFRlQ6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG5ld1ZhbCAtPSBzdGVwO1xuICAgICAgICBzdGVwUmVtYWluZGVyID0gKG5ld1ZhbCAtIHRoaXMubWluKSAlIHN0ZXA7XG5cbiAgICAgICAgaWYgKHN0ZXAgIT09IDEgJiYgc3RlcFJlbWFpbmRlciA-IDApIHtcbiAgICAgICAgICBuZXdWYWwgPSBuZXdWYWwgKyAoc3RlcCAtIHN0ZXBSZW1haW5kZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld1ZhbDtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgaGFuZGxlTG93ZXJLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgbGV0IGxvd2VyID0gdGhpcy5sb3dlclZhbHVlO1xuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2Uga2V5cy5UQUI6XG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmICghdGhpcy5sb3dlclZhbHVlSXNWYWxpZCkge1xuICAgICAgICAgIC8vIFJlbGV2YW50IG9ubHkgd2hlbiBpbml0aWFsIHZhbHVlIGlzIGAnJ2AgYW5kIGBzaG93SW5wdXRgIGlzIG5vdCBzZXRcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMuX3Jlc2V0VG9SYW5nZUVuZHMoZXZlbnQpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbG93ZXIgPSB0aGlzLl9oYW5kbGVLZXlEb3duKGxvd2VyLCBldmVudCk7XG4gICAgfVxuXG4gICAgaWYgKGxvd2VyID49ICh0aGlzLnVwcGVyVmFsdWUgYXMgbnVtYmVyKSB8fCBsb3dlciA8IHRoaXMubWluKSByZXR1cm47XG4gICAgdGhpcy5faGFuZGxlT25DaGFuZ2UobG93ZXIsIHRoaXMudXBwZXJWYWx1ZSwgZXZlbnQpO1xuICB9XG5cbiAgQGFjdGlvblxuICBoYW5kbGVVcHBlcktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgdXBwZXIgPSB0aGlzLnVwcGVyVmFsdWU7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSBrZXlzLlRBQjpcbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKCF0aGlzLnVwcGVyVmFsdWVJc1ZhbGlkKSB7XG4gICAgICAgICAgLy8gUmVsZXZhbnQgb25seSB3aGVuIGluaXRpYWwgdmFsdWUgaXMgYCcnYCBhbmQgYHNob3dJbnB1dGAgaXMgbm90IHNldFxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5fcmVzZXRUb1JhbmdlRW5kcyhldmVudCk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB1cHBlciA9IHRoaXMuX2hhbmRsZUtleURvd24odXBwZXIsIGV2ZW50KTtcbiAgICB9XG5cbiAgICBpZiAodXBwZXIgPD0gKHRoaXMubG93ZXJWYWx1ZSBhcyBudW1iZXIpIHx8IHVwcGVyID4gdGhpcy5tYXgpIHJldHVybjtcbiAgICB0aGlzLl9oYW5kbGVPbkNoYW5nZSh0aGlzLmxvd2VyVmFsdWUsIHVwcGVyLCBldmVudCk7XG4gIH1cblxuICBAYWN0aW9uXG4gIGNhbGN1bGF0ZVRodW1iUG9zaXRpb25TdHlsZSh2YWx1ZTogbnVtYmVyLCB3aWR0aD86IG51bWJlcik6IHsgbGVmdDogc3RyaW5nIH0ge1xuICAgIC8vIENhbGN1bGF0ZSB0aGUgbGVmdCBwb3NpdGlvbiBiYXNlZCBvbiB2YWx1ZVxuICAgIGNvbnN0IGRlY2ltYWwgPSAodmFsdWUgLSB0aGlzLm1pbikgLyAodGhpcy5tYXggLSB0aGlzLm1pbik7XG4gICAgLy8gTXVzdCBiZSBiZXR3ZWVuIDAtMTAwJVxuICAgIGxldCB2YWx1ZVBvc2l0aW9uID0gZGVjaW1hbCA8PSAxID8gZGVjaW1hbCA6IDE7XG5cbiAgICB2YWx1ZVBvc2l0aW9uID0gdmFsdWVQb3NpdGlvbiA-PSAwID8gdmFsdWVQb3NpdGlvbiA6IDA7XG5cbiAgICBjb25zdCB0cmFja1dpZHRoID1cbiAgICAgIHRoaXMuYXJncy5zaG93SW5wdXQgPT09ICdpbnB1dFdpdGhQb3BvdmVyJyAmJiAhIXdpZHRoXG4gICAgICAgID8gd2lkdGhcbiAgICAgICAgOiB0aGlzLnJhbmdlU2xpZGVyUmVmPy5jbGllbnRXaWR0aDtcblxuICAgIGxldCB0aHVtYlRvVHJhY2tSYXRpbyA9IDA7XG5cbiAgICBpZiAodHJhY2tXaWR0aCkge1xuICAgICAgdGh1bWJUb1RyYWNrUmF0aW8gPSBFVUlfVEhVTUJfU0laRSAvIHRyYWNrV2lkdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRodW1iVG9UcmFja1JhdGlvID0gRVVJX1RIVU1CX1NJWkUgLyAxO1xuICAgIH1cblxuICAgIGNvbnN0IHRyYWNrUG9zaXRpb25TY2FsZSA9ICgxIC0gdGh1bWJUb1RyYWNrUmF0aW8pICogMTAwO1xuXG4gICAgcmV0dXJuIHsgbGVmdDogYCR7dmFsdWVQb3NpdGlvbiAqIHRyYWNrUG9zaXRpb25TY2FsZX0lYCB9O1xuICB9XG5cbiAgQGFjdGlvblxuICBzZXRQcmV2ZW50UG9wb3ZlckNsb3NlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5wcmV2ZW50UG9wb3ZlckNsb3NlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgY2FsY3VsYXRlTG93ZXJWYWx1ZVRodW1iUG9zaXRpb25TdHlsZSgpOiB7IGxlZnQ6IHN0cmluZyB9IHtcbiAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVUaHVtYlBvc2l0aW9uU3R5bGUoXG4gICAgICBOdW1iZXIodGhpcy5sb3dlclZhbHVlKSB8fCB0aGlzLm1pbixcbiAgICAgIHRoaXMucmFuZ2VXaWR0aFxuICAgICk7XG4gIH1cblxuICBnZXQgY2FsY3VsYXRlVXBwZXJWYWx1ZVRodW1iUG9zaXRpb25TdHlsZSgpOiB7IGxlZnQ6IHN0cmluZyB9IHtcbiAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVUaHVtYlBvc2l0aW9uU3R5bGUoXG4gICAgICBOdW1iZXIodGhpcy51cHBlclZhbHVlKSB8fCB0aGlzLm1heCxcbiAgICAgIHRoaXMucmFuZ2VXaWR0aFxuICAgICk7XG4gIH1cblxuICBAYWN0aW9uXG4gIHRvZ2dsZUhhc0ZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuaGFzRm9jdXMgPSAhdGhpcy5oYXNGb2N1cztcbiAgfVxuXG4gIEBhY3Rpb25cbiAgb25UaHVtYkZvY3VzKGU6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hcmdzLm9uRm9jdXMpIHtcbiAgICAgIHRoaXMuYXJncy5vbkZvY3VzKGUpO1xuICAgIH1cblxuICAgIHRoaXMuaGFzRm9jdXMgPSB0cnVlO1xuICB9XG5cbiAgQGFjdGlvblxuICBvblRodW1iQmx1cihlOiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXJncy5vbkJsdXIpIHtcbiAgICAgIHRoaXMuYXJncy5vbkJsdXIoZSk7XG4gICAgfVxuXG4gICAgdGhpcy5oYXNGb2N1cyA9IGZhbHNlO1xuICB9XG5cbiAgQGFjdGlvblxuICBvbklucHV0Rm9jdXMoZTogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFyZ3Mub25Gb2N1cykge1xuICAgICAgdGhpcy5hcmdzLm9uRm9jdXMoZSk7XG4gICAgfVxuXG4gICAgdGhpcy5wcmV2ZW50UG9wb3ZlckNsb3NlID0gdHJ1ZTtcbiAgICB0aGlzLmlzUG9wb3Zlck9wZW4gPSB0cnVlO1xuICB9XG5cbiAgQGFjdGlvblxuICBvbklucHV0Qmx1cihlOiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgbGF0ZXIoXG4gICAgICB0aGlzLFxuICAgICAgKCkgPT4ge1xuICAgICAgICAvLyBTYWZhcmkgZG9lcyBub3QgcmVjb2duaXplIGFueSBmb2N1cy1yZWxhdGVkIGV2ZW50aW5nIGZvciBpbnB1dFt0eXBlPXJhbmdlXVxuICAgICAgICAvLyBtYWtpbmcgaXQgaW1wb3NzaWJsZSB0byBjYXB0dXJlIGl0cyBzdGF0ZSB1c2luZyBhY3RpdmUvZm9jdXMvcmVsYXRlZFRhcmdldFxuICAgICAgICAvLyBJbnN0ZWFkLCBhIHByZXZlbnRpb24gZmxhZyBpcyBzZXQgb24gbW91c2Vkb3duLCB3aXRoIGEgd2FpdGluZyBwZXJpb2QgaGVyZS5cbiAgICAgICAgLy8gTW91c2Vkb3duIGlzIHZpYWJsZSBiZWNhdXNlIGluIHRoZSBwb3BvdmVyIGNhc2UsIGl0IGlzIGluYWNjZXNzaWJsZSB2aWEga2V5Ym9hcmQgKGludGVudGlvbmFsbHkpXG4gICAgICAgIGlmICh0aGlzLnByZXZlbnRQb3BvdmVyQ2xvc2UpIHtcbiAgICAgICAgICB0aGlzLnByZXZlbnRQb3BvdmVyQ2xvc2UgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFyZ3Mub25CbHVyKSB7XG4gICAgICAgICAgdGhpcy5hcmdzLm9uQmx1cihlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xvc2VQb3BvdmVyKCk7XG4gICAgICB9LFxuICAgICAgMjAwXG4gICAgKTtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgY2xvc2VQb3BvdmVyKCk6IHZvaWQge1xuICAgIHRoaXMucHJldmVudFBvcG92ZXJDbG9zZSA9IGZhbHNlO1xuICAgIHRoaXMuaXNQb3BvdmVyT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgQGFjdGlvblxuICBvblJlc2l6ZSh3aWR0aD86IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucmFuZ2VXaWR0aCA9IHdpZHRoO1xuICB9XG5cbiAgZ2V0IGRpZ2l0VG9sZXJhbmNlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWF4KFN0cmluZyh0aGlzLm1pbikubGVuZ3RoLCBTdHJpbmcodGhpcy5tYXgpLmxlbmd0aCk7XG4gIH1cblxuICBnZXQgc2hvd0lucHV0T25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93SW5wdXQgPT09ICdpbnB1dFdpdGhQb3BvdmVyJztcbiAgfVxuXG4gIGdldCBjYW5TaG93RHJvcGRvd24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0lucHV0T25seSAmJiAhdGhpcy5hcmdzLnJlYWRPbmx5ICYmICF0aGlzLmFyZ3MuZGlzYWJsZWQ7XG4gIH1cblxuICA8dGVtcGxhdGU-XG4gICAge3sjbGV0XG4gICAgICAoYW5kIChhcmdPckRlZmF1bHQgQGlzUHJlcGVuZFByb3ZpZGVkIHRydWUpIChoYXMtYmxvY2sgXCJwcmVwZW5kXCIpKVxuICAgICAgKGFuZCAoYXJnT3JEZWZhdWx0IEBpc0FwcGVuZFByb3ZpZGVkIHRydWUpIChoYXMtYmxvY2sgXCJhcHBlbmRcIikpXG4gICAgICAoYW5kIChub3QgKGFyZ09yRGVmYXVsdCBAaXNGYWtlTWF4QmxvY2sgZmFsc2UpKSAoaGFzLWJsb2NrIFwibWF4XCIpKVxuICAgICAgKGFuZCAobm90IChhcmdPckRlZmF1bHQgQGlzRmFrZU1pbkJsb2NrIGZhbHNlKSkgKGhhcy1ibG9jayBcIm1pblwiKSlcbiAgICAgIGFzIHxoYXNQcmVwZW5kIGhhc0FwcGVuZCBoYXNNYXhCbG9jayBoYXNNaW5CbG9ja3xcbiAgICB9fVxuICAgICAge3sjaWYgdGhpcy5zaG93SW5wdXRPbmx5fX1cbiAgICAgICAgPEV1aUlucHV0UG9wb3ZlclxuICAgICAgICAgIGNsYXNzPVwiZXVpUmFuZ2VfX3BvcG92ZXJcIlxuICAgICAgICAgIEBmdWxsV2lkdGg9e3t0aGlzLmZ1bGxXaWR0aH19XG4gICAgICAgICAgQGlzT3Blbj17e3RoaXMuaXNQb3BvdmVyT3Blbn19XG4gICAgICAgICAgQGNsb3NlUG9wb3Zlcj17e3RoaXMuY2xvc2VQb3BvdmVyfX1cbiAgICAgICAgICBAZGlzYWJsZUZvY3VzVHJhcD17e3RydWV9fVxuICAgICAgICAgIEBvblBhbmVsUmVzaXplPXt7dGhpcy5vblJlc2l6ZX19XG4gICAgICAgID5cbiAgICAgICAgICA8OmlucHV0PlxuICAgICAgICAgICAgPEV1aUZvcm1Db250cm9sTGF5b3V0RGVsaW1pdGVkXG4gICAgICAgICAgICAgIEBmdWxsV2lkdGg9e3t0aGlzLmZ1bGxXaWR0aH19XG4gICAgICAgICAgICAgIEBjb21wcmVzc2VkPXt7dGhpcy5jb21wcmVzc2VkfX1cbiAgICAgICAgICAgICAgQHJlYWRPbmx5PXt7QHJlYWRPbmx5fX1cbiAgICAgICAgICAgICAgQGRpc2FibGVkPXt7QGRpc2FibGVkfX1cbiAgICAgICAgICAgICAgQHVzZUdyb3VwPXt7b3IgaGFzUHJlcGVuZCBoYXNBcHBlbmR9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8OnByZXBlbmQgYXMgfHByZXBlbmRDbGFzc2VzfD5cbiAgICAgICAgICAgICAgICB7e3lpZWxkIHByZXBlbmRDbGFzc2VzIHRvPVwicHJlcGVuZFwifX1cbiAgICAgICAgICAgICAgPC86cHJlcGVuZD5cbiAgICAgICAgICAgICAgPDpzdGFydENvbnRyb2wgYXMgfGNsYXNzZXN8PlxuICAgICAgICAgICAgICAgIDxFdWlSYW5nZUlucHV0XG4gICAgICAgICAgICAgICAgICBjbGFzcz17e2NsYXNzZXN9fVxuICAgICAgICAgICAgICAgICAgQGRpZ2l0VG9sZXJhbmNlPXt7dGhpcy5kaWdpdFRvbGVyYW5jZX19XG4gICAgICAgICAgICAgICAgICBAc2lkZT1cIm1pblwiXG4gICAgICAgICAgICAgICAgICBAbWluPXt7dGhpcy5taW59fVxuICAgICAgICAgICAgICAgICAge3shQGdsaW50LWV4cGVjdC1lcnJvcn19XG4gICAgICAgICAgICAgICAgICBAbWF4PXt7Y2FzdFRvIHRoaXMudXBwZXJWYWx1ZSB0bz1cIm51bWJlclwifX1cbiAgICAgICAgICAgICAgICAgIEBzdGVwPXt7dGhpcy5zdGVwfX1cbiAgICAgICAgICAgICAgICAgIEB2YWx1ZT17e3RoaXMubG93ZXJWYWx1ZX19XG4gICAgICAgICAgICAgICAgICBAZGlzYWJsZWQ9e3tAZGlzYWJsZWR9fVxuICAgICAgICAgICAgICAgICAgQGNvbXByZXNzZWQ9e3t0aGlzLmNvbXByZXNzZWR9fVxuICAgICAgICAgICAgICAgICAgQG9uQ2hhbmdlPXt7dGhpcy5oYW5kbGVMb3dlcklucHV0Q2hhbmdlfX1cbiAgICAgICAgICAgICAgICAgIEBuYW1lPVwie3tAbmFtZX19LW1pblZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIEByZWFkT25seT17e0ByZWFkT25seX19XG4gICAgICAgICAgICAgICAgICBAYXV0b1NpemU9e3tmYWxzZX19XG4gICAgICAgICAgICAgICAgICBAZnVsbFdpZHRoPXt7dGhpcy5mdWxsV2lkdGh9fVxuICAgICAgICAgICAgICAgICAgQGlzSW52YWxpZD17e0Bpc0ludmFsaWR9fVxuICAgICAgICAgICAgICAgICAgQGlzUHJlcGVuZFByb3ZpZGVkPXt7aGFzQXBwZW5kfX1cbiAgICAgICAgICAgICAgICAgIEBpc0FwcGVuZFByb3ZpZGVkPXt7aGFzUHJlcGVuZH19XG4gICAgICAgICAgICAgICAgICBAY29udHJvbE9ubHk9e3t0cnVlfX1cbiAgICAgICAgICAgICAgICAgIEBkaXNhYmxlPXt7QGRpc2FibGV9fVxuICAgICAgICAgICAgICAgICAgLi4uYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgICAge3tvbiBcIm1vdXNlZG93blwiIChmbiB0aGlzLnNldFByZXZlbnRQb3BvdmVyQ2xvc2UgdHJ1ZSl9fVxuICAgICAgICAgICAgICAgICAge3tvbktleSBcIl9hbGxcIiB0aGlzLmhhbmRsZUlucHV0S2V5RG93bn19XG4gICAgICAgICAgICAgICAgICB7e29uXG4gICAgICAgICAgICAgICAgICAgIFwiZm9jdXNcIlxuICAgICAgICAgICAgICAgICAgICAoaWZcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhblNob3dEcm9wZG93biB0aGlzLm9uSW5wdXRGb2N1cyAob3B0aW9uYWwgQG9uRm9jdXMpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICB7e29uXG4gICAgICAgICAgICAgICAgICAgIFwiYmx1clwiXG4gICAgICAgICAgICAgICAgICAgIChpZlxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FuU2hvd0Ryb3Bkb3duIHRoaXMub25JbnB1dEJsdXIgKG9wdGlvbmFsIEBvbkJsdXIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICB7e29uIFwiaW5wdXRcIiB0aGlzLmhhbmRsZUxvd2VySW5wdXRDaGFuZ2V9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDw6cHJlcGVuZCBhcyB8Y2xhc3Nlc3w-XG4gICAgICAgICAgICAgICAgICAgIHt7eWllbGQgY2xhc3NlcyB0bz1cInByZXBlbmRcIn19XG4gICAgICAgICAgICAgICAgICA8LzpwcmVwZW5kPlxuICAgICAgICAgICAgICAgICAgPDphcHBlbmQgYXMgfGNsYXNzZXN8PlxuICAgICAgICAgICAgICAgICAgICB7e3lpZWxkIGNsYXNzZXMgdG89XCJhcHBlbmRcIn19XG4gICAgICAgICAgICAgICAgICA8LzphcHBlbmQ-XG4gICAgICAgICAgICAgICAgPC9FdWlSYW5nZUlucHV0PlxuICAgICAgICAgICAgICA8LzpzdGFydENvbnRyb2w-XG4gICAgICAgICAgICAgIDw6ZW5kQ29udHJvbCBhcyB8Y2xhc3Nlc3w-XG4gICAgICAgICAgICAgICAgPEV1aVJhbmdlSW5wdXRcbiAgICAgICAgICAgICAgICAgIGNsYXNzPXt7Y2xhc3Nlc319XG4gICAgICAgICAgICAgICAgICBAZGlnaXRUb2xlcmFuY2U9e3t0aGlzLmRpZ2l0VG9sZXJhbmNlfX1cbiAgICAgICAgICAgICAgICAgIEBzaWRlPVwibWF4XCJcbiAgICAgICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICAgICAgQG1pbj17e2Nhc3RUbyB0aGlzLmxvd2VyVmFsdWUgdG89XCJudW1iZXJcIn19XG4gICAgICAgICAgICAgICAgICBAbWF4PXt7dGhpcy5tYXh9fVxuICAgICAgICAgICAgICAgICAgQHN0ZXA9e3t0aGlzLnN0ZXB9fVxuICAgICAgICAgICAgICAgICAgQHZhbHVlPXt7dGhpcy51cHBlclZhbHVlfX1cbiAgICAgICAgICAgICAgICAgIEBkaXNhYmxlZD17e0BkaXNhYmxlZH19XG4gICAgICAgICAgICAgICAgICBAY29tcHJlc3NlZD17e3RoaXMuY29tcHJlc3NlZH19XG4gICAgICAgICAgICAgICAgICBAbmFtZT1cInt7QG5hbWV9fS1tYXhWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICBAcmVhZE9ubHk9e3tAcmVhZE9ubHl9fVxuICAgICAgICAgICAgICAgICAgQGF1dG9TaXplPXt7ZmFsc2V9fVxuICAgICAgICAgICAgICAgICAgQGZ1bGxXaWR0aD17e3RoaXMuZnVsbFdpZHRofX1cbiAgICAgICAgICAgICAgICAgIEBpc0ludmFsaWQ9e3tAaXNJbnZhbGlkfX1cbiAgICAgICAgICAgICAgICAgIEBpc1ByZXBlbmRQcm92aWRlZD17e2hhc0FwcGVuZH19XG4gICAgICAgICAgICAgICAgICBAaXNBcHBlbmRQcm92aWRlZD17e2hhc1ByZXBlbmR9fVxuICAgICAgICAgICAgICAgICAgQGNvbnRyb2xPbmx5PXt7dHJ1ZX19XG4gICAgICAgICAgICAgICAgICBAZGlzYWJsZT17e0BkaXNhYmxlfX1cbiAgICAgICAgICAgICAgICAgIC4uLmF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICAgIHt7b24gXCJtb3VzZWRvd25cIiAoZm4gdGhpcy5zZXRQcmV2ZW50UG9wb3ZlckNsb3NlIHRydWUpfX1cbiAgICAgICAgICAgICAgICAgIHt7b25LZXkgXCJfYWxsXCIgdGhpcy5oYW5kbGVJbnB1dEtleURvd259fVxuICAgICAgICAgICAgICAgICAge3tvblxuICAgICAgICAgICAgICAgICAgICBcImZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgKGlmXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5TaG93RHJvcGRvd24gdGhpcy5vbklucHV0Rm9jdXMgKG9wdGlvbmFsIEBvbkZvY3VzKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAge3tvblxuICAgICAgICAgICAgICAgICAgICBcImJsdXJcIlxuICAgICAgICAgICAgICAgICAgICAoaWZcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhblNob3dEcm9wZG93biB0aGlzLm9uSW5wdXRCbHVyIChvcHRpb25hbCBAb25CbHVyKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAge3tvbiBcImlucHV0XCIgdGhpcy5oYW5kbGVVcHBlcklucHV0Q2hhbmdlfX1cbiAgICAgICAgICAgICAgICA-XG4gICAgICAgICAgICAgICAgICA8OnByZXBlbmQgYXMgfGNsYXNzZXN8PlxuICAgICAgICAgICAgICAgICAgICB7e3lpZWxkIGNsYXNzZXMgdG89XCJwcmVwZW5kXCJ9fVxuICAgICAgICAgICAgICAgICAgPC86cHJlcGVuZD5cbiAgICAgICAgICAgICAgICAgIDw6YXBwZW5kIGFzIHxjbGFzc2VzfD5cbiAgICAgICAgICAgICAgICAgICAge3t5aWVsZCBjbGFzc2VzIHRvPVwiYXBwZW5kXCJ9fVxuICAgICAgICAgICAgICAgICAgPC86YXBwZW5kPlxuICAgICAgICAgICAgICAgIDwvRXVpUmFuZ2VJbnB1dD5cbiAgICAgICAgICAgICAgPC86ZW5kQ29udHJvbD5cbiAgICAgICAgICAgICAgPDphcHBlbmQgYXMgfGFwcGVuZENsYXNzZXN8PlxuICAgICAgICAgICAgICAgIHt7eWllbGQgYXBwZW5kQ2xhc3NlcyB0bz1cImFwcGVuZFwifX1cbiAgICAgICAgICAgICAgPC86YXBwZW5kPlxuICAgICAgICAgICAgPC9FdWlGb3JtQ29udHJvbExheW91dERlbGltaXRlZD5cbiAgICAgICAgICA8LzppbnB1dD5cbiAgICAgICAgICA8OmNvbnRlbnQ-XG4gICAgICAgICAgICA8RXVpUmFuZ2VXcmFwcGVyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZXVpRHVhbFJhbmdlXCJcbiAgICAgICAgICAgICAgQGZ1bGxXaWR0aD17e3RoaXMuZnVsbFdpZHRofX1cbiAgICAgICAgICAgICAgQGNvbXByZXNzZWQ9e3t0aGlzLmNvbXByZXNzZWR9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyNpZiB0aGlzLnNob3dMYWJlbHN9fVxuICAgICAgICAgICAgICAgIDxFdWlSYW5nZUxhYmVsIEBzaWRlPVwibWluXCIgQGRpc2FibGVkPXt7QGRpc2FibGVkfX0-XG4gICAgICAgICAgICAgICAgICB7eyNpZiBoYXNNaW5CbG9ja319XG4gICAgICAgICAgICAgICAgICAgIHt7eWllbGQgdGhpcy5taW4gdG89XCJtaW5cIn19XG4gICAgICAgICAgICAgICAgICB7e2Vsc2V9fVxuICAgICAgICAgICAgICAgICAgICB7e3RoaXMubWlufX1cbiAgICAgICAgICAgICAgICAgIHt7L2lmfX1cbiAgICAgICAgICAgICAgICA8L0V1aVJhbmdlTGFiZWw-XG4gICAgICAgICAgICAgIHt7L2lmfX1cbiAgICAgICAgICAgICAgPEV1aVJhbmdlVHJhY2tcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj17e2lmIChlcSB0aGlzLnNob3dJbnB1dCB0cnVlKSBcInRydWVcIiBcImZhbHNlXCJ9fVxuICAgICAgICAgICAgICAgIEBjb21wcmVzc2VkPXt7dGhpcy5jb21wcmVzc2VkfX1cbiAgICAgICAgICAgICAgICBAZGlzYWJsZWQ9e3tAZGlzYWJsZWR9fVxuICAgICAgICAgICAgICAgIEBtYXg9e3t0aGlzLm1heH19XG4gICAgICAgICAgICAgICAgQG1pbj17e3RoaXMubWlufX1cbiAgICAgICAgICAgICAgICBAc3RlcD17e3RoaXMuc3RlcH19XG4gICAgICAgICAgICAgICAgQHNob3dUaWNrcz17e3RoaXMuc2hvd1RpY2tzfX1cbiAgICAgICAgICAgICAgICBAdGlja0ludGVydmFsPXt7QHRpY2tJbnRlcnZhbH19XG4gICAgICAgICAgICAgICAgQHRpY2tzPXt7QHRpY2tzfX1cbiAgICAgICAgICAgICAgICBAbGV2ZWxzPXt7dGhpcy5sZXZlbHN9fVxuICAgICAgICAgICAgICAgIEBvbkNoYW5nZT17e3RoaXMuaGFuZGxlU2xpZGVyQ2hhbmdlfX1cbiAgICAgICAgICAgICAgICBAdmFsdWU9e3tAdmFsdWV9fVxuICAgICAgICAgICAgICA-XG4gICAgICAgICAgICAgICAge3sjaWYgKGFuZCB0aGlzLnNob3dSYW5nZSB0aGlzLmlzVmFsaWQpfX1cbiAgICAgICAgICAgICAgICAgIDxFdWlSYW5nZUhpZ2hsaWdodFxuICAgICAgICAgICAgICAgICAgICBAY29tcHJlc3NlZD17e3RoaXMuY29tcHJlc3NlZH19XG4gICAgICAgICAgICAgICAgICAgIEBoYXNGb2N1cz17e3RoaXMuaGFzRm9jdXN9fVxuICAgICAgICAgICAgICAgICAgICBAc2hvd1RpY2tzPXt7dGhpcy5zaG93VGlja3N9fVxuICAgICAgICAgICAgICAgICAgICB7eyFAZ2xpbnQtZXhwZWN0LWVycm9yfX1cbiAgICAgICAgICAgICAgICAgICAgQG1pbj17e2Nhc3RUbyB0aGlzLm1pbiB0bz1cIm51bWJlclwifX1cbiAgICAgICAgICAgICAgICAgICAge3shQGdsaW50LWV4cGVjdC1lcnJvcn19XG4gICAgICAgICAgICAgICAgICAgIEBtYXg9e3tjYXN0VG8gdGhpcy5tYXggdG89XCJudW1iZXJcIn19XG4gICAgICAgICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICAgICAgICBAbG93ZXJWYWx1ZT17e2Nhc3RUbyB0aGlzLmxvd2VyVmFsdWUgdG89XCJudW1iZXJcIn19XG4gICAgICAgICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICAgICAgICBAdXBwZXJWYWx1ZT17e2Nhc3RUbyB0aGlzLnVwcGVyVmFsdWUgdG89XCJudW1iZXJcIn19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIHt7L2lmfX1cbiAgICAgICAgICAgICAgICA8RXVpUmFuZ2VTbGlkZXJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpRHVhbFJhbmdlX19zbGlkZXJcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIEBpZD17e3RoaXMuaWR9fVxuICAgICAgICAgICAgICAgICAgQG5hbWU9e3tAbmFtZX19XG4gICAgICAgICAgICAgICAgICBAbWluPXt7dGhpcy5taW59fVxuICAgICAgICAgICAgICAgICAgQG1heD17e3RoaXMubWF4fX1cbiAgICAgICAgICAgICAgICAgIEBzdGVwPXt7dGhpcy5zdGVwfX1cbiAgICAgICAgICAgICAgICAgIEBkaXNhYmxlZD17e0BkaXNhYmxlZH19XG4gICAgICAgICAgICAgICAgICBAY29tcHJlc3NlZD17e3RoaXMuY29tcHJlc3NlZH19XG4gICAgICAgICAgICAgICAgICBAb25DaGFuZ2U9e3t0aGlzLmhhbmRsZVNsaWRlckNoYW5nZX19XG4gICAgICAgICAgICAgICAgICBAc2hvd1RpY2tzPXt7dGhpcy5zaG93VGlja3N9fVxuICAgICAgICAgICAgICAgICAgQGhhc0ZvY3VzPXt7dGhpcy5oYXNGb2N1c319XG4gICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICAgIEBzaG93UmFuZ2U9e3t0aGlzLnNob3dSYW5nZX19XG4gICAgICAgICAgICAgICAgICAuLi5hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgICB7e2RpZEluc2VydCB0aGlzLmRpZEluc2VydFJhbmdlU2xpZGVyfX1cbiAgICAgICAgICAgICAgICAgIHt7b24gXCJtb3VzZWRvd25cIiAoZm4gdGhpcy5zZXRQcmV2ZW50UG9wb3ZlckNsb3NlIHRydWUpfX1cbiAgICAgICAgICAgICAgICAgIHt7b24gXCJmb2N1c1wiIChvcHRpb25hbCBAb25Gb2N1cyl9fVxuICAgICAgICAgICAgICAgICAge3tvbiBcImJsdXJcIiAob3B0aW9uYWwgQG9uQmx1cil9fVxuICAgICAgICAgICAgICAgICAge3tvbiBcImlucHV0XCIgdGhpcy5oYW5kbGVTbGlkZXJDaGFuZ2V9fVxuICAgICAgICAgICAgICAgIC8-XG4gICAgICAgICAgICAgICAge3sjaWYgdGhpcy5yYW5nZVNsaWRlclJlZkF2YWlsYWJsZX19XG4gICAgICAgICAgICAgICAgICA8RXVpUmFuZ2VUaHVtYlxuICAgICAgICAgICAgICAgICAgICBAbWluPXt7dGhpcy5taW59fVxuICAgICAgICAgICAgICAgICAgICB7eyFAZ2xpbnQtZXhwZWN0LWVycm9yfX1cbiAgICAgICAgICAgICAgICAgICAgQG1heD17e2Nhc3RUbyB0aGlzLnVwcGVyVmFsdWUgdG89XCJudW1iZXJcIn19XG4gICAgICAgICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICAgICAgICBAdmFsdWU9e3t0aGlzLmxvd2VyVmFsdWV9fVxuICAgICAgICAgICAgICAgICAgICBAZGlzYWJsZWQ9e3tAZGlzYWJsZWR9fVxuICAgICAgICAgICAgICAgICAgICBAc2hvd1RpY2tzPXt7dGhpcy5zaG93VGlja3N9fVxuICAgICAgICAgICAgICAgICAgICBAc2hvd0lucHV0PXt7bm90IHRoaXMuc2hvd0lucHV0fX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT17e0BhcmlhRGVzY3JpYmVkYnl9fVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt7QGFyaWFMYWJlbH19XG4gICAgICAgICAgICAgICAgICAgIHt7c2ltcGxlU3R5bGUgdGhpcy5jYWxjdWxhdGVMb3dlclZhbHVlVGh1bWJQb3NpdGlvblN0eWxlfX1cbiAgICAgICAgICAgICAgICAgICAge3tvbiBcImZvY3VzXCIgdGhpcy5vblRodW1iRm9jdXN9fVxuICAgICAgICAgICAgICAgICAgICB7e29uIFwiYmx1clwiIHRoaXMub25UaHVtYkJsdXJ9fVxuICAgICAgICAgICAgICAgICAgICB7e29uS2V5IFwiX2FsbFwiIHRoaXMuaGFuZGxlTG93ZXJLZXlEb3dufX1cbiAgICAgICAgICAgICAgICAgIC8-XG4gICAgICAgICAgICAgICAgICA8RXVpUmFuZ2VUaHVtYlxuICAgICAgICAgICAgICAgICAgICB7eyFAZ2xpbnQtZXhwZWN0LWVycm9yfX1cbiAgICAgICAgICAgICAgICAgICAgQG1pbj17e2Nhc3RUbyB0aGlzLmxvd2VyVmFsdWUgdG89XCJudW1iZXJcIn19XG4gICAgICAgICAgICAgICAgICAgIEBtYXg9e3t0aGlzLm1heH19XG4gICAgICAgICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICAgICAgICBAdmFsdWU9e3t0aGlzLnVwcGVyVmFsdWV9fVxuICAgICAgICAgICAgICAgICAgICBAZGlzYWJsZWQ9e3tAZGlzYWJsZWR9fVxuICAgICAgICAgICAgICAgICAgICBAc2hvd1RpY2tzPXt7dGhpcy5zaG93VGlja3N9fVxuICAgICAgICAgICAgICAgICAgICBAc2hvd0lucHV0PXt7bm90IHRoaXMuc2hvd0lucHV0fX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT17e0BhcmlhRGVzY3JpYmVkYnl9fVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt7QGFyaWFMYWJlbH19XG4gICAgICAgICAgICAgICAgICAgIHt7c2ltcGxlU3R5bGUgdGhpcy5jYWxjdWxhdGVVcHBlclZhbHVlVGh1bWJQb3NpdGlvblN0eWxlfX1cbiAgICAgICAgICAgICAgICAgICAge3tvbiBcImZvY3VzXCIgdGhpcy5vblRodW1iRm9jdXN9fVxuICAgICAgICAgICAgICAgICAgICB7e29uIFwiYmx1clwiIHRoaXMub25UaHVtYkJsdXJ9fVxuICAgICAgICAgICAgICAgICAgICB7e29uS2V5IFwiX2FsbFwiIHRoaXMuaGFuZGxlVXBwZXJLZXlEb3dufX1cbiAgICAgICAgICAgICAgICAgIC8-XG4gICAgICAgICAgICAgICAge3svaWZ9fVxuICAgICAgICAgICAgICA8L0V1aVJhbmdlVHJhY2s-XG4gICAgICAgICAgICAgIHt7I2lmIHRoaXMuc2hvd0xhYmVsc319XG4gICAgICAgICAgICAgICAgPEV1aVJhbmdlTGFiZWwgQGRpc2FibGVkPXt7QGRpc2FibGVkfX0-XG4gICAgICAgICAgICAgICAgICB7eyNpZiBoYXNNYXhCbG9ja319XG4gICAgICAgICAgICAgICAgICAgIHt7eWllbGQgdGhpcy5tYXggdG89XCJtYXhcIn19XG4gICAgICAgICAgICAgICAgICB7e2Vsc2V9fVxuICAgICAgICAgICAgICAgICAgICB7e3RoaXMubWF4fX1cbiAgICAgICAgICAgICAgICAgIHt7L2lmfX1cbiAgICAgICAgICAgICAgICA8L0V1aVJhbmdlTGFiZWw-XG4gICAgICAgICAgICAgIHt7L2lmfX1cbiAgICAgICAgICAgIDwvRXVpUmFuZ2VXcmFwcGVyPlxuICAgICAgICAgIDwvOmNvbnRlbnQ-XG4gICAgICAgIDwvRXVpSW5wdXRQb3BvdmVyPlxuICAgICAge3tlbHNlfX1cbiAgICAgICAgPEV1aVJhbmdlV3JhcHBlclxuICAgICAgICAgIGNsYXNzPVwiZXVpRHVhbFJhbmdlXCJcbiAgICAgICAgICBAZnVsbFdpZHRoPXt7dGhpcy5mdWxsV2lkdGh9fVxuICAgICAgICAgIEBjb21wcmVzc2VkPXt7dGhpcy5jb21wcmVzc2VkfX1cbiAgICAgICAgPlxuICAgICAgICAgIHt7I2lmIHRoaXMuc2hvd0lucHV0fX1cbiAgICAgICAgICAgIDxFdWlSYW5nZUlucHV0XG4gICAgICAgICAgICAgIEBkaWdpdFRvbGVyYW5jZT17e3RoaXMuZGlnaXRUb2xlcmFuY2V9fVxuICAgICAgICAgICAgICBAc2lkZT1cIm1pblwiXG4gICAgICAgICAgICAgIEBtaW49e3t0aGlzLm1pbn19XG4gICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICBAbWF4PXt7Y2FzdFRvIHRoaXMudXBwZXJWYWx1ZSB0bz1cIm51bWJlclwifX1cbiAgICAgICAgICAgICAgQHN0ZXA9e3t0aGlzLnN0ZXB9fVxuICAgICAgICAgICAgICBAdmFsdWU9e3t0aGlzLmxvd2VyVmFsdWV9fVxuICAgICAgICAgICAgICBAZGlzYWJsZWQ9e3tAZGlzYWJsZWR9fVxuICAgICAgICAgICAgICBAY29tcHJlc3NlZD17e3RoaXMuY29tcHJlc3NlZH19XG4gICAgICAgICAgICAgIEBvbkNoYW5nZT17e3RoaXMuaGFuZGxlTG93ZXJJbnB1dENoYW5nZX19XG4gICAgICAgICAgICAgIEBuYW1lPVwie3tAbmFtZX19LW1pblZhbHVlXCJcbiAgICAgICAgICAgICAgQHJlYWRPbmx5PXt7QHJlYWRPbmx5fX1cbiAgICAgICAgICAgICAgQGZ1bGxXaWR0aD17e3RoaXMuZnVsbFdpZHRofX1cbiAgICAgICAgICAgICAgQGlzSW52YWxpZD17e0Bpc0ludmFsaWR9fVxuICAgICAgICAgICAgICBAaXNQcmVwZW5kUHJvdmlkZWQ9e3tmYWxzZX19XG4gICAgICAgICAgICAgIEBpc0FwcGVuZFByb3ZpZGVkPXt7ZmFsc2V9fVxuICAgICAgICAgICAgICBAY29udHJvbE9ubHk9e3t0cnVlfX1cbiAgICAgICAgICAgICAgQGRpc2FibGU9e3tAZGlzYWJsZX19XG4gICAgICAgICAgICAgIC4uLmF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAge3tvbktleSBcIl9hbGxcIiB0aGlzLmhhbmRsZUlucHV0S2V5RG93bn19XG4gICAgICAgICAgICAgIHt7b24gXCJmb2N1c1wiIChvcHRpb25hbCBAb25Gb2N1cyl9fVxuICAgICAgICAgICAgICB7e29uIFwiYmx1clwiIChvcHRpb25hbCBAb25CbHVyKX19XG4gICAgICAgICAgICAgIHt7b24gXCJpbnB1dFwiIHRoaXMuaGFuZGxlTG93ZXJJbnB1dENoYW5nZX19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV1aVJhbmdlX19ob3Jpem9udGFsU3BhY2VyXCI-PC9kaXY-XG4gICAgICAgICAge3svaWZ9fVxuICAgICAgICAgIHt7I2lmIHRoaXMuc2hvd0xhYmVsc319XG4gICAgICAgICAgICA8RXVpUmFuZ2VMYWJlbCBAc2lkZT1cIm1pblwiIEBkaXNhYmxlZD17e0BkaXNhYmxlZH19PlxuICAgICAgICAgICAgICB7eyNpZiBoYXNNaW5CbG9ja319XG4gICAgICAgICAgICAgICAge3t5aWVsZCB0aGlzLm1pbiB0bz1cIm1pblwifX1cbiAgICAgICAgICAgICAge3tlbHNlfX1cbiAgICAgICAgICAgICAgICB7e3RoaXMubWlufX1cbiAgICAgICAgICAgICAge3svaWZ9fVxuICAgICAgICAgICAgPC9FdWlSYW5nZUxhYmVsPlxuICAgICAgICAgIHt7L2lmfX1cbiAgICAgICAgICA8RXVpUmFuZ2VUcmFja1xuICAgICAgICAgICAgYXJpYS1oaWRkZW49e3tpZiAoZXEgdGhpcy5zaG93SW5wdXQgdHJ1ZSkgXCJ0cnVlXCIgXCJmYWxzZVwifX1cbiAgICAgICAgICAgIEBjb21wcmVzc2VkPXt7dGhpcy5jb21wcmVzc2VkfX1cbiAgICAgICAgICAgIEBkaXNhYmxlZD17e0BkaXNhYmxlZH19XG4gICAgICAgICAgICBAbWF4PXt7dGhpcy5tYXh9fVxuICAgICAgICAgICAgQG1pbj17e3RoaXMubWlufX1cbiAgICAgICAgICAgIEBzdGVwPXt7dGhpcy5zdGVwfX1cbiAgICAgICAgICAgIEBzaG93VGlja3M9e3t0aGlzLnNob3dUaWNrc319XG4gICAgICAgICAgICBAdGlja0ludGVydmFsPXt7QHRpY2tJbnRlcnZhbH19XG4gICAgICAgICAgICBAdGlja3M9e3tAdGlja3N9fVxuICAgICAgICAgICAgQGxldmVscz17e3RoaXMubGV2ZWxzfX1cbiAgICAgICAgICAgIEBvbkNoYW5nZT17e3RoaXMuaGFuZGxlU2xpZGVyQ2hhbmdlfX1cbiAgICAgICAgICAgIEB2YWx1ZT17e0B2YWx1ZX19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sjaWYgKGFuZCB0aGlzLnNob3dSYW5nZSB0aGlzLmlzVmFsaWQpfX1cbiAgICAgICAgICAgICAgPEV1aVJhbmdlSGlnaGxpZ2h0XG4gICAgICAgICAgICAgICAgQGNvbXByZXNzZWQ9e3t0aGlzLmNvbXByZXNzZWR9fVxuICAgICAgICAgICAgICAgIEBoYXNGb2N1cz17e3RoaXMuaGFzRm9jdXN9fVxuICAgICAgICAgICAgICAgIEBzaG93VGlja3M9e3t0aGlzLnNob3dUaWNrc319XG4gICAgICAgICAgICAgICAge3shQGdsaW50LWV4cGVjdC1lcnJvcn19XG4gICAgICAgICAgICAgICAgQG1pbj17e2Nhc3RUbyB0aGlzLm1pbiB0bz1cIm51bWJlclwifX1cbiAgICAgICAgICAgICAgICB7eyFAZ2xpbnQtZXhwZWN0LWVycm9yfX1cbiAgICAgICAgICAgICAgICBAbWF4PXt7Y2FzdFRvIHRoaXMubWF4IHRvPVwibnVtYmVyXCJ9fVxuICAgICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICAgIEBsb3dlclZhbHVlPXt7Y2FzdFRvIHRoaXMubG93ZXJWYWx1ZSB0bz1cIm51bWJlclwifX1cbiAgICAgICAgICAgICAgICB7eyFAZ2xpbnQtZXhwZWN0LWVycm9yfX1cbiAgICAgICAgICAgICAgICBAdXBwZXJWYWx1ZT17e2Nhc3RUbyB0aGlzLnVwcGVyVmFsdWUgdG89XCJudW1iZXJcIn19XG4gICAgICAgICAgICAgIC8-XG4gICAgICAgICAgICB7ey9pZn19XG4gICAgICAgICAgICA8RXVpUmFuZ2VTbGlkZXJcbiAgICAgICAgICAgICAgY2xhc3M9XCJldWlEdWFsUmFuZ2VfX3NsaWRlclwiXG4gICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIEBpZD17e3RoaXMuaWR9fVxuICAgICAgICAgICAgICBAbmFtZT17e0BuYW1lfX1cbiAgICAgICAgICAgICAgQG1pbj17e3RoaXMubWlufX1cbiAgICAgICAgICAgICAgQG1heD17e3RoaXMubWF4fX1cbiAgICAgICAgICAgICAgQHN0ZXA9e3t0aGlzLnN0ZXB9fVxuICAgICAgICAgICAgICBAZGlzYWJsZWQ9e3tAZGlzYWJsZWR9fVxuICAgICAgICAgICAgICBAY29tcHJlc3NlZD17e3RoaXMuY29tcHJlc3NlZH19XG4gICAgICAgICAgICAgIEBvbkNoYW5nZT17e3RoaXMuaGFuZGxlU2xpZGVyQ2hhbmdlfX1cbiAgICAgICAgICAgICAgQHNob3dUaWNrcz17e3RoaXMuc2hvd1RpY2tzfX1cbiAgICAgICAgICAgICAgQGhhc0ZvY3VzPXt7dGhpcy5oYXNGb2N1c319XG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICBAc2hvd1JhbmdlPXt7dGhpcy5zaG93UmFuZ2V9fVxuICAgICAgICAgICAgICAuLi5hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgIHt7ZGlkSW5zZXJ0IHRoaXMuZGlkSW5zZXJ0UmFuZ2VTbGlkZXJ9fVxuICAgICAgICAgICAgICB7e29uIFwibW91c2Vkb3duXCIgKGZuIHRoaXMuc2V0UHJldmVudFBvcG92ZXJDbG9zZSB0cnVlKX19XG4gICAgICAgICAgICAgIHt7b24gXCJmb2N1c1wiIChvcHRpb25hbCBAb25Gb2N1cyl9fVxuICAgICAgICAgICAgICB7e29uIFwiYmx1clwiIChvcHRpb25hbCBAb25CbHVyKX19XG4gICAgICAgICAgICAgIHt7b24gXCJpbnB1dFwiIHRoaXMuaGFuZGxlU2xpZGVyQ2hhbmdlfX1cbiAgICAgICAgICAgIC8-XG4gICAgICAgICAgICB7eyNpZiB0aGlzLnJhbmdlU2xpZGVyUmVmQXZhaWxhYmxlfX1cbiAgICAgICAgICAgICAgPEV1aVJhbmdlVGh1bWJcbiAgICAgICAgICAgICAgICBAbWluPXt7dGhpcy5taW59fVxuICAgICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICAgIEBtYXg9e3tjYXN0VG8gdGhpcy51cHBlclZhbHVlIHRvPVwibnVtYmVyXCJ9fVxuICAgICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICAgIEB2YWx1ZT17e3RoaXMubG93ZXJWYWx1ZX19XG4gICAgICAgICAgICAgICAgQGRpc2FibGVkPXt7QGRpc2FibGVkfX1cbiAgICAgICAgICAgICAgICBAc2hvd1RpY2tzPXt7dGhpcy5zaG93VGlja3N9fVxuICAgICAgICAgICAgICAgIEBzaG93SW5wdXQ9e3tub3QgdGhpcy5zaG93SW5wdXR9fVxuICAgICAgICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e3tAYXJpYURlc2NyaWJlZGJ5fX1cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt7QGFyaWFMYWJlbH19XG4gICAgICAgICAgICAgICAge3tzaW1wbGVTdHlsZSB0aGlzLmNhbGN1bGF0ZUxvd2VyVmFsdWVUaHVtYlBvc2l0aW9uU3R5bGV9fVxuICAgICAgICAgICAgICAgIHt7b24gXCJmb2N1c1wiIHRoaXMub25UaHVtYkZvY3VzfX1cbiAgICAgICAgICAgICAgICB7e29uIFwiYmx1clwiIHRoaXMub25UaHVtYkJsdXJ9fVxuICAgICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICAgIHt7b24gXCJjbGlja1wiIHRoaXMuaGFuZGxlTG93ZXJLZXlEb3dufX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV1aVJhbmdlVGh1bWJcbiAgICAgICAgICAgICAgICB7eyFAZ2xpbnQtZXhwZWN0LWVycm9yfX1cbiAgICAgICAgICAgICAgICBAbWluPXt7Y2FzdFRvIHRoaXMubG93ZXJWYWx1ZSB0bz1cIm51bWJlclwifX1cbiAgICAgICAgICAgICAgICBAbWF4PXt7dGhpcy5tYXh9fVxuICAgICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICAgIEB2YWx1ZT17e3RoaXMudXBwZXJWYWx1ZX19XG4gICAgICAgICAgICAgICAgQGRpc2FibGVkPXt7QGRpc2FibGVkfX1cbiAgICAgICAgICAgICAgICBAc2hvd1RpY2tzPXt7dGhpcy5zaG93VGlja3N9fVxuICAgICAgICAgICAgICAgIEBzaG93SW5wdXQ9e3tub3QgdGhpcy5zaG93SW5wdXR9fVxuICAgICAgICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e3tAYXJpYURlc2NyaWJlZGJ5fX1cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt7QGFyaWFMYWJlbH19XG4gICAgICAgICAgICAgICAge3tzaW1wbGVTdHlsZSB0aGlzLmNhbGN1bGF0ZVVwcGVyVmFsdWVUaHVtYlBvc2l0aW9uU3R5bGV9fVxuICAgICAgICAgICAgICAgIHt7b24gXCJmb2N1c1wiIHRoaXMub25UaHVtYkZvY3VzfX1cbiAgICAgICAgICAgICAgICB7e29uIFwiYmx1clwiIHRoaXMub25UaHVtYkJsdXJ9fVxuICAgICAgICAgICAgICAgIHt7b24gXCJrZXlkb3duXCIgdGhpcy5oYW5kbGVVcHBlcktleURvd259fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAge3svaWZ9fVxuICAgICAgICAgIDwvRXVpUmFuZ2VUcmFjaz5cbiAgICAgICAgICB7eyNpZiB0aGlzLnNob3dMYWJlbHN9fVxuICAgICAgICAgICAgPEV1aVJhbmdlTGFiZWwgQGRpc2FibGVkPXt7QGRpc2FibGVkfX0-XG4gICAgICAgICAgICAgIHt7I2lmIGhhc01heEJsb2NrfX1cbiAgICAgICAgICAgICAgICB7e3lpZWxkIHRoaXMubWF4IHRvPVwibWF4XCJ9fVxuICAgICAgICAgICAgICB7e2Vsc2V9fVxuICAgICAgICAgICAgICAgIHt7dGhpcy5tYXh9fVxuICAgICAgICAgICAgICB7ey9pZn19XG4gICAgICAgICAgICA8L0V1aVJhbmdlTGFiZWw-XG4gICAgICAgICAge3svaWZ9fVxuICAgICAgICAgIHt7I2lmIHRoaXMuc2hvd0lucHV0fX1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldWlSYW5nZV9faG9yaXpvbnRhbFNwYWNlclwiPjwvZGl2PlxuICAgICAgICAgICAge3shIG1heGlucHV0IH19XG4gICAgICAgICAgICA8RXVpUmFuZ2VJbnB1dFxuICAgICAgICAgICAgICBAZGlnaXRUb2xlcmFuY2U9e3t0aGlzLmRpZ2l0VG9sZXJhbmNlfX1cbiAgICAgICAgICAgICAgQHNpZGU9XCJtYXhcIlxuICAgICAgICAgICAgICB7eyFAZ2xpbnQtZXhwZWN0LWVycm9yfX1cbiAgICAgICAgICAgICAgQG1pbj17e2Nhc3RUbyB0aGlzLmxvd2VyVmFsdWUgdG89XCJudW1iZXJcIn19XG4gICAgICAgICAgICAgIEBtYXg9e3t0aGlzLm1heH19XG4gICAgICAgICAgICAgIEBzdGVwPXt7dGhpcy5zdGVwfX1cbiAgICAgICAgICAgICAgQHZhbHVlPXt7dGhpcy51cHBlclZhbHVlfX1cbiAgICAgICAgICAgICAgQGRpc2FibGVkPXt7QGRpc2FibGVkfX1cbiAgICAgICAgICAgICAgQGNvbXByZXNzZWQ9e3t0aGlzLmNvbXByZXNzZWR9fVxuICAgICAgICAgICAgICBAbmFtZT1cInt7QG5hbWV9fS1tYXhWYWx1ZVwiXG4gICAgICAgICAgICAgIEByZWFkT25seT17e0ByZWFkT25seX19XG4gICAgICAgICAgICAgIEBmdWxsV2lkdGg9e3t0aGlzLmZ1bGxXaWR0aH19XG4gICAgICAgICAgICAgIEBpc0ludmFsaWQ9e3tAaXNJbnZhbGlkfX1cbiAgICAgICAgICAgICAgQGNvbnRyb2xPbmx5PXt7dGhpcy5zaG93SW5wdXRPbmx5fX1cbiAgICAgICAgICAgICAgQGlzUHJlcGVuZFByb3ZpZGVkPXt7ZmFsc2V9fVxuICAgICAgICAgICAgICBAaXNBcHBlbmRQcm92aWRlZD17e2ZhbHNlfX1cbiAgICAgICAgICAgICAgQGRpc2FibGU9e3tAZGlzYWJsZX19XG4gICAgICAgICAgICAgIC4uLmF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAge3tvbktleSBcIl9hbGxcIiB0aGlzLmhhbmRsZUlucHV0S2V5RG93bn19XG4gICAgICAgICAgICAgIHt7b24gXCJmb2N1c1wiIChvcHRpb25hbCBAb25Gb2N1cyl9fVxuICAgICAgICAgICAgICB7e29uIFwiYmx1clwiIChvcHRpb25hbCBAb25CbHVyKX19XG4gICAgICAgICAgICAgIHt7b24gXCJpbnB1dFwiIHRoaXMuaGFuZGxlVXBwZXJJbnB1dENoYW5nZX19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIHt7L2lmfX1cbiAgICAgICAgPC9FdWlSYW5nZVdyYXBwZXI-XG4gICAgICB7ey9pZn19XG4gICAge3svbGV0fX1cbiAgPC90ZW1wbGF0ZT5cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxlQUFlLHFCQUFxQjtBQUMzQyxTQUFTLE9BQU8sUUFBUSxvQkFBb0I7QUFDNUMsU0FBUyxFQUFFLFFBQVEsZ0JBQWdCO0FBQ25DLFNBQVMsRUFBRSxRQUFRLGtCQUFrQjtBQUNyQyxTQUFTLE1BQU0sUUFBUSxnQkFBZ0I7QUFDdkMsU0FBUyxPQUFPLFFBQVEsMEJBQTBCO0FBQ2xELE9BQU8sZUFBZSwrQ0FBK0M7QUFDckUsU0FBUyxLQUFLLFFBQVEsaUJBQWlCO0FBRXZDLE9BQU8sY0FBYyw0Q0FBNEM7QUFDakUsT0FBTyxXQUFXLGtDQUFrQztBQUNwRCxTQUFTLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsUUFBUSxzQkFBc0I7QUFFdkQsT0FBTyxnQkFBZ0IscUJBQXFCLFFBQVEsK0JBQStCO0FBQ25GLE9BQU8sWUFBWSx3QkFBd0I7QUFDM0MsT0FBTyxpQkFBaUIsK0JBQStCO0FBQ3ZELFNBQVMsSUFBSSxRQUFRLG1CQUFtQjtBQUN4QyxTQUFTLGFBQWEsUUFBUSwyQkFBMkI7QUFDekQsU0FBUyxjQUFjLFFBQVEsMEJBQTBCO0FBQ3pELE9BQU8sbUNBQW1DLDBDQUEwQztBQUNwRixPQUFPLHFCQUFxQiwwQkFBMEI7QUFDdEQsT0FBTyx1QkFBdUIsNEJBQTRCO0FBQzFELE9BQU8sbUJBQW1CLHdCQUF3QjtBQUNsRCxPQUFPLG1CQUFtQix3QkFBd0I7QUFDbEQsT0FBTyxvQkFBb0IseUJBQXlCO0FBQ3BELE9BQU8sbUJBQW1CLHdCQUF3QjtBQUNsRCxPQUFPLG1CQUFtQix3QkFBd0I7QUFDbEQsT0FBTyxxQkFBcUIsMEJBQTBCO0FBRXRELGNBQWMsNkJBQTZCLFFBQVEsNEJBQTRCO0FBQy9FLGNBQWMsWUFBWSxRQUFRLGNBQWM7QUFDaEQsY0FDRSxpQkFBaUIsRUFDakIsc0JBQXNCLFFBQ2pCLG9CQUFvQjtBQUMzQixjQUFjLGFB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"],"names":["EuiDualRangeComponent","Component","g","this","prototype","argOrDefaultDecorator","i","void 0","tracked","args","id","guidFor","preventPopoverClose","rangeSliderRef","didInsertRangeSlider","ref1","rangeSliderRefAvailable","rangeWidth","clientWidth","undefined","isVisible","n","action","lowerValue","value","min","upperValue","max","lowerValueIsValid","isWithinRange","upperValueIsValid","isValid","_determineInvalidThumbMovement","newVal1","lower1","upper1","e1","lowerHalf1","Math","abs","newValIsLow1","_handleOnChange","_determineValidThumbMovement","_determineThumbMovement","isValid1","onChange","handleSliderChange","Number","currentTarget","_resetToRangeEnds","_isDirectionalKeyPress","event1","keys","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","ARROW_LEFT","indexOf","key","handleInputKeyDown","preventDefault","handleLowerInputChange","target","handleUpperInputChange","_handleKeyDown","value1","stepRemainder1","step1","step","handleLowerKeyDown","TAB","handleUpperKeyDown","calculateThumbPositionStyle","width1","decimal1","valuePosition1","trackWidth1","showInput","thumbToTrackRatio1","EUI_THUMB_SIZE","trackPositionScale1","left","setPreventPopoverClose","calculateLowerValueThumbPositionStyle","calculateUpperValueThumbPositionStyle","toggleHasFocus","hasFocus","onThumbFocus","onFocus","onThumbBlur","onBlur","onInputFocus","isPopoverOpen","onInputBlur","later","closePopover","onResize","digitTolerance","String","length","showInputOnly","canShowDropdown","readOnly","disabled","setComponentTemplate","precompileTemplate","scope","and","argOrDefault","not","EuiInputPopover","EuiFormControlLayoutDelimited","or","EuiRangeInput","castTo","on","fn","onKey","optional","EuiRangeWrapper","EuiRangeLabel","EuiRangeTrack","eq","EuiRangeHighlight","EuiRangeSlider","didInsert","EuiRangeThumb","simpleStyle","strictMode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0Ie,MAAMA,qBAAA,SAA8BC,SAAA,CAAU;AAAA,EAAA;AAAAC,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,EAAA,KAAA,EAAA,CAE1DC,qBAAA,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,IAAA,IAAAC,CAAA,CAAAH,IAAA,EAAA,KAAA,CAAA,EAAAI,MAAA,EADvB;AAAA,EAAA;AAAAL,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,EAAA,KAAA,EAAA,CAECC,qBAAA,CAAsB,GAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,IAAA,IAAAC,CAAA,CAAAH,IAAA,UAAAI,KAAA,CAAA,EAAA;AAAA,EAAA;AAAAL,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,EAAA,MAAA,EAAA,CACtBC,qBAAA,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,KAAA,IAAAC,CAAA,CAAAH,IAAA,WAAAI,KAAA,CAAA,EAAA;AAAA,EAAA;AAAAL,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CACtBC,qBAAA,CAAsB,KAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAAH,IAAA,gBAAAI,KAAA,CAAA,EAAA;AAAA,EAAA;AAAAL,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,EAAA,YAAA,EAAA,CACtBC,qBAAA,CAAsB,KAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,WAAA,IAAAC,CAAA,CAAAH,IAAA,iBAAAI,KAAA,CAAA,EAAA;AAAA,EAAA;AAAAL,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,EAAA,YAAA,EAAA,CACtBC,qBAAA,CAAsB,KAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,WAAA,IAAAC,CAAA,CAAAH,IAAA,iBAAAI,KAAA,CAAA,EAAA;AAAA,EAAA;AAAAL,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CACtBC,qBAAA,CAAsB,KAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAAH,IAAA,gBAAAI,KAAA,CAAA,EAAA;AAAA,EAAA;AAAAL,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CACtBC,qBAAA,CAAsB,IAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAAH,IAAA,gBAAAI,KAAA,CAAA,EAAA;AAAA,EAAA;AAAAL,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CACtBC,qBAAA,CAAsB,KAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,UAAA,IAAAC,CAAA,CAAAH,IAAA,gBAAAI,KAAA,CAAA,EAAA;AAAA,EAAA;AAAAL,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,EACtBC,QAAAA,EAAAA,CAAAA,qBAAA,CAAsB,EAAE,CAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,OAAA,IAAAC,CAAA,CAAAH,IAAA,aAAAI,KAAA,CAAA,EAAA;AAAA,EAAA;AAAAL,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,SAGxBI,OAAA,CAAA,EAAA,YAAA;MAAA,OAAqB,IAAI,CAACC,IAAI,CAACC,EAAE,IAAIC,OAAA,CAAQ,EAAC,CAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,GAAA,IAAAL,CAAA,CAAAH,IAAA,EAAA,IAAA,CAAA,EAAAI,MAAA,EAD/C;AAAA,EAAA;AAAAL,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,eAECI,OAAA,CAAA,EAAA,YAAA;MAAA,OAAmB,KAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,SAAA,IAAAF,CAAA,CAAAH,IAAA,eAAAI,KAAA,CAAA,EAAA;AAAA,EAAA;AAAAL,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,8BACnBI,OAAA,CAAA,EAAA,YAAA;MAAA,OAAkC,KAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,wBAAA,IAAAF,CAAA,CAAAH,IAAA,8BAAAI,KAAA,CAAA,EAAA;AAAA,EAAA;AAAAL,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,oBAClCI,OAAA,CAAA,EAAA,YAAA;MAAA,OAAwB,KAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,cAAA,IAAAF,CAAA,CAAAH,IAAA,oBAAAI,KAAA,CAAA,EAAA;AAAA,EAAA;AAAAL,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,iBACxBI,OAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,WAAA,IAAAF,CAAA,CAAAH,IAAA,iBAAAI,KAAA,CAAA,EAAA;AAAA,EAAA;AAAAL,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,gBACAI,OAAA,CAAA,EAAA,YAAA;MAAA,OAAoB,IAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,UAAA,IAAAF,CAAA,CAAAH,IAAA,gBAAAI,KAAA,CAAA,EAAA;AACrB;AAEAK,EAAAA,mBAAA,GAAsB,KAAA,CAAA;AACtBC,EAAAA,cAAA,GAA0C,IAAA,CAAA;AAG1CC,EAAAA,oBAAAA,CAAqBC,IAA4B,EAAQ;IACvD,IAAI,CAACF,cAAc,GAAGE,IAAA,CAAA;AAEtB,IAAA,IAAI,CAACC,uBAAuB,GAAG,CAAC,CAACD,IAAA,CAAA;IACjC,IAAI,CAACE,UAAU,GAAGF,IAAA,GAAMA,IAAA,CAAIG,WAAW,GAAGC,SAAA,CAAA;IAE1C,IAAI,IAAI,CAACN,cAAc,EAAEK,WAAA,IAAe,CAAC,IAAI,CAACE,SAAS,EAAE;MACvD,IAAI,CAACA,SAAS,GAAG,IAAA,CAAA;AACnB,KAAA;AACF,GAAA;AAAA,EAAA;AAAAC,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,2BAVCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAYD,EAAA,IAAIC,aAA0B;AAC5B,IAAA,OAAO,IAAI,CAACd,IAAI,CAACe,KAAK,GAAG,IAAI,CAACf,IAAI,CAACe,KAAK,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,GAAG,CAAA;AACxD,GAAA;AAEA,EAAA,IAAIC,aAA0B;AAC5B,IAAA,OAAO,IAAI,CAACjB,IAAI,CAACe,KAAK,GAAG,IAAI,CAACf,IAAI,CAACe,KAAK,CAAC,CAAA,CAAE,GAAG,IAAI,CAACG,GAAG,CAAA;AACxD,GAAA;AAEA,EAAA,IAAIC,oBAA6B;AAC/B,IAAA,OAAOC,aAAA,CAAc,IAAI,CAACJ,GAAG,EAAE,IAAI,CAACC,UAAU,EAAE,IAAI,CAACH,UAAU,CAAA,CAAA;AACjE,GAAA;AAEA,EAAA,IAAIO,oBAA6B;AAC/B,IAAA,OAAOD,aAAA,CAAc,IAAI,CAACN,UAAU,EAAE,IAAI,CAACI,GAAG,EAAE,IAAI,CAACD,UAAU,CAAA,CAAA;AACjE,GAAA;AAEA,EAAA,IAAIK,UAAmB;AACrB,IAAA,OAAO,IAAI,CAACH,iBAAiB,IAAI,IAAI,CAACE,iBAAiB,CAAA;AACzD,GAAA;AAGAE,EAAAA,8BAAAA,CACEC,OAAmB,EACnBC,MAAkB,EAClBC,MAAkB,EAClBC,EAAQ,EACF;AACN;AACA;AACA;AACA,IAAA,MAAMC,UAAA,GAAYC,IAAA,CAAKC,GAAG,CAAC,IAAI,CAACZ,GAAG,GAAG,IAAI,CAACF,GAAG,IAAI,CAAI,GAAA,IAAI,CAACA,GAAG,CAAA;IAC9D,MAAMe,YAAA,GAAcX,aAAA,CAAc,IAAI,CAACJ,GAAG,EAAEY,UAAA,EAAWJ,OAAA,CAAA,CAAA;AAEvD,IAAA,IAAIO,YAAA,EAAa;AACfN,MAAAA,MAAA,GAAQD,OAAA,CAAA;MACRE,MAAA,GAAQ,CAAC,IAAI,CAACL,iBAAiB,GAAG,IAAI,CAACH,GAAG,GAAGQ,MAAA,CAAA;KACxC,MAAA;MACLD,MAAA,GAAQ,CAAC,IAAI,CAACN,iBAAiB,GAAG,IAAI,CAACH,GAAG,GAAGS,MAAA,CAAA;AAC7CC,MAAAA,MAAA,GAAQF,OAAA,CAAA;AACV,KAAA;AAEA,IAAA,IAAI,CAACQ,eAAe,CAACP,MAAA,EAAOC,MAAA,EAAOC,EAAA,CAAA,CAAA;AACrC,GAAA;AAAA,EAAA;AAAAf,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,qCAtBCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAyBDoB,EAAAA,4BAAAA,CACET,OAAmB,EACnBC,MAAkB,EAClBC,MAAkB,EAClBC,EAAQ,EACF;AACN;AACA,IAAA,IACEE,IAAA,CAAKC,GAAG,CAAEL,MAAA,GAAoBD,OAAgB,CAC9CK,GAAAA,IAAA,CAAKC,GAAG,CAAEJ,MAAA,GAAoBF,OAAgB,CAC9C,EAAA;AACAC,MAAAA,MAAA,GAAQD,OAAA,CAAA;KAGL,MAAA;AACHE,MAAAA,MAAA,GAAQF,OAAA,CAAA;AACV,KAAA;AAEA,IAAA,IAAI,CAACQ,eAAe,CAACP,MAAA,EAAOC,MAAA,EAAOC,EAAA,CAAA,CAAA;AACrC,GAAA;AAAA,EAAA;AAAAf,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,mCApBCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;EAuBDqB,uBAAwBV,CAAAA,OAAc,EAAEG,EAAQ,EAAQ;AACtD;AACA,IAAA,IAAI,CAAC,IAAI,CAACL,OAAO,EAAE;AACjB;AACA,MAAA,IAAI,CAACC,8BAA8B,CACjCC,OAAA,EACA,IAAI,CAACV,UAAU,EACf,IAAI,CAACG,UAAU,EACfU,EAAA,CAAA,CAAA;KAEG,MAAA;AACL;AACA,MAAA,IAAI,CAACM,4BAA4B,CAC/BT,OAAA,EACA,IAAI,CAACV,UAAU,EACf,IAAI,CAACG,UAAU,EACfU,EAAA,CAAA,CAAA;AAEJ,KAAA;AACF,GAAA;AAAA,EAAA;AAAAf,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,8BApBCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAuBDmB,EAAAA,eAAAA,CAAgBP,MAAkB,EAAEC,MAAkB,EAAEC,EAAQ,EAAQ;IACtE,MAAMQ,QAAA,GACJf,aAAA,CAAc,IAAI,CAACJ,GAAG,EAAEU,MAAA,EAAOD,MAAA,CAC/BL,IAAAA,aAAA,CAAcK,MAAA,EAAO,IAAI,CAACP,GAAG,EAAEQ,MAAA,CAAA,CAAA;AAEjC,IAAA,IAAI,CAAC1B,IAAI,CAACoC,QAAQ,CAAC,CAACX,MAAA,EAAOC,MAAA,CAAM,EAAES,QAAA,EAASR,EAAA,CAAA,CAAA;AAC9C,GAAA;AAAA,EAAA;AAAAf,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,sBAPCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAUDwB,EAAAA,kBAAAA,CAAmBV,EAAQ,EAAQ;IACjC,IAAI,CAACO,uBAAuB,CAC1BI,MAAA,CAAQX,EAAA,CAAEY,aAAa,CAAsBxB,KAAK,CAAA,EAClDY,EAAA,CAAA,CAAA;AAEJ,GAAA;AAAA,EAAA;AAAAf,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,yBANCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AASD2B,EAAAA,iBAAAA,CAAkBb,EAAgB,EAAQ;AACxC;AACA,IAAA,IAAI,CAACJ,8BAA8B,CACjC,IAAI,CAACP,GAAG,EACR,IAAI,CAACF,UAAU,EACf,IAAI,CAACG,UAAU,EACfU,EAAA,CAAA,CAAA;AAEJ,GAAA;AAAA,EAAA;AAAAf,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,wBATCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAYD4B,EAAAA,sBAAAA,CAAuBC,MAAoB,EAAW;IACpD,OACE,CACEC,IAAA,CAAKC,QAAQ,EACbD,IAAA,CAAKE,WAAW,EAChBF,IAAA,CAAKG,UAAU,EACfH,IAAA,CAAKI,UAAU,CAChB,CAACC,OAAO,CAACN,MAAA,CAAMO,GAAO,CAAQ,GAAA,CAAC,CAClC,CAAA;AACF,GAAA;AAAA,EAAA;AAAArC,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,6BAVCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAaDqC,EAAAA,kBAAAA,CAAmBvB,EAAgB,EAAQ;AACzC;IACA,IAAI,IAAI,CAACc,sBAAsB,CAACd,EAAA,KAAM,CAAC,IAAI,CAACL,OAAO,EAAE;AACnDK,MAAAA,EAAA,CAAEwB,cAAc,EAAA,CAAA;MAChB,IAAI,CAACX,iBAAiB,CAACb,EAAA,CAAA,CAAA;AACzB,KAAA;AACF,GAAA;AAAA,EAAA;AAAAf,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,yBAPCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAUDuC,EAAAA,sBAAAA,CAAuBzB,EAAQ,EAAQ;AACrC,IAAA,IAAI,CAACK,eAAe,CACjBL,EAAA,CAAE0B,MAAM,CAAsBtC,KAAK,EACpC,IAAI,CAACE,UAAU,EACfU,EAAA,CAAA,CAAA;AAEJ,GAAA;AAAA,EAAA;AAAAf,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,6BAPCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAUDyC,EAAAA,sBAAAA,CAAuB3B,EAAQ,EAAQ;AACrC,IAAA,IAAI,CAACK,eAAe,CAClB,IAAI,CAAClB,UAAU,EACda,EAAA,CAAE0B,MAAM,CAAsBtC,KAAK,EACpCY,EAAA,CAAA,CAAA;AAEJ,GAAA;AAAA,EAAA;AAAAf,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,6BAPCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;EAUD0C,cAAeC,CAAAA,MAAkB,EAAEd,MAAoB,EAAU;AAC/D,IAAA,IAAIlB,OAAA,GAASc,MAAA,CAAOkB,MAAA,CAAA,CAAA;AACpB,IAAA,IAAIC,cAAA,GAAgB,CAAA,CAAA;AACpB,IAAA,MAAMC,KAAA,GAAO,IAAI,CAAC1D,IAAI,CAAC2D,IAAI,IAAI,CAAA,CAAA;IAE/B,QAAQjB,MAAA,CAAMO,GAAG;MACf,KAAKN,IAAA,CAAKC,QAAQ,CAAA;MAClB,KAAKD,IAAA,CAAKE,WAAW;AACnBH,QAAAA,MAAA,CAAMS,cAAc,EAAA,CAAA;AACpB3B,QAAAA,OAAA,IAAUkC,KAAA,CAAA;QACVD,cAAA,GAAgB,CAACjC,OAAA,GAAS,IAAI,CAACR,GAAG,IAAI0C,KAAA,CAAA;AAEtC,QAAA,IAAIA,KAAA,KAAS,CAAKD,IAAAA,cAAA,GAAgB,CAAG,EAAA;UACnCjC,OAAA,GAASA,OAAA,GAASiC,cAAA,CAAA;AACpB,SAAA;AAEA,QAAA,MAAA;MACF,KAAKd,IAAA,CAAKG,UAAU,CAAA;MACpB,KAAKH,IAAA,CAAKI,UAAU;AAClBL,QAAAA,MAAA,CAAMS,cAAc,EAAA,CAAA;AACpB3B,QAAAA,OAAA,IAAUkC,KAAA,CAAA;QACVD,cAAA,GAAgB,CAACjC,OAAA,GAAS,IAAI,CAACR,GAAG,IAAI0C,KAAA,CAAA;AAEtC,QAAA,IAAIA,KAAA,KAAS,CAAKD,IAAAA,cAAA,GAAgB,CAAG,EAAA;AACnCjC,UAAAA,OAAA,GAASA,OAAA,IAAUkC,KAAA,GAAOD,cAAa,CAAA,CAAA;AACzC,SAAA;AAEA,QAAA,MAAA;AACJ,KAAA;AAEA,IAAA,OAAOjC,OAAA,CAAA;AACT,GAAA;AAAA,EAAA;AAAAZ,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,qBAhCCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAmCD+C,EAAAA,kBAAAA,CAAmBlB,MAAoB,EAAQ;AAC7C,IAAA,IAAIjB,MAAA,GAAQ,IAAI,CAACX,UAAU,CAAA;IAE3B,QAAQ4B,MAAA,CAAMO,GAAG;MACf,KAAKN,IAAA,CAAKkB,GAAG;AACX,QAAA,OAAA;AACF,MAAA;AACE,QAAA,IAAI,CAAC,IAAI,CAAC1C,iBAAiB,EAAE;AAC3B;AACAuB,UAAAA,MAAA,CAAMS,cAAc,EAAA,CAAA;UACpB,IAAI,CAACX,iBAAiB,CAACE,MAAA,CAAA,CAAA;AAEvB,UAAA,OAAA;AACF,SAAA;AAEAjB,QAAAA,MAAA,GAAQ,IAAI,CAAC8B,cAAc,CAAC9B,MAAA,EAAOiB,MAAA,CAAA,CAAA;AACvC,KAAA;IAEA,IAAIjB,MAAA,IAAU,IAAI,CAACR,UAAoB,IAAKQ,MAAA,GAAQ,IAAI,CAACT,GAAG,EAAE,OAAA;IAC9D,IAAI,CAACgB,eAAe,CAACP,MAAA,EAAO,IAAI,CAACR,UAAU,EAAEyB,MAAA,CAAA,CAAA;AAC/C,GAAA;AAAA,EAAA;AAAA9B,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,yBArBCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAwBDiD,EAAAA,kBAAAA,CAAmBpB,MAAoB,EAAQ;AAC7C,IAAA,IAAIhB,MAAA,GAAQ,IAAI,CAACT,UAAU,CAAA;IAE3B,QAAQyB,MAAA,CAAMO,GAAG;MACf,KAAKN,IAAA,CAAKkB,GAAG;AACX,QAAA,OAAA;AACF,MAAA;AACE,QAAA,IAAI,CAAC,IAAI,CAACxC,iBAAiB,EAAE;AAC3B;AACAqB,UAAAA,MAAA,CAAMS,cAAc,EAAA,CAAA;UACpB,IAAI,CAACX,iBAAiB,CAACE,MAAA,CAAA,CAAA;AAEvB,UAAA,OAAA;AACF,SAAA;AAEAhB,QAAAA,MAAA,GAAQ,IAAI,CAAC6B,cAAc,CAAC7B,MAAA,EAAOgB,MAAA,CAAA,CAAA;AACvC,KAAA;IAEA,IAAIhB,MAAA,IAAU,IAAI,CAACZ,UAAoB,IAAKY,MAAA,GAAQ,IAAI,CAACR,GAAG,EAAE,OAAA;IAC9D,IAAI,CAACc,eAAe,CAAC,IAAI,CAAClB,UAAU,EAAEY,MAAA,EAAOgB,MAAA,CAAA,CAAA;AAC/C,GAAA;AAAA,EAAA;AAAA9B,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,yBArBCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;EAwBDkD,2BAA4BP,CAAAA,MAAa,EAAEQ,MAAc,EAAoB;AAC3E;AACA,IAAA,MAAMC,QAAA,GAAU,CAACT,MAAA,GAAQ,IAAI,CAACxC,GAAG,KAAK,IAAI,CAACE,GAAG,GAAG,IAAI,CAACF,GAAG,CAAA,CAAA;AACzD;AACA,IAAA,IAAIkD,cAAA,GAAgBD,QAAA,IAAW,CAAA,GAAIA,QAAA,GAAU,CAAA,CAAA;AAE7CC,IAAAA,cAAA,GAAgBA,cAAA,IAAiB,CAAA,GAAIA,cAAA,GAAgB,CAAA,CAAA;AAErD,IAAA,MAAMC,WAAA,GACJ,IAAI,CAACnE,IAAI,CAACoE,SAAS,KAAK,kBAAA,IAAsB,CAAC,CAACJ,MAAA,GAC5CA,MAAA,GACA,IAAI,CAAC5D,cAAc,EAAEK,WAAA,CAAA;AAE3B,IAAA,IAAI4D,kBAAA,GAAoB,CAAA,CAAA;AAExB,IAAA,IAAIF,WAAA,EAAY;MACdE,kBAAA,GAAoBC,cAAA,GAAiBH,WAAA,CAAA;KAChC,MAAA;MACLE,kBAAA,GAAoBC,cAAA,GAAiB,CAAA,CAAA;AACvC,KAAA;AAEA,IAAA,MAAMC,mBAAA,GAAqB,CAAC,CAAA,GAAIF,kBAAiB,IAAI,GAAA,CAAA;IAErD,OAAO;AAAEG,MAAAA,IAAA,EAAO,CAAA,EAAEN,cAAA,GAAgBK,mBAAmB,CAAA,CAAA,CAAA;AAAG,KAAA,CAAA;AAC1D,GAAA;AAAA,EAAA;AAAA3D,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,kCAzBCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AA4BD4D,EAAAA,sBAAAA,CAAuBjB,MAAc,EAAQ;IAC3C,IAAI,CAACrD,mBAAmB,GAAGqD,MAAA,CAAA;AAC7B,GAAA;AAAA,EAAA;AAAA5C,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,6BAHCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAKD,EAAA,IAAI6D,wCAA0D;AAC5D,IAAA,OAAO,IAAI,CAACX,2BAA2B,CACrCzB,MAAA,CAAO,IAAI,CAACxB,UAAU,CAAA,IAAK,IAAI,CAACE,GAAG,EACnC,IAAI,CAACR,UAAU,CAAA,CAAA;AAEnB,GAAA;AAEA,EAAA,IAAImE,wCAA0D;AAC5D,IAAA,OAAO,IAAI,CAACZ,2BAA2B,CACrCzB,MAAA,CAAO,IAAI,CAACrB,UAAU,CAAA,IAAK,IAAI,CAACC,GAAG,EACnC,IAAI,CAACV,UAAU,CAAA,CAAA;AAEnB,GAAA;AAGAoE,EAAAA,cAAAA,GAAuB;AACrB,IAAA,IAAI,CAACC,QAAQ,GAAG,CAAC,IAAI,CAACA,QAAQ,CAAA;AAChC,GAAA;AAAA,EAAA;AAAAjE,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,qBAHCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAMDiE,EAAAA,YAAAA,CAAanD,EAAa,EAAQ;AAChC,IAAA,IAAI,IAAI,CAAC3B,IAAI,CAAC+E,OAAO,EAAE;AACrB,MAAA,IAAI,CAAC/E,IAAI,CAAC+E,OAAO,CAACpD,EAAA,CAAA,CAAA;AACpB,KAAA;IAEA,IAAI,CAACkD,QAAQ,GAAG,IAAA,CAAA;AAClB,GAAA;AAAA,EAAA;AAAAjE,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,mBAPCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAUDmE,EAAAA,WAAAA,CAAYrD,EAAa,EAAQ;AAC/B,IAAA,IAAI,IAAI,CAAC3B,IAAI,CAACiF,MAAM,EAAE;AACpB,MAAA,IAAI,CAACjF,IAAI,CAACiF,MAAM,CAACtD,EAAA,CAAA,CAAA;AACnB,KAAA;IAEA,IAAI,CAACkD,QAAQ,GAAG,KAAA,CAAA;AAClB,GAAA;AAAA,EAAA;AAAAjE,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,kBAPCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAUDqE,EAAAA,YAAAA,CAAavD,EAAa,EAAQ;AAChC,IAAA,IAAI,IAAI,CAAC3B,IAAI,CAAC+E,OAAO,EAAE;AACrB,MAAA,IAAI,CAAC/E,IAAI,CAAC+E,OAAO,CAACpD,EAAA,CAAA,CAAA;AACpB,KAAA;IAEA,IAAI,CAACxB,mBAAmB,GAAG,IAAA,CAAA;IAC3B,IAAI,CAACgF,aAAa,GAAG,IAAA,CAAA;AACvB,GAAA;AAAA,EAAA;AAAAvE,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,mBARCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAWDuE,EAAAA,WAAAA,CAAYzD,EAAa,EAAQ;IAC/B0D,KAAA,CACE,IAAI,EACJ,MAAA;AACE;AACA;AACA;AACA;MACA,IAAI,IAAI,CAAClF,mBAAmB,EAAE;QAC5B,IAAI,CAACA,mBAAmB,GAAG,KAAA,CAAA;AAE3B,QAAA,OAAA;AACF,OAAA;AAEA,MAAA,IAAI,IAAI,CAACH,IAAI,CAACiF,MAAM,EAAE;AACpB,QAAA,IAAI,CAACjF,IAAI,CAACiF,MAAM,CAACtD,EAAA,CAAA,CAAA;AACnB,OAAA;AAEA,MAAA,IAAI,CAAC2D,YAAY,EAAA,CAAA;KAEnB,EAAA,GAAA,CAAA,CAAA;AAEJ,GAAA;AAAA,EAAA;AAAA1E,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,kBAvBCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AA0BDyE,EAAAA,YAAAA,GAAqB;IACnB,IAAI,CAACnF,mBAAmB,GAAG,KAAA,CAAA;IAC3B,IAAI,CAACgF,aAAa,GAAG,KAAA,CAAA;AACvB,GAAA;AAAA,EAAA;AAAAvE,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,mBAJCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAOD0E,EAAAA,QAAAA,CAASvB,MAAc,EAAQ;IAC7B,IAAI,CAACxD,UAAU,GAAGwD,MAAA,CAAA;AACpB,GAAA;AAAA,EAAA;AAAApD,IAAAA,CAAA,CAAAlB,IAAA,CAAAC,SAAA,eAHCkB,MAAA,CAAA,CAAA,CAAA;AAAA,GAAA;AAKD,EAAA,IAAI2E,iBAAyB;AAC3B,IAAA,OAAO3D,IAAA,CAAKX,GAAG,CAACuE,MAAA,CAAO,IAAI,CAACzE,GAAG,CAAE0E,CAAAA,MAAM,EAAED,MAAA,CAAO,IAAI,CAACvE,GAAG,EAAEwE,MAAM,CAAA,CAAA;AAClE,GAAA;AAEA,EAAA,IAAIC,gBAAyB;IAC3B,OAAO,IAAI,CAACvB,SAAS,KAAK,kBAAA,CAAA;AAC5B,GAAA;AAEA,EAAA,IAAIwB,kBAA2B;AAC7B,IAAA,OAAO,IAAI,CAACD,aAAa,IAAI,CAAC,IAAI,CAAC3F,IAAI,CAAC6F,QAAQ,IAAI,CAAC,IAAI,CAAC7F,IAAI,CAAC8F,QAAQ,CAAA;AACzE,GAAA;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAyZA,u3XAAA,EAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,GAAA;QAAAC,YAAA;QAAAC,GAAA;yBAAAC,wBAAA;QAAAC,6BAAA;QAAAC,EAAA;QAAAC,aAAA;QAAAC,MAAA;QAAAC,EAAA;QAAAC,EAAA;QAAAC,KAAA;QAAAC,QAAA;QAAAC,eAAA;QAAAC,aAAA;uBAAAC,sBAAA;QAAAC,EAAA;QAAAC,iBAAA;QAAAC,cAAA;QAAAC,SAAA;QAAAC,aAAA;AAAAC,QAAAA,WAAAA;AAAA,OAAA,CAAA;MAAAC,UAAA,EAAA,IAAA;AAAU,KAAA,CAAA,EAAV,IAAW,CAAA,CAAA;AAAD,GAAA;AACZ;;;;"}
|
|
1
|
+
{"version":3,"file":"eui-dual-range.js","sources":["../../src/components/eui-dual-range.gts"],"sourcesContent":["import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\nimport { later } from '@ember/runloop';\nimport optional from 'ember-composable-helpers/helpers/optional';\nimport onKey from 'ember-keyboard/modifiers/on-key';\nimport { and, eq, not, or } from 'ember-truth-helpers';\nimport argOrDefault, { argOrDefaultDecorator } from '../helpers/arg-or-default.ts';\nimport castTo from '../helpers/cast-to.ts';\nimport simpleStyle from '../modifiers/simple-style.ts';\nimport { keys } from '../utils/keys.ts';\nimport { isWithinRange } from '../utils/number/index.ts';\nimport { EUI_THUMB_SIZE } from '../utils/range/index.ts';\nimport EuiFormControlLayoutDelimited from './eui-form-control-layout-delimited.gts';\nimport EuiInputPopover from './eui-input-popover.gts';\nimport EuiRangeHighlight from './eui-range-highlight.gts';\nimport EuiRangeInput from './eui-range-input.gts';\nimport EuiRangeLabel from './eui-range-label.gts';\nimport EuiRangeSlider from './eui-range-slider.gts';\nimport EuiRangeThumb from './eui-range-thumb.gts';\nimport EuiRangeTrack from './eui-range-track.gts';\nimport EuiRangeWrapper from './eui-range-wrapper.gts';\nimport type { EuiFormControlLayoutSignature } from './eui-form-control-layout';\nimport type { EuiRangeArgs } from './eui-range';\nimport type { EuiRangeInputArgs, EuiRangeInputSignature } from './eui-range-input';\nimport type { EuiRangeLevel } from './eui-range-levels';\nimport type { EuiRangeTick } from './eui-range-ticks';\nexport type ValueMember = number | string;\nexport interface EuiDualRangeArgs {\n value: [ValueMember, ValueMember];\n onBlur?: (event: FocusEvent) => void;\n onFocus?: (event: FocusEvent) => void;\n onChange: (values: [ValueMember, ValueMember], isValid: boolean, event: Event | MouseEvent | KeyboardEvent) => void;\n fullWidth?: boolean;\n isInvalid?: boolean;\n /**\n * Create colored indicators for certain intervals\n */ levels?: EuiRangeLevel[];\n /**\n * Shows static min/max labels on the sides of the range slider\n */ showLabels?: boolean;\n /**\n * Pass `true` to displays an extra input control for direct manipulation.\n * Pass `'inputWithPopover'` to only show the input but show the range in a dropdown.\n */ showInput?: EuiRangeArgs['showInput'];\n /**\n * Modifies the number of tick marks and at what interval\n */ tickInterval?: number;\n /**\n * Specified ticks at specified values\n */ ticks?: EuiRangeTick[];\n /**\n * Creates an input group with element(s) coming before input. Will only show if `showInput = inputWithPopover`.\n * `string` | `Component` or an array of these\n */ prepend?: EuiFormControlLayoutSignature['Blocks']['prepend'];\n /**\n * Creates an input group with element(s) coming after input. Will only show if `showInput = inputWithPopover`.\n * `string` | `Component` or an array of these\n */ append?: EuiFormControlLayoutSignature['Blocks']['append'];\n /**\n * Intended to be uses with aria attributes. Some attributes may be overwritten.\n */ minInputProps?: Partial<EuiRangeInputArgs>;\n /**\n * Intended to be uses with aria attributes. Some attributes may be overwritten.\n */ maxInputProps?: Partial<EuiRangeInputArgs>;\n readOnly?: boolean;\n disabled?: boolean;\n isPrependProvided?: boolean;\n isAppendProvided?: boolean;\n isFakeMaxBlock?: boolean;\n isFakeMinBlock?: boolean;\n disable?: boolean;\n ariaDescribedby?: string;\n ariaLabel?: string;\n name?: string;\n id?: string;\n compressed?: boolean;\n showRange?: boolean;\n showTicks?: boolean;\n step?: number;\n min?: number;\n max?: number;\n}\nexport interface EuiDualRangeSignature {\n Element: EuiRangeInputSignature['Element'];\n Args: EuiDualRangeArgs;\n Blocks: {\n prepend: EuiRangeInputSignature['Blocks']['prepend'];\n append: EuiRangeInputSignature['Blocks']['append'];\n min: [number?];\n max: [number?];\n };\n}\nexport default class EuiDualRangeComponent extends Component<EuiDualRangeSignature> {\n // Defaults\n @argOrDefaultDecorator(0)\n min: number;\n @argOrDefaultDecorator(100)\n max: number;\n @argOrDefaultDecorator(1)\n step: number;\n @argOrDefaultDecorator(false)\n fullWidth: boolean;\n @argOrDefaultDecorator(false)\n compressed: boolean;\n @argOrDefaultDecorator(false)\n showLabels: boolean;\n @argOrDefaultDecorator(false)\n showInput: boolean | string;\n @argOrDefaultDecorator(true)\n showRange: boolean;\n @argOrDefaultDecorator(false)\n showTicks: boolean;\n @argOrDefaultDecorator([])\n levels: EuiRangeLevel[];\n //State\n @tracked\n id: string = this.args.id || guidFor({});\n @tracked\n hasFocus = false;\n @tracked\n rangeSliderRefAvailable = false;\n @tracked\n isPopoverOpen = false;\n @tracked\n rangeWidth: number | undefined;\n @tracked\n isVisible = true;\n ///\n preventPopoverClose = false;\n rangeSliderRef: HTMLInputElement | null = null;\n @action\n didInsertRangeSlider(ref1: HTMLInputElement | null): void {\n this.rangeSliderRef = ref1;\n this.rangeSliderRefAvailable = !!ref1;\n this.rangeWidth = ref1 ? ref1.clientWidth : undefined;\n if (this.rangeSliderRef?.clientWidth && !this.isVisible) {\n this.isVisible = true;\n }\n }\n get lowerValue(): ValueMember {\n return this.args.value ? this.args.value[0] : this.min;\n }\n get upperValue(): ValueMember {\n return this.args.value ? this.args.value[1] : this.max;\n }\n get lowerValueIsValid(): boolean {\n return isWithinRange(this.min, this.upperValue, this.lowerValue);\n }\n get upperValueIsValid(): boolean {\n return isWithinRange(this.lowerValue, this.max, this.upperValue);\n }\n get isValid(): boolean {\n return this.lowerValueIsValid && this.upperValueIsValid;\n }\n @action\n _determineInvalidThumbMovement(newVal1: ValueMember, lower1: ValueMember, upper1: ValueMember, e1: Event): void {\n // If the values are invalid, find whether the new value is in the upper\n // or lower half and move the appropriate handle to the new value,\n // while the other handle gets moved to the opposite bound (if invalid)\n const lowerHalf1 = Math.abs(this.max - this.min) / 2 + this.min;\n const newValIsLow1 = isWithinRange(this.min, lowerHalf1, newVal1);\n if (newValIsLow1) {\n lower1 = newVal1;\n upper1 = !this.upperValueIsValid ? this.max : upper1;\n } else {\n lower1 = !this.lowerValueIsValid ? this.min : lower1;\n upper1 = newVal1;\n }\n this._handleOnChange(lower1, upper1, e1);\n }\n @action\n _determineValidThumbMovement(newVal1: ValueMember, lower1: ValueMember, upper1: ValueMember, e1: Event): void {\n // Lower thumb targeted or right-moving swap has occurred\n if (Math.abs((lower1 as number) - (newVal1 as number)) < Math.abs((upper1 as number) - (newVal1 as number))) {\n lower1 = newVal1;\n } else {\n upper1 = newVal1;\n }\n this._handleOnChange(lower1, upper1, e1);\n }\n @action\n _determineThumbMovement(newVal1: number, e1: Event): void {\n // Determine thumb movement based on slider interaction\n if (!this.isValid) {\n // Non-standard positioning follows\n this._determineInvalidThumbMovement(newVal1, this.lowerValue, this.upperValue, e1);\n } else {\n // Standard positioning based on click event proximity to thumb locations\n this._determineValidThumbMovement(newVal1, this.lowerValue, this.upperValue, e1);\n }\n }\n @action\n _handleOnChange(lower1: ValueMember, upper1: ValueMember, e1: Event): void {\n const isValid1 = isWithinRange(this.min, upper1, lower1) && isWithinRange(lower1, this.max, upper1);\n this.args.onChange([\n lower1,\n upper1\n ], isValid1, e1);\n }\n @action\n handleSliderChange(e1: Event): void {\n this._determineThumbMovement(Number((e1.currentTarget as HTMLInputElement).value), e1);\n }\n @action\n _resetToRangeEnds(e1: KeyboardEvent): void {\n // Arbitrary decision to pass `min` instead of `max`. Result is the same.\n this._determineInvalidThumbMovement(this.min, this.lowerValue, this.upperValue, e1);\n }\n @action\n _isDirectionalKeyPress(event1: KeyboardEvent): boolean {\n return ([\n keys.ARROW_UP,\n keys.ARROW_RIGHT,\n keys.ARROW_DOWN,\n keys.ARROW_LEFT\n ].indexOf(event1.key as keys) > -1);\n }\n @action\n handleInputKeyDown(e1: KeyboardEvent): void {\n // Relevant only when initial values are both `''` and `showInput` is set\n if (this._isDirectionalKeyPress(e1) && !this.isValid) {\n e1.preventDefault();\n this._resetToRangeEnds(e1);\n }\n }\n @action\n handleLowerInputChange(e1: Event): void {\n this._handleOnChange((e1.target as HTMLInputElement).value, this.upperValue, e1);\n }\n @action\n handleUpperInputChange(e1: Event): void {\n this._handleOnChange(this.lowerValue, (e1.target as HTMLInputElement).value, e1);\n }\n @action\n _handleKeyDown(value1: ValueMember, event1: KeyboardEvent): number {\n let newVal1 = Number(value1);\n let stepRemainder1 = 0;\n const step1 = this.args.step || 1;\n switch(event1.key){\n case keys.ARROW_UP:\n case keys.ARROW_RIGHT:\n event1.preventDefault();\n newVal1 += step1;\n stepRemainder1 = (newVal1 - this.min) % step1;\n if (step1 !== 1 && stepRemainder1 > 0) {\n newVal1 = newVal1 - stepRemainder1;\n }\n break;\n case keys.ARROW_DOWN:\n case keys.ARROW_LEFT:\n event1.preventDefault();\n newVal1 -= step1;\n stepRemainder1 = (newVal1 - this.min) % step1;\n if (step1 !== 1 && stepRemainder1 > 0) {\n newVal1 = newVal1 + (step1 - stepRemainder1);\n }\n break;\n }\n return newVal1;\n }\n @action\n handleLowerKeyDown(event1: KeyboardEvent): void {\n let lower1 = this.lowerValue;\n switch(event1.key){\n case keys.TAB:\n return;\n default:\n if (!this.lowerValueIsValid) {\n // Relevant only when initial value is `''` and `showInput` is not set\n event1.preventDefault();\n this._resetToRangeEnds(event1);\n return;\n }\n lower1 = this._handleKeyDown(lower1, event1);\n }\n if (lower1 >= (this.upperValue as number) || lower1 < this.min) return;\n this._handleOnChange(lower1, this.upperValue, event1);\n }\n @action\n handleUpperKeyDown(event1: KeyboardEvent): void {\n let upper1 = this.upperValue;\n switch(event1.key){\n case keys.TAB:\n return;\n default:\n if (!this.upperValueIsValid) {\n // Relevant only when initial value is `''` and `showInput` is not set\n event1.preventDefault();\n this._resetToRangeEnds(event1);\n return;\n }\n upper1 = this._handleKeyDown(upper1, event1);\n }\n if (upper1 <= (this.lowerValue as number) || upper1 > this.max) return;\n this._handleOnChange(this.lowerValue, upper1, event1);\n }\n @action\n calculateThumbPositionStyle(value1: number, width1?: number): {\n left: string;\n } {\n // Calculate the left position based on value\n const decimal1 = (value1 - this.min) / (this.max - this.min);\n // Must be between 0-100%\n let valuePosition1 = decimal1 <= 1 ? decimal1 : 1;\n valuePosition1 = valuePosition1 >= 0 ? valuePosition1 : 0;\n const trackWidth1 = this.args.showInput === 'inputWithPopover' && !!width1 ? width1 : this.rangeSliderRef?.clientWidth;\n let thumbToTrackRatio1 = 0;\n if (trackWidth1) {\n thumbToTrackRatio1 = EUI_THUMB_SIZE / trackWidth1;\n } else {\n thumbToTrackRatio1 = EUI_THUMB_SIZE / 1;\n }\n const trackPositionScale1 = (1 - thumbToTrackRatio1) * 100;\n return {\n left: `${valuePosition1 * trackPositionScale1}%`\n };\n }\n @action\n setPreventPopoverClose(value1: boolean): void {\n this.preventPopoverClose = value1;\n }\n get calculateLowerValueThumbPositionStyle(): {\n left: string;\n } {\n return this.calculateThumbPositionStyle(Number(this.lowerValue) || this.min, this.rangeWidth);\n }\n get calculateUpperValueThumbPositionStyle(): {\n left: string;\n } {\n return this.calculateThumbPositionStyle(Number(this.upperValue) || this.max, this.rangeWidth);\n }\n @action\n toggleHasFocus(): void {\n this.hasFocus = !this.hasFocus;\n }\n @action\n onThumbFocus(e1: FocusEvent): void {\n if (this.args.onFocus) {\n this.args.onFocus(e1);\n }\n this.hasFocus = true;\n }\n @action\n onThumbBlur(e1: FocusEvent): void {\n if (this.args.onBlur) {\n this.args.onBlur(e1);\n }\n this.hasFocus = false;\n }\n @action\n onInputFocus(e1: FocusEvent): void {\n if (this.args.onFocus) {\n this.args.onFocus(e1);\n }\n this.preventPopoverClose = true;\n this.isPopoverOpen = true;\n }\n @action\n onInputBlur(e1: FocusEvent): void {\n later(this, ()=>{\n // Safari does not recognize any focus-related eventing for input[type=range]\n // making it impossible to capture its state using active/focus/relatedTarget\n // Instead, a prevention flag is set on mousedown, with a waiting period here.\n // Mousedown is viable because in the popover case, it is inaccessible via keyboard (intentionally)\n if (this.preventPopoverClose) {\n this.preventPopoverClose = false;\n return;\n }\n if (this.args.onBlur) {\n this.args.onBlur(e1);\n }\n this.closePopover();\n }, 200);\n }\n @action\n closePopover(): void {\n this.preventPopoverClose = false;\n this.isPopoverOpen = false;\n }\n @action\n onResize(width1?: number): void {\n this.rangeWidth = width1;\n }\n get digitTolerance(): number {\n return Math.max(String(this.min).length, String(this.max).length);\n }\n get showInputOnly(): boolean {\n return this.showInput === 'inputWithPopover';\n }\n get canShowDropdown(): boolean {\n return this.showInputOnly && !this.args.readOnly && !this.args.disabled;\n }\n static{\n template(`\n {{#let\n (and (argOrDefault @isPrependProvided true) (has-block \"prepend\"))\n (and (argOrDefault @isAppendProvided true) (has-block \"append\"))\n (and (not (argOrDefault @isFakeMaxBlock false)) (has-block \"max\"))\n (and (not (argOrDefault @isFakeMinBlock false)) (has-block \"min\"))\n as |hasPrepend hasAppend hasMaxBlock hasMinBlock|\n }}\n {{#if this.showInputOnly}}\n <EuiInputPopover\n class=\"euiRange__popover\"\n @fullWidth={{this.fullWidth}}\n @isOpen={{this.isPopoverOpen}}\n @closePopover={{this.closePopover}}\n @disableFocusTrap={{true}}\n @onPanelResize={{this.onResize}}\n >\n <:input>\n <EuiFormControlLayoutDelimited\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n @readOnly={{@readOnly}}\n @disabled={{@disabled}}\n @useGroup={{or hasPrepend hasAppend}}\n >\n <:prepend as |prependClasses|>\n {{yield prependClasses to=\"prepend\"}}\n </:prepend>\n <:startControl as |classes|>\n <EuiRangeInput\n class={{classes}}\n @digitTolerance={{this.digitTolerance}}\n @side=\"min\"\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n @step={{this.step}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleLowerInputChange}}\n @name=\"{{@name}}-minValue\"\n @readOnly={{@readOnly}}\n @autoSize={{false}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{hasAppend}}\n @isAppendProvided={{hasPrepend}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on\n \"focus\"\n (if\n this.canShowDropdown this.onInputFocus (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if\n this.canShowDropdown this.onInputBlur (optional @onBlur)\n )\n }}\n {{on \"input\" this.handleLowerInputChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n </:startControl>\n <:endControl as |classes|>\n <EuiRangeInput\n class={{classes}}\n @digitTolerance={{this.digitTolerance}}\n @side=\"max\"\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @name=\"{{@name}}-maxValue\"\n @readOnly={{@readOnly}}\n @autoSize={{false}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{hasAppend}}\n @isAppendProvided={{hasPrepend}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on\n \"focus\"\n (if\n this.canShowDropdown this.onInputFocus (optional @onFocus)\n )\n }}\n {{on\n \"blur\"\n (if\n this.canShowDropdown this.onInputBlur (optional @onBlur)\n )\n }}\n {{on \"input\" this.handleUpperInputChange}}\n >\n <:prepend as |classes|>\n {{yield classes to=\"prepend\"}}\n </:prepend>\n <:append as |classes|>\n {{yield classes to=\"append\"}}\n </:append>\n </EuiRangeInput>\n </:endControl>\n <:append as |appendClasses|>\n {{yield appendClasses to=\"append\"}}\n </:append>\n </EuiFormControlLayoutDelimited>\n </:input>\n <:content>\n <EuiRangeWrapper\n class=\"euiDualRange\"\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n >\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{if (eq this.showInput true) \"true\" \"false\"}}\n @compressed={{this.compressed}}\n @disabled={{@disabled}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleSliderChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{this.compressed}}\n @hasFocus={{this.hasFocus}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.lowerValue to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo this.upperValue to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n class=\"euiDualRange__slider\"\n aria-hidden=\"true\"\n @id={{this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleSliderChange}}\n @showTicks={{this.showTicks}}\n @hasFocus={{this.hasFocus}}\n tabindex=\"-1\"\n @showRange={{this.showRange}}\n ...attributes\n {{didInsert this.didInsertRangeSlider}}\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleSliderChange}}\n />\n {{#if this.rangeSliderRefAvailable}}\n <EuiRangeThumb\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n {{!@glint-expect-error}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateLowerValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{onKey \"_all\" this.handleLowerKeyDown}}\n />\n <EuiRangeThumb\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n {{!@glint-expect-error}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateUpperValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{onKey \"_all\" this.handleUpperKeyDown}}\n />\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n </EuiRangeWrapper>\n </:content>\n </EuiInputPopover>\n {{else}}\n <EuiRangeWrapper\n class=\"euiDualRange\"\n @fullWidth={{this.fullWidth}}\n @compressed={{this.compressed}}\n >\n {{#if this.showInput}}\n <EuiRangeInput\n @digitTolerance={{this.digitTolerance}}\n @side=\"min\"\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n @step={{this.step}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleLowerInputChange}}\n @name=\"{{@name}}-minValue\"\n @readOnly={{@readOnly}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @isPrependProvided={{false}}\n @isAppendProvided={{false}}\n @controlOnly={{true}}\n @disable={{@disable}}\n ...attributes\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleLowerInputChange}}\n />\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{/if}}\n {{#if this.showLabels}}\n <EuiRangeLabel @side=\"min\" @disabled={{@disabled}}>\n {{#if hasMinBlock}}\n {{yield this.min to=\"min\"}}\n {{else}}\n {{this.min}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n <EuiRangeTrack\n aria-hidden={{if (eq this.showInput true) \"true\" \"false\"}}\n @compressed={{this.compressed}}\n @disabled={{@disabled}}\n @max={{this.max}}\n @min={{this.min}}\n @step={{this.step}}\n @showTicks={{this.showTicks}}\n @tickInterval={{@tickInterval}}\n @ticks={{@ticks}}\n @levels={{this.levels}}\n @onChange={{this.handleSliderChange}}\n @value={{@value}}\n >\n {{#if (and this.showRange this.isValid)}}\n <EuiRangeHighlight\n @compressed={{this.compressed}}\n @hasFocus={{this.hasFocus}}\n @showTicks={{this.showTicks}}\n {{!@glint-expect-error}}\n @min={{castTo this.min to=\"number\"}}\n {{!@glint-expect-error}}\n @max={{castTo this.max to=\"number\"}}\n {{!@glint-expect-error}}\n @lowerValue={{castTo this.lowerValue to=\"number\"}}\n {{!@glint-expect-error}}\n @upperValue={{castTo this.upperValue to=\"number\"}}\n />\n {{/if}}\n <EuiRangeSlider\n class=\"euiDualRange__slider\"\n aria-hidden=\"true\"\n @id={{this.id}}\n @name={{@name}}\n @min={{this.min}}\n @max={{this.max}}\n @step={{this.step}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @onChange={{this.handleSliderChange}}\n @showTicks={{this.showTicks}}\n @hasFocus={{this.hasFocus}}\n tabindex=\"-1\"\n @showRange={{this.showRange}}\n ...attributes\n {{didInsert this.didInsertRangeSlider}}\n {{on \"mousedown\" (fn this.setPreventPopoverClose true)}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleSliderChange}}\n />\n {{#if this.rangeSliderRefAvailable}}\n <EuiRangeThumb\n @min={{this.min}}\n {{!@glint-expect-error}}\n @max={{castTo this.upperValue to=\"number\"}}\n {{!@glint-expect-error}}\n @value={{this.lowerValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateLowerValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{!@glint-expect-error}}\n {{on \"click\" this.handleLowerKeyDown}}\n />\n <EuiRangeThumb\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n {{!@glint-expect-error}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @showTicks={{this.showTicks}}\n @showInput={{not this.showInput}}\n aria-describedby={{@ariaDescribedby}}\n aria-label={{@ariaLabel}}\n {{simpleStyle this.calculateUpperValueThumbPositionStyle}}\n {{on \"focus\" this.onThumbFocus}}\n {{on \"blur\" this.onThumbBlur}}\n {{on \"keydown\" this.handleUpperKeyDown}}\n />\n {{/if}}\n </EuiRangeTrack>\n {{#if this.showLabels}}\n <EuiRangeLabel @disabled={{@disabled}}>\n {{#if hasMaxBlock}}\n {{yield this.max to=\"max\"}}\n {{else}}\n {{this.max}}\n {{/if}}\n </EuiRangeLabel>\n {{/if}}\n {{#if this.showInput}}\n <div class=\"euiRange__horizontalSpacer\"></div>\n {{! maxinput }}\n <EuiRangeInput\n @digitTolerance={{this.digitTolerance}}\n @side=\"max\"\n {{!@glint-expect-error}}\n @min={{castTo this.lowerValue to=\"number\"}}\n @max={{this.max}}\n @step={{this.step}}\n @value={{this.upperValue}}\n @disabled={{@disabled}}\n @compressed={{this.compressed}}\n @name=\"{{@name}}-maxValue\"\n @readOnly={{@readOnly}}\n @fullWidth={{this.fullWidth}}\n @isInvalid={{@isInvalid}}\n @controlOnly={{this.showInputOnly}}\n @isPrependProvided={{false}}\n @isAppendProvided={{false}}\n @disable={{@disable}}\n ...attributes\n {{onKey \"_all\" this.handleInputKeyDown}}\n {{on \"focus\" (optional @onFocus)}}\n {{on \"blur\" (optional @onBlur)}}\n {{on \"input\" this.handleUpperInputChange}}\n />\n {{/if}}\n </EuiRangeWrapper>\n {{/if}}\n {{/let}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9iZXRvY2FudHU5My9wcnlzbWV4L2VtYmVyLWV1aS9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL2V1aS1kdWFsLXJhbmdlLmd0cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tcG9uZW50IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG5pbXBvcnQgeyB0cmFja2VkIH0gZnJvbSAnQGdsaW1tZXIvdHJhY2tpbmcnO1xuaW1wb3J0IHsgZm4gfSBmcm9tICdAZW1iZXIvaGVscGVyJztcbmltcG9ydCB7IG9uIH0gZnJvbSAnQGVtYmVyL21vZGlmaWVyJztcbmltcG9ydCB7IGFjdGlvbiB9IGZyb20gJ0BlbWJlci9vYmplY3QnO1xuaW1wb3J0IHsgZ3VpZEZvciB9IGZyb20gJ0BlbWJlci9vYmplY3QvaW50ZXJuYWxzJztcbmltcG9ydCBkaWRJbnNlcnQgZnJvbSAnQGVtYmVyL3JlbmRlci1tb2RpZmllcnMvbW9kaWZpZXJzL2RpZC1pbnNlcnQnO1xuaW1wb3J0IHsgbGF0ZXIgfSBmcm9tICdAZW1iZXIvcnVubG9vcCc7XG5cbmltcG9ydCBvcHRpb25hbCBmcm9tICdlbWJlci1jb21wb3NhYmxlLWhlbHBlcnMvaGVscGVycy9vcHRpb25hbCc7XG5pbXBvcnQgb25LZXkgZnJvbSAnZW1iZXIta2V5Ym9hcmQvbW9kaWZpZXJzL29uLWtleSc7XG5pbXBvcnQgeyBhbmQsIGVxLCBub3QsIG9yIH0gZnJvbSAnZW1iZXItdHJ1dGgtaGVscGVycyc7XG5cbmltcG9ydCBhcmdPckRlZmF1bHQsIHsgYXJnT3JEZWZhdWx0RGVjb3JhdG9yIH0gZnJvbSAnLi4vaGVscGVycy9hcmctb3ItZGVmYXVsdC50cyc7XG5pbXBvcnQgY2FzdFRvIGZyb20gJy4uL2hlbHBlcnMvY2FzdC10by50cyc7XG5pbXBvcnQgc2ltcGxlU3R5bGUgZnJvbSAnLi4vbW9kaWZpZXJzL3NpbXBsZS1zdHlsZS50cyc7XG5pbXBvcnQgeyBrZXlzIH0gZnJvbSAnLi4vdXRpbHMva2V5cy50cyc7XG5pbXBvcnQgeyBpc1dpdGhpblJhbmdlIH0gZnJvbSAnLi4vdXRpbHMvbnVtYmVyL2luZGV4LnRzJztcbmltcG9ydCB7IEVVSV9USFVNQl9TSVpFIH0gZnJvbSAnLi4vdXRpbHMvcmFuZ2UvaW5kZXgudHMnO1xuaW1wb3J0IEV1aUZvcm1Db250cm9sTGF5b3V0RGVsaW1pdGVkIGZyb20gJy4vZXVpLWZvcm0tY29udHJvbC1sYXlvdXQtZGVsaW1pdGVkLmd0cyc7XG5pbXBvcnQgRXVpSW5wdXRQb3BvdmVyIGZyb20gJy4vZXVpLWlucHV0LXBvcG92ZXIuZ3RzJztcbmltcG9ydCBFdWlSYW5nZUhpZ2hsaWdodCBmcm9tICcuL2V1aS1yYW5nZS1oaWdobGlnaHQuZ3RzJztcbmltcG9ydCBFdWlSYW5nZUlucHV0IGZyb20gJy4vZXVpLXJhbmdlLWlucHV0Lmd0cyc7XG5pbXBvcnQgRXVpUmFuZ2VMYWJlbCBmcm9tICcuL2V1aS1yYW5nZS1sYWJlbC5ndHMnO1xuaW1wb3J0IEV1aVJhbmdlU2xpZGVyIGZyb20gJy4vZXVpLXJhbmdlLXNsaWRlci5ndHMnO1xuaW1wb3J0IEV1aVJhbmdlVGh1bWIgZnJvbSAnLi9ldWktcmFuZ2UtdGh1bWIuZ3RzJztcbmltcG9ydCBFdWlSYW5nZVRyYWNrIGZyb20gJy4vZXVpLXJhbmdlLXRyYWNrLmd0cyc7XG5pbXBvcnQgRXVpUmFuZ2VXcmFwcGVyIGZyb20gJy4vZXVpLXJhbmdlLXdyYXBwZXIuZ3RzJztcblxuaW1wb3J0IHR5cGUgeyBFdWlGb3JtQ29udHJvbExheW91dFNpZ25hdHVyZSB9IGZyb20gJy4vZXVpLWZvcm0tY29udHJvbC1sYXlvdXQnO1xuaW1wb3J0IHR5cGUgeyBFdWlSYW5nZUFyZ3MgfSBmcm9tICcuL2V1aS1yYW5nZSc7XG5pbXBvcnQgdHlwZSB7XG4gIEV1aVJhbmdlSW5wdXRBcmdzLFxuICBFdWlSYW5nZUlucHV0U2lnbmF0dXJlXG59IGZyb20gJy4vZXVpLXJhbmdlLWlucHV0JztcbmltcG9ydCB0eXBlIHsgRXVpUmFuZ2VMZXZlbCB9IGZyb20gJy4vZXVpLXJhbmdlLWxldmVscyc7XG5pbXBvcnQgdHlwZSB7IEV1aVJhbmdlVGljayB9IGZyb20gJy4vZXVpLXJhbmdlLXRpY2tzJztcblxuZXhwb3J0IHR5cGUgVmFsdWVNZW1iZXIgPSBudW1iZXIgfCBzdHJpbmc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXVpRHVhbFJhbmdlQXJncyB7XG4gIHZhbHVlOiBbVmFsdWVNZW1iZXIsIFZhbHVlTWVtYmVyXTtcbiAgb25CbHVyPzogKGV2ZW50OiBGb2N1c0V2ZW50KSA9PiB2b2lkO1xuICBvbkZvY3VzPzogKGV2ZW50OiBGb2N1c0V2ZW50KSA9PiB2b2lkO1xuICBvbkNoYW5nZTogKFxuICAgIHZhbHVlczogW1ZhbHVlTWVtYmVyLCBWYWx1ZU1lbWJlcl0sXG4gICAgaXNWYWxpZDogYm9vbGVhbixcbiAgICBldmVudDogRXZlbnQgfCBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudFxuICApID0-IHZvaWQ7XG4gIGZ1bGxXaWR0aD86IGJvb2xlYW47XG4gIGlzSW52YWxpZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDcmVhdGUgY29sb3JlZCBpbmRpY2F0b3JzIGZvciBjZXJ0YWluIGludGVydmFsc1xuICAgKi9cbiAgbGV2ZWxzPzogRXVpUmFuZ2VMZXZlbFtdO1xuICAvKipcbiAgICogU2hvd3Mgc3RhdGljIG1pbi9tYXggbGFiZWxzIG9uIHRoZSBzaWRlcyBvZiB0aGUgcmFuZ2Ugc2xpZGVyXG4gICAqL1xuICBzaG93TGFiZWxzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFBhc3MgYHRydWVgIHRvIGRpc3BsYXlzIGFuIGV4dHJhIGlucHV0IGNvbnRyb2wgZm9yIGRpcmVjdCBtYW5pcHVsYXRpb24uXG4gICAqIFBhc3MgYCdpbnB1dFdpdGhQb3BvdmVyJ2AgdG8gb25seSBzaG93IHRoZSBpbnB1dCBidXQgc2hvdyB0aGUgcmFuZ2UgaW4gYSBkcm9wZG93bi5cbiAgICovXG4gIHNob3dJbnB1dD86IEV1aVJhbmdlQXJnc1snc2hvd0lucHV0J107XG4gIC8qKlxuICAgKiBNb2RpZmllcyB0aGUgbnVtYmVyIG9mIHRpY2sgbWFya3MgYW5kIGF0IHdoYXQgaW50ZXJ2YWxcbiAgICovXG4gIHRpY2tJbnRlcnZhbD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFNwZWNpZmllZCB0aWNrcyBhdCBzcGVjaWZpZWQgdmFsdWVzXG4gICAqL1xuICB0aWNrcz86IEV1aVJhbmdlVGlja1tdO1xuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnB1dCBncm91cCB3aXRoIGVsZW1lbnQocykgY29taW5nIGJlZm9yZSBpbnB1dC4gIFdpbGwgb25seSBzaG93IGlmIGBzaG93SW5wdXQgPSBpbnB1dFdpdGhQb3BvdmVyYC5cbiAgICogYHN0cmluZ2AgfCBgQ29tcG9uZW50YCBvciBhbiBhcnJheSBvZiB0aGVzZVxuICAgKi9cbiAgcHJlcGVuZD86IEV1aUZvcm1Db250cm9sTGF5b3V0U2lnbmF0dXJlWydCbG9ja3MnXVsncHJlcGVuZCddO1xuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnB1dCBncm91cCB3aXRoIGVsZW1lbnQocykgY29taW5nIGFmdGVyIGlucHV0LiBXaWxsIG9ubHkgc2hvdyBpZiBgc2hvd0lucHV0ID0gaW5wdXRXaXRoUG9wb3ZlcmAuXG4gICAqIGBzdHJpbmdgIHwgYENvbXBvbmVudGAgb3IgYW4gYXJyYXkgb2YgdGhlc2VcbiAgICovXG4gIGFwcGVuZD86IEV1aUZvcm1Db250cm9sTGF5b3V0U2lnbmF0dXJlWydCbG9ja3MnXVsnYXBwZW5kJ107XG4gIC8qKlxuICAgKiAgSW50ZW5kZWQgdG8gYmUgdXNlcyB3aXRoIGFyaWEgYXR0cmlidXRlcy4gU29tZSBhdHRyaWJ1dGVzIG1heSBiZSBvdmVyd3JpdHRlbi5cbiAgICovXG4gIG1pbklucHV0UHJvcHM_OiBQYXJ0aWFsPEV1aVJhbmdlSW5wdXRBcmdzPjtcblxuICAvKipcbiAgICogIEludGVuZGVkIHRvIGJlIHVzZXMgd2l0aCBhcmlhIGF0dHJpYnV0ZXMuIFNvbWUgYXR0cmlidXRlcyBtYXkgYmUgb3ZlcndyaXR0ZW4uXG4gICAqL1xuICBtYXhJbnB1dFByb3BzPzogUGFydGlhbDxFdWlSYW5nZUlucHV0QXJncz47XG5cbiAgcmVhZE9ubHk_OiBib29sZWFuO1xuXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICBpc1ByZXBlbmRQcm92aWRlZD86IGJvb2xlYW47XG5cbiAgaXNBcHBlbmRQcm92aWRlZD86IGJvb2xlYW47XG5cbiAgaXNGYWtlTWF4QmxvY2s_OiBib29sZWFuO1xuXG4gIGlzRmFrZU1pbkJsb2NrPzogYm9vbGVhbjtcblxuICBkaXNhYmxlPzogYm9vbGVhbjtcblxuICBhcmlhRGVzY3JpYmVkYnk_OiBzdHJpbmc7XG5cbiAgYXJpYUxhYmVsPzogc3RyaW5nO1xuXG4gIG5hbWU_OiBzdHJpbmc7XG5cbiAgaWQ_OiBzdHJpbmc7XG5cbiAgY29tcHJlc3NlZD86IGJvb2xlYW47XG5cbiAgc2hvd1JhbmdlPzogYm9vbGVhbjtcblxuICBzaG93VGlja3M_OiBib29sZWFuO1xuXG4gIHN0ZXA_OiBudW1iZXI7XG5cbiAgbWluPzogbnVtYmVyO1xuXG4gIG1heD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdWlEdWFsUmFuZ2VTaWduYXR1cmUge1xuICBFbGVtZW50OiBFdWlSYW5nZUlucHV0U2lnbmF0dXJlWydFbGVtZW50J107XG4gIEFyZ3M6IEV1aUR1YWxSYW5nZUFyZ3M7XG4gIEJsb2Nrczoge1xuICAgIHByZXBlbmQ6IEV1aVJhbmdlSW5wdXRTaWduYXR1cmVbJ0Jsb2NrcyddWydwcmVwZW5kJ107XG4gICAgYXBwZW5kOiBFdWlSYW5nZUlucHV0U2lnbmF0dXJlWydCbG9ja3MnXVsnYXBwZW5kJ107XG4gICAgbWluOiBbbnVtYmVyP107XG4gICAgbWF4OiBbbnVtYmVyP107XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV1aUR1YWxSYW5nZUNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudDxFdWlEdWFsUmFuZ2VTaWduYXR1cmU-IHtcbiAgLy8gRGVmYXVsdHNcbiAgQGFyZ09yRGVmYXVsdERlY29yYXRvcigwKSBtaW4hOiBudW1iZXI7XG4gIEBhcmdPckRlZmF1bHREZWNvcmF0b3IoMTAwKSBtYXghOiBudW1iZXI7XG4gIEBhcmdPckRlZmF1bHREZWNvcmF0b3IoMSkgc3RlcCE6IG51bWJlcjtcbiAgQGFyZ09yRGVmYXVsdERlY29yYXRvcihmYWxzZSkgZnVsbFdpZHRoITogYm9vbGVhbjtcbiAgQGFyZ09yRGVmYXVsdERlY29yYXRvcihmYWxzZSkgY29tcHJlc3NlZCE6IGJvb2xlYW47XG4gIEBhcmdPckRlZmF1bHREZWNvcmF0b3IoZmFsc2UpIHNob3dMYWJlbHMhOiBib29sZWFuO1xuICBAYXJnT3JEZWZhdWx0RGVjb3JhdG9yKGZhbHNlKSBzaG93SW5wdXQhOiBib29sZWFuIHwgc3RyaW5nO1xuICBAYXJnT3JEZWZhdWx0RGVjb3JhdG9yKHRydWUpIHNob3dSYW5nZSE6IGJvb2xlYW47XG4gIEBhcmdPckRlZmF1bHREZWNvcmF0b3IoZmFsc2UpIHNob3dUaWNrcyE6IGJvb2xlYW47XG4gIEBhcmdPckRlZmF1bHREZWNvcmF0b3IoW10pIGxldmVscyE6IEV1aVJhbmdlTGV2ZWxbXTtcblxuICAvL1N0YXRlXG4gIEB0cmFja2VkIGlkOiBzdHJpbmcgPSB0aGlzLmFyZ3MuaWQgfHwgZ3VpZEZvcih7fSk7XG4gIEB0cmFja2VkIGhhc0ZvY3VzID0gZmFsc2U7XG4gIEB0cmFja2VkIHJhbmdlU2xpZGVyUmVmQXZhaWxhYmxlID0gZmFsc2U7XG4gIEB0cmFja2VkIGlzUG9wb3Zlck9wZW4gPSBmYWxzZTtcbiAgQHRyYWNrZWQgcmFuZ2VXaWR0aDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBAdHJhY2tlZCBpc1Zpc2libGUgPSB0cnVlO1xuICAvLy9cblxuICBwcmV2ZW50UG9wb3ZlckNsb3NlID0gZmFsc2U7XG4gIHJhbmdlU2xpZGVyUmVmOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgQGFjdGlvblxuICBkaWRJbnNlcnRSYW5nZVNsaWRlcihyZWY6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5yYW5nZVNsaWRlclJlZiA9IHJlZjtcblxuICAgIHRoaXMucmFuZ2VTbGlkZXJSZWZBdmFpbGFibGUgPSAhIXJlZjtcbiAgICB0aGlzLnJhbmdlV2lkdGggPSByZWYgPyByZWYuY2xpZW50V2lkdGggOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAodGhpcy5yYW5nZVNsaWRlclJlZj8uY2xpZW50V2lkdGggJiYgIXRoaXMuaXNWaXNpYmxlKSB7XG4gICAgICB0aGlzLmlzVmlzaWJsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGxvd2VyVmFsdWUoKTogVmFsdWVNZW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFyZ3MudmFsdWUgPyB0aGlzLmFyZ3MudmFsdWVbMF0gOiB0aGlzLm1pbjtcbiAgfVxuXG4gIGdldCB1cHBlclZhbHVlKCk6IFZhbHVlTWVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5hcmdzLnZhbHVlID8gdGhpcy5hcmdzLnZhbHVlWzFdIDogdGhpcy5tYXg7XG4gIH1cblxuICBnZXQgbG93ZXJWYWx1ZUlzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzV2l0aGluUmFuZ2UodGhpcy5taW4sIHRoaXMudXBwZXJWYWx1ZSwgdGhpcy5sb3dlclZhbHVlKTtcbiAgfVxuXG4gIGdldCB1cHBlclZhbHVlSXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNXaXRoaW5SYW5nZSh0aGlzLmxvd2VyVmFsdWUsIHRoaXMubWF4LCB0aGlzLnVwcGVyVmFsdWUpO1xuICB9XG5cbiAgZ2V0IGlzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubG93ZXJWYWx1ZUlzVmFsaWQgJiYgdGhpcy51cHBlclZhbHVlSXNWYWxpZDtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgX2RldGVybWluZUludmFsaWRUaHVtYk1vdmVtZW50KFxuICAgIG5ld1ZhbDogVmFsdWVNZW1iZXIsXG4gICAgbG93ZXI6IFZhbHVlTWVtYmVyLFxuICAgIHVwcGVyOiBWYWx1ZU1lbWJlcixcbiAgICBlOiBFdmVudFxuICApOiB2b2lkIHtcbiAgICAvLyBJZiB0aGUgdmFsdWVzIGFyZSBpbnZhbGlkLCBmaW5kIHdoZXRoZXIgdGhlIG5ldyB2YWx1ZSBpcyBpbiB0aGUgdXBwZXJcbiAgICAvLyBvciBsb3dlciBoYWxmIGFuZCBtb3ZlIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGUgdG8gdGhlIG5ldyB2YWx1ZSxcbiAgICAvLyB3aGlsZSB0aGUgb3RoZXIgaGFuZGxlIGdldHMgbW92ZWQgdG8gdGhlIG9wcG9zaXRlIGJvdW5kIChpZiBpbnZhbGlkKVxuICAgIGNvbnN0IGxvd2VySGFsZiA9IE1hdGguYWJzKHRoaXMubWF4IC0gdGhpcy5taW4pIC8gMiArIHRoaXMubWluO1xuICAgIGNvbnN0IG5ld1ZhbElzTG93ID0gaXNXaXRoaW5SYW5nZSh0aGlzLm1pbiwgbG93ZXJIYWxmLCBuZXdWYWwpO1xuXG4gICAgaWYgKG5ld1ZhbElzTG93KSB7XG4gICAgICBsb3dlciA9IG5ld1ZhbDtcbiAgICAgIHVwcGVyID0gIXRoaXMudXBwZXJWYWx1ZUlzVmFsaWQgPyB0aGlzLm1heCA6IHVwcGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb3dlciA9ICF0aGlzLmxvd2VyVmFsdWVJc1ZhbGlkID8gdGhpcy5taW4gOiBsb3dlcjtcbiAgICAgIHVwcGVyID0gbmV3VmFsO1xuICAgIH1cblxuICAgIHRoaXMuX2hhbmRsZU9uQ2hhbmdlKGxvd2VyLCB1cHBlciwgZSk7XG4gIH1cblxuICBAYWN0aW9uXG4gIF9kZXRlcm1pbmVWYWxpZFRodW1iTW92ZW1lbnQoXG4gICAgbmV3VmFsOiBWYWx1ZU1lbWJlcixcbiAgICBsb3dlcjogVmFsdWVNZW1iZXIsXG4gICAgdXBwZXI6IFZhbHVlTWVtYmVyLFxuICAgIGU6IEV2ZW50XG4gICk6IHZvaWQge1xuICAgIC8vIExvd2VyIHRodW1iIHRhcmdldGVkIG9yIHJpZ2h0LW1vdmluZyBzd2FwIGhhcyBvY2N1cnJlZFxuICAgIGlmIChcbiAgICAgIE1hdGguYWJzKChsb3dlciBhcyBudW1iZXIpIC0gKG5ld1ZhbCBhcyBudW1iZXIpKSA8XG4gICAgICBNYXRoLmFicygodXBwZXIgYXMgbnVtYmVyKSAtIChuZXdWYWwgYXMgbnVtYmVyKSlcbiAgICApIHtcbiAgICAgIGxvd2VyID0gbmV3VmFsO1xuICAgIH1cbiAgICAvLyBVcHBlciB0aHVtYiB0YXJnZXRlZCBvciBsZWZ0LW1vdmluZyBzd2FwIGhhcyBvY2N1cnJlZFxuICAgIGVsc2Uge1xuICAgICAgdXBwZXIgPSBuZXdWYWw7XG4gICAgfVxuXG4gICAgdGhpcy5faGFuZGxlT25DaGFuZ2UobG93ZXIsIHVwcGVyLCBlKTtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgX2RldGVybWluZVRodW1iTW92ZW1lbnQobmV3VmFsOiBudW1iZXIsIGU6IEV2ZW50KTogdm9pZCB7XG4gICAgLy8gRGV0ZXJtaW5lIHRodW1iIG1vdmVtZW50IGJhc2VkIG9uIHNsaWRlciBpbnRlcmFjdGlvblxuICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7XG4gICAgICAvLyBOb24tc3RhbmRhcmQgcG9zaXRpb25pbmcgZm9sbG93c1xuICAgICAgdGhpcy5fZGV0ZXJtaW5lSW52YWxpZFRodW1iTW92ZW1lbnQoXG4gICAgICAgIG5ld1ZhbCxcbiAgICAgICAgdGhpcy5sb3dlclZhbHVlLFxuICAgICAgICB0aGlzLnVwcGVyVmFsdWUsXG4gICAgICAgIGVcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFN0YW5kYXJkIHBvc2l0aW9uaW5nIGJhc2VkIG9uIGNsaWNrIGV2ZW50IHByb3hpbWl0eSB0byB0aHVtYiBsb2NhdGlvbnNcbiAgICAgIHRoaXMuX2RldGVybWluZVZhbGlkVGh1bWJNb3ZlbWVudChcbiAgICAgICAgbmV3VmFsLFxuICAgICAgICB0aGlzLmxvd2VyVmFsdWUsXG4gICAgICAgIHRoaXMudXBwZXJWYWx1ZSxcbiAgICAgICAgZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBAYWN0aW9uXG4gIF9oYW5kbGVPbkNoYW5nZShsb3dlcjogVmFsdWVNZW1iZXIsIHVwcGVyOiBWYWx1ZU1lbWJlciwgZTogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpc1ZhbGlkID1cbiAgICAgIGlzV2l0aGluUmFuZ2UodGhpcy5taW4sIHVwcGVyLCBsb3dlcikgJiZcbiAgICAgIGlzV2l0aGluUmFuZ2UobG93ZXIsIHRoaXMubWF4LCB1cHBlcik7XG5cbiAgICB0aGlzLmFyZ3Mub25DaGFuZ2UoW2xvd2VyLCB1cHBlcl0sIGlzVmFsaWQsIGUpO1xuICB9XG5cbiAgQGFjdGlvblxuICBoYW5kbGVTbGlkZXJDaGFuZ2UoZTogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXRlcm1pbmVUaHVtYk1vdmVtZW50KFxuICAgICAgTnVtYmVyKChlLmN1cnJlbnRUYXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpLFxuICAgICAgZVxuICAgICk7XG4gIH1cblxuICBAYWN0aW9uXG4gIF9yZXNldFRvUmFuZ2VFbmRzKGU6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBBcmJpdHJhcnkgZGVjaXNpb24gdG8gcGFzcyBgbWluYCBpbnN0ZWFkIG9mIGBtYXhgLiBSZXN1bHQgaXMgdGhlIHNhbWUuXG4gICAgdGhpcy5fZGV0ZXJtaW5lSW52YWxpZFRodW1iTW92ZW1lbnQoXG4gICAgICB0aGlzLm1pbixcbiAgICAgIHRoaXMubG93ZXJWYWx1ZSxcbiAgICAgIHRoaXMudXBwZXJWYWx1ZSxcbiAgICAgIGVcbiAgICApO1xuICB9XG5cbiAgQGFjdGlvblxuICBfaXNEaXJlY3Rpb25hbEtleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIFtcbiAgICAgICAga2V5cy5BUlJPV19VUCxcbiAgICAgICAga2V5cy5BUlJPV19SSUdIVCxcbiAgICAgICAga2V5cy5BUlJPV19ET1dOLFxuICAgICAgICBrZXlzLkFSUk9XX0xFRlRcbiAgICAgIF0uaW5kZXhPZihldmVudC5rZXkgYXMga2V5cykgPiAtMVxuICAgICk7XG4gIH1cblxuICBAYWN0aW9uXG4gIGhhbmRsZUlucHV0S2V5RG93bihlOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLy8gUmVsZXZhbnQgb25seSB3aGVuIGluaXRpYWwgdmFsdWVzIGFyZSBib3RoIGAnJ2AgYW5kIGBzaG93SW5wdXRgIGlzIHNldFxuICAgIGlmICh0aGlzLl9pc0RpcmVjdGlvbmFsS2V5UHJlc3MoZSkgJiYgIXRoaXMuaXNWYWxpZCkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5fcmVzZXRUb1JhbmdlRW5kcyhlKTtcbiAgICB9XG4gIH1cblxuICBAYWN0aW9uXG4gIGhhbmRsZUxvd2VySW5wdXRDaGFuZ2UoZTogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9oYW5kbGVPbkNoYW5nZShcbiAgICAgIChlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSxcbiAgICAgIHRoaXMudXBwZXJWYWx1ZSxcbiAgICAgIGVcbiAgICApO1xuICB9XG5cbiAgQGFjdGlvblxuICBoYW5kbGVVcHBlcklucHV0Q2hhbmdlKGU6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5faGFuZGxlT25DaGFuZ2UoXG4gICAgICB0aGlzLmxvd2VyVmFsdWUsXG4gICAgICAoZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUsXG4gICAgICBlXG4gICAgKTtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgX2hhbmRsZUtleURvd24odmFsdWU6IFZhbHVlTWVtYmVyLCBldmVudDogS2V5Ym9hcmRFdmVudCk6IG51bWJlciB7XG4gICAgbGV0IG5ld1ZhbCA9IE51bWJlcih2YWx1ZSk7XG4gICAgbGV0IHN0ZXBSZW1haW5kZXIgPSAwO1xuICAgIGNvbnN0IHN0ZXAgPSB0aGlzLmFyZ3Muc3RlcCB8fCAxO1xuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2Uga2V5cy5BUlJPV19VUDpcbiAgICAgIGNhc2Uga2V5cy5BUlJPV19SSUdIVDpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgbmV3VmFsICs9IHN0ZXA7XG4gICAgICAgIHN0ZXBSZW1haW5kZXIgPSAobmV3VmFsIC0gdGhpcy5taW4pICUgc3RlcDtcblxuICAgICAgICBpZiAoc3RlcCAhPT0gMSAmJiBzdGVwUmVtYWluZGVyID4gMCkge1xuICAgICAgICAgIG5ld1ZhbCA9IG5ld1ZhbCAtIHN0ZXBSZW1haW5kZXI7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Uga2V5cy5BUlJPV19ET1dOOlxuICAgICAgY2FzZSBrZXlzLkFSUk9XX0xFRlQ6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG5ld1ZhbCAtPSBzdGVwO1xuICAgICAgICBzdGVwUmVtYWluZGVyID0gKG5ld1ZhbCAtIHRoaXMubWluKSAlIHN0ZXA7XG5cbiAgICAgICAgaWYgKHN0ZXAgIT09IDEgJiYgc3RlcFJlbWFpbmRlciA-IDApIHtcbiAgICAgICAgICBuZXdWYWwgPSBuZXdWYWwgKyAoc3RlcCAtIHN0ZXBSZW1haW5kZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld1ZhbDtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgaGFuZGxlTG93ZXJLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgbGV0IGxvd2VyID0gdGhpcy5sb3dlclZhbHVlO1xuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2Uga2V5cy5UQUI6XG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmICghdGhpcy5sb3dlclZhbHVlSXNWYWxpZCkge1xuICAgICAgICAgIC8vIFJlbGV2YW50IG9ubHkgd2hlbiBpbml0aWFsIHZhbHVlIGlzIGAnJ2AgYW5kIGBzaG93SW5wdXRgIGlzIG5vdCBzZXRcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMuX3Jlc2V0VG9SYW5nZUVuZHMoZXZlbnQpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbG93ZXIgPSB0aGlzLl9oYW5kbGVLZXlEb3duKGxvd2VyLCBldmVudCk7XG4gICAgfVxuXG4gICAgaWYgKGxvd2VyID49ICh0aGlzLnVwcGVyVmFsdWUgYXMgbnVtYmVyKSB8fCBsb3dlciA8IHRoaXMubWluKSByZXR1cm47XG4gICAgdGhpcy5faGFuZGxlT25DaGFuZ2UobG93ZXIsIHRoaXMudXBwZXJWYWx1ZSwgZXZlbnQpO1xuICB9XG5cbiAgQGFjdGlvblxuICBoYW5kbGVVcHBlcktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgdXBwZXIgPSB0aGlzLnVwcGVyVmFsdWU7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSBrZXlzLlRBQjpcbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKCF0aGlzLnVwcGVyVmFsdWVJc1ZhbGlkKSB7XG4gICAgICAgICAgLy8gUmVsZXZhbnQgb25seSB3aGVuIGluaXRpYWwgdmFsdWUgaXMgYCcnYCBhbmQgYHNob3dJbnB1dGAgaXMgbm90IHNldFxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5fcmVzZXRUb1JhbmdlRW5kcyhldmVudCk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB1cHBlciA9IHRoaXMuX2hhbmRsZUtleURvd24odXBwZXIsIGV2ZW50KTtcbiAgICB9XG5cbiAgICBpZiAodXBwZXIgPD0gKHRoaXMubG93ZXJWYWx1ZSBhcyBudW1iZXIpIHx8IHVwcGVyID4gdGhpcy5tYXgpIHJldHVybjtcbiAgICB0aGlzLl9oYW5kbGVPbkNoYW5nZSh0aGlzLmxvd2VyVmFsdWUsIHVwcGVyLCBldmVudCk7XG4gIH1cblxuICBAYWN0aW9uXG4gIGNhbGN1bGF0ZVRodW1iUG9zaXRpb25TdHlsZSh2YWx1ZTogbnVtYmVyLCB3aWR0aD86IG51bWJlcik6IHsgbGVmdDogc3RyaW5nIH0ge1xuICAgIC8vIENhbGN1bGF0ZSB0aGUgbGVmdCBwb3NpdGlvbiBiYXNlZCBvbiB2YWx1ZVxuICAgIGNvbnN0IGRlY2ltYWwgPSAodmFsdWUgLSB0aGlzLm1pbikgLyAodGhpcy5tYXggLSB0aGlzLm1pbik7XG4gICAgLy8gTXVzdCBiZSBiZXR3ZWVuIDAtMTAwJVxuICAgIGxldCB2YWx1ZVBvc2l0aW9uID0gZGVjaW1hbCA8PSAxID8gZGVjaW1hbCA6IDE7XG5cbiAgICB2YWx1ZVBvc2l0aW9uID0gdmFsdWVQb3NpdGlvbiA-PSAwID8gdmFsdWVQb3NpdGlvbiA6IDA7XG5cbiAgICBjb25zdCB0cmFja1dpZHRoID1cbiAgICAgIHRoaXMuYXJncy5zaG93SW5wdXQgPT09ICdpbnB1dFdpdGhQb3BvdmVyJyAmJiAhIXdpZHRoXG4gICAgICAgID8gd2lkdGhcbiAgICAgICAgOiB0aGlzLnJhbmdlU2xpZGVyUmVmPy5jbGllbnRXaWR0aDtcblxuICAgIGxldCB0aHVtYlRvVHJhY2tSYXRpbyA9IDA7XG5cbiAgICBpZiAodHJhY2tXaWR0aCkge1xuICAgICAgdGh1bWJUb1RyYWNrUmF0aW8gPSBFVUlfVEhVTUJfU0laRSAvIHRyYWNrV2lkdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRodW1iVG9UcmFja1JhdGlvID0gRVVJX1RIVU1CX1NJWkUgLyAxO1xuICAgIH1cblxuICAgIGNvbnN0IHRyYWNrUG9zaXRpb25TY2FsZSA9ICgxIC0gdGh1bWJUb1RyYWNrUmF0aW8pICogMTAwO1xuXG4gICAgcmV0dXJuIHsgbGVmdDogYCR7dmFsdWVQb3NpdGlvbiAqIHRyYWNrUG9zaXRpb25TY2FsZX0lYCB9O1xuICB9XG5cbiAgQGFjdGlvblxuICBzZXRQcmV2ZW50UG9wb3ZlckNsb3NlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5wcmV2ZW50UG9wb3ZlckNsb3NlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgY2FsY3VsYXRlTG93ZXJWYWx1ZVRodW1iUG9zaXRpb25TdHlsZSgpOiB7IGxlZnQ6IHN0cmluZyB9IHtcbiAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVUaHVtYlBvc2l0aW9uU3R5bGUoXG4gICAgICBOdW1iZXIodGhpcy5sb3dlclZhbHVlKSB8fCB0aGlzLm1pbixcbiAgICAgIHRoaXMucmFuZ2VXaWR0aFxuICAgICk7XG4gIH1cblxuICBnZXQgY2FsY3VsYXRlVXBwZXJWYWx1ZVRodW1iUG9zaXRpb25TdHlsZSgpOiB7IGxlZnQ6IHN0cmluZyB9IHtcbiAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVUaHVtYlBvc2l0aW9uU3R5bGUoXG4gICAgICBOdW1iZXIodGhpcy51cHBlclZhbHVlKSB8fCB0aGlzLm1heCxcbiAgICAgIHRoaXMucmFuZ2VXaWR0aFxuICAgICk7XG4gIH1cblxuICBAYWN0aW9uXG4gIHRvZ2dsZUhhc0ZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuaGFzRm9jdXMgPSAhdGhpcy5oYXNGb2N1cztcbiAgfVxuXG4gIEBhY3Rpb25cbiAgb25UaHVtYkZvY3VzKGU6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hcmdzLm9uRm9jdXMpIHtcbiAgICAgIHRoaXMuYXJncy5vbkZvY3VzKGUpO1xuICAgIH1cblxuICAgIHRoaXMuaGFzRm9jdXMgPSB0cnVlO1xuICB9XG5cbiAgQGFjdGlvblxuICBvblRodW1iQmx1cihlOiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXJncy5vbkJsdXIpIHtcbiAgICAgIHRoaXMuYXJncy5vbkJsdXIoZSk7XG4gICAgfVxuXG4gICAgdGhpcy5oYXNGb2N1cyA9IGZhbHNlO1xuICB9XG5cbiAgQGFjdGlvblxuICBvbklucHV0Rm9jdXMoZTogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFyZ3Mub25Gb2N1cykge1xuICAgICAgdGhpcy5hcmdzLm9uRm9jdXMoZSk7XG4gICAgfVxuXG4gICAgdGhpcy5wcmV2ZW50UG9wb3ZlckNsb3NlID0gdHJ1ZTtcbiAgICB0aGlzLmlzUG9wb3Zlck9wZW4gPSB0cnVlO1xuICB9XG5cbiAgQGFjdGlvblxuICBvbklucHV0Qmx1cihlOiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgbGF0ZXIoXG4gICAgICB0aGlzLFxuICAgICAgKCkgPT4ge1xuICAgICAgICAvLyBTYWZhcmkgZG9lcyBub3QgcmVjb2duaXplIGFueSBmb2N1cy1yZWxhdGVkIGV2ZW50aW5nIGZvciBpbnB1dFt0eXBlPXJhbmdlXVxuICAgICAgICAvLyBtYWtpbmcgaXQgaW1wb3NzaWJsZSB0byBjYXB0dXJlIGl0cyBzdGF0ZSB1c2luZyBhY3RpdmUvZm9jdXMvcmVsYXRlZFRhcmdldFxuICAgICAgICAvLyBJbnN0ZWFkLCBhIHByZXZlbnRpb24gZmxhZyBpcyBzZXQgb24gbW91c2Vkb3duLCB3aXRoIGEgd2FpdGluZyBwZXJpb2QgaGVyZS5cbiAgICAgICAgLy8gTW91c2Vkb3duIGlzIHZpYWJsZSBiZWNhdXNlIGluIHRoZSBwb3BvdmVyIGNhc2UsIGl0IGlzIGluYWNjZXNzaWJsZSB2aWEga2V5Ym9hcmQgKGludGVudGlvbmFsbHkpXG4gICAgICAgIGlmICh0aGlzLnByZXZlbnRQb3BvdmVyQ2xvc2UpIHtcbiAgICAgICAgICB0aGlzLnByZXZlbnRQb3BvdmVyQ2xvc2UgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFyZ3Mub25CbHVyKSB7XG4gICAgICAgICAgdGhpcy5hcmdzLm9uQmx1cihlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xvc2VQb3BvdmVyKCk7XG4gICAgICB9LFxuICAgICAgMjAwXG4gICAgKTtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgY2xvc2VQb3BvdmVyKCk6IHZvaWQge1xuICAgIHRoaXMucHJldmVudFBvcG92ZXJDbG9zZSA9IGZhbHNlO1xuICAgIHRoaXMuaXNQb3BvdmVyT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgQGFjdGlvblxuICBvblJlc2l6ZSh3aWR0aD86IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucmFuZ2VXaWR0aCA9IHdpZHRoO1xuICB9XG5cbiAgZ2V0IGRpZ2l0VG9sZXJhbmNlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWF4KFN0cmluZyh0aGlzLm1pbikubGVuZ3RoLCBTdHJpbmcodGhpcy5tYXgpLmxlbmd0aCk7XG4gIH1cblxuICBnZXQgc2hvd0lucHV0T25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93SW5wdXQgPT09ICdpbnB1dFdpdGhQb3BvdmVyJztcbiAgfVxuXG4gIGdldCBjYW5TaG93RHJvcGRvd24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0lucHV0T25seSAmJiAhdGhpcy5hcmdzLnJlYWRPbmx5ICYmICF0aGlzLmFyZ3MuZGlzYWJsZWQ7XG4gIH1cblxuICA8dGVtcGxhdGU-XG4gICAge3sjbGV0XG4gICAgICAoYW5kIChhcmdPckRlZmF1bHQgQGlzUHJlcGVuZFByb3ZpZGVkIHRydWUpIChoYXMtYmxvY2sgXCJwcmVwZW5kXCIpKVxuICAgICAgKGFuZCAoYXJnT3JEZWZhdWx0IEBpc0FwcGVuZFByb3ZpZGVkIHRydWUpIChoYXMtYmxvY2sgXCJhcHBlbmRcIikpXG4gICAgICAoYW5kIChub3QgKGFyZ09yRGVmYXVsdCBAaXNGYWtlTWF4QmxvY2sgZmFsc2UpKSAoaGFzLWJsb2NrIFwibWF4XCIpKVxuICAgICAgKGFuZCAobm90IChhcmdPckRlZmF1bHQgQGlzRmFrZU1pbkJsb2NrIGZhbHNlKSkgKGhhcy1ibG9jayBcIm1pblwiKSlcbiAgICAgIGFzIHxoYXNQcmVwZW5kIGhhc0FwcGVuZCBoYXNNYXhCbG9jayBoYXNNaW5CbG9ja3xcbiAgICB9fVxuICAgICAge3sjaWYgdGhpcy5zaG93SW5wdXRPbmx5fX1cbiAgICAgICAgPEV1aUlucHV0UG9wb3ZlclxuICAgICAgICAgIGNsYXNzPVwiZXVpUmFuZ2VfX3BvcG92ZXJcIlxuICAgICAgICAgIEBmdWxsV2lkdGg9e3t0aGlzLmZ1bGxXaWR0aH19XG4gICAgICAgICAgQGlzT3Blbj17e3RoaXMuaXNQb3BvdmVyT3Blbn19XG4gICAgICAgICAgQGNsb3NlUG9wb3Zlcj17e3RoaXMuY2xvc2VQb3BvdmVyfX1cbiAgICAgICAgICBAZGlzYWJsZUZvY3VzVHJhcD17e3RydWV9fVxuICAgICAgICAgIEBvblBhbmVsUmVzaXplPXt7dGhpcy5vblJlc2l6ZX19XG4gICAgICAgID5cbiAgICAgICAgICA8OmlucHV0PlxuICAgICAgICAgICAgPEV1aUZvcm1Db250cm9sTGF5b3V0RGVsaW1pdGVkXG4gICAgICAgICAgICAgIEBmdWxsV2lkdGg9e3t0aGlzLmZ1bGxXaWR0aH19XG4gICAgICAgICAgICAgIEBjb21wcmVzc2VkPXt7dGhpcy5jb21wcmVzc2VkfX1cbiAgICAgICAgICAgICAgQHJlYWRPbmx5PXt7QHJlYWRPbmx5fX1cbiAgICAgICAgICAgICAgQGRpc2FibGVkPXt7QGRpc2FibGVkfX1cbiAgICAgICAgICAgICAgQHVzZUdyb3VwPXt7b3IgaGFzUHJlcGVuZCBoYXNBcHBlbmR9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8OnByZXBlbmQgYXMgfHByZXBlbmRDbGFzc2VzfD5cbiAgICAgICAgICAgICAgICB7e3lpZWxkIHByZXBlbmRDbGFzc2VzIHRvPVwicHJlcGVuZFwifX1cbiAgICAgICAgICAgICAgPC86cHJlcGVuZD5cbiAgICAgICAgICAgICAgPDpzdGFydENvbnRyb2wgYXMgfGNsYXNzZXN8PlxuICAgICAgICAgICAgICAgIDxFdWlSYW5nZUlucHV0XG4gICAgICAgICAgICAgICAgICBjbGFzcz17e2NsYXNzZXN9fVxuICAgICAgICAgICAgICAgICAgQGRpZ2l0VG9sZXJhbmNlPXt7dGhpcy5kaWdpdFRvbGVyYW5jZX19XG4gICAgICAgICAgICAgICAgICBAc2lkZT1cIm1pblwiXG4gICAgICAgICAgICAgICAgICBAbWluPXt7dGhpcy5taW59fVxuICAgICAgICAgICAgICAgICAge3shQGdsaW50LWV4cGVjdC1lcnJvcn19XG4gICAgICAgICAgICAgICAgICBAbWF4PXt7Y2FzdFRvIHRoaXMudXBwZXJWYWx1ZSB0bz1cIm51bWJlclwifX1cbiAgICAgICAgICAgICAgICAgIEBzdGVwPXt7dGhpcy5zdGVwfX1cbiAgICAgICAgICAgICAgICAgIEB2YWx1ZT17e3RoaXMubG93ZXJWYWx1ZX19XG4gICAgICAgICAgICAgICAgICBAZGlzYWJsZWQ9e3tAZGlzYWJsZWR9fVxuICAgICAgICAgICAgICAgICAgQGNvbXByZXNzZWQ9e3t0aGlzLmNvbXByZXNzZWR9fVxuICAgICAgICAgICAgICAgICAgQG9uQ2hhbmdlPXt7dGhpcy5oYW5kbGVMb3dlcklucHV0Q2hhbmdlfX1cbiAgICAgICAgICAgICAgICAgIEBuYW1lPVwie3tAbmFtZX19LW1pblZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIEByZWFkT25seT17e0ByZWFkT25seX19XG4gICAgICAgICAgICAgICAgICBAYXV0b1NpemU9e3tmYWxzZX19XG4gICAgICAgICAgICAgICAgICBAZnVsbFdpZHRoPXt7dGhpcy5mdWxsV2lkdGh9fVxuICAgICAgICAgICAgICAgICAgQGlzSW52YWxpZD17e0Bpc0ludmFsaWR9fVxuICAgICAgICAgICAgICAgICAgQGlzUHJlcGVuZFByb3ZpZGVkPXt7aGFzQXBwZW5kfX1cbiAgICAgICAgICAgICAgICAgIEBpc0FwcGVuZFByb3ZpZGVkPXt7aGFzUHJlcGVuZH19XG4gICAgICAgICAgICAgICAgICBAY29udHJvbE9ubHk9e3t0cnVlfX1cbiAgICAgICAgICAgICAgICAgIEBkaXNhYmxlPXt7QGRpc2FibGV9fVxuICAgICAgICAgICAgICAgICAgLi4uYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgICAge3tvbiBcIm1vdXNlZG93blwiIChmbiB0aGlzLnNldFByZXZlbnRQb3BvdmVyQ2xvc2UgdHJ1ZSl9fVxuICAgICAgICAgICAgICAgICAge3tvbktleSBcIl9hbGxcIiB0aGlzLmhhbmRsZUlucHV0S2V5RG93bn19XG4gICAgICAgICAgICAgICAgICB7e29uXG4gICAgICAgICAgICAgICAgICAgIFwiZm9jdXNcIlxuICAgICAgICAgICAgICAgICAgICAoaWZcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhblNob3dEcm9wZG93biB0aGlzLm9uSW5wdXRGb2N1cyAob3B0aW9uYWwgQG9uRm9jdXMpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICB7e29uXG4gICAgICAgICAgICAgICAgICAgIFwiYmx1clwiXG4gICAgICAgICAgICAgICAgICAgIChpZlxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FuU2hvd0Ryb3Bkb3duIHRoaXMub25JbnB1dEJsdXIgKG9wdGlvbmFsIEBvbkJsdXIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICB7e29uIFwiaW5wdXRcIiB0aGlzLmhhbmRsZUxvd2VySW5wdXRDaGFuZ2V9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDw6cHJlcGVuZCBhcyB8Y2xhc3Nlc3w-XG4gICAgICAgICAgICAgICAgICAgIHt7eWllbGQgY2xhc3NlcyB0bz1cInByZXBlbmRcIn19XG4gICAgICAgICAgICAgICAgICA8LzpwcmVwZW5kPlxuICAgICAgICAgICAgICAgICAgPDphcHBlbmQgYXMgfGNsYXNzZXN8PlxuICAgICAgICAgICAgICAgICAgICB7e3lpZWxkIGNsYXNzZXMgdG89XCJhcHBlbmRcIn19XG4gICAgICAgICAgICAgICAgICA8LzphcHBlbmQ-XG4gICAgICAgICAgICAgICAgPC9FdWlSYW5nZUlucHV0PlxuICAgICAgICAgICAgICA8LzpzdGFydENvbnRyb2w-XG4gICAgICAgICAgICAgIDw6ZW5kQ29udHJvbCBhcyB8Y2xhc3Nlc3w-XG4gICAgICAgICAgICAgICAgPEV1aVJhbmdlSW5wdXRcbiAgICAgICAgICAgICAgICAgIGNsYXNzPXt7Y2xhc3Nlc319XG4gICAgICAgICAgICAgICAgICBAZGlnaXRUb2xlcmFuY2U9e3t0aGlzLmRpZ2l0VG9sZXJhbmNlfX1cbiAgICAgICAgICAgICAgICAgIEBzaWRlPVwibWF4XCJcbiAgICAgICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICAgICAgQG1pbj17e2Nhc3RUbyB0aGlzLmxvd2VyVmFsdWUgdG89XCJudW1iZXJcIn19XG4gICAgICAgICAgICAgICAgICBAbWF4PXt7dGhpcy5tYXh9fVxuICAgICAgICAgICAgICAgICAgQHN0ZXA9e3t0aGlzLnN0ZXB9fVxuICAgICAgICAgICAgICAgICAgQHZhbHVlPXt7dGhpcy51cHBlclZhbHVlfX1cbiAgICAgICAgICAgICAgICAgIEBkaXNhYmxlZD17e0BkaXNhYmxlZH19XG4gICAgICAgICAgICAgICAgICBAY29tcHJlc3NlZD17e3RoaXMuY29tcHJlc3NlZH19XG4gICAgICAgICAgICAgICAgICBAbmFtZT1cInt7QG5hbWV9fS1tYXhWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICBAcmVhZE9ubHk9e3tAcmVhZE9ubHl9fVxuICAgICAgICAgICAgICAgICAgQGF1dG9TaXplPXt7ZmFsc2V9fVxuICAgICAgICAgICAgICAgICAgQGZ1bGxXaWR0aD17e3RoaXMuZnVsbFdpZHRofX1cbiAgICAgICAgICAgICAgICAgIEBpc0ludmFsaWQ9e3tAaXNJbnZhbGlkfX1cbiAgICAgICAgICAgICAgICAgIEBpc1ByZXBlbmRQcm92aWRlZD17e2hhc0FwcGVuZH19XG4gICAgICAgICAgICAgICAgICBAaXNBcHBlbmRQcm92aWRlZD17e2hhc1ByZXBlbmR9fVxuICAgICAgICAgICAgICAgICAgQGNvbnRyb2xPbmx5PXt7dHJ1ZX19XG4gICAgICAgICAgICAgICAgICBAZGlzYWJsZT17e0BkaXNhYmxlfX1cbiAgICAgICAgICAgICAgICAgIC4uLmF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICAgIHt7b24gXCJtb3VzZWRvd25cIiAoZm4gdGhpcy5zZXRQcmV2ZW50UG9wb3ZlckNsb3NlIHRydWUpfX1cbiAgICAgICAgICAgICAgICAgIHt7b25LZXkgXCJfYWxsXCIgdGhpcy5oYW5kbGVJbnB1dEtleURvd259fVxuICAgICAgICAgICAgICAgICAge3tvblxuICAgICAgICAgICAgICAgICAgICBcImZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgKGlmXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5TaG93RHJvcGRvd24gdGhpcy5vbklucHV0Rm9jdXMgKG9wdGlvbmFsIEBvbkZvY3VzKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAge3tvblxuICAgICAgICAgICAgICAgICAgICBcImJsdXJcIlxuICAgICAgICAgICAgICAgICAgICAoaWZcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhblNob3dEcm9wZG93biB0aGlzLm9uSW5wdXRCbHVyIChvcHRpb25hbCBAb25CbHVyKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAge3tvbiBcImlucHV0XCIgdGhpcy5oYW5kbGVVcHBlcklucHV0Q2hhbmdlfX1cbiAgICAgICAgICAgICAgICA-XG4gICAgICAgICAgICAgICAgICA8OnByZXBlbmQgYXMgfGNsYXNzZXN8PlxuICAgICAgICAgICAgICAgICAgICB7e3lpZWxkIGNsYXNzZXMgdG89XCJwcmVwZW5kXCJ9fVxuICAgICAgICAgICAgICAgICAgPC86cHJlcGVuZD5cbiAgICAgICAgICAgICAgICAgIDw6YXBwZW5kIGFzIHxjbGFzc2VzfD5cbiAgICAgICAgICAgICAgICAgICAge3t5aWVsZCBjbGFzc2VzIHRvPVwiYXBwZW5kXCJ9fVxuICAgICAgICAgICAgICAgICAgPC86YXBwZW5kPlxuICAgICAgICAgICAgICAgIDwvRXVpUmFuZ2VJbnB1dD5cbiAgICAgICAgICAgICAgPC86ZW5kQ29udHJvbD5cbiAgICAgICAgICAgICAgPDphcHBlbmQgYXMgfGFwcGVuZENsYXNzZXN8PlxuICAgICAgICAgICAgICAgIHt7eWllbGQgYXBwZW5kQ2xhc3NlcyB0bz1cImFwcGVuZFwifX1cbiAgICAgICAgICAgICAgPC86YXBwZW5kPlxuICAgICAgICAgICAgPC9FdWlGb3JtQ29udHJvbExheW91dERlbGltaXRlZD5cbiAgICAgICAgICA8LzppbnB1dD5cbiAgICAgICAgICA8OmNvbnRlbnQ-XG4gICAgICAgICAgICA8RXVpUmFuZ2VXcmFwcGVyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZXVpRHVhbFJhbmdlXCJcbiAgICAgICAgICAgICAgQGZ1bGxXaWR0aD17e3RoaXMuZnVsbFdpZHRofX1cbiAgICAgICAgICAgICAgQGNvbXByZXNzZWQ9e3t0aGlzLmNvbXByZXNzZWR9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyNpZiB0aGlzLnNob3dMYWJlbHN9fVxuICAgICAgICAgICAgICAgIDxFdWlSYW5nZUxhYmVsIEBzaWRlPVwibWluXCIgQGRpc2FibGVkPXt7QGRpc2FibGVkfX0-XG4gICAgICAgICAgICAgICAgICB7eyNpZiBoYXNNaW5CbG9ja319XG4gICAgICAgICAgICAgICAgICAgIHt7eWllbGQgdGhpcy5taW4gdG89XCJtaW5cIn19XG4gICAgICAgICAgICAgICAgICB7e2Vsc2V9fVxuICAgICAgICAgICAgICAgICAgICB7e3RoaXMubWlufX1cbiAgICAgICAgICAgICAgICAgIHt7L2lmfX1cbiAgICAgICAgICAgICAgICA8L0V1aVJhbmdlTGFiZWw-XG4gICAgICAgICAgICAgIHt7L2lmfX1cbiAgICAgICAgICAgICAgPEV1aVJhbmdlVHJhY2tcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj17e2lmIChlcSB0aGlzLnNob3dJbnB1dCB0cnVlKSBcInRydWVcIiBcImZhbHNlXCJ9fVxuICAgICAgICAgICAgICAgIEBjb21wcmVzc2VkPXt7dGhpcy5jb21wcmVzc2VkfX1cbiAgICAgICAgICAgICAgICBAZGlzYWJsZWQ9e3tAZGlzYWJsZWR9fVxuICAgICAgICAgICAgICAgIEBtYXg9e3t0aGlzLm1heH19XG4gICAgICAgICAgICAgICAgQG1pbj17e3RoaXMubWlufX1cbiAgICAgICAgICAgICAgICBAc3RlcD17e3RoaXMuc3RlcH19XG4gICAgICAgICAgICAgICAgQHNob3dUaWNrcz17e3RoaXMuc2hvd1RpY2tzfX1cbiAgICAgICAgICAgICAgICBAdGlja0ludGVydmFsPXt7QHRpY2tJbnRlcnZhbH19XG4gICAgICAgICAgICAgICAgQHRpY2tzPXt7QHRpY2tzfX1cbiAgICAgICAgICAgICAgICBAbGV2ZWxzPXt7dGhpcy5sZXZlbHN9fVxuICAgICAgICAgICAgICAgIEBvbkNoYW5nZT17e3RoaXMuaGFuZGxlU2xpZGVyQ2hhbmdlfX1cbiAgICAgICAgICAgICAgICBAdmFsdWU9e3tAdmFsdWV9fVxuICAgICAgICAgICAgICA-XG4gICAgICAgICAgICAgICAge3sjaWYgKGFuZCB0aGlzLnNob3dSYW5nZSB0aGlzLmlzVmFsaWQpfX1cbiAgICAgICAgICAgICAgICAgIDxFdWlSYW5nZUhpZ2hsaWdodFxuICAgICAgICAgICAgICAgICAgICBAY29tcHJlc3NlZD17e3RoaXMuY29tcHJlc3NlZH19XG4gICAgICAgICAgICAgICAgICAgIEBoYXNGb2N1cz17e3RoaXMuaGFzRm9jdXN9fVxuICAgICAgICAgICAgICAgICAgICBAc2hvd1RpY2tzPXt7dGhpcy5zaG93VGlja3N9fVxuICAgICAgICAgICAgICAgICAgICB7eyFAZ2xpbnQtZXhwZWN0LWVycm9yfX1cbiAgICAgICAgICAgICAgICAgICAgQG1pbj17e2Nhc3RUbyB0aGlzLm1pbiB0bz1cIm51bWJlclwifX1cbiAgICAgICAgICAgICAgICAgICAge3shQGdsaW50LWV4cGVjdC1lcnJvcn19XG4gICAgICAgICAgICAgICAgICAgIEBtYXg9e3tjYXN0VG8gdGhpcy5tYXggdG89XCJudW1iZXJcIn19XG4gICAgICAgICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICAgICAgICBAbG93ZXJWYWx1ZT17e2Nhc3RUbyB0aGlzLmxvd2VyVmFsdWUgdG89XCJudW1iZXJcIn19XG4gICAgICAgICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICAgICAgICBAdXBwZXJWYWx1ZT17e2Nhc3RUbyB0aGlzLnVwcGVyVmFsdWUgdG89XCJudW1iZXJcIn19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIHt7L2lmfX1cbiAgICAgICAgICAgICAgICA8RXVpUmFuZ2VTbGlkZXJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpRHVhbFJhbmdlX19zbGlkZXJcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIEBpZD17e3RoaXMuaWR9fVxuICAgICAgICAgICAgICAgICAgQG5hbWU9e3tAbmFtZX19XG4gICAgICAgICAgICAgICAgICBAbWluPXt7dGhpcy5taW59fVxuICAgICAgICAgICAgICAgICAgQG1heD17e3RoaXMubWF4fX1cbiAgICAgICAgICAgICAgICAgIEBzdGVwPXt7dGhpcy5zdGVwfX1cbiAgICAgICAgICAgICAgICAgIEBkaXNhYmxlZD17e0BkaXNhYmxlZH19XG4gICAgICAgICAgICAgICAgICBAY29tcHJlc3NlZD17e3RoaXMuY29tcHJlc3NlZH19XG4gICAgICAgICAgICAgICAgICBAb25DaGFuZ2U9e3t0aGlzLmhhbmRsZVNsaWRlckNoYW5nZX19XG4gICAgICAgICAgICAgICAgICBAc2hvd1RpY2tzPXt7dGhpcy5zaG93VGlja3N9fVxuICAgICAgICAgICAgICAgICAgQGhhc0ZvY3VzPXt7dGhpcy5oYXNGb2N1c319XG4gICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICAgIEBzaG93UmFuZ2U9e3t0aGlzLnNob3dSYW5nZX19XG4gICAgICAgICAgICAgICAgICAuLi5hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgICB7e2RpZEluc2VydCB0aGlzLmRpZEluc2VydFJhbmdlU2xpZGVyfX1cbiAgICAgICAgICAgICAgICAgIHt7b24gXCJtb3VzZWRvd25cIiAoZm4gdGhpcy5zZXRQcmV2ZW50UG9wb3ZlckNsb3NlIHRydWUpfX1cbiAgICAgICAgICAgICAgICAgIHt7b24gXCJmb2N1c1wiIChvcHRpb25hbCBAb25Gb2N1cyl9fVxuICAgICAgICAgICAgICAgICAge3tvbiBcImJsdXJcIiAob3B0aW9uYWwgQG9uQmx1cil9fVxuICAgICAgICAgICAgICAgICAge3tvbiBcImlucHV0XCIgdGhpcy5oYW5kbGVTbGlkZXJDaGFuZ2V9fVxuICAgICAgICAgICAgICAgIC8-XG4gICAgICAgICAgICAgICAge3sjaWYgdGhpcy5yYW5nZVNsaWRlclJlZkF2YWlsYWJsZX19XG4gICAgICAgICAgICAgICAgICA8RXVpUmFuZ2VUaHVtYlxuICAgICAgICAgICAgICAgICAgICBAbWluPXt7dGhpcy5taW59fVxuICAgICAgICAgICAgICAgICAgICB7eyFAZ2xpbnQtZXhwZWN0LWVycm9yfX1cbiAgICAgICAgICAgICAgICAgICAgQG1heD17e2Nhc3RUbyB0aGlzLnVwcGVyVmFsdWUgdG89XCJudW1iZXJcIn19XG4gICAgICAgICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICAgICAgICBAdmFsdWU9e3t0aGlzLmxvd2VyVmFsdWV9fVxuICAgICAgICAgICAgICAgICAgICBAZGlzYWJsZWQ9e3tAZGlzYWJsZWR9fVxuICAgICAgICAgICAgICAgICAgICBAc2hvd1RpY2tzPXt7dGhpcy5zaG93VGlja3N9fVxuICAgICAgICAgICAgICAgICAgICBAc2hvd0lucHV0PXt7bm90IHRoaXMuc2hvd0lucHV0fX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT17e0BhcmlhRGVzY3JpYmVkYnl9fVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt7QGFyaWFMYWJlbH19XG4gICAgICAgICAgICAgICAgICAgIHt7c2ltcGxlU3R5bGUgdGhpcy5jYWxjdWxhdGVMb3dlclZhbHVlVGh1bWJQb3NpdGlvblN0eWxlfX1cbiAgICAgICAgICAgICAgICAgICAge3tvbiBcImZvY3VzXCIgdGhpcy5vblRodW1iRm9jdXN9fVxuICAgICAgICAgICAgICAgICAgICB7e29uIFwiYmx1clwiIHRoaXMub25UaHVtYkJsdXJ9fVxuICAgICAgICAgICAgICAgICAgICB7e29uS2V5IFwiX2FsbFwiIHRoaXMuaGFuZGxlTG93ZXJLZXlEb3dufX1cbiAgICAgICAgICAgICAgICAgIC8-XG4gICAgICAgICAgICAgICAgICA8RXVpUmFuZ2VUaHVtYlxuICAgICAgICAgICAgICAgICAgICB7eyFAZ2xpbnQtZXhwZWN0LWVycm9yfX1cbiAgICAgICAgICAgICAgICAgICAgQG1pbj17e2Nhc3RUbyB0aGlzLmxvd2VyVmFsdWUgdG89XCJudW1iZXJcIn19XG4gICAgICAgICAgICAgICAgICAgIEBtYXg9e3t0aGlzLm1heH19XG4gICAgICAgICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICAgICAgICBAdmFsdWU9e3t0aGlzLnVwcGVyVmFsdWV9fVxuICAgICAgICAgICAgICAgICAgICBAZGlzYWJsZWQ9e3tAZGlzYWJsZWR9fVxuICAgICAgICAgICAgICAgICAgICBAc2hvd1RpY2tzPXt7dGhpcy5zaG93VGlja3N9fVxuICAgICAgICAgICAgICAgICAgICBAc2hvd0lucHV0PXt7bm90IHRoaXMuc2hvd0lucHV0fX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT17e0BhcmlhRGVzY3JpYmVkYnl9fVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt7QGFyaWFMYWJlbH19XG4gICAgICAgICAgICAgICAgICAgIHt7c2ltcGxlU3R5bGUgdGhpcy5jYWxjdWxhdGVVcHBlclZhbHVlVGh1bWJQb3NpdGlvblN0eWxlfX1cbiAgICAgICAgICAgICAgICAgICAge3tvbiBcImZvY3VzXCIgdGhpcy5vblRodW1iRm9jdXN9fVxuICAgICAgICAgICAgICAgICAgICB7e29uIFwiYmx1clwiIHRoaXMub25UaHVtYkJsdXJ9fVxuICAgICAgICAgICAgICAgICAgICB7e29uS2V5IFwiX2FsbFwiIHRoaXMuaGFuZGxlVXBwZXJLZXlEb3dufX1cbiAgICAgICAgICAgICAgICAgIC8-XG4gICAgICAgICAgICAgICAge3svaWZ9fVxuICAgICAgICAgICAgICA8L0V1aVJhbmdlVHJhY2s-XG4gICAgICAgICAgICAgIHt7I2lmIHRoaXMuc2hvd0xhYmVsc319XG4gICAgICAgICAgICAgICAgPEV1aVJhbmdlTGFiZWwgQGRpc2FibGVkPXt7QGRpc2FibGVkfX0-XG4gICAgICAgICAgICAgICAgICB7eyNpZiBoYXNNYXhCbG9ja319XG4gICAgICAgICAgICAgICAgICAgIHt7eWllbGQgdGhpcy5tYXggdG89XCJtYXhcIn19XG4gICAgICAgICAgICAgICAgICB7e2Vsc2V9fVxuICAgICAgICAgICAgICAgICAgICB7e3RoaXMubWF4fX1cbiAgICAgICAgICAgICAgICAgIHt7L2lmfX1cbiAgICAgICAgICAgICAgICA8L0V1aVJhbmdlTGFiZWw-XG4gICAgICAgICAgICAgIHt7L2lmfX1cbiAgICAgICAgICAgIDwvRXVpUmFuZ2VXcmFwcGVyPlxuICAgICAgICAgIDwvOmNvbnRlbnQ-XG4gICAgICAgIDwvRXVpSW5wdXRQb3BvdmVyPlxuICAgICAge3tlbHNlfX1cbiAgICAgICAgPEV1aVJhbmdlV3JhcHBlclxuICAgICAgICAgIGNsYXNzPVwiZXVpRHVhbFJhbmdlXCJcbiAgICAgICAgICBAZnVsbFdpZHRoPXt7dGhpcy5mdWxsV2lkdGh9fVxuICAgICAgICAgIEBjb21wcmVzc2VkPXt7dGhpcy5jb21wcmVzc2VkfX1cbiAgICAgICAgPlxuICAgICAgICAgIHt7I2lmIHRoaXMuc2hvd0lucHV0fX1cbiAgICAgICAgICAgIDxFdWlSYW5nZUlucHV0XG4gICAgICAgICAgICAgIEBkaWdpdFRvbGVyYW5jZT17e3RoaXMuZGlnaXRUb2xlcmFuY2V9fVxuICAgICAgICAgICAgICBAc2lkZT1cIm1pblwiXG4gICAgICAgICAgICAgIEBtaW49e3t0aGlzLm1pbn19XG4gICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICBAbWF4PXt7Y2FzdFRvIHRoaXMudXBwZXJWYWx1ZSB0bz1cIm51bWJlclwifX1cbiAgICAgICAgICAgICAgQHN0ZXA9e3t0aGlzLnN0ZXB9fVxuICAgICAgICAgICAgICBAdmFsdWU9e3t0aGlzLmxvd2VyVmFsdWV9fVxuICAgICAgICAgICAgICBAZGlzYWJsZWQ9e3tAZGlzYWJsZWR9fVxuICAgICAgICAgICAgICBAY29tcHJlc3NlZD17e3RoaXMuY29tcHJlc3NlZH19XG4gICAgICAgICAgICAgIEBvbkNoYW5nZT17e3RoaXMuaGFuZGxlTG93ZXJJbnB1dENoYW5nZX19XG4gICAgICAgICAgICAgIEBuYW1lPVwie3tAbmFtZX19LW1pblZhbHVlXCJcbiAgICAgICAgICAgICAgQHJlYWRPbmx5PXt7QHJlYWRPbmx5fX1cbiAgICAgICAgICAgICAgQGZ1bGxXaWR0aD17e3RoaXMuZnVsbFdpZHRofX1cbiAgICAgICAgICAgICAgQGlzSW52YWxpZD17e0Bpc0ludmFsaWR9fVxuICAgICAgICAgICAgICBAaXNQcmVwZW5kUHJvdmlkZWQ9e3tmYWxzZX19XG4gICAgICAgICAgICAgIEBpc0FwcGVuZFByb3ZpZGVkPXt7ZmFsc2V9fVxuICAgICAgICAgICAgICBAY29udHJvbE9ubHk9e3t0cnVlfX1cbiAgICAgICAgICAgICAgQGRpc2FibGU9e3tAZGlzYWJsZX19XG4gICAgICAgICAgICAgIC4uLmF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAge3tvbktleSBcIl9hbGxcIiB0aGlzLmhhbmRsZUlucHV0S2V5RG93bn19XG4gICAgICAgICAgICAgIHt7b24gXCJmb2N1c1wiIChvcHRpb25hbCBAb25Gb2N1cyl9fVxuICAgICAgICAgICAgICB7e29uIFwiYmx1clwiIChvcHRpb25hbCBAb25CbHVyKX19XG4gICAgICAgICAgICAgIHt7b24gXCJpbnB1dFwiIHRoaXMuaGFuZGxlTG93ZXJJbnB1dENoYW5nZX19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV1aVJhbmdlX19ob3Jpem9udGFsU3BhY2VyXCI-PC9kaXY-XG4gICAgICAgICAge3svaWZ9fVxuICAgICAgICAgIHt7I2lmIHRoaXMuc2hvd0xhYmVsc319XG4gICAgICAgICAgICA8RXVpUmFuZ2VMYWJlbCBAc2lkZT1cIm1pblwiIEBkaXNhYmxlZD17e0BkaXNhYmxlZH19PlxuICAgICAgICAgICAgICB7eyNpZiBoYXNNaW5CbG9ja319XG4gICAgICAgICAgICAgICAge3t5aWVsZCB0aGlzLm1pbiB0bz1cIm1pblwifX1cbiAgICAgICAgICAgICAge3tlbHNlfX1cbiAgICAgICAgICAgICAgICB7e3RoaXMubWlufX1cbiAgICAgICAgICAgICAge3svaWZ9fVxuICAgICAgICAgICAgPC9FdWlSYW5nZUxhYmVsPlxuICAgICAgICAgIHt7L2lmfX1cbiAgICAgICAgICA8RXVpUmFuZ2VUcmFja1xuICAgICAgICAgICAgYXJpYS1oaWRkZW49e3tpZiAoZXEgdGhpcy5zaG93SW5wdXQgdHJ1ZSkgXCJ0cnVlXCIgXCJmYWxzZVwifX1cbiAgICAgICAgICAgIEBjb21wcmVzc2VkPXt7dGhpcy5jb21wcmVzc2VkfX1cbiAgICAgICAgICAgIEBkaXNhYmxlZD17e0BkaXNhYmxlZH19XG4gICAgICAgICAgICBAbWF4PXt7dGhpcy5tYXh9fVxuICAgICAgICAgICAgQG1pbj17e3RoaXMubWlufX1cbiAgICAgICAgICAgIEBzdGVwPXt7dGhpcy5zdGVwfX1cbiAgICAgICAgICAgIEBzaG93VGlja3M9e3t0aGlzLnNob3dUaWNrc319XG4gICAgICAgICAgICBAdGlja0ludGVydmFsPXt7QHRpY2tJbnRlcnZhbH19XG4gICAgICAgICAgICBAdGlja3M9e3tAdGlja3N9fVxuICAgICAgICAgICAgQGxldmVscz17e3RoaXMubGV2ZWxzfX1cbiAgICAgICAgICAgIEBvbkNoYW5nZT17e3RoaXMuaGFuZGxlU2xpZGVyQ2hhbmdlfX1cbiAgICAgICAgICAgIEB2YWx1ZT17e0B2YWx1ZX19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sjaWYgKGFuZCB0aGlzLnNob3dSYW5nZSB0aGlzLmlzVmFsaWQpfX1cbiAgICAgICAgICAgICAgPEV1aVJhbmdlSGlnaGxpZ2h0XG4gICAgICAgICAgICAgICAgQGNvbXByZXNzZWQ9e3t0aGlzLmNvbXByZXNzZWR9fVxuICAgICAgICAgICAgICAgIEBoYXNGb2N1cz17e3RoaXMuaGFzRm9jdXN9fVxuICAgICAgICAgICAgICAgIEBzaG93VGlja3M9e3t0aGlzLnNob3dUaWNrc319XG4gICAgICAgICAgICAgICAge3shQGdsaW50LWV4cGVjdC1lcnJvcn19XG4gICAgICAgICAgICAgICAgQG1pbj17e2Nhc3RUbyB0aGlzLm1pbiB0bz1cIm51bWJlclwifX1cbiAgICAgICAgICAgICAgICB7eyFAZ2xpbnQtZXhwZWN0LWVycm9yfX1cbiAgICAgICAgICAgICAgICBAbWF4PXt7Y2FzdFRvIHRoaXMubWF4IHRvPVwibnVtYmVyXCJ9fVxuICAgICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICAgIEBsb3dlclZhbHVlPXt7Y2FzdFRvIHRoaXMubG93ZXJWYWx1ZSB0bz1cIm51bWJlclwifX1cbiAgICAgICAgICAgICAgICB7eyFAZ2xpbnQtZXhwZWN0LWVycm9yfX1cbiAgICAgICAgICAgICAgICBAdXBwZXJWYWx1ZT17e2Nhc3RUbyB0aGlzLnVwcGVyVmFsdWUgdG89XCJudW1iZXJcIn19XG4gICAgICAgICAgICAgIC8-XG4gICAgICAgICAgICB7ey9pZn19XG4gICAgICAgICAgICA8RXVpUmFuZ2VTbGlkZXJcbiAgICAgICAgICAgICAgY2xhc3M9XCJldWlEdWFsUmFuZ2VfX3NsaWRlclwiXG4gICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIEBpZD17e3RoaXMuaWR9fVxuICAgICAgICAgICAgICBAbmFtZT17e0BuYW1lfX1cbiAgICAgICAgICAgICAgQG1pbj17e3RoaXMubWlufX1cbiAgICAgICAgICAgICAgQG1heD17e3RoaXMubWF4fX1cbiAgICAgICAgICAgICAgQHN0ZXA9e3t0aGlzLnN0ZXB9fVxuICAgICAgICAgICAgICBAZGlzYWJsZWQ9e3tAZGlzYWJsZWR9fVxuICAgICAgICAgICAgICBAY29tcHJlc3NlZD17e3RoaXMuY29tcHJlc3NlZH19XG4gICAgICAgICAgICAgIEBvbkNoYW5nZT17e3RoaXMuaGFuZGxlU2xpZGVyQ2hhbmdlfX1cbiAgICAgICAgICAgICAgQHNob3dUaWNrcz17e3RoaXMuc2hvd1RpY2tzfX1cbiAgICAgICAgICAgICAgQGhhc0ZvY3VzPXt7dGhpcy5oYXNGb2N1c319XG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICBAc2hvd1JhbmdlPXt7dGhpcy5zaG93UmFuZ2V9fVxuICAgICAgICAgICAgICAuLi5hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgIHt7ZGlkSW5zZXJ0IHRoaXMuZGlkSW5zZXJ0UmFuZ2VTbGlkZXJ9fVxuICAgICAgICAgICAgICB7e29uIFwibW91c2Vkb3duXCIgKGZuIHRoaXMuc2V0UHJldmVudFBvcG92ZXJDbG9zZSB0cnVlKX19XG4gICAgICAgICAgICAgIHt7b24gXCJmb2N1c1wiIChvcHRpb25hbCBAb25Gb2N1cyl9fVxuICAgICAgICAgICAgICB7e29uIFwiYmx1clwiIChvcHRpb25hbCBAb25CbHVyKX19XG4gICAgICAgICAgICAgIHt7b24gXCJpbnB1dFwiIHRoaXMuaGFuZGxlU2xpZGVyQ2hhbmdlfX1cbiAgICAgICAgICAgIC8-XG4gICAgICAgICAgICB7eyNpZiB0aGlzLnJhbmdlU2xpZGVyUmVmQXZhaWxhYmxlfX1cbiAgICAgICAgICAgICAgPEV1aVJhbmdlVGh1bWJcbiAgICAgICAgICAgICAgICBAbWluPXt7dGhpcy5taW59fVxuICAgICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICAgIEBtYXg9e3tjYXN0VG8gdGhpcy51cHBlclZhbHVlIHRvPVwibnVtYmVyXCJ9fVxuICAgICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICAgIEB2YWx1ZT17e3RoaXMubG93ZXJWYWx1ZX19XG4gICAgICAgICAgICAgICAgQGRpc2FibGVkPXt7QGRpc2FibGVkfX1cbiAgICAgICAgICAgICAgICBAc2hvd1RpY2tzPXt7dGhpcy5zaG93VGlja3N9fVxuICAgICAgICAgICAgICAgIEBzaG93SW5wdXQ9e3tub3QgdGhpcy5zaG93SW5wdXR9fVxuICAgICAgICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e3tAYXJpYURlc2NyaWJlZGJ5fX1cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt7QGFyaWFMYWJlbH19XG4gICAgICAgICAgICAgICAge3tzaW1wbGVTdHlsZSB0aGlzLmNhbGN1bGF0ZUxvd2VyVmFsdWVUaHVtYlBvc2l0aW9uU3R5bGV9fVxuICAgICAgICAgICAgICAgIHt7b24gXCJmb2N1c1wiIHRoaXMub25UaHVtYkZvY3VzfX1cbiAgICAgICAgICAgICAgICB7e29uIFwiYmx1clwiIHRoaXMub25UaHVtYkJsdXJ9fVxuICAgICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICAgIHt7b24gXCJjbGlja1wiIHRoaXMuaGFuZGxlTG93ZXJLZXlEb3dufX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV1aVJhbmdlVGh1bWJcbiAgICAgICAgICAgICAgICB7eyFAZ2xpbnQtZXhwZWN0LWVycm9yfX1cbiAgICAgICAgICAgICAgICBAbWluPXt7Y2FzdFRvIHRoaXMubG93ZXJWYWx1ZSB0bz1cIm51bWJlclwifX1cbiAgICAgICAgICAgICAgICBAbWF4PXt7dGhpcy5tYXh9fVxuICAgICAgICAgICAgICAgIHt7IUBnbGludC1leHBlY3QtZXJyb3J9fVxuICAgICAgICAgICAgICAgIEB2YWx1ZT17e3RoaXMudXBwZXJWYWx1ZX19XG4gICAgICAgICAgICAgICAgQGRpc2FibGVkPXt7QGRpc2FibGVkfX1cbiAgICAgICAgICAgICAgICBAc2hvd1RpY2tzPXt7dGhpcy5zaG93VGlja3N9fVxuICAgICAgICAgICAgICAgIEBzaG93SW5wdXQ9e3tub3QgdGhpcy5zaG93SW5wdXR9fVxuICAgICAgICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e3tAYXJpYURlc2NyaWJlZGJ5fX1cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt7QGFyaWFMYWJlbH19XG4gICAgICAgICAgICAgICAge3tzaW1wbGVTdHlsZSB0aGlzLmNhbGN1bGF0ZVVwcGVyVmFsdWVUaHVtYlBvc2l0aW9uU3R5bGV9fVxuICAgICAgICAgICAgICAgIHt7b24gXCJmb2N1c1wiIHRoaXMub25UaHVtYkZvY3VzfX1cbiAgICAgICAgICAgICAgICB7e29uIFwiYmx1clwiIHRoaXMub25UaHVtYkJsdXJ9fVxuICAgICAgICAgICAgICAgIHt7b24gXCJrZXlkb3duXCIgdGhpcy5oYW5kbGVVcHBlcktleURvd259fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAge3svaWZ9fVxuICAgICAgICAgIDwvRXVpUmFuZ2VUcmFjaz5cbiAgICAgICAgICB7eyNpZiB0aGlzLnNob3dMYWJlbHN9fVxuICAgICAgICAgICAgPEV1aVJhbmdlTGFiZWwgQGRpc2FibGVkPXt7QGRpc2FibGVkfX0-XG4gICAgICAgICAgICAgIHt7I2lmIGhhc01heEJsb2NrfX1cbiAgICAgICAgICAgICAgICB7e3lpZWxkIHRoaXMubWF4IHRvPVwibWF4XCJ9fVxuICAgICAgICAgICAgICB7e2Vsc2V9fVxuICAgICAgICAgICAgICAgIHt7dGhpcy5tYXh9fVxuICAgICAgICAgICAgICB7ey9pZn19XG4gICAgICAgICAgICA8L0V1aVJhbmdlTGFiZWw-XG4gICAgICAgICAge3svaWZ9fVxuICAgICAgICAgIHt7I2lmIHRoaXMuc2hvd0lucHV0fX1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldWlSYW5nZV9faG9yaXpvbnRhbFNwYWNlclwiPjwvZGl2PlxuICAgICAgICAgICAge3shIG1heGlucHV0IH19XG4gICAgICAgICAgICA8RXVpUmFuZ2VJbnB1dFxuICAgICAgICAgICAgICBAZGlnaXRUb2xlcmFuY2U9e3t0aGlzLmRpZ2l0VG9sZXJhbmNlfX1cbiAgICAgICAgICAgICAgQHNpZGU9XCJtYXhcIlxuICAgICAgICAgICAgICB7eyFAZ2xpbnQtZXhwZWN0LWVycm9yfX1cbiAgICAgICAgICAgICAgQG1pbj17e2Nhc3RUbyB0aGlzLmxvd2VyVmFsdWUgdG89XCJudW1iZXJcIn19XG4gICAgICAgICAgICAgIEBtYXg9e3t0aGlzLm1heH19XG4gICAgICAgICAgICAgIEBzdGVwPXt7dGhpcy5zdGVwfX1cbiAgICAgICAgICAgICAgQHZhbHVlPXt7dGhpcy51cHBlclZhbHVlfX1cbiAgICAgICAgICAgICAgQGRpc2FibGVkPXt7QGRpc2FibGVkfX1cbiAgICAgICAgICAgICAgQGNvbXByZXNzZWQ9e3t0aGlzLmNvbXByZXNzZWR9fVxuICAgICAgICAgICAgICBAbmFtZT1cInt7QG5hbWV9fS1tYXhWYWx1ZVwiXG4gICAgICAgICAgICAgIEByZWFkT25seT17e0ByZWFkT25seX19XG4gICAgICAgICAgICAgIEBmdWxsV2lkdGg9e3t0aGlzLmZ1bGxXaWR0aH19XG4gICAgICAgICAgICAgIEBpc0ludmFsaWQ9e3tAaXNJbnZhbGlkfX1cbiAgICAgICAgICAgICAgQGNvbnRyb2xPbmx5PXt7dGhpcy5zaG93SW5wdXRPbmx5fX1cbiAgICAgICAgICAgICAgQGlzUHJlcGVuZFByb3ZpZGVkPXt7ZmFsc2V9fVxuICAgICAgICAgICAgICBAaXNBcHBlbmRQcm92aWRlZD17e2ZhbHNlfX1cbiAgICAgICAgICAgICAgQGRpc2FibGU9e3tAZGlzYWJsZX19XG4gICAgICAgICAgICAgIC4uLmF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAge3tvbktleSBcIl9hbGxcIiB0aGlzLmhhbmRsZUlucHV0S2V5RG93bn19XG4gICAgICAgICAgICAgIHt7b24gXCJmb2N1c1wiIChvcHRpb25hbCBAb25Gb2N1cyl9fVxuICAgICAgICAgICAgICB7e29uIFwiYmx1clwiIChvcHRpb25hbCBAb25CbHVyKX19XG4gICAgICAgICAgICAgIHt7b24gXCJpbnB1dFwiIHRoaXMuaGFuZGxlVXBwZXJJbnB1dENoYW5nZX19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIHt7L2lmfX1cbiAgICAgICAgPC9FdWlSYW5nZVdyYXBwZXI-XG4gICAgICB7ey9pZn19XG4gICAge3svbGV0fX1cbiAgPC90ZW1wbGF0ZT5cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxlQUFlLHFCQUFxQjtBQUMzQyxTQUFTLE9BQU8sUUFBUSxvQkFBb0I7QUFDNUMsU0FBUyxFQUFFLFFBQVEsZ0JBQWdCO0FBQ25DLFNBQVMsRUFBRSxRQUFRLGtCQUFrQjtBQUNyQyxTQUFTLE1BQU0sUUFBUSxnQkFBZ0I7QUFDdkMsU0FBUyxPQUFPLFFBQVEsMEJBQTBCO0FBQ2xELE9BQU8sZUFBZSwrQ0FBK0M7QUFDckUsU0FBUyxLQUFLLFFBQVEsaUJBQWlCO0FBRXZDLE9BQU8sY0FBYyw0Q0FBNEM7QUFDakUsT0FBTyxXQUFXLGtDQUFrQztBQUNwRCxTQUFTLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsUUFBUSxzQkFBc0I7QUFFdkQsT0FBTyxnQkFBZ0IscUJBQXFCLFFBQVEsK0JBQStCO0FBQ25GLE9BQU8sWUFBWSx3QkFBd0I7QUFDM0MsT0FBTyxpQkFBaUIsK0JBQStCO0FBQ3ZELFNBQVMsSUFBSSxRQUFRLG1CQUFtQjtBQUN4QyxTQUFTLGFBQWEsUUFBUSwyQkFBMkI7QUFDekQsU0FBUyxjQUFjLFFBQVEsMEJBQTBCO0FBQ3pELE9BQU8sbUNBQW1DLDBDQUEwQztBQUNwRixPQUFPLHFCQUFxQiwwQkFBMEI7QUFDdEQsT0FBTyx1QkFBdUIsNEJBQTRCO0FBQzFELE9BQU8sbUJBQW1CLHdCQUF3QjtBQUNsRCxPQUFPLG1CQUFtQix3QkFBd0I7QUFDbEQsT0FBTyxvQkFBb0IseUJBQXlCO0FBQ3BELE9BQU8sbUJBQW1CLHdCQUF3QjtBQUNsRCxPQUFPLG1CQUFtQix3QkFBd0I7QUFDbEQsT0FBTyxxQkFBcUIsMEJBQTBCO0FBRXRELGNBQWMsNkJBQTZCLFFBQVEsNEJBQTRCO0FBQy9FLGNBQWMsWUFBWSxRQUFRLGNBQWM7QUFDaEQsY0FDRSxpQkFBaUIsRUFDakIsc0JBQXNCLFFBQ2pCLG9CQUFvQjtBQUMzQixjQUFjLGFB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"],"names":["EuiDualRangeComponent","Component","g","this","prototype","argOrDefaultDecorator","i","void 0","tracked","args","id","guidFor","preventPopoverClose","rangeSliderRef","didInsertRangeSlider","ref1","rangeSliderRefAvailable","rangeWidth","clientWidth","undefined","isVisible","n","action","lowerValue","value","min","upperValue","max","lowerValueIsValid","isWithinRange","upperValueIsValid","isValid","_determineInvalidThumbMovement","newVal1","lower1","upper1","e1","lowerHalf1","Math","abs","newValIsLow1","_handleOnChange","_determineValidThumbMovement","_determineThumbMovement","isValid1","onChange","handleSliderChange","Number","currentTarget","_resetToRangeEnds","_isDirectionalKeyPress","event1","keys","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","ARROW_LEFT","indexOf","key","handleInputKeyDown","preventDefault","handleLowerInputChange","target","handleUpperInputChange","_handleKeyDown","value1","stepRemainder1","step1","step","handleLowerKeyDown","TAB","handleUpperKeyDown","calculateThumbPositionStyle","width1","decimal1","valuePosition1","trackWidth1","showInput","thumbToTrackRatio1","EUI_THUMB_SIZE","trackPositionScale1","left","setPreventPopoverClose","calculateLowerValueThumbPositionStyle","calculateUpperValueThumbPositionStyle","toggleHasFocus","hasFocus","onThumbFocus","onFocus","onThumbBlur","onBlur","onInputFocus","isPopoverOpen","onInputBlur","later","closePopover","onResize","digitTolerance","String","length","showInputOnly","canShowDropdown","readOnly","disabled","setComponentTemplate","precompileTemplate","strictMode","scope","and","argOrDefault","not","EuiInputPopover","EuiFormControlLayoutDelimited","or","EuiRangeInput","castTo","on","fn","onKey","optional","EuiRangeWrapper","EuiRangeLabel","EuiRangeTrack","eq","EuiRangeHighlight","EuiRangeSlider","didInsert","EuiRangeThumb","simpleStyle"],"mappings":"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"}
|
|
@@ -1,20 +1,21 @@
|
|
|
1
|
+
import { concat } from '@ember/helper';
|
|
2
|
+
import { gte, eq } from 'ember-truth-helpers';
|
|
1
3
|
import argOrDefault from '../helpers/arg-or-default.js';
|
|
2
|
-
import EuiPanel from './eui-panel.js';
|
|
3
4
|
import classNames from '../helpers/class-names.js';
|
|
4
|
-
import
|
|
5
|
+
import EuiFlexGroup from './eui-flex-group.js';
|
|
6
|
+
import EuiFlexItem from './eui-flex-item.js';
|
|
5
7
|
import EuiIcon from './eui-icon.js';
|
|
6
|
-
import
|
|
7
|
-
import EuiTextColor from './eui-text-color.js';
|
|
8
|
+
import EuiPanel from './eui-panel.js';
|
|
8
9
|
import EuiSpacer from './eui-spacer.js';
|
|
9
10
|
import EuiTextComponent from './eui-text.js';
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import EuiFlexItem from './eui-flex-item.js';
|
|
11
|
+
import EuiTextColor from './eui-text-color.js';
|
|
12
|
+
import EuiTitle from './eui-title.js';
|
|
13
13
|
import { precompileTemplate } from '@ember/template-compilation';
|
|
14
14
|
import { setComponentTemplate } from '@ember/component';
|
|
15
15
|
import templateOnly from '@ember/component/template-only';
|
|
16
16
|
|
|
17
17
|
const EuiEmptyPrompt = setComponentTemplate(precompileTemplate("\n {{#let (argOrDefault @layout \"vertical\") as |layout|}}\n <EuiPanel class={{classNames (if layout (concat \"euiEmptyPrompt--\" layout) \"euiEmptyPrompt--vertical\") componentName=\"EuiEmptyPrompt\" paddingSize=(argOrDefault @paddingSize \"l\")}} @paddingSize=\"none\" @color={{argOrDefault @color \"transparent\"}} @hasBorder={{@hasBorder}} @hasShadow={{false}} ...attributes>\n <div class=\"euiEmptyPrompt__main\">\n {{#if (has-block \"icon\")}}\n <div class=\"euiEmptyPrompt__icon\">{{yield to=\"icon\"}}</div>\n {{else if @iconType}}\n <div class=\"euiEmptyPrompt__icon\">\n <EuiIcon @type={{@iconType}} @size=\"xxl\" @color={{if @iconColor @iconColor (if @color @color \"subdued\")}} />\n </div>\n {{/if}}\n <div class=\"euiEmptyPrompt__content\">\n {{#if (has-block \"content\")}}\n <div class=\"euiEmptyPrompt__contentInner\">{{yield to=\"content\"}}</div>\n {{else}}\n <div class=\"euiEmptyPrompt__contentInner\">\n {{#if @title}}\n <EuiTitle @size={{argOrDefault @titleSize \"m\"}}>{{@title}}</EuiTitle>\n {{/if}}\n {{#if @body}}\n <EuiTextColor @color=\"subdued\">\n {{#if @title}}\n <EuiSpacer @size=\"m\" />\n {{/if}}\n <EuiText>\n {{@body}}\n </EuiText>\n </EuiTextColor>\n {{/if}}\n {{#if (gte @actions.length 2)}}\n <EuiSpacer size=\"l\" />\n <EuiFlexGroup class=\"euiEmptyPrompt__actions\" @gutterSize=\"m\" @alignItems=\"center\" @justifyContent=\"center\" @direction={{if (eq layout \"vertical\") \"column\" \"row\"}}>\n {{#each @actions as |oneAction|}}\n <EuiFlexItem @grow={{false}}>\n {{oneAction}}\n </EuiFlexItem>\n {{/each}}\n </EuiFlexGroup>\n {{else}}\n <EuiSpacer size=\"l\" />\n {{#each @actions as |oneAction|}}\n {{oneAction}}\n {{/each}}\n {{/if}}\n </div>\n {{/if}}\n </div>\n </div>\n\n {{#if (has-block \"footer\")}}\n <div class=\"euiEmptyPrompt__footer\">\n {{yield to=\"footer\"}}\n </div>\n {{else}}\n {{#if @footer}}\n <div class=\"euiEmptyPrompt__footer\">\n {{@footer}}\n </div>\n {{/if}}\n {{/if}}\n </EuiPanel>\n {{/let}}\n ", {
|
|
18
|
+
strictMode: true,
|
|
18
19
|
scope: () => ({
|
|
19
20
|
argOrDefault,
|
|
20
21
|
EuiPanel,
|
|
@@ -29,8 +30,7 @@ const EuiEmptyPrompt = setComponentTemplate(precompileTemplate("\n {{#let (ar
|
|
|
29
30
|
EuiFlexGroup,
|
|
30
31
|
eq,
|
|
31
32
|
EuiFlexItem
|
|
32
|
-
})
|
|
33
|
-
strictMode: true
|
|
33
|
+
})
|
|
34
34
|
}), templateOnly());
|
|
35
35
|
|
|
36
36
|
export { EuiEmptyPrompt as default };
|