UNPKG

kepler.gl

Version:

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

126 lines (125 loc) 21 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.NumberFormatConfig = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireWildcard(require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/node_modules/react")); var _styledComponents = _interopRequireDefault(require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/node_modules/styled-components")); var _src = require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/src/utils/src"); var _src2 = require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/src/constants/src"); var _styledComponents2 = require("../../common/styled-components"); var _optionDropdown = require("./option-dropdown"); var _templateObject, _templateObject2, _templateObject3; // 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 StyledConfigPanel = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n box-shadow: 0 10px 18px 0 rgb(0 0 0 / 36%);\n flex-grow: 1;\n"])), function (props) { return props.theme.headerCellBackground; }); var StyledConfigPanelContent = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 20px;\n min-width: 230px;\n max-height: 400px;\n overflow: overlay;\n"]))); var StyledTableConfigGroup = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n margin-bottom: 10px;\n display: flex;\n align-items: center;\n\n input {\n cursor: pointer !important;\n width: 184px;\n height: 22px;\n }\n"]))); var NumberFormatConfig = exports.NumberFormatConfig = function NumberFormatConfig(_ref) { var title = _ref.title, id = _ref.id, defaultFormat = _ref.defaultFormat, options = _ref.options, columns = _ref.columns, setColumnDisplayFormat = _ref.setColumnDisplayFormat, onClose = _ref.onClose; var _useState = (0, _react.useState)(false), _useState2 = (0, _slicedToArray2["default"])(_useState, 2), showFormatter = _useState2[0], setShowFormatter = _useState2[1]; var _useState3 = (0, _react.useState)(defaultFormat), _useState4 = (0, _slicedToArray2["default"])(_useState3, 2), format = _useState4[0], setFormat = _useState4[1]; var onSetDisplayFormat = (0, _react.useCallback)(function (option) { setFormat(option.label); var formats = columns.reduce(function (prev, col) { prev[col.name] = option.format; return prev; }, {}); setColumnDisplayFormat(formats); onClose(); }, [columns, setColumnDisplayFormat, onClose]); return /*#__PURE__*/_react["default"].createElement(StyledTableConfigGroup, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.InputLight, { id: id, type: "text", value: title, "data-tip": format, readOnly: true, onClick: function onClick() { return setShowFormatter(true); } }), /*#__PURE__*/_react["default"].createElement(_optionDropdown.FormatterDropdown, { left: -185, top: 10, isOpened: showFormatter, displayFormat: format, setDisplayFormat: onSetDisplayFormat, onClose: function onClose() { return setShowFormatter(false); }, formatLabels: options })); }; function DataTableConfigFactory() { var getColumnsByFieldType = function getColumnsByFieldType(columns, colMeta, fieldType) { var result = []; columns.forEach(function (colName) { var _colMeta$colName; if (((_colMeta$colName = colMeta[colName]) === null || _colMeta$colName === void 0 ? void 0 : _colMeta$colName.type) === fieldType) { result.push(colMeta[colName]); } }); return result; }; var DataTableConfig = function DataTableConfig(_ref2) { var columns = _ref2.columns, colMeta = _ref2.colMeta, setColumnDisplayFormat = _ref2.setColumnDisplayFormat, onClose = _ref2.onClose; var formatConfigs = [{ title: '# Set Integer Number Format', id: 'input-iteger-format', displayType: _src2.ALL_FIELD_TYPES.integer }, { title: '# Set Float Number Format', id: 'input-float-format', displayType: _src2.ALL_FIELD_TYPES.real }, { title: '# Set Timestamp Format', id: 'input-datetime-format', displayType: _src2.ALL_FIELD_TYPES.timestamp }, { title: '# Set Date Format', id: 'input-date-format', displayType: _src2.ALL_FIELD_TYPES.date }, { title: '# Set Boolean Format', id: 'input-bool-format', displayType: _src2.ALL_FIELD_TYPES["boolean"] }]; return /*#__PURE__*/_react["default"].createElement(StyledConfigPanel, null, /*#__PURE__*/_react["default"].createElement(StyledConfigPanelContent, null, formatConfigs.map(function (config, index) { return /*#__PURE__*/_react["default"].createElement(NumberFormatConfig, { title: "".concat(config.title), key: index, id: config.id, defaultFormat: 'None', colMeta: colMeta, options: (0, _src.getFieldFormatLabels)("".concat(config.displayType)), columns: getColumnsByFieldType(columns, colMeta, "".concat(config.displayType)), setColumnDisplayFormat: setColumnDisplayFormat, onClose: onClose }); }))); }; return DataTableConfig; } var _default = exports["default"] = DataTableConfigFactory; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfc3JjIiwiX3NyYzIiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfb3B0aW9uRHJvcGRvd24iLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIlN0eWxlZENvbmZpZ1BhbmVsIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwiaGVhZGVyQ2VsbEJhY2tncm91bmQiLCJTdHlsZWRDb25maWdQYW5lbENvbnRlbnQiLCJTdHlsZWRUYWJsZUNvbmZpZ0dyb3VwIiwiTnVtYmVyRm9ybWF0Q29uZmlnIiwiZXhwb3J0cyIsIl9yZWYiLCJ0aXRsZSIsImlkIiwiZGVmYXVsdEZvcm1hdCIsIm9wdGlvbnMiLCJjb2x1bW5zIiwic2V0Q29sdW1uRGlzcGxheUZvcm1hdCIsIm9uQ2xvc2UiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzaG93Rm9ybWF0dGVyIiwic2V0U2hvd0Zvcm1hdHRlciIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZm9ybWF0Iiwic2V0Rm9ybWF0Iiwib25TZXREaXNwbGF5Rm9ybWF0IiwidXNlQ2FsbGJhY2siLCJvcHRpb24iLCJsYWJlbCIsImZvcm1hdHMiLCJyZWR1Y2UiLCJwcmV2IiwiY29sIiwibmFtZSIsImNyZWF0ZUVsZW1lbnQiLCJJbnB1dExpZ2h0IiwidHlwZSIsInZhbHVlIiwicmVhZE9ubHkiLCJvbkNsaWNrIiwiRm9ybWF0dGVyRHJvcGRvd24iLCJsZWZ0IiwidG9wIiwiaXNPcGVuZWQiLCJkaXNwbGF5Rm9ybWF0Iiwic2V0RGlzcGxheUZvcm1hdCIsImZvcm1hdExhYmVscyIsIkRhdGFUYWJsZUNvbmZpZ0ZhY3RvcnkiLCJnZXRDb2x1bW5zQnlGaWVsZFR5cGUiLCJjb2xNZXRhIiwiZmllbGRUeXBlIiwicmVzdWx0IiwiZm9yRWFjaCIsImNvbE5hbWUiLCJfY29sTWV0YSRjb2xOYW1lIiwicHVzaCIsIkRhdGFUYWJsZUNvbmZpZyIsIl9yZWYyIiwiZm9ybWF0Q29uZmlncyIsImRpc3BsYXlUeXBlIiwiQUxMX0ZJRUxEX1RZUEVTIiwiaW50ZWdlciIsInJlYWwiLCJ0aW1lc3RhbXAiLCJkYXRlIiwibWFwIiwiY29uZmlnIiwiaW5kZXgiLCJjb25jYXQiLCJrZXkiLCJnZXRGaWVsZEZvcm1hdExhYmVscyIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc3JjL2NvbW1vbi9kYXRhLXRhYmxlL2Rpc3BsYXktZm9ybWF0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQge2dldEZpZWxkRm9ybWF0TGFiZWxzfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7QUxMX0ZJRUxEX1RZUEVTLCBUb29sdGlwRm9ybWF0fSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0NvbE1ldGEsIENvbE1ldGFQcm9wc30gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7SW5wdXRMaWdodH0gZnJvbSAnLi4vLi4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7Rm9ybWF0dGVyRHJvcGRvd259IGZyb20gJy4vb3B0aW9uLWRyb3Bkb3duJztcblxuY29uc3QgU3R5bGVkQ29uZmlnUGFuZWwgPSBzdHlsZWQuZGl2YFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhlYWRlckNlbGxCYWNrZ3JvdW5kfTtcbiAgYm94LXNoYWRvdzogMCAxMHB4IDE4cHggMCByZ2IoMCAwIDAgLyAzNiUpO1xuICBmbGV4LWdyb3c6IDE7XG5gO1xuY29uc3QgU3R5bGVkQ29uZmlnUGFuZWxDb250ZW50ID0gc3R5bGVkLmRpdmBcbiAgcGFkZGluZzogMjBweDtcbiAgbWluLXdpZHRoOiAyMzBweDtcbiAgbWF4LWhlaWdodDogNDAwcHg7XG4gIG92ZXJmbG93OiBvdmVybGF5O1xuYDtcblxuY29uc3QgU3R5bGVkVGFibGVDb25maWdHcm91cCA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgaW5wdXQge1xuICAgIGN1cnNvcjogcG9pbnRlciAhaW1wb3J0YW50O1xuICAgIHdpZHRoOiAxODRweDtcbiAgICBoZWlnaHQ6IDIycHg7XG4gIH1cbmA7XG5cbmV4cG9ydCB0eXBlIERhdGFUYWJsZUNvbmZpZ1Byb3BzID0ge1xuICB0aXRsZTogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuICBkZWZhdWx0Rm9ybWF0OiBzdHJpbmc7XG4gIG9wdGlvbnM6IFRvb2x0aXBGb3JtYXRbXTtcbiAgY29sdW1uczoge25hbWU6IHN0cmluZ31bXTtcbiAgY29sTWV0YTogQ29sTWV0YTtcbiAgc2V0Q29sdW1uRGlzcGxheUZvcm1hdDogKGZvcm1hdHM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9KSA9PiB2b2lkO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IGNvbnN0IE51bWJlckZvcm1hdENvbmZpZzogUmVhY3QuRkM8RGF0YVRhYmxlQ29uZmlnUHJvcHM+ID0gKHtcbiAgdGl0bGUsXG4gIGlkLFxuICBkZWZhdWx0Rm9ybWF0LFxuICBvcHRpb25zLFxuICBjb2x1bW5zLFxuICBzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0LFxuICBvbkNsb3NlXG59OiBEYXRhVGFibGVDb25maWdQcm9wcykgPT4ge1xuICBjb25zdCBbc2hvd0Zvcm1hdHRlciwgc2V0U2hvd0Zvcm1hdHRlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmb3JtYXQsIHNldEZvcm1hdF0gPSB1c2VTdGF0ZShkZWZhdWx0Rm9ybWF0KTtcblxuICBjb25zdCBvblNldERpc3BsYXlGb3JtYXQgPSB1c2VDYWxsYmFjayhcbiAgICAob3B0aW9uOiBUb29sdGlwRm9ybWF0KSA9PiB7XG4gICAgICBzZXRGb3JtYXQob3B0aW9uLmxhYmVsKTtcbiAgICAgIGNvbnN0IGZvcm1hdHM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0gY29sdW1ucy5yZWR1Y2UoKHByZXYsIGNvbCkgPT4ge1xuICAgICAgICBwcmV2W2NvbC5uYW1lXSA9IG9wdGlvbi5mb3JtYXQ7XG4gICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgfSwge30pO1xuICAgICAgc2V0Q29sdW1uRGlzcGxheUZvcm1hdChmb3JtYXRzKTtcbiAgICAgIG9uQ2xvc2UoKTtcbiAgICB9LFxuICAgIFtjb2x1bW5zLCBzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0LCBvbkNsb3NlXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFRhYmxlQ29uZmlnR3JvdXA+XG4gICAgICA8SW5wdXRMaWdodFxuICAgICAgICBpZD17aWR9XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgdmFsdWU9e3RpdGxlfVxuICAgICAgICBkYXRhLXRpcD17Zm9ybWF0fVxuICAgICAgICByZWFkT25seVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93Rm9ybWF0dGVyKHRydWUpfVxuICAgICAgLz5cbiAgICAgIDxGb3JtYXR0ZXJEcm9wZG93blxuICAgICAgICBsZWZ0PXstMTg1fVxuICAgICAgICB0b3A9ezEwfVxuICAgICAgICBpc09wZW5lZD17c2hvd0Zvcm1hdHRlcn1cbiAgICAgICAgZGlzcGxheUZvcm1hdD17Zm9ybWF0fVxuICAgICAgICBzZXREaXNwbGF5Rm9ybWF0PXtvblNldERpc3BsYXlGb3JtYXR9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dGb3JtYXR0ZXIoZmFsc2UpfVxuICAgICAgICBmb3JtYXRMYWJlbHM9e29wdGlvbnN9XG4gICAgICAvPlxuICAgIDwvU3R5bGVkVGFibGVDb25maWdHcm91cD5cbiAgKTtcbn07XG5cbmZ1bmN0aW9uIERhdGFUYWJsZUNvbmZpZ0ZhY3RvcnkoKSB7XG4gIGNvbnN0IGdldENvbHVtbnNCeUZpZWxkVHlwZSA9IChjb2x1bW5zOiBzdHJpbmdbXSwgY29sTWV0YTogQ29sTWV0YSwgZmllbGRUeXBlOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByZXN1bHQ6IENvbE1ldGFQcm9wc1tdID0gW107XG4gICAgY29sdW1ucy5mb3JFYWNoKGNvbE5hbWUgPT4ge1xuICAgICAgaWYgKGNvbE1ldGFbY29sTmFtZV0/LnR5cGUgPT09IGZpZWxkVHlwZSkge1xuICAgICAgICByZXN1bHQucHVzaChjb2xNZXRhW2NvbE5hbWVdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIGNvbnN0IERhdGFUYWJsZUNvbmZpZyA9ICh7Y29sdW1ucywgY29sTWV0YSwgc2V0Q29sdW1uRGlzcGxheUZvcm1hdCwgb25DbG9zZX0pID0+IHtcbiAgICBjb25zdCBmb3JtYXRDb25maWdzID0gW1xuICAgICAge1xuICAgICAgICB0aXRsZTogJyMgU2V0IEludGVnZXIgTnVtYmVyIEZvcm1hdCcsXG4gICAgICAgIGlkOiAnaW5wdXQtaXRlZ2VyLWZvcm1hdCcsXG4gICAgICAgIGRpc3BsYXlUeXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlclxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICcjIFNldCBGbG9hdCBOdW1iZXIgRm9ybWF0JyxcbiAgICAgICAgaWQ6ICdpbnB1dC1mbG9hdC1mb3JtYXQnLFxuICAgICAgICBkaXNwbGF5VHlwZTogQUxMX0ZJRUxEX1RZUEVTLnJlYWxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnIyBTZXQgVGltZXN0YW1wIEZvcm1hdCcsXG4gICAgICAgIGlkOiAnaW5wdXQtZGF0ZXRpbWUtZm9ybWF0JyxcbiAgICAgICAgZGlzcGxheVR5cGU6IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnIyBTZXQgRGF0ZSBGb3JtYXQnLFxuICAgICAgICBpZDogJ2lucHV0LWRhdGUtZm9ybWF0JyxcbiAgICAgICAgZGlzcGxheVR5cGU6IEFMTF9GSUVMRF9UWVBFUy5kYXRlXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJyMgU2V0IEJvb2xlYW4gRm9ybWF0JyxcbiAgICAgICAgaWQ6ICdpbnB1dC1ib29sLWZvcm1hdCcsXG4gICAgICAgIGRpc3BsYXlUeXBlOiBBTExfRklFTERfVFlQRVMuYm9vbGVhblxuICAgICAgfVxuICAgIF07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZENvbmZpZ1BhbmVsPlxuICAgICAgICA8U3R5bGVkQ29uZmlnUGFuZWxDb250ZW50PlxuICAgICAgICAgIHtmb3JtYXRDb25maWdzLm1hcCgoY29uZmlnLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPE51bWJlckZvcm1hdENvbmZpZ1xuICAgICAgICAgICAgICB0aXRsZT17YCR7Y29uZmlnLnRpdGxlfWB9XG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgIGlkPXtjb25maWcuaWR9XG4gICAgICAgICAgICAgIGRlZmF1bHRGb3JtYXQ9eydOb25lJ31cbiAgICAgICAgICAgICAgY29sTWV0YT17Y29sTWV0YX1cbiAgICAgICAgICAgICAgb3B0aW9ucz17Z2V0RmllbGRGb3JtYXRMYWJlbHMoYCR7Y29uZmlnLmRpc3BsYXlUeXBlfWApfVxuICAgICAgICAgICAgICBjb2x1bW5zPXtnZXRDb2x1bW5zQnlGaWVsZFR5cGUoY29sdW1ucywgY29sTWV0YSwgYCR7Y29uZmlnLmRpc3BsYXlUeXBlfWApfVxuICAgICAgICAgICAgICBzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0PXtzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0fVxuICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9TdHlsZWRDb25maWdQYW5lbENvbnRlbnQ+XG4gICAgICA8L1N0eWxlZENvbmZpZ1BhbmVsPlxuICAgICk7XG4gIH07XG4gIHJldHVybiBEYXRhVGFibGVDb25maWc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IERhdGFUYWJsZUNvbmZpZ0ZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsSUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksS0FBQSxHQUFBSixPQUFBO0FBR0EsSUFBQUssa0JBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGVBQUEsR0FBQU4sT0FBQTtBQUFvRCxJQUFBTyxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBWHBEO0FBQ0E7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZ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