@sbb-esta/lyne-elements 2.0.3 → 2.2.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/accordion/accordion.d.ts.map +1 -1
- package/accordion.js +6 -6
- package/action-group.js +3 -3
- package/alert/alert.js +8 -8
- package/autocomplete/autocomplete-base-element.d.ts +4 -0
- package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
- package/autocomplete-grid/autocomplete-grid-button.js +4 -4
- package/autocomplete-grid/autocomplete-grid-cell.js +3 -3
- package/autocomplete-grid/autocomplete-grid-optgroup.js +4 -4
- package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts +1 -1
- package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts.map +1 -1
- package/autocomplete-grid/autocomplete-grid-option.js +10 -10
- package/autocomplete-grid/autocomplete-grid-row.js +5 -5
- package/autocomplete.js +99 -90
- package/breadcrumb/breadcrumb-group.js +5 -5
- package/button/accent-button-link.js +9 -9
- package/button/accent-button-static.js +6 -6
- package/button/accent-button.js +6 -6
- package/button/button-link.js +7 -7
- package/button/button-static.js +7 -7
- package/button/button.js +8 -8
- package/button/common.js +15 -15
- package/button/mini-button-group.js +8 -8
- package/button/secondary-button-link.js +7 -7
- package/button/secondary-button-static.js +7 -7
- package/button/secondary-button.js +3 -3
- package/button/transparent-button-link.js +6 -6
- package/button/transparent-button-static.js +5 -5
- package/button/transparent-button.js +6 -6
- package/card/card-badge.js +11 -11
- package/card/card-button.js +5 -5
- package/card/card-link.js +7 -7
- package/card/card.js +3 -3
- package/checkbox/checkbox-panel.js +16 -16
- package/checkbox/checkbox.js +15 -15
- package/checkbox/common.js +3 -3
- package/chip-label.js +3 -3
- package/clock.js +10 -10
- package/container/container/container.d.ts +1 -1
- package/container/container/container.d.ts.map +1 -1
- package/container/container.js +23 -23
- package/container/sticky-bar/sticky-bar.d.ts +1 -1
- package/container/sticky-bar/sticky-bar.d.ts.map +1 -1
- package/container/sticky-bar.js +4 -4
- package/core/a11y/focus.d.ts.map +1 -1
- package/core/a11y.js +8 -8
- package/core/base-elements/link-base-element.d.ts +2 -0
- package/core/base-elements/link-base-element.d.ts.map +1 -1
- package/core/base-elements.js +125 -114
- package/core/controllers.js +4 -4
- package/core/datetime/date-adapter.d.ts +1 -1
- package/core/datetime/date-adapter.d.ts.map +1 -1
- package/core/datetime/native-date-adapter.d.ts +1 -1
- package/core/datetime/native-date-adapter.d.ts.map +1 -1
- package/core/datetime.js +6 -6
- package/core/dom/scroll.d.ts +1 -0
- package/core/dom/scroll.d.ts.map +1 -1
- package/core/dom.js +35 -35
- package/core/eventing.js +4 -4
- package/core/images.d.ts.map +1 -1
- package/core/mixins.js +18 -18
- package/core/styles/core.scss +23 -2
- package/core/testing.js +14 -14
- package/core.css +20 -2
- package/custom-elements.json +828 -431
- package/datepicker/common/datepicker-association-controllers.d.ts +21 -0
- package/datepicker/common/datepicker-association-controllers.d.ts.map +1 -0
- package/datepicker/common/datepicker-button.d.ts +17 -9
- package/datepicker/common/datepicker-button.d.ts.map +1 -1
- package/datepicker/common.d.ts +1 -0
- package/datepicker/common.d.ts.map +1 -1
- package/datepicker/common.js +130 -92
- package/datepicker/datepicker/datepicker.d.ts +19 -4
- package/datepicker/datepicker/datepicker.d.ts.map +1 -1
- package/datepicker/datepicker-toggle/datepicker-toggle.d.ts +14 -8
- package/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
- package/datepicker/datepicker-toggle.js +106 -113
- package/datepicker/datepicker.js +95 -80
- package/development/accordion/accordion.d.ts.map +1 -1
- package/development/accordion.js +1 -1
- package/development/action-group.js +1 -1
- package/development/autocomplete/autocomplete-base-element.d.ts +4 -0
- package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
- package/development/autocomplete-grid/autocomplete-grid-cell.js +1 -1
- package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts +1 -1
- package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts.map +1 -1
- package/development/autocomplete-grid/autocomplete-grid-option.js +3 -3
- package/development/autocomplete-grid/autocomplete-grid-row.js +1 -1
- package/development/autocomplete.js +37 -8
- package/development/breadcrumb/breadcrumb-group.js +3 -3
- package/development/button/common.js +69 -70
- package/development/calendar.js +1 -1
- package/development/card/card-badge.js +1 -1
- package/development/card/card.js +1 -1
- package/development/chip-label.js +1 -1
- package/development/clock.js +1 -1
- package/development/container/container/container.d.ts +1 -1
- package/development/container/container/container.d.ts.map +1 -1
- package/development/container/container.js +18 -2
- package/development/container/sticky-bar/sticky-bar.d.ts +1 -1
- package/development/container/sticky-bar/sticky-bar.d.ts.map +1 -1
- package/development/container/sticky-bar.js +9 -1
- package/development/core/a11y/focus.d.ts.map +1 -1
- package/development/core/a11y.js +3 -3
- package/development/core/base-elements/link-base-element.d.ts +2 -0
- package/development/core/base-elements/link-base-element.d.ts.map +1 -1
- package/development/core/base-elements.js +22 -5
- package/development/core/controllers.js +1 -1
- package/development/core/datetime/date-adapter.d.ts +1 -1
- package/development/core/datetime/date-adapter.d.ts.map +1 -1
- package/development/core/datetime/native-date-adapter.d.ts +1 -1
- package/development/core/datetime/native-date-adapter.d.ts.map +1 -1
- package/development/core/datetime.js +1 -1
- package/development/core/dom/scroll.d.ts +1 -0
- package/development/core/dom/scroll.d.ts.map +1 -1
- package/development/core/dom.js +4 -1
- package/development/core/images.d.ts.map +1 -1
- package/development/core/mixins.js +1 -1
- package/development/datepicker/common/datepicker-association-controllers.d.ts +21 -0
- package/development/datepicker/common/datepicker-association-controllers.d.ts.map +1 -0
- package/development/datepicker/common/datepicker-button.d.ts +17 -9
- package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
- package/development/datepicker/common.d.ts +1 -0
- package/development/datepicker/common.d.ts.map +1 -1
- package/development/datepicker/common.js +139 -90
- package/development/datepicker/datepicker/datepicker.d.ts +19 -4
- package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
- package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts +14 -8
- package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
- package/development/datepicker/datepicker-toggle.js +76 -73
- package/development/datepicker/datepicker.js +55 -37
- package/development/dialog/dialog/dialog.d.ts +2 -0
- package/development/dialog/dialog/dialog.d.ts.map +1 -1
- package/development/dialog/dialog-content.js +1 -1
- package/development/dialog/dialog.js +38 -12
- package/development/expansion-panel/expansion-panel-content.js +1 -1
- package/development/flip-card/flip-card-details.js +1 -1
- package/development/flip-card/flip-card-summary.js +1 -1
- package/development/icon.js +1 -1
- package/development/image.js +2 -2
- package/development/lead-container.js +1 -1
- package/development/link-list/link-list-anchor.js +1 -1
- package/development/link-list/link-list.js +1 -1
- package/development/loading-indicator-circle.js +1 -1
- package/development/loading-indicator.js +1 -1
- package/development/map-container.js +1 -1
- package/development/menu/menu/menu.d.ts.map +1 -1
- package/development/menu/menu.js +35 -12
- package/development/message.js +1 -1
- package/development/navigation/navigation/navigation.d.ts.map +1 -1
- package/development/navigation/navigation.js +15 -8
- package/development/notification.js +1 -1
- package/development/option/optgroup.js +1 -1
- package/development/option/option/option-base-element.d.ts +3 -2
- package/development/option/option/option-base-element.d.ts.map +1 -1
- package/development/option/option.js +16 -9
- package/development/overlay/overlay-base-element.d.ts.map +1 -1
- package/development/overlay/overlay.d.ts.map +1 -1
- package/development/overlay.js +29 -13
- package/development/paginator/paginator.js +1 -1
- package/development/popover/popover/popover.d.ts.map +1 -1
- package/development/popover/popover.js +16 -13
- package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
- package/development/radio-button/radio-button-group.js +2 -2
- package/development/{sbb-tokens-BdGhUJjM.js → sbb-tokens-CSAKTXUi.js} +15 -15
- package/development/screen-reader-only.js +1 -1
- package/development/select/select.d.ts +11 -0
- package/development/select/select.d.ts.map +1 -1
- package/development/select.js +60 -9
- package/development/signet.js +1 -1
- package/development/stepper/step.js +1 -1
- package/development/tabs/tab.js +1 -1
- package/development/time-input.js +1 -1
- package/development/title/title-base.d.ts.map +1 -1
- package/development/title.js +4 -5
- package/development/toast/toast.d.ts.map +1 -1
- package/development/toast.js +14 -8
- package/development/toggle/toggle.js +2 -2
- package/development/train/train-blocked-passage.js +1 -1
- package/development/train/train-wagon.js +1 -1
- package/dialog/dialog/dialog.d.ts +2 -0
- package/dialog/dialog/dialog.d.ts.map +1 -1
- package/dialog/dialog-content.js +4 -4
- package/dialog/dialog-title.js +8 -8
- package/dialog/dialog.js +59 -49
- package/divider.js +12 -12
- package/expansion-panel/expansion-panel-content.js +3 -3
- package/file-selector/file-selector-dropzone.js +5 -5
- package/file-selector/file-selector.js +6 -6
- package/flip-card/flip-card-details.js +7 -7
- package/flip-card/flip-card-summary.js +12 -12
- package/header/header-button.js +5 -5
- package/header/header-link.js +5 -5
- package/icon.js +37 -37
- package/image.js +16 -16
- package/lead-container.js +3 -3
- package/link/block-link-button.js +4 -4
- package/link/block-link-static.js +9 -9
- package/link/block-link.js +4 -4
- package/link/common.js +16 -16
- package/link/link-button.js +7 -7
- package/link/link-static.js +7 -7
- package/link/link.js +4 -4
- package/link-list/common.js +12 -12
- package/link-list/link-list-anchor.js +3 -3
- package/link-list/link-list.js +3 -3
- package/loading-indicator-circle.js +14 -14
- package/loading-indicator.js +3 -3
- package/map-container.js +6 -6
- package/menu/common.js +7 -7
- package/menu/menu/menu.d.ts.map +1 -1
- package/menu/menu-button.js +8 -8
- package/menu/menu-link.js +6 -6
- package/menu/menu.js +64 -42
- package/message.js +3 -3
- package/navigation/navigation/navigation.d.ts.map +1 -1
- package/navigation/navigation-button.js +4 -4
- package/navigation/navigation-link.js +7 -7
- package/navigation/navigation-list.js +4 -4
- package/navigation/navigation-marker.js +3 -3
- package/navigation/navigation.js +21 -20
- package/notification.js +19 -19
- package/option/optgroup.js +14 -14
- package/option/option/option-base-element.d.ts +3 -2
- package/option/option/option-base-element.d.ts.map +1 -1
- package/option/option.js +115 -103
- package/overlay/overlay-base-element.d.ts.map +1 -1
- package/overlay/overlay.d.ts.map +1 -1
- package/overlay.js +87 -84
- package/package.json +1 -1
- package/paginator/common.js +6 -6
- package/paginator/paginator.js +1 -1
- package/popover/popover/popover.d.ts.map +1 -1
- package/popover/popover.js +73 -73
- package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
- package/radio-button/radio-button-group.js +1 -1
- package/radio-button/radio-button-panel.js +5 -5
- package/{sbb-tokens-Dx20OtVg.js → sbb-tokens-BgDF8jIh.js} +14 -14
- package/screen-reader-only.js +8 -8
- package/select/select.d.ts +11 -0
- package/select/select.d.ts.map +1 -1
- package/select.js +111 -83
- package/signet.js +1 -1
- package/slider.js +8 -8
- package/standard-theme.css +20 -2
- package/status.js +3 -3
- package/stepper/step-label.js +4 -4
- package/stepper/step.js +3 -3
- package/table/table-wrapper.js +4 -4
- package/tabs/tab-group.js +24 -24
- package/tabs/tab.js +4 -4
- package/tag/tag-group.js +7 -7
- package/teaser-product/common.js +5 -5
- package/teaser-product/teaser-product-static.js +2 -2
- package/time-input.js +3 -3
- package/timetable-occupancy-icon.js +3 -3
- package/timetable-occupancy.js +6 -6
- package/title/title-base.d.ts.map +1 -1
- package/title.js +41 -42
- package/toast/toast.d.ts.map +1 -1
- package/toast.js +58 -54
- package/toggle/toggle-option.js +11 -11
- package/toggle/toggle.js +3 -3
- package/toggle-check.js +5 -5
- package/train/train-blocked-passage.js +3 -3
- package/train/train.js +28 -28
|
@@ -291,4 +291,4 @@ export {
|
|
|
291
291
|
YEARS_PER_ROW,
|
|
292
292
|
defaultDateAdapter
|
|
293
293
|
};
|
|
294
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RhdGV0aW1lL2RhdGUtYWRhcHRlci50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RhdGV0aW1lL25hdGl2ZS1kYXRlLWFkYXB0ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IERBWVNfUEVSX1JPVzogbnVtYmVyID0gNztcbmV4cG9ydCBjb25zdCBNT05USFNfUEVSX1JPVzogbnVtYmVyID0gNDtcbmV4cG9ydCBjb25zdCBZRUFSU19QRVJfUk9XOiBudW1iZXIgPSA0O1xuZXhwb3J0IGNvbnN0IFlFQVJTX1BFUl9QQUdFOiBudW1iZXIgPSAyNDtcbmV4cG9ydCBjb25zdCBGT1JNQVRfREFURSA9XG4gIC8oXjA/WzEtOV0/fFsxMl0/WzAtOV0/fDM/WzAxXT8pWy4sXFxcXC9cXC1cXHNdKDA/WzEtOV0/fDE/WzAtMl0/KT9bLixcXFxcL1xcLVxcc10oXFxkezEsNH0kKT8vO1xuXG4vKipcbiAqIEFic3RyYWN0IGRhdGUgZnVuY3Rpb25hbGl0eS5cbiAqXG4gKiBBZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9ibG9iL21haW4vc3JjL21hdGVyaWFsL2NvcmUvZGF0ZXRpbWUvZGF0ZS1hZGFwdGVyLnRzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYXRlQWRhcHRlcjxUID0gYW55PiB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIHllYXIgYXMgYSBudW1iZXIuXG4gICAqIEBwYXJhbSBkYXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0WWVhcihkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG1vbnRoIGFzIGEgbnVtYmVyLlxuICAgKiBBdHRlbnRpb246IFRoaXMgcmV0dXJucyAxLTEyIGFuZCBtaXRpZ2F0ZXMgdGhlIGRlZmF1bHQgSmF2YVNjcmlwdCBEYXRlIGJlaGF2aW9yLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldE1vbnRoKGRhdGU6IFQpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGF5IG9mIHRoZSBtb250aCBhcyBhIG51bWJlci5cbiAgICogQHBhcmFtIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXRlKGRhdGU6IFQpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgRGF5IG9mIHRoZSB3ZWVrIGFzIGEgbnVtYmVyLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldERheU9mV2VlayhkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKiBHZXQgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMDogc3VuZGF5OyAxOiBtb25kYXk7IGV0Yy4pLiAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0Rmlyc3REYXlPZldlZWsoKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG51bWJlciBvZiBkYXlzIGluIGEgbW9udGguXG4gICAqIEBwYXJhbSB5ZWFyXG4gICAqIEBwYXJhbSBtb250aFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldE51bURheXNJbk1vbnRoKGRhdGU6IFQpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSBtb250aHMgaW4gYSBnaXZlbiBzdHlsZS5cbiAgICogQHBhcmFtIHN0eWxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW107XG5cbiAgLyoqIEdldCBhIHN0cmluZyBhcnJheSB3aXRoIGxlbmd0aCA9IDMxLCBmaWxsZWQgd2l0aCB0aGUgZGF5cyBpbiBhIG1vbnRoLCBzdGFydGluZyBmcm9tIDEuICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXRlTmFtZXMoKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSB3ZWVrIGRheXMgaW4gYSBnaXZlbiBzdHlsZS5cbiAgICogQHBhcmFtIHN0eWxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0RGF5T2ZXZWVrTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdO1xuXG4gIC8qKiBDcmVhdGVzIHRvZGF5J3MgZGF0ZS4gKi9cbiAgcHVibGljIGFic3RyYWN0IHRvZGF5KCk6IFQ7XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gYGRhdGVgIGlzIHZhbGlkLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGlzVmFsaWQoZGF0ZTogVCB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGRhdGUgYnkgY2xvbmluZyB0aGUgZ2l2ZW4gb25lLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGNsb25lKGRhdGU6IFQpOiBUO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGRhdGUsIGdpdmVuIGRheSwgbW9udGggYW5kIHllYXI7IHdpdGhvdXQgZGF0ZSdzIG92ZXJmbG93LlxuICAgKiBAcGFyYW0geWVhclxuICAgKiBAcGFyYW0gbW9udGggVGhlIG1vbnRoIG9mIHRoZSBkYXRlICgxLWluZGV4ZWQsIDEgPSBKYW51YXJ5KS4gTXVzdCBiZSBhbiBpbnRlZ2VyIDEgLSAxMi5cbiAgICogQHBhcmFtIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBjcmVhdGVEYXRlKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF0ZTogbnVtYmVyKTogVDtcblxuICAvKipcbiAgICogQXR0ZW1wdHMgdG8gZGVzZXJpYWxpemUgYSB2YWx1ZSB0byBhIHZhbGlkIGRhdGUgb2JqZWN0LiBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHBhcnNpbmcgaW4gdGhhdFxuICAgKiBkZXNlcmlhbGl6ZSBzaG91bGQgb25seSBhY2NlcHQgbm9uLWFtYmlndW91cywgbG9jYWxlLWluZGVwZW5kZW50IGZvcm1hdHMgKGUuZy4gYSBJU08gODYwMVxuICAgKiBzdHJpbmcpLiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBhbGxvdyBhbnkgZGVzZXJpYWxpemF0aW9uLCBpdCBzaW1wbHkgY2hlY2tzIHRoYXRcbiAgICogdGhlIGdpdmVuIHZhbHVlIGlzIGFscmVhZHkgYSB2YWxpZCBkYXRlIG9iamVjdCBvciBudWxsLlxuICAgKiBAcGFyYW0gdmFsdWUgRWl0aGVyIERhdGUsIElTT1N0cmluZywgVW5peCBUaW1lc3RhbXAgKG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIEphbiAxLCAxOTcwKS5cbiAgICogQHJldHVybnMgVGhlIGRhdGUgaWYgdGhlIGlucHV0IGlzIHZhbGlkLCBgbnVsbGAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHVibGljIGRlc2VyaWFsaXplKHZhbHVlOiBUIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFQgfCBudWxsIHtcbiAgICBpZiAoXG4gICAgICB2YWx1ZSA9PSBudWxsIHx8XG4gICAgICAodGhpcy5pc0RhdGVJbnN0YW5jZSh2YWx1ZSkgJiYgdGhpcy5pc1ZhbGlkKHZhbHVlIGFzIFQgfCBudWxsIHwgdW5kZWZpbmVkKSlcbiAgICApIHtcbiAgICAgIHJldHVybiB2YWx1ZSBhcyBUIHwgbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgeWVhcnNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlLlxuICAgKiBAcGFyYW0geWVhcnMgVGhlIG51bWJlciBvZiB5ZWFycyB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYWRkQ2FsZW5kYXJZZWFycyhkYXRlOiBULCB5ZWFyczogbnVtYmVyKTogVDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBkYXRlIGFkZGluZyB0aGUgbnVtYmVyIG9mIHByb3ZpZGVkIGBtb250aHNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIElmIHRoZSBjYWxjdWxhdGVkIG1vbnRoIGhhcyBmZXdlciBkYXlzIHRoYW4gdGhlIG9yaWdpbmFsIG9uZSwgdGhlIGRhdGUgaXMgc2V0IHRvIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGguXG4gICAqIEUuZy4gd2l0aCBgZGF0ZWAgPSBuZXcgRGF0ZSgyMDIyLCAwLCAzMSkgYW5kIGBtb250aHNgID0gMSwgaXQgcmV0dXJucyBuZXcgRGF0ZSgyMDIyLCAxLCAyOCkuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlLlxuICAgKiBAcGFyYW0gbW9udGhzIFRoZSBudW1iZXIgb2YgbW9udGhzIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBhZGRDYWxlbmRhck1vbnRocyhkYXRlOiBULCBtb250aHM6IG51bWJlcik6IFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBieSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgZGF5c2AgdG8gdGhlIHByb3ZpZGVkIGBkYXRlYC5cbiAgICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUuXG4gICAqIEBwYXJhbSBkYXlzIFRoZSBudW1iZXIgb2YgZGF5cyB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYWRkQ2FsZW5kYXJEYXlzKGRhdGU6IFQsIGRheXM6IG51bWJlcik6IFQ7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGF0ZSBpbiB0aGUgbG9jYWwgZm9ybWF0LlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBmb3JtYXRcbiAgICogQHJldHVybnMgVGhlIGBkYXRlYCBpbiB0aGUgbG9jYWwgZm9ybWF0IGFzIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRBY2Nlc3NpYmlsaXR5Rm9ybWF0RGF0ZShkYXRlOiBUIHwgc3RyaW5nKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGdpdmVuIHN0cmluZyBhcyBEYXRlLlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIGRhdGUgaW4gdGhlIGZvcm1hdCBERC5NTS5ZWVlZLlxuICAgKiBAcGFyYW0gbm93IFRoZSBjdXJyZW50IGRhdGUgYXMgRGF0ZS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBwYXJzZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCwgbm93OiBUKTogVCB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEZvcm1hdCB0aGUgZ2l2ZW4gZGF0ZSBhcyBzdHJpbmcuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGZvcm1hdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgb3B0aW9ucyBvYmplY3Qgd2l0aCB3ZWVrZGF5U3R5bGUgYXMgcHJvcGVydHlcbiAgICovXG4gIHB1YmxpYyBmb3JtYXQoXG4gICAgZGF0ZTogVCB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgb3B0aW9ucz86IHsgd2Vla2RheVN0eWxlPzogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnIH0sXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IG5ldyBEYXRlKHRoaXMudG9Jc284NjAxKGRhdGUhKSArICdUMDA6MDA6MDAnKTtcbiAgICBjb25zdCBkYXRlRm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2RlLUNIJywge1xuICAgICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgICBtb250aDogJzItZGlnaXQnLFxuICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgd2Vla2RheVN0eWxlID0gb3B0aW9ucz8ud2Vla2RheVN0eWxlID8/ICdzaG9ydCc7XG4gICAgbGV0IHdlZWtkYXkgPSB0aGlzLmdldERheU9mV2Vla05hbWVzKHdlZWtkYXlTdHlsZSlbdGhpcy5nZXREYXlPZldlZWsoZGF0ZSEpXTtcbiAgICB3ZWVrZGF5ID0gd2Vla2RheS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHdlZWtkYXkuc3Vic3RyaW5nKDEpO1xuICAgIC8vIFdlIGhhdmUgdGhlIHNwZWNpYWwgcmVxdWlyZW1lbnQgZm9yIGRhdGUgZm9ybWF0cyBhdCBTQkIsIHdoZXJlIHRoZSBzaG9ydCBmb3JtXG4gICAgLy8gZm9yIHdlZWtkYXlzIHNob3VsZCBiZSB0d28gY2hhcmFjdGVycyBpbiBsZW5ndGguXG4gICAgaWYgKHdlZWtkYXlTdHlsZSA9PT0gJ3Nob3J0Jykge1xuICAgICAgd2Vla2RheSA9IHdlZWtkYXkuc3Vic3RyaW5nKDAsIDIpO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt3ZWVrZGF5fSwgJHtkYXRlRm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gYG9iamAgaXMgYSBEYXRlLlxuICAgKiBAcGFyYW0gb2JqIFRoZSBvYmplY3QgdG8gY2hlY2suXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaXNEYXRlSW5zdGFuY2Uob2JqOiBhbnkpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBHZXRzIGRhdGUgaW5zdGFuY2UgdGhhdCBpcyBub3QgdmFsaWQuXG4gICAqIEByZXR1cm5zIEFuIGludmFsaWQgZGF0ZS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBpbnZhbGlkKCk6IFQ7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZ2l2ZW4gZGF0ZSBhcyBJU08gU3RyaW5nLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBjb252ZXJ0IHRvIElTTyBTdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgdG9Jc284NjAxKGRhdGU6IFQpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhZCA9ICh2YWx1ZTogbnVtYmVyLCBsZW5ndGggPSAyKTogc3RyaW5nID0+IGAke3ZhbHVlfWAucGFkU3RhcnQobGVuZ3RoLCAnMCcpO1xuICAgIHJldHVybiBgJHtwYWQodGhpcy5nZXRZZWFyKGRhdGUpLCA0KX0tJHtwYWQodGhpcy5nZXRNb250aChkYXRlKSl9LSR7cGFkKHRoaXMuZ2V0RGF0ZShkYXRlKSl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhIHBvdGVudGlhbCBkYXRlIG9iamVjdCwgcmV0dXJucyB0aGF0IHNhbWUgZGF0ZSBvYmplY3QgaWYgaXQgaXNcbiAgICogYSB2YWxpZCBkYXRlLCBvciBgbnVsbGAgaWYgaXQncyBub3QgYSB2YWxpZCBkYXRlLlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIG9iamVjdCB0byBjaGVjay5cbiAgICogQHJldHVybnMgQSBkYXRlIG9yIGBudWxsYC5cbiAgICovXG4gIHB1YmxpYyBnZXRWYWxpZERhdGVPck51bGwodmFsdWU6IHVua25vd24pOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuaXNEYXRlSW5zdGFuY2UodmFsdWUpICYmIHRoaXMuaXNWYWxpZCh2YWx1ZSBhcyBUKSA/ICh2YWx1ZSBhcyBUKSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgZGF5IG9mIHRoZSB3ZWVrIG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoLCBhbmQgdGhlbiBpdHMgb2Zmc2V0IGZyb20gdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICovXG4gIHB1YmxpYyBnZXRGaXJzdFdlZWtPZmZzZXQoZGF0ZTogVCk6IG51bWJlciB7XG4gICAgY29uc3QgZmlyc3RPZk1vbnRoID0gdGhpcy5jcmVhdGVEYXRlKHRoaXMuZ2V0WWVhcihkYXRlKSwgdGhpcy5nZXRNb250aChkYXRlKSwgMSkhO1xuICAgIHJldHVybiAoXG4gICAgICAoREFZU19QRVJfUk9XICsgdGhpcy5nZXREYXlPZldlZWsoZmlyc3RPZk1vbnRoKSAtIHRoaXMuZ2V0Rmlyc3REYXlPZldlZWsoKSkgJSBEQVlTX1BFUl9ST1dcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmVzIHR3byBkYXRlcy5cbiAgICogQHBhcmFtIGZpcnN0IFRoZSBmaXJzdCBkYXRlIHRvIGNvbXBhcmUuXG4gICAqIEBwYXJhbSBzZWNvbmQgVGhlIHNlY29uZCBkYXRlIHRvIGNvbXBhcmUuXG4gICAqIEByZXR1cm5zIDAgaWYgdGhlIGRhdGVzIGFyZSBlcXVhbCwgYSBudW1iZXIgbGVzcyB0aGFuIDAgaWYgdGhlIGZpcnN0IGRhdGUgaXMgZWFybGllcixcbiAgICogICAgIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAwIGlmIHRoZSBmaXJzdCBkYXRlIGlzIGxhdGVyLlxuICAgKi9cbiAgcHVibGljIGNvbXBhcmVEYXRlKGZpcnN0OiBULCBzZWNvbmQ6IFQpOiBudW1iZXIge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmdldFllYXIoZmlyc3QpIC0gdGhpcy5nZXRZZWFyKHNlY29uZCkgfHxcbiAgICAgIHRoaXMuZ2V0TW9udGgoZmlyc3QpIC0gdGhpcy5nZXRNb250aChzZWNvbmQpIHx8XG4gICAgICB0aGlzLmdldERhdGUoZmlyc3QpIC0gdGhpcy5nZXREYXRlKHNlY29uZClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0d28gZGF0ZXMgYXJlIGVxdWFsLlxuICAgKiBAcGFyYW0gZmlyc3QgVGhlIGZpcnN0IGRhdGUgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBzZWNvbmQgVGhlIHNlY29uZCBkYXRlIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB0d28gZGF0ZXMgYXJlIGVxdWFsLlxuICAgKiAgICAgTnVsbCBkYXRlcyBhcmUgY29uc2lkZXJlZCBlcXVhbCB0byBvdGhlciBudWxsIGRhdGVzLlxuICAgKi9cbiAgcHVibGljIHNhbWVEYXRlKGZpcnN0OiBUIHwgbnVsbCwgc2Vjb25kOiBUIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgIGlmIChmaXJzdCAmJiBzZWNvbmQpIHtcbiAgICAgIGNvbnN0IGZpcnN0VmFsaWQgPSB0aGlzLmlzVmFsaWQoZmlyc3QpO1xuICAgICAgY29uc3Qgc2Vjb25kVmFsaWQgPSB0aGlzLmlzVmFsaWQoc2Vjb25kKTtcbiAgICAgIGlmIChmaXJzdFZhbGlkICYmIHNlY29uZFZhbGlkKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5jb21wYXJlRGF0ZShmaXJzdCwgc2Vjb25kKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmaXJzdFZhbGlkID09IHNlY29uZFZhbGlkO1xuICAgIH1cbiAgICByZXR1cm4gZmlyc3QgPT0gc2Vjb25kO1xuICB9XG5cbiAgLyoqXG4gICAqIENsYW1wIHRoZSBnaXZlbiBkYXRlIGJldHdlZW4gbWluIGFuZCBtYXggZGF0ZXMuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGNsYW1wLlxuICAgKiBAcGFyYW0gbWluIFRoZSBtaW5pbXVtIHZhbHVlIHRvIGFsbG93LiBJZiBudWxsIG9yIG9taXR0ZWQgbm8gbWluIGlzIGVuZm9yY2VkLlxuICAgKiBAcGFyYW0gbWF4IFRoZSBtYXhpbXVtIHZhbHVlIHRvIGFsbG93LiBJZiBudWxsIG9yIG9taXR0ZWQgbm8gbWF4IGlzIGVuZm9yY2VkLlxuICAgKiBAcmV0dXJucyBgbWluYCBpZiBgZGF0ZWAgaXMgbGVzcyB0aGFuIGBtaW5gLCBgbWF4YCBpZiBkYXRlIGlzIGdyZWF0ZXIgdGhhbiBgbWF4YCxcbiAgICogICAgIG90aGVyd2lzZSBgZGF0ZWAuXG4gICAqL1xuICBwdWJsaWMgY2xhbXBEYXRlKGRhdGU6IFQsIG1pbj86IFQgfCBudWxsLCBtYXg/OiBUIHwgbnVsbCk6IFQge1xuICAgIGlmIChtaW4gJiYgdGhpcy5jb21wYXJlRGF0ZShkYXRlLCBtaW4pIDwgMCkge1xuICAgICAgcmV0dXJuIG1pbjtcbiAgICB9XG4gICAgaWYgKG1heCAmJiB0aGlzLmNvbXBhcmVEYXRlKGRhdGUsIG1heCkgPiAwKSB7XG4gICAgICByZXR1cm4gbWF4O1xuICAgIH1cbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEYXRlTGlrZSB9IGZyb20gJy4uL2ludGVyZmFjZXMuanMnO1xuXG5pbXBvcnQgeyBEYXRlQWRhcHRlciwgRk9STUFUX0RBVEUgfSBmcm9tICcuL2RhdGUtYWRhcHRlci5qcyc7XG5cbi8qKlxuICogTWF0Y2hlcyBzdHJpbmdzIHRoYXQgaGF2ZSB0aGUgZm9ybSBvZiBhIHZhbGlkIFJGQyAzMzM5IHN0cmluZ1xuICogKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzMzM5KS4gTm90ZSB0aGF0IHRoZSBzdHJpbmcgbWF5IG5vdCBhY3R1YWxseSBiZSBhIHZhbGlkIGRhdGVcbiAqIGJlY2F1c2UgdGhlIHJlZ2V4IHdpbGwgbWF0Y2ggc3RyaW5ncyBhbiB3aXRob3V0IG9mIGJvdW5kcyBtb250aCwgZGF0ZSwgZXRjLlxuICovXG5jb25zdCBJU09fODYwMV9SRUdFWCA9XG4gIC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0oPzpUXFxkezJ9OlxcZHsyfTpcXGR7Mn0oPzpcXC5cXGQrKT8oPzpafCg/Oig/OlxcK3wtKVxcZHsyfTpcXGR7Mn0pKT8pPyQvO1xuXG5leHBvcnQgY2xhc3MgTmF0aXZlRGF0ZUFkYXB0ZXIgZXh0ZW5kcyBEYXRlQWRhcHRlcjxEYXRlPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1dG9mZlllYXJPZmZzZXQ6IG51bWJlcjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoY3V0b2ZmWWVhck9mZnNldDogbnVtYmVyID0gMTUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2N1dG9mZlllYXJPZmZzZXQgPSBjdXRvZmZZZWFyT2Zmc2V0O1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIHllYXIgb2YgdGhlIGlucHV0IGRhdGUuICovXG4gIHB1YmxpYyBnZXRZZWFyKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgbW9udGggb2YgdGhlIGlucHV0IGRhdGUuICovXG4gIHB1YmxpYyBnZXRNb250aChkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5nZXRNb250aCgpICsgMTtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBkYXkgb2YgdGhlIGlucHV0IGRhdGUuICovXG4gIHB1YmxpYyBnZXREYXRlKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmdldERhdGUoKTtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBkYXkgb2YgdGhlIHdlZWsgb2YgdGhlIGlucHV0IGRhdGUuICovXG4gIHB1YmxpYyBnZXREYXlPZldlZWsoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0RGF5KCk7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgZGF0ZSBpbiB0aGUgbG9jYWwgZm9ybWF0LiAqL1xuICBwdWJsaWMgZ2V0QWNjZXNzaWJpbGl0eUZvcm1hdERhdGUoZGF0ZTogRGF0ZSB8IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3B0aW9uczogSW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnMgPSB7XG4gICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICBtb250aDogJ2xvbmcnLFxuICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgfTtcbiAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoU2JiTGFuZ3VhZ2VDb250cm9sbGVyLmN1cnJlbnQsIG9wdGlvbnMpLmZvcm1hdChuZXcgRGF0ZShkYXRlKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBzdHJpbmdzIHdpdGggbGVuZ3RoID0gMTIsIGZpbGxlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBtb250aHMgc3RhcnRpbmcgZnJvbSBKYW51YXJ5LCBpbiB0aGUgZG9jdW1lbnQgbGFuZ3VhZ2UuXG4gICAqIEBwYXJhbSBzdHlsZSBTZWUgYG1vbnRoYCBpbiBgRGF0ZVRpbWVGb3JtYXRPcHRpb25zYDogYGxvbmdgIGZvciBmdWxsIG5hbWUsIGBzaG9ydGAgZm9yIHNob3J0IG5hbWUsIGBuYXJyb3dgIGZvciBzaW5nbGUgbGV0dGVyLFxuICAgKiBFLmcuLCB3aXRoIEphbnVhcnkgaW4gZW4tZ2I6IGBsb25nYCByZXR1cm5zIFwiSmFudWFyeVwiLCBgc2hvcnRgIHJldHVybnMgXCJKYW5cIiwgYG5hcnJvd2AgcmV0dXJucyBcIkpcIi5cbiAgICovXG4gIHB1YmxpYyBnZXRNb250aE5hbWVzKHN0eWxlOiAnbG9uZycgfCAnc2hvcnQnIHwgJ25hcnJvdycpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoU2JiTGFuZ3VhZ2VDb250cm9sbGVyLmN1cnJlbnQsIHsgbW9udGg6IHN0eWxlIH0pO1xuICAgIHJldHVybiB0aGlzLl9yYW5nZSgxMiwgKGkpID0+IGZvcm1hdHRlci5mb3JtYXQobmV3IERhdGUoMjAxNywgaSwgMSkpKTtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgc3RyaW5nIGFycmF5IHdpdGggbGVuZ3RoID0gMzEsIGZpbGxlZCB3aXRoIHRoZSBkYXlzIGluIGEgbW9udGgsIHN0YXJ0aW5nIGZyb20gMS4gKi9cbiAgcHVibGljIGdldERhdGVOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoU2JiTGFuZ3VhZ2VDb250cm9sbGVyLmN1cnJlbnQsIHsgZGF5OiAnbnVtZXJpYycgfSk7XG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlKDMxLCAoaSkgPT4gZm9ybWF0dGVyLmZvcm1hdChuZXcgRGF0ZSgyMDE3LCAwLCBpICsgMSkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc3RyaW5nIGFycmF5IHdpdGggbGVuZ3RoID0gNywgZmlsbGVkIHdpdGggdGhlIG5hbWUgb2YgdGhlIGRheXMgaW4gYSB3ZWVrIHN0YXJ0aW5nIGZyb20gU3VuZGF5LCBpbiB0aGUgZG9jdW1lbnQgbGFuZ3VhZ2UuXG4gICAqIEBwYXJhbSBzdHlsZSBTZWUgYHdlZWtkYXlgIGluIGBEYXRlVGltZUZvcm1hdE9wdGlvbnNgIC0gJ2xvbmcnIGZvciBmdWxsIG5hbWUsICdzaG9ydCcgZm9yIHNob3J0IG5hbWUsICduYXJyb3cnIGZvciBzaW5nbGUgbGV0dGVyO1xuICAgKiBFLmcuLCB3aXRoIE1vbmRheSBpbiBlbi1nYjogYGxvbmdgIHJldHVybnMgXCJNb25kYXlcIiwgYHNob3J0YCByZXR1cm5zIFwiTW9uXCIsIGBuYXJyb3dgIHJldHVybnMgXCJNXCIuXG4gICAqL1xuICBwdWJsaWMgZ2V0RGF5T2ZXZWVrTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudCwgeyB3ZWVrZGF5OiBzdHlsZSB9KTtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2UoNywgKGkpID0+IGZvcm1hdHRlci5mb3JtYXQobmV3IERhdGUoMjAxNywgMCwgaSArIDEpKSk7XG4gIH1cblxuICAvKiBEZWZpbmVzIHdoaWNoIGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDA6IHN1bmRheTsgMTogbW9uZGF5OyBldGMuKS4gKi9cbiAgcHVibGljIGdldEZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICAvKiogQ2FsY3VsYXRlcyB0aGUgbnVtYmVyIG9mIGRheXMgaW4gYSBtb250aCBnaXZlbiB0aGUgeWVhciBhbmQgdGhlIG1vbnRoLiAqL1xuICBwdWJsaWMgZ2V0TnVtRGF5c0luTW9udGgoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGF0ZSh0aGlzLl9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHRoaXMuZ2V0WWVhcihkYXRlKSwgdGhpcy5nZXRNb250aChkYXRlKSwgMCkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgdG9kYXkncyBkYXRlLiAqL1xuICBwdWJsaWMgdG9kYXkoKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0SG91cnMoMCwgMCwgMCwgMCkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBuZXcgZGF0ZSwgZ2l2ZW4gZGF5LCBtb250aCBhbmQgeWVhcjsgdGhlIG1ldGhvZCBkb2Vzbid0IGFsbG93IGRhdGUncyBvdmVyZmxvdy4gKi9cbiAgcHVibGljIGNyZWF0ZURhdGUoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXRlOiBudW1iZXIpOiBEYXRlIHtcbiAgICAvLyBDaGVjayBmb3IgaW52YWxpZCBtb250aCBhbmQgZGF0ZSAoZXhjZXB0IHVwcGVyIGJvdW5kIG9uIGRhdGUgd2hpY2ggd2UgaGF2ZSB0byBjaGVjayBhZnRlciBjcmVhdGluZyB0aGUgRGF0ZSkuXG4gICAgaWYgKG1vbnRoIDwgMSB8fCBtb250aCA+IDEyKSB7XG4gICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBtb250aCBpbmRleCBcIiR7bW9udGh9XCIuIE1vbnRoIGluZGV4IGhhcyB0byBiZSBiZXR3ZWVuIDEgYW5kIDEyLmApO1xuICAgIH1cblxuICAgIGlmIChkYXRlIDwgMSkge1xuICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgZGF0ZSBcIiR7ZGF0ZX1cIi4gRGF0ZSBoYXMgdG8gYmUgZ3JlYXRlciB0aGFuIDAuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh5ZWFyLCBtb250aCAtIDEsIGRhdGUpO1xuICAgIC8vIENoZWNrIHRoYXQgdGhlIGRhdGUgd2Fzbid0IGFib3ZlIHRoZSB1cHBlciBib3VuZCBmb3IgdGhlIG1vbnRoLCBjYXVzaW5nIHRoZSBtb250aCB0byBvdmVyZmxvd1xuICAgIGlmIChyZXN1bHQuZ2V0TW9udGgoKSArIDEgIT09IG1vbnRoKSB7XG4gICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBkYXRlIFwiJHtkYXRlfVwiIGZvciBtb250aCB3aXRoIGluZGV4IFwiJHttb250aH1cIi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBgb2JqYCBpcyBhIERhdGUuICovXG4gIHB1YmxpYyBpc0RhdGVJbnN0YW5jZShvYmo6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBEYXRlO1xuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBgZGF0ZWAgaXMgYSB2YWxpZCBEYXRlLiAqL1xuICBwdWJsaWMgaXNWYWxpZChkYXRlOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIWRhdGUgJiYgIWlzTmFOKGRhdGUudmFsdWVPZigpKTtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgbmV3IGRhdGUgYnkgY2xvbmluZyB0aGUgZ2l2ZW4gb25lLiAqL1xuICBwdWJsaWMgY2xvbmUoZGF0ZTogRGF0ZSk6IERhdGUge1xuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBkYXRlIGFkZGluZyB0aGUgbnVtYmVyIG9mIHByb3ZpZGVkIGB5ZWFyc2AgdG8gdGhlIHByb3ZpZGVkIGBkYXRlYC5cbiAgICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUuXG4gICAqIEBwYXJhbSB5ZWFycyBUaGUgbnVtYmVyIG9mIHllYXJzIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhZGRDYWxlbmRhclllYXJzKGRhdGU6IERhdGUsIHllYXJzOiBudW1iZXIpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5hZGRDYWxlbmRhck1vbnRocyhkYXRlLCB5ZWFycyAqIDEyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGRhdGUgYWRkaW5nIHRoZSBudW1iZXIgb2YgcHJvdmlkZWQgYG1vbnRoc2AgdG8gdGhlIHByb3ZpZGVkIGBkYXRlYC5cbiAgICogSWYgdGhlIGNhbGN1bGF0ZWQgbW9udGggaGFzIGZld2VyIGRheXMgdGhhbiB0aGUgb3JpZ2luYWwgb25lLCB0aGUgZGF0ZSBpcyBzZXQgdG8gdGhlIGxhc3QgZGF5IG9mIHRoZSBtb250aC5cbiAgICogRS5nLiwgd2l0aCBgZGF0ZWAgPSBuZXcgRGF0ZSgyMDIyLCAwLCAzMSkgYW5kIGBtb250aHNgID0gMSwgaXQgcmV0dXJucyBuZXcgRGF0ZSgyMDIyLCAxLCAyOCkuXG4gICAqL1xuICBwdWJsaWMgYWRkQ2FsZW5kYXJNb250aHMoZGF0ZTogRGF0ZSwgbW9udGhzOiBudW1iZXIpOiBEYXRlIHtcbiAgICBjb25zdCB0YXJnZXRNb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIG1vbnRocztcbiAgICBjb25zdCBkYXRlV2l0aENvcnJlY3RNb250aCA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgdGFyZ2V0TW9udGgsIDEsIDAsIDAsIDAsIDApO1xuICAgIGNvbnN0IGRheXNJbk1vbnRoID0gdGhpcy5nZXROdW1EYXlzSW5Nb250aChkYXRlV2l0aENvcnJlY3RNb250aCk7XG4gICAgLy8gQWRhcHQgdGhlIGxhc3QgZGF5IG9mIG1vbnRoIGZvciBzaG9ydGVyIG1vbnRoc1xuICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmNsb25lKGRhdGUpLnNldE1vbnRoKHRhcmdldE1vbnRoLCBNYXRoLm1pbihkYXlzSW5Nb250aCwgZGF0ZS5nZXREYXRlKCkpKSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBkYXRlIGJ5IGFkZGluZyB0aGUgbnVtYmVyIG9mIHByb3ZpZGVkIGBkYXlzYCB0byB0aGUgcHJvdmlkZWQgYGRhdGVgLiAqL1xuICBwdWJsaWMgYWRkQ2FsZW5kYXJEYXlzKGRhdGU6IERhdGUsIGRheXM6IG51bWJlcik6IERhdGUge1xuICAgIGNvbnN0IHRhcmdldERheSA9IGRhdGUuZ2V0RGF0ZSgpICsgZGF5cztcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIHRhcmdldERheSwgMCwgMCwgMCwgMCk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIERhdGUgZnJvbSBhIHZhbGlkIGlucHV0IChEYXRlLCBzdHJpbmcgb3IgbnVtYmVyIGluIHNlY29uZHMpLiAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZGVzZXJpYWxpemUoZGF0ZTogU2JiRGF0ZUxpa2UgfCBudWxsIHwgdW5kZWZpbmVkKTogRGF0ZSB8IG51bGwge1xuICAgIGlmICh0eXBlb2YgZGF0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmICghZGF0ZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAoIU51bWJlci5pc05hTigrZGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsaWREYXRlT3JOdWxsKG5ldyBEYXRlKCtkYXRlICogMTAwMCkpO1xuXG4gICAgICAgIC8vIFRoZSBgRGF0ZWAgY29uc3RydWN0b3IgYWNjZXB0cyBmb3JtYXRzIG90aGVyIHRoYW4gSVNPIDg2MDEsIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZVxuICAgICAgICAvLyBzdHJpbmcgaXMgdGhlIHJpZ2h0IGZvcm1hdCBmaXJzdC5cbiAgICAgIH0gZWxzZSBpZiAoSVNPXzg2MDFfUkVHRVgudGVzdChkYXRlKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRWYWxpZERhdGVPck51bGwobmV3IERhdGUoZGF0ZS5pbmNsdWRlcygnVCcpID8gZGF0ZSA6IGRhdGUgKyAnVDAwOjAwOjAwJykpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGRhdGUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRWYWxpZERhdGVPck51bGwobmV3IERhdGUoZGF0ZSAqIDEwMDApKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLmRlc2VyaWFsaXplKGRhdGUpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIHJpZ2h0IGZvcm1hdCBmb3IgdGhlIGB2YWx1ZUFzRGF0ZWAgcHJvcGVydHkuICovXG4gIHB1YmxpYyBwYXJzZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCwgbm93OiBEYXRlKTogRGF0ZSB8IG51bGwge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHN0cmlwcGVkVmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9cXEQvZywgJyAnKS50cmltKCk7XG5cbiAgICBjb25zdCBtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSB8IG51bGwgfCB1bmRlZmluZWQgPSBzdHJpcHBlZFZhbHVlPy5tYXRjaChGT1JNQVRfREFURSk7XG4gICAgaWYgKFxuICAgICAgIW1hdGNoIHx8XG4gICAgICBtYXRjaC5pbmRleCAhPT0gMCB8fFxuICAgICAgbWF0Y2gubGVuZ3RoIDw9IDIgfHxcbiAgICAgIG1hdGNoLnNvbWUoKGUpID0+IGUgPT09IHVuZGVmaW5lZCkgfHxcbiAgICAgICF0aGlzLmlzVmFsaWQodGhpcy5jcmVhdGVEYXRlKCttYXRjaFszXSwgK21hdGNoWzJdLCArbWF0Y2hbMV0pKVxuICAgICkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IHllYXIgPSArbWF0Y2hbM107XG5cbiAgICBpZiAodHlwZW9mIHllYXIgPT09ICdudW1iZXInICYmIHllYXIgPCAxMDAgJiYgeWVhciA+PSAwKSB7XG4gICAgICBjb25zdCBzaGlmdCA9IG5vdy5nZXRGdWxsWWVhcigpIC0gMjAwMCArIHRoaXMuX2N1dG9mZlllYXJPZmZzZXQ7XG4gICAgICB5ZWFyID0geWVhciA8PSBzaGlmdCA/IDIwMDAgKyB5ZWFyIDogMTkwMCArIHllYXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsICttYXRjaFsyXSAtIDEsICttYXRjaFsxXSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgaW52YWxpZCgpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoTmFOKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGFycmF5IHdpdGggdGhlIGdpdmVuIGxlbmd0aCBhbmQgZmlsbHMgaXQgYnkgbWFwcGluZyB3aXRoIHRoZSBwcm92aWRlZCBmdW5jdGlvbi5cbiAgICogQHBhcmFtIGxlbmd0aCBUaGUgbGVuZ3RoIG9mIHRoZSBhcnJheSB0byBiZSBjcmVhdGVkLlxuICAgKiBAcGFyYW0gdmFsdWVGdW5jdGlvbiBUaGUgZnVuY3Rpb24gb2YgYXJyYXkncyBpbmRleCB1c2VkIHRvIGZpbGwgdGhlIGFycmF5LlxuICAgKi9cbiAgcHJpdmF0ZSBfcmFuZ2U8VD4obGVuZ3RoOiBudW1iZXIsIHZhbHVlRnVuY3Rpb246IChpbmRleDogbnVtYmVyKSA9PiBUKTogVFtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aCB9KS5tYXAoKF8sIGkpID0+IHZhbHVlRnVuY3Rpb24oaSkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBkYXRlIGJ1dCBhbGxvd3MgdGhlIG1vbnRoIGFuZCBkYXRlIHRvIG92ZXJmbG93LiAqL1xuICBwcml2YXRlIF9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF0ZTogbnVtYmVyKTogRGF0ZSB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGRhdGUpO1xuICAgIC8vIFdlIG5lZWQgdG8gY29ycmVjdCBmb3IgdGhlIGZhY3QgdGhhdCBKUyBuYXRpdmUgRGF0ZSB0cmVhdHMgeWVhcnMgaW4gcmFuZ2UgWzAsIDk5XSBhc1xuICAgIC8vIGFiYnJldmlhdGlvbnMgZm9yIDE5eHguXG4gICAgaWYgKHllYXIgPj0gMCAmJiB5ZWFyIDwgMTAwKSB7XG4gICAgICByZXN1bHQuc2V0RnVsbFllYXIodGhpcy5nZXRZZWFyKHJlc3VsdCkgLSAxOTAwKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdERhdGVBZGFwdGVyID0gbmV3IE5hdGl2ZURhdGVBZGFwdGVyKCk7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFPLE1BQU0sZUFBdUI7QUFDN0IsTUFBTSxpQkFBeUI7QUFDL0IsTUFBTSxnQkFBd0I7QUFDOUIsTUFBTSxpQkFBeUI7QUFDL0IsTUFBTSxjQUNYO01BT29CLFlBQVc7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFrRnhCLFlBQVksT0FBNkM7QUFFNUQsUUFBQSxTQUFTLFFBQ1IsS0FBSyxlQUFlLEtBQUssS0FBSyxLQUFLLFFBQVEsS0FBNkIsR0FDekU7QUFDTyxhQUFBO0FBQUEsSUFBQTtBQUVULFdBQU8sS0FBSyxRQUFPO0FBQUEsRUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQTZDZCxPQUNMLE1BQ0EsU0FBd0Q7QUFFeEQsUUFBSSxDQUFDLEtBQUssUUFBUSxJQUFJLEdBQUc7QUFDaEIsYUFBQTtBQUFBLElBQUE7QUFHVCxVQUFNLFFBQVksb0JBQUEsS0FBSyxLQUFLLFVBQVUsSUFBSyxJQUFJLFdBQVc7QUFDMUQsVUFBTSxnQkFBZ0IsSUFBSSxLQUFLLGVBQWUsU0FBUztBQUFBLE1BQ3JELEtBQUs7QUFBQSxNQUNMLE9BQU87QUFBQSxNQUNQLE1BQU07QUFBQSxJQUFBLENBQ1A7QUFFSyxVQUFBLGdCQUFlLG1DQUFTLGlCQUFnQjtBQUMxQyxRQUFBLFVBQVUsS0FBSyxrQkFBa0IsWUFBWSxFQUFFLEtBQUssYUFBYSxJQUFLLENBQUM7QUFDakUsY0FBQSxRQUFRLE9BQU8sQ0FBQyxFQUFFLGdCQUFnQixRQUFRLFVBQVUsQ0FBQztBQUcvRCxRQUFJLGlCQUFpQixTQUFTO0FBQ2xCLGdCQUFBLFFBQVEsVUFBVSxHQUFHLENBQUM7QUFBQSxJQUFBO0FBR2xDLFdBQU8sR0FBRyxPQUFPLEtBQUssY0FBYyxPQUFPLEtBQUssQ0FBQztBQUFBLEVBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBbUI1QyxVQUFVLE1BQU87QUFDaEIsVUFBQSxNQUFNLENBQUMsT0FBZSxTQUFTLE1BQWMsR0FBRyxLQUFLLEdBQUcsU0FBUyxRQUFRLEdBQUc7QUFDM0UsV0FBQSxHQUFHLElBQUksS0FBSyxRQUFRLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDO0FBQUEsRUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU3RGLG1CQUFtQixPQUFjO0FBQy9CLFdBQUEsS0FBSyxlQUFlLEtBQUssS0FBSyxLQUFLLFFBQVEsS0FBVSxJQUFLLFFBQWM7QUFBQSxFQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNMUUsbUJBQW1CLE1BQU87QUFDekIsVUFBQSxlQUFlLEtBQUssV0FBVyxLQUFLLFFBQVEsSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsQ0FBQztBQUMvRSxZQUNHLGVBQWUsS0FBSyxhQUFhLFlBQVksSUFBSSxLQUFLLHVCQUF1QjtBQUFBLEVBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBVzNFLFlBQVksT0FBVSxRQUFTO0FBRWxDLFdBQUEsS0FBSyxRQUFRLEtBQUssSUFBSSxLQUFLLFFBQVEsTUFBTSxLQUN6QyxLQUFLLFNBQVMsS0FBSyxJQUFJLEtBQUssU0FBUyxNQUFNLEtBQzNDLEtBQUssUUFBUSxLQUFLLElBQUksS0FBSyxRQUFRLE1BQU07QUFBQSxFQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVd0QyxTQUFTLE9BQWlCLFFBQWdCO0FBQy9DLFFBQUksU0FBUyxRQUFRO0FBQ2IsWUFBQSxhQUFhLEtBQUssUUFBUSxLQUFLO0FBQy9CLFlBQUEsY0FBYyxLQUFLLFFBQVEsTUFBTTtBQUN2QyxVQUFJLGNBQWMsYUFBYTtBQUM3QixlQUFPLENBQUMsS0FBSyxZQUFZLE9BQU8sTUFBTTtBQUFBLE1BQUE7QUFFeEMsYUFBTyxjQUFjO0FBQUEsSUFBQTtBQUV2QixXQUFPLFNBQVM7QUFBQSxFQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBV1gsVUFBVSxNQUFTLEtBQWdCLEtBQWM7QUFDdEQsUUFBSSxPQUFPLEtBQUssWUFBWSxNQUFNLEdBQUcsSUFBSSxHQUFHO0FBQ25DLGFBQUE7QUFBQSxJQUFBO0FBRVQsUUFBSSxPQUFPLEtBQUssWUFBWSxNQUFNLEdBQUcsSUFBSSxHQUFHO0FBQ25DLGFBQUE7QUFBQSxJQUFBO0FBRUYsV0FBQTtBQUFBLEVBQUE7QUFFVjtBQy9QRCxNQUFNLGlCQUNKO0FBRUksTUFBTywwQkFBMEIsWUFBaUI7QUFBQSxFQUd0RCxZQUFtQixtQkFBMkIsSUFBRTs7QUFFOUMsU0FBSyxvQkFBb0I7QUFBQSxFQUFBO0FBQUE7QUFBQSxFQUlwQixRQUFRLE1BQVU7QUFDdkIsV0FBTyxLQUFLLFlBQVc7QUFBQSxFQUFBO0FBQUE7QUFBQSxFQUlsQixTQUFTLE1BQVU7QUFDakIsV0FBQSxLQUFLLGFBQWE7QUFBQSxFQUFBO0FBQUE7QUFBQSxFQUlwQixRQUFRLE1BQVU7QUFDdkIsV0FBTyxLQUFLLFFBQU87QUFBQSxFQUFBO0FBQUE7QUFBQSxFQUlkLGFBQWEsTUFBVTtBQUM1QixXQUFPLEtBQUssT0FBTTtBQUFBLEVBQUE7QUFBQTtBQUFBLEVBSWIsMkJBQTJCLE1BQW1CO0FBQ25ELFVBQU0sVUFBc0M7QUFBQSxNQUMxQyxNQUFNO0FBQUEsTUFDTixPQUFPO0FBQUEsTUFDUCxLQUFLO0FBQUE7QUFFQSxXQUFBLElBQUksS0FBSyxlQUFlLHNCQUFzQixTQUFTLE9BQU8sRUFBRSxPQUFPLElBQUksS0FBSyxJQUFJLENBQUM7QUFBQSxFQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUXZGLGNBQWMsT0FBa0M7QUFDL0MsVUFBQSxZQUFZLElBQUksS0FBSyxlQUFlLHNCQUFzQixTQUFTLEVBQUUsT0FBTyxPQUFPO0FBQ3pGLFdBQU8sS0FBSyxPQUFPLElBQUksQ0FBQyxNQUFNLFVBQVUsT0FBTyxJQUFJLEtBQUssTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQUEsRUFBQTtBQUFBO0FBQUEsRUFJL0QsZUFBWTtBQUNYLFVBQUEsWUFBWSxJQUFJLEtBQUssZUFBZSxzQkFBc0IsU0FBUyxFQUFFLEtBQUssV0FBVztBQUMzRixXQUFPLEtBQUssT0FBTyxJQUFJLENBQUMsTUFBTSxVQUFVLE9BQU8sSUFBSSxLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQUEsRUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFuRSxrQkFBa0IsT0FBa0M7QUFDbkQsVUFBQSxZQUFZLElBQUksS0FBSyxlQUFlLHNCQUFzQixTQUFTLEVBQUUsU0FBUyxPQUFPO0FBQzNGLFdBQU8sS0FBSyxPQUFPLEdBQUcsQ0FBQyxNQUFNLFVBQVUsT0FBTyxJQUFJLEtBQUssTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFBQSxFQUFBO0FBQUE7QUFBQSxFQUlsRSxvQkFBaUI7QUFDZixXQUFBO0FBQUEsRUFBQTtBQUFBO0FBQUEsRUFJRixrQkFBa0IsTUFBVTtBQUNqQyxXQUFPLEtBQUssUUFBUSxLQUFLLHdCQUF3QixLQUFLLFFBQVEsSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQUEsRUFBQTtBQUFBO0FBQUEsRUFJdkYsUUFBSztBQUNILFdBQUEsSUFBSSxNQUFLLG9CQUFJLEtBQUksR0FBRyxTQUFTLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUFBLEVBQUE7QUFBQTtBQUFBLEVBSTFDLFdBQVcsTUFBYyxPQUFlLE1BQVk7QUFFckQsUUFBQSxRQUFRLEtBQUssUUFBUSxJQUFJO0FBQ3JCLFlBQUEsTUFBTSx3QkFBd0IsS0FBSyw0Q0FBNEM7QUFBQSxJQUFBO0FBR3ZGLFFBQUksT0FBTyxHQUFHO0FBQ04sWUFBQSxNQUFNLGlCQUFpQixJQUFJLG1DQUFtQztBQUFBLElBQUE7QUFHdEUsVUFBTSxTQUFTLEtBQUssd0JBQXdCLE1BQU0sUUFBUSxHQUFHLElBQUk7QUFFakUsUUFBSSxPQUFPLGFBQWEsTUFBTSxPQUFPO0FBQ25DLFlBQU0sTUFBTSxpQkFBaUIsSUFBSSwyQkFBMkIsS0FBSyxJQUFJO0FBQUEsSUFBQTtBQUdoRSxXQUFBO0FBQUEsRUFBQTtBQUFBO0FBQUEsRUFJRixlQUFlLEtBQVE7QUFDNUIsV0FBTyxlQUFlO0FBQUEsRUFBQTtBQUFBO0FBQUEsRUFJakIsUUFBUSxNQUE2QjtBQUMxQyxXQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLFNBQVM7QUFBQSxFQUFBO0FBQUE7QUFBQSxFQUlqQyxNQUFNLE1BQVU7QUFDckIsV0FBTyxJQUFJLEtBQUssS0FBSyxTQUFTO0FBQUEsRUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVF6QixpQkFBaUIsTUFBWSxPQUFhO0FBQy9DLFdBQU8sS0FBSyxrQkFBa0IsTUFBTSxRQUFRLEVBQUU7QUFBQSxFQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUXpDLGtCQUFrQixNQUFZLFFBQWM7QUFDM0MsVUFBQSxjQUFjLEtBQUssU0FBQSxJQUFhO0FBQ2hDLFVBQUEsdUJBQXVCLElBQUksS0FBSyxLQUFLLFlBQWUsR0FBQSxhQUFhLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUM5RSxVQUFBLGNBQWMsS0FBSyxrQkFBa0Isb0JBQW9CO0FBRS9ELFdBQU8sSUFBSSxLQUFLLEtBQUssTUFBTSxJQUFJLEVBQUUsU0FBUyxhQUFhLEtBQUssSUFBSSxhQUFhLEtBQUssUUFBUyxDQUFBLENBQUMsQ0FBQztBQUFBLEVBQUE7QUFBQTtBQUFBLEVBSXhGLGdCQUFnQixNQUFZLE1BQVk7QUFDdkMsVUFBQSxZQUFZLEtBQUssUUFBQSxJQUFZO0FBQ25DLFdBQU8sSUFBSSxLQUFLLEtBQUssWUFBZSxHQUFBLEtBQUssWUFBWSxXQUFXLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFBQSxFQUFBO0FBQUE7QUFBQSxFQUk1RCxZQUFZLE1BQW9DO0FBQzFELFFBQUEsT0FBTyxTQUFTLFVBQVU7QUFDNUIsVUFBSSxDQUFDLE1BQU07QUFDRixlQUFBO0FBQUEsaUJBQ0UsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLEdBQUc7QUFDL0IsZUFBTyxLQUFLLG1CQUFtQixJQUFJLEtBQUssQ0FBQyxPQUFPLEdBQUksQ0FBQztBQUFBLE1BSTVDLFdBQUEsZUFBZSxLQUFLLElBQUksR0FBRztBQUM3QixlQUFBLEtBQUssbUJBQW1CLElBQUksS0FBSyxLQUFLLFNBQVMsR0FBRyxJQUFJLE9BQU8sT0FBTyxXQUFXLENBQUM7QUFBQSxNQUFBO0FBQUEsSUFDekYsV0FDUyxPQUFPLFNBQVMsVUFBVTtBQUNuQyxhQUFPLEtBQUssbUJBQW1CLElBQUksS0FBSyxPQUFPLEdBQUksQ0FBQztBQUFBLElBQUE7QUFFL0MsV0FBQSxNQUFNLFlBQVksSUFBSTtBQUFBLEVBQUE7QUFBQTtBQUFBLEVBSXhCLE1BQU0sT0FBa0MsS0FBUztBQUN0RCxRQUFJLENBQUMsT0FBTztBQUNILGFBQUE7QUFBQSxJQUFBO0FBR1QsVUFBTSxnQkFBZ0IsTUFBTSxRQUFRLE9BQU8sR0FBRyxFQUFFO0FBRTFDLFVBQUEsUUFBNkMsK0NBQWUsTUFBTTtBQUN4RSxRQUNFLENBQUMsU0FDRCxNQUFNLFVBQVUsS0FDaEIsTUFBTSxVQUFVLEtBQ2hCLE1BQU0sS0FBSyxDQUFDLE1BQU0sTUFBTSxNQUFTLEtBQ2pDLENBQUMsS0FBSyxRQUFRLEtBQUssV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQzlEO0FBQ08sYUFBQTtBQUFBLElBQUE7QUFHTCxRQUFBLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFFbkIsUUFBSSxPQUFPLFNBQVMsWUFBWSxPQUFPLE9BQU8sUUFBUSxHQUFHO0FBQ3ZELFlBQU0sUUFBUSxJQUFJLFlBQVcsSUFBSyxNQUFPLEtBQUs7QUFDOUMsYUFBTyxRQUFRLFFBQVEsTUFBTyxPQUFPLE9BQU87QUFBQSxJQUFBO0FBR3ZDLFdBQUEsSUFBSSxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFBQSxFQUFBO0FBQUEsRUFHaEMsVUFBTztBQUNkLFdBQUEsb0JBQUksS0FBSyxHQUFHO0FBQUEsRUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFiLE9BQVUsUUFBZ0IsZUFBbUM7QUFDbkUsV0FBTyxNQUFNLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUcsTUFBTSxjQUFjLENBQUMsQ0FBQztBQUFBLEVBQUE7QUFBQTtBQUFBLEVBSXRELHdCQUF3QixNQUFjLE9BQWUsTUFBWTtBQUN2RSxVQUFNLFNBQVMsSUFBSSxLQUFLLE1BQU0sT0FBTyxJQUFJO0FBR3JDLFFBQUEsUUFBUSxLQUFLLE9BQU8sS0FBSztBQUMzQixhQUFPLFlBQVksS0FBSyxRQUFRLE1BQU0sSUFBSSxJQUFJO0FBQUEsSUFBQTtBQUV6QyxXQUFBO0FBQUEsRUFBQTtBQUVWO0FBRVksTUFBQSxxQkFBcUIsSUFBSTsifQ==
|
|
294
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RhdGV0aW1lL2RhdGUtYWRhcHRlci50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RhdGV0aW1lL25hdGl2ZS1kYXRlLWFkYXB0ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IERBWVNfUEVSX1JPVzogbnVtYmVyID0gNztcbmV4cG9ydCBjb25zdCBNT05USFNfUEVSX1JPVzogbnVtYmVyID0gNDtcbmV4cG9ydCBjb25zdCBZRUFSU19QRVJfUk9XOiBudW1iZXIgPSA0O1xuZXhwb3J0IGNvbnN0IFlFQVJTX1BFUl9QQUdFOiBudW1iZXIgPSAyNDtcbmV4cG9ydCBjb25zdCBGT1JNQVRfREFURSA9XG4gIC8oXjA/WzEtOV0/fFsxMl0/WzAtOV0/fDM/WzAxXT8pWy4sXFxcXC9cXC1cXHNdKDA/WzEtOV0/fDE/WzAtMl0/KT9bLixcXFxcL1xcLVxcc10oXFxkezEsNH0kKT8vO1xuXG4vKipcbiAqIEFic3RyYWN0IGRhdGUgZnVuY3Rpb25hbGl0eS5cbiAqXG4gKiBBZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9ibG9iL21haW4vc3JjL21hdGVyaWFsL2NvcmUvZGF0ZXRpbWUvZGF0ZS1hZGFwdGVyLnRzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYXRlQWRhcHRlcjxUID0gYW55PiB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIHllYXIgYXMgYSBudW1iZXIuXG4gICAqIEBwYXJhbSBkYXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0WWVhcihkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG1vbnRoIGFzIGEgbnVtYmVyLlxuICAgKiBBdHRlbnRpb246IFRoaXMgcmV0dXJucyAxLTEyIGFuZCBtaXRpZ2F0ZXMgdGhlIGRlZmF1bHQgSmF2YVNjcmlwdCBEYXRlIGJlaGF2aW9yLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldE1vbnRoKGRhdGU6IFQpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGF5IG9mIHRoZSBtb250aCBhcyBhIG51bWJlci5cbiAgICogQHBhcmFtIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXRlKGRhdGU6IFQpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgRGF5IG9mIHRoZSB3ZWVrIGFzIGEgbnVtYmVyLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldERheU9mV2VlayhkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKiBHZXQgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMDogc3VuZGF5OyAxOiBtb25kYXk7IGV0Yy4pLiAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0Rmlyc3REYXlPZldlZWsoKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG51bWJlciBvZiBkYXlzIGluIGEgbW9udGguXG4gICAqIEBwYXJhbSB5ZWFyXG4gICAqIEBwYXJhbSBtb250aFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldE51bURheXNJbk1vbnRoKGRhdGU6IFQpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSBtb250aHMgaW4gYSBnaXZlbiBzdHlsZS5cbiAgICogQHBhcmFtIHN0eWxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW107XG5cbiAgLyoqIEdldCBhIHN0cmluZyBhcnJheSB3aXRoIGxlbmd0aCA9IDMxLCBmaWxsZWQgd2l0aCB0aGUgZGF5cyBpbiBhIG1vbnRoLCBzdGFydGluZyBmcm9tIDEuICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXRlTmFtZXMoKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSB3ZWVrIGRheXMgaW4gYSBnaXZlbiBzdHlsZS5cbiAgICogQHBhcmFtIHN0eWxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0RGF5T2ZXZWVrTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdO1xuXG4gIC8qKiBDcmVhdGVzIHRvZGF5J3MgZGF0ZS4gKi9cbiAgcHVibGljIGFic3RyYWN0IHRvZGF5KCk6IFQ7XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gYGRhdGVgIGlzIHZhbGlkLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGlzVmFsaWQoZGF0ZTogVCB8IG51bGwgfCB1bmRlZmluZWQpOiBkYXRlIGlzIFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBieSBjbG9uaW5nIHRoZSBnaXZlbiBvbmUuXG4gICAqIEBwYXJhbSBkYXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgY2xvbmUoZGF0ZTogVCk6IFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSwgZ2l2ZW4gZGF5LCBtb250aCBhbmQgeWVhcjsgd2l0aG91dCBkYXRlJ3Mgb3ZlcmZsb3cuXG4gICAqIEBwYXJhbSB5ZWFyXG4gICAqIEBwYXJhbSBtb250aCBUaGUgbW9udGggb2YgdGhlIGRhdGUgKDEtaW5kZXhlZCwgMSA9IEphbnVhcnkpLiBNdXN0IGJlIGFuIGludGVnZXIgMSAtIDEyLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGNyZWF0ZURhdGUoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXRlOiBudW1iZXIpOiBUO1xuXG4gIC8qKlxuICAgKiBBdHRlbXB0cyB0byBkZXNlcmlhbGl6ZSBhIHZhbHVlIHRvIGEgdmFsaWQgZGF0ZSBvYmplY3QuIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gcGFyc2luZyBpbiB0aGF0XG4gICAqIGRlc2VyaWFsaXplIHNob3VsZCBvbmx5IGFjY2VwdCBub24tYW1iaWd1b3VzLCBsb2NhbGUtaW5kZXBlbmRlbnQgZm9ybWF0cyAoZS5nLiBhIElTTyA4NjAxXG4gICAqIHN0cmluZykuIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGFsbG93IGFueSBkZXNlcmlhbGl6YXRpb24sIGl0IHNpbXBseSBjaGVja3MgdGhhdFxuICAgKiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYWxyZWFkeSBhIHZhbGlkIGRhdGUgb2JqZWN0IG9yIG51bGwuXG4gICAqIEBwYXJhbSB2YWx1ZSBFaXRoZXIgRGF0ZSwgSVNPU3RyaW5nLCBVbml4IFRpbWVzdGFtcCAobnVtYmVyIG9mIHNlY29uZHMgc2luY2UgSmFuIDEsIDE5NzApLlxuICAgKiBAcmV0dXJucyBUaGUgZGF0ZSBpZiB0aGUgaW5wdXQgaXMgdmFsaWQsIGBudWxsYCBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgZGVzZXJpYWxpemUodmFsdWU6IFQgfCBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKTogVCB8IG51bGwge1xuICAgIGlmIChcbiAgICAgIHZhbHVlID09IG51bGwgfHxcbiAgICAgICh0aGlzLmlzRGF0ZUluc3RhbmNlKHZhbHVlKSAmJiB0aGlzLmlzVmFsaWQodmFsdWUgYXMgVCB8IG51bGwgfCB1bmRlZmluZWQpKVxuICAgICkge1xuICAgICAgcmV0dXJuIHZhbHVlIGFzIFQgfCBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBkYXRlIGFkZGluZyB0aGUgbnVtYmVyIG9mIHByb3ZpZGVkIGB5ZWFyc2AgdG8gdGhlIHByb3ZpZGVkIGBkYXRlYC5cbiAgICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUuXG4gICAqIEBwYXJhbSB5ZWFycyBUaGUgbnVtYmVyIG9mIHllYXJzIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBhZGRDYWxlbmRhclllYXJzKGRhdGU6IFQsIHllYXJzOiBudW1iZXIpOiBUO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGRhdGUgYWRkaW5nIHRoZSBudW1iZXIgb2YgcHJvdmlkZWQgYG1vbnRoc2AgdG8gdGhlIHByb3ZpZGVkIGBkYXRlYC5cbiAgICogSWYgdGhlIGNhbGN1bGF0ZWQgbW9udGggaGFzIGZld2VyIGRheXMgdGhhbiB0aGUgb3JpZ2luYWwgb25lLCB0aGUgZGF0ZSBpcyBzZXQgdG8gdGhlIGxhc3QgZGF5IG9mIHRoZSBtb250aC5cbiAgICogRS5nLiB3aXRoIGBkYXRlYCA9IG5ldyBEYXRlKDIwMjIsIDAsIDMxKSBhbmQgYG1vbnRoc2AgPSAxLCBpdCByZXR1cm5zIG5ldyBEYXRlKDIwMjIsIDEsIDI4KS5cbiAgICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUuXG4gICAqIEBwYXJhbSBtb250aHMgVGhlIG51bWJlciBvZiBtb250aHMgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGFkZENhbGVuZGFyTW9udGhzKGRhdGU6IFQsIG1vbnRoczogbnVtYmVyKTogVDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBkYXRlIGJ5IGFkZGluZyB0aGUgbnVtYmVyIG9mIHByb3ZpZGVkIGBkYXlzYCB0byB0aGUgcHJvdmlkZWQgYGRhdGVgLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZS5cbiAgICogQHBhcmFtIGRheXMgVGhlIG51bWJlciBvZiBkYXlzIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBhZGRDYWxlbmRhckRheXMoZGF0ZTogVCwgZGF5czogbnVtYmVyKTogVDtcblxuICAvKipcbiAgICogR2V0IHRoZSBkYXRlIGluIHRoZSBsb2NhbCBmb3JtYXQuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGZvcm1hdFxuICAgKiBAcmV0dXJucyBUaGUgYGRhdGVgIGluIHRoZSBsb2NhbCBmb3JtYXQgYXMgc3RyaW5nLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldEFjY2Vzc2liaWxpdHlGb3JtYXREYXRlKGRhdGU6IFQgfCBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZ2l2ZW4gc3RyaW5nIGFzIERhdGUuXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgZGF0ZSBpbiB0aGUgZm9ybWF0IERELk1NLllZWVkuXG4gICAqIEBwYXJhbSBub3cgVGhlIGN1cnJlbnQgZGF0ZSBhcyBEYXRlLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHBhcnNlKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLCBub3c6IFQpOiBUIHwgbnVsbDtcblxuICAvKipcbiAgICogRm9ybWF0IHRoZSBnaXZlbiBkYXRlIGFzIHN0cmluZy5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZm9ybWF0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25zIG9iamVjdCB3aXRoIHdlZWtkYXlTdHlsZSBhcyBwcm9wZXJ0eVxuICAgKi9cbiAgcHVibGljIGZvcm1hdChcbiAgICBkYXRlOiBUIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBvcHRpb25zPzogeyB3ZWVrZGF5U3R5bGU/OiAnbG9uZycgfCAnc2hvcnQnIHwgJ25hcnJvdycgfSxcbiAgKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZChkYXRlKSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gbmV3IERhdGUodGhpcy50b0lzbzg2MDEoZGF0ZSEpICsgJ1QwMDowMDowMCcpO1xuICAgIGNvbnN0IGRhdGVGb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZGUtQ0gnLCB7XG4gICAgICBkYXk6ICcyLWRpZ2l0JyxcbiAgICAgIG1vbnRoOiAnMi1kaWdpdCcsXG4gICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgfSk7XG5cbiAgICBjb25zdCB3ZWVrZGF5U3R5bGUgPSBvcHRpb25zPy53ZWVrZGF5U3R5bGUgPz8gJ3Nob3J0JztcbiAgICBsZXQgd2Vla2RheSA9IHRoaXMuZ2V0RGF5T2ZXZWVrTmFtZXMod2Vla2RheVN0eWxlKVt0aGlzLmdldERheU9mV2VlayhkYXRlISldO1xuICAgIHdlZWtkYXkgPSB3ZWVrZGF5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd2Vla2RheS5zdWJzdHJpbmcoMSk7XG4gICAgLy8gV2UgaGF2ZSB0aGUgc3BlY2lhbCByZXF1aXJlbWVudCBmb3IgZGF0ZSBmb3JtYXRzIGF0IFNCQiwgd2hlcmUgdGhlIHNob3J0IGZvcm1cbiAgICAvLyBmb3Igd2Vla2RheXMgc2hvdWxkIGJlIHR3byBjaGFyYWN0ZXJzIGluIGxlbmd0aC5cbiAgICBpZiAod2Vla2RheVN0eWxlID09PSAnc2hvcnQnKSB7XG4gICAgICB3ZWVrZGF5ID0gd2Vla2RheS5zdWJzdHJpbmcoMCwgMik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3dlZWtkYXl9LCAke2RhdGVGb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBgb2JqYCBpcyBhIERhdGUuXG4gICAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byBjaGVjay5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBpc0RhdGVJbnN0YW5jZShvYmo6IGFueSk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEdldHMgZGF0ZSBpbnN0YW5jZSB0aGF0IGlzIG5vdCB2YWxpZC5cbiAgICogQHJldHVybnMgQW4gaW52YWxpZCBkYXRlLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGludmFsaWQoKTogVDtcblxuICAvKipcbiAgICogR2V0IHRoZSBnaXZlbiBkYXRlIGFzIElTTyBTdHJpbmcuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGNvbnZlcnQgdG8gSVNPIFN0cmluZy5cbiAgICovXG4gIHB1YmxpYyB0b0lzbzg2MDEoZGF0ZTogVCk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFkID0gKHZhbHVlOiBudW1iZXIsIGxlbmd0aCA9IDIpOiBzdHJpbmcgPT4gYCR7dmFsdWV9YC5wYWRTdGFydChsZW5ndGgsICcwJyk7XG4gICAgcmV0dXJuIGAke3BhZCh0aGlzLmdldFllYXIoZGF0ZSksIDQpfS0ke3BhZCh0aGlzLmdldE1vbnRoKGRhdGUpKX0tJHtwYWQodGhpcy5nZXREYXRlKGRhdGUpKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgcG90ZW50aWFsIGRhdGUgb2JqZWN0LCByZXR1cm5zIHRoYXQgc2FtZSBkYXRlIG9iamVjdCBpZiBpdCBpc1xuICAgKiBhIHZhbGlkIGRhdGUsIG9yIGBudWxsYCBpZiBpdCdzIG5vdCBhIHZhbGlkIGRhdGUuXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgb2JqZWN0IHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBBIGRhdGUgb3IgYG51bGxgLlxuICAgKi9cbiAgcHVibGljIGdldFZhbGlkRGF0ZU9yTnVsbCh2YWx1ZTogdW5rbm93bik6IFQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5pc0RhdGVJbnN0YW5jZSh2YWx1ZSkgJiYgdGhpcy5pc1ZhbGlkKHZhbHVlIGFzIFQpID8gKHZhbHVlIGFzIFQpIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBkYXkgb2YgdGhlIHdlZWsgb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgbW9udGgsIGFuZCB0aGVuIGl0cyBvZmZzZXQgZnJvbSB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgKi9cbiAgcHVibGljIGdldEZpcnN0V2Vla09mZnNldChkYXRlOiBUKTogbnVtYmVyIHtcbiAgICBjb25zdCBmaXJzdE9mTW9udGggPSB0aGlzLmNyZWF0ZURhdGUodGhpcy5nZXRZZWFyKGRhdGUpLCB0aGlzLmdldE1vbnRoKGRhdGUpLCAxKSE7XG4gICAgcmV0dXJuIChcbiAgICAgIChEQVlTX1BFUl9ST1cgKyB0aGlzLmdldERheU9mV2VlayhmaXJzdE9mTW9udGgpIC0gdGhpcy5nZXRGaXJzdERheU9mV2VlaygpKSAlIERBWVNfUEVSX1JPV1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZXMgdHdvIGRhdGVzLlxuICAgKiBAcGFyYW0gZmlyc3QgVGhlIGZpcnN0IGRhdGUgdG8gY29tcGFyZS5cbiAgICogQHBhcmFtIHNlY29uZCBUaGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZS5cbiAgICogQHJldHVybnMgMCBpZiB0aGUgZGF0ZXMgYXJlIGVxdWFsLCBhIG51bWJlciBsZXNzIHRoYW4gMCBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBlYXJsaWVyLFxuICAgKiAgICAgYSBudW1iZXIgZ3JlYXRlciB0aGFuIDAgaWYgdGhlIGZpcnN0IGRhdGUgaXMgbGF0ZXIuXG4gICAqL1xuICBwdWJsaWMgY29tcGFyZURhdGUoZmlyc3Q6IFQsIHNlY29uZDogVCk6IG51bWJlciB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZ2V0WWVhcihmaXJzdCkgLSB0aGlzLmdldFllYXIoc2Vjb25kKSB8fFxuICAgICAgdGhpcy5nZXRNb250aChmaXJzdCkgLSB0aGlzLmdldE1vbnRoKHNlY29uZCkgfHxcbiAgICAgIHRoaXMuZ2V0RGF0ZShmaXJzdCkgLSB0aGlzLmdldERhdGUoc2Vjb25kKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHR3byBkYXRlcyBhcmUgZXF1YWwuXG4gICAqIEBwYXJhbSBmaXJzdCBUaGUgZmlyc3QgZGF0ZSB0byBjaGVjay5cbiAgICogQHBhcmFtIHNlY29uZCBUaGUgc2Vjb25kIGRhdGUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHR3byBkYXRlcyBhcmUgZXF1YWwuXG4gICAqICAgICBOdWxsIGRhdGVzIGFyZSBjb25zaWRlcmVkIGVxdWFsIHRvIG90aGVyIG51bGwgZGF0ZXMuXG4gICAqL1xuICBwdWJsaWMgc2FtZURhdGUoZmlyc3Q6IFQgfCBudWxsLCBzZWNvbmQ6IFQgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKGZpcnN0ICYmIHNlY29uZCkge1xuICAgICAgY29uc3QgZmlyc3RWYWxpZCA9IHRoaXMuaXNWYWxpZChmaXJzdCk7XG4gICAgICBjb25zdCBzZWNvbmRWYWxpZCA9IHRoaXMuaXNWYWxpZChzZWNvbmQpO1xuICAgICAgaWYgKGZpcnN0VmFsaWQgJiYgc2Vjb25kVmFsaWQpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmNvbXBhcmVEYXRlKGZpcnN0LCBzZWNvbmQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpcnN0VmFsaWQgPT0gc2Vjb25kVmFsaWQ7XG4gICAgfVxuICAgIHJldHVybiBmaXJzdCA9PSBzZWNvbmQ7XG4gIH1cblxuICAvKipcbiAgICogQ2xhbXAgdGhlIGdpdmVuIGRhdGUgYmV0d2VlbiBtaW4gYW5kIG1heCBkYXRlcy5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY2xhbXAuXG4gICAqIEBwYXJhbSBtaW4gVGhlIG1pbmltdW0gdmFsdWUgdG8gYWxsb3cuIElmIG51bGwgb3Igb21pdHRlZCBubyBtaW4gaXMgZW5mb3JjZWQuXG4gICAqIEBwYXJhbSBtYXggVGhlIG1heGltdW0gdmFsdWUgdG8gYWxsb3cuIElmIG51bGwgb3Igb21pdHRlZCBubyBtYXggaXMgZW5mb3JjZWQuXG4gICAqIEByZXR1cm5zIGBtaW5gIGlmIGBkYXRlYCBpcyBsZXNzIHRoYW4gYG1pbmAsIGBtYXhgIGlmIGRhdGUgaXMgZ3JlYXRlciB0aGFuIGBtYXhgLFxuICAgKiAgICAgb3RoZXJ3aXNlIGBkYXRlYC5cbiAgICovXG4gIHB1YmxpYyBjbGFtcERhdGUoZGF0ZTogVCwgbWluPzogVCB8IG51bGwsIG1heD86IFQgfCBudWxsKTogVCB7XG4gICAgaWYgKG1pbiAmJiB0aGlzLmNvbXBhcmVEYXRlKGRhdGUsIG1pbikgPCAwKSB7XG4gICAgICByZXR1cm4gbWluO1xuICAgIH1cbiAgICBpZiAobWF4ICYmIHRoaXMuY29tcGFyZURhdGUoZGF0ZSwgbWF4KSA+IDApIHtcbiAgICAgIHJldHVybiBtYXg7XG4gICAgfVxuICAgIHJldHVybiBkYXRlO1xuICB9XG59XG4iLCJpbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVMaWtlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy5qcyc7XG5cbmltcG9ydCB7IERhdGVBZGFwdGVyLCBGT1JNQVRfREFURSB9IGZyb20gJy4vZGF0ZS1hZGFwdGVyLmpzJztcblxuLyoqXG4gKiBNYXRjaGVzIHN0cmluZ3MgdGhhdCBoYXZlIHRoZSBmb3JtIG9mIGEgdmFsaWQgUkZDIDMzMzkgc3RyaW5nXG4gKiAoaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkpLiBOb3RlIHRoYXQgdGhlIHN0cmluZyBtYXkgbm90IGFjdHVhbGx5IGJlIGEgdmFsaWQgZGF0ZVxuICogYmVjYXVzZSB0aGUgcmVnZXggd2lsbCBtYXRjaCBzdHJpbmdzIGFuIHdpdGhvdXQgb2YgYm91bmRzIG1vbnRoLCBkYXRlLCBldGMuXG4gKi9cbmNvbnN0IElTT184NjAxX1JFR0VYID1cbiAgL15cXGR7NH0tXFxkezJ9LVxcZHsyfSg/OlRcXGR7Mn06XFxkezJ9OlxcZHsyfSg/OlxcLlxcZCspPyg/Olp8KD86KD86XFwrfC0pXFxkezJ9OlxcZHsyfSkpPyk/JC87XG5cbmV4cG9ydCBjbGFzcyBOYXRpdmVEYXRlQWRhcHRlciBleHRlbmRzIERhdGVBZGFwdGVyPERhdGU+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3V0b2ZmWWVhck9mZnNldDogbnVtYmVyO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihjdXRvZmZZZWFyT2Zmc2V0OiBudW1iZXIgPSAxNSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fY3V0b2ZmWWVhck9mZnNldCA9IGN1dG9mZlllYXJPZmZzZXQ7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgeWVhciBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldFllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBtb250aCBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldE1vbnRoKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmdldE1vbnRoKCkgKyAxO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGRheSBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldERhdGUoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0RGF0ZSgpO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGRheSBvZiB0aGUgd2VlayBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldERheU9mV2VlayhkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5nZXREYXkoKTtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBkYXRlIGluIHRoZSBsb2NhbCBmb3JtYXQuICovXG4gIHB1YmxpYyBnZXRBY2Nlc3NpYmlsaXR5Rm9ybWF0RGF0ZShkYXRlOiBEYXRlIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBvcHRpb25zOiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHtcbiAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgIG1vbnRoOiAnbG9uZycsXG4gICAgICBkYXk6ICdudW1lcmljJyxcbiAgICB9O1xuICAgIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudCwgb3B0aW9ucykuZm9ybWF0KG5ldyBEYXRlKGRhdGUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHN0cmluZ3Mgd2l0aCBsZW5ndGggPSAxMiwgZmlsbGVkIHdpdGggdGhlIG5hbWUgb2YgdGhlIG1vbnRocyBzdGFydGluZyBmcm9tIEphbnVhcnksIGluIHRoZSBkb2N1bWVudCBsYW5ndWFnZS5cbiAgICogQHBhcmFtIHN0eWxlIFNlZSBgbW9udGhgIGluIGBEYXRlVGltZUZvcm1hdE9wdGlvbnNgOiBgbG9uZ2AgZm9yIGZ1bGwgbmFtZSwgYHNob3J0YCBmb3Igc2hvcnQgbmFtZSwgYG5hcnJvd2AgZm9yIHNpbmdsZSBsZXR0ZXIsXG4gICAqIEUuZy4sIHdpdGggSmFudWFyeSBpbiBlbi1nYjogYGxvbmdgIHJldHVybnMgXCJKYW51YXJ5XCIsIGBzaG9ydGAgcmV0dXJucyBcIkphblwiLCBgbmFycm93YCByZXR1cm5zIFwiSlwiLlxuICAgKi9cbiAgcHVibGljIGdldE1vbnRoTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudCwgeyBtb250aDogc3R5bGUgfSk7XG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlKDEyLCAoaSkgPT4gZm9ybWF0dGVyLmZvcm1hdChuZXcgRGF0ZSgyMDE3LCBpLCAxKSkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBzdHJpbmcgYXJyYXkgd2l0aCBsZW5ndGggPSAzMSwgZmlsbGVkIHdpdGggdGhlIGRheXMgaW4gYSBtb250aCwgc3RhcnRpbmcgZnJvbSAxLiAqL1xuICBwdWJsaWMgZ2V0RGF0ZU5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudCwgeyBkYXk6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2UoMzEsIChpKSA9PiBmb3JtYXR0ZXIuZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDAsIGkgKyAxKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzdHJpbmcgYXJyYXkgd2l0aCBsZW5ndGggPSA3LCBmaWxsZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgZGF5cyBpbiBhIHdlZWsgc3RhcnRpbmcgZnJvbSBTdW5kYXksIGluIHRoZSBkb2N1bWVudCBsYW5ndWFnZS5cbiAgICogQHBhcmFtIHN0eWxlIFNlZSBgd2Vla2RheWAgaW4gYERhdGVUaW1lRm9ybWF0T3B0aW9uc2AgLSAnbG9uZycgZm9yIGZ1bGwgbmFtZSwgJ3Nob3J0JyBmb3Igc2hvcnQgbmFtZSwgJ25hcnJvdycgZm9yIHNpbmdsZSBsZXR0ZXI7XG4gICAqIEUuZy4sIHdpdGggTW9uZGF5IGluIGVuLWdiOiBgbG9uZ2AgcmV0dXJucyBcIk1vbmRheVwiLCBgc2hvcnRgIHJldHVybnMgXCJNb25cIiwgYG5hcnJvd2AgcmV0dXJucyBcIk1cIi5cbiAgICovXG4gIHB1YmxpYyBnZXREYXlPZldlZWtOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFNiYkxhbmd1YWdlQ29udHJvbGxlci5jdXJyZW50LCB7IHdlZWtkYXk6IHN0eWxlIH0pO1xuICAgIHJldHVybiB0aGlzLl9yYW5nZSg3LCAoaSkgPT4gZm9ybWF0dGVyLmZvcm1hdChuZXcgRGF0ZSgyMDE3LCAwLCBpICsgMSkpKTtcbiAgfVxuXG4gIC8qIERlZmluZXMgd2hpY2ggaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMDogc3VuZGF5OyAxOiBtb25kYXk7IGV0Yy4pLiAqL1xuICBwdWJsaWMgZ2V0Rmlyc3REYXlPZldlZWsoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIC8qKiBDYWxjdWxhdGVzIHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIG1vbnRoIGdpdmVuIHRoZSB5ZWFyIGFuZCB0aGUgbW9udGguICovXG4gIHB1YmxpYyBnZXROdW1EYXlzSW5Nb250aChkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXREYXRlKHRoaXMuX2NyZWF0ZURhdGVXaXRoT3ZlcmZsb3codGhpcy5nZXRZZWFyKGRhdGUpLCB0aGlzLmdldE1vbnRoKGRhdGUpLCAwKSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyB0b2RheSdzIGRhdGUuICovXG4gIHB1YmxpYyB0b2RheSgpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUobmV3IERhdGUoKS5zZXRIb3VycygwLCAwLCAwLCAwKSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBkYXRlLCBnaXZlbiBkYXksIG1vbnRoIGFuZCB5ZWFyOyB0aGUgbWV0aG9kIGRvZXNuJ3QgYWxsb3cgZGF0ZSdzIG92ZXJmbG93LiAqL1xuICBwdWJsaWMgY3JlYXRlRGF0ZSh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRhdGU6IG51bWJlcik6IERhdGUge1xuICAgIC8vIENoZWNrIGZvciBpbnZhbGlkIG1vbnRoIGFuZCBkYXRlIChleGNlcHQgdXBwZXIgYm91bmQgb24gZGF0ZSB3aGljaCB3ZSBoYXZlIHRvIGNoZWNrIGFmdGVyIGNyZWF0aW5nIHRoZSBEYXRlKS5cbiAgICBpZiAobW9udGggPCAxIHx8IG1vbnRoID4gMTIpIHtcbiAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkIG1vbnRoIGluZGV4IFwiJHttb250aH1cIi4gTW9udGggaW5kZXggaGFzIHRvIGJlIGJldHdlZW4gMSBhbmQgMTIuYCk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGUgPCAxKSB7XG4gICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBkYXRlIFwiJHtkYXRlfVwiLiBEYXRlIGhhcyB0byBiZSBncmVhdGVyIHRoYW4gMC5gKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHllYXIsIG1vbnRoIC0gMSwgZGF0ZSk7XG4gICAgLy8gQ2hlY2sgdGhhdCB0aGUgZGF0ZSB3YXNuJ3QgYWJvdmUgdGhlIHVwcGVyIGJvdW5kIGZvciB0aGUgbW9udGgsIGNhdXNpbmcgdGhlIG1vbnRoIHRvIG92ZXJmbG93XG4gICAgaWYgKHJlc3VsdC5nZXRNb250aCgpICsgMSAhPT0gbW9udGgpIHtcbiAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkIGRhdGUgXCIke2RhdGV9XCIgZm9yIG1vbnRoIHdpdGggaW5kZXggXCIke21vbnRofVwiLmApO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGBvYmpgIGlzIGEgRGF0ZS4gKi9cbiAgcHVibGljIGlzRGF0ZUluc3RhbmNlKG9iajogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIERhdGU7XG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGBkYXRlYCBpcyBhIHZhbGlkIERhdGUuICovXG4gIHB1YmxpYyBpc1ZhbGlkKGRhdGU6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkKTogZGF0ZSBpcyBEYXRlIHtcbiAgICByZXR1cm4gISFkYXRlICYmICFpc05hTihkYXRlLnZhbHVlT2YoKSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBkYXRlIGJ5IGNsb25pbmcgdGhlIGdpdmVuIG9uZS4gKi9cbiAgcHVibGljIGNsb25lKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS52YWx1ZU9mKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgeWVhcnNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlLlxuICAgKiBAcGFyYW0geWVhcnMgVGhlIG51bWJlciBvZiB5ZWFycyB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWRkQ2FsZW5kYXJZZWFycyhkYXRlOiBEYXRlLCB5ZWFyczogbnVtYmVyKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ2FsZW5kYXJNb250aHMoZGF0ZSwgeWVhcnMgKiAxMik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBkYXRlIGFkZGluZyB0aGUgbnVtYmVyIG9mIHByb3ZpZGVkIGBtb250aHNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIElmIHRoZSBjYWxjdWxhdGVkIG1vbnRoIGhhcyBmZXdlciBkYXlzIHRoYW4gdGhlIG9yaWdpbmFsIG9uZSwgdGhlIGRhdGUgaXMgc2V0IHRvIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGguXG4gICAqIEUuZy4sIHdpdGggYGRhdGVgID0gbmV3IERhdGUoMjAyMiwgMCwgMzEpIGFuZCBgbW9udGhzYCA9IDEsIGl0IHJldHVybnMgbmV3IERhdGUoMjAyMiwgMSwgMjgpLlxuICAgKi9cbiAgcHVibGljIGFkZENhbGVuZGFyTW9udGhzKGRhdGU6IERhdGUsIG1vbnRoczogbnVtYmVyKTogRGF0ZSB7XG4gICAgY29uc3QgdGFyZ2V0TW9udGggPSBkYXRlLmdldE1vbnRoKCkgKyBtb250aHM7XG4gICAgY29uc3QgZGF0ZVdpdGhDb3JyZWN0TW9udGggPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIHRhcmdldE1vbnRoLCAxLCAwLCAwLCAwLCAwKTtcbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IHRoaXMuZ2V0TnVtRGF5c0luTW9udGgoZGF0ZVdpdGhDb3JyZWN0TW9udGgpO1xuICAgIC8vIEFkYXB0IHRoZSBsYXN0IGRheSBvZiBtb250aCBmb3Igc2hvcnRlciBtb250aHNcbiAgICByZXR1cm4gbmV3IERhdGUodGhpcy5jbG9uZShkYXRlKS5zZXRNb250aCh0YXJnZXRNb250aCwgTWF0aC5taW4oZGF5c0luTW9udGgsIGRhdGUuZ2V0RGF0ZSgpKSkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBuZXcgZGF0ZSBieSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgZGF5c2AgdG8gdGhlIHByb3ZpZGVkIGBkYXRlYC4gKi9cbiAgcHVibGljIGFkZENhbGVuZGFyRGF5cyhkYXRlOiBEYXRlLCBkYXlzOiBudW1iZXIpOiBEYXRlIHtcbiAgICBjb25zdCB0YXJnZXREYXkgPSBkYXRlLmdldERhdGUoKSArIGRheXM7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCB0YXJnZXREYXksIDAsIDAsIDAsIDApO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBEYXRlIGZyb20gYSB2YWxpZCBpbnB1dCAoRGF0ZSwgc3RyaW5nIG9yIG51bWJlciBpbiBzZWNvbmRzKS4gKi9cbiAgcHVibGljIG92ZXJyaWRlIGRlc2VyaWFsaXplKGRhdGU6IFNiYkRhdGVMaWtlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoIWRhdGUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IGVsc2UgaWYgKCFOdW1iZXIuaXNOYU4oK2RhdGUpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbGlkRGF0ZU9yTnVsbChuZXcgRGF0ZSgrZGF0ZSAqIDEwMDApKTtcblxuICAgICAgICAvLyBUaGUgYERhdGVgIGNvbnN0cnVjdG9yIGFjY2VwdHMgZm9ybWF0cyBvdGhlciB0aGFuIElTTyA4NjAxLCBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVcbiAgICAgICAgLy8gc3RyaW5nIGlzIHRoZSByaWdodCBmb3JtYXQgZmlyc3QuXG4gICAgICB9IGVsc2UgaWYgKElTT184NjAxX1JFR0VYLnRlc3QoZGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsaWREYXRlT3JOdWxsKG5ldyBEYXRlKGRhdGUuaW5jbHVkZXMoJ1QnKSA/IGRhdGUgOiBkYXRlICsgJ1QwMDowMDowMCcpKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRlID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsaWREYXRlT3JOdWxsKG5ldyBEYXRlKGRhdGUgKiAxMDAwKSk7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5kZXNlcmlhbGl6ZShkYXRlKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSByaWdodCBmb3JtYXQgZm9yIHRoZSBgdmFsdWVBc0RhdGVgIHByb3BlcnR5LiAqL1xuICBwdWJsaWMgcGFyc2UodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsIG5vdzogRGF0ZSk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBzdHJpcHBlZFZhbHVlID0gdmFsdWUucmVwbGFjZSgvXFxEL2csICcgJykudHJpbSgpO1xuXG4gICAgY29uc3QgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsIHwgdW5kZWZpbmVkID0gc3RyaXBwZWRWYWx1ZT8ubWF0Y2goRk9STUFUX0RBVEUpO1xuICAgIGlmIChcbiAgICAgICFtYXRjaCB8fFxuICAgICAgbWF0Y2guaW5kZXggIT09IDAgfHxcbiAgICAgIG1hdGNoLmxlbmd0aCA8PSAyIHx8XG4gICAgICBtYXRjaC5zb21lKChlKSA9PiBlID09PSB1bmRlZmluZWQpIHx8XG4gICAgICAhdGhpcy5pc1ZhbGlkKHRoaXMuY3JlYXRlRGF0ZSgrbWF0Y2hbM10sICttYXRjaFsyXSwgK21hdGNoWzFdKSlcbiAgICApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCB5ZWFyID0gK21hdGNoWzNdO1xuXG4gICAgaWYgKHR5cGVvZiB5ZWFyID09PSAnbnVtYmVyJyAmJiB5ZWFyIDwgMTAwICYmIHllYXIgPj0gMCkge1xuICAgICAgY29uc3Qgc2hpZnQgPSBub3cuZ2V0RnVsbFllYXIoKSAtIDIwMDAgKyB0aGlzLl9jdXRvZmZZZWFyT2Zmc2V0O1xuICAgICAgeWVhciA9IHllYXIgPD0gc2hpZnQgPyAyMDAwICsgeWVhciA6IDE5MDAgKyB5ZWFyO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCArbWF0Y2hbMl0gLSAxLCArbWF0Y2hbMV0pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGludmFsaWQoKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBhcnJheSB3aXRoIHRoZSBnaXZlbiBsZW5ndGggYW5kIGZpbGxzIGl0IGJ5IG1hcHBpbmcgd2l0aCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24uXG4gICAqIEBwYXJhbSBsZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkgdG8gYmUgY3JlYXRlZC5cbiAgICogQHBhcmFtIHZhbHVlRnVuY3Rpb24gVGhlIGZ1bmN0aW9uIG9mIGFycmF5J3MgaW5kZXggdXNlZCB0byBmaWxsIHRoZSBhcnJheS5cbiAgICovXG4gIHByaXZhdGUgX3JhbmdlPFQ+KGxlbmd0aDogbnVtYmVyLCB2YWx1ZUZ1bmN0aW9uOiAoaW5kZXg6IG51bWJlcikgPT4gVCk6IFRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGggfSkubWFwKChfLCBpKSA9PiB2YWx1ZUZ1bmN0aW9uKGkpKTtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgZGF0ZSBidXQgYWxsb3dzIHRoZSBtb250aCBhbmQgZGF0ZSB0byBvdmVyZmxvdy4gKi9cbiAgcHJpdmF0ZSBfY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRhdGU6IG51bWJlcik6IERhdGUge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXRlKTtcbiAgICAvLyBXZSBuZWVkIHRvIGNvcnJlY3QgZm9yIHRoZSBmYWN0IHRoYXQgSlMgbmF0aXZlIERhdGUgdHJlYXRzIHllYXJzIGluIHJhbmdlIFswLCA5OV0gYXNcbiAgICAvLyBhYmJyZXZpYXRpb25zIGZvciAxOXh4LlxuICAgIGlmICh5ZWFyID49IDAgJiYgeWVhciA8IDEwMCkge1xuICAgICAgcmVzdWx0LnNldEZ1bGxZZWFyKHRoaXMuZ2V0WWVhcihyZXN1bHQpIC0gMTkwMCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHREYXRlQWRhcHRlciA9IG5ldyBOYXRpdmVEYXRlQWRhcHRlcigpO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBTyxNQUFNLGVBQXVCO0FBQzdCLE1BQU0saUJBQXlCO0FBQy9CLE1BQU0sZ0JBQXdCO0FBQzlCLE1BQU0saUJBQXlCO0FBQy9CLE1BQU0sY0FDWDtNQU9vQixZQUFXO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBa0Z4QixZQUFZLE9BQTZDO0FBRTVELFFBQUEsU0FBUyxRQUNSLEtBQUssZUFBZSxLQUFLLEtBQUssS0FBSyxRQUFRLEtBQTZCLEdBQ3pFO0FBQ08sYUFBQTtBQUFBLElBQUE7QUFFVCxXQUFPLEtBQUssUUFBTztBQUFBLEVBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUE2Q2QsT0FDTCxNQUNBLFNBQXdEO0FBRXhELFFBQUksQ0FBQyxLQUFLLFFBQVEsSUFBSSxHQUFHO0FBQ2hCLGFBQUE7QUFBQSxJQUFBO0FBR1QsVUFBTSxRQUFZLG9CQUFBLEtBQUssS0FBSyxVQUFVLElBQUssSUFBSSxXQUFXO0FBQzFELFVBQU0sZ0JBQWdCLElBQUksS0FBSyxlQUFlLFNBQVM7QUFBQSxNQUNyRCxLQUFLO0FBQUEsTUFDTCxPQUFPO0FBQUEsTUFDUCxNQUFNO0FBQUEsSUFBQSxDQUNQO0FBRUssVUFBQSxnQkFBZSxtQ0FBUyxpQkFBZ0I7QUFDMUMsUUFBQSxVQUFVLEtBQUssa0JBQWtCLFlBQVksRUFBRSxLQUFLLGFBQWEsSUFBSyxDQUFD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/dom/scroll.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,gBAAgB,CAAU;IAE3B,aAAa,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/dom/scroll.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,gBAAgB,CAAU;IAE3B,aAAa,IAAI,IAAI;IAsBrB,YAAY,IAAI,IAAI;CAc5B"}
|
package/development/core/dom.js
CHANGED
|
@@ -86,11 +86,13 @@ class SbbScrollHandler {
|
|
|
86
86
|
if (pageScrollDisabled()) {
|
|
87
87
|
return;
|
|
88
88
|
}
|
|
89
|
+
this._height = document.body.style.height;
|
|
89
90
|
this._position = document.body.style.position;
|
|
90
91
|
this._overflow = document.body.style.overflow;
|
|
91
92
|
this._marginInlineEnd = document.body.style.marginInlineEnd;
|
|
92
93
|
const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
|
|
93
94
|
document.body.style.overflow = "hidden";
|
|
95
|
+
document.body.style.height = "100dvh";
|
|
94
96
|
document.body.style.position = "relative";
|
|
95
97
|
document.body.style.marginInlineEnd = `${scrollbarWidth}px`;
|
|
96
98
|
document.body.style.setProperty("--sbb-scrollbar-width", `${scrollbarWidth}px`);
|
|
@@ -100,6 +102,7 @@ class SbbScrollHandler {
|
|
|
100
102
|
if (!pageScrollDisabled()) {
|
|
101
103
|
return;
|
|
102
104
|
}
|
|
105
|
+
document.body.style.height = this._height || "";
|
|
103
106
|
document.body.style.position = this._position || "";
|
|
104
107
|
document.body.style.overflow = this._overflow || "";
|
|
105
108
|
document.body.style.marginInlineEnd = this._marginInlineEnd || "";
|
|
@@ -130,4 +133,4 @@ export {
|
|
|
130
133
|
pageScrollDisabled,
|
|
131
134
|
setOrRemoveAttribute
|
|
132
135
|
};
|
|
133
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9kb20vYW5pbWF0aW9uLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL2JyZWFrcG9pbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9kb20vZmluZC1yZWZlcmVuY2VkLWVsZW1lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9kb20vaG9zdC1jb250ZXh0LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL2lucHV0LWVsZW1lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9kb20vbGVhbi1jb250ZXh0LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL3NldC1vci1yZW1vdmUtYXR0cmlidXRlLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL3BsYXRmb3JtLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL3Njcm9sbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1NlcnZlciB9IGZyb20gJ2xpdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1plcm9BbmltYXRpb25EdXJhdGlvbihlbGVtZW50OiBIVE1MRWxlbWVudCwgY3NzVmFyaWFibGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKGlzU2VydmVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoY3NzVmFyaWFibGVOYW1lKTtcblxuICByZXR1cm4gcGFyc2VGbG9hdChhbmltYXRpb25EdXJhdGlvbikgPT09IDA7XG59XG4iLCJpbXBvcnQgeyBpc1NlcnZlciB9IGZyb20gJ2xpdCc7XG5cbmV4cG9ydCBjb25zdCBicmVha3BvaW50cyA9IFsnemVybycsICdtaWNybycsICdzbWFsbCcsICdtZWRpdW0nLCAnd2lkZScsICdsYXJnZScsICd1bHRyYSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQnJlYWtwb2ludCA9ICh0eXBlb2YgYnJlYWtwb2ludHMpW251bWJlcl07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIGRvY3VtZW50IG1hdGNoZXMgYSBwYXJ0aWN1bGFyIG1lZGlhIHF1ZXJ5LlxuICogSXQgd2lsbCByZWx5IG9uIHRoZSBnbG9iYWwgQ1NTIHZhcmlhYmxlcyB0byBkZXRlcm1pbmUgdGhlIHZhbHVlIG9mIHRoZSBicmVha3BvaW50cy5cbiAqXG4gKiBAcGFyYW0gZnJvbSBUaGUgYnJlYWtwb2ludCBjb3JyZXNwb25kaW5nIHRvIHRoZSBgbWluLXdpZHRoYCB2YWx1ZSBvZiB0aGUgbWVkaWEgcXVlcnkgKG9wdGlvbmFsKS5cbiAqIEBwYXJhbSB0byBUaGUgYnJlYWtwb2ludCBjb3JyZXNwb25kaW5nIHRvIHRoZSBgbWF4LXdpZHRoYCB2YWx1ZSBvZiB0aGUgbWVkaWEgcXVlcnkgKG9wdGlvbmFsKS5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzIFdoZXRoZXIgdGhlIG1heCBicmVha3BvaW50IHNob3VsZCBiZSBpbmNsdWRlZFxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgd2luZG93IG1hdGNoZXMgdGhlIGJyZWFrcG9pbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0JyZWFrcG9pbnQoXG4gIGZyb20/OiBCcmVha3BvaW50LFxuICB0bz86IEJyZWFrcG9pbnQsXG4gIHByb3BlcnRpZXM/OiB7IGluY2x1ZGVNYXhCcmVha3BvaW50OiBib29sZWFuIH0sXG4pOiBib29sZWFuIHwgbnVsbCB7XG4gIGlmIChpc1NlcnZlcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTtcbiAgY29uc3QgYnJlYWtwb2ludE1pbiA9IGZyb20gPyBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoYC0tc2JiLWJyZWFrcG9pbnQtJHtmcm9tfS1taW5gKSA6ICcnO1xuICBjb25zdCBicmVha3BvaW50TWF4ID0gdG9cbiAgICA/IGAke1xuICAgICAgICBwYXJzZUZsb2F0KFxuICAgICAgICAgIGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICAgICAgICAgIGAtLXNiYi1icmVha3BvaW50LSR7dG99LSR7cHJvcGVydGllcz8uaW5jbHVkZU1heEJyZWFrcG9pbnQgPyAnbWF4JyA6ICdtaW4nfWAsXG4gICAgICAgICAgKSxcbiAgICAgICAgKSAtIChwcm9wZXJ0aWVzPy5pbmNsdWRlTWF4QnJlYWtwb2ludCA/IDAgOiAwLjA2MjUpXG4gICAgICB9cmVtYFxuICAgIDogJyc7IC8vIHN1YnRyYWN0IDFweCAoMC4wNjI1cmVtKSBmcm9tIHRoZSBtYXgtd2lkdGggYnJlYWtwb2ludFxuXG4gIGNvbnN0IG1pbldpZHRoID0gYnJlYWtwb2ludE1pbiAmJiBgKG1pbi13aWR0aDogJHticmVha3BvaW50TWlufSlgO1xuICBjb25zdCBtYXhXaWR0aCA9IGJyZWFrcG9pbnRNYXggJiYgYChtYXgtd2lkdGg6ICR7YnJlYWtwb2ludE1heH0pYDtcbiAgY29uc3QgYW5kID0gYnJlYWtwb2ludE1pbiAmJiBicmVha3BvaW50TWF4ICYmICcgYW5kICc7XG5cbiAgcmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhKGAke21pbldpZHRofSR7YW5kfSR7bWF4V2lkdGh9YCkubWF0Y2hlcztcbn1cbiIsImltcG9ydCB7IGlzU2VydmVyIH0gZnJvbSAnbGl0JztcblxuLyoqXG4gKiAgQ2hlY2sgd2hldGhlciBpdCdzIGEgc3RyaW5nIG9yIGFuIEhUTUxFbGVtZW50LCBpZiBpdCdzIGEgc3RyaW5nIHF1ZXJpZXMgdGhlIGVsZW1lbnQgd2l0aCB0aGVcbiAqICBjb3JyZXNwb25kaW5nIGlkLlxuICogIEBwYXJhbSByZWZlcmVuY2UgZWl0aGVyIHRoZSB3YW50ZWQgaWQgb3IgdGhlIEhUTUxFbGVtZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUmVmZXJlbmNlZEVsZW1lbnQ8VCBleHRlbmRzIEhUTUxFbGVtZW50ID0gSFRNTEVsZW1lbnQ+KFxuICByZWZlcmVuY2U6IHN0cmluZyB8IEhUTUxFbGVtZW50LFxuKTogVCB8IG51bGwge1xuICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgcmVmZXJlbmNlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChyZWZlcmVuY2UpIGFzIFQ7XG4gIH0gZWxzZSBpZiAocmVmZXJlbmNlIGluc3RhbmNlb2Ygd2luZG93LkVsZW1lbnQpIHtcbiAgICByZXR1cm4gcmVmZXJlbmNlIGFzIFQ7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG4iLCJpbXBvcnQgeyBpc1NlcnZlciB9IGZyb20gJ2xpdCc7XG5cbi8qKlxuICogTG9va3MgZm9yIHRoZSBjbG9zZXN0IGVsZW1lbnQgbWF0Y2hpbmcgdGhlIGdpdmVuIHNlbGVjdG9yIHN0YXJ0aW5nIGZyb20gdGhlIGdpdmVuIGVsZW1lbnQuXG4gKiBSZXR1cm5zIG51bGwsIGlmIG5vbmUgb2YgdGhlIGFuY2VzdG9yIG1hdGNoLlxuICpcbiAqIEBwYXJhbSBzZWxlY3RvciBUaGUgc2VsZWN0b3IgdG8gbWF0Y2ggYW5jZXN0b3IgYWdhaW5zdC5cbiAqIEBwYXJhbSBlbGVtZW50IFRoZSBiYXNlIGVsZW1lbnQgZnJvbSB3aGljaCB0byBzdGFydCB0aGUgc2VhcmNoLlxuICogQHJldHVybnMgVGhlIGNsb3Nlc3QgZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Igb3IgbnVsbCBpZiBub25lIGlzIGZvdW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaG9zdENvbnRleHQoc2VsZWN0b3I6IHN0cmluZywgZWxlbWVudDogRWxlbWVudCk6IEVsZW1lbnQgfCBudWxsIHtcbiAgaWYgKGlzU2VydmVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gU3RhcnQgd2l0aCBwYXJlbnQgZWxlbWVudCBpbiBvcmRlciB0byBhdm9pZCBmaW5kaW5nIGVsZW1lbnQgaXRzZWxmXG4gIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQgPz8gKGVsZW1lbnQuZ2V0Um9vdE5vZGUoKSBhcyBTaGFkb3dSb290KS5ob3N0O1xuICB3aGlsZSAoZWxlbWVudCAmJiAoZWxlbWVudCBhcyBhbnkpICE9PSBkb2N1bWVudCAmJiAoZWxlbWVudCBhcyBhbnkpICE9PSB3aW5kb3cpIHtcbiAgICBjb25zdCBtYXRjaCA9IGVsZW1lbnQuY2xvc2VzdChzZWxlY3Rvcik7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICByZXR1cm4gbWF0Y2g7XG4gICAgfVxuXG4gICAgZWxlbWVudCA9IChlbGVtZW50LmdldFJvb3ROb2RlKCkgYXMgU2hhZG93Um9vdCkuaG9zdDtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vLyBBIGxpc3Qgb2YgZWxlbWVudHMgdGhhdCBzaG91bGQgbm90IGFsbG93IGFub3RoZXIgYW5jaG9yIG9yIGJ1dHRvbiBlbGVtZW50IGluc2lkZSB0aGVtLlxuLy8gTmVlZHMgdG8gYmUgZXh0ZW5kZWQgaWYgYWRkaXRpb25hbCBlbGVtZW50cyBmYWxsIGludG8gdGhpcyBjYXRlZ29yeS5cbmV4cG9ydCBjb25zdCBBQ1RJT05fRUxFTUVOVFMgPSAnYSxidXR0b24sc2JiLXRlYXNlci1oZXJvLHNiYi10ZWFzZXInO1xuIiwiaW1wb3J0IHsgZmluZFJlZmVyZW5jZWRFbGVtZW50IH0gZnJvbSAnLi9maW5kLXJlZmVyZW5jZWQtZWxlbWVudC5qcyc7XG5cbi8qKlxuICogR2l2ZW4gYW4gZWxlbWVudCwgcmV0dXJucyB0aGUgcmVsYXRlZCBpbnB1dCByZWZlcmVuY2UsIGlmIGl0IGV4aXN0cyByZXNwZWN0aW5nIGZvbGxvd2luZyBwcmlvcml0eS5cbiAqIDEuIElucHV0IGZpZWxkIGluIGBzYmItZm9ybS1maWVsZGAgKGlmIHRyaWdnZXIgaXMgdW5kZWZpZW5kKVxuICogMi4gSW5wdXQgcmVmZXJlbmNlZCBieSBpZCAodHJpZ2dlciBpcyBzdHJpbmcpXG4gKiAzLiBJbnB1dCByZWZlcmVuY2VkIGRpcmVjdGx5ICh0cmlnZ2VyIGlzIEhUTUxFbGVtZW50KVxuICogQHBhcmFtIGVsZW1lbnQgVGhlIHN0YXJ0aW5nIFNiYkRhdGVwaWNrZXJFbGVtZW50IGVsZW1lbnQuXG4gKiBAcGFyYW0gdHJpZ2dlciBUaGUgaWQgb3IgdGhlIHJlZmVyZW5jZSBvZiB0aGUgaW5wdXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kSW5wdXQoXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICB0cmlnZ2VyPzogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsLFxuKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwge1xuICBpZiAoIXRyaWdnZXIpIHtcbiAgICBjb25zdCBwYXJlbnQgPSBlbGVtZW50LmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKTtcbiAgICByZXR1cm4gcGFyZW50Py5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpIGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGZpbmRSZWZlcmVuY2VkRWxlbWVudDxIVE1MSW5wdXRFbGVtZW50Pih0cmlnZ2VyKTtcbn1cbiIsImltcG9ydCB7IGlzU2VydmVyIH0gZnJvbSAnbGl0JztcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGRvY3VtZW50IGhhcyB0aGUgYHNiYi1sZWFuYCBjbGFzcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTGVhbigpOiBib29sZWFuIHtcbiAgcmV0dXJuICFpc1NlcnZlciAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdzYmItbGVhbicpO1xufVxuIiwiLyoqXG4gKiBTZXQgdGhlIGF0dHJpYnV0ZSBvbmx5IGlmIHZhbHVlIGlzIG5vdCAnZmFsc2UnLCBvdGhlcndpc2UgcmVtb3ZlIGF0dHJpYnV0ZS5cbiAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRoYXQgd2lsbCBoYXZlIHRoZSBhdHRyaWJ1dGVcbiAqIEBwYXJhbSBhdHRyaWJ1dGUgVGhlIGF0dHJpYnV0ZSBuYW1lXG4gKiBAcGFyYW0gdmFsdWUgVGhlIGF0dHJpYnV0ZSB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0T3JSZW1vdmVBdHRyaWJ1dGUoZWxlbWVudDogSFRNTEVsZW1lbnQsIGF0dHJpYnV0ZTogc3RyaW5nLCB2YWx1ZT86IGFueSk6IHZvaWQge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgfSBlbHNlIHtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbHVlKTtcbiAgfVxufVxuIiwiLy8gVGhpcyBmaWxlIGlzIGZyZWVseSBpbnNwaXJlZCBieSBBbmd1bGFyIE1hdGVyaWFsIHNvbHV0aW9uLlxuLy8gUmVmZXJlbmNlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2Jsb2IvbWFpbi9zcmMvY2RrL3BsYXRmb3JtL3BsYXRmb3JtLnRzXG5pbXBvcnQgeyBpc1NlcnZlciB9IGZyb20gJ2xpdCc7XG5cbi8vIFdoZXRoZXIgdGhlIGN1cnJlbnQgcGxhdGZvcm0gc3VwcG9ydHMgdGhlIFY4IEJyZWFrIEl0ZXJhdG9yLiBUaGUgVjggY2hlY2tcbi8vIGlzIG5lY2Vzc2FyeSB0byBkZXRlY3QgYWxsIEJsaW5rIGJhc2VkIGJyb3dzZXJzLlxubGV0IGhhc1Y4QnJlYWtJdGVyYXRvcjogYm9vbGVhbjtcblxuLy8gV2UgbmVlZCBhIHRyeS9jYXRjaCBhcm91bmQgdGhlIHJlZmVyZW5jZSB0byBgSW50bGAsIGJlY2F1c2UgYWNjZXNzaW5nIGl0IGluIHNvbWUgY2FzZXMgY2FuXG4vLyBjYXVzZSBJRSB0byB0aHJvdy4gVGhlc2UgY2FzZXMgYXJlIHRpZWQgdG8gcGFydGljdWxhciB2ZXJzaW9ucyBvZiBXaW5kb3dzIGFuZCBjYW4gaGFwcGVuIGlmXG4vLyB0aGUgY29uc3VtZXIgaXMgcHJvdmlkaW5nIGEgcG9seWZpbGxlZCBgTWFwYC4gU2VlOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9DaGFrcmFDb3JlL2lzc3Vlcy8zMTg5XG4vLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2lzc3Vlcy8xNTY4N1xudHJ5IHtcbiAgaGFzVjhCcmVha0l0ZXJhdG9yID0gdHlwZW9mIEludGwgIT09ICd1bmRlZmluZWQnICYmIChJbnRsIGFzIGFueSkudjhCcmVha0l0ZXJhdG9yO1xufSBjYXRjaCB7XG4gIGhhc1Y4QnJlYWtJdGVyYXRvciA9IGZhbHNlO1xufVxuXG4vKiogV2hldGhlciB0aGUgY3VycmVudCBicm93c2VyIGlzIE1pY3Jvc29mdCBFZGdlLiAqL1xuZXhwb3J0IGNvbnN0IGlzRWRnZSA9ICFpc1NlcnZlciAmJiAvKGVkZ2UpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgcmVuZGVyaW5nIGVuZ2luZSBpcyBNaWNyb3NvZnQgVHJpZGVudC4gKi9cbmV4cG9ydCBjb25zdCBpc1RyaWRlbnQgPSAhaXNTZXJ2ZXIgJiYgLyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLy8gRWRnZUhUTUwgYW5kIFRyaWRlbnQgbW9jayBCbGluayBzcGVjaWZpYyB0aGluZ3MgYW5kIG5lZWQgdG8gYmUgZXhjbHVkZWQgZnJvbSB0aGlzIGNoZWNrLlxuLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgcmVuZGVyaW5nIGVuZ2luZSBpcyBCbGluay4gKi9cbmV4cG9ydCBjb25zdCBpc0JsaW5rID1cbiAgIWlzU2VydmVyICYmXG4gICEhKCh3aW5kb3cgYXMgYW55KS5jaHJvbWUgfHwgaGFzVjhCcmVha0l0ZXJhdG9yKSAmJlxuICB0eXBlb2YgQ1NTICE9PSAndW5kZWZpbmVkJyAmJlxuICAhaXNFZGdlICYmXG4gICFpc1RyaWRlbnQ7XG5cbi8vIFdlYmtpdCBpcyBwYXJ0IG9mIHRoZSB1c2VyQWdlbnQgaW4gRWRnZUhUTUwsIEJsaW5rIGFuZCBUcmlkZW50LiBUaGVyZWZvcmUsIHdlIG5lZWQgdG9cbi8vIGVuc3VyZSB0aGF0IFdlYmtpdCBydW5zIHN0YW5kYWxvbmUgYW5kIGlzIG5vdCB1c2VkIGFzIGFub3RoZXIgZW5naW5lJ3MgYmFzZS5cbi8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IHJlbmRlcmluZyBlbmdpbmUgaXMgV2ViS2l0LiAqL1xuZXhwb3J0IGNvbnN0IGlzV2Via2l0ID1cbiAgIWlzU2VydmVyICYmIC9BcHBsZVdlYktpdC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgIWlzQmxpbmsgJiYgIWlzRWRnZSAmJiAhaXNUcmlkZW50O1xuXG4vKiogV2hldGhlciB0aGUgY3VycmVudCBwbGF0Zm9ybSBpcyBBcHBsZSBpT1MuICovXG5leHBvcnQgY29uc3QgaXNJT1MgPVxuICAhaXNTZXJ2ZXIgJiYgL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgISgnTVNTdHJlYW0nIGluIHdpbmRvdyk7XG5cbi8vIEl0J3MgZGlmZmljdWx0IHRvIGRldGVjdCB0aGUgcGxhaW4gR2Vja28gZW5naW5lLCBiZWNhdXNlIG1vc3Qgb2YgdGhlIGJyb3dzZXJzIGlkZW50aWZ5XG4vLyB0aGVtIHNlbGYgYXMgR2Vja28tbGlrZSBicm93c2VycyBhbmQgbW9kaWZ5IHRoZSB1c2VyQWdlbnQncyBhY2NvcmRpbmcgdG8gdGhhdC5cbi8vIFNpbmNlIHdlIG9ubHkgY292ZXIgb25lIGV4cGxpY2l0IEZpcmVmb3ggY2FzZSwgd2UgY2FuIHNpbXBseSBjaGVjayBmb3IgRmlyZWZveFxuLy8gaW5zdGVhZCBvZiBoYXZpbmcgYW4gdW5zdGFibGUgY2hlY2sgZm9yIEdlY2tvLlxuLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgYnJvd3NlciBpcyBGaXJlZm94LiAqL1xuZXhwb3J0IGNvbnN0IGlzRmlyZWZveCA9ICFpc1NlcnZlciAmJiAvKGZpcmVmb3h8bWluZWZpZWxkKS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbi8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IHBsYXRmb3JtIGlzIEFuZHJvaWQuICovXG4vLyBUcmlkZW50IG9uIG1vYmlsZSBhZGRzIHRoZSBhbmRyb2lkIHBsYXRmb3JtIHRvIHRoZSB1c2VyQWdlbnQgdG8gdHJpY2sgZGV0ZWN0aW9ucy5cbmV4cG9ydCBjb25zdCBpc0FuZHJvaWQgPSAhaXNTZXJ2ZXIgJiYgL2FuZHJvaWQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmICFpc1RyaWRlbnQ7XG5cbi8vIFNhZmFyaSBicm93c2VycyB3aWxsIGluY2x1ZGUgdGhlIFNhZmFyaSBrZXl3b3JkIGluIHRoZWlyIHVzZXJBZ2VudC4gU29tZSBicm93c2VycyBtYXkgZmFrZVxuLy8gdGhpcyBhbmQganVzdCBwbGFjZSB0aGUgU2FmYXJpIGtleXdvcmQgaW4gdGhlIHVzZXJBZ2VudC4gVG8gYmUgbW9yZSBzYWZlIGFib3V0IFNhZmFyaSBldmVyeVxuLy8gU2FmYXJpIGJyb3dzZXIgc2hvdWxkIGFsc28gdXNlIFdlYmtpdCBhcyBpdHMgbGF5b3V0IGVuZ2luZS5cbi8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IGJyb3dzZXIgaXMgU2FmYXJpLiAqL1xuZXhwb3J0IGNvbnN0IGlzU2FmYXJpID0gIWlzU2VydmVyICYmIC9zYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmIGlzV2Via2l0O1xuXG4vKipcbiAqIFdlIGp1c3QgY2hlY2sgZm9yIHRoZSBibGluayBlbmdpbmUuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0Nocm9taXVtID0gaXNCbGluaztcblxuLyoqIFdoZXRoZXIgdGhlIGFwcGxpY2F0aW9uIGlzIGJlaW5nIHJlbmRlcmVkIGluIGEgTmV4dC5qcyBlbnZpcm9ubWVudC4gKi9cbmV4cG9ydCBjb25zdCBpc05leHRqcyA9ICgpOiBib29sZWFuID0+ICEhKGdsb2JhbFRoaXMgYXMgeyBuZXh0Pzogb2JqZWN0IH0pLm5leHQ7XG4iLCJleHBvcnQgZnVuY3Rpb24gcGFnZVNjcm9sbERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZG9jdW1lbnQuYm9keS5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLXNjcm9sbC1kaXNhYmxlZCcpO1xufVxuXG4vKipcbiAqIEhhbmRsZSB0aGUgcGFnZSBzY3JvbGwsIGFsbG93aW5nIHRvIGRpc2FibGUvZW5hYmxlIHRoZSB3aW5kb3cgc2Nyb2xsIGF2b2lkaW5nIGEgcG90ZW50aWFsXG4gKiBjb250ZW50IHNoaWZ0IGNhdXNlZCBieSB0aGUgZGlzYXBwZWFyYW5jZS9hcHBlYXJhbmNlIG9mIHRoZSBzY3JvbGxiYXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJTY3JvbGxIYW5kbGVyIHtcbiAgcHJpdmF0ZSBfcG9zaXRpb24hOiBzdHJpbmc7XG4gIHByaXZhdGUgX292ZXJmbG93ITogc3RyaW5nO1xuICBwcml2YXRlIF9tYXJnaW5JbmxpbmVFbmQhOiBzdHJpbmc7XG5cbiAgcHVibGljIGRpc2FibGVTY3JvbGwoKTogdm9pZCB7XG4gICAgaWYgKHBhZ2VTY3JvbGxEaXNhYmxlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2F2ZSBhbnkgcHJlLWV4aXN0aW5nIHN0eWxlcyB0byByZWFwcGx5IHRoZW0gdG8gdGhlIGJvZHkgd2hlbiBlbmFibGluZyB0aGUgc2Nyb2xsIGFnYWluLlxuICAgIHRoaXMuX3Bvc2l0aW9uID0gZG9jdW1lbnQuYm9keS5zdHlsZS5wb3NpdGlvbjtcbiAgICB0aGlzLl9vdmVyZmxvdyA9IGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c7XG4gICAgdGhpcy5fbWFyZ2luSW5saW5lRW5kID0gZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW5JbmxpbmVFbmQ7XG5cbiAgICBjb25zdCBzY3JvbGxiYXJXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xuXG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luSW5saW5lRW5kID0gYCR7c2Nyb2xsYmFyV2lkdGh9cHhgO1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLXNjcm9sbGJhci13aWR0aCcsIGAke3Njcm9sbGJhcldpZHRofXB4YCk7XG5cbiAgICBkb2N1bWVudC5ib2R5LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1zYmItc2Nyb2xsLWRpc2FibGVkJywgdHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlU2Nyb2xsKCk6IHZvaWQge1xuICAgIGlmICghcGFnZVNjcm9sbERpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZXZlcnQgYm9keSBpbmxpbmUgc3R5bGVzLlxuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucG9zaXRpb24gPSB0aGlzLl9wb3NpdGlvbiB8fCAnJztcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gdGhpcy5fb3ZlcmZsb3cgfHwgJyc7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW5JbmxpbmVFbmQgPSB0aGlzLl9tYXJnaW5JbmxpbmVFbmQgfHwgJyc7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItc2Nyb2xsYmFyLXdpZHRoJywgJzAnKTtcblxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNiYi1zY3JvbGwtZGlzYWJsZWQnKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFF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
|
|
136
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9kb20vYW5pbWF0aW9uLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL2JyZWFrcG9pbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9kb20vZmluZC1yZWZlcmVuY2VkLWVsZW1lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9kb20vaG9zdC1jb250ZXh0LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL2lucHV0LWVsZW1lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9kb20vbGVhbi1jb250ZXh0LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL3NldC1vci1yZW1vdmUtYXR0cmlidXRlLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL3BsYXRmb3JtLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvZG9tL3Njcm9sbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1NlcnZlciB9IGZyb20gJ2xpdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1plcm9BbmltYXRpb25EdXJhdGlvbihlbGVtZW50OiBIVE1MRWxlbWVudCwgY3NzVmFyaWFibGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKGlzU2VydmVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoY3NzVmFyaWFibGVOYW1lKTtcblxuICByZXR1cm4gcGFyc2VGbG9hdChhbmltYXRpb25EdXJhdGlvbikgPT09IDA7XG59XG4iLCJpbXBvcnQgeyBpc1NlcnZlciB9IGZyb20gJ2xpdCc7XG5cbmV4cG9ydCBjb25zdCBicmVha3BvaW50cyA9IFsnemVybycsICdtaWNybycsICdzbWFsbCcsICdtZWRpdW0nLCAnd2lkZScsICdsYXJnZScsICd1bHRyYSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQnJlYWtwb2ludCA9ICh0eXBlb2YgYnJlYWtwb2ludHMpW251bWJlcl07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIGRvY3VtZW50IG1hdGNoZXMgYSBwYXJ0aWN1bGFyIG1lZGlhIHF1ZXJ5LlxuICogSXQgd2lsbCByZWx5IG9uIHRoZSBnbG9iYWwgQ1NTIHZhcmlhYmxlcyB0byBkZXRlcm1pbmUgdGhlIHZhbHVlIG9mIHRoZSBicmVha3BvaW50cy5cbiAqXG4gKiBAcGFyYW0gZnJvbSBUaGUgYnJlYWtwb2ludCBjb3JyZXNwb25kaW5nIHRvIHRoZSBgbWluLXdpZHRoYCB2YWx1ZSBvZiB0aGUgbWVkaWEgcXVlcnkgKG9wdGlvbmFsKS5cbiAqIEBwYXJhbSB0byBUaGUgYnJlYWtwb2ludCBjb3JyZXNwb25kaW5nIHRvIHRoZSBgbWF4LXdpZHRoYCB2YWx1ZSBvZiB0aGUgbWVkaWEgcXVlcnkgKG9wdGlvbmFsKS5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzIFdoZXRoZXIgdGhlIG1heCBicmVha3BvaW50IHNob3VsZCBiZSBpbmNsdWRlZFxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgd2luZG93IG1hdGNoZXMgdGhlIGJyZWFrcG9pbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0JyZWFrcG9pbnQoXG4gIGZyb20/OiBCcmVha3BvaW50LFxuICB0bz86IEJyZWFrcG9pbnQsXG4gIHByb3BlcnRpZXM/OiB7IGluY2x1ZGVNYXhCcmVha3BvaW50OiBib29sZWFuIH0sXG4pOiBib29sZWFuIHwgbnVsbCB7XG4gIGlmIChpc1NlcnZlcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTtcbiAgY29uc3QgYnJlYWtwb2ludE1pbiA9IGZyb20gPyBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoYC0tc2JiLWJyZWFrcG9pbnQtJHtmcm9tfS1taW5gKSA6ICcnO1xuICBjb25zdCBicmVha3BvaW50TWF4ID0gdG9cbiAgICA/IGAke1xuICAgICAgICBwYXJzZUZsb2F0KFxuICAgICAgICAgIGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICAgICAgICAgIGAtLXNiYi1icmVha3BvaW50LSR7dG99LSR7cHJvcGVydGllcz8uaW5jbHVkZU1heEJyZWFrcG9pbnQgPyAnbWF4JyA6ICdtaW4nfWAsXG4gICAgICAgICAgKSxcbiAgICAgICAgKSAtIChwcm9wZXJ0aWVzPy5pbmNsdWRlTWF4QnJlYWtwb2ludCA/IDAgOiAwLjA2MjUpXG4gICAgICB9cmVtYFxuICAgIDogJyc7IC8vIHN1YnRyYWN0IDFweCAoMC4wNjI1cmVtKSBmcm9tIHRoZSBtYXgtd2lkdGggYnJlYWtwb2ludFxuXG4gIGNvbnN0IG1pbldpZHRoID0gYnJlYWtwb2ludE1pbiAmJiBgKG1pbi13aWR0aDogJHticmVha3BvaW50TWlufSlgO1xuICBjb25zdCBtYXhXaWR0aCA9IGJyZWFrcG9pbnRNYXggJiYgYChtYXgtd2lkdGg6ICR7YnJlYWtwb2ludE1heH0pYDtcbiAgY29uc3QgYW5kID0gYnJlYWtwb2ludE1pbiAmJiBicmVha3BvaW50TWF4ICYmICcgYW5kICc7XG5cbiAgcmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhKGAke21pbldpZHRofSR7YW5kfSR7bWF4V2lkdGh9YCkubWF0Y2hlcztcbn1cbiIsImltcG9ydCB7IGlzU2VydmVyIH0gZnJvbSAnbGl0JztcblxuLyoqXG4gKiAgQ2hlY2sgd2hldGhlciBpdCdzIGEgc3RyaW5nIG9yIGFuIEhUTUxFbGVtZW50LCBpZiBpdCdzIGEgc3RyaW5nIHF1ZXJpZXMgdGhlIGVsZW1lbnQgd2l0aCB0aGVcbiAqICBjb3JyZXNwb25kaW5nIGlkLlxuICogIEBwYXJhbSByZWZlcmVuY2UgZWl0aGVyIHRoZSB3YW50ZWQgaWQgb3IgdGhlIEhUTUxFbGVtZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUmVmZXJlbmNlZEVsZW1lbnQ8VCBleHRlbmRzIEhUTUxFbGVtZW50ID0gSFRNTEVsZW1lbnQ+KFxuICByZWZlcmVuY2U6IHN0cmluZyB8IEhUTUxFbGVtZW50LFxuKTogVCB8IG51bGwge1xuICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgcmVmZXJlbmNlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChyZWZlcmVuY2UpIGFzIFQ7XG4gIH0gZWxzZSBpZiAocmVmZXJlbmNlIGluc3RhbmNlb2Ygd2luZG93LkVsZW1lbnQpIHtcbiAgICByZXR1cm4gcmVmZXJlbmNlIGFzIFQ7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG4iLCJpbXBvcnQgeyBpc1NlcnZlciB9IGZyb20gJ2xpdCc7XG5cbi8qKlxuICogTG9va3MgZm9yIHRoZSBjbG9zZXN0IGVsZW1lbnQgbWF0Y2hpbmcgdGhlIGdpdmVuIHNlbGVjdG9yIHN0YXJ0aW5nIGZyb20gdGhlIGdpdmVuIGVsZW1lbnQuXG4gKiBSZXR1cm5zIG51bGwsIGlmIG5vbmUgb2YgdGhlIGFuY2VzdG9yIG1hdGNoLlxuICpcbiAqIEBwYXJhbSBzZWxlY3RvciBUaGUgc2VsZWN0b3IgdG8gbWF0Y2ggYW5jZXN0b3IgYWdhaW5zdC5cbiAqIEBwYXJhbSBlbGVtZW50IFRoZSBiYXNlIGVsZW1lbnQgZnJvbSB3aGljaCB0byBzdGFydCB0aGUgc2VhcmNoLlxuICogQHJldHVybnMgVGhlIGNsb3Nlc3QgZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Igb3IgbnVsbCBpZiBub25lIGlzIGZvdW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaG9zdENvbnRleHQoc2VsZWN0b3I6IHN0cmluZywgZWxlbWVudDogRWxlbWVudCk6IEVsZW1lbnQgfCBudWxsIHtcbiAgaWYgKGlzU2VydmVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gU3RhcnQgd2l0aCBwYXJlbnQgZWxlbWVudCBpbiBvcmRlciB0byBhdm9pZCBmaW5kaW5nIGVsZW1lbnQgaXRzZWxmXG4gIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQgPz8gKGVsZW1lbnQuZ2V0Um9vdE5vZGUoKSBhcyBTaGFkb3dSb290KS5ob3N0O1xuICB3aGlsZSAoZWxlbWVudCAmJiAoZWxlbWVudCBhcyBhbnkpICE9PSBkb2N1bWVudCAmJiAoZWxlbWVudCBhcyBhbnkpICE9PSB3aW5kb3cpIHtcbiAgICBjb25zdCBtYXRjaCA9IGVsZW1lbnQuY2xvc2VzdChzZWxlY3Rvcik7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICByZXR1cm4gbWF0Y2g7XG4gICAgfVxuXG4gICAgZWxlbWVudCA9IChlbGVtZW50LmdldFJvb3ROb2RlKCkgYXMgU2hhZG93Um9vdCkuaG9zdDtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vLyBBIGxpc3Qgb2YgZWxlbWVudHMgdGhhdCBzaG91bGQgbm90IGFsbG93IGFub3RoZXIgYW5jaG9yIG9yIGJ1dHRvbiBlbGVtZW50IGluc2lkZSB0aGVtLlxuLy8gTmVlZHMgdG8gYmUgZXh0ZW5kZWQgaWYgYWRkaXRpb25hbCBlbGVtZW50cyBmYWxsIGludG8gdGhpcyBjYXRlZ29yeS5cbmV4cG9ydCBjb25zdCBBQ1RJT05fRUxFTUVOVFMgPSAnYSxidXR0b24sc2JiLXRlYXNlci1oZXJvLHNiYi10ZWFzZXInO1xuIiwiaW1wb3J0IHsgZmluZFJlZmVyZW5jZWRFbGVtZW50IH0gZnJvbSAnLi9maW5kLXJlZmVyZW5jZWQtZWxlbWVudC5qcyc7XG5cbi8qKlxuICogR2l2ZW4gYW4gZWxlbWVudCwgcmV0dXJucyB0aGUgcmVsYXRlZCBpbnB1dCByZWZlcmVuY2UsIGlmIGl0IGV4aXN0cyByZXNwZWN0aW5nIGZvbGxvd2luZyBwcmlvcml0eS5cbiAqIDEuIElucHV0IGZpZWxkIGluIGBzYmItZm9ybS1maWVsZGAgKGlmIHRyaWdnZXIgaXMgdW5kZWZpZW5kKVxuICogMi4gSW5wdXQgcmVmZXJlbmNlZCBieSBpZCAodHJpZ2dlciBpcyBzdHJpbmcpXG4gKiAzLiBJbnB1dCByZWZlcmVuY2VkIGRpcmVjdGx5ICh0cmlnZ2VyIGlzIEhUTUxFbGVtZW50KVxuICogQHBhcmFtIGVsZW1lbnQgVGhlIHN0YXJ0aW5nIFNiYkRhdGVwaWNrZXJFbGVtZW50IGVsZW1lbnQuXG4gKiBAcGFyYW0gdHJpZ2dlciBUaGUgaWQgb3IgdGhlIHJlZmVyZW5jZSBvZiB0aGUgaW5wdXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kSW5wdXQoXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICB0cmlnZ2VyPzogc3RyaW5nIHwgSFRNTEVsZW1lbnQgfCBudWxsLFxuKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwge1xuICBpZiAoIXRyaWdnZXIpIHtcbiAgICBjb25zdCBwYXJlbnQgPSBlbGVtZW50LmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKTtcbiAgICByZXR1cm4gcGFyZW50Py5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpIGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGZpbmRSZWZlcmVuY2VkRWxlbWVudDxIVE1MSW5wdXRFbGVtZW50Pih0cmlnZ2VyKTtcbn1cbiIsImltcG9ydCB7IGlzU2VydmVyIH0gZnJvbSAnbGl0JztcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGRvY3VtZW50IGhhcyB0aGUgYHNiYi1sZWFuYCBjbGFzcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTGVhbigpOiBib29sZWFuIHtcbiAgcmV0dXJuICFpc1NlcnZlciAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdzYmItbGVhbicpO1xufVxuIiwiLyoqXG4gKiBTZXQgdGhlIGF0dHJpYnV0ZSBvbmx5IGlmIHZhbHVlIGlzIG5vdCAnZmFsc2UnLCBvdGhlcndpc2UgcmVtb3ZlIGF0dHJpYnV0ZS5cbiAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRoYXQgd2lsbCBoYXZlIHRoZSBhdHRyaWJ1dGVcbiAqIEBwYXJhbSBhdHRyaWJ1dGUgVGhlIGF0dHJpYnV0ZSBuYW1lXG4gKiBAcGFyYW0gdmFsdWUgVGhlIGF0dHJpYnV0ZSB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0T3JSZW1vdmVBdHRyaWJ1dGUoZWxlbWVudDogSFRNTEVsZW1lbnQsIGF0dHJpYnV0ZTogc3RyaW5nLCB2YWx1ZT86IGFueSk6IHZvaWQge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgfSBlbHNlIHtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbHVlKTtcbiAgfVxufVxuIiwiLy8gVGhpcyBmaWxlIGlzIGZyZWVseSBpbnNwaXJlZCBieSBBbmd1bGFyIE1hdGVyaWFsIHNvbHV0aW9uLlxuLy8gUmVmZXJlbmNlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2Jsb2IvbWFpbi9zcmMvY2RrL3BsYXRmb3JtL3BsYXRmb3JtLnRzXG5pbXBvcnQgeyBpc1NlcnZlciB9IGZyb20gJ2xpdCc7XG5cbi8vIFdoZXRoZXIgdGhlIGN1cnJlbnQgcGxhdGZvcm0gc3VwcG9ydHMgdGhlIFY4IEJyZWFrIEl0ZXJhdG9yLiBUaGUgVjggY2hlY2tcbi8vIGlzIG5lY2Vzc2FyeSB0byBkZXRlY3QgYWxsIEJsaW5rIGJhc2VkIGJyb3dzZXJzLlxubGV0IGhhc1Y4QnJlYWtJdGVyYXRvcjogYm9vbGVhbjtcblxuLy8gV2UgbmVlZCBhIHRyeS9jYXRjaCBhcm91bmQgdGhlIHJlZmVyZW5jZSB0byBgSW50bGAsIGJlY2F1c2UgYWNjZXNzaW5nIGl0IGluIHNvbWUgY2FzZXMgY2FuXG4vLyBjYXVzZSBJRSB0byB0aHJvdy4gVGhlc2UgY2FzZXMgYXJlIHRpZWQgdG8gcGFydGljdWxhciB2ZXJzaW9ucyBvZiBXaW5kb3dzIGFuZCBjYW4gaGFwcGVuIGlmXG4vLyB0aGUgY29uc3VtZXIgaXMgcHJvdmlkaW5nIGEgcG9seWZpbGxlZCBgTWFwYC4gU2VlOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9DaGFrcmFDb3JlL2lzc3Vlcy8zMTg5XG4vLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2lzc3Vlcy8xNTY4N1xudHJ5IHtcbiAgaGFzVjhCcmVha0l0ZXJhdG9yID0gdHlwZW9mIEludGwgIT09ICd1bmRlZmluZWQnICYmIChJbnRsIGFzIGFueSkudjhCcmVha0l0ZXJhdG9yO1xufSBjYXRjaCB7XG4gIGhhc1Y4QnJlYWtJdGVyYXRvciA9IGZhbHNlO1xufVxuXG4vKiogV2hldGhlciB0aGUgY3VycmVudCBicm93c2VyIGlzIE1pY3Jvc29mdCBFZGdlLiAqL1xuZXhwb3J0IGNvbnN0IGlzRWRnZSA9ICFpc1NlcnZlciAmJiAvKGVkZ2UpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgcmVuZGVyaW5nIGVuZ2luZSBpcyBNaWNyb3NvZnQgVHJpZGVudC4gKi9cbmV4cG9ydCBjb25zdCBpc1RyaWRlbnQgPSAhaXNTZXJ2ZXIgJiYgLyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLy8gRWRnZUhUTUwgYW5kIFRyaWRlbnQgbW9jayBCbGluayBzcGVjaWZpYyB0aGluZ3MgYW5kIG5lZWQgdG8gYmUgZXhjbHVkZWQgZnJvbSB0aGlzIGNoZWNrLlxuLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgcmVuZGVyaW5nIGVuZ2luZSBpcyBCbGluay4gKi9cbmV4cG9ydCBjb25zdCBpc0JsaW5rID1cbiAgIWlzU2VydmVyICYmXG4gICEhKCh3aW5kb3cgYXMgYW55KS5jaHJvbWUgfHwgaGFzVjhCcmVha0l0ZXJhdG9yKSAmJlxuICB0eXBlb2YgQ1NTICE9PSAndW5kZWZpbmVkJyAmJlxuICAhaXNFZGdlICYmXG4gICFpc1RyaWRlbnQ7XG5cbi8vIFdlYmtpdCBpcyBwYXJ0IG9mIHRoZSB1c2VyQWdlbnQgaW4gRWRnZUhUTUwsIEJsaW5rIGFuZCBUcmlkZW50LiBUaGVyZWZvcmUsIHdlIG5lZWQgdG9cbi8vIGVuc3VyZSB0aGF0IFdlYmtpdCBydW5zIHN0YW5kYWxvbmUgYW5kIGlzIG5vdCB1c2VkIGFzIGFub3RoZXIgZW5naW5lJ3MgYmFzZS5cbi8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IHJlbmRlcmluZyBlbmdpbmUgaXMgV2ViS2l0LiAqL1xuZXhwb3J0IGNvbnN0IGlzV2Via2l0ID1cbiAgIWlzU2VydmVyICYmIC9BcHBsZVdlYktpdC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgIWlzQmxpbmsgJiYgIWlzRWRnZSAmJiAhaXNUcmlkZW50O1xuXG4vKiogV2hldGhlciB0aGUgY3VycmVudCBwbGF0Zm9ybSBpcyBBcHBsZSBpT1MuICovXG5leHBvcnQgY29uc3QgaXNJT1MgPVxuICAhaXNTZXJ2ZXIgJiYgL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgISgnTVNTdHJlYW0nIGluIHdpbmRvdyk7XG5cbi8vIEl0J3MgZGlmZmljdWx0IHRvIGRldGVjdCB0aGUgcGxhaW4gR2Vja28gZW5naW5lLCBiZWNhdXNlIG1vc3Qgb2YgdGhlIGJyb3dzZXJzIGlkZW50aWZ5XG4vLyB0aGVtIHNlbGYgYXMgR2Vja28tbGlrZSBicm93c2VycyBhbmQgbW9kaWZ5IHRoZSB1c2VyQWdlbnQncyBhY2NvcmRpbmcgdG8gdGhhdC5cbi8vIFNpbmNlIHdlIG9ubHkgY292ZXIgb25lIGV4cGxpY2l0IEZpcmVmb3ggY2FzZSwgd2UgY2FuIHNpbXBseSBjaGVjayBmb3IgRmlyZWZveFxuLy8gaW5zdGVhZCBvZiBoYXZpbmcgYW4gdW5zdGFibGUgY2hlY2sgZm9yIEdlY2tvLlxuLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgYnJvd3NlciBpcyBGaXJlZm94LiAqL1xuZXhwb3J0IGNvbnN0IGlzRmlyZWZveCA9ICFpc1NlcnZlciAmJiAvKGZpcmVmb3h8bWluZWZpZWxkKS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbi8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IHBsYXRmb3JtIGlzIEFuZHJvaWQuICovXG4vLyBUcmlkZW50IG9uIG1vYmlsZSBhZGRzIHRoZSBhbmRyb2lkIHBsYXRmb3JtIHRvIHRoZSB1c2VyQWdlbnQgdG8gdHJpY2sgZGV0ZWN0aW9ucy5cbmV4cG9ydCBjb25zdCBpc0FuZHJvaWQgPSAhaXNTZXJ2ZXIgJiYgL2FuZHJvaWQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmICFpc1RyaWRlbnQ7XG5cbi8vIFNhZmFyaSBicm93c2VycyB3aWxsIGluY2x1ZGUgdGhlIFNhZmFyaSBrZXl3b3JkIGluIHRoZWlyIHVzZXJBZ2VudC4gU29tZSBicm93c2VycyBtYXkgZmFrZVxuLy8gdGhpcyBhbmQganVzdCBwbGFjZSB0aGUgU2FmYXJpIGtleXdvcmQgaW4gdGhlIHVzZXJBZ2VudC4gVG8gYmUgbW9yZSBzYWZlIGFib3V0IFNhZmFyaSBldmVyeVxuLy8gU2FmYXJpIGJyb3dzZXIgc2hvdWxkIGFsc28gdXNlIFdlYmtpdCBhcyBpdHMgbGF5b3V0IGVuZ2luZS5cbi8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IGJyb3dzZXIgaXMgU2FmYXJpLiAqL1xuZXhwb3J0IGNvbnN0IGlzU2FmYXJpID0gIWlzU2VydmVyICYmIC9zYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmIGlzV2Via2l0O1xuXG4vKipcbiAqIFdlIGp1c3QgY2hlY2sgZm9yIHRoZSBibGluayBlbmdpbmUuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0Nocm9taXVtID0gaXNCbGluaztcblxuLyoqIFdoZXRoZXIgdGhlIGFwcGxpY2F0aW9uIGlzIGJlaW5nIHJlbmRlcmVkIGluIGEgTmV4dC5qcyBlbnZpcm9ubWVudC4gKi9cbmV4cG9ydCBjb25zdCBpc05leHRqcyA9ICgpOiBib29sZWFuID0+ICEhKGdsb2JhbFRoaXMgYXMgeyBuZXh0Pzogb2JqZWN0IH0pLm5leHQ7XG4iLCJleHBvcnQgZnVuY3Rpb24gcGFnZVNjcm9sbERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZG9jdW1lbnQuYm9keS5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLXNjcm9sbC1kaXNhYmxlZCcpO1xufVxuXG4vKipcbiAqIEhhbmRsZSB0aGUgcGFnZSBzY3JvbGwsIGFsbG93aW5nIHRvIGRpc2FibGUvZW5hYmxlIHRoZSB3aW5kb3cgc2Nyb2xsIGF2b2lkaW5nIGEgcG90ZW50aWFsXG4gKiBjb250ZW50IHNoaWZ0IGNhdXNlZCBieSB0aGUgZGlzYXBwZWFyYW5jZS9hcHBlYXJhbmNlIG9mIHRoZSBzY3JvbGxiYXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJTY3JvbGxIYW5kbGVyIHtcbiAgcHJpdmF0ZSBfaGVpZ2h0ITogc3RyaW5nO1xuICBwcml2YXRlIF9wb3NpdGlvbiE6IHN0cmluZztcbiAgcHJpdmF0ZSBfb3ZlcmZsb3chOiBzdHJpbmc7XG4gIHByaXZhdGUgX21hcmdpbklubGluZUVuZCE6IHN0cmluZztcblxuICBwdWJsaWMgZGlzYWJsZVNjcm9sbCgpOiB2b2lkIHtcbiAgICBpZiAocGFnZVNjcm9sbERpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTYXZlIGFueSBwcmUtZXhpc3Rpbmcgc3R5bGVzIHRvIHJlYXBwbHkgdGhlbSB0byB0aGUgYm9keSB3aGVuIGVuYWJsaW5nIHRoZSBzY3JvbGwgYWdhaW4uXG4gICAgdGhpcy5faGVpZ2h0ID0gZG9jdW1lbnQuYm9keS5zdHlsZS5oZWlnaHQ7XG4gICAgdGhpcy5fcG9zaXRpb24gPSBkb2N1bWVudC5ib2R5LnN0eWxlLnBvc2l0aW9uO1xuICAgIHRoaXMuX292ZXJmbG93ID0gZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdztcbiAgICB0aGlzLl9tYXJnaW5JbmxpbmVFbmQgPSBkb2N1bWVudC5ib2R5LnN0eWxlLm1hcmdpbklubGluZUVuZDtcblxuICAgIGNvbnN0IHNjcm9sbGJhcldpZHRoID0gd2luZG93LmlubmVyV2lkdGggLSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7XG5cbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5oZWlnaHQgPSAnMTAwZHZoJztcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm1hcmdpbklubGluZUVuZCA9IGAke3Njcm9sbGJhcldpZHRofXB4YDtcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KCctLXNiYi1zY3JvbGxiYXItd2lkdGgnLCBgJHtzY3JvbGxiYXJXaWR0aH1weGApO1xuXG4gICAgZG9jdW1lbnQuYm9keS50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtc2JiLXNjcm9sbC1kaXNhYmxlZCcsIHRydWUpO1xuICB9XG5cbiAgcHVibGljIGVuYWJsZVNjcm9sbCgpOiB2b2lkIHtcbiAgICBpZiAoIXBhZ2VTY3JvbGxEaXNhYmxlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUmV2ZXJ0IGJvZHkgaW5saW5lIHN0eWxlcy5cbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmhlaWdodCA9IHRoaXMuX2hlaWdodCB8fCAnJztcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBvc2l0aW9uID0gdGhpcy5fcG9zaXRpb24gfHwgJyc7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IHRoaXMuX292ZXJmbG93IHx8ICcnO1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luSW5saW5lRW5kID0gdGhpcy5fbWFyZ2luSW5saW5lRW5kIHx8ICcnO1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLXNjcm9sbGJhci13aWR0aCcsICcwJyk7XG5cbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1zYmItc2Nyb2xsLWRpc2FibGVkJyk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRWdCLFNBQUEsd0JBQXdCLFNBQXNCLGlCQUF1QjtBQUNuRixNQUFJLFVBQVU7QUFDTCxXQUFBO0FBQUEsRUFBQTtBQUVULFFBQU0sb0JBQW9CLGlCQUFpQixPQUFPLEVBQUUsaUJBQWlCLGVBQWU7QUFFN0UsU0FBQSxXQUFXLGlCQUFpQixNQUFNO0FBQzNDO0FDUGEsTUFBQSxjQUFjLENBQUMsUUFBUSxTQUFTLFNBQVMsVUFBVSxRQUFRLFNBQVMsT0FBTztBQVl4RSxTQUFBLGFBQ2QsTUFDQSxJQUNBLFlBQThDO0FBRTlDLE1BQUksVUFBVTtBQUNMLFdBQUE7QUFBQSxFQUFBO0FBR0gsUUFBQSxnQkFBZ0IsaUJBQWlCLFNBQVMsZUFBZTtBQUMvRCxRQUFNLGdCQUFnQixPQUFPLGNBQWMsaUJBQWlCLG9CQUFvQixJQUFJLE1BQU0sSUFBSTtBQUN4RixRQUFBLGdCQUFnQixLQUNsQixHQUNFLFdBQ0UsY0FBYyxpQkFDWixvQkFBb0IsRUFBRSxLQUFJLHlDQUFZLHdCQUF1QixRQUFRLEtBQUssRUFBRSxDQUM3RSxNQUNFLHlDQUFZLHdCQUF1QixJQUFJLE9BQzlDLFFBQ0E7QUFFRSxRQUFBLFdBQVcsaUJBQWlCLGVBQWUsYUFBYTtBQUN4RCxRQUFBLFdBQVcsaUJBQWlCLGVBQWUsYUFBYTtBQUN4RCxRQUFBLE1BQU0saUJBQWlCLGlCQUFpQjtBQUV2QyxTQUFBLE9BQU8sV0FBVyxHQUFHLFFBQVEsR0FBRyxHQUFHLEdBQUcsUUFBUSxFQUFFLEVBQUU7QUFDM0Q7QUNqQ00sU0FBVSxzQkFDZCxXQUErQjtBQUUvQixNQUFJLFVBQVU7QUFDTCxXQUFBO0FBQUEsRUFBQSxXQUNFLE9BQU8sY0FBYyxV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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../../../../src/elements/core/images.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../../../../src/elements/core/images.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,YAAY,EAAE,MAAM,EAWzB,CAAC;AAEF,eAAe,YAAY,CAAC"}
|