@kepler.gl/components 3.2.6 → 3.3.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/annotations/annotation-node.d.ts +11 -0
- package/dist/annotations/annotation-node.js +145 -0
- package/dist/annotations/annotation-overlay.d.ts +16 -0
- package/dist/annotations/annotation-overlay.js +166 -0
- package/dist/annotations/annotation-panel.d.ts +24 -0
- package/dist/annotations/annotation-panel.js +362 -0
- package/dist/annotations/annotation-text.d.ts +16 -0
- package/dist/annotations/annotation-text.js +150 -0
- package/dist/annotations/annotation-utils.d.ts +39 -0
- package/dist/annotations/annotation-utils.js +156 -0
- package/dist/annotations/index.d.ts +7 -0
- package/dist/annotations/index.js +53 -0
- package/dist/annotations/lexical-editor/clickable-link-plugin.d.ts +3 -0
- package/dist/annotations/lexical-editor/clickable-link-plugin.js +71 -0
- package/dist/annotations/lexical-editor/floating-link-editor.d.ts +1 -0
- package/dist/annotations/lexical-editor/floating-link-editor.js +194 -0
- package/dist/annotations/lexical-editor/index.d.ts +7 -0
- package/dist/annotations/lexical-editor/index.js +78 -0
- package/dist/annotations/lexical-editor/lexical-constants.d.ts +12 -0
- package/dist/annotations/lexical-editor/lexical-constants.js +22 -0
- package/dist/annotations/lexical-editor/lexical-nodes.d.ts +3 -0
- package/dist/annotations/lexical-editor/lexical-nodes.js +13 -0
- package/dist/annotations/lexical-editor/lexical-rich-text-editor.d.ts +15 -0
- package/dist/annotations/lexical-editor/lexical-rich-text-editor.js +122 -0
- package/dist/annotations/lexical-editor/lexical-theme.d.ts +15 -0
- package/dist/annotations/lexical-editor/lexical-theme.js +25 -0
- package/dist/annotations/lexical-editor/lexical-toolbar.d.ts +7 -0
- package/dist/annotations/lexical-editor/lexical-toolbar.js +293 -0
- package/dist/annotations/lexical-editor/lexical-utils.d.ts +4 -0
- package/dist/annotations/lexical-editor/lexical-utils.js +45 -0
- package/dist/annotations/lexical-editor/use-lexical-toolbar.d.ts +36 -0
- package/dist/annotations/lexical-editor/use-lexical-toolbar.js +253 -0
- package/dist/bottom-widget.d.ts +5 -5
- package/dist/bottom-widget.js +12 -6
- package/dist/common/action-panel.d.ts +3 -3
- package/dist/common/animation-control/animation-control.d.ts +2 -1
- package/dist/common/animation-control/animation-control.js +3 -1
- package/dist/common/animation-control/animation-controller.js +8 -6
- package/dist/common/animation-control/export-video-control.d.ts +9 -0
- package/dist/common/animation-control/export-video-control.js +43 -0
- package/dist/common/animation-control/playback-controls.d.ts +5 -3
- package/dist/common/animation-control/playback-controls.js +7 -4
- package/dist/common/checkbox.d.ts +5 -21
- package/dist/common/checkbox.js +58 -70
- package/dist/common/color-legend.d.ts +4 -4
- package/dist/common/color-legend.js +3 -3
- package/dist/common/column-stats-chart.d.ts +3 -3
- package/dist/common/data-table/button.d.ts +1 -1
- package/dist/common/data-table/canvas.d.ts +0 -1
- package/dist/common/data-table/cell-size.d.ts +2 -2
- package/dist/common/data-table/display-format.d.ts +1 -1
- package/dist/common/data-table/header-cell.d.ts +2 -2
- package/dist/common/data-table/index.d.ts +8 -10
- package/dist/common/data-table/index.js +3 -3
- package/dist/common/data-table/option-dropdown.d.ts +1 -1
- package/dist/common/field-selector.d.ts +5 -5
- package/dist/common/field-token.d.ts +1 -1
- package/dist/common/file-uploader/file-drop.d.ts +1 -1
- package/dist/common/file-uploader/file-upload-progress.d.ts +1 -1
- package/dist/common/file-uploader/file-upload.d.ts +1 -1
- package/dist/common/file-uploader/file-upload.js +4 -4
- package/dist/common/flex-container.d.ts +2 -3
- package/dist/common/histogram-plot.d.ts +1 -1
- package/dist/common/histogram-plot.js +102 -53
- package/dist/common/icon-button.d.ts +16 -16
- package/dist/common/icons/3d-models/airplane.d.ts +14 -0
- package/dist/common/icons/3d-models/airplane.js +104 -0
- package/dist/common/icons/3d-models/bicycle.d.ts +14 -0
- package/dist/common/icons/3d-models/bicycle.js +426 -0
- package/dist/common/icons/3d-models/boeing.d.ts +14 -0
- package/dist/common/icons/3d-models/boeing.js +119 -0
- package/dist/common/icons/3d-models/car.d.ts +14 -0
- package/dist/common/icons/3d-models/car.js +110 -0
- package/dist/common/icons/3d-models/cargoship.d.ts +14 -0
- package/dist/common/icons/3d-models/cargoship.js +246 -0
- package/dist/common/icons/3d-models/evtol.d.ts +14 -0
- package/dist/common/icons/3d-models/evtol.js +134 -0
- package/dist/common/icons/3d-models/glider.d.ts +14 -0
- package/dist/common/icons/3d-models/glider.js +62 -0
- package/dist/common/icons/3d-models/helicopter.d.ts +14 -0
- package/dist/common/icons/3d-models/helicopter.js +110 -0
- package/dist/common/icons/3d-models/scooter.d.ts +14 -0
- package/dist/common/icons/3d-models/scooter.js +159 -0
- package/dist/common/icons/3d-models/semitruck.d.ts +14 -0
- package/dist/common/icons/3d-models/semitruck.js +177 -0
- package/dist/common/icons/3d-models/truck.d.ts +14 -0
- package/dist/common/icons/3d-models/truck.js +122 -0
- package/dist/common/icons/anchor_window.d.ts +1 -8
- package/dist/common/icons/anchor_window.js +17 -10
- package/dist/common/icons/annotation-text.d.ts +9 -0
- package/dist/common/icons/annotation-text.js +56 -0
- package/dist/common/icons/base.d.ts +1 -1
- package/dist/common/icons/close.js +1 -1
- package/dist/common/icons/effects/distance-fog.d.ts +14 -0
- package/dist/common/icons/effects/distance-fog.js +79 -0
- package/dist/common/icons/effects/surface-fog.d.ts +14 -0
- package/dist/common/icons/effects/surface-fog.js +86 -0
- package/dist/common/icons/index.d.ts +3 -0
- package/dist/common/icons/index.js +22 -1
- package/dist/common/item-selector/chickleted-input.d.ts +5 -5
- package/dist/common/item-selector/chickleted-input.js +5 -5
- package/dist/common/item-selector/dropdown-list.d.ts +3 -3
- package/dist/common/item-selector/dropdown-select.d.ts +7 -7
- package/dist/common/item-selector/item-selector.d.ts +2 -2
- package/dist/common/item-selector/typeahead.d.ts +3 -3
- package/dist/common/line-chart.d.ts +4 -1
- package/dist/common/line-chart.js +59 -12
- package/dist/common/loading-spinner.d.ts +2 -2
- package/dist/common/modal.d.ts +5 -5
- package/dist/common/portaled.d.ts +8 -25
- package/dist/common/progress-bar.d.ts +1 -1
- package/dist/common/radius-legend.d.ts +1 -1
- package/dist/common/range-brush.d.ts +1 -1
- package/dist/common/range-plot.d.ts +1 -1
- package/dist/common/range-plot.js +4 -2
- package/dist/common/range-slider.d.ts +2 -0
- package/dist/common/range-slider.js +108 -43
- package/dist/common/slider/mouse-event.d.ts +1 -1
- package/dist/common/slider/slider-bar-handle.d.ts +2 -2
- package/dist/common/slider/slider-handle.d.ts +3 -3
- package/dist/common/slider/slider.d.ts +6 -2
- package/dist/common/slider/slider.js +78 -35
- package/dist/common/styled-components.d.ts +158 -159
- package/dist/common/styled-components.js +2 -2
- package/dist/common/sync-timeline-control.d.ts +3 -3
- package/dist/common/time-range-slider-time-title.d.ts +2 -2
- package/dist/common/time-range-slider-time-title.js +5 -5
- package/dist/common/time-range-slider.d.ts +4 -3
- package/dist/common/time-range-slider.js +19 -7
- package/dist/common/timeline-helpers.d.ts +3 -0
- package/dist/common/timeline-helpers.js +57 -0
- package/dist/common/timeline-slider.d.ts +1 -1
- package/dist/common/timeline-slider.js +21 -12
- package/dist/common/tippy-tooltip.d.ts +1 -1
- package/dist/common/toolbar-item.d.ts +1 -1
- package/dist/common/toolbar-item.js +5 -5
- package/dist/common/toolbar.d.ts +2 -2
- package/dist/common/toolbar.js +4 -4
- package/dist/common/vertical-toolbar.d.ts +2 -3
- package/dist/container.d.ts +6 -6
- package/dist/context.d.ts +3 -3
- package/dist/dnd-context.d.ts +2 -2
- package/dist/editor/editor.d.ts +1 -1
- package/dist/editor/editor.js +1 -1
- package/dist/editor/feature-action-panel.d.ts +1 -1
- package/dist/editor/feature-action-panel.js +1 -1
- package/dist/effects/compact-color-picker.d.ts +1 -1
- package/dist/effects/effect-configurator.d.ts +5 -4
- package/dist/effects/effect-configurator.js +243 -44
- package/dist/effects/effect-list.d.ts +1 -1
- package/dist/effects/effect-manager.d.ts +3 -3
- package/dist/effects/effect-manager.js +11 -4
- package/dist/effects/effect-panel-header.d.ts +2 -2
- package/dist/effects/effect-panel-header.js +35 -18
- package/dist/effects/effect-panel.d.ts +6 -6
- package/dist/effects/effect-panel.js +61 -86
- package/dist/effects/effect-time-configurator.d.ts +1 -1
- package/dist/effects/effect-time-configurator.js +10 -10
- package/dist/effects/effect-time-selector.d.ts +1 -1
- package/dist/effects/effect-time-slider.d.ts +3 -3
- package/dist/effects/effect-type-dropdown-list.d.ts +3 -2
- package/dist/effects/effect-type-dropdown-list.js +1 -1
- package/dist/effects/effect-type-list-item.d.ts +2 -1
- package/dist/effects/effect-type-list-item.js +23 -7
- package/dist/effects/effect-type-selector.d.ts +3 -2
- package/dist/effects/effect-type-selector.js +2 -2
- package/dist/effects/side-panel-title.d.ts +1 -1
- package/dist/effects/surface-fog-section.d.ts +14 -0
- package/dist/effects/surface-fog-section.js +263 -0
- package/dist/effects/timezone-selector.d.ts +1 -1
- package/dist/filters/components.d.ts +2 -3
- package/dist/filters/filter-panels/types.d.ts +4 -4
- package/dist/filters/index.d.ts +1 -0
- package/dist/filters/index.js +8 -1
- package/dist/filters/polygon-filter.js +2 -2
- package/dist/filters/time-range-filter.js +3 -1
- package/dist/filters/time-widget-settings.d.ts +14 -0
- package/dist/filters/time-widget-settings.js +312 -0
- package/dist/filters/time-widget-top.d.ts +2 -3
- package/dist/filters/time-widget-top.js +32 -39
- package/dist/filters/time-widget.d.ts +3 -2
- package/dist/filters/time-widget.js +285 -9
- package/dist/filters/types.d.ts +11 -11
- package/dist/filters/types.js +1 -1
- package/dist/geocoder/geocoder.d.ts +7 -4
- package/dist/geocoder/geocoder.js +65 -14
- package/dist/geocoder-panel.d.ts +11 -2
- package/dist/geocoder-panel.js +8 -4
- package/dist/hooks/use-cloud-list-provider.d.ts +1 -1
- package/dist/hooks/use-dnd-effects.d.ts +1 -1
- package/dist/hooks/use-dnd-layers.d.ts +1 -1
- package/dist/hooks/use-feature-flags.d.ts +1 -1
- package/dist/hooks/use-fetch-raster-tile-metadata.d.ts +3 -3
- package/dist/hooks/use-fetch-vector-tile-metadata.d.ts +2 -2
- package/dist/hooks/use-legend-position.d.ts +4 -5
- package/dist/index.d.ts +14 -0
- package/dist/index.js +124 -1
- package/dist/injector.d.ts +5 -5
- package/dist/kepler-gl.d.ts +70 -67
- package/dist/kepler-gl.js +89 -11
- package/dist/loading-indicator.d.ts +6 -4
- package/dist/loading-indicator.js +6 -3
- package/dist/map/annotations/annotation-control.d.ts +16 -0
- package/dist/map/annotations/annotation-control.js +56 -0
- package/dist/map/effects/effect-control.d.ts +1 -1
- package/dist/map/layer-hover-info.d.ts +3 -3
- package/dist/map/layer-hover-info.js +69 -36
- package/dist/map/layer-selector-panel.d.ts +2 -2
- package/dist/map/lazy-tippy.js +3 -3
- package/dist/map/locale-panel.d.ts +2 -2
- package/dist/map/locale-panel.js +2 -2
- package/dist/map/map-control-panel.d.ts +1 -1
- package/dist/map/map-control-toolbar.d.ts +7 -8
- package/dist/map/map-control-tooltip.d.ts +1 -1
- package/dist/map/map-control.d.ts +8 -4
- package/dist/map/map-control.js +16 -7
- package/dist/map/map-draw-panel.d.ts +2 -2
- package/dist/map/map-draw-panel.js +7 -4
- package/dist/map/map-legend-panel.d.ts +5 -4
- package/dist/map/map-legend-panel.js +10 -8
- package/dist/map/map-legend.d.ts +11 -9
- package/dist/map/map-legend.js +39 -9
- package/dist/map/map-navigation-control.d.ts +13 -0
- package/dist/map/map-navigation-control.js +143 -0
- package/dist/map/map-popover-content.d.ts +2 -2
- package/dist/map/map-popover.d.ts +2 -2
- package/dist/map/map-popover.js +2 -2
- package/dist/map/split-map-button.d.ts +1 -1
- package/dist/map/toggle-3d-button.d.ts +1 -1
- package/dist/map-container.d.ts +15 -5
- package/dist/map-container.js +286 -73
- package/dist/map-view-state-context.d.ts +10 -2
- package/dist/map-view-state-context.js +1 -1
- package/dist/modal-container.d.ts +6 -8
- package/dist/modal-container.js +28 -6
- package/dist/modals/add-map-style-modal.js +173 -200
- package/dist/modals/cloud-components/cloud-header.d.ts +1 -1
- package/dist/modals/cloud-components/provider-select.d.ts +1 -1
- package/dist/modals/cloud-tile.d.ts +1 -1
- package/dist/modals/data-table-modal.d.ts +2 -2
- package/dist/modals/data-table-modal.js +146 -194
- package/dist/modals/export-data-modal.js +117 -139
- package/dist/modals/export-image-modal.js +1 -1
- package/dist/modals/export-map-modal/components.d.ts +1 -1
- package/dist/modals/export-map-modal/export-html-map.d.ts +1 -1
- package/dist/modals/export-map-modal/export-json-map.d.ts +1 -1
- package/dist/modals/export-video-modal.d.ts +25 -0
- package/dist/modals/export-video-modal.js +338 -0
- package/dist/modals/export-video-modal.spec.d.ts +1 -0
- package/dist/modals/export-video-modal.spec.js +686 -0
- package/dist/modals/fog-height-animation.d.ts +8 -0
- package/dist/modals/fog-height-animation.js +97 -0
- package/dist/modals/hubble-utils.d.ts +25 -0
- package/dist/modals/hubble-utils.js +197 -0
- package/dist/modals/hubble-utils.spec.d.ts +1 -0
- package/dist/modals/hubble-utils.spec.js +397 -0
- package/dist/modals/image-modal-container.d.ts +1 -1
- package/dist/modals/load-data-modal.d.ts +2 -2
- package/dist/modals/modal-dialog.d.ts +0 -2
- package/dist/modals/overwrite-map-modal.d.ts +1 -1
- package/dist/modals/save-map-modal.d.ts +3 -3
- package/dist/modals/share-map-modal.d.ts +1 -1
- package/dist/modals/tilesets-modals/common.d.ts +3 -3
- package/dist/modals/tilesets-modals/common.js +1 -1
- package/dist/modals/tilesets-modals/load-data-footer.d.ts +1 -1
- package/dist/modals/tilesets-modals/load-data-footer.js +2 -2
- package/dist/modals/tilesets-modals/load-tileset.d.ts +1 -1
- package/dist/modals/tilesets-modals/load-tileset.js +27 -10
- package/dist/modals/tilesets-modals/tileset-bitmap-form.d.ts +14 -0
- package/dist/modals/tilesets-modals/tileset-bitmap-form.js +284 -0
- package/dist/modals/tilesets-modals/tileset-icon.d.ts +1 -1
- package/dist/modals/tilesets-modals/tileset-raster-form.d.ts +2 -2
- package/dist/modals/tilesets-modals/tileset-raster-form.js +94 -11
- package/dist/modals/tilesets-modals/tileset-tile3d-form.d.ts +12 -0
- package/dist/modals/tilesets-modals/tileset-tile3d-form.js +389 -0
- package/dist/modals/tilesets-modals/tileset-vector-form.d.ts +3 -3
- package/dist/modals/tilesets-modals/tileset-vector-form.js +58 -4
- package/dist/modals/tilesets-modals/tileset-wms-form.d.ts +1 -1
- package/dist/modals/tilesets-modals/tileset-wms-form.js +55 -11
- package/dist/notification-panel/notification-item.d.ts +1 -53
- package/dist/notification-panel/notification-item.js +47 -75
- package/dist/notification-panel.d.ts +1 -1
- package/dist/notification-panel.js +20 -42
- package/dist/plot-container.js +55 -14
- package/dist/side-panel/add-by-dataset-button.d.ts +1 -1
- package/dist/side-panel/add-by-dataset-button.js +3 -3
- package/dist/side-panel/common/dataset-info.d.ts +2 -2
- package/dist/side-panel/common/dataset-info.js +2 -2
- package/dist/side-panel/common/dataset-tag.d.ts +2 -2
- package/dist/side-panel/common/dataset-title.d.ts +2 -2
- package/dist/side-panel/common/source-data-catalog.d.ts +3 -3
- package/dist/side-panel/common/types.d.ts +8 -8
- package/dist/side-panel/custom-panel.d.ts +2 -2
- package/dist/side-panel/filter-manager.d.ts +3 -3
- package/dist/side-panel/filter-panel/add-filter-button.d.ts +1 -1
- package/dist/side-panel/filter-panel/filter-panel-header.d.ts +2 -2
- package/dist/side-panel/interaction-manager.d.ts +1 -1
- package/dist/side-panel/interaction-panel/brush-config.d.ts +1 -1
- package/dist/side-panel/interaction-panel/geocoder-config.d.ts +11 -0
- package/dist/side-panel/interaction-panel/geocoder-config.js +45 -0
- package/dist/side-panel/interaction-panel/interaction-panel.d.ts +3 -2
- package/dist/side-panel/interaction-panel/interaction-panel.js +10 -3
- package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.d.ts +3 -3
- package/dist/side-panel/interaction-panel/tooltip-config.d.ts +1 -1
- package/dist/side-panel/layer-manager.d.ts +2 -2
- package/dist/side-panel/layer-manager.js +11 -3
- package/dist/side-panel/layer-panel/add-layer-button.d.ts +1 -1
- package/dist/side-panel/layer-panel/channel-by-value-selector.d.ts +1 -1
- package/dist/side-panel/layer-panel/color-breaks-panel.d.ts +4 -4
- package/dist/side-panel/layer-panel/color-palette-preset.d.ts +1 -1
- package/dist/side-panel/layer-panel/color-palette.d.ts +2 -2
- package/dist/side-panel/layer-panel/color-range-selector.d.ts +3 -3
- package/dist/side-panel/layer-panel/color-scale-selector.d.ts +5 -5
- package/dist/side-panel/layer-panel/color-scale-selector.js +1 -1
- package/dist/side-panel/layer-panel/color-selector.d.ts +3 -3
- package/dist/side-panel/layer-panel/column-selector.d.ts +1 -1
- package/dist/side-panel/layer-panel/custom-palette.d.ts +10 -10
- package/dist/side-panel/layer-panel/custom-palette.js +5 -5
- package/dist/side-panel/layer-panel/custom-picker.d.ts +1 -1
- package/dist/side-panel/layer-panel/dataset-layer-group.d.ts +1 -1
- package/dist/side-panel/layer-panel/dataset-layer-section.d.ts +1 -1
- package/dist/side-panel/layer-panel/dataset-layer-section.js +19 -3
- package/dist/side-panel/layer-panel/dataset-section.d.ts +2 -2
- package/dist/side-panel/layer-panel/dimension-scale-selector.d.ts +1 -1
- package/dist/side-panel/layer-panel/how-to-button.d.ts +1 -1
- package/dist/side-panel/layer-panel/layer-color-selector.d.ts +3 -3
- package/dist/side-panel/layer-panel/layer-column-config.d.ts +1 -1
- package/dist/side-panel/layer-panel/layer-column-mode-config.d.ts +3 -3
- package/dist/side-panel/layer-panel/layer-config-group.d.ts +5 -5
- package/dist/side-panel/layer-panel/layer-configurator.d.ts +6 -4
- package/dist/side-panel/layer-panel/layer-configurator.js +408 -72
- package/dist/side-panel/layer-panel/layer-error-message.d.ts +1 -1
- package/dist/side-panel/layer-panel/layer-list.d.ts +2 -2
- package/dist/side-panel/layer-panel/layer-panel-header.d.ts +5 -5
- package/dist/side-panel/layer-panel/layer-panel-header.js +2 -2
- package/dist/side-panel/layer-panel/layer-panel.d.ts +1 -1
- package/dist/side-panel/layer-panel/layer-type-dropdown-list.d.ts +2 -2
- package/dist/side-panel/layer-panel/layer-type-list-item.d.ts +2 -2
- package/dist/side-panel/layer-panel/layer-type-selector.d.ts +1 -1
- package/dist/side-panel/layer-panel/radius-by-zoom-input.d.ts +1 -1
- package/dist/side-panel/layer-panel/raster-tile-layer-configurator.d.ts +2 -2
- package/dist/side-panel/layer-panel/raster-tile-layer-configurator.js +127 -27
- package/dist/side-panel/layer-panel/scenegraph-model-selector.d.ts +24 -0
- package/dist/side-panel/layer-panel/scenegraph-model-selector.js +123 -0
- package/dist/side-panel/layer-panel/single-color-palette.d.ts +1 -1
- package/dist/side-panel/layer-panel/text-label-panel.d.ts +2 -2
- package/dist/side-panel/layer-panel/text-label-panel.js +11 -2
- package/dist/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +3 -3
- package/dist/side-panel/layer-panel/vis-config-by-field-selector.d.ts +1 -1
- package/dist/side-panel/layer-panel/vis-config-slider.d.ts +3 -1
- package/dist/side-panel/layer-panel/vis-config-slider.js +7 -3
- package/dist/side-panel/layer-panel/vis-config-switch.d.ts +1 -1
- package/dist/side-panel/map-manager.d.ts +1 -1
- package/dist/side-panel/map-style-panel/map-layer-group-color-picker.d.ts +1 -1
- package/dist/side-panel/map-style-panel/map-layer-group-item.d.ts +2 -2
- package/dist/side-panel/map-style-panel/map-layer-selector.d.ts +1 -1
- package/dist/side-panel/map-style-panel/map-style-selector.d.ts +1 -1
- package/dist/side-panel/panel-header-action.d.ts +1 -1
- package/dist/side-panel/panel-header.d.ts +13 -12
- package/dist/side-panel/panel-header.js +9 -2
- package/dist/side-panel/panel-tab.d.ts +5 -5
- package/dist/side-panel/panel-tab.js +4 -4
- package/dist/side-panel/panel-title.d.ts +1 -1
- package/dist/side-panel/panel-toggle.d.ts +1 -1
- package/dist/side-panel/panel-view-list-toggle.d.ts +3 -3
- package/dist/side-panel/side-bar.d.ts +2 -2
- package/dist/side-panel.d.ts +1 -1
- package/dist/side-panel.js +5 -1
- package/dist/types.d.ts +3 -3
- package/package.json +41 -29
package/dist/kepler-gl.js
CHANGED
|
@@ -7,20 +7,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.geoCoderPanelSelector = exports["default"] = exports.datasetAttributionSelector = exports.bottomWidgetSelector = exports.attributionSelector = exports.DEFAULT_KEPLER_GL_PROPS = void 0;
|
|
9
9
|
exports.getVisibleDatasets = getVisibleDatasets;
|
|
10
|
-
exports.isViewportDisjointed = exports.isSplitSelector = void 0;
|
|
10
|
+
exports.layerAttributionSelector = exports.isViewportDisjointed = exports.isSplitSelector = void 0;
|
|
11
11
|
exports.makeGetActionCreators = makeGetActionCreators;
|
|
12
12
|
exports.mapStateSelector = exports.mapFieldsSelector = void 0;
|
|
13
13
|
exports.mapStateToProps = mapStateToProps;
|
|
14
14
|
exports.sidePanelSelector = exports.plotContainerSelector = exports.notificationPanelSelector = exports.modalContainerSelector = void 0;
|
|
15
15
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
16
16
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
17
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
18
17
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
19
18
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
20
19
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
21
20
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
22
21
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
23
22
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
23
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
24
24
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
25
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
26
26
|
var _react = _interopRequireWildcard(require("react"));
|
|
@@ -55,6 +55,9 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
|
|
|
55
55
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
56
56
|
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
57
57
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
58
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
59
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
60
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
58
61
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
59
62
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
60
63
|
// Maybe we should think about exporting this or creating a variable
|
|
@@ -97,12 +100,14 @@ var mapStateSelector = exports.mapStateSelector = (0, _reselect.createSelector)(
|
|
|
97
100
|
});
|
|
98
101
|
var mapFieldsSelector = exports.mapFieldsSelector = function mapFieldsSelector(props) {
|
|
99
102
|
var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
103
|
+
var attribution = attributionSelector(props);
|
|
100
104
|
return {
|
|
101
105
|
getMapboxRef: props.getMapboxRef,
|
|
102
106
|
mapboxApiAccessToken: props.mapboxApiAccessToken,
|
|
103
107
|
mapboxApiUrl: props.mapboxApiUrl ? props.mapboxApiUrl : DEFAULT_KEPLER_GL_PROPS.mapboxApiUrl,
|
|
104
108
|
mapState: mapStateSelector(props, index),
|
|
105
|
-
datasetAttributions:
|
|
109
|
+
datasetAttributions: attribution.sources,
|
|
110
|
+
attributionLogos: attribution.logos,
|
|
106
111
|
mapStyle: props.mapStyle,
|
|
107
112
|
onDeckInitialized: props.onDeckInitialized,
|
|
108
113
|
onViewStateChange: props.onViewStateChange,
|
|
@@ -124,7 +129,8 @@ var mapFieldsSelector = exports.mapFieldsSelector = function mapFieldsSelector(p
|
|
|
124
129
|
topMapContainerProps: props.topMapContainerProps,
|
|
125
130
|
bottomMapContainerProps: props.bottomMapContainerProps,
|
|
126
131
|
// transformRequest for Mapbox basemaps
|
|
127
|
-
transformRequest: props.transformRequest
|
|
132
|
+
transformRequest: props.transformRequest,
|
|
133
|
+
RTLTextPlugin: props.RTLTextPlugin
|
|
128
134
|
};
|
|
129
135
|
};
|
|
130
136
|
function getVisibleDatasets(datasets) {
|
|
@@ -216,6 +222,7 @@ var modalContainerSelector = exports.modalContainerSelector = function modalCont
|
|
|
216
222
|
};
|
|
217
223
|
};
|
|
218
224
|
var geoCoderPanelSelector = exports.geoCoderPanelSelector = function geoCoderPanelSelector(props, dimensions) {
|
|
225
|
+
var _props$visState$inter, _props$visState$inter2;
|
|
219
226
|
return {
|
|
220
227
|
isGeocoderEnabled: props.visState.interactionConfig.geocoder.enabled,
|
|
221
228
|
mapboxApiAccessToken: props.mapboxApiAccessToken,
|
|
@@ -225,7 +232,8 @@ var geoCoderPanelSelector = exports.geoCoderPanelSelector = function geoCoderPan
|
|
|
225
232
|
updateVisData: props.visStateActions.updateVisData,
|
|
226
233
|
removeDataset: props.visStateActions.removeDataset,
|
|
227
234
|
updateMap: props.mapStateActions.updateMap,
|
|
228
|
-
appWidth: dimensions.width
|
|
235
|
+
appWidth: dimensions.width,
|
|
236
|
+
limitSearch: (_props$visState$inter = (_props$visState$inter2 = props.visState.interactionConfig.geocoder.config) === null || _props$visState$inter2 === void 0 ? void 0 : _props$visState$inter2.limitSearch) !== null && _props$visState$inter !== void 0 ? _props$visState$inter : false
|
|
229
237
|
};
|
|
230
238
|
};
|
|
231
239
|
|
|
@@ -275,13 +283,83 @@ var datasetAttributionSelector = exports.datasetAttributionSelector = (0, _resel
|
|
|
275
283
|
});
|
|
276
284
|
|
|
277
285
|
/**
|
|
278
|
-
*
|
|
279
|
-
*
|
|
286
|
+
* Collect unique layer-level attributions from visible layers.
|
|
287
|
+
* Builds a serialized cache key from attribution values so createSelector
|
|
288
|
+
* can detect in-place mutations to layer.meta.
|
|
280
289
|
*/
|
|
281
|
-
var
|
|
282
|
-
|
|
283
|
-
var
|
|
290
|
+
var layerAttributionKeySelector = function layerAttributionKeySelector(state) {
|
|
291
|
+
var _state$visState;
|
|
292
|
+
var layers = (_state$visState = state.visState) === null || _state$visState === void 0 ? void 0 : _state$visState.layers;
|
|
293
|
+
if (!layers) return '';
|
|
294
|
+
var key = '';
|
|
295
|
+
var _iterator = _createForOfIteratorHelper(layers),
|
|
296
|
+
_step;
|
|
297
|
+
try {
|
|
298
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
299
|
+
var _layer$config, _layer$meta;
|
|
300
|
+
var layer = _step.value;
|
|
301
|
+
if ((_layer$config = layer.config) !== null && _layer$config !== void 0 && _layer$config.isVisible && (_layer$meta = layer.meta) !== null && _layer$meta !== void 0 && _layer$meta.attribution) {
|
|
302
|
+
var _a$logoUrl;
|
|
303
|
+
var a = layer.meta.attribution;
|
|
304
|
+
key += "".concat(a.title, "\0").concat(a.url, "\0").concat((_a$logoUrl = a.logoUrl) !== null && _a$logoUrl !== void 0 ? _a$logoUrl : '', "\0");
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
} catch (err) {
|
|
308
|
+
_iterator.e(err);
|
|
309
|
+
} finally {
|
|
310
|
+
_iterator.f();
|
|
311
|
+
}
|
|
312
|
+
return key;
|
|
313
|
+
};
|
|
314
|
+
var layerAttributionSelector = exports.layerAttributionSelector = (0, _reselect.createSelector)([function (state) {
|
|
315
|
+
var _state$visState2;
|
|
316
|
+
return (_state$visState2 = state.visState) === null || _state$visState2 === void 0 ? void 0 : _state$visState2.layers;
|
|
317
|
+
}, layerAttributionKeySelector], function (layers) {
|
|
318
|
+
var attributions = [];
|
|
319
|
+
if (!layers) return attributions;
|
|
320
|
+
var _iterator2 = _createForOfIteratorHelper(layers),
|
|
321
|
+
_step2;
|
|
322
|
+
try {
|
|
323
|
+
var _loop = function _loop() {
|
|
324
|
+
var _layer$config2, _layer$meta2;
|
|
325
|
+
var layer = _step2.value;
|
|
326
|
+
if ((_layer$config2 = layer.config) !== null && _layer$config2 !== void 0 && _layer$config2.isVisible && (_layer$meta2 = layer.meta) !== null && _layer$meta2 !== void 0 && _layer$meta2.attribution) {
|
|
327
|
+
var attr = layer.meta.attribution;
|
|
328
|
+
if (attr.title && !attributions.find(function (a) {
|
|
329
|
+
return a.title === attr.title && a.url === attr.url;
|
|
330
|
+
})) {
|
|
331
|
+
attributions.push(attr);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
};
|
|
335
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
336
|
+
_loop();
|
|
337
|
+
}
|
|
338
|
+
} catch (err) {
|
|
339
|
+
_iterator2.e(err);
|
|
340
|
+
} finally {
|
|
341
|
+
_iterator2.f();
|
|
342
|
+
}
|
|
343
|
+
return attributions;
|
|
344
|
+
});
|
|
345
|
+
var attributionSelector = exports.attributionSelector = (0, _reselect.createSelector)([datasetAttributionSelector, layerAttributionSelector], function (datasetAttributions, layerAttributions) {
|
|
346
|
+
var uniqueTextAttributions = (0, _toConsumableArray2["default"])(datasetAttributions);
|
|
284
347
|
var logos = [];
|
|
348
|
+
layerAttributions.forEach(function (layerAttribution) {
|
|
349
|
+
if (!uniqueTextAttributions.find(function (a) {
|
|
350
|
+
return a.title === layerAttribution.title && a.url === layerAttribution.url;
|
|
351
|
+
})) {
|
|
352
|
+
uniqueTextAttributions.push({
|
|
353
|
+
title: layerAttribution.title,
|
|
354
|
+
url: layerAttribution.url
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
if (layerAttribution.logoUrl && !logos.find(function (a) {
|
|
358
|
+
return a.logoUrl === layerAttribution.logoUrl;
|
|
359
|
+
})) {
|
|
360
|
+
logos.push(layerAttribution);
|
|
361
|
+
}
|
|
362
|
+
});
|
|
285
363
|
return {
|
|
286
364
|
sources: uniqueTextAttributions,
|
|
287
365
|
logos: logos
|
|
@@ -582,4 +660,4 @@ function mergeActions(actions, userActions) {
|
|
|
582
660
|
return _objectSpread(_objectSpread({}, actions), overrides);
|
|
583
661
|
}
|
|
584
662
|
var _default = exports["default"] = KeplerGlFactory;
|
|
585
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY29uc29sZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVkdXgiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZXNlbGVjdCIsIl9rZXBsZXJnbENvbm5lY3QiLCJfcmVhY3RJbnRsIiwiX2xvY2FsaXphdGlvbiIsIl9jb250ZXh0IiwiX2FjdGlvbnMiLCJfY29tbW9uVXRpbHMiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfY29uc3RhbnRzIiwiX3NpZGVQYW5lbCIsIl9tYXBDb250YWluZXIyIiwiX21hcHNMYXlvdXQiLCJfYm90dG9tV2lkZ2V0IiwiX21vZGFsQ29udGFpbmVyIiwiX3Bsb3RDb250YWluZXIiLCJfbm90aWZpY2F0aW9uUGFuZWwiLCJfZ2VvY29kZXJQYW5lbCIsIl9lZmZlY3RNYW5hZ2VyIiwiX2RuZENvbnRleHQiLCJfdXNlQ2xvdWRMaXN0UHJvdmlkZXIiLCJfdXRpbHMiLCJfc3R5bGVzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mMyIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9jYWxsU3VwZXIiLCJvIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiR2xvYmFsU3R5bGUiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJmb250RmFtaWx5IiwiZm9udFdlaWdodCIsImZvbnRTaXplIiwibGluZUhlaWdodCIsImxhYmVsQ29sb3IiLCJCb3R0b21XaWRnZXRPdXRlciIsIl9yZWYiLCJhYnNvbHV0ZSIsImNvbmNhdCIsImlzVmlld3BvcnREaXNqb2ludGVkIiwiZXhwb3J0cyIsIm1hcFN0YXRlIiwiaXNTcGxpdCIsImlzVmlld3BvcnRTeW5jZWQiLCJzcGxpdE1hcFZpZXdwb3J0cyIsIm1hcFN0YXRlU2VsZWN0b3IiLCJjcmVhdGVTZWxlY3RvciIsIl8iLCJpbmRleCIsIk51bWJlciIsImlzRmluaXRlIiwibWFwRmllbGRzU2VsZWN0b3IiLCJ1bmRlZmluZWQiLCJnZXRNYXBib3hSZWYiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsIkRFRkFVTFRfS0VQTEVSX0dMX1BST1BTIiwiZGF0YXNldEF0dHJpYnV0aW9ucyIsImF0dHJpYnV0aW9uU2VsZWN0b3IiLCJzb3VyY2VzIiwibWFwU3R5bGUiLCJvbkRlY2tJbml0aWFsaXplZCIsIm9uVmlld1N0YXRlQ2hhbmdlIiwib25Nb3VzZU1vdmUiLCJkZWNrR2xQcm9wcyIsInVpU3RhdGVBY3Rpb25zIiwidmlzU3RhdGVBY3Rpb25zIiwibWFwU3RhdGVBY3Rpb25zIiwidmlzU3RhdGUiLCJhY3RpdmVTaWRlUGFuZWwiLCJ1aVN0YXRlIiwibWFwQ29udHJvbHMiLCJyZWFkT25seSIsImxvY2FsZSIsImlzTG9hZGluZ0luZGljYXRvclZpc2libGUiLCJsb2FkaW5nSW5kaWNhdG9yVmFsdWUiLCJzaWRlUGFuZWxXaWR0aCIsIndpZHRoIiwidG9wTWFwQ29udGFpbmVyUHJvcHMiLCJib3R0b21NYXBDb250YWluZXJQcm9wcyIsInRyYW5zZm9ybVJlcXVlc3QiLCJnZXRWaXNpYmxlRGF0YXNldHMiLCJkYXRhc2V0cyIsImZpbHRlck9iamVjdEJ5UHJlZGljYXRlIiwia2V5IiwiR0VPQ09ERVJfREFUQVNFVF9OQU1FIiwic2lkZVBhbmVsU2VsZWN0b3IiLCJhdmFpbGFibGVQcm92aWRlcnMiLCJmaWx0ZXJlZERhdGFzZXRzIiwiYXBwTmFtZSIsInZlcnNpb24iLCJhcHBXZWJzaXRlIiwib25TYXZlTWFwIiwibWFwU3R5bGVBY3Rpb25zIiwiZmlsdGVycyIsImxheWVycyIsImxheWVyT3JkZXIiLCJsYXllckNsYXNzZXMiLCJpbnRlcmFjdGlvbkNvbmZpZyIsIm1hcEluZm8iLCJsYXllckJsZW5kaW5nIiwib3ZlcmxheUJsZW5kaW5nIiwibWFwU2F2ZWQiLCJwcm92aWRlclN0YXRlIiwicGxvdENvbnRhaW5lclNlbGVjdG9yIiwiaGVpZ2h0IiwicmF0aW8iLCJleHBvcnRJbWFnZSIsInJlc29sdXRpb24iLCJsZWdlbmQiLCJjZW50ZXIiLCJpbWFnZVNpemUiLCJlc2NhcGVYaHRtbEZvcldlYnBhY2siLCJtYXBGaWVsZHMiLCJhZGROb3RpZmljYXRpb24iLCJzZXRFeHBvcnRJbWFnZVNldHRpbmciLCJzZXRFeHBvcnRJbWFnZURhdGFVcmkiLCJzZXRFeHBvcnRJbWFnZUVycm9yIiwic3BsaXRNYXBzIiwiaXNTcGxpdFNlbGVjdG9yIiwiYm90dG9tV2lkZ2V0U2VsZWN0b3IiLCJhbmltYXRpb25Db25maWciLCJ0b2dnbGVNb2RhbCIsInNpZGVQYW5lbCIsIm1hcmdpbiIsImxlZnQiLCJtb2RhbENvbnRhaW5lclNlbGVjdG9yIiwicm9vdE5vZGUiLCJwcm92aWRlckFjdGlvbnMiLCJjbG91ZFByb3ZpZGVycyIsIm9uRXhwb3J0VG9DbG91ZFN1Y2Nlc3MiLCJvbkxvYWRDbG91ZE1hcFN1Y2Nlc3MiLCJvbkxvYWRDbG91ZE1hcEVycm9yIiwib25FeHBvcnRUb0Nsb3VkRXJyb3IiLCJnZW9Db2RlclBhbmVsU2VsZWN0b3IiLCJkaW1lbnNpb25zIiwiaXNHZW9jb2RlckVuYWJsZWQiLCJnZW9jb2RlciIsImVuYWJsZWQiLCJ1cGRhdGVWaXNEYXRhIiwicmVtb3ZlRGF0YXNldCIsInVwZGF0ZU1hcCIsImFwcFdpZHRoIiwiZGF0YXNldEF0dHJpYnV0aW9uU2VsZWN0b3IiLCJzdGF0ZSIsInVuaXF1ZUF0dHJpYnV0aW9ucyIsIl9kcyRtZXRhZGF0YSIsImRzIiwiYXR0cmlidXRpb25zIiwibWV0YWRhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJhdHRyaWJ1dGlvbiIsImxpbmtzIiwibWF0Y2giLCJsaW5rIiwiX2xpbmskbWF0Y2giLCJfbGluayRtYXRjaDIiLCJocmVmIiwidGl0bGUiLCJpbmRleE9mIiwidXJsIiwiZXJyb3IiLCJ1bmlxdWVUZXh0QXR0cmlidXRpb25zIiwibG9nb3MiLCJub3RpZmljYXRpb25QYW5lbFNlbGVjdG9yIiwicmVtb3ZlTm90aWZpY2F0aW9uIiwibm90aWZpY2F0aW9ucyIsIm1hcFN0eWxlcyIsIm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0IiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsIktFUExFUl9HTF9OQU1FIiwiS0VQTEVSX0dMX1ZFUlNJT04iLCJESU1FTlNJT05TIiwiZmVhdHVyZUZsYWdzIiwiS2VwbGVyR2xGYWN0b3J5IiwiZGVwcyIsIkJvdHRvbVdpZGdldEZhY3RvcnkiLCJHZW9Db2RlclBhbmVsRmFjdG9yeSIsIk1hcENvbnRhaW5lckZhY3RvcnkiLCJNYXBzTGF5b3V0RmFjdG9yeSIsIk1vZGFsQ29udGFpbmVyRmFjdG9yeSIsIlNpZGVQYW5lbEZhY3RvcnkiLCJQbG90Q29udGFpbmVyRmFjdG9yeSIsIk5vdGlmaWNhdGlvblBhbmVsRmFjdG9yeSIsIkRuZENvbnRleHRGYWN0b3J5IiwiRWZmZWN0TWFuYWdlckZhY3RvcnkiLCJCb3R0b21XaWRnZXQiLCJHZW9Db2RlclBhbmVsIiwiTWFwQ29udGFpbmVyIiwiTWFwc0xheW91dCIsIk1vZGFsQ29udGFpbmVyIiwiU2lkZVBhbmVsIiwiUGxvdENvbnRhaW5lciIsIk5vdGlmaWNhdGlvblBhbmVsIiwiRG5kQ29udGV4dCIsIktlcGxlckdMIiwiX0NvbXBvbmVudCIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9sZW4iLCJhcmdzIiwiX2tleSIsInNldFN0YXRlIiwiY3JlYXRlUmVmIiwidGhlbWVTZWxlY3RvciIsIl90eXBlb2YyIiwiYmFzaWNUaGVtZSIsIlRIRU1FIiwibGlnaHQiLCJ0aGVtZUxUIiwiYmFzZSIsInRoZW1lQlMiLCJkYXRhc2V0c1NlbGVjdG9yIiwicHJvdmlkZXJzIiwiaGFzU3RvcmFnZSIsInNvbWUiLCJwIiwiaGFzUHJpdmF0ZVN0b3JhZ2UiLCJoYXNTaGFyZSIsImhhc1NoYXJpbmdVcmwiLCJsb2NhbGVNZXNzYWdlcyIsImN1c3RvbU1lc3NhZ2VzIiwibWVyZ2VNZXNzYWdlcyIsIm1lc3NhZ2VzIiwiZGVmYXVsdFN0eWxlcyIsInZhbHVlcyIsImN1c3RvbVN0eWxlcyIsIm1hcCIsIm1zIiwiaWQiLCJnZW5lcmF0ZUhhc2hJZCIsImFsbFN0eWxlcyIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJyZWR1Y2UiLCJhY2N1Iiwic3R5bGUiLCJsb2FkTWFwU3R5bGVzIiwiY29udGFpbmVySWQiLCJsYXllcklkIiwidG9nZ2xlTGF5ZXJGb3JNYXAiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsInZhbHVlIiwiY29tcG9uZW50RGlkTW91bnQiLCJfZ2V0QXBwbGljYXRpb25Db25maWciLCJnZXRBcHBsaWNhdGlvbkNvbmZpZyIsImJhc2VNYXBMaWJyYXJ5Q29uZmlnIiwibWFwTGliTmFtZSIsIl92YWxpZGF0ZU1hcGJveFRva2VuIiwiX2xvYWRNYXBTdHlsZSIsIm9uS2VwbGVyR2xJbml0aWFsaXplZCIsInJvb3QiLCJjdXJyZW50IiwiSFRNTEVsZW1lbnQiLCJvYnNlcnZlRGltZW5zaW9ucyIsIl9oYW5kbGVSZXNpemUiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInVub2JzZXJ2ZURpbWVuc2lvbnMiLCJ2YWxpZGF0ZVRva2VuIiwiQ29uc29sZSIsIndhcm4iLCJNSVNTSU5HX01BUEJPWF9UT0tFTiIsInJlbmRlciIsIl90aGlzMiIsIl90aGlzJHByb3BzIiwiX3RoaXMkcHJvcHMkaWQiLCJfdGhpcyRwcm9wcyR3aWR0aCIsIl90aGlzJHByb3BzJGhlaWdodCIsIl90aGlzJHByb3BzJGNsb3VkUHJvdiIsImF2YWlsYWJsZVRoZW1lU2VsZWN0b3IiLCJsb2NhbGVNZXNzYWdlc1NlbGVjdG9yIiwiaXNFeHBvcnRpbmdJbWFnZSIsImV4cG9ydGluZyIsImZpbHRlcmVkRGF0YXNldHNTZWxlY3RvciIsInNpZGVGaWVsZHMiLCJwbG90Q29udGFpbmVyRmllbGRzIiwiYm90dG9tV2lkZ2V0RmllbGRzIiwibW9kYWxDb250YWluZXJGaWVsZHMiLCJnZW9Db2RlclBhbmVsRmllbGRzIiwibm90aWZpY2F0aW9uUGFuZWxGaWVsZHMiLCJtYXBDb250YWluZXJzIiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzMiIsInByaW1hcnkiLCJkZWxldGVNYXBMYWJlbHMiLCJfZGVsZXRlTWFwTGFiZWxzIiwic2V0dGluZ3MiLCJSb290Q29udGV4dCIsIlByb3ZpZGVyIiwiRmVhdHVyZUZsYWdzQ29udGV4dFByb3ZpZGVyIiwiSW50bFByb3ZpZGVyIiwiU3R5bGVTaGVldE1hbmFnZXIiLCJzaG91bGRGb3J3YXJkUHJvcCIsIlRoZW1lUHJvdmlkZXIiLCJDbG91ZExpc3RQcm92aWRlciIsImNsYXNzTmFtZSIsImRpc3BsYXkiLCJmbGV4RGlyZWN0aW9uIiwicG9zaXRpb24iLCJyZWYiLCJ1bnN5bmNlZFZpZXdwb3J0cyIsIl9tYXBDb250YWluZXIiLCJoYXNQb3J0YWJsZVdpZHRoIiwiYnJlYWtQb2ludFZhbHVlcyIsInJvb3RSZWYiLCJib3R0b21XaWRnZXRSZWYiLCJjb250YWluZXJXIiwiY29udGFpbmVySCIsIkNvbXBvbmVudCIsImtlcGxlckdsQ29ubmVjdCIsIm1hcFN0YXRlVG9Qcm9wcyIsIm1ha2VNYXBEaXNwYXRjaFRvUHJvcHMiLCJ3aXRoVGhlbWUiLCJkZWZhdWx0VXNlckFjdGlvbnMiLCJnZXREaXNwYXRjaCIsImRpc3BhdGNoIiwiZ2V0VXNlckFjdGlvbnMiLCJhY3Rpb25zIiwibWFrZUdldEFjdGlvbkNyZWF0b3JzIiwidXNlckFjdGlvbnMiLCJfbWFwIiwiVmlzU3RhdGVBY3Rpb25zIiwiTWFwU3RhdGVBY3Rpb25zIiwiTWFwU3R5bGVBY3Rpb25zIiwiVUlTdGF0ZUFjdGlvbnMiLCJQcm92aWRlckFjdGlvbnMiLCJiaW5kQWN0aW9uQ3JlYXRvcnMiLCJtZXJnZUFjdGlvbnMiLCJfbWFwMiIsIl9zbGljZWRUb0FycmF5MiIsImdldEFjdGlvbkNyZWF0b3JzIiwibWFwRGlzcGF0Y2hUb1Byb3BzIiwib3duUHJvcHMiLCJncm91cGVkQWN0aW9uQ3JlYXRvcnMiLCJvdmVycmlkZXMiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9rZXBsZXItZ2wudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgY3JlYXRlUmVmLCBEaXNwYXRjaH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IENvbnNvbGUgZnJvbSAnZ2xvYmFsL2NvbnNvbGUnO1xuaW1wb3J0IHtiaW5kQWN0aW9uQ3JlYXRvcnN9IGZyb20gJ3JlZHV4JztcbmltcG9ydCBzdHlsZWQsIHt3aXRoVGhlbWUsIFN0eWxlU2hlZXRNYW5hZ2VyLCBUaGVtZVByb3ZpZGVyfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQge2Nvbm5lY3QgYXMga2VwbGVyR2xDb25uZWN0fSBmcm9tICcuL2Nvbm5lY3Qva2VwbGVyZ2wtY29ubmVjdCc7XG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQge21lc3NhZ2VzfSBmcm9tICdAa2VwbGVyLmdsL2xvY2FsaXphdGlvbic7XG5pbXBvcnQge1Jvb3RDb250ZXh0LCBGZWF0dXJlRmxhZ3NDb250ZXh0UHJvdmlkZXIsIEZlYXR1cmVGbGFnc30gZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCB7XG4gIEF0dHJpYnV0aW9uV2l0aFN0eWxlLFxuICBEYXRhc2V0QXR0cmlidXRpb24sXG4gIE9uRXJyb3JDYWxsQmFjayxcbiAgT25TdWNjZXNzQ2FsbEJhY2ssXG4gIFZpZXdwb3J0LFxuICBNYXBTdGF0ZVxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuaW1wb3J0IHtcbiAgTWFwU3RhdGVBY3Rpb25zLFxuICBNYXBTdHlsZUFjdGlvbnMsXG4gIFByb3ZpZGVyQWN0aW9ucyxcbiAgVUlTdGF0ZUFjdGlvbnMsXG4gIFZpc1N0YXRlQWN0aW9uc1xufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuXG5pbXBvcnQge2dlbmVyYXRlSGFzaElkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5cbmltcG9ydCB7c2hvdWxkRm9yd2FyZFByb3B9IGZyb20gJy4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcblxudHlwZSBLZXBsZXJHbEFjdGlvbnMgPSB7XG4gIHZpc1N0YXRlQWN0aW9uczogdHlwZW9mIFZpc1N0YXRlQWN0aW9ucztcbiAgbWFwU3RhdGVBY3Rpb25zOiB0eXBlb2YgTWFwU3RhdGVBY3Rpb25zO1xuICBtYXBTdHlsZUFjdGlvbnM6IHR5cGVvZiBNYXBTdHlsZUFjdGlvbnM7XG4gIHVpU3RhdGVBY3Rpb25zOiB0eXBlb2YgVUlTdGF0ZUFjdGlvbnM7XG4gIHByb3ZpZGVyQWN0aW9uczogdHlwZW9mIFByb3ZpZGVyQWN0aW9ucztcbn07XG5cbmltcG9ydCB7XG4gIERJTUVOU0lPTlMsXG4gIEtFUExFUl9HTF9OQU1FLFxuICBLRVBMRVJfR0xfVkVSU0lPTixcbiAgVEhFTUUsXG4gIERFRkFVTFRfTUFQQk9YX0FQSV9VUkwsXG4gIEdFT0NPREVSX0RBVEFTRVRfTkFNRSxcbiAgTUlTU0lOR19NQVBCT1hfVE9LRU5cbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5pbXBvcnQgU2lkZVBhbmVsRmFjdG9yeSBmcm9tICcuL3NpZGUtcGFuZWwnO1xuaW1wb3J0IE1hcENvbnRhaW5lckZhY3RvcnkgZnJvbSAnLi9tYXAtY29udGFpbmVyJztcbmltcG9ydCBNYXBzTGF5b3V0RmFjdG9yeSBmcm9tICcuL21hcHMtbGF5b3V0JztcbmltcG9ydCBCb3R0b21XaWRnZXRGYWN0b3J5IGZyb20gJy4vYm90dG9tLXdpZGdldCc7XG5pbXBvcnQgTW9kYWxDb250YWluZXJGYWN0b3J5IGZyb20gJy4vbW9kYWwtY29udGFpbmVyJztcbmltcG9ydCBQbG90Q29udGFpbmVyRmFjdG9yeSBmcm9tICcuL3Bsb3QtY29udGFpbmVyJztcbmltcG9ydCBOb3RpZmljYXRpb25QYW5lbEZhY3RvcnkgZnJvbSAnLi9ub3RpZmljYXRpb24tcGFuZWwnO1xuaW1wb3J0IEdlb0NvZGVyUGFuZWxGYWN0b3J5IGZyb20gJy4vZ2VvY29kZXItcGFuZWwnO1xuaW1wb3J0IEVmZmVjdE1hbmFnZXJGYWN0b3J5IGZyb20gJy4vZWZmZWN0cy9lZmZlY3QtbWFuYWdlcic7XG5pbXBvcnQgRG5kQ29udGV4dEZhY3RvcnkgZnJvbSAnLi9kbmQtY29udGV4dCc7XG5pbXBvcnQge0Nsb3VkTGlzdFByb3ZpZGVyfSBmcm9tICcuL2hvb2tzL3VzZS1jbG91ZC1saXN0LXByb3ZpZGVyJztcblxuaW1wb3J0IHtcbiAgZmlsdGVyT2JqZWN0QnlQcmVkaWNhdGUsXG4gIHZhbGlkYXRlVG9rZW4sXG4gIG1lcmdlTWVzc2FnZXMsXG4gIG9ic2VydmVEaW1lbnNpb25zLFxuICB1bm9ic2VydmVEaW1lbnNpb25zLFxuICBoYXNQb3J0YWJsZVdpZHRoLFxuICBnZXRBcHBsaWNhdGlvbkNvbmZpZ1xufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuaW1wb3J0IHt0aGVtZSBhcyBiYXNpY1RoZW1lLCB0aGVtZUxULCB0aGVtZUJTLCBicmVha1BvaW50VmFsdWVzfSBmcm9tICdAa2VwbGVyLmdsL3N0eWxlcyc7XG5pbXBvcnQge0tlcGxlckdsU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuaW1wb3J0IHtQcm92aWRlcn0gZnJvbSAnQGtlcGxlci5nbC9jbG91ZC1wcm92aWRlcnMnO1xuXG4vLyBNYXliZSB3ZSBzaG91bGQgdGhpbmsgYWJvdXQgZXhwb3J0aW5nIHRoaXMgb3IgY3JlYXRpbmcgYSB2YXJpYWJsZVxuLy8gYXMgcGFydCBvZiB0aGUgYmFzZS5qcyB0aGVtZVxuY29uc3QgR2xvYmFsU3R5bGUgPSBzdHlsZWQuZGl2YFxuICBmb250LWZhbWlseTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5mb250RmFtaWx5fTtcbiAgZm9udC13ZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZm9udFdlaWdodH07XG4gIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5mb250U2l6ZX07XG4gIGxpbmUtaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxpbmVIZWlnaHR9O1xuXG4gICosXG4gICo6YmVmb3JlLFxuICAqOmFmdGVyIHtcbiAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cblxuICB1bCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICBsaSB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgYSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxhYmVsQ29sb3J9O1xuICB9XG5cbiAgOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLm1hcGxpYnJlZ2wtY3RybCAubWFwbGlicmVnbC1jdHJsLWxvZ28ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAubWFwYm94Z2wtY3RybCAubWFwYm94Z2wtY3RybC1sb2dvIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5gO1xuXG50eXBlIEJvdHRvbVdpZGdldE91dGVyUHJvcHMgPSB7XG4gIGFic29sdXRlPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IEJvdHRvbVdpZGdldE91dGVyID0gc3R5bGVkLmRpdjxCb3R0b21XaWRnZXRPdXRlclByb3BzPihcbiAgKHthYnNvbHV0ZX0pID0+IGBcbiAgJHthYnNvbHV0ZSA/ICdwb3NpdGlvbjogYWJzb2x1dGU7IGJvdHRvbTogMDsgcmlnaHQ6IDA7JyA6ICcnfVxuICBwb2ludGVyLWV2ZW50czogbm9uZTsgLyogcHJldmVudCBwYWRkaW5nIGZyb20gYmxvY2tpbmcgaW5wdXQgKi9cbiAgJiA+ICoge1xuICAgIC8qIGFsbCBjaGlsZHJlbiBzaG91bGQgYWxsb3cgaW5wdXQgKi9cbiAgICBwb2ludGVyLWV2ZW50czogYWxsO1xuICB9YFxuKTtcblxuZXhwb3J0IGNvbnN0IGlzVmlld3BvcnREaXNqb2ludGVkID0gcHJvcHMgPT4ge1xuICByZXR1cm4gKFxuICAgIHByb3BzLm1hcFN0YXRlLmlzU3BsaXQgJiZcbiAgICAhcHJvcHMubWFwU3RhdGUuaXNWaWV3cG9ydFN5bmNlZCAmJlxuICAgIHByb3BzLm1hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzLmxlbmd0aCA+IDFcbiAgKTtcbn07XG5cbnR5cGUgTWFwU3RhdGVQcm9wcyA9IHtcbiAgbWFwU3RhdGU6IE1hcFN0YXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcFN0YXRlU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgWyhwcm9wczogTWFwU3RhdGVQcm9wcykgPT4gcHJvcHMubWFwU3RhdGUsIChfOiBNYXBTdGF0ZVByb3BzLCBpbmRleD86IG51bWJlcikgPT4gaW5kZXhdLFxuICAobWFwU3RhdGU6IE1hcFN0YXRlLCBpbmRleD86IG51bWJlcik6IE1hcFN0YXRlID0+IHtcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShpbmRleCkpIHtcbiAgICAgIC8vIGVpdGhlciBubyBpbmRleCBhcmcgb3IgYW4gaW52YWxpZCBpbmRleCB3YXMgcHJvdmlkZWRcbiAgICAgIC8vIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGVpdGhlciAwIG9yIDEgd2hlbiBpbiBzcGxpdCBtb2RlXG4gICAgICAvLyBvbmx5IHVzZSB0aGUgbWFwU3RhdGVcbiAgICAgIHJldHVybiBtYXBTdGF0ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXNWaWV3cG9ydERpc2pvaW50ZWQoe21hcFN0YXRlfSlcbiAgICAgID8gLy8gbWl4IHRvZ2V0aGVyIHRoZSB2aWV3cG9ydCBwcm9wZXJ0aWVzIGludGVuZGVkIGZvciB0aGlzIGRpc2pvaW50ZWQgPE1hcENvbnRhaW5lcj4gd2l0aCB0aGUgb3RoZXIgbmVjZXNzYXJ5IG1hcFN0YXRlIHByb3BlcnRpZXNcbiAgICAgICAgey4uLm1hcFN0YXRlLCAuLi5tYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0c1tpbmRleCB8fCAwXX1cbiAgICAgIDogLy8gb3RoZXJ3aXNlIG9ubHkgdXNlIHRoZSBtYXBTdGF0ZVxuICAgICAgICBtYXBTdGF0ZTtcbiAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IG1hcEZpZWxkc1NlbGVjdG9yID0gKHByb3BzOiBLZXBsZXJHTFByb3BzLCBpbmRleCA9IDApID0+ICh7XG4gIGdldE1hcGJveFJlZjogcHJvcHMuZ2V0TWFwYm94UmVmLFxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogcHJvcHMubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gIG1hcGJveEFwaVVybDogcHJvcHMubWFwYm94QXBpVXJsID8gcHJvcHMubWFwYm94QXBpVXJsIDogREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMubWFwYm94QXBpVXJsLFxuICBtYXBTdGF0ZTogbWFwU3RhdGVTZWxlY3Rvcihwcm9wcywgaW5kZXgpLFxuICBkYXRhc2V0QXR0cmlidXRpb25zOiBhdHRyaWJ1dGlvblNlbGVjdG9yKHByb3BzKS5zb3VyY2VzLFxuICBtYXBTdHlsZTogcHJvcHMubWFwU3R5bGUsXG4gIG9uRGVja0luaXRpYWxpemVkOiBwcm9wcy5vbkRlY2tJbml0aWFsaXplZCxcbiAgb25WaWV3U3RhdGVDaGFuZ2U6IHByb3BzLm9uVmlld1N0YXRlQ2hhbmdlLFxuICBvbk1vdXNlTW92ZTogcHJvcHMub25Nb3VzZU1vdmUsXG4gIGRlY2tHbFByb3BzOiBwcm9wcy5kZWNrR2xQcm9wcyxcbiAgdWlTdGF0ZUFjdGlvbnM6IHByb3BzLnVpU3RhdGVBY3Rpb25zLFxuICB2aXNTdGF0ZUFjdGlvbnM6IHByb3BzLnZpc1N0YXRlQWN0aW9ucyxcbiAgbWFwU3RhdGVBY3Rpb25zOiBwcm9wcy5tYXBTdGF0ZUFjdGlvbnMsXG5cbiAgLy8gdmlzU3RhdGVcbiAgdmlzU3RhdGU6IHByb3BzLnZpc1N0YXRlLFxuXG4gIC8vIHVpU3RhdGVcbiAgYWN0aXZlU2lkZVBhbmVsOiBwcm9wcy51aVN0YXRlLmFjdGl2ZVNpZGVQYW5lbCxcbiAgbWFwQ29udHJvbHM6IHByb3BzLnVpU3RhdGUubWFwQ29udHJvbHMsXG4gIHJlYWRPbmx5OiBwcm9wcy51aVN0YXRlLnJlYWRPbmx5LFxuICBsb2NhbGU6IHByb3BzLnVpU3RhdGUubG9jYWxlLFxuICBpc0xvYWRpbmdJbmRpY2F0b3JWaXNpYmxlOiBOdW1iZXIocHJvcHMudmlzU3RhdGUubG9hZGluZ0luZGljYXRvclZhbHVlKSA+IDAsXG4gIHNpZGVQYW5lbFdpZHRoOiBwcm9wcy5zaWRlUGFuZWxXaWR0aCA/IHByb3BzLnNpZGVQYW5lbFdpZHRoIDogREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMud2lkdGgsXG5cbiAgLy8gbWFwU3R5bGVcbiAgdG9wTWFwQ29udGFpbmVyUHJvcHM6IHByb3BzLnRvcE1hcENvbnRhaW5lclByb3BzLFxuICBib3R0b21NYXBDb250YWluZXJQcm9wczogcHJvcHMuYm90dG9tTWFwQ29udGFpbmVyUHJvcHMsXG5cbiAgLy8gdHJhbnNmb3JtUmVxdWVzdCBmb3IgTWFwYm94IGJhc2VtYXBzXG4gIHRyYW5zZm9ybVJlcXVlc3Q6IHByb3BzLnRyYW5zZm9ybVJlcXVlc3Rcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmlzaWJsZURhdGFzZXRzKGRhdGFzZXRzKSB7XG4gIC8vIFdlIGRvbid0IHdhbnQgR2VvY29kZXIgZGF0YXNldCB0byBiZSBwcmVzZW50IGluIFNpZGVQYW5lbCBkYXRhc2V0IGxpc3RcbiAgcmV0dXJuIGZpbHRlck9iamVjdEJ5UHJlZGljYXRlKGRhdGFzZXRzLCBrZXkgPT4ga2V5ICE9PSBHRU9DT0RFUl9EQVRBU0VUX05BTUUpO1xufVxuXG5leHBvcnQgY29uc3Qgc2lkZVBhbmVsU2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMsIGF2YWlsYWJsZVByb3ZpZGVycywgZmlsdGVyZWREYXRhc2V0cykgPT4gKHtcbiAgYXBwTmFtZTogcHJvcHMuYXBwTmFtZSA/IHByb3BzLmFwcE5hbWUgOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy5hcHBOYW1lLFxuICB2ZXJzaW9uOiBwcm9wcy52ZXJzaW9uID8gcHJvcHMudmVyc2lvbiA6IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLnZlcnNpb24sXG4gIGFwcFdlYnNpdGU6IHByb3BzLmFwcFdlYnNpdGUsXG4gIG1hcFN0eWxlOiBwcm9wcy5tYXBTdHlsZSxcbiAgb25TYXZlTWFwOiBwcm9wcy5vblNhdmVNYXAsXG4gIHVpU3RhdGU6IHByb3BzLnVpU3RhdGUsXG4gIG1hcFN0eWxlQWN0aW9uczogcHJvcHMubWFwU3R5bGVBY3Rpb25zLFxuICB2aXNTdGF0ZUFjdGlvbnM6IHByb3BzLnZpc1N0YXRlQWN0aW9ucyxcbiAgdWlTdGF0ZUFjdGlvbnM6IHByb3BzLnVpU3RhdGVBY3Rpb25zLFxuICBtYXBTdGF0ZUFjdGlvbnM6IHByb3BzLm1hcFN0YXRlQWN0aW9ucyxcblxuICBkYXRhc2V0czogZmlsdGVyZWREYXRhc2V0cyxcbiAgZmlsdGVyczogcHJvcHMudmlzU3RhdGUuZmlsdGVycyxcbiAgbGF5ZXJzOiBwcm9wcy52aXNTdGF0ZS5sYXllcnMsXG4gIGxheWVyT3JkZXI6IHByb3BzLnZpc1N0YXRlLmxheWVyT3JkZXIsXG4gIGxheWVyQ2xhc3NlczogcHJvcHMudmlzU3RhdGUubGF5ZXJDbGFzc2VzLFxuICBpbnRlcmFjdGlvbkNvbmZpZzogcHJvcHMudmlzU3RhdGUuaW50ZXJhY3Rpb25Db25maWcsXG4gIG1hcEluZm86IHByb3BzLnZpc1N0YXRlLm1hcEluZm8sXG4gIGxheWVyQmxlbmRpbmc6IHByb3BzLnZpc1N0YXRlLmxheWVyQmxlbmRpbmcsXG4gIG92ZXJsYXlCbGVuZGluZzogcHJvcHMudmlzU3RhdGUub3ZlcmxheUJsZW5kaW5nLFxuXG4gIHdpZHRoOiBwcm9wcy5zaWRlUGFuZWxXaWR0aCA/IHByb3BzLnNpZGVQYW5lbFdpZHRoIDogREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMud2lkdGgsXG4gIGF2YWlsYWJsZVByb3ZpZGVycyxcbiAgbWFwU2F2ZWQ6IHByb3BzLnByb3ZpZGVyU3RhdGUubWFwU2F2ZWRcbn0pO1xuXG5leHBvcnQgY29uc3QgcGxvdENvbnRhaW5lclNlbGVjdG9yID0gKHByb3BzOiBLZXBsZXJHTFByb3BzKSA9PiAoe1xuICB3aWR0aDogcHJvcHMud2lkdGgsXG4gIGhlaWdodDogcHJvcHMuaGVpZ2h0LFxuICByYXRpbzogcHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZS5yYXRpbyxcbiAgcmVzb2x1dGlvbjogcHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZS5yZXNvbHV0aW9uLFxuICBsZWdlbmQ6IHByb3BzLnVpU3RhdGUuZXhwb3J0SW1hZ2UubGVnZW5kLFxuICBjZW50ZXI6IHByb3BzLnVpU3RhdGUuZXhwb3J0SW1hZ2UuY2VudGVyLFxuICBpbWFnZVNpemU6IHByb3BzLnVpU3RhdGUuZXhwb3J0SW1hZ2UuaW1hZ2VTaXplLFxuICBlc2NhcGVYaHRtbEZvcldlYnBhY2s6IHByb3BzLnVpU3RhdGUuZXhwb3J0SW1hZ2UuZXNjYXBlWGh0bWxGb3JXZWJwYWNrLFxuXG4gIG1hcEZpZWxkczogbWFwRmllbGRzU2VsZWN0b3IocHJvcHMpLFxuICBhZGROb3RpZmljYXRpb246IHByb3BzLnVpU3RhdGVBY3Rpb25zLmFkZE5vdGlmaWNhdGlvbixcbiAgc2V0RXhwb3J0SW1hZ2VTZXR0aW5nOiBwcm9wcy51aVN0YXRlQWN0aW9ucy5zZXRFeHBvcnRJbWFnZVNldHRpbmcsXG4gIHNldEV4cG9ydEltYWdlRGF0YVVyaTogcHJvcHMudWlTdGF0ZUFjdGlvbnMuc2V0RXhwb3J0SW1hZ2VEYXRhVXJpLFxuICBzZXRFeHBvcnRJbWFnZUVycm9yOiBwcm9wcy51aVN0YXRlQWN0aW9ucy5zZXRFeHBvcnRJbWFnZUVycm9yLFxuICBzcGxpdE1hcHM6IHByb3BzLnZpc1N0YXRlLnNwbGl0TWFwc1xufSk7XG5cbmV4cG9ydCBjb25zdCBpc1NwbGl0U2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMpID0+XG4gIHByb3BzLnZpc1N0YXRlLnNwbGl0TWFwcyAmJiBwcm9wcy52aXNTdGF0ZS5zcGxpdE1hcHMubGVuZ3RoID4gMTtcblxuZXhwb3J0IGNvbnN0IGJvdHRvbVdpZGdldFNlbGVjdG9yID0gKHByb3BzOiBLZXBsZXJHTFByb3BzLCB0aGVtZSkgPT4gKHtcbiAgZmlsdGVyczogcHJvcHMudmlzU3RhdGUuZmlsdGVycyxcbiAgZGF0YXNldHM6IHByb3BzLnZpc1N0YXRlLmRhdGFzZXRzLFxuICB1aVN0YXRlOiBwcm9wcy51aVN0YXRlLFxuICBsYXllcnM6IHByb3BzLnZpc1N0YXRlLmxheWVycyxcbiAgYW5pbWF0aW9uQ29uZmlnOiBwcm9wcy52aXNTdGF0ZS5hbmltYXRpb25Db25maWcsXG4gIHZpc1N0YXRlQWN0aW9uczogcHJvcHMudmlzU3RhdGVBY3Rpb25zLFxuICB0b2dnbGVNb2RhbDogcHJvcHMudWlTdGF0ZUFjdGlvbnMudG9nZ2xlTW9kYWwsXG4gIHNpZGVQYW5lbFdpZHRoOiBwcm9wcy51aVN0YXRlLnJlYWRPbmx5ID8gMCA6IHByb3BzLnNpZGVQYW5lbFdpZHRoICsgdGhlbWUuc2lkZVBhbmVsLm1hcmdpbi5sZWZ0XG59KTtcblxuZXhwb3J0IGNvbnN0IG1vZGFsQ29udGFpbmVyU2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMsIHJvb3ROb2RlKSA9PiAoe1xuICBhcHBOYW1lOiBwcm9wcy5hcHBOYW1lID8gcHJvcHMuYXBwTmFtZSA6IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLmFwcE5hbWUsXG4gIG1hcFN0eWxlOiBwcm9wcy5tYXBTdHlsZSxcbiAgdmlzU3RhdGU6IHByb3BzLnZpc1N0YXRlLFxuICBtYXBTdGF0ZTogcHJvcHMubWFwU3RhdGUsXG4gIHVpU3RhdGU6IHByb3BzLnVpU3RhdGUsXG4gIHByb3ZpZGVyU3RhdGU6IHByb3BzLnByb3ZpZGVyU3RhdGUsXG5cbiAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHByb3BzLm1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICBtYXBib3hBcGlVcmw6IHByb3BzLm1hcGJveEFwaVVybCxcbiAgdmlzU3RhdGVBY3Rpb25zOiBwcm9wcy52aXNTdGF0ZUFjdGlvbnMsXG4gIHVpU3RhdGVBY3Rpb25zOiBwcm9wcy51aVN0YXRlQWN0aW9ucyxcbiAgbWFwU3R5bGVBY3Rpb25zOiBwcm9wcy5tYXBTdHlsZUFjdGlvbnMsXG4gIHByb3ZpZGVyQWN0aW9uczogcHJvcHMucHJvdmlkZXJBY3Rpb25zLFxuXG4gIHJvb3ROb2RlLFxuICAvLyBVc2VyIGRlZmluZWQgY2xvdWQgcHJvdmlkZXIgcHJvcHNcbiAgY2xvdWRQcm92aWRlcnM6IHByb3BzLmNsb3VkUHJvdmlkZXJzXG4gICAgPyBwcm9wcy5jbG91ZFByb3ZpZGVyc1xuICAgIDogREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMuY2xvdWRQcm92aWRlcnMsXG4gIG9uRXhwb3J0VG9DbG91ZFN1Y2Nlc3M6IHByb3BzLm9uRXhwb3J0VG9DbG91ZFN1Y2Nlc3MsXG4gIG9uTG9hZENsb3VkTWFwU3VjY2VzczogcHJvcHMub25Mb2FkQ2xvdWRNYXBTdWNjZXNzLFxuICBvbkxvYWRDbG91ZE1hcEVycm9yOiBwcm9wcy5vbkxvYWRDbG91ZE1hcEVycm9yLFxuICBvbkV4cG9ydFRvQ2xvdWRFcnJvcjogcHJvcHMub25FeHBvcnRUb0Nsb3VkRXJyb3Jcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VvQ29kZXJQYW5lbFNlbGVjdG9yID0gKFxuICBwcm9wczogS2VwbGVyR0xQcm9wcyxcbiAgZGltZW5zaW9uczoge3dpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyfVxuKSA9PiAoe1xuICBpc0dlb2NvZGVyRW5hYmxlZDogcHJvcHMudmlzU3RhdGUuaW50ZXJhY3Rpb25Db25maWcuZ2VvY29kZXIuZW5hYmxlZCxcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHByb3BzLm1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICBtYXBTdGF0ZTogcHJvcHMubWFwU3RhdGUsXG4gIHVpU3RhdGU6IHByb3BzLnVpU3RhdGUsXG4gIGxheWVyT3JkZXI6IHByb3BzLnZpc1N0YXRlLmxheWVyT3JkZXIsXG4gIHVwZGF0ZVZpc0RhdGE6IHByb3BzLnZpc1N0YXRlQWN0aW9ucy51cGRhdGVWaXNEYXRhLFxuICByZW1vdmVEYXRhc2V0OiBwcm9wcy52aXNTdGF0ZUFjdGlvbnMucmVtb3ZlRGF0YXNldCxcbiAgdXBkYXRlTWFwOiBwcm9wcy5tYXBTdGF0ZUFjdGlvbnMudXBkYXRlTWFwLFxuICBhcHBXaWR0aDogZGltZW5zaW9ucy53aWR0aFxufSk7XG5cbi8qKlxuICogUmV0dXJucyBhcnJheSBvZiB1bmlxdWUgZGF0YXNldCBhdHRyaWJ1dGlvbnMsIGVhY2ggd2l0aCB0aXRsZSBhbmQgdXJsIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBkYXRhc2V0QXR0cmlidXRpb25TZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICBbc3RhdGUgPT4gc3RhdGUudmlzU3RhdGUuZGF0YXNldHNdLFxuICBkYXRhc2V0cyA9PiB7XG4gICAgY29uc3QgdW5pcXVlQXR0cmlidXRpb25zOiBEYXRhc2V0QXR0cmlidXRpb25bXSA9IFtdO1xuICAgIE9iamVjdC5rZXlzKGRhdGFzZXRzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCBkcyA9IGRhdGFzZXRzW2tleV07XG4gICAgICBjb25zdCBhdHRyaWJ1dGlvbnMgPSBkcz8ubWV0YWRhdGE/LmF0dHJpYnV0aW9ucztcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGF0dHJpYnV0aW9ucykpIHtcbiAgICAgICAgYXR0cmlidXRpb25zLmZvckVhY2goYXR0cmlidXRpb24gPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgYXR0cmlidXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAvLyBhdHRyaWJ1dGlvbiBjYW4gYmUgYSByYXcgc3RyaW5nIG9yIGEgc3RyaW5nIHdpdGggbGluayB0YWdzXG4gICAgICAgICAgICBjb25zdCBsaW5rcyA9IGF0dHJpYnV0aW9uLm1hdGNoKC88YVteXSs/YT4vZyk7XG4gICAgICAgICAgICBpZiAobGlua3MpIHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsaW5rcz8uZm9yRWFjaChsaW5rID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGhyZWYgPSBsaW5rLm1hdGNoKC9ocmVmPVwiKFteXCJdKikvKT8uWzFdO1xuICAgICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBsaW5rLm1hdGNoKC90aXRsZT1cIihbXlwiXSopLyk/LlsxXTtcbiAgICAgICAgICAgICAgICAgIGlmIChocmVmICYmIHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuaXF1ZUF0dHJpYnV0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYCR7bGluay5pbmRleE9mKCcmY29weTsnKSA+PSAwID8gJ8KpICcgOiAnJ30ke3RpdGxlfWAsXG4gICAgICAgICAgICAgICAgICAgICAgdXJsOiBocmVmXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIC8vIGp1c3QgaWdub3JlIGZvciBub3dcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdW5pcXVlQXR0cmlidXRpb25zLnB1c2goe3RpdGxlOiBhdHRyaWJ1dGlvbiwgdXJsOiBudWxsfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdW5pcXVlQXR0cmlidXRpb25zO1xuICB9XG4pO1xuXG4vKipcbiAqIERlZHVwbGljYXRlZCBkYXRhc2V0IGFuZCBsYXllciB0ZXh0IGF0dHJpYnV0aW9ucyBhbmQgbG9nb3MuXG4gKiBSZXR1cm5zIHRleHQgYXR0cmlidXRpb25zIGFuZCBsb2dvcyB0byBkaXNwbGF5LlxuICovXG5leHBvcnQgY29uc3QgYXR0cmlidXRpb25TZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICBbZGF0YXNldEF0dHJpYnV0aW9uU2VsZWN0b3JdLFxuICBkYXRhc2V0QXR0cmlidXRpb25zID0+IHtcbiAgICAvLyBUT0RPIGNvbGxlY3QgYXR0cmlidXRpb25zIGZyb20gbGF5ZXJzLCBhbmQgbWVyZ2Ugd2l0aCBkYXRhc2V0IGF0dHJpYnV0aW9ucyBoZXJlXG4gICAgY29uc3QgdW5pcXVlVGV4dEF0dHJpYnV0aW9ucyA9IGRhdGFzZXRBdHRyaWJ1dGlvbnM7XG4gICAgY29uc3QgbG9nb3M6IEF0dHJpYnV0aW9uV2l0aFN0eWxlW10gPSBbXTtcblxuICAgIHJldHVybiB7c291cmNlczogdW5pcXVlVGV4dEF0dHJpYnV0aW9ucywgbG9nb3N9O1xuICB9XG4pO1xuXG5leHBvcnQgY29uc3Qgbm90aWZpY2F0aW9uUGFuZWxTZWxlY3RvciA9IChwcm9wczogS2VwbGVyR0xQcm9wcykgPT4gKHtcbiAgcmVtb3ZlTm90aWZpY2F0aW9uOiBwcm9wcy51aVN0YXRlQWN0aW9ucy5yZW1vdmVOb3RpZmljYXRpb24sXG4gIG5vdGlmaWNhdGlvbnM6IHByb3BzLnVpU3RhdGUubm90aWZpY2F0aW9uc1xufSk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0tFUExFUl9HTF9QUk9QUyA9IHtcbiAgbWFwU3R5bGVzOiBbXSxcbiAgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQ6IGZhbHNlLFxuICBtYXBib3hBcGlVcmw6IERFRkFVTFRfTUFQQk9YX0FQSV9VUkwsXG4gIHdpZHRoOiA4MDAsXG4gIGhlaWdodDogODAwLFxuICBhcHBOYW1lOiBLRVBMRVJfR0xfTkFNRSxcbiAgdmVyc2lvbjogS0VQTEVSX0dMX1ZFUlNJT04sXG4gIHNpZGVQYW5lbFdpZHRoOiBESU1FTlNJT05TLnNpZGVQYW5lbC53aWR0aCxcbiAgdGhlbWU6IHt9LFxuICBjbG91ZFByb3ZpZGVyczogW10sXG4gIHJlYWRPbmx5OiBmYWxzZSxcbiAgZmVhdHVyZUZsYWdzOiB7fVxufTtcblxudHlwZSBLZXBsZXJHTEJhc2ljUHJvcHMgPSB7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIG1hcGJveEFwaVVybD86IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgd2lkdGg/OiBudW1iZXI7XG4gIGhlaWdodD86IG51bWJlcjtcblxuICBhcHBXZWJzaXRlPzogYW55O1xuICBvblNhdmVNYXA/OiAoKSA9PiB2b2lkO1xuICBvblZpZXdTdGF0ZUNoYW5nZT86ICh2aWV3U3RhdGU6IFZpZXdwb3J0KSA9PiB2b2lkO1xuICBvbkRlY2tJbml0aWFsaXplZD86ICgpID0+IHZvaWQ7XG4gIG9uS2VwbGVyR2xJbml0aWFsaXplZD86ICgpID0+IHZvaWQ7XG4gIGdldE1hcGJveFJlZj86ICgpID0+IFJlYWN0LlJlZk9iamVjdDxhbnk+O1xuICBtYXBTdHlsZXM/OiB7aWQ6IHN0cmluZzsgc3R5bGU/OiBvYmplY3R9W107XG4gIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0PzogYm9vbGVhbjtcbiAgYXBwTmFtZT86IHN0cmluZztcbiAgdmVyc2lvbj86IHN0cmluZztcbiAgc2lkZVBhbmVsV2lkdGg/OiBudW1iZXI7XG4gIHRoZW1lPzogb2JqZWN0O1xuICBjbG91ZFByb3ZpZGVycz86IFByb3ZpZGVyW107XG4gIGRlY2tHbFByb3BzPzogb2JqZWN0O1xuICBvbkxvYWRDbG91ZE1hcFN1Y2Nlc3M/OiBPblN1Y2Nlc3NDYWxsQmFjaztcbiAgb25Mb2FkQ2xvdWRNYXBFcnJvcj86IE9uRXJyb3JDYWxsQmFjaztcbiAgb25Nb3VzZU1vdmU/OiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQgJiB7bG5nTGF0PzogW251bWJlciwgbnVtYmVyXX0pID0+IHZvaWQ7XG4gIG9uRXhwb3J0VG9DbG91ZFN1Y2Nlc3M/OiBPblN1Y2Nlc3NDYWxsQmFjaztcbiAgb25FeHBvcnRUb0Nsb3VkRXJyb3I/OiBPbkVycm9yQ2FsbEJhY2s7XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbiAgZmVhdHVyZUZsYWdzPzogRmVhdHVyZUZsYWdzO1xuXG4gIGxvY2FsZU1lc3NhZ2VzPzoge1trZXk6IHN0cmluZ106IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9fTtcbiAgZGlzcGF0Y2g6IERpc3BhdGNoPGFueT47XG5cbiAgdG9wTWFwQ29udGFpbmVyUHJvcHM/OiBvYmplY3Q7XG4gIGJvdHRvbU1hcENvbnRhaW5lclByb3BzPzogb2JqZWN0O1xuXG4gIHRyYW5zZm9ybVJlcXVlc3Q/OiAodXJsOiBzdHJpbmcpID0+IHt1cmw6IHN0cmluZ307XG59O1xuXG50eXBlIEtlcGxlckdMUHJvcHMgPSBLZXBsZXJHbFN0YXRlICYgS2VwbGVyR2xBY3Rpb25zICYgS2VwbGVyR0xCYXNpY1Byb3BzO1xudHlwZSBLZXBsZXJHTENvbXBTdGF0ZSA9IHtcbiAgZGltZW5zaW9uczoge3dpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyfSB8IG51bGw7XG59O1xuXG5LZXBsZXJHbEZhY3RvcnkuZGVwcyA9IFtcbiAgQm90dG9tV2lkZ2V0RmFjdG9yeSxcbiAgR2VvQ29kZXJQYW5lbEZhY3RvcnksXG4gIE1hcENvbnRhaW5lckZhY3RvcnksXG4gIE1hcHNMYXlvdXRGYWN0b3J5LFxuICBNb2RhbENvbnRhaW5lckZhY3RvcnksXG4gIFNpZGVQYW5lbEZhY3RvcnksXG4gIFBsb3RDb250YWluZXJGYWN0b3J5LFxuICBOb3RpZmljYXRpb25QYW5lbEZhY3RvcnksXG4gIERuZENvbnRleHRGYWN0b3J5LFxuICBFZmZlY3RNYW5hZ2VyRmFjdG9yeVxuXTtcblxuZnVuY3Rpb24gS2VwbGVyR2xGYWN0b3J5KFxuICBCb3R0b21XaWRnZXQ6IFJldHVyblR5cGU8dHlwZW9mIEJvdHRvbVdpZGdldEZhY3Rvcnk+LFxuICBHZW9Db2RlclBhbmVsOiBSZXR1cm5UeXBlPHR5cGVvZiBHZW9Db2RlclBhbmVsRmFjdG9yeT4sXG4gIE1hcENvbnRhaW5lcjogUmV0dXJuVHlwZTx0eXBlb2YgTWFwQ29udGFpbmVyRmFjdG9yeT4sXG4gIE1hcHNMYXlvdXQ6IFJldHVyblR5cGU8dHlwZW9mIE1hcHNMYXlvdXRGYWN0b3J5PixcbiAgTW9kYWxDb250YWluZXI6IFJldHVyblR5cGU8dHlwZW9mIE1vZGFsQ29udGFpbmVyRmFjdG9yeT4sXG4gIFNpZGVQYW5lbDogUmV0dXJuVHlwZTx0eXBlb2YgU2lkZVBhbmVsRmFjdG9yeT4sXG4gIFBsb3RDb250YWluZXI6IFJldHVyblR5cGU8dHlwZW9mIFBsb3RDb250YWluZXJGYWN0b3J5PixcbiAgTm90aWZpY2F0aW9uUGFuZWw6IFJldHVyblR5cGU8dHlwZW9mIE5vdGlmaWNhdGlvblBhbmVsRmFjdG9yeT4sXG4gIERuZENvbnRleHQ6IFJldHVyblR5cGU8dHlwZW9mIERuZENvbnRleHRGYWN0b3J5PlxuKTogUmVhY3QuQ29tcG9uZW50VHlwZTxLZXBsZXJHTEJhc2ljUHJvcHMgJiB7c2VsZWN0b3I6ICguLi5hcmdzOiBhbnlbXSkgPT4gS2VwbGVyR2xTdGF0ZX0+IHtcbiAgLyoqIEB0eXBlZGVmIHtpbXBvcnQoJy4va2VwbGVyLWdsJykuVW5jb25uZWN0ZWRLZXBsZXJHbFByb3BzfSBLZXBsZXJHbFByb3BzICovXG4gIC8qKiBAYXVnbWVudHMgUmVhY3QuQ29tcG9uZW50PEtlcGxlckdsUHJvcHM+ICovXG4gIGNsYXNzIEtlcGxlckdMIGV4dGVuZHMgQ29tcG9uZW50PFxuICAgIEtlcGxlckdMUHJvcHMgJiB7c2VsZWN0b3I6ICguLi5hcmdzOiBhbnlbXSkgPT4gS2VwbGVyR2xTdGF0ZX0sXG4gICAgS2VwbGVyR0xDb21wU3RhdGVcbiAgPiB7XG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTO1xuXG4gICAgc3RhdGU6IEtlcGxlckdMQ29tcFN0YXRlID0ge1xuICAgICAgZGltZW5zaW9uczogbnVsbFxuICAgIH07XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmJhc2VNYXBMaWJyYXJ5Q29uZmlnPy5bJ21hcGJveCddPy5tYXBMaWJOYW1lID09PSAnTWFwYm94Jykge1xuICAgICAgICB0aGlzLl92YWxpZGF0ZU1hcGJveFRva2VuKCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9sb2FkTWFwU3R5bGUoKTtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5vbktlcGxlckdsSW5pdGlhbGl6ZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbktlcGxlckdsSW5pdGlhbGl6ZWQoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnJvb3QuY3VycmVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIG9ic2VydmVEaW1lbnNpb25zKHRoaXMucm9vdC5jdXJyZW50LCB0aGlzLl9oYW5kbGVSZXNpemUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgaWYgKHRoaXMucm9vdC5jdXJyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgdW5vYnNlcnZlRGltZW5zaW9ucyh0aGlzLnJvb3QuY3VycmVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX2hhbmRsZVJlc2l6ZSA9IGRpbWVuc2lvbnMgPT4ge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7ZGltZW5zaW9uc30pO1xuICAgIH07XG5cbiAgICBzdGF0aWMgY29udGV4dFR5cGUgPSBSb290Q29udGV4dDtcblxuICAgIHJvb3QgPSBjcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG4gICAgYm90dG9tV2lkZ2V0UmVmID0gY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xuXG4gICAgLyogc2VsZWN0b3JzICovXG4gICAgdGhlbWVTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLnRoZW1lO1xuICAgIGF2YWlsYWJsZVRoZW1lU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3Rvcih0aGlzLnRoZW1lU2VsZWN0b3IsIHRoZW1lID0+XG4gICAgICB0eXBlb2YgdGhlbWUgPT09ICdvYmplY3QnXG4gICAgICAgID8ge1xuICAgICAgICAgICAgLi4uYmFzaWNUaGVtZSxcbiAgICAgICAgICAgIC4uLnRoZW1lXG4gICAgICAgICAgfVxuICAgICAgICA6IHRoZW1lID09PSBUSEVNRS5saWdodFxuICAgICAgICA/IHRoZW1lTFRcbiAgICAgICAgOiB0aGVtZSA9PT0gVEhFTUUuYmFzZVxuICAgICAgICA/IHRoZW1lQlNcbiAgICAgICAgOiB0aGVtZVxuICAgICk7XG5cbiAgICBkYXRhc2V0c1NlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMudmlzU3RhdGUuZGF0YXNldHM7XG4gICAgZmlsdGVyZWREYXRhc2V0c1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IodGhpcy5kYXRhc2V0c1NlbGVjdG9yLCBnZXRWaXNpYmxlRGF0YXNldHMpO1xuXG4gICAgYXZhaWxhYmxlUHJvdmlkZXJzID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICAocHJvcHM6IEtlcGxlckdMUHJvcHMpID0+IHByb3BzLmNsb3VkUHJvdmlkZXJzLFxuICAgICAgcHJvdmlkZXJzID0+XG4gICAgICAgIEFycmF5LmlzQXJyYXkocHJvdmlkZXJzKSAmJiBwcm92aWRlcnMubGVuZ3RoXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGhhc1N0b3JhZ2U6IHByb3ZpZGVycy5zb21lKHAgPT4gcC5oYXNQcml2YXRlU3RvcmFnZSgpKSxcbiAgICAgICAgICAgICAgaGFzU2hhcmU6IHByb3ZpZGVycy5zb21lKHAgPT4gcC5oYXNTaGFyaW5nVXJsKCkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7fVxuICAgICk7XG5cbiAgICBsb2NhbGVNZXNzYWdlc1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICAocHJvcHM6IEtlcGxlckdMUHJvcHMpID0+IHByb3BzLmxvY2FsZU1lc3NhZ2VzLFxuICAgICAgY3VzdG9tTWVzc2FnZXMgPT4gKGN1c3RvbU1lc3NhZ2VzID8gbWVyZ2VNZXNzYWdlcyhtZXNzYWdlcywgY3VzdG9tTWVzc2FnZXMpIDogbWVzc2FnZXMpXG4gICAgKTtcblxuICAgIC8qIHByaXZhdGUgbWV0aG9kcyAqL1xuICAgIF92YWxpZGF0ZU1hcGJveFRva2VuKCkge1xuICAgICAgY29uc3Qge21hcGJveEFwaUFjY2Vzc1Rva2VufSA9IHRoaXMucHJvcHM7XG4gICAgICBpZiAoIXZhbGlkYXRlVG9rZW4obWFwYm94QXBpQWNjZXNzVG9rZW4pKSB7XG4gICAgICAgIENvbnNvbGUud2FybihNSVNTSU5HX01BUEJPWF9UT0tFTik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX2xvYWRNYXBTdHlsZSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGRlZmF1bHRTdHlsZXMgPSBPYmplY3QudmFsdWVzKHRoaXMucHJvcHMubWFwU3R5bGUubWFwU3R5bGVzKTtcbiAgICAgIC8vIGFkZCBpZCB0byBjdXN0b20gbWFwIHN0eWxlcyBpZiBub3QgZ2l2ZW5cbiAgICAgIGNvbnN0IGN1c3RvbVN0eWxlcyA9ICh0aGlzLnByb3BzLm1hcFN0eWxlcyB8fCBbXSkubWFwKG1zID0+ICh7XG4gICAgICAgIC4uLm1zLFxuICAgICAgICBpZDogbXMuaWQgfHwgZ2VuZXJhdGVIYXNoSWQoKVxuICAgICAgfSkpO1xuXG4gICAgICBjb25zdCBhbGxTdHlsZXMgPSBbLi4uY3VzdG9tU3R5bGVzLCAuLi5kZWZhdWx0U3R5bGVzXS5yZWR1Y2UoKGFjY3UsIHN0eWxlKSA9PiB7XG4gICAgICAgIGFjY3Vbc3R5bGUuaWRdID0gc3R5bGU7XG4gICAgICAgIHJldHVybiBhY2N1O1xuICAgICAgfSwge30pO1xuXG4gICAgICB0aGlzLnByb3BzLm1hcFN0eWxlQWN0aW9ucy5sb2FkTWFwU3R5bGVzKGFsbFN0eWxlcyk7XG4gICAgfTtcblxuICAgIF9kZWxldGVNYXBMYWJlbHMgPSAoY29udGFpbmVySWQsIGxheWVySWQpID0+IHtcbiAgICAgIHRoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLnRvZ2dsZUxheWVyRm9yTWFwKGNvbnRhaW5lcklkLCBsYXllcklkKTtcbiAgICB9O1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGlkID0gJ21hcCcsXG4gICAgICAgIHdpZHRoID0gREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLmhlaWdodCxcbiAgICAgICAgdWlTdGF0ZSxcbiAgICAgICAgdmlzU3RhdGUsXG4gICAgICAgIC8vIHJlYWRPbmx5IG92ZXJyaWRlXG4gICAgICAgIHJlYWRPbmx5LFxuXG4gICAgICAgIC8vIGZlYXR1cmVzXG4gICAgICAgIGZlYXR1cmVGbGFncyxcblxuICAgICAgICAvLyBjbG91ZCBwcm92aWRlcnNcbiAgICAgICAgY2xvdWRQcm92aWRlcnMgPSBbXVxuICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIGNvbnN0IGRpbWVuc2lvbnMgPSB0aGlzLnN0YXRlLmRpbWVuc2lvbnMgfHwge3dpZHRoLCBoZWlnaHR9O1xuICAgICAgY29uc3Qge1xuICAgICAgICBzcGxpdE1hcHMsIC8vIHRoaXMgd2lsbCBzdG9yZSBzdXBwb3J0IGZvciBzcGxpdCBtYXAgdmlldyBpcyBuZWNlc3NhcnlcbiAgICAgICAgaW50ZXJhY3Rpb25Db25maWdcbiAgICAgIH0gPSB2aXNTdGF0ZTtcblxuICAgICAgY29uc3QgaXNTcGxpdCA9IGlzU3BsaXRTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IHRoZW1lID0gdGhpcy5hdmFpbGFibGVUaGVtZVNlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgbG9jYWxlTWVzc2FnZXMgPSB0aGlzLmxvY2FsZU1lc3NhZ2VzU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBpc0V4cG9ydGluZ0ltYWdlID0gdWlTdGF0ZS5leHBvcnRJbWFnZS5leHBvcnRpbmc7XG4gICAgICBjb25zdCBhdmFpbGFibGVQcm92aWRlcnMgPSB0aGlzLmF2YWlsYWJsZVByb3ZpZGVycyh0aGlzLnByb3BzKTtcblxuICAgICAgY29uc3QgZmlsdGVyZWREYXRhc2V0cyA9IHRoaXMuZmlsdGVyZWREYXRhc2V0c1NlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3Qgc2lkZUZpZWxkcyA9IHNpZGVQYW5lbFNlbGVjdG9yKHRoaXMucHJvcHMsIGF2YWlsYWJsZVByb3ZpZGVycywgZmlsdGVyZWREYXRhc2V0cyk7XG4gICAgICBjb25zdCBwbG90Q29udGFpbmVyRmllbGRzID0gcGxvdENvbnRhaW5lclNlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgYm90dG9tV2lkZ2V0RmllbGRzID0gYm90dG9tV2lkZ2V0U2VsZWN0b3IodGhpcy5wcm9wcywgdGhlbWUpO1xuICAgICAgY29uc3QgbW9kYWxDb250YWluZXJGaWVsZHMgPSBtb2RhbENvbnRhaW5lclNlbGVjdG9yKHRoaXMucHJvcHMsIHRoaXMucm9vdC5jdXJyZW50KTtcbiAgICAgIGNvbnN0IGdlb0NvZGVyUGFuZWxGaWVsZHMgPSBnZW9Db2RlclBhbmVsU2VsZWN0b3IodGhpcy5wcm9wcywgZGltZW5zaW9ucyk7XG4gICAgICBjb25zdCBub3RpZmljYXRpb25QYW5lbEZpZWxkcyA9IG5vdGlmaWNhdGlvblBhbmVsU2VsZWN0b3IodGhpcy5wcm9wcyk7XG5cbiAgICAgIGNvbnN0IG1hcENvbnRhaW5lcnMgPSAhaXNTcGxpdFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIDxNYXBDb250YWluZXJcbiAgICAgICAgICAgICAgcHJpbWFyeT17dHJ1ZX1cbiAgICAgICAgICAgICAga2V5PXswfVxuICAgICAgICAgICAgICBpbmRleD17MH1cbiAgICAgICAgICAgICAgey4uLm1hcEZpZWxkc1NlbGVjdG9yKHRoaXMucHJvcHMpfVxuICAgICAgICAgICAgICBjb250YWluZXJJZD17MH1cbiAgICAgICAgICAgICAgZGVsZXRlTWFwTGFiZWxzPXt0aGlzLl9kZWxldGVNYXBMYWJlbHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIF1cbiAgICAgICAgOiBzcGxpdE1hcHMubWFwKChzZXR0aW5ncywgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxNYXBDb250YWluZXJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICBwcmltYXJ5PXtpbmRleCA9PT0gMX1cbiAgICAgICAgICAgICAgey4uLm1hcEZpZWxkc1NlbGVjdG9yKHRoaXMucHJvcHMsIGluZGV4KX1cbiAgICAgICAgICAgICAgY29udGFpbmVySWQ9e2luZGV4fVxuICAgICAgICAgICAgICBkZWxldGVNYXBMYWJlbHM9e3RoaXMuX2RlbGV0ZU1hcExhYmVsc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSk7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxSb290Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17dGhpcy5yb290fT5cbiAgICAgICAgICA8RmVhdHVyZUZsYWdzQ29udGV4dFByb3ZpZGVyIGZlYXR1cmVGbGFncz17ZmVhdHVyZUZsYWdzfT5cbiAgICAgICAgICAgIDxJbnRsUHJvdmlkZXIgbG9jYWxlPXt1aVN0YXRlLmxvY2FsZX0gbWVzc2FnZXM9e2xvY2FsZU1lc3NhZ2VzW3VpU3RhdGUubG9jYWxlXX0+XG4gICAgICAgICAgICAgIDxTdHlsZVNoZWV0TWFuYWdlciBzaG91bGRGb3J3YXJkUHJvcD17c2hvdWxkRm9yd2FyZFByb3B9PlxuICAgICAgICAgICAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+XG4gICAgICAgICAgICAgICAgICA8Q2xvdWRMaXN0UHJvdmlkZXIgcHJvdmlkZXJzPXtjbG91ZFByb3ZpZGVyc30+XG4gICAgICAgICAgICAgICAgICAgIDxHbG9iYWxTdHlsZVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImtlcGxlci1nbFwiXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9e2BrZXBsZXItZ2xfXyR7aWR9YH1cbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBgJHt3aWR0aH1weGAsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGAke2hlaWdodH1weGBcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy5yb290fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvblBhbmVsIHsuLi5ub3RpZmljYXRpb25QYW5lbEZpZWxkc30gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8RG5kQ29udGV4dCB2aXNTdGF0ZT17dmlzU3RhdGV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgeyF1aVN0YXRlLnJlYWRPbmx5ICYmICFyZWFkT25seSAmJiA8U2lkZVBhbmVsIHsuLi5zaWRlRmllbGRzfSAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYXBzTGF5b3V0IGNsYXNzTmFtZT1cIm1hcHNcIiBtYXBTdGF0ZT17dGhpcy5wcm9wcy5tYXBTdGF0ZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHttYXBDb250YWluZXJzfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9NYXBzTGF5b3V0PlxuICAgICAgICAgICAgICAgICAgICAgIDwvRG5kQ29udGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICB7aXNFeHBvcnRpbmdJbWFnZSAmJiA8UGxvdENvbnRhaW5lciB7Li4ucGxvdENvbnRhaW5lckZpZWxkc30gLz59XG4gICAgICAgICAgICAgICAgICAgICAgey8qIDEgZ2VvY29kZXI6IHNpbmdsZSBtb2RlIE9SIHNwbGl0IG1vZGUgYW5kIHN5bmNlZCB2aWV3cG9ydHMgKi99XG4gICAgICAgICAgICAgICAgICAgICAgeyFpc1ZpZXdwb3J0RGlzam9pbnRlZCh0aGlzLnByb3BzKSAmJiBpbnRlcmFjdGlvbkNvbmZpZy5nZW9jb2Rlci5lbmFibGVkICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxHZW9Db2RlclBhbmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZW9Db2RlclBhbmVsRmllbGRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zeW5jZWRWaWV3cG9ydHM9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIHsvKiAyIGdlb2NvZGVyczogc3BsaXQgbW9kZSBhbmQgdW5zeW5jZWQgdmlld3BvcnRzICovfVxuICAgICAgICAgICAgICAgICAgICAgIHtpc1ZpZXdwb3J0RGlzam9pbnRlZCh0aGlzLnByb3BzKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3Rpb25Db25maWcuZ2VvY29kZXIuZW5hYmxlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwQ29udGFpbmVycy5tYXAoKF9tYXBDb250YWluZXIsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxHZW9Db2RlclBhbmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2VvQ29kZXJQYW5lbEZpZWxkc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zeW5jZWRWaWV3cG9ydHM9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICA8Qm90dG9tV2lkZ2V0T3V0ZXIgYWJzb2x1dGU9eyFoYXNQb3J0YWJsZVdpZHRoKGJyZWFrUG9pbnRWYWx1ZXMpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCb3R0b21XaWRnZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdFJlZj17dGhpcy5ib3R0b21XaWRnZXRSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5ib3R0b21XaWRnZXRGaWVsZHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclc9e2RpbWVuc2lvbnMud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW1lPXt0aGVtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9Cb3R0b21XaWRnZXRPdXRlcj5cbiAgICAgICAgICAgICAgICAgICAgICA8TW9kYWxDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5tb2RhbENvbnRhaW5lckZpZWxkc31cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclc9e2RpbWVuc2lvbnMud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJIPXtkaW1lbnNpb25zLmhlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L0dsb2JhbFN0eWxlPlxuICAgICAgICAgICAgICAgICAgPC9DbG91ZExpc3RQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L1RoZW1lUHJvdmlkZXI+XG4gICAgICAgICAgICAgIDwvU3R5bGVTaGVldE1hbmFnZXI+XG4gICAgICAgICAgICA8L0ludGxQcm92aWRlcj5cbiAgICAgICAgICA8L0ZlYXR1cmVGbGFnc0NvbnRleHRQcm92aWRlcj5cbiAgICAgICAgPC9Sb290Q29udGV4dC5Qcm92aWRlcj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGtlcGxlckdsQ29ubmVjdChcbiAgICBtYXBTdGF0ZVRvUHJvcHMsXG4gICAgbWFrZU1hcERpc3BhdGNoVG9Qcm9wc1xuICApKHdpdGhUaGVtZShLZXBsZXJHTCkpIGFzIFJldHVyblR5cGU8dHlwZW9mIEtlcGxlckdsRmFjdG9yeT47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBTdGF0ZVRvUHJvcHMoc3RhdGU6IEtlcGxlckdsU3RhdGUsIHByb3BzOiBLZXBsZXJHTFByb3BzKSB7XG4gIHJldHVybiB7XG4gICAgLi4ucHJvcHMsXG4gICAgdmlzU3RhdGU6IHN0YXRlLnZpc1N0YXRlLFxuICAgIG1hcFN0eWxlOiBzdGF0ZS5tYXBTdHlsZSxcbiAgICBtYXBTdGF0ZTogc3RhdGUubWFwU3RhdGUsXG4gICAgdWlTdGF0ZTogc3RhdGUudWlTdGF0ZSxcbiAgICBwcm92aWRlclN0YXRlOiBzdGF0ZS5wcm92aWRlclN0YXRlXG4gIH07XG59XG5cbmNvbnN0IGRlZmF1bHRVc2VyQWN0aW9ucyA9IHt9O1xuXG5jb25zdCBnZXREaXNwYXRjaCA9IGRpc3BhdGNoID0+IGRpc3BhdGNoO1xuY29uc3QgZ2V0VXNlckFjdGlvbnMgPSAoZGlzcGF0Y2gsIHByb3BzKSA9PiBwcm9wcy5hY3Rpb25zIHx8IGRlZmF1bHRVc2VyQWN0aW9ucztcblxuLyoqIEB0eXBlIHsoKSA9PiBpbXBvcnQoJ3Jlc2VsZWN0JykuT3V0cHV0UGFyYW1ldHJpY1NlbGVjdG9yPGFueSwgYW55LCBhbnksIGFueT59ICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZUdldEFjdGlvbkNyZWF0b3JzKCkge1xuICByZXR1cm4gY3JlYXRlU2VsZWN0b3IoW2dldERpc3BhdGNoLCBnZXRVc2VyQWN0aW9uc10sIChkaXNwYXRjaCwgdXNlckFjdGlvbnMpID0+IHtcbiAgICBjb25zdCBbdmlzU3RhdGVBY3Rpb25zLCBtYXBTdGF0ZUFjdGlvbnMsIG1hcFN0eWxlQWN0aW9ucywgdWlTdGF0ZUFjdGlvbnMsIHByb3ZpZGVyQWN0aW9uc10gPSBbXG4gICAgICBWaXNTdGF0ZUFjdGlvbnMsXG4gICAgICBNYXBTdGF0ZUFjdGlvbnMsXG4gICAgICBNYXBTdHlsZUFjdGlvbnMsXG4gICAgICBVSVN0YXRlQWN0aW9ucyxcbiAgICAgIFByb3ZpZGVyQWN0aW9uc1xuICAgIF0ubWFwKGFjdGlvbnMgPT4gYmluZEFjdGlvbkNyZWF0b3JzKG1lcmdlQWN0aW9ucyhhY3Rpb25zLCB1c2VyQWN0aW9ucyksIGRpc3BhdGNoKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmlzU3RhdGVBY3Rpb25zLFxuICAgICAgbWFwU3RhdGVBY3Rpb25zLFxuICAgICAgbWFwU3R5bGVBY3Rpb25zLFxuICAgICAgdWlTdGF0ZUFjdGlvbnMsXG4gICAgICBwcm92aWRlckFjdGlvbnMsXG4gICAgICBkaXNwYXRjaFxuICAgIH07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBtYWtlTWFwRGlzcGF0Y2hUb1Byb3BzKCkge1xuICBjb25zdCBnZXRBY3Rpb25DcmVhdG9ycyA9IG1ha2VHZXRBY3Rpb25DcmVhdG9ycygpO1xuICBjb25zdCBtYXBEaXNwYXRjaFRvUHJvcHMgPSAoZGlzcGF0Y2gsIG93blByb3BzKSA9PiB7XG4gICAgY29uc3QgZ3JvdXBlZEFjdGlvbkNyZWF0b3JzID0gZ2V0QWN0aW9uQ3JlYXRvcnMoZGlzcGF0Y2gsIG93blByb3BzKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5ncm91cGVkQWN0aW9uQ3JlYXRvcnMsXG4gICAgICBkaXNwYXRjaFxuICAgIH07XG4gIH07XG5cbiAgcmV0dXJuIG1hcERpc3BhdGNoVG9Qcm9wcztcbn1cblxuLyoqXG4gKiBPdmVycmlkZSBkZWZhdWx0IGtlcGxlci5nbCBhY3Rpb25zIHdpdGggdXNlciBkZWZpbmVkIGFjdGlvbnMgdXNpbmcgdGhlIHNhbWUga2V5XG4gKi9cbmZ1bmN0aW9uIG1lcmdlQWN0aW9ucyhhY3Rpb25zLCB1c2VyQWN0aW9ucykge1xuICBjb25zdCBvdmVycmlkZXMgPSB7fTtcbiAgZm9yIChjb25zdCBrZXkgaW4gdXNlckFjdGlvbnMpIHtcbiAgICBpZiAoXG4gICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodXNlckFjdGlvbnMsIGtleSkgJiZcbiAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhY3Rpb25zLCBrZXkpXG4gICAgKSB7XG4gICAgICBvdmVycmlkZXNba2V5XSA9IHVzZXJBY3Rpb25zW2tleV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsuLi5hY3Rpb25zLCAuLi5vdmVy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
|
|
663
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY29uc29sZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVkdXgiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZXNlbGVjdCIsIl9rZXBsZXJnbENvbm5lY3QiLCJfcmVhY3RJbnRsIiwiX2xvY2FsaXphdGlvbiIsIl9jb250ZXh0IiwiX2FjdGlvbnMiLCJfY29tbW9uVXRpbHMiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfY29uc3RhbnRzIiwiX3NpZGVQYW5lbCIsIl9tYXBDb250YWluZXIyIiwiX21hcHNMYXlvdXQiLCJfYm90dG9tV2lkZ2V0IiwiX21vZGFsQ29udGFpbmVyIiwiX3Bsb3RDb250YWluZXIiLCJfbm90aWZpY2F0aW9uUGFuZWwiLCJfZ2VvY29kZXJQYW5lbCIsIl9lZmZlY3RNYW5hZ2VyIiwiX2RuZENvbnRleHQiLCJfdXNlQ2xvdWRMaXN0UHJvdmlkZXIiLCJfdXRpbHMiLCJfc3R5bGVzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mMyIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9jYWxsU3VwZXIiLCJvIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibmV4dCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIkdsb2JhbFN0eWxlIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwiZm9udEZhbWlseSIsImZvbnRXZWlnaHQiLCJmb250U2l6ZSIsImxpbmVIZWlnaHQiLCJsYWJlbENvbG9yIiwiQm90dG9tV2lkZ2V0T3V0ZXIiLCJfcmVmIiwiYWJzb2x1dGUiLCJjb25jYXQiLCJpc1ZpZXdwb3J0RGlzam9pbnRlZCIsImV4cG9ydHMiLCJtYXBTdGF0ZSIsImlzU3BsaXQiLCJpc1ZpZXdwb3J0U3luY2VkIiwic3BsaXRNYXBWaWV3cG9ydHMiLCJtYXBTdGF0ZVNlbGVjdG9yIiwiY3JlYXRlU2VsZWN0b3IiLCJfIiwiaW5kZXgiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsIm1hcEZpZWxkc1NlbGVjdG9yIiwidW5kZWZpbmVkIiwiYXR0cmlidXRpb24iLCJhdHRyaWJ1dGlvblNlbGVjdG9yIiwiZ2V0TWFwYm94UmVmIiwibWFwYm94QXBpQWNjZXNzVG9rZW4iLCJtYXBib3hBcGlVcmwiLCJERUZBVUxUX0tFUExFUl9HTF9QUk9QUyIsImRhdGFzZXRBdHRyaWJ1dGlvbnMiLCJzb3VyY2VzIiwiYXR0cmlidXRpb25Mb2dvcyIsImxvZ29zIiwibWFwU3R5bGUiLCJvbkRlY2tJbml0aWFsaXplZCIsIm9uVmlld1N0YXRlQ2hhbmdlIiwib25Nb3VzZU1vdmUiLCJkZWNrR2xQcm9wcyIsInVpU3RhdGVBY3Rpb25zIiwidmlzU3RhdGVBY3Rpb25zIiwibWFwU3RhdGVBY3Rpb25zIiwidmlzU3RhdGUiLCJhY3RpdmVTaWRlUGFuZWwiLCJ1aVN0YXRlIiwibWFwQ29udHJvbHMiLCJyZWFkT25seSIsImxvY2FsZSIsImlzTG9hZGluZ0luZGljYXRvclZpc2libGUiLCJsb2FkaW5nSW5kaWNhdG9yVmFsdWUiLCJzaWRlUGFuZWxXaWR0aCIsIndpZHRoIiwidG9wTWFwQ29udGFpbmVyUHJvcHMiLCJib3R0b21NYXBDb250YWluZXJQcm9wcyIsInRyYW5zZm9ybVJlcXVlc3QiLCJSVExUZXh0UGx1Z2luIiwiZ2V0VmlzaWJsZURhdGFzZXRzIiwiZGF0YXNldHMiLCJmaWx0ZXJPYmplY3RCeVByZWRpY2F0ZSIsImtleSIsIkdFT0NPREVSX0RBVEFTRVRfTkFNRSIsInNpZGVQYW5lbFNlbGVjdG9yIiwiYXZhaWxhYmxlUHJvdmlkZXJzIiwiZmlsdGVyZWREYXRhc2V0cyIsImFwcE5hbWUiLCJ2ZXJzaW9uIiwiYXBwV2Vic2l0ZSIsIm9uU2F2ZU1hcCIsIm1hcFN0eWxlQWN0aW9ucyIsImZpbHRlcnMiLCJsYXllcnMiLCJsYXllck9yZGVyIiwibGF5ZXJDbGFzc2VzIiwiaW50ZXJhY3Rpb25Db25maWciLCJtYXBJbmZvIiwibGF5ZXJCbGVuZGluZyIsIm92ZXJsYXlCbGVuZGluZyIsIm1hcFNhdmVkIiwicHJvdmlkZXJTdGF0ZSIsInBsb3RDb250YWluZXJTZWxlY3RvciIsImhlaWdodCIsInJhdGlvIiwiZXhwb3J0SW1hZ2UiLCJyZXNvbHV0aW9uIiwibGVnZW5kIiwiY2VudGVyIiwiaW1hZ2VTaXplIiwiZXNjYXBlWGh0bWxGb3JXZWJwYWNrIiwibWFwRmllbGRzIiwiYWRkTm90aWZpY2F0aW9uIiwic2V0RXhwb3J0SW1hZ2VTZXR0aW5nIiwic2V0RXhwb3J0SW1hZ2VEYXRhVXJpIiwic2V0RXhwb3J0SW1hZ2VFcnJvciIsInNwbGl0TWFwcyIsImlzU3BsaXRTZWxlY3RvciIsImJvdHRvbVdpZGdldFNlbGVjdG9yIiwiYW5pbWF0aW9uQ29uZmlnIiwidG9nZ2xlTW9kYWwiLCJzaWRlUGFuZWwiLCJtYXJnaW4iLCJsZWZ0IiwibW9kYWxDb250YWluZXJTZWxlY3RvciIsInJvb3ROb2RlIiwicHJvdmlkZXJBY3Rpb25zIiwiY2xvdWRQcm92aWRlcnMiLCJvbkV4cG9ydFRvQ2xvdWRTdWNjZXNzIiwib25Mb2FkQ2xvdWRNYXBTdWNjZXNzIiwib25Mb2FkQ2xvdWRNYXBFcnJvciIsIm9uRXhwb3J0VG9DbG91ZEVycm9yIiwiZ2VvQ29kZXJQYW5lbFNlbGVjdG9yIiwiZGltZW5zaW9ucyIsIl9wcm9wcyR2aXNTdGF0ZSRpbnRlciIsIl9wcm9wcyR2aXNTdGF0ZSRpbnRlcjIiLCJpc0dlb2NvZGVyRW5hYmxlZCIsImdlb2NvZGVyIiwiZW5hYmxlZCIsInVwZGF0ZVZpc0RhdGEiLCJyZW1vdmVEYXRhc2V0IiwidXBkYXRlTWFwIiwiYXBwV2lkdGgiLCJsaW1pdFNlYXJjaCIsImNvbmZpZyIsImRhdGFzZXRBdHRyaWJ1dGlvblNlbGVjdG9yIiwic3RhdGUiLCJ1bmlxdWVBdHRyaWJ1dGlvbnMiLCJfZHMkbWV0YWRhdGEiLCJkcyIsImF0dHJpYnV0aW9ucyIsIm1ldGFkYXRhIiwibGlua3MiLCJtYXRjaCIsImxpbmsiLCJfbGluayRtYXRjaCIsIl9saW5rJG1hdGNoMiIsImhyZWYiLCJ0aXRsZSIsImluZGV4T2YiLCJ1cmwiLCJlcnJvciIsImxheWVyQXR0cmlidXRpb25LZXlTZWxlY3RvciIsIl9zdGF0ZSR2aXNTdGF0ZSIsIl9pdGVyYXRvciIsIl9zdGVwIiwiX2xheWVyJGNvbmZpZyIsIl9sYXllciRtZXRhIiwibGF5ZXIiLCJpc1Zpc2libGUiLCJtZXRhIiwiX2EkbG9nb1VybCIsImxvZ29VcmwiLCJlcnIiLCJsYXllckF0dHJpYnV0aW9uU2VsZWN0b3IiLCJfc3RhdGUkdmlzU3RhdGUyIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIl9sb29wIiwiX2xheWVyJGNvbmZpZzIiLCJfbGF5ZXIkbWV0YTIiLCJhdHRyIiwiZmluZCIsImxheWVyQXR0cmlidXRpb25zIiwidW5pcXVlVGV4dEF0dHJpYnV0aW9ucyIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJsYXllckF0dHJpYnV0aW9uIiwibm90aWZpY2F0aW9uUGFuZWxTZWxlY3RvciIsInJlbW92ZU5vdGlmaWNhdGlvbiIsIm5vdGlmaWNhdGlvbnMiLCJtYXBTdHlsZXMiLCJtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCIsIkRFRkFVTFRfTUFQQk9YX0FQSV9VUkwiLCJLRVBMRVJfR0xfTkFNRSIsIktFUExFUl9HTF9WRVJTSU9OIiwiRElNRU5TSU9OUyIsImZlYXR1cmVGbGFncyIsIktlcGxlckdsRmFjdG9yeSIsImRlcHMiLCJCb3R0b21XaWRnZXRGYWN0b3J5IiwiR2VvQ29kZXJQYW5lbEZhY3RvcnkiLCJNYXBDb250YWluZXJGYWN0b3J5IiwiTWFwc0xheW91dEZhY3RvcnkiLCJNb2RhbENvbnRhaW5lckZhY3RvcnkiLCJTaWRlUGFuZWxGYWN0b3J5IiwiUGxvdENvbnRhaW5lckZhY3RvcnkiLCJOb3RpZmljYXRpb25QYW5lbEZhY3RvcnkiLCJEbmRDb250ZXh0RmFjdG9yeSIsIkVmZmVjdE1hbmFnZXJGYWN0b3J5IiwiQm90dG9tV2lkZ2V0IiwiR2VvQ29kZXJQYW5lbCIsIk1hcENvbnRhaW5lciIsIk1hcHNMYXlvdXQiLCJNb2RhbENvbnRhaW5lciIsIlNpZGVQYW5lbCIsIlBsb3RDb250YWluZXIiLCJOb3RpZmljYXRpb25QYW5lbCIsIkRuZENvbnRleHQiLCJLZXBsZXJHTCIsIl9Db21wb25lbnQiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJfbGVuIiwiYXJncyIsIl9rZXkiLCJzZXRTdGF0ZSIsImNyZWF0ZVJlZiIsInRoZW1lU2VsZWN0b3IiLCJfdHlwZW9mMiIsImJhc2ljVGhlbWUiLCJUSEVNRSIsImxpZ2h0IiwidGhlbWVMVCIsImJhc2UiLCJ0aGVtZUJTIiwiZGF0YXNldHNTZWxlY3RvciIsInByb3ZpZGVycyIsImhhc1N0b3JhZ2UiLCJzb21lIiwicCIsImhhc1ByaXZhdGVTdG9yYWdlIiwiaGFzU2hhcmUiLCJoYXNTaGFyaW5nVXJsIiwibG9jYWxlTWVzc2FnZXMiLCJjdXN0b21NZXNzYWdlcyIsIm1lcmdlTWVzc2FnZXMiLCJtZXNzYWdlcyIsImRlZmF1bHRTdHlsZXMiLCJ2YWx1ZXMiLCJjdXN0b21TdHlsZXMiLCJtYXAiLCJtcyIsImlkIiwiZ2VuZXJhdGVIYXNoSWQiLCJhbGxTdHlsZXMiLCJyZWR1Y2UiLCJhY2N1Iiwic3R5bGUiLCJsb2FkTWFwU3R5bGVzIiwiY29udGFpbmVySWQiLCJsYXllcklkIiwidG9nZ2xlTGF5ZXJGb3JNYXAiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImNvbXBvbmVudERpZE1vdW50IiwiX2dldEFwcGxpY2F0aW9uQ29uZmlnIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJiYXNlTWFwTGlicmFyeUNvbmZpZyIsIm1hcExpYk5hbWUiLCJfdmFsaWRhdGVNYXBib3hUb2tlbiIsIl9sb2FkTWFwU3R5bGUiLCJvbktlcGxlckdsSW5pdGlhbGl6ZWQiLCJyb290IiwiY3VycmVudCIsIkhUTUxFbGVtZW50Iiwib2JzZXJ2ZURpbWVuc2lvbnMiLCJfaGFuZGxlUmVzaXplIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJ1bm9ic2VydmVEaW1lbnNpb25zIiwidmFsaWRhdGVUb2tlbiIsIkNvbnNvbGUiLCJ3YXJuIiwiTUlTU0lOR19NQVBCT1hfVE9LRU4iLCJyZW5kZXIiLCJfdGhpczIiLCJfdGhpcyRwcm9wcyIsIl90aGlzJHByb3BzJGlkIiwiX3RoaXMkcHJvcHMkd2lkdGgiLCJfdGhpcyRwcm9wcyRoZWlnaHQiLCJfdGhpcyRwcm9wcyRjbG91ZFByb3YiLCJhdmFpbGFibGVUaGVtZVNlbGVjdG9yIiwibG9jYWxlTWVzc2FnZXNTZWxlY3RvciIsImlzRXhwb3J0aW5nSW1hZ2UiLCJleHBvcnRpbmciLCJmaWx0ZXJlZERhdGFzZXRzU2VsZWN0b3IiLCJzaWRlRmllbGRzIiwicGxvdENvbnRhaW5lckZpZWxkcyIsImJvdHRvbVdpZGdldEZpZWxkcyIsIm1vZGFsQ29udGFpbmVyRmllbGRzIiwiZ2VvQ29kZXJQYW5lbEZpZWxkcyIsIm5vdGlmaWNhdGlvblBhbmVsRmllbGRzIiwibWFwQ29udGFpbmVycyIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kczIiLCJwcmltYXJ5IiwiZGVsZXRlTWFwTGFiZWxzIiwiX2RlbGV0ZU1hcExhYmVscyIsInNldHRpbmdzIiwiUm9vdENvbnRleHQiLCJQcm92aWRlciIsIkZlYXR1cmVGbGFnc0NvbnRleHRQcm92aWRlciIsIkludGxQcm92aWRlciIsIlN0eWxlU2hlZXRNYW5hZ2VyIiwic2hvdWxkRm9yd2FyZFByb3AiLCJUaGVtZVByb3ZpZGVyIiwiQ2xvdWRMaXN0UHJvdmlkZXIiLCJjbGFzc05hbWUiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsInBvc2l0aW9uIiwicmVmIiwidW5zeW5jZWRWaWV3cG9ydHMiLCJfbWFwQ29udGFpbmVyIiwiaGFzUG9ydGFibGVXaWR0aCIsImJyZWFrUG9pbnRWYWx1ZXMiLCJyb290UmVmIiwiYm90dG9tV2lkZ2V0UmVmIiwiY29udGFpbmVyVyIsImNvbnRhaW5lckgiLCJDb21wb25lbnQiLCJrZXBsZXJHbENvbm5lY3QiLCJtYXBTdGF0ZVRvUHJvcHMiLCJtYWtlTWFwRGlzcGF0Y2hUb1Byb3BzIiwid2l0aFRoZW1lIiwiZGVmYXVsdFVzZXJBY3Rpb25zIiwiZ2V0RGlzcGF0Y2giLCJkaXNwYXRjaCIsImdldFVzZXJBY3Rpb25zIiwiYWN0aW9ucyIsIm1ha2VHZXRBY3Rpb25DcmVhdG9ycyIsInVzZXJBY3Rpb25zIiwiX21hcCIsIlZpc1N0YXRlQWN0aW9ucyIsIk1hcFN0YXRlQWN0aW9ucyIsIk1hcFN0eWxlQWN0aW9ucyIsIlVJU3RhdGVBY3Rpb25zIiwiUHJvdmlkZXJBY3Rpb25zIiwiYmluZEFjdGlvbkNyZWF0b3JzIiwibWVyZ2VBY3Rpb25zIiwiX21hcDIiLCJfc2xpY2VkVG9BcnJheTIiLCJnZXRBY3Rpb25DcmVhdG9ycyIsIm1hcERpc3BhdGNoVG9Qcm9wcyIsIm93blByb3BzIiwiZ3JvdXBlZEFjdGlvbkNyZWF0b3JzIiwib3ZlcnJpZGVzIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi9zcmMva2VwbGVyLWdsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZiwgRGlzcGF0Y2h9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBDb25zb2xlIGZyb20gJ2dsb2JhbC9jb25zb2xlJztcbmltcG9ydCB7YmluZEFjdGlvbkNyZWF0b3JzfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgc3R5bGVkLCB7d2l0aFRoZW1lLCBTdHlsZVNoZWV0TWFuYWdlciwgVGhlbWVQcm92aWRlcn0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3Rvcn0gZnJvbSAncmVzZWxlY3QnO1xuaW1wb3J0IHtjb25uZWN0IGFzIGtlcGxlckdsQ29ubmVjdH0gZnJvbSAnLi9jb25uZWN0L2tlcGxlcmdsLWNvbm5lY3QnO1xuaW1wb3J0IHtJbnRsUHJvdmlkZXJ9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHttZXNzYWdlc30gZnJvbSAnQGtlcGxlci5nbC9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IHtSb290Q29udGV4dCwgRmVhdHVyZUZsYWdzQ29udGV4dFByb3ZpZGVyLCBGZWF0dXJlRmxhZ3N9IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQge1xuICBBdHRyaWJ1dGlvbldpdGhTdHlsZSxcbiAgRGF0YXNldEF0dHJpYnV0aW9uLFxuICBPbkVycm9yQ2FsbEJhY2ssXG4gIE9uU3VjY2Vzc0NhbGxCYWNrLFxuICBWaWV3cG9ydCxcbiAgTWFwU3RhdGVcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7XG4gIE1hcFN0YXRlQWN0aW9ucyxcbiAgTWFwU3R5bGVBY3Rpb25zLFxuICBQcm92aWRlckFjdGlvbnMsXG4gIFVJU3RhdGVBY3Rpb25zLFxuICBWaXNTdGF0ZUFjdGlvbnNcbn0gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcblxuaW1wb3J0IHtnZW5lcmF0ZUhhc2hJZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuXG5pbXBvcnQge3Nob3VsZEZvcndhcmRQcm9wfSBmcm9tICcuL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5cbnR5cGUgS2VwbGVyR2xBY3Rpb25zID0ge1xuICB2aXNTdGF0ZUFjdGlvbnM6IHR5cGVvZiBWaXNTdGF0ZUFjdGlvbnM7XG4gIG1hcFN0YXRlQWN0aW9uczogdHlwZW9mIE1hcFN0YXRlQWN0aW9ucztcbiAgbWFwU3R5bGVBY3Rpb25zOiB0eXBlb2YgTWFwU3R5bGVBY3Rpb25zO1xuICB1aVN0YXRlQWN0aW9uczogdHlwZW9mIFVJU3RhdGVBY3Rpb25zO1xuICBwcm92aWRlckFjdGlvbnM6IHR5cGVvZiBQcm92aWRlckFjdGlvbnM7XG59O1xuXG5pbXBvcnQge1xuICBESU1FTlNJT05TLFxuICBLRVBMRVJfR0xfTkFNRSxcbiAgS0VQTEVSX0dMX1ZFUlNJT04sXG4gIFRIRU1FLFxuICBERUZBVUxUX01BUEJPWF9BUElfVVJMLFxuICBHRU9DT0RFUl9EQVRBU0VUX05BTUUsXG4gIE1JU1NJTkdfTUFQQk9YX1RPS0VOXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuaW1wb3J0IFNpZGVQYW5lbEZhY3RvcnkgZnJvbSAnLi9zaWRlLXBhbmVsJztcbmltcG9ydCBNYXBDb250YWluZXJGYWN0b3J5IGZyb20gJy4vbWFwLWNvbnRhaW5lcic7XG5pbXBvcnQgTWFwc0xheW91dEZhY3RvcnkgZnJvbSAnLi9tYXBzLWxheW91dCc7XG5pbXBvcnQgQm90dG9tV2lkZ2V0RmFjdG9yeSBmcm9tICcuL2JvdHRvbS13aWRnZXQnO1xuaW1wb3J0IE1vZGFsQ29udGFpbmVyRmFjdG9yeSBmcm9tICcuL21vZGFsLWNvbnRhaW5lcic7XG5pbXBvcnQgUGxvdENvbnRhaW5lckZhY3RvcnkgZnJvbSAnLi9wbG90LWNvbnRhaW5lcic7XG5pbXBvcnQgTm90aWZpY2F0aW9uUGFuZWxGYWN0b3J5IGZyb20gJy4vbm90aWZpY2F0aW9uLXBhbmVsJztcbmltcG9ydCBHZW9Db2RlclBhbmVsRmFjdG9yeSBmcm9tICcuL2dlb2NvZGVyLXBhbmVsJztcbmltcG9ydCBFZmZlY3RNYW5hZ2VyRmFjdG9yeSBmcm9tICcuL2VmZmVjdHMvZWZmZWN0LW1hbmFnZXInO1xuaW1wb3J0IERuZENvbnRleHRGYWN0b3J5IGZyb20gJy4vZG5kLWNvbnRleHQnO1xuaW1wb3J0IHtDbG91ZExpc3RQcm92aWRlcn0gZnJvbSAnLi9ob29rcy91c2UtY2xvdWQtbGlzdC1wcm92aWRlcic7XG5cbmltcG9ydCB7XG4gIGZpbHRlck9iamVjdEJ5UHJlZGljYXRlLFxuICB2YWxpZGF0ZVRva2VuLFxuICBtZXJnZU1lc3NhZ2VzLFxuICBvYnNlcnZlRGltZW5zaW9ucyxcbiAgdW5vYnNlcnZlRGltZW5zaW9ucyxcbiAgaGFzUG9ydGFibGVXaWR0aCxcbiAgZ2V0QXBwbGljYXRpb25Db25maWdcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmltcG9ydCB7dGhlbWUgYXMgYmFzaWNUaGVtZSwgdGhlbWVMVCwgdGhlbWVCUywgYnJlYWtQb2ludFZhbHVlc30gZnJvbSAnQGtlcGxlci5nbC9zdHlsZXMnO1xuaW1wb3J0IHtLZXBsZXJHbFN0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbmltcG9ydCB7UHJvdmlkZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvY2xvdWQtcHJvdmlkZXJzJztcblxuLy8gTWF5YmUgd2Ugc2hvdWxkIHRoaW5rIGFib3V0IGV4cG9ydGluZyB0aGlzIG9yIGNyZWF0aW5nIGEgdmFyaWFibGVcbi8vIGFzIHBhcnQgb2YgdGhlIGJhc2UuanMgdGhlbWVcbmNvbnN0IEdsb2JhbFN0eWxlID0gc3R5bGVkLmRpdmBcbiAgZm9udC1mYW1pbHk6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZm9udEZhbWlseX07XG4gIGZvbnQtd2VpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmZvbnRXZWlnaHR9O1xuICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZm9udFNpemV9O1xuICBsaW5lLWhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5saW5lSGVpZ2h0fTtcblxuICAqLFxuICAqOmJlZm9yZSxcbiAgKjphZnRlciB7XG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG5cbiAgdWwge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgbGkge1xuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4gIGEge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYWJlbENvbG9yfTtcbiAgfVxuXG4gIDpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC5tYXBsaWJyZWdsLWN0cmwgLm1hcGxpYnJlZ2wtY3RybC1sb2dvIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLm1hcGJveGdsLWN0cmwgLm1hcGJveGdsLWN0cmwtbG9nbyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuYDtcblxudHlwZSBCb3R0b21XaWRnZXRPdXRlclByb3BzID0ge1xuICBhYnNvbHV0ZT86IGJvb2xlYW47XG59O1xuXG5jb25zdCBCb3R0b21XaWRnZXRPdXRlciA9IHN0eWxlZC5kaXY8Qm90dG9tV2lkZ2V0T3V0ZXJQcm9wcz4oXG4gICh7YWJzb2x1dGV9KSA9PiBgXG4gICR7YWJzb2x1dGUgPyAncG9zaXRpb246IGFic29sdXRlOyBib3R0b206IDA7IHJpZ2h0OiAwOycgOiAnJ31cbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7IC8qIHByZXZlbnQgcGFkZGluZyBmcm9tIGJsb2NraW5nIGlucHV0ICovXG4gICYgPiAqIHtcbiAgICAvKiBhbGwgY2hpbGRyZW4gc2hvdWxkIGFsbG93IGlucHV0ICovXG4gICAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgfWBcbik7XG5cbmV4cG9ydCBjb25zdCBpc1ZpZXdwb3J0RGlzam9pbnRlZCA9IHByb3BzID0+IHtcbiAgcmV0dXJuIChcbiAgICBwcm9wcy5tYXBTdGF0ZS5pc1NwbGl0ICYmXG4gICAgIXByb3BzLm1hcFN0YXRlLmlzVmlld3BvcnRTeW5jZWQgJiZcbiAgICBwcm9wcy5tYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5sZW5ndGggPiAxXG4gICk7XG59O1xuXG50eXBlIE1hcFN0YXRlUHJvcHMgPSB7XG4gIG1hcFN0YXRlOiBNYXBTdGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBtYXBTdGF0ZVNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gIFsocHJvcHM6IE1hcFN0YXRlUHJvcHMpID0+IHByb3BzLm1hcFN0YXRlLCAoXzogTWFwU3RhdGVQcm9wcywgaW5kZXg/OiBudW1iZXIpID0+IGluZGV4XSxcbiAgKG1hcFN0YXRlOiBNYXBTdGF0ZSwgaW5kZXg/OiBudW1iZXIpOiBNYXBTdGF0ZSA9PiB7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoaW5kZXgpKSB7XG4gICAgICAvLyBlaXRoZXIgbm8gaW5kZXggYXJnIG9yIGFuIGludmFsaWQgaW5kZXggd2FzIHByb3ZpZGVkXG4gICAgICAvLyBpdCBpcyBleHBlY3RlZCB0byBiZSBlaXRoZXIgMCBvciAxIHdoZW4gaW4gc3BsaXQgbW9kZVxuICAgICAgLy8gb25seSB1c2UgdGhlIG1hcFN0YXRlXG4gICAgICByZXR1cm4gbWFwU3RhdGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmlld3BvcnREaXNqb2ludGVkKHttYXBTdGF0ZX0pXG4gICAgICA/IC8vIG1peCB0b2dldGhlciB0aGUgdmlld3BvcnQgcHJvcGVydGllcyBpbnRlbmRlZCBmb3IgdGhpcyBkaXNqb2ludGVkIDxNYXBDb250YWluZXI+IHdpdGggdGhlIG90aGVyIG5lY2Vzc2FyeSBtYXBTdGF0ZSBwcm9wZXJ0aWVzXG4gICAgICAgIHsuLi5tYXBTdGF0ZSwgLi4ubWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHNbaW5kZXggfHwgMF19XG4gICAgICA6IC8vIG90aGVyd2lzZSBvbmx5IHVzZSB0aGUgbWFwU3RhdGVcbiAgICAgICAgbWFwU3RhdGU7XG4gIH1cbik7XG5cbmV4cG9ydCBjb25zdCBtYXBGaWVsZHNTZWxlY3RvciA9IChwcm9wczogS2VwbGVyR0xQcm9wcywgaW5kZXggPSAwKSA9PiB7XG4gIGNvbnN0IGF0dHJpYnV0aW9uID0gYXR0cmlidXRpb25TZWxlY3Rvcihwcm9wcyk7XG4gIHJldHVybiB7XG4gICAgZ2V0TWFwYm94UmVmOiBwcm9wcy5nZXRNYXBib3hSZWYsXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHByb3BzLm1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgIG1hcGJveEFwaVVybDogcHJvcHMubWFwYm94QXBpVXJsID8gcHJvcHMubWFwYm94QXBpVXJsIDogREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMubWFwYm94QXBpVXJsLFxuICAgIG1hcFN0YXRlOiBtYXBTdGF0ZVNlbGVjdG9yKHByb3BzLCBpbmRleCksXG4gICAgZGF0YXNldEF0dHJpYnV0aW9uczogYXR0cmlidXRpb24uc291cmNlcyxcbiAgICBhdHRyaWJ1dGlvbkxvZ29zOiBhdHRyaWJ1dGlvbi5sb2dvcyxcbiAgICBtYXBTdHlsZTogcHJvcHMubWFwU3R5bGUsXG4gICAgb25EZWNrSW5pdGlhbGl6ZWQ6IHByb3BzLm9uRGVja0luaXRpYWxpemVkLFxuICAgIG9uVmlld1N0YXRlQ2hhbmdlOiBwcm9wcy5vblZpZXdTdGF0ZUNoYW5nZSxcbiAgICBvbk1vdXNlTW92ZTogcHJvcHMub25Nb3VzZU1vdmUsXG4gICAgZGVja0dsUHJvcHM6IHByb3BzLmRlY2tHbFByb3BzLFxuICAgIHVpU3RhdGVBY3Rpb25zOiBwcm9wcy51aVN0YXRlQWN0aW9ucyxcbiAgICB2aXNTdGF0ZUFjdGlvbnM6IHByb3BzLnZpc1N0YXRlQWN0aW9ucyxcbiAgICBtYXBTdGF0ZUFjdGlvbnM6IHByb3BzLm1hcFN0YXRlQWN0aW9ucyxcblxuICAgIC8vIHZpc1N0YXRlXG4gICAgdmlzU3RhdGU6IHByb3BzLnZpc1N0YXRlLFxuXG4gICAgLy8gdWlTdGF0ZVxuICAgIGFjdGl2ZVNpZGVQYW5lbDogcHJvcHMudWlTdGF0ZS5hY3RpdmVTaWRlUGFuZWwsXG4gICAgbWFwQ29udHJvbHM6IHByb3BzLnVpU3RhdGUubWFwQ29udHJvbHMsXG4gICAgcmVhZE9ubHk6IHByb3BzLnVpU3RhdGUucmVhZE9ubHksXG4gICAgbG9jYWxlOiBwcm9wcy51aVN0YXRlLmxvY2FsZSxcbiAgICBpc0xvYWRpbmdJbmRpY2F0b3JWaXNpYmxlOiBOdW1iZXIocHJvcHMudmlzU3RhdGUubG9hZGluZ0luZGljYXRvclZhbHVlKSA+IDAsXG4gICAgc2lkZVBhbmVsV2lkdGg6IHByb3BzLnNpZGVQYW5lbFdpZHRoID8gcHJvcHMuc2lkZVBhbmVsV2lkdGggOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy53aWR0aCxcblxuICAgIC8vIG1hcFN0eWxlXG4gICAgdG9wTWFwQ29udGFpbmVyUHJvcHM6IHByb3BzLnRvcE1hcENvbnRhaW5lclByb3BzLFxuICAgIGJvdHRvbU1hcENvbnRhaW5lclByb3BzOiBwcm9wcy5ib3R0b21NYXBDb250YWluZXJQcm9wcyxcblxuICAgIC8vIHRyYW5zZm9ybVJlcXVlc3QgZm9yIE1hcGJveCBiYXNlbWFwc1xuICAgIHRyYW5zZm9ybVJlcXVlc3Q6IHByb3BzLnRyYW5zZm9ybVJlcXVlc3QsXG5cbiAgICBSVExUZXh0UGx1Z2luOiBwcm9wcy5SVExUZXh0UGx1Z2luXG4gIH07XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmlzaWJsZURhdGFzZXRzKGRhdGFzZXRzKSB7XG4gIC8vIFdlIGRvbid0IHdhbnQgR2VvY29kZXIgZGF0YXNldCB0byBiZSBwcmVzZW50IGluIFNpZGVQYW5lbCBkYXRhc2V0IGxpc3RcbiAgcmV0dXJuIGZpbHRlck9iamVjdEJ5UHJlZGljYXRlKGRhdGFzZXRzLCBrZXkgPT4ga2V5ICE9PSBHRU9DT0RFUl9EQVRBU0VUX05BTUUpO1xufVxuXG5leHBvcnQgY29uc3Qgc2lkZVBhbmVsU2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMsIGF2YWlsYWJsZVByb3ZpZGVycywgZmlsdGVyZWREYXRhc2V0cykgPT4gKHtcbiAgYXBwTmFtZTogcHJvcHMuYXBwTmFtZSA/IHByb3BzLmFwcE5hbWUgOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy5hcHBOYW1lLFxuICB2ZXJzaW9uOiBwcm9wcy52ZXJzaW9uID8gcHJvcHMudmVyc2lvbiA6IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLnZlcnNpb24sXG4gIGFwcFdlYnNpdGU6IHByb3BzLmFwcFdlYnNpdGUsXG4gIG1hcFN0eWxlOiBwcm9wcy5tYXBTdHlsZSxcbiAgb25TYXZlTWFwOiBwcm9wcy5vblNhdmVNYXAsXG4gIHVpU3RhdGU6IHByb3BzLnVpU3RhdGUsXG4gIG1hcFN0eWxlQWN0aW9uczogcHJvcHMubWFwU3R5bGVBY3Rpb25zLFxuICB2aXNTdGF0ZUFjdGlvbnM6IHByb3BzLnZpc1N0YXRlQWN0aW9ucyxcbiAgdWlTdGF0ZUFjdGlvbnM6IHByb3BzLnVpU3RhdGVBY3Rpb25zLFxuICBtYXBTdGF0ZUFjdGlvbnM6IHByb3BzLm1hcFN0YXRlQWN0aW9ucyxcblxuICBkYXRhc2V0czogZmlsdGVyZWREYXRhc2V0cyxcbiAgZmlsdGVyczogcHJvcHMudmlzU3RhdGUuZmlsdGVycyxcbiAgbGF5ZXJzOiBwcm9wcy52aXNTdGF0ZS5sYXllcnMsXG4gIGxheWVyT3JkZXI6IHByb3BzLnZpc1N0YXRlLmxheWVyT3JkZXIsXG4gIGxheWVyQ2xhc3NlczogcHJvcHMudmlzU3RhdGUubGF5ZXJDbGFzc2VzLFxuICBpbnRlcmFjdGlvbkNvbmZpZzogcHJvcHMudmlzU3RhdGUuaW50ZXJhY3Rpb25Db25maWcsXG4gIG1hcEluZm86IHByb3BzLnZpc1N0YXRlLm1hcEluZm8sXG4gIGxheWVyQmxlbmRpbmc6IHByb3BzLnZpc1N0YXRlLmxheWVyQmxlbmRpbmcsXG4gIG92ZXJsYXlCbGVuZGluZzogcHJvcHMudmlzU3RhdGUub3ZlcmxheUJsZW5kaW5nLFxuXG4gIHdpZHRoOiBwcm9wcy5zaWRlUGFuZWxXaWR0aCA/IHByb3BzLnNpZGVQYW5lbFdpZHRoIDogREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMud2lkdGgsXG4gIGF2YWlsYWJsZVByb3ZpZGVycyxcbiAgbWFwU2F2ZWQ6IHByb3BzLnByb3ZpZGVyU3RhdGUubWFwU2F2ZWRcbn0pO1xuXG5leHBvcnQgY29uc3QgcGxvdENvbnRhaW5lclNlbGVjdG9yID0gKHByb3BzOiBLZXBsZXJHTFByb3BzKSA9PiAoe1xuICB3aWR0aDogcHJvcHMud2lkdGgsXG4gIGhlaWdodDogcHJvcHMuaGVpZ2h0LFxuICByYXRpbzogcHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZS5yYXRpbyxcbiAgcmVzb2x1dGlvbjogcHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZS5yZXNvbHV0aW9uLFxuICBsZWdlbmQ6IHByb3BzLnVpU3RhdGUuZXhwb3J0SW1hZ2UubGVnZW5kLFxuICBjZW50ZXI6IHByb3BzLnVpU3RhdGUuZXhwb3J0SW1hZ2UuY2VudGVyLFxuICBpbWFnZVNpemU6IHByb3BzLnVpU3RhdGUuZXhwb3J0SW1hZ2UuaW1hZ2VTaXplLFxuICBlc2NhcGVYaHRtbEZvcldlYnBhY2s6IHByb3BzLnVpU3RhdGUuZXhwb3J0SW1hZ2UuZXNjYXBlWGh0bWxGb3JXZWJwYWNrLFxuXG4gIG1hcEZpZWxkczogbWFwRmllbGRzU2VsZWN0b3IocHJvcHMpLFxuICBhZGROb3RpZmljYXRpb246IHByb3BzLnVpU3RhdGVBY3Rpb25zLmFkZE5vdGlmaWNhdGlvbixcbiAgc2V0RXhwb3J0SW1hZ2VTZXR0aW5nOiBwcm9wcy51aVN0YXRlQWN0aW9ucy5zZXRFeHBvcnRJbWFnZVNldHRpbmcsXG4gIHNldEV4cG9ydEltYWdlRGF0YVVyaTogcHJvcHMudWlTdGF0ZUFjdGlvbnMuc2V0RXhwb3J0SW1hZ2VEYXRhVXJpLFxuICBzZXRFeHBvcnRJbWFnZUVycm9yOiBwcm9wcy51aVN0YXRlQWN0aW9ucy5zZXRFeHBvcnRJbWFnZUVycm9yLFxuICBzcGxpdE1hcHM6IHByb3BzLnZpc1N0YXRlLnNwbGl0TWFwc1xufSk7XG5cbmV4cG9ydCBjb25zdCBpc1NwbGl0U2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMpID0+XG4gIHByb3BzLnZpc1N0YXRlLnNwbGl0TWFwcyAmJiBwcm9wcy52aXNTdGF0ZS5zcGxpdE1hcHMubGVuZ3RoID4gMTtcblxuZXhwb3J0IGNvbnN0IGJvdHRvbVdpZGdldFNlbGVjdG9yID0gKHByb3BzOiBLZXBsZXJHTFByb3BzLCB0aGVtZSkgPT4gKHtcbiAgZmlsdGVyczogcHJvcHMudmlzU3RhdGUuZmlsdGVycyxcbiAgZGF0YXNldHM6IHByb3BzLnZpc1N0YXRlLmRhdGFzZXRzLFxuICB1aVN0YXRlOiBwcm9wcy51aVN0YXRlLFxuICBsYXllcnM6IHByb3BzLnZpc1N0YXRlLmxheWVycyxcbiAgYW5pbWF0aW9uQ29uZmlnOiBwcm9wcy52aXNTdGF0ZS5hbmltYXRpb25Db25maWcsXG4gIHZpc1N0YXRlQWN0aW9uczogcHJvcHMudmlzU3RhdGVBY3Rpb25zLFxuICB0b2dnbGVNb2RhbDogcHJvcHMudWlTdGF0ZUFjdGlvbnMudG9nZ2xlTW9kYWwsXG4gIHNpZGVQYW5lbFdpZHRoOiBwcm9wcy51aVN0YXRlLnJlYWRPbmx5ID8gMCA6IHByb3BzLnNpZGVQYW5lbFdpZHRoICsgdGhlbWUuc2lkZVBhbmVsLm1hcmdpbi5sZWZ0XG59KTtcblxuZXhwb3J0IGNvbnN0IG1vZGFsQ29udGFpbmVyU2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMsIHJvb3ROb2RlKSA9PiAoe1xuICBhcHBOYW1lOiBwcm9wcy5hcHBOYW1lID8gcHJvcHMuYXBwTmFtZSA6IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLmFwcE5hbWUsXG4gIG1hcFN0eWxlOiBwcm9wcy5tYXBTdHlsZSxcbiAgdmlzU3RhdGU6IHByb3BzLnZpc1N0YXRlLFxuICBtYXBTdGF0ZTogcHJvcHMubWFwU3RhdGUsXG4gIHVpU3RhdGU6IHByb3BzLnVpU3RhdGUsXG4gIHByb3ZpZGVyU3RhdGU6IHByb3BzLnByb3ZpZGVyU3RhdGUsXG5cbiAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHByb3BzLm1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICBtYXBib3hBcGlVcmw6IHByb3BzLm1hcGJveEFwaVVybCxcbiAgdmlzU3RhdGVBY3Rpb25zOiBwcm9wcy52aXNTdGF0ZUFjdGlvbnMsXG4gIHVpU3RhdGVBY3Rpb25zOiBwcm9wcy51aVN0YXRlQWN0aW9ucyxcbiAgbWFwU3R5bGVBY3Rpb25zOiBwcm9wcy5tYXBTdHlsZUFjdGlvbnMsXG4gIHByb3ZpZGVyQWN0aW9uczogcHJvcHMucHJvdmlkZXJBY3Rpb25zLFxuXG4gIHJvb3ROb2RlLFxuICAvLyBVc2VyIGRlZmluZWQgY2xvdWQgcHJvdmlkZXIgcHJvcHNcbiAgY2xvdWRQcm92aWRlcnM6IHByb3BzLmNsb3VkUHJvdmlkZXJzXG4gICAgPyBwcm9wcy5jbG91ZFByb3ZpZGVyc1xuICAgIDogREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMuY2xvdWRQcm92aWRlcnMsXG4gIG9uRXhwb3J0VG9DbG91ZFN1Y2Nlc3M6IHByb3BzLm9uRXhwb3J0VG9DbG91ZFN1Y2Nlc3MsXG4gIG9uTG9hZENsb3VkTWFwU3VjY2VzczogcHJvcHMub25Mb2FkQ2xvdWRNYXBTdWNjZXNzLFxuICBvbkxvYWRDbG91ZE1hcEVycm9yOiBwcm9wcy5vbkxvYWRDbG91ZE1hcEVycm9yLFxuICBvbkV4cG9ydFRvQ2xvdWRFcnJvcjogcHJvcHMub25FeHBvcnRUb0Nsb3VkRXJyb3Jcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VvQ29kZXJQYW5lbFNlbGVjdG9yID0gKFxuICBwcm9wczogS2VwbGVyR0xQcm9wcyxcbiAgZGltZW5zaW9uczoge3dpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyfVxuKSA9PiAoe1xuICBpc0dlb2NvZGVyRW5hYmxlZDogcHJvcHMudmlzU3RhdGUuaW50ZXJhY3Rpb25Db25maWcuZ2VvY29kZXIuZW5hYmxlZCxcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHByb3BzLm1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICBtYXBTdGF0ZTogcHJvcHMubWFwU3RhdGUsXG4gIHVpU3RhdGU6IHByb3BzLnVpU3RhdGUsXG4gIGxheWVyT3JkZXI6IHByb3BzLnZpc1N0YXRlLmxheWVyT3JkZXIsXG4gIHVwZGF0ZVZpc0RhdGE6IHByb3BzLnZpc1N0YXRlQWN0aW9ucy51cGRhdGVWaXNEYXRhLFxuICByZW1vdmVEYXRhc2V0OiBwcm9wcy52aXNTdGF0ZUFjdGlvbnMucmVtb3ZlRGF0YXNldCxcbiAgdXBkYXRlTWFwOiBwcm9wcy5tYXBTdGF0ZUFjdGlvbnMudXBkYXRlTWFwLFxuICBhcHBXaWR0aDogZGltZW5zaW9ucy53aWR0aCxcbiAgbGltaXRTZWFyY2g6IHByb3BzLnZpc1N0YXRlLmludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyLmNvbmZpZz8ubGltaXRTZWFyY2ggPz8gZmFsc2Vcbn0pO1xuXG4vKipcbiAqIFJldHVybnMgYXJyYXkgb2YgdW5pcXVlIGRhdGFzZXQgYXR0cmlidXRpb25zLCBlYWNoIHdpdGggdGl0bGUgYW5kIHVybCBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgY29uc3QgZGF0YXNldEF0dHJpYnV0aW9uU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgW3N0YXRlID0+IHN0YXRlLnZpc1N0YXRlLmRhdGFzZXRzXSxcbiAgZGF0YXNldHMgPT4ge1xuICAgIGNvbnN0IHVuaXF1ZUF0dHJpYnV0aW9uczogRGF0YXNldEF0dHJpYnV0aW9uW10gPSBbXTtcbiAgICBPYmplY3Qua2V5cyhkYXRhc2V0cykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgY29uc3QgZHMgPSBkYXRhc2V0c1trZXldO1xuICAgICAgY29uc3QgYXR0cmlidXRpb25zID0gZHM/Lm1ldGFkYXRhPy5hdHRyaWJ1dGlvbnM7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhdHRyaWJ1dGlvbnMpKSB7XG4gICAgICAgIGF0dHJpYnV0aW9ucy5mb3JFYWNoKGF0dHJpYnV0aW9uID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGF0dHJpYnV0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgLy8gYXR0cmlidXRpb24gY2FuIGJlIGEgcmF3IHN0cmluZyBvciBhIHN0cmluZyB3aXRoIGxpbmsgdGFnc1xuICAgICAgICAgICAgY29uc3QgbGlua3MgPSBhdHRyaWJ1dGlvbi5tYXRjaCgvPGFbXl0rP2E+L2cpO1xuICAgICAgICAgICAgaWYgKGxpbmtzKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGlua3M/LmZvckVhY2gobGluayA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBocmVmID0gbGluay5tYXRjaCgvaHJlZj1cIihbXlwiXSopLyk/LlsxXTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gbGluay5tYXRjaCgvdGl0bGU9XCIoW15cIl0qKS8pPy5bMV07XG4gICAgICAgICAgICAgICAgICBpZiAoaHJlZiAmJiB0aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICB1bmlxdWVBdHRyaWJ1dGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGAke2xpbmsuaW5kZXhPZignJmNvcHk7JykgPj0gMCA/ICfCqSAnIDogJyd9JHt0aXRsZX1gLFxuICAgICAgICAgICAgICAgICAgICAgIHVybDogaHJlZlxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAvLyBqdXN0IGlnbm9yZSBmb3Igbm93XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHVuaXF1ZUF0dHJpYnV0aW9ucy5wdXNoKHt0aXRsZTogYXR0cmlidXRpb24sIHVybDogbnVsbH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHVuaXF1ZUF0dHJpYnV0aW9ucztcbiAgfVxuKTtcblxuLyoqXG4gKiBDb2xsZWN0IHVuaXF1ZSBsYXllci1sZXZlbCBhdHRyaWJ1dGlvbnMgZnJvbSB2aXNpYmxlIGxheWVycy5cbiAqIEJ1aWxkcyBhIHNlcmlhbGl6ZWQgY2FjaGUga2V5IGZyb20gYXR0cmlidXRpb24gdmFsdWVzIHNvIGNyZWF0ZVNlbGVjdG9yXG4gKiBjYW4gZGV0ZWN0IGluLXBsYWNlIG11dGF0aW9ucyB0byBsYXllci5tZXRhLlxuICovXG5jb25zdCBsYXllckF0dHJpYnV0aW9uS2V5U2VsZWN0b3IgPSAoc3RhdGU6IGFueSk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGxheWVyczogYW55W10gPSBzdGF0ZS52aXNTdGF0ZT8ubGF5ZXJzO1xuICBpZiAoIWxheWVycykgcmV0dXJuICcnO1xuICBsZXQga2V5ID0gJyc7XG4gIGZvciAoY29uc3QgbGF5ZXIgb2YgbGF5ZXJzKSB7XG4gICAgaWYgKGxheWVyLmNvbmZpZz8uaXNWaXNpYmxlICYmIGxheWVyLm1ldGE/LmF0dHJpYnV0aW9uKSB7XG4gICAgICBjb25zdCBhID0gbGF5ZXIubWV0YS5hdHRyaWJ1dGlvbjtcbiAgICAgIGtleSArPSBgJHthLnRpdGxlfVxcMCR7YS51cmx9XFwwJHthLmxvZ29VcmwgPz8gJyd9XFwwYDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGtleTtcbn07XG5cbmV4cG9ydCBjb25zdCBsYXllckF0dHJpYnV0aW9uU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgWyhzdGF0ZTogYW55KSA9PiBzdGF0ZS52aXNTdGF0ZT8ubGF5ZXJzLCBsYXllckF0dHJpYnV0aW9uS2V5U2VsZWN0b3JdLFxuICAobGF5ZXJzOiBhbnlbXSk6IEF0dHJpYnV0aW9uV2l0aFN0eWxlW10gPT4ge1xuICAgIGNvbnN0IGF0dHJpYnV0aW9uczogQXR0cmlidXRpb25XaXRoU3R5bGVbXSA9IFtdO1xuICAgIGlmICghbGF5ZXJzKSByZXR1cm4gYXR0cmlidXRpb25zO1xuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgbGF5ZXJzKSB7XG4gICAgICBpZiAobGF5ZXIuY29uZmlnPy5pc1Zpc2libGUgJiYgbGF5ZXIubWV0YT8uYXR0cmlidXRpb24pIHtcbiAgICAgICAgY29uc3QgYXR0ciA9IGxheWVyLm1ldGEuYXR0cmlidXRpb247XG4gICAgICAgIGlmIChhdHRyLnRpdGxlICYmICFhdHRyaWJ1dGlvbnMuZmluZChhID0+IGEudGl0bGUgPT09IGF0dHIudGl0bGUgJiYgYS51cmwgPT09IGF0dHIudXJsKSkge1xuICAgICAgICAgIGF0dHJpYnV0aW9ucy5wdXNoKGF0dHIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhdHRyaWJ1dGlvbnM7XG4gIH1cbik7XG5cbmV4cG9ydCBjb25zdCBhdHRyaWJ1dGlvblNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gIFtkYXRhc2V0QXR0cmlidXRpb25TZWxlY3RvciwgbGF5ZXJBdHRyaWJ1dGlvblNlbGVjdG9yXSxcbiAgKFxuICAgIGRhdGFzZXRBdHRyaWJ1dGlvbnM6IERhdGFzZXRBdHRyaWJ1dGlvbltdLFxuICAgIGxheWVyQXR0cmlidXRpb25zOiBBdHRyaWJ1dGlvbldpdGhTdHlsZVtdXG4gICk6IHtcbiAgICBzb3VyY2VzOiBEYXRhc2V0QXR0cmlidXRpb25bXTtcbiAgICBsb2dvczogQXR0cmlidXRpb25XaXRoU3R5bGVbXTtcbiAgfSA9PiB7XG4gICAgY29uc3QgdW5pcXVlVGV4dEF0dHJpYnV0aW9uczogRGF0YXNldEF0dHJpYnV0aW9uW10gPSBbLi4uZGF0YXNldEF0dHJpYnV0aW9uc107XG4gICAgY29uc3QgbG9nb3M6IEF0dHJpYnV0aW9uV2l0aFN0eWxlW10gPSBbXTtcblxuICAgIGxheWVyQXR0cmlidXRpb25zLmZvckVhY2gobGF5ZXJBdHRyaWJ1dGlvbiA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICF1bmlxdWVUZXh0QXR0cmlidXRpb25zLmZpbmQoXG4gICAgICAgICAgYSA9PiBhLnRpdGxlID09PSBsYXllckF0dHJpYnV0aW9uLnRpdGxlICYmIGEudXJsID09PSBsYXllckF0dHJpYnV0aW9uLnVybFxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgdW5pcXVlVGV4dEF0dHJpYnV0aW9ucy5wdXNoKHt0aXRsZTogbGF5ZXJBdHRyaWJ1dGlvbi50aXRsZSwgdXJsOiBsYXllckF0dHJpYnV0aW9uLnVybH0pO1xuICAgICAgfVxuICAgICAgaWYgKGxheWVyQXR0cmlidXRpb24ubG9nb1VybCAmJiAhbG9nb3MuZmluZChhID0+IGEubG9nb1VybCA9PT0gbGF5ZXJBdHRyaWJ1dGlvbi5sb2dvVXJsKSkge1xuICAgICAgICBsb2dvcy5wdXNoKGxheWVyQXR0cmlidXRpb24pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtzb3VyY2VzOiB1bmlxdWVUZXh0QXR0cmlidXRpb25zLCBsb2dvc307XG4gIH1cbik7XG5cbmV4cG9ydCBjb25zdCBub3RpZmljYXRpb25QYW5lbFNlbGVjdG9yID0gKHByb3BzOiBLZXBsZXJHTFByb3BzKSA9PiAoe1xuICByZW1vdmVOb3RpZmljYXRpb246IHByb3BzLnVpU3RhdGVBY3Rpb25zLnJlbW92ZU5vdGlmaWNhdGlvbixcbiAgbm90aWZpY2F0aW9uczogcHJvcHMudWlTdGF0ZS5ub3RpZmljYXRpb25zXG59KTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTID0ge1xuICBtYXBTdHlsZXM6IFtdLFxuICBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdDogZmFsc2UsXG4gIG1hcGJveEFwaVVybDogREVGQVVMVF9NQVBCT1hfQVBJX1VSTCxcbiAgd2lkdGg6IDgwMCxcbiAgaGVpZ2h0OiA4MDAsXG4gIGFwcE5hbWU6IEtFUExFUl9HTF9OQU1FLFxuICB2ZXJzaW9uOiBLRVBMRVJfR0xfVkVSU0lPTixcbiAgc2lkZVBhbmVsV2lkdGg6IERJTUVOU0lPTlMuc2lkZVBhbmVsLndpZHRoLFxuICB0aGVtZToge30sXG4gIGNsb3VkUHJvdmlkZXJzOiBbXSxcbiAgcmVhZE9ubHk6IGZhbHNlLFxuICBmZWF0dXJlRmxhZ3M6IHt9XG59O1xuXG50eXBlIEtlcGxlckdMQmFzaWNQcm9wcyA9IHtcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHN0cmluZztcbiAgbWFwYm94QXBpVXJsPzogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuICB3aWR0aD86IG51bWJlcjtcbiAgaGVpZ2h0PzogbnVtYmVyO1xuXG4gIGFwcFdlYnNpdGU/OiBhbnk7XG4gIG9uU2F2ZU1hcD86ICgpID0+IHZvaWQ7XG4gIG9uVmlld1N0YXRlQ2hhbmdlPzogKHZpZXdTdGF0ZTogVmlld3BvcnQpID0+IHZvaWQ7XG4gIG9uRGVja0luaXRpYWxpemVkPzogKCkgPT4gdm9pZDtcbiAgb25LZXBsZXJHbEluaXRpYWxpemVkPzogKCkgPT4gdm9pZDtcbiAgZ2V0TWFwYm94UmVmPzogKCkgPT4gUmVhY3QuUmVmT2JqZWN0PGFueT47XG4gIG1hcFN0eWxlcz86IHtpZDogc3RyaW5nOyBzdHlsZT86IG9iamVjdH1bXTtcbiAgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQ/OiBib29sZWFuO1xuICBhcHBOYW1lPzogc3RyaW5nO1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuICBzaWRlUGFuZWxXaWR0aD86IG51bWJlcjtcbiAgdGhlbWU/OiBvYmplY3Q7XG4gIGNsb3VkUHJvdmlkZXJzPzogUHJvdmlkZXJbXTtcbiAgZGVja0dsUHJvcHM/OiBvYmplY3Q7XG4gIG9uTG9hZENsb3VkTWFwU3VjY2Vzcz86IE9uU3VjY2Vzc0NhbGxCYWNrO1xuICBvbkxvYWRDbG91ZE1hcEVycm9yPzogT25FcnJvckNhbGxCYWNrO1xuICBvbk1vdXNlTW92ZT86IChldmVudDogUmVhY3QuTW91c2VFdmVudCAmIHtsbmdMYXQ/OiBbbnVtYmVyLCBudW1iZXJdfSkgPT4gdm9pZDtcbiAgb25FeHBvcnRUb0Nsb3VkU3VjY2Vzcz86IE9uU3VjY2Vzc0NhbGxCYWNrO1xuICBvbkV4cG9ydFRvQ2xvdWRFcnJvcj86IE9uRXJyb3JDYWxsQmFjaztcbiAgcmVhZE9ubHk/OiBib29sZWFuO1xuICBmZWF0dXJlRmxhZ3M/OiBGZWF0dXJlRmxhZ3M7XG5cbiAgbG9jYWxlTWVzc2FnZXM/OiB7W2tleTogc3RyaW5nXToge1trZXk6IHN0cmluZ106IHN0cmluZ319O1xuICBkaXNwYXRjaDogRGlzcGF0Y2g8YW55PjtcblxuICB0b3BNYXBDb250YWluZXJQcm9wcz86IG9iamVjdDtcbiAgYm90dG9tTWFwQ29udGFpbmVyUHJvcHM/OiBvYmplY3Q7XG5cbiAgdHJhbnNmb3JtUmVxdWVzdD86ICh1cmw6IHN0cmluZykgPT4ge3VybDogc3RyaW5nfTtcblxuICAvKiogUGFzcyBgZmFsc2VgIHRvIGRpc2FibGUgdGhlIHJlbW90ZSBSVEwgdGV4dCBwbHVnaW4sIG9yIGEgVVJMIHN0cmluZyB0byBzZWxmLWhvc3QgaXQuICovXG4gIFJUTFRleHRQbHVnaW4/OiBzdHJpbmcgfCBmYWxzZTtcbn07XG5cbnR5cGUgS2VwbGVyR0xQcm9wcyA9IEtlcGxlckdsU3RhdGUgJiBLZXBsZXJHbEFjdGlvbnMgJiBLZXBsZXJHTEJhc2ljUHJvcHM7XG50eXBlIEtlcGxlckdMQ29tcFN0YXRlID0ge1xuICBkaW1lbnNpb25zOiB7d2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXJ9IHwgbnVsbDtcbn07XG5cbktlcGxlckdsRmFjdG9yeS5kZXBzID0gW1xuICBCb3R0b21XaWRnZXRGYWN0b3J5LFxuICBHZW9Db2RlclBhbmVsRmFjdG9yeSxcbiAgTWFwQ29udGFpbmVyRmFjdG9yeSxcbiAgTWFwc0xheW91dEZhY3RvcnksXG4gIE1vZGFsQ29udGFpbmVyRmFjdG9yeSxcbiAgU2lkZVBhbmVsRmFjdG9yeSxcbiAgUGxvdENvbnRhaW5lckZhY3RvcnksXG4gIE5vdGlmaWNhdGlvblBhbmVsRmFjdG9yeSxcbiAgRG5kQ29udGV4dEZhY3RvcnksXG4gIEVmZmVjdE1hbmFnZXJGYWN0b3J5XG5dO1xuXG5mdW5jdGlvbiBLZXBsZXJHbEZhY3RvcnkoXG4gIEJvdHRvbVdpZGdldDogUmV0dXJuVHlwZTx0eXBlb2YgQm90dG9tV2lkZ2V0RmFjdG9yeT4sXG4gIEdlb0NvZGVyUGFuZWw6IFJldHVyblR5cGU8dHlwZW9mIEdlb0NvZGVyUGFuZWxGYWN0b3J5PixcbiAgTWFwQ29udGFpbmVyOiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBDb250YWluZXJGYWN0b3J5PixcbiAgTWFwc0xheW91dDogUmV0dXJuVHlwZTx0eXBlb2YgTWFwc0xheW91dEZhY3Rvcnk+LFxuICBNb2RhbENvbnRhaW5lcjogUmV0dXJuVHlwZTx0eXBlb2YgTW9kYWxDb250YWluZXJGYWN0b3J5PixcbiAgU2lkZVBhbmVsOiBSZXR1cm5UeXBlPHR5cGVvZiBTaWRlUGFuZWxGYWN0b3J5PixcbiAgUGxvdENvbnRhaW5lcjogUmV0dXJuVHlwZTx0eXBlb2YgUGxvdENvbnRhaW5lckZhY3Rvcnk+LFxuICBOb3RpZmljYXRpb25QYW5lbDogUmV0dXJuVHlwZTx0eXBlb2YgTm90aWZpY2F0aW9uUGFuZWxGYWN0b3J5PixcbiAgRG5kQ29udGV4dDogUmV0dXJuVHlwZTx0eXBlb2YgRG5kQ29udGV4dEZhY3Rvcnk+XG4pOiBSZWFjdC5Db21wb25lbnRUeXBlPEtlcGxlckdMQmFzaWNQcm9wcyAmIHtzZWxlY3RvcjogKC4uLmFyZ3M6IGFueVtdKSA9PiBLZXBsZXJHbFN0YXRlfT4ge1xuICAvKiogQHR5cGVkZWYge2ltcG9ydCgnLi9rZXBsZXItZ2wnKS5VbmNvbm5lY3RlZEtlcGxlckdsUHJvcHN9IEtlcGxlckdsUHJvcHMgKi9cbiAgLyoqIEBhdWdtZW50cyBSZWFjdC5Db21wb25lbnQ8S2VwbGVyR2xQcm9wcz4gKi9cbiAgY2xhc3MgS2VwbGVyR0wgZXh0ZW5kcyBDb21wb25lbnQ8XG4gICAgS2VwbGVyR0xQcm9wcyAmIHtzZWxlY3RvcjogKC4uLmFyZ3M6IGFueVtdKSA9PiBLZXBsZXJHbFN0YXRlfSxcbiAgICBLZXBsZXJHTENvbXBTdGF0ZVxuICA+IHtcbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0gREVGQVVMVF9LRVBMRVJfR0xfUFJPUFM7XG5cbiAgICBzdGF0ZTogS2VwbGVyR0xDb21wU3RhdGUgPSB7XG4gICAgICBkaW1lbnNpb25zOiBudWxsXG4gICAgfTtcblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgaWYgKGdldEFwcGxpY2F0aW9uQ29uZmlnKCkuYmFzZU1hcExpYnJhcnlDb25maWc/LlsnbWFwYm94J10/Lm1hcExpYk5hbWUgPT09ICdNYXBib3gnKSB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRlTWFwYm94VG9rZW4oKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2xvYWRNYXBTdHlsZSgpO1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uS2VwbGVyR2xJbml0aWFsaXplZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnByb3BzLm9uS2VwbGVyR2xJbml0aWFsaXplZCgpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucm9vdC5jdXJyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgb2JzZXJ2ZURpbWVuc2lvbnModGhpcy5yb290LmN1cnJlbnQsIHRoaXMuX2hhbmRsZVJlc2l6ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICBpZiAodGhpcy5yb290LmN1cnJlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICB1bm9ic2VydmVEaW1lbnNpb25zKHRoaXMucm9vdC5jdXJyZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfaGFuZGxlUmVzaXplID0gZGltZW5zaW9ucyA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtkaW1lbnNpb25zfSk7XG4gICAgfTtcblxuICAgIHN0YXRpYyBjb250ZXh0VHlwZSA9IFJvb3RDb250ZXh0O1xuXG4gICAgcm9vdCA9IGNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbiAgICBib3R0b21XaWRnZXRSZWYgPSBjcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG5cbiAgICAvKiBzZWxlY3RvcnMgKi9cbiAgICB0aGVtZVNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMudGhlbWU7XG4gICAgYXZhaWxhYmxlVGhlbWVTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKHRoaXMudGhlbWVTZWxlY3RvciwgdGhlbWUgPT5cbiAgICAgIHR5cGVvZiB0aGVtZSA9PT0gJ29iamVjdCdcbiAgICAgICAgPyB7XG4gICAgICAgICAgICAuLi5iYXNpY1RoZW1lLFxuICAgICAgICAgICAgLi4udGhlbWVcbiAgICAgICAgICB9XG4gICAgICAgIDogdGhlbWUgPT09IFRIRU1FLmxpZ2h0XG4gICAgICAgID8gdGhlbWVMVFxuICAgICAgICA6IHRoZW1lID09PSBUSEVNRS5iYXNlXG4gICAgICAgID8gdGhlbWVCU1xuICAgICAgICA6IHRoZW1lXG4gICAgKTtcblxuICAgIGRhdGFzZXRzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy52aXNTdGF0ZS5kYXRhc2V0cztcbiAgICBmaWx0ZXJlZERhdGFzZXRzU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3Rvcih0aGlzLmRhdGFzZXRzU2VsZWN0b3IsIGdldFZpc2libGVEYXRhc2V0cyk7XG5cbiAgICBhdmFpbGFibGVQcm92aWRlcnMgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIChwcm9wczogS2VwbGVyR0xQcm9wcykgPT4gcHJvcHMuY2xvdWRQcm92aWRlcnMsXG4gICAgICBwcm92aWRlcnMgPT5cbiAgICAgICAgQXJyYXkuaXNBcnJheShwcm92aWRlcnMpICYmIHByb3ZpZGVycy5sZW5ndGhcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgaGFzU3RvcmFnZTogcHJvdmlkZXJzLnNvbWUocCA9PiBwLmhhc1ByaXZhdGVTdG9yYWdlKCkpLFxuICAgICAgICAgICAgICBoYXNTaGFyZTogcHJvdmlkZXJzLnNvbWUocCA9PiBwLmhhc1NoYXJpbmdVcmwoKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHt9XG4gICAgKTtcblxuICAgIGxvY2FsZU1lc3NhZ2VzU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIChwcm9wczogS2VwbGVyR0xQcm9wcykgPT4gcHJvcHMubG9jYWxlTWVzc2FnZXMsXG4gICAgICBjdXN0b21NZXNzYWdlcyA9PiAoY3VzdG9tTWVzc2FnZXMgPyBtZXJnZU1lc3NhZ2VzKG1lc3NhZ2VzLCBjdXN0b21NZXNzYWdlcykgOiBtZXNzYWdlcylcbiAgICApO1xuXG4gICAgLyogcHJpdmF0ZSBtZXRob2RzICovXG4gICAgX3ZhbGlkYXRlTWFwYm94VG9rZW4oKSB7XG4gICAgICBjb25zdCB7bWFwYm94QXBpQWNjZXNzVG9rZW59ID0gdGhpcy5wcm9wcztcbiAgICAgIGlmICghdmFsaWRhdGVUb2tlbihtYXBib3hBcGlBY2Nlc3NUb2tlbikpIHtcbiAgICAgICAgQ29uc29sZS53YXJuKE1JU1NJTkdfTUFQQk9YX1RPS0VOKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfbG9hZE1hcFN0eWxlID0gKCkgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdFN0eWxlcyA9IE9iamVjdC52YWx1ZXModGhpcy5wcm9wcy5tYXBTdHlsZS5tYXBTdHlsZXMpO1xuICAgICAgLy8gYWRkIGlkIHRvIGN1c3RvbSBtYXAgc3R5bGVzIGlmIG5vdCBnaXZlblxuICAgICAgY29uc3QgY3VzdG9tU3R5bGVzID0gKHRoaXMucHJvcHMubWFwU3R5bGVzIHx8IFtdKS5tYXAobXMgPT4gKHtcbiAgICAgICAgLi4ubXMsXG4gICAgICAgIGlkOiBtcy5pZCB8fCBnZW5lcmF0ZUhhc2hJZCgpXG4gICAgICB9KSk7XG5cbiAgICAgIGNvbnN0IGFsbFN0eWxlcyA9IFsuLi5jdXN0b21TdHlsZXMsIC4uLmRlZmF1bHRTdHlsZXNdLnJlZHVjZSgoYWNjdSwgc3R5bGUpID0+IHtcbiAgICAgICAgYWNjdVtzdHlsZS5pZF0gPSBzdHlsZTtcbiAgICAgICAgcmV0dXJuIGFjY3U7XG4gICAgICB9LCB7fSk7XG5cbiAgICAgIHRoaXMucHJvcHMubWFwU3R5bGVBY3Rpb25zLmxvYWRNYXBTdHlsZXMoYWxsU3R5bGVzKTtcbiAgICB9O1xuXG4gICAgX2RlbGV0ZU1hcExhYmVscyA9IChjb250YWluZXJJZCwgbGF5ZXJJZCkgPT4ge1xuICAgICAgdGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMudG9nZ2xlTGF5ZXJGb3JNYXAoY29udGFpbmVySWQsIGxheWVySWQpO1xuICAgIH07XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgaWQgPSAnbWFwJyxcbiAgICAgICAgd2lkdGggPSBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMuaGVpZ2h0LFxuICAgICAgICB1aVN0YXRlLFxuICAgICAgICB2aXNTdGF0ZSxcbiAgICAgICAgLy8gcmVhZE9ubHkgb3ZlcnJpZGVcbiAgICAgICAgcmVhZE9ubHksXG5cbiAgICAgICAgLy8gZmVhdHVyZXNcbiAgICAgICAgZmVhdHVyZUZsYWdzLFxuXG4gICAgICAgIC8vIGNsb3VkIHByb3ZpZGVyc1xuICAgICAgICBjbG91ZFByb3ZpZGVycyA9IFtdXG4gICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgY29uc3QgZGltZW5zaW9ucyA9IHRoaXMuc3RhdGUuZGltZW5zaW9ucyB8fCB7d2lkdGgsIGhlaWdodH07XG4gICAgICBjb25zdCB7XG4gICAgICAgIHNwbGl0TWFwcywgLy8gdGhpcyB3aWxsIHN0b3JlIHN1cHBvcnQgZm9yIHNwbGl0IG1hcCB2aWV3IGlzIG5lY2Vzc2FyeVxuICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZ1xuICAgICAgfSA9IHZpc1N0YXRlO1xuXG4gICAgICBjb25zdCBpc1NwbGl0ID0gaXNTcGxpdFNlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgdGhlbWUgPSB0aGlzLmF2YWlsYWJsZVRoZW1lU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBsb2NhbGVNZXNzYWdlcyA9IHRoaXMubG9jYWxlTWVzc2FnZXNTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IGlzRXhwb3J0aW5nSW1hZ2UgPSB1aVN0YXRlLmV4cG9ydEltYWdlLmV4cG9ydGluZztcbiAgICAgIGNvbnN0IGF2YWlsYWJsZVByb3ZpZGVycyA9IHRoaXMuYXZhaWxhYmxlUHJvdmlkZXJzKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCBmaWx0ZXJlZERhdGFzZXRzID0gdGhpcy5maWx0ZXJlZERhdGFzZXRzU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBzaWRlRmllbGRzID0gc2lkZVBhbmVsU2VsZWN0b3IodGhpcy5wcm9wcywgYXZhaWxhYmxlUHJvdmlkZXJzLCBmaWx0ZXJlZERhdGFzZXRzKTtcbiAgICAgIGNvbnN0IHBsb3RDb250YWluZXJGaWVsZHMgPSBwbG90Q29udGFpbmVyU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBib3R0b21XaWRnZXRGaWVsZHMgPSBib3R0b21XaWRnZXRTZWxlY3Rvcih0aGlzLnByb3BzLCB0aGVtZSk7XG4gICAgICBjb25zdCBtb2RhbENvbnRhaW5lckZpZWxkcyA9IG1vZGFsQ29udGFpbmVyU2VsZWN0b3IodGhpcy5wcm9wcywgdGhpcy5yb290LmN1cnJlbnQpO1xuICAgICAgY29uc3QgZ2VvQ29kZXJQYW5lbEZpZWxkcyA9IGdlb0NvZGVyUGFuZWxTZWxlY3Rvcih0aGlzLnByb3BzLCBkaW1lbnNpb25zKTtcbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvblBhbmVsRmllbGRzID0gbm90aWZpY2F0aW9uUGFuZWxTZWxlY3Rvcih0aGlzLnByb3BzKTtcblxuICAgICAgY29uc3QgbWFwQ29udGFpbmVycyA9ICFpc1NwbGl0XG4gICAgICAgID8gW1xuICAgICAgICAgICAgPE1hcENvbnRhaW5lclxuICAgICAgICAgICAgICBwcmltYXJ5PXt0cnVlfVxuICAgICAgICAgICAgICBrZXk9ezB9XG4gICAgICAgICAgICAgIGluZGV4PXswfVxuICAgICAgICAgICAgICB7Li4ubWFwRmllbGRzU2VsZWN0b3IodGhpcy5wcm9wcyl9XG4gICAgICAgICAgICAgIGNvbnRhaW5lcklkPXswfVxuICAgICAgICAgICAgICBkZWxldGVNYXBMYWJlbHM9e3RoaXMuX2RlbGV0ZU1hcExhYmVsc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgXVxuICAgICAgICA6IHNwbGl0TWFwcy5tYXAoKHNldHRpbmdzLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPE1hcENvbnRhaW5lclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgIHByaW1hcnk9e2luZGV4ID09PSAxfVxuICAgICAgICAgICAgICB7Li4ubWFwRmllbGRzU2VsZWN0b3IodGhpcy5wcm9wcywgaW5kZXgpfVxuICAgICAgICAgICAgICBjb250YWluZXJJZD17aW5kZXh9XG4gICAgICAgICAgICAgIGRlbGV0ZU1hcExhYmVscz17dGhpcy5fZGVsZXRlTWFwTGFiZWxzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFJvb3RDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0aGlzLnJvb3R9PlxuICAgICAgICAgIDxGZWF0dXJlRmxhZ3NDb250ZXh0UHJvdmlkZXIgZmVhdHVyZUZsYWdzPXtmZWF0dXJlRmxhZ3N9PlxuICAgICAgICAgICAgPEludGxQcm92aWRlciBsb2NhbGU9e3VpU3RhdGUubG9jYWxlfSBtZXNzYWdlcz17bG9jYWxlTWVzc2FnZXNbdWlTdGF0ZS5sb2NhbGVdfT5cbiAgICAgICAgICAgICAgPFN0eWxlU2hlZXRNYW5hZ2VyIHNob3VsZEZvcndhcmRQcm9wPXtzaG91bGRGb3J3YXJkUHJvcH0+XG4gICAgICAgICAgICAgICAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT5cbiAgICAgICAgICAgICAgICAgIDxDbG91ZExpc3RQcm92aWRlciBwcm92aWRlcnM9e2Nsb3VkUHJvdmlkZXJzfT5cbiAgICAgICAgICAgICAgICAgICAgPEdsb2JhbFN0eWxlXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwia2VwbGVyLWdsXCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD17YGtlcGxlci1nbF9fJHtpZH1gfVxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGAke3dpZHRofXB4YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYCR7aGVpZ2h0fXB4YFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnJvb3R9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uUGFuZWwgey4uLm5vdGlmaWNhdGlvblBhbmVsRmllbGRzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxEbmRDb250ZXh0IHZpc1N0YXRlPXt2aXNTdGF0ZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7IXVpU3RhdGUucmVhZE9ubHkgJiYgIXJlYWRPbmx5ICYmIDxTaWRlUGFuZWwgey4uLnNpZGVGaWVsZHN9IC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgPE1hcHNMYXlvdXQgY2xhc3NOYW1lPVwibWFwc1wiIG1hcFN0YXRlPXt0aGlzLnByb3BzLm1hcFN0YXRlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge21hcENvbnRhaW5lcnN9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L01hcHNMYXlvdXQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC9EbmRDb250ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIHtpc0V4cG9ydGluZ0ltYWdlICYmIDxQbG90Q29udGFpbmVyIHsuLi5wbG90Q29udGFpbmVyRmllbGRzfSAvPn1cbiAgICAgICAgICAgICAgICAgICAgICB7LyogMSBnZW9jb2Rlcjogc2luZ2xlIG1vZGUgT1Igc3BsaXQgbW9kZSBhbmQgc3luY2VkIHZpZXdwb3J0cyAqL31cbiAgICAgICAgICAgICAgICAgICAgICB7IWlzVmlld3BvcnREaXNqb2ludGVkKHRoaXMucHJvcHMpICYmIGludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyLmVuYWJsZWQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEdlb0NvZGVyUGFuZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdlb0NvZGVyUGFuZWxGaWVsZHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB1bnN5bmNlZFZpZXdwb3J0cz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgey8qIDIgZ2VvY29kZXJzOiBzcGxpdCBtb2RlIGFuZCB1bnN5bmNlZCB2aWV3cG9ydHMgKi99XG4gICAgICAgICAgICAgICAgICAgICAge2lzVmlld3BvcnREaXNqb2ludGVkKHRoaXMucHJvcHMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZy5nZW9jb2Rlci5lbmFibGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXBDb250YWluZXJzLm1hcCgoX21hcENvbnRhaW5lciwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEdlb0NvZGVyUGFuZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZW9Db2RlclBhbmVsRmllbGRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnN5bmNlZFZpZXdwb3J0cz17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgIDxCb3R0b21XaWRnZXRPdXRlciBhYnNvbHV0ZT17IWhhc1BvcnRhYmxlV2lkdGgoYnJlYWtQb2ludFZhbHVlcyl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEJvdHRvbVdpZGdldFxuICAgICAgICAgICAgICAgICAgICAgICAgICByb290UmVmPXt0aGlzLmJvdHRvbVdpZGdldFJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLmJvdHRvbVdpZGdldEZpZWxkc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyVz17ZGltZW5zaW9ucy53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbWU9e3RoZW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L0JvdHRvbVdpZGdldE91dGVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxNb2RhbENvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLm1vZGFsQ29udGFpbmVyRmllbGRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyVz17ZGltZW5zaW9ucy53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckg9e2RpbWVuc2lvbnMuaGVpZ2h0fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvR2xvYmFsU3R5bGU+XG4gICAgICAgICAgICAgICAgICA8L0Nsb3VkTGlzdFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgPC9TdHlsZVNoZWV0TWFuYWdlcj5cbiAgICAgICAgICAgIDwvSW50bFByb3ZpZGVyPlxuICAgICAgICAgIDwvRmVhdHVyZUZsYWdzQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICA8L1Jvb3RDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ga2VwbGVyR2xDb25uZWN0KFxuICAgIG1hcFN0YXRlVG9Qcm9wcyxcbiAgICBtYWtlTWFwRGlzcGF0Y2hUb1Byb3BzXG4gICkod2l0aFRoZW1lKEtlcGxlckdMKSkgYXMgUmV0dXJuVHlwZTx0eXBlb2YgS2VwbGVyR2xGYWN0b3J5Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZTogS2VwbGVyR2xTdGF0ZSwgcHJvcHM6IEtlcGxlckdMUHJvcHMpIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wcm9wcyxcbiAgICB2aXNTdGF0ZTogc3RhdGUudmlzU3RhdGUsXG4gICAgbWFwU3R5bGU6IHN0YXRlLm1hcFN0eWxlLFxuICAgIG1hcFN0YXRlOiBzdGF0ZS5tYXBTdGF0ZSxcbiAgICB1aVN0YXRlOiBzdGF0ZS51aVN0YXRlLFxuICAgIHByb3ZpZGVyU3RhdGU6IHN0YXRlLnByb3ZpZGVyU3RhdGVcbiAgfTtcbn1cblxuY29uc3QgZGVmYXVsdFVzZXJBY3Rpb25zID0ge307XG5cbmNvbnN0IGdldERpc3BhdGNoID0gZGlzcGF0Y2ggPT4gZGlzcGF0Y2g7XG5jb25zdCBnZXRVc2VyQWN0aW9ucyA9IChkaXNwYXRjaCwgcHJvcHMpID0+IHByb3BzLmFjdGlvbnMgfHwgZGVmYXVsdFVzZXJBY3Rpb25zO1xuXG4vKiogQHR5cGUgeygpID0+IGltcG9ydCgncmVzZWxlY3QnKS5PdXRwdXRQYXJhbWV0cmljU2VsZWN0b3I8YW55LCBhbnksIGFueSwgYW55Pn0gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlR2V0QWN0aW9uQ3JlYXRvcnMoKSB7XG4gIHJldHVybiBjcmVhdGVTZWxlY3RvcihbZ2V0RGlzcGF0Y2gsIGdldFVzZXJBY3Rpb25zXSwgKGRpc3BhdGNoLCB1c2VyQWN0aW9ucykgPT4ge1xuICAgIGNvbnN0IFt2aXNTdGF0ZUFjdGlvbnMsIG1hcFN0YXRlQWN0aW9ucywgbWFwU3R5bGVBY3Rpb25zLCB1aVN0YXRlQWN0aW9ucywgcHJvdmlkZXJBY3Rpb25zXSA9IFtcbiAgICAgIFZpc1N0YXRlQWN0aW9ucyxcbiAgICAgIE1hcFN0YXRlQWN0aW9ucyxcbiAgICAgIE1hcFN0eWxlQWN0aW9ucyxcbiAgICAgIFVJU3RhdGVBY3Rpb25zLFxuICAgICAgUHJvdmlkZXJBY3Rpb25zXG4gICAgXS5tYXAoYWN0aW9ucyA9PiBiaW5kQWN0aW9uQ3JlYXRvcnMobWVyZ2VBY3Rpb25zKGFjdGlvbnMsIHVzZXJBY3Rpb25zKSwgZGlzcGF0Y2gpKTtcblxuICAgIHJldHVybiB7XG4gICAgICB2aXNTdGF0ZUFjdGlvbnMsXG4gICAgICBtYXBTdGF0ZUFjdGlvbnMsXG4gICAgICBtYXBTdHlsZUFjdGlvbnMsXG4gICAgICB1aVN0YXRlQWN0aW9ucyxcbiAgICAgIHByb3ZpZGVyQWN0aW9ucyxcbiAgICAgIGRpc3BhdGNoXG4gICAgfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1ha2VNYXBEaXNwYXRjaFRvUHJvcHMoKSB7XG4gIGNvbnN0IGdldEFjdGlvbkNyZWF0b3JzID0gbWFrZUdldEFjdGlvbkNyZWF0b3JzKCk7XG4gIGNvbnN0IG1hcERpc3BhdGNoVG9Qcm9wcyA9IChkaXNwYXRjaCwgb3duUHJvcHMpID0+IHtcbiAgICBjb25zdCBncm91cGVkQWN0aW9uQ3JlYXRvcnMgPSBnZXRBY3Rpb25DcmVhdG9ycyhkaXNwYXRjaCwgb3duUHJvcHMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmdyb3VwZWRBY3Rpb25DcmVhdG9ycyxcbiAgICAgIGRpc3BhdGNoXG4gICAgfTtcbiAgfTtcblxuICByZXR1cm4gbWFwRGlzcGF0Y2hUb1Byb3BzO1xufVxuXG4vKipcbiAqIE92ZXJyaWRlIGRlZmF1bHQga2VwbGVyLmdsIGFjdGlvbnMgd2l0aCB1c2VyIGRlZmluZWQgYWN0aW9ucyB1c2luZyB0aGUgc2FtZSBrZXlcbiAqL1xuZnVuY3Rpb24gbWVyZ2VBY3Rpb25zKGFjdGlvbnMsIHVzZXJBY3Rpb25zKSB7XG4gIGNvbnN0IG92ZXJyaWRlcyA9IHt9O1xuICBmb3IgKGNvbnN0IGtleSBpbiB1c2VyQWN0aW9ucykge1xuICAgIGlmIChcbiAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh1c2VyQWN0aW9ucywga2V5KSAmJlxuICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFjdGlvbnMsIGtleSlcbiAgICApIHtcbiAgICAgIG92ZXJyaWRlc1trZXldID0gdXNlckFjdGlvbnNba2V5XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gey4uLmFjdGlvbnMsIC4uLm92ZXJy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
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
1
|
+
import React, { PropsWithChildren } from 'react';
|
|
2
|
+
type StyledContainerProps = {
|
|
3
3
|
$isVisible?: boolean;
|
|
4
4
|
$left: number;
|
|
5
|
+
$bottomOffset: number;
|
|
5
6
|
};
|
|
6
7
|
export declare const StyledContainer: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, StyledContainerProps>>;
|
|
7
|
-
|
|
8
|
+
type LoadingIndicatorProps = {
|
|
8
9
|
isVisible?: boolean;
|
|
9
10
|
activeSidePanel?: boolean;
|
|
10
11
|
sidePanelWidth?: number;
|
|
12
|
+
hasAttributionLogos?: boolean;
|
|
11
13
|
};
|
|
12
|
-
declare const _default: React.FC<
|
|
14
|
+
declare const _default: React.FC<PropsWithChildren<LoadingIndicatorProps>>;
|
|
13
15
|
export default _default;
|