UNPKG

kepler.gl

Version:

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

131 lines (129 loc) 20.4 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.clusterVisConfigs = void 0; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); 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 _aggregationLayer = _interopRequireDefault(require("../aggregation-layer")); var _layers = require("@deck.gl/layers"); var _deckglLayers = require("@kepler.gl/deckgl-layers"); var _clusterLayerIcon = _interopRequireDefault(require("./cluster-layer-icon")); var _constants = require("@kepler.gl/constants"); var _excluded = ["_filterData"]; 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 clusterVisConfigs = exports.clusterVisConfigs = { opacity: 'opacity', clusterRadius: 'clusterRadius', colorRange: 'colorRange', radiusRange: 'clusterRadiusRange', colorAggregation: 'colorAggregation' }; var ClusterLayer = exports["default"] = /*#__PURE__*/function (_AggregationLayer) { function ClusterLayer(props) { var _this; (0, _classCallCheck2["default"])(this, ClusterLayer); _this = _callSuper(this, ClusterLayer, [props]); _this.registerVisConfig(clusterVisConfigs); // Access data of a point from aggregated clusters, depends on how getClusterer works _this.getPointData = function (pt) { return pt; }; return _this; } (0, _inherits2["default"])(ClusterLayer, _AggregationLayer); return (0, _createClass2["default"])(ClusterLayer, [{ key: "type", get: function get() { return 'cluster'; } }, { key: "layerIcon", get: function get() { return _clusterLayerIcon["default"]; } }, { key: "visualChannels", get: function get() { return { color: { aggregation: 'colorAggregation', channelScaleType: _constants.CHANNEL_SCALES.colorAggr, defaultMeasure: 'property.pointCount', domain: 'colorDomain', field: 'colorField', key: 'color', property: 'color', range: 'colorRange', scale: 'colorScale' } }; } }, { key: "renderLayer", value: function renderLayer(opts) { var visConfig = this.config.visConfig; var data = opts.data, gpuFilter = opts.gpuFilter, objectHovered = opts.objectHovered, mapState = opts.mapState, layerCallbacks = opts.layerCallbacks; var updateTriggers = { getColorValue: { colorField: this.config.colorField, colorAggregation: this.config.visConfig.colorAggregation, colorRange: visConfig.colorRange, colorMap: visConfig.colorRange.colorMap }, filterData: _objectSpread({ filterRange: gpuFilter.filterRange }, gpuFilter.filterValueUpdateTriggers) }; var defaultLayerProps = this.getDefaultDeckLayerProps(opts); var filterData = data._filterData, clusterData = (0, _objectWithoutProperties2["default"])(data, _excluded); var hoveredObject = this.hasHoveredObject(objectHovered); return [new _deckglLayers.DeckGLClusterLayer(_objectSpread(_objectSpread(_objectSpread({}, defaultLayerProps), clusterData), {}, { filterData: filterData, // radius radiusScale: 1, radiusRange: visConfig.radiusRange, clusterRadius: visConfig.clusterRadius, // color colorRange: this.getColorRange(visConfig.colorRange), colorMap: visConfig.colorRange.colorMap, colorScaleType: this.config.colorScale, colorAggregation: visConfig.colorAggregation, zoom: Math.round(mapState.zoom), width: mapState.width, height: mapState.height, // updateTriggers updateTriggers: updateTriggers, // call back from layer after calculate clusters onSetColorDomain: layerCallbacks.onSetLayerDomain }))].concat((0, _toConsumableArray2["default"])(hoveredObject ? [new _layers.ScatterplotLayer({ id: "".concat(this.id, "-hovered"), visible: defaultLayerProps.visible, data: [hoveredObject], getFillColor: this.config.highlightColor, getRadius: function getRadius(d) { return d.scaledRadiusValue; }, radiusScale: 1, pickable: false })] : [])); } }]); }(_aggregationLayer["default"]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYWdncmVnYXRpb25MYXllciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2xheWVycyIsIl9kZWNrZ2xMYXllcnMiLCJfY2x1c3RlckxheWVySWNvbiIsIl9jb25zdGFudHMiLCJfZXhjbHVkZWQiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiY2FsbCIsImNsdXN0ZXJWaXNDb25maWdzIiwiZXhwb3J0cyIsIm9wYWNpdHkiLCJjbHVzdGVyUmFkaXVzIiwiY29sb3JSYW5nZSIsInJhZGl1c1JhbmdlIiwiY29sb3JBZ2dyZWdhdGlvbiIsIkNsdXN0ZXJMYXllciIsIl9BZ2dyZWdhdGlvbkxheWVyIiwicHJvcHMiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJyZWdpc3RlclZpc0NvbmZpZyIsImdldFBvaW50RGF0YSIsInB0IiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJnZXQiLCJDbHVzdGVyTGF5ZXJJY29uIiwiY29sb3IiLCJhZ2dyZWdhdGlvbiIsImNoYW5uZWxTY2FsZVR5cGUiLCJDSEFOTkVMX1NDQUxFUyIsImNvbG9yQWdnciIsImRlZmF1bHRNZWFzdXJlIiwiZG9tYWluIiwiZmllbGQiLCJwcm9wZXJ0eSIsInJhbmdlIiwic2NhbGUiLCJ2YWx1ZSIsInJlbmRlckxheWVyIiwib3B0cyIsInZpc0NvbmZpZyIsImNvbmZpZyIsImRhdGEiLCJncHVGaWx0ZXIiLCJvYmplY3RIb3ZlcmVkIiwibWFwU3RhdGUiLCJsYXllckNhbGxiYWNrcyIsInVwZGF0ZVRyaWdnZXJzIiwiZ2V0Q29sb3JWYWx1ZSIsImNvbG9yRmllbGQiLCJjb2xvck1hcCIsImZpbHRlckRhdGEiLCJmaWx0ZXJSYW5nZSIsImZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMiLCJkZWZhdWx0TGF5ZXJQcm9wcyIsImdldERlZmF1bHREZWNrTGF5ZXJQcm9wcyIsIl9maWx0ZXJEYXRhIiwiY2x1c3RlckRhdGEiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwiaG92ZXJlZE9iamVjdCIsImhhc0hvdmVyZWRPYmplY3QiLCJEZWNrR0xDbHVzdGVyTGF5ZXIiLCJyYWRpdXNTY2FsZSIsImdldENvbG9yUmFuZ2UiLCJjb2xvclNjYWxlVHlwZSIsImNvbG9yU2NhbGUiLCJ6b29tIiwiTWF0aCIsInJvdW5kIiwid2lkdGgiLCJoZWlnaHQiLCJvblNldENvbG9yRG9tYWluIiwib25TZXRMYXllckRvbWFpbiIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJTY2F0dGVycGxvdExheWVyIiwiaWQiLCJ2aXNpYmxlIiwiZ2V0RmlsbENvbG9yIiwiaGlnaGxpZ2h0Q29sb3IiLCJnZXRSYWRpdXMiLCJkIiwic2NhbGVkUmFkaXVzVmFsdWUiLCJwaWNrYWJsZSIsIkFnZ3JlZ2F0aW9uTGF5ZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY2x1c3Rlci1sYXllci9jbHVzdGVyLWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBBZ2dyZWdhdGlvbkxheWVyLCB7QWdncmVnYXRpb25MYXllckNvbmZpZ30gZnJvbSAnLi4vYWdncmVnYXRpb24tbGF5ZXInO1xuaW1wb3J0IHtTY2F0dGVycGxvdExheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuXG5pbXBvcnQge0RlY2tHTENsdXN0ZXJMYXllcn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcbmltcG9ydCBDbHVzdGVyTGF5ZXJJY29uIGZyb20gJy4vY2x1c3Rlci1sYXllci1pY29uJztcbmltcG9ydCB7XG4gIENvbG9yUmFuZ2UsXG4gIE1lcmdlLFxuICBWaXNDb25maWdDb2xvclJhbmdlLFxuICBWaXNDb25maWdOdW1iZXIsXG4gIFZpc0NvbmZpZ1JhbmdlLFxuICBWaXNDb25maWdTZWxlY3Rpb25cbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge0NIQU5ORUxfU0NBTEVTLCBBZ2dyZWdhdGlvblR5cGVzfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge1Zpc3VhbENoYW5uZWxzfSBmcm9tICcuLi9iYXNlLWxheWVyJztcblxuZXhwb3J0IHR5cGUgQ2x1c3RlckxheWVyVmlzQ29uZmlnU2V0dGluZ3MgPSB7XG4gIG9wYWNpdHk6IFZpc0NvbmZpZ051bWJlcjtcbiAgY2x1c3RlclJhZGl1czogVmlzQ29uZmlnTnVtYmVyO1xuICBjb2xvclJhbmdlOiBWaXNDb25maWdDb2xvclJhbmdlO1xuICByYWRpdXNSYW5nZTogVmlzQ29uZmlnUmFuZ2U7XG4gIGNvbG9yQWdncmVnYXRpb246IFZpc0NvbmZpZ1NlbGVjdGlvbjtcbn07XG5cbmV4cG9ydCB0eXBlIENsdXN0ZXJMYXllclZpc0NvbmZpZyA9IHtcbiAgb3BhY2l0eTogbnVtYmVyO1xuICBjbHVzdGVyUmFkaXVzOiBudW1iZXI7XG4gIGNvbG9yUmFuZ2U6IENvbG9yUmFuZ2U7XG4gIHJhZGl1c1JhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xuICBjb2xvckFnZ3JlZ2F0aW9uOiBBZ2dyZWdhdGlvblR5cGVzO1xufTtcblxuZXhwb3J0IHR5cGUgQ2x1c3RlckxheWVyQ29uZmlnID0gTWVyZ2U8QWdncmVnYXRpb25MYXllckNvbmZpZywge3Zpc0NvbmZpZzogQ2x1c3RlckxheWVyVmlzQ29uZmlnfT47XG5cbmV4cG9ydCBjb25zdCBjbHVzdGVyVmlzQ29uZmlnczoge1xuICBvcGFjaXR5OiAnb3BhY2l0eSc7XG4gIGNsdXN0ZXJSYWRpdXM6ICdjbHVzdGVyUmFkaXVzJztcbiAgY29sb3JSYW5nZTogJ2NvbG9yUmFuZ2UnO1xuICByYWRpdXNSYW5nZTogJ2NsdXN0ZXJSYWRpdXNSYW5nZSc7XG4gIGNvbG9yQWdncmVnYXRpb246ICdjb2xvckFnZ3JlZ2F0aW9uJztcbn0gPSB7XG4gIG9wYWNpdHk6ICdvcGFjaXR5JyxcbiAgY2x1c3RlclJhZGl1czogJ2NsdXN0ZXJSYWRpdXMnLFxuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZScsXG4gIHJhZGl1c1JhbmdlOiAnY2x1c3RlclJhZGl1c1JhbmdlJyxcbiAgY29sb3JBZ2dyZWdhdGlvbjogJ2NvbG9yQWdncmVnYXRpb24nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDbHVzdGVyTGF5ZXIgZXh0ZW5kcyBBZ2dyZWdhdGlvbkxheWVyIHtcbiAgZGVjbGFyZSB2aXNDb25maWdTZXR0aW5nczogQ2x1c3RlckxheWVyVmlzQ29uZmlnU2V0dGluZ3M7XG4gIGRlY2xhcmUgY29uZmlnOiBDbHVzdGVyTGF5ZXJDb25maWc7XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5yZWdpc3RlclZpc0NvbmZpZyhjbHVzdGVyVmlzQ29uZmlncyk7XG5cbiAgICAvLyBBY2Nlc3MgZGF0YSBvZiBhIHBvaW50IGZyb20gYWdncmVnYXRlZCBjbHVzdGVycywgZGVwZW5kcyBvbiBob3cgZ2V0Q2x1c3RlcmVyIHdvcmtzXG4gICAgdGhpcy5nZXRQb2ludERhdGEgPSBwdCA9PiBwdDtcbiAgfVxuXG4gIGdldCB0eXBlKCk6ICdjbHVzdGVyJyB7XG4gICAgcmV0dXJuICdjbHVzdGVyJztcbiAgfVxuXG4gIGdldCBsYXllckljb24oKSB7XG4gICAgcmV0dXJuIENsdXN0ZXJMYXllckljb247XG4gIH1cblxuICBnZXQgdmlzdWFsQ2hhbm5lbHMoKTogVmlzdWFsQ2hhbm5lbHMge1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjoge1xuICAgICAgICBhZ2dyZWdhdGlvbjogJ2NvbG9yQWdncmVnYXRpb24nLFxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlOiBDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3IsXG4gICAgICAgIGRlZmF1bHRNZWFzdXJlOiAncHJvcGVydHkucG9pbnRDb3VudCcsXG4gICAgICAgIGRvbWFpbjogJ2NvbG9yRG9tYWluJyxcbiAgICAgICAgZmllbGQ6ICdjb2xvckZpZWxkJyxcbiAgICAgICAga2V5OiAnY29sb3InLFxuICAgICAgICBwcm9wZXJ0eTogJ2NvbG9yJyxcbiAgICAgICAgcmFuZ2U6ICdjb2xvclJhbmdlJyxcbiAgICAgICAgc2NhbGU6ICdjb2xvclNjYWxlJ1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICByZW5kZXJMYXllcihvcHRzKSB7XG4gICAgY29uc3Qge3Zpc0NvbmZpZ30gPSB0aGlzLmNvbmZpZztcbiAgICBjb25zdCB7ZGF0YSwgZ3B1RmlsdGVyLCBvYmplY3RIb3ZlcmVkLCBtYXBTdGF0ZSwgbGF5ZXJDYWxsYmFja3N9ID0gb3B0cztcblxuICAgIGNvbnN0IHVwZGF0ZVRyaWdnZXJzID0ge1xuICAgICAgZ2V0Q29sb3JWYWx1ZToge1xuICAgICAgICBjb2xvckZpZWxkOiB0aGlzLmNvbmZpZy5jb2xvckZpZWxkLFxuICAgICAgICBjb2xvckFnZ3JlZ2F0aW9uOiB0aGlzLmNvbmZpZy52aXNDb25maWcuY29sb3JBZ2dyZWdhdGlvbixcbiAgICAgICAgY29sb3JSYW5nZTogdmlzQ29uZmlnLmNvbG9yUmFuZ2UsXG4gICAgICAgIGNvbG9yTWFwOiB2aXNDb25maWcuY29sb3JSYW5nZS5jb2xvck1hcFxuICAgICAgfSxcbiAgICAgIGZpbHRlckRhdGE6IHtcbiAgICAgICAgZmlsdGVyUmFuZ2U6IGdwdUZpbHRlci5maWx0ZXJSYW5nZSxcbiAgICAgICAgLi4uZ3B1RmlsdGVyLmZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnNcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgZGVmYXVsdExheWVyUHJvcHMgPSB0aGlzLmdldERlZmF1bHREZWNrTGF5ZXJQcm9wcyhvcHRzKTtcblxuICAgIGNvbnN0IHtfZmlsdGVyRGF0YTogZmlsdGVyRGF0YSwgLi4uY2x1c3RlckRhdGF9ID0gZGF0YTtcbiAgICBjb25zdCBob3ZlcmVkT2JqZWN0ID0gdGhpcy5oYXNIb3ZlcmVkT2JqZWN0KG9iamVjdEhvdmVyZWQpO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIG5ldyBEZWNrR0xDbHVzdGVyTGF5ZXIoe1xuICAgICAgICAuLi5kZWZhdWx0TGF5ZXJQcm9wcyxcbiAgICAgICAgLi4uY2x1c3RlckRhdGEsXG4gICAgICAgIGZpbHRlckRhdGEsXG5cbiAgICAgICAgLy8gcmFkaXVzXG4gICAgICAgIHJhZGl1c1NjYWxlOiAxLFxuICAgICAgICByYWRpdXNSYW5nZTogdmlzQ29uZmlnLnJhZGl1c1JhbmdlLFxuICAgICAgICBjbHVzdGVyUmFkaXVzOiB2aXNDb25maWcuY2x1c3RlclJhZGl1cyxcblxuICAgICAgICAvLyBjb2xvclxuICAgICAgICBjb2xvclJhbmdlOiB0aGlzLmdldENvbG9yUmFuZ2UodmlzQ29uZmlnLmNvbG9yUmFuZ2UpLFxuICAgICAgICBjb2xvck1hcDogdmlzQ29uZmlnLmNvbG9yUmFuZ2UuY29sb3JNYXAsXG4gICAgICAgIGNvbG9yU2NhbGVUeXBlOiB0aGlzLmNvbmZpZy5jb2xvclNjYWxlLFxuICAgICAgICBjb2xvckFnZ3JlZ2F0aW9uOiB2aXNDb25maWcuY29sb3JBZ2dyZWdhdGlvbixcblxuICAgICAgICB6b29tOiBNYXRoLnJvdW5kKG1hcFN0YXRlLnpvb20pLFxuICAgICAgICB3aWR0aDogbWFwU3RhdGUud2lkdGgsXG4gICAgICAgIGhlaWdodDogbWFwU3RhdGUuaGVpZ2h0LFxuXG4gICAgICAgIC8vIHVwZGF0ZVRyaWdnZXJzXG4gICAgICAgIHVwZGF0ZVRyaWdnZXJzLFxuXG4gICAgICAgIC8vIGNhbGwgYmFjayBmcm9tIGxheWVyIGFmdGVyIGNhbGN1bGF0ZSBjbHVzdGVyc1xuICAgICAgICBvblNldENvbG9yRG9tYWluOiBsYXllckNhbGxiYWNrcy5vblNldExheWVyRG9tYWluXG4gICAgICB9KSxcbiAgICAgIC8vIGhvdmVyIGxheWVyXG4gICAgICAuLi4oaG92ZXJlZE9iamVjdFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIG5ldyBTY2F0dGVycGxvdExheWVyPHtzY2FsZWRSYWRpdXNWYWx1ZTogbnVtYmVyfT4oe1xuICAgICAgICAgICAgICBpZDogYCR7dGhpcy5pZH0taG92ZXJlZGAsXG4gICAgICAgICAgICAgIHZpc2libGU6IGRlZmF1bHRMYXllclByb3BzLnZpc2libGUsXG4gICAgICAgICAgICAgIGRhdGE6IFtob3ZlcmVkT2JqZWN0XSxcbiAgICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiB0aGlzLmNvbmZpZy5oaWdobGlnaHRDb2xvcixcbiAgICAgICAgICAgICAgZ2V0UmFkaXVzOiAoZDoge3NjYWxlZFJhZGl1c1ZhbHVlOiBudW1iZXJ9KSA9PiBkLnNjYWxlZFJhZGl1c1ZhbHVlLFxuICAgICAgICAgICAgICByYWRpdXNTY2FsZTogMSxcbiAgICAgICAgICAgICAgcGlja2FibGU6IGZhbHNlXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXSlcbiAgICBdO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9B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