kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
94 lines (92 loc) • 17.7 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.gridVisConfigs = exports["default"] = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _layers = require("@deck.gl/layers");
var _deckglLayers = require("@kepler.gl/deckgl-layers");
var _aggregationLayer = _interopRequireDefault(require("../aggregation-layer"));
var _gridLayerIcon = _interopRequireDefault(require("./grid-layer-icon"));
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; }
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } // SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
var gridVisConfigs = exports.gridVisConfigs = {
opacity: 'opacity',
worldUnitSize: 'worldUnitSize',
colorRange: 'colorRange',
coverage: 'coverage',
sizeRange: 'elevationRange',
percentile: 'percentile',
elevationPercentile: 'elevationPercentile',
elevationScale: 'elevationScale',
enableElevationZoomFactor: 'enableElevationZoomFactor',
fixedHeight: 'fixedHeight',
colorAggregation: 'colorAggregation',
sizeAggregation: 'sizeAggregation',
enable3d: 'enable3d'
};
var GridLayer = exports["default"] = /*#__PURE__*/function (_AggregationLayer) {
function GridLayer(props) {
var _this;
(0, _classCallCheck2["default"])(this, GridLayer);
_this = _callSuper(this, GridLayer, [props]);
_this.registerVisConfig(gridVisConfigs);
_this.visConfigSettings.worldUnitSize.label = 'columns.grid.worldUnitSize';
return _this;
}
(0, _inherits2["default"])(GridLayer, _AggregationLayer);
return (0, _createClass2["default"])(GridLayer, [{
key: "type",
get: function get() {
return 'grid';
}
}, {
key: "layerIcon",
get: function get() {
return _gridLayerIcon["default"];
}
}, {
key: "renderLayer",
value: function renderLayer(opts) {
var data = opts.data,
objectHovered = opts.objectHovered,
mapState = opts.mapState;
var defaultAggregationLayerProps = this.getDefaultAggregationLayerProp(opts);
var zoomFactor = this.getZoomFactor(mapState);
var visConfig = this.config.visConfig;
var cellSize = visConfig.worldUnitSize * 1000;
var hoveredObject = this.hasHoveredObject(objectHovered);
// Use cellOutline computed in common space by ScaleEnhancedGridLayer.getPickingInfo
// so the outline aligns with rendered cells at all latitudes.
var outlineCoords = hoveredObject === null || hoveredObject === void 0 ? void 0 : hoveredObject.cellOutline;
return [new _deckglLayers.EnhancedGridLayer(_objectSpread(_objectSpread(_objectSpread({}, defaultAggregationLayerProps), data), {}, {
wrapLongitude: false,
cellSize: cellSize
}))].concat((0, _toConsumableArray2["default"])(outlineCoords && !visConfig.enable3d ? [new _layers.GeoJsonLayer(_objectSpread(_objectSpread({}, this.getDefaultHoverLayerProps()), {}, {
visible: defaultAggregationLayerProps.visible,
wrapLongitude: false,
data: [{
type: 'Feature',
properties: {},
geometry: {
coordinates: outlineCoords,
type: 'LineString'
}
}],
getLineColor: this.config.highlightColor,
lineWidthScale: 8 * zoomFactor
}))] : []));
}
}]);
}(_aggregationLayer["default"]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGF5ZXJzIiwicmVxdWlyZSIsIl9kZWNrZ2xMYXllcnMiLCJfYWdncmVnYXRpb25MYXllciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZ3JpZExheWVySWNvbiIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJjYWxsIiwiZ3JpZFZpc0NvbmZpZ3MiLCJleHBvcnRzIiwib3BhY2l0eSIsIndvcmxkVW5pdFNpemUiLCJjb2xvclJhbmdlIiwiY292ZXJhZ2UiLCJzaXplUmFuZ2UiLCJwZXJjZW50aWxlIiwiZWxldmF0aW9uUGVyY2VudGlsZSIsImVsZXZhdGlvblNjYWxlIiwiZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvciIsImZpeGVkSGVpZ2h0IiwiY29sb3JBZ2dyZWdhdGlvbiIsInNpemVBZ2dyZWdhdGlvbiIsImVuYWJsZTNkIiwiR3JpZExheWVyIiwiX0FnZ3JlZ2F0aW9uTGF5ZXIiLCJwcm9wcyIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsInJlZ2lzdGVyVmlzQ29uZmlnIiwidmlzQ29uZmlnU2V0dGluZ3MiLCJsYWJlbCIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwiZ2V0IiwiR3JpZExheWVySWNvbiIsInZhbHVlIiwicmVuZGVyTGF5ZXIiLCJvcHRzIiwiZGF0YSIsIm9iamVjdEhvdmVyZWQiLCJtYXBTdGF0ZSIsImRlZmF1bHRBZ2dyZWdhdGlvbkxheWVyUHJvcHMiLCJnZXREZWZhdWx0QWdncmVnYXRpb25MYXllclByb3AiLCJ6b29tRmFjdG9yIiwiZ2V0Wm9vbUZhY3RvciIsInZpc0NvbmZpZyIsImNvbmZpZyIsImNlbGxTaXplIiwiaG92ZXJlZE9iamVjdCIsImhhc0hvdmVyZWRPYmplY3QiLCJvdXRsaW5lQ29vcmRzIiwiY2VsbE91dGxpbmUiLCJFbmhhbmNlZEdyaWRMYXllciIsIndyYXBMb25naXR1ZGUiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiR2VvSnNvbkxheWVyIiwiZ2V0RGVmYXVsdEhvdmVyTGF5ZXJQcm9wcyIsInZpc2libGUiLCJ0eXBlIiwicHJvcGVydGllcyIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJnZXRMaW5lQ29sb3IiLCJoaWdobGlnaHRDb2xvciIsImxpbmVXaWR0aFNjYWxlIiwiQWdncmVnYXRpb25MYXllciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ncmlkLWxheWVyL2dyaWQtbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtHZW9Kc29uTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQge0VuaGFuY2VkR3JpZExheWVyfSBmcm9tICdAa2VwbGVyLmdsL2RlY2tnbC1sYXllcnMnO1xuaW1wb3J0IEFnZ3JlZ2F0aW9uTGF5ZXIsIHtBZ2dyZWdhdGlvbkxheWVyQ29uZmlnfSBmcm9tICcuLi9hZ2dyZWdhdGlvbi1sYXllcic7XG5pbXBvcnQgR3JpZExheWVySWNvbiBmcm9tICcuL2dyaWQtbGF5ZXItaWNvbic7XG5pbXBvcnQge1xuICBDb2xvclJhbmdlLFxuICBWaXNDb25maWdCb29sZWFuLFxuICBWaXNDb25maWdDb2xvclJhbmdlLFxuICBWaXNDb25maWdOdW1iZXIsXG4gIFZpc0NvbmZpZ1JhbmdlLFxuICBWaXNDb25maWdTZWxlY3Rpb24sXG4gIE1lcmdlXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtBZ2dyZWdhdGlvblR5cGVzfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmV4cG9ydCB0eXBlIEdyaWRMYXllclZpc0NvbmZpZ1NldHRpbmdzID0ge1xuICBvcGFjaXR5OiBWaXNDb25maWdOdW1iZXI7XG4gIHdvcmxkVW5pdFNpemU6IFZpc0NvbmZpZ051bWJlcjtcbiAgY29sb3JSYW5nZTogVmlzQ29uZmlnQ29sb3JSYW5nZTtcbiAgY292ZXJhZ2U6IFZpc0NvbmZpZ051bWJlcjtcbiAgc2l6ZVJhbmdlOiBWaXNDb25maWdSYW5nZTtcbiAgcGVyY2VudGlsZTogVmlzQ29uZmlnUmFuZ2U7XG4gIGVsZXZhdGlvblBlcmNlbnRpbGU6IFZpc0NvbmZpZ1JhbmdlO1xuICBlbGV2YXRpb25TY2FsZTogVmlzQ29uZmlnTnVtYmVyO1xuICBlbmFibGVFbGV2YXRpb25ab29tRmFjdG9yOiBWaXNDb25maWdCb29sZWFuO1xuICBjb2xvckFnZ3JlZ2F0aW9uOiBWaXNDb25maWdTZWxlY3Rpb247XG4gIHNpemVBZ2dyZWdhdGlvbjogVmlzQ29uZmlnU2VsZWN0aW9uO1xuICBlbmFibGUzZDogVmlzQ29uZmlnQm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEdyaWRMYXllclZpc0NvbmZpZyA9IHtcbiAgb3BhY2l0eTogbnVtYmVyO1xuICB3b3JsZFVuaXRTaXplOiBudW1iZXI7XG4gIGNvbG9yUmFuZ2U6IENvbG9yUmFuZ2U7XG4gIGNvdmVyYWdlOiBudW1iZXI7XG4gIHNpemVSYW5nZTogW251bWJlciwgbnVtYmVyXTtcbiAgcGVyY2VudGlsZTogW251bWJlciwgbnVtYmVyXTtcbiAgZWxldmF0aW9uUGVyY2VudGlsZTogW251bWJlciwgbnVtYmVyXTtcbiAgZWxldmF0aW9uU2NhbGU6IG51bWJlcjtcbiAgZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvcjogYm9vbGVhbjtcbiAgY29sb3JBZ2dyZWdhdGlvbjogQWdncmVnYXRpb25UeXBlcztcbiAgc2l6ZUFnZ3JlZ2F0aW9uOiBBZ2dyZWdhdGlvblR5cGVzO1xuICBlbmFibGUzZDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEdyaWRMYXllckNvbmZpZyA9IE1lcmdlPEFnZ3JlZ2F0aW9uTGF5ZXJDb25maWcsIHt2aXNDb25maWc6IEdyaWRMYXllclZpc0NvbmZpZ30+O1xuXG5leHBvcnQgY29uc3QgZ3JpZFZpc0NvbmZpZ3M6IHtcbiAgb3BhY2l0eTogJ29wYWNpdHknO1xuICB3b3JsZFVuaXRTaXplOiAnd29ybGRVbml0U2l6ZSc7XG4gIGNvbG9yUmFuZ2U6ICdjb2xvclJhbmdlJztcbiAgY292ZXJhZ2U6ICdjb3ZlcmFnZSc7XG4gIHNpemVSYW5nZTogJ2VsZXZhdGlvblJhbmdlJztcbiAgcGVyY2VudGlsZTogJ3BlcmNlbnRpbGUnO1xuICBlbGV2YXRpb25QZXJjZW50aWxlOiAnZWxldmF0aW9uUGVyY2VudGlsZSc7XG4gIGVsZXZhdGlvblNjYWxlOiAnZWxldmF0aW9uU2NhbGUnO1xuICBlbmFibGVFbGV2YXRpb25ab29tRmFjdG9yOiAnZW5hYmxlRWxldmF0aW9uWm9vbUZhY3Rvcic7XG4gIGZpeGVkSGVpZ2h0OiAnZml4ZWRIZWlnaHQnO1xuICBjb2xvckFnZ3JlZ2F0aW9uOiAnY29sb3JBZ2dyZWdhdGlvbic7XG4gIHNpemVBZ2dyZWdhdGlvbjogJ3NpemVBZ2dyZWdhdGlvbic7XG4gIGVuYWJsZTNkOiAnZW5hYmxlM2QnO1xufSA9IHtcbiAgb3BhY2l0eTogJ29wYWNpdHknLFxuICB3b3JsZFVuaXRTaXplOiAnd29ybGRVbml0U2l6ZScsXG4gIGNvbG9yUmFuZ2U6ICdjb2xvclJhbmdlJyxcbiAgY292ZXJhZ2U6ICdjb3ZlcmFnZScsXG4gIHNpemVSYW5nZTogJ2VsZXZhdGlvblJhbmdlJyxcbiAgcGVyY2VudGlsZTogJ3BlcmNlbnRpbGUnLFxuICBlbGV2YXRpb25QZXJjZW50aWxlOiAnZWxldmF0aW9uUGVyY2VudGlsZScsXG4gIGVsZXZhdGlvblNjYWxlOiAnZWxldmF0aW9uU2NhbGUnLFxuICBlbmFibGVFbGV2YXRpb25ab29tRmFjdG9yOiAnZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvcicsXG4gIGZpeGVkSGVpZ2h0OiAnZml4ZWRIZWlnaHQnLFxuICBjb2xvckFnZ3JlZ2F0aW9uOiAnY29sb3JBZ2dyZWdhdGlvbicsXG4gIHNpemVBZ2dyZWdhdGlvbjogJ3NpemVBZ2dyZWdhdGlvbicsXG4gIGVuYWJsZTNkOiAnZW5hYmxlM2QnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHcmlkTGF5ZXIgZXh0ZW5kcyBBZ2dyZWdhdGlvbkxheWVyIHtcbiAgZGVjbGFyZSB2aXNDb25maWdTZXR0aW5nczogR3JpZExheWVyVmlzQ29uZmlnU2V0dGluZ3M7XG4gIGRlY2xhcmUgY29uZmlnOiBHcmlkTGF5ZXJDb25maWc7XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyVmlzQ29uZmlnKGdyaWRWaXNDb25maWdzKTtcbiAgICB0aGlzLnZpc0NvbmZpZ1NldHRpbmdzLndvcmxkVW5pdFNpemUubGFiZWwgPSAnY29sdW1ucy5ncmlkLndvcmxkVW5pdFNpemUnO1xuICB9XG5cbiAgZ2V0IHR5cGUoKTogJ2dyaWQnIHtcbiAgICByZXR1cm4gJ2dyaWQnO1xuICB9XG5cbiAgZ2V0IGxheWVySWNvbigpIHtcbiAgICByZXR1cm4gR3JpZExheWVySWNvbjtcbiAgfVxuXG4gIHJlbmRlckxheWVyKG9wdHMpIHtcbiAgICBjb25zdCB7ZGF0YSwgb2JqZWN0SG92ZXJlZCwgbWFwU3RhdGV9ID0gb3B0cztcblxuICAgIGNvbnN0IGRlZmF1bHRBZ2dyZWdhdGlvbkxheWVyUHJvcHMgPSB0aGlzLmdldERlZmF1bHRBZ2dyZWdhdGlvbkxheWVyUHJvcChvcHRzKTtcbiAgICBjb25zdCB6b29tRmFjdG9yID0gdGhpcy5nZXRab29tRmFjdG9yKG1hcFN0YXRlKTtcbiAgICBjb25zdCB7dmlzQ29uZmlnfSA9IHRoaXMuY29uZmlnO1xuICAgIGNvbnN0IGNlbGxTaXplID0gdmlzQ29uZmlnLndvcmxkVW5pdFNpemUgKiAxMDAwO1xuICAgIGNvbnN0IGhvdmVyZWRPYmplY3QgPSB0aGlzLmhhc0hvdmVyZWRPYmplY3Qob2JqZWN0SG92ZXJlZCk7XG5cbiAgICAvLyBVc2UgY2VsbE91dGxpbmUgY29tcHV0ZWQgaW4gY29tbW9uIHNwYWNlIGJ5IFNjYWxlRW5oYW5jZWRHcmlkTGF5ZXIuZ2V0UGlja2luZ0luZm9cbiAgICAvLyBzbyB0aGUgb3V0bGluZSBhbGlnbnMgd2l0aCByZW5kZXJlZCBjZWxscyBhdCBhbGwgbGF0aXR1ZGVzLlxuICAgIGNvbnN0IG91dGxpbmVDb29yZHMgPSBob3ZlcmVkT2JqZWN0Py5jZWxsT3V0bGluZTtcblxuICAgIHJldHVybiBbXG4gICAgICBuZXcgRW5oYW5jZWRHcmlkTGF5ZXIoe1xuICAgICAgICAuLi5kZWZhdWx0QWdncmVnYXRpb25MYXllclByb3BzLFxuICAgICAgICAuLi5kYXRhLFxuICAgICAgICB3cmFwTG9uZ2l0dWRlOiBmYWxzZSxcbiAgICAgICAgY2VsbFNpemVcbiAgICAgIH0pLFxuXG4gICAgICAvLyByZW5kZXIgYW4gb3V0bGluZSBvZiBlYWNoIGNlbGwgaWYgbm90IGV4dHJ1ZGVkXG4gICAgICAuLi4ob3V0bGluZUNvb3JkcyAmJiAhdmlzQ29uZmlnLmVuYWJsZTNkXG4gICAgICAgID8gW1xuICAgICAgICAgICAgbmV3IEdlb0pzb25MYXllcih7XG4gICAgICAgICAgICAgIC4uLnRoaXMuZ2V0RGVmYXVsdEhvdmVyTGF5ZXJQcm9wcygpLFxuICAgICAgICAgICAgICB2aXNpYmxlOiBkZWZhdWx0QWdncmVnYXRpb25MYXllclByb3BzLnZpc2libGUsXG4gICAgICAgICAgICAgIHdyYXBMb25naXR1ZGU6IGZhbHNlLFxuICAgICAgICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmUnIGFzIGNvbnN0LFxuICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgICAgICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlczogb3V0bGluZUNvb3JkcyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnIGFzIGNvbnN0XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBnZXRMaW5lQ29sb3I6IHRoaXMuY29uZmlnLmhpZ2hsaWdodENvbG9yLFxuICAgICAgICAgICAgICBsaW5lV2lkdGhTY2FsZTogOCAqIHpvb21GYWN0b3JcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKVxuICAgIF07XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxhQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksY0FBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQThDLFNBQUFLLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFB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