@kepler.gl/components 3.0.0-alpha.1 → 3.0.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/dist/bottom-widget.js +1 -21
- package/dist/common/action-panel.js +1 -21
- package/dist/common/animation-control/animation-control.js +1 -21
- package/dist/common/animation-control/animation-controller.js +1 -21
- package/dist/common/animation-control/animation-speed-slider.js +1 -21
- package/dist/common/animation-control/animation-window-control.js +3 -21
- package/dist/common/animation-control/floating-time-display.js +1 -21
- package/dist/common/animation-control/play-control.js +3 -21
- package/dist/common/animation-control/playback-controls.js +1 -21
- package/dist/common/animation-control/reset-control.js +3 -21
- package/dist/common/animation-control/speed-control.js +1 -21
- package/dist/common/animation-control/window-action-control.js +3 -21
- package/dist/common/checkbox.js +1 -21
- package/dist/common/color-legend.js +1 -21
- package/dist/common/data-table/button.js +1 -21
- package/dist/common/data-table/canvas.js +1 -21
- package/dist/common/data-table/cell-size.js +1 -21
- package/dist/common/data-table/display-format.js +1 -21
- package/dist/common/data-table/grid.js +1 -21
- package/dist/common/data-table/header-cell.js +1 -21
- package/dist/common/data-table/index.js +1 -21
- package/dist/common/data-table/option-dropdown.js +1 -21
- package/dist/common/dataset-label.js +1 -21
- package/dist/common/error-boundary.js +1 -21
- package/dist/common/field-selector.d.ts +1 -0
- package/dist/common/field-selector.js +3 -21
- package/dist/common/field-token.d.ts +4 -0
- package/dist/common/field-token.js +1 -21
- package/dist/common/file-uploader/file-drop.js +1 -21
- package/dist/common/file-uploader/file-upload-progress.js +1 -21
- package/dist/common/file-uploader/file-upload.js +1 -21
- package/dist/common/file-uploader/upload-button.js +1 -21
- package/dist/common/flex-container.d.ts +3 -0
- package/dist/common/flex-container.js +23 -0
- package/dist/common/histogram-plot.js +1 -21
- package/dist/common/icon-button.d.ts +1 -1
- package/dist/common/icon-button.js +1 -21
- package/dist/common/icons/add.js +1 -21
- package/dist/common/icons/anchor_window.js +6 -22
- package/dist/common/icons/arrow-down-alt.js +1 -21
- package/dist/common/icons/arrow-down-small.d.ts +14 -0
- package/dist/common/icons/arrow-down-small.js +72 -0
- package/dist/common/icons/arrow-down-solid.js +1 -21
- package/dist/common/icons/arrow-down.js +1 -21
- package/dist/common/icons/arrow-left.js +1 -21
- package/dist/common/icons/arrow-right.js +1 -21
- package/dist/common/icons/arrow-up-alt.js +1 -21
- package/dist/common/icons/arrow-up-solid.js +1 -21
- package/dist/common/icons/arrow-up.js +1 -21
- package/dist/common/icons/base.js +1 -21
- package/dist/common/icons/bug.js +1 -21
- package/dist/common/icons/calendar.d.ts +10 -0
- package/dist/common/icons/calendar.js +66 -0
- package/dist/common/icons/cancel.js +1 -21
- package/dist/common/icons/checkmark.js +1 -21
- package/dist/common/icons/clipboard.js +1 -21
- package/dist/common/icons/clock.js +1 -21
- package/dist/common/icons/close.js +1 -21
- package/dist/common/icons/code-alt.js +1 -21
- package/dist/common/icons/copy.js +1 -21
- package/dist/common/icons/crosshairs.js +1 -21
- package/dist/common/icons/cube-3d.js +1 -21
- package/dist/common/icons/cursor-click.js +1 -21
- package/dist/common/icons/cursor-point.js +1 -21
- package/dist/common/icons/data-table.js +1 -21
- package/dist/common/icons/db.js +1 -21
- package/dist/common/icons/delete.js +1 -21
- package/dist/common/icons/docs.js +1 -21
- package/dist/common/icons/drag-n-drop.js +1 -21
- package/dist/common/icons/draw-polygon.js +1 -21
- package/dist/common/icons/effects/brightness-contrast.d.ts +14 -0
- package/dist/common/icons/effects/brightness-contrast.js +88 -0
- package/dist/common/icons/effects/color-halftone.d.ts +14 -0
- package/dist/common/icons/effects/color-halftone.js +127 -0
- package/dist/common/icons/effects/dot-screen.d.ts +14 -0
- package/dist/common/icons/effects/dot-screen.js +122 -0
- package/dist/common/icons/effects/edge-work.d.ts +14 -0
- package/dist/common/icons/effects/edge-work.js +81 -0
- package/dist/common/icons/effects/hexagonal-pixelate.d.ts +14 -0
- package/dist/common/icons/effects/hexagonal-pixelate.js +148 -0
- package/dist/common/icons/effects/hue-saturation.d.ts +14 -0
- package/dist/common/icons/effects/hue-saturation.js +79 -0
- package/dist/common/icons/effects/ink.d.ts +14 -0
- package/dist/common/icons/effects/ink.js +78 -0
- package/dist/common/icons/effects/light-and-shadow.d.ts +14 -0
- package/dist/common/icons/effects/light-and-shadow.js +67 -0
- package/dist/common/icons/effects/magic-wand.d.ts +14 -0
- package/dist/common/icons/effects/magic-wand.js +79 -0
- package/dist/common/icons/effects/magnify.d.ts +14 -0
- package/dist/common/icons/effects/magnify.js +86 -0
- package/dist/common/icons/effects/noise.d.ts +14 -0
- package/dist/common/icons/effects/noise.js +132 -0
- package/dist/common/icons/effects/sepia.d.ts +14 -0
- package/dist/common/icons/effects/sepia.js +79 -0
- package/dist/common/icons/effects/tilt-shift.d.ts +14 -0
- package/dist/common/icons/effects/tilt-shift.js +88 -0
- package/dist/common/icons/effects/triangle-blur.d.ts +14 -0
- package/dist/common/icons/effects/triangle-blur.js +83 -0
- package/dist/common/icons/effects/vibrance.d.ts +14 -0
- package/dist/common/icons/effects/vibrance.js +79 -0
- package/dist/common/icons/effects/vignette.d.ts +14 -0
- package/dist/common/icons/effects/vignette.js +72 -0
- package/dist/common/icons/effects/zoom-blur.d.ts +14 -0
- package/dist/common/icons/effects/zoom-blur.js +107 -0
- package/dist/common/icons/email.js +1 -21
- package/dist/common/icons/expand.js +1 -21
- package/dist/common/icons/eye-seen.js +1 -21
- package/dist/common/icons/eye-unseen.js +1 -21
- package/dist/common/icons/file-type.js +1 -21
- package/dist/common/icons/file.js +1 -21
- package/dist/common/icons/files.js +1 -21
- package/dist/common/icons/filter-funnel.js +1 -21
- package/dist/common/icons/free-window.js +6 -22
- package/dist/common/icons/gear.js +1 -21
- package/dist/common/icons/globe.d.ts +15 -0
- package/dist/common/icons/globe.js +72 -0
- package/dist/common/icons/hash.js +1 -21
- package/dist/common/icons/histogram.js +1 -21
- package/dist/common/icons/index.d.ts +25 -0
- package/dist/common/icons/index.js +201 -21
- package/dist/common/icons/info.js +1 -21
- package/dist/common/icons/layers.js +1 -21
- package/dist/common/icons/left-arrow.js +1 -21
- package/dist/common/icons/legend.js +1 -21
- package/dist/common/icons/line-chart.js +1 -21
- package/dist/common/icons/location-marker.d.ts +14 -0
- package/dist/common/icons/location-marker.js +77 -0
- package/dist/common/icons/login.js +1 -21
- package/dist/common/icons/logout.js +1 -21
- package/dist/common/icons/map-icon.js +1 -21
- package/dist/common/icons/map.js +1 -21
- package/dist/common/icons/messages.js +1 -21
- package/dist/common/icons/minus.js +1 -21
- package/dist/common/icons/moon.d.ts +14 -0
- package/dist/common/icons/moon.js +77 -0
- package/dist/common/icons/order-by-dataset.js +6 -22
- package/dist/common/icons/order-by-list.js +6 -22
- package/dist/common/icons/pause.js +1 -21
- package/dist/common/icons/picture.js +1 -21
- package/dist/common/icons/pin.js +1 -21
- package/dist/common/icons/play.js +1 -21
- package/dist/common/icons/polygon.js +1 -21
- package/dist/common/icons/rectangle.js +1 -21
- package/dist/common/icons/reduce.js +1 -21
- package/dist/common/icons/reset.js +1 -21
- package/dist/common/icons/rocket.js +1 -21
- package/dist/common/icons/save.js +1 -21
- package/dist/common/icons/save2.js +1 -21
- package/dist/common/icons/search.js +1 -21
- package/dist/common/icons/settings.js +1 -21
- package/dist/common/icons/share.js +1 -21
- package/dist/common/icons/split.js +1 -21
- package/dist/common/icons/square-select.js +1 -21
- package/dist/common/icons/sun.d.ts +14 -0
- package/dist/common/icons/sun.js +93 -0
- package/dist/common/icons/sunrise.d.ts +14 -0
- package/dist/common/icons/sunrise.js +89 -0
- package/dist/common/icons/sunset.d.ts +14 -0
- package/dist/common/icons/sunset.js +89 -0
- package/dist/common/icons/trash.js +1 -21
- package/dist/common/icons/vert-dots.js +1 -21
- package/dist/common/icons/vert-three-dots.js +1 -21
- package/dist/common/icons/warning-sign.js +1 -21
- package/dist/common/icons/warning.js +1 -21
- package/dist/common/image-preview.js +1 -21
- package/dist/common/index.js +1 -21
- package/dist/common/info-helper.js +1 -21
- package/dist/common/item-selector/accessor.js +5 -22
- package/dist/common/item-selector/chickleted-input.d.ts +1 -0
- package/dist/common/item-selector/chickleted-input.js +104 -44
- package/dist/common/item-selector/dropdown-list.d.ts +2 -0
- package/dist/common/item-selector/dropdown-list.js +10 -25
- package/dist/common/item-selector/item-selector.d.ts +3 -0
- package/dist/common/item-selector/item-selector.js +11 -23
- package/dist/common/item-selector/typeahead.js +1 -21
- package/dist/common/line-chart.js +1 -21
- package/dist/common/loading-spinner.js +1 -21
- package/dist/common/logo.js +1 -21
- package/dist/common/map-layer-selector.js +1 -21
- package/dist/common/modal.js +25 -28
- package/dist/common/portaled.d.ts +15 -2
- package/dist/common/portaled.js +1 -21
- package/dist/common/progress-bar.js +1 -21
- package/dist/common/range-brush.js +1 -21
- package/dist/common/range-plot.js +1 -21
- package/dist/common/range-slider.d.ts +1 -1
- package/dist/common/range-slider.js +1 -21
- package/dist/common/slider/mouse-event.js +6 -22
- package/dist/common/slider/slider-bar-handle.js +1 -21
- package/dist/common/slider/slider-handle.js +1 -21
- package/dist/common/slider/slider.js +1 -21
- package/dist/common/styled-components.d.ts +3 -3
- package/dist/common/styled-components.js +26 -47
- package/dist/common/switch.js +1 -21
- package/dist/common/time-range-slider-time-title.js +1 -21
- package/dist/common/time-range-slider.js +1 -21
- package/dist/common/time-slider-marker.js +1 -21
- package/dist/common/timeline-slider.js +1 -21
- package/dist/common/tippy-tooltip.js +1 -21
- package/dist/common/toolbar-item.js +1 -21
- package/dist/common/toolbar.js +1 -21
- package/dist/common/vertical-toolbar.js +1 -21
- package/dist/connect/keplergl-connect.js +6 -22
- package/dist/connect/with-local-selector.js +1 -21
- package/dist/container.js +1 -21
- package/dist/context.d.ts +11 -0
- package/dist/context.js +18 -23
- package/dist/dnd-context.d.ts +1 -1
- package/dist/dnd-context.js +32 -127
- package/dist/editor/editor.js +1 -21
- package/dist/editor/feature-action-panel.js +28 -79
- package/dist/effects/compact-color-picker.d.ts +10 -0
- package/dist/effects/compact-color-picker.js +130 -0
- package/dist/effects/effect-configurator.d.ts +4 -5
- package/dist/effects/effect-configurator.js +183 -118
- package/dist/effects/effect-list.js +2 -22
- package/dist/effects/effect-manager.d.ts +2 -1
- package/dist/effects/effect-manager.js +43 -30
- package/dist/effects/effect-panel-header.d.ts +14 -2
- package/dist/effects/effect-panel-header.js +82 -50
- package/dist/effects/effect-panel.js +30 -43
- package/dist/effects/effect-time-configurator.d.ts +14 -7
- package/dist/effects/effect-time-configurator.js +258 -109
- package/dist/effects/effect-time-selector.d.ts +16 -0
- package/dist/effects/effect-time-selector.js +181 -0
- package/dist/effects/effect-time-slider.d.ts +34 -0
- package/dist/effects/effect-time-slider.js +220 -0
- package/dist/effects/effect-type-dropdown-list.d.ts +18 -0
- package/dist/effects/effect-type-dropdown-list.js +77 -0
- package/dist/effects/effect-type-list-item.d.ts +22 -0
- package/dist/effects/effect-type-list-item.js +105 -0
- package/dist/effects/effect-type-selector.d.ts +22 -3
- package/dist/effects/effect-type-selector.js +58 -83
- package/dist/effects/side-panel-title.js +1 -21
- package/dist/effects/timezone-selector.d.ts +19 -0
- package/dist/effects/timezone-selector.js +71 -0
- package/dist/filter-animation-controller.js +3 -21
- package/dist/filters/components.js +1 -21
- package/dist/filters/filter-panels/filter-panel-with-field-select.js +6 -22
- package/dist/filters/filter-panels/multi-select-filter-panel.js +6 -22
- package/dist/filters/filter-panels/new-filter-panel.js +6 -22
- package/dist/filters/filter-panels/polygon-filter-panel.js +6 -22
- package/dist/filters/filter-panels/range-filter-panel.js +6 -22
- package/dist/filters/filter-panels/single-select-filter-panel.js +6 -22
- package/dist/filters/filter-panels/time-range-filter-panel.js +1 -21
- package/dist/filters/filter-panels/types.js +0 -20
- package/dist/filters/index.js +1 -21
- package/dist/filters/multi-select-filter.js +6 -22
- package/dist/filters/polygon-filter.js +6 -22
- package/dist/filters/range-filter.js +6 -22
- package/dist/filters/single-select-filter.js +6 -22
- package/dist/filters/time-range-filter.js +7 -22
- package/dist/filters/time-widget-top.js +1 -21
- package/dist/filters/time-widget.js +1 -21
- package/dist/filters/types.js +0 -20
- package/dist/geocoder/geocoder.js +10 -27
- package/dist/geocoder-panel.js +1 -21
- package/dist/hooks/use-cloud-list-provider.d.ts +11 -0
- package/dist/hooks/use-cloud-list-provider.js +57 -0
- package/dist/hooks/use-dnd-effects.d.ts +9 -0
- package/dist/hooks/use-dnd-effects.js +88 -0
- package/dist/hooks/use-dnd-layers.d.ts +9 -0
- package/dist/hooks/use-dnd-layers.js +95 -0
- package/dist/hooks/use-feature-flags.d.ts +5 -0
- package/dist/hooks/use-feature-flags.js +21 -0
- package/dist/index.d.ts +10 -1
- package/dist/index.js +103 -24
- package/dist/injector.js +1 -21
- package/dist/kepler-gl.d.ts +2 -1
- package/dist/kepler-gl.js +13 -25
- package/dist/layer-animation-controller.js +3 -21
- package/dist/map/coordinate-info.js +6 -22
- package/dist/map/effects/effect-control.d.ts +1 -1
- package/dist/map/effects/effect-control.js +9 -28
- package/dist/map/layer-hover-info.js +2 -22
- package/dist/map/layer-selector-panel.js +6 -22
- package/dist/map/lazy-tippy.js +1 -21
- package/dist/map/locale-panel.js +6 -22
- package/dist/map/map-control-panel.js +1 -21
- package/dist/map/map-control-toolbar.js +1 -21
- package/dist/map/map-control-tooltip.js +6 -22
- package/dist/map/map-control.js +1 -21
- package/dist/map/map-draw-panel.js +6 -22
- package/dist/map/map-legend-panel.js +6 -22
- package/dist/map/map-legend.js +1 -21
- package/dist/map/map-popover-content.js +6 -22
- package/dist/map/map-popover.js +1 -21
- package/dist/map/split-map-button.js +6 -22
- package/dist/map/toggle-3d-button.js +6 -22
- package/dist/map-container.d.ts +1 -1
- package/dist/map-container.js +33 -52
- package/dist/map-view-state-context.d.ts +6 -1
- package/dist/map-view-state-context.js +34 -33
- package/dist/maps-layout.js +1 -21
- package/dist/modal-container.d.ts +2 -2
- package/dist/modal-container.js +13 -72
- package/dist/modals/add-map-style-modal.js +8 -72
- package/dist/modals/cloud-components/cloud-header.d.ts +8 -0
- package/dist/modals/cloud-components/cloud-header.js +65 -0
- package/dist/modals/cloud-components/cloud-item.d.ts +5 -0
- package/dist/modals/cloud-components/cloud-item.js +72 -0
- package/dist/modals/cloud-components/cloud-item.spec.d.ts +1 -0
- package/dist/modals/cloud-components/cloud-item.spec.js +105 -0
- package/dist/modals/cloud-components/cloud-maps.d.ts +8 -0
- package/dist/modals/cloud-components/cloud-maps.js +63 -0
- package/dist/modals/cloud-components/cloud-maps.spec.d.ts +1 -0
- package/dist/modals/cloud-components/cloud-maps.spec.js +112 -0
- package/dist/modals/cloud-components/provider-loading.d.ts +2 -0
- package/dist/modals/cloud-components/provider-loading.js +29 -0
- package/dist/modals/cloud-components/provider-select.d.ts +7 -0
- package/dist/modals/cloud-components/provider-select.js +40 -0
- package/dist/modals/cloud-tile.d.ts +8 -8
- package/dist/modals/cloud-tile.js +184 -75
- package/dist/modals/data-table-modal.js +1 -21
- package/dist/modals/delete-data-modal.js +1 -21
- package/dist/modals/error-display.js +15 -26
- package/dist/modals/export-data-modal.js +1 -21
- package/dist/modals/export-image-modal.js +1 -21
- package/dist/modals/export-map-modal/components.js +1 -21
- package/dist/modals/export-map-modal/export-html-map.js +1 -21
- package/dist/modals/export-map-modal/export-json-map.js +1 -21
- package/dist/modals/export-map-modal/export-map-modal.js +6 -22
- package/dist/modals/image-modal-container.d.ts +1 -3
- package/dist/modals/image-modal-container.js +12 -34
- package/dist/modals/load-data-modal.d.ts +0 -5
- package/dist/modals/load-data-modal.js +1 -21
- package/dist/modals/load-storage-map.d.ts +3 -24
- package/dist/modals/load-storage-map.js +69 -282
- package/dist/modals/load-storage-map.spec.d.ts +1 -0
- package/dist/modals/load-storage-map.spec.js +237 -0
- package/dist/modals/loading-dialog.js +1 -21
- package/dist/modals/modal-dialog.js +6 -22
- package/dist/modals/modal-tabs.js +1 -21
- package/dist/modals/overwrite-map-modal.d.ts +2 -2
- package/dist/modals/overwrite-map-modal.js +39 -32
- package/dist/modals/save-map-modal.d.ts +3 -5
- package/dist/modals/save-map-modal.js +99 -119
- package/dist/modals/save-map-modal.spec.d.ts +1 -0
- package/dist/modals/save-map-modal.spec.js +218 -0
- package/dist/modals/share-map-modal.d.ts +1 -5
- package/dist/modals/share-map-modal.js +57 -81
- package/dist/modals/share-map-modal.spec.d.ts +1 -0
- package/dist/modals/share-map-modal.spec.js +202 -0
- package/dist/modals/status-panel.js +1 -21
- package/dist/modals/storage-map-viewer.js +1 -21
- package/dist/notification-panel/notification-item.js +1 -21
- package/dist/notification-panel.js +1 -21
- package/dist/plot-container.js +7 -27
- package/dist/side-panel/add-by-dataset-button.js +1 -21
- package/dist/side-panel/cloud-storage-dropdown.js +6 -22
- package/dist/side-panel/common/dataset-info.js +1 -21
- package/dist/side-panel/common/dataset-tag.js +1 -21
- package/dist/side-panel/common/dataset-title.js +1 -21
- package/dist/side-panel/common/source-data-catalog.js +1 -21
- package/dist/side-panel/common/source-data-selector.js +6 -22
- package/dist/side-panel/common/types.js +0 -20
- package/dist/side-panel/custom-panel.js +6 -22
- package/dist/side-panel/filter-manager.js +1 -21
- package/dist/side-panel/filter-panel/add-filter-button.js +6 -22
- package/dist/side-panel/filter-panel/filter-panel-header.js +2 -22
- package/dist/side-panel/filter-panel/filter-panel.js +1 -21
- package/dist/side-panel/interaction-manager.js +6 -22
- package/dist/side-panel/interaction-panel/brush-config.js +1 -21
- package/dist/side-panel/interaction-panel/interaction-panel.js +1 -21
- package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.d.ts +8 -0
- package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +46 -27
- package/dist/side-panel/interaction-panel/tooltip-config.js +41 -52
- package/dist/side-panel/layer-manager.d.ts +5 -0
- package/dist/side-panel/layer-manager.js +3 -22
- package/dist/side-panel/layer-panel/add-layer-button.js +6 -22
- package/dist/side-panel/layer-panel/color-palette.js +1 -21
- package/dist/side-panel/layer-panel/color-range-selector.js +1 -21
- package/dist/side-panel/layer-panel/color-selector.js +1 -21
- package/dist/side-panel/layer-panel/column-selector.js +1 -21
- package/dist/side-panel/layer-panel/custom-palette.js +1 -21
- package/dist/side-panel/layer-panel/custom-picker.js +1 -21
- package/dist/side-panel/layer-panel/dataset-layer-group.js +6 -22
- package/dist/side-panel/layer-panel/dataset-layer-section.js +1 -21
- package/dist/side-panel/layer-panel/dataset-section.js +1 -21
- package/dist/side-panel/layer-panel/dimension-scale-selector.js +6 -22
- package/dist/side-panel/layer-panel/how-to-button.js +1 -21
- package/dist/side-panel/layer-panel/layer-color-selector.js +6 -22
- package/dist/side-panel/layer-panel/layer-column-config.js +1 -21
- package/dist/side-panel/layer-panel/layer-config-group.js +1 -21
- package/dist/side-panel/layer-panel/layer-configurator.js +16 -24
- package/dist/side-panel/layer-panel/layer-error-message.js +1 -21
- package/dist/side-panel/layer-panel/layer-list.js +1 -21
- package/dist/side-panel/layer-panel/layer-panel-header.js +1 -21
- package/dist/side-panel/layer-panel/layer-panel.js +1 -21
- package/dist/side-panel/layer-panel/layer-type-dropdown-list.js +1 -21
- package/dist/side-panel/layer-panel/layer-type-list-item.js +1 -21
- package/dist/side-panel/layer-panel/layer-type-selector.js +1 -21
- package/dist/side-panel/layer-panel/single-color-palette.js +1 -21
- package/dist/side-panel/layer-panel/text-label-panel.js +1 -21
- package/dist/side-panel/layer-panel/vis-config-by-field-selector.js +1 -21
- package/dist/side-panel/layer-panel/vis-config-slider.js +1 -21
- package/dist/side-panel/layer-panel/vis-config-switch.js +1 -21
- package/dist/side-panel/map-manager.js +1 -21
- package/dist/side-panel/map-style-panel/map-layer-group-color-picker.js +1 -21
- package/dist/side-panel/map-style-panel/map-layer-group-item.js +1 -21
- package/dist/side-panel/map-style-panel/map-layer-selector.js +1 -21
- package/dist/side-panel/map-style-panel/map-style-selector.js +1 -21
- package/dist/side-panel/panel-dropdown.js +1 -21
- package/dist/side-panel/panel-header-action.js +1 -21
- package/dist/side-panel/panel-header.js +2 -21
- package/dist/side-panel/panel-tab.js +1 -21
- package/dist/side-panel/panel-title.js +1 -21
- package/dist/side-panel/panel-toggle.js +1 -21
- package/dist/side-panel/panel-view-list-toggle.js +1 -21
- package/dist/side-panel/side-bar.js +1 -21
- package/dist/side-panel.js +7 -36
- package/dist/types.d.ts +2 -4
- package/dist/types.js +0 -20
- package/package.json +27 -24
- package/dist/hooks/useFeatureFlags.d.ts +0 -2
- package/dist/hooks/useFeatureFlags.js +0 -38
- package/dist/modals/provider-modal-container.d.ts +0 -23
- package/dist/modals/provider-modal-container.js +0 -101
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { MapViewState } from '@deck.gl/core/typed';
|
|
2
3
|
import { MapState } from '@kepler.gl/types';
|
|
3
|
-
export declare
|
|
4
|
+
export declare type MapViewStateContextType = {
|
|
5
|
+
getInternalViewState: (index?: number) => MapViewState;
|
|
6
|
+
setInternalViewState: (viewState: MapViewState, index?: number) => void;
|
|
7
|
+
};
|
|
8
|
+
export declare const MapViewStateContext: React.Context<MapViewStateContextType>;
|
|
4
9
|
/**
|
|
5
10
|
* This context provider is used to localize the map view state so
|
|
6
11
|
* that changes to the map view state do not affect the rest of the app,
|
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
// Copyright (c) 2023 Uber Technologies, Inc.
|
|
2
|
-
//
|
|
3
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
-
// of this software and associated documentation files (the "Software"), to deal
|
|
5
|
-
// in the Software without restriction, including without limitation the rights
|
|
6
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
-
// copies of the Software, and to permit persons to whom the Software is
|
|
8
|
-
// furnished to do so, subject to the following conditions:
|
|
9
|
-
//
|
|
10
|
-
// The above copyright notice and this permission notice shall be included in
|
|
11
|
-
// all copies or substantial portions of the Software.
|
|
12
|
-
//
|
|
13
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
-
// THE SOFTWARE.
|
|
20
|
-
|
|
21
1
|
"use strict";
|
|
22
2
|
|
|
23
3
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
@@ -41,7 +21,21 @@ var _lodash2 = _interopRequireDefault(require("lodash.pick"));
|
|
|
41
21
|
|
|
42
22
|
var _reducers = require("@kepler.gl/reducers");
|
|
43
23
|
|
|
44
|
-
|
|
24
|
+
// SPDX-License-Identifier: MIT
|
|
25
|
+
// Copyright contributors to the kepler.gl project
|
|
26
|
+
var MapViewStateContext = /*#__PURE__*/(0, _react.createContext)({
|
|
27
|
+
getInternalViewState: function getInternalViewState() {
|
|
28
|
+
var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
29
|
+
return {
|
|
30
|
+
latitude: 0,
|
|
31
|
+
longitude: 0,
|
|
32
|
+
zoom: 0
|
|
33
|
+
};
|
|
34
|
+
},
|
|
35
|
+
setInternalViewState: function setInternalViewState(viewState) {
|
|
36
|
+
var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
45
39
|
/**
|
|
46
40
|
* This context provider is used to localize the map view state so
|
|
47
41
|
* that changes to the map view state do not affect the rest of the app,
|
|
@@ -94,23 +88,30 @@ var MapViewStateContextProvider = function MapViewStateContextProvider(_ref) {
|
|
|
94
88
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
95
89
|
|
|
96
90
|
}, [mapState]);
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
91
|
+
var value = {
|
|
92
|
+
getInternalViewState: function getInternalViewState() {
|
|
93
|
+
var _viewStates$index;
|
|
94
|
+
|
|
95
|
+
var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
96
|
+
return (_viewStates$index = viewStates[index]) !== null && _viewStates$index !== void 0 ? _viewStates$index : viewStates[0];
|
|
97
|
+
},
|
|
98
|
+
setInternalViewState: function setInternalViewState(newViewState) {
|
|
99
|
+
var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
100
|
+
setViewStates(function (prevViewStates) {
|
|
101
|
+
if (isSplit && !isViewportSynced) {
|
|
106
102
|
var nextViewStates = (0, _toConsumableArray2["default"])(prevViewStates);
|
|
107
103
|
nextViewStates[index] = newViewState;
|
|
108
104
|
return nextViewStates;
|
|
109
|
-
}
|
|
110
|
-
|
|
105
|
+
} else {
|
|
106
|
+
return [newViewState];
|
|
107
|
+
}
|
|
108
|
+
});
|
|
111
109
|
}
|
|
110
|
+
};
|
|
111
|
+
return /*#__PURE__*/_react["default"].createElement(MapViewStateContext.Provider, {
|
|
112
|
+
value: value
|
|
112
113
|
}, children);
|
|
113
114
|
};
|
|
114
115
|
|
|
115
116
|
exports.MapViewStateContextProvider = MapViewStateContextProvider;
|
|
116
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
117
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXAtdmlldy1zdGF0ZS1jb250ZXh0LnRzeCJdLCJuYW1lcyI6WyJNYXBWaWV3U3RhdGVDb250ZXh0IiwiZ2V0SW50ZXJuYWxWaWV3U3RhdGUiLCJpbmRleCIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwiem9vbSIsInNldEludGVybmFsVmlld1N0YXRlIiwidmlld1N0YXRlIiwiTWFwVmlld1N0YXRlQ29udGV4dFByb3ZpZGVyIiwibWFwU3RhdGUiLCJjaGlsZHJlbiIsImlzU3BsaXQiLCJpc1ZpZXdwb3J0U3luY2VkIiwidmlld1N0YXRlcyIsInNldFZpZXdTdGF0ZXMiLCJwcmltYXJ5U3RhdGUiLCJwcm9wcyIsIk9iamVjdCIsImtleXMiLCJmaWx0ZXIiLCJrZXkiLCJzdGFydHNXaXRoIiwiaGFzQ2hhbmdlZCIsImEiLCJiIiwic3BsaXRNYXBWaWV3cG9ydHMiLCJzb21lIiwicyIsImkiLCJ2YWx1ZSIsIm5ld1ZpZXdTdGF0ZSIsInByZXZWaWV3U3RhdGVzIiwibmV4dFZpZXdTdGF0ZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUdBOztBQUNBOztBQUNBOztBQUVBOztBQVBBO0FBQ0E7QUFlTyxJQUFNQSxtQkFBMkQsZ0JBQUcsMEJBQWM7QUFDdkZDLEVBQUFBLG9CQUFvQixFQUFFO0FBQUEsUUFBQ0MsS0FBRCx1RUFBUyxDQUFUO0FBQUEsV0FBZ0I7QUFBQ0MsTUFBQUEsUUFBUSxFQUFFLENBQVg7QUFBY0MsTUFBQUEsU0FBUyxFQUFFLENBQXpCO0FBQTRCQyxNQUFBQSxJQUFJLEVBQUU7QUFBbEMsS0FBaEI7QUFBQSxHQURpRTtBQUV2RkMsRUFBQUEsb0JBQW9CLEVBQUUsOEJBQUNDLFNBQUQsRUFBMEI7QUFBQSxRQUFkTCxLQUFjLHVFQUFOLENBQU07QUFBRTtBQUZxQyxDQUFkLENBQXBFO0FBS1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUVPLElBQU1NLDJCQUEyQixHQUFHLFNBQTlCQSwyQkFBOEIsT0FNckM7QUFBQSxNQUxKQyxRQUtJLFFBTEpBLFFBS0k7QUFBQSxNQUpKQyxRQUlJLFFBSkpBLFFBSUk7O0FBQUEsY0FDZ0NELFFBQVEsSUFBSSxFQUQ1QztBQUFBLE1BQ0dFLE9BREgsU0FDR0EsT0FESDtBQUFBLE1BQ1lDLGdCQURaLFNBQ1lBLGdCQURaLEVBR0o7OztBQUhJLGtCQUlnQyxxQkFBUyxDQUFDSCxRQUFELENBQVQsQ0FKaEM7QUFBQTtBQUFBLE1BSUdJLFVBSkg7QUFBQSxNQUllQyxhQUpmLGtCQU1KO0FBQ0E7OztBQUNBLHdCQUFVLFlBQU07QUFDZCxRQUFJLENBQUNMLFFBQUwsRUFBZTtBQUNmLFFBQU1NLFlBQVksR0FBR0YsVUFBVSxDQUFDLENBQUQsQ0FBL0I7QUFDQSxRQUFJRSxZQUFZLEtBQUtOLFFBQXJCLEVBQStCO0FBQy9CLFFBQU1PLEtBQUssR0FBR0MsTUFBTSxDQUFDQyxJQUFQLENBQVlILFlBQVosRUFBMEJJLE1BQTFCLENBQWlDLFVBQUFDLEdBQUc7QUFBQSxhQUFJLENBQUNBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLFlBQWYsQ0FBTDtBQUFBLEtBQXBDLENBQWQ7O0FBQ0EsUUFBTUMsVUFBVSxHQUFHLFNBQWJBLFVBQWEsQ0FBQ0MsQ0FBRCxFQUFJQyxDQUFKO0FBQUEsYUFBVSxDQUFDLHdCQUFRLHlCQUFLRCxDQUFMLEVBQVFQLEtBQVIsQ0FBUixFQUF3Qix5QkFBS1EsQ0FBTCxFQUFRUixLQUFSLENBQXhCLENBQVg7QUFBQSxLQUFuQjs7QUFDQSxRQUFJTCxPQUFPLElBQUksQ0FBQ0MsZ0JBQWhCLEVBQWtDO0FBQUE7O0FBQ2hDLG1DQUFJSCxRQUFRLENBQUNnQixpQkFBYixrREFBSSxzQkFBNEJDLElBQTVCLENBQWlDLFVBQUNDLENBQUQsRUFBSUMsQ0FBSjtBQUFBLGVBQVVOLFVBQVUsQ0FBQ0ssQ0FBRCxFQUFJZCxVQUFVLENBQUNlLENBQUQsQ0FBZCxDQUFwQjtBQUFBLE9BQWpDLENBQUosRUFBOEU7QUFDNUVkLFFBQUFBLGFBQWEsQ0FBQ0wsUUFBUSxDQUFDZ0IsaUJBQVYsQ0FBYjtBQUNEO0FBQ0YsS0FKRCxNQUlPO0FBQ0wsVUFBSUgsVUFBVSxDQUFDUCxZQUFELEVBQWVOLFFBQWYsQ0FBZCxFQUF3QztBQUN0Q0ssUUFBQUEsYUFBYSxDQUFDLENBQUMsNkNBQThCTCxRQUE5QixDQUFELENBQUQsQ0FBYjtBQUNEO0FBQ0YsS0FkYSxDQWVkO0FBQ0E7O0FBQ0QsR0FqQkQsRUFpQkcsQ0FBQ0EsUUFBRCxDQWpCSDtBQW1CQSxNQUFNb0IsS0FBSyxHQUFHO0FBQ1o1QixJQUFBQSxvQkFBb0IsRUFBRTtBQUFBOztBQUFBLFVBQUNDLEtBQUQsdUVBQVMsQ0FBVDtBQUFBLGtDQUFlVyxVQUFVLENBQUNYLEtBQUQsQ0FBekIsaUVBQW9DVyxVQUFVLENBQUMsQ0FBRCxDQUE5QztBQUFBLEtBRFY7QUFFWlAsSUFBQUEsb0JBQW9CLEVBQUUsOEJBQUN3QixZQUFELEVBQTZCO0FBQUEsVUFBZDVCLEtBQWMsdUVBQU4sQ0FBTTtBQUNqRFksTUFBQUEsYUFBYSxDQUFDLFVBQUFpQixjQUFjLEVBQUk7QUFDOUIsWUFBSXBCLE9BQU8sSUFBSSxDQUFDQyxnQkFBaEIsRUFBa0M7QUFDaEMsY0FBTW9CLGNBQWMsdUNBQU9ELGNBQVAsQ0FBcEI7QUFDQUMsVUFBQUEsY0FBYyxDQUFDOUIsS0FBRCxDQUFkLEdBQXdCNEIsWUFBeEI7QUFDQSxpQkFBT0UsY0FBUDtBQUNELFNBSkQsTUFJTztBQUNMLGlCQUFPLENBQUNGLFlBQUQsQ0FBUDtBQUNEO0FBQ0YsT0FSWSxDQUFiO0FBU0Q7QUFaVyxHQUFkO0FBY0Esc0JBQU8sZ0NBQUMsbUJBQUQsQ0FBcUIsUUFBckI7QUFBOEIsSUFBQSxLQUFLLEVBQUVEO0FBQXJDLEtBQTZDbkIsUUFBN0MsQ0FBUDtBQUNELENBaERNIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlU3RhdGUsIHVzZUVmZmVjdCwgY3JlYXRlQ29udGV4dH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoLmlzZXF1YWwnO1xuaW1wb3J0IHBpY2sgZnJvbSAnbG9kYXNoLnBpY2snO1xuaW1wb3J0IHtNYXBWaWV3U3RhdGV9IGZyb20gJ0BkZWNrLmdsL2NvcmUvdHlwZWQnO1xuaW1wb3J0IHtwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG5cbmltcG9ydCB7TWFwU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBNYXBWaWV3U3RhdGVDb250ZXh0VHlwZSA9IHtcbiAgZ2V0SW50ZXJuYWxWaWV3U3RhdGU6IChpbmRleD86IG51bWJlcikgPT4gTWFwVmlld1N0YXRlO1xuICBzZXRJbnRlcm5hbFZpZXdTdGF0ZTogKHZpZXdTdGF0ZTogTWFwVmlld1N0YXRlLCBpbmRleD86IG51bWJlcikgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCBjb25zdCBNYXBWaWV3U3RhdGVDb250ZXh0OiBSZWFjdC5Db250ZXh0PE1hcFZpZXdTdGF0ZUNvbnRleHRUeXBlPiA9IGNyZWF0ZUNvbnRleHQoe1xuICBnZXRJbnRlcm5hbFZpZXdTdGF0ZTogKGluZGV4ID0gMCkgPT4gKHtsYXRpdHVkZTogMCwgbG9uZ2l0dWRlOiAwLCB6b29tOiAwfSksXG4gIHNldEludGVybmFsVmlld1N0YXRlOiAodmlld1N0YXRlLCBpbmRleCA9IDApID0+IHt9XG59KTtcblxuLyoqXG4gKiBUaGlzIGNvbnRleHQgcHJvdmlkZXIgaXMgdXNlZCB0byBsb2NhbGl6ZSB0aGUgbWFwIHZpZXcgc3RhdGUgc29cbiAqIHRoYXQgY2hhbmdlcyB0byB0aGUgbWFwIHZpZXcgc3RhdGUgZG8gbm90IGFmZmVjdCB0aGUgcmVzdCBvZiB0aGUgYXBwLFxuICogbWFpbmx5IHRvIHByZXZlbnQgaXNzdWVzIHdlIGV4cGVyaWVuY2VkIHdpdGggYmFzZW1hcC9kZWNrIHZpZXdwb3J0IHN5bmNpbmcuXG4gKi9cblxuZXhwb3J0IGNvbnN0IE1hcFZpZXdTdGF0ZUNvbnRleHRQcm92aWRlciA9ICh7XG4gIG1hcFN0YXRlLFxuICBjaGlsZHJlblxufToge1xuICBtYXBTdGF0ZTogTWFwU3RhdGU7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59KSA9PiB7XG4gIGNvbnN0IHtpc1NwbGl0LCBpc1ZpZXdwb3J0U3luY2VkfSA9IG1hcFN0YXRlIHx8IHt9O1xuXG4gIC8vIFN0b3JlIGxvY2FsbHkgbWFwIHZpZXcgc3RhdGVzIGJ5IG1hcEluZGV4XG4gIGNvbnN0IFt2aWV3U3RhdGVzLCBzZXRWaWV3U3RhdGVzXSA9IHVzZVN0YXRlKFttYXBTdGF0ZV0pO1xuXG4gIC8vIERldGVjdCBhbmQgYXBwbHkgb3V0c2lkZSB2aWV3cG9ydCBjaGFuZ2VzXG4gIC8vIChlLmcuIGZyb20gZ2VvY29kZXIgb3Igd2hlbiBzd2l0Y2hpbmcgdG8gM2QgbW9kZSlcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1hcFN0YXRlKSByZXR1cm47XG4gICAgY29uc3QgcHJpbWFyeVN0YXRlID0gdmlld1N0YXRlc1swXTtcbiAgICBpZiAocHJpbWFyeVN0YXRlID09PSBtYXBTdGF0ZSkgcmV0dXJuO1xuICAgIGNvbnN0IHByb3BzID0gT2JqZWN0LmtleXMocHJpbWFyeVN0YXRlKS5maWx0ZXIoa2V5ID0+ICFrZXkuc3RhcnRzV2l0aCgndHJhbnNpdGlvbicpKTtcbiAgICBjb25zdCBoYXNDaGFuZ2VkID0gKGEsIGIpID0+ICFpc0VxdWFsKHBpY2soYSwgcHJvcHMpLCBwaWNrKGIsIHByb3BzKSk7XG4gICAgaWYgKGlzU3BsaXQgJiYgIWlzVmlld3BvcnRTeW5jZWQpIHtcbiAgICAgIGlmIChtYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cz8uc29tZSgocywgaSkgPT4gaGFzQ2hhbmdlZChzLCB2aWV3U3RhdGVzW2ldKSkpIHtcbiAgICAgICAgc2V0Vmlld1N0YXRlcyhtYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyBhcyBNYXBTdGF0ZVtdKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGhhc0NoYW5nZWQocHJpbWFyeVN0YXRlLCBtYXBTdGF0ZSkpIHtcbiAgICAgICAgc2V0Vmlld1N0YXRlcyhbcGlja1ZpZXdwb3J0UHJvcHNGcm9tTWFwU3RhdGUobWFwU3RhdGUpXSBhcyBNYXBTdGF0ZVtdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gT25seSB1cGRhdGUgaW50ZXJuYWxWaWV3U3RhdGUgd2hlbiB2aWV3U3RhdGUgY2hhbmdlc1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW21hcFN0YXRlXSk7XG5cbiAgY29uc3QgdmFsdWUgPSB7XG4gICAgZ2V0SW50ZXJuYWxWaWV3U3RhdGU6IChpbmRleCA9IDApID0+IHZpZXdTdGF0ZXNbaW5kZXhdID8/IHZpZXdTdGF0ZXNbMF0sXG4gICAgc2V0SW50ZXJuYWxWaWV3U3RhdGU6IChuZXdWaWV3U3RhdGUsIGluZGV4ID0gMCkgPT4ge1xuICAgICAgc2V0Vmlld1N0YXRlcyhwcmV2Vmlld1N0YXRlcyA9PiB7XG4gICAgICAgIGlmIChpc1NwbGl0ICYmICFpc1ZpZXdwb3J0U3luY2VkKSB7XG4gICAgICAgICAgY29uc3QgbmV4dFZpZXdTdGF0ZXMgPSBbLi4ucHJldlZpZXdTdGF0ZXNdO1xuICAgICAgICAgIG5leHRWaWV3U3RhdGVzW2luZGV4XSA9IG5ld1ZpZXdTdGF0ZSBhcyBNYXBTdGF0ZTtcbiAgICAgICAgICByZXR1cm4gbmV4dFZpZXdTdGF0ZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFtuZXdWaWV3U3RhdGVdIGFzIE1hcFN0YXRlW107XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSBhcyBNYXBWaWV3U3RhdGVDb250ZXh0VHlwZTtcbiAgcmV0dXJuIDxNYXBWaWV3U3RhdGVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvTWFwVmlld1N0YXRlQ29udGV4dC5Qcm92aWRlcj47XG59O1xuIl19
|
package/dist/maps-layout.js
CHANGED
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
// Copyright (c) 2023 Uber Technologies, Inc.
|
|
2
|
-
//
|
|
3
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
-
// of this software and associated documentation files (the "Software"), to deal
|
|
5
|
-
// in the Software without restriction, including without limitation the rights
|
|
6
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
-
// copies of the Software, and to permit persons to whom the Software is
|
|
8
|
-
// furnished to do so, subject to the following conditions:
|
|
9
|
-
//
|
|
10
|
-
// The above copyright notice and this permission notice shall be included in
|
|
11
|
-
// all copies or substantial portions of the Software.
|
|
12
|
-
//
|
|
13
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
-
// THE SOFTWARE.
|
|
20
|
-
|
|
21
1
|
"use strict";
|
|
22
2
|
|
|
23
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
@@ -81,4 +61,4 @@ function MapsLayoutFactory() {
|
|
|
81
61
|
|
|
82
62
|
return MapsLayout;
|
|
83
63
|
}
|
|
84
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXBzLWxheW91dC50c3giXSwibmFtZXMiOlsiT3V0ZXIiLCJzdHlsZWQiLCJkaXYiLCJNYXBzTGF5b3V0RmFjdG9yeSIsImRlcHMiLCJNYXBzTGF5b3V0IiwicHJvcHMiLCJjbGFzc05hbWUiLCJtYXBTdGF0ZSIsImNoaWxkcmVuIiwiUmVhY3QiLCJDb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBOztBQUNBOztBQUlBOzs7Ozs7OztBQUVBLElBQU1BLEtBQUssR0FBR0MsNkJBQU9DLEdBQVYsa0tBQVg7O0FBT0FDLGlCQUFpQixDQUFDQyxJQUFsQixHQUF5QixFQUF6Qjs7QUFRZSxTQUFTRCxpQkFBVCxHQUFtRTtBQUFBLE1BQzFFRSxVQUQwRTtBQUFBOztBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQSxhQUU5RSxrQkFBUztBQUNQLDRCQUNFLGdDQUFDLEtBQUQ7QUFBTyxVQUFBLFNBQVMsRUFBRSxLQUFLQyxLQUFMLENBQVdDO0FBQTdCLHdCQUNFLGdDQUFDLGdEQUFEO0FBQTZCLFVBQUEsUUFBUSxFQUFFLEtBQUtELEtBQUwsQ0FBV0U7QUFBbEQsV0FDRyxLQUFLRixLQUFMLENBQVdHLFFBRGQsQ0FERixDQURGO0FBT0Q7QUFWNkU7QUFBQTtBQUFBLElBQ3ZEQyxrQkFBTUMsU0FEaUQ7O0FBWWhGLFNBQU9OLFVBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHtNYXBTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7TWFwVmlld1N0YXRlQ29udGV4dFByb3ZpZGVyfSBmcm9tICcuL21hcC12aWV3LXN0YXRlLWNvbnRleHQnO1xuXG5jb25zdCBPdXRlciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbmA7XG5cbk1hcHNMYXlvdXRGYWN0b3J5LmRlcHMgPSBbXTtcblxuaW50ZXJmYWNlIE1hcHNMYXlvdXRQcm9wcyB7XG4gIG1hcFN0YXRlOiBNYXBTdGF0ZTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTWFwc0xheW91dEZhY3RvcnkoKTogUmVhY3QuQ29tcG9uZW50VHlwZTxNYXBzTGF5b3V0UHJvcHM+IHtcbiAgY2xhc3MgTWFwc0xheW91dCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxNYXBzTGF5b3V0UHJvcHM+IHtcbiAgICByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8T3V0ZXIgY2xhc3NOYW1lPXt0aGlzLnByb3BzLmNsYXNzTmFtZX0+XG4gICAgICAgICAgPE1hcFZpZXdTdGF0ZUNvbnRleHRQcm92aWRlciBtYXBTdGF0ZT17dGhpcy5wcm9wcy5tYXBTdGF0ZX0+XG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICA8L01hcFZpZXdTdGF0ZUNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgPC9PdXRlcj5cbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHJldHVybiBNYXBzTGF5b3V0O1xufVxuIl19
|
|
@@ -43,13 +43,13 @@ declare namespace ModalContainerFactory {
|
|
|
43
43
|
var deps: (typeof ShareMapModalFactory | (() => React.FC<import("./modals/delete-data-modal").DeleteDatasetModalProps>) | (() => React.FC<{
|
|
44
44
|
mapSaved: string | null;
|
|
45
45
|
title: string;
|
|
46
|
-
cloudProviders: Provider[];
|
|
47
46
|
isProviderLoading: boolean;
|
|
48
|
-
currentProvider: string | null;
|
|
49
47
|
onUpdateImageSetting: (newSetting: Partial<import("@kepler.gl/constants").ExportImage>) => void;
|
|
50
48
|
cleanupExportImage: () => {
|
|
51
49
|
type: "@@kepler.gl/CLEANUP_EXPORT_IMAGE";
|
|
52
50
|
};
|
|
51
|
+
onConfirm: (provider: Provider) => void;
|
|
52
|
+
onCancel: () => void;
|
|
53
53
|
}>) | typeof DataTableModalFactory | typeof LoadDataModalFactory | (() => React.FC<import("react-intl").WithIntlProps<import("./modals/export-image-modal").ExportImageModalProps>> & {
|
|
54
54
|
WrappedComponent: React.ComponentType<import("./modals/export-image-modal").ExportImageModalProps>;
|
|
55
55
|
}) | (() => React.FC<import("react-intl").WithIntlProps<import("./modals/export-data-modal").ExportDataModalProps>> & {
|
package/dist/modal-container.js
CHANGED
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
// Copyright (c) 2023 Uber Technologies, Inc.
|
|
2
|
-
//
|
|
3
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
-
// of this software and associated documentation files (the "Software"), to deal
|
|
5
|
-
// in the Software without restriction, including without limitation the rights
|
|
6
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
-
// copies of the Software, and to permit persons to whom the Software is
|
|
8
|
-
// furnished to do so, subject to the following conditions:
|
|
9
|
-
//
|
|
10
|
-
// The above copyright notice and this permission notice shall be included in
|
|
11
|
-
// all copies or substantial portions of the Software.
|
|
12
|
-
//
|
|
13
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
-
// THE SOFTWARE.
|
|
20
|
-
|
|
21
1
|
"use strict";
|
|
22
2
|
|
|
23
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
@@ -51,8 +31,6 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
51
31
|
|
|
52
32
|
var _styledComponents = require("styled-components");
|
|
53
33
|
|
|
54
|
-
var _reselect = require("reselect");
|
|
55
|
-
|
|
56
34
|
var _lodash = _interopRequireDefault(require("lodash.get"));
|
|
57
35
|
|
|
58
36
|
var _document = _interopRequireDefault(require("global/document"));
|
|
@@ -125,19 +103,6 @@ function ModalContainerFactory(DeleteDatasetModal, OverWriteMapModal, DataTableM
|
|
|
125
103
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "componentDidMount", function () {
|
|
126
104
|
_document["default"].addEventListener('keyup', _this._onKeyUp);
|
|
127
105
|
});
|
|
128
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "cloudProviders", function (props) {
|
|
129
|
-
return props.cloudProviders;
|
|
130
|
-
});
|
|
131
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "providerWithStorage", (0, _reselect.createSelector)(_this.cloudProviders, function (cloudProviders) {
|
|
132
|
-
return cloudProviders.filter(function (p) {
|
|
133
|
-
return p.hasPrivateStorage();
|
|
134
|
-
});
|
|
135
|
-
}));
|
|
136
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "providerWithShare", (0, _reselect.createSelector)(_this.cloudProviders, function (cloudProviders) {
|
|
137
|
-
return cloudProviders.filter(function (p) {
|
|
138
|
-
return p.hasSharingUrl();
|
|
139
|
-
});
|
|
140
|
-
}));
|
|
141
106
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_onKeyUp", function (event) {
|
|
142
107
|
var keyCode = event.keyCode;
|
|
143
108
|
|
|
@@ -202,13 +167,8 @@ function ModalContainerFactory(DeleteDatasetModal, OverWriteMapModal, DataTableM
|
|
|
202
167
|
onError: _this.props.onExportToCloudError
|
|
203
168
|
});
|
|
204
169
|
});
|
|
205
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_onSaveMap", function () {
|
|
206
|
-
var overwrite = arguments.length >
|
|
207
|
-
var currentProvider = _this.props.providerState.currentProvider; // @ts-ignore
|
|
208
|
-
|
|
209
|
-
var provider = _this.props.cloudProviders.find(function (p) {
|
|
210
|
-
return p.name === currentProvider;
|
|
211
|
-
});
|
|
170
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_onSaveMap", function (provider) {
|
|
171
|
+
var overwrite = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
212
172
|
|
|
213
173
|
_this._exportFileToCloud({
|
|
214
174
|
provider: provider,
|
|
@@ -332,9 +292,6 @@ function ModalContainerFactory(DeleteDatasetModal, OverWriteMapModal, DataTableM
|
|
|
332
292
|
onClose: this._closeModal,
|
|
333
293
|
onFileUpload: this._onFileUpload,
|
|
334
294
|
onLoadCloudMap: this._onLoadCloudMap,
|
|
335
|
-
cloudProviders: this.providerWithStorage(this.props),
|
|
336
|
-
onSetCloudProvider: this.props.providerActions.setCloudProvider,
|
|
337
|
-
getSavedMaps: this.props.providerActions.getSavedMaps,
|
|
338
295
|
loadFiles: uiState.loadFiles,
|
|
339
296
|
fileLoading: visState.fileLoading,
|
|
340
297
|
fileLoadingProgress: visState.fileLoadingProgress,
|
|
@@ -448,54 +405,38 @@ function ModalContainerFactory(DeleteDatasetModal, OverWriteMapModal, DataTableM
|
|
|
448
405
|
exportImage: uiState.exportImage,
|
|
449
406
|
mapInfo: visState.mapInfo,
|
|
450
407
|
onSetMapInfo: visStateActions.setMapInfo,
|
|
451
|
-
cloudProviders: this.providerWithStorage(this.props),
|
|
452
|
-
onSetCloudProvider: this.props.providerActions.setCloudProvider,
|
|
453
408
|
cleanupExportImage: uiStateActions.cleanupExportImage,
|
|
454
|
-
onUpdateImageSetting: uiStateActions.setExportImageSetting
|
|
409
|
+
onUpdateImageSetting: uiStateActions.setExportImageSetting,
|
|
410
|
+
onCancel: this._closeModal,
|
|
411
|
+
onConfirm: function onConfirm(provider) {
|
|
412
|
+
return _this2._onSaveMap(provider, false);
|
|
413
|
+
}
|
|
455
414
|
}));
|
|
456
415
|
modalProps = {
|
|
457
416
|
title: 'modal.title.saveMap',
|
|
458
417
|
cssStyle: '',
|
|
459
|
-
footer:
|
|
460
|
-
onCancel: this._closeModal,
|
|
461
|
-
onConfirm: function onConfirm() {
|
|
462
|
-
return _this2._onSaveMap(false);
|
|
463
|
-
},
|
|
464
|
-
confirmButton: {
|
|
465
|
-
large: true,
|
|
466
|
-
disabled: uiState.exportImage.processing || !(0, _utils.isValidMapInfo)(visState.mapInfo) || !providerState.currentProvider,
|
|
467
|
-
children: 'modal.button.save'
|
|
468
|
-
}
|
|
418
|
+
footer: false
|
|
469
419
|
};
|
|
470
420
|
break;
|
|
471
421
|
|
|
472
422
|
case _constants.OVERWRITE_MAP_ID:
|
|
473
423
|
template = /*#__PURE__*/_react["default"].createElement(OverWriteMapModal, (0, _extends2["default"])({}, providerState, {
|
|
474
|
-
cloudProviders: this.props.cloudProviders,
|
|
475
424
|
title: (0, _lodash["default"])(visState, ['mapInfo', 'title']),
|
|
476
425
|
onUpdateImageSetting: uiStateActions.setExportImageSetting,
|
|
477
|
-
cleanupExportImage: uiStateActions.cleanupExportImage
|
|
426
|
+
cleanupExportImage: uiStateActions.cleanupExportImage,
|
|
427
|
+
onConfirm: this._onOverwriteMap,
|
|
428
|
+
onCancel: this._closeModal
|
|
478
429
|
}));
|
|
479
430
|
modalProps = {
|
|
480
431
|
title: 'Overwrite Existing File?',
|
|
481
432
|
cssStyle: smallModalCss,
|
|
482
|
-
footer:
|
|
483
|
-
onConfirm: this._onOverwriteMap,
|
|
484
|
-
onCancel: this._closeModal,
|
|
485
|
-
confirmButton: {
|
|
486
|
-
large: true,
|
|
487
|
-
children: 'Yes',
|
|
488
|
-
disabled: uiState.exportImage.processing || !(0, _utils.isValidMapInfo)(visState.mapInfo) || !providerState.currentProvider
|
|
489
|
-
}
|
|
433
|
+
footer: false
|
|
490
434
|
};
|
|
491
435
|
break;
|
|
492
436
|
|
|
493
437
|
case _constants.SHARE_MAP_ID:
|
|
494
438
|
template = /*#__PURE__*/_react["default"].createElement(ShareMapModal, (0, _extends2["default"])({}, providerState, {
|
|
495
|
-
isReady: !uiState.exportImage.processing,
|
|
496
|
-
cloudProviders: this.providerWithShare(this.props),
|
|
497
439
|
onExport: this._onShareMapUrl,
|
|
498
|
-
onSetCloudProvider: this.props.providerActions.setCloudProvider,
|
|
499
440
|
cleanupExportImage: uiStateActions.cleanupExportImage,
|
|
500
441
|
onUpdateImageSetting: uiStateActions.setExportImageSetting
|
|
501
442
|
}));
|
|
@@ -529,4 +470,4 @@ function ModalContainerFactory(DeleteDatasetModal, OverWriteMapModal, DataTableM
|
|
|
529
470
|
|
|
530
471
|
return ModalContainer;
|
|
531
472
|
}
|
|
532
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tb2RhbC1jb250YWluZXIudHN4Il0sIm5hbWVzIjpbIkRhdGFUYWJsZU1vZGFsU3R5bGUiLCJjc3MiLCJtZWRpYSIsInBvcnRhYmxlIiwicGFsbSIsInNtYWxsTW9kYWxDc3MiLCJMb2FkRGF0YU1vZGFsU3R5bGUiLCJEZWZhdWx0U3R5bGUiLCJNb2RhbENvbnRhaW5lckZhY3RvcnkiLCJkZXBzIiwiRGVsZXRlRGF0YXNldE1vZGFsRmFjdG9yeSIsIk92ZXJXcml0ZU1hcE1vZGFsRmFjdG9yeSIsIkRhdGFUYWJsZU1vZGFsRmFjdG9yeSIsIkxvYWREYXRhTW9kYWxGYWN0b3J5IiwiRXhwb3J0SW1hZ2VNb2RhbEZhY3RvcnkiLCJFeHBvcnREYXRhTW9kYWxGYWN0b3J5IiwiRXhwb3J0TWFwTW9kYWxGYWN0b3J5IiwiQWRkTWFwU3R5bGVNb2RhbEZhY3RvcnkiLCJNb2RhbERpYWxvZ0ZhY3RvcnkiLCJTYXZlTWFwTW9kYWxGYWN0b3J5IiwiU2hhcmVNYXBNb2RhbEZhY3RvcnkiLCJEZWxldGVEYXRhc2V0TW9kYWwiLCJPdmVyV3JpdGVNYXBNb2RhbCIsIkRhdGFUYWJsZU1vZGFsIiwiTG9hZERhdGFNb2RhbCIsIkV4cG9ydEltYWdlTW9kYWwiLCJFeHBvcnREYXRhTW9kYWwiLCJFeHBvcnRNYXBNb2RhbCIsIkFkZE1hcFN0eWxlTW9kYWwiLCJNb2RhbERpYWxvZyIsIlNhdmVNYXBNb2RhbCIsIlNoYXJlTWFwTW9kYWwiLCJNb2RhbENvbnRhaW5lciIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9vbktleVVwIiwicHJvcHMiLCJjbG91ZFByb3ZpZGVycyIsImZpbHRlciIsInAiLCJoYXNQcml2YXRlU3RvcmFnZSIsImhhc1NoYXJpbmdVcmwiLCJldmVudCIsImtleUNvZGUiLCJLZXlFdmVudCIsIkRPTV9WS19FU0NBUEUiLCJfY2xvc2VNb2RhbCIsInVpU3RhdGVBY3Rpb25zIiwidG9nZ2xlTW9kYWwiLCJrZXkiLCJ2aXNTdGF0ZUFjdGlvbnMiLCJyZW1vdmVEYXRhc2V0IiwibWFwU3R5bGVBY3Rpb25zIiwiYWRkQ3VzdG9tTWFwU3R5bGUiLCJmaWxlTGlzdCIsImxvYWRGaWxlcyIsInVpU3RhdGUiLCJleHBvcnRJbWFnZSIsInByb2Nlc3NpbmciLCJhcHBOYW1lIiwiY2xlYW51cEV4cG9ydEltYWdlIiwiZXhwb3J0RGF0YSIsImZvcm1hdCIsImV4cG9ydE1hcCIsIkVYUE9SVF9NQVBfRk9STUFUUyIsIkhUTUwiLCJleHBvcnRIdG1sIiwiZXhwb3J0SnNvbiIsInByb3ZpZGVyIiwiaXNQdWJsaWMiLCJvdmVyd3JpdGUiLCJjbG9zZU1vZGFsIiwidG9TYXZlIiwicHJvdmlkZXJBY3Rpb25zIiwiZXhwb3J0RmlsZVRvQ2xvdWQiLCJtYXBEYXRhIiwib3B0aW9ucyIsIm9uU3VjY2VzcyIsIm9uRXhwb3J0VG9DbG91ZFN1Y2Nlc3MiLCJvbkVycm9yIiwib25FeHBvcnRUb0Nsb3VkRXJyb3IiLCJjdXJyZW50UHJvdmlkZXIiLCJwcm92aWRlclN0YXRlIiwiZmluZCIsIm5hbWUiLCJfZXhwb3J0RmlsZVRvQ2xvdWQiLCJfb25TYXZlTWFwIiwicmVzZXRQcm92aWRlclN0YXR1cyIsInBheWxvYWQiLCJsb2FkQ2xvdWRNYXAiLCJvbkxvYWRDbG91ZE1hcFN1Y2Nlc3MiLCJvbkxvYWRDbG91ZE1hcEVycm9yIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNvbnRhaW5lclciLCJjb250YWluZXJIIiwibWFwU3R5bGUiLCJtYXBTdGF0ZSIsInZpc1N0YXRlIiwicm9vdE5vZGUiLCJjdXJyZW50TW9kYWwiLCJkYXRhc2V0S2V5VG9SZW1vdmUiLCJkYXRhc2V0cyIsImxheWVycyIsImVkaXRpbmdEYXRhc2V0IiwidGVtcGxhdGUiLCJtb2RhbFByb3BzIiwiaWQiLCJEQVRBX1RBQkxFX0lEIiwid2lkdGgiLCJzaG93RGF0YXNldFRhYmxlIiwic29ydFRhYmxlQ29sdW1uIiwicGluVGFibGVDb2x1bW4iLCJjb3B5VGFibGVDb2x1bW4iLCJzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0IiwiY3NzU3R5bGUiLCJERUxFVEVfREFUQV9JRCIsInRpdGxlIiwiZm9vdGVyIiwib25Db25maXJtIiwiX2RlbGV0ZURhdGFzZXQiLCJvbkNhbmNlbCIsImNvbmZpcm1CdXR0b24iLCJuZWdhdGl2ZSIsImxhcmdlIiwiY2hpbGRyZW4iLCJBRERfREFUQV9JRCIsIl9vbkZpbGVVcGxvYWQiLCJfb25Mb2FkQ2xvdWRNYXAiLCJwcm92aWRlcldpdGhTdG9yYWdlIiwic2V0Q2xvdWRQcm92aWRlciIsImdldFNhdmVkTWFwcyIsImZpbGVMb2FkaW5nIiwiZmlsZUxvYWRpbmdQcm9ncmVzcyIsIkVYUE9SVF9JTUFHRV9JRCIsInNldEV4cG9ydEltYWdlU2V0dGluZyIsIl9vbkV4cG9ydEltYWdlIiwiZGlzYWJsZWQiLCJFWFBPUlRfREFUQV9JRCIsIkVYUE9SVF9EQVRBX1RZUEVfT1BUSU9OUyIsImFwcGx5Q1BVRmlsdGVyIiwic2V0RXhwb3J0RGF0YVR5cGUiLCJzZXRFeHBvcnRTZWxlY3RlZERhdGFzZXQiLCJzZXRFeHBvcnRGaWx0ZXJlZCIsIl9vbkV4cG9ydERhdGEiLCJFWFBPUlRfTUFQX0lEIiwia2VwbGVyR2xDb25maWciLCJzY2hlbWEiLCJnZXRDb25maWdUb1NhdmUiLCJzZXRFeHBvcnRNYXBGb3JtYXQiLCJzZXRVc2VyTWFwYm94QWNjZXNzVG9rZW4iLCJzZXRFeHBvcnRIVE1MTWFwTW9kZSIsIl9vbkV4cG9ydE1hcCIsIkFERF9NQVBfU1RZTEVfSUQiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsImlucHV0U3R5bGUiLCJpbnB1dE1hcFN0eWxlIiwibG9hZEN1c3RvbU1hcFN0eWxlIiwiX29uQWRkQ3VzdG9tTWFwU3R5bGUiLCJzdHlsZSIsIlNBVkVfTUFQX0lEIiwibWFwSW5mbyIsInNldE1hcEluZm8iLCJPVkVSV1JJVEVfTUFQX0lEIiwiX29uT3ZlcndyaXRlTWFwIiwiU0hBUkVfTUFQX0lEIiwicHJvdmlkZXJXaXRoU2hhcmUiLCJfb25TaGFy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Rlc7O0FBeVp4QyxTQUFPM0ksY0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIzIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge2Nzc30gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3Rvcn0gZnJvbSAncmVzZWxlY3QnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2guZ2V0JztcbmltcG9ydCBkb2N1bWVudCBmcm9tICdnbG9iYWwvZG9jdW1lbnQnO1xuXG5pbXBvcnQgTW9kYWxEaWFsb2dGYWN0b3J5IGZyb20gJy4vbW9kYWxzL21vZGFsLWRpYWxvZyc7XG5pbXBvcnQge2V4cG9ydEh0bWwsIGlzVmFsaWRNYXBJbmZvLCBleHBvcnRNYXAsIGV4cG9ydEpzb24sIGV4cG9ydEltYWdlfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7XG4gIGV4cG9ydERhdGEsXG4gIGdldEZpbGVGb3JtYXROYW1lcyxcbiAgZ2V0RmlsZUV4dGVuc2lvbnMsXG4gIE1hcFN0eWxlLFxuICBQcm92aWRlclN0YXRlXG59IGZyb20gJ0BrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuXG4vLyBtb2RhbHNcbmltcG9ydCBEZWxldGVEYXRhc2V0TW9kYWxGYWN0b3J5IGZyb20gJy4vbW9kYWxzL2RlbGV0ZS1kYXRhLW1vZGFsJztcbmltcG9ydCBPdmVyV3JpdGVNYXBNb2RhbEZhY3RvcnkgZnJvbSAnLi9tb2RhbHMvb3ZlcndyaXRlLW1hcC1tb2RhbCc7XG5pbXBvcnQgRGF0YVRhYmxlTW9kYWxGYWN0b3J5IGZyb20gJy4vbW9kYWxzL2RhdGEtdGFibGUtbW9kYWwnO1xuaW1wb3J0IExvYWREYXRhTW9kYWxGYWN0b3J5IGZyb20gJy4vbW9kYWxzL2xvYWQtZGF0YS1tb2RhbCc7XG5pbXBvcnQgRXhwb3J0SW1hZ2VNb2RhbEZhY3RvcnkgZnJvbSAnLi9tb2RhbHMvZXhwb3J0LWltYWdlLW1vZGFsJztcbmltcG9ydCBFeHBvcnREYXRhTW9kYWxGYWN0b3J5IGZyb20gJy4vbW9kYWxzL2V4cG9ydC1kYXRhLW1vZGFsJztcbmltcG9ydCBFeHBvcnRNYXBNb2RhbEZhY3RvcnkgZnJvbSAnLi9tb2RhbHMvZXhwb3J0LW1hcC1tb2RhbC9leHBvcnQtbWFwLW1vZGFsJztcbmltcG9ydCBBZGRNYXBTdHlsZU1vZGFsRmFjdG9yeSBmcm9tICcuL21vZGFscy9hZGQtbWFwLXN0eWxlLW1vZGFsJztcbmltcG9ydCBTYXZlTWFwTW9kYWxGYWN0b3J5IGZyb20gJy4vbW9kYWxzL3NhdmUtbWFwLW1vZGFsJztcbmltcG9ydCBTaGFyZU1hcE1vZGFsRmFjdG9yeSBmcm9tICcuL21vZGFscy9zaGFyZS1tYXAtbW9kYWwnO1xuXG4vLyBCcmVha3BvaW50c1xuaW1wb3J0IHttZWRpYX0gZnJvbSAnQGtlcGxlci5nbC9zdHlsZXMnO1xuXG4vLyBUZW1wbGF0ZVxuaW1wb3J0IHtcbiAgRVhQT1JUX0RBVEFfVFlQRV9PUFRJT05TLFxuICBFWFBPUlRfTUFQX0ZPUk1BVFMsXG4gIEtleUV2ZW50LFxuICBBRERfREFUQV9JRCxcbiAgREFUQV9UQUJMRV9JRCxcbiAgREVMRVRFX0RBVEFfSUQsXG4gIEVYUE9SVF9EQVRBX0lELFxuICBFWFBPUlRfSU1BR0VfSUQsXG4gIEVYUE9SVF9NQVBfSUQsXG4gIEFERF9NQVBfU1RZTEVfSUQsXG4gIFNBVkVfTUFQX0lELFxuICBTSEFSRV9NQVBfSUQsXG4gIE9WRVJXUklURV9NQVBfSURcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5pbXBvcnQge01hcFN0YXRlLCBVaVN0YXRlLCBPblN1Y2Nlc3NDYWxsQmFjaywgT25FcnJvckNhbGxCYWNrfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuaW1wb3J0IHtcbiAgVmlzU3RhdGVBY3Rpb25zLFxuICBVSVN0YXRlQWN0aW9ucyxcbiAgTWFwU3R5bGVBY3Rpb25zLFxuICBQcm92aWRlckFjdGlvbnNcbn0gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7TW9kYWxEaWFsb2dQcm9wc30gZnJvbSAnLi9jb21tb24vbW9kYWwnO1xuaW1wb3J0IHtQcm92aWRlcn0gZnJvbSAnQGtlcGxlci5nbC9jbG91ZC1wcm92aWRlcnMnO1xuaW1wb3J0IHtmaW5kRE9NTm9kZX0gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB7VmlzU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG5cbmNvbnN0IERhdGFUYWJsZU1vZGFsU3R5bGUgPSBjc3NgXG4gIHRvcDogNzBweDtcbiAgcGFkZGluZzogMDtcbiAgd2lkdGg6IDkwdnc7XG4gIG1heC13aWR0aDogOTB2dztcblxuICAke21lZGlhLnBvcnRhYmxlYFxuICAgIHBhZGRpbmc6IDA7XG4gIGB9ICR7bWVkaWEucGFsbWBcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICBgfTtcbmA7XG5jb25zdCBzbWFsbE1vZGFsQ3NzID0gY3NzYFxuICB3aWR0aDogNDAlO1xuICBwYWRkaW5nOiA0MHB4IDQwcHggMzJweCA0MHB4O1xuYDtcblxuY29uc3QgTG9hZERhdGFNb2RhbFN0eWxlID0gY3NzYFxuICB0b3A6IDYwcHg7XG5gO1xuXG5jb25zdCBEZWZhdWx0U3R5bGUgPSBjc3NgXG4gIG1heC13aWR0aDogOTYwcHg7XG5gO1xuXG5leHBvcnQgdHlwZSBNb2RhbENvbnRhaW5lclByb3BzID0ge1xuICBhcHBOYW1lOiBzdHJpbmc7XG4gIHJvb3ROb2RlOiBSZWFjdC5SZWFjdEluc3RhbmNlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY29udGFpbmVyVzogbnVtYmVyO1xuICBjb250YWluZXJIOiBudW1iZXI7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIG1hcGJveEFwaVVybD86IHN0cmluZztcbiAgbWFwU3RhdGU6IE1hcFN0YXRlO1xuICBtYXBTdHlsZTogTWFwU3R5bGU7XG4gIHVpU3RhdGU6IFVpU3RhdGU7XG4gIHZpc1N0YXRlOiBWaXNTdGF0ZTtcbiAgcHJvdmlkZXJTdGF0ZTogUHJvdmlkZXJTdGF0ZTtcbiAgdmlzU3RhdGVBY3Rpb25zOiB0eXBlb2YgVmlzU3RhdGVBY3Rpb25zO1xuICB1aVN0YXRlQWN0aW9uczogdHlwZW9mIFVJU3RhdGVBY3Rpb25zO1xuICBtYXBTdHlsZUFjdGlvbnM6IHR5cGVvZiBNYXBTdHlsZUFjdGlvbnM7XG4gIHByb3ZpZGVyQWN0aW9uczogdHlwZW9mIFByb3ZpZGVyQWN0aW9ucztcbiAgb25TYXZlVG9TdG9yYWdlPzogKCkgPT4gdm9pZDtcbiAgY2xvdWRQcm92aWRlcnM6IFByb3ZpZGVyW107XG4gIG9uTG9hZENsb3VkTWFwU3VjY2Vzcz86IE9uU3VjY2Vzc0NhbGxCYWNrO1xuICBvbkxvYWRDbG91ZE1hcEVycm9yPzogT25FcnJvckNhbGxCYWNrO1xuICBvbkV4cG9ydFRvQ2xvdWRTdWNjZXNzPzogT25TdWNjZXNzQ2FsbEJhY2s7XG4gIG9uRXhwb3J0VG9DbG91ZEVycm9yPzogT25FcnJvckNhbGxCYWNrO1xufTtcblxuTW9kYWxDb250YWluZXJGYWN0b3J5LmRlcHMgPSBbXG4gIERlbGV0ZURhdGFzZXRNb2RhbEZhY3RvcnksXG4gIE92ZXJXcml0ZU1hcE1vZGFsRmFjdG9yeSxcbiAgRGF0YVRhYmxlTW9kYWxGYWN0b3J5LFxuICBMb2FkRGF0YU1vZGFsRmFjdG9yeSxcbiAgRXhwb3J0SW1hZ2VNb2RhbEZhY3RvcnksXG4gIEV4cG9ydERhdGFNb2RhbEZhY3RvcnksXG4gIEV4cG9ydE1hcE1vZGFsRmFjdG9yeSxcbiAgQWRkTWFwU3R5bGVNb2RhbEZhY3RvcnksXG4gIE1vZGFsRGlhbG9nRmFjdG9yeSxcbiAgU2F2ZU1hcE1vZGFsRmFjdG9yeSxcbiAgU2hhcmVNYXBNb2RhbEZhY3Rvcnlcbl07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1vZGFsQ29udGFpbmVyRmFjdG9yeShcbiAgRGVsZXRlRGF0YXNldE1vZGFsOiBSZXR1cm5UeXBlPHR5cGVvZiBEZWxldGVEYXRhc2V0TW9kYWxGYWN0b3J5PixcbiAgT3ZlcldyaXRlTWFwTW9kYWw6IFJldHVyblR5cGU8dHlwZW9mIE92ZXJXcml0ZU1hcE1vZGFsRmFjdG9yeT4sXG4gIERhdGFUYWJsZU1vZGFsOiBSZXR1cm5UeXBlPHR5cGVvZiBEYXRhVGFibGVNb2RhbEZhY3Rvcnk+LFxuICBMb2FkRGF0YU1vZGFsOiBSZXR1cm5UeXBlPHR5cGVvZiBMb2FkRGF0YU1vZGFsRmFjdG9yeT4sXG4gIEV4cG9ydEltYWdlTW9kYWw6IFJldHVyblR5cGU8dHlwZW9mIEV4cG9ydEltYWdlTW9kYWxGYWN0b3J5PixcbiAgRXhwb3J0RGF0YU1vZGFsOiBSZXR1cm5UeXBlPHR5cGVvZiBFeHBvcnREYXRhTW9kYWxGYWN0b3J5PixcbiAgRXhwb3J0TWFwTW9kYWw6IFJldHVyblR5cGU8dHlwZW9mIEV4cG9ydE1hcE1vZGFsRmFjdG9yeT4sXG4gIEFkZE1hcFN0eWxlTW9kYWw6IFJldHVyblR5cGU8dHlwZW9mIEFkZE1hcFN0eWxlTW9kYWxGYWN0b3J5PixcbiAgTW9kYWxEaWFsb2c6IFJldHVyblR5cGU8dHlwZW9mIE1vZGFsRGlhbG9nRmFjdG9yeT4sXG4gIFNhdmVNYXBNb2RhbDogUmV0dXJuVHlwZTx0eXBlb2YgU2F2ZU1hcE1vZGFsRmFjdG9yeT4sXG4gIFNoYXJlTWFwTW9kYWw6IFJldHVyblR5cGU8dHlwZW9mIFNoYXJlTWFwTW9kYWxGYWN0b3J5PlxuKTogUmVhY3QuRWxlbWVudFR5cGU8TW9kYWxDb250YWluZXJQcm9wcz4ge1xuICAvKiogQGF1Z21lbnRzIFJlYWN0LkNvbXBvbmVudDxNb2RhbENvbnRhaW5lclByb3BzPiAqL1xuICBjbGFzcyBNb2RhbENvbnRhaW5lciBleHRlbmRzIENvbXBvbmVudDxNb2RhbENvbnRhaW5lclByb3BzPiB7XG4gICAgLy8gVE9ETyAtIHJlbW92ZSB3aGVuIHByb3AgdHlwZXMgYXJlIGZ1bGx5IGV4cG9ydGVkXG4gICAgY29tcG9uZW50RGlkTW91bnQgPSAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMuX29uS2V5VXApO1xuICAgIH07XG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMuX29uS2V5VXApO1xuICAgIH1cblxuICAgIGNsb3VkUHJvdmlkZXJzID0gKHByb3BzOiBNb2RhbENvbnRhaW5lclByb3BzKSA9PiBwcm9wcy5jbG91ZFByb3ZpZGVycztcbiAgICBwcm92aWRlcldpdGhTdG9yYWdlID0gY3JlYXRlU2VsZWN0b3IodGhpcy5jbG91ZFByb3ZpZGVycywgY2xvdWRQcm92aWRlcnMgPT5cbiAgICAgIGNsb3VkUHJvdmlkZXJzLmZpbHRlcihwID0+IHAuaGFzUHJpdmF0ZVN0b3JhZ2UoKSlcbiAgICApO1xuICAgIHByb3ZpZGVyV2l0aFNoYXJlID0gY3JlYXRlU2VsZWN0b3IodGhpcy5jbG91ZFByb3ZpZGVycywgY2xvdWRQcm92aWRlcnMgPT5cbiAgICAgIGNsb3VkUHJvdmlkZXJzLmZpbHRlcihwID0+IHAuaGFzU2hhcmluZ1VybCgpKVxuICAgICk7XG5cbiAgICBfb25LZXlVcCA9IGV2ZW50ID0+IHtcbiAgICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xuICAgICAgaWYgKGtleUNvZGUgPT09IEtleUV2ZW50LkRPTV9WS19FU0NBUEUpIHtcbiAgICAgICAgdGhpcy5fY2xvc2VNb2RhbCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfY2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICAgIHRoaXMucHJvcHMudWlTdGF0ZUFjdGlvbnMudG9nZ2xlTW9kYWwobnVsbCk7XG4gICAgfTtcblxuICAgIF9kZWxldGVEYXRhc2V0ID0ga2V5ID0+IHtcbiAgICAgIHRoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLnJlbW92ZURhdGFzZXQoa2V5KTtcbiAgICAgIHRoaXMuX2Nsb3NlTW9kYWwoKTtcbiAgICB9O1xuXG4gICAgX29uQWRkQ3VzdG9tTWFwU3R5bGUgPSAoKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLm1hcFN0eWxlQWN0aW9ucy5hZGRDdXN0b21NYXBTdHlsZSgpO1xuICAgICAgdGhpcy5fY2xvc2VNb2RhbCgpO1xuICAgIH07XG5cbiAgICBfb25GaWxlVXBsb2FkID0gZmlsZUxpc3QgPT4ge1xuICAgICAgdGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMubG9hZEZpbGVzKGZpbGVMaXN0KTtcbiAgICB9O1xuXG4gICAgX29uRXhwb3J0SW1hZ2UgPSAoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMucHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZS5wcm9jZXNzaW5nKSB7XG4gICAgICAgIGV4cG9ydEltYWdlKHRoaXMucHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZSwgYCR7dGhpcy5wcm9wcy5hcHBOYW1lfS5wbmdgKTtcbiAgICAgICAgdGhpcy5wcm9wcy51aVN0YXRlQWN0aW9ucy5jbGVhbnVwRXhwb3J0SW1hZ2UoKTtcbiAgICAgICAgdGhpcy5fY2xvc2VNb2RhbCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfb25FeHBvcnREYXRhID0gKCkgPT4ge1xuICAgICAgZXhwb3J0RGF0YSh0aGlzLnByb3BzLCB0aGlzLnByb3BzLnVpU3RhdGUuZXhwb3J0RGF0YSk7XG4gICAgICB0aGlzLl9jbG9zZU1vZGFsKCk7XG4gICAgfTtcblxuICAgIF9vbkV4cG9ydE1hcCA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHt1aVN0YXRlfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCB7Zm9ybWF0fSA9IHVpU3RhdGUuZXhwb3J0TWFwO1xuICAgICAgKGZvcm1hdCA9PT0gRVhQT1JUX01BUF9GT1JNQVRTLkhUTUwgPyBleHBvcnRIdG1sIDogZXhwb3J0SnNvbikoXG4gICAgICAgIHRoaXMucHJvcHMsXG4gICAgICAgIHRoaXMucHJvcHMudWlTdGF0ZS5leHBvcnRNYXBbZm9ybWF0XSB8fCB7fVxuICAgICAgKTtcbiAgICAgIHRoaXMuX2Nsb3NlTW9kYWwoKTtcbiAgICB9O1xuXG4gICAgX2V4cG9ydEZpbGVUb0Nsb3VkID0gKHtwcm92aWRlciwgaXNQdWJsaWMsIG92ZXJ3cml0ZSwgY2xvc2VNb2RhbH0pID0+IHtcbiAgICAgIGNvbnN0IHRvU2F2ZSA9IGV4cG9ydE1hcCh0aGlzLnByb3BzKTtcblxuICAgICAgdGhpcy5wcm9wcy5wcm92aWRlckFjdGlvbnMuZXhwb3J0RmlsZVRvQ2xvdWQoe1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIG1hcERhdGE6IHRvU2F2ZSxcbiAgICAgICAgcHJvdmlkZXIsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBpc1B1YmxpYyxcbiAgICAgICAgICBvdmVyd3JpdGVcbiAgICAgICAgfSxcbiAgICAgICAgY2xvc2VNb2RhbCxcbiAgICAgICAgb25TdWNjZXNzOiB0aGlzLnByb3BzLm9uRXhwb3J0VG9DbG91ZFN1Y2Nlc3MsXG4gICAgICAgIG9uRXJyb3I6IHRoaXMucHJvcHMub25FeHBvcnRUb0Nsb3VkRXJyb3JcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfb25TYXZlTWFwID0gKG92ZXJ3cml0ZSA9IGZhbHNlKSA9PiB7XG4gICAgICBjb25zdCB7Y3VycmVudFByb3ZpZGVyfSA9IHRoaXMucHJvcHMucHJvdmlkZXJTdGF0ZTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHByb3ZpZGVyID0gdGhpcy5wcm9wcy5jbG91ZFByb3ZpZGVycy5maW5kKHAgPT4gcC5uYW1lID09PSBjdXJyZW50UHJvdmlkZXIpO1xuICAgICAgdGhpcy5fZXhwb3J0RmlsZVRvQ2xvdWQoe1xuICAgICAgICBwcm92aWRlcixcbiAgICAgICAgaXNQdWJsaWM6IGZhbHNlLFxuICAgICAgICBvdmVyd3JpdGUsXG4gICAgICAgIGNsb3NlTW9kYWw6IHRydWVcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfb25PdmVyd3JpdGVNYXAgPSAoKSA9PiB7XG4gICAgICB0aGlzLl9vblNhdmVNYXAodHJ1ZSk7XG4gICAgfTtcblxuICAgIF9vblNoYXJlTWFwVXJsID0gcHJvdmlkZXIgPT4ge1xuICAgICAgdGhpcy5fZXhwb3J0RmlsZVRvQ2xvdWQoe3Byb3ZpZGVyLCBpc1B1YmxpYzogdHJ1ZSwgb3ZlcndyaXRlOiBmYWxzZSwgY2xvc2VNb2RhbDogZmFsc2V9KTtcbiAgICB9O1xuXG4gICAgX29uQ2xvc2VTYXZlTWFwID0gKCkgPT4ge1xuICAgICAgdGhpcy5wcm9wcy5wcm92aWRlckFjdGlvbnMucmVzZXRQcm92aWRlclN0YXR1cygpO1xuICAgICAgdGhpcy5fY2xvc2VNb2RhbCgpO1xuICAgIH07XG5cbiAgICBfb25Mb2FkQ2xvdWRNYXAgPSBwYXlsb2FkID0+IHtcbiAgICAgIHRoaXMucHJvcHMucHJvdmlkZXJBY3Rpb25zLmxvYWRDbG91ZE1hcCh7XG4gICAgICAgIC4uLnBheWxvYWQsXG4gICAgICAgIG9uU3VjY2VzczogdGhpcy5wcm9wcy5vbkxvYWRDbG91ZE1hcFN1Y2Nlc3MsXG4gICAgICAgIG9uRXJyb3I6IHRoaXMucHJvcHMub25Mb2FkQ2xvdWRNYXBFcnJvclxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGNvbnRhaW5lclcsXG4gICAgICAgIGNvbnRhaW5lckgsXG4gICAgICAgIG1hcFN0eWxlLFxuICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgdWlTdGF0ZSxcbiAgICAgICAgdmlzU3RhdGUsXG4gICAgICAgIHJvb3ROb2RlLFxuICAgICAgICB2aXNTdGF0ZUFjdGlvbnMsXG4gICAgICAgIHVpU3RhdGVBY3Rpb25zLFxuICAgICAgICBwcm92aWRlclN0YXRlXG4gICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHtjdXJyZW50TW9kYWwsIGRhdGFzZXRLZXlUb1JlbW92ZX0gPSB1aVN0YXRlO1xuICAgICAgY29uc3Qge2RhdGFzZXRzLCBsYXllcnMsIGVkaXRpbmdEYXRhc2V0fSA9IHZpc1N0YXRlO1xuXG4gICAgICBsZXQgdGVtcGxhdGU6IEpTWC5FbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgICBsZXQgbW9kYWxQcm9wczogUGFydGlhbDxNb2RhbERpYWxvZ1Byb3BzPiA9IHt9O1xuXG4gICAgICAvLyBUT0RPIC0gY3VycmVudE1vZGFsIGlzIGEgc3RyaW5nXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAoY3VycmVudE1vZGFsICYmIGN1cnJlbnRNb2RhbC5pZCAmJiBjdXJyZW50TW9kYWwudGVtcGxhdGUpIHtcbiAgICAgICAgLy8gaWYgY3VycmVudE1kb2FsIHRlbXBsYXRlIGlzIGFscmVhZHkgcHJvdmlkZWRcbiAgICAgICAgLy8gVE9ETzogbmVlZCB0byBjaGVjayB3aGV0aGVyIHRlbXBsYXRlIGlzIHZhbGlkXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGVtcGxhdGUgPSA8Y3VycmVudE1vZGFsLnRlbXBsYXRlIC8+O1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIG1vZGFsUHJvcHMgPSBjdXJyZW50TW9kYWwubW9kYWxQcm9wcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAoY3VycmVudE1vZGFsKSB7XG4gICAgICAgICAgY2FzZSBEQVRBX1RBQkxFX0lEOlxuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBjb250YWluZXJXICogMC45O1xuICAgICAgICAgICAgdGVtcGxhdGUgPSAoXG4gICAgICAgICAgICAgIDxEYXRhVGFibGVNb2RhbFxuICAgICAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgICAgICBkYXRhSWQ9e2VkaXRpbmdEYXRhc2V0fVxuICAgICAgICAgICAgICAgIHNob3dEYXRhc2V0VGFibGU9e3Zpc1N0YXRlQWN0aW9ucy5zaG93RGF0YXNldFRhYmxlfVxuICAgICAgICAgICAgICAgIHNvcnRUYWJsZUNvbHVtbj17dmlzU3RhdGVBY3Rpb25zLnNvcnRUYWJsZUNvbHVtbn1cbiAgICAgICAgICAgICAgICBwaW5UYWJsZUNvbHVtbj17dmlzU3RhdGVBY3Rpb25zLnBpblRhYmxlQ29sdW1ufVxuICAgICAgICAgICAgICAgIGNvcHlUYWJsZUNvbHVtbj17dmlzU3RhdGVBY3Rpb25zLmNvcHlUYWJsZUNvbHVtbn1cbiAgICAgICAgICAgICAgICBzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0PXt2aXNTdGF0ZUFjdGlvbnMuc2V0Q29sdW1uRGlzcGxheUZvcm1hdH1cbiAgICAgICAgICAgICAgICB1aVN0YXRlQWN0aW9ucz17dWlTdGF0ZUFjdGlvbnN9XG4gICAgICAgICAgICAgICAgdWlTdGF0ZT17dWlTdGF0ZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IHdlIG5lZWQgdG8gbWFrZSB0aGlzIHdpZHRoIGNvbnNpc3RlbnQgd2l0aCB0aGUgY3NzIHJ1bGUgZGVmaW5lZCBtb2RhbC5qczozMiBtYXgtd2lkdGg6IDcwdndcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgLy8gVE9ETyBmaXggdGhpcyBhZnRlciBhZGQgdHlwZXMgdG8gVGhlbWVcbiAgICAgICAgICAgIG1vZGFsUHJvcHMuY3NzU3R5bGUgPSBjc3NgXG4gICAgICAgICAgICAgICR7RGF0YVRhYmxlTW9kYWxTdHlsZX07XG4gICAgICAgICAgICAgICR7bWVkaWEucGFsbWBcbiAgICAgICAgICAgICAgICB3aWR0aDogJHt3aWR0aH1weDtcbiAgICAgICAgICAgICAgYH07XG4gICAgICAgICAgICBgO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBERUxFVEVfREFUQV9JRDpcbiAgICAgICAgICAgIC8vIHZhbGlkYXRlIG9wdGlvbnNcbiAgICAgICAgICAgIGlmIChkYXRhc2V0S2V5VG9SZW1vdmUgJiYgZGF0YXNldHMgJiYgZGF0YXNldHNbZGF0YXNldEtleVRvUmVtb3ZlXSkge1xuICAgICAgICAgICAgICB0ZW1wbGF0ZSA9IChcbiAgICAgICAgICAgICAgICA8RGVsZXRlRGF0YXNldE1vZGFsIGRhdGFzZXQ9e2RhdGFzZXRzW2RhdGFzZXRLZXlUb1JlbW92ZV19IGxheWVycz17bGF5ZXJzfSAvPlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBtb2RhbFByb3BzID0ge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnbW9kYWwudGl0bGUuZGVsZXRlRGF0YXNldCcsXG4gICAgICAgICAgICAgICAgY3NzU3R5bGU6IHNtYWxsTW9kYWxDc3MsXG4gICAgICAgICAgICAgICAgZm9vdGVyOiB0cnVlLFxuICAgICAgICAgICAgICAgIG9uQ29uZmlybTogKCkgPT4gdGhpcy5fZGVsZXRlRGF0YXNldChkYXRhc2V0S2V5VG9SZW1vdmUpLFxuICAgICAgICAgICAgICAgIG9uQ2FuY2VsOiB0aGlzLl9jbG9zZU1vZGFsLFxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b246IHtcbiAgICAgICAgICAgICAgICAgIG5lZ2F0aXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgbGFyZ2U6IHRydWUsXG4gICAgICAgICAgICAgICAgICBjaGlsZHJlbjogJ21vZGFsLmJ1dHRvbi5kZWxldGUnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7IC8vIGluIGNhc2Ugd2UgYWRkIGEgbmV3IGNhc2UgYWZ0ZXIgdGhpcyBvbmVcbiAgICAgICAgICBjYXNlIEFERF9EQVRBX0lEOlxuICAgICAgICAgICAgdGVtcGxhdGUgPSAoXG4gICAgICAgICAgICAgIDxMb2FkRGF0YU1vZGFsXG4gICAgICAgICAgICAgICAgey4uLnByb3ZpZGVyU3RhdGV9XG4gICAgICAgICAgICAgICAgb25DbG9zZT17dGhpcy5fY2xvc2VNb2RhbH1cbiAgICAgICAgICAgICAgICBvbkZpbGVVcGxvYWQ9e3RoaXMuX29uRmlsZVVwbG9hZH1cbiAgICAgICAgICAgICAgICBvbkxvYWRDbG91ZE1hcD17dGhpcy5fb25Mb2FkQ2xvdWRNYXB9XG4gICAgICAgICAgICAgICAgY2xvdWRQcm92aWRlcnM9e3RoaXMucHJvdmlkZXJXaXRoU3RvcmFnZSh0aGlzLnByb3BzKX1cbiAgICAgICAgICAgICAgICBvblNldENsb3VkUHJvdmlkZXI9e3RoaXMucHJvcHMucHJvdmlkZXJBY3Rpb25zLnNldENsb3VkUHJvdmlkZXJ9XG4gICAgICAgICAgICAgICAgZ2V0U2F2ZWRNYXBzPXt0aGlzLnByb3BzLnByb3ZpZGVyQWN0aW9ucy5nZXRTYXZlZE1hcHN9XG4gICAgICAgICAgICAgICAgbG9hZEZpbGVzPXt1aVN0YXRlLmxvYWRGaWxlc31cbiAgICAgICAgICAgICAgICBmaWxlTG9hZGluZz17dmlzU3RhdGUuZmlsZUxvYWRpbmd9XG4gICAgICAgICAgICAgICAgZmlsZUxvYWRpbmdQcm9ncmVzcz17dmlzU3RhdGUuZmlsZUxvYWRpbmdQcm9ncmVzc31cbiAgICAgICAgICAgICAgICBmaWxlRm9ybWF0TmFtZXM9e2dldEZpbGVGb3JtYXROYW1lcyh0aGlzLnByb3BzLnZpc1N0YXRlKX1cbiAgICAgICAgICAgICAgICBmaWxlRXh0ZW5zaW9ucz17Z2V0RmlsZUV4dGVuc2lvbnModGhpcy5wcm9wcy52aXNTdGF0ZSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbW9kYWxQcm9wcyA9IHtcbiAgICAgICAgICAgICAgdGl0bGU6ICdtb2RhbC50aXRsZS5hZGREYXRhVG9NYXAnLFxuICAgICAgICAgICAgICBjc3NTdHlsZTogTG9hZERhdGFNb2RhbFN0eWxlLFxuICAgICAgICAgICAgICBmb290ZXI6IGZhbHNlLFxuICAgICAgICAgICAgICBvbkNvbmZpcm06IHRoaXMuX2Nsb3NlTW9kYWxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIEVYUE9SVF9JTUFHRV9JRDpcbiAgICAgICAgICAgIHRlbXBsYXRlID0gKFxuICAgICAgICAgICAgICA8RXhwb3J0SW1hZ2VNb2RhbFxuICAgICAgICAgICAgICAgIGV4cG9ydEltYWdlPXt1aVN0YXRlLmV4cG9ydEltYWdlfVxuICAgICAgICAgICAgICAgIG1hcFc9e2NvbnRhaW5lcld9XG4gICAgICAgICAgICAgICAgbWFwSD17Y29udGFpbmVySH1cbiAgICAgICAgICAgICAgICBvblVwZGF0ZUltYWdlU2V0dGluZz17dWlTdGF0ZUFjdGlvbnMuc2V0RXhwb3J0SW1hZ2VTZXR0aW5nfVxuICAgICAgICAgICAgICAgIGNsZWFudXBFeHBvcnRJbWFnZT17dWlTdGF0ZUFjdGlvbnMuY2xlYW51cEV4cG9ydEltYWdlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG1vZGFsUHJvcHMgPSB7XG4gICAgICAgICAgICAgIHRpdGxlOiAnbW9kYWwudGl0bGUuZXhwb3J0SW1hZ2UnLFxuICAgICAgICAgICAgICBjc3NTdHlsZTogJycsXG4gICAgICAgICAgICAgIGZvb3RlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgb25DYW5jZWw6IHRoaXMuX2Nsb3NlTW9kYWwsXG4gICAgICAgICAgICAgIG9uQ29uZmlybTogdGhpcy5fb25FeHBvcnRJbWFnZSxcbiAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbjoge1xuICAgICAgICAgICAgICAgIGxhcmdlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB1aVN0YXRlLmV4cG9ydEltYWdlLnByb2Nlc3NpbmcsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46ICdtb2RhbC5idXR0b24uZG93bmxvYWQnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIEVYUE9SVF9EQVRBX0lEOlxuICAgICAgICAgICAgdGVtcGxhdGUgPSAoXG4gICAgICAgICAgICAgIDxFeHBvcnREYXRhTW9kYWxcbiAgICAgICAgICAgICAgICB7Li4udWlTdGF0ZS5leHBvcnREYXRhfVxuICAgICAgICAgICAgICAgIHN1cHBvcnRlZERhdGFUeXBlcz17RVhQT1JUX0RBVEFfVFlQRV9PUFRJT05TfVxuICAgICAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgICAgICBhcHBseUNQVUZpbHRlcj17dGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMuYXBwbHlDUFVGaWx0ZXJ9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2VFeHBvcnREYXRhVHlwZT17dWlTdGF0ZUFjdGlvbnMuc2V0RXhwb3J0RGF0YVR5cGV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2VFeHBvcnRTZWxlY3RlZERhdGFzZXQ9e3VpU3RhdGVBY3Rpb25zLnNldEV4cG9ydFNlbGVjdGVkRGF0YXNldH1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZUV4cG9ydEZpbHRlcmVkPXt1aVN0YXRlQWN0aW9ucy5zZXRFeHBvcnRGaWx0ZXJlZH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBtb2RhbFByb3BzID0ge1xuICAgICAgICAgICAgICB0aXRsZTogJ21vZGFsLnRpdGxlLmV4cG9ydERhdGEnLFxuICAgICAgICAgICAgICBjc3NTdHlsZTogJycsXG4gICAgICAgICAgICAgIGZvb3RlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgb25DYW5jZWw6IHRoaXMuX2Nsb3NlTW9kYWwsXG4gICAgICAgICAgICAgIG9uQ29uZmlybTogdGhpcy5fb25FeHBvcnREYXRhLFxuICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiB7XG4gICAgICAgICAgICAgICAgbGFyZ2U6IHRydWUsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46ICdtb2RhbC5idXR0b24uZXhwb3J0J1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBFWFBPUlRfTUFQX0lEOlxuICAgICAgICAgICAgY29uc3Qga2VwbGVyR2xDb25maWcgPSB2aXNTdGF0ZS5zY2hlbWEuZ2V0Q29uZmlnVG9TYXZlKHtcbiAgICAgICAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgICAgICAgIHZpc1N0YXRlLFxuICAgICAgICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgICAgICAgdWlTdGF0ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0ZW1wbGF0ZSA9IChcbiAgICAgICAgICAgICAgPEV4cG9ydE1hcE1vZGFsXG4gICAgICAgICAgICAgICAgY29uZmlnPXtrZXBsZXJHbENvbmZpZ31cbiAgICAgICAgICAgICAgICBvcHRpb25zPXt1aVN0YXRlLmV4cG9ydE1hcH1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZUV4cG9ydE1hcEZvcm1hdD17dWlTdGF0ZUFjdGlvbnMuc2V0RXhwb3J0TWFwRm9ybWF0fVxuICAgICAgICAgICAgICAgIG9uRWRpdFVzZXJNYXBib3hBY2Nlc3NUb2tlbj17dWlTdGF0ZUFjdGlvbnMuc2V0VXNlck1hcGJveEFjY2Vzc1Rva2VufVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlRXhwb3J0TWFwSFRNTE1vZGU9e3VpU3RhdGVBY3Rpb25zLnNldEV4cG9ydEhUTUxNYXBNb2RlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG1vZGFsUHJvcHMgPSB7XG4gICAgICAgICAgICAgIHRpdGxlOiAnbW9kYWwudGl0bGUuZXhwb3J0TWFwJyxcbiAgICAgICAgICAgICAgY3NzU3R5bGU6ICcnLFxuICAgICAgICAgICAgICBmb290ZXI6IHRydWUsXG4gICAgICAgICAgICAgIG9uQ2FuY2VsOiB0aGlzLl9jbG9zZU1vZGFsLFxuICAgICAgICAgICAgICBvbkNvbmZpcm06IHRoaXMuX29uRXhwb3J0TWFwLFxuICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiB7XG4gICAgICAgICAgICAgICAgbGFyZ2U6IHRydWUsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46ICdtb2RhbC5idXR0b24uZXhwb3J0J1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBBRERfTUFQX1NUWUxFX0lEOlxuICAgICAgICAgICAgdGVtcGxhdGUgPSAoXG4gICAgICAgICAgICAgIDxBZGRNYXBTdHlsZU1vZGFsXG4gICAgICAgICAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW49e3RoaXMucHJvcHMubWFwYm94QXBpQWNjZXNzVG9rZW59XG4gICAgICAgICAgICAgICAgbWFwYm94QXBpVXJsPXt0aGlzLnByb3BzLm1hcGJveEFwaVVybH1cbiAgICAgICAgICAgICAgICBtYXBTdGF0ZT17dGhpcy5wcm9wcy5tYXBTdGF0ZX1cbiAgICAgICAgICAgICAgICBpbnB1dFN0eWxlPXttYXBTdHlsZS5pbnB1dFN0eWxlfVxuICAgICAgICAgICAgICAgIGlucHV0TWFwU3R5bGU9e3RoaXMucHJvcHMubWFwU3R5bGVBY3Rpb25zLmlucHV0TWFwU3R5bGV9XG4gICAgICAgICAgICAgICAgbG9hZEN1c3RvbU1hcFN0eWxlPXt0aGlzLnByb3BzLm1hcFN0eWxlQWN0aW9ucy5sb2FkQ3VzdG9tTWFwU3R5bGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbW9kYWxQcm9wcyA9IHtcbiAgICAgICAgICAgICAgdGl0bGU6ICdtb2RhbC50aXRsZS5hZGRDdXN0b21NYXBib3hTdHlsZScsXG4gICAgICAgICAgICAgIGNzc1N0eWxlOiAnJyxcbiAgICAgICAgICAgICAgZm9vdGVyOiB0cnVlLFxuICAgICAgICAgICAgICBvbkNhbmNlbDogdGhpcy5fY2xvc2VNb2RhbCxcbiAgICAgICAgICAgICAgb25Db25maXJtOiB0aGlzLl9vbkFkZEN1c3RvbU1hcFN0eWxlLFxuICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiB7XG4gICAgICAgICAgICAgICAgbGFyZ2U6IHRydWUsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICFtYXBTdHlsZS5pbnB1dFN0eWxlLnN0eWxlLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAnbW9kYWwuYnV0dG9uLmFkZFN0eWxlJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBTQVZFX01BUF9JRDpcbiAgICAgICAgICAgIHRlbXBsYXRlID0gKFxuICAgICAgICAgICAgICA8U2F2ZU1hcE1vZGFsXG4gICAgICAgICAgICAgICAgey4uLnByb3ZpZGVyU3RhdGV9XG4gICAgICAgICAgICAgICAgZXhwb3J0SW1hZ2U9e3VpU3RhdGUuZXhwb3J0SW1hZ2V9XG4gICAgICAgICAgICAgICAgbWFwSW5mbz17dmlzU3RhdGUubWFwSW5mb31cbiAgICAgICAgICAgICAgICBvblNldE1hcEluZm89e3Zpc1N0YXRlQWN0aW9ucy5zZXRNYXBJbmZvfVxuICAgICAgICAgICAgICAgIGNsb3VkUHJvdmlkZXJzPXt0aGlzLnByb3ZpZGVyV2l0aFN0b3JhZ2UodGhpcy5wcm9wcyl9XG4gICAgICAgICAgICAgICAgb25TZXRDbG91ZFByb3ZpZGVyPXt0aGlzLnByb3BzLnByb3ZpZGVyQWN0aW9ucy5zZXRDbG91ZFByb3ZpZGVyfVxuICAgICAgICAgICAgICAgIGNsZWFudXBFeHBvcnRJbWFnZT17dWlTdGF0ZUFjdGlvbnMuY2xlYW51cEV4cG9ydEltYWdlfVxuICAgICAgICAgICAgICAgIG9uVXBkYXRlSW1hZ2VTZXR0aW5nPXt1aVN0YXRlQWN0aW9ucy5zZXRFeHBvcnRJbWFnZVNldHRpbmd9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbW9kYWxQcm9wcyA9IHtcbiAgICAgICAgICAgICAgdGl0bGU6ICdtb2RhbC50aXRsZS5zYXZlTWFwJyxcbiAgICAgICAgICAgICAgY3NzU3R5bGU6ICcnLFxuICAgICAgICAgICAgICBmb290ZXI6IHRydWUsXG4gICAgICAgICAgICAgIG9uQ2FuY2VsOiB0aGlzLl9jbG9zZU1vZGFsLFxuICAgICAgICAgICAgICBvbkNvbmZpcm06ICgpID0+IHRoaXMuX29uU2F2ZU1hcChmYWxzZSksXG4gICAgICAgICAgICAgIGNvbmZpcm1CdXR0b246IHtcbiAgICAgICAgICAgICAgICBsYXJnZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDpcbiAgICAgICAgICAgICAgICAgIHVpU3RhdGUuZXhwb3J0SW1hZ2UucHJvY2Vzc2luZyB8fFxuICAgICAgICAgICAgICAgICAgIWlzVmFsaWRNYXBJbmZvKHZpc1N0YXRlLm1hcEluZm8pIHx8XG4gICAgICAgICAgICAgICAgICAhcHJvdmlkZXJTdGF0ZS5jdXJyZW50UHJvdmlkZXIsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46ICdtb2RhbC5idXR0b24uc2F2ZSdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgT1ZFUldSSVRFX01BUF9JRDpcbiAgICAgICAgICAgIHRlbXBsYXRlID0gKFxuICAgICAgICAgICAgICA8T3ZlcldyaXRlTWFwTW9kYWxcbiAgICAgICAgICAgICAgICB7Li4ucHJvdmlkZXJTdGF0ZX1cbiAgICAgICAgICAgICAgICBjbG91ZFByb3ZpZGVycz17dGhpcy5wcm9wcy5jbG91ZFByb3ZpZGVyc31cbiAgICAgICAgICAgICAgICB0aXRsZT17Z2V0KHZpc1N0YXRlLCBbJ21hcEluZm8nLCAndGl0bGUnXSl9XG4gICAgICAgICAgICAgICAgb25VcGRhdGVJbWFnZVNldHRpbmc9e3VpU3RhdGVBY3Rpb25zLnNldEV4cG9ydEltYWdlU2V0dGluZ31cbiAgICAgICAgICAgICAgICBjbGVhbnVwRXhwb3J0SW1hZ2U9e3VpU3RhdGVBY3Rpb25zLmNsZWFudXBFeHBvcnRJbWFnZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBtb2RhbFByb3BzID0ge1xuICAgICAgICAgICAgICB0aXRsZTogJ092ZXJ3cml0ZSBFeGlzdGluZyBGaWxlPycsXG4gICAgICAgICAgICAgIGNzc1N0eWxlOiBzbWFsbE1vZGFsQ3NzLFxuICAgICAgICAgICAgICBmb290ZXI6IHRydWUsXG4gICAgICAgICAgICAgIG9uQ29uZmlybTogdGhpcy5fb25PdmVyd3JpdGVNYXAsXG4gICAgICAgICAgICAgIG9uQ2FuY2VsOiB0aGlzLl9jbG9zZU1vZGFsLFxuICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiB7XG4gICAgICAgICAgICAgICAgbGFyZ2U6IHRydWUsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46ICdZZXMnLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOlxuICAgICAgICAgICAgICAgICAgdWlTdGF0ZS5leHBvcnRJbWFnZS5wcm9jZXNzaW5nIHx8XG4gICAgICAgICAgICAgICAgICAhaXNWYWxpZE1hcEluZm8odmlzU3RhdGUubWFwSW5mbykgfHxcbiAgICAgICAgICAgICAgICAgICFwcm92aWRlclN0YXRlLmN1cnJlbnRQcm92aWRlclxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBTSEFSRV9NQVBfSUQ6XG4gICAgICAgICAgICB0ZW1wbGF0ZSA9IChcbiAgICAgICAgICAgICAgPFNoYXJlTWFwTW9kYWxcbiAgICAgICAgICAgICAgICB7Li4ucHJvdmlkZXJTdGF0ZX1cbiAgICAgICAgICAgICAgICBpc1JlYWR5PXshdWlTdGF0ZS5leHBvcnRJbWFnZS5wcm9jZXNzaW5nfVxuICAgICAgICAgICAgICAgIGNsb3VkUHJvdmlkZXJzPXt0aGlzLnByb3ZpZGVyV2l0aFNoYXJlKHRoaXMucHJvcHMpfVxuICAgICAgICAgICAgICAgIG9uRXhwb3J0PXt0aGlzLl9vblNoYXJlTWFwVXJsfVxuICAgICAgICAgICAgICAgIG9uU2V0Q2xvdWRQcm92aWRlcj17dGhpcy5wcm9wcy5wcm92aWRlckFjdGlvbnMuc2V0Q2xvdWRQcm92aWRlcn1cbiAgICAgICAgICAgICAgICBjbGVhbnVwRXhwb3J0SW1hZ2U9e3VpU3RhdGVBY3Rpb25zLmNsZWFudXBFeHBvcnRJbWFnZX1cbiAgICAgICAgICAgICAgICBvblVwZGF0ZUltYWdlU2V0dGluZz17dWlTdGF0ZUFjdGlvbnMuc2V0RXhwb3J0SW1hZ2VTZXR0aW5nfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG1vZGFsUHJvcHMgPSB7XG4gICAgICAgICAgICAgIHRpdGxlOiAnbW9kYWwudGl0bGUuc2hhcmVVUkwnLFxuICAgICAgICAgICAgICBjc3NTdHlsZTogJycsXG4gICAgICAgICAgICAgIG9uQ2FuY2VsOiB0aGlzLl9vbkNsb3NlU2F2ZU1hcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcm9vdE5vZGUgPyAoXG4gICAgICAgIDxNb2RhbERpYWxvZ1xuICAgICAgICAgIHBhcmVudFNlbGVjdG9yPXsoKSA9PiBmaW5kRE9NTm9kZShyb290Tm9kZSkgYXMgSFRNTEVsZW1lbnR9XG4gICAgICAgICAgaXNPcGVuPXtCb29sZWFuKGN1cnJlbnRNb2RhbCl9XG4gICAgICAgICAgb25DYW5jZWw9e3RoaXMuX2Nsb3NlTW9kYWx9XG4gICAgICAgICAgey4uLm1vZGFsUHJvcHN9XG4gICAgICAgICAgY3NzU3R5bGU9e0RlZmF1bHRTdHlsZS5jb25jYXQobW9kYWxQcm9wcy5jc3NTdHlsZSl9XG4gICAgICAgID5cbiAgICAgICAgICB7dGVtcGxhdGV9XG4gICAgICAgIDwvTW9kYWxEaWFsb2c+XG4gICAgICApIDogbnVsbDtcbiAgICB9XG4gICAgLyogZXNsaW50LWVuYWJsZSBjb21wbGV4aXR5ICovXG4gIH1cblxuICByZXR1cm4gTW9kYWxDb250YWluZXI7XG59XG4iXX0=
|
|
473
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tb2RhbC1jb250YWluZXIudHN4Il0sIm5hbWVzIjpbIkRhdGFUYWJsZU1vZGFsU3R5bGUiLCJjc3MiLCJtZWRpYSIsInBvcnRhYmxlIiwicGFsbSIsInNtYWxsTW9kYWxDc3MiLCJMb2FkRGF0YU1vZGFsU3R5bGUiLCJEZWZhdWx0U3R5bGUiLCJNb2RhbENvbnRhaW5lckZhY3RvcnkiLCJkZXBzIiwiRGVsZXRlRGF0YXNldE1vZGFsRmFjdG9yeSIsIk92ZXJXcml0ZU1hcE1vZGFsRmFjdG9yeSIsIkRhdGFUYWJsZU1vZGFsRmFjdG9yeSIsIkxvYWREYXRhTW9kYWxGYWN0b3J5IiwiRXhwb3J0SW1hZ2VNb2RhbEZhY3RvcnkiLCJFeHBvcnREYXRhTW9kYWxGYWN0b3J5IiwiRXhwb3J0TWFwTW9kYWxGYWN0b3J5IiwiQWRkTWFwU3R5bGVNb2RhbEZhY3RvcnkiLCJNb2RhbERpYWxvZ0ZhY3RvcnkiLCJTYXZlTWFwTW9kYWxGYWN0b3J5IiwiU2hhcmVNYXBNb2RhbEZhY3RvcnkiLCJEZWxldGVEYXRhc2V0TW9kYWwiLCJPdmVyV3JpdGVNYXBNb2RhbCIsIkRhdGFUYWJsZU1vZGFsIiwiTG9hZERhdGFNb2RhbCIsIkV4cG9ydEltYWdlTW9kYWwiLCJFeHBvcnREYXRhTW9kYWwiLCJFeHBvcnRNYXBNb2RhbCIsIkFkZE1hcFN0eWxlTW9kYWwiLCJNb2RhbERpYWxvZyIsIlNhdmVNYXBNb2RhbCIsIlNoYXJlTWFwTW9kYWwiLCJNb2RhbENvbnRhaW5lciIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9vbktleVVwIiwiZXZlbnQiLCJrZXlDb2RlIiwiS2V5RXZlbnQiLCJET01fVktfRVNDQVBFIiwiX2Nsb3NlTW9kYWwiLCJwcm9wcyIsInVpU3RhdGVBY3Rpb25zIiwidG9nZ2xlTW9kYWwiLCJrZXkiLCJ2aXNTdGF0ZUFjdGlvbnMiLCJyZW1vdmVEYXRhc2V0IiwibWFwU3R5bGVBY3Rpb25zIiwiYWRkQ3VzdG9tTWFwU3R5bGUiLCJmaWxlTGlzdCIsImxvYWRGaWxlcyIsInVpU3RhdGUiLCJleHBvcnRJbWFnZSIsInByb2Nlc3NpbmciLCJhcHBOYW1lIiwiY2xlYW51cEV4cG9ydEltYWdlIiwiZXhwb3J0RGF0YSIsImZvcm1hdCIsImV4cG9ydE1hcCIsIkVYUE9SVF9NQVBfRk9STUFUUyIsIkhUTUwiLCJleHBvcnRIdG1sIiwiZXhwb3J0SnNvbiIsInByb3ZpZGVyIiwiaXNQdWJsaWMiLCJvdmVyd3JpdGUiLCJjbG9zZU1vZGFsIiwidG9TYXZlIiwicHJvdmlkZXJBY3Rpb25zIiwiZXhwb3J0RmlsZVRvQ2xvdWQiLCJtYXBEYXRhIiwib3B0aW9ucyIsIm9uU3VjY2VzcyIsIm9uRXhwb3J0VG9DbG91ZFN1Y2Nlc3MiLCJvbkVycm9yIiwib25FeHBvcnRUb0Nsb3VkRXJyb3IiLCJfZXhwb3J0RmlsZVRvQ2xvdWQiLCJfb25TYXZlTWFwIiwicmVzZXRQcm92aWRlclN0YXR1cyIsInBheWxvYWQiLCJsb2FkQ2xvdWRNYXAiLCJvbkxvYWRDbG91ZE1hcFN1Y2Nlc3MiLCJvbkxvYWRDbG91ZE1hcEVycm9yIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNvbnRhaW5lclciLCJjb250YWluZXJIIiwibWFwU3R5bGUiLCJtYXBTdGF0ZSIsInZpc1N0YXRlIiwicm9vdE5vZGUiLCJwcm92aWRlclN0YXRlIiwiY3VycmVudE1vZGFsIiwiZGF0YXNldEtleVRvUmVtb3ZlIiwiZGF0YXNldHMiLCJsYXllcnMiLCJlZGl0aW5nRGF0YXNldCIsInRlbXBsYXRlIiwibW9kYWxQcm9wcyIsImlkIiwiREFUQV9UQUJMRV9JRCIsIndpZHRoIiwic2hvd0RhdGFzZXRUYWJsZSIsInNvcnRUYWJsZUNvbHVtbiIsInBpblRhYmxlQ29sdW1uIiwiY29weVRhYmxlQ29sdW1uIiwic2V0Q29sdW1uRGlzcGxheUZvcm1hdCIsImNzc1N0eWxlIiwiREVMRVRFX0RBVEFfSUQiLCJ0aXRsZSIsImZvb3RlciIsIm9uQ29uZmlybSIsIl9kZWxldGVEYXRhc2V0Iiwib25DYW5jZWwiLCJjb25maXJtQnV0dG9uIiwibmVnYXRpdmUiLCJsYXJnZSIsImNoaWxkcmVuIiwiQUREX0RBVEFfSUQiLCJfb25GaWxlVXBsb2FkIiwiX29uTG9hZENsb3VkTWFwIiwiZmlsZUxvYWRpbmciLCJmaWxlTG9hZGluZ1Byb2dyZXNzIiwiRVhQT1JUX0lNQUdFX0lEIiwic2V0RXhwb3J0SW1hZ2VTZXR0aW5nIiwiX29uRXhwb3J0SW1hZ2UiLCJkaXNhYmxlZCIsIkVYUE9SVF9EQVRBX0lEIiwiRVhQT1JUX0RBVEFfVFlQRV9PUFRJT05TIiwiYXBwbHlDUFVGaWx0ZXIiLCJzZXRFeHBvcnREYXRhVHlwZSIsInNldEV4cG9ydFNlbGVjdGVkRGF0YXNldCIsInNldEV4cG9ydEZpbHRlcmVkIiwiX29uRXhwb3J0RGF0YSIsIkVYUE9SVF9NQVBfSUQiLCJrZXBsZXJHbENvbmZpZyIsInNjaGVtYSIsImdldENvbmZpZ1RvU2F2ZSIsInNldEV4cG9ydE1hcEZvcm1hdCIsInNldFVzZXJNYXBib3hBY2Nlc3NUb2tlbiIsInNldEV4cG9ydEhUTUxNYXBNb2RlIiwiX29uRXhwb3J0TWFwIiwiQUREX01BUF9TVFlMRV9JRCIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwiaW5wdXRTdHlsZSIsImlucHV0TWFwU3R5bGUiLCJsb2FkQ3VzdG9tTWFwU3R5bGUiLCJfb25BZGRDdXN0b21NYXBTdHlsZSIsInN0eWxlIiwiU0FWRV9NQVBfSUQiLCJtYXBJbmZvIiwic2V0TWFwSW5mbyIsIk9WRVJXUklURV9NQVBfSUQiLCJfb25PdmVyd3JpdGVNYXAiLCJTSEFSRV9NQVBfSUQiLCJfb25TaGFyZU1hcFVybCIsIl9vbkNsb3NlU2F2ZU1hcCIsIkJvb2xlYW4iLCJjb25jYXQiLCJDb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBU0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FB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QUN1SixNQUFiLENBQW9CN0QsVUFBVSxDQUFDUyxRQUEvQjtBQUxaLFlBT0dWLFFBUEgsQ0FEYSxHQVVYLElBVko7QUFXRDtBQUNEOztBQWxYc0M7QUFBQTtBQUFBLElBRVgrRCxnQkFGVzs7QUFxWHhDLFNBQU8vSCxjQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7Y3NzfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC5nZXQnO1xuaW1wb3J0IGRvY3VtZW50IGZyb20gJ2dsb2JhbC9kb2N1bWVudCc7XG5cbmltcG9ydCBNb2RhbERpYWxvZ0ZhY3RvcnkgZnJvbSAnLi9tb2RhbHMvbW9kYWwtZGlhbG9nJztcbmltcG9ydCB7ZXhwb3J0SHRtbCwgZXhwb3J0TWFwLCBleHBvcnRKc29uLCBleHBvcnRJbWFnZX0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge1xuICBleHBvcnREYXRhLFxuICBnZXRGaWxlRm9ybWF0TmFtZXMsXG4gIGdldEZpbGVFeHRlbnNpb25zLFxuICBNYXBTdHlsZSxcbiAgUHJvdmlkZXJTdGF0ZVxufSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcblxuLy8gbW9kYWxzXG5pbXBvcnQgRGVsZXRlRGF0YXNldE1vZGFsRmFjdG9yeSBmcm9tICcuL21vZGFscy9kZWxldGUtZGF0YS1tb2RhbCc7XG5pbXBvcnQgT3ZlcldyaXRlTWFwTW9kYWxGYWN0b3J5IGZyb20gJy4vbW9kYWxzL292ZXJ3cml0ZS1tYXAtbW9kYWwnO1xuaW1wb3J0IERhdGFUYWJsZU1vZGFsRmFjdG9yeSBmcm9tICcuL21vZGFscy9kYXRhLXRhYmxlLW1vZGFsJztcbmltcG9ydCBMb2FkRGF0YU1vZGFsRmFjdG9yeSBmcm9tICcuL21vZGFscy9sb2FkLWRhdGEtbW9kYWwnO1xuaW1wb3J0IEV4cG9ydEltYWdlTW9kYWxGYWN0b3J5IGZyb20gJy4vbW9kYWxzL2V4cG9ydC1pbWFnZS1tb2RhbCc7XG5pbXBvcnQgRXhwb3J0RGF0YU1vZGFsRmFjdG9yeSBmcm9tICcuL21vZGFscy9leHBvcnQtZGF0YS1tb2RhbCc7XG5pbXBvcnQgRXhwb3J0TWFwTW9kYWxGYWN0b3J5IGZyb20gJy4vbW9kYWxzL2V4cG9ydC1tYXAtbW9kYWwvZXhwb3J0LW1hcC1tb2RhbCc7XG5pbXBvcnQgQWRkTWFwU3R5bGVNb2RhbEZhY3RvcnkgZnJvbSAnLi9tb2RhbHMvYWRkLW1hcC1zdHlsZS1tb2RhbCc7XG5pbXBvcnQgU2F2ZU1hcE1vZGFsRmFjdG9yeSBmcm9tICcuL21vZGFscy9zYXZlLW1hcC1tb2RhbCc7XG5pbXBvcnQgU2hhcmVNYXBNb2RhbEZhY3RvcnkgZnJvbSAnLi9tb2RhbHMvc2hhcmUtbWFwLW1vZGFsJztcblxuLy8gQnJlYWtwb2ludHNcbmltcG9ydCB7bWVkaWF9IGZyb20gJ0BrZXBsZXIuZ2wvc3R5bGVzJztcblxuLy8gVGVtcGxhdGVcbmltcG9ydCB7XG4gIEVYUE9SVF9EQVRBX1RZUEVfT1BUSU9OUyxcbiAgRVhQT1JUX01BUF9GT1JNQVRTLFxuICBLZXlFdmVudCxcbiAgQUREX0RBVEFfSUQsXG4gIERBVEFfVEFCTEVfSUQsXG4gIERFTEVURV9EQVRBX0lELFxuICBFWFBPUlRfREFUQV9JRCxcbiAgRVhQT1JUX0lNQUdFX0lELFxuICBFWFBPUlRfTUFQX0lELFxuICBBRERfTUFQX1NUWUxFX0lELFxuICBTQVZFX01BUF9JRCxcbiAgU0hBUkVfTUFQX0lELFxuICBPVkVSV1JJVEVfTUFQX0lEXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuaW1wb3J0IHtNYXBTdGF0ZSwgVWlTdGF0ZSwgT25TdWNjZXNzQ2FsbEJhY2ssIE9uRXJyb3JDYWxsQmFja30gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7XG4gIFZpc1N0YXRlQWN0aW9ucyxcbiAgVUlTdGF0ZUFjdGlvbnMsXG4gIE1hcFN0eWxlQWN0aW9ucyxcbiAgUHJvdmlkZXJBY3Rpb25zXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge01vZGFsRGlhbG9nUHJvcHN9IGZyb20gJy4vY29tbW9uL21vZGFsJztcbmltcG9ydCB7UHJvdmlkZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvY2xvdWQtcHJvdmlkZXJzJztcbmltcG9ydCB7ZmluZERPTU5vZGV9IGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQge1Zpc1N0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3NjaGVtYXMnO1xuXG5jb25zdCBEYXRhVGFibGVNb2RhbFN0eWxlID0gY3NzYFxuICB0b3A6IDcwcHg7XG4gIHBhZGRpbmc6IDA7XG4gIHdpZHRoOiA5MHZ3O1xuICBtYXgtd2lkdGg6IDkwdnc7XG5cbiAgJHttZWRpYS5wb3J0YWJsZWBcbiAgICBwYWRkaW5nOiAwO1xuICBgfSAke21lZGlhLnBhbG1gXG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgYH07XG5gO1xuY29uc3Qgc21hbGxNb2RhbENzcyA9IGNzc2BcbiAgd2lkdGg6IDQwJTtcbiAgcGFkZGluZzogNDBweCA0MHB4IDMycHggNDBweDtcbmA7XG5cbmNvbnN0IExvYWREYXRhTW9kYWxTdHlsZSA9IGNzc2BcbiAgdG9wOiA2MHB4O1xuYDtcblxuY29uc3QgRGVmYXVsdFN0eWxlID0gY3NzYFxuICBtYXgtd2lkdGg6IDk2MHB4O1xuYDtcblxuZXhwb3J0IHR5cGUgTW9kYWxDb250YWluZXJQcm9wcyA9IHtcbiAgYXBwTmFtZTogc3RyaW5nO1xuICByb290Tm9kZTogUmVhY3QuUmVhY3RJbnN0YW5jZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNvbnRhaW5lclc6IG51bWJlcjtcbiAgY29udGFpbmVySDogbnVtYmVyO1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RyaW5nO1xuICBtYXBib3hBcGlVcmw/OiBzdHJpbmc7XG4gIG1hcFN0YXRlOiBNYXBTdGF0ZTtcbiAgbWFwU3R5bGU6IE1hcFN0eWxlO1xuICB1aVN0YXRlOiBVaVN0YXRlO1xuICB2aXNTdGF0ZTogVmlzU3RhdGU7XG4gIHByb3ZpZGVyU3RhdGU6IFByb3ZpZGVyU3RhdGU7XG4gIHZpc1N0YXRlQWN0aW9uczogdHlwZW9mIFZpc1N0YXRlQWN0aW9ucztcbiAgdWlTdGF0ZUFjdGlvbnM6IHR5cGVvZiBVSVN0YXRlQWN0aW9ucztcbiAgbWFwU3R5bGVBY3Rpb25zOiB0eXBlb2YgTWFwU3R5bGVBY3Rpb25zO1xuICBwcm92aWRlckFjdGlvbnM6IHR5cGVvZiBQcm92aWRlckFjdGlvbnM7XG4gIG9uU2F2ZVRvU3RvcmFnZT86ICgpID0+IHZvaWQ7XG4gIGNsb3VkUHJvdmlkZXJzOiBQcm92aWRlcltdO1xuICBvbkxvYWRDbG91ZE1hcFN1Y2Nlc3M/OiBPblN1Y2Nlc3NDYWxsQmFjaztcbiAgb25Mb2FkQ2xvdWRNYXBFcnJvcj86IE9uRXJyb3JDYWxsQmFjaztcbiAgb25FeHBvcnRUb0Nsb3VkU3VjY2Vzcz86IE9uU3VjY2Vzc0NhbGxCYWNrO1xuICBvbkV4cG9ydFRvQ2xvdWRFcnJvcj86IE9uRXJyb3JDYWxsQmFjaztcbn07XG5cbk1vZGFsQ29udGFpbmVyRmFjdG9yeS5kZXBzID0gW1xuICBEZWxldGVEYXRhc2V0TW9kYWxGYWN0b3J5LFxuICBPdmVyV3JpdGVNYXBNb2RhbEZhY3RvcnksXG4gIERhdGFUYWJsZU1vZGFsRmFjdG9yeSxcbiAgTG9hZERhdGFNb2RhbEZhY3RvcnksXG4gIEV4cG9ydEltYWdlTW9kYWxGYWN0b3J5LFxuICBFeHBvcnREYXRhTW9kYWxGYWN0b3J5LFxuICBFeHBvcnRNYXBNb2RhbEZhY3RvcnksXG4gIEFkZE1hcFN0eWxlTW9kYWxGYWN0b3J5LFxuICBNb2RhbERpYWxvZ0ZhY3RvcnksXG4gIFNhdmVNYXBNb2RhbEZhY3RvcnksXG4gIFNoYXJlTWFwTW9kYWxGYWN0b3J5XG5dO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNb2RhbENvbnRhaW5lckZhY3RvcnkoXG4gIERlbGV0ZURhdGFzZXRNb2RhbDogUmV0dXJuVHlwZTx0eXBlb2YgRGVsZXRlRGF0YXNldE1vZGFsRmFjdG9yeT4sXG4gIE92ZXJXcml0ZU1hcE1vZGFsOiBSZXR1cm5UeXBlPHR5cGVvZiBPdmVyV3JpdGVNYXBNb2RhbEZhY3Rvcnk+LFxuICBEYXRhVGFibGVNb2RhbDogUmV0dXJuVHlwZTx0eXBlb2YgRGF0YVRhYmxlTW9kYWxGYWN0b3J5PixcbiAgTG9hZERhdGFNb2RhbDogUmV0dXJuVHlwZTx0eXBlb2YgTG9hZERhdGFNb2RhbEZhY3Rvcnk+LFxuICBFeHBvcnRJbWFnZU1vZGFsOiBSZXR1cm5UeXBlPHR5cGVvZiBFeHBvcnRJbWFnZU1vZGFsRmFjdG9yeT4sXG4gIEV4cG9ydERhdGFNb2RhbDogUmV0dXJuVHlwZTx0eXBlb2YgRXhwb3J0RGF0YU1vZGFsRmFjdG9yeT4sXG4gIEV4cG9ydE1hcE1vZGFsOiBSZXR1cm5UeXBlPHR5cGVvZiBFeHBvcnRNYXBNb2RhbEZhY3Rvcnk+LFxuICBBZGRNYXBTdHlsZU1vZGFsOiBSZXR1cm5UeXBlPHR5cGVvZiBBZGRNYXBTdHlsZU1vZGFsRmFjdG9yeT4sXG4gIE1vZGFsRGlhbG9nOiBSZXR1cm5UeXBlPHR5cGVvZiBNb2RhbERpYWxvZ0ZhY3Rvcnk+LFxuICBTYXZlTWFwTW9kYWw6IFJldHVyblR5cGU8dHlwZW9mIFNhdmVNYXBNb2RhbEZhY3Rvcnk+LFxuICBTaGFyZU1hcE1vZGFsOiBSZXR1cm5UeXBlPHR5cGVvZiBTaGFyZU1hcE1vZGFsRmFjdG9yeT5cbik6IFJlYWN0LkVsZW1lbnRUeXBlPE1vZGFsQ29udGFpbmVyUHJvcHM+IHtcbiAgLyoqIEBhdWdtZW50cyBSZWFjdC5Db21wb25lbnQ8TW9kYWxDb250YWluZXJQcm9wcz4gKi9cbiAgY2xhc3MgTW9kYWxDb250YWluZXIgZXh0ZW5kcyBDb21wb25lbnQ8TW9kYWxDb250YWluZXJQcm9wcz4ge1xuICAgIC8vIFRPRE8gLSByZW1vdmUgd2hlbiBwcm9wIHR5cGVzIGFyZSBmdWxseSBleHBvcnRlZFxuICAgIGNvbXBvbmVudERpZE1vdW50ID0gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLl9vbktleVVwKTtcbiAgICB9O1xuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLl9vbktleVVwKTtcbiAgICB9XG5cbiAgICBfb25LZXlVcCA9IGV2ZW50ID0+IHtcbiAgICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xuICAgICAgaWYgKGtleUNvZGUgPT09IEtleUV2ZW50LkRPTV9WS19FU0NBUEUpIHtcbiAgICAgICAgdGhpcy5fY2xvc2VNb2RhbCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfY2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICAgIHRoaXMucHJvcHMudWlTdGF0ZUFjdGlvbnMudG9nZ2xlTW9kYWwobnVsbCk7XG4gICAgfTtcblxuICAgIF9kZWxldGVEYXRhc2V0ID0ga2V5ID0+IHtcbiAgICAgIHRoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLnJlbW92ZURhdGFzZXQoa2V5KTtcbiAgICAgIHRoaXMuX2Nsb3NlTW9kYWwoKTtcbiAgICB9O1xuXG4gICAgX29uQWRkQ3VzdG9tTWFwU3R5bGUgPSAoKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLm1hcFN0eWxlQWN0aW9ucy5hZGRDdXN0b21NYXBTdHlsZSgpO1xuICAgICAgdGhpcy5fY2xvc2VNb2RhbCgpO1xuICAgIH07XG5cbiAgICBfb25GaWxlVXBsb2FkID0gZmlsZUxpc3QgPT4ge1xuICAgICAgdGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMubG9hZEZpbGVzKGZpbGVMaXN0KTtcbiAgICB9O1xuXG4gICAgX29uRXhwb3J0SW1hZ2UgPSAoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMucHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZS5wcm9jZXNzaW5nKSB7XG4gICAgICAgIGV4cG9ydEltYWdlKHRoaXMucHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZSwgYCR7dGhpcy5wcm9wcy5hcHBOYW1lfS5wbmdgKTtcbiAgICAgICAgdGhpcy5wcm9wcy51aVN0YXRlQWN0aW9ucy5jbGVhbnVwRXhwb3J0SW1hZ2UoKTtcbiAgICAgICAgdGhpcy5fY2xvc2VNb2RhbCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfb25FeHBvcnREYXRhID0gKCkgPT4ge1xuICAgICAgZXhwb3J0RGF0YSh0aGlzLnByb3BzLCB0aGlzLnByb3BzLnVpU3RhdGUuZXhwb3J0RGF0YSk7XG4gICAgICB0aGlzLl9jbG9zZU1vZGFsKCk7XG4gICAgfTtcblxuICAgIF9vbkV4cG9ydE1hcCA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHt1aVN0YXRlfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCB7Zm9ybWF0fSA9IHVpU3RhdGUuZXhwb3J0TWFwO1xuICAgICAgKGZvcm1hdCA9PT0gRVhQT1JUX01BUF9GT1JNQVRTLkhUTUwgPyBleHBvcnRIdG1sIDogZXhwb3J0SnNvbikoXG4gICAgICAgIHRoaXMucHJvcHMsXG4gICAgICAgIHRoaXMucHJvcHMudWlTdGF0ZS5leHBvcnRNYXBbZm9ybWF0XSB8fCB7fVxuICAgICAgKTtcbiAgICAgIHRoaXMuX2Nsb3NlTW9kYWwoKTtcbiAgICB9O1xuXG4gICAgX2V4cG9ydEZpbGVUb0Nsb3VkID0gKHtwcm92aWRlciwgaXNQdWJsaWMsIG92ZXJ3cml0ZSwgY2xvc2VNb2RhbH0pID0+IHtcbiAgICAgIGNvbnN0IHRvU2F2ZSA9IGV4cG9ydE1hcCh0aGlzLnByb3BzKTtcblxuICAgICAgdGhpcy5wcm9wcy5wcm92aWRlckFjdGlvbnMuZXhwb3J0RmlsZVRvQ2xvdWQoe1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIG1hcERhdGE6IHRvU2F2ZSxcbiAgICAgICAgcHJvdmlkZXIsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBpc1B1YmxpYyxcbiAgICAgICAgICBvdmVyd3JpdGVcbiAgICAgICAgfSxcbiAgICAgICAgY2xvc2VNb2RhbCxcbiAgICAgICAgb25TdWNjZXNzOiB0aGlzLnByb3BzLm9uRXhwb3J0VG9DbG91ZFN1Y2Nlc3MsXG4gICAgICAgIG9uRXJyb3I6IHRoaXMucHJvcHMub25FeHBvcnRUb0Nsb3VkRXJyb3JcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfb25TYXZlTWFwID0gKHByb3ZpZGVyLCBvdmVyd3JpdGUgPSBmYWxzZSkgPT4ge1xuICAgICAgdGhpcy5fZXhwb3J0RmlsZVRvQ2xvdWQoe1xuICAgICAgICBwcm92aWRlcixcbiAgICAgICAgaXNQdWJsaWM6IGZhbHNlLFxuICAgICAgICBvdmVyd3JpdGUsXG4gICAgICAgIGNsb3NlTW9kYWw6IHRydWVcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfb25PdmVyd3JpdGVNYXAgPSAoKSA9PiB7XG4gICAgICB0aGlzLl9vblNhdmVNYXAodHJ1ZSk7XG4gICAgfTtcblxuICAgIF9vblNoYXJlTWFwVXJsID0gcHJvdmlkZXIgPT4ge1xuICAgICAgdGhpcy5fZXhwb3J0RmlsZVRvQ2xvdWQoe3Byb3ZpZGVyLCBpc1B1YmxpYzogdHJ1ZSwgb3ZlcndyaXRlOiBmYWxzZSwgY2xvc2VNb2RhbDogZmFsc2V9KTtcbiAgICB9O1xuXG4gICAgX29uQ2xvc2VTYXZlTWFwID0gKCkgPT4ge1xuICAgICAgdGhpcy5wcm9wcy5wcm92aWRlckFjdGlvbnMucmVzZXRQcm92aWRlclN0YXR1cygpO1xuICAgICAgdGhpcy5fY2xvc2VNb2RhbCgpO1xuICAgIH07XG5cbiAgICBfb25Mb2FkQ2xvdWRNYXAgPSBwYXlsb2FkID0+IHtcbiAgICAgIHRoaXMucHJvcHMucHJvdmlkZXJBY3Rpb25zLmxvYWRDbG91ZE1hcCh7XG4gICAgICAgIC4uLnBheWxvYWQsXG4gICAgICAgIG9uU3VjY2VzczogdGhpcy5wcm9wcy5vbkxvYWRDbG91ZE1hcFN1Y2Nlc3MsXG4gICAgICAgIG9uRXJyb3I6IHRoaXMucHJvcHMub25Mb2FkQ2xvdWRNYXBFcnJvclxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGNvbnRhaW5lclcsXG4gICAgICAgIGNvbnRhaW5lckgsXG4gICAgICAgIG1hcFN0eWxlLFxuICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgdWlTdGF0ZSxcbiAgICAgICAgdmlzU3RhdGUsXG4gICAgICAgIHJvb3ROb2RlLFxuICAgICAgICB2aXNTdGF0ZUFjdGlvbnMsXG4gICAgICAgIHVpU3RhdGVBY3Rpb25zLFxuICAgICAgICBwcm92aWRlclN0YXRlXG4gICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHtjdXJyZW50TW9kYWwsIGRhdGFzZXRLZXlUb1JlbW92ZX0gPSB1aVN0YXRlO1xuICAgICAgY29uc3Qge2RhdGFzZXRzLCBsYXllcnMsIGVkaXRpbmdEYXRhc2V0fSA9IHZpc1N0YXRlO1xuXG4gICAgICBsZXQgdGVtcGxhdGU6IEpTWC5FbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgICBsZXQgbW9kYWxQcm9wczogUGFydGlhbDxNb2RhbERpYWxvZ1Byb3BzPiA9IHt9O1xuXG4gICAgICAvLyBUT0RPIC0gY3VycmVudE1vZGFsIGlzIGEgc3RyaW5nXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAoY3VycmVudE1vZGFsICYmIGN1cnJlbnRNb2RhbC5pZCAmJiBjdXJyZW50TW9kYWwudGVtcGxhdGUpIHtcbiAgICAgICAgLy8gaWYgY3VycmVudE1kb2FsIHRlbXBsYXRlIGlzIGFscmVhZHkgcHJvdmlkZWRcbiAgICAgICAgLy8gVE9ETzogbmVlZCB0byBjaGVjayB3aGV0aGVyIHRlbXBsYXRlIGlzIHZhbGlkXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGVtcGxhdGUgPSA8Y3VycmVudE1vZGFsLnRlbXBsYXRlIC8+O1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIG1vZGFsUHJvcHMgPSBjdXJyZW50TW9kYWwubW9kYWxQcm9wcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAoY3VycmVudE1vZGFsKSB7XG4gICAgICAgICAgY2FzZSBEQVRBX1RBQkxFX0lEOlxuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBjb250YWluZXJXICogMC45O1xuICAgICAgICAgICAgdGVtcGxhdGUgPSAoXG4gICAgICAgICAgICAgIDxEYXRhVGFibGVNb2RhbFxuICAgICAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgICAgICBkYXRhSWQ9e2VkaXRpbmdEYXRhc2V0fVxuICAgICAgICAgICAgICAgIHNob3dEYXRhc2V0VGFibGU9e3Zpc1N0YXRlQWN0aW9ucy5zaG93RGF0YXNldFRhYmxlfVxuICAgICAgICAgICAgICAgIHNvcnRUYWJsZUNvbHVtbj17dmlzU3RhdGVBY3Rpb25zLnNvcnRUYWJsZUNvbHVtbn1cbiAgICAgICAgICAgICAgICBwaW5UYWJsZUNvbHVtbj17dmlzU3RhdGVBY3Rpb25zLnBpblRhYmxlQ29sdW1ufVxuICAgICAgICAgICAgICAgIGNvcHlUYWJsZUNvbHVtbj17dmlzU3RhdGVBY3Rpb25zLmNvcHlUYWJsZUNvbHVtbn1cbiAgICAgICAgICAgICAgICBzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0PXt2aXNTdGF0ZUFjdGlvbnMuc2V0Q29sdW1uRGlzcGxheUZvcm1hdH1cbiAgICAgICAgICAgICAgICB1aVN0YXRlQWN0aW9ucz17dWlTdGF0ZUFjdGlvbnN9XG4gICAgICAgICAgICAgICAgdWlTdGF0ZT17dWlTdGF0ZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IHdlIG5lZWQgdG8gbWFrZSB0aGlzIHdpZHRoIGNvbnNpc3RlbnQgd2l0aCB0aGUgY3NzIHJ1bGUgZGVmaW5lZCBtb2RhbC5qczozMiBtYXgtd2lkdGg6IDcwdndcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgLy8gVE9ETyBmaXggdGhpcyBhZnRlciBhZGQgdHlwZXMgdG8gVGhlbWVcbiAgICAgICAgICAgIG1vZGFsUHJvcHMuY3NzU3R5bGUgPSBjc3NgXG4gICAgICAgICAgICAgICR7RGF0YVRhYmxlTW9kYWxTdHlsZX07XG4gICAgICAgICAgICAgICR7bWVkaWEucGFsbWBcbiAgICAgICAgICAgICAgICB3aWR0aDogJHt3aWR0aH1weDtcbiAgICAgICAgICAgICAgYH07XG4gICAgICAgICAgICBgO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBERUxFVEVfREFUQV9JRDpcbiAgICAgICAgICAgIC8vIHZhbGlkYXRlIG9wdGlvbnNcbiAgICAgICAgICAgIGlmIChkYXRhc2V0S2V5VG9SZW1vdmUgJiYgZGF0YXNldHMgJiYgZGF0YXNldHNbZGF0YXNldEtleVRvUmVtb3ZlXSkge1xuICAgICAgICAgICAgICB0ZW1wbGF0ZSA9IChcbiAgICAgICAgICAgICAgICA8RGVsZXRlRGF0YXNldE1vZGFsIGRhdGFzZXQ9e2RhdGFzZXRzW2RhdGFzZXRLZXlUb1JlbW92ZV19IGxheWVycz17bGF5ZXJzfSAvPlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBtb2RhbFByb3BzID0ge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnbW9kYWwudGl0bGUuZGVsZXRlRGF0YXNldCcsXG4gICAgICAgICAgICAgICAgY3NzU3R5bGU6IHNtYWxsTW9kYWxDc3MsXG4gICAgICAgICAgICAgICAgZm9vdGVyOiB0cnVlLFxuICAgICAgICAgICAgICAgIG9uQ29uZmlybTogKCkgPT4gdGhpcy5fZGVsZXRlRGF0YXNldChkYXRhc2V0S2V5VG9SZW1vdmUpLFxuICAgICAgICAgICAgICAgIG9uQ2FuY2VsOiB0aGlzLl9jbG9zZU1vZGFsLFxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b246IHtcbiAgICAgICAgICAgICAgICAgIG5lZ2F0aXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgbGFyZ2U6IHRydWUsXG4gICAgICAgICAgICAgICAgICBjaGlsZHJlbjogJ21vZGFsLmJ1dHRvbi5kZWxldGUnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7IC8vIGluIGNhc2Ugd2UgYWRkIGEgbmV3IGNhc2UgYWZ0ZXIgdGhpcyBvbmVcbiAgICAgICAgICBjYXNlIEFERF9EQVRBX0lEOlxuICAgICAgICAgICAgdGVtcGxhdGUgPSAoXG4gICAgICAgICAgICAgIDxMb2FkRGF0YU1vZGFsXG4gICAgICAgICAgICAgICAgey4uLnByb3ZpZGVyU3RhdGV9XG4gICAgICAgICAgICAgICAgb25DbG9zZT17dGhpcy5fY2xvc2VNb2RhbH1cbiAgICAgICAgICAgICAgICBvbkZpbGVVcGxvYWQ9e3RoaXMuX29uRmlsZVVwbG9hZH1cbiAgICAgICAgICAgICAgICBvbkxvYWRDbG91ZE1hcD17dGhpcy5fb25Mb2FkQ2xvdWRNYXB9XG4gICAgICAgICAgICAgICAgbG9hZEZpbGVzPXt1aVN0YXRlLmxvYWRGaWxlc31cbiAgICAgICAgICAgICAgICBmaWxlTG9hZGluZz17dmlzU3RhdGUuZmlsZUxvYWRpbmd9XG4gICAgICAgICAgICAgICAgZmlsZUxvYWRpbmdQcm9ncmVzcz17dmlzU3RhdGUuZmlsZUxvYWRpbmdQcm9ncmVzc31cbiAgICAgICAgICAgICAgICBmaWxlRm9ybWF0TmFtZXM9e2dldEZpbGVGb3JtYXROYW1lcyh0aGlzLnByb3BzLnZpc1N0YXRlKX1cbiAgICAgICAgICAgICAgICBmaWxlRXh0ZW5zaW9ucz17Z2V0RmlsZUV4dGVuc2lvbnModGhpcy5wcm9wcy52aXNTdGF0ZSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbW9kYWxQcm9wcyA9IHtcbiAgICAgICAgICAgICAgdGl0bGU6ICdtb2RhbC50aXRsZS5hZGREYXRhVG9NYXAnLFxuICAgICAgICAgICAgICBjc3NTdHlsZTogTG9hZERhdGFNb2RhbFN0eWxlLFxuICAgICAgICAgICAgICBmb290ZXI6IGZhbHNlLFxuICAgICAgICAgICAgICBvbkNvbmZpcm06IHRoaXMuX2Nsb3NlTW9kYWxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIEVYUE9SVF9JTUFHRV9JRDpcbiAgICAgICAgICAgIHRlbXBsYXRlID0gKFxuICAgICAgICAgICAgICA8RXhwb3J0SW1hZ2VNb2RhbFxuICAgICAgICAgICAgICAgIGV4cG9ydEltYWdlPXt1aVN0YXRlLmV4cG9ydEltYWdlfVxuICAgICAgICAgICAgICAgIG1hcFc9e2NvbnRhaW5lcld9XG4gICAgICAgICAgICAgICAgbWFwSD17Y29udGFpbmVySH1cbiAgICAgICAgICAgICAgICBvblVwZGF0ZUltYWdlU2V0dGluZz17dWlTdGF0ZUFjdGlvbnMuc2V0RXhwb3J0SW1hZ2VTZXR0aW5nfVxuICAgICAgICAgICAgICAgIGNsZWFudXBFeHBvcnRJbWFnZT17dWlTdGF0ZUFjdGlvbnMuY2xlYW51cEV4cG9ydEltYWdlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG1vZGFsUHJvcHMgPSB7XG4gICAgICAgICAgICAgIHRpdGxlOiAnbW9kYWwudGl0bGUuZXhwb3J0SW1hZ2UnLFxuICAgICAgICAgICAgICBjc3NTdHlsZTogJycsXG4gICAgICAgICAgICAgIGZvb3RlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgb25DYW5jZWw6IHRoaXMuX2Nsb3NlTW9kYWwsXG4gICAgICAgICAgICAgIG9uQ29uZmlybTogdGhpcy5fb25FeHBvcnRJbWFnZSxcbiAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbjoge1xuICAgICAgICAgICAgICAgIGxhcmdlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB1aVN0YXRlLmV4cG9ydEltYWdlLnByb2Nlc3NpbmcsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46ICdtb2RhbC5idXR0b24uZG93bmxvYWQnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIEVYUE9SVF9EQVRBX0lEOlxuICAgICAgICAgICAgdGVtcGxhdGUgPSAoXG4gICAgICAgICAgICAgIDxFeHBvcnREYXRhTW9kYWxcbiAgICAgICAgICAgICAgICB7Li4udWlTdGF0ZS5leHBvcnREYXRhfVxuICAgICAgICAgICAgICAgIHN1cHBvcnRlZERhdGFUeXBlcz17RVhQT1JUX0RBVEFfVFlQRV9PUFRJT05TfVxuICAgICAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgICAgICBhcHBseUNQVUZpbHRlcj17dGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMuYXBwbHlDUFVGaWx0ZXJ9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2VFeHBvcnREYXRhVHlwZT17dWlTdGF0ZUFjdGlvbnMuc2V0RXhwb3J0RGF0YVR5cGV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2VFeHBvcnRTZWxlY3RlZERhdGFzZXQ9e3VpU3RhdGVBY3Rpb25zLnNldEV4cG9ydFNlbGVjdGVkRGF0YXNldH1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZUV4cG9ydEZpbHRlcmVkPXt1aVN0YXRlQWN0aW9ucy5zZXRFeHBvcnRGaWx0ZXJlZH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBtb2RhbFByb3BzID0ge1xuICAgICAgICAgICAgICB0aXRsZTogJ21vZGFsLnRpdGxlLmV4cG9ydERhdGEnLFxuICAgICAgICAgICAgICBjc3NTdHlsZTogJycsXG4gICAgICAgICAgICAgIGZvb3RlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgb25DYW5jZWw6IHRoaXMuX2Nsb3NlTW9kYWwsXG4gICAgICAgICAgICAgIG9uQ29uZmlybTogdGhpcy5fb25FeHBvcnREYXRhLFxuICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiB7XG4gICAgICAgICAgICAgICAgbGFyZ2U6IHRydWUsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46ICdtb2RhbC5idXR0b24uZXhwb3J0J1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBFWFBPUlRfTUFQX0lEOlxuICAgICAgICAgICAgY29uc3Qga2VwbGVyR2xDb25maWcgPSB2aXNTdGF0ZS5zY2hlbWEuZ2V0Q29uZmlnVG9TYXZlKHtcbiAgICAgICAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgICAgICAgIHZpc1N0YXRlLFxuICAgICAgICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgICAgICAgdWlTdGF0ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0ZW1wbGF0ZSA9IChcbiAgICAgICAgICAgICAgPEV4cG9ydE1hcE1vZGFsXG4gICAgICAgICAgICAgICAgY29uZmlnPXtrZXBsZXJHbENvbmZpZ31cbiAgICAgICAgICAgICAgICBvcHRpb25zPXt1aVN0YXRlLmV4cG9ydE1hcH1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZUV4cG9ydE1hcEZvcm1hdD17dWlTdGF0ZUFjdGlvbnMuc2V0RXhwb3J0TWFwRm9ybWF0fVxuICAgICAgICAgICAgICAgIG9uRWRpdFVzZXJNYXBib3hBY2Nlc3NUb2tlbj17dWlTdGF0ZUFjdGlvbnMuc2V0VXNlck1hcGJveEFjY2Vzc1Rva2VufVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlRXhwb3J0TWFwSFRNTE1vZGU9e3VpU3RhdGVBY3Rpb25zLnNldEV4cG9ydEhUTUxNYXBNb2RlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG1vZGFsUHJvcHMgPSB7XG4gICAgICAgICAgICAgIHRpdGxlOiAnbW9kYWwudGl0bGUuZXhwb3J0TWFwJyxcbiAgICAgICAgICAgICAgY3NzU3R5bGU6ICcnLFxuICAgICAgICAgICAgICBmb290ZXI6IHRydWUsXG4gICAgICAgICAgICAgIG9uQ2FuY2VsOiB0aGlzLl9jbG9zZU1vZGFsLFxuICAgICAgICAgICAgICBvbkNvbmZpcm06IHRoaXMuX29uRXhwb3J0TWFwLFxuICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiB7XG4gICAgICAgICAgICAgICAgbGFyZ2U6IHRydWUsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46ICdtb2RhbC5idXR0b24uZXhwb3J0J1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBBRERfTUFQX1NUWUxFX0lEOlxuICAgICAgICAgICAgdGVtcGxhdGUgPSAoXG4gICAgICAgICAgICAgIDxBZGRNYXBTdHlsZU1vZGFsXG4gICAgICAgICAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW49e3RoaXMucHJvcHMubWFwYm94QXBpQWNjZXNzVG9rZW59XG4gICAgICAgICAgICAgICAgbWFwYm94QXBpVXJsPXt0aGlzLnByb3BzLm1hcGJveEFwaVVybH1cbiAgICAgICAgICAgICAgICBtYXBTdGF0ZT17dGhpcy5wcm9wcy5tYXBTdGF0ZX1cbiAgICAgICAgICAgICAgICBpbnB1dFN0eWxlPXttYXBTdHlsZS5pbnB1dFN0eWxlfVxuICAgICAgICAgICAgICAgIGlucHV0TWFwU3R5bGU9e3RoaXMucHJvcHMubWFwU3R5bGVBY3Rpb25zLmlucHV0TWFwU3R5bGV9XG4gICAgICAgICAgICAgICAgbG9hZEN1c3RvbU1hcFN0eWxlPXt0aGlzLnByb3BzLm1hcFN0eWxlQWN0aW9ucy5sb2FkQ3VzdG9tTWFwU3R5bGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbW9kYWxQcm9wcyA9IHtcbiAgICAgICAgICAgICAgdGl0bGU6ICdtb2RhbC50aXRsZS5hZGRDdXN0b21NYXBib3hTdHlsZScsXG4gICAgICAgICAgICAgIGNzc1N0eWxlOiAnJyxcbiAgICAgICAgICAgICAgZm9vdGVyOiB0cnVlLFxuICAgICAgICAgICAgICBvbkNhbmNlbDogdGhpcy5fY2xvc2VNb2RhbCxcbiAgICAgICAgICAgICAgb25Db25maXJtOiB0aGlzLl9vbkFkZEN1c3RvbU1hcFN0eWxlLFxuICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiB7XG4gICAgICAgICAgICAgICAgbGFyZ2U6IHRydWUsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICFtYXBTdHlsZS5pbnB1dFN0eWxlLnN0eWxlLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAnbW9kYWwuYnV0dG9uLmFkZFN0eWxlJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBTQVZFX01BUF9JRDpcbiAgICAgICAgICAgIHRlbXBsYXRlID0gKFxuICAgICAgICAgICAgICA8U2F2ZU1hcE1vZGFsXG4gICAgICAgICAgICAgICAgey4uLnByb3ZpZGVyU3RhdGV9XG4gICAgICAgICAgICAgICAgZXhwb3J0SW1hZ2U9e3VpU3RhdGUuZXhwb3J0SW1hZ2V9XG4gICAgICAgICAgICAgICAgbWFwSW5mbz17dmlzU3RhdGUubWFwSW5mb31cbiAgICAgICAgICAgICAgICBvblNldE1hcEluZm89e3Zpc1N0YXRlQWN0aW9ucy5zZXRNYXBJbmZvfVxuICAgICAgICAgICAgICAgIGNsZWFudXBFeHBvcnRJbWFnZT17dWlTdGF0ZUFjdGlvbnMuY2xlYW51cEV4cG9ydEltYWdlfVxuICAgICAgICAgICAgICAgIG9uVXBkYXRlSW1hZ2VTZXR0aW5nPXt1aVN0YXRlQWN0aW9ucy5zZXRFeHBvcnRJbWFnZVNldHRpbmd9XG4gICAgICAgICAgICAgICAgb25DYW5jZWw9e3RoaXMuX2Nsb3NlTW9kYWx9XG4gICAgICAgICAgICAgICAgb25Db25maXJtPXtwcm92aWRlciA9PiB0aGlzLl9vblNhdmVNYXAocHJvdmlkZXIsIGZhbHNlKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBtb2RhbFByb3BzID0ge1xuICAgICAgICAgICAgICB0aXRsZTogJ21vZGFsLnRpdGxlLnNhdmVNYXAnLFxuICAgICAgICAgICAgICBjc3NTdHlsZTogJycsXG4gICAgICAgICAgICAgIGZvb3RlcjogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIE9WRVJXUklURV9NQVBfSUQ6XG4gICAgICAgICAgICB0ZW1wbGF0ZSA9IChcbiAgICAgICAgICAgICAgPE92ZXJXcml0ZU1hcE1vZGFsXG4gICAgICAgICAgICAgICAgey4uLnByb3ZpZGVyU3RhdGV9XG4gICAgICAgICAgICAgICAgdGl0bGU9e2dldCh2aXNTdGF0ZSwgWydtYXBJbmZvJywgJ3RpdGxlJ10pfVxuICAgICAgICAgICAgICAgIG9uVXBkYXRlSW1hZ2VTZXR0aW5nPXt1aVN0YXRlQWN0aW9ucy5zZXRFeHBvcnRJbWFnZVNldHRpbmd9XG4gICAgICAgICAgICAgICAgY2xlYW51cEV4cG9ydEltYWdlPXt1aVN0YXRlQWN0aW9ucy5jbGVhbnVwRXhwb3J0SW1hZ2V9XG4gICAgICAgICAgICAgICAgb25Db25maXJtPXt0aGlzLl9vbk92ZXJ3cml0ZU1hcH1cbiAgICAgICAgICAgICAgICBvbkNhbmNlbD17dGhpcy5fY2xvc2VNb2RhbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBtb2RhbFByb3BzID0ge1xuICAgICAgICAgICAgICB0aXRsZTogJ092ZXJ3cml0ZSBFeGlzdGluZyBGaWxlPycsXG4gICAgICAgICAgICAgIGNzc1N0eWxlOiBzbWFsbE1vZGFsQ3NzLFxuICAgICAgICAgICAgICBmb290ZXI6IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBTSEFSRV9NQVBfSUQ6XG4gICAgICAgICAgICB0ZW1wbGF0ZSA9IChcbiAgICAgICAgICAgICAgPFNoYXJlTWFwTW9kYWxcbiAgICAgICAgICAgICAgICB7Li4ucHJvdmlkZXJTdGF0ZX1cbiAgICAgICAgICAgICAgICBvbkV4cG9ydD17dGhpcy5fb25TaGFyZU1hcFVybH1cbiAgICAgICAgICAgICAgICBjbGVhbnVwRXhwb3J0SW1hZ2U9e3VpU3RhdGVBY3Rpb25zLmNsZWFudXBFeHBvcnRJbWFnZX1cbiAgICAgICAgICAgICAgICBvblVwZGF0ZUltYWdlU2V0dGluZz17dWlTdGF0ZUFjdGlvbnMuc2V0RXhwb3J0SW1hZ2VTZXR0aW5nfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG1vZGFsUHJvcHMgPSB7XG4gICAgICAgICAgICAgIHRpdGxlOiAnbW9kYWwudGl0bGUuc2hhcmVVUkwnLFxuICAgICAgICAgICAgICBjc3NTdHlsZTogJycsXG4gICAgICAgICAgICAgIG9uQ2FuY2VsOiB0aGlzLl9vbkNsb3NlU2F2ZU1hcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcm9vdE5vZGUgPyAoXG4gICAgICAgIDxNb2RhbERpYWxvZ1xuICAgICAgICAgIHBhcmVudFNlbGVjdG9yPXsoKSA9PiBmaW5kRE9NTm9kZShyb290Tm9kZSkgYXMgSFRNTEVsZW1lbnR9XG4gICAgICAgICAgaXNPcGVuPXtCb29sZWFuKGN1cnJlbnRNb2RhbCl9XG4gICAgICAgICAgb25DYW5jZWw9e3RoaXMuX2Nsb3NlTW9kYWx9XG4gICAgICAgICAgey4uLm1vZGFsUHJvcHN9XG4gICAgICAgICAgY3NzU3R5bGU9e0RlZmF1bHRTdHlsZS5jb25jYXQobW9kYWxQcm9wcy5jc3NTdHlsZSl9XG4gICAgICAgID5cbiAgICAgICAgICB7dGVtcGxhdGV9XG4gICAgICAgIDwvTW9kYWxEaWFsb2c+XG4gICAgICApIDogbnVsbDtcbiAgICB9XG4gICAgLyogZXNsaW50LWVuYWJsZSBjb21wbGV4aXR5ICovXG4gIH1cblxuICByZXR1cm4gTW9kYWxDb250YWluZXI7XG59XG4iXX0=
|