@sbb-esta/lyne-elements 4.11.0 → 4.12.0
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/autocomplete/autocomplete-base-element.js +1 -1
- package/autocomplete/autocomplete.component.js +3 -2
- package/{autocomplete-base-element-DarHnnYC.js → autocomplete-base-element-De2O5Wx-.js} +14 -9
- package/autocomplete.js +1 -1
- package/autocomplete.pure.js +1 -1
- package/{block-link-common-DzGY49Xc.js → block-link-common-1kRa_czx.js} +1 -1
- package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
- package/breadcrumb/breadcrumb-group.js +1 -1
- package/{breadcrumb-group.component-F3-JZkfO.js → breadcrumb-group.component-CKNsaUqs.js} +1 -1
- package/breadcrumb.js +1 -1
- package/breadcrumb.pure.js +1 -1
- package/button/common/button-common.js +1 -1
- package/button/common.js +1 -1
- package/button-common-BMEhm-dn.js +87 -0
- package/button.js +1 -1
- package/button.pure.js +1 -1
- package/calendar/calendar/calendar.component.js +1 -1
- package/calendar/calendar.js +1 -1
- package/{calendar.component-DjQOyRGl.js → calendar.component-C1jk_uE0.js} +3 -3
- package/calendar.js +1 -1
- package/calendar.pure.js +1 -1
- package/card/card-badge/card-badge.component.js +1 -1
- package/card/card-badge.js +1 -1
- package/{card-badge.component-BSOEYrN4.js → card-badge.component-D0r2iixU.js} +1 -1
- package/card.js +1 -1
- package/card.pure.js +1 -1
- package/checkbox/checkbox.component.js +1 -1
- package/checkbox/checkbox.js +1 -1
- package/checkbox/common/checkbox-common.js +1 -1
- package/checkbox/common.js +1 -1
- package/{checkbox-common-DdieysTG.js → checkbox-common-BpW4_bbi.js} +1 -1
- package/{checkbox.component-ROzxEnPh.js → checkbox.component-DS48CA_v.js} +1 -1
- package/checkbox.js +2 -2
- package/checkbox.pure.js +2 -2
- package/chip/chip-group/chip-group.component.js +1 -1
- package/chip/chip-group.js +1 -1
- package/{chip-group.component-DJzUToem.js → chip-group.component-BqBYzfXA.js} +1 -1
- package/chip.js +1 -1
- package/chip.pure.js +1 -1
- package/{compact-paginator.component-Cyi-t_YD.js → compact-paginator.component-BIAPutro.js} +1 -1
- package/core/controllers/overlay-position-controller.js +4 -1
- package/core/mixins/named-slot-list-mixin.js +4 -1
- package/core/styles/core.scss +62 -77
- package/core/styles/mixins/helpers.scss +3 -3
- package/core/styles/mixins/overlay.scss +2 -2
- package/core/styles/mixins/typo.scss +2 -2
- package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables-as-css.scss +8 -0
- package/core.css +177 -73
- package/custom-elements.json +327 -59
- package/development/autocomplete/autocomplete-base-element.d.ts +8 -1
- package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
- package/development/autocomplete/autocomplete-base-element.js +1 -1
- package/development/autocomplete/autocomplete.component.js +4 -3
- package/development/autocomplete-base-element-BpCpYcX9.js +692 -0
- package/development/autocomplete.js +1 -1
- package/development/autocomplete.pure.js +1 -1
- package/development/{block-link-common-GckvjULA.js → block-link-common-COY1RI1I.js} +2 -2
- package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
- package/development/breadcrumb/breadcrumb-group.js +1 -1
- package/development/breadcrumb-group.component-DZslNBlB.js +195 -0
- package/development/breadcrumb.js +1 -1
- package/development/breadcrumb.pure.js +1 -1
- package/development/button/common/button-common.js +1 -1
- package/development/button/common.js +1 -1
- package/development/{button-common-CAu09Yim.js → button-common-7dmrUx4A.js} +3 -3
- package/development/button.js +1 -1
- package/development/button.pure.js +1 -1
- package/development/calendar/calendar/calendar.component.js +1 -1
- package/development/calendar/calendar.js +1 -1
- package/development/calendar-cell-base-element-BXohfDSl.js +1 -1
- package/development/calendar.component-Dg3D2A7k.js +1453 -0
- package/development/calendar.js +1 -1
- package/development/calendar.pure.js +1 -1
- package/development/card/card-badge/card-badge.component.js +1 -1
- package/development/card/card-badge.js +1 -1
- package/development/card-action-common-1FDHbfeR.js +1 -1
- package/development/card-badge.component-CUZIoVbL.js +84 -0
- package/development/card.js +1 -1
- package/development/card.pure.js +1 -1
- package/development/carousel-list.component-L-nYpHcN.js +1 -1
- package/development/carousel.component-Dl48ROSf.js +1 -1
- package/development/checkbox/checkbox.component.js +1 -1
- package/development/checkbox/checkbox.js +1 -1
- package/development/checkbox/common/checkbox-common.js +1 -1
- package/development/checkbox/common.js +1 -1
- package/development/checkbox-common-Dd5uup8K.js +86 -0
- package/development/checkbox-group/checkbox-group.component.js +1 -1
- package/development/{checkbox.component-D3_FFSys.js → checkbox.component-CFZrwUTA.js} +2 -2
- package/development/checkbox.js +2 -2
- package/development/checkbox.pure.js +2 -2
- package/development/chip/chip-group/chip-group.component.js +1 -1
- package/development/chip/chip-group.js +1 -1
- package/development/chip-group.component-BVfHWX2-.js +409 -0
- package/development/chip.js +1 -1
- package/development/chip.pure.js +1 -1
- package/development/clock.component-CVPv4mCp.js +1 -1
- package/development/compact-paginator.component-5_Q2Reul.js +51 -0
- package/development/core/a11y/input-modality-detector.js +1 -1
- package/development/core/base-elements/element.js +1 -1
- package/development/core/controllers/media-matchers-controller.js +1 -1
- package/development/core/controllers/overlay-position-controller.js +3 -2
- package/development/core/datetime/date-adapter.js +1 -1
- package/development/core/datetime/native-date-adapter.js +1 -1
- package/development/core/datetime/temporal-date-adapter.js +1 -1
- package/development/core/eventing/throttle.d.ts +1 -0
- package/development/core/eventing/throttle.d.ts.map +1 -1
- package/development/core/eventing/throttle.js +2 -1
- package/development/core/mixins/disabled-mixin.js +1 -1
- package/development/core/mixins/form-associated-checkbox-mixin.js +1 -1
- package/development/core/mixins/form-associated-input-mixin.js +1 -1
- package/development/core/mixins/form-associated-mixin.js +1 -1
- package/development/core/mixins/form-associated-radio-button-mixin.js +1 -1
- package/development/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
- package/development/core/mixins/named-slot-list-mixin.js +5 -2
- package/development/core/mixins/negative-mixin.js +1 -1
- package/development/core/mixins/readonly-mixin.js +1 -1
- package/development/core/mixins/required-mixin.js +1 -1
- package/development/core/testing/event-spy.js +1 -1
- package/development/datepicker/common/datepicker-button.d.ts +6 -0
- package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
- package/development/datepicker/common/datepicker-button.js +1 -1
- package/development/datepicker/common.js +1 -1
- package/development/datepicker/datepicker/datepicker.component.d.ts +3 -0
- package/development/datepicker/datepicker/datepicker.component.d.ts.map +1 -1
- package/development/datepicker/datepicker/datepicker.component.js +1 -1
- package/development/datepicker/datepicker.js +1 -1
- package/development/datepicker-button-CUPeoQgH.js +169 -0
- package/development/datepicker.component-D2DxFng_.js +216 -0
- package/development/datepicker.js +2 -2
- package/development/datepicker.pure.js +2 -2
- package/development/error.component-OBpWoVRL.js +55 -0
- package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +1 -1
- package/development/expansion-panel/expansion-panel-header.js +1 -1
- package/development/expansion-panel-header.component-BEAabEE0.js +85 -0
- package/development/expansion-panel.js +1 -1
- package/development/expansion-panel.pure.js +1 -1
- package/development/file-selector/common/file-selector-common.d.ts.map +1 -1
- package/development/file-selector/common/file-selector-common.js +1 -1
- package/development/file-selector/common.js +1 -1
- package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.d.ts.map +1 -1
- package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
- package/development/file-selector/file-selector-dropzone.js +1 -1
- package/development/file-selector-common-C7xIEiV4.js +416 -0
- package/development/file-selector-dropzone.component-BAWMZW4F.js +111 -0
- package/development/file-selector.js +2 -2
- package/development/file-selector.pure.js +2 -2
- package/development/footer/footer.component.js +1 -1
- package/development/footer.component-BmDkxYW9.js +172 -0
- package/development/footer.js +1 -1
- package/development/footer.pure.js +1 -1
- package/development/form-field/error/error.component.js +1 -1
- package/development/form-field/error.js +1 -1
- package/development/form-field/form-field/form-field.component.js +1 -1
- package/development/form-field/form-field-clear/form-field-clear.component.d.ts +3 -0
- package/development/form-field/form-field-clear/form-field-clear.component.d.ts.map +1 -1
- package/development/form-field/form-field-clear/form-field-clear.component.js +4 -1
- package/development/form-field/form-field.js +1 -1
- package/development/form-field/hint/hint.component.js +1 -1
- package/development/form-field.component-BU3Sv2mD.js +707 -0
- package/development/form-field.js +3 -3
- package/development/form-field.pure.js +3 -3
- package/development/header/header/header.component.js +1 -1
- package/development/header/header.js +1 -1
- package/development/header-action-common-MTYV0dqA.js +1 -1
- package/development/header.component-CWJ36jF0.js +340 -0
- package/development/header.js +1 -1
- package/development/header.pure.js +1 -1
- package/development/hint.component-DUtL0RS3.js +38 -0
- package/development/icon/icon-name-mixin.js +1 -1
- package/development/image.component-BD0jc-u-.js +1 -1
- package/development/link/common/block-link-common.js +1 -1
- package/development/link/common.js +1 -1
- package/development/link-common-DJ2FfG_Q.js +1 -1
- package/development/link-list-base-CKMNz30d.js +1 -1
- package/development/link.js +1 -1
- package/development/link.pure.js +1 -1
- package/development/message/message.component.js +1 -1
- package/development/message.component-Dlf5V5ba.js +44 -0
- package/development/message.js +1 -1
- package/development/message.pure.js +1 -1
- package/development/mini-calendar.component-BufzKw74.js +1 -1
- package/development/navigation/common/navigation-action-common.js +1 -1
- package/development/navigation/common.js +1 -1
- package/development/navigation/navigation-marker/navigation-marker.component.js +1 -1
- package/development/navigation/navigation-marker.js +1 -1
- package/development/navigation/navigation-section/navigation-section.component.js +1 -1
- package/development/navigation/navigation-section.js +1 -1
- package/development/{navigation-action-common-DpBp7-eZ.js → navigation-action-common-Hjr4dI9J.js} +2 -2
- package/development/{navigation-marker.component-BpZdT4xz.js → navigation-marker.component-GOv42emC.js} +2 -2
- package/development/{navigation-section.component-CtZtuacK.js → navigation-section.component-CnVrRETN.js} +2 -2
- package/development/navigation.component-CTNQ1dix.js +1 -1
- package/development/navigation.js +3 -3
- package/development/navigation.pure.js +3 -3
- package/development/notification/notification.component.js +1 -1
- package/development/notification.component-Cvq_uViC.js +274 -0
- package/development/notification.js +1 -1
- package/development/notification.pure.js +1 -1
- package/development/option/option/option-base-element.d.ts.map +1 -1
- package/development/option/option/option-base-element.js +3 -1
- package/development/option/option/option.component.js +1 -1
- package/development/option/option.js +1 -1
- package/development/option.component-CRVr0PfV.js +130 -0
- package/development/option.js +1 -1
- package/development/option.pure.js +1 -1
- package/development/paginator/common/paginator-common.js +1 -1
- package/development/paginator/compact-paginator/compact-paginator.component.js +1 -1
- package/development/paginator/compact-paginator.js +1 -1
- package/development/paginator/paginator/paginator.component.js +1 -1
- package/development/paginator/paginator.js +1 -1
- package/development/paginator.component-Bn5tK0FK.js +259 -0
- package/development/paginator.js +2 -2
- package/development/paginator.pure.js +2 -2
- package/development/panel-mixin-Dj_rsgL9.js +1 -1
- package/development/popover/popover.component.d.ts +1 -0
- package/development/popover/popover.component.d.ts.map +1 -1
- package/development/popover/popover.component.js +1 -1
- package/development/popover.component-rZb6B9uW.js +546 -0
- package/development/popover.js +1 -1
- package/development/popover.pure.js +1 -1
- package/development/radio-button/common/radio-button-common.js +1 -1
- package/development/radio-button/common.js +1 -1
- package/development/radio-button/radio-button.component.js +1 -1
- package/development/radio-button/radio-button.js +1 -1
- package/development/radio-button-common--d3WX-ZM.js +126 -0
- package/development/radio-button-panel/radio-button-panel.component.js +1 -1
- package/development/{radio-button.component-BrQF2FfA.js → radio-button.component-BauLEeCV.js} +2 -2
- package/development/radio-button.js +2 -2
- package/development/radio-button.pure.js +2 -2
- package/development/select/select.component.d.ts.map +1 -1
- package/development/select/select.component.js +1 -1
- package/development/select.component-D9SFG7Lk.js +814 -0
- package/development/select.js +1 -1
- package/development/select.pure.js +1 -1
- package/development/sidebar-container.component-BDSoDAym.js +1 -1
- package/development/sidebar.component-BLqO52nH.js +1 -1
- package/development/slider/slider.component.js +1 -1
- package/development/{slider.component-BjfLnUvP.js → slider.component-C3qZB6ar.js} +2 -2
- package/development/slider.js +1 -1
- package/development/slider.pure.js +1 -1
- package/development/status/status.component.js +1 -1
- package/development/status.component-CPi1cPN0.js +111 -0
- package/development/status.js +1 -1
- package/development/status.pure.js +1 -1
- package/development/step-label.component-BJ9eainz.js +131 -0
- package/development/stepper/step-label/step-label.component.js +1 -1
- package/development/stepper/step-label.js +1 -1
- package/development/stepper.component-CxOBayI1.js +1 -1
- package/development/stepper.js +1 -1
- package/development/stepper.pure.js +1 -1
- package/development/sticky-bar.component-Dzrdsnxu.js +1 -1
- package/development/styles-D8-q-irv.js +1 -1
- package/development/styles-Jlhoev1S.js +14 -0
- package/development/tab-group.component-DldBA45K.js +275 -0
- package/development/{tab-label.component-14j2eh4Z.js → tab-label.component-B9e9kgVf.js} +2 -2
- package/development/tabs/common/styles.js +1 -1
- package/development/tabs/common.js +1 -1
- package/development/tabs/tab-group/tab-group.component.d.ts +1 -0
- package/development/tabs/tab-group/tab-group.component.d.ts.map +1 -1
- package/development/tabs/tab-group/tab-group.component.js +1 -1
- package/development/tabs/tab-group.js +1 -1
- package/development/tabs/tab-label/tab-label.component.js +1 -1
- package/development/tabs/tab-label.js +1 -1
- package/development/tabs.js +3 -3
- package/development/tabs.pure.js +3 -3
- package/development/tag/tag/tag.component.js +1 -1
- package/development/tag/tag.js +1 -1
- package/development/tag.component-Bl1nlIXQ.js +245 -0
- package/development/tag.js +1 -1
- package/development/tag.pure.js +1 -1
- package/development/teaser-hero/teaser-hero.component.js +1 -1
- package/development/{teaser-hero.component-DNlc8Tbl.js → teaser-hero.component-BIOpoGME.js} +2 -2
- package/development/teaser-hero.js +1 -1
- package/development/teaser-hero.pure.js +1 -1
- package/development/teaser-product-common-DYX370pm.js +1 -1
- package/development/time-input.component-BtdSR8kB.js +1 -1
- package/development/timetable-form/timetable-form/timetable-form.component.js +1 -1
- package/development/timetable-form/timetable-form-details/timetable-form-details.component.js +1 -1
- package/development/timetable-form/timetable-form-details.js +1 -1
- package/development/timetable-form/timetable-form-field/timetable-form-field.component.js +1 -1
- package/development/timetable-form/timetable-form-field.js +1 -1
- package/development/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.d.ts +3 -0
- package/development/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.d.ts.map +1 -1
- package/development/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.js +1 -1
- package/development/timetable-form/timetable-form-swap-button.js +1 -1
- package/development/timetable-form/timetable-form.js +1 -1
- package/development/timetable-form-details.component-DJl5Qt9y.js +26 -0
- package/development/timetable-form-field.component-DQ_TzcF4.js +44 -0
- package/development/{timetable-form-swap-button.component-BUKUjrpl.js → timetable-form-swap-button.component-Bh9aPmdn.js} +4 -1
- package/development/timetable-form.component-N8h4JBlH.js +27 -0
- package/development/timetable-form.js +4 -4
- package/development/timetable-form.pure.js +4 -4
- package/development/timetable-occupancy/timetable-occupancy.component.js +1 -1
- package/development/timetable-occupancy.component-BBcznUh0.js +124 -0
- package/development/timetable-occupancy.js +1 -1
- package/development/timetable-occupancy.pure.js +1 -1
- package/development/title/title-base.js +1 -1
- package/development/title/title.component.js +1 -1
- package/development/{title-base-CBE_2Hkb.js → title-base-BdYKwj3-.js} +2 -2
- package/development/{title.component-Dk23JVct.js → title.component-DSXVkddh.js} +2 -2
- package/development/title.js +2 -2
- package/development/title.pure.js +2 -2
- package/development/toast/toast.component.js +1 -1
- package/development/toast.component-IhHx0Qt3.js +275 -0
- package/development/toast.js +1 -1
- package/development/toast.pure.js +1 -1
- package/development/toggle/toggle/toggle.component.d.ts.map +1 -1
- package/development/toggle/toggle/toggle.component.js +1 -1
- package/development/toggle/toggle-option/toggle-option.component.d.ts +1 -0
- package/development/toggle/toggle-option/toggle-option.component.d.ts.map +1 -1
- package/development/toggle/toggle-option/toggle-option.component.js +1 -1
- package/development/toggle/toggle-option.js +1 -1
- package/development/toggle/toggle.js +1 -1
- package/development/toggle-check/toggle-check.component.js +1 -1
- package/development/toggle-check.component-_fDAuLob.js +159 -0
- package/development/toggle-check.js +1 -1
- package/development/toggle-check.pure.js +1 -1
- package/development/toggle-option.component-DTS3a603.js +167 -0
- package/development/toggle.component-BJpD1b9H.js +249 -0
- package/development/toggle.js +2 -2
- package/development/toggle.pure.js +2 -2
- package/development/tooltip/tooltip.component.js +1 -1
- package/development/tooltip.component-YaUQA-Id.js +378 -0
- package/development/tooltip.js +1 -1
- package/development/tooltip.pure.js +1 -1
- package/development/train/train-wagon/train-wagon.component.js +1 -1
- package/development/train/train-wagon.js +1 -1
- package/development/{train-wagon.component-BzA8-S_6.js → train-wagon.component-CNxkffOO.js} +2 -2
- package/development/train.js +1 -1
- package/development/train.pure.js +1 -1
- package/{error.component-B_D8WUP5.js → error.component-DH9Obd7a.js} +1 -1
- package/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +1 -1
- package/expansion-panel/expansion-panel-header.js +1 -1
- package/{expansion-panel-header.component-B_dQ3ZWT.js → expansion-panel-header.component-FPoEEoZR.js} +1 -1
- package/expansion-panel.js +1 -1
- package/expansion-panel.pure.js +1 -1
- package/file-selector/common/file-selector-common.js +1 -1
- package/file-selector/common.js +1 -1
- package/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
- package/file-selector/file-selector-dropzone.js +1 -1
- package/{file-selector-common-DN4vHMpP.js → file-selector-common-BL9mM4SZ.js} +38 -40
- package/{file-selector-dropzone.component-CBKsZsC2.js → file-selector-dropzone.component-Ctar2kEw.js} +3 -4
- package/file-selector.js +2 -2
- package/file-selector.pure.js +2 -2
- package/footer/footer.component.js +1 -1
- package/{footer.component-BM91Utiz.js → footer.component-b2docCY_.js} +1 -1
- package/footer.js +1 -1
- package/footer.pure.js +1 -1
- package/form-field/error/error.component.js +1 -1
- package/form-field/error.js +1 -1
- package/form-field/form-field/form-field.component.js +1 -1
- package/form-field/form-field.js +1 -1
- package/form-field/hint/hint.component.js +1 -1
- package/{form-field.component-Cx5Keg_p.js → form-field.component-BwZDRKbQ.js} +3 -2
- package/form-field.js +3 -3
- package/form-field.pure.js +3 -3
- package/header/header/header.component.js +1 -1
- package/header/header.js +1 -1
- package/{header.component-hZqs06Yh.js → header.component-UQUFcMOD.js} +1 -1
- package/header.js +1 -1
- package/header.pure.js +1 -1
- package/{hint.component-BVUUrSSu.js → hint.component-CE2D2TLU.js} +1 -1
- package/link/common/block-link-common.js +1 -1
- package/link/common.js +1 -1
- package/link.js +1 -1
- package/link.pure.js +1 -1
- package/message/message.component.js +1 -1
- package/message.component-DhN-aFms.js +27 -0
- package/message.js +1 -1
- package/message.pure.js +1 -1
- package/navigation/common/navigation-action-common.js +1 -1
- package/navigation/common.js +1 -1
- package/navigation/navigation-marker/navigation-marker.component.js +1 -1
- package/navigation/navigation-marker.js +1 -1
- package/navigation/navigation-section/navigation-section.component.js +1 -1
- package/navigation/navigation-section.js +1 -1
- package/{navigation-action-common-2ix0xrBs.js → navigation-action-common-AzRltwrb.js} +1 -1
- package/{navigation-marker.component-DKxK16IU.js → navigation-marker.component-BzbbKlfT.js} +1 -1
- package/{navigation-section.component-CvjXVn5r.js → navigation-section.component-DQxCi3O_.js} +1 -1
- package/navigation.js +3 -3
- package/navigation.pure.js +3 -3
- package/notification/notification.component.js +1 -1
- package/{notification.component-DjXJFh1G.js → notification.component-D80Wl5xM.js} +1 -1
- package/notification.js +1 -1
- package/notification.pure.js +1 -1
- package/off-brand-theme.css +177 -73
- package/option/option/option-base-element.js +1 -1
- package/option/option/option.component.js +1 -1
- package/option/option.js +1 -1
- package/{option.component-M-V_tdSC.js → option.component-2Xf1hz7y.js} +1 -1
- package/option.js +1 -1
- package/option.pure.js +1 -1
- package/package.json +1 -1
- package/paginator/compact-paginator/compact-paginator.component.js +1 -1
- package/paginator/compact-paginator.js +1 -1
- package/paginator/paginator/paginator.component.js +1 -1
- package/paginator/paginator.js +1 -1
- package/{paginator.component-CZt7Epaf.js → paginator.component-BEr0qU0m.js} +1 -1
- package/paginator.js +2 -2
- package/paginator.pure.js +2 -2
- package/popover/popover.component.js +1 -1
- package/{popover.component-DWNuW4wM.js → popover.component-DAgwBcBW.js} +32 -28
- package/popover.js +1 -1
- package/popover.pure.js +1 -1
- package/radio-button/common/radio-button-common.js +1 -1
- package/radio-button/common.js +1 -1
- package/radio-button/radio-button.component.js +1 -1
- package/radio-button/radio-button.js +1 -1
- package/{radio-button-common-DP4Izwwf.js → radio-button-common-C1mIf9KY.js} +1 -1
- package/{radio-button.component-BiGeOI5L.js → radio-button.component-Bae-yK_U.js} +1 -1
- package/radio-button.js +2 -2
- package/radio-button.pure.js +2 -2
- package/safety-theme.css +177 -73
- package/select/select.component.js +1 -1
- package/{select.component-DWLdApt_.js → select.component-BT6RbERH.js} +3 -3
- package/select.js +1 -1
- package/select.pure.js +1 -1
- package/slider/slider.component.js +1 -1
- package/{slider.component-CoqCppCq.js → slider.component-BlRVR6iU.js} +1 -1
- package/slider.js +1 -1
- package/slider.pure.js +1 -1
- package/standard-theme.css +177 -73
- package/status/status.component.js +1 -1
- package/{status.component-BFyXTFXH.js → status.component-lw_WDs7W.js} +1 -1
- package/status.js +1 -1
- package/status.pure.js +1 -1
- package/step-label.component-Dqis4FAN.js +80 -0
- package/stepper/step-label/step-label.component.js +1 -1
- package/stepper/step-label.js +1 -1
- package/stepper.js +1 -1
- package/stepper.pure.js +1 -1
- package/styles-BNu0Fjw5.js +5 -0
- package/{tab-group.component-Doy39cEh.js → tab-group.component-CHQlrhUy.js} +36 -33
- package/{tab-label.component-CD56RH1Z.js → tab-label.component-CpdUyfiq.js} +1 -1
- package/tabs/common/styles.js +1 -1
- package/tabs/common.js +1 -1
- package/tabs/tab-group/tab-group.component.js +1 -1
- package/tabs/tab-group.js +1 -1
- package/tabs/tab-label/tab-label.component.js +1 -1
- package/tabs/tab-label.js +1 -1
- package/tabs.js +3 -3
- package/tabs.pure.js +3 -3
- package/tag/tag/tag.component.js +1 -1
- package/tag/tag.js +1 -1
- package/{tag.component-CzYJZuFT.js → tag.component-CsNszQvB.js} +1 -1
- package/tag.js +1 -1
- package/tag.pure.js +1 -1
- package/teaser-hero/teaser-hero.component.js +1 -1
- package/{teaser-hero.component-CHy82SKQ.js → teaser-hero.component-D8yj-N5n.js} +1 -1
- package/teaser-hero.js +1 -1
- package/teaser-hero.pure.js +1 -1
- package/timetable-form/timetable-form/timetable-form.component.js +1 -1
- package/timetable-form/timetable-form-details/timetable-form-details.component.js +1 -1
- package/timetable-form/timetable-form-details.js +1 -1
- package/timetable-form/timetable-form-field/timetable-form-field.component.js +1 -1
- package/timetable-form/timetable-form-field.js +1 -1
- package/timetable-form/timetable-form.js +1 -1
- package/timetable-form-details.component-mWKaBW_9.js +16 -0
- package/timetable-form-field.component-Cv_lv8vf.js +32 -0
- package/{timetable-form.component-CU1FXAZH.js → timetable-form.component-YcvKAlfz.js} +1 -1
- package/timetable-form.js +3 -3
- package/timetable-form.pure.js +3 -3
- package/timetable-occupancy/timetable-occupancy.component.js +1 -1
- package/{timetable-occupancy.component-Db9SfiyD.js → timetable-occupancy.component-BCXPxz68.js} +1 -1
- package/timetable-occupancy.js +1 -1
- package/timetable-occupancy.pure.js +1 -1
- package/title/title-base.js +1 -1
- package/title/title.component.js +1 -1
- package/{title-base-D72Xo2SW.js → title-base-DV0qhfG9.js} +1 -1
- package/{title.component-CoMa84Sz.js → title.component-DAGyXwDm.js} +1 -1
- package/title.js +2 -2
- package/title.pure.js +2 -2
- package/toast/toast.component.js +1 -1
- package/{toast.component-BDE1vYLS.js → toast.component-CORnf2Tl.js} +3 -3
- package/toast.js +1 -1
- package/toast.pure.js +1 -1
- package/toggle/toggle/toggle.component.js +1 -1
- package/toggle/toggle-option/toggle-option.component.js +1 -1
- package/toggle/toggle-option.js +1 -1
- package/toggle/toggle.js +1 -1
- package/toggle-check/toggle-check.component.js +1 -1
- package/toggle-check.component-DvoslSRr.js +119 -0
- package/toggle-check.js +1 -1
- package/toggle-check.pure.js +1 -1
- package/{toggle-option.component-Bw-GXUQK.js → toggle-option.component-pX3tNwjE.js} +5 -7
- package/{toggle.component-BPpsMMPG.js → toggle.component-B20xAw1V.js} +6 -10
- package/toggle.js +2 -2
- package/toggle.pure.js +2 -2
- package/tooltip/tooltip.component.js +1 -1
- package/{tooltip.component-BY9mV5Sw.js → tooltip.component-ocVpJogs.js} +1 -1
- package/tooltip.js +1 -1
- package/tooltip.pure.js +1 -1
- package/train/train-wagon/train-wagon.component.js +1 -1
- package/train/train-wagon.js +1 -1
- package/{train-wagon.component-BwCcF4GD.js → train-wagon.component-BT4Xnzxr.js} +1 -1
- package/train.js +1 -1
- package/train.pure.js +1 -1
- package/button-common-yFVzAoGy.js +0 -87
- package/development/autocomplete-base-element-YwfObJzm.js +0 -678
- package/development/breadcrumb-group.component-HBWRdDpS.js +0 -195
- package/development/calendar.component-6p9vsp-V.js +0 -1452
- package/development/card-badge.component-D4Mes-Gw.js +0 -84
- package/development/checkbox-common-DiTlHvFJ.js +0 -86
- package/development/chip-group.component-CvpUdzu1.js +0 -409
- package/development/compact-paginator.component-TfDVt_ST.js +0 -51
- package/development/datepicker-button-CANzGO5m.js +0 -163
- package/development/datepicker.component-C8XQVo45.js +0 -213
- package/development/error.component-xD_c9IBA.js +0 -55
- package/development/expansion-panel-header.component-Bw4uROTe.js +0 -85
- package/development/file-selector-common-C82QR3zb.js +0 -418
- package/development/file-selector-dropzone.component-B-cBO4bf.js +0 -112
- package/development/footer.component-BblB5218.js +0 -172
- package/development/form-field.component-DfMO_ihX.js +0 -706
- package/development/header.component-Cg0ZcA1s.js +0 -340
- package/development/hint.component-BsIzdUOV.js +0 -38
- package/development/message.component-CeJhYXSC.js +0 -44
- package/development/notification.component-Co9QChXc.js +0 -274
- package/development/option.component-CdL7fdzZ.js +0 -130
- package/development/paginator.component-DAdS2mMm.js +0 -259
- package/development/popover.component-BCMdJBUR.js +0 -537
- package/development/radio-button-common-C3-xuY78.js +0 -126
- package/development/select.component-CGNEhqzl.js +0 -812
- package/development/status.component-CHC2pBa-.js +0 -111
- package/development/step-label.component-CJFPHIZa.js +0 -131
- package/development/styles-DCQBzC2C.js +0 -14
- package/development/tab-group.component-DRipdAyc.js +0 -272
- package/development/tag.component-CnNPL6aI.js +0 -245
- package/development/timetable-form-details.component-C8awcdP5.js +0 -26
- package/development/timetable-form-field.component-BI24VjkC.js +0 -44
- package/development/timetable-form.component-CUG86CSN.js +0 -27
- package/development/timetable-occupancy.component-D_PXXvI9.js +0 -124
- package/development/toast.component-BnbpuU9L.js +0 -274
- package/development/toggle-check.component-BG4w_sE8.js +0 -159
- package/development/toggle-option.component-D-F7Fh7i.js +0 -168
- package/development/toggle.component-BFYLRN8o.js +0 -254
- package/development/tooltip.component-DzSd9VjW.js +0 -378
- package/message.component-BQjnZ5Z3.js +0 -27
- package/step-label.component-DnQBwnL8.js +0 -80
- package/styles-BUpK1iP2.js +0 -5
- package/timetable-form-details.component-CBZ7QSAx.js +0 -16
- package/timetable-form-field.component-BKxQQqt7.js +0 -32
- package/toggle-check.component-B6Ww5pLD.js +0 -119
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
-
import { html, nothing, unsafeCSS } from "lit";
|
|
3
|
-
import { property } from "lit/decorators.js";
|
|
4
|
-
import { SbbElement } from "./core/base-elements.js";
|
|
5
|
-
import { isLean, isZeroAnimationDuration } from "./core/dom.js";
|
|
6
|
-
import { SbbReadonlyMixin } from "./core/mixins.js";
|
|
7
|
-
import { boxSizingStyles } from "./core/styles.js";
|
|
8
|
-
import { SbbSecondaryButtonElement } from "./button.pure.js";
|
|
9
|
-
import { SbbLanguageController } from "./core/controllers.js";
|
|
10
|
-
import { i18nCloseNotification } from "./core/i18n.js";
|
|
11
|
-
import { SbbIconNameMixin } from "./icon.js";
|
|
12
|
-
import "./divider.js";
|
|
13
|
-
import { ResizeController } from "@lit-labs/observers/resize-controller.js";
|
|
14
|
-
//#region src/elements/notification/notification.scss?inline
|
|
15
|
-
var notification_default = ":host {\n --sbb-notification-border: var(--sbb-notification-border-width) solid\n var(--sbb-notification-type-color);\n --sbb-notification-background-color: color-mix(in srgb, var(--sbb-notification-type-color) 5%, white);\n --sbb-notification-background-color: light-dark(\n color-mix(in srgb, var(--sbb-notification-type-color) 5%, white),\n color-mix(in srgb, var(--sbb-notification-type-color) 35%, white)\n );\n --sbb-notification-icon-color: var(--sbb-notification-type-color);\n --sbb-notification-border-radius-start: calc(var(--sbb-notification-base-border-radius) / 2);\n --sbb-notification-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-4x)\n );\n --_sbb-notification-icon-authoritative-font-size: 1em;\n --_sbb-notification-icon-authoritative-line-height: var(--sbb-typo-line-height-text);\n --_sbb-notification-inset-inline-start: calc(\n var(--sbb-notification-base-border-radius) - var(--sbb-notification-border-width)\n );\n --sbb-focus-outline-color: var(--sbb-focus-outline-color-default);\n display: block;\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n font-size: var(--sbb-notification-font-size);\n}\n\n:host(:is(:state(state-opening),[state--state-opening]):not([animation=open], [animation=all])) {\n --sbb-disable-animation-duration: 0s;\n}\n\n:host(:is(:state(state-closing),[state--state-closing]):not([animation=close], [animation=all])) {\n --sbb-disable-animation-duration: 0s;\n}\n\n:host(:is(:state(resize-disable-animation),[state--resize-disable-animation])) {\n --sbb-disable-animation-duration: 0s;\n}\n\n:host(:is(:state(slotted-title),[state--slotted-title])) {\n --_sbb-notification-icon-authoritative-font-size: var(--sbb-heading-font-size-5);\n --_sbb-notification-icon-authoritative-line-height: var(--sbb-typo-line-height-heading);\n}\n\n:host(:is(:state(slotted-title),[state--slotted-title])[size=s]) {\n --_sbb-notification-icon-authoritative-font-size: var(--sbb-heading-font-size-6);\n --_sbb-notification-icon-authoritative-line-height: var(--sbb-typo-line-height-text);\n}\n\n:host([size=m]) {\n --sbb-notification-font-size: var(--sbb-text-font-size-s);\n --sbb-notification-padding-block: var(--sbb-spacing-responsive-xxs);\n --sbb-notification-padding-inline: var(--sbb-spacing-responsive-xs);\n --sbb-notification-content-padding-inline: var(--sbb-spacing-responsive-xxxs)\n var(--sbb-spacing-responsive-xs);\n}\n\n:host([size=s]) {\n --sbb-notification-font-size: var(--sbb-text-font-size-xs);\n --sbb-notification-padding-block: var(--sbb-spacing-responsive-xxxs);\n --sbb-notification-padding-inline: var(--sbb-spacing-responsive-xxs)\n var(--sbb-spacing-responsive-xxxs);\n --sbb-notification-content-padding-inline: var(--sbb-spacing-responsive-xxxs)\n var(--sbb-spacing-responsive-xxs);\n}\n@media (min-width: calc(37.5rem)) {\n :host([size=s]) {\n --sbb-notification-padding-inline: var(--sbb-spacing-responsive-xxs);\n }\n}\n\n:host(:is(:not([type]), [type=info])) {\n --sbb-notification-type-color: var(--sbb-color-smoke);\n --sbb-notification-icon-color: var(--sbb-notification-color);\n --sbb-notification-divider-opacity-light: 20%;\n --sbb-notification-divider-opacity-dark: 20%;\n}\n\n:host([type=note]) {\n --sbb-notification-type-color: var(--sbb-color-sky);\n --sbb-notification-divider-opacity-light: 20%;\n --sbb-notification-divider-opacity-dark: 20%;\n}\n\n:host([type=success]) {\n --sbb-notification-type-color: var(--sbb-color-success);\n --sbb-notification-divider-opacity-light: 15%;\n --sbb-notification-divider-opacity-dark: 30%;\n}\n\n:host([type=warn]) {\n --sbb-notification-type-color: var(--sbb-color-warning);\n --sbb-notification-icon-color: var(--sbb-notification-color);\n --sbb-notification-divider-opacity-light: 25%;\n --sbb-notification-divider-opacity-dark: 40%;\n}\n\n:host([type=error]) {\n --sbb-notification-type-color: var(--sbb-color-error);\n --sbb-notification-divider-opacity-light: 10%;\n --sbb-notification-divider-opacity-dark: 25%;\n}\n\n.sbb-notification__wrapper {\n position: relative;\n inset-inline-start: var(--_sbb-notification-inset-inline-start);\n width: calc(100% - var(--_sbb-notification-inset-inline-start));\n border: var(--sbb-notification-border);\n border-radius: var(--sbb-notification-border-radius-start) var(--sbb-notification-base-border-radius) var(--sbb-notification-base-border-radius) var(--sbb-notification-border-radius-start);\n opacity: 0;\n max-height: 0;\n margin: 0;\n}\n.sbb-notification__wrapper::before {\n content: \"\";\n position: absolute;\n inset: calc(var(--sbb-notification-border-width) * -1) var(--sbb-notification-base-border-radius) calc(var(--sbb-notification-border-width) * -1) calc(var(--sbb-notification-base-border-radius) * -1);\n background-color: var(--sbb-notification-type-color);\n border: var(--sbb-notification-border);\n border-radius: var(--sbb-notification-base-border-radius);\n}\n:host(:is(:is(:state(state-opened),[state--state-opened]), :is(:state(state-closing),[state--state-closing]))) .sbb-notification__wrapper {\n opacity: 1;\n max-height: calc(var(--sbb-notification-height) + var(--sbb-notification-border-width) * 2);\n margin: var(--sbb-notification-margin, 0);\n}\n:host(:is(:state(state-opening),[state--state-opening])) .sbb-notification__wrapper {\n animation-name: open;\n animation-fill-mode: forwards;\n animation-duration: var(--sbb-notification-animation-duration);\n animation-timing-function: var(--sbb-notification-timing-function);\n}\n:host(:is(:state(state-closing),[state--state-closing])) .sbb-notification__wrapper {\n animation-name: close, close-height;\n animation-fill-mode: forwards;\n animation-duration: var(--sbb-notification-animation-duration);\n animation-timing-function: var(--sbb-notification-timing-function);\n animation-delay: 0s, var(--sbb-disable-animation-duration, var(--sbb-animation-duration-2x));\n}\n\n.sbb-notification {\n position: relative;\n display: grid;\n grid-template-columns: 1fr auto;\n align-items: center;\n padding-block: var(--sbb-notification-padding-block);\n padding-inline: var(--sbb-notification-padding-inline);\n color: var(--sbb-notification-color);\n border-radius: var(--sbb-notification-border-radius-start) calc(var(--sbb-notification-base-border-radius) - var(--sbb-notification-border-width)) calc(var(--sbb-notification-base-border-radius) - var(--sbb-notification-border-width)) var(--sbb-notification-border-radius-start);\n overflow: hidden;\n background-color: var(--sbb-notification-background-color);\n}\n@media (min-width: calc(37.5rem)) {\n .sbb-notification {\n grid-template-columns: auto 1fr auto auto;\n }\n}\n\n.sbb-notification__icon,\n::slotted(sbb-icon) {\n color: var(--sbb-notification-icon-color);\n align-self: var(--sbb-notification-icon-align-self);\n --sbb-icon-svg-width: var(--sbb-notification-icon-size);\n}\n@media (min-width: calc(37.5rem)) {\n .sbb-notification__icon,\n ::slotted(sbb-icon) {\n margin-block-start: max(0rem, (var(--_sbb-notification-icon-authoritative-font-size) * var(--_sbb-notification-icon-authoritative-line-height) - var(--sbb-size-icon-ui-small)) / 2);\n }\n}\n\n.sbb-notification__content {\n color-scheme: only light;\n order: 3;\n grid-area: 2/1/3/3;\n align-self: flex-start;\n margin-block-start: var(--sbb-notification-content-margin-block-start);\n}\n@media (min-width: calc(37.5rem)) {\n .sbb-notification__content {\n order: initial;\n grid-area: initial;\n margin-block-start: 0;\n padding-inline: var(--sbb-notification-content-padding-inline);\n }\n}\n\n.sbb-notification__text {\n display: inline;\n margin: 0;\n padding: 0;\n}\n\n.sbb-notification__divider {\n --sbb-divider-color: color-mix(\n in srgb,\n var(--sbb-notification-type-color) var(--sbb-notification-divider-opacity-light),\n var(--sbb-notification-background-color)\n );\n --sbb-divider-color: light-dark(\n color-mix(\n in srgb,\n var(--sbb-notification-type-color) var(--sbb-notification-divider-opacity-light),\n var(--sbb-notification-background-color)\n ),\n color-mix(\n in srgb,\n var(--sbb-notification-type-color) var(--sbb-notification-divider-opacity-dark),\n var(--sbb-notification-background-color)\n )\n );\n display: none;\n position: relative;\n inset-inline-start: var(--sbb-border-width-1x);\n}\n@media (min-width: calc(37.5rem)) {\n .sbb-notification__divider {\n display: block;\n margin-inline-end: var(--sbb-notification-close-wrapper-gap);\n height: calc(100% - var(--sbb-spacing-fixed-1x) * 2);\n }\n}\n\n@keyframes open {\n from {\n opacity: 0;\n max-height: 0;\n margin: 0;\n }\n to {\n opacity: 1;\n max-height: calc(var(--sbb-notification-height) + var(--sbb-notification-border-width) * 2);\n margin: var(--sbb-notification-margin, 0);\n }\n}\n@keyframes close {\n from {\n opacity: 1;\n margin: var(--sbb-notification-margin, 0);\n }\n to {\n opacity: 0;\n margin: 0;\n }\n}\n@keyframes close-height {\n from {\n max-height: calc(var(--sbb-notification-height) + var(--sbb-notification-border-width) * 2);\n }\n to {\n max-height: 0;\n }\n}\n::slotted(sbb-title) {\n margin: 0;\n}";
|
|
16
|
-
//#endregion
|
|
17
|
-
//#region src/elements/notification/notification.component.ts
|
|
18
|
-
SbbSecondaryButtonElement.define();
|
|
19
|
-
var notificationTypes = new Map([
|
|
20
|
-
["info", "circle-information-small"],
|
|
21
|
-
["note", "circle-information-small"],
|
|
22
|
-
["success", "circle-tick-small"],
|
|
23
|
-
["warn", "circle-exclamation-point-small"],
|
|
24
|
-
["error", "circle-cross-small"]
|
|
25
|
-
]);
|
|
26
|
-
var DEBOUNCE_TIME = 150;
|
|
27
|
-
/**
|
|
28
|
-
* It displays messages which require a user's attention without interrupting its tasks.
|
|
29
|
-
*
|
|
30
|
-
* @slot - Use the unnamed slot to add content to the `sbb-notification`. Content should consist of an optional `sbb-title` element and text content.
|
|
31
|
-
* @slot title - Slot for the title. For the standard `sbb-title` element, the slot is automatically assigned when slotted in the unnamed slot.
|
|
32
|
-
* @slot icon - Use this slot to display a custom icon by providing an `sbb-icon` component.
|
|
33
|
-
* @cssprop [--sbb-notification-margin=0] - Can be used to modify the margin in order to get a smoother animation.
|
|
34
|
-
* See style section for more information.
|
|
35
|
-
*/
|
|
36
|
-
var SbbNotificationElement = (() => {
|
|
37
|
-
let _classSuper = SbbIconNameMixin(SbbReadonlyMixin(SbbElement));
|
|
38
|
-
let _type_decorators;
|
|
39
|
-
let _type_initializers = [];
|
|
40
|
-
let _type_extraInitializers = [];
|
|
41
|
-
let _size_decorators;
|
|
42
|
-
let _size_initializers = [];
|
|
43
|
-
let _size_extraInitializers = [];
|
|
44
|
-
let _animation_decorators;
|
|
45
|
-
let _animation_initializers = [];
|
|
46
|
-
let _animation_extraInitializers = [];
|
|
47
|
-
return class SbbNotificationElement extends _classSuper {
|
|
48
|
-
static {
|
|
49
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
50
|
-
_type_decorators = [property({ reflect: true })];
|
|
51
|
-
_size_decorators = [property({ reflect: true })];
|
|
52
|
-
_animation_decorators = [property({ reflect: true })];
|
|
53
|
-
__esDecorate(this, null, _type_decorators, {
|
|
54
|
-
kind: "accessor",
|
|
55
|
-
name: "type",
|
|
56
|
-
static: false,
|
|
57
|
-
private: false,
|
|
58
|
-
access: {
|
|
59
|
-
has: (obj) => "type" in obj,
|
|
60
|
-
get: (obj) => obj.type,
|
|
61
|
-
set: (obj, value) => {
|
|
62
|
-
obj.type = value;
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
metadata: _metadata
|
|
66
|
-
}, _type_initializers, _type_extraInitializers);
|
|
67
|
-
__esDecorate(this, null, _size_decorators, {
|
|
68
|
-
kind: "accessor",
|
|
69
|
-
name: "size",
|
|
70
|
-
static: false,
|
|
71
|
-
private: false,
|
|
72
|
-
access: {
|
|
73
|
-
has: (obj) => "size" in obj,
|
|
74
|
-
get: (obj) => obj.size,
|
|
75
|
-
set: (obj, value) => {
|
|
76
|
-
obj.size = value;
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
|
-
metadata: _metadata
|
|
80
|
-
}, _size_initializers, _size_extraInitializers);
|
|
81
|
-
__esDecorate(this, null, _animation_decorators, {
|
|
82
|
-
kind: "accessor",
|
|
83
|
-
name: "animation",
|
|
84
|
-
static: false,
|
|
85
|
-
private: false,
|
|
86
|
-
access: {
|
|
87
|
-
has: (obj) => "animation" in obj,
|
|
88
|
-
get: (obj) => obj.animation,
|
|
89
|
-
set: (obj, value) => {
|
|
90
|
-
obj.animation = value;
|
|
91
|
-
}
|
|
92
|
-
},
|
|
93
|
-
metadata: _metadata
|
|
94
|
-
}, _animation_initializers, _animation_extraInitializers);
|
|
95
|
-
if (_metadata) Object.defineProperty(this, Symbol.metadata, {
|
|
96
|
-
enumerable: true,
|
|
97
|
-
configurable: true,
|
|
98
|
-
writable: true,
|
|
99
|
-
value: _metadata
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
static {
|
|
103
|
-
this.elementName = "sbb-notification";
|
|
104
|
-
}
|
|
105
|
-
static {
|
|
106
|
-
this.styles = [boxSizingStyles, unsafeCSS(notification_default)];
|
|
107
|
-
}
|
|
108
|
-
static {
|
|
109
|
-
this.events = {
|
|
110
|
-
beforeopen: "beforeopen",
|
|
111
|
-
open: "open",
|
|
112
|
-
beforeclose: "beforeclose",
|
|
113
|
-
close: "close"
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
#type_accessor_storage;
|
|
117
|
-
/** The type of the notification. */
|
|
118
|
-
get type() {
|
|
119
|
-
return this.#type_accessor_storage;
|
|
120
|
-
}
|
|
121
|
-
set type(value) {
|
|
122
|
-
this.#type_accessor_storage = value;
|
|
123
|
-
}
|
|
124
|
-
#size_accessor_storage;
|
|
125
|
-
/**
|
|
126
|
-
* Size variant, either s or m.
|
|
127
|
-
* @default 'm' / 's' (lean)
|
|
128
|
-
*/
|
|
129
|
-
get size() {
|
|
130
|
-
return this.#size_accessor_storage;
|
|
131
|
-
}
|
|
132
|
-
set size(value) {
|
|
133
|
-
this.#size_accessor_storage = value;
|
|
134
|
-
}
|
|
135
|
-
#animation_accessor_storage;
|
|
136
|
-
/** The enabled animations. */
|
|
137
|
-
get animation() {
|
|
138
|
-
return this.#animation_accessor_storage;
|
|
139
|
-
}
|
|
140
|
-
set animation(value) {
|
|
141
|
-
this.#animation_accessor_storage = value;
|
|
142
|
-
}
|
|
143
|
-
/** The state of the component. */
|
|
144
|
-
set _state(state) {
|
|
145
|
-
if (this._stateInternal) this.internals.states.delete(`state-${this._stateInternal}`);
|
|
146
|
-
this._stateInternal = state;
|
|
147
|
-
if (this._stateInternal) this.internals.states.add(`state-${this._stateInternal}`);
|
|
148
|
-
}
|
|
149
|
-
get _state() {
|
|
150
|
-
return this._stateInternal;
|
|
151
|
-
}
|
|
152
|
-
constructor() {
|
|
153
|
-
super();
|
|
154
|
-
this.#type_accessor_storage = __runInitializers(this, _type_initializers, "info");
|
|
155
|
-
this.#size_accessor_storage = (__runInitializers(this, _type_extraInitializers), __runInitializers(this, _size_initializers, isLean() ? "s" : "m"));
|
|
156
|
-
this.#animation_accessor_storage = (__runInitializers(this, _size_extraInitializers), __runInitializers(this, _animation_initializers, "all"));
|
|
157
|
-
this._stateInternal = __runInitializers(this, _animation_extraInitializers);
|
|
158
|
-
this._resizeObserverTimeout = null;
|
|
159
|
-
this._language = new SbbLanguageController(this);
|
|
160
|
-
this._notificationResizeObserver = new ResizeController(this, {
|
|
161
|
-
target: null,
|
|
162
|
-
skipInitial: true,
|
|
163
|
-
callback: () => this._onNotificationResize()
|
|
164
|
-
});
|
|
165
|
-
this._state = "closed";
|
|
166
|
-
}
|
|
167
|
-
willUpdate(changedProperties) {
|
|
168
|
-
super.willUpdate(changedProperties);
|
|
169
|
-
if (changedProperties.has("size")) this._configureTitle();
|
|
170
|
-
}
|
|
171
|
-
_open() {
|
|
172
|
-
if (this._state === "closed") {
|
|
173
|
-
this._state = "opening";
|
|
174
|
-
/** Emits when the opening animation starts. */
|
|
175
|
-
this.dispatchEvent(new Event("beforeopen"));
|
|
176
|
-
if (this._isZeroAnimationDuration()) this._handleOpening();
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
close() {
|
|
180
|
-
if (this._state === "opened" && this._dispatchBeforeCloseEvent()) {
|
|
181
|
-
this._state = "closing";
|
|
182
|
-
if (this._isZeroAnimationDuration()) this._handleClosing();
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
_dispatchBeforeCloseEvent() {
|
|
186
|
-
/** Emits when the closing animation starts. Can be canceled to prevent the component from closing. */
|
|
187
|
-
return this.dispatchEvent(new Event("beforeclose", { cancelable: true }));
|
|
188
|
-
}
|
|
189
|
-
firstUpdated(changedProperties) {
|
|
190
|
-
super.firstUpdated(changedProperties);
|
|
191
|
-
this._notificationElement = this.shadowRoot?.querySelector(".sbb-notification__wrapper");
|
|
192
|
-
this.updateComplete.then(() => {
|
|
193
|
-
this._setNotificationHeight();
|
|
194
|
-
this._open();
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
_isZeroAnimationDuration() {
|
|
198
|
-
return isZeroAnimationDuration(this, "--sbb-notification-animation-duration");
|
|
199
|
-
}
|
|
200
|
-
_setNotificationHeight() {
|
|
201
|
-
if (!this._notificationElement?.scrollHeight) return;
|
|
202
|
-
const notificationHeight = `${this._notificationElement.scrollHeight}px`;
|
|
203
|
-
this.style.setProperty("--sbb-notification-height", notificationHeight);
|
|
204
|
-
}
|
|
205
|
-
_onNotificationResize() {
|
|
206
|
-
if (this._state !== "opened") return;
|
|
207
|
-
if (this._resizeObserverTimeout) clearTimeout(this._resizeObserverTimeout);
|
|
208
|
-
this.internals.states.add("resize-disable-animation");
|
|
209
|
-
this._resizeObserverTimeout = setTimeout(() => this.internals.states.delete("resize-disable-animation"), DEBOUNCE_TIME);
|
|
210
|
-
setTimeout(() => this._setNotificationHeight());
|
|
211
|
-
}
|
|
212
|
-
_onNotificationAnimationEnd(event) {
|
|
213
|
-
if (this._state === "opening" && event.animationName === "open") this._handleOpening();
|
|
214
|
-
if (this._state === "closing" && event.animationName === "close-height") this._handleClosing();
|
|
215
|
-
}
|
|
216
|
-
_handleOpening() {
|
|
217
|
-
this._state = "opened";
|
|
218
|
-
this._notificationResizeObserver.observe(this._notificationElement);
|
|
219
|
-
/** Emits when the opening animation ends. */
|
|
220
|
-
this.dispatchEvent(new Event("open"));
|
|
221
|
-
}
|
|
222
|
-
_handleClosing() {
|
|
223
|
-
this._state = "closed";
|
|
224
|
-
/** Emits when the closing animation ends. */
|
|
225
|
-
this.dispatchEvent(new Event("close"));
|
|
226
|
-
this._notificationResizeObserver.unobserve(this._notificationElement);
|
|
227
|
-
setTimeout(() => this.remove());
|
|
228
|
-
}
|
|
229
|
-
_handleSlotchange() {
|
|
230
|
-
const title = Array.from(this.children).find((el) => el.localName === "sbb-title");
|
|
231
|
-
if (title) title.slot = "title";
|
|
232
|
-
}
|
|
233
|
-
_configureTitle() {
|
|
234
|
-
const title = this.querySelector?.("sbb-title");
|
|
235
|
-
if (title) {
|
|
236
|
-
customElements.upgrade(title);
|
|
237
|
-
title.visualLevel = this.size === "m" ? "5" : "6";
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
renderIconName() {
|
|
241
|
-
return super.renderIconName() || notificationTypes.get(this.type);
|
|
242
|
-
}
|
|
243
|
-
render() {
|
|
244
|
-
return html`
|
|
245
|
-
<div class="sbb-notification__wrapper" @animationend=${this._onNotificationAnimationEnd}>
|
|
246
|
-
<div class="sbb-notification">
|
|
247
|
-
${this.renderIconSlot("sbb-notification__icon")}
|
|
248
|
-
<span class="sbb-notification__content">
|
|
249
|
-
<slot name="title" @slotchange=${this._configureTitle}></slot>
|
|
250
|
-
<p class="sbb-notification__text">
|
|
251
|
-
<slot @slotchange=${this._handleSlotchange}></slot>
|
|
252
|
-
</p>
|
|
253
|
-
</span>
|
|
254
|
-
|
|
255
|
-
${!this.readOnly ? html`
|
|
256
|
-
<sbb-divider class="sbb-notification__divider" orientation="vertical"></sbb-divider>
|
|
257
|
-
<sbb-secondary-button
|
|
258
|
-
size=${this.size}
|
|
259
|
-
icon-name="cross-small"
|
|
260
|
-
@click=${() => this.close()}
|
|
261
|
-
aria-label=${i18nCloseNotification[this._language.current]}
|
|
262
|
-
class="sbb-notification__close"
|
|
263
|
-
></sbb-secondary-button>
|
|
264
|
-
` : nothing}
|
|
265
|
-
</div>
|
|
266
|
-
</div>
|
|
267
|
-
`;
|
|
268
|
-
}
|
|
269
|
-
};
|
|
270
|
-
})();
|
|
271
|
-
//#endregion
|
|
272
|
-
export { SbbNotificationElement as t };
|
|
273
|
-
|
|
274
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmNvbXBvbmVudC1DbzlRQ2hYYy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG4vLyBPcGVuL0Nsb3NlIGFuaW1hdGlvbiB2YXJzXG4kb3Blbi1hbmltLW1hcmdpbi1mcm9tOiAwO1xuJG9wZW4tYW5pbS1tYXJnaW4tdG86IHZhcigtLXNiYi1ub3RpZmljYXRpb24tbWFyZ2luLCAwKTtcbiRvcGVuLWFuaW0tb3BhY2l0eS1mcm9tOiAwO1xuJG9wZW4tYW5pbS1vcGFjaXR5LXRvOiAxO1xuJG9wZW4tYW5pbS1oZWlnaHQtZnJvbTogMDtcbiRvcGVuLWFuaW0taGVpZ2h0LXRvOiBjYWxjKFxuICB2YXIoLS1zYmItbm90aWZpY2F0aW9uLWhlaWdodCkgKyAodmFyKC0tc2JiLW5vdGlmaWNhdGlvbi1ib3JkZXItd2lkdGgpICogMilcbik7XG5cbjpob3N0IHtcbiAgLS1zYmItbm90aWZpY2F0aW9uLWJvcmRlcjogdmFyKC0tc2JiLW5vdGlmaWNhdGlvbi1ib3JkZXItd2lkdGgpIHNvbGlkXG4gICAgdmFyKC0tc2JiLW5vdGlmaWNhdGlvbi10eXBlLWNvbG9yKTtcbiAgLS1zYmItbm90aWZpY2F0aW9uLWJhY2tncm91bmQtY29sb3I6IGxpZ2h0LWRhcmsoXG4gICAgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXNiYi1ub3RpZmljYXRpb24tdHlwZS1jb2xvcikgNSUsIHdoaXRlKSxcbiAgICBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tc2JiLW5vdGlmaWNhdGlvbi10eXBlLWNvbG9yKSAzNSUsIHdoaXRlKVxuICApO1xuICAtLXNiYi1ub3RpZmljYXRpb24taWNvbi1jb2xvcjogdmFyKC0tc2JiLW5vdGlmaWNhdGlvbi10eXBlLWNvbG9yKTtcbiAgLS1zYmItbm90aWZpY2F0aW9uLWJvcmRlci1yYWRpdXMtc3RhcnQ6IGNhbGModmFyKC0tc2JiLW5vdGlmaWNhdGlvbi1iYXNlLWJvcmRlci1yYWRpdXMpIC8gMik7XG4gIC0tc2JiLW5vdGlmaWNhdGlvbi1hbmltYXRpb24tZHVyYXRpb246IHZhcihcbiAgICAtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbixcbiAgICB2YXIoLS1zYmItYW5pbWF0aW9uLWR1cmF0aW9uLTR4KVxuICApO1xuICAtLV9zYmItbm90aWZpY2F0aW9uLWljb24tYXV0aG9yaXRhdGl2ZS1mb250LXNpemU6IDFlbTtcbiAgLS1fc2JiLW5vdGlmaWNhdGlvbi1pY29uLWF1dGhvcml0YXRpdmUtbGluZS1oZWlnaHQ6IHZhcigtLXNiYi10eXBvLWxpbmUtaGVpZ2h0LXRleHQpO1xuICAtLV9zYmItbm90aWZpY2F0aW9uLWluc2V0LWlubGluZS1zdGFydDogY2FsYyhcbiAgICB2YXIoLS1zYmItbm90aWZpY2F0aW9uLWJhc2UtYm9yZGVyLXJhZGl1cykgLSB2YXIoLS1zYmItbm90aWZpY2F0aW9uLWJvcmRlci13aWR0aClcbiAgKTtcblxuICAvLyBBcyB0aGUgbm90aWZpY2F0aW9uIGhhcyBhbHdheXMgYSBsaWdodCBiYWNrZ3JvdW5kLCB3ZSBoYXZlIHRvIGZpeCB0aGUgZm9jdXMgb3V0bGluZSBjb2xvclxuICAvLyB0byBkZWZhdWx0IGNvbG9yIGZvciBjYXNlcyB3aGVyZSB0aGUgbm90aWZpY2F0aW9uIGlzIHVzZWQgaW4gYSBuZWdhdGl2ZSBjb250ZXh0LlxuICAtLXNiYi1mb2N1cy1vdXRsaW5lLWNvbG9yOiB2YXIoLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvci1kZWZhdWx0KTtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXNiYi10eXBvLWxldHRlci1zcGFjaW5nLXRleHQpO1xuICBmb250LXNpemU6IHZhcigtLXNiYi1ub3RpZmljYXRpb24tZm9udC1zaXplKTtcbn1cblxuLy8gQnkgZGVmYXVsdCwgdGhlIG9wZW4gYW5pbWF0aW9uIGlzIGRpc2FibGVkXG46aG9zdCg6c3RhdGUoc3RhdGUtb3BlbmluZyk6bm90KFthbmltYXRpb249J29wZW4nXSwgW2FuaW1hdGlvbj0nYWxsJ10pKSB7XG4gIEBpbmNsdWRlIHNiYi5kaXNhYmxlLWFuaW1hdGlvbjtcbn1cblxuOmhvc3QoOnN0YXRlKHN0YXRlLWNsb3NpbmcpOm5vdChbYW5pbWF0aW9uPSdjbG9zZSddLCBbYW5pbWF0aW9uPSdhbGwnXSkpIHtcbiAgQGluY2x1ZGUgc2JiLmRpc2FibGUtYW5pbWF0aW9uO1xufVxuXG46aG9zdCg6c3RhdGUocmVzaXplLWRpc2FibGUtYW5pbWF0aW9uKSkge1xuICBAaW5jbHVkZSBzYmIuZGlzYWJsZS1hbmltYXRpb247XG59XG5cbjpob3N0KDpzdGF0ZShzbG90dGVkLXRpdGxlKSkge1xuICAtLV9zYmItbm90aWZpY2F0aW9uLWljb24tYXV0aG9yaXRhdGl2ZS1mb250LXNpemU6IHZhcigtLXNiYi1oZWFkaW5nLWZvbnQtc2l6ZS01KTtcbiAgLS1fc2JiLW5vdGlmaWNhdGlvbi1pY29uLWF1dGhvcml0YXRpdmUtbGluZS1oZWlnaHQ6IHZhcigtLXNiYi10eXBvLWxpbmUtaGVpZ2h0LWhlYWRpbmcpO1xufVxuXG46aG9zdCg6c3RhdGUoc2xvdHRlZC10aXRsZSlbc2l6ZT0ncyddKSB7XG4gIC0tX3NiYi1ub3RpZmljYXRpb24taWNvbi1hdXRob3JpdGF0aXZlLWZvbnQtc2l6ZTogdmFyKC0tc2JiLWhlYWRpbmctZm9udC1zaXplLTYpO1xuICAtLV9zYmItbm90aWZpY2F0aW9uLWljb24tYXV0aG9yaXRhdGl2ZS1saW5lLWhlaWdodDogdmFyKC0tc2JiLXR5cG8tbGluZS1oZWlnaHQtdGV4dCk7XG59XG5cbjpob3N0KFtzaXplPSdtJ10pIHtcbiAgLS1zYmItbm90aWZpY2F0aW9uLWZvbnQtc2l6ZTogdmFyKC0tc2JiLXRleHQtZm9udC1zaXplLXMpO1xuICAtLXNiYi1ub3RpZmljYXRpb24tcGFkZGluZy1ibG9jazogdmFyKC0tc2JiLXNwYWNpbmctcmVzcG9uc2l2ZS14eHMpO1xuICAtLXNiYi1ub3RpZmljYXRpb24tcGFkZGluZy1pbmxpbmU6IHZhcigtLXNiYi1zcGFjaW5nLXJlc3BvbnNpdmUteHMpO1xuICAtLXNiYi1ub3RpZmljYXRpb24tY29udGVudC1wYWRkaW5nLWlubGluZTogdmFyKC0tc2JiLXNwYWNpbmctcmVzcG9uc2l2ZS14eHhzKVxuICAgIHZhcigtLXNiYi1zcGFjaW5nLXJlc3BvbnNpdmUteHMpO1xufVxuXG46aG9zdChbc2l6ZT0ncyddKSB7XG4gIC0tc2JiLW5vdGlmaWNhdGlvbi1mb250LXNpemU6IHZhcigtLXNiYi10ZXh0LWZvbnQtc2l6ZS14cyk7XG4gIC0tc2JiLW5vdGlmaWNhdGlvbi1wYWRkaW5nLWJsb2NrOiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLXh4eHMpO1xuICAtLXNiYi1ub3RpZmljYXRpb24tcGFkZGluZy1pbmxpbmU6IHZhcigtLXNiYi1zcGFjaW5nLXJlc3BvbnNpdmUteHhzKVxuICAgIHZhcigtLXNiYi1zcGFjaW5nLXJlc3BvbnNpdmUteHh4cyk7XG4gIC0tc2JiLW5vdGlmaWNhdGlvbi1jb250ZW50LXBhZGRpbmctaW5saW5lOiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLXh4eHMpXG4gICAgdmFyKC0tc2JiLXNwYWNpbmctcmVzcG9uc2l2ZS14eHMpO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogc21hbGwpIHtcbiAgICAtLXNiYi1ub3RpZmljYXRpb24tcGFkZGluZy1pbmxpbmU6IHZhcigtLXNiYi1zcGFjaW5nLXJlc3BvbnNpdmUteHhzKTtcbiAgfVxufVxuXG4vLyBUeXBlc1xuOmhvc3QoOmlzKDpub3QoW3R5cGVdKSwgW3R5cGU9J2luZm8nXSkpIHtcbiAgLS1zYmItbm90aWZpY2F0aW9uLXR5cGUtY29sb3I6IHZhcigtLXNiYi1jb2xvci1zbW9rZSk7XG4gIC0tc2JiLW5vdGlmaWNhdGlvbi1pY29uLWNvbG9yOiB2YXIoLS1zYmItbm90aWZpY2F0aW9uLWNvbG9yKTtcbiAgLS1zYmItbm90aWZpY2F0aW9uLWRpdmlkZXItb3BhY2l0eS1saWdodDogMjAlO1xuICAtLXNiYi1ub3RpZmljYXRpb24tZGl2aWRlci1vcGFjaXR5LWRhcms6IDIwJTtcbn1cblxuOmhvc3QoW3R5cGU9J25vdGUnXSkge1xuICAtLXNiYi1ub3RpZmljYXRpb24tdHlwZS1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLXNreSk7XG4gIC0tc2JiLW5vdGlmaWNhdGlvbi1kaXZpZGVyLW9wYWNpdHktbGlnaHQ6IDIwJTtcbiAgLS1zYmItbm90aWZpY2F0aW9uLWRpdmlkZXItb3BhY2l0eS1kYXJrOiAyMCU7XG59XG5cbjpob3N0KFt0eXBlPSdzdWNjZXNzJ10pIHtcbiAgLS1zYmItbm90aWZpY2F0aW9uLXR5cGUtY29sb3I6IHZhcigtLXNiYi1jb2xvci1zdWNjZXNzKTtcbiAgLS1zYmItbm90aWZpY2F0aW9uLWRpdmlkZXItb3BhY2l0eS1saWdodDogMTUlO1xuICAtLXNiYi1ub3RpZmljYXRpb24tZGl2aWRlci1vcGFjaXR5LWRhcms6IDMwJTtcbn1cblxuOmhvc3QoW3R5cGU9J3dhcm4nXSkge1xuICAtLXNiYi1ub3RpZmljYXRpb24tdHlwZS1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLXdhcm5pbmcpO1xuICAtLXNiYi1ub3RpZmljYXRpb24taWNvbi1jb2xvcjogdmFyKC0tc2JiLW5vdGlmaWNhdGlvbi1jb2xvcik7XG4gIC0tc2JiLW5vdGlmaWNhdGlvbi1kaXZpZGVyLW9wYWNpdHktbGlnaHQ6IDI1JTtcbiAgLS1zYmItbm90aWZpY2F0aW9uLWRpdmlkZXItb3BhY2l0eS1kYXJrOiA0MCU7XG59XG5cbjpob3N0KFt0eXBlPSdlcnJvciddKSB7XG4gIC0tc2JiLW5vdGlmaWNhdGlvbi10eXBlLWNvbG9yOiB2YXIoLS1zYmItY29sb3ItZXJyb3IpO1xuICAtLXNiYi1ub3RpZmljYXRpb24tZGl2aWRlci1vcGFjaXR5LWxpZ2h0OiAxMCU7XG4gIC0tc2JiLW5vdGlmaWNhdGlvbi1kaXZpZGVyLW9wYWNpdHktZGFyazogMjUlO1xufVxuXG4uc2JiLW5vdGlmaWNhdGlvbl9fd3JhcHBlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaW5zZXQtaW5saW5lLXN0YXJ0OiB2YXIoLS1fc2JiLW5vdGlmaWNhdGlvbi1pbnNldC1pbmxpbmUtc3RhcnQpO1xuICB3aWR0aDogY2FsYygxMDAlIC0gdmFyKC0tX3NiYi1ub3RpZmljYXRpb24taW5zZXQtaW5saW5lLXN0YXJ0KSk7XG4gIGJvcmRlcjogdmFyKC0tc2JiLW5vdGlmaWNhdGlvbi1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1zYmItbm90aWZpY2F0aW9uLWJvcmRlci1yYWRpdXMtc3RhcnQpXG4gICAgdmFyKC0tc2JiLW5vdGlmaWNhdGlvbi1iYXNlLWJvcmRlci1yYWRpdXMpIHZhcigtLXNiYi1ub3RpZmljYXRpb24tYmFzZS1ib3JkZXItcmFkaXVzKVxuICAgIHZhcigtLXNiYi1ub3RpZmljYXRpb24tYm9yZGVyLXJhZGl1cy1zdGFydCk7XG4gIG9wYWNpdHk6ICN7JG9wZW4tYW5pbS1vcGFjaXR5LWZyb219O1xuICBtYXgtaGVpZ2h0OiAjeyRvcGVuLWFuaW0taGVpZ2h0LWZyb219O1xuICBtYXJnaW46ICN7JG9wZW4tYW5pbS1tYXJnaW4tZnJvbX07XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaW5zZXQ6IGNhbGModmFyKC0tc2JiLW5vdGlmaWNhdGlvbi1ib3JkZXItd2lkdGgpICogLTEpXG4gICAgICB2YXIoLS1zYmItbm90aWZpY2F0aW9uLWJhc2UtYm9yZGVyLXJhZGl1cykgY2FsYyh2YXIoLS1zYmItbm90aWZpY2F0aW9uLWJvcmRlci13aWR0aCkgKiAtMSlcbiAgICAgIGNhbGModmFyKC0tc2JiLW5vdGlmaWNhdGlvbi1iYXNlLWJvcmRlci1yYWRpdXMpICogLTEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1ub3RpZmljYXRpb24tdHlwZS1jb2xvcik7XG4gICAgYm9yZGVyOiB2YXIoLS1zYmItbm90aWZpY2F0aW9uLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2JiLW5vdGlmaWNhdGlvbi1iYXNlLWJvcmRlci1yYWRpdXMpO1xuICB9XG5cbiAgOmhvc3QoOmlzKDpzdGF0ZShzdGF0ZS1vcGVuZWQpLCA6c3RhdGUoc3RhdGUtY2xvc2luZykpKSAmIHtcbiAgICBvcGFjaXR5OiAjeyRvcGVuLWFuaW0tb3BhY2l0eS10b307XG4gICAgbWF4LWhlaWdodDogI3skb3Blbi1hbmltLWhlaWdodC10b307XG4gICAgbWFyZ2luOiAjeyRvcGVuLWFuaW0tbWFyZ2luLXRvfTtcbiAgfVxuXG4gIDpob3N0KDpzdGF0ZShzdGF0ZS1vcGVuaW5nKSkgJiB7XG4gICAgYW5pbWF0aW9uOiB7XG4gICAgICBuYW1lOiBvcGVuO1xuICAgICAgZmlsbC1tb2RlOiBmb3J3YXJkcztcbiAgICAgIGR1cmF0aW9uOiB2YXIoLS1zYmItbm90aWZpY2F0aW9uLWFuaW1hdGlvbi1kdXJhdGlvbik7XG4gICAgICB0aW1pbmctZnVuY3Rpb246IHZhcigtLXNiYi1ub3RpZmljYXRpb24tdGltaW5nLWZ1bmN0aW9uKTtcbiAgICB9XG4gIH1cblxuICA6aG9zdCg6c3RhdGUoc3RhdGUtY2xvc2luZykpICYge1xuICAgIGFuaW1hdGlvbjoge1xuICAgICAgbmFtZTogY2xvc2UsIGNsb3NlLWhlaWdodDtcbiAgICAgIGZpbGwtbW9kZTogZm9yd2FyZHM7XG4gICAgICBkdXJhdGlvbjogdmFyKC0tc2JiLW5vdGlmaWNhdGlvbi1hbmltYXRpb24tZHVyYXRpb24pO1xuICAgICAgdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItbm90aWZpY2F0aW9uLXRpbWluZy1mdW5jdGlvbik7XG4gICAgICBkZWxheTogMHMsIHZhcigtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbiwgdmFyKC0tc2JiLWFuaW1hdGlvbi1kdXJhdGlvbi0yeCkpO1xuICAgIH1cbiAgfVxufVxuXG4uc2JiLW5vdGlmaWNhdGlvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgYXV0bztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZy1ibG9jazogdmFyKC0tc2JiLW5vdGlmaWNhdGlvbi1wYWRkaW5nLWJsb2NrKTtcbiAgcGFkZGluZy1pbmxpbmU6IHZhcigtLXNiYi1ub3RpZmljYXRpb24tcGFkZGluZy1pbmxpbmUpO1xuICBjb2xvcjogdmFyKC0tc2JiLW5vdGlmaWNhdGlvbi1jb2xvcik7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi1ub3RpZmljYXRpb24tYm9yZGVyLXJhZGl1cy1zdGFydClcbiAgICBjYWxjKHZhcigtLXNiYi1ub3RpZmljYXRpb24tYmFzZS1ib3JkZXItcmFkaXVzKSAtIHZhcigtLXNiYi1ub3RpZmljYXRpb24tYm9yZGVyLXdpZHRoKSlcbiAgICBjYWxjKHZhcigtLXNiYi1ub3RpZmljYXRpb24tYmFzZS1ib3JkZXItcmFkaXVzKSAtIHZhcigtLXNiYi1ub3RpZmljYXRpb24tYm9yZGVyLXdpZHRoKSlcbiAgICB2YXIoLS1zYmItbm90aWZpY2F0aW9uLWJvcmRlci1yYWRpdXMtc3RhcnQpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItbm90aWZpY2F0aW9uLWJhY2tncm91bmQtY29sb3IpO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogc21hbGwpIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyIGF1dG8gYXV0bztcbiAgfVxufVxuXG4uc2JiLW5vdGlmaWNhdGlvbl9faWNvbixcbjo6c2xvdHRlZChzYmItaWNvbikge1xuICBjb2xvcjogdmFyKC0tc2JiLW5vdGlmaWNhdGlvbi1pY29uLWNvbG9yKTtcbiAgYWxpZ24tc2VsZjogdmFyKC0tc2JiLW5vdGlmaWNhdGlvbi1pY29uLWFsaWduLXNlbGYpO1xuXG4gIC8vIFRoaXMgaXMgYW4gdW5kb2N1bWVudGVkIGZlYXR1cmUgZm9yIHNiYi5jaCwgdG8gaGF2ZSB0aGUgYWJpbGl0eSB0byBoaWRlIHRoZSBpY29uLlxuICAtLXNiYi1pY29uLXN2Zy13aWR0aDogdmFyKC0tc2JiLW5vdGlmaWNhdGlvbi1pY29uLXNpemUpO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogc21hbGwpIHtcbiAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IG1heChcbiAgICAgIDByZW0sXG4gICAgICBjYWxjKFxuICAgICAgICAoXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgdmFyKC0tX3NiYi1ub3RpZmljYXRpb24taWNvbi1hdXRob3JpdGF0aXZlLWZvbnQtc2l6ZSkgKlxuICAgICAgICAgICAgICAgICAgdmFyKC0tX3NiYi1ub3RpZmljYXRpb24taWNvbi1hdXRob3JpdGF0aXZlLWxpbmUtaGVpZ2h0KVxuICAgICAgICAgICAgICApIC0gdmFyKC0tc2JiLXNpemUtaWNvbi11aS1zbWFsbClcbiAgICAgICAgICApIC9cbiAgICAgICAgICAyXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuXG4uc2JiLW5vdGlmaWNhdGlvbl9fY29udGVudCB7XG4gIC8vIFRoZSBjb250ZW50IG9mIHRoZSBub3RpZmljYXRpb24gaXMgYWx3YXlzIGRpc3BsYXllZCBpbiBwb3NpdGl2ZSBtb2RlLFxuICAvLyB0aGVyZWZvcmUsIHRvIGhhdmUgc2xvdHRlZCBjb250ZW50IGNvcnJlY3RseSBkaXNwbGF5LCB3ZSBuZWVkIG9ubHkgYWxsb3cgbGlnaHQgbW9kZS5cbiAgY29sb3Itc2NoZW1lOiBvbmx5IGxpZ2h0O1xuICBvcmRlcjogMztcbiAgZ3JpZC1hcmVhOiAyIC8gMSAvIDMgLyAzO1xuICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLXNiYi1ub3RpZmljYXRpb24tY29udGVudC1tYXJnaW4tYmxvY2stc3RhcnQpO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogc21hbGwpIHtcbiAgICBvcmRlcjogaW5pdGlhbDtcbiAgICBncmlkLWFyZWE6IGluaXRpYWw7XG4gICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiAwO1xuICAgIHBhZGRpbmctaW5saW5lOiB2YXIoLS1zYmItbm90aWZpY2F0aW9uLWNvbnRlbnQtcGFkZGluZy1pbmxpbmUpO1xuICB9XG59XG5cbi5zYmItbm90aWZpY2F0aW9uX190ZXh0IHtcbiAgLy8gUmVzZXQgcGFyYWdyYXBoIHN0eWxlc1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbn1cblxuLnNiYi1ub3RpZmljYXRpb25fX2RpdmlkZXIge1xuICAtLXNiYi1kaXZpZGVyLWNvbG9yOiBsaWdodC1kYXJrKFxuICAgIGNvbG9yLW1peChcbiAgICAgIGluIHNyZ2IsXG4gICAgICB2YXIoLS1zYmItbm90aWZpY2F0aW9uLXR5cGUtY29sb3IpIHZhcigtLXNiYi1ub3RpZmljYXRpb24tZGl2aWRlci1vcGFjaXR5LWxpZ2h0KSxcbiAgICAgIHZhcigtLXNiYi1ub3RpZmljYXRpb24tYmFja2dyb3VuZC1jb2xvcilcbiAgICApLFxuICAgIGNvbG9yLW1peChcbiAgICAgIGluIHNyZ2IsXG4gICAgICB2YXIoLS1zYmItbm90aWZpY2F0aW9uLXR5cGUtY29sb3IpIHZhcigtLXNiYi1ub3RpZmljYXRpb24tZGl2aWRlci1vcGFjaXR5LWRhcmspLFxuICAgICAgdmFyKC0tc2JiLW5vdGlmaWNhdGlvbi1iYWNrZ3JvdW5kLWNvbG9yKVxuICAgIClcbiAgKTtcblxuICBkaXNwbGF5OiBub25lO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGluc2V0LWlubGluZS1zdGFydDogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0xeCk7XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiBzbWFsbCkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbi1pbmxpbmUtZW5kOiB2YXIoLS1zYmItbm90aWZpY2F0aW9uLWNsb3NlLXdyYXBwZXItZ2FwKTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtICh2YXIoLS1zYmItc3BhY2luZy1maXhlZC0xeCkgKiAyKSk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBvcGVuIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogI3skb3Blbi1hbmltLW9wYWNpdHktZnJvbX07XG4gICAgbWF4LWhlaWdodDogI3skb3Blbi1hbmltLWhlaWdodC1mcm9tfTtcbiAgICBtYXJnaW46ICN7JG9wZW4tYW5pbS1tYXJnaW4tZnJvbX07XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogI3skb3Blbi1hbmltLW9wYWNpdHktdG99O1xuICAgIG1heC1oZWlnaHQ6ICN7JG9wZW4tYW5pbS1oZWlnaHQtdG99O1xuICAgIG1hcmdpbjogI3skb3Blbi1hbmltLW1hcmdpbi10b307XG4gIH1cbn1cblxuQGtleWZyYW1lcyBjbG9zZSB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6ICN7JG9wZW4tYW5pbS1vcGFjaXR5LXRvfTtcbiAgICBtYXJnaW46ICN7JG9wZW4tYW5pbS1tYXJnaW4tdG99O1xuICB9XG5cbiAgdG8ge1xuICAgIG9wYWNpdHk6ICN7JG9wZW4tYW5pbS1vcGFjaXR5LWZyb219O1xuICAgIG1hcmdpbjogI3skb3Blbi1hbmltLW1hcmdpbi1mcm9tfTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGNsb3NlLWhlaWdodCB7XG4gIGZyb20ge1xuICAgIG1heC1oZWlnaHQ6ICN7JG9wZW4tYW5pbS1oZWlnaHQtdG99O1xuICB9XG5cbiAgdG8ge1xuICAgIG1heC1oZWlnaHQ6ICN7JG9wZW4tYW5pbS1oZWlnaHQtZnJvbX07XG4gIH1cbn1cblxuOjpzbG90dGVkKHNiYi10aXRsZSkge1xuICAvLyBPdmVyd3JpdGUgc2JiLXRpdGxlIGRlZmF1bHQgbWFyZ2luXG4gIG1hcmdpbjogMDtcbn1cbiIsImltcG9ydCB7IFJlc2l6ZUNvbnRyb2xsZXIgfSBmcm9tICdAbGl0LWxhYnMvb2JzZXJ2ZXJzL3Jlc2l6ZS1jb250cm9sbGVyLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIG5vdGhpbmcsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG4gIHVuc2FmZUNTUyxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJTZWNvbmRhcnlCdXR0b25FbGVtZW50IH0gZnJvbSAnLi4vYnV0dG9uLnB1cmUudHMnO1xuaW1wb3J0IHsgU2JiRWxlbWVudCB9IGZyb20gJy4uL2NvcmUvYmFzZS1lbGVtZW50cy50cyc7XG5pbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi9jb3JlL2NvbnRyb2xsZXJzLnRzJztcbmltcG9ydCB7IGlzTGVhbiwgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24gfSBmcm9tICcuLi9jb3JlL2RvbS50cyc7XG5pbXBvcnQgeyBpMThuQ2xvc2VOb3RpZmljYXRpb24gfSBmcm9tICcuLi9jb3JlL2kxOG4udHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPcGVuZWRDbG9zZWRTdGF0ZSB9IGZyb20gJy4uL2NvcmUvaW50ZXJmYWNlcy50cyc7XG5pbXBvcnQgeyBTYmJSZWFkb25seU1peGluIH0gZnJvbSAnLi4vY29yZS9taXhpbnMudHMnO1xuaW1wb3J0IHsgYm94U2l6aW5nU3R5bGVzIH0gZnJvbSAnLi4vY29yZS9zdHlsZXMudHMnO1xuaW1wb3J0IHsgU2JiSWNvbk5hbWVNaXhpbiB9IGZyb20gJy4uL2ljb24udHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJUaXRsZUVsZW1lbnQgfSBmcm9tICcuLi90aXRsZS50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL25vdGlmaWNhdGlvbi5zY3NzP2lubGluZSc7XG5cbmltcG9ydCAnLi4vZGl2aWRlci50cyc7XG5cbi8vIFRPRE8oYnJlYWtpbmctY2hhbmdlKTogUmVtb3ZlIGNhbGwgdG8gZGVmaW5lLlxuU2JiU2Vjb25kYXJ5QnV0dG9uRWxlbWVudC5kZWZpbmUoKTtcblxuY29uc3Qgbm90aWZpY2F0aW9uVHlwZXMgPSBuZXcgTWFwKFtcbiAgWydpbmZvJywgJ2NpcmNsZS1pbmZvcm1hdGlvbi1zbWFsbCddLFxuICBbJ25vdGUnLCAnY2lyY2xlLWluZm9ybWF0aW9uLXNtYWxsJ10sXG4gIFsnc3VjY2VzcycsICdjaXJjbGUtdGljay1zbWFsbCddLFxuICBbJ3dhcm4nLCAnY2lyY2xlLWV4Y2xhbWF0aW9uLXBvaW50LXNtYWxsJ10sXG4gIFsnZXJyb3InLCAnY2lyY2xlLWNyb3NzLXNtYWxsJ10sXG5dKTtcblxuY29uc3QgREVCT1VOQ0VfVElNRSA9IDE1MDtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBtZXNzYWdlcyB3aGljaCByZXF1aXJlIGEgdXNlcidzIGF0dGVudGlvbiB3aXRob3V0IGludGVycnVwdGluZyBpdHMgdGFza3MuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgY29udGVudCB0byB0aGUgYHNiYi1ub3RpZmljYXRpb25gLiBDb250ZW50IHNob3VsZCBjb25zaXN0IG9mIGFuIG9wdGlvbmFsIGBzYmItdGl0bGVgIGVsZW1lbnQgYW5kIHRleHQgY29udGVudC5cbiAqIEBzbG90IHRpdGxlIC0gU2xvdCBmb3IgdGhlIHRpdGxlLiBGb3IgdGhlIHN0YW5kYXJkIGBzYmItdGl0bGVgIGVsZW1lbnQsIHRoZSBzbG90IGlzIGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgd2hlbiBzbG90dGVkIGluIHRoZSB1bm5hbWVkIHNsb3QuXG4gKiBAc2xvdCBpY29uIC0gVXNlIHRoaXMgc2xvdCB0byBkaXNwbGF5IGEgY3VzdG9tIGljb24gYnkgcHJvdmlkaW5nIGFuIGBzYmItaWNvbmAgY29tcG9uZW50LlxuICogQGNzc3Byb3AgWy0tc2JiLW5vdGlmaWNhdGlvbi1tYXJnaW49MF0gLSBDYW4gYmUgdXNlZCB0byBtb2RpZnkgdGhlIG1hcmdpbiBpbiBvcmRlciB0byBnZXQgYSBzbW9vdGhlciBhbmltYXRpb24uXG4gKiBTZWUgc3R5bGUgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYk5vdGlmaWNhdGlvbkVsZW1lbnQgZXh0ZW5kcyBTYmJJY29uTmFtZU1peGluKFNiYlJlYWRvbmx5TWl4aW4oU2JiRWxlbWVudCkpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBlbGVtZW50TmFtZTogc3RyaW5nID0gJ3NiYi1ub3RpZmljYXRpb24nO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbYm94U2l6aW5nU3R5bGVzLCB1bnNhZmVDU1Moc3R5bGUpXTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgYmVmb3Jlb3BlbjogJ2JlZm9yZW9wZW4nLFxuICAgIG9wZW46ICdvcGVuJyxcbiAgICBiZWZvcmVjbG9zZTogJ2JlZm9yZWNsb3NlJyxcbiAgICBjbG9zZTogJ2Nsb3NlJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKiogVGhlIHR5cGUgb2YgdGhlIG5vdGlmaWNhdGlvbi4gKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgYWNjZXNzb3IgdHlwZTpcbiAgICB8ICdpbmZvJ1xuICAgIHwgJ25vdGUnXG4gICAgfCAnc3VjY2VzcydcbiAgICB8ICd3YXJuJ1xuICAgIHwgJ2Vycm9yJyA9ICdpbmZvJztcblxuICAvKipcbiAgICogU2l6ZSB2YXJpYW50LCBlaXRoZXIgcyBvciBtLlxuICAgKiBAZGVmYXVsdCAnbScgLyAncycgKGxlYW4pXG4gICAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciBzaXplOiAncycgfCAnbScgPSBpc0xlYW4oKSA/ICdzJyA6ICdtJztcblxuICAvKiogVGhlIGVuYWJsZWQgYW5pbWF0aW9ucy4gKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgYWNjZXNzb3IgYW5pbWF0aW9uOiAnb3BlbicgfCAnY2xvc2UnIHwgJ2FsbCcgfCAnbm9uZScgPSAnYWxsJztcblxuICAvKiogVGhlIHN0YXRlIG9mIHRoZSBjb21wb25lbnQuICovXG4gIHByaXZhdGUgc2V0IF9zdGF0ZShzdGF0ZTogU2JiT3BlbmVkQ2xvc2VkU3RhdGUpIHtcbiAgICBpZiAodGhpcy5fc3RhdGVJbnRlcm5hbCkge1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZShgc3RhdGUtJHt0aGlzLl9zdGF0ZUludGVybmFsfWApO1xuICAgIH1cbiAgICB0aGlzLl9zdGF0ZUludGVybmFsID0gc3RhdGU7XG4gICAgaWYgKHRoaXMuX3N0YXRlSW50ZXJuYWwpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQoYHN0YXRlLSR7dGhpcy5fc3RhdGVJbnRlcm5hbH1gKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBnZXQgX3N0YXRlKCk6IFNiYk9wZW5lZENsb3NlZFN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGVJbnRlcm5hbDtcbiAgfVxuICBwcml2YXRlIF9zdGF0ZUludGVybmFsITogU2JiT3BlbmVkQ2xvc2VkU3RhdGU7XG5cbiAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uRWxlbWVudCE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9yZXNpemVPYnNlcnZlclRpbWVvdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uUmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgIGNhbGxiYWNrOiAoKSA9PiB0aGlzLl9vbk5vdGlmaWNhdGlvblJlc2l6ZSgpLFxuICB9KTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9zdGF0ZSA9ICdjbG9zZWQnO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdzaXplJykpIHtcbiAgICAgIHRoaXMuX2NvbmZpZ3VyZVRpdGxlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc3RhdGUgPT09ICdjbG9zZWQnKSB7XG4gICAgICB0aGlzLl9zdGF0ZSA9ICdvcGVuaW5nJztcbiAgICAgIC8qKiBFbWl0cyB3aGVuIHRoZSBvcGVuaW5nIGFuaW1hdGlvbiBzdGFydHMuICovXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdiZWZvcmVvcGVuJykpO1xuXG4gICAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkaXJlY3RseSBzZXQgdGhlIGBvcGVuZWRgIHN0YXRlLlxuICAgICAgaWYgKHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkpIHtcbiAgICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc3RhdGUgPT09ICdvcGVuZWQnICYmIHRoaXMuX2Rpc3BhdGNoQmVmb3JlQ2xvc2VFdmVudCgpKSB7XG4gICAgICB0aGlzLl9zdGF0ZSA9ICdjbG9zaW5nJztcblxuICAgICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgY2xvc2VkYCBzdGF0ZS5cbiAgICAgIGlmICh0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9kaXNwYXRjaEJlZm9yZUNsb3NlRXZlbnQoKTogYm9vbGVhbiB7XG4gICAgLyoqIEVtaXRzIHdoZW4gdGhlIGNsb3NpbmcgYW5pbWF0aW9uIHN0YXJ0cy4gQ2FuIGJlIGNhbmNlbGVkIHRvIHByZXZlbnQgdGhlIGNvbXBvbmVudCBmcm9tIGNsb3NpbmcuICovXG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2JlZm9yZWNsb3NlJywgeyBjYW5jZWxhYmxlOiB0cnVlIH0pKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIHRoaXMuX25vdGlmaWNhdGlvbkVsZW1lbnQgPSB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnLnNiYi1ub3RpZmljYXRpb25fX3dyYXBwZXInLFxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgLy8gV2UgbmVlZCB0byB3YWl0IGZvciB0aGUgY29tcG9uZW50J3MgYHVwZGF0ZUNvbXBsZXRlYCBpbiBvcmRlciB0byBzZXQgdGhlIGNvcnJlY3RcbiAgICAvLyBoZWlnaHQgdG8gdGhlIG5vdGlmaWNhdGlvbiBlbGVtZW50LlxuICAgIHRoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLl9zZXROb3RpZmljYXRpb25IZWlnaHQoKTtcbiAgICAgIHRoaXMuX29wZW4oKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1plcm9BbmltYXRpb25EdXJhdGlvbih0aGlzLCAnLS1zYmItbm90aWZpY2F0aW9uLWFuaW1hdGlvbi1kdXJhdGlvbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0Tm90aWZpY2F0aW9uSGVpZ2h0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fbm90aWZpY2F0aW9uRWxlbWVudD8uc2Nyb2xsSGVpZ2h0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5vdGlmaWNhdGlvbkhlaWdodCA9IGAke3RoaXMuX25vdGlmaWNhdGlvbkVsZW1lbnQuc2Nyb2xsSGVpZ2h0fXB4YDtcbiAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KCctLXNiYi1ub3RpZmljYXRpb24taGVpZ2h0Jywgbm90aWZpY2F0aW9uSGVpZ2h0KTtcbiAgfVxuXG4gIHByaXZhdGUgX29uTm90aWZpY2F0aW9uUmVzaXplKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zdGF0ZSAhPT0gJ29wZW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcmVzaXplT2JzZXJ2ZXJUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5fcmVzaXplT2JzZXJ2ZXJUaW1lb3V0KTtcbiAgICB9XG5cbiAgICAvLyBEaXNhYmxlIHRoZSBhbmltYXRpb24gd2hlbiByZXNpemluZyB0aGUgbm90aWZpY2F0aW9uIHRvIGF2b2lkIHN0cmFuZ2UgaGVpZ2h0IHRyYW5zaXRpb24gZWZmZWN0cy5cbiAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKCdyZXNpemUtZGlzYWJsZS1hbmltYXRpb24nKTtcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlclRpbWVvdXQgPSBzZXRUaW1lb3V0KFxuICAgICAgKCkgPT4gdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZSgncmVzaXplLWRpc2FibGUtYW5pbWF0aW9uJyksXG4gICAgICBERUJPVU5DRV9USU1FLFxuICAgICk7XG5cbiAgICAvLyBUbyBhdm9pZCBSZXNpemVPYnNlcnZlciBsb29wcywgd2Ugc2V0IHRoZSBoZWlnaHQgYSB0aWNrIGxhdGVyLlxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fc2V0Tm90aWZpY2F0aW9uSGVpZ2h0KCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25Ob3RpZmljYXRpb25BbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3N0YXRlID09PSAnb3BlbmluZycgJiYgZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ29wZW4nKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0YXRlID09PSAnY2xvc2luZycgJiYgZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlLWhlaWdodCcpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVPcGVuaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlID0gJ29wZW5lZCc7XG4gICAgdGhpcy5fbm90aWZpY2F0aW9uUmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9ub3RpZmljYXRpb25FbGVtZW50KTtcbiAgICAvKiogRW1pdHMgd2hlbiB0aGUgb3BlbmluZyBhbmltYXRpb24gZW5kcy4gKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdvcGVuJykpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlQ2xvc2luZygpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIC8qKiBFbWl0cyB3aGVuIHRoZSBjbG9zaW5nIGFuaW1hdGlvbiBlbmRzLiAqL1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2Nsb3NlJykpO1xuICAgIHRoaXMuX25vdGlmaWNhdGlvblJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZSh0aGlzLl9ub3RpZmljYXRpb25FbGVtZW50KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVtb3ZlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlU2xvdGNoYW5nZSgpOiB2b2lkIHtcbiAgICBjb25zdCB0aXRsZSA9IEFycmF5LmZyb20odGhpcy5jaGlsZHJlbikuZmluZCgoZWwpID0+IGVsLmxvY2FsTmFtZSA9PT0gJ3NiYi10aXRsZScpO1xuICAgIGlmICh0aXRsZSkge1xuICAgICAgdGl0bGUuc2xvdCA9ICd0aXRsZSc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY29uZmlndXJlVGl0bGUoKTogdm9pZCB7XG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLnF1ZXJ5U2VsZWN0b3I/LjxTYmJUaXRsZUVsZW1lbnQ+KCdzYmItdGl0bGUnKTtcbiAgICBpZiAodGl0bGUpIHtcbiAgICAgIGN1c3RvbUVsZW1lbnRzLnVwZ3JhZGUodGl0bGUpO1xuICAgICAgdGl0bGUudmlzdWFsTGV2ZWwgPSB0aGlzLnNpemUgPT09ICdtJyA/ICc1JyA6ICc2JztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVySWNvbk5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3VwZXIucmVuZGVySWNvbk5hbWUoKSB8fCBub3RpZmljYXRpb25UeXBlcy5nZXQodGhpcy50eXBlKSE7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItbm90aWZpY2F0aW9uX193cmFwcGVyXCIgQGFuaW1hdGlvbmVuZD0ke3RoaXMuX29uTm90aWZpY2F0aW9uQW5pbWF0aW9uRW5kfT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1ub3RpZmljYXRpb25cIj5cbiAgICAgICAgICAke3RoaXMucmVuZGVySWNvblNsb3QoJ3NiYi1ub3RpZmljYXRpb25fX2ljb24nKX1cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1ub3RpZmljYXRpb25fX2NvbnRlbnRcIj5cbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJ0aXRsZVwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fY29uZmlndXJlVGl0bGV9Pjwvc2xvdD5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwic2JiLW5vdGlmaWNhdGlvbl9fdGV4dFwiPlxuICAgICAgICAgICAgICA8c2xvdCBAc2xvdGNoYW5nZT0ke3RoaXMuX2hhbmRsZVNsb3RjaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAkeyF0aGlzLnJlYWRPbmx5XG4gICAgICAgICAgICA/IGh0bWxgXG4gICAgICAgICAgICAgICAgPHNiYi1kaXZpZGVyIGNsYXNzPVwic2JiLW5vdGlmaWNhdGlvbl9fZGl2aWRlclwiIG9yaWVudGF0aW9uPVwidmVydGljYWxcIj48L3NiYi1kaXZpZGVyPlxuICAgICAgICAgICAgICAgIDxzYmItc2Vjb25kYXJ5LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgc2l6ZT0ke3RoaXMuc2l6ZX1cbiAgICAgICAgICAgICAgICAgIGljb24tbmFtZT1cImNyb3NzLXNtYWxsXCJcbiAgICAgICAgICAgICAgICAgIEBjbGljaz0keygpID0+IHRoaXMuY2xvc2UoKX1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9JHtpMThuQ2xvc2VOb3RpZmljYXRpb25bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi1ub3RpZmljYXRpb25fX2Nsb3NlXCJcbiAgICAgICAgICAgICAgICA+PC9zYmItc2Vjb25kYXJ5LWJ1dHRvbj5cbiAgICAgICAgICAgICAgYFxuICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1ub3RpZmljYXRpb24nOiBTYmJOb3RpZmljYXRpb25FbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMkJBLDBCQUEwQixRQUFRO0FBRWxDLElBQU0sb0JBQW9CLElBQUksSUFBSTtDQUNoQyxDQUFDLFFBQVEsMkJBQTJCO0NBQ3BDLENBQUMsUUFBUSwyQkFBMkI7Q0FDcEMsQ0FBQyxXQUFXLG9CQUFvQjtDQUNoQyxDQUFDLFFBQVEsaUNBQWlDO0NBQzFDLENBQUMsU0FBUyxxQkFBQTtDQUNYLENBQUM7QUFFRixJQUFNLGdCQUFnQjs7Ozs7Ozs7OztJQVdULGdDQUFzQjttQkFBUyxpQkFBaUIsaUJBQWlCLFdBQVcsQ0FBQzs7Ozs7Ozs7OztjQUE3RSwrQkFBK0IsWUFBOEM7Ozt1QkFXdkYsU0FBUyxFQUFFLFNBQVMsTUFBTSxDQUFDLENBQUE7dUJBVzNCLFNBQVMsRUFBRSxTQUFTLE1BQU0sQ0FBQyxDQUFBOzRCQUczQixTQUFTLEVBQUUsU0FBUyxNQUFNLENBQUMsQ0FBQTtBQWRDLGdCQUFBLE1BQUEsTUFBQSxrQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLFVBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBSSxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQUosT0FBSTs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLG9CQUFBLHdCQUFBO0FBV3BCLGdCQUFBLE1BQUEsTUFBQSxrQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLFVBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBSSxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQUosT0FBSTs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLG9CQUFBLHdCQUFBO0FBR3BCLGdCQUFBLE1BQUEsTUFBQSx1QkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLGVBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBUyxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVQsWUFBUzs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLHlCQUFBLDZCQUFBOzs7Ozs7Ozs7QUF4QnRCLFFBQUEsY0FBc0I7OztBQUMvQixRQUFBLFNBQXlCLENBQUMsaUJBQWlCLFVBQVUscUJBQU0sQ0FBQzs7O0FBQzVELFFBQUEsU0FBUztJQUM5QixZQUFZO0lBQ1osTUFBTTtJQUNOLGFBQWE7SUFDYixPQUFPO0lBQ0M7O0VBR21COztFQUFBLElBQWdCLE9BQUk7QUFBQSxVQUFBLE1BQUE7O0VBQXBCLElBQWdCLEtBQUksT0FBQTtBQUFBLFNBQUEsd0JBQUE7O0VBV3BCOzs7OztFQUFBLElBQWdCLE9BQUk7QUFBQSxVQUFBLE1BQUE7O0VBQXBCLElBQWdCLEtBQUksT0FBQTtBQUFBLFNBQUEsd0JBQUE7O0VBR3BCOztFQUFBLElBQWdCLFlBQVM7QUFBQSxVQUFBLE1BQUE7O0VBQXpCLElBQWdCLFVBQVMsT0FBQTtBQUFBLFNBQUEsNkJBQUE7OztFQUd0RCxJQUFZLE9BQU8sT0FBMkI7QUFDNUMsT0FBSSxLQUFLLGVBQ1AsTUFBSyxVQUFVLE9BQU8sT0FBTyxTQUFTLEtBQUssaUJBQWlCO0FBRTlELFFBQUssaUJBQWlCO0FBQ3RCLE9BQUksS0FBSyxlQUNQLE1BQUssVUFBVSxPQUFPLElBQUksU0FBUyxLQUFLLGlCQUFpQjs7RUFHN0QsSUFBWSxTQUFNO0FBQ2hCLFVBQU8sS0FBSzs7RUFhZCxjQUFBO0FBQ0UsVUFBTztBQXpDb0MsU0FBQSx3QkFBQSxrQkFBQSxNQUFBLG9CQUsvQixPQUFNO0FBTXlCLFNBQUEseUJBQUEsa0JBQUEsTUFBQSx3QkFBQSxFQUFBLGtCQUFBLE1BQUEsb0JBQWtCLFFBQVEsR0FBRyxNQUFNLElBQUc7QUFHdEMsU0FBQSw4QkFBQSxrQkFBQSxNQUFBLHdCQUFBLEVBQUEsa0JBQUEsTUFBQSx5QkFBK0MsTUFBSztBQWV6RixRQUFBLGlCQUFjLGtCQUFBLE1BQUEsNkJBQUE7QUFHZCxRQUFBLHlCQUErRDtBQUMvRCxRQUFBLFlBQVksSUFBSSxzQkFBc0IsS0FBSztBQUMzQyxRQUFBLDhCQUE4QixJQUFJLGlCQUFpQixNQUFNO0lBQy9ELFFBQVE7SUFDUixhQUFhO0lBQ2IsZ0JBQWdCLEtBQUssdUJBQUE7SUFDdEIsQ0FBQztBQUlBLFFBQUssU0FBUzs7RUFHRyxXQUFXLG1CQUF1QztBQUNuRSxTQUFNLFdBQVcsa0JBQWtCO0FBRW5DLE9BQUksa0JBQWtCLElBQUksT0FBTyxDQUMvQixNQUFLLGlCQUFpQjs7RUFJbEIsUUFBSztBQUNYLE9BQUksS0FBSyxXQUFXLFVBQVU7QUFDNUIsU0FBSyxTQUFTOztBQUVkLFNBQUssY0FBYyxJQUFJLE1BQU0sYUFBYSxDQUFDO0FBSTNDLFFBQUksS0FBSywwQkFBMEIsQ0FDakMsTUFBSyxnQkFBZ0I7OztFQUtwQixRQUFLO0FBQ1YsT0FBSSxLQUFLLFdBQVcsWUFBWSxLQUFLLDJCQUEyQixFQUFFO0FBQ2hFLFNBQUssU0FBUztBQUlkLFFBQUksS0FBSywwQkFBMEIsQ0FDakMsTUFBSyxnQkFBZ0I7OztFQUtuQiw0QkFBeUI7O0FBRS9CLFVBQU8sS0FBSyxjQUFjLElBQUksTUFBTSxlQUFlLEVBQUUsWUFBWSxNQUFNLENBQUMsQ0FBQzs7RUFHeEQsYUFBYSxtQkFBdUM7QUFDckUsU0FBTSxhQUFhLGtCQUFrQjtBQUVyQyxRQUFLLHVCQUF1QixLQUFLLFlBQVksY0FDM0MsNkJBQ2M7QUFHaEIsUUFBSyxlQUFlLFdBQVU7QUFDNUIsU0FBSyx3QkFBd0I7QUFDN0IsU0FBSyxPQUFPO0tBQ1o7O0VBR0ksMkJBQXdCO0FBQzlCLFVBQU8sd0JBQXdCLE1BQU0sd0NBQXdDOztFQUd2RSx5QkFBc0I7QUFDNUIsT0FBSSxDQUFDLEtBQUssc0JBQXNCLGFBQzlCO0dBRUYsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLHFCQUFxQixhQUFZO0FBQ3BFLFFBQUssTUFBTSxZQUFZLDZCQUE2QixtQkFBbUI7O0VBR2pFLHdCQUFxQjtBQUMzQixPQUFJLEtBQUssV0FBVyxTQUNsQjtBQUdGLE9BQUksS0FBSyx1QkFDUCxjQUFhLEtBQUssdUJBQXVCO0FBSTNDLFFBQUssVUFBVSxPQUFPLElBQUksMkJBQTJCO0FBQ3JELFFBQUsseUJBQXlCLGlCQUN0QixLQUFLLFVBQVUsT0FBTyxPQUFPLDJCQUEyQixFQUM5RCxjQUNEO0FBR0Qsb0JBQWlCLEtBQUssd0JBQXdCLENBQUM7O0VBR3pDLDRCQUE0QixPQUFxQjtBQUN2RCxPQUFJLEtBQUssV0FBVyxhQUFhLE1BQU0sa0JBQWtCLE9BQ3ZELE1BQUssZ0JBQWdCO0FBR3ZCLE9BQUksS0FBSyxXQUFXLGFBQWEsTUFBTSxrQkFBa0IsZUFDdkQsTUFBSyxnQkFBZ0I7O0VBSWpCLGlCQUFjO0FBQ3BCLFFBQUssU0FBUztBQUNkLFFBQUssNEJBQTRCLFFBQVEsS0FBSyxxQkFBcUI7O0FBRW5FLFFBQUssY0FBYyxJQUFJLE1BQU0sT0FBTyxDQUFDOztFQUcvQixpQkFBYztBQUNwQixRQUFLLFNBQVM7O0FBRWQsUUFBSyxjQUFjLElBQUksTUFBTSxRQUFRLENBQUM7QUFDdEMsUUFBSyw0QkFBNEIsVUFBVSxLQUFLLHFCQUFxQjtBQUNyRSxvQkFBaUIsS0FBSyxRQUFRLENBQUM7O0VBR3pCLG9CQUFpQjtHQUN2QixNQUFNLFFBQVEsTUFBTSxLQUFLLEtBQUssU0FBUyxDQUFDLE1BQU0sT0FBTyxHQUFHLGNBQWMsWUFBWTtBQUNsRixPQUFJLE1BQ0YsT0FBTSxPQUFPOztFQUlULGtCQUFlO0dBQ3JCLE1BQU0sUUFBUSxLQUFLLGdCQUFpQyxZQUFZO0FBQ2hFLE9BQUksT0FBTztBQUNULG1CQUFlLFFBQVEsTUFBTTtBQUM3QixVQUFNLGNBQWMsS0FBSyxTQUFTLE1BQU0sTUFBTTs7O0VBSS9CLGlCQUFjO0FBQy9CLFVBQU8sTUFBTSxnQkFBZ0IsSUFBSSxrQkFBa0IsSUFBSSxLQUFLLEtBQU07O0VBR2pELFNBQU07QUFDdkIsVUFBTyxJQUFJOzZEQUM4QyxLQUFLLDRCQUEyQjs7WUFFakYsS0FBSyxlQUFlLHlCQUF5QixDQUFBOzs2Q0FFWixLQUFLLGdCQUFlOztrQ0FFL0IsS0FBSyxrQkFBaUI7Ozs7WUFJNUMsQ0FBQyxLQUFLLFdBQ0osSUFBSTs7O3lCQUdPLEtBQUssS0FBQTs7aUNBRUcsS0FBSyxPQUFPLENBQUE7K0JBQ2Qsc0JBQXNCLEtBQUssVUFBVSxTQUFBOzs7a0JBSXRELFFBQUEifQ==
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { SbbOptionBaseElement } from "./option/option/option-base-element.js";
|
|
2
|
-
import { html, nothing, unsafeCSS } from "lit";
|
|
3
|
-
import { boxSizingStyles } from "./core/styles.js";
|
|
4
|
-
import { SbbPropertyWatcherController } from "./core/controllers.js";
|
|
5
|
-
import "./visual-checkbox.js";
|
|
6
|
-
//#region src/elements/option/option/option.scss?inline
|
|
7
|
-
var option_default = ":host {\n display: block;\n background-color: var(--sbb-option-background-color);\n font-size: var(--sbb-option-font-size);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n}\n\n:host(:is(:state(negative),[state--negative])) {\n --sbb-option-color: var(--sbb-color-3-negative);\n --sbb-option-icon-color: var(--sbb-color-5);\n --sbb-option-background-color-hover: var(--sbb-background-color-3-negative);\n --sbb-option-background-color-active: var(--sbb-background-color-4-negative);\n --sbb-option-disabled-border-color: var(--sbb-border-color-5);\n --sbb-option-disabled-background-color: var(--sbb-background-color-3-negative);\n --sbb-focus-outline-color: var(--sbb-focus-outline-color-dark);\n}\n\n@media (any-hover: hover) {\n :host(:hover:not(:is(:state(disabled),[state--disabled]))) {\n --sbb-option-background-color: var(--sbb-option-background-color-hover);\n }\n}\n\n:host(:active:not(:is(:state(disabled),[state--disabled]))) {\n --sbb-option-background-color: var(--sbb-option-background-color-active);\n}\n\n:host(:not(:is(:state(disable-highlight),[state--disable-highlight]))) .sbb-option__label slot {\n display: none;\n}\n\n:host(:is(:state(disabled),[state--disabled])) {\n --sbb-option-cursor: var(--sbb-cursor-default);\n}\n@media (forced-colors: active) {\n :host(:is(:state(disabled),[state--disabled])) {\n --sbb-option-color: GrayText;\n }\n}\n\n:host(:is(:state(variant-select),[state--variant-select])) {\n --sbb-option-column-gap: var(--sbb-spacing-fixed-2x);\n --sbb-option-justify-content: space-between;\n}\n\n:host(:is(:state(variant-select),[state--variant-select]):is(:state(multiple),[state--multiple])) {\n --sbb-option-justify-content: start;\n}\n\n:host(:is(:state(active),[state--active])) {\n --sbb-option-focus-outline-color: var(--sbb-focus-outline-color);\n}\n\n:host(:not(:is(:is(:state(disabled),[state--disabled])))) .sbb-option__label--highlight {\n font-weight: bold;\n}\n@media (forced-colors: active) {\n :host(:not(:is(:is(:state(disabled),[state--disabled])))) .sbb-option__label--highlight {\n color: Highlight;\n }\n}\n\n.sbb-option {\n position: relative;\n display: flex;\n min-height: var(--sbb-option-min-height);\n align-items: center;\n column-gap: var(--sbb-option-column-gap);\n padding-inline: var(--sbb-option-padding-inline);\n justify-content: var(--sbb-option-justify-content);\n color: var(--sbb-option-color);\n cursor: var(--sbb-option-cursor);\n -webkit-tap-highlight-color: transparent;\n -webkit-text-fill-color: var(--sbb-option-color);\n}\n.sbb-option::after {\n content: \"\";\n display: block;\n position: absolute;\n inset: var(--sbb-option-focus-outline-inset);\n pointer-events: none;\n border: var(--sbb-focus-outline-width) solid var(--sbb-option-focus-outline-color);\n border-radius: var(--sbb-option-border-radius);\n}\n:host(:is(:state(disabled),[state--disabled]):not(:is(:state(multiple),[state--multiple]))) .sbb-option {\n position: relative;\n z-index: 0;\n}\n:host(:is(:state(disabled),[state--disabled]):not(:is(:state(multiple),[state--multiple]))) .sbb-option::before {\n content: \"\";\n display: block;\n position: absolute;\n inset: 0.375rem;\n border: var(--sbb-border-width-1x) dashed var(--sbb-option-disabled-border-color);\n border-radius: var(--sbb-border-radius-2x);\n background-color: var(--sbb-option-disabled-background-color);\n z-index: -1;\n}\n@media (forced-colors: active) {\n :host(:is(:state(disabled),[state--disabled]):not(:is(:state(multiple),[state--multiple]))) .sbb-option::before {\n border-color: GrayText;\n }\n}\n\n.sbb-option__icon {\n display: flex;\n min-width: var(--sbb-size-icon-ui-small);\n min-height: var(--sbb-size-icon-ui-small);\n color: var(--sbb-option-icon-color);\n}\n:host(:not(:is(:state(slotted-icon),[state--slotted-icon]), :is(:state(has-icon-name),[state--has-icon-name]))) .sbb-option__icon {\n display: var(--sbb-option-icon-container-display, none);\n}\n\n.sbb-option__label {\n text-overflow: var(--sbb-option-text-overflow);\n overflow: var(--sbb-option-overflow);\n white-space: var(--sbb-option-white-space, initial);\n}";
|
|
8
|
-
//#endregion
|
|
9
|
-
//#region src/elements/option/option/option.component.ts
|
|
10
|
-
/**
|
|
11
|
-
* It displays on option item which can be used in `sbb-select` or `sbb-autocomplete`.
|
|
12
|
-
*
|
|
13
|
-
* @slot - Use the unnamed slot to add content to the option label.
|
|
14
|
-
* @slot icon - Use this slot to provide an icon. If `icon-name` is set, a sbb-icon will be used.
|
|
15
|
-
* @cssprop [--sbb-option-icon-container-display=none] - Can be used to reserve space even
|
|
16
|
-
* when preserve-icon-space on autocomplete is not set or iconName is not set.
|
|
17
|
-
* @overrideType value - (T = string) | null
|
|
18
|
-
*/
|
|
19
|
-
var SbbOptionElement = class extends SbbOptionBaseElement {
|
|
20
|
-
static {
|
|
21
|
-
this.elementName = "sbb-option";
|
|
22
|
-
}
|
|
23
|
-
static {
|
|
24
|
-
this.role = "option";
|
|
25
|
-
}
|
|
26
|
-
static {
|
|
27
|
-
this.styles = [boxSizingStyles, unsafeCSS(option_default)];
|
|
28
|
-
}
|
|
29
|
-
static {
|
|
30
|
-
this.events = {
|
|
31
|
-
optionselectionchange: "optionselectionchange",
|
|
32
|
-
optionselected: "optionselected"
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
set _variant(variant) {
|
|
36
|
-
if (this._variantInternal) this.internals.states.delete(`variant-${this._variantInternal}`);
|
|
37
|
-
this._variantInternal = variant;
|
|
38
|
-
if (this._variantInternal) this.internals.states.add(`variant-${this._variantInternal}`);
|
|
39
|
-
}
|
|
40
|
-
get _variant() {
|
|
41
|
-
return this._variantInternal ?? null;
|
|
42
|
-
}
|
|
43
|
-
constructor() {
|
|
44
|
-
super();
|
|
45
|
-
this.optionId = `sbb-option`;
|
|
46
|
-
this.addController(new SbbPropertyWatcherController(this, () => this.closest("sbb-optgroup"), {
|
|
47
|
-
disabled: (p) => this.disabledFromGroup = p.disabled,
|
|
48
|
-
label: (p) => this.groupLabel = p.label
|
|
49
|
-
}));
|
|
50
|
-
this.addController(new SbbPropertyWatcherController(this, () => this.closest("sbb-autocomplete"), { negative: (e) => this._handleNegativeChange(e) }));
|
|
51
|
-
this.addController(new SbbPropertyWatcherController(this, () => this.closest("sbb-select"), {
|
|
52
|
-
multiple: (ancestor) => {
|
|
53
|
-
this.toggleState("multiple", ancestor.multiple);
|
|
54
|
-
this.requestUpdate();
|
|
55
|
-
},
|
|
56
|
-
negative: (e) => this._handleNegativeChange(e)
|
|
57
|
-
}));
|
|
58
|
-
}
|
|
59
|
-
_isMultiple() {
|
|
60
|
-
return !this.hydrationRequired && this.internals.states.has("multiple");
|
|
61
|
-
}
|
|
62
|
-
_handleNegativeChange(ancestor) {
|
|
63
|
-
this.toggleState("negative", ancestor.negative);
|
|
64
|
-
this.requestUpdate();
|
|
65
|
-
}
|
|
66
|
-
connectedCallback() {
|
|
67
|
-
super.connectedCallback();
|
|
68
|
-
if (this.hydrationRequired) this.hydrationComplete.then(() => this._init());
|
|
69
|
-
else this._init();
|
|
70
|
-
}
|
|
71
|
-
_init() {
|
|
72
|
-
this._setVariantByContext();
|
|
73
|
-
this.handleHighlightState();
|
|
74
|
-
}
|
|
75
|
-
selectByClick(event) {
|
|
76
|
-
if (this.disabled || this.disabledFromGroup) {
|
|
77
|
-
event.stopPropagation();
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
if (this._isMultiple()) {
|
|
81
|
-
event.stopPropagation();
|
|
82
|
-
this.selectViaUserInteraction(!this.selected);
|
|
83
|
-
} else this.selectViaUserInteraction(true);
|
|
84
|
-
}
|
|
85
|
-
selectViaUserInteraction(selected) {
|
|
86
|
-
super.selectViaUserInteraction(selected);
|
|
87
|
-
/** The optionselectionchange event is dispatched when the option selection status changes. */
|
|
88
|
-
this.dispatchEvent(new Event("optionselectionchange", {
|
|
89
|
-
bubbles: true,
|
|
90
|
-
composed: true
|
|
91
|
-
}));
|
|
92
|
-
}
|
|
93
|
-
_setVariantByContext() {
|
|
94
|
-
if (this.closest?.("sbb-autocomplete")) this._variant = "autocomplete";
|
|
95
|
-
else if (this.closest?.("sbb-select")) this._variant = "select";
|
|
96
|
-
}
|
|
97
|
-
handleHighlightState() {
|
|
98
|
-
if (this._variant !== "autocomplete") {
|
|
99
|
-
this.updateDisableHighlight(true);
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
super.handleHighlightState();
|
|
103
|
-
}
|
|
104
|
-
renderIcon() {
|
|
105
|
-
return html`
|
|
106
|
-
<!-- Icon -->
|
|
107
|
-
${!this._isMultiple() ? html` <span class="sbb-option__icon"> ${this.renderIconSlot()} </span>` : nothing}
|
|
108
|
-
|
|
109
|
-
<!-- Checkbox -->
|
|
110
|
-
${this._isMultiple() ? html`
|
|
111
|
-
<sbb-visual-checkbox
|
|
112
|
-
?checked=${this.selected}
|
|
113
|
-
?disabled=${this.disabled || this.disabledFromGroup}
|
|
114
|
-
?negative=${this.matches?.(":is(:state(negative),[state--negative])")}
|
|
115
|
-
></sbb-visual-checkbox>
|
|
116
|
-
` : nothing}
|
|
117
|
-
`;
|
|
118
|
-
}
|
|
119
|
-
renderLabel() {
|
|
120
|
-
if (this._variant !== "autocomplete") return nothing;
|
|
121
|
-
return super.renderLabel();
|
|
122
|
-
}
|
|
123
|
-
renderTick() {
|
|
124
|
-
return this._variant === "select" && !this._isMultiple() && this.selected ? html`<sbb-icon name="tick-small"></sbb-icon>` : nothing;
|
|
125
|
-
}
|
|
126
|
-
};
|
|
127
|
-
//#endregion
|
|
128
|
-
export { SbbOptionElement as t };
|
|
129
|
-
|
|
130
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLmNvbXBvbmVudC1DZEw3ZmR6Wi5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvb3B0aW9uL29wdGlvbi9vcHRpb24uc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvb3B0aW9uL29wdGlvbi9vcHRpb24uY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1vcHRpb24tYmFja2dyb3VuZC1jb2xvcik7XG4gIGZvbnQtc2l6ZTogdmFyKC0tc2JiLW9wdGlvbi1mb250LXNpemUpO1xuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc2JiLXR5cG8tbGV0dGVyLXNwYWNpbmctdGV4dCk7XG59XG5cbjpob3N0KDpzdGF0ZShuZWdhdGl2ZSkpIHtcbiAgLS1zYmItb3B0aW9uLWNvbG9yOiB2YXIoLS1zYmItY29sb3ItMy1uZWdhdGl2ZSk7XG4gIC0tc2JiLW9wdGlvbi1pY29uLWNvbG9yOiB2YXIoLS1zYmItY29sb3ItNSk7XG4gIC0tc2JiLW9wdGlvbi1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0zLW5lZ2F0aXZlKTtcbiAgLS1zYmItb3B0aW9uLWJhY2tncm91bmQtY29sb3ItYWN0aXZlOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci00LW5lZ2F0aXZlKTtcbiAgLS1zYmItb3B0aW9uLWRpc2FibGVkLWJvcmRlci1jb2xvcjogdmFyKC0tc2JiLWJvcmRlci1jb2xvci01KTtcbiAgLS1zYmItb3B0aW9uLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTMtbmVnYXRpdmUpO1xuICAtLXNiYi1mb2N1cy1vdXRsaW5lLWNvbG9yOiB2YXIoLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvci1kYXJrKTtcbn1cblxuOmhvc3QoOmhvdmVyOm5vdCg6c3RhdGUoZGlzYWJsZWQpKSkge1xuICBAaW5jbHVkZSBzYmIuaG92ZXItbXEoJGhvdmVyOiB0cnVlKSB7XG4gICAgLS1zYmItb3B0aW9uLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1vcHRpb24tYmFja2dyb3VuZC1jb2xvci1ob3Zlcik7XG4gIH1cbn1cblxuOmhvc3QoOmFjdGl2ZTpub3QoOnN0YXRlKGRpc2FibGVkKSkpIHtcbiAgLS1zYmItb3B0aW9uLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1vcHRpb24tYmFja2dyb3VuZC1jb2xvci1hY3RpdmUpO1xufVxuXG4vLyBJZiBoaWdobGlnaHRpbmcgaXMgZW5hYmxlZCwgaGlkZSB0aGUgb3JpZ2luYWwgc2xvdCBjb250ZW50XG46aG9zdCg6bm90KDpzdGF0ZShkaXNhYmxlLWhpZ2hsaWdodCkpKSB7XG4gIC5zYmItb3B0aW9uX19sYWJlbCBzbG90IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbjpob3N0KDpzdGF0ZShkaXNhYmxlZCkpIHtcbiAgLS1zYmItb3B0aW9uLWN1cnNvcjogdmFyKC0tc2JiLWN1cnNvci1kZWZhdWx0KTtcblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgLS1zYmItb3B0aW9uLWNvbG9yOiBHcmF5VGV4dDtcbiAgfVxufVxuXG46aG9zdCg6c3RhdGUodmFyaWFudC1zZWxlY3QpKSB7XG4gIC0tc2JiLW9wdGlvbi1jb2x1bW4tZ2FwOiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0yeCk7XG4gIC0tc2JiLW9wdGlvbi1qdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbjpob3N0KDpzdGF0ZSh2YXJpYW50LXNlbGVjdCk6c3RhdGUobXVsdGlwbGUpKSB7XG4gIC0tc2JiLW9wdGlvbi1qdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0O1xufVxuXG46aG9zdCg6c3RhdGUoYWN0aXZlKSkge1xuICAtLXNiYi1vcHRpb24tZm9jdXMtb3V0bGluZS1jb2xvcjogdmFyKC0tc2JiLWZvY3VzLW91dGxpbmUtY29sb3IpO1xufVxuXG4uc2JiLW9wdGlvbl9fbGFiZWwtLWhpZ2hsaWdodCB7XG4gIDpob3N0KDpub3QoOmlzKDpzdGF0ZShkaXNhYmxlZCkpKSkgJiB7XG4gICAgQGluY2x1ZGUgc2JiLnRleHQtLWJvbGQ7XG4gICAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgICAgY29sb3I6IEhpZ2hsaWdodDtcbiAgICB9XG4gIH1cbn1cblxuLnNiYi1vcHRpb24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1pbi1oZWlnaHQ6IHZhcigtLXNiYi1vcHRpb24tbWluLWhlaWdodCk7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGNvbHVtbi1nYXA6IHZhcigtLXNiYi1vcHRpb24tY29sdW1uLWdhcCk7XG4gIHBhZGRpbmctaW5saW5lOiB2YXIoLS1zYmItb3B0aW9uLXBhZGRpbmctaW5saW5lKTtcbiAganVzdGlmeS1jb250ZW50OiB2YXIoLS1zYmItb3B0aW9uLWp1c3RpZnktY29udGVudCk7XG4gIGNvbG9yOiB2YXIoLS1zYmItb3B0aW9uLWNvbG9yKTtcbiAgY3Vyc29yOiB2YXIoLS1zYmItb3B0aW9uLWN1cnNvcik7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB2YXIoLS1zYmItb3B0aW9uLWNvbG9yKTtcblxuICAvLyBXZSB1c2UgdGhlIHBzZXVkbyBlbGVtZW50IHRvIGRpc3BsYXkgdGhlIGZvY3VzIG91dGxpbmUgKGlubGluZSBpbiB0aGlzIGNhc2UpXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaW5zZXQ6IHZhcigtLXNiYi1vcHRpb24tZm9jdXMtb3V0bGluZS1pbnNldCk7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgYm9yZGVyOiB2YXIoLS1zYmItZm9jdXMtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tc2JiLW9wdGlvbi1mb2N1cy1vdXRsaW5lLWNvbG9yKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zYmItb3B0aW9uLWJvcmRlci1yYWRpdXMpO1xuICB9XG5cbiAgLy8gQWRkIGlubmVyIGJvcmRlciBhbmQgYmFja2dyb3VuZCBmb3IgZGlzYWJsZWQgb3B0aW9uIHdoZW4gaXQncyBub3QgbXVsdGlwbGVcbiAgOmhvc3QoOnN0YXRlKGRpc2FibGVkKTpub3QoOnN0YXRlKG11bHRpcGxlKSkpICYge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAwO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBpbnNldDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDYpfTtcbiAgICAgIGJvcmRlcjogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0xeCkgZGFzaGVkIHZhcigtLXNiYi1vcHRpb24tZGlzYWJsZWQtYm9yZGVyLWNvbG9yKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi1ib3JkZXItcmFkaXVzLTJ4KTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1vcHRpb24tZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcik7XG4gICAgICB6LWluZGV4OiAtMTtcblxuICAgICAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgICAgICBib3JkZXItY29sb3I6IEdyYXlUZXh0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4uc2JiLW9wdGlvbl9faWNvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1pbi13aWR0aDogdmFyKC0tc2JiLXNpemUtaWNvbi11aS1zbWFsbCk7XG4gIG1pbi1oZWlnaHQ6IHZhcigtLXNiYi1zaXplLWljb24tdWktc21hbGwpO1xuICBjb2xvcjogdmFyKC0tc2JiLW9wdGlvbi1pY29uLWNvbG9yKTtcblxuICA6aG9zdCg6bm90KDpzdGF0ZShzbG90dGVkLWljb24pLCA6c3RhdGUoaGFzLWljb24tbmFtZSkpKSAmIHtcbiAgICAvLyBDYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgJ3ByZXNlcnZlLWljb24tc3BhY2UnIG9uIHRoZSBhdXRvY29tcGxldGVcbiAgICBkaXNwbGF5OiB2YXIoLS1zYmItb3B0aW9uLWljb24tY29udGFpbmVyLWRpc3BsYXksIG5vbmUpO1xuICB9XG59XG5cbi5zYmItb3B0aW9uX19sYWJlbCB7XG4gIHRleHQtb3ZlcmZsb3c6IHZhcigtLXNiYi1vcHRpb24tdGV4dC1vdmVyZmxvdyk7XG4gIG92ZXJmbG93OiB2YXIoLS1zYmItb3B0aW9uLW92ZXJmbG93KTtcbiAgd2hpdGUtc3BhY2U6IHZhcigtLXNiYi1vcHRpb24td2hpdGUtc3BhY2UsIGluaXRpYWwpO1xufVxuIiwiaW1wb3J0IHsgaHRtbCwgbm90aGluZywgdW5zYWZlQ1NTLCB0eXBlIENTU1Jlc3VsdEdyb3VwLCB0eXBlIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcblxuaW1wb3J0IHR5cGUgeyBTYmJBdXRvY29tcGxldGVFbGVtZW50IH0gZnJvbSAnLi4vLi4vYXV0b2NvbXBsZXRlLnRzJztcbmltcG9ydCB7IFNiYlByb3BlcnR5V2F0Y2hlckNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jb3JlL2NvbnRyb2xsZXJzLnRzJztcbmltcG9ydCB7IGJveFNpemluZ1N0eWxlcyB9IGZyb20gJy4uLy4uL2NvcmUvc3R5bGVzLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiU2VsZWN0RWxlbWVudCB9IGZyb20gJy4uLy4uL3NlbGVjdC50cyc7XG5cbmltcG9ydCB7IFNiYk9wdGlvbkJhc2VFbGVtZW50IH0gZnJvbSAnLi9vcHRpb24tYmFzZS1lbGVtZW50LnRzJztcbmltcG9ydCBzdHlsZSBmcm9tICcuL29wdGlvbi5zY3NzP2lubGluZSc7XG5cbmltcG9ydCAnLi4vLi4vdmlzdWFsLWNoZWNrYm94LnRzJztcblxuZXhwb3J0IHR5cGUgU2JiT3B0aW9uVmFyaWFudCA9ICdhdXRvY29tcGxldGUnIHwgJ3NlbGVjdCcgfCBudWxsO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIG9uIG9wdGlvbiBpdGVtIHdoaWNoIGNhbiBiZSB1c2VkIGluIGBzYmItc2VsZWN0YCBvciBgc2JiLWF1dG9jb21wbGV0ZWAuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgY29udGVudCB0byB0aGUgb3B0aW9uIGxhYmVsLlxuICogQHNsb3QgaWNvbiAtIFVzZSB0aGlzIHNsb3QgdG8gcHJvdmlkZSBhbiBpY29uLiBJZiBgaWNvbi1uYW1lYCBpcyBzZXQsIGEgc2JiLWljb24gd2lsbCBiZSB1c2VkLlxuICogQGNzc3Byb3AgWy0tc2JiLW9wdGlvbi1pY29uLWNvbnRhaW5lci1kaXNwbGF5PW5vbmVdIC0gQ2FuIGJlIHVzZWQgdG8gcmVzZXJ2ZSBzcGFjZSBldmVuXG4gKiB3aGVuIHByZXNlcnZlLWljb24tc3BhY2Ugb24gYXV0b2NvbXBsZXRlIGlzIG5vdCBzZXQgb3IgaWNvbk5hbWUgaXMgbm90IHNldC5cbiAqIEBvdmVycmlkZVR5cGUgdmFsdWUgLSAoVCA9IHN0cmluZykgfCBudWxsXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJPcHRpb25FbGVtZW50PFQgPSBzdHJpbmc+IGV4dGVuZHMgU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4ge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLW9wdGlvbic7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgcm9sZSA9ICdvcHRpb24nO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbYm94U2l6aW5nU3R5bGVzLCB1bnNhZmVDU1Moc3R5bGUpXTtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBldmVudHMgPSB7XG4gICAgb3B0aW9uc2VsZWN0aW9uY2hhbmdlOiAnb3B0aW9uc2VsZWN0aW9uY2hhbmdlJyxcbiAgICBvcHRpb25zZWxlY3RlZDogJ29wdGlvbnNlbGVjdGVkJyxcbiAgfSBhcyBjb25zdDtcblxuICBwcm90ZWN0ZWQgb3B0aW9uSWQgPSBgc2JiLW9wdGlvbmA7XG5cbiAgcHJpdmF0ZSBzZXQgX3ZhcmlhbnQodmFyaWFudDogU2JiT3B0aW9uVmFyaWFudCkge1xuICAgIGlmICh0aGlzLl92YXJpYW50SW50ZXJuYWwpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUoYHZhcmlhbnQtJHt0aGlzLl92YXJpYW50SW50ZXJuYWx9YCk7XG4gICAgfVxuICAgIHRoaXMuX3ZhcmlhbnRJbnRlcm5hbCA9IHZhcmlhbnQ7XG4gICAgaWYgKHRoaXMuX3ZhcmlhbnRJbnRlcm5hbCkge1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmFkZChgdmFyaWFudC0ke3RoaXMuX3ZhcmlhbnRJbnRlcm5hbH1gKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBnZXQgX3ZhcmlhbnQoKTogU2JiT3B0aW9uVmFyaWFudCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhcmlhbnRJbnRlcm5hbCA/PyBudWxsO1xuICB9XG4gIHByaXZhdGUgX3ZhcmlhbnRJbnRlcm5hbD86IFNiYk9wdGlvblZhcmlhbnQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRDb250cm9sbGVyKFxuICAgICAgbmV3IFNiYlByb3BlcnR5V2F0Y2hlckNvbnRyb2xsZXIodGhpcywgKCkgPT4gdGhpcy5jbG9zZXN0KCdzYmItb3B0Z3JvdXAnKSwge1xuICAgICAgICBkaXNhYmxlZDogKHApID0+ICh0aGlzLmRpc2FibGVkRnJvbUdyb3VwID0gcC5kaXNhYmxlZCksXG4gICAgICAgIGxhYmVsOiAocCkgPT4gKHRoaXMuZ3JvdXBMYWJlbCA9IHAubGFiZWwpLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIHRoaXMuYWRkQ29udHJvbGxlcihcbiAgICAgIG5ldyBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyKHRoaXMsICgpID0+IHRoaXMuY2xvc2VzdCgnc2JiLWF1dG9jb21wbGV0ZScpLCB7XG4gICAgICAgIG5lZ2F0aXZlOiAoZSkgPT4gdGhpcy5faGFuZGxlTmVnYXRpdmVDaGFuZ2UoZSksXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgdGhpcy5hZGRDb250cm9sbGVyKFxuICAgICAgbmV3IFNiYlByb3BlcnR5V2F0Y2hlckNvbnRyb2xsZXIodGhpcywgKCkgPT4gdGhpcy5jbG9zZXN0KCdzYmItc2VsZWN0JyksIHtcbiAgICAgICAgbXVsdGlwbGU6IChhbmNlc3RvcikgPT4ge1xuICAgICAgICAgIHRoaXMudG9nZ2xlU3RhdGUoJ211bHRpcGxlJywgYW5jZXN0b3IubXVsdGlwbGUpO1xuXG4gICAgICAgICAgLy8gTXVsdGlwbGUgaGFzIHRvIGJlIHByb3BhZ2F0ZWQgdG8gc2JiLXZpc3VhbC1jaGVja2JveCBpbnNpZGUgdGhlIG9wdGlvbi5cbiAgICAgICAgICB0aGlzLnJlcXVlc3RVcGRhdGUoKTtcbiAgICAgICAgfSxcbiAgICAgICAgbmVnYXRpdmU6IChlKSA9PiB0aGlzLl9oYW5kbGVOZWdhdGl2ZUNoYW5nZShlKSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9pc011bHRpcGxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5oeWRyYXRpb25SZXF1aXJlZCAmJiB0aGlzLmludGVybmFscy5zdGF0ZXMuaGFzKCdtdWx0aXBsZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlTmVnYXRpdmVDaGFuZ2UoYW5jZXN0b3I6IFNiYkF1dG9jb21wbGV0ZUVsZW1lbnQgfCBTYmJTZWxlY3RFbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgnbmVnYXRpdmUnLCBhbmNlc3Rvci5uZWdhdGl2ZSk7XG5cbiAgICAvLyBOZWdhdGl2ZSBoYXMgdG8gYmUgcHJvcGFnYXRlZCB0byBzYmItdmlzdWFsLWNoZWNrYm94IGluc2lkZSB0aGUgb3B0aW9uLlxuICAgIHRoaXMucmVxdWVzdFVwZGF0ZSgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGhpZ2hsaWdodCBzdGF0ZSBib3RoIG9uIHNsb3QgY2hhbmdlLCBidXQgYWxzbyB3aGVuIGNvbm5lY3RpbmdcbiAgICAvLyB0aGUgZWxlbWVudCB0byB0aGUgRE9NLiBUaGUgc2xvdCBjaGFuZ2UgZXZlbnRzIG1pZ2h0IGJlIHN3YWxsb3dlZCB3aGVuIHVzaW5nIGRlY2xhcmF0aXZlXG4gICAgLy8gc2hhZG93IERPTSB3aXRoIFNTUiBvciBpZiB0aGUgRE9NIGlzIGNoYW5nZWQgd2hlbiBkaXNjb25uZWN0ZWQuXG4gICAgaWYgKHRoaXMuaHlkcmF0aW9uUmVxdWlyZWQpIHtcbiAgICAgIHRoaXMuaHlkcmF0aW9uQ29tcGxldGUudGhlbigoKSA9PiB0aGlzLl9pbml0KCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9pbml0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zZXRWYXJpYW50QnlDb250ZXh0KCk7XG4gICAgdGhpcy5oYW5kbGVIaWdobGlnaHRTdGF0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdEJ5Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkRnJvbUdyb3VwKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faXNNdWx0aXBsZSgpKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHRoaXMuc2VsZWN0VmlhVXNlckludGVyYWN0aW9uKCF0aGlzLnNlbGVjdGVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RWaWFVc2VySW50ZXJhY3Rpb24odHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHNlbGVjdFZpYVVzZXJJbnRlcmFjdGlvbihzZWxlY3RlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHN1cGVyLnNlbGVjdFZpYVVzZXJJbnRlcmFjdGlvbihzZWxlY3RlZCk7XG4gICAgLyoqIFRoZSBvcHRpb25zZWxlY3Rpb25jaGFuZ2UgZXZlbnQgaXMgZGlzcGF0Y2hlZCB3aGVuIHRoZSBvcHRpb24gc2VsZWN0aW9uIHN0YXR1cyBjaGFuZ2VzLiAqL1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ29wdGlvbnNlbGVjdGlvbmNoYW5nZScsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0VmFyaWFudEJ5Q29udGV4dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbG9zZXN0Py4oJ3NiYi1hdXRvY29tcGxldGUnKSkge1xuICAgICAgdGhpcy5fdmFyaWFudCA9ICdhdXRvY29tcGxldGUnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jbG9zZXN0Py4oJ3NiYi1zZWxlY3QnKSkge1xuICAgICAgdGhpcy5fdmFyaWFudCA9ICdzZWxlY3QnO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBoYW5kbGVIaWdobGlnaHRTdGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdmFyaWFudCAhPT0gJ2F1dG9jb21wbGV0ZScpIHtcbiAgICAgIHRoaXMudXBkYXRlRGlzYWJsZUhpZ2hsaWdodCh0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdXBlci5oYW5kbGVIaWdobGlnaHRTdGF0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlckljb24oKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPCEtLSBJY29uIC0tPlxuICAgICAgJHshdGhpcy5faXNNdWx0aXBsZSgpXG4gICAgICAgID8gaHRtbGAgPHNwYW4gY2xhc3M9XCJzYmItb3B0aW9uX19pY29uXCI+ICR7dGhpcy5yZW5kZXJJY29uU2xvdCgpfSA8L3NwYW4+YFxuICAgICAgICA6IG5vdGhpbmd9XG5cbiAgICAgIDwhLS0gQ2hlY2tib3ggLS0+XG4gICAgICAke3RoaXMuX2lzTXVsdGlwbGUoKVxuICAgICAgICA/IGh0bWxgXG4gICAgICAgICAgICA8c2JiLXZpc3VhbC1jaGVja2JveFxuICAgICAgICAgICAgICA/Y2hlY2tlZD0ke3RoaXMuc2VsZWN0ZWR9XG4gICAgICAgICAgICAgID9kaXNhYmxlZD0ke3RoaXMuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZEZyb21Hcm91cH1cbiAgICAgICAgICAgICAgP25lZ2F0aXZlPSR7dGhpcy5tYXRjaGVzPy4oJzpzdGF0ZShuZWdhdGl2ZSknKX1cbiAgICAgICAgICAgID48L3NiYi12aXN1YWwtY2hlY2tib3g+XG4gICAgICAgICAgYFxuICAgICAgICA6IG5vdGhpbmd9XG4gICAgYDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXJMYWJlbCgpOiBUZW1wbGF0ZVJlc3VsdCB8IHR5cGVvZiBub3RoaW5nIHtcbiAgICBpZiAodGhpcy5fdmFyaWFudCAhPT0gJ2F1dG9jb21wbGV0ZScpIHtcbiAgICAgIHJldHVybiBub3RoaW5nO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIucmVuZGVyTGFiZWwoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXJUaWNrKCk6IFRlbXBsYXRlUmVzdWx0IHwgdHlwZW9mIG5vdGhpbmcge1xuICAgIHJldHVybiB0aGlzLl92YXJpYW50ID09PSAnc2VsZWN0JyAmJiAhdGhpcy5faXNNdWx0aXBsZSgpICYmIHRoaXMuc2VsZWN0ZWRcbiAgICAgID8gaHRtbGA8c2JiLWljb24gbmFtZT1cInRpY2stc21hbGxcIj48L3NiYi1pY29uPmBcbiAgICAgIDogbm90aGluZztcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLW9wdGlvbic6IFNiYk9wdGlvbkVsZW1lbnQ7XG4gIH1cblxuICBpbnRlcmZhY2UgR2xvYmFsRXZlbnRIYW5kbGVyc0V2ZW50TWFwIHtcbiAgICBvcHRpb25zZWxlY3Rpb25jaGFuZ2U6IEV2ZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3VCQSxJQUFhLG1CQUFiLGNBQWtELHFCQUF1Qjs7QUFDdkMsT0FBQSxjQUFzQjs7O0FBQ3RCLE9BQUEsT0FBTzs7O0FBQ2hCLE9BQUEsU0FBeUIsQ0FBQyxpQkFBaUIsVUFBVSxlQUFNLENBQUM7OztBQUNuRCxPQUFBLFNBQVM7R0FDdkMsdUJBQXVCO0dBQ3ZCLGdCQUFnQjtHQUNSOztDQUlWLElBQVksU0FBUyxTQUF5QjtBQUM1QyxNQUFJLEtBQUssaUJBQ1AsTUFBSyxVQUFVLE9BQU8sT0FBTyxXQUFXLEtBQUssbUJBQW1CO0FBRWxFLE9BQUssbUJBQW1CO0FBQ3hCLE1BQUksS0FBSyxpQkFDUCxNQUFLLFVBQVUsT0FBTyxJQUFJLFdBQVcsS0FBSyxtQkFBbUI7O0NBR2pFLElBQVksV0FBUTtBQUNsQixTQUFPLEtBQUssb0JBQW9COztDQUlsQyxjQUFBO0FBQ0UsU0FBTztBQWpCQyxPQUFBLFdBQVc7QUFrQm5CLE9BQUssY0FDSCxJQUFJLDZCQUE2QixZQUFZLEtBQUssUUFBUSxlQUFlLEVBQUU7R0FDekUsV0FBVyxNQUFPLEtBQUssb0JBQW9CLEVBQUU7R0FDN0MsUUFBUSxNQUFPLEtBQUssYUFBYSxFQUFFO0dBQ3BDLENBQUMsQ0FDSDtBQUVELE9BQUssY0FDSCxJQUFJLDZCQUE2QixZQUFZLEtBQUssUUFBUSxtQkFBbUIsRUFBRSxFQUM3RSxXQUFXLE1BQU0sS0FBSyxzQkFBc0IsRUFBRSxFQUMvQyxDQUFDLENBQ0g7QUFFRCxPQUFLLGNBQ0gsSUFBSSw2QkFBNkIsWUFBWSxLQUFLLFFBQVEsYUFBYSxFQUFFO0dBQ3ZFLFdBQVcsYUFBWTtBQUNyQixTQUFLLFlBQVksWUFBWSxTQUFTLFNBQVM7QUFHL0MsU0FBSyxlQUFlOztHQUV0QixXQUFXLE1BQU0sS0FBSyxzQkFBc0IsRUFBQTtHQUM3QyxDQUFDLENBQ0g7O0NBR0ssY0FBVztBQUNqQixTQUFPLENBQUMsS0FBSyxxQkFBcUIsS0FBSyxVQUFVLE9BQU8sSUFBSSxXQUFXOztDQUdqRSxzQkFBc0IsVUFBbUQ7QUFDL0UsT0FBSyxZQUFZLFlBQVksU0FBUyxTQUFTO0FBRy9DLE9BQUssZUFBZTs7Q0FHTixvQkFBaUI7QUFDL0IsUUFBTSxtQkFBbUI7QUFLekIsTUFBSSxLQUFLLGtCQUNQLE1BQUssa0JBQWtCLFdBQVcsS0FBSyxPQUFPLENBQUM7TUFFL0MsTUFBSyxPQUFPOztDQUlSLFFBQUs7QUFDWCxPQUFLLHNCQUFzQjtBQUMzQixPQUFLLHNCQUFzQjs7Q0FHbkIsY0FBYyxPQUFpQjtBQUN2QyxNQUFJLEtBQUssWUFBWSxLQUFLLG1CQUFtQjtBQUMzQyxTQUFNLGlCQUFpQjtBQUN2Qjs7QUFHRixNQUFJLEtBQUssYUFBYSxFQUFFO0FBQ3RCLFNBQU0saUJBQWlCO0FBQ3ZCLFFBQUsseUJBQXlCLENBQUMsS0FBSyxTQUFTO1FBRTdDLE1BQUsseUJBQXlCLEtBQUs7O0NBSXBCLHlCQUF5QixVQUFpQjtBQUMzRCxRQUFNLHlCQUF5QixTQUFTOztBQUV4QyxPQUFLLGNBQWMsSUFBSSxNQUFNLHlCQUF5QjtHQUFFLFNBQVM7R0FBTSxVQUFVO0dBQU0sQ0FBQyxDQUFDOztDQUduRix1QkFBb0I7QUFDMUIsTUFBSSxLQUFLLFVBQVUsbUJBQW1CLENBQ3BDLE1BQUssV0FBVztXQUNQLEtBQUssVUFBVSxhQUFhLENBQ3JDLE1BQUssV0FBVzs7Q0FJRCx1QkFBb0I7QUFDckMsTUFBSSxLQUFLLGFBQWEsZ0JBQWdCO0FBQ3BDLFFBQUssdUJBQXVCLEtBQUs7QUFDakM7O0FBR0YsUUFBTSxzQkFBc0I7O0NBR1gsYUFBVTtBQUMzQixTQUFPLElBQUk7O1FBRVAsQ0FBQyxLQUFLLGFBQWEsR0FDakIsSUFBSSxvQ0FBb0MsS0FBSyxnQkFBZ0IsQ0FBQSxZQUM3RCxRQUFBOzs7UUFHRixLQUFLLGFBQWEsR0FDaEIsSUFBSTs7eUJBRVcsS0FBSyxTQUFBOzBCQUNKLEtBQUssWUFBWSxLQUFLLGtCQUFBOzBCQUN0QixLQUFLLFVBQVUsMENBQW1CLENBQUE7O2NBR2xELFFBQUE7OztDQUlXLGNBQVc7QUFDNUIsTUFBSSxLQUFLLGFBQWEsZUFDcEIsUUFBTztBQUVULFNBQU8sTUFBTSxhQUFhOztDQUdULGFBQVU7QUFDM0IsU0FBTyxLQUFLLGFBQWEsWUFBWSxDQUFDLEtBQUssYUFBYSxJQUFJLEtBQUssV0FDN0QsSUFBSSw0Q0FDSiJ9
|