@kepler.gl/components 3.3.0-alpha.6 → 3.3.0-alpha.8
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/cjs/common/data-table/cell-size.js +40 -23
- package/dist/cjs/common/data-table/column-statistics-categoric.js +40 -0
- package/dist/cjs/common/data-table/column-statistics-components.js +65 -0
- package/dist/cjs/common/data-table/column-statistics-numeric.js +87 -0
- package/dist/cjs/common/data-table/column-statistics-time.js +69 -0
- package/dist/cjs/common/data-table/grid.js +2 -2
- package/dist/cjs/common/data-table/header-cell.js +123 -44
- package/dist/cjs/common/data-table/index.js +104 -31
- package/dist/cjs/common/file-uploader/file-upload.js +250 -40
- package/dist/cjs/common/histogram-plot.js +1 -1
- package/dist/cjs/common/icons/circle.js +54 -0
- package/dist/cjs/common/icons/{arrow-down-solid.js → draw-point.js} +21 -11
- package/dist/cjs/common/icons/index.js +22 -1
- package/dist/cjs/common/icons/line-string.js +60 -0
- package/dist/cjs/common/item-selector/item-selector.js +2 -2
- package/dist/cjs/common/portaled.js +3 -3
- package/dist/cjs/common/time-range-slider.js +2 -2
- package/dist/cjs/common/timeline-slider.js +2 -2
- package/dist/cjs/common/toolbar-item.js +24 -3
- package/dist/cjs/editor/editor.js +27 -9
- package/dist/cjs/editor/feature-action-panel.js +34 -12
- package/dist/cjs/editor/feature-properties-editor.js +215 -0
- package/dist/cjs/editor/filter-feature-badges.js +92 -0
- package/dist/cjs/filters/filter-panels/polygon-filter-panel.js +2 -2
- package/dist/cjs/filters/time-widget.js +2 -2
- package/dist/cjs/index.js +33 -1
- package/dist/cjs/kepler-gl.js +20 -3
- package/dist/cjs/map/layer-hover-info.js +2 -2
- package/dist/cjs/map/map-control-toolbar.js +2 -2
- package/dist/cjs/map/map-control.js +14 -8
- package/dist/cjs/map/map-draw-panel.js +74 -15
- package/dist/cjs/map/theme-toggle-button.js +64 -0
- package/dist/cjs/map-container.js +17 -6
- package/dist/cjs/map-view-state-context.js +3 -3
- package/dist/cjs/modal-container.js +3 -2
- package/dist/cjs/modals/cloud-components/cloud-item.js +55 -7
- package/dist/cjs/modals/cloud-components/cloud-item.spec.js +75 -3
- package/dist/cjs/modals/cloud-components/cloud-maps.js +2 -1
- package/dist/cjs/modals/cloud-components/cloud-storage-disclaimer.js +24 -0
- package/dist/cjs/modals/cloud-tile.js +82 -39
- package/dist/cjs/modals/data-table-modal.js +37 -25
- package/dist/cjs/modals/export-video-modal.js +28 -1
- package/dist/cjs/modals/export-video-modal.spec.js +56 -10
- package/dist/cjs/modals/globe-export-video-container.js +19 -3
- package/dist/cjs/modals/globe-export-video-preview.js +25 -7
- package/dist/cjs/modals/hubble-utils.js +8 -3
- package/dist/cjs/modals/image-modal-container.js +2 -2
- package/dist/cjs/modals/load-data-modal.js +3 -3
- package/dist/cjs/modals/load-storage-map.js +9 -6
- package/dist/cjs/modals/save-map-modal.js +4 -3
- package/dist/cjs/modals/share-map-modal.js +5 -4
- package/dist/cjs/modals/swipe-composite-utils.js +9 -1
- package/dist/cjs/modals/swipe-composite-utils.spec.js +69 -0
- package/dist/cjs/modals/swipe-export-video-preview.js +9 -5
- package/dist/cjs/plot-container.js +12 -5
- package/dist/cjs/side-panel/common/dataset-info.js +2 -2
- package/dist/cjs/side-panel/filter-panel/filter-panel.js +2 -2
- package/dist/cjs/side-panel/layer-manager.js +11 -3
- package/dist/cjs/side-panel/layer-panel/custom-palette.js +2 -2
- package/dist/cjs/side-panel/layer-panel/dataset-layer-section.js +11 -3
- package/dist/cjs/side-panel/layer-panel/layer-configurator.js +74 -31
- package/dist/cjs/side-panel/map-style-panel/globe-config-panel.js +90 -25
- package/dist/common/data-table/column-statistics-categoric.d.ts +9 -0
- package/dist/common/data-table/column-statistics-components.d.ts +31 -0
- package/dist/common/data-table/column-statistics-numeric.d.ts +18 -0
- package/dist/common/data-table/column-statistics-time.d.ts +19 -0
- package/dist/common/data-table/header-cell.d.ts +7 -5
- package/dist/common/data-table/index.d.ts +7 -24
- package/dist/common/histogram-plot.d.ts +24 -1
- package/dist/common/icons/{arrow-down-solid.d.ts → circle.d.ts} +2 -1
- package/dist/common/icons/draw-point.d.ts +10 -0
- package/dist/common/icons/index.d.ts +3 -0
- package/dist/common/icons/line-string.d.ts +10 -0
- package/dist/common/toolbar-item.d.ts +2 -0
- package/dist/editor/editor.d.ts +1 -0
- package/dist/editor/feature-action-panel.d.ts +1 -0
- package/dist/editor/feature-properties-editor.d.ts +8 -0
- package/dist/editor/filter-feature-badges.d.ts +12 -0
- package/dist/esm/common/data-table/cell-size.js +40 -23
- package/dist/esm/common/data-table/column-statistics-categoric.js +33 -0
- package/dist/esm/common/data-table/column-statistics-components.js +59 -0
- package/dist/esm/common/data-table/column-statistics-numeric.js +78 -0
- package/dist/esm/common/data-table/column-statistics-time.js +60 -0
- package/dist/esm/common/data-table/grid.js +2 -2
- package/dist/esm/common/data-table/header-cell.js +125 -46
- package/dist/esm/common/data-table/index.js +104 -31
- package/dist/esm/common/file-uploader/file-upload.js +251 -41
- package/dist/esm/common/histogram-plot.js +1 -1
- package/dist/esm/common/icons/circle.js +48 -0
- package/dist/esm/common/icons/draw-point.js +44 -0
- package/dist/esm/common/icons/index.js +4 -1
- package/dist/esm/common/icons/line-string.js +54 -0
- package/dist/esm/common/item-selector/item-selector.js +2 -2
- package/dist/esm/common/portaled.js +3 -3
- package/dist/esm/common/time-range-slider.js +2 -2
- package/dist/esm/common/timeline-slider.js +2 -2
- package/dist/esm/common/toolbar-item.js +24 -3
- package/dist/esm/editor/editor.js +27 -9
- package/dist/esm/editor/feature-action-panel.js +37 -15
- package/dist/esm/editor/feature-properties-editor.js +208 -0
- package/dist/esm/editor/filter-feature-badges.js +85 -0
- package/dist/esm/filters/filter-panels/polygon-filter-panel.js +2 -2
- package/dist/esm/filters/time-widget.js +2 -2
- package/dist/esm/index.js +5 -1
- package/dist/esm/kepler-gl.js +20 -3
- package/dist/esm/map/layer-hover-info.js +2 -2
- package/dist/esm/map/map-control-toolbar.js +2 -2
- package/dist/esm/map/map-control.js +14 -8
- package/dist/esm/map/map-draw-panel.js +72 -11
- package/dist/esm/map/theme-toggle-button.js +55 -0
- package/dist/esm/map-container.js +17 -6
- package/dist/esm/map-view-state-context.js +3 -3
- package/dist/esm/modal-container.js +3 -2
- package/dist/esm/modals/cloud-components/cloud-item.js +53 -7
- package/dist/esm/modals/cloud-components/cloud-item.spec.js +76 -4
- package/dist/esm/modals/cloud-components/cloud-maps.js +2 -1
- package/dist/esm/modals/cloud-components/cloud-storage-disclaimer.js +19 -0
- package/dist/esm/modals/cloud-tile.js +82 -39
- package/dist/esm/modals/data-table-modal.js +38 -26
- package/dist/esm/modals/export-video-modal.js +29 -2
- package/dist/esm/modals/export-video-modal.spec.js +56 -10
- package/dist/esm/modals/globe-export-video-container.js +20 -4
- package/dist/esm/modals/globe-export-video-preview.js +26 -8
- package/dist/esm/modals/hubble-utils.js +8 -3
- package/dist/esm/modals/image-modal-container.js +2 -2
- package/dist/esm/modals/load-data-modal.js +3 -3
- package/dist/esm/modals/load-storage-map.js +8 -3
- package/dist/esm/modals/save-map-modal.js +4 -3
- package/dist/esm/modals/share-map-modal.js +5 -4
- package/dist/esm/modals/swipe-composite-utils.js +9 -1
- package/dist/esm/modals/swipe-composite-utils.spec.js +67 -0
- package/dist/esm/modals/swipe-export-video-preview.js +8 -4
- package/dist/esm/plot-container.js +12 -5
- package/dist/esm/side-panel/common/dataset-info.js +2 -2
- package/dist/esm/side-panel/filter-panel/filter-panel.js +2 -2
- package/dist/esm/side-panel/layer-manager.js +11 -3
- package/dist/esm/side-panel/layer-panel/custom-palette.js +2 -2
- package/dist/esm/side-panel/layer-panel/dataset-layer-section.js +11 -3
- package/dist/esm/side-panel/layer-panel/layer-configurator.js +74 -31
- package/dist/esm/side-panel/map-style-panel/globe-config-panel.js +90 -25
- package/dist/index.d.ts +8 -0
- package/dist/kepler-gl.d.ts +3 -0
- package/dist/map/map-control.d.ts +6 -2
- package/dist/map/map-draw-panel.d.ts +1 -0
- package/dist/map/theme-toggle-button.d.ts +18 -0
- package/dist/map-container.d.ts +1 -0
- package/dist/modals/cloud-components/cloud-item.d.ts +2 -1
- package/dist/modals/cloud-components/cloud-storage-disclaimer.d.ts +2 -0
- package/dist/modals/data-table-modal.d.ts +1 -0
- package/dist/modals/globe-export-video-container.d.ts +2 -0
- package/dist/modals/globe-export-video-preview.d.ts +3 -0
- package/dist/modals/hubble-utils.d.ts +2 -1
- package/dist/modals/swipe-composite-utils.d.ts +1 -1
- package/dist/modals/swipe-composite-utils.spec.d.ts +1 -0
- package/package.json +20 -21
- package/dist/cjs/modals/cloud-components/provider-loading.js +0 -20
- package/dist/cjs/modals/storage-map-viewer.js +0 -98
- package/dist/cjs/side-panel/cloud-storage-dropdown.js +0 -40
- package/dist/esm/common/icons/arrow-down-solid.js +0 -34
- package/dist/esm/modals/cloud-components/provider-loading.js +0 -15
- package/dist/esm/modals/storage-map-viewer.js +0 -93
- package/dist/esm/side-panel/cloud-storage-dropdown.js +0 -33
- package/dist/modals/cloud-components/provider-loading.d.ts +0 -2
- package/dist/modals/storage-map-viewer.d.ts +0 -21
- package/dist/side-panel/cloud-storage-dropdown.d.ts +0 -6
|
@@ -10,36 +10,47 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
10
10
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
13
|
+
var _constants = require("@kepler.gl/constants");
|
|
13
14
|
var _localization = require("@kepler.gl/localization");
|
|
14
15
|
var _icons = require("../../common/icons");
|
|
15
16
|
var _styledComponents2 = require("../../common/styled-components");
|
|
16
17
|
var _panelHeaderAction = _interopRequireDefault(require("../panel-header-action"));
|
|
17
18
|
var _rangeSlider = _interopRequireDefault(require("../../common/range-slider"));
|
|
18
19
|
var _mapLayerGroupColorPicker = _interopRequireDefault(require("./map-layer-group-color-picker"));
|
|
19
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7; // SPDX-License-Identifier: MIT
|
|
20
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9; // SPDX-License-Identifier: MIT
|
|
20
21
|
// Copyright contributors to the kepler.gl project
|
|
21
22
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
22
|
-
var StyledGlobeConfigPanel = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n padding-bottom: 6px;\n"])));
|
|
23
|
+
var StyledGlobeConfigPanel = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n padding-bottom: 6px;\n\n /* Give slider/color controls more horizontal room. */\n .side-panel-panel__content {\n padding-right: 2px;\n }\n"])));
|
|
23
24
|
var StyledConfigRow = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n margin-bottom: 10px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n &:last-child {\n margin-bottom: 0;\n }\n\n .layer-group__visibility-toggle {\n margin-right: 12px;\n }\n"])));
|
|
24
25
|
var disableSlider = (0, _styledComponents.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n opacity: 0.5;\n pointer-events: none;\n"])));
|
|
25
26
|
var SliderWrapper = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n flex-grow: 1;\n margin-left: 4px;\n ", "\n"])), function (props) {
|
|
26
27
|
return props.$enabled ? '' : disableSlider;
|
|
27
28
|
});
|
|
28
29
|
|
|
30
|
+
// Atmosphere slider rows: shrink the numeric inputs by 5px so the track can use
|
|
31
|
+
// the extra space (default theme.sliderInputWidth is 56).
|
|
32
|
+
var AtmosphereSliderWrapper = (0, _styledComponents["default"])(SliderWrapper)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n input {\n width: ", "px;\n }\n"])), function (props) {
|
|
33
|
+
return props.theme.sliderInputWidth - 5;
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// Keep color swatches slightly inset from the panel edge (sliders already get
|
|
37
|
+
// inset from their numeric inputs; swatches need an explicit margin).
|
|
38
|
+
var ColorPickerSlot = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n margin-right: 10px;\n"])));
|
|
39
|
+
|
|
29
40
|
// Slider rows (Day/Night, Sun Azimuth) put the label and the slider side by side.
|
|
30
41
|
// Give the label only the width its (short) text needs so the slider gets the
|
|
31
42
|
// rest of the row. The child indent is kept small (~half an eye-icon width) so the
|
|
32
43
|
// sub-row eye icon lines up close to the parent (atmosphere) row, rather than
|
|
33
44
|
// being pushed ~1.5 icon widths to the right.
|
|
34
|
-
var SliderRow = (0, _styledComponents["default"])(StyledConfigRow)(
|
|
35
|
-
var LayerLabel = (0, _styledComponents["default"])(_styledComponents2.PanelLabelBold)(
|
|
45
|
+
var SliderRow = (0, _styledComponents["default"])(StyledConfigRow)(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n align-items: center;\n\n .side-panel-panel__label-wrapper {\n flex: 0 0 auto;\n padding-left: 8px;\n white-space: nowrap;\n }\n"])));
|
|
46
|
+
var LayerLabel = (0, _styledComponents["default"])(_styledComponents2.PanelLabelBold)(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n"])), function (props) {
|
|
36
47
|
return props.$active ? props.theme.textColor : props.theme.labelColor;
|
|
37
48
|
});
|
|
38
|
-
var ChildRow = (0, _styledComponents["default"])(StyledConfigRow)(
|
|
49
|
+
var ChildRow = (0, _styledComponents["default"])(StyledConfigRow)(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n .side-panel-panel__label-wrapper {\n padding-left: 8px;\n }\n"])));
|
|
39
50
|
GlobeConfigPanelFactory.deps = [_panelHeaderAction["default"], _rangeSlider["default"], _mapLayerGroupColorPicker["default"]];
|
|
40
51
|
function GlobeConfigPanelFactory(PanelHeaderAction, RangeSlider, LayerGroupColorPicker) {
|
|
41
52
|
var GlobeConfigPanel = function GlobeConfigPanel(_ref) {
|
|
42
|
-
var _mapState$globe, _mapState$globe2;
|
|
53
|
+
var _mapState$globe, _mapState$globe2, _globeConfig$hugeHalo, _globeConfig$hugeHalo2;
|
|
43
54
|
var mapState = _ref.mapState,
|
|
44
55
|
onGlobeConfigChange = _ref.onGlobeConfigChange;
|
|
45
56
|
var globeConfig = (_mapState$globe = mapState.globe) === null || _mapState$globe === void 0 ? void 0 : _mapState$globe.config;
|
|
@@ -82,7 +93,61 @@ function GlobeConfigPanelFactory(PanelHeaderAction, RangeSlider, LayerGroupColor
|
|
|
82
93
|
$active: globeConfig.atmosphere
|
|
83
94
|
}, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
|
|
84
95
|
id: "mapLayers.atmosphere"
|
|
85
|
-
})))), /*#__PURE__*/_react["default"].createElement(
|
|
96
|
+
})))), /*#__PURE__*/_react["default"].createElement(ChildRow, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabelWrapper, null, /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
|
|
97
|
+
className: "layer-group__visibility-toggle",
|
|
98
|
+
id: "globe-huge-halo-toggle",
|
|
99
|
+
tooltip: globeConfig.hugeHalo ? 'tooltip.hide' : 'tooltip.show',
|
|
100
|
+
onClick: function onClick() {
|
|
101
|
+
return onToggle('hugeHalo', undefined, 'atmosphere');
|
|
102
|
+
},
|
|
103
|
+
IconComponent: globeConfig.hugeHalo ? _icons.EyeSeen : _icons.EyeUnseen,
|
|
104
|
+
active: Boolean(globeConfig.hugeHalo && globeConfig.atmosphere),
|
|
105
|
+
flush: true
|
|
106
|
+
}), /*#__PURE__*/_react["default"].createElement(LayerLabel, {
|
|
107
|
+
$active: Boolean(globeConfig.hugeHalo && globeConfig.atmosphere)
|
|
108
|
+
}, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
|
|
109
|
+
id: "mapLayers.hugeHalo"
|
|
110
|
+
})))), /*#__PURE__*/_react["default"].createElement(SliderRow, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabelWrapper, null, /*#__PURE__*/_react["default"].createElement(LayerLabel, {
|
|
111
|
+
$active: Boolean(globeConfig.hugeHalo && globeConfig.atmosphere),
|
|
112
|
+
style: {
|
|
113
|
+
paddingLeft: 28
|
|
114
|
+
}
|
|
115
|
+
}, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
|
|
116
|
+
id: "mapLayers.hugeHaloRadius"
|
|
117
|
+
}))), /*#__PURE__*/_react["default"].createElement(AtmosphereSliderWrapper, {
|
|
118
|
+
$enabled: Boolean(globeConfig.hugeHalo && globeConfig.atmosphere)
|
|
119
|
+
}, /*#__PURE__*/_react["default"].createElement(RangeSlider, {
|
|
120
|
+
range: [0.5, 3.5],
|
|
121
|
+
value0: 0,
|
|
122
|
+
value1: (_globeConfig$hugeHalo = globeConfig.hugeHaloRadius) !== null && _globeConfig$hugeHalo !== void 0 ? _globeConfig$hugeHalo : _constants.DEFAULT_GLOBE_CONFIG.hugeHaloRadius,
|
|
123
|
+
step: 0.05,
|
|
124
|
+
isRanged: false,
|
|
125
|
+
onChange: function onChange(val) {
|
|
126
|
+
return onSliderChange('hugeHaloRadius', val);
|
|
127
|
+
},
|
|
128
|
+
inputTheme: "secondary",
|
|
129
|
+
showInput: true
|
|
130
|
+
}))), /*#__PURE__*/_react["default"].createElement(SliderRow, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabelWrapper, null, /*#__PURE__*/_react["default"].createElement(LayerLabel, {
|
|
131
|
+
$active: Boolean(globeConfig.hugeHalo && globeConfig.atmosphere),
|
|
132
|
+
style: {
|
|
133
|
+
paddingLeft: 28
|
|
134
|
+
}
|
|
135
|
+
}, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
|
|
136
|
+
id: "mapLayers.hugeHaloOpacity"
|
|
137
|
+
}))), /*#__PURE__*/_react["default"].createElement(AtmosphereSliderWrapper, {
|
|
138
|
+
$enabled: Boolean(globeConfig.hugeHalo && globeConfig.atmosphere)
|
|
139
|
+
}, /*#__PURE__*/_react["default"].createElement(RangeSlider, {
|
|
140
|
+
range: [0, 1],
|
|
141
|
+
value0: 0,
|
|
142
|
+
value1: (_globeConfig$hugeHalo2 = globeConfig.hugeHaloOpacity) !== null && _globeConfig$hugeHalo2 !== void 0 ? _globeConfig$hugeHalo2 : _constants.DEFAULT_GLOBE_CONFIG.hugeHaloOpacity,
|
|
143
|
+
step: 0.01,
|
|
144
|
+
isRanged: false,
|
|
145
|
+
onChange: function onChange(val) {
|
|
146
|
+
return onSliderChange('hugeHaloOpacity', val);
|
|
147
|
+
},
|
|
148
|
+
inputTheme: "secondary",
|
|
149
|
+
showInput: true
|
|
150
|
+
}))), /*#__PURE__*/_react["default"].createElement(SliderRow, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabelWrapper, null, /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
|
|
86
151
|
className: "layer-group__visibility-toggle",
|
|
87
152
|
id: "globe-terminator-toggle",
|
|
88
153
|
tooltip: globeConfig.terminator ? 'tooltip.hide' : 'tooltip.show',
|
|
@@ -96,7 +161,7 @@ function GlobeConfigPanelFactory(PanelHeaderAction, RangeSlider, LayerGroupColor
|
|
|
96
161
|
$active: globeConfig.terminator && globeConfig.atmosphere
|
|
97
162
|
}, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
|
|
98
163
|
id: "mapLayers.terminator"
|
|
99
|
-
}))), /*#__PURE__*/_react["default"].createElement(
|
|
164
|
+
}))), /*#__PURE__*/_react["default"].createElement(AtmosphereSliderWrapper, {
|
|
100
165
|
$enabled: globeConfig.terminator && globeConfig.atmosphere
|
|
101
166
|
}, /*#__PURE__*/_react["default"].createElement(RangeSlider, {
|
|
102
167
|
range: [0, 1],
|
|
@@ -123,7 +188,7 @@ function GlobeConfigPanelFactory(PanelHeaderAction, RangeSlider, LayerGroupColor
|
|
|
123
188
|
$active: globeConfig.azimuth && globeConfig.atmosphere
|
|
124
189
|
}, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
|
|
125
190
|
id: "mapLayers.sunAzimuth"
|
|
126
|
-
}))), /*#__PURE__*/_react["default"].createElement(
|
|
191
|
+
}))), /*#__PURE__*/_react["default"].createElement(AtmosphereSliderWrapper, {
|
|
127
192
|
$enabled: globeConfig.azimuth && globeConfig.atmosphere
|
|
128
193
|
}, /*#__PURE__*/_react["default"].createElement(RangeSlider, {
|
|
129
194
|
range: [0, 360],
|
|
@@ -164,15 +229,15 @@ function GlobeConfigPanelFactory(PanelHeaderAction, RangeSlider, LayerGroupColor
|
|
|
164
229
|
$active: globeConfig.labels && globeConfig.basemap
|
|
165
230
|
}, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
|
|
166
231
|
id: "mapLayers.label"
|
|
167
|
-
}))), /*#__PURE__*/_react["default"].createElement(LayerGroupColorPicker, {
|
|
232
|
+
}))), /*#__PURE__*/_react["default"].createElement(ColorPickerSlot, null, /*#__PURE__*/_react["default"].createElement(LayerGroupColorPicker, {
|
|
168
233
|
slug: "globe-labels",
|
|
169
234
|
color: globeConfig.labelsColor,
|
|
170
235
|
onColorChange: function onColorChange(color) {
|
|
171
236
|
return _onColorChange('labelsColor', color);
|
|
172
237
|
},
|
|
173
|
-
extraMarginRight:
|
|
238
|
+
extraMarginRight: true,
|
|
174
239
|
disabled: !(globeConfig.labels && globeConfig.basemap)
|
|
175
|
-
})), /*#__PURE__*/_react["default"].createElement(ChildRow, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabelWrapper, null, /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
|
|
240
|
+
}))), /*#__PURE__*/_react["default"].createElement(ChildRow, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabelWrapper, null, /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
|
|
176
241
|
className: "layer-group__visibility-toggle",
|
|
177
242
|
id: "globe-admin-toggle",
|
|
178
243
|
tooltip: globeConfig.adminLines ? 'tooltip.hide' : 'tooltip.show',
|
|
@@ -186,15 +251,15 @@ function GlobeConfigPanelFactory(PanelHeaderAction, RangeSlider, LayerGroupColor
|
|
|
186
251
|
$active: globeConfig.adminLines && globeConfig.basemap
|
|
187
252
|
}, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
|
|
188
253
|
id: "mapLayers.adminBorders"
|
|
189
|
-
}))), /*#__PURE__*/_react["default"].createElement(LayerGroupColorPicker, {
|
|
254
|
+
}))), /*#__PURE__*/_react["default"].createElement(ColorPickerSlot, null, /*#__PURE__*/_react["default"].createElement(LayerGroupColorPicker, {
|
|
190
255
|
slug: "globe-admin",
|
|
191
256
|
color: globeConfig.adminLinesColor,
|
|
192
257
|
onColorChange: function onColorChange(color) {
|
|
193
258
|
return _onColorChange('adminLinesColor', color);
|
|
194
259
|
},
|
|
195
|
-
extraMarginRight:
|
|
260
|
+
extraMarginRight: true,
|
|
196
261
|
disabled: !(globeConfig.adminLines && globeConfig.basemap)
|
|
197
|
-
})), /*#__PURE__*/_react["default"].createElement(ChildRow, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabelWrapper, null, /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
|
|
262
|
+
}))), /*#__PURE__*/_react["default"].createElement(ChildRow, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabelWrapper, null, /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
|
|
198
263
|
className: "layer-group__visibility-toggle",
|
|
199
264
|
id: "globe-water-toggle",
|
|
200
265
|
tooltip: globeConfig.water ? 'tooltip.hide' : 'tooltip.show',
|
|
@@ -208,45 +273,45 @@ function GlobeConfigPanelFactory(PanelHeaderAction, RangeSlider, LayerGroupColor
|
|
|
208
273
|
$active: globeConfig.water && globeConfig.basemap
|
|
209
274
|
}, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
|
|
210
275
|
id: "mapLayers.water"
|
|
211
|
-
}))), /*#__PURE__*/_react["default"].createElement(LayerGroupColorPicker, {
|
|
276
|
+
}))), /*#__PURE__*/_react["default"].createElement(ColorPickerSlot, null, /*#__PURE__*/_react["default"].createElement(LayerGroupColorPicker, {
|
|
212
277
|
slug: "globe-water",
|
|
213
278
|
color: globeConfig.waterColor,
|
|
214
279
|
onColorChange: function onColorChange(color) {
|
|
215
280
|
return _onColorChange('waterColor', color);
|
|
216
281
|
},
|
|
217
|
-
extraMarginRight:
|
|
282
|
+
extraMarginRight: true,
|
|
218
283
|
disabled: !(globeConfig.water && globeConfig.basemap)
|
|
219
|
-
})), /*#__PURE__*/_react["default"].createElement(StyledConfigRow, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabelWrapper, null, /*#__PURE__*/_react["default"].createElement(LayerLabel, {
|
|
284
|
+
}))), /*#__PURE__*/_react["default"].createElement(StyledConfigRow, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabelWrapper, null, /*#__PURE__*/_react["default"].createElement(LayerLabel, {
|
|
220
285
|
$active: true,
|
|
221
286
|
style: {
|
|
222
287
|
marginLeft: '28px'
|
|
223
288
|
}
|
|
224
289
|
}, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
|
|
225
290
|
id: "mapLayers.surface"
|
|
226
|
-
}))), /*#__PURE__*/_react["default"].createElement(LayerGroupColorPicker, {
|
|
291
|
+
}))), /*#__PURE__*/_react["default"].createElement(ColorPickerSlot, null, /*#__PURE__*/_react["default"].createElement(LayerGroupColorPicker, {
|
|
227
292
|
slug: "globe-surface",
|
|
228
293
|
color: globeConfig.surfaceColor,
|
|
229
294
|
onColorChange: function onColorChange(color) {
|
|
230
295
|
return _onColorChange('surfaceColor', color);
|
|
231
296
|
},
|
|
232
|
-
extraMarginRight:
|
|
297
|
+
extraMarginRight: true,
|
|
233
298
|
disabled: false
|
|
234
|
-
})), /*#__PURE__*/_react["default"].createElement(StyledConfigRow, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabelWrapper, null, /*#__PURE__*/_react["default"].createElement(LayerLabel, {
|
|
299
|
+
}))), /*#__PURE__*/_react["default"].createElement(StyledConfigRow, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabelWrapper, null, /*#__PURE__*/_react["default"].createElement(LayerLabel, {
|
|
235
300
|
$active: true,
|
|
236
301
|
style: {
|
|
237
302
|
marginLeft: '28px'
|
|
238
303
|
}
|
|
239
304
|
}, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
|
|
240
305
|
id: "mapLayers.background"
|
|
241
|
-
}))), /*#__PURE__*/_react["default"].createElement(LayerGroupColorPicker, {
|
|
306
|
+
}))), /*#__PURE__*/_react["default"].createElement(ColorPickerSlot, null, /*#__PURE__*/_react["default"].createElement(LayerGroupColorPicker, {
|
|
242
307
|
slug: "globe-background",
|
|
243
308
|
color: globeConfig.backgroundColor,
|
|
244
309
|
onColorChange: function onColorChange(color) {
|
|
245
310
|
return _onColorChange('backgroundColor', color);
|
|
246
311
|
},
|
|
247
|
-
extraMarginRight:
|
|
312
|
+
extraMarginRight: true,
|
|
248
313
|
disabled: false
|
|
249
|
-
})), /*#__PURE__*/_react["default"].createElement(StyledConfigRow, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabelWrapper, null, /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
|
|
314
|
+
}))), /*#__PURE__*/_react["default"].createElement(StyledConfigRow, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabelWrapper, null, /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
|
|
250
315
|
className: "layer-group__visibility-toggle",
|
|
251
316
|
id: "globe-stars-toggle",
|
|
252
317
|
tooltip: globeConfig.stars ? 'tooltip.hide' : 'tooltip.show',
|
|
@@ -266,4 +331,4 @@ function GlobeConfigPanelFactory(PanelHeaderAction, RangeSlider, LayerGroupColor
|
|
|
266
331
|
return GlobeConfigPanel;
|
|
267
332
|
}
|
|
268
333
|
var _default = exports["default"] = GlobeConfigPanelFactory;
|
|
269
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9sb2NhbGl6YXRpb24iLCJfaWNvbnMiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfcGFuZWxIZWFkZXJBY3Rpb24iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JhbmdlU2xpZGVyIiwiX21hcExheWVyR3JvdXBDb2xvclBpY2tlciIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiX3RlbXBsYXRlT2JqZWN0NCIsIl90ZW1wbGF0ZU9iamVjdDUiLCJfdGVtcGxhdGVPYmplY3Q2IiwiX3RlbXBsYXRlT2JqZWN0NyIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiU3R5bGVkR2xvYmVDb25maWdQYW5lbCIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwiU3R5bGVkQ29uZmlnUm93IiwiZGlzYWJsZVNsaWRlciIsImNzcyIsIlNsaWRlcldyYXBwZXIiLCJwcm9wcyIsIiRlbmFibGVkIiwiU2xpZGVyUm93IiwiTGF5ZXJMYWJlbCIsIlBhbmVsTGFiZWxCb2xkIiwiJGFjdGl2ZSIsInRoZW1lIiwidGV4dENvbG9yIiwibGFiZWxDb2xvciIsIkNoaWxkUm93IiwiR2xvYmVDb25maWdQYW5lbEZhY3RvcnkiLCJkZXBzIiwiUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5IiwiUmFuZ2VTbGlkZXJGYWN0b3J5IiwiTGF5ZXJHcm91cENvbG9yUGlja2VyRmFjdG9yeSIsIlBhbmVsSGVhZGVyQWN0aW9uIiwiUmFuZ2VTbGlkZXIiLCJMYXllckdyb3VwQ29sb3JQaWNrZXIiLCJHbG9iZUNvbmZpZ1BhbmVsIiwiX3JlZiIsIl9tYXBTdGF0ZSRnbG9iZSIsIl9tYXBTdGF0ZSRnbG9iZTIiLCJtYXBTdGF0ZSIsIm9uR2xvYmVDb25maWdDaGFuZ2UiLCJnbG9iZUNvbmZpZyIsImdsb2JlIiwiY29uZmlnIiwib25Ub2dnbGUiLCJ1c2VDYWxsYmFjayIsImtleSIsImNoaWxkS2V5cyIsInBhcmVudEtleSIsIm5ld1ZhbHVlIiwidXBkYXRlIiwiX2RlZmluZVByb3BlcnR5MiIsImZvckVhY2giLCJjaGlsZEtleSIsIm9uU2xpZGVyQ2hhbmdlIiwidmFsdWUiLCJvbkNvbG9yQ2hhbmdlIiwiY29sb3IiLCJlbmFibGVkIiwiY3JlYXRlRWxlbWVudCIsIlBhbmVsTGFiZWwiLCJGb3JtYXR0ZWRNZXNzYWdlIiwiaWQiLCJQYW5lbENvbnRlbnQiLCJQYW5lbExhYmVsV3JhcHBlciIsImNsYXNzTmFtZSIsInRvb2x0aXAiLCJhdG1vc3BoZXJlIiwib25DbGljayIsIkljb25Db21wb25lbnQiLCJFeWVTZWVuIiwiRXllVW5zZWVuIiwiYWN0aXZlIiwiZmx1c2giLCJ0ZXJtaW5hdG9yIiwidW5kZWZpbmVkIiwicmFuZ2UiLCJ2YWx1ZTAiLCJ2YWx1ZTEiLCJ0ZXJtaW5hdG9yT3BhY2l0eSIsInN0ZXAiLCJpc1JhbmdlZCIsIm9uQ2hhbmdlIiwidmFsIiwiaW5wdXRUaGVtZSIsInNob3dJbnB1dCIsImF6aW11dGgiLCJhemltdXRoQW5nbGUiLCJiYXNlbWFwIiwibGFiZWxzIiwic2x1ZyIsImxhYmVsc0NvbG9yIiwiZXh0cmFNYXJnaW5SaWdodCIsImRpc2FibGVkIiwiYWRtaW5MaW5lcyIsImFkbWluTGluZXNDb2xvciIsIndhdGVyIiwid2F0ZXJDb2xvciIsInN0eWxlIiwibWFyZ2luTGVmdCIsInN1cmZhY2VDb2xvciIsImJhY2tncm91bmRDb2xvciIsInN0YXJzIiwiZGlzcGxheU5hbWUiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2lkZS1wYW5lbC9tYXAtc3R5bGUtcGFuZWwvZ2xvYmUtY29uZmlnLXBhbmVsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFja30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCwge2Nzc30gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQge01hcFN0YXRlLCBSR0JDb2xvcn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge0dsb2JlQ29uZmlnfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcblxuaW1wb3J0IHtFeWVTZWVuLCBFeWVVbnNlZW59IGZyb20gJy4uLy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQge1xuICBQYW5lbExhYmVsLFxuICBQYW5lbENvbnRlbnQsXG4gIFBhbmVsTGFiZWxCb2xkLFxuICBQYW5lbExhYmVsV3JhcHBlclxufSBmcm9tICcuLi8uLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IFBhbmVsSGVhZGVyQWN0aW9uRmFjdG9yeSBmcm9tICcuLi9wYW5lbC1oZWFkZXItYWN0aW9uJztcbmltcG9ydCBSYW5nZVNsaWRlckZhY3RvcnkgZnJvbSAnLi4vLi4vY29tbW9uL3JhbmdlLXNsaWRlcic7XG5pbXBvcnQgTGF5ZXJHcm91cENvbG9yUGlja2VyRmFjdG9yeSBmcm9tICcuL21hcC1sYXllci1ncm91cC1jb2xvci1waWNrZXInO1xuXG5jb25zdCBTdHlsZWRHbG9iZUNvbmZpZ1BhbmVsID0gc3R5bGVkLmRpdmBcbiAgcGFkZGluZy1ib3R0b206IDZweDtcbmA7XG5cbmNvbnN0IFN0eWxlZENvbmZpZ1JvdyA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAmOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICAubGF5ZXItZ3JvdXBfX3Zpc2liaWxpdHktdG9nZ2xlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gIH1cbmA7XG5cbmNvbnN0IGRpc2FibGVTbGlkZXIgPSBjc3NgXG4gIG9wYWNpdHk6IDAuNTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5gO1xuXG5jb25zdCBTbGlkZXJXcmFwcGVyID0gc3R5bGVkLmRpdjx7JGVuYWJsZWQ/OiBib29sZWFufT5gXG4gIGZsZXgtZ3JvdzogMTtcbiAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgJHtwcm9wcyA9PiAocHJvcHMuJGVuYWJsZWQgPyAnJyA6IGRpc2FibGVTbGlkZXIpfVxuYDtcblxuLy8gU2xpZGVyIHJvd3MgKERheS9OaWdodCwgU3VuIEF6aW11dGgpIHB1dCB0aGUgbGFiZWwgYW5kIHRoZSBzbGlkZXIgc2lkZSBieSBzaWRlLlxuLy8gR2l2ZSB0aGUgbGFiZWwgb25seSB0aGUgd2lkdGggaXRzIChzaG9ydCkgdGV4dCBuZWVkcyBzbyB0aGUgc2xpZGVyIGdldHMgdGhlXG4vLyByZXN0IG9mIHRoZSByb3cuIFRoZSBjaGlsZCBpbmRlbnQgaXMga2VwdCBzbWFsbCAofmhhbGYgYW4gZXllLWljb24gd2lkdGgpIHNvIHRoZVxuLy8gc3ViLXJvdyBleWUgaWNvbiBsaW5lcyB1cCBjbG9zZSB0byB0aGUgcGFyZW50IChhdG1vc3BoZXJlKSByb3csIHJhdGhlciB0aGFuXG4vLyBiZWluZyBwdXNoZWQgfjEuNSBpY29uIHdpZHRocyB0byB0aGUgcmlnaHQuXG5jb25zdCBTbGlkZXJSb3cgPSBzdHlsZWQoU3R5bGVkQ29uZmlnUm93KWBcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAuc2lkZS1wYW5lbC1wYW5lbF9fbGFiZWwtd3JhcHBlciB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgfVxuYDtcblxuY29uc3QgTGF5ZXJMYWJlbCA9IHN0eWxlZChQYW5lbExhYmVsQm9sZCk8eyRhY3RpdmU6IGJvb2xlYW59PmBcbiAgY29sb3I6ICR7cHJvcHMgPT4gKHByb3BzLiRhY3RpdmUgPyBwcm9wcy50aGVtZS50ZXh0Q29sb3IgOiBwcm9wcy50aGVtZS5sYWJlbENvbG9yKX07XG5gO1xuXG5jb25zdCBDaGlsZFJvdyA9IHN0eWxlZChTdHlsZWRDb25maWdSb3cpYFxuICAuc2lkZS1wYW5lbC1wYW5lbF9fbGFiZWwtd3JhcHBlciB7XG4gICAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gIH1cbmA7XG5cbmV4cG9ydCB0eXBlIEdsb2JlQ29uZmlnUGFuZWxQcm9wcyA9IHtcbiAgbWFwU3RhdGU6IE1hcFN0YXRlO1xuICBvbkdsb2JlQ29uZmlnQ2hhbmdlOiAoY29uZmlnOiBQYXJ0aWFsPEdsb2JlQ29uZmlnPikgPT4gdm9pZDtcbn07XG5cbkdsb2JlQ29uZmlnUGFuZWxGYWN0b3J5LmRlcHMgPSBbXG4gIFBhbmVsSGVhZGVyQWN0aW9uRmFjdG9yeSxcbiAgUmFuZ2VTbGlkZXJGYWN0b3J5LFxuICBMYXllckdyb3VwQ29sb3JQaWNrZXJGYWN0b3J5XG5dO1xuXG5mdW5jdGlvbiBHbG9iZUNvbmZpZ1BhbmVsRmFjdG9yeShcbiAgUGFuZWxIZWFkZXJBY3Rpb246IFJldHVyblR5cGU8dHlwZW9mIFBhbmVsSGVhZGVyQWN0aW9uRmFjdG9yeT4sXG4gIFJhbmdlU2xpZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBSYW5nZVNsaWRlckZhY3Rvcnk+LFxuICBMYXllckdyb3VwQ29sb3JQaWNrZXI6IFJldHVyblR5cGU8dHlwZW9mIExheWVyR3JvdXBDb2xvclBpY2tlckZhY3Rvcnk+XG4pIHtcbiAgY29uc3QgR2xvYmVDb25maWdQYW5lbDogUmVhY3QuRkM8R2xvYmVDb25maWdQYW5lbFByb3BzPiA9ICh7bWFwU3RhdGUsIG9uR2xvYmVDb25maWdDaGFuZ2V9KSA9PiB7XG4gICAgY29uc3QgZ2xvYmVDb25maWcgPSBtYXBTdGF0ZS5nbG9iZT8uY29uZmlnO1xuXG4gICAgY29uc3Qgb25Ub2dnbGUgPSB1c2VDYWxsYmFjayhcbiAgICAgIChcbiAgICAgICAga2V5OiBrZXlvZiBHbG9iZUNvbmZpZyxcbiAgICAgICAgY2hpbGRLZXlzPzogKGtleW9mIEdsb2JlQ29uZmlnKVtdLFxuICAgICAgICBwYXJlbnRLZXk/OiBrZXlvZiBHbG9iZUNvbmZpZ1xuICAgICAgKSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmVDb25maWcpIHJldHVybjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSAhZ2xvYmVDb25maWdba2V5XTtcbiAgICAgICAgY29uc3QgdXBkYXRlOiBQYXJ0aWFsPEdsb2JlQ29uZmlnPiA9IHtba2V5XTogbmV3VmFsdWV9O1xuICAgICAgICBpZiAoY2hpbGRLZXlzKSB7XG4gICAgICAgICAgY2hpbGRLZXlzLmZvckVhY2goY2hpbGRLZXkgPT4ge1xuICAgICAgICAgICAgdXBkYXRlW2NoaWxkS2V5XSA9IG5ld1ZhbHVlIGFzIGFueTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyZW50S2V5ICYmIG5ld1ZhbHVlID09PSB0cnVlKSB7XG4gICAgICAgICAgdXBkYXRlW3BhcmVudEtleV0gPSB0cnVlIGFzIGFueTtcbiAgICAgICAgfVxuICAgICAgICBvbkdsb2JlQ29uZmlnQ2hhbmdlKHVwZGF0ZSk7XG4gICAgICB9LFxuICAgICAgW2dsb2JlQ29uZmlnLCBvbkdsb2JlQ29uZmlnQ2hhbmdlXVxuICAgICk7XG5cbiAgICBjb25zdCBvblNsaWRlckNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgKGtleToga2V5b2YgR2xvYmVDb25maWcsIHZhbHVlOiBudW1iZXJbXSkgPT4ge1xuICAgICAgICBvbkdsb2JlQ29uZmlnQ2hhbmdlKHtba2V5XTogdmFsdWVbMV19IGFzIFBhcnRpYWw8R2xvYmVDb25maWc+KTtcbiAgICAgIH0sXG4gICAgICBbb25HbG9iZUNvbmZpZ0NoYW5nZV1cbiAgICApO1xuXG4gICAgY29uc3Qgb25Db2xvckNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgKGtleToga2V5b2YgR2xvYmVDb25maWcsIGNvbG9yOiBSR0JDb2xvcikgPT4ge1xuICAgICAgICBvbkdsb2JlQ29uZmlnQ2hhbmdlKHtba2V5XTogY29sb3J9IGFzIFBhcnRpYWw8R2xvYmVDb25maWc+KTtcbiAgICAgIH0sXG4gICAgICBbb25HbG9iZUNvbmZpZ0NoYW5nZV1cbiAgICApO1xuXG4gICAgaWYgKCFtYXBTdGF0ZS5nbG9iZT8uZW5hYmxlZCB8fCAhZ2xvYmVDb25maWcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkR2xvYmVDb25maWdQYW5lbD5cbiAgICAgICAgPFBhbmVsTGFiZWw+XG4gICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJtYXBNYW5hZ2VyLmdsb2JlTGF5ZXJzXCIgLz5cbiAgICAgICAgPC9QYW5lbExhYmVsPlxuICAgICAgICA8UGFuZWxDb250ZW50PlxuICAgICAgICAgIHsvKiBBdG1vc3BoZXJlICovfVxuICAgICAgICAgIDxTdHlsZWRDb25maWdSb3c+XG4gICAgICAgICAgICA8UGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICAgIDxQYW5lbEhlYWRlckFjdGlvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxheWVyLWdyb3VwX192aXNpYmlsaXR5LXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgaWQ9XCJnbG9iZS1hdG1vc3BoZXJlLXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgdG9vbHRpcD17Z2xvYmVDb25maWcuYXRtb3NwaGVyZSA/ICd0b29sdGlwLmhpZGUnIDogJ3Rvb2x0aXAuc2hvdyd9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Ub2dnbGUoJ2F0bW9zcGhlcmUnLCBbJ3Rlcm1pbmF0b3InLCAnYXppbXV0aCddKX1cbiAgICAgICAgICAgICAgICBJY29uQ29tcG9uZW50PXtnbG9iZUNvbmZpZy5hdG1vc3BoZXJlID8gRXllU2VlbiA6IEV5ZVVuc2Vlbn1cbiAgICAgICAgICAgICAgICBhY3RpdmU9e2dsb2JlQ29uZmlnLmF0bW9zcGhlcmV9XG4gICAgICAgICAgICAgICAgZmx1c2hcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPExheWVyTGFiZWwgJGFjdGl2ZT17Z2xvYmVDb25maWcuYXRtb3NwaGVyZX0+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJtYXBMYXllcnMuYXRtb3NwaGVyZVwiIC8+XG4gICAgICAgICAgICAgIDwvTGF5ZXJMYWJlbD5cbiAgICAgICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgPC9TdHlsZWRDb25maWdSb3c+XG5cbiAgICAgICAgICB7LyogVGVybWluYXRvciAoY2hpbGQgb2YgYXRtb3NwaGVyZSkgKi99XG4gICAgICAgICAgPFNsaWRlclJvdz5cbiAgICAgICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXItZ3JvdXBfX3Zpc2liaWxpdHktdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICBpZD1cImdsb2JlLXRlcm1pbmF0b3ItdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICB0b29sdGlwPXtnbG9iZUNvbmZpZy50ZXJtaW5hdG9yID8gJ3Rvb2x0aXAuaGlkZScgOiAndG9vbHRpcC5zaG93J31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblRvZ2dsZSgndGVybWluYXRvcicsIHVuZGVmaW5lZCwgJ2F0bW9zcGhlcmUnKX1cbiAgICAgICAgICAgICAgICBJY29uQ29tcG9uZW50PXtnbG9iZUNvbmZpZy50ZXJtaW5hdG9yID8gRXllU2VlbiA6IEV5ZVVuc2Vlbn1cbiAgICAgICAgICAgICAgICBhY3RpdmU9e2dsb2JlQ29uZmlnLnRlcm1pbmF0b3IgJiYgZ2xvYmVDb25maWcuYXRtb3NwaGVyZX1cbiAgICAgICAgICAgICAgICBmbHVzaFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8TGF5ZXJMYWJlbCAkYWN0aXZlPXtnbG9iZUNvbmZpZy50ZXJtaW5hdG9yICYmIGdsb2JlQ29uZmlnLmF0bW9zcGhlcmV9PlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibWFwTGF5ZXJzLnRlcm1pbmF0b3JcIiAvPlxuICAgICAgICAgICAgICA8L0xheWVyTGFiZWw+XG4gICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgPFNsaWRlcldyYXBwZXIgJGVuYWJsZWQ9e2dsb2JlQ29uZmlnLnRlcm1pbmF0b3IgJiYgZ2xvYmVDb25maWcuYXRtb3NwaGVyZX0+XG4gICAgICAgICAgICAgIDxSYW5nZVNsaWRlclxuICAgICAgICAgICAgICAgIHJhbmdlPXtbMCwgMV19XG4gICAgICAgICAgICAgICAgdmFsdWUwPXswfVxuICAgICAgICAgICAgICAgIHZhbHVlMT17Z2xvYmVDb25maWcudGVybWluYXRvck9wYWNpdHl9XG4gICAgICAgICAgICAgICAgc3RlcD17MC4wMX1cbiAgICAgICAgICAgICAgICBpc1JhbmdlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbCA9PiBvblNsaWRlckNoYW5nZSgndGVybWluYXRvck9wYWNpdHknLCB2YWwpfVxuICAgICAgICAgICAgICAgIGlucHV0VGhlbWU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIHNob3dJbnB1dFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9TbGlkZXJXcmFwcGVyPlxuICAgICAgICAgIDwvU2xpZGVyUm93PlxuXG4gICAgICAgICAgey8qIFN1biBBemltdXRoIChjaGlsZCBvZiBhdG1vc3BoZXJlKSAqL31cbiAgICAgICAgICA8U2xpZGVyUm93PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8UGFuZWxIZWFkZXJBY3Rpb25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJsYXllci1ncm91cF9fdmlzaWJpbGl0eS10b2dnbGVcIlxuICAgICAgICAgICAgICAgIGlkPVwiZ2xvYmUtYXppbXV0aC10b2dnbGVcIlxuICAgICAgICAgICAgICAgIHRvb2x0aXA9e2dsb2JlQ29uZmlnLmF6aW11dGggPyAndG9vbHRpcC5oaWRlJyA6ICd0b29sdGlwLnNob3cnfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uVG9nZ2xlKCdhemltdXRoJywgdW5kZWZpbmVkLCAnYXRtb3NwaGVyZScpfVxuICAgICAgICAgICAgICAgIEljb25Db21wb25lbnQ9e2dsb2JlQ29uZmlnLmF6aW11dGggPyBFeWVTZWVuIDogRXllVW5zZWVufVxuICAgICAgICAgICAgICAgIGFjdGl2ZT17Z2xvYmVDb25maWcuYXppbXV0aCAmJiBnbG9iZUNvbmZpZy5hdG1vc3BoZXJlfVxuICAgICAgICAgICAgICAgIGZsdXNoXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxMYXllckxhYmVsICRhY3RpdmU9e2dsb2JlQ29uZmlnLmF6aW11dGggJiYgZ2xvYmVDb25maWcuYXRtb3NwaGVyZX0+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJtYXBMYXllcnMuc3VuQXppbXV0aFwiIC8+XG4gICAgICAgICAgICAgIDwvTGF5ZXJMYWJlbD5cbiAgICAgICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICA8U2xpZGVyV3JhcHBlciAkZW5hYmxlZD17Z2xvYmVDb25maWcuYXppbXV0aCAmJiBnbG9iZUNvbmZpZy5hdG1vc3BoZXJlfT5cbiAgICAgICAgICAgICAgPFJhbmdlU2xpZGVyXG4gICAgICAgICAgICAgICAgcmFuZ2U9e1swLCAzNjBdfVxuICAgICAgICAgICAgICAgIHZhbHVlMD17MH1cbiAgICAgICAgICAgICAgICB2YWx1ZTE9e2dsb2JlQ29uZmlnLmF6aW11dGhBbmdsZX1cbiAgICAgICAgICAgICAgICBzdGVwPXsxfVxuICAgICAgICAgICAgICAgIGlzUmFuZ2VkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17dmFsID0+IG9uU2xpZGVyQ2hhbmdlKCdhemltdXRoQW5nbGUnLCB2YWwpfVxuICAgICAgICAgICAgICAgIGlucHV0VGhlbWU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIHNob3dJbnB1dFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9TbGlkZXJXcmFwcGVyPlxuICAgICAgICAgIDwvU2xpZGVyUm93PlxuXG4gICAgICAgICAgey8qIEJhc2VtYXAgKi99XG4gICAgICAgICAgPFN0eWxlZENvbmZpZ1Jvdz5cbiAgICAgICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXItZ3JvdXBfX3Zpc2liaWxpdHktdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICBpZD1cImdsb2JlLWJhc2VtYXAtdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICB0b29sdGlwPXtnbG9iZUNvbmZpZy5iYXNlbWFwID8gJ3Rvb2x0aXAuaGlkZScgOiAndG9vbHRpcC5zaG93J31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblRvZ2dsZSgnYmFzZW1hcCcsIFsnbGFiZWxzJywgJ2FkbWluTGluZXMnLCAnd2F0ZXInXSl9XG4gICAgICAgICAgICAgICAgSWNvbkNvbXBvbmVudD17Z2xvYmVDb25maWcuYmFzZW1hcCA/IEV5ZVNlZW4gOiBFeWVVbnNlZW59XG4gICAgICAgICAgICAgICAgYWN0aXZlPXtnbG9iZUNvbmZpZy5iYXNlbWFwfVxuICAgICAgICAgICAgICAgIGZsdXNoXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxMYXllckxhYmVsICRhY3RpdmU9e2dsb2JlQ29uZmlnLmJhc2VtYXB9PlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibWFwTGF5ZXJzLmJhc2VtYXBcIiAvPlxuICAgICAgICAgICAgICA8L0xheWVyTGFiZWw+XG4gICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgIDwvU3R5bGVkQ29uZmlnUm93PlxuXG4gICAgICAgICAgey8qIExhYmVscyAoY2hpbGQgb2YgYmFzZW1hcCkgKi99XG4gICAgICAgICAgPENoaWxkUm93PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8UGFuZWxIZWFkZXJBY3Rpb25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJsYXllci1ncm91cF9fdmlzaWJpbGl0eS10b2dnbGVcIlxuICAgICAgICAgICAgICAgIGlkPVwiZ2xvYmUtbGFiZWxzLXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgdG9vbHRpcD17Z2xvYmVDb25maWcubGFiZWxzID8gJ3Rvb2x0aXAuaGlkZScgOiAndG9vbHRpcC5zaG93J31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblRvZ2dsZSgnbGFiZWxzJywgdW5kZWZpbmVkLCAnYmFzZW1hcCcpfVxuICAgICAgICAgICAgICAgIEljb25Db21wb25lbnQ9e2dsb2JlQ29uZmlnLmxhYmVscyA/IEV5ZVNlZW4gOiBFeWVVbnNlZW59XG4gICAgICAgICAgICAgICAgYWN0aXZlPXtnbG9iZUNvbmZpZy5sYWJlbHMgJiYgZ2xvYmVDb25maWcuYmFzZW1hcH1cbiAgICAgICAgICAgICAgICBmbHVzaFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8TGF5ZXJMYWJlbCAkYWN0aXZlPXtnbG9iZUNvbmZpZy5sYWJlbHMgJiYgZ2xvYmVDb25maWcuYmFzZW1hcH0+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJtYXBMYXllcnMubGFiZWxcIiAvPlxuICAgICAgICAgICAgICA8L0xheWVyTGFiZWw+XG4gICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgPExheWVyR3JvdXBDb2xvclBpY2tlclxuICAgICAgICAgICAgICBzbHVnPVwiZ2xvYmUtbGFiZWxzXCJcbiAgICAgICAgICAgICAgY29sb3I9e2dsb2JlQ29uZmlnLmxhYmVsc0NvbG9yfVxuICAgICAgICAgICAgICBvbkNvbG9yQ2hhbmdlPXsoY29sb3I6IFJHQkNvbG9yKSA9PiBvbkNvbG9yQ2hhbmdlKCdsYWJlbHNDb2xvcicsIGNvbG9yKX1cbiAgICAgICAgICAgICAgZXh0cmFNYXJnaW5SaWdodD17ZmFsc2V9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXshKGdsb2JlQ29uZmlnLmxhYmVscyAmJiBnbG9iZUNvbmZpZy5iYXNlbWFwKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9DaGlsZFJvdz5cblxuICAgICAgICAgIHsvKiBBZG1pbiBMaW5lcyAoY2hpbGQgb2YgYmFzZW1hcCkgKi99XG4gICAgICAgICAgPENoaWxkUm93PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8UGFuZWxIZWFkZXJBY3Rpb25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJsYXllci1ncm91cF9fdmlzaWJpbGl0eS10b2dnbGVcIlxuICAgICAgICAgICAgICAgIGlkPVwiZ2xvYmUtYWRtaW4tdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICB0b29sdGlwPXtnbG9iZUNvbmZpZy5hZG1pbkxpbmVzID8gJ3Rvb2x0aXAuaGlkZScgOiAndG9vbHRpcC5zaG93J31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblRvZ2dsZSgnYWRtaW5MaW5lcycsIHVuZGVmaW5lZCwgJ2Jhc2VtYXAnKX1cbiAgICAgICAgICAgICAgICBJY29uQ29tcG9uZW50PXtnbG9iZUNvbmZpZy5hZG1pbkxpbmVzID8gRXllU2VlbiA6IEV5ZVVuc2Vlbn1cbiAgICAgICAgICAgICAgICBhY3RpdmU9e2dsb2JlQ29uZmlnLmFkbWluTGluZXMgJiYgZ2xvYmVDb25maWcuYmFzZW1hcH1cbiAgICAgICAgICAgICAgICBmbHVzaFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8TGF5ZXJMYWJlbCAkYWN0aXZlPXtnbG9iZUNvbmZpZy5hZG1pbkxpbmVzICYmIGdsb2JlQ29uZmlnLmJhc2VtYXB9PlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibWFwTGF5ZXJzLmFkbWluQm9yZGVyc1wiIC8+XG4gICAgICAgICAgICAgIDwvTGF5ZXJMYWJlbD5cbiAgICAgICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICA8TGF5ZXJHcm91cENvbG9yUGlja2VyXG4gICAgICAgICAgICAgIHNsdWc9XCJnbG9iZS1hZG1pblwiXG4gICAgICAgICAgICAgIGNvbG9yPXtnbG9iZUNvbmZpZy5hZG1pbkxpbmVzQ29sb3J9XG4gICAgICAgICAgICAgIG9uQ29sb3JDaGFuZ2U9eyhjb2xvcjogUkdCQ29sb3IpID0+IG9uQ29sb3JDaGFuZ2UoJ2FkbWluTGluZXNDb2xvcicsIGNvbG9yKX1cbiAgICAgICAgICAgICAgZXh0cmFNYXJnaW5SaWdodD17ZmFsc2V9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXshKGdsb2JlQ29uZmlnLmFkbWluTGluZXMgJiYgZ2xvYmVDb25maWcuYmFzZW1hcCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQ2hpbGRSb3c+XG5cbiAgICAgICAgICB7LyogV2F0ZXIgKGNoaWxkIG9mIGJhc2VtYXApICovfVxuICAgICAgICAgIDxDaGlsZFJvdz5cbiAgICAgICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXItZ3JvdXBfX3Zpc2liaWxpdHktdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICBpZD1cImdsb2JlLXdhdGVyLXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgdG9vbHRpcD17Z2xvYmVDb25maWcud2F0ZXIgPyAndG9vbHRpcC5oaWRlJyA6ICd0b29sdGlwLnNob3cnfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uVG9nZ2xlKCd3YXRlcicsIHVuZGVmaW5lZCwgJ2Jhc2VtYXAnKX1cbiAgICAgICAgICAgICAgICBJY29uQ29tcG9uZW50PXtnbG9iZUNvbmZpZy53YXRlciA/IEV5ZVNlZW4gOiBFeWVVbnNlZW59XG4gICAgICAgICAgICAgICAgYWN0aXZlPXtnbG9iZUNvbmZpZy53YXRlciAmJiBnbG9iZUNvbmZpZy5iYXNlbWFwfVxuICAgICAgICAgICAgICAgIGZsdXNoXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxMYXllckxhYmVsICRhY3RpdmU9e2dsb2JlQ29uZmlnLndhdGVyICYmIGdsb2JlQ29uZmlnLmJhc2VtYXB9PlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibWFwTGF5ZXJzLndhdGVyXCIgLz5cbiAgICAgICAgICAgICAgPC9MYXllckxhYmVsPlxuICAgICAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgIDxMYXllckdyb3VwQ29sb3JQaWNrZXJcbiAgICAgICAgICAgICAgc2x1Zz1cImdsb2JlLXdhdGVyXCJcbiAgICAgICAgICAgICAgY29sb3I9e2dsb2JlQ29uZmlnLndhdGVyQ29sb3J9XG4gICAgICAgICAgICAgIG9uQ29sb3JDaGFuZ2U9eyhjb2xvcjogUkdCQ29sb3IpID0+IG9uQ29sb3JDaGFuZ2UoJ3dhdGVyQ29sb3InLCBjb2xvcil9XG4gICAgICAgICAgICAgIGV4dHJhTWFyZ2luUmlnaHQ9e2ZhbHNlfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17IShnbG9iZUNvbmZpZy53YXRlciAmJiBnbG9iZUNvbmZpZy5iYXNlbWFwKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9DaGlsZFJvdz5cblxuICAgICAgICAgIHsvKiBHbG9iZSBTdXJmYWNlIChhbHdheXMgdmlzaWJsZSwgb25seSBoYXMgY29sb3IpICovfVxuICAgICAgICAgIDxTdHlsZWRDb25maWdSb3c+XG4gICAgICAgICAgICA8UGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICAgIDxMYXllckxhYmVsICRhY3RpdmU9e3RydWV9IHN0eWxlPXt7bWFyZ2luTGVmdDogJzI4cHgnfX0+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJtYXBMYXllcnMuc3VyZmFjZVwiIC8+XG4gICAgICAgICAgICAgIDwvTGF5ZXJMYWJlbD5cbiAgICAgICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICA8TGF5ZXJHcm91cENvbG9yUGlja2VyXG4gICAgICAgICAgICAgIHNsdWc9XCJnbG9iZS1zdXJmYWNlXCJcbiAgICAgICAgICAgICAgY29sb3I9e2dsb2JlQ29uZmlnLnN1cmZhY2VDb2xvcn1cbiAgICAgICAgICAgICAgb25Db2xvckNoYW5nZT17KGNvbG9yOiBSR0JDb2xvcikgPT4gb25Db2xvckNoYW5nZSgnc3VyZmFjZUNvbG9yJywgY29sb3IpfVxuICAgICAgICAgICAgICBleHRyYU1hcmdpblJpZ2h0PXtmYWxzZX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1N0eWxlZENvbmZpZ1Jvdz5cblxuICAgICAgICAgIHsvKiBCYWNrZ3JvdW5kIChlbXB0eSBzcGFjZSBhcm91bmQgdGhlIGdsb2JlLCBhbHdheXMgdmlzaWJsZSkgKi99XG4gICAgICAgICAgPFN0eWxlZENvbmZpZ1Jvdz5cbiAgICAgICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgICAgPExheWVyTGFiZWwgJGFjdGl2ZT17dHJ1ZX0gc3R5bGU9e3ttYXJnaW5MZWZ0OiAnMjhweCd9fT5cbiAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cIm1hcExheWVycy5iYWNrZ3JvdW5kXCIgLz5cbiAgICAgICAgICAgICAgPC9MYXllckxhYmVsPlxuICAgICAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgIDxMYXllckdyb3VwQ29sb3JQaWNrZXJcbiAgICAgICAgICAgICAgc2x1Zz1cImdsb2JlLWJhY2tncm91bmRcIlxuICAgICAgICAgICAgICBjb2xvcj17Z2xvYmVDb25maWcuYmFja2dyb3VuZENvbG9yfVxuICAgICAgICAgICAgICBvbkNvbG9yQ2hhbmdlPXsoY29sb3I6IFJHQkNvbG9yKSA9PiBvbkNvbG9yQ2hhbmdlKCdiYWNrZ3JvdW5kQ29sb3InLCBjb2xvcil9XG4gICAgICAgICAgICAgIGV4dHJhTWFyZ2luUmlnaHQ9e2ZhbHNlfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3R5bGVkQ29uZmlnUm93PlxuXG4gICAgICAgICAgey8qIFN0YXJzIChyZW5kZXJlZCBiZWhpbmQgdGhlIGdsb2JlIGluIDNEIHNwYWNlKSAqL31cbiAgICAgICAgICA8U3R5bGVkQ29uZmlnUm93PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8UGFuZWxIZWFkZXJBY3Rpb25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJsYXllci1ncm91cF9fdmlzaWJpbGl0eS10b2dnbGVcIlxuICAgICAgICAgICAgICAgIGlkPVwiZ2xvYmUtc3RhcnMtdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICB0b29sdGlwPXtnbG9iZUNvbmZpZy5zdGFycyA/ICd0b29sdGlwLmhpZGUnIDogJ3Rvb2x0aXAuc2hvdyd9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Ub2dnbGUoJ3N0YXJzJyl9XG4gICAgICAgICAgICAgICAgSWNvbkNvbXBvbmVudD17Z2xvYmVDb25maWcuc3RhcnMgPyBFeWVTZWVuIDogRXllVW5zZWVufVxuICAgICAgICAgICAgICAgIGFjdGl2ZT17Z2xvYmVDb25maWcuc3RhcnN9XG4gICAgICAgICAgICAgICAgZmx1c2hcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPExheWVyTGFiZWwgJGFjdGl2ZT17Z2xvYmVDb25maWcuc3RhcnN9PlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibWFwTGF5ZXJzLnN0YXJzXCIgLz5cbiAgICAgICAgICAgICAgPC9MYXllckxhYmVsPlxuICAgICAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICA8L1N0eWxlZENvbmZpZ1Jvdz5cbiAgICAgICAgPC9QYW5lbENvbnRlbnQ+XG4gICAgICA8L1N0eWxlZEdsb2JlQ29uZmlnUGFuZWw+XG4gICAgKTtcbiAgfTtcblxuICBHbG9iZUNvbmZpZ1BhbmVsLmRpc3BsYXlOYW1lID0gJ0dsb2JlQ29uZmlnUGFuZWwnO1xuICByZXR1cm4gR2xvYmVDb25maWdQYW5lbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgR2xvYmVDb25maWdQYW5lbEZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBRix1QkFBQSxDQUFBQyxPQUFBO0FBSUEsSUFBQUUsYUFBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksa0JBQUEsR0FBQUosT0FBQTtBQU1B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
|
|
334
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9jb25zdGFudHMiLCJfbG9jYWxpemF0aW9uIiwiX2ljb25zIiwiX3N0eWxlZENvbXBvbmVudHMyIiwiX3BhbmVsSGVhZGVyQWN0aW9uIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yYW5nZVNsaWRlciIsIl9tYXBMYXllckdyb3VwQ29sb3JQaWNrZXIiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiX3RlbXBsYXRlT2JqZWN0NiIsIl90ZW1wbGF0ZU9iamVjdDciLCJfdGVtcGxhdGVPYmplY3Q4IiwiX3RlbXBsYXRlT2JqZWN0OSIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiU3R5bGVkR2xvYmVDb25maWdQYW5lbCIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwiU3R5bGVkQ29uZmlnUm93IiwiZGlzYWJsZVNsaWRlciIsImNzcyIsIlNsaWRlcldyYXBwZXIiLCJwcm9wcyIsIiRlbmFibGVkIiwiQXRtb3NwaGVyZVNsaWRlcldyYXBwZXIiLCJ0aGVtZSIsInNsaWRlcklucHV0V2lkdGgiLCJDb2xvclBpY2tlclNsb3QiLCJTbGlkZXJSb3ciLCJMYXllckxhYmVsIiwiUGFuZWxMYWJlbEJvbGQiLCIkYWN0aXZlIiwidGV4dENvbG9yIiwibGFiZWxDb2xvciIsIkNoaWxkUm93IiwiR2xvYmVDb25maWdQYW5lbEZhY3RvcnkiLCJkZXBzIiwiUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5IiwiUmFuZ2VTbGlkZXJGYWN0b3J5IiwiTGF5ZXJHcm91cENvbG9yUGlja2VyRmFjdG9yeSIsIlBhbmVsSGVhZGVyQWN0aW9uIiwiUmFuZ2VTbGlkZXIiLCJMYXllckdyb3VwQ29sb3JQaWNrZXIiLCJHbG9iZUNvbmZpZ1BhbmVsIiwiX3JlZiIsIl9tYXBTdGF0ZSRnbG9iZSIsIl9tYXBTdGF0ZSRnbG9iZTIiLCJfZ2xvYmVDb25maWckaHVnZUhhbG8iLCJfZ2xvYmVDb25maWckaHVnZUhhbG8yIiwibWFwU3RhdGUiLCJvbkdsb2JlQ29uZmlnQ2hhbmdlIiwiZ2xvYmVDb25maWciLCJnbG9iZSIsImNvbmZpZyIsIm9uVG9nZ2xlIiwidXNlQ2FsbGJhY2siLCJrZXkiLCJjaGlsZEtleXMiLCJwYXJlbnRLZXkiLCJuZXdWYWx1ZSIsInVwZGF0ZSIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJmb3JFYWNoIiwiY2hpbGRLZXkiLCJvblNsaWRlckNoYW5nZSIsInZhbHVlIiwib25Db2xvckNoYW5nZSIsImNvbG9yIiwiZW5hYmxlZCIsImNyZWF0ZUVsZW1lbnQiLCJQYW5lbExhYmVsIiwiRm9ybWF0dGVkTWVzc2FnZSIsImlkIiwiUGFuZWxDb250ZW50IiwiUGFuZWxMYWJlbFdyYXBwZXIiLCJjbGFzc05hbWUiLCJ0b29sdGlwIiwiYXRtb3NwaGVyZSIsIm9uQ2xpY2siLCJJY29uQ29tcG9uZW50IiwiRXllU2VlbiIsIkV5ZVVuc2VlbiIsImFjdGl2ZSIsImZsdXNoIiwiaHVnZUhhbG8iLCJ1bmRlZmluZWQiLCJCb29sZWFuIiwic3R5bGUiLCJwYWRkaW5nTGVmdCIsInJhbmdlIiwidmFsdWUwIiwidmFsdWUxIiwiaHVnZUhhbG9SYWRpdXMiLCJERUZBVUxUX0dMT0JFX0NPTkZJRyIsInN0ZXAiLCJpc1JhbmdlZCIsIm9uQ2hhbmdlIiwidmFsIiwiaW5wdXRUaGVtZSIsInNob3dJbnB1dCIsImh1Z2VIYWxvT3BhY2l0eSIsInRlcm1pbmF0b3IiLCJ0ZXJtaW5hdG9yT3BhY2l0eSIsImF6aW11dGgiLCJhemltdXRoQW5nbGUiLCJiYXNlbWFwIiwibGFiZWxzIiwic2x1ZyIsImxhYmVsc0NvbG9yIiwiZXh0cmFNYXJnaW5SaWdodCIsImRpc2FibGVkIiwiYWRtaW5MaW5lcyIsImFkbWluTGluZXNDb2xvciIsIndhdGVyIiwid2F0ZXJDb2xvciIsIm1hcmdpbkxlZnQiLCJzdXJmYWNlQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJzdGFycyIsImRpc3BsYXlOYW1lIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NpZGUtcGFuZWwvbWFwLXN0eWxlLXBhbmVsL2dsb2JlLWNvbmZpZy1wYW5lbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2t9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQsIHtjc3N9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IHtNYXBTdGF0ZSwgUkdCQ29sb3J9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtHbG9iZUNvbmZpZywgREVGQVVMVF9HTE9CRV9DT05GSUd9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7Rm9ybWF0dGVkTWVzc2FnZX0gZnJvbSAnQGtlcGxlci5nbC9sb2NhbGl6YXRpb24nO1xuXG5pbXBvcnQge0V5ZVNlZW4sIEV5ZVVuc2Vlbn0gZnJvbSAnLi4vLi4vY29tbW9uL2ljb25zJztcbmltcG9ydCB7XG4gIFBhbmVsTGFiZWwsXG4gIFBhbmVsQ29udGVudCxcbiAgUGFuZWxMYWJlbEJvbGQsXG4gIFBhbmVsTGFiZWxXcmFwcGVyXG59IGZyb20gJy4uLy4uL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5IGZyb20gJy4uL3BhbmVsLWhlYWRlci1hY3Rpb24nO1xuaW1wb3J0IFJhbmdlU2xpZGVyRmFjdG9yeSBmcm9tICcuLi8uLi9jb21tb24vcmFuZ2Utc2xpZGVyJztcbmltcG9ydCBMYXllckdyb3VwQ29sb3JQaWNrZXJGYWN0b3J5IGZyb20gJy4vbWFwLWxheWVyLWdyb3VwLWNvbG9yLXBpY2tlcic7XG5cbmNvbnN0IFN0eWxlZEdsb2JlQ29uZmlnUGFuZWwgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nLWJvdHRvbTogNnB4O1xuXG4gIC8qIEdpdmUgc2xpZGVyL2NvbG9yIGNvbnRyb2xzIG1vcmUgaG9yaXpvbnRhbCByb29tLiAqL1xuICAuc2lkZS1wYW5lbC1wYW5lbF9fY29udGVudCB7XG4gICAgcGFkZGluZy1yaWdodDogMnB4O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRDb25maWdSb3cgPSBzdHlsZWQuZGl2YFxuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgJjpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgLmxheWVyLWdyb3VwX192aXNpYmlsaXR5LXRvZ2dsZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xuICB9XG5gO1xuXG5jb25zdCBkaXNhYmxlU2xpZGVyID0gY3NzYFxuICBvcGFjaXR5OiAwLjU7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYDtcblxuY29uc3QgU2xpZGVyV3JhcHBlciA9IHN0eWxlZC5kaXY8eyRlbmFibGVkPzogYm9vbGVhbn0+YFxuICBmbGV4LWdyb3c6IDE7XG4gIG1hcmdpbi1sZWZ0OiA0cHg7XG4gICR7cHJvcHMgPT4gKHByb3BzLiRlbmFibGVkID8gJycgOiBkaXNhYmxlU2xpZGVyKX1cbmA7XG5cbi8vIEF0bW9zcGhlcmUgc2xpZGVyIHJvd3M6IHNocmluayB0aGUgbnVtZXJpYyBpbnB1dHMgYnkgNXB4IHNvIHRoZSB0cmFjayBjYW4gdXNlXG4vLyB0aGUgZXh0cmEgc3BhY2UgKGRlZmF1bHQgdGhlbWUuc2xpZGVySW5wdXRXaWR0aCBpcyA1NikuXG5jb25zdCBBdG1vc3BoZXJlU2xpZGVyV3JhcHBlciA9IHN0eWxlZChTbGlkZXJXcmFwcGVyKWBcbiAgaW5wdXQge1xuICAgIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNsaWRlcklucHV0V2lkdGggLSA1fXB4O1xuICB9XG5gO1xuXG4vLyBLZWVwIGNvbG9yIHN3YXRjaGVzIHNsaWdodGx5IGluc2V0IGZyb20gdGhlIHBhbmVsIGVkZ2UgKHNsaWRlcnMgYWxyZWFkeSBnZXRcbi8vIGluc2V0IGZyb20gdGhlaXIgbnVtZXJpYyBpbnB1dHM7IHN3YXRjaGVzIG5lZWQgYW4gZXhwbGljaXQgbWFyZ2luKS5cbmNvbnN0IENvbG9yUGlja2VyU2xvdCA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi1yaWdodDogMTBweDtcbmA7XG5cbi8vIFNsaWRlciByb3dzIChEYXkvTmlnaHQsIFN1biBBemltdXRoKSBwdXQgdGhlIGxhYmVsIGFuZCB0aGUgc2xpZGVyIHNpZGUgYnkgc2lkZS5cbi8vIEdpdmUgdGhlIGxhYmVsIG9ubHkgdGhlIHdpZHRoIGl0cyAoc2hvcnQpIHRleHQgbmVlZHMgc28gdGhlIHNsaWRlciBnZXRzIHRoZVxuLy8gcmVzdCBvZiB0aGUgcm93LiBUaGUgY2hpbGQgaW5kZW50IGlzIGtlcHQgc21hbGwgKH5oYWxmIGFuIGV5ZS1pY29uIHdpZHRoKSBzbyB0aGVcbi8vIHN1Yi1yb3cgZXllIGljb24gbGluZXMgdXAgY2xvc2UgdG8gdGhlIHBhcmVudCAoYXRtb3NwaGVyZSkgcm93LCByYXRoZXIgdGhhblxuLy8gYmVpbmcgcHVzaGVkIH4xLjUgaWNvbiB3aWR0aHMgdG8gdGhlIHJpZ2h0LlxuY29uc3QgU2xpZGVyUm93ID0gc3R5bGVkKFN0eWxlZENvbmZpZ1JvdylgXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgLnNpZGUtcGFuZWwtcGFuZWxfX2xhYmVsLXdyYXBwZXIge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIHBhZGRpbmctbGVmdDogOHB4O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIH1cbmA7XG5cbmNvbnN0IExheWVyTGFiZWwgPSBzdHlsZWQoUGFuZWxMYWJlbEJvbGQpPHskYWN0aXZlOiBib29sZWFufT5gXG4gIGNvbG9yOiAke3Byb3BzID0+IChwcm9wcy4kYWN0aXZlID8gcHJvcHMudGhlbWUudGV4dENvbG9yIDogcHJvcHMudGhlbWUubGFiZWxDb2xvcil9O1xuYDtcblxuY29uc3QgQ2hpbGRSb3cgPSBzdHlsZWQoU3R5bGVkQ29uZmlnUm93KWBcbiAgLnNpZGUtcGFuZWwtcGFuZWxfX2xhYmVsLXdyYXBwZXIge1xuICAgIHBhZGRpbmctbGVmdDogOHB4O1xuICB9XG5gO1xuXG5leHBvcnQgdHlwZSBHbG9iZUNvbmZpZ1BhbmVsUHJvcHMgPSB7XG4gIG1hcFN0YXRlOiBNYXBTdGF0ZTtcbiAgb25HbG9iZUNvbmZpZ0NoYW5nZTogKGNvbmZpZzogUGFydGlhbDxHbG9iZUNvbmZpZz4pID0+IHZvaWQ7XG59O1xuXG5HbG9iZUNvbmZpZ1BhbmVsRmFjdG9yeS5kZXBzID0gW1xuICBQYW5lbEhlYWRlckFjdGlvbkZhY3RvcnksXG4gIFJhbmdlU2xpZGVyRmFjdG9yeSxcbiAgTGF5ZXJHcm91cENvbG9yUGlja2VyRmFjdG9yeVxuXTtcblxuZnVuY3Rpb24gR2xvYmVDb25maWdQYW5lbEZhY3RvcnkoXG4gIFBhbmVsSGVhZGVyQWN0aW9uOiBSZXR1cm5UeXBlPHR5cGVvZiBQYW5lbEhlYWRlckFjdGlvbkZhY3Rvcnk+LFxuICBSYW5nZVNsaWRlcjogUmV0dXJuVHlwZTx0eXBlb2YgUmFuZ2VTbGlkZXJGYWN0b3J5PixcbiAgTGF5ZXJHcm91cENvbG9yUGlja2VyOiBSZXR1cm5UeXBlPHR5cGVvZiBMYXllckdyb3VwQ29sb3JQaWNrZXJGYWN0b3J5PlxuKSB7XG4gIGNvbnN0IEdsb2JlQ29uZmlnUGFuZWw6IFJlYWN0LkZDPEdsb2JlQ29uZmlnUGFuZWxQcm9wcz4gPSAoe21hcFN0YXRlLCBvbkdsb2JlQ29uZmlnQ2hhbmdlfSkgPT4ge1xuICAgIGNvbnN0IGdsb2JlQ29uZmlnID0gbWFwU3RhdGUuZ2xvYmU/LmNvbmZpZztcblxuICAgIGNvbnN0IG9uVG9nZ2xlID0gdXNlQ2FsbGJhY2soXG4gICAgICAoXG4gICAgICAgIGtleToga2V5b2YgR2xvYmVDb25maWcsXG4gICAgICAgIGNoaWxkS2V5cz86IChrZXlvZiBHbG9iZUNvbmZpZylbXSxcbiAgICAgICAgcGFyZW50S2V5Pzoga2V5b2YgR2xvYmVDb25maWdcbiAgICAgICkgPT4ge1xuICAgICAgICBpZiAoIWdsb2JlQ29uZmlnKSByZXR1cm47XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gIWdsb2JlQ29uZmlnW2tleV07XG4gICAgICAgIGNvbnN0IHVwZGF0ZTogUGFydGlhbDxHbG9iZUNvbmZpZz4gPSB7W2tleV06IG5ld1ZhbHVlfTtcbiAgICAgICAgaWYgKGNoaWxkS2V5cykge1xuICAgICAgICAgIGNoaWxkS2V5cy5mb3JFYWNoKGNoaWxkS2V5ID0+IHtcbiAgICAgICAgICAgIHVwZGF0ZVtjaGlsZEtleV0gPSBuZXdWYWx1ZSBhcyBhbnk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcmVudEtleSAmJiBuZXdWYWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHVwZGF0ZVtwYXJlbnRLZXldID0gdHJ1ZSBhcyBhbnk7XG4gICAgICAgIH1cbiAgICAgICAgb25HbG9iZUNvbmZpZ0NoYW5nZSh1cGRhdGUpO1xuICAgICAgfSxcbiAgICAgIFtnbG9iZUNvbmZpZywgb25HbG9iZUNvbmZpZ0NoYW5nZV1cbiAgICApO1xuXG4gICAgY29uc3Qgb25TbGlkZXJDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAgIChrZXk6IGtleW9mIEdsb2JlQ29uZmlnLCB2YWx1ZTogbnVtYmVyW10pID0+IHtcbiAgICAgICAgb25HbG9iZUNvbmZpZ0NoYW5nZSh7W2tleV06IHZhbHVlWzFdfSBhcyBQYXJ0aWFsPEdsb2JlQ29uZmlnPik7XG4gICAgICB9LFxuICAgICAgW29uR2xvYmVDb25maWdDaGFuZ2VdXG4gICAgKTtcblxuICAgIGNvbnN0IG9uQ29sb3JDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAgIChrZXk6IGtleW9mIEdsb2JlQ29uZmlnLCBjb2xvcjogUkdCQ29sb3IpID0+IHtcbiAgICAgICAgb25HbG9iZUNvbmZpZ0NoYW5nZSh7W2tleV06IGNvbG9yfSBhcyBQYXJ0aWFsPEdsb2JlQ29uZmlnPik7XG4gICAgICB9LFxuICAgICAgW29uR2xvYmVDb25maWdDaGFuZ2VdXG4gICAgKTtcblxuICAgIGlmICghbWFwU3RhdGUuZ2xvYmU/LmVuYWJsZWQgfHwgIWdsb2JlQ29uZmlnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZEdsb2JlQ29uZmlnUGFuZWw+XG4gICAgICAgIDxQYW5lbExhYmVsPlxuICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibWFwTWFuYWdlci5nbG9iZUxheWVyc1wiIC8+XG4gICAgICAgIDwvUGFuZWxMYWJlbD5cbiAgICAgICAgPFBhbmVsQ29udGVudD5cbiAgICAgICAgICB7LyogQXRtb3NwaGVyZSAqL31cbiAgICAgICAgICA8U3R5bGVkQ29uZmlnUm93PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8UGFuZWxIZWFkZXJBY3Rpb25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJsYXllci1ncm91cF9fdmlzaWJpbGl0eS10b2dnbGVcIlxuICAgICAgICAgICAgICAgIGlkPVwiZ2xvYmUtYXRtb3NwaGVyZS10b2dnbGVcIlxuICAgICAgICAgICAgICAgIHRvb2x0aXA9e2dsb2JlQ29uZmlnLmF0bW9zcGhlcmUgPyAndG9vbHRpcC5oaWRlJyA6ICd0b29sdGlwLnNob3cnfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uVG9nZ2xlKCdhdG1vc3BoZXJlJywgWyd0ZXJtaW5hdG9yJywgJ2F6aW11dGgnXSl9XG4gICAgICAgICAgICAgICAgSWNvbkNvbXBvbmVudD17Z2xvYmVDb25maWcuYXRtb3NwaGVyZSA/IEV5ZVNlZW4gOiBFeWVVbnNlZW59XG4gICAgICAgICAgICAgICAgYWN0aXZlPXtnbG9iZUNvbmZpZy5hdG1vc3BoZXJlfVxuICAgICAgICAgICAgICAgIGZsdXNoXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxMYXllckxhYmVsICRhY3RpdmU9e2dsb2JlQ29uZmlnLmF0bW9zcGhlcmV9PlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibWFwTGF5ZXJzLmF0bW9zcGhlcmVcIiAvPlxuICAgICAgICAgICAgICA8L0xheWVyTGFiZWw+XG4gICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgIDwvU3R5bGVkQ29uZmlnUm93PlxuXG4gICAgICAgICAgey8qIEh1Z2UgSGFsbyAoY2hpbGQgb2YgYXRtb3NwaGVyZSkg4oCUIGFkZGl0aXZlIHNvZnQgZ2xvdyBvbiB0b3Agb2YgcmVhbGlzdGljIGhhbG8gKi99XG4gICAgICAgICAgPENoaWxkUm93PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8UGFuZWxIZWFkZXJBY3Rpb25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJsYXllci1ncm91cF9fdmlzaWJpbGl0eS10b2dnbGVcIlxuICAgICAgICAgICAgICAgIGlkPVwiZ2xvYmUtaHVnZS1oYWxvLXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgdG9vbHRpcD17Z2xvYmVDb25maWcuaHVnZUhhbG8gPyAndG9vbHRpcC5oaWRlJyA6ICd0b29sdGlwLnNob3cnfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uVG9nZ2xlKCdodWdlSGFsbycsIHVuZGVmaW5lZCwgJ2F0bW9zcGhlcmUnKX1cbiAgICAgICAgICAgICAgICBJY29uQ29tcG9uZW50PXtnbG9iZUNvbmZpZy5odWdlSGFsbyA/IEV5ZVNlZW4gOiBFeWVVbnNlZW59XG4gICAgICAgICAgICAgICAgYWN0aXZlPXtCb29sZWFuKGdsb2JlQ29uZmlnLmh1Z2VIYWxvICYmIGdsb2JlQ29uZmlnLmF0bW9zcGhlcmUpfVxuICAgICAgICAgICAgICAgIGZsdXNoXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxMYXllckxhYmVsICRhY3RpdmU9e0Jvb2xlYW4oZ2xvYmVDb25maWcuaHVnZUhhbG8gJiYgZ2xvYmVDb25maWcuYXRtb3NwaGVyZSl9PlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibWFwTGF5ZXJzLmh1Z2VIYWxvXCIgLz5cbiAgICAgICAgICAgICAgPC9MYXllckxhYmVsPlxuICAgICAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICA8L0NoaWxkUm93PlxuXG4gICAgICAgICAgey8qIEh1Z2UgSGFsbyByYWRpdXMgbXVsdGlwbGllciAqL31cbiAgICAgICAgICA8U2xpZGVyUm93PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8TGF5ZXJMYWJlbFxuICAgICAgICAgICAgICAgICRhY3RpdmU9e0Jvb2xlYW4oZ2xvYmVDb25maWcuaHVnZUhhbG8gJiYgZ2xvYmVDb25maWcuYXRtb3NwaGVyZSl9XG4gICAgICAgICAgICAgICAgc3R5bGU9e3twYWRkaW5nTGVmdDogMjh9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJtYXBMYXllcnMuaHVnZUhhbG9SYWRpdXNcIiAvPlxuICAgICAgICAgICAgICA8L0xheWVyTGFiZWw+XG4gICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgPEF0bW9zcGhlcmVTbGlkZXJXcmFwcGVyICRlbmFibGVkPXtCb29sZWFuKGdsb2JlQ29uZmlnLmh1Z2VIYWxvICYmIGdsb2JlQ29uZmlnLmF0bW9zcGhlcmUpfT5cbiAgICAgICAgICAgICAgPFJhbmdlU2xpZGVyXG4gICAgICAgICAgICAgICAgcmFuZ2U9e1swLjUsIDMuNV19XG4gICAgICAgICAgICAgICAgdmFsdWUwPXswfVxuICAgICAgICAgICAgICAgIHZhbHVlMT17Z2xvYmVDb25maWcuaHVnZUhhbG9SYWRpdXMgPz8gREVGQVVMVF9HTE9CRV9DT05GSUcuaHVnZUhhbG9SYWRpdXN9XG4gICAgICAgICAgICAgICAgc3RlcD17MC4wNX1cbiAgICAgICAgICAgICAgICBpc1JhbmdlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbCA9PiBvblNsaWRlckNoYW5nZSgnaHVnZUhhbG9SYWRpdXMnLCB2YWwpfVxuICAgICAgICAgICAgICAgIGlucHV0VGhlbWU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIHNob3dJbnB1dFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9BdG1vc3BoZXJlU2xpZGVyV3JhcHBlcj5cbiAgICAgICAgICA8L1NsaWRlclJvdz5cblxuICAgICAgICAgIHsvKiBIdWdlIEhhbG8gb3BhY2l0eSAqL31cbiAgICAgICAgICA8U2xpZGVyUm93PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8TGF5ZXJMYWJlbFxuICAgICAgICAgICAgICAgICRhY3RpdmU9e0Jvb2xlYW4oZ2xvYmVDb25maWcuaHVnZUhhbG8gJiYgZ2xvYmVDb25maWcuYXRtb3NwaGVyZSl9XG4gICAgICAgICAgICAgICAgc3R5bGU9e3twYWRkaW5nTGVmdDogMjh9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJtYXBMYXllcnMuaHVnZUhhbG9PcGFjaXR5XCIgLz5cbiAgICAgICAgICAgICAgPC9MYXllckxhYmVsPlxuICAgICAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgIDxBdG1vc3BoZXJlU2xpZGVyV3JhcHBlciAkZW5hYmxlZD17Qm9vbGVhbihnbG9iZUNvbmZpZy5odWdlSGFsbyAmJiBnbG9iZUNvbmZpZy5hdG1vc3BoZXJlKX0+XG4gICAgICAgICAgICAgIDxSYW5nZVNsaWRlclxuICAgICAgICAgICAgICAgIHJhbmdlPXtbMCwgMV19XG4gICAgICAgICAgICAgICAgdmFsdWUwPXswfVxuICAgICAgICAgICAgICAgIHZhbHVlMT17Z2xvYmVDb25maWcuaHVnZUhhbG9PcGFjaXR5ID8/IERFRkFVTFRfR0xPQkVfQ09ORklHLmh1Z2VIYWxvT3BhY2l0eX1cbiAgICAgICAgICAgICAgICBzdGVwPXswLjAxfVxuICAgICAgICAgICAgICAgIGlzUmFuZ2VkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17dmFsID0+IG9uU2xpZGVyQ2hhbmdlKCdodWdlSGFsb09wYWNpdHknLCB2YWwpfVxuICAgICAgICAgICAgICAgIGlucHV0VGhlbWU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIHNob3dJbnB1dFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9BdG1vc3BoZXJlU2xpZGVyV3JhcHBlcj5cbiAgICAgICAgICA8L1NsaWRlclJvdz5cblxuICAgICAgICAgIHsvKiBUZXJtaW5hdG9yIChjaGlsZCBvZiBhdG1vc3BoZXJlKSAqL31cbiAgICAgICAgICA8U2xpZGVyUm93PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8UGFuZWxIZWFkZXJBY3Rpb25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJsYXllci1ncm91cF9fdmlzaWJpbGl0eS10b2dnbGVcIlxuICAgICAgICAgICAgICAgIGlkPVwiZ2xvYmUtdGVybWluYXRvci10b2dnbGVcIlxuICAgICAgICAgICAgICAgIHRvb2x0aXA9e2dsb2JlQ29uZmlnLnRlcm1pbmF0b3IgPyAndG9vbHRpcC5oaWRlJyA6ICd0b29sdGlwLnNob3cnfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uVG9nZ2xlKCd0ZXJtaW5hdG9yJywgdW5kZWZpbmVkLCAnYXRtb3NwaGVyZScpfVxuICAgICAgICAgICAgICAgIEljb25Db21wb25lbnQ9e2dsb2JlQ29uZmlnLnRlcm1pbmF0b3IgPyBFeWVTZWVuIDogRXllVW5zZWVufVxuICAgICAgICAgICAgICAgIGFjdGl2ZT17Z2xvYmVDb25maWcudGVybWluYXRvciAmJiBnbG9iZUNvbmZpZy5hdG1vc3BoZXJlfVxuICAgICAgICAgICAgICAgIGZsdXNoXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxMYXllckxhYmVsICRhY3RpdmU9e2dsb2JlQ29uZmlnLnRlcm1pbmF0b3IgJiYgZ2xvYmVDb25maWcuYXRtb3NwaGVyZX0+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJtYXBMYXllcnMudGVybWluYXRvclwiIC8+XG4gICAgICAgICAgICAgIDwvTGF5ZXJMYWJlbD5cbiAgICAgICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICA8QXRtb3NwaGVyZVNsaWRlcldyYXBwZXIgJGVuYWJsZWQ9e2dsb2JlQ29uZmlnLnRlcm1pbmF0b3IgJiYgZ2xvYmVDb25maWcuYXRtb3NwaGVyZX0+XG4gICAgICAgICAgICAgIDxSYW5nZVNsaWRlclxuICAgICAgICAgICAgICAgIHJhbmdlPXtbMCwgMV19XG4gICAgICAgICAgICAgICAgdmFsdWUwPXswfVxuICAgICAgICAgICAgICAgIHZhbHVlMT17Z2xvYmVDb25maWcudGVybWluYXRvck9wYWNpdHl9XG4gICAgICAgICAgICAgICAgc3RlcD17MC4wMX1cbiAgICAgICAgICAgICAgICBpc1JhbmdlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbCA9PiBvblNsaWRlckNoYW5nZSgndGVybWluYXRvck9wYWNpdHknLCB2YWwpfVxuICAgICAgICAgICAgICAgIGlucHV0VGhlbWU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIHNob3dJbnB1dFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9BdG1vc3BoZXJlU2xpZGVyV3JhcHBlcj5cbiAgICAgICAgICA8L1NsaWRlclJvdz5cblxuICAgICAgICAgIHsvKiBTdW4gQXppbXV0aCAoY2hpbGQgb2YgYXRtb3NwaGVyZSkgKi99XG4gICAgICAgICAgPFNsaWRlclJvdz5cbiAgICAgICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXItZ3JvdXBfX3Zpc2liaWxpdHktdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICBpZD1cImdsb2JlLWF6aW11dGgtdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICB0b29sdGlwPXtnbG9iZUNvbmZpZy5hemltdXRoID8gJ3Rvb2x0aXAuaGlkZScgOiAndG9vbHRpcC5zaG93J31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblRvZ2dsZSgnYXppbXV0aCcsIHVuZGVmaW5lZCwgJ2F0bW9zcGhlcmUnKX1cbiAgICAgICAgICAgICAgICBJY29uQ29tcG9uZW50PXtnbG9iZUNvbmZpZy5hemltdXRoID8gRXllU2VlbiA6IEV5ZVVuc2Vlbn1cbiAgICAgICAgICAgICAgICBhY3RpdmU9e2dsb2JlQ29uZmlnLmF6aW11dGggJiYgZ2xvYmVDb25maWcuYXRtb3NwaGVyZX1cbiAgICAgICAgICAgICAgICBmbHVzaFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8TGF5ZXJMYWJlbCAkYWN0aXZlPXtnbG9iZUNvbmZpZy5hemltdXRoICYmIGdsb2JlQ29uZmlnLmF0bW9zcGhlcmV9PlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibWFwTGF5ZXJzLnN1bkF6aW11dGhcIiAvPlxuICAgICAgICAgICAgICA8L0xheWVyTGFiZWw+XG4gICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgPEF0bW9zcGhlcmVTbGlkZXJXcmFwcGVyICRlbmFibGVkPXtnbG9iZUNvbmZpZy5hemltdXRoICYmIGdsb2JlQ29uZmlnLmF0bW9zcGhlcmV9PlxuICAgICAgICAgICAgICA8UmFuZ2VTbGlkZXJcbiAgICAgICAgICAgICAgICByYW5nZT17WzAsIDM2MF19XG4gICAgICAgICAgICAgICAgdmFsdWUwPXswfVxuICAgICAgICAgICAgICAgIHZhbHVlMT17Z2xvYmVDb25maWcuYXppbXV0aEFuZ2xlfVxuICAgICAgICAgICAgICAgIHN0ZXA9ezF9XG4gICAgICAgICAgICAgICAgaXNSYW5nZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt2YWwgPT4gb25TbGlkZXJDaGFuZ2UoJ2F6aW11dGhBbmdsZScsIHZhbCl9XG4gICAgICAgICAgICAgICAgaW5wdXRUaGVtZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgc2hvd0lucHV0XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0F0bW9zcGhlcmVTbGlkZXJXcmFwcGVyPlxuICAgICAgICAgIDwvU2xpZGVyUm93PlxuXG4gICAgICAgICAgey8qIEJhc2VtYXAgKi99XG4gICAgICAgICAgPFN0eWxlZENvbmZpZ1Jvdz5cbiAgICAgICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXItZ3JvdXBfX3Zpc2liaWxpdHktdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICBpZD1cImdsb2JlLWJhc2VtYXAtdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICB0b29sdGlwPXtnbG9iZUNvbmZpZy5iYXNlbWFwID8gJ3Rvb2x0aXAuaGlkZScgOiAndG9vbHRpcC5zaG93J31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblRvZ2dsZSgnYmFzZW1hcCcsIFsnbGFiZWxzJywgJ2FkbWluTGluZXMnLCAnd2F0ZXInXSl9XG4gICAgICAgICAgICAgICAgSWNvbkNvbXBvbmVudD17Z2xvYmVDb25maWcuYmFzZW1hcCA/IEV5ZVNlZW4gOiBFeWVVbnNlZW59XG4gICAgICAgICAgICAgICAgYWN0aXZlPXtnbG9iZUNvbmZpZy5iYXNlbWFwfVxuICAgICAgICAgICAgICAgIGZsdXNoXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxMYXllckxhYmVsICRhY3RpdmU9e2dsb2JlQ29uZmlnLmJhc2VtYXB9PlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibWFwTGF5ZXJzLmJhc2VtYXBcIiAvPlxuICAgICAgICAgICAgICA8L0xheWVyTGFiZWw+XG4gICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgIDwvU3R5bGVkQ29uZmlnUm93PlxuXG4gICAgICAgICAgey8qIExhYmVscyAoY2hpbGQgb2YgYmFzZW1hcCkgKi99XG4gICAgICAgICAgPENoaWxkUm93PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8UGFuZWxIZWFkZXJBY3Rpb25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJsYXllci1ncm91cF9fdmlzaWJpbGl0eS10b2dnbGVcIlxuICAgICAgICAgICAgICAgIGlkPVwiZ2xvYmUtbGFiZWxzLXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgdG9vbHRpcD17Z2xvYmVDb25maWcubGFiZWxzID8gJ3Rvb2x0aXAuaGlkZScgOiAndG9vbHRpcC5zaG93J31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblRvZ2dsZSgnbGFiZWxzJywgdW5kZWZpbmVkLCAnYmFzZW1hcCcpfVxuICAgICAgICAgICAgICAgIEljb25Db21wb25lbnQ9e2dsb2JlQ29uZmlnLmxhYmVscyA/IEV5ZVNlZW4gOiBFeWVVbnNlZW59XG4gICAgICAgICAgICAgICAgYWN0aXZlPXtnbG9iZUNvbmZpZy5sYWJlbHMgJiYgZ2xvYmVDb25maWcuYmFzZW1hcH1cbiAgICAgICAgICAgICAgICBmbHVzaFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8TGF5ZXJMYWJlbCAkYWN0aXZlPXtnbG9iZUNvbmZpZy5sYWJlbHMgJiYgZ2xvYmVDb25maWcuYmFzZW1hcH0+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJtYXBMYXllcnMubGFiZWxcIiAvPlxuICAgICAgICAgICAgICA8L0xheWVyTGFiZWw+XG4gICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgPENvbG9yUGlja2VyU2xvdD5cbiAgICAgICAgICAgICAgPExheWVyR3JvdXBDb2xvclBpY2tlclxuICAgICAgICAgICAgICAgIHNsdWc9XCJnbG9iZS1sYWJlbHNcIlxuICAgICAgICAgICAgICAgIGNvbG9yPXtnbG9iZUNvbmZpZy5sYWJlbHNDb2xvcn1cbiAgICAgICAgICAgICAgICBvbkNvbG9yQ2hhbmdlPXsoY29sb3I6IFJHQkNvbG9yKSA9PiBvbkNvbG9yQ2hhbmdlKCdsYWJlbHNDb2xvcicsIGNvbG9yKX1cbiAgICAgICAgICAgICAgICBleHRyYU1hcmdpblJpZ2h0PXt0cnVlfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXshKGdsb2JlQ29uZmlnLmxhYmVscyAmJiBnbG9iZUNvbmZpZy5iYXNlbWFwKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29sb3JQaWNrZXJTbG90PlxuICAgICAgICAgIDwvQ2hpbGRSb3c+XG5cbiAgICAgICAgICB7LyogQWRtaW4gTGluZXMgKGNoaWxkIG9mIGJhc2VtYXApICovfVxuICAgICAgICAgIDxDaGlsZFJvdz5cbiAgICAgICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXItZ3JvdXBfX3Zpc2liaWxpdHktdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICBpZD1cImdsb2JlLWFkbWluLXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgdG9vbHRpcD17Z2xvYmVDb25maWcuYWRtaW5MaW5lcyA/ICd0b29sdGlwLmhpZGUnIDogJ3Rvb2x0aXAuc2hvdyd9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Ub2dnbGUoJ2FkbWluTGluZXMnLCB1bmRlZmluZWQsICdiYXNlbWFwJyl9XG4gICAgICAgICAgICAgICAgSWNvbkNvbXBvbmVudD17Z2xvYmVDb25maWcuYWRtaW5MaW5lcyA/IEV5ZVNlZW4gOiBFeWVVbnNlZW59XG4gICAgICAgICAgICAgICAgYWN0aXZlPXtnbG9iZUNvbmZpZy5hZG1pbkxpbmVzICYmIGdsb2JlQ29uZmlnLmJhc2VtYXB9XG4gICAgICAgICAgICAgICAgZmx1c2hcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPExheWVyTGFiZWwgJGFjdGl2ZT17Z2xvYmVDb25maWcuYWRtaW5MaW5lcyAmJiBnbG9iZUNvbmZpZy5iYXNlbWFwfT5cbiAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cIm1hcExheWVycy5hZG1pbkJvcmRlcnNcIiAvPlxuICAgICAgICAgICAgICA8L0xheWVyTGFiZWw+XG4gICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgPENvbG9yUGlja2VyU2xvdD5cbiAgICAgICAgICAgICAgPExheWVyR3JvdXBDb2xvclBpY2tlclxuICAgICAgICAgICAgICAgIHNsdWc9XCJnbG9iZS1hZG1pblwiXG4gICAgICAgICAgICAgICAgY29sb3I9e2dsb2JlQ29uZmlnLmFkbWluTGluZXNDb2xvcn1cbiAgICAgICAgICAgICAgICBvbkNvbG9yQ2hhbmdlPXsoY29sb3I6IFJHQkNvbG9yKSA9PiBvbkNvbG9yQ2hhbmdlKCdhZG1pbkxpbmVzQ29sb3InLCBjb2xvcil9XG4gICAgICAgICAgICAgICAgZXh0cmFNYXJnaW5SaWdodD17dHJ1ZX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17IShnbG9iZUNvbmZpZy5hZG1pbkxpbmVzICYmIGdsb2JlQ29uZmlnLmJhc2VtYXApfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db2xvclBpY2tlclNsb3Q+XG4gICAgICAgICAgPC9DaGlsZFJvdz5cblxuICAgICAgICAgIHsvKiBXYXRlciAoY2hpbGQgb2YgYmFzZW1hcCkgKi99XG4gICAgICAgICAgPENoaWxkUm93PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8UGFuZWxIZWFkZXJBY3Rpb25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJsYXllci1ncm91cF9fdmlzaWJpbGl0eS10b2dnbGVcIlxuICAgICAgICAgICAgICAgIGlkPVwiZ2xvYmUtd2F0ZXItdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICB0b29sdGlwPXtnbG9iZUNvbmZpZy53YXRlciA/ICd0b29sdGlwLmhpZGUnIDogJ3Rvb2x0aXAuc2hvdyd9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Ub2dnbGUoJ3dhdGVyJywgdW5kZWZpbmVkLCAnYmFzZW1hcCcpfVxuICAgICAgICAgICAgICAgIEljb25Db21wb25lbnQ9e2dsb2JlQ29uZmlnLndhdGVyID8gRXllU2VlbiA6IEV5ZVVuc2Vlbn1cbiAgICAgICAgICAgICAgICBhY3RpdmU9e2dsb2JlQ29uZmlnLndhdGVyICYmIGdsb2JlQ29uZmlnLmJhc2VtYXB9XG4gICAgICAgICAgICAgICAgZmx1c2hcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPExheWVyTGFiZWwgJGFjdGl2ZT17Z2xvYmVDb25maWcud2F0ZXIgJiYgZ2xvYmVDb25maWcuYmFzZW1hcH0+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJtYXBMYXllcnMud2F0ZXJcIiAvPlxuICAgICAgICAgICAgICA8L0xheWVyTGFiZWw+XG4gICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgPENvbG9yUGlja2VyU2xvdD5cbiAgICAgICAgICAgICAgPExheWVyR3JvdXBDb2xvclBpY2tlclxuICAgICAgICAgICAgICAgIHNsdWc9XCJnbG9iZS13YXRlclwiXG4gICAgICAgICAgICAgICAgY29sb3I9e2dsb2JlQ29uZmlnLndhdGVyQ29sb3J9XG4gICAgICAgICAgICAgICAgb25Db2xvckNoYW5nZT17KGNvbG9yOiBSR0JDb2xvcikgPT4gb25Db2xvckNoYW5nZSgnd2F0ZXJDb2xvcicsIGNvbG9yKX1cbiAgICAgICAgICAgICAgICBleHRyYU1hcmdpblJpZ2h0PXt0cnVlfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXshKGdsb2JlQ29uZmlnLndhdGVyICYmIGdsb2JlQ29uZmlnLmJhc2VtYXApfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db2xvclBpY2tlclNsb3Q+XG4gICAgICAgICAgPC9DaGlsZFJvdz5cblxuICAgICAgICAgIHsvKiBHbG9iZSBTdXJmYWNlIChhbHdheXMgdmlzaWJsZSwgb25seSBoYXMgY29sb3IpICovfVxuICAgICAgICAgIDxTdHlsZWRDb25maWdSb3c+XG4gICAgICAgICAgICA8UGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICAgIDxMYXllckxhYmVsICRhY3RpdmU9e3RydWV9IHN0eWxlPXt7bWFyZ2luTGVmdDogJzI4cHgnfX0+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJtYXBMYXllcnMuc3VyZmFjZVwiIC8+XG4gICAgICAgICAgICAgIDwvTGF5ZXJMYWJlbD5cbiAgICAgICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICA8Q29sb3JQaWNrZXJTbG90PlxuICAgICAgICAgICAgICA8TGF5ZXJHcm91cENvbG9yUGlja2VyXG4gICAgICAgICAgICAgICAgc2x1Zz1cImdsb2JlLXN1cmZhY2VcIlxuICAgICAgICAgICAgICAgIGNvbG9yPXtnbG9iZUNvbmZpZy5zdXJmYWNlQ29sb3J9XG4gICAgICAgICAgICAgICAgb25Db2xvckNoYW5nZT17KGNvbG9yOiBSR0JDb2xvcikgPT4gb25Db2xvckNoYW5nZSgnc3VyZmFjZUNvbG9yJywgY29sb3IpfVxuICAgICAgICAgICAgICAgIGV4dHJhTWFyZ2luUmlnaHQ9e3RydWV9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db2xvclBpY2tlclNsb3Q+XG4gICAgICAgICAgPC9TdHlsZWRDb25maWdSb3c+XG5cbiAgICAgICAgICB7LyogQmFja2dyb3VuZCAoZW1wdHkgc3BhY2UgYXJvdW5kIHRoZSBnbG9iZSwgYWx3YXlzIHZpc2libGUpICovfVxuICAgICAgICAgIDxTdHlsZWRDb25maWdSb3c+XG4gICAgICAgICAgICA8UGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICAgIDxMYXllckxhYmVsICRhY3RpdmU9e3RydWV9IHN0eWxlPXt7bWFyZ2luTGVmdDogJzI4cHgnfX0+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJtYXBMYXllcnMuYmFja2dyb3VuZFwiIC8+XG4gICAgICAgICAgICAgIDwvTGF5ZXJMYWJlbD5cbiAgICAgICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICA8Q29sb3JQaWNrZXJTbG90PlxuICAgICAgICAgICAgICA8TGF5ZXJHcm91cENvbG9yUGlja2VyXG4gICAgICAgICAgICAgICAgc2x1Zz1cImdsb2JlLWJhY2tncm91bmRcIlxuICAgICAgICAgICAgICAgIGNvbG9yPXtnbG9iZUNvbmZpZy5iYWNrZ3JvdW5kQ29sb3J9XG4gICAgICAgICAgICAgICAgb25Db2xvckNoYW5nZT17KGNvbG9yOiBSR0JDb2xvcikgPT4gb25Db2xvckNoYW5nZSgnYmFja2dyb3VuZENvbG9yJywgY29sb3IpfVxuICAgICAgICAgICAgICAgIGV4dHJhTWFyZ2luUmlnaHQ9e3RydWV9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db2xvclBpY2tlclNsb3Q+XG4gICAgICAgICAgPC9TdHlsZWRDb25maWdSb3c+XG5cbiAgICAgICAgICB7LyogU3RhcnMgKHJlbmRlcmVkIGJlaGluZCB0aGUgZ2xvYmUgaW4gM0Qgc3BhY2UpICovfVxuICAgICAgICAgIDxTdHlsZWRDb25maWdSb3c+XG4gICAgICAgICAgICA8UGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICAgIDxQYW5lbEhlYWRlckFjdGlvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxheWVyLWdyb3VwX192aXNpYmlsaXR5LXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgaWQ9XCJnbG9iZS1zdGFycy10b2dnbGVcIlxuICAgICAgICAgICAgICAgIHRvb2x0aXA9e2dsb2JlQ29uZmlnLnN0YXJzID8gJ3Rvb2x0aXAuaGlkZScgOiAndG9vbHRpcC5zaG93J31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblRvZ2dsZSgnc3RhcnMnKX1cbiAgICAgICAgICAgICAgICBJY29uQ29tcG9uZW50PXtnbG9iZUNvbmZpZy5zdGFycyA/IEV5ZVNlZW4gOiBFeWVVbnNlZW59XG4gICAgICAgICAgICAgICAgYWN0aXZlPXtnbG9iZUNvbmZpZy5zdGFyc31cbiAgICAgICAgICAgICAgICBmbHVzaFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8TGF5ZXJMYWJlbCAkYWN0aXZlPXtnbG9iZUNvbmZpZy5zdGFyc30+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJtYXBMYXllcnMuc3RhcnNcIiAvPlxuICAgICAgICAgICAgICA8L0xheWVyTGFiZWw+XG4gICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgIDwvU3R5bGVkQ29uZmlnUm93PlxuICAgICAgICA8L1BhbmVsQ29udGVudD5cbiAgICAgIDwvU3R5bGVkR2xvYmVDb25maWdQYW5lbD5cbiAgICApO1xuICB9O1xuXG4gIEdsb2JlQ29uZmlnUGFuZWwuZGlzcGxheU5hbWUgPSAnR2xvYmVDb25maWdQYW5lbCc7XG4gIHJldHVybiBHbG9iZUNvbmZpZ1BhbmVsO1xufVxuXG5leHBvcnQgZGVmYXVsdCBHbG9iZUNvbmZpZ1BhbmVsRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFGLHVCQUFBLENBQUFDLE9BQUE7QUFHQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxhQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxrQkFBQSxHQUFBTCxPQUFBO0FBTUEsSUFBQU0sa0JBQUEsR0FBQUMsc0JBQUEsQ0FBQVAsT0FBQTtBQUNBLElBQUFRLFlBQUEsR0FBQUQsc0JBQUEsQ0FBQVAsT0FBQTtBQUNBLElBQUFTLHlCQUFBLEdBQUFGLHNCQUFBLENBQUFQLE9BQUE7QUFBMEUsSUFBQVUsZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQW5CMUU7QUFDQTtBQUFBLFNBQUFuQix3QkFBQW9CLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFB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
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { CategoricalColumnStats } from '@kepler.gl/utils';
|
|
3
|
+
import { Margin } from './column-statistics-components';
|
|
4
|
+
export type ColumnStatisticsCategoricalProps = CategoricalColumnStats & {
|
|
5
|
+
width?: number;
|
|
6
|
+
margin?: Margin;
|
|
7
|
+
};
|
|
8
|
+
declare const ColumnStatisticsCategorical: React.FC<ColumnStatisticsCategoricalProps>;
|
|
9
|
+
export default ColumnStatisticsCategorical;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type Margin = {
|
|
3
|
+
top: number;
|
|
4
|
+
left: number;
|
|
5
|
+
right: number;
|
|
6
|
+
bottom: number;
|
|
7
|
+
};
|
|
8
|
+
export declare const STATS_WIDTH = 180;
|
|
9
|
+
export declare const STATS_MARGIN: Margin;
|
|
10
|
+
export declare const HISTOGRAM_MARGIN: Margin;
|
|
11
|
+
export declare const HISTOGRAM_HEIGHT = 50;
|
|
12
|
+
type ColumnStatisticsContainerProps = {
|
|
13
|
+
width: number;
|
|
14
|
+
margin: Margin;
|
|
15
|
+
};
|
|
16
|
+
export declare const ColumnStatisticsContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof ColumnStatisticsContainerProps> & ColumnStatisticsContainerProps, never> & Partial<Pick<import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof ColumnStatisticsContainerProps> & ColumnStatisticsContainerProps, never>>> & string;
|
|
17
|
+
export declare const StatisticRowContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
|
|
18
|
+
type StyledStatsNameProps = {
|
|
19
|
+
$isBad?: boolean;
|
|
20
|
+
};
|
|
21
|
+
export declare const StyledStatsName: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "$isBad"> & StyledStatsNameProps, never> & Partial<Pick<import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "$isBad"> & StyledStatsNameProps, never>>> & string;
|
|
22
|
+
export declare const StyledStatsValue: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
|
|
23
|
+
export declare const TopPlotContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
|
|
24
|
+
type StatisticRowProps = {
|
|
25
|
+
left: string;
|
|
26
|
+
right: string | null;
|
|
27
|
+
isBad?: boolean;
|
|
28
|
+
};
|
|
29
|
+
export declare const StatisticRow: React.FC<StatisticRowProps>;
|
|
30
|
+
export declare function formatPercent(n: number): string;
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { NumericColumnStats } from '@kepler.gl/utils';
|
|
3
|
+
import HistogramPlotFactory, { HistogramPlotProps } from '../histogram-plot';
|
|
4
|
+
export type ColumnStatisticsNumericProps = NumericColumnStats & {
|
|
5
|
+
width?: number;
|
|
6
|
+
margin?: {
|
|
7
|
+
top: number;
|
|
8
|
+
left: number;
|
|
9
|
+
right: number;
|
|
10
|
+
bottom: number;
|
|
11
|
+
};
|
|
12
|
+
type?: string;
|
|
13
|
+
};
|
|
14
|
+
declare function ColumnStatisticsNumericFactory(HistogramPlot: React.FC<HistogramPlotProps>): React.FC<ColumnStatisticsNumericProps>;
|
|
15
|
+
declare namespace ColumnStatisticsNumericFactory {
|
|
16
|
+
var deps: (typeof HistogramPlotFactory)[];
|
|
17
|
+
}
|
|
18
|
+
export default ColumnStatisticsNumericFactory;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TimeColumnStats } from '@kepler.gl/utils';
|
|
3
|
+
import HistogramPlotFactory, { HistogramPlotProps } from '../histogram-plot';
|
|
4
|
+
export type ColumnStatisticsTimeProps = TimeColumnStats & {
|
|
5
|
+
width?: number;
|
|
6
|
+
margin?: {
|
|
7
|
+
top: number;
|
|
8
|
+
left: number;
|
|
9
|
+
right: number;
|
|
10
|
+
bottom: number;
|
|
11
|
+
};
|
|
12
|
+
type?: string;
|
|
13
|
+
format?: string;
|
|
14
|
+
};
|
|
15
|
+
declare function ColumnStatisticsTimeFactory(HistogramPlot: React.FC<HistogramPlotProps>): React.FC<ColumnStatisticsTimeProps>;
|
|
16
|
+
declare namespace ColumnStatisticsTimeFactory {
|
|
17
|
+
var deps: (typeof HistogramPlotFactory)[];
|
|
18
|
+
}
|
|
19
|
+
export default ColumnStatisticsTimeFactory;
|
|
@@ -2,6 +2,8 @@ import React, { CSSProperties } from 'react';
|
|
|
2
2
|
import { ColMeta } from '@kepler.gl/types';
|
|
3
3
|
import FieldTokenFactory, { FieldTokenProps } from '../../common/field-token';
|
|
4
4
|
import { DataTableProps } from './index';
|
|
5
|
+
import ColumnStatisticsNumericFactory, { ColumnStatisticsNumericProps } from './column-statistics-numeric';
|
|
6
|
+
import ColumnStatisticsTimeFactory, { ColumnStatisticsTimeProps } from './column-statistics-time';
|
|
5
7
|
type CellInfo = {
|
|
6
8
|
columnIndex: number;
|
|
7
9
|
isScrolling: boolean;
|
|
@@ -11,7 +13,7 @@ type CellInfo = {
|
|
|
11
13
|
rowIndex: number;
|
|
12
14
|
style: CSSProperties;
|
|
13
15
|
};
|
|
14
|
-
type HeaderCellProps = {
|
|
16
|
+
export type HeaderCellProps = {
|
|
15
17
|
cellInfo: CellInfo;
|
|
16
18
|
columns: DataTableProps['columns'];
|
|
17
19
|
colMeta?: ColMeta;
|
|
@@ -22,8 +24,8 @@ type HeaderCellProps = {
|
|
|
22
24
|
moreOptionsColumn: null | string;
|
|
23
25
|
style: CSSProperties;
|
|
24
26
|
};
|
|
25
|
-
declare
|
|
26
|
-
|
|
27
|
-
deps: (typeof FieldTokenFactory)[];
|
|
28
|
-
}
|
|
27
|
+
declare function HeaderCellFactory(FieldToken: React.FC<FieldTokenProps>, ColumnStatisticsNumeric: React.FC<ColumnStatisticsNumericProps>, ColumnStatisticsTime: React.FC<ColumnStatisticsTimeProps>): ({ cellInfo, columns, isPinned, showStats, props, toggleMoreOptions, moreOptionsColumn }: HeaderCellProps) => React.JSX.Element;
|
|
28
|
+
declare namespace HeaderCellFactory {
|
|
29
|
+
var deps: (typeof FieldTokenFactory | typeof ColumnStatisticsNumericFactory | typeof ColumnStatisticsTimeFactory)[];
|
|
30
|
+
}
|
|
29
31
|
export default HeaderCellFactory;
|
|
@@ -6,8 +6,9 @@ import { ColMeta } from '@kepler.gl/types';
|
|
|
6
6
|
import { DataContainerInterface } from '@kepler.gl/utils';
|
|
7
7
|
type ContainerProps = {
|
|
8
8
|
$hasCustomScrollBarStyle?: boolean;
|
|
9
|
+
$hasStats?: boolean;
|
|
9
10
|
};
|
|
10
|
-
export declare const Container: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>,
|
|
11
|
+
export declare const Container: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof ContainerProps> & ContainerProps, never> & Partial<Pick<import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof ContainerProps> & ContainerProps, never>>> & string;
|
|
11
12
|
export type SortColumn = {
|
|
12
13
|
column?: string;
|
|
13
14
|
mode?: string;
|
|
@@ -45,8 +46,10 @@ interface TableSectionProps {
|
|
|
45
46
|
headerCellRender?: any;
|
|
46
47
|
dataCellRender?: any;
|
|
47
48
|
scrollLeft?: number;
|
|
49
|
+
headerVisibleHeight?: number;
|
|
50
|
+
headerBodyOffset?: number;
|
|
48
51
|
}
|
|
49
|
-
export declare const TableSection: ({ classList, isPinned, columns, headerGridProps, fixedWidth, fixedHeight, onScroll, scrollTop, dataGridProps, columnWidth, setGridRef, headerCellRender, dataCellRender, scrollLeft }: TableSectionProps) => React.JSX.Element;
|
|
52
|
+
export declare const TableSection: ({ classList, isPinned, columns, headerGridProps, fixedWidth, fixedHeight, onScroll, scrollTop, dataGridProps, columnWidth, setGridRef, headerCellRender, dataCellRender, scrollLeft, headerVisibleHeight, headerBodyOffset }: TableSectionProps) => React.JSX.Element;
|
|
50
53
|
export interface DataTableProps {
|
|
51
54
|
dataId?: string;
|
|
52
55
|
hasStats?: boolean;
|
|
@@ -71,30 +74,10 @@ export interface DataTableProps {
|
|
|
71
74
|
showStats?: boolean;
|
|
72
75
|
hasCustomScrollBarStyle?: boolean;
|
|
73
76
|
getRowCell?: (renderDataCellProps: GetRowCellProps, formatter: any) => string | number;
|
|
77
|
+
loadColumnStats?: (dataId: string, fieldName: string) => void;
|
|
74
78
|
}
|
|
75
79
|
declare function DataTableFactory(HeaderCell: ReturnType<typeof HeaderCellFactory>): React.ComponentType<DataTableProps>;
|
|
76
80
|
declare namespace DataTableFactory {
|
|
77
|
-
var deps:
|
|
78
|
-
(FieldToken: React.FC<import("../field-token").FieldTokenProps>): ({ cellInfo, columns, isPinned, props, toggleMoreOptions, moreOptionsColumn }: {
|
|
79
|
-
cellInfo: {
|
|
80
|
-
columnIndex: number;
|
|
81
|
-
isScrolling: boolean;
|
|
82
|
-
isVisible: boolean;
|
|
83
|
-
key: string;
|
|
84
|
-
parent: any;
|
|
85
|
-
rowIndex: number;
|
|
86
|
-
style: React.CSSProperties;
|
|
87
|
-
};
|
|
88
|
-
columns: DataTableProps["columns"];
|
|
89
|
-
colMeta?: ColMeta;
|
|
90
|
-
isPinned?: boolean;
|
|
91
|
-
showStats?: boolean;
|
|
92
|
-
props: DataTableProps;
|
|
93
|
-
toggleMoreOptions: (moreOptionsColumn: string) => void;
|
|
94
|
-
moreOptionsColumn: null | string;
|
|
95
|
-
style: React.CSSProperties;
|
|
96
|
-
}) => React.JSX.Element;
|
|
97
|
-
deps: typeof import("../field-token").default[];
|
|
98
|
-
}[];
|
|
81
|
+
var deps: (typeof HeaderCellFactory)[];
|
|
99
82
|
}
|
|
100
83
|
export default DataTableFactory;
|