kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
126 lines (125 loc) • 20.8 kB
JavaScript
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("react"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _utils = require("@kepler.gl/utils");
var _constants = require("@kepler.gl/constants");
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: _constants.ALL_FIELD_TYPES.integer
}, {
title: '# Set Float Number Format',
id: 'input-float-format',
displayType: _constants.ALL_FIELD_TYPES.real
}, {
title: '# Set Timestamp Format',
id: 'input-datetime-format',
displayType: _constants.ALL_FIELD_TYPES.timestamp
}, {
title: '# Set Date Format',
id: 'input-date-format',
displayType: _constants.ALL_FIELD_TYPES.date
}, {
title: '# Set Boolean Format',
id: 'input-bool-format',
displayType: _constants.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, _utils.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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXRpbHMiLCJfY29uc3RhbnRzIiwiX3N0eWxlZENvbXBvbmVudHMyIiwiX29wdGlvbkRyb3Bkb3duIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJTdHlsZWRDb25maWdQYW5lbCIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsImhlYWRlckNlbGxCYWNrZ3JvdW5kIiwiU3R5bGVkQ29uZmlnUGFuZWxDb250ZW50IiwiU3R5bGVkVGFibGVDb25maWdHcm91cCIsIk51bWJlckZvcm1hdENvbmZpZyIsImV4cG9ydHMiLCJfcmVmIiwidGl0bGUiLCJpZCIsImRlZmF1bHRGb3JtYXQiLCJvcHRpb25zIiwiY29sdW1ucyIsInNldENvbHVtbkRpc3BsYXlGb3JtYXQiLCJvbkNsb3NlIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwic2hvd0Zvcm1hdHRlciIsInNldFNob3dGb3JtYXR0ZXIiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImZvcm1hdCIsInNldEZvcm1hdCIsIm9uU2V0RGlzcGxheUZvcm1hdCIsInVzZUNhbGxiYWNrIiwib3B0aW9uIiwibGFiZWwiLCJmb3JtYXRzIiwicmVkdWNlIiwicHJldiIsImNvbCIsIm5hbWUiLCJjcmVhdGVFbGVtZW50IiwiSW5wdXRMaWdodCIsInR5cGUiLCJ2YWx1ZSIsInJlYWRPbmx5Iiwib25DbGljayIsIkZvcm1hdHRlckRyb3Bkb3duIiwibGVmdCIsInRvcCIsImlzT3BlbmVkIiwiZGlzcGxheUZvcm1hdCIsInNldERpc3BsYXlGb3JtYXQiLCJmb3JtYXRMYWJlbHMiLCJEYXRhVGFibGVDb25maWdGYWN0b3J5IiwiZ2V0Q29sdW1uc0J5RmllbGRUeXBlIiwiY29sTWV0YSIsImZpZWxkVHlwZSIsInJlc3VsdCIsImZvckVhY2giLCJjb2xOYW1lIiwiX2NvbE1ldGEkY29sTmFtZSIsInB1c2giLCJEYXRhVGFibGVDb25maWciLCJfcmVmMiIsImZvcm1hdENvbmZpZ3MiLCJkaXNwbGF5VHlwZSIsIkFMTF9GSUVMRF9UWVBFUyIsImludGVnZXIiLCJyZWFsIiwidGltZXN0YW1wIiwiZGF0ZSIsIm1hcCIsImNvbmZpZyIsImluZGV4IiwiY29uY2F0Iiwia2V5IiwiZ2V0RmllbGRGb3JtYXRMYWJlbHMiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vZGF0YS10YWJsZS9kaXNwbGF5LWZvcm1hdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IHtnZXRGaWVsZEZvcm1hdExhYmVsc30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge0FMTF9GSUVMRF9UWVBFUywgVG9vbHRpcEZvcm1hdH0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtDb2xNZXRhLCBDb2xNZXRhUHJvcHN9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQge0lucHV0TGlnaHR9IGZyb20gJy4uLy4uL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge0Zvcm1hdHRlckRyb3Bkb3dufSBmcm9tICcuL29wdGlvbi1kcm9wZG93bic7XG5cbmNvbnN0IFN0eWxlZENvbmZpZ1BhbmVsID0gc3R5bGVkLmRpdmBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5oZWFkZXJDZWxsQmFja2dyb3VuZH07XG4gIGJveC1zaGFkb3c6IDAgMTBweCAxOHB4IDAgcmdiKDAgMCAwIC8gMzYlKTtcbiAgZmxleC1ncm93OiAxO1xuYDtcbmNvbnN0IFN0eWxlZENvbmZpZ1BhbmVsQ29udGVudCA9IHN0eWxlZC5kaXZgXG4gIHBhZGRpbmc6IDIwcHg7XG4gIG1pbi13aWR0aDogMjMwcHg7XG4gIG1heC1oZWlnaHQ6IDQwMHB4O1xuICBvdmVyZmxvdzogb3ZlcmxheTtcbmA7XG5cbmNvbnN0IFN0eWxlZFRhYmxlQ29uZmlnR3JvdXAgPSBzdHlsZWQuZGl2YFxuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gIGlucHV0IHtcbiAgICBjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDtcbiAgICB3aWR0aDogMTg0cHg7XG4gICAgaGVpZ2h0OiAyMnB4O1xuICB9XG5gO1xuXG5leHBvcnQgdHlwZSBEYXRhVGFibGVDb25maWdQcm9wcyA9IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgZGVmYXVsdEZvcm1hdDogc3RyaW5nO1xuICBvcHRpb25zOiBUb29sdGlwRm9ybWF0W107XG4gIGNvbHVtbnM6IHtuYW1lOiBzdHJpbmd9W107XG4gIGNvbE1ldGE6IENvbE1ldGE7XG4gIHNldENvbHVtbkRpc3BsYXlGb3JtYXQ6IChmb3JtYXRzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSkgPT4gdm9pZDtcbiAgb25DbG9zZTogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCBjb25zdCBOdW1iZXJGb3JtYXRDb25maWc6IFJlYWN0LkZDPERhdGFUYWJsZUNvbmZpZ1Byb3BzPiA9ICh7XG4gIHRpdGxlLFxuICBpZCxcbiAgZGVmYXVsdEZvcm1hdCxcbiAgb3B0aW9ucyxcbiAgY29sdW1ucyxcbiAgc2V0Q29sdW1uRGlzcGxheUZvcm1hdCxcbiAgb25DbG9zZVxufTogRGF0YVRhYmxlQ29uZmlnUHJvcHMpID0+IHtcbiAgY29uc3QgW3Nob3dGb3JtYXR0ZXIsIHNldFNob3dGb3JtYXR0ZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZm9ybWF0LCBzZXRGb3JtYXRdID0gdXNlU3RhdGUoZGVmYXVsdEZvcm1hdCk7XG5cbiAgY29uc3Qgb25TZXREaXNwbGF5Rm9ybWF0ID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wdGlvbjogVG9vbHRpcEZvcm1hdCkgPT4ge1xuICAgICAgc2V0Rm9ybWF0KG9wdGlvbi5sYWJlbCk7XG4gICAgICBjb25zdCBmb3JtYXRzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSA9IGNvbHVtbnMucmVkdWNlKChwcmV2LCBjb2wpID0+IHtcbiAgICAgICAgcHJldltjb2wubmFtZV0gPSBvcHRpb24uZm9ybWF0O1xuICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgIH0sIHt9KTtcbiAgICAgIHNldENvbHVtbkRpc3BsYXlGb3JtYXQoZm9ybWF0cyk7XG4gICAgICBvbkNsb3NlKCk7XG4gICAgfSxcbiAgICBbY29sdW1ucywgc2V0Q29sdW1uRGlzcGxheUZvcm1hdCwgb25DbG9zZV1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRUYWJsZUNvbmZpZ0dyb3VwPlxuICAgICAgPElucHV0TGlnaHRcbiAgICAgICAgaWQ9e2lkfVxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIHZhbHVlPXt0aXRsZX1cbiAgICAgICAgZGF0YS10aXA9e2Zvcm1hdH1cbiAgICAgICAgcmVhZE9ubHlcbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd0Zvcm1hdHRlcih0cnVlKX1cbiAgICAgIC8+XG4gICAgICA8Rm9ybWF0dGVyRHJvcGRvd25cbiAgICAgICAgbGVmdD17LTE4NX1cbiAgICAgICAgdG9wPXsxMH1cbiAgICAgICAgaXNPcGVuZWQ9e3Nob3dGb3JtYXR0ZXJ9XG4gICAgICAgIGRpc3BsYXlGb3JtYXQ9e2Zvcm1hdH1cbiAgICAgICAgc2V0RGlzcGxheUZvcm1hdD17b25TZXREaXNwbGF5Rm9ybWF0fVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93Rm9ybWF0dGVyKGZhbHNlKX1cbiAgICAgICAgZm9ybWF0TGFiZWxzPXtvcHRpb25zfVxuICAgICAgLz5cbiAgICA8L1N0eWxlZFRhYmxlQ29uZmlnR3JvdXA+XG4gICk7XG59O1xuXG5mdW5jdGlvbiBEYXRhVGFibGVDb25maWdGYWN0b3J5KCkge1xuICBjb25zdCBnZXRDb2x1bW5zQnlGaWVsZFR5cGUgPSAoY29sdW1uczogc3RyaW5nW10sIGNvbE1ldGE6IENvbE1ldGEsIGZpZWxkVHlwZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0OiBDb2xNZXRhUHJvcHNbXSA9IFtdO1xuICAgIGNvbHVtbnMuZm9yRWFjaChjb2xOYW1lID0+IHtcbiAgICAgIGlmIChjb2xNZXRhW2NvbE5hbWVdPy50eXBlID09PSBmaWVsZFR5cGUpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goY29sTWV0YVtjb2xOYW1lXSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICBjb25zdCBEYXRhVGFibGVDb25maWcgPSAoe2NvbHVtbnMsIGNvbE1ldGEsIHNldENvbHVtbkRpc3BsYXlGb3JtYXQsIG9uQ2xvc2V9KSA9PiB7XG4gICAgY29uc3QgZm9ybWF0Q29uZmlncyA9IFtcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICcjIFNldCBJbnRlZ2VyIE51bWJlciBGb3JtYXQnLFxuICAgICAgICBpZDogJ2lucHV0LWl0ZWdlci1mb3JtYXQnLFxuICAgICAgICBkaXNwbGF5VHlwZTogQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnIyBTZXQgRmxvYXQgTnVtYmVyIEZvcm1hdCcsXG4gICAgICAgIGlkOiAnaW5wdXQtZmxvYXQtZm9ybWF0JyxcbiAgICAgICAgZGlzcGxheVR5cGU6IEFMTF9GSUVMRF9UWVBFUy5yZWFsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJyMgU2V0IFRpbWVzdGFtcCBGb3JtYXQnLFxuICAgICAgICBpZDogJ2lucHV0LWRhdGV0aW1lLWZvcm1hdCcsXG4gICAgICAgIGRpc3BsYXlUeXBlOiBBTExfRklFTERfVFlQRVMudGltZXN0YW1wXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJyMgU2V0IERhdGUgRm9ybWF0JyxcbiAgICAgICAgaWQ6ICdpbnB1dC1kYXRlLWZvcm1hdCcsXG4gICAgICAgIGRpc3BsYXlUeXBlOiBBTExfRklFTERfVFlQRVMuZGF0ZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICcjIFNldCBCb29sZWFuIEZvcm1hdCcsXG4gICAgICAgIGlkOiAnaW5wdXQtYm9vbC1mb3JtYXQnLFxuICAgICAgICBkaXNwbGF5VHlwZTogQUxMX0ZJRUxEX1RZUEVTLmJvb2xlYW5cbiAgICAgIH1cbiAgICBdO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRDb25maWdQYW5lbD5cbiAgICAgICAgPFN0eWxlZENvbmZpZ1BhbmVsQ29udGVudD5cbiAgICAgICAgICB7Zm9ybWF0Q29uZmlncy5tYXAoKGNvbmZpZywgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxOdW1iZXJGb3JtYXRDb25maWdcbiAgICAgICAgICAgICAgdGl0bGU9e2Ake2NvbmZpZy50aXRsZX1gfVxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICBpZD17Y29uZmlnLmlkfVxuICAgICAgICAgICAgICBkZWZhdWx0Rm9ybWF0PXsnTm9uZSd9XG4gICAgICAgICAgICAgIGNvbE1ldGE9e2NvbE1ldGF9XG4gICAgICAgICAgICAgIG9wdGlvbnM9e2dldEZpZWxkRm9ybWF0TGFiZWxzKGAke2NvbmZpZy5kaXNwbGF5VHlwZX1gKX1cbiAgICAgICAgICAgICAgY29sdW1ucz17Z2V0Q29sdW1uc0J5RmllbGRUeXBlKGNvbHVtbnMsIGNvbE1ldGEsIGAke2NvbmZpZy5kaXNwbGF5VHlwZX1gKX1cbiAgICAgICAgICAgICAgc2V0Q29sdW1uRGlzcGxheUZvcm1hdD17c2V0Q29sdW1uRGlzcGxheUZvcm1hdH1cbiAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU3R5bGVkQ29uZmlnUGFuZWxDb250ZW50PlxuICAgICAgPC9TdHlsZWRDb25maWdQYW5lbD5cbiAgICApO1xuICB9O1xuICByZXR1cm4gRGF0YVRhYmxlQ29uZmlnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBEYXRhVGFibGVDb25maWdGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFVBQUEsR0FBQUosT0FBQTtBQUdBLElBQUFLLGtCQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxlQUFBLEdBQUFOLE9BQUE7QUFBb0QsSUFBQU8sZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQVhwRDtBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEs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
;