@ardium-ui/ui 1.0.3 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -25
- package/esm2022/lib/_internal/boolean-component.mjs +28 -42
- package/esm2022/lib/_internal/clear-button/clear-button.component.mjs +5 -5
- package/esm2022/lib/_internal/clear-button/clear-button.module.mjs +5 -5
- package/esm2022/lib/_internal/disablable-component.mjs +24 -22
- package/esm2022/lib/_internal/focusable-component.mjs +12 -25
- package/esm2022/lib/_internal/item-storages/dropdown-item-storage.mjs +172 -169
- package/esm2022/lib/_internal/item-storages/simple-item-storage.mjs +115 -120
- package/esm2022/lib/_internal/item-storages/simplest-item-storage.mjs +56 -53
- package/esm2022/lib/_internal/models/pagination.model.mjs +72 -106
- package/esm2022/lib/_internal/ngmodel-component.mjs +5 -5
- package/esm2022/lib/_internal/queue.mjs +1 -1
- package/esm2022/lib/_internal/selectable-list-component.mjs +74 -98
- package/esm2022/lib/badge/badge.directive.mjs +70 -99
- package/esm2022/lib/badge/badge.module.mjs +5 -5
- package/esm2022/lib/badge/badge.types.mjs +1 -1
- package/esm2022/lib/badge/index.mjs +4 -0
- package/esm2022/lib/buttons/_button-base.mjs +13 -35
- package/esm2022/lib/buttons/button/button.component.mjs +22 -37
- package/esm2022/lib/buttons/button/button.module.mjs +5 -5
- package/esm2022/lib/buttons/button/index.mjs +3 -0
- package/esm2022/lib/buttons/fab/fab.component.mjs +16 -28
- package/esm2022/lib/buttons/fab/fab.module.mjs +5 -5
- package/esm2022/lib/buttons/fab/index.mjs +3 -0
- package/esm2022/lib/buttons/general-button.types.mjs +1 -1
- package/esm2022/lib/buttons/icon-button/icon-button.component.mjs +17 -25
- package/esm2022/lib/buttons/icon-button/icon-button.module.mjs +5 -5
- package/esm2022/lib/buttons/icon-button/index.mjs +3 -0
- package/esm2022/lib/card/card.children.mjs +32 -33
- package/esm2022/lib/card/card.component.mjs +14 -17
- package/esm2022/lib/card/card.module.mjs +5 -5
- package/esm2022/lib/card/card.types.mjs +1 -1
- package/esm2022/lib/card/index.mjs +5 -0
- package/esm2022/lib/checkbox/checkbox.component.mjs +33 -46
- package/esm2022/lib/checkbox/checkbox.module.mjs +5 -5
- package/esm2022/lib/checkbox/checkbox.types.mjs +1 -1
- package/esm2022/lib/checkbox/index.mjs +4 -0
- package/esm2022/lib/checkbox-list/checkbox-list.component.mjs +31 -57
- package/esm2022/lib/checkbox-list/checkbox-list.module.mjs +5 -5
- package/esm2022/lib/checkbox-list/checkbox-list.types.mjs +1 -1
- package/esm2022/lib/checkbox-list/index.mjs +4 -0
- package/esm2022/lib/chip/chip.component.mjs +22 -42
- package/esm2022/lib/chip/chip.module.mjs +5 -5
- package/esm2022/lib/chip/deletable-chip/deletable-chip.component.mjs +28 -53
- package/esm2022/lib/chip/index.mjs +5 -0
- package/esm2022/lib/chip/selectable-chip/selectable-chip.component.mjs +25 -49
- package/esm2022/lib/color/color-display/color-display.component.mjs +15 -32
- package/esm2022/lib/color/color-display/color-display.module.mjs +5 -5
- package/esm2022/lib/color/color-display/color-display.types.mjs +1 -1
- package/esm2022/lib/color/color-display/index.mjs +4 -0
- package/esm2022/lib/color/color-picker/color-picker.types.mjs +1 -1
- package/esm2022/lib/dialog/dialog.component.mjs +54 -130
- package/esm2022/lib/dialog/dialog.directives.mjs +4 -4
- package/esm2022/lib/dialog/dialog.module.mjs +5 -5
- package/esm2022/lib/dialog/dialog.types.mjs +1 -1
- package/esm2022/lib/dialog/index.mjs +5 -0
- package/esm2022/lib/divider/divider.component.mjs +9 -14
- package/esm2022/lib/divider/divider.module.mjs +5 -5
- package/esm2022/lib/divider/index.mjs +3 -0
- package/esm2022/lib/dropdown-panel/dropdown-panel.component.mjs +40 -59
- package/esm2022/lib/dropdown-panel/dropdown-panel.module.mjs +5 -5
- package/esm2022/lib/dropdown-panel/dropdown-panel.types.mjs +1 -1
- package/esm2022/lib/dropdown-panel/index.mjs +4 -0
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.component.mjs +12 -17
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.directives.mjs +10 -10
- package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.module.mjs +6 -6
- package/esm2022/lib/file-inputs/file-drop-area/index.mjs +4 -0
- package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +24 -50
- package/esm2022/lib/file-inputs/file-input/file-input.directives.mjs +19 -19
- package/esm2022/lib/file-inputs/file-input/file-input.module.mjs +5 -5
- package/esm2022/lib/file-inputs/file-input/index.mjs +4 -0
- package/esm2022/lib/file-inputs/file-input-base.mjs +38 -72
- package/esm2022/lib/file-inputs/file-input-types.mjs +1 -1
- package/esm2022/lib/form-field-frame/form-field-frame.component.mjs +20 -47
- package/esm2022/lib/form-field-frame/form-field-frame.directives.mjs +7 -7
- package/esm2022/lib/form-field-frame/form-field-frame.module.mjs +5 -5
- package/esm2022/lib/form-field-frame/index.mjs +4 -0
- package/esm2022/lib/icon/icon.component.mjs +32 -67
- package/esm2022/lib/icon/icon.module.mjs +5 -5
- package/esm2022/lib/icon/icon.pipe.mjs +4 -4
- package/esm2022/lib/icon/index.mjs +4 -0
- package/esm2022/lib/inputs/color-input/color-input.directives.mjs +25 -25
- package/esm2022/lib/inputs/color-input/color-input.types.mjs +1 -1
- package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +65 -115
- package/esm2022/lib/inputs/digit-input/digit-input.model.mjs +83 -92
- package/esm2022/lib/inputs/digit-input/digit-input.module.mjs +5 -5
- package/esm2022/lib/inputs/digit-input/digit-input.types.mjs +1 -1
- package/esm2022/lib/inputs/digit-input/digit-input.utils.mjs +1 -1
- package/esm2022/lib/inputs/digit-input/index.mjs +4 -0
- package/esm2022/lib/inputs/hex-input/hex-input.component.mjs +59 -122
- package/esm2022/lib/inputs/hex-input/hex-input.directives.mjs +10 -10
- package/esm2022/lib/inputs/hex-input/hex-input.module.mjs +24 -8
- package/esm2022/lib/inputs/hex-input/index.mjs +4 -0
- package/esm2022/lib/inputs/hex-input.model.mjs +24 -33
- package/esm2022/lib/inputs/input/index.mjs +4 -0
- package/esm2022/lib/inputs/input/input.component.mjs +95 -154
- package/esm2022/lib/inputs/input/input.directives.mjs +16 -16
- package/esm2022/lib/inputs/input/input.module.mjs +21 -7
- package/esm2022/lib/inputs/input-transformers.mjs +6 -6
- package/esm2022/lib/inputs/input-types.mjs +1 -1
- package/esm2022/lib/inputs/input-utils.mjs +75 -94
- package/esm2022/lib/inputs/number-input/index.mjs +4 -0
- package/esm2022/lib/inputs/number-input/number-input.component.mjs +106 -170
- package/esm2022/lib/inputs/number-input/number-input.directives.mjs +4 -4
- package/esm2022/lib/inputs/number-input/number-input.module.mjs +5 -5
- package/esm2022/lib/inputs/password-input/index.mjs +5 -0
- package/esm2022/lib/inputs/password-input/password-input.component.mjs +74 -144
- package/esm2022/lib/inputs/password-input/password-input.directives.mjs +13 -13
- package/esm2022/lib/inputs/password-input/password-input.module.mjs +5 -5
- package/esm2022/lib/inputs/password-input/password-input.types.mjs +1 -1
- package/esm2022/lib/inputs/simple-input/index.mjs +4 -0
- package/esm2022/lib/inputs/simple-input/simple-input.component.mjs +57 -110
- package/esm2022/lib/inputs/simple-input/simple-input.directives.mjs +10 -10
- package/esm2022/lib/inputs/simple-input/simple-input.module.mjs +5 -5
- package/esm2022/lib/kbd/index.mjs +4 -0
- package/esm2022/lib/kbd/kbd.component.mjs +15 -29
- package/esm2022/lib/kbd/kbd.module.mjs +5 -5
- package/esm2022/lib/kbd/kbd.pipe.mjs +4 -4
- package/esm2022/lib/kbd-shortcut/index.mjs +3 -0
- package/esm2022/lib/kbd-shortcut/kbd-shortcut.component.mjs +23 -40
- package/esm2022/lib/kbd-shortcut/kbd-shortcut.module.mjs +5 -5
- package/esm2022/lib/modal/index.mjs +3 -0
- package/esm2022/lib/modal/modal.component.mjs +42 -83
- package/esm2022/lib/modal/modal.module.mjs +5 -5
- package/esm2022/lib/option/index.mjs +3 -0
- package/esm2022/lib/option/option.component.mjs +24 -46
- package/esm2022/lib/option/option.module.mjs +5 -5
- package/esm2022/lib/progress-bar/index.mjs +5 -0
- package/esm2022/lib/progress-bar/progress-bar.component.mjs +43 -81
- package/esm2022/lib/progress-bar/progress-bar.directive.mjs +4 -4
- package/esm2022/lib/progress-bar/progress-bar.module.mjs +5 -5
- package/esm2022/lib/progress-bar/progress-bar.types.mjs +1 -1
- package/esm2022/lib/progress-circle/index.mjs +5 -0
- package/esm2022/lib/progress-circle/progress-circle.component.mjs +33 -78
- package/esm2022/lib/progress-circle/progress-circle.directive.mjs +4 -4
- package/esm2022/lib/progress-circle/progress-circle.module.mjs +5 -5
- package/esm2022/lib/progress-circle/progress-circle.types.mjs +1 -1
- package/esm2022/lib/radio/index.mjs +4 -0
- package/esm2022/lib/radio/radio/radio.component.mjs +16 -25
- package/esm2022/lib/radio/radio-group.component.mjs +71 -85
- package/esm2022/lib/radio/radio.module.mjs +5 -5
- package/esm2022/lib/search-functions.mjs +7 -7
- package/esm2022/lib/segment/index.mjs +5 -0
- package/esm2022/lib/segment/segment.component.mjs +70 -137
- package/esm2022/lib/segment/segment.directives.mjs +4 -4
- package/esm2022/lib/segment/segment.module.mjs +5 -5
- package/esm2022/lib/segment/segment.types.mjs +1 -1
- package/esm2022/lib/select/index.mjs +5 -0
- package/esm2022/lib/select/select.component.mjs +348 -655
- package/esm2022/lib/select/select.directive.mjs +46 -46
- package/esm2022/lib/select/select.module.mjs +5 -5
- package/esm2022/lib/select/select.types.mjs +1 -1
- package/esm2022/lib/slide-toggle/index.mjs +4 -0
- package/esm2022/lib/slide-toggle/slide-toggle.component.mjs +19 -24
- package/esm2022/lib/slide-toggle/slide-toggle.module.mjs +5 -5
- package/esm2022/lib/slide-toggle/slide-toggle.types.mjs +5 -0
- package/esm2022/lib/slider/abstract-slider.mjs +111 -200
- package/esm2022/lib/slider/index.mjs +7 -0
- package/esm2022/lib/slider/range-slider/range-slider.component.mjs +26 -23
- package/esm2022/lib/slider/range-slider/range-slider.module.mjs +5 -5
- package/esm2022/lib/slider/slider.component.mjs +13 -10
- package/esm2022/lib/slider/slider.directive.mjs +4 -4
- package/esm2022/lib/slider/slider.module.mjs +7 -7
- package/esm2022/lib/slider/slider.types.mjs +1 -1
- package/esm2022/lib/snackbar/index.mjs +1 -1
- package/esm2022/lib/snackbar/snackbar-ref.mjs +1 -1
- package/esm2022/lib/snackbar/snackbar.component.mjs +8 -8
- package/esm2022/lib/snackbar/snackbar.service.mjs +13 -12
- package/esm2022/lib/snackbar/snackbar.token.mjs +1 -1
- package/esm2022/lib/snackbar/snackbar.types.mjs +1 -1
- package/esm2022/lib/spinner/index.mjs +3 -0
- package/esm2022/lib/spinner/spinner.component.mjs +9 -13
- package/esm2022/lib/spinner/spinner.module.mjs +5 -5
- package/esm2022/lib/star/index.mjs +4 -0
- package/esm2022/lib/star/star-button/index.mjs +3 -0
- package/esm2022/lib/star/star-button/star-button.component.mjs +17 -26
- package/esm2022/lib/star/star-button/star-button.module.mjs +5 -5
- package/esm2022/lib/star/star-display/index.mjs +3 -0
- package/esm2022/lib/star/star-display/star-display.component.mjs +48 -55
- package/esm2022/lib/star/star-display/star-display.module.mjs +5 -5
- package/esm2022/lib/star/star-input/index.mjs +3 -0
- package/esm2022/lib/star/star-input/star-input.component.mjs +70 -106
- package/esm2022/lib/star/star-input/star-input.module.mjs +5 -5
- package/esm2022/lib/star/star.component.mjs +12 -20
- package/esm2022/lib/star/star.module.mjs +5 -5
- package/esm2022/lib/star/star.types.mjs +1 -1
- package/esm2022/lib/statebox/index.mjs +3 -0
- package/esm2022/lib/statebox/statebox.component.mjs +64 -102
- package/esm2022/lib/statebox/statebox.module.mjs +5 -5
- package/esm2022/lib/statebox/statebox.types.mjs +1 -1
- package/esm2022/lib/tabber/index.mjs +4 -0
- package/esm2022/lib/tabber/tab/tab.component.mjs +42 -0
- package/esm2022/lib/tabber/tabber.component.mjs +83 -0
- package/esm2022/lib/tabber/tabber.module.mjs +19 -0
- package/esm2022/lib/table/index.mjs +5 -0
- package/esm2022/lib/table/table-item-storage.mjs +204 -200
- package/esm2022/lib/table/table.component.mjs +184 -304
- package/esm2022/lib/table/table.directives.mjs +19 -21
- package/esm2022/lib/table/table.module.mjs +5 -5
- package/esm2022/lib/table/table.types.mjs +1 -1
- package/esm2022/lib/table/utils.mjs +1 -1
- package/esm2022/lib/table-from-csv/index.mjs +3 -0
- package/esm2022/lib/table-from-csv/table-from-csv.component.mjs +85 -29
- package/esm2022/lib/table-from-csv/table-from-csv.module.mjs +5 -5
- package/esm2022/lib/table-pagination/index.mjs +4 -0
- package/esm2022/lib/table-pagination/table-pagination.component.mjs +46 -114
- package/esm2022/lib/table-pagination/table-pagination.module.mjs +5 -5
- package/esm2022/lib/table-pagination/table-pagination.types.mjs +1 -1
- package/esm2022/lib/types/alignment.types.mjs +1 -1
- package/esm2022/lib/types/colors.types.mjs +1 -1
- package/esm2022/lib/types/item-storage.types.mjs +1 -1
- package/esm2022/lib/types/theming.types.mjs +1 -1
- package/esm2022/lib/types/utility.types.mjs +2 -2
- package/esm2022/public-api.mjs +58 -182
- package/fesm2022/ardium-ui-ui.mjs +7847 -11692
- package/fesm2022/ardium-ui-ui.mjs.map +1 -1
- package/lib/_internal/boolean-component.d.ts +8 -9
- package/lib/_internal/clear-button/clear-button.component.d.ts +1 -1
- package/lib/_internal/disablable-component.d.ts +12 -7
- package/lib/_internal/focusable-component.d.ts +5 -7
- package/lib/_internal/item-storages/dropdown-item-storage.d.ts +43 -41
- package/lib/_internal/item-storages/simple-item-storage.d.ts +28 -25
- package/lib/_internal/item-storages/simplest-item-storage.d.ts +14 -9
- package/lib/_internal/models/pagination.model.d.ts +38 -42
- package/lib/_internal/ngmodel-component.d.ts +1 -1
- package/lib/_internal/selectable-list-component.d.ts +30 -30
- package/lib/badge/badge.directive.d.ts +15 -20
- package/lib/badge/index.d.ts +3 -0
- package/lib/buttons/_button-base.d.ts +9 -12
- package/lib/buttons/button/button.component.d.ts +6 -8
- package/lib/buttons/button/index.d.ts +2 -0
- package/lib/buttons/fab/fab.component.d.ts +4 -6
- package/lib/buttons/fab/index.d.ts +2 -0
- package/lib/buttons/icon-button/icon-button.component.d.ts +6 -7
- package/lib/buttons/icon-button/index.d.ts +2 -0
- package/lib/card/card.children.d.ts +4 -3
- package/lib/card/card.component.d.ts +5 -4
- package/lib/card/index.d.ts +4 -0
- package/lib/checkbox/checkbox.component.d.ts +8 -12
- package/lib/checkbox/index.d.ts +3 -0
- package/lib/checkbox-list/checkbox-list.component.d.ts +22 -21
- package/lib/checkbox-list/index.d.ts +3 -0
- package/lib/chip/chip.component.d.ts +8 -10
- package/lib/chip/deletable-chip/deletable-chip.component.d.ts +11 -14
- package/lib/chip/index.d.ts +4 -0
- package/lib/chip/selectable-chip/selectable-chip.component.d.ts +10 -12
- package/lib/color/color-display/color-display.component.d.ts +6 -9
- package/lib/color/color-display/index.d.ts +3 -0
- package/lib/color/color-picker/color-picker.types.d.ts +4 -4
- package/lib/dialog/dialog.component.d.ts +25 -35
- package/lib/dialog/dialog.types.d.ts +2 -2
- package/lib/dialog/index.d.ts +4 -0
- package/lib/divider/divider.component.d.ts +3 -4
- package/lib/divider/index.d.ts +2 -0
- package/lib/dropdown-panel/dropdown-panel.component.d.ts +17 -20
- package/lib/dropdown-panel/index.d.ts +3 -0
- package/lib/file-inputs/file-drop-area/file-drop-area.component.d.ts +5 -4
- package/lib/file-inputs/file-drop-area/index.d.ts +3 -0
- package/lib/file-inputs/file-input/file-input.component.d.ts +13 -17
- package/lib/file-inputs/file-input/index.d.ts +3 -0
- package/lib/file-inputs/file-input-base.d.ts +13 -18
- package/lib/form-field-frame/form-field-frame.component.d.ts +12 -16
- package/lib/form-field-frame/index.d.ts +3 -0
- package/lib/icon/icon.component.d.ts +10 -19
- package/lib/icon/index.d.ts +3 -0
- package/lib/inputs/color-input/color-input.types.d.ts +2 -2
- package/lib/inputs/digit-input/digit-input.component.d.ts +22 -30
- package/lib/inputs/digit-input/digit-input.model.d.ts +8 -12
- package/lib/inputs/digit-input/digit-input.types.d.ts +4 -4
- package/lib/inputs/digit-input/digit-input.utils.d.ts +4 -5
- package/lib/inputs/digit-input/index.d.ts +3 -0
- package/lib/inputs/hex-input/hex-input.component.d.ts +32 -38
- package/lib/inputs/hex-input/index.d.ts +3 -0
- package/lib/inputs/hex-input.model.d.ts +10 -11
- package/lib/inputs/input/index.d.ts +3 -0
- package/lib/inputs/input/input.component.d.ts +34 -40
- package/lib/inputs/input/input.directives.d.ts +3 -3
- package/lib/inputs/input-utils.d.ts +24 -27
- package/lib/inputs/number-input/index.d.ts +3 -0
- package/lib/inputs/number-input/number-input.component.d.ts +38 -48
- package/lib/inputs/password-input/index.d.ts +4 -0
- package/lib/inputs/password-input/password-input.component.d.ts +28 -40
- package/lib/inputs/password-input/password-input.types.d.ts +2 -2
- package/lib/inputs/simple-input/index.d.ts +3 -0
- package/lib/inputs/simple-input/simple-input.component.d.ts +30 -35
- package/lib/kbd/index.d.ts +3 -0
- package/lib/kbd/kbd.component.d.ts +6 -8
- package/lib/kbd-shortcut/index.d.ts +2 -0
- package/lib/kbd-shortcut/kbd-shortcut.component.d.ts +7 -10
- package/lib/modal/index.d.ts +2 -0
- package/lib/modal/modal.component.d.ts +22 -30
- package/lib/option/index.d.ts +2 -0
- package/lib/option/option.component.d.ts +11 -16
- package/lib/progress-bar/index.d.ts +4 -0
- package/lib/progress-bar/progress-bar.component.d.ts +14 -20
- package/lib/progress-bar/progress-bar.types.d.ts +2 -2
- package/lib/progress-circle/index.d.ts +4 -0
- package/lib/progress-circle/progress-circle.component.d.ts +12 -20
- package/lib/progress-circle/progress-circle.types.d.ts +2 -2
- package/lib/radio/index.d.ts +3 -0
- package/lib/radio/radio/radio.component.d.ts +7 -8
- package/lib/radio/radio-group.component.d.ts +13 -16
- package/lib/segment/index.d.ts +4 -0
- package/lib/segment/segment.component.d.ts +22 -34
- package/lib/segment/segment.directives.d.ts +2 -3
- package/lib/select/index.d.ts +4 -0
- package/lib/select/select.component.d.ts +114 -160
- package/lib/select/select.directive.d.ts +3 -3
- package/lib/select/select.types.d.ts +2 -76
- package/lib/slide-toggle/index.d.ts +3 -0
- package/lib/slide-toggle/slide-toggle.component.d.ts +9 -7
- package/lib/slide-toggle/slide-toggle.types.d.ts +5 -0
- package/lib/slider/abstract-slider.d.ts +38 -55
- package/lib/slider/index.d.ts +6 -0
- package/lib/slider/range-slider/range-slider.component.d.ts +3 -1
- package/lib/slider/slider.component.d.ts +2 -0
- package/lib/slider/slider.types.d.ts +8 -8
- package/lib/snackbar/snackbar-ref.d.ts +1 -2
- package/lib/snackbar/snackbar.component.d.ts +3 -3
- package/lib/snackbar/snackbar.service.d.ts +2 -2
- package/lib/snackbar/snackbar.types.d.ts +4 -4
- package/lib/spinner/index.d.ts +2 -0
- package/lib/spinner/spinner.component.d.ts +3 -3
- package/lib/star/index.d.ts +3 -0
- package/lib/star/star-button/index.d.ts +2 -0
- package/lib/star/star-button/star-button.component.d.ts +7 -7
- package/lib/star/star-display/index.d.ts +2 -0
- package/lib/star/star-display/star-display.component.d.ts +8 -12
- package/lib/star/star-input/index.d.ts +2 -0
- package/lib/star/star-input/star-input.component.d.ts +17 -22
- package/lib/star/star.component.d.ts +5 -5
- package/lib/statebox/index.d.ts +3 -0
- package/lib/statebox/statebox.component.d.ts +15 -21
- package/lib/statebox/statebox.types.d.ts +12 -8
- package/lib/tabber/index.d.ts +3 -0
- package/lib/tabber/tab/tab.component.d.ts +18 -0
- package/lib/tabber/tabber.component.d.ts +25 -0
- package/lib/tabber/tabber.module.d.ts +9 -0
- package/lib/table/index.d.ts +4 -0
- package/lib/table/table-item-storage.d.ts +70 -58
- package/lib/table/table.component.d.ts +59 -78
- package/lib/table/table.directives.d.ts +4 -3
- package/lib/table-from-csv/index.d.ts +2 -0
- package/lib/table-from-csv/table-from-csv.component.d.ts +46 -9
- package/lib/table-pagination/index.d.ts +3 -0
- package/lib/table-pagination/table-pagination.component.d.ts +21 -30
- package/lib/types/item-storage.types.d.ts +19 -18
- package/lib/types/utility.types.d.ts +2 -1
- package/package.json +8 -9
- package/prebuilt-themes/default/badge.css +5 -5
- package/prebuilt-themes/default/buttons/fab.css +4 -3
- package/prebuilt-themes/default/buttons/fab.css.map +1 -1
- package/prebuilt-themes/default/card.css +7 -7
- package/prebuilt-themes/default/chips.css +3 -8
- package/prebuilt-themes/default/chips.css.map +1 -1
- package/prebuilt-themes/default/core.css +6 -3
- package/prebuilt-themes/default/core.css.map +1 -1
- package/prebuilt-themes/default/inputs/color-input.css +1 -1
- package/prebuilt-themes/default/inputs/digit-input.css +1 -1
- package/prebuilt-themes/default/inputs/file-input.css +139 -2
- package/prebuilt-themes/default/inputs/file-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/hex-input.css +2 -2
- package/prebuilt-themes/default/inputs/input.css +1 -1
- package/prebuilt-themes/default/inputs/search-bar.css +1 -1
- package/prebuilt-themes/default/inputs/simple-input.css +1 -1
- package/prebuilt-themes/default/modal.css +1 -1
- package/prebuilt-themes/default/segment.css +2 -2
- package/prebuilt-themes/default/segment.css.map +1 -1
- package/prebuilt-themes/default/select.css +5 -3
- package/prebuilt-themes/default/select.css.map +1 -1
- package/prebuilt-themes/default/snackbar.css +0 -1
- package/prebuilt-themes/default/snackbar.css.map +1 -1
- package/prebuilt-themes/default/tabber.css +207 -0
- package/prebuilt-themes/default/tabber.css.map +1 -0
- package/public-api.d.ts +43 -136
- package/themes/_variables.scss +121 -121
- package/themes/default/_clear-button.scss +73 -73
- package/themes/default/_coloring.scss +137 -137
- package/themes/default/_dropdown-arrow.scss +12 -12
- package/themes/default/_mixins.scss +70 -70
- package/themes/default/badge.scss +94 -94
- package/themes/default/buttons/_button-mixins.scss +144 -144
- package/themes/default/buttons/button.scss +62 -62
- package/themes/default/buttons/fab.scss +74 -72
- package/themes/default/buttons/icon-button.scss +59 -59
- package/themes/default/calendar.scss +182 -182
- package/themes/default/card.scss +126 -126
- package/themes/default/checkbox-list.scss +83 -83
- package/themes/default/checkbox.scss +109 -109
- package/themes/default/chips.scss +200 -206
- package/themes/default/color-display.scss +41 -41
- package/themes/default/color-picker.scss +111 -111
- package/themes/default/core.scss +99 -96
- package/themes/default/dialog.scss +16 -16
- package/themes/default/divider.scss +13 -13
- package/themes/default/dropdown-panel.scss +45 -45
- package/themes/default/file-drop-area.scss +162 -162
- package/themes/default/form-field-frame.scss +78 -78
- package/themes/default/inputs/_shared.scss +46 -46
- package/themes/default/inputs/color-input.scss +46 -46
- package/themes/default/inputs/digit-input.scss +56 -56
- package/themes/default/inputs/file-input.scss +85 -78
- package/themes/default/inputs/hex-input.scss +27 -27
- package/themes/default/inputs/input.scss +52 -52
- package/themes/default/inputs/number-input.scss +121 -121
- package/themes/default/inputs/password-input.scss +43 -43
- package/themes/default/inputs/search-bar.scss +19 -19
- package/themes/default/inputs/simple-input.scss +19 -19
- package/themes/default/kbd-shortcut.scss +13 -13
- package/themes/default/kbd.scss +20 -20
- package/themes/default/modal.scss +93 -93
- package/themes/default/progress-bar.scss +166 -166
- package/themes/default/progress-circle.scss +56 -56
- package/themes/default/radio.scss +112 -112
- package/themes/default/segment.scss +340 -339
- package/themes/default/select.scss +255 -253
- package/themes/default/slide-toggle.scss +151 -151
- package/themes/default/slider.scss +224 -224
- package/themes/default/snackbar.scss +58 -60
- package/themes/default/spinner.scss +21 -21
- package/themes/default/stars.scss +122 -122
- package/themes/default/statebox.scss +109 -109
- package/themes/default/tabber.scss +86 -0
- package/themes/default/table-pagination.scss +56 -56
- package/themes/default/table.scss +403 -403
- package/esm2022/lib/calendar/calendar.component.mjs +0 -979
- package/esm2022/lib/calendar/calendar.directives.mjs +0 -107
- package/esm2022/lib/calendar/calendar.helpers.mjs +0 -47
- package/esm2022/lib/calendar/calendar.module.mjs +0 -21
- package/esm2022/lib/calendar/calendar.types.mjs +0 -11
- package/esm2022/lib/color/color-picker/color-picker.component.mjs +0 -484
- package/esm2022/lib/color/color-picker/color-picker.directives.mjs +0 -55
- package/esm2022/lib/color/color-picker/color-picker.module.mjs +0 -43
- package/esm2022/lib/inputs/color-input/color-input.component.mjs +0 -421
- package/esm2022/lib/inputs/color-input/color-input.module.mjs +0 -85
- package/lib/calendar/calendar.component.d.ts +0 -155
- package/lib/calendar/calendar.directives.d.ts +0 -51
- package/lib/calendar/calendar.helpers.d.ts +0 -15
- package/lib/calendar/calendar.module.d.ts +0 -11
- package/lib/calendar/calendar.types.d.ts +0 -80
- package/lib/color/color-picker/color-picker.component.d.ts +0 -125
- package/lib/color/color-picker/color-picker.directives.d.ts +0 -27
- package/lib/color/color-picker/color-picker.module.d.ts +0 -13
- package/lib/inputs/color-input/color-input.component.d.ts +0 -147
- package/lib/inputs/color-input/color-input.module.d.ts +0 -16
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, ViewEncapsulation,
|
|
2
|
-
import { _NgModelComponentBase } from '../../_internal/ngmodel-component';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, computed, effect, forwardRef, input, output, viewChildren, } from '@angular/core';
|
|
3
2
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
3
|
import { coerceBooleanProperty } from '@ardium-ui/devkit';
|
|
4
|
+
import { _NgModelComponentBase } from '../../_internal/ngmodel-component';
|
|
5
5
|
import { FormElementAppearance, FormElementVariant } from '../../types/theming.types';
|
|
6
6
|
import { DigitInputModel } from './digit-input.model';
|
|
7
7
|
import { DigitInputShape } from './digit-input.types';
|
|
@@ -10,38 +10,46 @@ import * as i1 from "@angular/common";
|
|
|
10
10
|
export class ArdiumDigitInputComponent extends _NgModelComponentBase {
|
|
11
11
|
constructor() {
|
|
12
12
|
super(...arguments);
|
|
13
|
+
//! inputs ref
|
|
14
|
+
this.inputs = viewChildren('input');
|
|
15
|
+
//! data model
|
|
13
16
|
this.model = new DigitInputModel(this);
|
|
14
17
|
//! appearance
|
|
15
|
-
this.appearance = FormElementAppearance.Outlined;
|
|
16
|
-
this.variant = FormElementVariant.Rounded;
|
|
17
|
-
this.shape = DigitInputShape.Square;
|
|
18
|
-
this.
|
|
19
|
-
this.
|
|
18
|
+
this.appearance = input(FormElementAppearance.Outlined);
|
|
19
|
+
this.variant = input(FormElementVariant.Rounded);
|
|
20
|
+
this.shape = input(DigitInputShape.Square);
|
|
21
|
+
this.compact = input(false, { transform: v => coerceBooleanProperty(v) });
|
|
22
|
+
this.ngClasses = computed(() => [
|
|
23
|
+
`ard-appearance-${this.appearance()}`,
|
|
24
|
+
`ard-variant-${this.variant()}`,
|
|
25
|
+
`ard-shape-${this.shape()}`,
|
|
26
|
+
this.compact() ? 'ard-compact' : '',
|
|
27
|
+
].join(' '));
|
|
28
|
+
//! model access points
|
|
29
|
+
this.config = input.required({
|
|
30
|
+
transform: v => this.model.setConfig(v),
|
|
31
|
+
});
|
|
32
|
+
this.configArrayData = this.model.configArrayData;
|
|
33
|
+
this._oldConfigArrayDataLength = -1;
|
|
34
|
+
this.configArrayDataEffect = effect(() => {
|
|
35
|
+
if (this.configArrayData().length === this._oldConfigArrayDataLength)
|
|
36
|
+
return;
|
|
37
|
+
this._oldConfigArrayDataLength = this.configArrayData().length;
|
|
38
|
+
this._emitChange();
|
|
39
|
+
});
|
|
20
40
|
//! value two-way binding
|
|
21
|
-
this.
|
|
22
|
-
this.valueChange =
|
|
41
|
+
this.outputAsString = input(false, { transform: v => coerceBooleanProperty(v) });
|
|
42
|
+
this.valueChange = output();
|
|
43
|
+
this.stringValue = this.model.stringValue;
|
|
44
|
+
this.emittableValue = computed(() => {
|
|
45
|
+
if (this.outputAsString())
|
|
46
|
+
return this.model.stringValue();
|
|
47
|
+
return this.model.value();
|
|
48
|
+
});
|
|
23
49
|
//! event emitters
|
|
24
|
-
this.
|
|
25
|
-
this.
|
|
26
|
-
this.
|
|
27
|
-
this.focusIndexEvent = new EventEmitter();
|
|
28
|
-
this.blurIndexEvent = new EventEmitter();
|
|
29
|
-
}
|
|
30
|
-
get compact() {
|
|
31
|
-
return this._compact;
|
|
32
|
-
}
|
|
33
|
-
set compact(v) {
|
|
34
|
-
this._compact = coerceBooleanProperty(v);
|
|
35
|
-
}
|
|
36
|
-
get ngClasses() {
|
|
37
|
-
return [`ard-appearance-${this.appearance}`, `ard-variant-${this.variant}`, `ard-shape-${this.shape}`, this.compact ? 'ard-compact' : ''].join(' ');
|
|
38
|
-
}
|
|
39
|
-
//! model access points
|
|
40
|
-
set config(v) {
|
|
41
|
-
this.model.setConfig(v);
|
|
42
|
-
}
|
|
43
|
-
get isConfigDefined() {
|
|
44
|
-
return this.model.isConfigDefined;
|
|
50
|
+
this.finishedValue = output();
|
|
51
|
+
this.focusIndexEvent = output({ alias: 'focusIndex' });
|
|
52
|
+
this.blurIndexEvent = output({ alias: 'blurIndex' });
|
|
45
53
|
}
|
|
46
54
|
isInputEmpty(index) {
|
|
47
55
|
return !this.model.isDefinedAtIndex(index);
|
|
@@ -53,26 +61,9 @@ export class ArdiumDigitInputComponent extends _NgModelComponentBase {
|
|
|
53
61
|
_writeValue(v) {
|
|
54
62
|
return this.model.writeValue(v);
|
|
55
63
|
}
|
|
56
|
-
get outputAsString() {
|
|
57
|
-
return this._outputAsString;
|
|
58
|
-
}
|
|
59
|
-
set outputAsString(v) {
|
|
60
|
-
this._outputAsString = coerceBooleanProperty(v);
|
|
61
|
-
}
|
|
62
64
|
set value(v) {
|
|
63
65
|
this.writeValue(v);
|
|
64
66
|
}
|
|
65
|
-
get value() {
|
|
66
|
-
return this.model.value;
|
|
67
|
-
}
|
|
68
|
-
get stringValue() {
|
|
69
|
-
return this.model.stringValue;
|
|
70
|
-
}
|
|
71
|
-
get emittableValue() {
|
|
72
|
-
if (this.outputAsString)
|
|
73
|
-
return this.model.stringValue;
|
|
74
|
-
return this.value;
|
|
75
|
-
}
|
|
76
67
|
//! event handlers
|
|
77
68
|
onPaste(event, index) {
|
|
78
69
|
const value = event.clipboardData?.getData('text');
|
|
@@ -80,7 +71,7 @@ export class ArdiumDigitInputComponent extends _NgModelComponentBase {
|
|
|
80
71
|
event.preventDefault();
|
|
81
72
|
if (!value)
|
|
82
73
|
return;
|
|
83
|
-
const maxLength = this.inputs.length - index;
|
|
74
|
+
const maxLength = this.inputs().length - index;
|
|
84
75
|
value
|
|
85
76
|
.slice(0, maxLength)
|
|
86
77
|
.split('')
|
|
@@ -91,35 +82,28 @@ export class ArdiumDigitInputComponent extends _NgModelComponentBase {
|
|
|
91
82
|
}
|
|
92
83
|
onInput(event, index) {
|
|
93
84
|
this._updateSingleInputValue(event.target.value, index);
|
|
85
|
+
this.focusByIndex(index + 1);
|
|
94
86
|
}
|
|
95
87
|
_updateSingleInputValue(value, index) {
|
|
96
88
|
const valueChanged = this.model.validateInputAndSetValue(value, index);
|
|
97
89
|
if (!valueChanged || !valueChanged[0])
|
|
98
90
|
return;
|
|
99
|
-
|
|
100
|
-
|
|
91
|
+
this._emitChange();
|
|
92
|
+
if (this.model.isValueFull()) {
|
|
93
|
+
this.blur();
|
|
101
94
|
}
|
|
102
|
-
this._emitInput();
|
|
103
95
|
}
|
|
104
96
|
focusByIndex(index, tryFocusingNext, direction) {
|
|
105
|
-
if (index < 0 || index >= this.inputs.length)
|
|
97
|
+
if (index < 0 || index >= this.inputs().length)
|
|
106
98
|
return false;
|
|
107
|
-
const nextEl = this.inputs
|
|
99
|
+
const nextEl = this.inputs()[index]?.nativeElement;
|
|
108
100
|
if (!nextEl)
|
|
109
101
|
return false;
|
|
110
102
|
nextEl.focus();
|
|
111
|
-
if (tryFocusingNext && direction && document.activeElement
|
|
103
|
+
if (tryFocusingNext && direction && document.activeElement !== nextEl) {
|
|
112
104
|
return this.focusByIndex(index + direction);
|
|
113
105
|
}
|
|
114
|
-
return document.activeElement
|
|
115
|
-
}
|
|
116
|
-
_emitInput() {
|
|
117
|
-
this._onChangeRegistered?.(this.value);
|
|
118
|
-
this.inputEvent.emit(this.emittableValue);
|
|
119
|
-
this.valueChange.emit(this.emittableValue);
|
|
120
|
-
if (this.model.isValueFull) {
|
|
121
|
-
this.finishedValue.emit(this.emittableValue);
|
|
122
|
-
}
|
|
106
|
+
return document.activeElement === nextEl;
|
|
123
107
|
}
|
|
124
108
|
//focus, blur, change
|
|
125
109
|
onFocusMaster(event, index) {
|
|
@@ -127,52 +111,49 @@ export class ArdiumDigitInputComponent extends _NgModelComponentBase {
|
|
|
127
111
|
this.onFocus(event);
|
|
128
112
|
}
|
|
129
113
|
onBlurMaster(event, index) {
|
|
130
|
-
this._emitChange();
|
|
131
114
|
this.blurIndexEvent.emit(index);
|
|
132
115
|
this.onBlur(event);
|
|
133
116
|
}
|
|
134
117
|
_emitChange() {
|
|
135
|
-
this.
|
|
118
|
+
const v = this.emittableValue();
|
|
119
|
+
this._onChangeRegistered?.(v);
|
|
120
|
+
this.valueChange.emit(v);
|
|
121
|
+
if (this.model.isValueFull()) {
|
|
122
|
+
this.finishedValue.emit(v);
|
|
123
|
+
}
|
|
136
124
|
}
|
|
137
125
|
onKeydown(event, index) {
|
|
138
126
|
switch (event.key) {
|
|
139
127
|
case 'ArrowLeft':
|
|
140
128
|
this.focusByIndex(index - 1, true, -1);
|
|
141
|
-
|
|
129
|
+
return;
|
|
142
130
|
case 'ArrowRight':
|
|
143
131
|
this.focusByIndex(index + 1, true, +1);
|
|
144
|
-
|
|
132
|
+
return;
|
|
145
133
|
case 'Home':
|
|
146
134
|
this.focusByIndex(0, true, 1);
|
|
147
|
-
|
|
135
|
+
return;
|
|
148
136
|
case 'End':
|
|
149
137
|
this.focusByIndex(this.inputs.length - 1, true, -1);
|
|
150
|
-
|
|
138
|
+
return;
|
|
151
139
|
case 'Backspace':
|
|
152
140
|
case 'Delete':
|
|
153
141
|
this._updateSingleInputValue('', index);
|
|
154
142
|
this.focusByIndex(index - 1, true, -1);
|
|
155
143
|
event.preventDefault();
|
|
156
|
-
|
|
157
|
-
default:
|
|
158
|
-
break;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
ngAfterContentInit() {
|
|
162
|
-
if (!this.isConfigDefined) {
|
|
163
|
-
throw new Error(`ARD-FT040: <ard-digit-input>'s [config] field has to be defined.`);
|
|
144
|
+
return;
|
|
164
145
|
}
|
|
165
146
|
}
|
|
166
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
167
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
147
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumDigitInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
148
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: ArdiumDigitInputComponent, selector: "ard-digit-input", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, outputAsString: { classPropertyName: "outputAsString", publicName: "outputAsString", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", finishedValue: "finishedValue", focusIndexEvent: "focusIndex", blurIndexEvent: "blurIndex" }, providers: [
|
|
168
149
|
{
|
|
169
150
|
provide: NG_VALUE_ACCESSOR,
|
|
170
151
|
useExisting: forwardRef(() => ArdiumDigitInputComponent),
|
|
171
152
|
multi: true,
|
|
172
153
|
},
|
|
173
|
-
], viewQueries: [{ propertyName: "inputs", predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div
|
|
154
|
+
], viewQueries: [{ propertyName: "inputs", predicate: ["input"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"ard-digit-input\"\n [ngClass]=\"ngClasses()\"\n>\n @for (data of configArrayData(); track $index) {\n <div class=\"ard-digit-input__item\">\n @if (data.type === 'input') {\n <input\n #input\n #focusableElement\n class=\"ard-digit-input__input\"\n type=\"text\"\n autocomplete=\"off\"\n [readonly]=\"data.readonly\"\n [class.ard-digit-input__input-readonly]=\"data.readonly\"\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\n (paste)=\"onPaste($event, data.index!)\"\n (input)=\"onInput($event, data.index!)\"\n (focus)=\"onFocusMaster($event, data.index!)\"\n (blur)=\"onBlurMaster($event, data.index!)\"\n (keydown)=\"onKeydown($event, data.index!)\"\n />\n } @else {\n <div class=\"ard-digit-input__static\">\n {{ data.char }}\n </div>\n }\n </div>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
174
155
|
}
|
|
175
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
156
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumDigitInputComponent, decorators: [{
|
|
176
157
|
type: Component,
|
|
177
158
|
args: [{ selector: 'ard-digit-input', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
178
159
|
{
|
|
@@ -180,39 +161,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
180
161
|
useExisting: forwardRef(() => ArdiumDigitInputComponent),
|
|
181
162
|
multi: true,
|
|
182
163
|
},
|
|
183
|
-
], template: "<div
|
|
184
|
-
}], propDecorators: {
|
|
185
|
-
type: Input
|
|
186
|
-
}], variant: [{
|
|
187
|
-
type: Input
|
|
188
|
-
}], shape: [{
|
|
189
|
-
type: Input
|
|
190
|
-
}], compact: [{
|
|
191
|
-
type: Input
|
|
192
|
-
}], config: [{
|
|
193
|
-
type: Input
|
|
194
|
-
}], outputAsString: [{
|
|
195
|
-
type: Input
|
|
196
|
-
}], value: [{
|
|
164
|
+
], template: "<div\n class=\"ard-digit-input\"\n [ngClass]=\"ngClasses()\"\n>\n @for (data of configArrayData(); track $index) {\n <div class=\"ard-digit-input__item\">\n @if (data.type === 'input') {\n <input\n #input\n #focusableElement\n class=\"ard-digit-input__input\"\n type=\"text\"\n autocomplete=\"off\"\n [readonly]=\"data.readonly\"\n [class.ard-digit-input__input-readonly]=\"data.readonly\"\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\n (paste)=\"onPaste($event, data.index!)\"\n (input)=\"onInput($event, data.index!)\"\n (focus)=\"onFocusMaster($event, data.index!)\"\n (blur)=\"onBlurMaster($event, data.index!)\"\n (keydown)=\"onKeydown($event, data.index!)\"\n />\n } @else {\n <div class=\"ard-digit-input__static\">\n {{ data.char }}\n </div>\n }\n </div>\n }\n</div>\n" }]
|
|
165
|
+
}], propDecorators: { value: [{
|
|
197
166
|
type: Input
|
|
198
|
-
}], valueChange: [{
|
|
199
|
-
type: Output
|
|
200
|
-
}], inputEvent: [{
|
|
201
|
-
type: Output,
|
|
202
|
-
args: ['input']
|
|
203
|
-
}], changeEvent: [{
|
|
204
|
-
type: Output,
|
|
205
|
-
args: ['change']
|
|
206
|
-
}], finishedValue: [{
|
|
207
|
-
type: Output
|
|
208
|
-
}], focusIndexEvent: [{
|
|
209
|
-
type: Output,
|
|
210
|
-
args: ['focusIndex']
|
|
211
|
-
}], blurIndexEvent: [{
|
|
212
|
-
type: Output,
|
|
213
|
-
args: ['blurIndex']
|
|
214
|
-
}], inputs: [{
|
|
215
|
-
type: ViewChildren,
|
|
216
|
-
args: ['input']
|
|
217
167
|
}] } });
|
|
218
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixNQUFNLEVBQ04sWUFBWSxFQUNaLEtBQUssRUFDTCxZQUFZLEdBS2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQW9CLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFnQnhFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxxQkFBcUI7SUFkcEU7O1FBZW1CLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRCxjQUFjO1FBQ0wsZUFBVSxHQUEwQixxQkFBcUIsQ0FBQyxRQUFRLENBQUM7UUFDbkUsWUFBTyxHQUF1QixrQkFBa0IsQ0FBQyxPQUFPLENBQUM7UUFDekQsVUFBSyxHQUFvQixlQUFlLENBQUMsTUFBTSxDQUFDO1FBRWpELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFrQmxDLG9CQUFlLEdBQTJCLEVBQUUsQ0FBQztRQWtCN0MseUJBQXlCO1FBQ2pCLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBZ0IvQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFxQyxDQUFDO1FBVzlFLGtCQUFrQjtRQUNELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBcUMsQ0FBQztRQUNsRSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFxQyxDQUFDO1FBQzVFLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQXFDLENBQUM7UUFFMUQsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzlDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQWtHbEU7SUF2S0MsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxDQUFNO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLGVBQWUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLGFBQWEsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RKLENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsSUFDSSxNQUFNLENBQUMsQ0FBbUI7UUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUdELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYTtRQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsdURBQXVEO0lBQ3ZELFVBQVUsQ0FBQyxDQUFNO1FBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBQ08sV0FBVyxDQUFDLENBQU07UUFDeEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBSUQsSUFDSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBQ0QsSUFBSSxjQUFjLENBQUMsQ0FBTTtRQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUNJLEtBQUssQ0FBQyxDQUFvQztRQUM1QyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFHRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsSUFBSSxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDdkQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFVRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUFDLEtBQXFCLEVBQUUsS0FBYTtRQUMxQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuRCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTztRQUVuQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDN0MsS0FBSzthQUNGLEtBQUssQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDO2FBQ25CLEtBQUssQ0FBQyxFQUFFLENBQUM7YUFDVCxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDRCxPQUFPLENBQUMsS0FBWSxFQUFFLEtBQWE7UUFDakMsSUFBSSxDQUFDLHVCQUF1QixDQUFFLEtBQUssQ0FBQyxNQUEyQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBQ08sdUJBQXVCLENBQUMsS0FBYSxFQUFFLEtBQWE7UUFDMUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFBRSxPQUFPO1FBRTlDLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFHRCxZQUFZLENBQUMsS0FBYSxFQUFFLGVBQXlCLEVBQUUsU0FBa0I7UUFDdkUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFBRSxPQUFPLEtBQUssQ0FBQztRQUMzRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxhQUFhLENBQUM7UUFDckQsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLEtBQUssQ0FBQztRQUUxQixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixJQUFJLGVBQWUsSUFBSSxTQUFTLElBQUksUUFBUSxDQUFDLGFBQWEsSUFBSSxNQUFNLEVBQUU7WUFDcEUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQztTQUM3QztRQUNELE9BQU8sUUFBUSxDQUFDLGFBQWEsSUFBSSxNQUFNLENBQUM7SUFDMUMsQ0FBQztJQUNPLFVBQVU7UUFDaEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDM0MsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDO0lBQ0QscUJBQXFCO0lBQ3JCLGFBQWEsQ0FBQyxLQUFpQixFQUFFLEtBQWE7UUFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBQ0QsWUFBWSxDQUFDLEtBQWlCLEVBQUUsS0FBYTtRQUMzQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBQ1MsV0FBVztRQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNELFNBQVMsQ0FBQyxLQUFvQixFQUFFLEtBQWE7UUFDM0MsUUFBUSxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ2pCLEtBQUssV0FBVztnQkFDZCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZDLE1BQU07WUFDUixLQUFLLFlBQVk7Z0JBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QyxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDOUIsTUFBTTtZQUNSLEtBQUssS0FBSztnQkFDUixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEQsTUFBTTtZQUNSLEtBQUssV0FBVyxDQUFDO1lBQ2pCLEtBQUssUUFBUTtnQkFDWCxJQUFJLENBQUMsdUJBQXVCLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsTUFBTTtZQUVSO2dCQUNFLE1BQU07U0FDVDtJQUNILENBQUM7SUFLRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO1NBQ3JGO0lBQ0gsQ0FBQzs4R0EvS1UseUJBQXlCO2tHQUF6Qix5QkFBeUIsNlhBUnpCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztnQkFDeEQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLHFJQ2xDSCxzakNBeUJNOzsyRkRXTyx5QkFBeUI7a0JBZHJDLFNBQVM7K0JBQ0UsaUJBQWlCLGlCQUdaLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMEJBQTBCLENBQUM7NEJBQ3hELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzhCQU1RLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFJRixPQUFPO3NCQURWLEtBQUs7Z0JBY0YsTUFBTTtzQkFEVCxLQUFLO2dCQXlCRixjQUFjO3NCQURqQixLQUFLO2dCQVNGLEtBQUs7c0JBRFIsS0FBSztnQkFPSSxXQUFXO3NCQUFwQixNQUFNO2dCQVlVLFVBQVU7c0JBQTFCLE1BQU07dUJBQUMsT0FBTztnQkFDRyxXQUFXO3NCQUE1QixNQUFNO3VCQUFDLFFBQVE7Z0JBQ04sYUFBYTtzQkFBdEIsTUFBTTtnQkFFZSxlQUFlO3NCQUFwQyxNQUFNO3VCQUFDLFlBQVk7Z0JBQ0MsY0FBYztzQkFBbEMsTUFBTTt1QkFBQyxXQUFXO2dCQTJGSSxNQUFNO3NCQUE1QixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBmb3J3YXJkUmVmLFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEFmdGVyQ29udGVudEluaXQsXHJcbiAgRWxlbWVudFJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgX05nTW9kZWxDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vX2ludGVybmFsL25nbW9kZWwtY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XHJcbmltcG9ydCB7IEZvcm1FbGVtZW50QXBwZWFyYW5jZSwgRm9ybUVsZW1lbnRWYXJpYW50IH0gZnJvbSAnLi4vLi4vdHlwZXMvdGhlbWluZy50eXBlcyc7XHJcbmltcG9ydCB7IERpZ2l0SW5wdXRNb2RlbCB9IGZyb20gJy4vZGlnaXQtaW5wdXQubW9kZWwnO1xyXG5pbXBvcnQgeyBEaWdpdElucHV0Q29uZmlnRGF0YSwgRGlnaXRJbnB1dE1vZGVsSG9zdCB9IGZyb20gJy4vZGlnaXQtaW5wdXQudXRpbHMnO1xyXG5pbXBvcnQgeyBEaWdpdElucHV0Q29uZmlnLCBEaWdpdElucHV0U2hhcGUgfSBmcm9tICcuL2RpZ2l0LWlucHV0LnR5cGVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXJkLWRpZ2l0LWlucHV0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGlnaXQtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RpZ2l0LWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFyZGl1bURpZ2l0SW5wdXRDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFyZGl1bURpZ2l0SW5wdXRDb21wb25lbnQgZXh0ZW5kcyBfTmdNb2RlbENvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRGlnaXRJbnB1dE1vZGVsSG9zdCwgQWZ0ZXJDb250ZW50SW5pdCB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBtb2RlbCA9IG5ldyBEaWdpdElucHV0TW9kZWwodGhpcyk7XHJcblxyXG4gIC8vISBhcHBlYXJhbmNlXHJcbiAgQElucHV0KCkgYXBwZWFyYW5jZTogRm9ybUVsZW1lbnRBcHBlYXJhbmNlID0gRm9ybUVsZW1lbnRBcHBlYXJhbmNlLk91dGxpbmVkO1xyXG4gIEBJbnB1dCgpIHZhcmlhbnQ6IEZvcm1FbGVtZW50VmFyaWFudCA9IEZvcm1FbGVtZW50VmFyaWFudC5Sb3VuZGVkO1xyXG4gIEBJbnB1dCgpIHNoYXBlOiBEaWdpdElucHV0U2hhcGUgPSBEaWdpdElucHV0U2hhcGUuU3F1YXJlO1xyXG5cclxuICBwcml2YXRlIF9jb21wYWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBnZXQgY29tcGFjdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jb21wYWN0O1xyXG4gIH1cclxuICBzZXQgY29tcGFjdCh2OiBhbnkpIHtcclxuICAgIHRoaXMuX2NvbXBhY3QgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XHJcbiAgfVxyXG5cclxuICBnZXQgbmdDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gW2BhcmQtYXBwZWFyYW5jZS0ke3RoaXMuYXBwZWFyYW5jZX1gLCBgYXJkLXZhcmlhbnQtJHt0aGlzLnZhcmlhbnR9YCwgYGFyZC1zaGFwZS0ke3RoaXMuc2hhcGV9YCwgdGhpcy5jb21wYWN0ID8gJ2FyZC1jb21wYWN0JyA6ICcnXS5qb2luKCcgJyk7XHJcbiAgfVxyXG5cclxuICAvLyEgbW9kZWwgYWNjZXNzIHBvaW50c1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGNvbmZpZyh2OiBEaWdpdElucHV0Q29uZmlnKSB7XHJcbiAgICB0aGlzLm1vZGVsLnNldENvbmZpZyh2KTtcclxuICB9XHJcbiAgY29uZmlnQXJyYXlEYXRhOiBEaWdpdElucHV0Q29uZmlnRGF0YVtdID0gW107XHJcblxyXG4gIGdldCBpc0NvbmZpZ0RlZmluZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5tb2RlbC5pc0NvbmZpZ0RlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBpc0lucHV0RW1wdHkoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLm1vZGVsLmlzRGVmaW5lZEF0SW5kZXgoaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGNvbnRyb2wgdmFsdWUgYWNjZXNzb3IncyB3cml0ZSB2YWx1ZSBpbXBsZW1lbnRhdGlvblxyXG4gIHdyaXRlVmFsdWUodjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl93cml0ZVZhbHVlKHYpO1xyXG4gIH1cclxuICBwcml2YXRlIF93cml0ZVZhbHVlKHY6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMubW9kZWwud3JpdGVWYWx1ZSh2KTtcclxuICB9XHJcblxyXG4gIC8vISB2YWx1ZSB0d28td2F5IGJpbmRpbmdcclxuICBwcml2YXRlIF9vdXRwdXRBc1N0cmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IG91dHB1dEFzU3RyaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX291dHB1dEFzU3RyaW5nO1xyXG4gIH1cclxuICBzZXQgb3V0cHV0QXNTdHJpbmcodjogYW55KSB7XHJcbiAgICB0aGlzLl9vdXRwdXRBc1N0cmluZyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHZhbHVlKHY6IHN0cmluZyB8IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbCkge1xyXG4gICAgdGhpcy53cml0ZVZhbHVlKHYpO1xyXG4gIH1cclxuICBnZXQgdmFsdWUoKTogKHN0cmluZyB8IG51bGwpW10gfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLm1vZGVsLnZhbHVlO1xyXG4gIH1cclxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbD4oKTtcclxuXHJcbiAgZ2V0IHN0cmluZ1ZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5tb2RlbC5zdHJpbmdWYWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBlbWl0dGFibGVWYWx1ZSgpOiBzdHJpbmcgfCAoc3RyaW5nIHwgbnVsbClbXSB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMub3V0cHV0QXNTdHJpbmcpIHJldHVybiB0aGlzLm1vZGVsLnN0cmluZ1ZhbHVlO1xyXG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLyEgZXZlbnQgZW1pdHRlcnNcclxuICBAT3V0cHV0KCdpbnB1dCcpIGlucHV0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbD4oKTtcclxuICBAT3V0cHV0KCdjaGFuZ2UnKSBjaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgKHN0cmluZyB8IG51bGwpW10gfCBudWxsPigpO1xyXG4gIEBPdXRwdXQoKSBmaW5pc2hlZFZhbHVlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCAoc3RyaW5nIHwgbnVsbClbXSB8IG51bGw+KCk7XHJcblxyXG4gIEBPdXRwdXQoJ2ZvY3VzSW5kZXgnKSBmb2N1c0luZGV4RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICBAT3V0cHV0KCdibHVySW5kZXgnKSBibHVySW5kZXhFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAvLyEgZXZlbnQgaGFuZGxlcnNcclxuICBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgdmFsdWUgPSBldmVudC5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0Jyk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgbWF4TGVuZ3RoID0gdGhpcy5pbnB1dHMubGVuZ3RoIC0gaW5kZXg7XHJcbiAgICB2YWx1ZVxyXG4gICAgICAuc2xpY2UoMCwgbWF4TGVuZ3RoKVxyXG4gICAgICAuc3BsaXQoJycpXHJcbiAgICAgIC5mb3JFYWNoKChjaGFyLCBpKSA9PiB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC52YWxpZGF0ZUlucHV0QW5kU2V0VmFsdWUoY2hhciwgaW5kZXggKyBpKTtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmZvY3VzQnlJbmRleChpbmRleCAtIDEgKyBNYXRoLm1pbih2YWx1ZS5sZW5ndGgsIG1heExlbmd0aCkpO1xyXG4gIH1cclxuICBvbklucHV0KGV2ZW50OiBFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fdXBkYXRlU2luZ2xlSW5wdXRWYWx1ZSgoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlLCBpbmRleCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3VwZGF0ZVNpbmdsZUlucHV0VmFsdWUodmFsdWU6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgdmFsdWVDaGFuZ2VkID0gdGhpcy5tb2RlbC52YWxpZGF0ZUlucHV0QW5kU2V0VmFsdWUodmFsdWUsIGluZGV4KTtcclxuICAgIGlmICghdmFsdWVDaGFuZ2VkIHx8ICF2YWx1ZUNoYW5nZWRbMF0pIHJldHVybjtcclxuXHJcbiAgICBpZiAodmFsdWVDaGFuZ2VkWzFdKSB7XHJcbiAgICAgIHRoaXMuZm9jdXNCeUluZGV4KGluZGV4ICsgMSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbWl0SW5wdXQoKTtcclxuICB9XHJcbiAgZm9jdXNCeUluZGV4KGluZGV4OiBudW1iZXIpOiBib29sZWFuO1xyXG4gIGZvY3VzQnlJbmRleChpbmRleDogbnVtYmVyLCB0cnlGb2N1c2luZ05leHQ6IGJvb2xlYW4sIGRpcmVjdGlvbjogMSB8IC0xKTogYm9vbGVhbjtcclxuICBmb2N1c0J5SW5kZXgoaW5kZXg6IG51bWJlciwgdHJ5Rm9jdXNpbmdOZXh0PzogYm9vbGVhbiwgZGlyZWN0aW9uPzogMSB8IC0xKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMuaW5wdXRzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgbmV4dEVsID0gdGhpcy5pbnB1dHMuZ2V0KGluZGV4KT8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghbmV4dEVsKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgbmV4dEVsLmZvY3VzKCk7XHJcbiAgICBpZiAodHJ5Rm9jdXNpbmdOZXh0ICYmIGRpcmVjdGlvbiAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9IG5leHRFbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggKyBkaXJlY3Rpb24pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gbmV4dEVsO1xyXG4gIH1cclxuICBwcml2YXRlIF9lbWl0SW5wdXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQ/Lih0aGlzLnZhbHVlKTtcclxuICAgIHRoaXMuaW5wdXRFdmVudC5lbWl0KHRoaXMuZW1pdHRhYmxlVmFsdWUpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuZW1pdHRhYmxlVmFsdWUpO1xyXG4gICAgaWYgKHRoaXMubW9kZWwuaXNWYWx1ZUZ1bGwpIHtcclxuICAgICAgdGhpcy5maW5pc2hlZFZhbHVlLmVtaXQodGhpcy5lbWl0dGFibGVWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vZm9jdXMsIGJsdXIsIGNoYW5nZVxyXG4gIG9uRm9jdXNNYXN0ZXIoZXZlbnQ6IEZvY3VzRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9jdXNJbmRleEV2ZW50LmVtaXQoaW5kZXgpO1xyXG4gICAgdGhpcy5vbkZvY3VzKGV2ZW50KTtcclxuICB9XHJcbiAgb25CbHVyTWFzdGVyKGV2ZW50OiBGb2N1c0V2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XHJcbiAgICB0aGlzLmJsdXJJbmRleEV2ZW50LmVtaXQoaW5kZXgpO1xyXG4gICAgdGhpcy5vbkJsdXIoZXZlbnQpO1xyXG4gIH1cclxuICBwcm90ZWN0ZWQgX2VtaXRDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoYW5nZUV2ZW50LmVtaXQodGhpcy5lbWl0dGFibGVWYWx1ZSk7XHJcbiAgfVxyXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcclxuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcclxuICAgICAgICB0aGlzLmZvY3VzQnlJbmRleChpbmRleCAtIDEsIHRydWUsIC0xKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XHJcbiAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggKyAxLCB0cnVlLCArMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0hvbWUnOlxyXG4gICAgICAgIHRoaXMuZm9jdXNCeUluZGV4KDAsIHRydWUsIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdFbmQnOlxyXG4gICAgICAgIHRoaXMuZm9jdXNCeUluZGV4KHRoaXMuaW5wdXRzLmxlbmd0aCAtIDEsIHRydWUsIC0xKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnQmFja3NwYWNlJzpcclxuICAgICAgY2FzZSAnRGVsZXRlJzpcclxuICAgICAgICB0aGlzLl91cGRhdGVTaW5nbGVJbnB1dFZhbHVlKCcnLCBpbmRleCk7XHJcbiAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggLSAxLCB0cnVlLCAtMSk7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyEgaW5wdXRzIHJlZlxyXG4gIEBWaWV3Q2hpbGRyZW4oJ2lucHV0JykgaW5wdXRzITogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+O1xyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNDb25maWdEZWZpbmVkKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQVJELUZUMDQwOiA8YXJkLWRpZ2l0LWlucHV0PidzIFtjb25maWddIGZpZWxkIGhhcyB0byBiZSBkZWZpbmVkLmApO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYXJkLWRpZ2l0LWlucHV0XCIgW25nQ2xhc3NdPVwibmdDbGFzc2VzXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXJkLWRpZ2l0LWlucHV0X19pdGVtXCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgY29uZmlnQXJyYXlEYXRhXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICNpbnB1dFxyXG4gICAgICAgICAgICAjZm9jdXNhYmxlRWxlbWVudFxyXG4gICAgICAgICAgICAqbmdJZj1cImRhdGEudHlwZSA9PSAnaW5wdXQnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRfX2lucHV0XCJcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwiZGF0YS5yZWFkb25seVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5hcmQtZGlnaXQtaW5wdXRfX2lucHV0LXJlYWRvbmx5XT1cImRhdGEucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYXJkLWRpZ2l0LWlucHV0X19pbnB1dC1lbXB0eV09XCJpc0lucHV0RW1wdHkoZGF0YS5pbmRleCEpXCJcclxuICAgICAgICAgICAgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50LCBkYXRhLmluZGV4ISlcIlxyXG4gICAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQsIGRhdGEuaW5kZXghKVwiXHJcbiAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzTWFzdGVyKCRldmVudCwgZGF0YS5pbmRleCEpXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyTWFzdGVyKCRldmVudCwgZGF0YS5pbmRleCEpXCJcclxuICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudCwgZGF0YS5pbmRleCEpXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCJkYXRhLnR5cGUgPT0gJ3N0YXRpYydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFyZC1kaWdpdC1pbnB1dF9fc3RhdGljXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGRhdGEuY2hhciB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsS0FBSyxFQUNMLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBb0IsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQWlCeEUsTUFBTSxPQUFPLHlCQUEwQixTQUFRLHFCQUFxQjtJQWRwRTs7UUFlRSxjQUFjO1FBQ0wsV0FBTSxHQUFHLFlBQVksQ0FBK0IsT0FBTyxDQUFDLENBQUM7UUFFdEUsY0FBYztRQUNHLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRCxjQUFjO1FBQ0wsZUFBVSxHQUFHLEtBQUssQ0FBd0IscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7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LENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixPQUFPO1FBQ1gsQ0FBQztJQUNILENBQUM7OEdBeEpVLHlCQUF5QjtrR0FBekIseUJBQXlCLDRqQ0FSekI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDO2dCQUN4RCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YscUpDakNILHE5QkE4QkE7OzJGREthLHlCQUF5QjtrQkFkckMsU0FBUzsrQkFDRSxpQkFBaUIsaUJBR1osaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBdURHLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgZm9yd2FyZFJlZixcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgdmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcbmltcG9ydCB7IF9OZ01vZGVsQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL19pbnRlcm5hbC9uZ21vZGVsLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtRWxlbWVudEFwcGVhcmFuY2UsIEZvcm1FbGVtZW50VmFyaWFudCB9IGZyb20gJy4uLy4uL3R5cGVzL3RoZW1pbmcudHlwZXMnO1xuaW1wb3J0IHsgRGlnaXRJbnB1dE1vZGVsIH0gZnJvbSAnLi9kaWdpdC1pbnB1dC5tb2RlbCc7XG5pbXBvcnQgeyBEaWdpdElucHV0Q29uZmlnLCBEaWdpdElucHV0U2hhcGUgfSBmcm9tICcuL2RpZ2l0LWlucHV0LnR5cGVzJztcbmltcG9ydCB7IERpZ2l0SW5wdXRNb2RlbEhvc3QgfSBmcm9tICcuL2RpZ2l0LWlucHV0LnV0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXJkLWRpZ2l0LWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RpZ2l0LWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGlnaXQtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXJkaXVtRGlnaXRJbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBcmRpdW1EaWdpdElucHV0Q29tcG9uZW50IGV4dGVuZHMgX05nTW9kZWxDb21wb25lbnRCYXNlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIERpZ2l0SW5wdXRNb2RlbEhvc3Qge1xuICAvLyEgaW5wdXRzIHJlZlxuICByZWFkb25seSBpbnB1dHMgPSB2aWV3Q2hpbGRyZW48RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ2lucHV0Jyk7XG5cbiAgLy8hIGRhdGEgbW9kZWxcbiAgcHJpdmF0ZSByZWFkb25seSBtb2RlbCA9IG5ldyBEaWdpdElucHV0TW9kZWwodGhpcyk7XG5cbiAgLy8hIGFwcGVhcmFuY2VcbiAgcmVhZG9ubHkgYXBwZWFyYW5jZSA9IGlucHV0PEZvcm1FbGVtZW50QXBwZWFyYW5jZT4oRm9ybUVsZW1lbnRBcHBlYXJhbmNlLk91dGxpbmVkKTtcbiAgcmVhZG9ubHkgdmFyaWFudCA9IGlucHV0PEZvcm1FbGVtZW50VmFyaWFudD4oRm9ybUVsZW1lbnRWYXJpYW50LlJvdW5kZWQpO1xuICByZWFkb25seSBzaGFwZSA9IGlucHV0PERpZ2l0SW5wdXRTaGFwZT4oRGlnaXRJbnB1dFNoYXBlLlNxdWFyZSk7XG5cbiAgcmVhZG9ubHkgY29tcGFjdCA9IGlucHV0PGJvb2xlYW4sIGFueT4oZmFsc2UsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcblxuICByZWFkb25seSBuZ0NsYXNzZXMgPSBjb21wdXRlZCgoKTogc3RyaW5nID0+XG4gICAgW1xuICAgICAgYGFyZC1hcHBlYXJhbmNlLSR7dGhpcy5hcHBlYXJhbmNlKCl9YCxcbiAgICAgIGBhcmQtdmFyaWFudC0ke3RoaXMudmFyaWFudCgpfWAsXG4gICAgICBgYXJkLXNoYXBlLSR7dGhpcy5zaGFwZSgpfWAsXG4gICAgICB0aGlzLmNvbXBhY3QoKSA/ICdhcmQtY29tcGFjdCcgOiAnJyxcbiAgICBdLmpvaW4oJyAnKVxuICApO1xuXG4gIC8vISBtb2RlbCBhY2Nlc3MgcG9pbnRzXG4gIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPHZvaWQsIERpZ2l0SW5wdXRDb25maWc+KHtcbiAgICB0cmFuc2Zvcm06IHYgPT4gdGhpcy5tb2RlbC5zZXRDb25maWcodiksXG4gIH0pO1xuICByZWFkb25seSBjb25maWdBcnJheURhdGEgPSB0aGlzLm1vZGVsLmNvbmZpZ0FycmF5RGF0YTtcblxuICBwcml2YXRlIF9vbGRDb25maWdBcnJheURhdGFMZW5ndGggPSAtMTtcbiAgcmVhZG9ubHkgY29uZmlnQXJyYXlEYXRhRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGhpcy5jb25maWdBcnJheURhdGEoKS5sZW5ndGggPT09IHRoaXMuX29sZENvbmZpZ0FycmF5RGF0YUxlbmd0aCkgcmV0dXJuO1xuXG4gICAgdGhpcy5fb2xkQ29uZmlnQXJyYXlEYXRhTGVuZ3RoID0gdGhpcy5jb25maWdBcnJheURhdGEoKS5sZW5ndGg7XG4gICAgdGhpcy5fZW1pdENoYW5nZSgpO1xuICB9KTtcblxuICBpc0lucHV0RW1wdHkoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5tb2RlbC5pc0RlZmluZWRBdEluZGV4KGluZGV4KTtcbiAgfVxuXG4gIC8vISBjb250cm9sIHZhbHVlIGFjY2Vzc29yJ3Mgd3JpdGUgdmFsdWUgaW1wbGVtZW50YXRpb25cbiAgd3JpdGVWYWx1ZSh2OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl93cml0ZVZhbHVlKHYpO1xuICB9XG4gIHByaXZhdGUgX3dyaXRlVmFsdWUodjogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWwud3JpdGVWYWx1ZSh2KTtcbiAgfVxuXG4gIC8vISB2YWx1ZSB0d28td2F5IGJpbmRpbmdcbiAgcmVhZG9ubHkgb3V0cHV0QXNTdHJpbmcgPSBpbnB1dDxib29sZWFuLCBhbnk+KGZhbHNlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XG5cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHY6IHN0cmluZyB8IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbCkge1xuICAgIHRoaXMud3JpdGVWYWx1ZSh2KTtcbiAgfVxuICByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG91dHB1dDxzdHJpbmcgfCAoc3RyaW5nIHwgbnVsbClbXSB8IG51bGw+KCk7XG5cbiAgcmVhZG9ubHkgc3RyaW5nVmFsdWUgPSB0aGlzLm1vZGVsLnN0cmluZ1ZhbHVlO1xuXG4gIHJlYWRvbmx5IGVtaXR0YWJsZVZhbHVlID0gY29tcHV0ZWQoKCk6IHN0cmluZyB8IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbCA9PiB7XG4gICAgaWYgKHRoaXMub3V0cHV0QXNTdHJpbmcoKSkgcmV0dXJuIHRoaXMubW9kZWwuc3RyaW5nVmFsdWUoKTtcbiAgICByZXR1cm4gdGhpcy5tb2RlbC52YWx1ZSgpO1xuICB9KTtcblxuICAvLyEgZXZlbnQgZW1pdHRlcnNcbiAgcmVhZG9ubHkgZmluaXNoZWRWYWx1ZSA9IG91dHB1dDxzdHJpbmcgfCAoc3RyaW5nIHwgbnVsbClbXSB8IG51bGw+KCk7XG5cbiAgcmVhZG9ubHkgZm9jdXNJbmRleEV2ZW50ID0gb3V0cHV0PG51bWJlcj4oeyBhbGlhczogJ2ZvY3VzSW5kZXgnIH0pO1xuICByZWFkb25seSBibHVySW5kZXhFdmVudCA9IG91dHB1dDxudW1iZXI+KHsgYWxpYXM6ICdibHVySW5kZXgnIH0pO1xuXG4gIC8vISBldmVudCBoYW5kbGVyc1xuICBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgbWF4TGVuZ3RoID0gdGhpcy5pbnB1dHMoKS5sZW5ndGggLSBpbmRleDtcbiAgICB2YWx1ZVxuICAgICAgLnNsaWNlKDAsIG1heExlbmd0aClcbiAgICAgIC5zcGxpdCgnJylcbiAgICAgIC5mb3JFYWNoKChjaGFyLCBpKSA9PiB7XG4gICAgICAgIHRoaXMubW9kZWwudmFsaWRhdGVJbnB1dEFuZFNldFZhbHVlKGNoYXIsIGluZGV4ICsgaSk7XG4gICAgICB9KTtcbiAgICB0aGlzLmZvY3VzQnlJbmRleChpbmRleCAtIDEgKyBNYXRoLm1pbih2YWx1ZS5sZW5ndGgsIG1heExlbmd0aCkpO1xuICB9XG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fdXBkYXRlU2luZ2xlSW5wdXRWYWx1ZSgoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlLCBpbmRleCk7XG4gICAgdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggKyAxKTtcbiAgfVxuICBwcml2YXRlIF91cGRhdGVTaW5nbGVJbnB1dFZhbHVlKHZhbHVlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZUNoYW5nZWQgPSB0aGlzLm1vZGVsLnZhbGlkYXRlSW5wdXRBbmRTZXRWYWx1ZSh2YWx1ZSwgaW5kZXgpO1xuICAgIGlmICghdmFsdWVDaGFuZ2VkIHx8ICF2YWx1ZUNoYW5nZWRbMF0pIHJldHVybjtcblxuICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcblxuICAgIGlmICh0aGlzLm1vZGVsLmlzVmFsdWVGdWxsKCkpIHtcbiAgICAgIHRoaXMuYmx1cigpO1xuICAgIH1cbiAgfVxuICBmb2N1c0J5SW5kZXgoaW5kZXg6IG51bWJlcik6IGJvb2xlYW47XG4gIGZvY3VzQnlJbmRleChpbmRleDogbnVtYmVyLCB0cnlGb2N1c2luZ05leHQ6IGJvb2xlYW4sIGRpcmVjdGlvbjogMSB8IC0xKTogYm9vbGVhbjtcbiAgZm9jdXNCeUluZGV4KGluZGV4OiBudW1iZXIsIHRyeUZvY3VzaW5nTmV4dD86IGJvb2xlYW4sIGRpcmVjdGlvbj86IDEgfCAtMSk6IGJvb2xlYW4ge1xuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5pbnB1dHMoKS5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBuZXh0RWwgPSB0aGlzLmlucHV0cygpW2luZGV4XT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoIW5leHRFbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgbmV4dEVsLmZvY3VzKCk7XG4gICAgaWYgKHRyeUZvY3VzaW5nTmV4dCAmJiBkaXJlY3Rpb24gJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gbmV4dEVsKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggKyBkaXJlY3Rpb24pO1xuICAgIH1cbiAgICByZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gbmV4dEVsO1xuICB9XG4gIC8vZm9jdXMsIGJsdXIsIGNoYW5nZVxuICBvbkZvY3VzTWFzdGVyKGV2ZW50OiBGb2N1c0V2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c0luZGV4RXZlbnQuZW1pdChpbmRleCk7XG4gICAgdGhpcy5vbkZvY3VzKGV2ZW50KTtcbiAgfVxuICBvbkJsdXJNYXN0ZXIoZXZlbnQ6IEZvY3VzRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmJsdXJJbmRleEV2ZW50LmVtaXQoaW5kZXgpO1xuICAgIHRoaXMub25CbHVyKGV2ZW50KTtcbiAgfVxuICBwcm90ZWN0ZWQgX2VtaXRDaGFuZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgdiA9IHRoaXMuZW1pdHRhYmxlVmFsdWUoKTtcbiAgICB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQ/Lih2KTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodik7XG4gICAgaWYgKHRoaXMubW9kZWwuaXNWYWx1ZUZ1bGwoKSkge1xuICAgICAgdGhpcy5maW5pc2hlZFZhbHVlLmVtaXQodik7XG4gICAgfVxuICB9XG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICB0aGlzLmZvY3VzQnlJbmRleChpbmRleCAtIDEsIHRydWUsIC0xKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgIHRoaXMuZm9jdXNCeUluZGV4KGluZGV4ICsgMSwgdHJ1ZSwgKzEpO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgoMCwgdHJ1ZSwgMSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgIHRoaXMuZm9jdXNCeUluZGV4KHRoaXMuaW5wdXRzLmxlbmd0aCAtIDEsIHRydWUsIC0xKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgIGNhc2UgJ0RlbGV0ZSc6XG4gICAgICAgIHRoaXMuX3VwZGF0ZVNpbmdsZUlucHV0VmFsdWUoJycsIGluZGV4KTtcbiAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggLSAxLCB0cnVlLCAtMSk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRcIlxuICBbbmdDbGFzc109XCJuZ0NsYXNzZXMoKVwiXG4+XG4gIEBmb3IgKGRhdGEgb2YgY29uZmlnQXJyYXlEYXRhKCk7IHRyYWNrICRpbmRleCkge1xuICAgIDxkaXYgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRfX2l0ZW1cIj5cbiAgICAgIEBpZiAoZGF0YS50eXBlID09PSAnaW5wdXQnKSB7XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICNmb2N1c2FibGVFbGVtZW50XG4gICAgICAgICAgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRfX2lucHV0XCJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICBbcmVhZG9ubHldPVwiZGF0YS5yZWFkb25seVwiXG4gICAgICAgICAgW2NsYXNzLmFyZC1kaWdpdC1pbnB1dF9faW5wdXQtcmVhZG9ubHldPVwiZGF0YS5yZWFkb25seVwiXG4gICAgICAgICAgW2NsYXNzLmFyZC1kaWdpdC1pbnB1dF9faW5wdXQtZW1wdHldPVwiaXNJbnB1dEVtcHR5KGRhdGEuaW5kZXghKVwiXG4gICAgICAgICAgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50LCBkYXRhLmluZGV4ISlcIlxuICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudCwgZGF0YS5pbmRleCEpXCJcbiAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1c01hc3RlcigkZXZlbnQsIGRhdGEuaW5kZXghKVwiXG4gICAgICAgICAgKGJsdXIpPVwib25CbHVyTWFzdGVyKCRldmVudCwgZGF0YS5pbmRleCEpXCJcbiAgICAgICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50LCBkYXRhLmluZGV4ISlcIlxuICAgICAgICAvPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRfX3N0YXRpY1wiPlxuICAgICAgICAgIHt7IGRhdGEuY2hhciB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=
|