kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
115 lines (114 loc) • 22.1 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _react = _interopRequireWildcard(require("react"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _switch = _interopRequireDefault(require("../../common/switch"));
var _brushConfig = _interopRequireDefault(require("./brush-config"));
var _tooltipConfig = _interopRequireDefault(require("./tooltip-config"));
var _styledComponents2 = require("../../common/styled-components");
var _icons = require("../../common/icons");
var _localization = require("@kepler.gl/localization");
var _templateObject; // SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
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); }
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; }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var StyledInteractionPanel = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n padding-bottom: 6px;\n contain: layout paint;\n"])));
InteractionPanelFactory.deps = [_tooltipConfig["default"], _brushConfig["default"]];
var INTERACTION_CONFIG_ICONS = {
tooltip: _icons.Messages,
geocoder: _icons.Pin,
brush: _icons.Crosshairs,
coordinate: _icons.CursorClick
};
function InteractionPanelFactory(TooltipConfig, BrushConfig) {
var InteractionPanel = function InteractionPanel(_ref) {
var config = _ref.config,
onConfigChange = _ref.onConfigChange,
datasets = _ref.datasets,
setColumnDisplayFormat = _ref.setColumnDisplayFormat,
_ref$interactionConfi = _ref.interactionConfigIcons,
interactionConfigIcons = _ref$interactionConfi === void 0 ? INTERACTION_CONFIG_ICONS : _ref$interactionConfi;
var _useState = (0, _react.useState)(false),
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
isConfigActive = _useState2[0],
setIsConfigAction = _useState2[1];
var _updateConfig = (0, _react.useCallback)(function (newProp) {
onConfigChange(_objectSpread(_objectSpread({}, config), newProp));
}, [onConfigChange, config]);
var onDisplayFormatChange = (0, _react.useCallback)(function (dataId, column, displayFormat) {
setColumnDisplayFormat(dataId, (0, _defineProperty2["default"])({}, column, displayFormat));
}, [setColumnDisplayFormat]);
var togglePanelActive = (0, _react.useCallback)(function () {
setIsConfigAction(!isConfigActive);
}, [setIsConfigAction, isConfigActive]);
var enabled = config.enabled;
var toggleEnableConfig = (0, _react.useCallback)(function () {
_updateConfig({
enabled: !enabled
});
}, [_updateConfig, enabled]);
var onChange = (0, _react.useCallback)(function (newConfig) {
return _updateConfig({
config: newConfig
});
}, [_updateConfig]);
var IconComponent = interactionConfigIcons[config.id];
var template = null;
switch (config.id) {
case 'tooltip':
template = /*#__PURE__*/_react["default"].createElement(TooltipConfig, {
datasets: datasets,
config: config.config,
onChange: onChange,
onDisplayFormatChange: onDisplayFormatChange
});
break;
case 'brush':
template = /*#__PURE__*/_react["default"].createElement(BrushConfig, {
config: config.config,
onChange: onChange
});
break;
default:
break;
}
return /*#__PURE__*/_react["default"].createElement(StyledInteractionPanel, {
className: "interaction-panel"
}, /*#__PURE__*/_react["default"].createElement(_styledComponents2.StyledPanelHeader, {
className: "interaction-panel__header",
onClick: togglePanelActive
}, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelHeaderContent, {
className: "interaction-panel__header__content"
}, /*#__PURE__*/_react["default"].createElement("div", {
className: "interaction-panel__header__icon icon"
}, IconComponent ? /*#__PURE__*/_react["default"].createElement(IconComponent, {
height: "16px"
}) : null), /*#__PURE__*/_react["default"].createElement("div", {
className: "interaction-panel__header__title"
}, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelHeaderTitle, null, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
id: config.label
})))), /*#__PURE__*/_react["default"].createElement("div", {
className: "interaction-panel__header__actions"
}, /*#__PURE__*/_react["default"].createElement(_switch["default"], {
checked: config.enabled,
id: "".concat(config.id, "-toggle"),
onChange: toggleEnableConfig,
secondary: true
}))), config.enabled && template && /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelContent, {
className: "interaction-panel__content"
}, template));
};
return InteractionPanel;
}
var _default = exports["default"] = InteractionPanelFactory;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfc3dpdGNoIiwiX2JydXNoQ29uZmlnIiwiX3Rvb2x0aXBDb25maWciLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfaWNvbnMiLCJfbG9jYWxpemF0aW9uIiwiX3RlbXBsYXRlT2JqZWN0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiU3R5bGVkSW50ZXJhY3Rpb25QYW5lbCIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwiSW50ZXJhY3Rpb25QYW5lbEZhY3RvcnkiLCJkZXBzIiwiVG9vbHRpcENvbmZpZ0ZhY3RvcnkiLCJCcnVzaENvbmZpZ0ZhY3RvcnkiLCJJTlRFUkFDVElPTl9DT05GSUdfSUNPTlMiLCJ0b29sdGlwIiwiTWVzc2FnZXMiLCJnZW9jb2RlciIsIlBpbiIsImJydXNoIiwiQ3Jvc3NoYWlycyIsImNvb3JkaW5hdGUiLCJDdXJzb3JDbGljayIsIlRvb2x0aXBDb25maWciLCJCcnVzaENvbmZpZyIsIkludGVyYWN0aW9uUGFuZWwiLCJfcmVmIiwiY29uZmlnIiwib25Db25maWdDaGFuZ2UiLCJkYXRhc2V0cyIsInNldENvbHVtbkRpc3BsYXlGb3JtYXQiLCJfcmVmJGludGVyYWN0aW9uQ29uZmkiLCJpbnRlcmFjdGlvbkNvbmZpZ0ljb25zIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiaXNDb25maWdBY3RpdmUiLCJzZXRJc0NvbmZpZ0FjdGlvbiIsIl91cGRhdGVDb25maWciLCJ1c2VDYWxsYmFjayIsIm5ld1Byb3AiLCJvbkRpc3BsYXlGb3JtYXRDaGFuZ2UiLCJkYXRhSWQiLCJjb2x1bW4iLCJkaXNwbGF5Rm9ybWF0IiwidG9nZ2xlUGFuZWxBY3RpdmUiLCJlbmFibGVkIiwidG9nZ2xlRW5hYmxlQ29uZmlnIiwib25DaGFuZ2UiLCJuZXdDb25maWciLCJJY29uQ29tcG9uZW50IiwiaWQiLCJ0ZW1wbGF0ZSIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJTdHlsZWRQYW5lbEhlYWRlciIsIm9uQ2xpY2siLCJQYW5lbEhlYWRlckNvbnRlbnQiLCJoZWlnaHQiLCJQYW5lbEhlYWRlclRpdGxlIiwiRm9ybWF0dGVkTWVzc2FnZSIsImxhYmVsIiwiY2hlY2tlZCIsImNvbmNhdCIsInNlY29uZGFyeSIsIlBhbmVsQ29udGVudCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaWRlLXBhbmVsL2ludGVyYWN0aW9uLXBhbmVsL2ludGVyYWN0aW9uLXBhbmVsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VTdGF0ZSwgQ29tcG9uZW50VHlwZSwgUmVhY3RFbGVtZW50LCB1c2VDYWxsYmFja30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgU3dpdGNoIGZyb20gJy4uLy4uL2NvbW1vbi9zd2l0Y2gnO1xuaW1wb3J0IEJydXNoQ29uZmlnRmFjdG9yeSBmcm9tICcuL2JydXNoLWNvbmZpZyc7XG5pbXBvcnQgVG9vbHRpcENvbmZpZ0ZhY3RvcnkgZnJvbSAnLi90b29sdGlwLWNvbmZpZyc7XG5pbXBvcnQge0RhdGFzZXRzfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7SW50ZXJhY3Rpb25Db25maWcsIFZhbHVlT2Z9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtcbiAgc2V0Q29sdW1uRGlzcGxheUZvcm1hdCBhcyBzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0QWN0aW9uLFxuICBBY3Rpb25IYW5kbGVyXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5cbmltcG9ydCB7XG4gIFN0eWxlZFBhbmVsSGVhZGVyLFxuICBQYW5lbEhlYWRlclRpdGxlLFxuICBQYW5lbEhlYWRlckNvbnRlbnQsXG4gIFBhbmVsQ29udGVudFxufSBmcm9tICcuLi8uLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtNZXNzYWdlcywgQ3Jvc3NoYWlycywgQ3Vyc29yQ2xpY2ssIFBpbn0gZnJvbSAnLi4vLi4vY29tbW9uL2ljb25zJztcblxuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdAa2VwbGVyLmdsL2xvY2FsaXphdGlvbic7XG5cbmludGVyZmFjZSBJbnRlcmFjdGlvblBhbmVsUHJvcHMge1xuICBkYXRhc2V0czogRGF0YXNldHM7XG4gIGNvbmZpZzogVmFsdWVPZjxJbnRlcmFjdGlvbkNvbmZpZz47XG4gIG9uQ29uZmlnQ2hhbmdlOiBhbnk7XG4gIGludGVyYWN0aW9uQ29uZmlnSWNvbnM/OiB7XG4gICAgW2tleTogc3RyaW5nXTogUmVhY3QuRWxlbWVudFR5cGU7XG4gIH07XG4gIHNldENvbHVtbkRpc3BsYXlGb3JtYXQ6IEFjdGlvbkhhbmRsZXI8dHlwZW9mIHNldENvbHVtbkRpc3BsYXlGb3JtYXRBY3Rpb24+O1xufVxuXG5jb25zdCBTdHlsZWRJbnRlcmFjdGlvblBhbmVsID0gc3R5bGVkLmRpdmBcbiAgcGFkZGluZy1ib3R0b206IDZweDtcbiAgY29udGFpbjogbGF5b3V0IHBhaW50O1xuYDtcblxuSW50ZXJhY3Rpb25QYW5lbEZhY3RvcnkuZGVwcyA9IFtUb29sdGlwQ29uZmlnRmFjdG9yeSwgQnJ1c2hDb25maWdGYWN0b3J5XTtcblxuY29uc3QgSU5URVJBQ1RJT05fQ09ORklHX0lDT05TOiB7W2tleTogc3RyaW5nXTogUmVhY3QuRWxlbWVudFR5cGV9ID0ge1xuICB0b29sdGlwOiBNZXNzYWdlcyxcbiAgZ2VvY29kZXI6IFBpbixcbiAgYnJ1c2g6IENyb3NzaGFpcnMsXG4gIGNvb3JkaW5hdGU6IEN1cnNvckNsaWNrXG59O1xuXG5mdW5jdGlvbiBJbnRlcmFjdGlvblBhbmVsRmFjdG9yeShcbiAgVG9vbHRpcENvbmZpZzogUmV0dXJuVHlwZTx0eXBlb2YgVG9vbHRpcENvbmZpZ0ZhY3Rvcnk+LFxuICBCcnVzaENvbmZpZzogUmV0dXJuVHlwZTx0eXBlb2YgQnJ1c2hDb25maWdGYWN0b3J5PlxuKTogQ29tcG9uZW50VHlwZTxJbnRlcmFjdGlvblBhbmVsUHJvcHM+IHtcbiAgY29uc3QgSW50ZXJhY3Rpb25QYW5lbDogUmVhY3QuRkM8SW50ZXJhY3Rpb25QYW5lbFByb3BzPiA9ICh7XG4gICAgY29uZmlnLFxuICAgIG9uQ29uZmlnQ2hhbmdlLFxuICAgIGRhdGFzZXRzLFxuICAgIHNldENvbHVtbkRpc3BsYXlGb3JtYXQsXG4gICAgaW50ZXJhY3Rpb25Db25maWdJY29ucyA9IElOVEVSQUNUSU9OX0NPTkZJR19JQ09OU1xuICB9KSA9PiB7XG4gICAgY29uc3QgW2lzQ29uZmlnQWN0aXZlLCBzZXRJc0NvbmZpZ0FjdGlvbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgICBjb25zdCBfdXBkYXRlQ29uZmlnID0gdXNlQ2FsbGJhY2soXG4gICAgICBuZXdQcm9wID0+IHtcbiAgICAgICAgb25Db25maWdDaGFuZ2Uoe1xuICAgICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgICAuLi5uZXdQcm9wXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIFtvbkNvbmZpZ0NoYW5nZSwgY29uZmlnXVxuICAgICk7XG5cbiAgICBjb25zdCBvbkRpc3BsYXlGb3JtYXRDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAgIChkYXRhSWQsIGNvbHVtbiwgZGlzcGxheUZvcm1hdCkgPT4ge1xuICAgICAgICBzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0KGRhdGFJZCwge1tjb2x1bW5dOiBkaXNwbGF5Rm9ybWF0fSk7XG4gICAgICB9LFxuICAgICAgW3NldENvbHVtbkRpc3BsYXlGb3JtYXRdXG4gICAgKTtcblxuICAgIGNvbnN0IHRvZ2dsZVBhbmVsQWN0aXZlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgc2V0SXNDb25maWdBY3Rpb24oIWlzQ29uZmlnQWN0aXZlKTtcbiAgICB9LCBbc2V0SXNDb25maWdBY3Rpb24sIGlzQ29uZmlnQWN0aXZlXSk7XG5cbiAgICBjb25zdCB7ZW5hYmxlZH0gPSBjb25maWc7XG4gICAgY29uc3QgdG9nZ2xlRW5hYmxlQ29uZmlnID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgX3VwZGF0ZUNvbmZpZyh7ZW5hYmxlZDogIWVuYWJsZWR9KTtcbiAgICB9LCBbX3VwZGF0ZUNvbmZpZywgZW5hYmxlZF0pO1xuXG4gICAgY29uc3Qgb25DaGFuZ2UgPSB1c2VDYWxsYmFjayhuZXdDb25maWcgPT4gX3VwZGF0ZUNvbmZpZyh7Y29uZmlnOiBuZXdDb25maWd9KSwgW191cGRhdGVDb25maWddKTtcblxuICAgIGNvbnN0IEljb25Db21wb25lbnQgPSBpbnRlcmFjdGlvbkNvbmZpZ0ljb25zW2NvbmZpZy5pZF07XG5cbiAgICBsZXQgdGVtcGxhdGU6IFJlYWN0RWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgc3dpdGNoIChjb25maWcuaWQpIHtcbiAgICAgIGNhc2UgJ3Rvb2x0aXAnOlxuICAgICAgICB0ZW1wbGF0ZSA9IChcbiAgICAgICAgICA8VG9vbHRpcENvbmZpZ1xuICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgY29uZmlnPXtjb25maWcuY29uZmlnfVxuICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgb25EaXNwbGF5Rm9ybWF0Q2hhbmdlPXtvbkRpc3BsYXlGb3JtYXRDaGFuZ2V9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdicnVzaCc6XG4gICAgICAgIHRlbXBsYXRlID0gPEJydXNoQ29uZmlnIGNvbmZpZz17Y29uZmlnLmNvbmZpZ30gb25DaGFuZ2U9e29uQ2hhbmdlfSAvPjtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZEludGVyYWN0aW9uUGFuZWwgY2xhc3NOYW1lPVwiaW50ZXJhY3Rpb24tcGFuZWxcIj5cbiAgICAgICAgPFN0eWxlZFBhbmVsSGVhZGVyIGNsYXNzTmFtZT1cImludGVyYWN0aW9uLXBhbmVsX19oZWFkZXJcIiBvbkNsaWNrPXt0b2dnbGVQYW5lbEFjdGl2ZX0+XG4gICAgICAgICAgPFBhbmVsSGVhZGVyQ29udGVudCBjbGFzc05hbWU9XCJpbnRlcmFjdGlvbi1wYW5lbF9faGVhZGVyX19jb250ZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImludGVyYWN0aW9uLXBhbmVsX19oZWFkZXJfX2ljb24gaWNvblwiPlxuICAgICAgICAgICAgICB7SWNvbkNvbXBvbmVudCA/IDxJY29uQ29tcG9uZW50IGhlaWdodD1cIjE2cHhcIiAvPiA6IG51bGx9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW50ZXJhY3Rpb24tcGFuZWxfX2hlYWRlcl9fdGl0bGVcIj5cbiAgICAgICAgICAgICAgPFBhbmVsSGVhZGVyVGl0bGU+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9e2NvbmZpZy5sYWJlbH0gLz5cbiAgICAgICAgICAgICAgPC9QYW5lbEhlYWRlclRpdGxlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9QYW5lbEhlYWRlckNvbnRlbnQ+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbnRlcmFjdGlvbi1wYW5lbF9faGVhZGVyX19hY3Rpb25zXCI+XG4gICAgICAgICAgICA8U3dpdGNoXG4gICAgICAgICAgICAgIGNoZWNrZWQ9e2NvbmZpZy5lbmFibGVkfVxuICAgICAgICAgICAgICBpZD17YCR7Y29uZmlnLmlkfS10b2dnbGVgfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17dG9nZ2xlRW5hYmxlQ29uZmlnfVxuICAgICAgICAgICAgICBzZWNvbmRhcnlcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvU3R5bGVkUGFuZWxIZWFkZXI+XG4gICAgICAgIHtjb25maWcuZW5hYmxlZCAmJiB0ZW1wbGF0ZSAmJiAoXG4gICAgICAgICAgPFBhbmVsQ29udGVudCBjbGFzc05hbWU9XCJpbnRlcmFjdGlvbi1wYW5lbF9fY29udGVudFwiPnt0ZW1wbGF0ZX08L1BhbmVsQ29udGVudD5cbiAgICAgICAgKX1cbiAgICAgIDwvU3R5bGVkSW50ZXJhY3Rpb25QYW5lbD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBJbnRlcmFjdGlvblBhbmVsO1xufVxuXG5leHBvcnQgZGVmYXVsdCBJbnRlcmFjdGlvblBhbmVsRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FB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