UNPKG

kepler.gl

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

124 lines (123 loc) 20.9 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.DragItem = void 0; var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireWildcard(require("react")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _core = require("@dnd-kit/core"); var _console = _interopRequireDefault(require("global/console")); var _constants = require("@kepler.gl/constants"); var _reducers = require("@kepler.gl/reducers"); var _layerPanelHeader = _interopRequireDefault(require("./side-panel/layer-panel/layer-panel-header")); var _injector = require("./injector"); var _useDndLayers2 = _interopRequireDefault(require("./hooks/use-dnd-layers")); var _useDndEffects2 = _interopRequireDefault(require("./hooks/use-dnd-effects")); 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; } var DragItem = exports.DragItem = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n border-radius: ", "px;\n padding: 5px 10px;\n display: inline;\n"])), function (props) { return props.theme.textColorHl; }, function (props) { return props.theme.radioButtonRadius; }); var nop = function nop() { return undefined; }; DndContextFactory.deps = [_layerPanelHeader["default"]]; function DndContextFactory(LayerPanelHeader) { var LayerPanelOverlay = function LayerPanelOverlay(_ref) { var layer = _ref.layer, datasets = _ref.datasets; var color = layer.config.dataId && datasets[layer.config.dataId] ? datasets[layer.config.dataId].color : null; return /*#__PURE__*/_react["default"].createElement(LayerPanelHeader, { isConfigActive: false, layerId: layer.id, isVisible: true, isValid: true, label: layer.config.label, labelRCGColorValues: color, onToggleVisibility: nop, onResetIsValid: nop, onUpdateLayerLabel: nop, onToggleEnableConfig: nop, onDuplicateLayer: nop, onRemoveLayer: nop, onZoomToLayer: nop, layerType: layer.type, allowDuplicate: false, isDragNDropEnabled: false }); }; var DndContext = function DndContext(_ref2) { var children = _ref2.children, visState = _ref2.visState; var datasets = visState.datasets, layerOrder = visState.layerOrder, layers = visState.layers, effects = visState.effects, effectOrder = visState.effectOrder, splitMaps = visState.splitMaps; var _useDndLayers = (0, _useDndLayers2["default"])(layers, layerOrder), activeLayer = _useDndLayers.activeLayer, onLayerDragStart = _useDndLayers.onDragStart, onLayerDragEnd = _useDndLayers.onDragEnd; var _useDndEffects = (0, _useDndEffects2["default"])(effects, effectOrder), onEffectDragStart = _useDndEffects.onDragStart, onEffectDragEnd = _useDndEffects.onDragEnd; var isSplit = (0, _react.useMemo)(function () { return (splitMaps === null || splitMaps === void 0 ? void 0 : splitMaps.length) > 1; }, [splitMaps]); var dndModifiers = (0, _react.useMemo)(function () { return isSplit ? _constants.DND_EMPTY_MODIFIERS : _constants.DND_MODIFIERS; }, [isSplit]); var onDragStart = (0, _react.useCallback)(function (event) { var _event$active$data; var activeType = (_event$active$data = event.active.data) === null || _event$active$data === void 0 || (_event$active$data = _event$active$data.current) === null || _event$active$data === void 0 ? void 0 : _event$active$data.type; switch (activeType) { case _constants.SORTABLE_LAYER_TYPE: onLayerDragStart(event); break; case _constants.SORTABLE_EFFECT_TYPE: onEffectDragStart(event); break; default: _console["default"].log("activeType ".concat(activeType, " unknown")); } }, [onLayerDragStart, onEffectDragStart]); var onDragEnd = (0, _react.useCallback)(function (event) { var _event$active$data2; var activeType = (_event$active$data2 = event.active.data) === null || _event$active$data2 === void 0 || (_event$active$data2 = _event$active$data2.current) === null || _event$active$data2 === void 0 ? void 0 : _event$active$data2.type; switch (activeType) { case _constants.SORTABLE_LAYER_TYPE: onLayerDragEnd(event); break; case _constants.SORTABLE_EFFECT_TYPE: onEffectDragEnd(event); break; default: _console["default"].log("activeType ".concat(activeType, " unknown")); } }, [onLayerDragEnd, onEffectDragEnd]); return /*#__PURE__*/_react["default"].createElement(_core.DndContext, { onDragStart: onDragStart, onDragEnd: onDragEnd, modifiers: dndModifiers }, children, activeLayer ? /*#__PURE__*/_react["default"].createElement(_core.DragOverlay, { modifiers: dndModifiers, dropAnimation: null }, /*#__PURE__*/_react["default"].createElement(DragItem, null, /*#__PURE__*/_react["default"].createElement(LayerPanelOverlay, { layer: activeLayer, datasets: datasets }))) : null); }; return (0, _injector.withState)([_reducers.visStateLens], function (state) { return state; })(DndContext); } var _default = exports["default"] = DndContextFactory; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY29yZSIsIl9jb25zb2xlIiwiX2NvbnN0YW50cyIsIl9yZWR1Y2VycyIsIl9sYXllclBhbmVsSGVhZGVyIiwiX2luamVjdG9yIiwiX3VzZURuZExheWVyczIiLCJfdXNlRG5kRWZmZWN0czIiLCJfdGVtcGxhdGVPYmplY3QiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJEcmFnSXRlbSIsImV4cG9ydHMiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJ0ZXh0Q29sb3JIbCIsInJhZGlvQnV0dG9uUmFkaXVzIiwibm9wIiwidW5kZWZpbmVkIiwiRG5kQ29udGV4dEZhY3RvcnkiLCJkZXBzIiwiTGF5ZXJQYW5lbEhlYWRlckZhY3RvcnkiLCJMYXllclBhbmVsSGVhZGVyIiwiTGF5ZXJQYW5lbE92ZXJsYXkiLCJfcmVmIiwibGF5ZXIiLCJkYXRhc2V0cyIsImNvbG9yIiwiY29uZmlnIiwiZGF0YUlkIiwiY3JlYXRlRWxlbWVudCIsImlzQ29uZmlnQWN0aXZlIiwibGF5ZXJJZCIsImlkIiwiaXNWaXNpYmxlIiwiaXNWYWxpZCIsImxhYmVsIiwibGFiZWxSQ0dDb2xvclZhbHVlcyIsIm9uVG9nZ2xlVmlzaWJpbGl0eSIsIm9uUmVzZXRJc1ZhbGlkIiwib25VcGRhdGVMYXllckxhYmVsIiwib25Ub2dnbGVFbmFibGVDb25maWciLCJvbkR1cGxpY2F0ZUxheWVyIiwib25SZW1vdmVMYXllciIsIm9uWm9vbVRvTGF5ZXIiLCJsYXllclR5cGUiLCJ0eXBlIiwiYWxsb3dEdXBsaWNhdGUiLCJpc0RyYWdORHJvcEVuYWJsZWQiLCJEbmRDb250ZXh0IiwiX3JlZjIiLCJjaGlsZHJlbiIsInZpc1N0YXRlIiwibGF5ZXJPcmRlciIsImxheWVycyIsImVmZmVjdHMiLCJlZmZlY3RPcmRlciIsInNwbGl0TWFwcyIsIl91c2VEbmRMYXllcnMiLCJ1c2VEbmRMYXllcnMiLCJhY3RpdmVMYXllciIsIm9uTGF5ZXJEcmFnU3RhcnQiLCJvbkRyYWdTdGFydCIsIm9uTGF5ZXJEcmFnRW5kIiwib25EcmFnRW5kIiwiX3VzZURuZEVmZmVjdHMiLCJ1c2VEbmRFZmZlY3RzIiwib25FZmZlY3REcmFnU3RhcnQiLCJvbkVmZmVjdERyYWdFbmQiLCJpc1NwbGl0IiwidXNlTWVtbyIsImxlbmd0aCIsImRuZE1vZGlmaWVycyIsIkRORF9FTVBUWV9NT0RJRklFUlMiLCJETkRfTU9ESUZJRVJTIiwidXNlQ2FsbGJhY2siLCJldmVudCIsIl9ldmVudCRhY3RpdmUkZGF0YSIsImFjdGl2ZVR5cGUiLCJhY3RpdmUiLCJkYXRhIiwiY3VycmVudCIsIlNPUlRBQkxFX0xBWUVSX1RZUEUiLCJTT1JUQUJMRV9FRkZFQ1RfVFlQRSIsIkNvbnNvbGUiLCJsb2ciLCJjb25jYXQiLCJfZXZlbnQkYWN0aXZlJGRhdGEyIiwibW9kaWZpZXJzIiwiRHJhZ092ZXJsYXkiLCJkcm9wQW5pbWF0aW9uIiwid2l0aFN0YXRlIiwidmlzU3RhdGVMZW5zIiwic3RhdGUiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kbmQtY29udGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZU1lbW8sIFByb3BzV2l0aENoaWxkcmVufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7RG5kQ29udGV4dCBhcyBEbmRLaXRDb250ZXh0LCBEcmFnT3ZlcmxheX0gZnJvbSAnQGRuZC1raXQvY29yZSc7XG5pbXBvcnQgQ29uc29sZSBmcm9tICdnbG9iYWwvY29uc29sZSc7XG5cbmltcG9ydCB7XG4gIERORF9FTVBUWV9NT0RJRklFUlMsXG4gIERORF9NT0RJRklFUlMsXG4gIFNPUlRBQkxFX0xBWUVSX1RZUEUsXG4gIFNPUlRBQkxFX0VGRkVDVF9UWVBFXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7dmlzU3RhdGVMZW5zfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbmltcG9ydCB7VmlzU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG5cbmltcG9ydCBMYXllclBhbmVsSGVhZGVyRmFjdG9yeSBmcm9tICcuL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvbGF5ZXItcGFuZWwtaGVhZGVyJztcbmltcG9ydCB7d2l0aFN0YXRlfSBmcm9tICcuL2luamVjdG9yJztcbmltcG9ydCB1c2VEbmRMYXllcnMgZnJvbSAnLi9ob29rcy91c2UtZG5kLWxheWVycyc7XG5pbXBvcnQgdXNlRG5kRWZmZWN0cyBmcm9tICcuL2hvb2tzL3VzZS1kbmQtZWZmZWN0cyc7XG5cbmV4cG9ydCB0eXBlIERuZENvbnRleHRQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPHtcbiAgdmlzU3RhdGU6IFZpc1N0YXRlO1xufT47XG5cbmV4cG9ydCB0eXBlIERuZENvbnRleHRDb21wb25lbnQgPSBSZWFjdC5GQzxEbmRDb250ZXh0UHJvcHM+O1xuXG5leHBvcnQgY29uc3QgRHJhZ0l0ZW0gPSBzdHlsZWQuZGl2YFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gIGJvcmRlci1yYWRpdXM6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucmFkaW9CdXR0b25SYWRpdXN9cHg7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBkaXNwbGF5OiBpbmxpbmU7XG5gO1xuXG5jb25zdCBub3AgPSAoKSA9PiB1bmRlZmluZWQ7XG5cbkRuZENvbnRleHRGYWN0b3J5LmRlcHMgPSBbTGF5ZXJQYW5lbEhlYWRlckZhY3RvcnldO1xuXG5mdW5jdGlvbiBEbmRDb250ZXh0RmFjdG9yeShcbiAgTGF5ZXJQYW5lbEhlYWRlcjogUmV0dXJuVHlwZTx0eXBlb2YgTGF5ZXJQYW5lbEhlYWRlckZhY3Rvcnk+XG4pOiBSZWFjdC5GQzxQcm9wc1dpdGhDaGlsZHJlbj4ge1xuICBjb25zdCBMYXllclBhbmVsT3ZlcmxheSA9ICh7bGF5ZXIsIGRhdGFzZXRzfSkgPT4ge1xuICAgIGNvbnN0IGNvbG9yID1cbiAgICAgIGxheWVyLmNvbmZpZy5kYXRhSWQgJiYgZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF1cbiAgICAgICAgPyBkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXS5jb2xvclxuICAgICAgICA6IG51bGw7XG4gICAgcmV0dXJuIChcbiAgICAgIDxMYXllclBhbmVsSGVhZGVyXG4gICAgICAgIGlzQ29uZmlnQWN0aXZlPXtmYWxzZX1cbiAgICAgICAgbGF5ZXJJZD17bGF5ZXIuaWR9XG4gICAgICAgIGlzVmlzaWJsZT17dHJ1ZX1cbiAgICAgICAgaXNWYWxpZD17dHJ1ZX1cbiAgICAgICAgbGFiZWw9e2xheWVyLmNvbmZpZy5sYWJlbH1cbiAgICAgICAgbGFiZWxSQ0dDb2xvclZhbHVlcz17Y29sb3J9XG4gICAgICAgIG9uVG9nZ2xlVmlzaWJpbGl0eT17bm9wfVxuICAgICAgICBvblJlc2V0SXNWYWxpZD17bm9wfVxuICAgICAgICBvblVwZGF0ZUxheWVyTGFiZWw9e25vcH1cbiAgICAgICAgb25Ub2dnbGVFbmFibGVDb25maWc9e25vcH1cbiAgICAgICAgb25EdXBsaWNhdGVMYXllcj17bm9wfVxuICAgICAgICBvblJlbW92ZUxheWVyPXtub3B9XG4gICAgICAgIG9uWm9vbVRvTGF5ZXI9e25vcH1cbiAgICAgICAgbGF5ZXJUeXBlPXtsYXllci50eXBlfVxuICAgICAgICBhbGxvd0R1cGxpY2F0ZT17ZmFsc2V9XG4gICAgICAgIGlzRHJhZ05Ecm9wRW5hYmxlZD17ZmFsc2V9XG4gICAgICAvPlxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgRG5kQ29udGV4dCA9ICh7Y2hpbGRyZW4sIHZpc1N0YXRlfTogRG5kQ29udGV4dFByb3BzKSA9PiB7XG4gICAgY29uc3Qge2RhdGFzZXRzLCBsYXllck9yZGVyLCBsYXllcnMsIGVmZmVjdHMsIGVmZmVjdE9yZGVyLCBzcGxpdE1hcHN9ID0gdmlzU3RhdGU7XG5cbiAgICBjb25zdCB7XG4gICAgICBhY3RpdmVMYXllcixcbiAgICAgIG9uRHJhZ1N0YXJ0OiBvbkxheWVyRHJhZ1N0YXJ0LFxuICAgICAgb25EcmFnRW5kOiBvbkxheWVyRHJhZ0VuZFxuICAgIH0gPSB1c2VEbmRMYXllcnMobGF5ZXJzLCBsYXllck9yZGVyKTtcbiAgICBjb25zdCB7b25EcmFnU3RhcnQ6IG9uRWZmZWN0RHJhZ1N0YXJ0LCBvbkRyYWdFbmQ6IG9uRWZmZWN0RHJhZ0VuZH0gPSB1c2VEbmRFZmZlY3RzKFxuICAgICAgZWZmZWN0cyxcbiAgICAgIGVmZmVjdE9yZGVyXG4gICAgKTtcblxuICAgIGNvbnN0IGlzU3BsaXQgPSB1c2VNZW1vKCgpID0+IHNwbGl0TWFwcz8ubGVuZ3RoID4gMSwgW3NwbGl0TWFwc10pO1xuICAgIGNvbnN0IGRuZE1vZGlmaWVycyA9IHVzZU1lbW8oKCkgPT4gKGlzU3BsaXQgPyBETkRfRU1QVFlfTU9ESUZJRVJTIDogRE5EX01PRElGSUVSUyksIFtpc1NwbGl0XSk7XG5cbiAgICBjb25zdCBvbkRyYWdTdGFydCA9IHVzZUNhbGxiYWNrKFxuICAgICAgZXZlbnQgPT4ge1xuICAgICAgICBjb25zdCBhY3RpdmVUeXBlID0gZXZlbnQuYWN0aXZlLmRhdGE/LmN1cnJlbnQ/LnR5cGU7XG4gICAgICAgIHN3aXRjaCAoYWN0aXZlVHlwZSkge1xuICAgICAgICAgIGNhc2UgU09SVEFCTEVfTEFZRVJfVFlQRTpcbiAgICAgICAgICAgIG9uTGF5ZXJEcmFnU3RhcnQoZXZlbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBTT1JUQUJMRV9FRkZFQ1RfVFlQRTpcbiAgICAgICAgICAgIG9uRWZmZWN0RHJhZ1N0YXJ0KGV2ZW50KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBDb25zb2xlLmxvZyhgYWN0aXZlVHlwZSAke2FjdGl2ZVR5cGV9IHVua25vd25gKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtvbkxheWVyRHJhZ1N0YXJ0LCBvbkVmZmVjdERyYWdTdGFydF1cbiAgICApO1xuXG4gICAgY29uc3Qgb25EcmFnRW5kID0gdXNlQ2FsbGJhY2soXG4gICAgICBldmVudCA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVR5cGUgPSBldmVudC5hY3RpdmUuZGF0YT8uY3VycmVudD8udHlwZTtcbiAgICAgICAgc3dpdGNoIChhY3RpdmVUeXBlKSB7XG4gICAgICAgICAgY2FzZSBTT1JUQUJMRV9MQVlFUl9UWVBFOlxuICAgICAgICAgICAgb25MYXllckRyYWdFbmQoZXZlbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBTT1JUQUJMRV9FRkZFQ1RfVFlQRTpcbiAgICAgICAgICAgIG9uRWZmZWN0RHJhZ0VuZChldmVudCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgQ29uc29sZS5sb2coYGFjdGl2ZVR5cGUgJHthY3RpdmVUeXBlfSB1bmtub3duYCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbb25MYXllckRyYWdFbmQsIG9uRWZmZWN0RHJhZ0VuZF1cbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxEbmRLaXRDb250ZXh0IG9uRHJhZ1N0YXJ0PXtvbkRyYWdTdGFydH0gb25EcmFnRW5kPXtvbkRyYWdFbmR9IG1vZGlmaWVycz17ZG5kTW9kaWZpZXJzfT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7YWN0aXZlTGF5ZXIgPyAoXG4gICAgICAgICAgPERyYWdPdmVybGF5IG1vZGlmaWVycz17ZG5kTW9kaWZpZXJzfSBkcm9wQW5pbWF0aW9uPXtudWxsfT5cbiAgICAgICAgICAgIDxEcmFnSXRlbT5cbiAgICAgICAgICAgICAgPExheWVyUGFuZWxPdmVybGF5IGxheWVyPXthY3RpdmVMYXllcn0gZGF0YXNldHM9e2RhdGFzZXRzfSAvPlxuICAgICAgICAgICAgPC9EcmFnSXRlbT5cbiAgICAgICAgICA8L0RyYWdPdmVybGF5PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvRG5kS2l0Q29udGV4dD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiB3aXRoU3RhdGUoW3Zpc1N0YXRlTGVuc10sIHN0YXRlID0+IHN0YXRlKShEbmRDb250ZXh0KSBhcyBSZWFjdC5GQzxQcm9wc1dpdGhDaGlsZHJlbj47XG59XG5cbmV4cG9ydCBkZWZhdWx0IERuZENvbnRleHRGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksUUFBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUssVUFBQSxHQUFBTCxPQUFBO0FBTUEsSUFBQU0sU0FBQSxHQUFBTixPQUFBO0FBR0EsSUFBQU8saUJBQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFRLFNBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLGNBQUEsR0FBQVAsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFVLGVBQUEsR0FB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