UNPKG

kepler.gl

Version:

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

100 lines (98 loc) 18.3 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.hexagonVisConfigs = 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 _aggregationLayer = _interopRequireDefault(require("../aggregation-layer")); var _deckglLayers = require("@kepler.gl/deckgl-layers"); var _hexagonLayerIcon = _interopRequireDefault(require("./hexagon-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 hexagonVisConfigs = exports.hexagonVisConfigs = { opacity: 'opacity', worldUnitSize: 'worldUnitSize', resolution: 'resolution', colorRange: 'colorRange', coverage: 'coverage', sizeRange: 'elevationRange', percentile: 'percentile', elevationPercentile: 'elevationPercentile', elevationScale: 'elevationScale', enableElevationZoomFactor: 'enableElevationZoomFactor', fixedHeight: 'fixedHeight', colorAggregation: 'colorAggregation', sizeAggregation: 'sizeAggregation', enable3d: 'enable3d' }; var HexagonLayer = exports["default"] = /*#__PURE__*/function (_AggregationLayer) { function HexagonLayer(props) { var _this; (0, _classCallCheck2["default"])(this, HexagonLayer); _this = _callSuper(this, HexagonLayer, [props]); _this.registerVisConfig(hexagonVisConfigs); _this.visConfigSettings.worldUnitSize.label = 'columns.hexagon.worldUnitSize'; return _this; } (0, _inherits2["default"])(HexagonLayer, _AggregationLayer); return (0, _createClass2["default"])(HexagonLayer, [{ key: "type", get: function get() { return 'hexagon'; } }, { key: "name", get: function get() { return 'Hexbin'; } }, { key: "layerIcon", get: function get() { return _hexagonLayerIcon["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 radius = visConfig.worldUnitSize * 1000; var hoveredObject = this.hasHoveredObject(objectHovered); // Use cellOutline computed in common space by ScaleEnhancedHexagonLayer.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.EnhancedHexagonLayer(_objectSpread(_objectSpread(_objectSpread({}, defaultAggregationLayerProps), data), {}, { wrapLongitude: false, radius: radius }))].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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGF5ZXJzIiwicmVxdWlyZSIsIl9hZ2dyZWdhdGlvbkxheWVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9kZWNrZ2xMYXllcnMiLCJfaGV4YWdvbkxheWVySWNvbiIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJjYWxsIiwiaGV4YWdvblZpc0NvbmZpZ3MiLCJleHBvcnRzIiwib3BhY2l0eSIsIndvcmxkVW5pdFNpemUiLCJyZXNvbHV0aW9uIiwiY29sb3JSYW5nZSIsImNvdmVyYWdlIiwic2l6ZVJhbmdlIiwicGVyY2VudGlsZSIsImVsZXZhdGlvblBlcmNlbnRpbGUiLCJlbGV2YXRpb25TY2FsZSIsImVuYWJsZUVsZXZhdGlvblpvb21GYWN0b3IiLCJmaXhlZEhlaWdodCIsImNvbG9yQWdncmVnYXRpb24iLCJzaXplQWdncmVnYXRpb24iLCJlbmFibGUzZCIsIkhleGFnb25MYXllciIsIl9BZ2dyZWdhdGlvbkxheWVyIiwicHJvcHMiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJyZWdpc3RlclZpc0NvbmZpZyIsInZpc0NvbmZpZ1NldHRpbmdzIiwibGFiZWwiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsImdldCIsIkhleGFnb25MYXllckljb24iLCJ2YWx1ZSIsInJlbmRlckxheWVyIiwib3B0cyIsImRhdGEiLCJvYmplY3RIb3ZlcmVkIiwibWFwU3RhdGUiLCJkZWZhdWx0QWdncmVnYXRpb25MYXllclByb3BzIiwiZ2V0RGVmYXVsdEFnZ3JlZ2F0aW9uTGF5ZXJQcm9wIiwiem9vbUZhY3RvciIsImdldFpvb21GYWN0b3IiLCJ2aXNDb25maWciLCJjb25maWciLCJyYWRpdXMiLCJob3ZlcmVkT2JqZWN0IiwiaGFzSG92ZXJlZE9iamVjdCIsIm91dGxpbmVDb29yZHMiLCJjZWxsT3V0bGluZSIsIkVuaGFuY2VkSGV4YWdvbkxheWVyIiwid3JhcExvbmdpdHVkZSIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJHZW9Kc29uTGF5ZXIiLCJnZXREZWZhdWx0SG92ZXJMYXllclByb3BzIiwidmlzaWJsZSIsInR5cGUiLCJwcm9wZXJ0aWVzIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsImdldExpbmVDb2xvciIsImhpZ2hsaWdodENvbG9yIiwibGluZVdpZHRoU2NhbGUiLCJBZ2dyZWdhdGlvbkxheWVyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hleGFnb24tbGF5ZXIvaGV4YWdvbi1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0dlb0pzb25MYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcbmltcG9ydCBBZ2dyZWdhdGlvbkxheWVyLCB7QWdncmVnYXRpb25MYXllckNvbmZpZ30gZnJvbSAnLi4vYWdncmVnYXRpb24tbGF5ZXInO1xuaW1wb3J0IHtFbmhhbmNlZEhleGFnb25MYXllcn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcbmltcG9ydCBIZXhhZ29uTGF5ZXJJY29uIGZyb20gJy4vaGV4YWdvbi1sYXllci1pY29uJztcbmltcG9ydCB7XG4gIENvbG9yUmFuZ2UsXG4gIFZpc0NvbmZpZ0Jvb2xlYW4sXG4gIFZpc0NvbmZpZ0NvbG9yUmFuZ2UsXG4gIFZpc0NvbmZpZ051bWJlcixcbiAgVmlzQ29uZmlnUmFuZ2UsXG4gIFZpc0NvbmZpZ1NlbGVjdGlvbixcbiAgTWVyZ2Vcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge0FnZ3JlZ2F0aW9uVHlwZXN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuZXhwb3J0IHR5cGUgSGV4YWdvbkxheWVyVmlzQ29uZmlnU2V0dGluZ3MgPSB7XG4gIG9wYWNpdHk6IFZpc0NvbmZpZ051bWJlcjtcbiAgd29ybGRVbml0U2l6ZTogVmlzQ29uZmlnTnVtYmVyO1xuICByZXNvbHV0aW9uOiBWaXNDb25maWdOdW1iZXI7XG4gIGNvbG9yUmFuZ2U6IFZpc0NvbmZpZ0NvbG9yUmFuZ2U7XG4gIGNvdmVyYWdlOiBWaXNDb25maWdOdW1iZXI7XG4gIHNpemVSYW5nZTogVmlzQ29uZmlnUmFuZ2U7XG4gIHBlcmNlbnRpbGU6IFZpc0NvbmZpZ1JhbmdlO1xuICBlbGV2YXRpb25QZXJjZW50aWxlOiBWaXNDb25maWdSYW5nZTtcbiAgZWxldmF0aW9uU2NhbGU6IFZpc0NvbmZpZ051bWJlcjtcbiAgZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvcjogVmlzQ29uZmlnQm9vbGVhbjtcbiAgY29sb3JBZ2dyZWdhdGlvbjogVmlzQ29uZmlnU2VsZWN0aW9uO1xuICBzaXplQWdncmVnYXRpb246IFZpc0NvbmZpZ1NlbGVjdGlvbjtcbiAgZW5hYmxlM2Q6IFZpc0NvbmZpZ0Jvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBIZXhhZ29uTGF5ZXJWaXNDb25maWcgPSB7XG4gIG9wYWNpdHk6IG51bWJlcjtcbiAgd29ybGRVbml0U2l6ZTogbnVtYmVyO1xuICByZXNvbHV0aW9uOiBudW1iZXI7XG4gIGNvbG9yUmFuZ2U6IENvbG9yUmFuZ2U7XG4gIGNvdmVyYWdlOiBudW1iZXI7XG4gIHNpemVSYW5nZTogW251bWJlciwgbnVtYmVyXTtcbiAgcGVyY2VudGlsZTogW251bWJlciwgbnVtYmVyXTtcbiAgZWxldmF0aW9uUGVyY2VudGlsZTogW251bWJlciwgbnVtYmVyXTtcbiAgZWxldmF0aW9uU2NhbGU6IG51bWJlcjtcbiAgZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvcjogYm9vbGVhbjtcbiAgY29sb3JBZ2dyZWdhdGlvbjogQWdncmVnYXRpb25UeXBlcztcbiAgc2l6ZUFnZ3JlZ2F0aW9uOiBBZ2dyZWdhdGlvblR5cGVzO1xuICBlbmFibGUzZDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEhleGFnb25MYXllckNvbmZpZyA9IE1lcmdlPEFnZ3JlZ2F0aW9uTGF5ZXJDb25maWcsIHt2aXNDb25maWc6IEhleGFnb25MYXllclZpc0NvbmZpZ30+O1xuXG5leHBvcnQgY29uc3QgaGV4YWdvblZpc0NvbmZpZ3M6IHtcbiAgb3BhY2l0eTogJ29wYWNpdHknO1xuICB3b3JsZFVuaXRTaXplOiAnd29ybGRVbml0U2l6ZSc7XG4gIHJlc29sdXRpb246ICdyZXNvbHV0aW9uJztcbiAgY29sb3JSYW5nZTogJ2NvbG9yUmFuZ2UnO1xuICBjb3ZlcmFnZTogJ2NvdmVyYWdlJztcbiAgc2l6ZVJhbmdlOiAnZWxldmF0aW9uUmFuZ2UnO1xuICBwZXJjZW50aWxlOiAncGVyY2VudGlsZSc7XG4gIGVsZXZhdGlvblBlcmNlbnRpbGU6ICdlbGV2YXRpb25QZXJjZW50aWxlJztcbiAgZWxldmF0aW9uU2NhbGU6ICdlbGV2YXRpb25TY2FsZSc7XG4gIGVuYWJsZUVsZXZhdGlvblpvb21GYWN0b3I6ICdlbmFibGVFbGV2YXRpb25ab29tRmFjdG9yJztcbiAgZml4ZWRIZWlnaHQ6ICdmaXhlZEhlaWdodCc7XG4gIGNvbG9yQWdncmVnYXRpb246ICdjb2xvckFnZ3JlZ2F0aW9uJztcbiAgc2l6ZUFnZ3JlZ2F0aW9uOiAnc2l6ZUFnZ3JlZ2F0aW9uJztcbiAgZW5hYmxlM2Q6ICdlbmFibGUzZCc7XG59ID0ge1xuICBvcGFjaXR5OiAnb3BhY2l0eScsXG4gIHdvcmxkVW5pdFNpemU6ICd3b3JsZFVuaXRTaXplJyxcbiAgcmVzb2x1dGlvbjogJ3Jlc29sdXRpb24nLFxuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZScsXG4gIGNvdmVyYWdlOiAnY292ZXJhZ2UnLFxuICBzaXplUmFuZ2U6ICdlbGV2YXRpb25SYW5nZScsXG4gIHBlcmNlbnRpbGU6ICdwZXJjZW50aWxlJyxcbiAgZWxldmF0aW9uUGVyY2VudGlsZTogJ2VsZXZhdGlvblBlcmNlbnRpbGUnLFxuICBlbGV2YXRpb25TY2FsZTogJ2VsZXZhdGlvblNjYWxlJyxcbiAgZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvcjogJ2VuYWJsZUVsZXZhdGlvblpvb21GYWN0b3InLFxuICBmaXhlZEhlaWdodDogJ2ZpeGVkSGVpZ2h0JyxcbiAgY29sb3JBZ2dyZWdhdGlvbjogJ2NvbG9yQWdncmVnYXRpb24nLFxuICBzaXplQWdncmVnYXRpb246ICdzaXplQWdncmVnYXRpb24nLFxuICBlbmFibGUzZDogJ2VuYWJsZTNkJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSGV4YWdvbkxheWVyIGV4dGVuZHMgQWdncmVnYXRpb25MYXllciB7XG4gIGRlY2xhcmUgdmlzQ29uZmlnU2V0dGluZ3M6IEhleGFnb25MYXllclZpc0NvbmZpZ1NldHRpbmdzO1xuICBkZWNsYXJlIGNvbmZpZzogSGV4YWdvbkxheWVyQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5yZWdpc3RlclZpc0NvbmZpZyhoZXhhZ29uVmlzQ29uZmlncyk7XG4gICAgdGhpcy52aXNDb25maWdTZXR0aW5ncy53b3JsZFVuaXRTaXplLmxhYmVsID0gJ2NvbHVtbnMuaGV4YWdvbi53b3JsZFVuaXRTaXplJztcbiAgfVxuXG4gIGdldCB0eXBlKCk6ICdoZXhhZ29uJyB7XG4gICAgcmV0dXJuICdoZXhhZ29uJztcbiAgfVxuXG4gIGdldCBuYW1lKCk6ICdIZXhiaW4nIHtcbiAgICByZXR1cm4gJ0hleGJpbic7XG4gIH1cblxuICBnZXQgbGF5ZXJJY29uKCkge1xuICAgIHJldHVybiBIZXhhZ29uTGF5ZXJJY29uO1xuICB9XG5cbiAgcmVuZGVyTGF5ZXIob3B0cykge1xuICAgIGNvbnN0IHtkYXRhLCBvYmplY3RIb3ZlcmVkLCBtYXBTdGF0ZX0gPSBvcHRzO1xuXG4gICAgY29uc3QgZGVmYXVsdEFnZ3JlZ2F0aW9uTGF5ZXJQcm9wcyA9IHRoaXMuZ2V0RGVmYXVsdEFnZ3JlZ2F0aW9uTGF5ZXJQcm9wKG9wdHMpO1xuICAgIGNvbnN0IHpvb21GYWN0b3IgPSB0aGlzLmdldFpvb21GYWN0b3IobWFwU3RhdGUpO1xuICAgIGNvbnN0IHt2aXNDb25maWd9ID0gdGhpcy5jb25maWc7XG4gICAgY29uc3QgcmFkaXVzID0gdmlzQ29uZmlnLndvcmxkVW5pdFNpemUgKiAxMDAwO1xuICAgIGNvbnN0IGhvdmVyZWRPYmplY3QgPSB0aGlzLmhhc0hvdmVyZWRPYmplY3Qob2JqZWN0SG92ZXJlZCk7XG5cbiAgICAvLyBVc2UgY2VsbE91dGxpbmUgY29tcHV0ZWQgaW4gY29tbW9uIHNwYWNlIGJ5IFNjYWxlRW5oYW5jZWRIZXhhZ29uTGF5ZXIuZ2V0UGlja2luZ0luZm9cbiAgICAvLyBzbyB0aGUgb3V0bGluZSBhbGlnbnMgd2l0aCByZW5kZXJlZCBjZWxscyBhdCBhbGwgbGF0aXR1ZGVzLlxuICAgIGNvbnN0IG91dGxpbmVDb29yZHMgPSBob3ZlcmVkT2JqZWN0Py5jZWxsT3V0bGluZTtcblxuICAgIHJldHVybiBbXG4gICAgICBuZXcgRW5oYW5jZWRIZXhhZ29uTGF5ZXIoe1xuICAgICAgICAuLi5kZWZhdWx0QWdncmVnYXRpb25MYXllclByb3BzLFxuICAgICAgICAuLi5kYXRhLFxuICAgICAgICB3cmFwTG9uZ2l0dWRlOiBmYWxzZSxcbiAgICAgICAgcmFkaXVzXG4gICAgICB9KSxcblxuICAgICAgLy8gcmVuZGVyIGFuIG91dGxpbmUgb2YgZWFjaCBoZXhhZ29uIGlmIG5vdCBleHRydWRlZFxuICAgICAgLi4uKG91dGxpbmVDb29yZHMgJiYgIXZpc0NvbmZpZy5lbmFibGUzZFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIG5ldyBHZW9Kc29uTGF5ZXIoe1xuICAgICAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRIb3ZlckxheWVyUHJvcHMoKSxcbiAgICAgICAgICAgICAgdmlzaWJsZTogZGVmYXVsdEFnZ3JlZ2F0aW9uTGF5ZXJQcm9wcy52aXNpYmxlLFxuICAgICAgICAgICAgICB3cmFwTG9uZ2l0dWRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgZGF0YTogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyBhcyBjb25zdCxcbiAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgICAgICAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IG91dGxpbmVDb29yZHMsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJyBhcyBjb25zdFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgZ2V0TGluZUNvbG9yOiB0aGlzLmNvbmZpZy5oaWdobGlnaHRDb2xvcixcbiAgICAgICAgICAgICAgbGluZVdpZHRoU2NhbGU6IDggKiB6b29tRmFjdG9yXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXSlcbiAgICBdO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtB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