kepler.gl.geoiq
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
229 lines (180 loc) • 20.3 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.removeNotificationUpdater = exports.addNotificationUpdater = exports.setExportDataUpdater = exports.setExportConfigUpdater = exports.setExportFilteredUpdater = exports.setExportDataTypeUpdater = exports.setExportSelectedDatasetUpdater = exports.cleanupExportImage = exports.setExportImageDataUri = exports.startExportingImage = exports.setResolutionUpdater = exports.setRatioUpdater = exports.toggleLegendUpdater = exports.openDeleteModalUpdater = exports.toggleMapControlUpdater = exports.hideExportDropdownUpdater = exports.showExportDropdownUpdater = exports.toggleModalUpdater = exports.toggleSidePanelUpdater = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _defaultSettings = require("../constants/default-settings");
var _notificationsUtils = require("../utils/notifications-utils");
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
/* Updaters */
var toggleSidePanelUpdater = function toggleSidePanelUpdater(state, _ref) {
var id = _ref.payload;
if (id === state.activeSidePanel) {
return state;
}
if (id === _defaultSettings.LAYER_CONFIG_ID) {
return _objectSpread({}, state, {
currentModal: id
});
}
return _objectSpread({}, state, {
activeSidePanel: id
});
};
exports.toggleSidePanelUpdater = toggleSidePanelUpdater;
var toggleModalUpdater = function toggleModalUpdater(state, _ref2) {
var id = _ref2.payload;
return _objectSpread({}, state, {
currentModal: id
});
};
exports.toggleModalUpdater = toggleModalUpdater;
var showExportDropdownUpdater = function showExportDropdownUpdater(state, _ref3) {
var id = _ref3.payload;
return _objectSpread({}, state, {
visibleDropdown: id
});
};
exports.showExportDropdownUpdater = showExportDropdownUpdater;
var hideExportDropdownUpdater = function hideExportDropdownUpdater(state, _ref4) {
var payload = _ref4.payload;
return _objectSpread({}, state, {
visibleDropdown: null
});
};
exports.hideExportDropdownUpdater = hideExportDropdownUpdater;
var toggleMapControlUpdater = function toggleMapControlUpdater(state, _ref5) {
var panelId = _ref5.payload;
return _objectSpread({}, state, {
mapControls: _objectSpread({}, state.mapControls, (0, _defineProperty2["default"])({}, panelId, _objectSpread({}, state.mapControls[panelId], {
active: !state.mapControls[panelId].active
})))
});
};
exports.toggleMapControlUpdater = toggleMapControlUpdater;
var openDeleteModalUpdater = function openDeleteModalUpdater(state, _ref6) {
var datasetKeyToRemove = _ref6.payload;
return _objectSpread({}, state, {
currentModal: _defaultSettings.DELETE_DATA_ID,
datasetKeyToRemove: datasetKeyToRemove
});
};
exports.openDeleteModalUpdater = openDeleteModalUpdater;
var toggleLegendUpdater = function toggleLegendUpdater(state) {
return _objectSpread({}, state, {
exportImage: _objectSpread({}, state.exportImage, {
legend: !state.exportImage.legend
})
});
};
exports.toggleLegendUpdater = toggleLegendUpdater;
var setRatioUpdater = function setRatioUpdater(state, _ref7) {
var payload = _ref7.payload;
return _objectSpread({}, state, {
exportImage: _objectSpread({}, state.exportImage, {
ratio: payload.ratio
})
});
};
exports.setRatioUpdater = setRatioUpdater;
var setResolutionUpdater = function setResolutionUpdater(state, _ref8) {
var payload = _ref8.payload;
return _objectSpread({}, state, {
exportImage: _objectSpread({}, state.exportImage, {
resolution: payload.resolution
})
});
};
exports.setResolutionUpdater = setResolutionUpdater;
var startExportingImage = function startExportingImage(state) {
return _objectSpread({}, state, {
exportImage: _objectSpread({}, state.exportImage, {
exporting: true,
imageDataUri: ''
})
});
};
exports.startExportingImage = startExportingImage;
var setExportImageDataUri = function setExportImageDataUri(state, _ref9) {
var payload = _ref9.payload;
return _objectSpread({}, state, {
exportImage: _objectSpread({}, state.exportImage, {
exporting: false,
imageDataUri: payload.dataUri
})
});
};
exports.setExportImageDataUri = setExportImageDataUri;
var cleanupExportImage = function cleanupExportImage(state) {
return _objectSpread({}, state, {
exportImage: _objectSpread({}, state.exportImage, {
exporting: false,
imageDataUri: ''
})
});
};
exports.cleanupExportImage = cleanupExportImage;
var setExportSelectedDatasetUpdater = function setExportSelectedDatasetUpdater(state, _ref10) {
var payload = _ref10.payload;
return _objectSpread({}, state, {
exportData: _objectSpread({}, state.exportData, {
selectedDataset: payload.dataset
})
});
};
exports.setExportSelectedDatasetUpdater = setExportSelectedDatasetUpdater;
var setExportDataTypeUpdater = function setExportDataTypeUpdater(state, _ref11) {
var payload = _ref11.payload;
return _objectSpread({}, state, {
exportData: _objectSpread({}, state.exportData, {
dataType: payload.dataType
})
});
};
exports.setExportDataTypeUpdater = setExportDataTypeUpdater;
var setExportFilteredUpdater = function setExportFilteredUpdater(state, _ref12) {
var payload = _ref12.payload;
return _objectSpread({}, state, {
exportData: _objectSpread({}, state.exportData, {
filtered: payload.filtered
})
});
};
exports.setExportFilteredUpdater = setExportFilteredUpdater;
var setExportConfigUpdater = function setExportConfigUpdater(state, action) {
return _objectSpread({}, state, {
exportData: _objectSpread({}, state.exportData, {
config: !state.exportData.config
})
});
};
exports.setExportConfigUpdater = setExportConfigUpdater;
var setExportDataUpdater = function setExportDataUpdater(state, action) {
return _objectSpread({}, state, {
exportData: _objectSpread({}, state.exportData, {
data: !state.exportData.data
})
});
};
exports.setExportDataUpdater = setExportDataUpdater;
var addNotificationUpdater = function addNotificationUpdater(state, _ref13) {
var payload = _ref13.payload;
return _objectSpread({}, state, {
notifications: [].concat((0, _toConsumableArray2["default"])(state.notifications || []), [(0, _notificationsUtils.createNotification)(payload)])
});
};
exports.addNotificationUpdater = addNotificationUpdater;
var removeNotificationUpdater = function removeNotificationUpdater(state, _ref14) {
var payload = _ref14.payload;
return _objectSpread({}, state, {
notifications: state.notifications.filter(function (n) {
return n.id !== payload;
})
});
};
exports.removeNotificationUpdater = removeNotificationUpdater;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWR1Y2Vycy91aS1zdGF0ZS11cGRhdGVycy5qcyJdLCJuYW1lcyI6WyJ0b2dnbGVTaWRlUGFuZWxVcGRhdGVyIiwic3RhdGUiLCJpZCIsInBheWxvYWQiLCJhY3RpdmVTaWRlUGFuZWwiLCJMQVlFUl9DT05GSUdfSUQiLCJjdXJyZW50TW9kYWwiLCJ0b2dnbGVNb2RhbFVwZGF0ZXIiLCJzaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyIiwidmlzaWJsZURyb3Bkb3duIiwiaGlkZUV4cG9ydERyb3Bkb3duVXBkYXRlciIsInRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyIiwicGFuZWxJZCIsIm1hcENvbnRyb2xzIiwiYWN0aXZlIiwib3BlbkRlbGV0ZU1vZGFsVXBkYXRlciIsImRhdGFzZXRLZXlUb1JlbW92ZSIsIkRFTEVURV9EQVRBX0lEIiwidG9nZ2xlTGVnZW5kVXBkYXRlciIsImV4cG9ydEltYWdlIiwibGVnZW5kIiwic2V0UmF0aW9VcGRhdGVyIiwicmF0aW8iLCJzZXRSZXNvbHV0aW9uVXBkYXRlciIsInJlc29sdXRpb24iLCJzdGFydEV4cG9ydGluZ0ltYWdlIiwiZXhwb3J0aW5nIiwiaW1hZ2VEYXRhVXJpIiwic2V0RXhwb3J0SW1hZ2VEYXRhVXJpIiwiZGF0YVVyaSIsImNsZWFudXBFeHBvcnRJbWFnZSIsInNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXIiLCJleHBvcnREYXRhIiwic2VsZWN0ZWREYXRhc2V0IiwiZGF0YXNldCIsInNldEV4cG9ydERhdGFUeXBlVXBkYXRlciIsImRhdGFUeXBlIiwic2V0RXhwb3J0RmlsdGVyZWRVcGRhdGVyIiwiZmlsdGVyZWQiLCJzZXRFeHBvcnRDb25maWdVcGRhdGVyIiwiYWN0aW9uIiwiY29uZmlnIiwic2V0RXhwb3J0RGF0YVVwZGF0ZXIiLCJkYXRhIiwiYWRkTm90aWZpY2F0aW9uVXBkYXRlciIsIm5vdGlmaWNhdGlvbnMiLCJyZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyIiwiZmls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Q0FGVztBQUZ1QjtBQUFBLENBQS9COzs7O0FBUUEsSUFBTTJDLHlCQUF5QixHQUFHLFNBQTVCQSx5QkFBNEIsQ0FBQzdDLEtBQUQ7QUFBQSxNQUFTRSxPQUFULFVBQVNBLE9BQVQ7QUFBQSwyQkFDcENGLEtBRG9DO0FBRXZDNEMsSUFBQUEsYUFBYSxFQUFFNUMsS0FBSyxDQUFDNEMsYUFBTixDQUFvQkUsTUFBcEIsQ0FBMkIsVUFBQUMsQ0FBQztBQUFBLGFBQUlBLENBQUMsQ0FBQzlDLEVBQUYsS0FBU0MsT0FBYjtBQUFBLEtBQTVCO0FBRndCO0FBQUEsQ0FBbEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMTkgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQge0xBWUVSX0NPTkZJR19JRCwgREVMRVRFX0RBVEFfSUR9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCB7Y3JlYXRlTm90aWZpY2F0aW9ufSBmcm9tICd1dGlscy9ub3RpZmljYXRpb25zLXV0aWxzJztcblxuLyogVXBkYXRlcnMgKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTaWRlUGFuZWxVcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZDogaWR9KSA9PiB7XG4gIGlmIChpZCA9PT0gc3RhdGUuYWN0aXZlU2lkZVBhbmVsKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgaWYgKGlkID09PSBMQVlFUl9DT05GSUdfSUQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBjdXJyZW50TW9kYWw6IGlkXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgYWN0aXZlU2lkZVBhbmVsOiBpZFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZ2dsZU1vZGFsVXBkYXRlciA9IChzdGF0ZSwge3BheWxvYWQ6IGlkfSkgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogaWRcbn0pO1xuXG5leHBvcnQgY29uc3Qgc2hvd0V4cG9ydERyb3Bkb3duVXBkYXRlciA9IChzdGF0ZSwge3BheWxvYWQ6IGlkfSkgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIHZpc2libGVEcm9wZG93bjogaWRcbn0pO1xuXG5leHBvcnQgY29uc3QgaGlkZUV4cG9ydERyb3Bkb3duVXBkYXRlciA9IChzdGF0ZSwge3BheWxvYWR9KSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgdmlzaWJsZURyb3Bkb3duOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IHRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZDogcGFuZWxJZH0pID0+ICh7XG4gIC4uLnN0YXRlLFxuICBtYXBDb250cm9sczoge1xuICAgIC4uLnN0YXRlLm1hcENvbnRyb2xzLFxuICAgIFtwYW5lbElkXToge1xuICAgICAgLi4uc3RhdGUubWFwQ29udHJvbHNbcGFuZWxJZF0sXG4gICAgICBhY3RpdmU6ICFzdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXS5hY3RpdmVcbiAgICB9XG4gIH1cbn0pO1xuXG5leHBvcnQgY29uc3Qgb3BlbkRlbGV0ZU1vZGFsVXBkYXRlciA9IChcbiAgc3RhdGUsXG4gIHtwYXlsb2FkOiBkYXRhc2V0S2V5VG9SZW1vdmV9XG4pID0+ICh7XG4gIC4uLnN0YXRlLFxuICBjdXJyZW50TW9kYWw6IERFTEVURV9EQVRBX0lELFxuICBkYXRhc2V0S2V5VG9SZW1vdmVcbn0pO1xuXG5leHBvcnQgY29uc3QgdG9nZ2xlTGVnZW5kVXBkYXRlciA9IHN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRJbWFnZToge1xuICAgIC4uLnN0YXRlLmV4cG9ydEltYWdlLFxuICAgIGxlZ2VuZDogIXN0YXRlLmV4cG9ydEltYWdlLmxlZ2VuZFxuICB9XG59KTtcblxuZXhwb3J0IGNvbnN0IHNldFJhdGlvVXBkYXRlciA9IChzdGF0ZSwge3BheWxvYWR9KSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0SW1hZ2U6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICByYXRpbzogcGF5bG9hZC5yYXRpb1xuICB9XG59KTtcblxuZXhwb3J0IGNvbnN0IHNldFJlc29sdXRpb25VcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZH0pID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRJbWFnZToge1xuICAgIC4uLnN0YXRlLmV4cG9ydEltYWdlLFxuICAgIHJlc29sdXRpb246IHBheWxvYWQucmVzb2x1dGlvblxuICB9XG59KTtcblxuZXhwb3J0IGNvbnN0IHN0YXJ0RXhwb3J0aW5nSW1hZ2UgPSBzdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0SW1hZ2U6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICBleHBvcnRpbmc6IHRydWUsXG4gICAgaW1hZ2VEYXRhVXJpOiAnJ1xuICB9XG59KTtcblxuZXhwb3J0IGNvbnN0IHNldEV4cG9ydEltYWdlRGF0YVVyaSA9IChzdGF0ZSwge3BheWxvYWR9KSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0SW1hZ2U6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICBleHBvcnRpbmc6IGZhbHNlLFxuICAgIGltYWdlRGF0YVVyaTogcGF5bG9hZC5kYXRhVXJpXG4gIH1cbn0pO1xuXG5leHBvcnQgY29uc3QgY2xlYW51cEV4cG9ydEltYWdlID0gc3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydEltYWdlOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0SW1hZ2UsXG4gICAgZXhwb3J0aW5nOiBmYWxzZSxcbiAgICBpbWFnZURhdGFVcmk6ICcnXG4gIH1cbn0pO1xuXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0U2VsZWN0ZWREYXRhc2V0VXBkYXRlciA9IChzdGF0ZSwge3BheWxvYWR9KSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0RGF0YToge1xuICAgIC4uLnN0YXRlLmV4cG9ydERhdGEsXG4gICAgc2VsZWN0ZWREYXRhc2V0OiBwYXlsb2FkLmRhdGFzZXRcbiAgfVxufSk7XG5cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXIgPSAoc3RhdGUsIHtwYXlsb2FkfSkgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydERhdGE6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnREYXRhLFxuICAgIGRhdGFUeXBlOiBwYXlsb2FkLmRhdGFUeXBlXG4gIH1cbn0pO1xuXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RmlsdGVyZWRVcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZH0pID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnREYXRhOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0RGF0YSxcbiAgICBmaWx0ZXJlZDogcGF5bG9hZC5maWx0ZXJlZFxuICB9XG59KTtcblxuZXhwb3J0IGNvbnN0IHNldEV4cG9ydENvbmZpZ1VwZGF0ZXIgPSAoc3RhdGUsIGFjdGlvbikgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydERhdGE6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnREYXRhLFxuICAgIGNvbmZpZzogIXN0YXRlLmV4cG9ydERhdGEuY29uZmlnXG4gIH1cbn0pO1xuXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RGF0YVVwZGF0ZXIgPSAoc3RhdGUsIGFjdGlvbikgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydERhdGE6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnREYXRhLFxuICAgIGRhdGE6ICFzdGF0ZS5leHBvcnREYXRhLmRhdGFcbiAgfVxufSk7XG5cbmV4cG9ydCBjb25zdCBhZGROb3RpZmljYXRpb25VcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZH0pID0+ICh7XG4gIC4uLnN0YXRlLFxuICBub3RpZmljYXRpb25zOiBbXG4gICAgLi4uc3RhdGUubm90aWZpY2F0aW9ucyB8fCBbXSxcbiAgICBjcmVhdGVOb3RpZmljYXRpb24ocGF5bG9hZClcbiAgXVxufSk7XG5cbmV4cG9ydCBjb25zdCByZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZH0pID0+ICh7XG4gIC4uLnN0YXRlLFxuICBub3RpZmljYXRpb25zOiBzdGF0ZS5ub3RpZmljYXRpb25zLmZpbHRlcihuID0+IG4uaWQgIT09IHBheWxvYWQpXG59KTtcbiJdfQ==