@sbb-esta/lyne-elements 1.16.0 → 2.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/accordion/accordion.d.ts +4 -1
- package/accordion/accordion.d.ts.map +1 -1
- package/accordion.js +31 -22
- package/action-group/action-group.d.ts +6 -4
- package/action-group/action-group.d.ts.map +1 -1
- package/action-group.js +20 -17
- package/alert/alert/alert.d.ts +7 -23
- package/alert/alert/alert.d.ts.map +1 -1
- package/alert/alert-group/alert-group.d.ts +0 -4
- package/alert/alert-group/alert-group.d.ts.map +1 -1
- package/alert/alert-group.js +46 -47
- package/alert/alert.js +74 -132
- package/animation.css +4 -8
- package/autocomplete/autocomplete-base-element.d.ts +7 -6
- package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
- package/autocomplete/autocomplete.d.ts +0 -1
- package/autocomplete/autocomplete.d.ts.map +1 -1
- package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +0 -1
- package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
- package/autocomplete-grid/autocomplete-grid-button.js +11 -11
- package/autocomplete-grid/autocomplete-grid.js +0 -3
- package/autocomplete.js +68 -67
- package/button/accent-button/accent-button.d.ts +19 -0
- package/button/accent-button/accent-button.d.ts.map +1 -0
- package/button/accent-button-link/accent-button-link.d.ts +19 -0
- package/button/accent-button-link/accent-button-link.d.ts.map +1 -0
- package/button/accent-button-link.d.ts +2 -0
- package/button/accent-button-link.d.ts.map +1 -0
- package/button/accent-button-link.js +17 -0
- package/button/accent-button-static/accent-button-static.d.ts +19 -0
- package/button/accent-button-static/accent-button-static.d.ts.map +1 -0
- package/button/accent-button-static.d.ts +2 -0
- package/button/accent-button-static.d.ts.map +1 -0
- package/button/accent-button-static.js +17 -0
- package/button/accent-button.d.ts +2 -0
- package/button/accent-button.d.ts.map +1 -0
- package/button/accent-button.js +17 -0
- package/button/common/button-common.d.ts.map +1 -1
- package/button/common.d.ts.map +1 -1
- package/button/common.js +20 -16
- package/button/mini-button/mini-button.d.ts +4 -3
- package/button/mini-button/mini-button.d.ts.map +1 -1
- package/button/mini-button-group/mini-button-group.d.ts +4 -1
- package/button/mini-button-group/mini-button-group.d.ts.map +1 -1
- package/button/mini-button-group.js +12 -8
- package/button/mini-button.d.ts +0 -1
- package/button/mini-button.d.ts.map +1 -1
- package/button/mini-button.js +10 -20
- package/button.d.ts +3 -3
- package/button.d.ts.map +1 -1
- package/button.js +3 -3
- package/calendar.js +25 -25
- package/card/card/card.d.ts +4 -1
- package/card/card/card.d.ts.map +1 -1
- package/card/card.js +10 -6
- package/checkbox/checkbox/checkbox.d.ts +4 -6
- package/checkbox/checkbox/checkbox.d.ts.map +1 -1
- package/checkbox/checkbox-group/checkbox-group.d.ts +4 -1
- package/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
- package/checkbox/checkbox-group.js +14 -10
- package/checkbox/checkbox-panel/checkbox-panel.d.ts +4 -4
- package/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
- package/checkbox/checkbox-panel.js +21 -18
- package/checkbox/checkbox.js +28 -26
- package/{chip/chip.d.ts → chip-label/chip-label.d.ts} +4 -4
- package/chip-label/chip-label.d.ts.map +1 -0
- package/chip-label.d.ts +2 -0
- package/chip-label.d.ts.map +1 -0
- package/chip-label.js +54 -0
- package/clock.js +1 -1
- package/container/container.js +21 -21
- package/container/sticky-bar/sticky-bar.d.ts +1 -0
- package/container/sticky-bar/sticky-bar.d.ts.map +1 -1
- package/container/sticky-bar.js +20 -12
- package/core/base-elements/button-base-element.d.ts +27 -18
- package/core/base-elements/button-base-element.d.ts.map +1 -1
- package/core/base-elements/open-close-base-element.d.ts.map +1 -1
- package/core/base-elements.js +135 -138
- package/core/datetime/date-adapter.d.ts +2 -1
- package/core/datetime/date-adapter.d.ts.map +1 -1
- package/core/datetime/native-date-adapter.d.ts +1 -1
- package/core/datetime/native-date-adapter.d.ts.map +1 -1
- package/core/datetime.js +29 -28
- package/core/dom/animation.d.ts +2 -0
- package/core/dom/animation.d.ts.map +1 -0
- package/core/dom/lean-context.d.ts +5 -0
- package/core/dom/lean-context.d.ts.map +1 -0
- package/core/dom.d.ts +2 -2
- package/core/dom.d.ts.map +1 -1
- package/core/dom.js +50 -55
- package/core/eventing/form-element-handlers.d.ts +0 -7
- package/core/eventing/form-element-handlers.d.ts.map +1 -1
- package/core/eventing.d.ts +0 -1
- package/core/eventing.d.ts.map +1 -1
- package/core/eventing.js +28 -49
- package/core/i18n/i18n.d.ts +4 -2
- package/core/i18n/i18n.d.ts.map +1 -1
- package/core/i18n.js +147 -140
- package/core/mixins/disabled-mixin.d.ts +2 -7
- package/core/mixins/disabled-mixin.d.ts.map +1 -1
- package/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
- package/core/mixins/form-associated-radio-button-mixin.d.ts +35 -0
- package/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -0
- package/core/mixins.d.ts +1 -0
- package/core/mixins.d.ts.map +1 -1
- package/core/mixins.js +347 -220
- package/core/styles/_index.scss +1 -0
- package/core/styles/core.scss +150 -0
- package/core/styles/image.scss +66 -0
- package/core/styles/mixins/animation.scss +2 -4
- package/core/styles/mixins/buttons.scss +7 -4
- package/core/styles/mixins/card.scss +1 -1
- package/core/styles/mixins/chip.scss +35 -35
- package/core/styles/mixins/image.scss +34 -0
- package/core/styles/mixins/overlay.scss +1 -1
- package/core/styles/mixins/panel.scss +1 -1
- package/core/styles/standard-theme.scss +1 -0
- package/core/styles/table.scss +4 -0
- package/core/testing/event-spy.d.ts +2 -1
- package/core/testing/event-spy.d.ts.map +1 -1
- package/core/testing.d.ts +0 -1
- package/core/testing.d.ts.map +1 -1
- package/core/testing.js +48 -57
- package/core.css +113 -0
- package/custom-elements.json +25946 -21671
- package/datepicker/common/datepicker-button.d.ts +3 -5
- package/datepicker/common/datepicker-button.d.ts.map +1 -1
- package/datepicker/common.js +30 -29
- package/datepicker/datepicker/datepicker.d.ts +25 -72
- package/datepicker/datepicker/datepicker.d.ts.map +1 -1
- package/datepicker/datepicker-next-day/datepicker-next-day.d.ts +1 -3
- package/datepicker/datepicker-next-day/datepicker-next-day.d.ts.map +1 -1
- package/datepicker/datepicker-next-day.js +10 -12
- package/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts +1 -3
- package/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts.map +1 -1
- package/datepicker/datepicker-previous-day.js +11 -13
- package/datepicker/datepicker.js +129 -157
- package/development/accordion/accordion.d.ts +4 -1
- package/development/accordion/accordion.d.ts.map +1 -1
- package/development/accordion.js +16 -5
- package/development/action-group/action-group.d.ts +6 -4
- package/development/action-group/action-group.d.ts.map +1 -1
- package/development/action-group.js +10 -7
- package/development/alert/alert/alert.d.ts +7 -23
- package/development/alert/alert/alert.d.ts.map +1 -1
- package/development/alert/alert-group/alert-group.d.ts +0 -4
- package/development/alert/alert-group/alert-group.d.ts.map +1 -1
- package/development/alert/alert-group.js +10 -12
- package/development/alert/alert.js +38 -122
- package/development/autocomplete/autocomplete-base-element.d.ts +7 -6
- package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
- package/development/autocomplete/autocomplete.d.ts +0 -1
- package/development/autocomplete/autocomplete.d.ts.map +1 -1
- package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +0 -1
- package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
- package/development/autocomplete-grid/autocomplete-grid-button.js +6 -6
- package/development/autocomplete-grid/autocomplete-grid.js +1 -7
- package/development/autocomplete.js +23 -19
- package/development/button/accent-button/accent-button.d.ts +19 -0
- package/development/button/accent-button/accent-button.d.ts.map +1 -0
- package/development/button/accent-button-link/accent-button-link.d.ts +19 -0
- package/development/button/accent-button-link/accent-button-link.d.ts.map +1 -0
- package/development/button/accent-button-link.d.ts +2 -0
- package/development/button/accent-button-link.d.ts.map +1 -0
- package/development/button/accent-button-link.js +25 -0
- package/development/button/accent-button-static/accent-button-static.d.ts +19 -0
- package/development/button/accent-button-static/accent-button-static.d.ts.map +1 -0
- package/development/button/accent-button-static.d.ts +2 -0
- package/development/button/accent-button-static.d.ts.map +1 -0
- package/development/button/accent-button-static.js +25 -0
- package/development/button/accent-button.d.ts +2 -0
- package/development/button/accent-button.d.ts.map +1 -0
- package/development/button/accent-button.js +25 -0
- package/development/button/common/button-common.d.ts.map +1 -1
- package/development/button/common.d.ts.map +1 -1
- package/development/button/common.js +20 -16
- package/development/button/mini-button/mini-button.d.ts +4 -3
- package/development/button/mini-button/mini-button.d.ts.map +1 -1
- package/development/button/mini-button-group/mini-button-group.d.ts +4 -1
- package/development/button/mini-button-group/mini-button-group.d.ts.map +1 -1
- package/development/button/mini-button-group.js +7 -3
- package/development/button/mini-button.d.ts +0 -1
- package/development/button/mini-button.d.ts.map +1 -1
- package/development/button/mini-button.js +14 -32
- package/development/button.d.ts +3 -3
- package/development/button.d.ts.map +1 -1
- package/development/button.js +3 -3
- package/development/calendar.js +1 -1
- package/development/card/card/card.d.ts +4 -1
- package/development/card/card/card.d.ts.map +1 -1
- package/development/card/card.js +8 -4
- package/development/checkbox/checkbox/checkbox.d.ts +4 -6
- package/development/checkbox/checkbox/checkbox.d.ts.map +1 -1
- package/development/checkbox/checkbox-group/checkbox-group.d.ts +4 -1
- package/development/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
- package/development/checkbox/checkbox-group.js +7 -3
- package/development/checkbox/checkbox-panel/checkbox-panel.d.ts +4 -4
- package/development/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
- package/development/checkbox/checkbox-panel.js +7 -4
- package/development/checkbox/checkbox.js +8 -6
- package/development/{chip/chip.d.ts → chip-label/chip-label.d.ts} +4 -4
- package/development/chip-label/chip-label.d.ts.map +1 -0
- package/development/chip-label.d.ts +2 -0
- package/development/chip-label.d.ts.map +1 -0
- package/development/{chip.js → chip-label.js} +26 -26
- package/development/clock.js +1 -1
- package/development/container/container.js +8 -12
- package/development/container/sticky-bar/sticky-bar.d.ts +1 -0
- package/development/container/sticky-bar/sticky-bar.d.ts.map +1 -1
- package/development/container/sticky-bar.js +18 -10
- package/development/core/base-elements/button-base-element.d.ts +27 -18
- package/development/core/base-elements/button-base-element.d.ts.map +1 -1
- package/development/core/base-elements/open-close-base-element.d.ts.map +1 -1
- package/development/core/base-elements.js +66 -74
- package/development/core/datetime/date-adapter.d.ts +2 -1
- package/development/core/datetime/date-adapter.d.ts.map +1 -1
- package/development/core/datetime/native-date-adapter.d.ts +1 -1
- package/development/core/datetime/native-date-adapter.d.ts.map +1 -1
- package/development/core/datetime.js +4 -3
- package/development/core/dom/animation.d.ts +2 -0
- package/development/core/dom/animation.d.ts.map +1 -0
- package/development/core/dom/lean-context.d.ts +5 -0
- package/development/core/dom/lean-context.d.ts.map +1 -0
- package/development/core/dom.d.ts +2 -2
- package/development/core/dom.d.ts.map +1 -1
- package/development/core/dom.js +13 -21
- package/development/core/eventing/form-element-handlers.d.ts +0 -7
- package/development/core/eventing/form-element-handlers.d.ts.map +1 -1
- package/development/core/eventing.d.ts +0 -1
- package/development/core/eventing.d.ts.map +1 -1
- package/development/core/eventing.js +1 -25
- package/development/core/i18n/i18n.d.ts +4 -2
- package/development/core/i18n/i18n.d.ts.map +1 -1
- package/development/core/i18n.js +27 -23
- package/development/core/mixins/disabled-mixin.d.ts +2 -7
- package/development/core/mixins/disabled-mixin.d.ts.map +1 -1
- package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
- package/development/core/mixins/form-associated-radio-button-mixin.d.ts +35 -0
- package/development/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -0
- package/development/core/mixins.d.ts +1 -0
- package/development/core/mixins.d.ts.map +1 -1
- package/development/core/mixins.js +221 -30
- package/development/core/testing/event-spy.d.ts +2 -1
- package/development/core/testing/event-spy.d.ts.map +1 -1
- package/development/core/testing.d.ts +0 -1
- package/development/core/testing.d.ts.map +1 -1
- package/development/core/testing.js +4 -15
- package/development/datepicker/common/datepicker-button.d.ts +3 -5
- package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
- package/development/datepicker/common.js +13 -12
- package/development/datepicker/datepicker/datepicker.d.ts +25 -72
- package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
- package/development/datepicker/datepicker-next-day/datepicker-next-day.d.ts +1 -3
- package/development/datepicker/datepicker-next-day/datepicker-next-day.d.ts.map +1 -1
- package/development/datepicker/datepicker-next-day.js +9 -15
- package/development/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts +1 -3
- package/development/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts.map +1 -1
- package/development/datepicker/datepicker-previous-day.js +9 -15
- package/development/datepicker/datepicker.js +74 -115
- package/development/dialog/dialog/dialog.d.ts +3 -0
- package/development/dialog/dialog/dialog.d.ts.map +1 -1
- package/development/dialog/dialog-title.js +2 -1
- package/development/dialog/dialog.js +46 -39
- package/development/expansion-panel/expansion-panel/expansion-panel.d.ts +7 -1
- package/development/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
- package/development/expansion-panel/expansion-panel-header.js +3 -3
- package/development/expansion-panel/expansion-panel.js +32 -17
- package/development/file-selector/common/file-selector-common.d.ts +23 -0
- package/development/file-selector/common/file-selector-common.d.ts.map +1 -0
- package/development/file-selector/common.d.ts +2 -0
- package/development/file-selector/common.d.ts.map +1 -0
- package/development/file-selector/common.js +382 -0
- package/development/file-selector/file-selector/file-selector.d.ts +24 -0
- package/development/file-selector/file-selector/file-selector.d.ts.map +1 -0
- package/development/file-selector/file-selector-dropzone/file-selector-dropzone.d.ts +33 -0
- package/development/file-selector/file-selector-dropzone/file-selector-dropzone.d.ts.map +1 -0
- package/development/file-selector/file-selector-dropzone.d.ts +2 -0
- package/development/file-selector/file-selector-dropzone.d.ts.map +1 -0
- package/development/file-selector/file-selector-dropzone.js +181 -0
- package/development/file-selector/file-selector.d.ts +1 -87
- package/development/file-selector/file-selector.d.ts.map +1 -1
- package/development/file-selector/file-selector.js +52 -0
- package/development/file-selector.d.ts +2 -0
- package/development/file-selector.d.ts.map +1 -1
- package/development/file-selector.js +4 -552
- package/development/flip-card/flip-card-details.js +1 -1
- package/development/flip-card/flip-card-summary.js +3 -11
- package/development/flip-card/flip-card.js +6 -6
- package/development/form-field/form-field/form-field.d.ts +5 -10
- package/development/form-field/form-field/form-field.d.ts.map +1 -1
- package/development/form-field/form-field-clear.js +6 -6
- package/development/form-field/form-field.js +32 -40
- package/development/header/common.js +2 -2
- package/development/header/header/header.d.ts +5 -3
- package/development/header/header/header.d.ts.map +1 -1
- package/development/header/header.js +15 -20
- package/development/image/image.d.ts +0 -30
- package/development/image/image.d.ts.map +1 -1
- package/development/image.js +62 -273
- package/development/journey-header/journey-header.d.ts +4 -1
- package/development/journey-header/journey-header.d.ts.map +1 -1
- package/development/journey-header.js +7 -3
- package/development/lead-container.js +2 -10
- package/development/link/common/link-common.d.ts.map +1 -1
- package/development/link/common.js +9 -8
- package/development/link-list/common/link-list-base.d.ts +1 -0
- package/development/link-list/common/link-list-base.d.ts.map +1 -1
- package/development/link-list/common.js +4 -2
- package/development/link-list/link-list-anchor.js +4 -4
- package/development/loading-indicator/loading-indicator.d.ts +1 -3
- package/development/loading-indicator/loading-indicator.d.ts.map +1 -1
- package/development/loading-indicator-circle/loading-indicator-circle.d.ts +16 -0
- package/development/loading-indicator-circle/loading-indicator-circle.d.ts.map +1 -0
- package/development/loading-indicator-circle.d.ts +2 -0
- package/development/loading-indicator-circle.d.ts.map +1 -0
- package/development/loading-indicator-circle.js +146 -0
- package/development/loading-indicator.js +81 -182
- package/development/map-container/map-container.d.ts.map +1 -1
- package/development/map-container.js +5 -5
- package/development/menu/common.js +5 -5
- package/development/menu/menu/menu.d.ts +3 -0
- package/development/menu/menu/menu.d.ts.map +1 -1
- package/development/menu/menu.js +39 -24
- package/development/message.js +4 -2
- package/development/navigation/common/navigation-action-common.d.ts.map +1 -1
- package/development/navigation/common.js +9 -5
- package/development/navigation/navigation/navigation.d.ts +3 -0
- package/development/navigation/navigation/navigation.d.ts.map +1 -1
- package/development/navigation/navigation-list/navigation-list.d.ts.map +1 -1
- package/development/navigation/navigation-list.js +3 -2
- package/development/navigation/navigation-marker/navigation-marker.d.ts +2 -1
- package/development/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
- package/development/navigation/navigation-marker.js +6 -4
- package/development/navigation/navigation-section/navigation-section.d.ts +3 -0
- package/development/navigation/navigation-section/navigation-section.d.ts.map +1 -1
- package/development/navigation/navigation-section.js +38 -22
- package/development/navigation/navigation.js +42 -27
- package/development/notification/notification.d.ts +6 -2
- package/development/notification/notification.d.ts.map +1 -1
- package/development/notification.js +27 -21
- package/development/option/option/option-base-element.d.ts +0 -7
- package/development/option/option/option-base-element.d.ts.map +1 -1
- package/development/option/option.js +5 -26
- package/development/overlay/overlay-base-element.d.ts +2 -0
- package/development/overlay/overlay-base-element.d.ts.map +1 -1
- package/development/overlay/overlay.d.ts +3 -0
- package/development/overlay/overlay.d.ts.map +1 -1
- package/development/overlay.js +43 -31
- package/development/paginator/common/paginator-common.d.ts.map +1 -1
- package/development/paginator/common.js +7 -3
- package/development/paginator/paginator.js +1 -1
- package/development/popover/popover/popover.d.ts +3 -0
- package/development/popover/popover/popover.d.ts.map +1 -1
- package/development/popover/popover-trigger.js +9 -9
- package/development/popover/popover.js +41 -26
- package/development/radio-button/common/radio-button-common.d.ts +3 -10
- package/development/radio-button/common/radio-button-common.d.ts.map +1 -1
- package/development/radio-button/common.js +44 -121
- package/development/radio-button/radio-button/radio-button.d.ts +9 -1
- package/development/radio-button/radio-button/radio-button.d.ts.map +1 -1
- package/development/radio-button/radio-button-group/radio-button-group.d.ts +19 -26
- package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
- package/development/radio-button/radio-button-group.js +87 -123
- package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +19 -1
- package/development/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
- package/development/radio-button/radio-button-panel.js +35 -15
- package/development/radio-button/radio-button.js +11 -15
- package/development/select/select.d.ts +3 -9
- package/development/select/select.d.ts.map +1 -1
- package/development/select.js +27 -25
- package/development/selection-expansion-panel/selection-expansion-panel.d.ts +4 -1
- package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
- package/development/selection-expansion-panel.js +28 -16
- package/development/skiplink-list/skiplink-list.d.ts.map +1 -1
- package/development/skiplink-list.js +3 -2
- package/development/slider/slider.d.ts +0 -1
- package/development/slider/slider.d.ts.map +1 -1
- package/development/slider.js +2 -2
- package/development/stepper/step-label/step-label.d.ts +0 -2
- package/development/stepper/step-label/step-label.d.ts.map +1 -1
- package/development/stepper/step-label.js +10 -11
- package/development/stepper/step.js +1 -1
- package/development/stepper/stepper/stepper.d.ts +4 -1
- package/development/stepper/stepper/stepper.d.ts.map +1 -1
- package/development/stepper/stepper.js +9 -7
- package/development/tabs/tab-group/tab-group.d.ts +4 -1
- package/development/tabs/tab-group/tab-group.d.ts.map +1 -1
- package/development/tabs/tab-group.js +8 -4
- package/development/tabs/tab-label.js +1 -1
- package/development/tag/tag/tag.d.ts +4 -1
- package/development/tag/tag/tag.d.ts.map +1 -1
- package/development/tag/tag-group/tag-group.d.ts +5 -2
- package/development/tag/tag-group/tag-group.d.ts.map +1 -1
- package/development/tag/tag-group.js +7 -4
- package/development/tag/tag.js +16 -12
- package/development/teaser/teaser.d.ts +2 -2
- package/development/teaser/teaser.d.ts.map +1 -1
- package/development/teaser-hero/teaser-hero.d.ts +2 -6
- package/development/teaser-hero/teaser-hero.d.ts.map +1 -1
- package/development/teaser-hero.js +9 -60
- package/development/teaser-product/common.js +7 -14
- package/development/teaser-product/teaser-product.js +1 -21
- package/development/teaser.js +14 -32
- package/development/time-input/time-input.d.ts +3 -6
- package/development/time-input/time-input.d.ts.map +1 -1
- package/development/time-input.js +33 -27
- package/development/toast/toast.d.ts +3 -0
- package/development/toast/toast.d.ts.map +1 -1
- package/development/toast.js +27 -13
- package/development/toggle/toggle/toggle.d.ts +4 -8
- package/development/toggle/toggle/toggle.d.ts.map +1 -1
- package/development/toggle/toggle.js +9 -12
- package/development/toggle-check/toggle-check.d.ts +4 -6
- package/development/toggle-check/toggle-check.d.ts.map +1 -1
- package/development/toggle-check.js +9 -7
- package/development/train/train/train.d.ts.map +1 -1
- package/development/train/train-blocked-passage.js +2 -2
- package/development/train/train-formation/train-formation.d.ts +3 -11
- package/development/train/train-formation/train-formation.d.ts.map +1 -1
- package/development/train/train-formation.js +43 -74
- package/development/train/train-wagon/train-wagon.d.ts +11 -8
- package/development/train/train-wagon/train-wagon.d.ts.map +1 -1
- package/development/train/train-wagon.js +149 -124
- package/development/train/train.js +35 -112
- package/development/visual-checkbox/visual-checkbox.d.ts +4 -1
- package/development/visual-checkbox/visual-checkbox.d.ts.map +1 -1
- package/development/visual-checkbox.js +7 -3
- package/dialog/dialog/dialog.d.ts +3 -0
- package/dialog/dialog/dialog.d.ts.map +1 -1
- package/dialog/dialog-title.js +9 -9
- package/dialog/dialog.js +56 -51
- package/expansion-panel/expansion-panel/expansion-panel.d.ts +7 -1
- package/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
- package/expansion-panel/expansion-panel-header.js +1 -1
- package/expansion-panel/expansion-panel.js +41 -28
- package/file-selector/common/file-selector-common.d.ts +23 -0
- package/file-selector/common/file-selector-common.d.ts.map +1 -0
- package/file-selector/common.d.ts +2 -0
- package/file-selector/common.d.ts.map +1 -0
- package/file-selector/common.js +210 -0
- package/file-selector/file-selector/file-selector.d.ts +24 -0
- package/file-selector/file-selector/file-selector.d.ts.map +1 -0
- package/file-selector/file-selector-dropzone/file-selector-dropzone.d.ts +33 -0
- package/file-selector/file-selector-dropzone/file-selector-dropzone.d.ts.map +1 -0
- package/file-selector/file-selector-dropzone.d.ts +2 -0
- package/file-selector/file-selector-dropzone.d.ts.map +1 -0
- package/file-selector/file-selector-dropzone.js +97 -0
- package/file-selector/file-selector.d.ts +1 -87
- package/file-selector/file-selector.d.ts.map +1 -1
- package/file-selector/file-selector.js +44 -0
- package/file-selector.d.ts +2 -0
- package/file-selector.d.ts.map +1 -1
- package/file-selector.js +3 -301
- package/flip-card/flip-card-details.js +5 -5
- package/flip-card/flip-card-summary.js +7 -7
- package/flip-card/flip-card.js +9 -9
- package/form-field/form-field/form-field.d.ts +5 -10
- package/form-field/form-field/form-field.d.ts.map +1 -1
- package/form-field/form-field-clear.js +12 -12
- package/form-field/form-field.js +143 -141
- package/header/common.js +10 -10
- package/header/header/header.d.ts +5 -3
- package/header/header/header.d.ts.map +1 -1
- package/header/header.js +28 -31
- package/image/image.d.ts +0 -30
- package/image/image.d.ts.map +1 -1
- package/image.js +187 -281
- package/index.d.ts +13 -9
- package/index.js +13 -9
- package/journey-header/journey-header.d.ts +4 -1
- package/journey-header/journey-header.d.ts.map +1 -1
- package/journey-header.js +29 -25
- package/lead-container.js +5 -5
- package/link/common/link-common.d.ts.map +1 -1
- package/link/common.js +18 -16
- package/link-list/common/link-list-base.d.ts +1 -0
- package/link-list/common/link-list-base.d.ts.map +1 -1
- package/link-list/common.js +11 -9
- package/link-list/link-list-anchor.js +8 -8
- package/loading-indicator/loading-indicator.d.ts +1 -3
- package/loading-indicator/loading-indicator.d.ts.map +1 -1
- package/loading-indicator-circle/loading-indicator-circle.d.ts +16 -0
- package/loading-indicator-circle/loading-indicator-circle.d.ts.map +1 -0
- package/loading-indicator-circle.d.ts +2 -0
- package/loading-indicator-circle.d.ts.map +1 -0
- package/loading-indicator-circle.js +46 -0
- package/loading-indicator.js +41 -51
- package/map-container/map-container.d.ts.map +1 -1
- package/map-container.js +7 -7
- package/menu/common.js +8 -8
- package/menu/menu/menu.d.ts +3 -0
- package/menu/menu/menu.d.ts.map +1 -1
- package/menu/menu.js +52 -43
- package/message.js +12 -12
- package/navigation/common/navigation-action-common.d.ts.map +1 -1
- package/navigation/common.js +10 -6
- package/navigation/navigation/navigation.d.ts +3 -0
- package/navigation/navigation/navigation.d.ts.map +1 -1
- package/navigation/navigation-list/navigation-list.d.ts.map +1 -1
- package/navigation/navigation-list.js +17 -16
- package/navigation/navigation-marker/navigation-marker.d.ts +2 -1
- package/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
- package/navigation/navigation-marker.js +12 -10
- package/navigation/navigation-section/navigation-section.d.ts +3 -0
- package/navigation/navigation-section/navigation-section.d.ts.map +1 -1
- package/navigation/navigation-section.js +46 -37
- package/navigation/navigation.js +30 -21
- package/notification/notification.d.ts +6 -2
- package/notification/notification.d.ts.map +1 -1
- package/notification.js +55 -51
- package/option/option/option-base-element.d.ts +0 -7
- package/option/option/option-base-element.d.ts.map +1 -1
- package/option/option.js +110 -125
- package/overlay/overlay-base-element.d.ts +2 -0
- package/overlay/overlay-base-element.d.ts.map +1 -1
- package/overlay/overlay.d.ts +3 -0
- package/overlay/overlay.d.ts.map +1 -1
- package/overlay.js +83 -77
- package/package.json +40 -25
- package/paginator/common/paginator-common.d.ts.map +1 -1
- package/paginator/common.js +21 -17
- package/paginator/paginator.js +1 -1
- package/popover/popover/popover.d.ts +3 -0
- package/popover/popover/popover.d.ts.map +1 -1
- package/popover/popover-trigger.js +6 -6
- package/popover/popover.js +114 -109
- package/radio-button/common/radio-button-common.d.ts +3 -10
- package/radio-button/common/radio-button-common.d.ts.map +1 -1
- package/radio-button/common.js +43 -90
- package/radio-button/radio-button/radio-button.d.ts +9 -1
- package/radio-button/radio-button/radio-button.d.ts.map +1 -1
- package/radio-button/radio-button-group/radio-button-group.d.ts +19 -26
- package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
- package/radio-button/radio-button-group.js +112 -131
- package/radio-button/radio-button-panel/radio-button-panel.d.ts +19 -1
- package/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
- package/radio-button/radio-button-panel.js +56 -44
- package/radio-button/radio-button.js +34 -38
- package/select/select.d.ts +3 -9
- package/select/select.d.ts.map +1 -1
- package/select.js +65 -66
- package/selection-expansion-panel/selection-expansion-panel.d.ts +4 -1
- package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
- package/selection-expansion-panel.js +41 -31
- package/skiplink-list/skiplink-list.d.ts.map +1 -1
- package/skiplink-list.js +14 -13
- package/slider/slider.d.ts +0 -1
- package/slider/slider.d.ts.map +1 -1
- package/slider.js +1 -1
- package/standard-theme.css +238 -8
- package/stepper/step-label/step-label.d.ts +0 -2
- package/stepper/step-label/step-label.d.ts.map +1 -1
- package/stepper/step-label.js +6 -6
- package/stepper/step.js +4 -4
- package/stepper/stepper/stepper.d.ts +4 -1
- package/stepper/stepper/stepper.d.ts.map +1 -1
- package/stepper/stepper.js +22 -19
- package/table.css +15 -0
- package/tabs/tab-group/tab-group.d.ts +4 -1
- package/tabs/tab-group/tab-group.d.ts.map +1 -1
- package/tabs/tab-group.js +24 -20
- package/tabs/tab-label.js +1 -1
- package/tag/tag/tag.d.ts +4 -1
- package/tag/tag/tag.d.ts.map +1 -1
- package/tag/tag-group/tag-group.d.ts +5 -2
- package/tag/tag-group/tag-group.d.ts.map +1 -1
- package/tag/tag-group.js +13 -10
- package/tag/tag.js +25 -21
- package/teaser/teaser.d.ts +2 -2
- package/teaser/teaser.d.ts.map +1 -1
- package/teaser-hero/teaser-hero.d.ts +2 -6
- package/teaser-hero/teaser-hero.d.ts.map +1 -1
- package/teaser-hero.js +32 -57
- package/teaser-product/common.js +1 -1
- package/teaser-product/teaser-product.js +13 -13
- package/teaser.js +28 -28
- package/time-input/time-input.d.ts +3 -6
- package/time-input/time-input.d.ts.map +1 -1
- package/time-input.js +56 -55
- package/toast/toast.d.ts +3 -0
- package/toast/toast.d.ts.map +1 -1
- package/toast.js +51 -42
- package/toggle/toggle/toggle.d.ts +4 -8
- package/toggle/toggle/toggle.d.ts.map +1 -1
- package/toggle/toggle.js +48 -48
- package/toggle-check/toggle-check.d.ts +4 -6
- package/toggle-check/toggle-check.d.ts.map +1 -1
- package/toggle-check.js +23 -21
- package/train/train/train.d.ts.map +1 -1
- package/train/train-blocked-passage.js +1 -1
- package/train/train-formation/train-formation.d.ts +3 -11
- package/train/train-formation/train-formation.d.ts.map +1 -1
- package/train/train-formation.js +47 -65
- package/train/train-wagon/train-wagon.d.ts +11 -8
- package/train/train-wagon/train-wagon.d.ts.map +1 -1
- package/train/train-wagon.js +123 -134
- package/train/train.js +74 -78
- package/visual-checkbox/visual-checkbox.d.ts +4 -1
- package/visual-checkbox/visual-checkbox.d.ts.map +1 -1
- package/visual-checkbox.js +21 -17
- package/button/mini-button/mini-button-base-element.d.ts +0 -8
- package/button/mini-button/mini-button-base-element.d.ts.map +0 -1
- package/button/tertiary-button/tertiary-button.d.ts +0 -19
- package/button/tertiary-button/tertiary-button.d.ts.map +0 -1
- package/button/tertiary-button-link/tertiary-button-link.d.ts +0 -19
- package/button/tertiary-button-link/tertiary-button-link.d.ts.map +0 -1
- package/button/tertiary-button-link.d.ts +0 -2
- package/button/tertiary-button-link.d.ts.map +0 -1
- package/button/tertiary-button-link.js +0 -17
- package/button/tertiary-button-static/tertiary-button-static.d.ts +0 -19
- package/button/tertiary-button-static/tertiary-button-static.d.ts.map +0 -1
- package/button/tertiary-button-static.d.ts +0 -2
- package/button/tertiary-button-static.d.ts.map +0 -1
- package/button/tertiary-button-static.js +0 -17
- package/button/tertiary-button.d.ts +0 -2
- package/button/tertiary-button.d.ts.map +0 -1
- package/button/tertiary-button.js +0 -17
- package/chip/chip.d.ts.map +0 -1
- package/chip.d.ts +0 -2
- package/chip.d.ts.map +0 -1
- package/chip.js +0 -54
- package/core/dom/get-document-writing-mode.d.ts +0 -5
- package/core/dom/get-document-writing-mode.d.ts.map +0 -1
- package/core/dom/ssr.d.ts +0 -13
- package/core/dom/ssr.d.ts.map +0 -1
- package/core/eventing/handler-repository.d.ts +0 -28
- package/core/eventing/handler-repository.d.ts.map +0 -1
- package/core/observers/intersection-observer.d.ts +0 -20
- package/core/observers/intersection-observer.d.ts.map +0 -1
- package/core/observers/mutation-observer.d.ts +0 -13
- package/core/observers/mutation-observer.d.ts.map +0 -1
- package/core/observers/resize-observer.d.ts +0 -16
- package/core/observers/resize-observer.d.ts.map +0 -1
- package/core/observers.d.ts +0 -4
- package/core/observers.d.ts.map +0 -1
- package/core/observers.js +0 -38
- package/core/testing/wait-for-event.d.ts +0 -2
- package/core/testing/wait-for-event.d.ts.map +0 -1
- package/development/button/mini-button/mini-button-base-element.d.ts +0 -8
- package/development/button/mini-button/mini-button-base-element.d.ts.map +0 -1
- package/development/button/tertiary-button/tertiary-button.d.ts +0 -19
- package/development/button/tertiary-button/tertiary-button.d.ts.map +0 -1
- package/development/button/tertiary-button-link/tertiary-button-link.d.ts +0 -19
- package/development/button/tertiary-button-link/tertiary-button-link.d.ts.map +0 -1
- package/development/button/tertiary-button-link.d.ts +0 -2
- package/development/button/tertiary-button-link.d.ts.map +0 -1
- package/development/button/tertiary-button-link.js +0 -25
- package/development/button/tertiary-button-static/tertiary-button-static.d.ts +0 -19
- package/development/button/tertiary-button-static/tertiary-button-static.d.ts.map +0 -1
- package/development/button/tertiary-button-static.d.ts +0 -2
- package/development/button/tertiary-button-static.d.ts.map +0 -1
- package/development/button/tertiary-button-static.js +0 -25
- package/development/button/tertiary-button.d.ts +0 -2
- package/development/button/tertiary-button.d.ts.map +0 -1
- package/development/button/tertiary-button.js +0 -25
- package/development/chip/chip.d.ts.map +0 -1
- package/development/chip.d.ts +0 -2
- package/development/chip.d.ts.map +0 -1
- package/development/core/dom/get-document-writing-mode.d.ts +0 -5
- package/development/core/dom/get-document-writing-mode.d.ts.map +0 -1
- package/development/core/dom/ssr.d.ts +0 -13
- package/development/core/dom/ssr.d.ts.map +0 -1
- package/development/core/eventing/handler-repository.d.ts +0 -28
- package/development/core/eventing/handler-repository.d.ts.map +0 -1
- package/development/core/observers/intersection-observer.d.ts +0 -20
- package/development/core/observers/intersection-observer.d.ts.map +0 -1
- package/development/core/observers/mutation-observer.d.ts +0 -13
- package/development/core/observers/mutation-observer.d.ts.map +0 -1
- package/development/core/observers/resize-observer.d.ts +0 -16
- package/development/core/observers/resize-observer.d.ts.map +0 -1
- package/development/core/observers.d.ts +0 -4
- package/development/core/observers.d.ts.map +0 -1
- package/development/core/observers.js +0 -39
- package/development/core/testing/wait-for-event.d.ts +0 -2
- package/development/core/testing/wait-for-event.d.ts.map +0 -1
package/development/image.js
CHANGED
|
@@ -9,9 +9,7 @@ import { __esDecorate, __runInitializers } from "tslib";
|
|
|
9
9
|
import { S as SbbTypoScaleDefault, a as SbbBreakpointZeroMin, b as SbbBreakpointZeroMax, c as SbbBreakpointMicroMin, d as SbbBreakpointMicroMax, e as SbbBreakpointSmallMin, f as SbbBreakpointSmallMax, g as SbbBreakpointMediumMin, h as SbbBreakpointMediumMax, i as SbbBreakpointLargeMin, j as SbbBreakpointLargeMax, k as SbbBreakpointWideMin, l as SbbBreakpointWideMax, m as SbbBreakpointUltraMin, n as SbbBreakpointUltraMax } from "./sbb-tokens-BdGhUJjM.js";
|
|
10
10
|
import { css, html, nothing, LitElement } from "lit";
|
|
11
11
|
import { customElement, property, eventOptions } from "lit/decorators.js";
|
|
12
|
-
import { ref } from "lit/directives/ref.js";
|
|
13
12
|
import { forceType } from "./core/decorators.js";
|
|
14
|
-
import { hostContext } from "./core/dom.js";
|
|
15
13
|
const style = css`*,
|
|
16
14
|
::before,
|
|
17
15
|
::after {
|
|
@@ -19,83 +17,15 @@ const style = css`*,
|
|
|
19
17
|
}
|
|
20
18
|
|
|
21
19
|
:host {
|
|
22
|
-
--sbb-image-
|
|
23
|
-
--sbb-image-aspect-ratio: auto;
|
|
20
|
+
--sbb-image-aspect-ratio: 16 / 9;
|
|
24
21
|
--sbb-image-animation-duration: var(
|
|
25
|
-
--sbb-disable-animation-
|
|
22
|
+
--sbb-disable-animation-duration,
|
|
26
23
|
var(--sbb-animation-duration-4x)
|
|
27
24
|
);
|
|
28
25
|
--sbb-image-object-fit: cover;
|
|
29
26
|
display: block;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
:host([aspect-ratio="1-1"]) {
|
|
33
|
-
--sbb-image-aspect-ratio: 1 / 1;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
:host([aspect-ratio="1-2"]) {
|
|
37
|
-
--sbb-image-aspect-ratio: 1 / 2;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
:host([aspect-ratio="2-1"]) {
|
|
41
|
-
--sbb-image-aspect-ratio: 2 / 1;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
:host([aspect-ratio="2-3"]) {
|
|
45
|
-
--sbb-image-aspect-ratio: 2 / 3;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
:host([aspect-ratio="3-2"]) {
|
|
49
|
-
--sbb-image-aspect-ratio: 3 / 2;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
:host([aspect-ratio="3-4"]) {
|
|
53
|
-
--sbb-image-aspect-ratio: 3 / 4;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
:host([aspect-ratio="4-3"]) {
|
|
57
|
-
--sbb-image-aspect-ratio: 4 / 3;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
:host([aspect-ratio="4-5"]) {
|
|
61
|
-
--sbb-image-aspect-ratio: 4 / 5;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
:host([aspect-ratio="5-4"]) {
|
|
65
|
-
--sbb-image-aspect-ratio: 5 / 4;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
:host([aspect-ratio="16-9"]) {
|
|
69
|
-
--sbb-image-aspect-ratio: 16 / 9;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
:host([aspect-ratio="9-16"]) {
|
|
73
|
-
--sbb-image-aspect-ratio: 9 / 16;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
:host([data-teaser]) {
|
|
77
|
-
--sbb-image-aspect-ratio: 1 / 1;
|
|
78
|
-
}
|
|
79
|
-
@media (min-width: calc(37.5rem)) {
|
|
80
|
-
:host([data-teaser]) {
|
|
81
|
-
--sbb-image-aspect-ratio: 16 / 9;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
:host(:is([border-radius=none], [data-teaser])) {
|
|
86
|
-
--sbb-image-border-radius: 0;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
:host([border-radius=round]:not([data-teaser])) {
|
|
90
|
-
--sbb-image-border-radius: var(--sbb-border-radius-infinity);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
.sbb-image__figure {
|
|
94
|
-
display: flex;
|
|
95
|
-
flex-direction: column;
|
|
96
|
-
gap: var(--sbb-spacing-fixed-4x);
|
|
97
|
-
margin: 0;
|
|
98
|
-
height: 100%;
|
|
27
|
+
border-radius: var(--sbb-border-radius-4x);
|
|
28
|
+
overflow: hidden;
|
|
99
29
|
}
|
|
100
30
|
|
|
101
31
|
.sbb-image__img {
|
|
@@ -128,25 +58,10 @@ picture {
|
|
|
128
58
|
.sbb-image__wrapper {
|
|
129
59
|
display: flex;
|
|
130
60
|
position: relative;
|
|
131
|
-
overflow: hidden;
|
|
132
61
|
width: 100%;
|
|
133
62
|
height: 100%;
|
|
134
63
|
aspect-ratio: var(--sbb-image-aspect-ratio);
|
|
135
|
-
border-radius: var(--sbb-image-border-radius);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
.sbb-image__caption {
|
|
139
|
-
--sbb-text-font-size: var(--sbb-font-size-text-xs);
|
|
140
|
-
font-family: var(--sbb-typo-font-family);
|
|
141
|
-
font-weight: normal;
|
|
142
|
-
line-height: var(--sbb-typo-line-height-body-text);
|
|
143
|
-
letter-spacing: var(--sbb-typo-letter-spacing-body-text);
|
|
144
|
-
font-size: var(--sbb-text-font-size);
|
|
145
64
|
}`;
|
|
146
|
-
var __freeze = Object.freeze;
|
|
147
|
-
var __defProp = Object.defineProperty;
|
|
148
|
-
var __template = (cooked, raw) => __freeze(__defProp(cooked, "raw", { value: __freeze(cooked.slice()) }));
|
|
149
|
-
var _a;
|
|
150
65
|
const imageHelperGetBreakpoints = (jsonString) => {
|
|
151
66
|
if (!jsonString || jsonString.length === 0) {
|
|
152
67
|
return [];
|
|
@@ -211,7 +126,7 @@ const breakpointMap = {
|
|
|
211
126
|
"sbb-breakpoint-ultra-max": pxToRem(SbbBreakpointUltraMax)
|
|
212
127
|
};
|
|
213
128
|
let SbbImageElement = (() => {
|
|
214
|
-
var _alt_accessor_storage, _skipLqip_accessor_storage,
|
|
129
|
+
var _alt_accessor_storage, _skipLqip_accessor_storage, _customFocalPoint_accessor_storage, _decoding_accessor_storage, _focalPointDebug_accessor_storage, _focalPointX_accessor_storage, _focalPointY_accessor_storage, _imageSrc_accessor_storage, _importance_accessor_storage, _loading_accessor_storage, _performanceMark_accessor_storage, _pictureSizesConfig_accessor_storage, _a;
|
|
215
130
|
let _classDecorators = [customElement("sbb-image")];
|
|
216
131
|
let _classDescriptor;
|
|
217
132
|
let _classExtraInitializers = [];
|
|
@@ -224,15 +139,6 @@ let SbbImageElement = (() => {
|
|
|
224
139
|
let _skipLqip_decorators;
|
|
225
140
|
let _skipLqip_initializers = [];
|
|
226
141
|
let _skipLqip_extraInitializers = [];
|
|
227
|
-
let _caption_decorators;
|
|
228
|
-
let _caption_initializers = [];
|
|
229
|
-
let _caption_extraInitializers = [];
|
|
230
|
-
let _copyright_decorators;
|
|
231
|
-
let _copyright_initializers = [];
|
|
232
|
-
let _copyright_extraInitializers = [];
|
|
233
|
-
let _copyrightHolder_decorators;
|
|
234
|
-
let _copyrightHolder_initializers = [];
|
|
235
|
-
let _copyrightHolder_extraInitializers = [];
|
|
236
142
|
let _customFocalPoint_decorators;
|
|
237
143
|
let _customFocalPoint_initializers = [];
|
|
238
144
|
let _customFocalPoint_extraInitializers = [];
|
|
@@ -263,21 +169,12 @@ let SbbImageElement = (() => {
|
|
|
263
169
|
let _pictureSizesConfig_decorators;
|
|
264
170
|
let _pictureSizesConfig_initializers = [];
|
|
265
171
|
let _pictureSizesConfig_extraInitializers = [];
|
|
266
|
-
let _borderRadius_decorators;
|
|
267
|
-
let _borderRadius_initializers = [];
|
|
268
|
-
let _borderRadius_extraInitializers = [];
|
|
269
|
-
let _aspectRatio_decorators;
|
|
270
|
-
let _aspectRatio_initializers = [];
|
|
271
|
-
let _aspectRatio_extraInitializers = [];
|
|
272
172
|
let __imageLoaded_decorators;
|
|
273
|
-
|
|
173
|
+
_a = class extends _classSuper {
|
|
274
174
|
constructor() {
|
|
275
175
|
super(...arguments);
|
|
276
176
|
__privateAdd(this, _alt_accessor_storage);
|
|
277
177
|
__privateAdd(this, _skipLqip_accessor_storage);
|
|
278
|
-
__privateAdd(this, _caption_accessor_storage);
|
|
279
|
-
__privateAdd(this, _copyright_accessor_storage);
|
|
280
|
-
__privateAdd(this, _copyrightHolder_accessor_storage);
|
|
281
178
|
__privateAdd(this, _customFocalPoint_accessor_storage);
|
|
282
179
|
__privateAdd(this, _decoding_accessor_storage);
|
|
283
180
|
__privateAdd(this, _focalPointDebug_accessor_storage);
|
|
@@ -288,8 +185,6 @@ let SbbImageElement = (() => {
|
|
|
288
185
|
__privateAdd(this, _loading_accessor_storage);
|
|
289
186
|
__privateAdd(this, _performanceMark_accessor_storage);
|
|
290
187
|
__privateAdd(this, _pictureSizesConfig_accessor_storage);
|
|
291
|
-
__privateAdd(this, _borderRadius_accessor_storage);
|
|
292
|
-
__privateAdd(this, _aspectRatio_accessor_storage);
|
|
293
188
|
this._captionElement = __runInitializers(this, _instanceExtraInitializers);
|
|
294
189
|
this._config = {
|
|
295
190
|
nonRetinaQuality: "45",
|
|
@@ -297,10 +192,7 @@ let SbbImageElement = (() => {
|
|
|
297
192
|
};
|
|
298
193
|
__privateSet(this, _alt_accessor_storage, __runInitializers(this, _alt_initializers, ""));
|
|
299
194
|
__privateSet(this, _skipLqip_accessor_storage, (__runInitializers(this, _alt_extraInitializers), __runInitializers(this, _skipLqip_initializers, false)));
|
|
300
|
-
__privateSet(this,
|
|
301
|
-
__privateSet(this, _copyright_accessor_storage, (__runInitializers(this, _caption_extraInitializers), __runInitializers(this, _copyright_initializers, "")));
|
|
302
|
-
__privateSet(this, _copyrightHolder_accessor_storage, (__runInitializers(this, _copyright_extraInitializers), __runInitializers(this, _copyrightHolder_initializers, "Organization")));
|
|
303
|
-
__privateSet(this, _customFocalPoint_accessor_storage, (__runInitializers(this, _copyrightHolder_extraInitializers), __runInitializers(this, _customFocalPoint_initializers, false)));
|
|
195
|
+
__privateSet(this, _customFocalPoint_accessor_storage, (__runInitializers(this, _skipLqip_extraInitializers), __runInitializers(this, _customFocalPoint_initializers, false)));
|
|
304
196
|
__privateSet(this, _decoding_accessor_storage, (__runInitializers(this, _customFocalPoint_extraInitializers), __runInitializers(this, _decoding_initializers, "auto")));
|
|
305
197
|
__privateSet(this, _focalPointDebug_accessor_storage, (__runInitializers(this, _decoding_extraInitializers), __runInitializers(this, _focalPointDebug_initializers, false)));
|
|
306
198
|
__privateSet(this, _focalPointX_accessor_storage, (__runInitializers(this, _focalPointDebug_extraInitializers), __runInitializers(this, _focalPointX_initializers, 1)));
|
|
@@ -310,9 +202,7 @@ let SbbImageElement = (() => {
|
|
|
310
202
|
__privateSet(this, _loading_accessor_storage, (__runInitializers(this, _importance_extraInitializers), __runInitializers(this, _loading_initializers, "eager")));
|
|
311
203
|
__privateSet(this, _performanceMark_accessor_storage, (__runInitializers(this, _loading_extraInitializers), __runInitializers(this, _performanceMark_initializers, "")));
|
|
312
204
|
__privateSet(this, _pictureSizesConfig_accessor_storage, (__runInitializers(this, _performanceMark_extraInitializers), __runInitializers(this, _pictureSizesConfig_initializers, "")));
|
|
313
|
-
|
|
314
|
-
__privateSet(this, _aspectRatio_accessor_storage, (__runInitializers(this, _borderRadius_extraInitializers), __runInitializers(this, _aspectRatio_initializers, "16-9")));
|
|
315
|
-
__runInitializers(this, _aspectRatio_extraInitializers);
|
|
205
|
+
__runInitializers(this, _pictureSizesConfig_extraInitializers);
|
|
316
206
|
}
|
|
317
207
|
/**
|
|
318
208
|
* An alt text is not always necessary (e.g. in teaser cards when
|
|
@@ -340,38 +230,6 @@ let SbbImageElement = (() => {
|
|
|
340
230
|
set skipLqip(value) {
|
|
341
231
|
__privateSet(this, _skipLqip_accessor_storage, value);
|
|
342
232
|
}
|
|
343
|
-
/**
|
|
344
|
-
* A caption can provide additional context to the image (e.g.
|
|
345
|
-
* descriptions and the like).
|
|
346
|
-
* Links will automatically receive tabindex=-1 if hideFromScreenreader
|
|
347
|
-
* is set to true. That way they will no longer become focusable.
|
|
348
|
-
*/
|
|
349
|
-
get caption() {
|
|
350
|
-
return __privateGet(this, _caption_accessor_storage);
|
|
351
|
-
}
|
|
352
|
-
set caption(value) {
|
|
353
|
-
__privateSet(this, _caption_accessor_storage, value);
|
|
354
|
-
}
|
|
355
|
-
/**
|
|
356
|
-
* If a copyright text is provided, we will add it to the caption
|
|
357
|
-
* and create a structured data json-ld block with the copyright
|
|
358
|
-
* information.
|
|
359
|
-
*/
|
|
360
|
-
get copyright() {
|
|
361
|
-
return __privateGet(this, _copyright_accessor_storage);
|
|
362
|
-
}
|
|
363
|
-
set copyright(value) {
|
|
364
|
-
__privateSet(this, _copyright_accessor_storage, value);
|
|
365
|
-
}
|
|
366
|
-
/**
|
|
367
|
-
* Copyright holder can either be an Organization or a Person
|
|
368
|
-
*/
|
|
369
|
-
get copyrightHolder() {
|
|
370
|
-
return __privateGet(this, _copyrightHolder_accessor_storage);
|
|
371
|
-
}
|
|
372
|
-
set copyrightHolder(value) {
|
|
373
|
-
__privateSet(this, _copyrightHolder_accessor_storage, value);
|
|
374
|
-
}
|
|
375
233
|
/**
|
|
376
234
|
* Set this to true, if you want to pass a custom focal point
|
|
377
235
|
* for the image. See full documentation here:
|
|
@@ -564,34 +422,10 @@ let SbbImageElement = (() => {
|
|
|
564
422
|
set pictureSizesConfig(value) {
|
|
565
423
|
__privateSet(this, _pictureSizesConfig_accessor_storage, value);
|
|
566
424
|
}
|
|
567
|
-
/**
|
|
568
|
-
* Border radius of the image. Choose between a default radius, no radius and a completely round image.
|
|
569
|
-
*/
|
|
570
|
-
get borderRadius() {
|
|
571
|
-
return __privateGet(this, _borderRadius_accessor_storage);
|
|
572
|
-
}
|
|
573
|
-
set borderRadius(value) {
|
|
574
|
-
__privateSet(this, _borderRadius_accessor_storage, value);
|
|
575
|
-
}
|
|
576
|
-
/**
|
|
577
|
-
* Set an aspect ratio
|
|
578
|
-
* default is '16-9' (16/9)
|
|
579
|
-
* other values: 'free', '1-1', '1-2', '2-1', '2-3', '3-2', '3-4', '4-3', '4-5', '5-4', '9-16'
|
|
580
|
-
*/
|
|
581
|
-
get aspectRatio() {
|
|
582
|
-
return __privateGet(this, _aspectRatio_accessor_storage);
|
|
583
|
-
}
|
|
584
|
-
set aspectRatio(value) {
|
|
585
|
-
__privateSet(this, _aspectRatio_accessor_storage, value);
|
|
586
|
-
}
|
|
587
425
|
/** Whether the image is finished loading or failed to load. */
|
|
588
426
|
get complete() {
|
|
589
|
-
var
|
|
590
|
-
return ((_c = (_b = (
|
|
591
|
-
}
|
|
592
|
-
connectedCallback() {
|
|
593
|
-
super.connectedCallback();
|
|
594
|
-
this.toggleAttribute("data-teaser", !!hostContext("sbb-teaser-hero", this) || !!this.closest("sbb-teaser-paid"));
|
|
427
|
+
var _a2, _b, _c;
|
|
428
|
+
return ((_c = (_b = (_a2 = this.shadowRoot) == null ? void 0 : _a2.querySelector) == null ? void 0 : _b.call(_a2, ".sbb-image__img")) == null ? void 0 : _c.complete) ?? false;
|
|
595
429
|
}
|
|
596
430
|
updated(changedProperties) {
|
|
597
431
|
super.updated(changedProperties);
|
|
@@ -622,8 +456,8 @@ let SbbImageElement = (() => {
|
|
|
622
456
|
return value ? `${value}rem` : "";
|
|
623
457
|
}
|
|
624
458
|
_addFocusAbilityToLinksInCaption() {
|
|
625
|
-
var
|
|
626
|
-
(
|
|
459
|
+
var _a2;
|
|
460
|
+
(_a2 = this._linksInCaption) == null ? void 0 : _a2.forEach((link) => {
|
|
627
461
|
link.removeAttribute("tabindex");
|
|
628
462
|
});
|
|
629
463
|
}
|
|
@@ -733,86 +567,58 @@ let SbbImageElement = (() => {
|
|
|
733
567
|
this.dispatchEvent(new Event("load"));
|
|
734
568
|
}
|
|
735
569
|
render() {
|
|
736
|
-
let { caption } = this;
|
|
737
|
-
let schemaData = "";
|
|
738
570
|
const imageUrlLQIP = this._prepareImageUrl(this.imageSrc, true);
|
|
739
571
|
const imageUrlWithParams = this._prepareImageUrl(this.imageSrc, false);
|
|
740
572
|
if (this.loading === "lazy") {
|
|
741
573
|
this.decoding = "async";
|
|
742
574
|
this.importance = "low";
|
|
743
575
|
}
|
|
744
|
-
if (this.copyright) {
|
|
745
|
-
caption = `${this.caption} ©${this.copyright}`;
|
|
746
|
-
schemaData = `{
|
|
747
|
-
"@context": "https://schema.org",
|
|
748
|
-
"@type": "Photograph",
|
|
749
|
-
"image": "${this.imageSrc}",
|
|
750
|
-
"copyrightHolder": {
|
|
751
|
-
"@type": "${this.copyrightHolder}",
|
|
752
|
-
"name": "${this.copyright}"
|
|
753
|
-
}
|
|
754
|
-
}`;
|
|
755
|
-
}
|
|
756
576
|
const pictureSizeConfigs = this._preparePictureSizeConfigs();
|
|
757
577
|
return html`
|
|
758
|
-
<
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
src=${imageUrlLQIP}
|
|
764
|
-
width="1000"
|
|
765
|
-
height="562"
|
|
766
|
-
loading=${this.loading ?? nothing}
|
|
767
|
-
decoding=${this.decoding ?? nothing}
|
|
768
|
-
/>` : nothing}
|
|
769
|
-
|
|
770
|
-
<picture>
|
|
771
|
-
<!-- render picture element sources -->
|
|
772
|
-
${pictureSizeConfigs.map((config) => {
|
|
773
|
-
const imageHeight = config.image.height;
|
|
774
|
-
const imageWidth = config.image.width;
|
|
775
|
-
const mediaQuery = this._createMediaQueryString(config.mediaQueries);
|
|
776
|
-
return [
|
|
777
|
-
html` <source
|
|
778
|
-
media=${`${mediaQuery}`}
|
|
779
|
-
sizes=${`${imageWidth}px`}
|
|
780
|
-
srcset=${`${imageUrlWithParams}&w=${imageWidth}&h=${imageHeight}&q=${this._config.nonRetinaQuality} ${imageWidth}w, ${imageUrlWithParams}&w=${imageWidth * 2}&h=${imageHeight * 2}&q=${this._config.retinaQuality} ${imageWidth * 2}w`}
|
|
781
|
-
></source>`
|
|
782
|
-
];
|
|
783
|
-
})}
|
|
784
|
-
<img
|
|
785
|
-
alt=${this.alt || ""}
|
|
786
|
-
@load=${this._imageLoaded}
|
|
787
|
-
@error=${() => this.dispatchEvent(new Event("error"))}
|
|
788
|
-
class="sbb-image__img"
|
|
789
|
-
src=${this.imageSrc}
|
|
578
|
+
<div class="sbb-image__wrapper">
|
|
579
|
+
${!this.skipLqip ? html`<img
|
|
580
|
+
alt=""
|
|
581
|
+
class="sbb-image__blurred"
|
|
582
|
+
src=${imageUrlLQIP}
|
|
790
583
|
width="1000"
|
|
791
584
|
height="562"
|
|
792
585
|
loading=${this.loading ?? nothing}
|
|
793
586
|
decoding=${this.decoding ?? nothing}
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
587
|
+
/>` : nothing}
|
|
588
|
+
|
|
589
|
+
<picture>
|
|
590
|
+
<!-- render picture element sources -->
|
|
591
|
+
${pictureSizeConfigs.map((config) => {
|
|
592
|
+
const imageHeight = config.image.height;
|
|
593
|
+
const imageWidth = config.image.width;
|
|
594
|
+
const mediaQuery = this._createMediaQueryString(config.mediaQueries);
|
|
595
|
+
return html`
|
|
596
|
+
<source
|
|
597
|
+
media=${`${mediaQuery}`}
|
|
598
|
+
sizes=${`${imageWidth}px`}
|
|
599
|
+
srcset=${`${imageUrlWithParams}&w=${imageWidth}&h=${imageHeight}&q=${this._config.nonRetinaQuality} ${imageWidth}w, ${imageUrlWithParams}&w=${imageWidth * 2}&h=${imageHeight * 2}&q=${this._config.retinaQuality} ${imageWidth * 2}w`}
|
|
600
|
+
></source>`;
|
|
803
601
|
})}
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
602
|
+
<img
|
|
603
|
+
alt=${this.alt || ""}
|
|
604
|
+
@load=${this._imageLoaded}
|
|
605
|
+
@error=${() => this.dispatchEvent(new Event("error"))}
|
|
606
|
+
class="sbb-image__img"
|
|
607
|
+
src=${this.imageSrc}
|
|
608
|
+
width="1000"
|
|
609
|
+
height="562"
|
|
610
|
+
loading=${this.loading ?? nothing}
|
|
611
|
+
decoding=${this.decoding ?? nothing}
|
|
612
|
+
.fetchPriority=${this.importance ?? nothing}
|
|
613
|
+
/>
|
|
614
|
+
</picture>
|
|
615
|
+
</div>
|
|
807
616
|
`;
|
|
808
617
|
}
|
|
809
|
-
}, _alt_accessor_storage = new WeakMap(), _skipLqip_accessor_storage = new WeakMap(),
|
|
618
|
+
}, _alt_accessor_storage = new WeakMap(), _skipLqip_accessor_storage = new WeakMap(), _customFocalPoint_accessor_storage = new WeakMap(), _decoding_accessor_storage = new WeakMap(), _focalPointDebug_accessor_storage = new WeakMap(), _focalPointX_accessor_storage = new WeakMap(), _focalPointY_accessor_storage = new WeakMap(), _imageSrc_accessor_storage = new WeakMap(), _importance_accessor_storage = new WeakMap(), _loading_accessor_storage = new WeakMap(), _performanceMark_accessor_storage = new WeakMap(), _pictureSizesConfig_accessor_storage = new WeakMap(), _classThis = _a, (() => {
|
|
810
619
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
811
620
|
_alt_decorators = [forceType(), property()];
|
|
812
621
|
_skipLqip_decorators = [forceType(), property({ attribute: "skip-lqip", type: Boolean, reflect: true })];
|
|
813
|
-
_caption_decorators = [forceType(), property()];
|
|
814
|
-
_copyright_decorators = [forceType(), property()];
|
|
815
|
-
_copyrightHolder_decorators = [property({ attribute: "copyright-holder" })];
|
|
816
622
|
_customFocalPoint_decorators = [forceType(), property({ attribute: "custom-focal-point", type: Boolean })];
|
|
817
623
|
_decoding_decorators = [property()];
|
|
818
624
|
_focalPointDebug_decorators = [forceType(), property({ attribute: "focal-point-debug", type: Boolean })];
|
|
@@ -823,71 +629,54 @@ let SbbImageElement = (() => {
|
|
|
823
629
|
_loading_decorators = [property()];
|
|
824
630
|
_performanceMark_decorators = [forceType(), property({ attribute: "performance-mark" })];
|
|
825
631
|
_pictureSizesConfig_decorators = [forceType(), property({ attribute: "picture-sizes-config" })];
|
|
826
|
-
_borderRadius_decorators = [property({ attribute: "border-radius", reflect: true })];
|
|
827
|
-
_aspectRatio_decorators = [property({ attribute: "aspect-ratio", reflect: true })];
|
|
828
632
|
__imageLoaded_decorators = [eventOptions(eventListenerOptions)];
|
|
829
|
-
__esDecorate(
|
|
633
|
+
__esDecorate(_a, null, _alt_decorators, { kind: "accessor", name: "alt", static: false, private: false, access: { has: (obj) => "alt" in obj, get: (obj) => obj.alt, set: (obj, value) => {
|
|
830
634
|
obj.alt = value;
|
|
831
635
|
} }, metadata: _metadata }, _alt_initializers, _alt_extraInitializers);
|
|
832
|
-
__esDecorate(
|
|
636
|
+
__esDecorate(_a, null, _skipLqip_decorators, { kind: "accessor", name: "skipLqip", static: false, private: false, access: { has: (obj) => "skipLqip" in obj, get: (obj) => obj.skipLqip, set: (obj, value) => {
|
|
833
637
|
obj.skipLqip = value;
|
|
834
638
|
} }, metadata: _metadata }, _skipLqip_initializers, _skipLqip_extraInitializers);
|
|
835
|
-
__esDecorate(
|
|
836
|
-
obj.caption = value;
|
|
837
|
-
} }, metadata: _metadata }, _caption_initializers, _caption_extraInitializers);
|
|
838
|
-
__esDecorate(_a2, null, _copyright_decorators, { kind: "accessor", name: "copyright", static: false, private: false, access: { has: (obj) => "copyright" in obj, get: (obj) => obj.copyright, set: (obj, value) => {
|
|
839
|
-
obj.copyright = value;
|
|
840
|
-
} }, metadata: _metadata }, _copyright_initializers, _copyright_extraInitializers);
|
|
841
|
-
__esDecorate(_a2, null, _copyrightHolder_decorators, { kind: "accessor", name: "copyrightHolder", static: false, private: false, access: { has: (obj) => "copyrightHolder" in obj, get: (obj) => obj.copyrightHolder, set: (obj, value) => {
|
|
842
|
-
obj.copyrightHolder = value;
|
|
843
|
-
} }, metadata: _metadata }, _copyrightHolder_initializers, _copyrightHolder_extraInitializers);
|
|
844
|
-
__esDecorate(_a2, null, _customFocalPoint_decorators, { kind: "accessor", name: "customFocalPoint", static: false, private: false, access: { has: (obj) => "customFocalPoint" in obj, get: (obj) => obj.customFocalPoint, set: (obj, value) => {
|
|
639
|
+
__esDecorate(_a, null, _customFocalPoint_decorators, { kind: "accessor", name: "customFocalPoint", static: false, private: false, access: { has: (obj) => "customFocalPoint" in obj, get: (obj) => obj.customFocalPoint, set: (obj, value) => {
|
|
845
640
|
obj.customFocalPoint = value;
|
|
846
641
|
} }, metadata: _metadata }, _customFocalPoint_initializers, _customFocalPoint_extraInitializers);
|
|
847
|
-
__esDecorate(
|
|
642
|
+
__esDecorate(_a, null, _decoding_decorators, { kind: "accessor", name: "decoding", static: false, private: false, access: { has: (obj) => "decoding" in obj, get: (obj) => obj.decoding, set: (obj, value) => {
|
|
848
643
|
obj.decoding = value;
|
|
849
644
|
} }, metadata: _metadata }, _decoding_initializers, _decoding_extraInitializers);
|
|
850
|
-
__esDecorate(
|
|
645
|
+
__esDecorate(_a, null, _focalPointDebug_decorators, { kind: "accessor", name: "focalPointDebug", static: false, private: false, access: { has: (obj) => "focalPointDebug" in obj, get: (obj) => obj.focalPointDebug, set: (obj, value) => {
|
|
851
646
|
obj.focalPointDebug = value;
|
|
852
647
|
} }, metadata: _metadata }, _focalPointDebug_initializers, _focalPointDebug_extraInitializers);
|
|
853
|
-
__esDecorate(
|
|
648
|
+
__esDecorate(_a, null, _focalPointX_decorators, { kind: "accessor", name: "focalPointX", static: false, private: false, access: { has: (obj) => "focalPointX" in obj, get: (obj) => obj.focalPointX, set: (obj, value) => {
|
|
854
649
|
obj.focalPointX = value;
|
|
855
650
|
} }, metadata: _metadata }, _focalPointX_initializers, _focalPointX_extraInitializers);
|
|
856
|
-
__esDecorate(
|
|
651
|
+
__esDecorate(_a, null, _focalPointY_decorators, { kind: "accessor", name: "focalPointY", static: false, private: false, access: { has: (obj) => "focalPointY" in obj, get: (obj) => obj.focalPointY, set: (obj, value) => {
|
|
857
652
|
obj.focalPointY = value;
|
|
858
653
|
} }, metadata: _metadata }, _focalPointY_initializers, _focalPointY_extraInitializers);
|
|
859
|
-
__esDecorate(
|
|
654
|
+
__esDecorate(_a, null, _imageSrc_decorators, { kind: "accessor", name: "imageSrc", static: false, private: false, access: { has: (obj) => "imageSrc" in obj, get: (obj) => obj.imageSrc, set: (obj, value) => {
|
|
860
655
|
obj.imageSrc = value;
|
|
861
656
|
} }, metadata: _metadata }, _imageSrc_initializers, _imageSrc_extraInitializers);
|
|
862
|
-
__esDecorate(
|
|
657
|
+
__esDecorate(_a, null, _importance_decorators, { kind: "accessor", name: "importance", static: false, private: false, access: { has: (obj) => "importance" in obj, get: (obj) => obj.importance, set: (obj, value) => {
|
|
863
658
|
obj.importance = value;
|
|
864
659
|
} }, metadata: _metadata }, _importance_initializers, _importance_extraInitializers);
|
|
865
|
-
__esDecorate(
|
|
660
|
+
__esDecorate(_a, null, _loading_decorators, { kind: "accessor", name: "loading", static: false, private: false, access: { has: (obj) => "loading" in obj, get: (obj) => obj.loading, set: (obj, value) => {
|
|
866
661
|
obj.loading = value;
|
|
867
662
|
} }, metadata: _metadata }, _loading_initializers, _loading_extraInitializers);
|
|
868
|
-
__esDecorate(
|
|
663
|
+
__esDecorate(_a, null, _performanceMark_decorators, { kind: "accessor", name: "performanceMark", static: false, private: false, access: { has: (obj) => "performanceMark" in obj, get: (obj) => obj.performanceMark, set: (obj, value) => {
|
|
869
664
|
obj.performanceMark = value;
|
|
870
665
|
} }, metadata: _metadata }, _performanceMark_initializers, _performanceMark_extraInitializers);
|
|
871
|
-
__esDecorate(
|
|
666
|
+
__esDecorate(_a, null, _pictureSizesConfig_decorators, { kind: "accessor", name: "pictureSizesConfig", static: false, private: false, access: { has: (obj) => "pictureSizesConfig" in obj, get: (obj) => obj.pictureSizesConfig, set: (obj, value) => {
|
|
872
667
|
obj.pictureSizesConfig = value;
|
|
873
668
|
} }, metadata: _metadata }, _pictureSizesConfig_initializers, _pictureSizesConfig_extraInitializers);
|
|
874
|
-
__esDecorate(
|
|
875
|
-
obj.borderRadius = value;
|
|
876
|
-
} }, metadata: _metadata }, _borderRadius_initializers, _borderRadius_extraInitializers);
|
|
877
|
-
__esDecorate(_a2, null, _aspectRatio_decorators, { kind: "accessor", name: "aspectRatio", static: false, private: false, access: { has: (obj) => "aspectRatio" in obj, get: (obj) => obj.aspectRatio, set: (obj, value) => {
|
|
878
|
-
obj.aspectRatio = value;
|
|
879
|
-
} }, metadata: _metadata }, _aspectRatio_initializers, _aspectRatio_extraInitializers);
|
|
880
|
-
__esDecorate(_a2, null, __imageLoaded_decorators, { kind: "method", name: "_imageLoaded", static: false, private: false, access: { has: (obj) => "_imageLoaded" in obj, get: (obj) => obj._imageLoaded }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
669
|
+
__esDecorate(_a, null, __imageLoaded_decorators, { kind: "method", name: "_imageLoaded", static: false, private: false, access: { has: (obj) => "_imageLoaded" in obj, get: (obj) => obj._imageLoaded }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
881
670
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
882
671
|
_classThis = _classDescriptor.value;
|
|
883
672
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
884
|
-
})(),
|
|
673
|
+
})(), _a.styles = style, _a.events = {
|
|
885
674
|
error: "error",
|
|
886
675
|
load: "load"
|
|
887
|
-
}, __runInitializers(_classThis, _classExtraInitializers),
|
|
676
|
+
}, __runInitializers(_classThis, _classExtraInitializers), _a;
|
|
888
677
|
return _classThis;
|
|
889
678
|
})();
|
|
890
679
|
export {
|
|
891
680
|
SbbImageElement
|
|
892
681
|
};
|
|
893
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9pbWFnZS9pbWFnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTYmJCcmVha3BvaW50WmVyb01pbixcbiAgU2JiQnJlYWtwb2ludFplcm9NYXgsXG4gIFNiYkJyZWFrcG9pbnRNaWNyb01pbixcbiAgU2JiQnJlYWtwb2ludE1pY3JvTWF4LFxuICBTYmJCcmVha3BvaW50U21hbGxNaW4sXG4gIFNiYkJyZWFrcG9pbnRTbWFsbE1heCxcbiAgU2JiQnJlYWtwb2ludE1lZGl1bU1pbixcbiAgU2JiQnJlYWtwb2ludE1lZGl1bU1heCxcbiAgU2JiQnJlYWtwb2ludExhcmdlTWluLFxuICBTYmJCcmVha3BvaW50TGFyZ2VNYXgsXG4gIFNiYkJyZWFrcG9pbnRXaWRlTWluLFxuICBTYmJCcmVha3BvaW50V2lkZU1heCxcbiAgU2JiQnJlYWtwb2ludFVsdHJhTWluLFxuICBTYmJCcmVha3BvaW50VWx0cmFNYXgsXG4gIFNiYlR5cG9TY2FsZURlZmF1bHQsXG59IGZyb20gJ0BzYmItZXN0YS9seW5lLWRlc2lnbi10b2tlbnMnO1xuaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgTGl0RWxlbWVudCxcbiAgbm90aGluZyxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIGV2ZW50T3B0aW9ucywgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuXG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaG9zdENvbnRleHQgfSBmcm9tICcuLi9jb3JlL2RvbS5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2ltYWdlLnNjc3M/bGl0JmlubGluZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWcge1xuICBicmVha3BvaW50czogSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdCcmVha3BvaW50W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdCcmVha3BvaW50IHtcbiAgaW1hZ2U6IHtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICB3aWR0aDogbnVtYmVyO1xuICB9O1xuICBtZWRpYVF1ZXJpZXM6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnTWVkaWFRdWVyeVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnTWVkaWFRdWVyeSB7XG4gIGNvbmRpdGlvbkZlYXR1cmU6IHN0cmluZztcbiAgY29uZGl0aW9uRmVhdHVyZVZhbHVlOiB7XG4gICAgbHluZURlc2lnblRva2VuOiBib29sZWFuO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH07XG4gIGNvbmRpdGlvbk9wZXJhdG9yOiBmYWxzZTtcbn1cblxuLyoqXG4gKiB3ZSBjaGVjayB0aGUgc3RydWN0dXJlIG9mIHRoZSBkYXRhIG1hbnVhbGx5LCBzbyBpdCdzIHNhZmUgdG8gdXNlIGBhbnlgIGFzIHJldHVybiB0eXBlXG4gKi9cbmNvbnN0IGltYWdlSGVscGVyR2V0QnJlYWtwb2ludHMgPSAoXG4gIGpzb25TdHJpbmc6IHN0cmluZyxcbik6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnQnJlYWtwb2ludFtdID0+IHtcbiAgaWYgKCFqc29uU3RyaW5nIHx8IGpzb25TdHJpbmcubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gbWFrZSBzdXJlIHRoYXQgd2UgaGF2ZSBgYnJlYWtwb2ludHNgIGtleSBpbiBvYmplY3RcbiAgY29uc3QgbG9nV2FybmluZyA9IGltcG9ydC5tZXRhLmVudi5ERVZcbiAgICA/ICgpID0+XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnc2JiLWltYWdlIGVycm9yOiBhdHRyaWJ1dGUgYnJlYWtwb2ludHMgaGFzIHdyb25nIGRhdGEgZm9ybWF0LiBSZWZlcmVuY2UgdGhlIGRvY3VtZW50YXRpb24gdG8gc2VlIGhvdyB5b3Ugc2hvdWxkIGZvcm1hdCB0aGUgZGF0YSBmb3IgdGhpcyBhdHRyaWJ1dGUuJyxcbiAgICAgICAgKVxuICAgIDogbnVsbDtcbiAgbGV0IGpzb25PYmplY3Q6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnO1xuXG4gIHRyeSB7XG4gICAganNvbk9iamVjdCA9IEpTT04ucGFyc2UoanNvblN0cmluZyk7XG4gIH0gY2F0Y2gge1xuICAgIGxvZ1dhcm5pbmc/LigpO1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGlmICghanNvbk9iamVjdC5icmVha3BvaW50cyB8fCBqc29uT2JqZWN0LmJyZWFrcG9pbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGxvZ1dhcm5pbmc/LigpO1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIG1ha2Ugc3VyZSB3ZSBnZXQgYW4gYXJyYXkgb2YgYnJlYWtwb2ludHNcbiAgaWYgKCFBcnJheS5pc0FycmF5KGpzb25PYmplY3QuYnJlYWtwb2ludHMpKSB7XG4gICAgbG9nV2FybmluZz8uKCk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIDEuIG1ha2Ugc3VyZSB0aGF0IGVhY2ggZW50cnkgd2l0aGluIHRoZSBicmVha3BvaW50cyBvYmplY3QgY29udGFpbnMgb25seSBhbGxvd2VkIGtleXNcbiAgICogMi4gbWFrZSBzdXJlIHRoYXQgYWxsIG5lY2Vzc2FyeSBrZXlzIGFyZSBwcmVzZW50XG4gICAqL1xuICBsZXQgd3JvbmdLZXlEZXRlY3RlZCA9IGZhbHNlO1xuICBsZXQgbWlzc2luZ0tleURldGVjdGVkID0gZmFsc2U7XG5cbiAgY29uc3QgYWxsb3dlZEtleXMgPSBbJ2ltYWdlJywgJ21lZGlhUXVlcmllcyddO1xuXG4gIGpzb25PYmplY3QuYnJlYWtwb2ludHMuZm9yRWFjaCgoYnJlYWtwb2ludCkgPT4ge1xuICAgIGNvbnN0IGJyZWFrcG9pbnRLZXlzID0gT2JqZWN0LmtleXMoYnJlYWtwb2ludCk7XG5cbiAgICBicmVha3BvaW50S2V5cy5mb3JFYWNoKChicmVha3BvaW50S2V5KSA9PiB7XG4gICAgICBpZiAoIWFsbG93ZWRLZXlzLmluY2x1ZGVzKGJyZWFrcG9pbnRLZXkpKSB7XG4gICAgICAgIHdyb25nS2V5RGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgYWxsb3dlZEtleXMuZm9yRWFjaCgoYWxsb3dlZEtleSkgPT4ge1xuICAgICAgaWYgKCFicmVha3BvaW50S2V5cy5pbmNsdWRlcyhhbGxvd2VkS2V5KSkge1xuICAgICAgICBtaXNzaW5nS2V5RGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBpZiAod3JvbmdLZXlEZXRlY3RlZCB8fCBtaXNzaW5nS2V5RGV0ZWN0ZWQpIHtcbiAgICBsb2dXYXJuaW5nPy4oKTtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICByZXR1cm4ganNvbk9iamVjdC5icmVha3BvaW50cztcbn07XG5cbmNvbnN0IGV2ZW50TGlzdGVuZXJPcHRpb25zID0ge1xuICBvbmNlOiB0cnVlLFxuICBwYXNzaXZlOiB0cnVlLFxufTtcblxuY29uc3QgcHhUb1JlbSA9IChweDogbnVtYmVyKTogbnVtYmVyID0+IHB4IC8gU2JiVHlwb1NjYWxlRGVmYXVsdDtcblxuY29uc3QgYnJlYWtwb2ludE1hcDogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHtcbiAgJ3NiYi1icmVha3BvaW50LXplcm8tbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50WmVyb01pbiksXG4gICdzYmItYnJlYWtwb2ludC16ZXJvLW1heCc6IHB4VG9SZW0oU2JiQnJlYWtwb2ludFplcm9NYXgpLFxuICAnc2JiLWJyZWFrcG9pbnQtbWljcm8tbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50TWljcm9NaW4pLFxuICAnc2JiLWJyZWFrcG9pbnQtbWljcm8tbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50TWljcm9NYXgpLFxuICAnc2JiLWJyZWFrcG9pbnQtc21hbGwtbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50U21hbGxNaW4pLFxuICAnc2JiLWJyZWFrcG9pbnQtc21hbGwtbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50U21hbGxNYXgpLFxuICAnc2JiLWJyZWFrcG9pbnQtbWVkaXVtLW1pbic6IHB4VG9SZW0oU2JiQnJlYWtwb2ludE1lZGl1bU1pbiksXG4gICdzYmItYnJlYWtwb2ludC1tZWRpdW0tbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50TWVkaXVtTWF4KSxcbiAgJ3NiYi1icmVha3BvaW50LWxhcmdlLW1pbic6IHB4VG9SZW0oU2JiQnJlYWtwb2ludExhcmdlTWluKSxcbiAgJ3NiYi1icmVha3BvaW50LWxhcmdlLW1heCc6IHB4VG9SZW0oU2JiQnJlYWtwb2ludExhcmdlTWF4KSxcbiAgJ3NiYi1icmVha3BvaW50LXdpZGUtbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50V2lkZU1pbiksXG4gICdzYmItYnJlYWtwb2ludC13aWRlLW1heCc6IHB4VG9SZW0oU2JiQnJlYWtwb2ludFdpZGVNYXgpLFxuICAnc2JiLWJyZWFrcG9pbnQtdWx0cmEtbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50VWx0cmFNaW4pLFxuICAnc2JiLWJyZWFrcG9pbnQtdWx0cmEtbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50VWx0cmFNYXgpLFxufTtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhbiBpbWFnZS5cbiAqXG4gKiBAZXZlbnQge0V2ZW50fSBsb2FkIC0gRW1pdHMgd2hlbiB0aGUgaW1hZ2UgaGFzIGJlZW4gbG9hZGVkLlxuICogQGV2ZW50IHtFdmVudH0gZXJyb3IgLSBFbWl0cyB3aGVuIHRoZSBpbWFnZSBsb2FkaW5nIGVuZGVkIGluIGFuIGVycm9yLlxuICogQGNzc3Byb3AgWy0tc2JiLWltYWdlLWFzcGVjdC1yYXRpbz1hdXRvXSAtIENhbiBiZSB1c2VkIHRvIG92ZXJyaWRlIGBhc3BlY3RSYXRpb2AgcHJvcGVydHkuXG4gKiBUaGlzIHdheSB3ZSBjYW4gaGF2ZSwgZm9yIGV4YW1wbGUsIGFuIGltYWdlIGNvbXBvbmVudCB3aXRoIGFuIGFzcGVjdFxuICogcmF0aW8gb2YgNC8zIGluIHNtYWxsZXIgdmlld3BvcnRzIGFuZCAxNi85IGluIGxhcmdlciB2aWV3cG9ydHMuXG4gKiBAY3NzcHJvcCBbLS1zYmItaW1hZ2UtYm9yZGVyLXJhZGl1cz12YXIoLS1zYmItYm9yZGVyLXJhZGl1cy00eCldIC0gQ2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlXG4gKiBgYm9yZGVyUmFkaXVzYCBwcm9wZXJ0eSBpbiBjYXNlIG9mIGRpZmZlcmVudCB2YWx1ZXMgZm9yIGRpZmZlcmVudCB2aWV3cG9ydHMuXG4gKiBAY3NzcHJvcCBbLS1zYmItaW1hZ2Utb2JqZWN0LXBvc2l0aW9uXSAtIENhbiBiZSB1c2VkIHRvIHNldCB0aGUgb2JqZWN0LXBvc2l0aW9uIGNzcyBwcm9wZXJ0eSBvZiB0aGUgaW1hZ2UgaXRzZWxmIGlmIHRoZSBpbWFnZSBpdHNlbGYgaXMgY3JvcHBlZC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1pbWFnZS1vYmplY3QtZml0PWNvdmVyXSAtIENhbiBiZSB1c2VkIHRvIHNldCB0aGUgb2JqZWN0LWZpdCBjc3MgcHJvcGVydHkgb2YgdGhlIGltYWdlIGl0c2VsZiBpZiB0aGUgaW1hZ2UgaXRzZWxmIGlzIGNyb3BwZWQuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1pbWFnZScpXG5jbGFzcyBTYmJJbWFnZUVsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIGVycm9yOiAnZXJyb3InLFxuICAgIGxvYWQ6ICdsb2FkJyxcbiAgfSBhcyBjb25zdDtcblxuICBwcml2YXRlIF9jYXB0aW9uRWxlbWVudD86IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9saW5rc0luQ2FwdGlvbj86IE5vZGVMaXN0T2Y8SFRNTExpbmtFbGVtZW50PjtcbiAgcHJpdmF0ZSBfY29uZmlnID0ge1xuICAgIG5vblJldGluYVF1YWxpdHk6ICc0NScsXG4gICAgcmV0aW5hUXVhbGl0eTogJzIwJyxcbiAgfTtcblxuICAvKipcbiAgICogQW4gYWx0IHRleHQgaXMgbm90IGFsd2F5cyBuZWNlc3NhcnkgKGUuZy4gaW4gdGVhc2VyIGNhcmRzIHdoZW5cbiAgICogYWRkaXRpb25hbCBsaW5rIHRleHQgaXMgcHJvdmlkZWQpLiBJbiB0aGlzIGNhc2Ugd2UgY2FuIGxlYXZlXG4gICAqIHRoZSB2YWx1ZSBvZiB0aGUgYWx0IGF0dHJpYnV0ZSBibGFuaywgYnV0IHRoZSBhdHRyaWJ1dGUgaXRzZWxmXG4gICAqIHN0aWxsIG5lZWRzIHRvIGJlIHByZXNlbnQuIFRoYXQgd2F5IHdlIGNhbiBzaWduYWwgYXNzaXN0aXZlXG4gICAqIHRlY2hub2xvZ3ksIHRoYXQgdGhleSBjYW4gc2tpcCB0aGUgaW1hZ2UuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIGFsdDogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIElmIHNldCB0byBmYWxzZSwgd2Ugc2hvdyBhIGJsdXJyZWQgdmVyc2lvbiBvZiB0aGUgaW1hZ2UgYXNcbiAgICogcGxhY2Vob2xkZXIgYmVmb3JlIHRoZSBhY3R1YWwgaW1hZ2Ugc2hvd3MgdXAuIFRoaXMgd2lsbCBoZWxwXG4gICAqIHRvIGltcHJvdmUgdGhlIHBlcmNlaXZlZCBsb2FkaW5nIHBlcmZvcm1hbmNlLiBSZWFkIG1vcmUgYWJvdXRcbiAgICogdGhlIGlkZWEgb2YgbHFpcCBoZXJlOlxuICAgKiBodHRwczovL21lZGl1bS5jb20vQGltZ2l4L2xxaXAteW91ci1pbWFnZXMtZm9yLWZhc3QtbG9hZGluZy0yNTIzZDllZTRhNjJcbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdza2lwLWxxaXAnLCB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBza2lwTHFpcDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBIGNhcHRpb24gY2FuIHByb3ZpZGUgYWRkaXRpb25hbCBjb250ZXh0IHRvIHRoZSBpbWFnZSAoZS5nLlxuICAgKiBkZXNjcmlwdGlvbnMgYW5kIHRoZSBsaWtlKS5cbiAgICogTGlua3Mgd2lsbCBhdXRvbWF0aWNhbGx5IHJlY2VpdmUgdGFiaW5kZXg9LTEgaWYgaGlkZUZyb21TY3JlZW5yZWFkZXJcbiAgICogaXMgc2V0IHRvIHRydWUuIFRoYXQgd2F5IHRoZXkgd2lsbCBubyBsb25nZXIgYmVjb21lIGZvY3VzYWJsZS5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgY2FwdGlvbjogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIElmIGEgY29weXJpZ2h0IHRleHQgaXMgcHJvdmlkZWQsIHdlIHdpbGwgYWRkIGl0IHRvIHRoZSBjYXB0aW9uXG4gICAqIGFuZCBjcmVhdGUgYSBzdHJ1Y3R1cmVkIGRhdGEganNvbi1sZCBibG9jayB3aXRoIHRoZSBjb3B5cmlnaHRcbiAgICogaW5mb3JtYXRpb24uXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIGNvcHlyaWdodDogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIENvcHlyaWdodCBob2xkZXIgY2FuIGVpdGhlciBiZSBhbiBPcmdhbml6YXRpb24gb3IgYSBQZXJzb25cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2NvcHlyaWdodC1ob2xkZXInIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBjb3B5cmlnaHRIb2xkZXI6ICdPcmdhbml6YXRpb24nIHwgJ1BlcnNvbicgPSAnT3JnYW5pemF0aW9uJztcblxuICAvKipcbiAgICogU2V0IHRoaXMgdG8gdHJ1ZSwgaWYgeW91IHdhbnQgdG8gcGFzcyBhIGN1c3RvbSBmb2NhbCBwb2ludFxuICAgKiBmb3IgdGhlIGltYWdlLiBTZWUgZnVsbCBkb2N1bWVudGF0aW9uIGhlcmU6XG4gICAqIGh0dHBzOi8vZG9jcy5pbWdpeC5jb20vYXBpcy9yZW5kZXJpbmcvZm9jYWxwb2ludC1jcm9wXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnY3VzdG9tLWZvY2FsLXBvaW50JywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgY3VzdG9tRm9jYWxQb2ludDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJZiB0aGUgbGF6eSBwcm9wZXJ0eSBpcyBzZXQgdG8gdHJ1ZSwgdGhlIG1vZHVsZSB3aWxsIGF1dG9tYXRpY2FsbHlcbiAgICogY2hhbmdlIHRoZSBkZWNvZGluZyB0byBhc3luYywgb3RoZXJ3aXNlIHRoZSBkZWNvZGluZyBpcyBzZXQgdG8gYXV0b1xuICAgKiB3aGljaCBsZWF2ZXMgdGhlIGhhbmRsaW5nIHVwIHRvIHRoZSBicm93c2VyLiBSZWFkIG1vcmUgYWJvdXQgdGhlXG4gICAqIGRlY29kaW5nIGF0dHJpYnV0ZSBoZXJlOlxuICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEltYWdlRWxlbWVudC9kZWNvZGluZ1xuICAgKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGFjY2Vzc29yIGRlY29kaW5nOiAnc3luYycgfCAnYXN5bmMnIHwgJ2F1dG8nID0gJ2F1dG8nO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhpcyB0byB0cnVlLCB0byByZWNlaXZlIHZpc3VhbCBndWlkYW5jZSB3aGVyZSB0aGUgY3VzdG9tIGZvY2FsXG4gICAqIHBvaW50IGlzIGN1cnJlbnRseSBzZXQuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZm9jYWwtcG9pbnQtZGVidWcnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBmb2NhbFBvaW50RGVidWc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogUGFzcyBpbiBhIGZsb2F0aW5nIG51bWJlciBiZXR3ZWVuIDAgKGxlZnQpIGFuZCAxIChyaWdodCkuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZm9jYWwtcG9pbnQteCcsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZm9jYWxQb2ludFg6IG51bWJlciA9IDE7XG5cbiAgLyoqXG4gICAqIFBhc3MgaW4gYSBmbG9hdGluZyBudW1iZXIgYmV0d2VlbiAwICh0b3ApIGFuZCAxIChib3R0b20pLlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ZvY2FsLXBvaW50LXknLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIGFjY2Vzc29yIGZvY2FsUG9pbnRZOiBudW1iZXIgPSAxO1xuXG4gIC8qKlxuICAgKiBSaWdodCBub3cgdGhlIG1vZHVsZSBpcyBoZWF2aWx5IGNvdXBsZWQgd2l0aCB0aGUgaW1hZ2UgZGVsaXZlcnlcbiAgICogc2VydmljZSBpbWdpeCBhbmQgZGVwZW5kcyBvbiB0aGUgb3JpZ2luYWwgZmlsZXMgYmVpbmcgc3RvcmVkXG4gICAqIGluc2lkZSBBRU0uIFlvdSBjYW4gcGFzcyBpbiBhbnkgaHR0cHM6Ly9jZG4uaW1nLnNiYi5jaCBpbWdcbiAgICogc3JjIGFkZHJlc3MgeW91IGZpbmQgb24gc2JiLmNoIHRvIHBsYXkgYXJvdW5kIHdpdGggaXQuIEp1c3RcbiAgICogc3RyaXAgdGhlIHVybCBwYXJhbWV0ZXJzIGFuZCBwYXN0ZSBpbiB0aGUgcGxhaW4gZmlsZSBhZGRyZXNzLlxuICAgKiBJZiB5b3Ugd2FudCB0byBrbm93IGhvdyB0byBiZXN0IHdvcmsgd2l0aCB0aGlzIG1vZHVsZSB3aXRoXG4gICAqIGltYWdlcyBjb21pbmcgZnJvbSBhIGRpZmZlcmVudCBzb3VyY2UsIHBsZWFzZSBjb250YWN0IHRoZVxuICAgKiBMWU5FIENvcmUgVGVhbS5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdpbWFnZS1zcmMnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBpbWFnZVNyYzogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbXBvcnRhbmNlIGF0dHJpYnV0ZSBpcyBmYWlybHkgbmV3IGF0dHJpYnV0ZSB3aGljaCBzaG91bGRcbiAgICogaGVscCB0aGUgYnJvd3NlciBkZWNpZGUgd2hpY2ggcmVzb3VyY2VzIGl0IHNob3VsZCBwcmlvcml0aXNlXG4gICAqIGR1cmluZyBwYWdlIGxvYWQuIFdlIHdpbGwgc2V0IHRoZSBhdHRyaWJ1dGUgdmFsdWUgYmFzZWQgb24gdGhlXG4gICAqIHZhbHVlLCB3ZSByZWNlaXZlIGluIHRoZSBsb2FkaW5nIGF0dHJpYnV0ZS4gJ2VhZ2VyJywgd2hpY2ggd2UgdXNlXG4gICAqIGZvciB0aGUgbGFyZ2VzdCBpbWFnZSB3aXRoaW4gdGhlIGluaXRpYWwgdmlld3BvcnQsIHdpbGwgc2V0IHRoZVxuICAgKiBhdHRyaWJ1dGUgdmFsdWUgdG8gJ2hpZ2gnLiAnbGF6eScsIHdoaWNoIHdlIHVzZSBmb3IgaW1hZ2VzIGJlbG93XG4gICAqIHRoZSBmb2xkLCB3aWxsIHNldCB0aGUgYXR0cmlidXRlIHZhbHVlIHRvICdsb3cnLlxuICAgKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGFjY2Vzc29yIGltcG9ydGFuY2U6ICdhdXRvJyB8ICdoaWdoJyB8ICdsb3cnID0gJ2hpZ2gnO1xuXG4gIC8qKlxuICAgKiBXaXRoIHRoZSBzdXBwb3J0IG9mIG5hdGl2ZSBpbWFnZSBsYXp5IGxvYWRpbmcsIHdlIGNhbiBub3dcbiAgICogZGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBsb2FkIHRoZSBpbWFnZSBpbW1lZGlhdGVseSBvciBvbmx5XG4gICAqIG9uY2UgaXQgaXMgY2xvc2UgdG8gdGhlIHZpc2libGUgdmlld3BvcnQuIFRoZSB2YWx1ZSBlYWdlciBpc1xuICAgKiBiZXN0IHVzZWQgZm9yIGltYWdlcyB3aXRoaW4gdGhlIGluaXRpYWwgdmlld3BvcnQuIFdlIHdhbnQgdG9cbiAgICogbG9hZCB0aGVzZSBpbWFnZXMgYXMgZmFzdCBhcyBwb3NzaWJsZSB0byBpbXByb3ZlIHRoZSBDb3JlIFdlYlxuICAgKiBWaXRhbHMgdmFsdWVzLiBsYXp5IG9uIHRoZSBvdGhlciBoYW5kIHdvcmtzIGJlc3QgZm9yIGltYWdlc1xuICAgKiB3aGljaCBhcmUgZnVydGhlciBkb3duIHRoZSBwYWdlIG9yIGludmlzaWJsZSBkdXJpbmcgdGhlIGxvYWRpbmdcbiAgICogb2YgdGhlIGluaXRpYWwgdmlld3BvcnQuXG4gICAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgYWNjZXNzb3IgbG9hZGluZzogJ2VhZ2VyJyB8ICdsYXp5JyA9ICdlYWdlcic7XG5cbiAgLyoqXG4gICAqIFdpdGggcGVyZm9ybWFuY2UubWFyayB5b3UgY2FuIGxvZyBhIHRpbWVzdGFtcCBhc3NvY2lhdGVkIHdpdGhcbiAgICogdGhlIG5hbWUgeW91IGRlZmluZSBpbiBwZXJmb3JtYW5jZU1hcmsgd2hlbiBhIGNlcnRhaW4gZXZlbnQgaXNcbiAgICogaGFwcGVuaW5nLiBJbiBvdXIgY2FzZSB3ZSB3aWxsIGxvZyB0aGUgcGVyZm9ybWFuY2UubWFyayBpbnRvXG4gICAqIHRoZSBQZXJmb3JtYW5jZUVudHJ5IEFQSSBvbmNlIHRoZSBpbWFnZSBpcyBmdWxseSBsb2FkZWQuXG4gICAqIFBlcmZvcm1hbmNlIG1vbml0b3JpbmcgdG9vbHMgbGlrZSBTcGVlZEN1cnZlIG9yIExpZ2h0aG91c2UgYXJlXG4gICAqIHRoZW4gYWJsZSB0byBncmFiIHRoZXNlIGVudHJpZXMgZnJvbSB0aGUgUGVyZm9ybWFuY2VFbnRyeSBBUElcbiAgICogYW5kIGdpdmUgdXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhbmQgaW5zaWdodHMgYWJvdXQgb3VyIHBhZ2VcbiAgICogbG9hZGluZyBiZWhhdmlvdXIuIFdlIGFyZSB0aGVuIGFsc28gYWJsZSB0byBtb25pdG9yIHRoZXNlXG4gICAqIHZhbHVlcyBvdmVyIGEgbG9uZyBwZXJpb2QgdG8gc2VlIGlmIG91ciBwZXJmb3JtYW5jZVxuICAgKiBpbmNyZWFzZXMgb3IgZGVjcmVhc2VzIG92ZXIgdGltZS4gQmVzdCB0byB1c2UgbG93ZXJjYXNlIHN0cmluZ3NcbiAgICogaGVyZSwgc2VwYXJhdGUgd29yZHMgd2l0aCB1bmRlcnNjb3JlcyBvciBkYXNoZXMuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncGVyZm9ybWFuY2UtbWFyaycgfSlcbiAgcHVibGljIGFjY2Vzc29yIHBlcmZvcm1hbmNlTWFyazogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIFdpdGggdGhlIHBpY3R1cmVTaXplc0NvbmZpZyBvYmplY3QsIHlvdSBjYW4gcGFzcyBpbiBpbmZvcm1hdGlvblxuICAgKiBpbnRvIGltYWdlIGFib3V0IHdoYXQga2luZCBvZiBzb3VyY2UgZWxlbWVudHMgc2hvdWxkIGdldFxuICAgKiByZW5kZXJlZC4gbWVkaWFRdWVyaWVzIGFjY2VwdHMgbXVsdGlwbGUgTWVkaWEgUXVlcnkgZW50cmllc1xuICAgKiB3aGljaCBjYW4gZ2V0IGNvbWJpbmVkIGJ5IGRlZmluaW5nIGEgY29uZGl0aW9uT3BlcmF0b3IuXG4gICAqIFR5cGUgaXM6IHN0cmluZ2lmaWVkIEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnLU9iamVjdFxuICAgKiBBbiBleGFtcGxlIGNvdWxkIGxvb2sgbGlrZSB0aGlzOlxuICAgKiB7XG4gICAqICAgIFwiYnJlYWtwb2ludHNcIjogW1xuICAgKiAgICAgIHtcbiAgICogICAgICAgIFwiaW1hZ2VcIjoge1xuICAgKiAgICAgICAgICBcImhlaWdodFwiOiBcIjY3NVwiLFxuICAgKiAgICAgICAgICBcIndpZHRoXCI6IFwiMTIwMFwiXG4gICAqICAgICAgICB9LFxuICAgKiAgICAgICAgXCJtZWRpYVF1ZXJpZXNcIjogW1xuICAgKiAgICAgICAgICB7XG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlXCI6IFwibWluLXdpZHRoXCIsXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlVmFsdWVcIjoge1xuICAgKiAgICAgICAgICAgICAgXCJseW5lRGVzaWduVG9rZW5cIjogdHJ1ZSxcbiAgICogICAgICAgICAgICAgIFwidmFsdWVcIjogXCJzYmItYnJlYWtwb2ludC1sYXJnZS1taW5cIlxuICAgKiAgICAgICAgICAgIH0sXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25PcGVyYXRvclwiOiBmYWxzZVxuICAgKiAgICAgICAgICB9XG4gICAqICAgICAgICBdXG4gICAqICAgICAgfSxcbiAgICogICAgICB7XG4gICAqICAgICAgICBcImltYWdlXCI6IHtcbiAgICogICAgICAgICAgXCJoZWlnaHRcIjogXCI1NDlcIixcbiAgICogICAgICAgICAgXCJ3aWR0aFwiOiBcIjk3NlwiXG4gICAqICAgICAgICB9LFxuICAgKiAgICAgICAgXCJtZWRpYVF1ZXJpZXNcIjogW1xuICAgKiAgICAgICAgICB7XG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlXCI6IFwibWluLXdpZHRoXCIsXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlVmFsdWVcIjoge1xuICAgKiAgICAgICAgICAgICAgXCJseW5lRGVzaWduVG9rZW5cIjogdHJ1ZSxcbiAgICogICAgICAgICAgICAgIFwidmFsdWVcIjogXCJzYmItYnJlYWtwb2ludC1zbWFsbC1taW5cIlxuICAgKiAgICAgICAgICAgIH0sXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25PcGVyYXRvclwiOiBmYWxzZVxuICAgKiAgICAgICAgICB9XG4gICAqICAgICAgICBdXG4gICAqICAgICAgfSxcbiAgICogICAgICB7XG4gICAqICAgICAgICBcImltYWdlXCI6IHtcbiAgICogICAgICAgICAgXCJoZWlnaHRcIjogXCIxODBcIixcbiAgICogICAgICAgICAgXCJ3aWR0aFwiOiBcIjMyMFwiXG4gICAqICAgICAgICB9LFxuICAgKiAgICAgICAgXCJtZWRpYVF1ZXJpZXNcIjogW1xuICAgKiAgICAgICAgICB7XG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlXCI6IFwibWF4LXdpZHRoXCIsXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlVmFsdWVcIjoge1xuICAgKiAgICAgICAgICAgICAgXCJseW5lRGVzaWduVG9rZW5cIjogdHJ1ZSxcbiAgICogICAgICAgICAgICAgIFwidmFsdWVcIjogXCJzYmItYnJlYWtwb2ludC1taWNyby1tYXhcIlxuICAgKiAgICAgICAgICAgIH0sXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25PcGVyYXRvclwiOiBcImFuZFwiXG4gICAqICAgICAgICAgIH0sXG4gICAqICAgICAgICAgIHtcbiAgICogICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVcIjogXCJvcmllbnRhdGlvblwiLFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICogICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IGZhbHNlLFxuICAgKiAgICAgICAgICAgICAgXCJ2YWx1ZVwiOiBcImxhbmRzY2FwZVwiXG4gICAqICAgICAgICAgICAgfSxcbiAgICogICAgICAgICAgICBcImNvbmRpdGlvbk9wZXJhdG9yXCI6IGZhbHNlXG4gICAqICAgICAgICAgIH1cbiAgICogICAgICAgIF1cbiAgICogICAgICB9XG4gICAqICAgIF1cbiAgICogIH1cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdwaWN0dXJlLXNpemVzLWNvbmZpZycgfSlcbiAgcHVibGljIGFjY2Vzc29yIHBpY3R1cmVTaXplc0NvbmZpZzogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIEJvcmRlciByYWRpdXMgb2YgdGhlIGltYWdlLiBDaG9vc2UgYmV0d2VlbiBhIGRlZmF1bHQgcmFkaXVzLCBubyByYWRpdXMgYW5kIGEgY29tcGxldGVseSByb3VuZCBpbWFnZS5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2JvcmRlci1yYWRpdXMnLCByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciBib3JkZXJSYWRpdXM6XG4gICAgfCAnZGVmYXVsdCdcbiAgICB8ICdub25lJ1xuICAgIHwgJ3JvdW5kJyA9ICdkZWZhdWx0JztcblxuICAvKipcbiAgICogU2V0IGFuIGFzcGVjdCByYXRpb1xuICAgKiBkZWZhdWx0IGlzICcxNi05JyAoMTYvOSlcbiAgICogb3RoZXIgdmFsdWVzOiAnZnJlZScsICcxLTEnLCAnMS0yJywgJzItMScsICcyLTMnLCAnMy0yJywgJzMtNCcsICc0LTMnLCAnNC01JywgJzUtNCcsICc5LTE2J1xuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYXNwZWN0LXJhdGlvJywgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYXNwZWN0UmF0aW86XG4gICAgfCAnZnJlZSdcbiAgICB8ICcxLTEnXG4gICAgfCAnMS0yJ1xuICAgIHwgJzItMSdcbiAgICB8ICcyLTMnXG4gICAgfCAnMy0yJ1xuICAgIHwgJzMtNCdcbiAgICB8ICc0LTMnXG4gICAgfCAnNC01J1xuICAgIHwgJzUtNCdcbiAgICB8ICc5LTE2J1xuICAgIHwgJzE2LTknID0gJzE2LTknO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBpbWFnZSBpcyBmaW5pc2hlZCBsb2FkaW5nIG9yIGZhaWxlZCB0byBsb2FkLiAqL1xuICBwdWJsaWMgZ2V0IGNvbXBsZXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3I/LjxIVE1MSW1hZ2VFbGVtZW50PignLnNiYi1pbWFnZV9faW1nJyk/LmNvbXBsZXRlID8/IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgZWxlbWVudCBpcyBuZXN0ZWQgaW4gYW4gYDxzYmItdGVhc2VyLWhlcm8+YCBlbGVtZW50IG9uIGluIGFuIGA8c2JiLXRlYXNlci1wYWlkPmAgZWxlbWVudC5cbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZShcbiAgICAgICdkYXRhLXRlYXNlcicsXG4gICAgICAhIWhvc3RDb250ZXh0KCdzYmItdGVhc2VyLWhlcm8nLCB0aGlzKSB8fCAhIXRoaXMuY2xvc2VzdCgnc2JiLXRlYXNlci1wYWlkJyksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB1cGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLnVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKCF0aGlzLl9jYXB0aW9uRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xpbmtzSW5DYXB0aW9uID0gdGhpcy5fY2FwdGlvbkVsZW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MTGlua0VsZW1lbnQ+KCdhJyk7XG5cbiAgICBpZiAoIXRoaXMuX2xpbmtzSW5DYXB0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fYWRkRm9jdXNBYmlsaXR5VG9MaW5rc0luQ2FwdGlvbigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgLy8gV2UgbmVlZCB0byB3YWl0IHVudGlsIHRoZSB1cGRhdGUgaXMgY29tcGxldGUgdG8gY2hlY2sgd2hldGhlciB0aGUgaW1hZ2UgaGFzIGFscmVhZHkgYmVlbiBjb21wbGV0ZWx5IGxvYWRlZC5cbiAgICBhd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlO1xuICAgIGlmICh0aGlzLmNvbXBsZXRlKSB7XG4gICAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1sb2FkZWQnLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9sb2dQZXJmb3JtYW5jZU1hcmtzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBlcmZvcm1hbmNlTWFyaykge1xuICAgICAgcGVyZm9ybWFuY2UuY2xlYXJNYXJrcyh0aGlzLnBlcmZvcm1hbmNlTWFyayk7XG4gICAgICBwZXJmb3JtYW5jZS5tYXJrKHRoaXMucGVyZm9ybWFuY2VNYXJrKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9tYXRjaE1lZGlhUXVlcnlEZXNpZ25Ub2tlbihicmVha3BvaW50U2l6ZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdmFsdWUgPSBicmVha3BvaW50TWFwW2JyZWFrcG9pbnRTaXplTmFtZV07XG4gICAgcmV0dXJuIHZhbHVlID8gYCR7dmFsdWV9cmVtYCA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWRkRm9jdXNBYmlsaXR5VG9MaW5rc0luQ2FwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9saW5rc0luQ2FwdGlvbj8uZm9yRWFjaCgobGluaykgPT4ge1xuICAgICAgbGluay5yZW1vdmVBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9wcmVwYXJlSW1hZ2VVcmwoYmFzZVVybDogc3RyaW5nIHwgdW5kZWZpbmVkLCBscXVpcCA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICBpZiAoIWJhc2VVcmwgfHwgYmFzZVVybCA9PT0gJycpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvLyBDcmVhdGluZyBhbiBVUkwgd2l0aG91dCBhIHNjaGVtYSB3aWxsIGZhaWwsIGJ1dCBpcyBhIHZhbGlkIGlucHV0IGZvciBiYXNlVXJsLlxuICAgIC8vIGUuZy4gaW1hZ2Utc3JjIGNhbiBiZSBodHRwczovL2V4YW1wbGUuY29tL215LWltYWdlLnBuZyBvciAvbXktaW1hZ2UucG5nXG4gICAgY29uc3QgaXNGdWxseVF1YWxpZmllZFVybCA9ICEhYmFzZVVybC5tYXRjaCgvXlxcdys6XFwvXFwvLyk7XG4gICAgY29uc3QgaW1hZ2VVcmxPYmogPSBpc0Z1bGx5UXVhbGlmaWVkVXJsID8gbmV3IFVSTChiYXNlVXJsKSA6IG5ldyBVUkwoYGh0dHA6Ly9ub29wLyR7YmFzZVVybH1gKTtcblxuICAgIGlmIChscXVpcCkge1xuICAgICAgLy8gYmx1ciBhbmQgc2l6ZTogP2JsdXI9MTAwJnc9MTAwJmg9NTZcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2JsdXInLCAnMTAwJyk7XG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCd3JywgJzEwMCcpO1xuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnaCcsICc1NicpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDRE4gSW5mb3JtYXRpb246IGh0dHBzOi8vZG9jcy5pbWdpeC5jb20vYXBpcy9yZW5kZXJpbmdcbiAgICAgIC8vIHBhcmFtLmF1dG86ID9hdXRvPWZvcm1hdCxjb21wcmVzcyxjcz10aW55c3JnYlxuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnYXV0bycsICdmb3JtYXQsY29tcHJlc3MsY3M9dGlueXNyZ2InKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jdXN0b21Gb2NhbFBvaW50KSB7XG4gICAgICAvLyBjcm9wOiBgJmZpdD1jcm9wJmNyb3A9Zm9jYWxwb2ludCZmcC14PSR7dGhpcy5mb2NhbFBvaW50WH0mZnAteT0ke3RoaXMuZm9jYWxQb2ludFl9JmZwLXo9MWAsXG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdmaXQnLCAnY3JvcCcpO1xuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnY3JvcCcsICdmb2NhbHBvaW50Jyk7XG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdmcC14JywgdGhpcy5mb2NhbFBvaW50WC50b1N0cmluZygxMCkpO1xuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnZnAteScsIHRoaXMuZm9jYWxQb2ludFkudG9TdHJpbmcoMTApKTtcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2ZwLXonLCAnMScpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZvY2FsUG9pbnREZWJ1Zykge1xuICAgICAgLy8gZm9jYWxQb2ludERlYnVnOiAnJmZwLWRlYnVnPXRydWUnXG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdmcC1kZWJ1ZycsICd0cnVlJyk7XG4gICAgfVxuXG4gICAgLy8gSW4gY2FzZSBvZiBcIm5vb3BcIiBob3N0LCB3ZSBkb24ndCByZXR1cm4gdGhlIGhvc3QgYW5kIG11c3QgcmVtb3ZlIHRoZVxuICAgIC8vIHN0YXJ0aW5nIGAvYCBvZiB0aGUgcGF0aG5hbWUuXG4gICAgcmV0dXJuIGlzRnVsbHlRdWFsaWZpZWRVcmxcbiAgICAgID8gaW1hZ2VVcmxPYmouaHJlZlxuICAgICAgOiBpbWFnZVVybE9iai5wYXRobmFtZS5zdWJzdHJpbmcoMSkgKyBpbWFnZVVybE9iai5zZWFyY2g7XG4gIH1cblxuICBwcml2YXRlIF9wcmVwYXJlUGljdHVyZVNpemVDb25maWdzKCk6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnQnJlYWtwb2ludFtdIHtcbiAgICBsZXQgcGljdHVyZVNpemVzQ29uZmlnO1xuXG4gICAgaWYgKHRoaXMucGljdHVyZVNpemVzQ29uZmlnKSB7XG4gICAgICBwaWN0dXJlU2l6ZXNDb25maWcgPSB0aGlzLnBpY3R1cmVTaXplc0NvbmZpZztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZGVmYXVsdCBjb25maWdcbiAgICAgIHBpY3R1cmVTaXplc0NvbmZpZyA9IGB7XG4gICAgICAgIFwiYnJlYWtwb2ludHNcIjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiaW1hZ2VcIjoge1xuICAgICAgICAgICAgICBcImhlaWdodFwiOiA2NzUsXG4gICAgICAgICAgICAgIFwid2lkdGhcIjogMTIwMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwibWVkaWFRdWVyaWVzXCI6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVwiOiBcIm1pbi13aWR0aFwiLFxuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICAgICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICBcInZhbHVlXCI6IFwic2JiLWJyZWFrcG9pbnQtbGFyZ2UtbWluXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogZmFsc2VcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJpbWFnZVwiOiB7XG4gICAgICAgICAgICAgIFwiaGVpZ2h0XCI6IDU0OSxcbiAgICAgICAgICAgICAgXCJ3aWR0aFwiOiA5NzZcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm1lZGlhUXVlcmllc1wiOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVcIjogXCJtaW4td2lkdGhcIixcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVWYWx1ZVwiOiB7XG4gICAgICAgICAgICAgICAgICBcImx5bmVEZXNpZ25Ub2tlblwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgXCJ2YWx1ZVwiOiBcInNiYi1icmVha3BvaW50LW1pY3JvLW1pblwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbk9wZXJhdG9yXCI6IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiaW1hZ2VcIjoge1xuICAgICAgICAgICAgICBcImhlaWdodFwiOiAxODAsXG4gICAgICAgICAgICAgIFwid2lkdGhcIjogMzIwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJtZWRpYVF1ZXJpZXNcIjogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlXCI6IFwibWF4LXdpZHRoXCIsXG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlVmFsdWVcIjoge1xuICAgICAgICAgICAgICAgICAgXCJseW5lRGVzaWduVG9rZW5cIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIFwidmFsdWVcIjogXCJzYmItYnJlYWtwb2ludC16ZXJvLW1heFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbk9wZXJhdG9yXCI6IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1gO1xuICAgIH1cblxuICAgIHJldHVybiBpbWFnZUhlbHBlckdldEJyZWFrcG9pbnRzKHBpY3R1cmVTaXplc0NvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVNZWRpYVF1ZXJ5U3RyaW5nKFxuICAgIG1lZGlhUXVlcmllczogSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdNZWRpYVF1ZXJ5W10sXG4gICk6IHN0cmluZyB7XG4gICAgbGV0IG1lZGlhUXVlcnkgPSAnJztcblxuICAgIG1lZGlhUXVlcmllcy5mb3JFYWNoKChtcSkgPT4ge1xuICAgICAgY29uc3QgbXFDb25kaXRpb24gPSBtcS5jb25kaXRpb25GZWF0dXJlO1xuICAgICAgbGV0IG1xVmFsdWU7XG5cbiAgICAgIGlmIChtcS5jb25kaXRpb25GZWF0dXJlVmFsdWUubHluZURlc2lnblRva2VuKSB7XG4gICAgICAgIG1xVmFsdWUgPSB0aGlzLl9tYXRjaE1lZGlhUXVlcnlEZXNpZ25Ub2tlbihtcS5jb25kaXRpb25GZWF0dXJlVmFsdWUudmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbXFWYWx1ZSA9IG1xLmNvbmRpdGlvbkZlYXR1cmVWYWx1ZS52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbXFDb21iaW5lciA9IG1xLmNvbmRpdGlvbk9wZXJhdG9yID8gYCAke21xLmNvbmRpdGlvbk9wZXJhdG9yfSBgIDogJyc7XG5cbiAgICAgIG1lZGlhUXVlcnkgKz0gYCgke21xQ29uZGl0aW9ufTogJHttcVZhbHVlfSkke21xQ29tYmluZXJ9YDtcbiAgICB9KTtcblxuICAgIHJldHVybiBtZWRpYVF1ZXJ5O1xuICB9XG5cbiAgQGV2ZW50T3B0aW9ucyhldmVudExpc3RlbmVyT3B0aW9ucylcbiAgcHJpdmF0ZSBfaW1hZ2VMb2FkZWQoKTogdm9pZCB7XG4gICAgdGhpcy5fbG9nUGVyZm9ybWFuY2VNYXJrcygpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWxvYWRlZCcsIHRydWUpO1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2xvYWQnKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICBsZXQgeyBjYXB0aW9uIH0gPSB0aGlzO1xuICAgIGxldCBzY2hlbWFEYXRhID0gJyc7XG5cbiAgICBjb25zdCBpbWFnZVVybExRSVAgPSB0aGlzLl9wcmVwYXJlSW1hZ2VVcmwodGhpcy5pbWFnZVNyYywgdHJ1ZSk7XG4gICAgY29uc3QgaW1hZ2VVcmxXaXRoUGFyYW1zID0gdGhpcy5fcHJlcGFyZUltYWdlVXJsKHRoaXMuaW1hZ2VTcmMsIGZhbHNlKTtcblxuICAgIGlmICh0aGlzLmxvYWRpbmcgPT09ICdsYXp5Jykge1xuICAgICAgdGhpcy5kZWNvZGluZyA9ICdhc3luYyc7XG4gICAgICB0aGlzLmltcG9ydGFuY2UgPSAnbG93JztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb3B5cmlnaHQpIHtcbiAgICAgIGNhcHRpb24gPSBgJHt0aGlzLmNhcHRpb259IMKpJHt0aGlzLmNvcHlyaWdodH1gO1xuICAgICAgc2NoZW1hRGF0YSA9IGB7XG4gICAgICAgIFwiQGNvbnRleHRcIjogXCJodHRwczovL3NjaGVtYS5vcmdcIixcbiAgICAgICAgXCJAdHlwZVwiOiBcIlBob3RvZ3JhcGhcIixcbiAgICAgICAgXCJpbWFnZVwiOiBcIiR7dGhpcy5pbWFnZVNyY31cIixcbiAgICAgICAgXCJjb3B5cmlnaHRIb2xkZXJcIjoge1xuICAgICAgICAgIFwiQHR5cGVcIjogXCIke3RoaXMuY29weXJpZ2h0SG9sZGVyfVwiLFxuICAgICAgICAgIFwibmFtZVwiOiBcIiR7dGhpcy5jb3B5cmlnaHR9XCJcbiAgICAgICAgfVxuICAgICAgfWA7XG4gICAgfVxuXG4gICAgY29uc3QgcGljdHVyZVNpemVDb25maWdzID0gdGhpcy5fcHJlcGFyZVBpY3R1cmVTaXplQ29uZmlncygpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGFsdCBhdHRyaWJ1dGUgc2hvdWxkIGFsd2F5cyBiZSBwcmVzZW50IGZvciB0aGUgaW1nIGVsZW1lbnQuXG4gICAgICogSWYgaXQgaGFzIGFuIGVtcHR5IHN0cmluZyBhcyBpdHMgdmFsdWUsIGl0IGlzIHNpbXBseSBpZ25vcmVkXG4gICAgICogYnkgYXNzaXN0aXZlIHRlY2hub2xvZ2llcy4gSWYgd2UgbGVhdmUgaXQgb3V0IGNvbXBsZXRlbHksXG4gICAgICogdGhleSBtaWdodCB0cnkgdG8gaW50ZXJwcmV0IHRoZSBpbWcgZWxlbWVudC5cbiAgICAgKi9cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxmaWd1cmUgY2xhc3M9XCJzYmItaW1hZ2VfX2ZpZ3VyZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWltYWdlX193cmFwcGVyXCI+XG4gICAgICAgICAgJHshdGhpcy5za2lwTHFpcFxuICAgICAgICAgICAgPyBodG1sYDxpbWdcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2JiLWltYWdlX19ibHVycmVkXCJcbiAgICAgICAgICAgICAgICBzcmM9JHtpbWFnZVVybExRSVB9XG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAwXCJcbiAgICAgICAgICAgICAgICBoZWlnaHQ9XCI1NjJcIlxuICAgICAgICAgICAgICAgIGxvYWRpbmc9JHt0aGlzLmxvYWRpbmcgPz8gbm90aGluZ31cbiAgICAgICAgICAgICAgICBkZWNvZGluZz0ke3RoaXMuZGVjb2RpbmcgPz8gbm90aGluZ31cbiAgICAgICAgICAgICAgLz5gXG4gICAgICAgICAgICA6IG5vdGhpbmd9XG5cbiAgICAgICAgICA8cGljdHVyZT5cbiAgICAgICAgICAgIDwhLS0gcmVuZGVyIHBpY3R1cmUgZWxlbWVudCBzb3VyY2VzIC0tPlxuICAgICAgICAgICAgJHtwaWN0dXJlU2l6ZUNvbmZpZ3MubWFwKChjb25maWcpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaW1hZ2VIZWlnaHQgPSBjb25maWcuaW1hZ2UuaGVpZ2h0O1xuICAgICAgICAgICAgICBjb25zdCBpbWFnZVdpZHRoID0gY29uZmlnLmltYWdlLndpZHRoO1xuICAgICAgICAgICAgICBjb25zdCBtZWRpYVF1ZXJ5ID0gdGhpcy5fY3JlYXRlTWVkaWFRdWVyeVN0cmluZyhjb25maWcubWVkaWFRdWVyaWVzKTtcbiAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICBodG1sYCA8c291cmNlXG4gICAgICAgICAgICAgICAgICBtZWRpYT0ke2Ake21lZGlhUXVlcnl9YH1cbiAgICAgICAgICAgICAgICAgIHNpemVzPSR7YCR7aW1hZ2VXaWR0aH1weGB9XG4gICAgICAgICAgICAgICAgICBzcmNzZXQ9JHtcbiAgICAgICAgICAgICAgICAgICAgYCR7aW1hZ2VVcmxXaXRoUGFyYW1zfSZ3PSR7aW1hZ2VXaWR0aH0maD0ke2ltYWdlSGVpZ2h0fSZxPSR7dGhpcy5fY29uZmlnLm5vblJldGluYVF1YWxpdHl9ICR7aW1hZ2VXaWR0aH13LCBgICtcbiAgICAgICAgICAgICAgICAgICAgYCR7aW1hZ2VVcmxXaXRoUGFyYW1zfSZ3PSR7aW1hZ2VXaWR0aCAqIDJ9Jmg9JHtpbWFnZUhlaWdodCAqIDJ9JnE9JHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb25maWcucmV0aW5hUXVhbGl0eVxuICAgICAgICAgICAgICAgICAgICB9ICR7aW1hZ2VXaWR0aCAqIDJ9d2BcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA+PC9zb3VyY2U+YCxcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBhbHQ9JHt0aGlzLmFsdCB8fCAnJ31cbiAgICAgICAgICAgICAgQGxvYWQ9JHt0aGlzLl9pbWFnZUxvYWRlZH1cbiAgICAgICAgICAgICAgQGVycm9yPSR7KCkgPT4gdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnZXJyb3InKSl9XG4gICAgICAgICAgICAgIGNsYXNzPVwic2JiLWltYWdlX19pbWdcIlxuICAgICAgICAgICAgICBzcmM9JHt0aGlzLmltYWdlU3JjIX1cbiAgICAgICAgICAgICAgd2lkdGg9XCIxMDAwXCJcbiAgICAgICAgICAgICAgaGVpZ2h0PVwiNTYyXCJcbiAgICAgICAgICAgICAgbG9hZGluZz0ke3RoaXMubG9hZGluZyA/PyBub3RoaW5nfVxuICAgICAgICAgICAgICBkZWNvZGluZz0ke3RoaXMuZGVjb2RpbmcgPz8gbm90aGluZ31cbiAgICAgICAgICAgICAgLmZldGNoUHJpb3JpdHk9JHt0aGlzLmltcG9ydGFuY2UgPz8gbm90aGluZ31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9waWN0dXJlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgJHtjYXB0aW9uXG4gICAgICAgICAgPyBodG1sYDxmaWdjYXB0aW9uXG4gICAgICAgICAgICAgIGNsYXNzPVwic2JiLWltYWdlX19jYXB0aW9uXCJcbiAgICAgICAgICAgICAgLmlubmVySFRNTD0ke2NhcHRpb259XG4gICAgICAgICAgICAgICR7cmVmKChlbCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhcHRpb25FbGVtZW50ID0gZWwgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPjwvZmlnY2FwdGlvbj5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAke3NjaGVtYURhdGFcbiAgICAgICAgICA/IGh0bWxgPHNjcmlwdCB0eXBlPVwiYXBwbGljYXRpb24vbGQranNvblwiIC5pbm5lckhUTUw9JHtzY2hlbWFEYXRhfT48L3NjcmlwdD5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgPC9maWd1cmU+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWltYWdlJzogU2JiSW1hZ2VFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeURBLE1BQU0sNEJBQTRCLENBQ2hDLGVBQ21EO0FBQ25ELE1BQUksQ0FBQyxjQUFjLFdBQVcsV0FBVyxHQUFHO0FBQzFDLFdBQU87O0FBSUgsUUFBQSxhQUNGLE1BQ0UsUUFBUSxLQUNOLHFKQUFxSjtBQUd6SixNQUFBO0FBRUEsTUFBQTtBQUNXLGlCQUFBLEtBQUssTUFBTSxVQUFVO0FBQUEsRUFBQSxRQUM1Qjs7QUFFTixXQUFPOztBQUdULE1BQUksQ0FBQyxXQUFXLGVBQWUsV0FBVyxZQUFZLFdBQVcsR0FBRzs7QUFFbEUsV0FBTzs7QUFJVCxNQUFJLENBQUMsTUFBTSxRQUFRLFdBQVcsV0FBVyxHQUFHOztBQUUxQyxXQUFPOztBQU9ULE1BQUksbUJBQW1CO0FBQ3ZCLE1BQUkscUJBQXFCO0FBRW5CLFFBQUEsY0FBYyxDQUFDLFNBQVMsY0FBYztBQUVqQyxhQUFBLFlBQVksUUFBUSxDQUFDLGVBQWM7QUFDdEMsVUFBQSxpQkFBaUIsT0FBTyxLQUFLLFVBQVU7QUFFOUIsbUJBQUEsUUFBUSxDQUFDLGtCQUFpQjtBQUN2QyxVQUFJLENBQUMsWUFBWSxTQUFTLGFBQWEsR0FBRztBQUNyQiwyQkFBQTtBQUFBLE1BQUE7QUFBQSxJQUNyQixDQUNEO0FBRVcsZ0JBQUEsUUFBUSxDQUFDLGVBQWM7QUFDakMsVUFBSSxDQUFDLGVBQWUsU0FBUyxVQUFVLEdBQUc7QUFDbkIsNkJBQUE7QUFB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
|
|
682
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9pbWFnZS9pbWFnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTYmJCcmVha3BvaW50WmVyb01pbixcbiAgU2JiQnJlYWtwb2ludFplcm9NYXgsXG4gIFNiYkJyZWFrcG9pbnRNaWNyb01pbixcbiAgU2JiQnJlYWtwb2ludE1pY3JvTWF4LFxuICBTYmJCcmVha3BvaW50U21hbGxNaW4sXG4gIFNiYkJyZWFrcG9pbnRTbWFsbE1heCxcbiAgU2JiQnJlYWtwb2ludE1lZGl1bU1pbixcbiAgU2JiQnJlYWtwb2ludE1lZGl1bU1heCxcbiAgU2JiQnJlYWtwb2ludExhcmdlTWluLFxuICBTYmJCcmVha3BvaW50TGFyZ2VNYXgsXG4gIFNiYkJyZWFrcG9pbnRXaWRlTWluLFxuICBTYmJCcmVha3BvaW50V2lkZU1heCxcbiAgU2JiQnJlYWtwb2ludFVsdHJhTWluLFxuICBTYmJCcmVha3BvaW50VWx0cmFNYXgsXG4gIFNiYlR5cG9TY2FsZURlZmF1bHQsXG59IGZyb20gJ0BzYmItZXN0YS9seW5lLWRlc2lnbi10b2tlbnMnO1xuaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgTGl0RWxlbWVudCxcbiAgbm90aGluZyxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIGV2ZW50T3B0aW9ucywgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGZvcmNlVHlwZSB9IGZyb20gJy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2ltYWdlLnNjc3M/bGl0JmlubGluZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWcge1xuICBicmVha3BvaW50czogSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdCcmVha3BvaW50W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdCcmVha3BvaW50IHtcbiAgaW1hZ2U6IHtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICB3aWR0aDogbnVtYmVyO1xuICB9O1xuICBtZWRpYVF1ZXJpZXM6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnTWVkaWFRdWVyeVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnTWVkaWFRdWVyeSB7XG4gIGNvbmRpdGlvbkZlYXR1cmU6IHN0cmluZztcbiAgY29uZGl0aW9uRmVhdHVyZVZhbHVlOiB7XG4gICAgbHluZURlc2lnblRva2VuOiBib29sZWFuO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH07XG4gIGNvbmRpdGlvbk9wZXJhdG9yOiBmYWxzZTtcbn1cblxuLyoqXG4gKiB3ZSBjaGVjayB0aGUgc3RydWN0dXJlIG9mIHRoZSBkYXRhIG1hbnVhbGx5LCBzbyBpdCdzIHNhZmUgdG8gdXNlIGBhbnlgIGFzIHJldHVybiB0eXBlXG4gKi9cbmNvbnN0IGltYWdlSGVscGVyR2V0QnJlYWtwb2ludHMgPSAoXG4gIGpzb25TdHJpbmc6IHN0cmluZyxcbik6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnQnJlYWtwb2ludFtdID0+IHtcbiAgaWYgKCFqc29uU3RyaW5nIHx8IGpzb25TdHJpbmcubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gbWFrZSBzdXJlIHRoYXQgd2UgaGF2ZSBgYnJlYWtwb2ludHNgIGtleSBpbiBvYmplY3RcbiAgY29uc3QgbG9nV2FybmluZyA9IGltcG9ydC5tZXRhLmVudi5ERVZcbiAgICA/ICgpID0+XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnc2JiLWltYWdlIGVycm9yOiBhdHRyaWJ1dGUgYnJlYWtwb2ludHMgaGFzIHdyb25nIGRhdGEgZm9ybWF0LiBSZWZlcmVuY2UgdGhlIGRvY3VtZW50YXRpb24gdG8gc2VlIGhvdyB5b3Ugc2hvdWxkIGZvcm1hdCB0aGUgZGF0YSBmb3IgdGhpcyBhdHRyaWJ1dGUuJyxcbiAgICAgICAgKVxuICAgIDogbnVsbDtcbiAgbGV0IGpzb25PYmplY3Q6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnO1xuXG4gIHRyeSB7XG4gICAganNvbk9iamVjdCA9IEpTT04ucGFyc2UoanNvblN0cmluZyk7XG4gIH0gY2F0Y2gge1xuICAgIGxvZ1dhcm5pbmc/LigpO1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGlmICghanNvbk9iamVjdC5icmVha3BvaW50cyB8fCBqc29uT2JqZWN0LmJyZWFrcG9pbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGxvZ1dhcm5pbmc/LigpO1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIG1ha2Ugc3VyZSB3ZSBnZXQgYW4gYXJyYXkgb2YgYnJlYWtwb2ludHNcbiAgaWYgKCFBcnJheS5pc0FycmF5KGpzb25PYmplY3QuYnJlYWtwb2ludHMpKSB7XG4gICAgbG9nV2FybmluZz8uKCk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIDEuIG1ha2Ugc3VyZSB0aGF0IGVhY2ggZW50cnkgd2l0aGluIHRoZSBicmVha3BvaW50cyBvYmplY3QgY29udGFpbnMgb25seSBhbGxvd2VkIGtleXNcbiAgICogMi4gbWFrZSBzdXJlIHRoYXQgYWxsIG5lY2Vzc2FyeSBrZXlzIGFyZSBwcmVzZW50XG4gICAqL1xuICBsZXQgd3JvbmdLZXlEZXRlY3RlZCA9IGZhbHNlO1xuICBsZXQgbWlzc2luZ0tleURldGVjdGVkID0gZmFsc2U7XG5cbiAgY29uc3QgYWxsb3dlZEtleXMgPSBbJ2ltYWdlJywgJ21lZGlhUXVlcmllcyddO1xuXG4gIGpzb25PYmplY3QuYnJlYWtwb2ludHMuZm9yRWFjaCgoYnJlYWtwb2ludCkgPT4ge1xuICAgIGNvbnN0IGJyZWFrcG9pbnRLZXlzID0gT2JqZWN0LmtleXMoYnJlYWtwb2ludCk7XG5cbiAgICBicmVha3BvaW50S2V5cy5mb3JFYWNoKChicmVha3BvaW50S2V5KSA9PiB7XG4gICAgICBpZiAoIWFsbG93ZWRLZXlzLmluY2x1ZGVzKGJyZWFrcG9pbnRLZXkpKSB7XG4gICAgICAgIHdyb25nS2V5RGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgYWxsb3dlZEtleXMuZm9yRWFjaCgoYWxsb3dlZEtleSkgPT4ge1xuICAgICAgaWYgKCFicmVha3BvaW50S2V5cy5pbmNsdWRlcyhhbGxvd2VkS2V5KSkge1xuICAgICAgICBtaXNzaW5nS2V5RGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBpZiAod3JvbmdLZXlEZXRlY3RlZCB8fCBtaXNzaW5nS2V5RGV0ZWN0ZWQpIHtcbiAgICBsb2dXYXJuaW5nPy4oKTtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICByZXR1cm4ganNvbk9iamVjdC5icmVha3BvaW50cztcbn07XG5cbmNvbnN0IGV2ZW50TGlzdGVuZXJPcHRpb25zID0ge1xuICBvbmNlOiB0cnVlLFxuICBwYXNzaXZlOiB0cnVlLFxufTtcblxuY29uc3QgcHhUb1JlbSA9IChweDogbnVtYmVyKTogbnVtYmVyID0+IHB4IC8gU2JiVHlwb1NjYWxlRGVmYXVsdDtcblxuY29uc3QgYnJlYWtwb2ludE1hcDogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHtcbiAgJ3NiYi1icmVha3BvaW50LXplcm8tbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50WmVyb01pbiksXG4gICdzYmItYnJlYWtwb2ludC16ZXJvLW1heCc6IHB4VG9SZW0oU2JiQnJlYWtwb2ludFplcm9NYXgpLFxuICAnc2JiLWJyZWFrcG9pbnQtbWljcm8tbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50TWljcm9NaW4pLFxuICAnc2JiLWJyZWFrcG9pbnQtbWljcm8tbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50TWljcm9NYXgpLFxuICAnc2JiLWJyZWFrcG9pbnQtc21hbGwtbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50U21hbGxNaW4pLFxuICAnc2JiLWJyZWFrcG9pbnQtc21hbGwtbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50U21hbGxNYXgpLFxuICAnc2JiLWJyZWFrcG9pbnQtbWVkaXVtLW1pbic6IHB4VG9SZW0oU2JiQnJlYWtwb2ludE1lZGl1bU1pbiksXG4gICdzYmItYnJlYWtwb2ludC1tZWRpdW0tbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50TWVkaXVtTWF4KSxcbiAgJ3NiYi1icmVha3BvaW50LWxhcmdlLW1pbic6IHB4VG9SZW0oU2JiQnJlYWtwb2ludExhcmdlTWluKSxcbiAgJ3NiYi1icmVha3BvaW50LWxhcmdlLW1heCc6IHB4VG9SZW0oU2JiQnJlYWtwb2ludExhcmdlTWF4KSxcbiAgJ3NiYi1icmVha3BvaW50LXdpZGUtbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50V2lkZU1pbiksXG4gICdzYmItYnJlYWtwb2ludC13aWRlLW1heCc6IHB4VG9SZW0oU2JiQnJlYWtwb2ludFdpZGVNYXgpLFxuICAnc2JiLWJyZWFrcG9pbnQtdWx0cmEtbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50VWx0cmFNaW4pLFxuICAnc2JiLWJyZWFrcG9pbnQtdWx0cmEtbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50VWx0cmFNYXgpLFxufTtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhbiBpbWFnZS5cbiAqXG4gKiBAZXZlbnQge0V2ZW50fSBsb2FkIC0gRW1pdHMgd2hlbiB0aGUgaW1hZ2UgaGFzIGJlZW4gbG9hZGVkLlxuICogQGV2ZW50IHtFdmVudH0gZXJyb3IgLSBFbWl0cyB3aGVuIHRoZSBpbWFnZSBsb2FkaW5nIGVuZGVkIGluIGFuIGVycm9yLlxuICogQGNzc3Byb3AgWy0tc2JiLWltYWdlLWFzcGVjdC1yYXRpbz1hdXRvXSAtIENhbiBiZSB1c2VkIHRvIG92ZXJyaWRlIGBhc3BlY3RSYXRpb2AgcHJvcGVydHkuXG4gKiBUaGlzIHdheSB3ZSBjYW4gaGF2ZSwgZm9yIGV4YW1wbGUsIGFuIGltYWdlIGNvbXBvbmVudCB3aXRoIGFuIGFzcGVjdFxuICogcmF0aW8gb2YgNC8zIGluIHNtYWxsZXIgdmlld3BvcnRzIGFuZCAxNi85IGluIGxhcmdlciB2aWV3cG9ydHMuXG4gKiBAY3NzcHJvcCBbLS1zYmItaW1hZ2Utb2JqZWN0LXBvc2l0aW9uXSAtIENhbiBiZSB1c2VkIHRvIHNldCB0aGUgb2JqZWN0LXBvc2l0aW9uIGNzcyBwcm9wZXJ0eSBvZiB0aGUgaW1hZ2UgaXRzZWxmIGlmIHRoZSBpbWFnZSBpdHNlbGYgaXMgY3JvcHBlZC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1pbWFnZS1vYmplY3QtZml0PWNvdmVyXSAtIENhbiBiZSB1c2VkIHRvIHNldCB0aGUgb2JqZWN0LWZpdCBjc3MgcHJvcGVydHkgb2YgdGhlIGltYWdlIGl0c2VsZiBpZiB0aGUgaW1hZ2UgaXRzZWxmIGlzIGNyb3BwZWQuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1pbWFnZScpXG5jbGFzcyBTYmJJbWFnZUVsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIGVycm9yOiAnZXJyb3InLFxuICAgIGxvYWQ6ICdsb2FkJyxcbiAgfSBhcyBjb25zdDtcblxuICBwcml2YXRlIF9jYXB0aW9uRWxlbWVudD86IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9saW5rc0luQ2FwdGlvbj86IE5vZGVMaXN0T2Y8SFRNTExpbmtFbGVtZW50PjtcbiAgcHJpdmF0ZSBfY29uZmlnID0ge1xuICAgIG5vblJldGluYVF1YWxpdHk6ICc0NScsXG4gICAgcmV0aW5hUXVhbGl0eTogJzIwJyxcbiAgfTtcblxuICAvKipcbiAgICogQW4gYWx0IHRleHQgaXMgbm90IGFsd2F5cyBuZWNlc3NhcnkgKGUuZy4gaW4gdGVhc2VyIGNhcmRzIHdoZW5cbiAgICogYWRkaXRpb25hbCBsaW5rIHRleHQgaXMgcHJvdmlkZWQpLiBJbiB0aGlzIGNhc2Ugd2UgY2FuIGxlYXZlXG4gICAqIHRoZSB2YWx1ZSBvZiB0aGUgYWx0IGF0dHJpYnV0ZSBibGFuaywgYnV0IHRoZSBhdHRyaWJ1dGUgaXRzZWxmXG4gICAqIHN0aWxsIG5lZWRzIHRvIGJlIHByZXNlbnQuIFRoYXQgd2F5IHdlIGNhbiBzaWduYWwgYXNzaXN0aXZlXG4gICAqIHRlY2hub2xvZ3ksIHRoYXQgdGhleSBjYW4gc2tpcCB0aGUgaW1hZ2UuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIGFsdDogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIElmIHNldCB0byBmYWxzZSwgd2Ugc2hvdyBhIGJsdXJyZWQgdmVyc2lvbiBvZiB0aGUgaW1hZ2UgYXNcbiAgICogcGxhY2Vob2xkZXIgYmVmb3JlIHRoZSBhY3R1YWwgaW1hZ2Ugc2hvd3MgdXAuIFRoaXMgd2lsbCBoZWxwXG4gICAqIHRvIGltcHJvdmUgdGhlIHBlcmNlaXZlZCBsb2FkaW5nIHBlcmZvcm1hbmNlLiBSZWFkIG1vcmUgYWJvdXRcbiAgICogdGhlIGlkZWEgb2YgbHFpcCBoZXJlOlxuICAgKiBodHRwczovL21lZGl1bS5jb20vQGltZ2l4L2xxaXAteW91ci1pbWFnZXMtZm9yLWZhc3QtbG9hZGluZy0yNTIzZDllZTRhNjJcbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdza2lwLWxxaXAnLCB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBza2lwTHFpcDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhpcyB0byB0cnVlLCBpZiB5b3Ugd2FudCB0byBwYXNzIGEgY3VzdG9tIGZvY2FsIHBvaW50XG4gICAqIGZvciB0aGUgaW1hZ2UuIFNlZSBmdWxsIGRvY3VtZW50YXRpb24gaGVyZTpcbiAgICogaHR0cHM6Ly9kb2NzLmltZ2l4LmNvbS9hcGlzL3JlbmRlcmluZy9mb2NhbHBvaW50LWNyb3BcbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdjdXN0b20tZm9jYWwtcG9pbnQnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBjdXN0b21Gb2NhbFBvaW50OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIElmIHRoZSBsYXp5IHByb3BlcnR5IGlzIHNldCB0byB0cnVlLCB0aGUgbW9kdWxlIHdpbGwgYXV0b21hdGljYWxseVxuICAgKiBjaGFuZ2UgdGhlIGRlY29kaW5nIHRvIGFzeW5jLCBvdGhlcndpc2UgdGhlIGRlY29kaW5nIGlzIHNldCB0byBhdXRvXG4gICAqIHdoaWNoIGxlYXZlcyB0aGUgaGFuZGxpbmcgdXAgdG8gdGhlIGJyb3dzZXIuIFJlYWQgbW9yZSBhYm91dCB0aGVcbiAgICogZGVjb2RpbmcgYXR0cmlidXRlIGhlcmU6XG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSW1hZ2VFbGVtZW50L2RlY29kaW5nXG4gICAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgYWNjZXNzb3IgZGVjb2Rpbmc6ICdzeW5jJyB8ICdhc3luYycgfCAnYXV0bycgPSAnYXV0byc7XG5cbiAgLyoqXG4gICAqIFNldCB0aGlzIHRvIHRydWUsIHRvIHJlY2VpdmUgdmlzdWFsIGd1aWRhbmNlIHdoZXJlIHRoZSBjdXN0b20gZm9jYWxcbiAgICogcG9pbnQgaXMgY3VycmVudGx5IHNldC5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdmb2NhbC1wb2ludC1kZWJ1ZycsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGZvY2FsUG9pbnREZWJ1ZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBQYXNzIGluIGEgZmxvYXRpbmcgbnVtYmVyIGJldHdlZW4gMCAobGVmdCkgYW5kIDEgKHJpZ2h0KS5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdmb2NhbC1wb2ludC14JywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBmb2NhbFBvaW50WDogbnVtYmVyID0gMTtcblxuICAvKipcbiAgICogUGFzcyBpbiBhIGZsb2F0aW5nIG51bWJlciBiZXR3ZWVuIDAgKHRvcCkgYW5kIDEgKGJvdHRvbSkuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZm9jYWwtcG9pbnQteScsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZm9jYWxQb2ludFk6IG51bWJlciA9IDE7XG5cbiAgLyoqXG4gICAqIFJpZ2h0IG5vdyB0aGUgbW9kdWxlIGlzIGhlYXZpbHkgY291cGxlZCB3aXRoIHRoZSBpbWFnZSBkZWxpdmVyeVxuICAgKiBzZXJ2aWNlIGltZ2l4IGFuZCBkZXBlbmRzIG9uIHRoZSBvcmlnaW5hbCBmaWxlcyBiZWluZyBzdG9yZWRcbiAgICogaW5zaWRlIEFFTS4gWW91IGNhbiBwYXNzIGluIGFueSBodHRwczovL2Nkbi5pbWcuc2JiLmNoIGltZ1xuICAgKiBzcmMgYWRkcmVzcyB5b3UgZmluZCBvbiBzYmIuY2ggdG8gcGxheSBhcm91bmQgd2l0aCBpdC4gSnVzdFxuICAgKiBzdHJpcCB0aGUgdXJsIHBhcmFtZXRlcnMgYW5kIHBhc3RlIGluIHRoZSBwbGFpbiBmaWxlIGFkZHJlc3MuXG4gICAqIElmIHlvdSB3YW50IHRvIGtub3cgaG93IHRvIGJlc3Qgd29yayB3aXRoIHRoaXMgbW9kdWxlIHdpdGhcbiAgICogaW1hZ2VzIGNvbWluZyBmcm9tIGEgZGlmZmVyZW50IHNvdXJjZSwgcGxlYXNlIGNvbnRhY3QgdGhlXG4gICAqIExZTkUgQ29yZSBUZWFtLlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ltYWdlLXNyYycgfSlcbiAgcHVibGljIGFjY2Vzc29yIGltYWdlU3JjOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogVGhlIGltcG9ydGFuY2UgYXR0cmlidXRlIGlzIGZhaXJseSBuZXcgYXR0cmlidXRlIHdoaWNoIHNob3VsZFxuICAgKiBoZWxwIHRoZSBicm93c2VyIGRlY2lkZSB3aGljaCByZXNvdXJjZXMgaXQgc2hvdWxkIHByaW9yaXRpc2VcbiAgICogZHVyaW5nIHBhZ2UgbG9hZC4gV2Ugd2lsbCBzZXQgdGhlIGF0dHJpYnV0ZSB2YWx1ZSBiYXNlZCBvbiB0aGVcbiAgICogdmFsdWUsIHdlIHJlY2VpdmUgaW4gdGhlIGxvYWRpbmcgYXR0cmlidXRlLiAnZWFnZXInLCB3aGljaCB3ZSB1c2VcbiAgICogZm9yIHRoZSBsYXJnZXN0IGltYWdlIHdpdGhpbiB0aGUgaW5pdGlhbCB2aWV3cG9ydCwgd2lsbCBzZXQgdGhlXG4gICAqIGF0dHJpYnV0ZSB2YWx1ZSB0byAnaGlnaCcuICdsYXp5Jywgd2hpY2ggd2UgdXNlIGZvciBpbWFnZXMgYmVsb3dcbiAgICogdGhlIGZvbGQsIHdpbGwgc2V0IHRoZSBhdHRyaWJ1dGUgdmFsdWUgdG8gJ2xvdycuXG4gICAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgYWNjZXNzb3IgaW1wb3J0YW5jZTogJ2F1dG8nIHwgJ2hpZ2gnIHwgJ2xvdycgPSAnaGlnaCc7XG5cbiAgLyoqXG4gICAqIFdpdGggdGhlIHN1cHBvcnQgb2YgbmF0aXZlIGltYWdlIGxhenkgbG9hZGluZywgd2UgY2FuIG5vd1xuICAgKiBkZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGxvYWQgdGhlIGltYWdlIGltbWVkaWF0ZWx5IG9yIG9ubHlcbiAgICogb25jZSBpdCBpcyBjbG9zZSB0byB0aGUgdmlzaWJsZSB2aWV3cG9ydC4gVGhlIHZhbHVlIGVhZ2VyIGlzXG4gICAqIGJlc3QgdXNlZCBmb3IgaW1hZ2VzIHdpdGhpbiB0aGUgaW5pdGlhbCB2aWV3cG9ydC4gV2Ugd2FudCB0b1xuICAgKiBsb2FkIHRoZXNlIGltYWdlcyBhcyBmYXN0IGFzIHBvc3NpYmxlIHRvIGltcHJvdmUgdGhlIENvcmUgV2ViXG4gICAqIFZpdGFscyB2YWx1ZXMuIGxhenkgb24gdGhlIG90aGVyIGhhbmQgd29ya3MgYmVzdCBmb3IgaW1hZ2VzXG4gICAqIHdoaWNoIGFyZSBmdXJ0aGVyIGRvd24gdGhlIHBhZ2Ugb3IgaW52aXNpYmxlIGR1cmluZyB0aGUgbG9hZGluZ1xuICAgKiBvZiB0aGUgaW5pdGlhbCB2aWV3cG9ydC5cbiAgICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBhY2Nlc3NvciBsb2FkaW5nOiAnZWFnZXInIHwgJ2xhenknID0gJ2VhZ2VyJztcblxuICAvKipcbiAgICogV2l0aCBwZXJmb3JtYW5jZS5tYXJrIHlvdSBjYW4gbG9nIGEgdGltZXN0YW1wIGFzc29jaWF0ZWQgd2l0aFxuICAgKiB0aGUgbmFtZSB5b3UgZGVmaW5lIGluIHBlcmZvcm1hbmNlTWFyayB3aGVuIGEgY2VydGFpbiBldmVudCBpc1xuICAgKiBoYXBwZW5pbmcuIEluIG91ciBjYXNlIHdlIHdpbGwgbG9nIHRoZSBwZXJmb3JtYW5jZS5tYXJrIGludG9cbiAgICogdGhlIFBlcmZvcm1hbmNlRW50cnkgQVBJIG9uY2UgdGhlIGltYWdlIGlzIGZ1bGx5IGxvYWRlZC5cbiAgICogUGVyZm9ybWFuY2UgbW9uaXRvcmluZyB0b29scyBsaWtlIFNwZWVkQ3VydmUgb3IgTGlnaHRob3VzZSBhcmVcbiAgICogdGhlbiBhYmxlIHRvIGdyYWIgdGhlc2UgZW50cmllcyBmcm9tIHRoZSBQZXJmb3JtYW5jZUVudHJ5IEFQSVxuICAgKiBhbmQgZ2l2ZSB1cyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFuZCBpbnNpZ2h0cyBhYm91dCBvdXIgcGFnZVxuICAgKiBsb2FkaW5nIGJlaGF2aW91ci4gV2UgYXJlIHRoZW4gYWxzbyBhYmxlIHRvIG1vbml0b3IgdGhlc2VcbiAgICogdmFsdWVzIG92ZXIgYSBsb25nIHBlcmlvZCB0byBzZWUgaWYgb3VyIHBlcmZvcm1hbmNlXG4gICAqIGluY3JlYXNlcyBvciBkZWNyZWFzZXMgb3ZlciB0aW1lLiBCZXN0IHRvIHVzZSBsb3dlcmNhc2Ugc3RyaW5nc1xuICAgKiBoZXJlLCBzZXBhcmF0ZSB3b3JkcyB3aXRoIHVuZGVyc2NvcmVzIG9yIGRhc2hlcy5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdwZXJmb3JtYW5jZS1tYXJrJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgcGVyZm9ybWFuY2VNYXJrOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogV2l0aCB0aGUgcGljdHVyZVNpemVzQ29uZmlnIG9iamVjdCwgeW91IGNhbiBwYXNzIGluIGluZm9ybWF0aW9uXG4gICAqIGludG8gaW1hZ2UgYWJvdXQgd2hhdCBraW5kIG9mIHNvdXJjZSBlbGVtZW50cyBzaG91bGQgZ2V0XG4gICAqIHJlbmRlcmVkLiBtZWRpYVF1ZXJpZXMgYWNjZXB0cyBtdWx0aXBsZSBNZWRpYSBRdWVyeSBlbnRyaWVzXG4gICAqIHdoaWNoIGNhbiBnZXQgY29tYmluZWQgYnkgZGVmaW5pbmcgYSBjb25kaXRpb25PcGVyYXRvci5cbiAgICogVHlwZSBpczogc3RyaW5naWZpZWQgSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWctT2JqZWN0XG4gICAqIEFuIGV4YW1wbGUgY291bGQgbG9vayBsaWtlIHRoaXM6XG4gICAqIHtcbiAgICogICAgXCJicmVha3BvaW50c1wiOiBbXG4gICAqICAgICAge1xuICAgKiAgICAgICAgXCJpbWFnZVwiOiB7XG4gICAqICAgICAgICAgIFwiaGVpZ2h0XCI6IFwiNjc1XCIsXG4gICAqICAgICAgICAgIFwid2lkdGhcIjogXCIxMjAwXCJcbiAgICogICAgICAgIH0sXG4gICAqICAgICAgICBcIm1lZGlhUXVlcmllc1wiOiBbXG4gICAqICAgICAgICAgIHtcbiAgICogICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVcIjogXCJtaW4td2lkdGhcIixcbiAgICogICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVWYWx1ZVwiOiB7XG4gICAqICAgICAgICAgICAgICBcImx5bmVEZXNpZ25Ub2tlblwiOiB0cnVlLFxuICAgKiAgICAgICAgICAgICAgXCJ2YWx1ZVwiOiBcInNiYi1icmVha3BvaW50LWxhcmdlLW1pblwiXG4gICAqICAgICAgICAgICAgfSxcbiAgICogICAgICAgICAgICBcImNvbmRpdGlvbk9wZXJhdG9yXCI6IGZhbHNlXG4gICAqICAgICAgICAgIH1cbiAgICogICAgICAgIF1cbiAgICogICAgICB9LFxuICAgKiAgICAgIHtcbiAgICogICAgICAgIFwiaW1hZ2VcIjoge1xuICAgKiAgICAgICAgICBcImhlaWdodFwiOiBcIjU0OVwiLFxuICAgKiAgICAgICAgICBcIndpZHRoXCI6IFwiOTc2XCJcbiAgICogICAgICAgIH0sXG4gICAqICAgICAgICBcIm1lZGlhUXVlcmllc1wiOiBbXG4gICAqICAgICAgICAgIHtcbiAgICogICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVcIjogXCJtaW4td2lkdGhcIixcbiAgICogICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVWYWx1ZVwiOiB7XG4gICAqICAgICAgICAgICAgICBcImx5bmVEZXNpZ25Ub2tlblwiOiB0cnVlLFxuICAgKiAgICAgICAgICAgICAgXCJ2YWx1ZVwiOiBcInNiYi1icmVha3BvaW50LXNtYWxsLW1pblwiXG4gICAqICAgICAgICAgICAgfSxcbiAgICogICAgICAgICAgICBcImNvbmRpdGlvbk9wZXJhdG9yXCI6IGZhbHNlXG4gICAqICAgICAgICAgIH1cbiAgICogICAgICAgIF1cbiAgICogICAgICB9LFxuICAgKiAgICAgIHtcbiAgICogICAgICAgIFwiaW1hZ2VcIjoge1xuICAgKiAgICAgICAgICBcImhlaWdodFwiOiBcIjE4MFwiLFxuICAgKiAgICAgICAgICBcIndpZHRoXCI6IFwiMzIwXCJcbiAgICogICAgICAgIH0sXG4gICAqICAgICAgICBcIm1lZGlhUXVlcmllc1wiOiBbXG4gICAqICAgICAgICAgIHtcbiAgICogICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVcIjogXCJtYXgtd2lkdGhcIixcbiAgICogICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVWYWx1ZVwiOiB7XG4gICAqICAgICAgICAgICAgICBcImx5bmVEZXNpZ25Ub2tlblwiOiB0cnVlLFxuICAgKiAgICAgICAgICAgICAgXCJ2YWx1ZVwiOiBcInNiYi1icmVha3BvaW50LW1pY3JvLW1heFwiXG4gICAqICAgICAgICAgICAgfSxcbiAgICogICAgICAgICAgICBcImNvbmRpdGlvbk9wZXJhdG9yXCI6IFwiYW5kXCJcbiAgICogICAgICAgICAgfSxcbiAgICogICAgICAgICAge1xuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVwiOiBcIm9yaWVudGF0aW9uXCIsXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlVmFsdWVcIjoge1xuICAgKiAgICAgICAgICAgICAgXCJseW5lRGVzaWduVG9rZW5cIjogZmFsc2UsXG4gICAqICAgICAgICAgICAgICBcInZhbHVlXCI6IFwibGFuZHNjYXBlXCJcbiAgICogICAgICAgICAgICB9LFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogZmFsc2VcbiAgICogICAgICAgICAgfVxuICAgKiAgICAgICAgXVxuICAgKiAgICAgIH1cbiAgICogICAgXVxuICAgKiAgfVxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3BpY3R1cmUtc2l6ZXMtY29uZmlnJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgcGljdHVyZVNpemVzQ29uZmlnOiBzdHJpbmcgPSAnJztcblxuICAvKiogV2hldGhlciB0aGUgaW1hZ2UgaXMgZmluaXNoZWQgbG9hZGluZyBvciBmYWlsZWQgdG8gbG9hZC4gKi9cbiAgcHVibGljIGdldCBjb21wbGV0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPy48SFRNTEltYWdlRWxlbWVudD4oJy5zYmItaW1hZ2VfX2ltZycpPy5jb21wbGV0ZSA/PyBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB1cGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLnVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKCF0aGlzLl9jYXB0aW9uRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xpbmtzSW5DYXB0aW9uID0gdGhpcy5fY2FwdGlvbkVsZW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MTGlua0VsZW1lbnQ+KCdhJyk7XG5cbiAgICBpZiAoIXRoaXMuX2xpbmtzSW5DYXB0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fYWRkRm9jdXNBYmlsaXR5VG9MaW5rc0luQ2FwdGlvbigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgLy8gV2UgbmVlZCB0byB3YWl0IHVudGlsIHRoZSB1cGRhdGUgaXMgY29tcGxldGUgdG8gY2hlY2sgd2hldGhlciB0aGUgaW1hZ2UgaGFzIGFscmVhZHkgYmVlbiBjb21wbGV0ZWx5IGxvYWRlZC5cbiAgICBhd2FpdCB0aGlzLnVwZGF0ZUNvbXBsZXRlO1xuICAgIGlmICh0aGlzLmNvbXBsZXRlKSB7XG4gICAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1sb2FkZWQnLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9sb2dQZXJmb3JtYW5jZU1hcmtzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBlcmZvcm1hbmNlTWFyaykge1xuICAgICAgcGVyZm9ybWFuY2UuY2xlYXJNYXJrcyh0aGlzLnBlcmZvcm1hbmNlTWFyayk7XG4gICAgICBwZXJmb3JtYW5jZS5tYXJrKHRoaXMucGVyZm9ybWFuY2VNYXJrKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9tYXRjaE1lZGlhUXVlcnlEZXNpZ25Ub2tlbihicmVha3BvaW50U2l6ZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdmFsdWUgPSBicmVha3BvaW50TWFwW2JyZWFrcG9pbnRTaXplTmFtZV07XG4gICAgcmV0dXJuIHZhbHVlID8gYCR7dmFsdWV9cmVtYCA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWRkRm9jdXNBYmlsaXR5VG9MaW5rc0luQ2FwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9saW5rc0luQ2FwdGlvbj8uZm9yRWFjaCgobGluaykgPT4ge1xuICAgICAgbGluay5yZW1vdmVBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9wcmVwYXJlSW1hZ2VVcmwoYmFzZVVybDogc3RyaW5nIHwgdW5kZWZpbmVkLCBscXVpcCA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICBpZiAoIWJhc2VVcmwgfHwgYmFzZVVybCA9PT0gJycpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvLyBDcmVhdGluZyBhbiBVUkwgd2l0aG91dCBhIHNjaGVtYSB3aWxsIGZhaWwsIGJ1dCBpcyBhIHZhbGlkIGlucHV0IGZvciBiYXNlVXJsLlxuICAgIC8vIGUuZy4gaW1hZ2Utc3JjIGNhbiBiZSBodHRwczovL2V4YW1wbGUuY29tL215LWltYWdlLnBuZyBvciAvbXktaW1hZ2UucG5nXG4gICAgY29uc3QgaXNGdWxseVF1YWxpZmllZFVybCA9ICEhYmFzZVVybC5tYXRjaCgvXlxcdys6XFwvXFwvLyk7XG4gICAgY29uc3QgaW1hZ2VVcmxPYmogPSBpc0Z1bGx5UXVhbGlmaWVkVXJsID8gbmV3IFVSTChiYXNlVXJsKSA6IG5ldyBVUkwoYGh0dHA6Ly9ub29wLyR7YmFzZVVybH1gKTtcblxuICAgIGlmIChscXVpcCkge1xuICAgICAgLy8gYmx1ciBhbmQgc2l6ZTogP2JsdXI9MTAwJnc9MTAwJmg9NTZcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2JsdXInLCAnMTAwJyk7XG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCd3JywgJzEwMCcpO1xuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnaCcsICc1NicpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDRE4gSW5mb3JtYXRpb246IGh0dHBzOi8vZG9jcy5pbWdpeC5jb20vYXBpcy9yZW5kZXJpbmdcbiAgICAgIC8vIHBhcmFtLmF1dG86ID9hdXRvPWZvcm1hdCxjb21wcmVzcyxjcz10aW55c3JnYlxuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnYXV0bycsICdmb3JtYXQsY29tcHJlc3MsY3M9dGlueXNyZ2InKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jdXN0b21Gb2NhbFBvaW50KSB7XG4gICAgICAvLyBjcm9wOiBgJmZpdD1jcm9wJmNyb3A9Zm9jYWxwb2ludCZmcC14PSR7dGhpcy5mb2NhbFBvaW50WH0mZnAteT0ke3RoaXMuZm9jYWxQb2ludFl9JmZwLXo9MWAsXG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdmaXQnLCAnY3JvcCcpO1xuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnY3JvcCcsICdmb2NhbHBvaW50Jyk7XG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdmcC14JywgdGhpcy5mb2NhbFBvaW50WC50b1N0cmluZygxMCkpO1xuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnZnAteScsIHRoaXMuZm9jYWxQb2ludFkudG9TdHJpbmcoMTApKTtcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2ZwLXonLCAnMScpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZvY2FsUG9pbnREZWJ1Zykge1xuICAgICAgLy8gZm9jYWxQb2ludERlYnVnOiAnJmZwLWRlYnVnPXRydWUnXG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdmcC1kZWJ1ZycsICd0cnVlJyk7XG4gICAgfVxuXG4gICAgLy8gSW4gY2FzZSBvZiBcIm5vb3BcIiBob3N0LCB3ZSBkb24ndCByZXR1cm4gdGhlIGhvc3QgYW5kIG11c3QgcmVtb3ZlIHRoZVxuICAgIC8vIHN0YXJ0aW5nIGAvYCBvZiB0aGUgcGF0aG5hbWUuXG4gICAgcmV0dXJuIGlzRnVsbHlRdWFsaWZpZWRVcmxcbiAgICAgID8gaW1hZ2VVcmxPYmouaHJlZlxuICAgICAgOiBpbWFnZVVybE9iai5wYXRobmFtZS5zdWJzdHJpbmcoMSkgKyBpbWFnZVVybE9iai5zZWFyY2g7XG4gIH1cblxuICBwcml2YXRlIF9wcmVwYXJlUGljdHVyZVNpemVDb25maWdzKCk6IEludGVyZmFjZUltYWdlQXR0cmlidXRlc1NpemVzQ29uZmlnQnJlYWtwb2ludFtdIHtcbiAgICBsZXQgcGljdHVyZVNpemVzQ29uZmlnO1xuXG4gICAgaWYgKHRoaXMucGljdHVyZVNpemVzQ29uZmlnKSB7XG4gICAgICBwaWN0dXJlU2l6ZXNDb25maWcgPSB0aGlzLnBpY3R1cmVTaXplc0NvbmZpZztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZGVmYXVsdCBjb25maWdcbiAgICAgIHBpY3R1cmVTaXplc0NvbmZpZyA9IGB7XG4gICAgICAgIFwiYnJlYWtwb2ludHNcIjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiaW1hZ2VcIjoge1xuICAgICAgICAgICAgICBcImhlaWdodFwiOiA2NzUsXG4gICAgICAgICAgICAgIFwid2lkdGhcIjogMTIwMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwibWVkaWFRdWVyaWVzXCI6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVwiOiBcIm1pbi13aWR0aFwiLFxuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICAgICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICBcInZhbHVlXCI6IFwic2JiLWJyZWFrcG9pbnQtbGFyZ2UtbWluXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogZmFsc2VcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJpbWFnZVwiOiB7XG4gICAgICAgICAgICAgIFwiaGVpZ2h0XCI6IDU0OSxcbiAgICAgICAgICAgICAgXCJ3aWR0aFwiOiA5NzZcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm1lZGlhUXVlcmllc1wiOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVcIjogXCJtaW4td2lkdGhcIixcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVWYWx1ZVwiOiB7XG4gICAgICAgICAgICAgICAgICBcImx5bmVEZXNpZ25Ub2tlblwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgXCJ2YWx1ZVwiOiBcInNiYi1icmVha3BvaW50LW1pY3JvLW1pblwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbk9wZXJhdG9yXCI6IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiaW1hZ2VcIjoge1xuICAgICAgICAgICAgICBcImhlaWdodFwiOiAxODAsXG4gICAgICAgICAgICAgIFwid2lkdGhcIjogMzIwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJtZWRpYVF1ZXJpZXNcIjogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlXCI6IFwibWF4LXdpZHRoXCIsXG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlVmFsdWVcIjoge1xuICAgICAgICAgICAgICAgICAgXCJseW5lRGVzaWduVG9rZW5cIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIFwidmFsdWVcIjogXCJzYmItYnJlYWtwb2ludC16ZXJvLW1heFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbk9wZXJhdG9yXCI6IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1gO1xuICAgIH1cblxuICAgIHJldHVybiBpbWFnZUhlbHBlckdldEJyZWFrcG9pbnRzKHBpY3R1cmVTaXplc0NvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVNZWRpYVF1ZXJ5U3RyaW5nKFxuICAgIG1lZGlhUXVlcmllczogSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdNZWRpYVF1ZXJ5W10sXG4gICk6IHN0cmluZyB7XG4gICAgbGV0IG1lZGlhUXVlcnkgPSAnJztcblxuICAgIG1lZGlhUXVlcmllcy5mb3JFYWNoKChtcSkgPT4ge1xuICAgICAgY29uc3QgbXFDb25kaXRpb24gPSBtcS5jb25kaXRpb25GZWF0dXJlO1xuICAgICAgbGV0IG1xVmFsdWU7XG5cbiAgICAgIGlmIChtcS5jb25kaXRpb25GZWF0dXJlVmFsdWUubHluZURlc2lnblRva2VuKSB7XG4gICAgICAgIG1xVmFsdWUgPSB0aGlzLl9tYXRjaE1lZGlhUXVlcnlEZXNpZ25Ub2tlbihtcS5jb25kaXRpb25GZWF0dXJlVmFsdWUudmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbXFWYWx1ZSA9IG1xLmNvbmRpdGlvbkZlYXR1cmVWYWx1ZS52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbXFDb21iaW5lciA9IG1xLmNvbmRpdGlvbk9wZXJhdG9yID8gYCAke21xLmNvbmRpdGlvbk9wZXJhdG9yfSBgIDogJyc7XG5cbiAgICAgIG1lZGlhUXVlcnkgKz0gYCgke21xQ29uZGl0aW9ufTogJHttcVZhbHVlfSkke21xQ29tYmluZXJ9YDtcbiAgICB9KTtcblxuICAgIHJldHVybiBtZWRpYVF1ZXJ5O1xuICB9XG5cbiAgQGV2ZW50T3B0aW9ucyhldmVudExpc3RlbmVyT3B0aW9ucylcbiAgcHJpdmF0ZSBfaW1hZ2VMb2FkZWQoKTogdm9pZCB7XG4gICAgdGhpcy5fbG9nUGVyZm9ybWFuY2VNYXJrcygpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWxvYWRlZCcsIHRydWUpO1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2xvYWQnKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICBjb25zdCBpbWFnZVVybExRSVAgPSB0aGlzLl9wcmVwYXJlSW1hZ2VVcmwodGhpcy5pbWFnZVNyYywgdHJ1ZSk7XG4gICAgY29uc3QgaW1hZ2VVcmxXaXRoUGFyYW1zID0gdGhpcy5fcHJlcGFyZUltYWdlVXJsKHRoaXMuaW1hZ2VTcmMsIGZhbHNlKTtcblxuICAgIGlmICh0aGlzLmxvYWRpbmcgPT09ICdsYXp5Jykge1xuICAgICAgdGhpcy5kZWNvZGluZyA9ICdhc3luYyc7XG4gICAgICB0aGlzLmltcG9ydGFuY2UgPSAnbG93JztcbiAgICB9XG5cbiAgICBjb25zdCBwaWN0dXJlU2l6ZUNvbmZpZ3MgPSB0aGlzLl9wcmVwYXJlUGljdHVyZVNpemVDb25maWdzKCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYWx0IGF0dHJpYnV0ZSBzaG91bGQgYWx3YXlzIGJlIHByZXNlbnQgZm9yIHRoZSBpbWcgZWxlbWVudC5cbiAgICAgKiBJZiBpdCBoYXMgYW4gZW1wdHkgc3RyaW5nIGFzIGl0cyB2YWx1ZSwgaXQgaXMgc2ltcGx5IGlnbm9yZWRcbiAgICAgKiBieSBhc3Npc3RpdmUgdGVjaG5vbG9naWVzLiBJZiB3ZSBsZWF2ZSBpdCBvdXQgY29tcGxldGVseSxcbiAgICAgKiB0aGV5IG1pZ2h0IHRyeSB0byBpbnRlcnByZXQgdGhlIGltZyBlbGVtZW50LlxuICAgICAqL1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1pbWFnZV9fd3JhcHBlclwiPlxuICAgICAgICAkeyF0aGlzLnNraXBMcWlwXG4gICAgICAgICAgPyBodG1sYDxpbWdcbiAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzYmItaW1hZ2VfX2JsdXJyZWRcIlxuICAgICAgICAgICAgICBzcmM9JHtpbWFnZVVybExRSVB9XG4gICAgICAgICAgICAgIHdpZHRoPVwiMTAwMFwiXG4gICAgICAgICAgICAgIGhlaWdodD1cIjU2MlwiXG4gICAgICAgICAgICAgIGxvYWRpbmc9JHt0aGlzLmxvYWRpbmcgPz8gbm90aGluZ31cbiAgICAgICAgICAgICAgZGVjb2Rpbmc9JHt0aGlzLmRlY29kaW5nID8/IG5vdGhpbmd9XG4gICAgICAgICAgICAvPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG5cbiAgICAgICAgPHBpY3R1cmU+XG4gICAgICAgICAgPCEtLSByZW5kZXIgcGljdHVyZSBlbGVtZW50IHNvdXJjZXMgLS0+XG4gICAgICAgICAgJHtwaWN0dXJlU2l6ZUNvbmZpZ3MubWFwKChjb25maWcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlSGVpZ2h0ID0gY29uZmlnLmltYWdlLmhlaWdodDtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlV2lkdGggPSBjb25maWcuaW1hZ2Uud2lkdGg7XG4gICAgICAgICAgICBjb25zdCBtZWRpYVF1ZXJ5ID0gdGhpcy5fY3JlYXRlTWVkaWFRdWVyeVN0cmluZyhjb25maWcubWVkaWFRdWVyaWVzKTtcbiAgICAgICAgICAgIHJldHVybiBodG1sYFxuICAgICAgICAgICAgICA8c291cmNlXG4gICAgICAgICAgICAgICAgbWVkaWE9JHtgJHttZWRpYVF1ZXJ5fWB9XG4gICAgICAgICAgICAgICAgc2l6ZXM9JHtgJHtpbWFnZVdpZHRofXB4YH1cbiAgICAgICAgICAgICAgICBzcmNzZXQ9JHtcbiAgICAgICAgICAgICAgICAgIGAke2ltYWdlVXJsV2l0aFBhcmFtc30mdz0ke2ltYWdlV2lkdGh9Jmg9JHtpbWFnZUhlaWdodH0mcT0ke3RoaXMuX2NvbmZpZy5ub25SZXRpbmFRdWFsaXR5fSAke2ltYWdlV2lkdGh9dywgYCArXG4gICAgICAgICAgICAgICAgICBgJHtpbWFnZVVybFdpdGhQYXJhbXN9Jnc9JHtpbWFnZVdpZHRoICogMn0maD0ke2ltYWdlSGVpZ2h0ICogMn0mcT0ke1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb25maWcucmV0aW5hUXVhbGl0eVxuICAgICAgICAgICAgICAgICAgfSAke2ltYWdlV2lkdGggKiAyfXdgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA+PC9zb3VyY2U+YDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBhbHQ9JHt0aGlzLmFsdCB8fCAnJ31cbiAgICAgICAgICAgIEBsb2FkPSR7dGhpcy5faW1hZ2VMb2FkZWR9XG4gICAgICAgICAgICBAZXJyb3I9JHsoKSA9PiB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdlcnJvcicpKX1cbiAgICAgICAgICAgIGNsYXNzPVwic2JiLWltYWdlX19pbWdcIlxuICAgICAgICAgICAgc3JjPSR7dGhpcy5pbWFnZVNyYyF9XG4gICAgICAgICAgICB3aWR0aD1cIjEwMDBcIlxuICAgICAgICAgICAgaGVpZ2h0PVwiNTYyXCJcbiAgICAgICAgICAgIGxvYWRpbmc9JHt0aGlzLmxvYWRpbmcgPz8gbm90aGluZ31cbiAgICAgICAgICAgIGRlY29kaW5nPSR7dGhpcy5kZWNvZGluZyA/PyBub3RoaW5nfVxuICAgICAgICAgICAgLmZldGNoUHJpb3JpdHk9JHt0aGlzLmltcG9ydGFuY2UgPz8gbm90aGluZ31cbiAgICAgICAgICAvPlxuICAgICAgICA8L3BpY3R1cmU+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItaW1hZ2UnOiBTYmJJbWFnZUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVEQSxNQUFNLDRCQUE0QixDQUNoQyxlQUNtRDtBQUNuRCxNQUFJLENBQUMsY0FBYyxXQUFXLFdBQVcsR0FBRztBQUMxQyxXQUFPOztBQUlILFFBQUEsYUFDRixNQUNFLFFBQVEsS0FDTixxSkFBcUo7QUFHekosTUFBQTtBQUVBLE1BQUE7QUFDVyxpQkFBQSxLQUFLLE1BQU0sVUFBVTtBQUFBLEVBQUEsUUFDNUI7O0FBRU4sV0FBTzs7QUFHVCxNQUFJLENBQUMsV0FBVyxlQUFlLFdBQVcsWUFBWSxXQUFXLEdBQUc7O0FBRWxFLFdBQU87O0FB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
|