@kepler.gl/components 3.3.0-alpha.1 → 3.3.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/action-panel.js +1 -1
- package/dist/common/color-legend.d.ts +1 -1
- package/dist/common/data-table/canvas.d.ts +1 -1
- package/dist/common/data-table/index.d.ts +1 -1
- package/dist/common/dnd-layer-items.d.ts +4 -0
- package/dist/common/dnd-layer-items.js +6 -2
- package/dist/common/error-boundary.d.ts +1 -1
- package/dist/common/file-uploader/file-upload.d.ts +1 -1
- package/dist/common/flex-container.d.ts +15 -7
- package/dist/common/icon-button.d.ts +53 -6
- package/dist/common/icons/arrow-down-full.d.ts +2 -1
- package/dist/common/icons/arrow-down-full.js +1 -1
- package/dist/common/icons/folder.d.ts +10 -0
- package/dist/common/icons/folder.js +51 -0
- package/dist/common/icons/index.d.ts +1 -0
- package/dist/common/icons/index.js +8 -1
- package/dist/common/icons/timeline-marker.d.ts +2 -1
- package/dist/common/icons/timeline-marker.js +1 -1
- package/dist/common/item-selector/dropdown-list.d.ts +1 -1
- package/dist/common/item-selector/dropdown-list.js +1 -1
- package/dist/common/item-selector/dropdown-select.d.ts +13 -7
- package/dist/common/item-selector/item-selector.d.ts +1 -1
- package/dist/common/item-selector/item-selector.js +1 -1
- package/dist/common/item-selector/typeahead.d.ts +4 -4
- package/dist/common/item-selector/typeahead.js +1 -3
- package/dist/common/layout-splitter.d.ts +45 -0
- package/dist/common/layout-splitter.js +231 -0
- package/dist/common/line-chart.d.ts +7 -3
- package/dist/common/line-chart.js +179 -59
- package/dist/common/modal.d.ts +11 -5
- package/dist/common/modal.js +1 -1
- package/dist/common/portaled.d.ts +17 -17
- package/dist/common/range-slider.js +1 -3
- package/dist/common/slider/mouse-event.d.ts +1 -1
- package/dist/common/slider/mouse-event.js +1 -2
- package/dist/common/slider/slider-bar-handle.d.ts +1 -1
- package/dist/common/slider/slider-bar-handle.js +1 -1
- package/dist/common/slider/slider-handle.d.ts +3 -3
- package/dist/common/slider/slider-handle.js +1 -1
- package/dist/common/slider/slider.d.ts +4 -4
- package/dist/common/slider/slider.js +1 -1
- package/dist/common/styled-components.d.ts +627 -177
- package/dist/common/vertical-toolbar.d.ts +12 -2
- package/dist/container.d.ts +3 -2
- package/dist/container.js +2 -2
- package/dist/context.d.ts +1 -1
- package/dist/context.js +1 -1
- package/dist/dnd-context.d.ts +4 -3
- package/dist/dnd-context.js +64 -9
- package/dist/effects/compact-color-picker.d.ts +1 -1
- package/dist/effects/effect-configurator.d.ts +2 -4
- package/dist/effects/effect-time-configurator.js +1 -1
- package/dist/effects/effect-type-list-item.d.ts +1 -1
- package/dist/filters/components.d.ts +7 -5
- package/dist/filters/filter-panels/filter-synced-dataset-panel.d.ts +6 -2
- package/dist/geocoder-panel.d.ts +2 -2
- package/dist/geocoder-panel.js +6 -7
- package/dist/hooks/use-dnd-layers.d.ts +4 -3
- package/dist/hooks/use-dnd-layers.js +103 -42
- package/dist/index.d.ts +3 -2
- package/dist/index.js +38 -9
- package/dist/injector.d.ts +1 -1
- package/dist/kepler-gl.d.ts +167 -27
- package/dist/kepler-gl.js +3 -2
- package/dist/loading-indicator.d.ts +1 -1
- package/dist/map/layer-hover-info.d.ts +7 -3
- package/dist/map/layer-hover-info.js +58 -22
- package/dist/map/map-control-panel.js +3 -2
- package/dist/map/map-control-toolbar.d.ts +29 -4
- package/dist/map/map-control.d.ts +11 -4
- package/dist/map/map-control.js +7 -6
- package/dist/map/map-legend-panel.d.ts +11 -2
- package/dist/map/map-legend-panel.js +19 -2
- package/dist/map/map-legend.d.ts +19 -2
- package/dist/map/map-legend.js +141 -27
- package/dist/map/split-map-button.d.ts +6 -1
- package/dist/map/split-map-button.js +113 -19
- package/dist/map-container.js +20 -3
- package/dist/maps-layout.d.ts +3 -0
- package/dist/maps-layout.js +86 -26
- package/dist/modal-container.d.ts +1 -1
- package/dist/modals/cloud-tile.d.ts +1 -2
- package/dist/modals/export-map-modal/components.d.ts +9 -5
- package/dist/modals/export-video-modal.d.ts +3 -0
- package/dist/modals/export-video-modal.js +79 -46
- package/dist/modals/export-video-modal.spec.js +2 -2
- package/dist/modals/hubble-utils.d.ts +16 -0
- package/dist/modals/hubble-utils.js +98 -1
- package/dist/modals/modal-dialog.d.ts +1 -1
- package/dist/modals/share-map-modal.d.ts +2 -4
- package/dist/modals/swipe-composite-utils.d.ts +10 -0
- package/dist/modals/swipe-composite-utils.js +108 -0
- package/dist/modals/swipe-export-settings.d.ts +24 -0
- package/dist/modals/swipe-export-settings.js +370 -0
- package/dist/modals/swipe-export-video-container.d.ts +122 -0
- package/dist/modals/swipe-export-video-container.js +630 -0
- package/dist/modals/swipe-export-video-preview.d.ts +68 -0
- package/dist/modals/swipe-export-video-preview.js +339 -0
- package/dist/modals/tilesets-modals/tileset-raster-form.js +1 -5
- package/dist/side-panel/filter-panel/filter-panel-header.d.ts +7 -3
- package/dist/side-panel/layer-manager.d.ts +5 -4
- package/dist/side-panel/layer-manager.js +16 -4
- package/dist/side-panel/layer-panel/color-selector.d.ts +6 -4
- package/dist/side-panel/layer-panel/custom-palette.d.ts +3 -5
- package/dist/side-panel/layer-panel/dataset-layer-group.d.ts +2 -1
- package/dist/side-panel/layer-panel/dataset-layer-group.js +1 -1
- package/dist/side-panel/layer-panel/dataset-layer-section.d.ts +2 -1
- package/dist/side-panel/layer-panel/dataset-layer-section.js +1 -1
- package/dist/side-panel/layer-panel/layer-config-group.d.ts +5 -11
- package/dist/side-panel/layer-panel/layer-configurator.js +130 -82
- package/dist/side-panel/layer-panel/layer-group-header.d.ts +15 -0
- package/dist/side-panel/layer-panel/layer-group-header.js +179 -0
- package/dist/side-panel/layer-panel/layer-list.d.ts +9 -4
- package/dist/side-panel/layer-panel/layer-list.js +197 -40
- package/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +2 -10
- package/dist/side-panel/panel-tab.d.ts +1 -3
- package/dist/side-panel/panel-view-list-toggle.d.ts +4 -4
- package/dist/side-panel/side-bar.d.ts +1 -6
- package/dist/side-panel.d.ts +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.js +1 -1
- package/package.json +29 -35
- package/dist/map/layer-selector-panel.d.ts +0 -21
- package/dist/map/layer-selector-panel.js +0 -85
- package/dist/side-panel/layer-panel/radius-by-zoom-input.d.ts +0 -11
- package/dist/side-panel/layer-panel/radius-by-zoom-input.js +0 -220
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { LayerOrderGroup } from '@kepler.gl/types';
|
|
3
|
+
import PanelHeaderActionFactory from '../panel-header-action';
|
|
4
|
+
export type LayerGroupHeaderProps = {
|
|
5
|
+
layerGroup: LayerOrderGroup;
|
|
6
|
+
isLayerGroupContentOpen?: boolean;
|
|
7
|
+
onToggleLayerGroupContent?: () => void;
|
|
8
|
+
listeners?: any;
|
|
9
|
+
className?: string;
|
|
10
|
+
};
|
|
11
|
+
declare function LayerGroupHeaderFactory(PanelHeaderAction: ReturnType<typeof PanelHeaderActionFactory>): React.FC<LayerGroupHeaderProps>;
|
|
12
|
+
declare namespace LayerGroupHeaderFactory {
|
|
13
|
+
var deps: (typeof PanelHeaderActionFactory)[];
|
|
14
|
+
}
|
|
15
|
+
export default LayerGroupHeaderFactory;
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
+
var _reactRedux = require("react-redux");
|
|
13
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
14
|
+
var _actions = require("@kepler.gl/actions");
|
|
15
|
+
var _reducers = require("@kepler.gl/reducers");
|
|
16
|
+
var _styledComponents2 = require("../../common/styled-components");
|
|
17
|
+
var _layerPanelHeader = require("./layer-panel-header");
|
|
18
|
+
var _icons = require("../../common/icons");
|
|
19
|
+
var _panelHeaderAction = _interopRequireDefault(require("../panel-header-action"));
|
|
20
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8; // SPDX-License-Identifier: MIT
|
|
21
|
+
// Copyright contributors to the kepler.gl project
|
|
22
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
23
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(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; }
|
|
24
|
+
var GROUP_COLORS = ['#4BA9C9', '#E8A838', '#8BC58B', '#D67AB1', '#7B8FF7', '#F2726F', '#56C4A0', '#C9A84B'];
|
|
25
|
+
function getGroupColor(id) {
|
|
26
|
+
var hash = 0;
|
|
27
|
+
for (var i = 0; i < id.length; i++) {
|
|
28
|
+
hash = (hash << 5) - hash + id.charCodeAt(i) | 0;
|
|
29
|
+
}
|
|
30
|
+
return GROUP_COLORS[Math.abs(hash) % GROUP_COLORS.length];
|
|
31
|
+
}
|
|
32
|
+
var RemoveAction = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n opacity: 0;\n transition: opacity 0.15s ease;\n .panel--header__action {\n height: 16px;\n }\n"])));
|
|
33
|
+
var Container = (0, _styledComponents["default"])(_styledComponents2.StyledPanelHeader)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n height: ", "px;\n justify-content: space-between;\n color: ", ";\n padding-right: 10px;\n align-items: center;\n overflow: hidden;\n\n border: 1px solid ", ";\n\n &:hover {\n cursor: pointer;\n background-color: ", ";\n .layer__drag-handle {\n opacity: 1;\n }\n ", " {\n opacity: 1;\n }\n }\n"])), function (props) {
|
|
34
|
+
return props.theme.layerPanelHeaderHeight;
|
|
35
|
+
}, function (props) {
|
|
36
|
+
return props.theme.textColor;
|
|
37
|
+
}, function (props) {
|
|
38
|
+
return props.theme.panelBackgroundHover;
|
|
39
|
+
}, function (props) {
|
|
40
|
+
return props.theme.panelBackgroundHover;
|
|
41
|
+
}, RemoveAction);
|
|
42
|
+
var CornerTriangle = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: ", "px\n ", "px 0 0;\n border-color: ", " transparent transparent transparent;\n"])), function (props) {
|
|
43
|
+
return Math.round(props.theme.layerPanelHeaderHeight / 3);
|
|
44
|
+
}, function (props) {
|
|
45
|
+
return Math.round(props.theme.layerPanelHeaderHeight / 3);
|
|
46
|
+
}, function (props) {
|
|
47
|
+
return props.$color;
|
|
48
|
+
});
|
|
49
|
+
var Actions = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n gap: 0;\n height: 16px;\n .panel--header__action {\n height: 16px;\n }\n"])));
|
|
50
|
+
var LeftSection = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n flex-grow: 1;\n overflow: hidden;\n"])));
|
|
51
|
+
var GroupLabelInput = (0, _styledComponents["default"])(_styledComponents2.InlineInput)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: 4px;\n font-weight: 500;\n"])));
|
|
52
|
+
var ConfirmationBar = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 6px 12px;\n background-color: ", ";\n border: 1px solid ", ";\n border-top: none;\n font-size: 11px;\n color: ", ";\n gap: 8px;\n"])), function (props) {
|
|
53
|
+
return props.theme.panelBackgroundHover;
|
|
54
|
+
}, function (props) {
|
|
55
|
+
return props.theme.panelBackgroundHover;
|
|
56
|
+
}, function (props) {
|
|
57
|
+
return props.theme.textColor;
|
|
58
|
+
});
|
|
59
|
+
var ConfirmButton = _styledComponents["default"].button(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n background: ", ";\n color: ", ";\n border: none;\n border-radius: 2px;\n padding: 3px 8px;\n font-size: 11px;\n cursor: pointer;\n &:hover {\n background: ", ";\n }\n"])), function (props) {
|
|
60
|
+
return props.theme.secondaryBtnBgd;
|
|
61
|
+
}, function (props) {
|
|
62
|
+
return props.theme.secondaryBtnColor;
|
|
63
|
+
}, function (props) {
|
|
64
|
+
return props.theme.secondaryBtnBgdHover;
|
|
65
|
+
});
|
|
66
|
+
LayerGroupHeaderFactory.deps = [_panelHeaderAction["default"]];
|
|
67
|
+
function LayerGroupHeaderFactory(PanelHeaderAction) {
|
|
68
|
+
var LayerGroupHeader = function LayerGroupHeader(_ref) {
|
|
69
|
+
var layerGroup = _ref.layerGroup,
|
|
70
|
+
onToggleLayerGroupContent = _ref.onToggleLayerGroupContent,
|
|
71
|
+
isLayerGroupContentOpen = _ref.isLayerGroupContentOpen,
|
|
72
|
+
listeners = _ref.listeners,
|
|
73
|
+
className = _ref.className;
|
|
74
|
+
var id = layerGroup.id,
|
|
75
|
+
label = layerGroup.label;
|
|
76
|
+
var dispatch = (0, _reactRedux.useDispatch)();
|
|
77
|
+
var _useState = (0, _react.useState)(false),
|
|
78
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
79
|
+
showConfirmation = _useState2[0],
|
|
80
|
+
setShowConfirmation = _useState2[1];
|
|
81
|
+
var confirmRef = (0, _react.useRef)(null);
|
|
82
|
+
var layerCount = (0, _reducers.getFlatLayerOrder)(layerGroup.layerOrder).length;
|
|
83
|
+
(0, _react.useEffect)(function () {
|
|
84
|
+
if (!showConfirmation) return;
|
|
85
|
+
var handleClickOutside = function handleClickOutside(e) {
|
|
86
|
+
if (confirmRef.current && !confirmRef.current.contains(e.target)) {
|
|
87
|
+
setShowConfirmation(false);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
91
|
+
return function () {
|
|
92
|
+
return document.removeEventListener('mousedown', handleClickOutside);
|
|
93
|
+
};
|
|
94
|
+
}, [showConfirmation]);
|
|
95
|
+
var onUpdateLabel = (0, _react.useCallback)(function (event) {
|
|
96
|
+
dispatch((0, _actions.updateLayerGroup)({
|
|
97
|
+
id: id,
|
|
98
|
+
options: {
|
|
99
|
+
label: event.target.value
|
|
100
|
+
}
|
|
101
|
+
}));
|
|
102
|
+
}, [dispatch, id]);
|
|
103
|
+
var onToggleVisibility = (0, _react.useCallback)(function () {
|
|
104
|
+
dispatch((0, _actions.updateLayerGroup)({
|
|
105
|
+
id: id,
|
|
106
|
+
options: {
|
|
107
|
+
isVisible: !layerGroup.isVisible
|
|
108
|
+
}
|
|
109
|
+
}));
|
|
110
|
+
}, [dispatch, id, layerGroup.isVisible]);
|
|
111
|
+
var onDelete = (0, _react.useCallback)(function (e) {
|
|
112
|
+
e.stopPropagation();
|
|
113
|
+
if (layerCount > 0) {
|
|
114
|
+
setShowConfirmation(true);
|
|
115
|
+
} else {
|
|
116
|
+
dispatch((0, _actions.removeLayerGroup)({
|
|
117
|
+
id: id
|
|
118
|
+
}));
|
|
119
|
+
}
|
|
120
|
+
}, [dispatch, id, layerCount]);
|
|
121
|
+
var onConfirmDelete = (0, _react.useCallback)(function (e) {
|
|
122
|
+
e.stopPropagation();
|
|
123
|
+
dispatch((0, _actions.removeLayerGroup)({
|
|
124
|
+
id: id
|
|
125
|
+
}));
|
|
126
|
+
setShowConfirmation(false);
|
|
127
|
+
}, [dispatch, id]);
|
|
128
|
+
var VisibilityIcon = layerGroup.isVisible ? _icons.EyeSeen : _icons.EyeUnseen;
|
|
129
|
+
var CollapseIcon = isLayerGroupContentOpen ? _icons.ArrowDown : _icons.ArrowRight;
|
|
130
|
+
var stopPropagation = (0, _react.useCallback)(function (e) {
|
|
131
|
+
e.stopPropagation();
|
|
132
|
+
}, []);
|
|
133
|
+
return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(Container, {
|
|
134
|
+
className: className,
|
|
135
|
+
onClick: onToggleLayerGroupContent
|
|
136
|
+
}, /*#__PURE__*/_react["default"].createElement(CornerTriangle, {
|
|
137
|
+
$color: getGroupColor(id)
|
|
138
|
+
}), /*#__PURE__*/_react["default"].createElement(LeftSection, null, /*#__PURE__*/_react["default"].createElement(_layerPanelHeader.DragHandle, {
|
|
139
|
+
className: "layer__drag-handle",
|
|
140
|
+
listeners: listeners
|
|
141
|
+
}, /*#__PURE__*/_react["default"].createElement(_icons.VertDots, {
|
|
142
|
+
height: "20px"
|
|
143
|
+
})), /*#__PURE__*/_react["default"].createElement(GroupLabelInput, {
|
|
144
|
+
type: "text",
|
|
145
|
+
value: label,
|
|
146
|
+
onClick: stopPropagation,
|
|
147
|
+
onChange: onUpdateLabel,
|
|
148
|
+
id: "".concat(id, ":input-group-label")
|
|
149
|
+
})), /*#__PURE__*/_react["default"].createElement(Actions, {
|
|
150
|
+
onClick: stopPropagation
|
|
151
|
+
}, /*#__PURE__*/_react["default"].createElement(RemoveAction, null, /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
|
|
152
|
+
className: "layer-group__delete",
|
|
153
|
+
id: "".concat(id, "-delete"),
|
|
154
|
+
tooltip: "Remove group",
|
|
155
|
+
onClick: onDelete,
|
|
156
|
+
IconComponent: _icons.Trash
|
|
157
|
+
})), /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
|
|
158
|
+
className: "layer-group__visibility-toggle",
|
|
159
|
+
id: "".concat(id, "-visibility"),
|
|
160
|
+
tooltip: "Toggle group visibility",
|
|
161
|
+
onClick: onToggleVisibility,
|
|
162
|
+
IconComponent: VisibilityIcon
|
|
163
|
+
}), /*#__PURE__*/_react["default"].createElement(PanelHeaderAction, {
|
|
164
|
+
className: "layer-group__section-toggle",
|
|
165
|
+
id: "".concat(id, "-collapse"),
|
|
166
|
+
tooltip: "Toggle group content",
|
|
167
|
+
onClick: onToggleLayerGroupContent,
|
|
168
|
+
IconComponent: CollapseIcon
|
|
169
|
+
}))), showConfirmation ? /*#__PURE__*/_react["default"].createElement(ConfirmationBar, {
|
|
170
|
+
ref: confirmRef,
|
|
171
|
+
onClick: stopPropagation
|
|
172
|
+
}, /*#__PURE__*/_react["default"].createElement("span", null, "Remove group with layers?"), /*#__PURE__*/_react["default"].createElement(ConfirmButton, {
|
|
173
|
+
onClick: onConfirmDelete
|
|
174
|
+
}, "Remove")) : null);
|
|
175
|
+
};
|
|
176
|
+
return LayerGroupHeader;
|
|
177
|
+
}
|
|
178
|
+
var _default = exports["default"] = LayerGroupHeaderFactory;
|
|
179
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RSZWR1eCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9hY3Rpb25zIiwiX3JlZHVjZXJzIiwiX3N0eWxlZENvbXBvbmVudHMyIiwiX2xheWVyUGFuZWxIZWFkZXIiLCJfaWNvbnMiLCJfcGFuZWxIZWFkZXJBY3Rpb24iLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiX3RlbXBsYXRlT2JqZWN0NiIsIl90ZW1wbGF0ZU9iamVjdDciLCJfdGVtcGxhdGVPYmplY3Q4IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiR1JPVVBfQ09MT1JTIiwiZ2V0R3JvdXBDb2xvciIsImlkIiwiaGFzaCIsImxlbmd0aCIsImNoYXJDb2RlQXQiLCJNYXRoIiwiYWJzIiwiUmVtb3ZlQWN0aW9uIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJDb250YWluZXIiLCJTdHlsZWRQYW5lbEhlYWRlciIsInByb3BzIiwidGhlbWUiLCJsYXllclBhbmVsSGVhZGVySGVpZ2h0IiwidGV4dENvbG9yIiwicGFuZWxCYWNrZ3JvdW5kSG92ZXIiLCJDb3JuZXJUcmlhbmdsZSIsInJvdW5kIiwiJGNvbG9yIiwiQWN0aW9ucyIsIkxlZnRTZWN0aW9uIiwiR3JvdXBMYWJlbElucHV0IiwiSW5saW5lSW5wdXQiLCJDb25maXJtYXRpb25CYXIiLCJDb25maXJtQnV0dG9uIiwiYnV0dG9uIiwic2Vjb25kYXJ5QnRuQmdkIiwic2Vjb25kYXJ5QnRuQ29sb3IiLCJzZWNvbmRhcnlCdG5CZ2RIb3ZlciIsIkxheWVyR3JvdXBIZWFkZXJGYWN0b3J5IiwiZGVwcyIsIlBhbmVsSGVhZGVyQWN0aW9uRmFjdG9yeSIsIlBhbmVsSGVhZGVyQWN0aW9uIiwiTGF5ZXJHcm91cEhlYWRlciIsIl9yZWYiLCJsYXllckdyb3VwIiwib25Ub2dnbGVMYXllckdyb3VwQ29udGVudCIsImlzTGF5ZXJHcm91cENvbnRlbnRPcGVuIiwibGlzdGVuZXJzIiwiY2xhc3NOYW1lIiwibGFiZWwiLCJkaXNwYXRjaCIsInVzZURpc3BhdGNoIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwic2hvd0NvbmZpcm1hdGlvbiIsInNldFNob3dDb25maXJtYXRpb24iLCJjb25maXJtUmVmIiwidXNlUmVmIiwibGF5ZXJDb3VudCIsImdldEZsYXRMYXllck9yZGVyIiwibGF5ZXJPcmRlciIsInVzZUVmZmVjdCIsImhhbmRsZUNsaWNrT3V0c2lkZSIsImN1cnJlbnQiLCJjb250YWlucyIsInRhcmdldCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvblVwZGF0ZUxhYmVsIiwidXNlQ2FsbGJhY2siLCJldmVudCIsInVwZGF0ZUxheWVyR3JvdXAiLCJvcHRpb25zIiwidmFsdWUiLCJvblRvZ2dsZVZpc2liaWxpdHkiLCJpc1Zpc2libGUiLCJvbkRlbGV0ZSIsInN0b3BQcm9wYWdhdGlvbiIsInJlbW92ZUxheWVyR3JvdXAiLCJvbkNvbmZpcm1EZWxldGUiLCJWaXNpYmlsaXR5SWNvbiIsIkV5ZVNlZW4iLCJFeWVVbnNlZW4iLCJDb2xsYXBzZUljb24iLCJBcnJvd0Rvd24iLCJBcnJvd1JpZ2h0IiwiY3JlYXRlRWxlbWVudCIsIm9uQ2xpY2siLCJEcmFnSGFuZGxlIiwiVmVydERvdHMiLCJoZWlnaHQiLCJ0eXBlIiwib25DaGFuZ2UiLCJjb25jYXQiLCJ0b29sdGlwIiwiSWNvbkNvbXBvbmVudCIsIlRyYXNoIiwicmVmIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvbGF5ZXItZ3JvdXAtaGVhZGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZURpc3BhdGNofSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IHt1cGRhdGVMYXllckdyb3VwLCByZW1vdmVMYXllckdyb3VwfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtMYXllck9yZGVyR3JvdXB9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtnZXRGbGF0TGF5ZXJPcmRlcn0gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG5cbmltcG9ydCB7U3R5bGVkUGFuZWxIZWFkZXIsIElubGluZUlucHV0fSBmcm9tICcuLi8uLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtEcmFnSGFuZGxlfSBmcm9tICcuL2xheWVyLXBhbmVsLWhlYWRlcic7XG5pbXBvcnQge1ZlcnREb3RzLCBFeWVTZWVuLCBFeWVVbnNlZW4sIFRyYXNoLCBBcnJvd0Rvd24sIEFycm93UmlnaHR9IGZyb20gJy4uLy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQgUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5IGZyb20gJy4uL3BhbmVsLWhlYWRlci1hY3Rpb24nO1xuXG5jb25zdCBHUk9VUF9DT0xPUlMgPSBbXG4gICcjNEJBOUM5JyxcbiAgJyNFOEE4MzgnLFxuICAnIzhCQzU4QicsXG4gICcjRDY3QUIxJyxcbiAgJyM3QjhGRjcnLFxuICAnI0YyNzI2RicsXG4gICcjNTZDNEEwJyxcbiAgJyNDOUE4NEInXG5dO1xuXG5mdW5jdGlvbiBnZXRHcm91cENvbG9yKGlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgaGFzaCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaWQubGVuZ3RoOyBpKyspIHtcbiAgICBoYXNoID0gKChoYXNoIDw8IDUpIC0gaGFzaCArIGlkLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgfVxuICByZXR1cm4gR1JPVVBfQ09MT1JTW01hdGguYWJzKGhhc2gpICUgR1JPVVBfQ09MT1JTLmxlbmd0aF07XG59XG5cbmNvbnN0IFJlbW92ZUFjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgZWFzZTtcbiAgLnBhbmVsLS1oZWFkZXJfX2FjdGlvbiB7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICB9XG5gO1xuXG5jb25zdCBDb250YWluZXIgPSBzdHlsZWQoU3R5bGVkUGFuZWxIZWFkZXIpYFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllclBhbmVsSGVhZGVySGVpZ2h0fXB4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgYm9yZGVyOiAxcHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEJhY2tncm91bmRIb3Zlcn07XG5cbiAgJjpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCYWNrZ3JvdW5kSG92ZXJ9O1xuICAgIC5sYXllcl9fZHJhZy1oYW5kbGUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gICAgJHtSZW1vdmVBY3Rpb259IHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBDb3JuZXJUcmlhbmdsZSA9IHN0eWxlZC5kaXY8eyRjb2xvcjogc3RyaW5nfT5gXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6ICR7cHJvcHMgPT4gTWF0aC5yb3VuZChwcm9wcy50aGVtZS5sYXllclBhbmVsSGVhZGVySGVpZ2h0IC8gMyl9cHhcbiAgICAke3Byb3BzID0+IE1hdGgucm91bmQocHJvcHMudGhlbWUubGF5ZXJQYW5lbEhlYWRlckhlaWdodCAvIDMpfXB4IDAgMDtcbiAgYm9yZGVyLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLiRjb2xvcn0gdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG5gO1xuXG5jb25zdCBBY3Rpb25zID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwO1xuICBoZWlnaHQ6IDE2cHg7XG4gIC5wYW5lbC0taGVhZGVyX19hY3Rpb24ge1xuICAgIGhlaWdodDogMTZweDtcbiAgfVxuYDtcblxuY29uc3QgTGVmdFNlY3Rpb24gPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmbGV4LWdyb3c6IDE7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5gO1xuXG5jb25zdCBHcm91cExhYmVsSW5wdXQgPSBzdHlsZWQoSW5saW5lSW5wdXQpYFxuICBtYXJnaW4tbGVmdDogNHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuYDtcblxuY29uc3QgQ29uZmlybWF0aW9uQmFyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwYWRkaW5nOiA2cHggMTJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEJhY2tncm91bmRIb3Zlcn07XG4gIGJvcmRlcjogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCYWNrZ3JvdW5kSG92ZXJ9O1xuICBib3JkZXItdG9wOiBub25lO1xuICBmb250LXNpemU6IDExcHg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gIGdhcDogOHB4O1xuYDtcblxuY29uc3QgQ29uZmlybUJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gIGJhY2tncm91bmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2Vjb25kYXJ5QnRuQmdkfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2Vjb25kYXJ5QnRuQ29sb3J9O1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgcGFkZGluZzogM3B4IDhweDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2Vjb25kYXJ5QnRuQmdkSG92ZXJ9O1xuICB9XG5gO1xuXG5leHBvcnQgdHlwZSBMYXllckdyb3VwSGVhZGVyUHJvcHMgPSB7XG4gIGxheWVyR3JvdXA6IExheWVyT3JkZXJHcm91cDtcbiAgaXNMYXllckdyb3VwQ29udGVudE9wZW4/OiBib29sZWFuO1xuICBvblRvZ2dsZUxheWVyR3JvdXBDb250ZW50PzogKCkgPT4gdm9pZDtcbiAgbGlzdGVuZXJzPzogYW55O1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59O1xuXG5MYXllckdyb3VwSGVhZGVyRmFjdG9yeS5kZXBzID0gW1BhbmVsSGVhZGVyQWN0aW9uRmFjdG9yeV07XG5cbmZ1bmN0aW9uIExheWVyR3JvdXBIZWFkZXJGYWN0b3J5KFxuICBQYW5lbEhlYWRlckFjdGlvbjogUmV0dXJuVHlwZTx0eXBlb2YgUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5PlxuKTogUmVhY3QuRkM8TGF5ZXJHcm91cEhlYWRlclByb3BzPiB7XG4gIGNvbnN0IExheWVyR3JvdXBIZWFkZXI6IFJlYWN0LkZDPExheWVyR3JvdXBIZWFkZXJQcm9wcz4gPSAoe1xuICAgIGxheWVyR3JvdXAsXG4gICAgb25Ub2dnbGVMYXllckdyb3VwQ29udGVudCxcbiAgICBpc0xheWVyR3JvdXBDb250ZW50T3BlbixcbiAgICBsaXN0ZW5lcnMsXG4gICAgY2xhc3NOYW1lXG4gIH0pID0+IHtcbiAgICBjb25zdCB7aWQsIGxhYmVsfSA9IGxheWVyR3JvdXA7XG4gICAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICAgIGNvbnN0IFtzaG93Q29uZmlybWF0aW9uLCBzZXRTaG93Q29uZmlybWF0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBjb25maXJtUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcblxuICAgIGNvbnN0IGxheWVyQ291bnQgPSBnZXRGbGF0TGF5ZXJPcmRlcihsYXllckdyb3VwLmxheWVyT3JkZXIpLmxlbmd0aDtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXNob3dDb25maXJtYXRpb24pIHJldHVybjtcbiAgICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChjb25maXJtUmVmLmN1cnJlbnQgJiYgIWNvbmZpcm1SZWYuY3VycmVudC5jb250YWlucyhlLnRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgICAgIHNldFNob3dDb25maXJtYXRpb24oZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKTtcbiAgICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpO1xuICAgIH0sIFtzaG93Q29uZmlybWF0aW9uXSk7XG5cbiAgICBjb25zdCBvblVwZGF0ZUxhYmVsID0gdXNlQ2FsbGJhY2soXG4gICAgICBldmVudCA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHVwZGF0ZUxheWVyR3JvdXAoe2lkLCBvcHRpb25zOiB7bGFiZWw6IGV2ZW50LnRhcmdldC52YWx1ZX19KSk7XG4gICAgICB9LFxuICAgICAgW2Rpc3BhdGNoLCBpZF1cbiAgICApO1xuXG4gICAgY29uc3Qgb25Ub2dnbGVWaXNpYmlsaXR5ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgZGlzcGF0Y2godXBkYXRlTGF5ZXJHcm91cCh7aWQsIG9wdGlvbnM6IHtpc1Zpc2libGU6ICFsYXllckdyb3VwLmlzVmlzaWJsZX19KSk7XG4gICAgfSwgW2Rpc3BhdGNoLCBpZCwgbGF5ZXJHcm91cC5pc1Zpc2libGVdKTtcblxuICAgIGNvbnN0IG9uRGVsZXRlID0gdXNlQ2FsbGJhY2soXG4gICAgICAoZTogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAobGF5ZXJDb3VudCA+IDApIHtcbiAgICAgICAgICBzZXRTaG93Q29uZmlybWF0aW9uKHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRpc3BhdGNoKHJlbW92ZUxheWVyR3JvdXAoe2lkfSkpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW2Rpc3BhdGNoLCBpZCwgbGF5ZXJDb3VudF1cbiAgICApO1xuXG4gICAgY29uc3Qgb25Db25maXJtRGVsZXRlID0gdXNlQ2FsbGJhY2soXG4gICAgICAoZTogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBkaXNwYXRjaChyZW1vdmVMYXllckdyb3VwKHtpZH0pKTtcbiAgICAgICAgc2V0U2hvd0NvbmZpcm1hdGlvbihmYWxzZSk7XG4gICAgICB9LFxuICAgICAgW2Rpc3BhdGNoLCBpZF1cbiAgICApO1xuXG4gICAgY29uc3QgVmlzaWJpbGl0eUljb24gPSBsYXllckdyb3VwLmlzVmlzaWJsZSA/IEV5ZVNlZW4gOiBFeWVVbnNlZW47XG4gICAgY29uc3QgQ29sbGFwc2VJY29uID0gaXNMYXllckdyb3VwQ29udGVudE9wZW4gPyBBcnJvd0Rvd24gOiBBcnJvd1JpZ2h0O1xuXG4gICAgY29uc3Qgc3RvcFByb3BhZ2F0aW9uID0gdXNlQ2FsbGJhY2soKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIDxDb250YWluZXIgY2xhc3NOYW1lPXtjbGFzc05hbWV9IG9uQ2xpY2s9e29uVG9nZ2xlTGF5ZXJHcm91cENvbnRlbnR9PlxuICAgICAgICAgIDxDb3JuZXJUcmlhbmdsZSAkY29sb3I9e2dldEdyb3VwQ29sb3IoaWQpfSAvPlxuICAgICAgICAgIDxMZWZ0U2VjdGlvbj5cbiAgICAgICAgICAgIDxEcmFnSGFuZGxlIGNsYXNzTmFtZT1cImxheWVyX19kcmFnLWhhbmRsZVwiIGxpc3RlbmVycz17bGlzdGVuZXJzfT5cbiAgICAgICAgICAgICAgPFZlcnREb3RzIGhlaWdodD1cIjIwcHhcIiAvPlxuICAgICAgICAgICAgPC9EcmFnSGFuZGxlPlxuICAgICAgICAgICAgPEdyb3VwTGFiZWxJbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIHZhbHVlPXtsYWJlbH1cbiAgICAgICAgICAgICAgb25DbGljaz17c3RvcFByb3BhZ2F0aW9ufVxuICAgICAgICAgICAgICBvbkNoYW5nZT17b25VcGRhdGVMYWJlbH1cbiAgICAgICAgICAgICAgaWQ9e2Ake2lkfTppbnB1dC1ncm91cC1sYWJlbGB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvTGVmdFNlY3Rpb24+XG4gICAgICAgICAgPEFjdGlvbnMgb25DbGljaz17c3RvcFByb3BhZ2F0aW9ufT5cbiAgICAgICAgICAgIDxSZW1vdmVBY3Rpb24+XG4gICAgICAgICAgICAgIDxQYW5lbEhlYWRlckFjdGlvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxheWVyLWdyb3VwX19kZWxldGVcIlxuICAgICAgICAgICAgICAgIGlkPXtgJHtpZH0tZGVsZXRlYH1cbiAgICAgICAgICAgICAgICB0b29sdGlwPVwiUmVtb3ZlIGdyb3VwXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkRlbGV0ZX1cbiAgICAgICAgICAgICAgICBJY29uQ29tcG9uZW50PXtUcmFzaH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvUmVtb3ZlQWN0aW9uPlxuICAgICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxheWVyLWdyb3VwX192aXNpYmlsaXR5LXRvZ2dsZVwiXG4gICAgICAgICAgICAgIGlkPXtgJHtpZH0tdmlzaWJpbGl0eWB9XG4gICAgICAgICAgICAgIHRvb2x0aXA9XCJUb2dnbGUgZ3JvdXAgdmlzaWJpbGl0eVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e29uVG9nZ2xlVmlzaWJpbGl0eX1cbiAgICAgICAgICAgICAgSWNvbkNvbXBvbmVudD17VmlzaWJpbGl0eUljb259XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxheWVyLWdyb3VwX19zZWN0aW9uLXRvZ2dsZVwiXG4gICAgICAgICAgICAgIGlkPXtgJHtpZH0tY29sbGFwc2VgfVxuICAgICAgICAgICAgICB0b29sdGlwPVwiVG9nZ2xlIGdyb3VwIGNvbnRlbnRcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXtvblRvZ2dsZUxheWVyR3JvdXBDb250ZW50fVxuICAgICAgICAgICAgICBJY29uQ29tcG9uZW50PXtDb2xsYXBzZUljb259XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQWN0aW9ucz5cbiAgICAgICAgPC9Db250YWluZXI+XG4gICAgICAgIHtzaG93Q29uZmlybWF0aW9uID8gKFxuICAgICAgICAgIDxDb25maXJtYXRpb25CYXIgcmVmPXtjb25maXJtUmVmfSBvbkNsaWNrPXtzdG9wUHJvcGFnYXRpb259PlxuICAgICAgICAgICAgPHNwYW4+UmVtb3ZlIGdyb3VwIHdpdGggbGF5ZXJzPzwvc3Bhbj5cbiAgICAgICAgICAgIDxDb25maXJtQnV0dG9uIG9uQ2xpY2s9e29uQ29uZmlybURlbGV0ZX0+UmVtb3ZlPC9Db25maXJtQnV0dG9uPlxuICAgICAgICAgIDwvQ29uZmlybWF0aW9uQmFyPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIExheWVyR3JvdXBIZWFkZXI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IExheWVyR3JvdXBIZWFkZXJGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUVBLElBQUFJLFFBQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtBQUVBLElBQUFNLGtCQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxpQkFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsTUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsa0JBQUEsR0FBQU4sc0JBQUEsQ0FBQUgsT0FBQTtBQUE4RCxJQUFBVSxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBZDlEO0FBQ0E7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQXBCLHdCQUFBb0IsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxDQUFBLFNBQUFHLENBQUEsR0FBQVAsQ0FBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFiLENBQUEsRUFBQWMsQ0FBQSxVQUFBRyxDQUFBLEtBQUFBLENBQUEsQ0FBQVYsR0FBQSxJQUFBVSxDQUFBLENBQUFDLEdBQUEsSUFBQVAsTUFBQSxDQUFBQyxjQUFBLENBQUFKLENBQUEsRUFBQU0sQ0FBQSxFQUFBRyxDQUFBLElBQUFULENBQUEsQ0FBQU0sQ0FBQSxJQUFBZCxDQUFBLENBQUFjLENBQUEsWUFBQU4sQ0FBQSxjQUFBUixDQUFBLEVBQUFHLENBQUEsSUFBQUEsQ0FBQSxDQUFBZSxHQUFBLENBQUFsQixDQUFBLEVBQUFRLENBQUEsR0FBQUEsQ0FBQTtBQWVBLElBQU1XLFlBQVksR0FBRyxDQUNuQixTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxDQUNWO0FBRUQsU0FBU0MsYUFBYUEsQ0FBQ0MsRUFBVSxFQUFVO0VBQ3pDLElBQUlDLElBQUksR0FBRyxDQUFDO0VBQ1osS0FBSyxJQUFJTCxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdJLEVBQUUsQ0FBQ0UsTUFBTSxFQUFFTixDQUFDLEVBQUUsRUFBRTtJQUNsQ0ssSUFBSSxHQUFJLENBQUNBLElBQUksSUFBSSxDQUFDLElBQUlBLElBQUksR0FBR0QsRUFBRSxDQUFDRyxVQUFVLENBQUNQLENBQUMsQ0FBQyxHQUFJLENBQUM7RUFDcEQ7RUFDQSxPQUFPRSxZQUFZLENBQUNNLElBQUksQ0FBQ0MsR0FBRyxDQUFDSixJQUFJLENBQUMsR0FBR0gsWUFBWSxDQUFDSSxNQUFNLENBQUM7QUFDM0Q7QUFFQSxJQUFNSSxZQUFZLEdBQUdDLDRCQUFNLENBQUNDLEdBQUcsQ0FBQXRDLGVBQUEsS0FBQUEsZUFBQSxPQUFBdUMsdUJBQUEsOElBTzlCO0FBRUQsSUFBTUMsU0FBUyxHQUFHLElBQUFILDRCQUFNLEVBQUNJLG9DQUFpQixDQUFDLENBQUF4QyxnQkFBQSxLQUFBQSxnQkFBQSxPQUFBc0MsdUJBQUEsd1hBRS9CLFVBQUFHLEtBQUs7RUFBQSxPQUFJQSxLQUFLLENBQUNDLEtBQUssQ0FBQ0Msc0JBQXNCO0FBQUEsR0FFNUMsVUFBQUYsS0FBSztFQUFBLE9BQUlBLEtBQUssQ0FBQ0MsS0FBSyxDQUFDRSxTQUFTO0FBQUEsR0FLbkIsVUFBQUgsS0FBSztFQUFBLE9BQUlBLEtBQUssQ0FBQ0MsS0FBSyxDQUFDRyxvQkFBb0I7QUFBQSxHQUl2QyxVQUFBSixLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDQyxLQUFLLENBQUNHLG9CQUFvQjtBQUFBLEdBSTNEVixZQUFZLENBSWpCO0FBRUQsSUFBTVcsY0FBYyxHQUFHViw0QkFBTSxDQUFDQyxHQUFHLENBQUFwQyxnQkFBQSxLQUFBQSxnQkFBQSxPQUFBcUMsdUJBQUEsNE5BT2YsVUFBQUcsS0FBSztFQUFBLE9BQUlSLElBQUksQ0FBQ2MsS0FBSyxDQUFDTixLQUFLLENBQUNDLEtBQUssQ0FBQ0Msc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0FBQUEsR0FDdkUsVUFBQUYsS0FBSztFQUFBLE9BQUlSLElBQUksQ0FBQ2MsS0FBSyxDQUFDTixLQUFLLENBQUNDLEtBQUssQ0FBQ0Msc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0FBQUEsR0FDL0MsVUFBQUYsS0FBSztFQUFBLE9BQUlBLEtBQUssQ0FBQ08sTUFBTTtBQUFBLEVBQ3RDO0FBRUQsSUFBTUMsT0FBTyxHQUFHYiw0QkFBTSxDQUFDQyxHQUFHLENBQUFuQyxnQkFBQSxLQUFBQSxnQkFBQSxPQUFBb0MsdUJBQUEsZ0pBUXpCO0FBRUQsSUFBTVksV0FBVyxHQUFHZCw0QkFBTSxDQUFDQyxHQUFHLENBQUFsQyxnQkFBQSxLQUFBQSxnQkFBQSxPQUFBbUMsdUJBQUEsc0dBSzdCO0FBRUQsSUFBTWEsZUFBZSxHQUFHLElBQUFmLDRCQUFNLEVBQUNnQiw4QkFBVyxDQUFDLENBQUFoRCxnQkFBQSxLQUFBQSxnQkFBQSxPQUFBa0MsdUJBQUEsZ0VBRzFDO0FBRUQsSUFBTWUsZUFBZSxHQUFHakIsNEJBQU0sQ0FBQ0MsR0FBRyxDQUFBaEMsZ0JBQUEsS0FBQUEsZ0JBQUEsT0FBQWlDLHVCQUFBLHNQQUtaLFVBQUFHLEtBQUs7RUFBQSxPQUFJQSxLQUFLLENBQUNDLEtBQUssQ0FBQ0csb0JBQW9CO0FBQUEsR0FDekMsVUFBQUosS0FBSztFQUFBLE9BQUlBLEtBQUssQ0FBQ0MsS0FBSyxDQUFDRyxvQkFBb0I7QUFBQSxHQUdwRCxVQUFBSixLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDQyxLQUFLLENBQUNFLFNBQVM7QUFBQSxFQUV4QztBQUVELElBQU1VLGFBQWEsR0FBR2xCLDRCQUFNLENBQUNtQixNQUFNLENBQUFqRCxnQkFBQSxLQUFBQSxnQkFBQSxPQUFBZ0MsdUJBQUEsME1BQ25CLFVBQUFHLEtBQUs7RUFBQSxPQUFJQSxLQUFLLENBQUNDLEtBQUssQ0FBQ2MsZUFBZTtBQUFBLEdBQ3pDLFVBQUFmLEtBQUs7RUFBQSxPQUFJQSxLQUFLLENBQUNDLEtBQUssQ0FBQ2UsaUJBQWlCO0FBQUEsR0FPL0IsVUFBQWhCLEtBQUs7RUFBQSxPQUFJQSxLQUFLLENBQUNDLEtBQUssQ0FBQ2dCLG9CQUFvQjtBQUFBLEVBRTFEO0FBVURDLHVCQUF1QixDQUFDQyxJQUFJLEdBQUcsQ0FBQ0MsNkJBQXdCLENBQUM7QUFFekQsU0FBU0YsdUJBQXVCQSxDQUM5QkcsaUJBQThELEVBQzdCO0VBQ2pDLElBQU1DLGdCQUFpRCxHQUFHLFNBQXBEQSxnQkFBaURBLENBQUFDLElBQUEsRUFNakQ7SUFBQSxJQUxKQyxVQUFVLEdBQUFELElBQUEsQ0FBVkMsVUFBVTtNQUNWQyx5QkFBeUIsR0FBQUYsSUFBQSxDQUF6QkUseUJBQXlCO01BQ3pCQyx1QkFBdUIsR0FBQUgsSUFBQSxDQUF2QkcsdUJBQXVCO01BQ3ZCQyxTQUFTLEdBQUFKLElBQUEsQ0FBVEksU0FBUztNQUNUQyxTQUFTLEdBQUFMLElBQUEsQ0FBVEssU0FBUztJQUVULElBQU94QyxFQUFFLEdBQVdvQyxVQUFVLENBQXZCcEMsRUFBRTtNQUFFeUMsS0FBSyxHQUFJTCxVQUFVLENBQW5CSyxLQUFLO0lBQ2hCLElBQU1DLFFBQVEsR0FBRyxJQUFBQyx1QkFBVyxFQUFDLENBQUM7SUFDOUIsSUFBQUMsU0FBQSxHQUFnRCxJQUFBQyxlQUFRLEVBQUMsS0FBSyxDQUFDO01BQUFDLFVBQUEsT0FBQUMsZUFBQSxhQUFBSCxTQUFBO01BQXhESSxnQkFBZ0IsR0FBQUYsVUFBQTtNQUFFRyxtQkFBbUIsR0FBQUgsVUFBQTtJQUM1QyxJQUFNSSxVQUFVLEdBQUcsSUFBQUMsYUFBTSxFQUFpQixJQUFJLENBQUM7SUFFL0MsSUFBTUMsVUFBVSxHQUFHLElBQUFDLDJCQUFpQixFQUFDakIsVUFBVSxDQUFDa0IsVUFBVSxDQUFDLENBQUNwRCxNQUFNO0lBRWxFLElBQUFxRCxnQkFBUyxFQUFDLFlBQU07TUFDZCxJQUFJLENBQUNQLGdCQUFnQixFQUFFO01BQ3ZCLElBQU1RLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBa0JBLENBQUk3RSxDQUFhLEVBQUs7UUFDNUMsSUFBSXVFLFVBQVUsQ0FBQ08sT0FBTyxJQUFJLENBQUNQLFVBQVUsQ0FBQ08sT0FBTyxDQUFDQyxRQUFRLENBQUMvRSxDQUFDLENBQUNnRixNQUFjLENBQUMsRUFBRTtVQUN4RVYsbUJBQW1CLENBQUMsS0FBSyxDQUFDO1FBQzVCO01BQ0YsQ0FBQztNQUNEVyxRQUFRLENBQUNDLGdCQUFnQixDQUFDLFdBQVcsRUFBRUwsa0JBQWtCLENBQUM7TUFDMUQsT0FBTztRQUFBLE9BQU1JLFFBQVEsQ0FBQ0UsbUJBQW1CLENBQUMsV0FBVyxFQUFFTixrQkFBa0IsQ0FBQztNQUFBO0lBQzVFLENBQUMsRUFBRSxDQUFDUixnQkFBZ0IsQ0FBQyxDQUFDO0lBRXRCLElBQU1lLGFBQWEsR0FBRyxJQUFBQyxrQkFBVyxFQUMvQixVQUFBQyxLQUFLLEVBQUk7TUFDUHZCLFFBQVEsQ0FBQyxJQUFBd0IseUJBQWdCLEVBQUM7UUFBQ2xFLEVBQUUsRUFBRkEsRUFBRTtRQUFFbUUsT0FBTyxFQUFFO1VBQUMxQixLQUFLLEVBQUV3QixLQUFLLENBQUNOLE1BQU0sQ0FBQ1M7UUFBSztNQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUMsRUFDRCxDQUFDMUIsUUFBUSxFQUFFMUMsRUFBRSxDQUNmLENBQUM7SUFFRCxJQUFNcUUsa0JBQWtCLEdBQUcsSUFBQUwsa0JBQVcsRUFBQyxZQUFNO01BQzNDdEIsUUFBUSxDQUFDLElBQUF3Qix5QkFBZ0IsRUFBQztRQUFDbEUsRUFBRSxFQUFGQSxFQUFFO1FBQUVtRSxPQUFPLEVBQUU7VUFBQ0csU0FBUyxFQUFFLENBQUNsQyxVQUFVLENBQUNrQztRQUFTO01BQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQyxFQUFFLENBQUM1QixRQUFRLEVBQUUxQyxFQUFFLEVBQUVvQyxVQUFVLENBQUNrQyxTQUFTLENBQUMsQ0FBQztJQUV4QyxJQUFNQyxRQUFRLEdBQUcsSUFBQVAsa0JBQVcsRUFDMUIsVUFBQ3JGLENBQW1CLEVBQUs7TUFDdkJBLENBQUMsQ0FBQzZGLGVBQWUsQ0FBQyxDQUFDO01BQ25CLElBQUlwQixVQUFVLEdBQUcsQ0FBQyxFQUFFO1FBQ2xCSCxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7TUFDM0IsQ0FBQyxNQUFNO1FBQ0xQLFFBQVEsQ0FBQyxJQUFBK0IseUJBQWdCLEVBQUM7VUFBQ3pFLEVBQUUsRUFBRkE7UUFBRSxDQUFDLENBQUMsQ0FBQztNQUNsQztJQUNGLENBQUMsRUFDRCxDQUFDMEMsUUFBUSxFQUFFMUMsRUFBRSxFQUFFb0QsVUFBVSxDQUMzQixDQUFDO0lBRUQsSUFBTXNCLGVBQWUsR0FBRyxJQUFBVixrQkFBVyxFQUNqQyxVQUFDckYsQ0FBbUIsRUFBSztNQUN2QkEsQ0FBQyxDQUFDNkYsZUFBZSxDQUFDLENBQUM7TUFDbkI5QixRQUFRLENBQUMsSUFBQStCLHlCQUFnQixFQUFDO1FBQUN6RSxFQUFFLEVBQUZBO01BQUUsQ0FBQyxDQUFDLENBQUM7TUFDaENpRCxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQyxFQUNELENBQUNQLFFBQVEsRUFBRTFDLEVBQUUsQ0FDZixDQUFDO0lBRUQsSUFBTTJFLGNBQWMsR0FBR3ZDLFVBQVUsQ0FBQ2tDLFNBQVMsR0FBR00sY0FBTyxHQUFHQyxnQkFBUztJQUNqRSxJQUFNQyxZQUFZLEdBQUd4Qyx1QkFBdUIsR0FBR3lDLGdCQUFTLEdBQUdDLGlCQUFVO0lBRXJFLElBQU1SLGVBQWUsR0FBRyxJQUFBUixrQkFBVyxFQUFDLFVBQUNyRixDQUFtQixFQUFLO01BQzNEQSxDQUFDLENBQUM2RixlQUFlLENBQUMsQ0FBQztJQUNyQixDQUFDLEVBQUUsRUFBRSxDQUFDO0lBRU4sb0JBQ0VsSCxNQUFBLFlBQUEySCxhQUFBLDJCQUNFM0gsTUFBQSxZQUFBMkgsYUFBQSxDQUFDdkUsU0FBUztNQUFDOEIsU0FBUyxFQUFFQSxTQUFVO01BQUMwQyxPQUFPLEVBQUU3QztJQUEwQixnQkFDbEUvRSxNQUFBLFlBQUEySCxhQUFBLENBQUNoRSxjQUFjO01BQUNFLE1BQU0sRUFBRXBCLGFBQWEsQ0FBQ0MsRUFBRTtJQUFFLENBQUUsQ0FBQyxlQUM3QzFDLE1BQUEsWUFBQTJILGFBQUEsQ0FBQzVELFdBQVcscUJBQ1YvRCxNQUFBLFlBQUEySCxhQUFBLENBQUNsSCxpQkFBQSxDQUFBb0gsVUFBVTtNQUFDM0MsU0FBUyxFQUFDLG9CQUFvQjtNQUFDRCxTQUFTLEVBQUVBO0lBQVUsZ0JBQzlEakYsTUFBQSxZQUFBMkgsYUFBQSxDQUFDakgsTUFBQSxDQUFBb0gsUUFBUTtNQUFDQyxNQUFNLEVBQUM7SUFBTSxDQUFFLENBQ2YsQ0FBQyxlQUNiL0gsTUFBQSxZQUFBMkgsYUFBQSxDQUFDM0QsZUFBZTtNQUNkZ0UsSUFBSSxFQUFDLE1BQU07TUFDWGxCLEtBQUssRUFBRTNCLEtBQU07TUFDYnlDLE9BQU8sRUFBRVYsZUFBZ0I7TUFDekJlLFFBQVEsRUFBRXhCLGFBQWM7TUFDeEIvRCxFQUFFLEtBQUF3RixNQUFBLENBQUt4RixFQUFFO0lBQXFCLENBQy9CLENBQ1UsQ0FBQyxlQUNkMUMsTUFBQSxZQUFBMkgsYUFBQSxDQUFDN0QsT0FBTztNQUFDOEQsT0FBTyxFQUFFVjtJQUFnQixnQkFDaENsSCxNQUFBLFlBQUEySCxhQUFBLENBQUMzRSxZQUFZLHFCQUNYaEQsTUFBQSxZQUFBMkgsYUFBQSxDQUFDaEQsaUJBQWlCO01BQ2hCTyxTQUFTLEVBQUMscUJBQXFCO01BQy9CeEMsRUFBRSxLQUFBd0YsTUFBQSxDQUFLeEYsRUFBRSxZQUFVO01BQ25CeUYsT0FBTyxFQUFDLGNBQWM7TUFDdEJQLE9BQU8sRUFBRVgsUUFBUztNQUNsQm1CLGFBQWEsRUFBRUM7SUFBTSxDQUN0QixDQUNXLENBQUMsZUFDZnJJLE1BQUEsWUFBQTJILGFBQUEsQ0FBQ2hELGlCQUFpQjtNQUNoQk8sU0FBUyxFQUFDLGdDQUFnQztNQUMxQ3hDLEVBQUUsS0FBQXdGLE1BQUEsQ0FBS3hGLEVBQUUsZ0JBQWM7TUFDdkJ5RixPQUFPLEVBQUMseUJBQXlCO01BQ2pDUCxPQUFPLEVBQUViLGtCQUFtQjtNQUM1QnFCLGFBQWEsRUFBRWY7SUFBZSxDQUMvQixDQUFDLGVBQ0ZySCxNQUFBLFlBQUEySCxhQUFBLENBQUNoRCxpQkFBaUI7TUFDaEJPLFNBQVMsRUFBQyw2QkFBNkI7TUFDdkN4QyxFQUFFLEtBQUF3RixNQUFBLENBQUt4RixFQUFFLGNBQVk7TUFDckJ5RixPQUFPLEVBQUMsc0JBQXNCO01BQzlCUCxPQUFPLEVBQUU3Qyx5QkFBMEI7TUFDbkNxRCxhQUFhLEVBQUVaO0lBQWEsQ0FDN0IsQ0FDTSxDQUNBLENBQUMsRUFDWDlCLGdCQUFnQixnQkFDZjFGLE1BQUEsWUFBQTJILGFBQUEsQ0FBQ3pELGVBQWU7TUFBQ29FLEdBQUcsRUFBRTFDLFVBQVc7TUFBQ2dDLE9BQU8sRUFBRVY7SUFBZ0IsZ0JBQ3pEbEgsTUFBQSxZQUFBMkgsYUFBQSxlQUFNLDJCQUErQixDQUFDLGVBQ3RDM0gsTUFBQSxZQUFBMkgsYUFBQSxDQUFDeEQsYUFBYTtNQUFDeUQsT0FBTyxFQUFFUjtJQUFnQixHQUFDLFFBQXFCLENBQy9DLENBQUMsR0FDaEIsSUFDRCxDQUFDO0VBRVYsQ0FBQztFQUVELE9BQU94QyxnQkFBZ0I7QUFDekI7QUFBQyxJQUFBMkQsUUFBQSxHQUFBQyxPQUFBLGNBRWNoRSx1QkFBdUIiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -2,12 +2,14 @@ import React from 'react';
|
|
|
2
2
|
import { Layer, LayerClassesType } from '@kepler.gl/layers';
|
|
3
3
|
import { Datasets } from '@kepler.gl/table';
|
|
4
4
|
import { UIStateActions, VisStateActions, MapStateActions } from '@kepler.gl/actions';
|
|
5
|
+
import { LayerOrder } from '@kepler.gl/types';
|
|
5
6
|
import LayerPanelFactory from './layer-panel';
|
|
7
|
+
import LayerGroupHeaderFactory from './layer-group-header';
|
|
6
8
|
import { SplitMap } from '@kepler.gl/types';
|
|
7
9
|
export type LayerListProps = {
|
|
8
10
|
datasets: Datasets;
|
|
9
11
|
layers: Layer[];
|
|
10
|
-
layerOrder:
|
|
12
|
+
layerOrder: LayerOrder;
|
|
11
13
|
layerClasses: LayerClassesType;
|
|
12
14
|
isSortable?: boolean;
|
|
13
15
|
splitMap?: SplitMap;
|
|
@@ -15,9 +17,12 @@ export type LayerListProps = {
|
|
|
15
17
|
visStateActions: typeof VisStateActions;
|
|
16
18
|
mapStateActions: typeof MapStateActions;
|
|
17
19
|
};
|
|
18
|
-
export type LayerListFactoryDeps = [
|
|
19
|
-
|
|
20
|
+
export type LayerListFactoryDeps = [
|
|
21
|
+
typeof LayerPanelFactory,
|
|
22
|
+
typeof LayerGroupHeaderFactory
|
|
23
|
+
];
|
|
24
|
+
declare function LayerListFactory(LayerPanel: ReturnType<typeof LayerPanelFactory>, LayerGroupHeader: ReturnType<typeof LayerGroupHeaderFactory>): React.FC<LayerListProps>;
|
|
20
25
|
declare namespace LayerListFactory {
|
|
21
|
-
var deps: (typeof LayerPanelFactory)[];
|
|
26
|
+
var deps: (typeof LayerGroupHeaderFactory | typeof LayerPanelFactory)[];
|
|
22
27
|
}
|
|
23
28
|
export default LayerListFactory;
|