kepler.gl.geoiq
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
158 lines (133 loc) • 14.9 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
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 _getPrototypeOf3 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireWildcard(require("react"));
var _styledComponents = require("../../common/styled-components");
var _itemSelector = _interopRequireDefault(require("../../common/item-selector/item-selector"));
var _reselect = require("reselect");
// Copyright (c) 2019 Uber Technologies, Inc.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
var WidgetLayerSelector =
/*#__PURE__*/
function (_Component) {
(0, _inherits2["default"])(WidgetLayerSelector, _Component);
function WidgetLayerSelector() {
var _getPrototypeOf2;
var _this;
(0, _classCallCheck2["default"])(this, WidgetLayerSelector);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = (0, _possibleConstructorReturn2["default"])(this, (_getPrototypeOf2 = (0, _getPrototypeOf3["default"])(WidgetLayerSelector)).call.apply(_getPrototypeOf2, [this].concat(args)));
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "layersSelector", function (props) {
return props.layers;
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dataIdSelector", function (props) {
return props.widget.config.dataId;
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "lsOptionsSelector", (0, _reselect.createSelector)(_this.layersSelector, _this.dataIdSelector, function (layers, dataId) {
return Object.values(layers).map(function (ls) {
if (ls.config.dataId === dataId) {
return {
label: ls.config.label,
value: {
id: ls.id,
label: ls.config.label
}
};
}
});
}));
return _this;
}
(0, _createClass2["default"])(WidgetLayerSelector, [{
key: "_widgetLayerOptions",
value: function _widgetLayerOptions(layers, dataId) {
var options = [];
layers.map(function (lidget) {
var config = lidget.config;
var LayerDataId = config.dataId;
if (LayerDataId === dataId) {
options.push({
label: lidget.config.label,
value: {
id: lidget.id,
label: lidget.config.label
}
});
}
});
return options;
}
}, {
key: "_renderPlaceholder",
value: function _renderPlaceholder(id) {
var placeholder = this.props.layers.map(function (l) {
if (l.id === id) {
return l.config.label;
}
});
return placeholder;
}
}, {
key: "render",
value: function render() {
var _React$createElement;
var _this$props = this.props,
layers = _this$props.layers,
widget = _this$props.widget,
dataId = _this$props.dataId,
onSelect = _this$props.onSelect;
var config = widget.config;
var selectedLayer;
selectedLayer = config.selectedLayer; // console.log(selectedLayer);
// console.log('lsoptions in widgetLayerSelector', lsOptions);
// console.log('selected layer is ', typeof selectedLayer);
// console.log('layers widgetLayerSelector', layers);
// console.log('options', this._widgetLayerOptions(layers, dataId));
// console.log('layers', layers);
return _react["default"].createElement(_styledComponents.SidePanelSection, {
className: "layer-selector"
}, _react["default"].createElement(_styledComponents.PanelLabel, null, "Layers"), _react["default"].createElement(_itemSelector["default"], (_React$createElement = {
placeholder: selectedLayer ? this._renderPlaceholder(selectedLayer.id) : 'Select A Layer' // selectedItems={selectedLayer}
// options={this._widgetLayerOptions(layers, dataId)}
,
options: this._widgetLayerOptions(layers, dataId),
multiSelect: false,
getOptionValue: 'value'
}, (0, _defineProperty2["default"])(_React$createElement, "multiSelect", false), (0, _defineProperty2["default"])(_React$createElement, "onChange", onSelect), (0, _defineProperty2["default"])(_React$createElement, "displayOption", 'label'), (0, _defineProperty2["default"])(_React$createElement, "searchable", false), _React$createElement)));
}
}]);
return WidgetLayerSelector;
}(_react.Component);
exports["default"] = WidgetLayerSelector;
(0, _defineProperty2["default"])(WidgetLayerSelector, "proptypes", {});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvd2lkZ2V0LXBhbmVsL3dpZGdldC1sYXllci1zZWxlY3Rvci5qcyJdLCJuYW1lcyI6WyJXaWRnZXRMYXllclNlbGVjdG9yIiwicHJvcHMiLCJsYXllcnMiLCJ3aWRnZXQiLCJjb25maWciLCJkYXRhSWQiLCJsYXllcnNTZWxlY3RvciIsImRhdGFJZFNlbGVjdG9yIiwiT2JqZWN0IiwidmFsdWVzIiwibWFwIiwibHMiLCJsYWJlbCIsInZhbHVlIiwiaWQiLCJvcHRpb25zIiwibGlkZ2V0IiwiTGF5ZXJEYXRhSWQiLCJwdXNoIiwicGxhY2Vob2xkZXIiLCJsIiwib25TZWxlY3QiLCJzZWxlY3RlZExheWVyIiwiX3JlbmRlclBsYWNlaG9sZGVyIiwiX3dpZGdldExheWVyT3B0aW9ucyIsIkNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFJQTs7QUFDQTs7QUExQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFVcUJBLG1COzs7Ozs7Ozs7Ozs7Ozs7Ozt1R0FHRixVQUFBQyxLQUFLO0FBQUEsYUFBSUEsS0FBSyxDQUFDQyxNQUFWO0FBQUEsSzt1R0FDTCxVQUFBRCxLQUFLO0FBQUEsYUFBSUEsS0FBSyxDQUFDRSxNQUFOLENBQWFDLE1BQWIsQ0FBb0JDLE1BQXhCO0FBQUEsSzswR0FDRiw4QkFDbEIsTUFBS0MsY0FEYSxFQUVsQixNQUFLQyxjQUZhLEVBR2xCLFVBQUNMLE1BQUQsRUFBU0csTUFBVDtBQUFBLGFBQ0VHLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjUCxNQUFkLEVBQXNCUSxHQUF0QixDQUEwQixVQUFBQyxFQUFFLEVBQUk7QUFDOUIsWUFBSUEsRUFBRSxDQUFDUCxNQUFILENBQVVDLE1BQVYsS0FBcUJBLE1BQXpCLEVBQWlDO0FBQy9CLGlCQUFPO0FBQ0xPLFlBQUFBLEtBQUssRUFBRUQsRUFBRSxDQUFDUCxNQUFILENBQVVRLEtBRFo7QUFFTEMsWUFBQUEsS0FBSyxFQUFFO0FBQUNDLGNBQUFBLEVBQUUsRUFBRUgsRUFBRSxDQUFDRyxFQUFSO0FBQVlGLGNBQUFBLEtBQUssRUFBRUQsRUFBRSxDQUFDUCxNQUFILENBQVVRO0FBQTdCO0FBRkYsV0FBUDtBQUlEO0FBQ0YsT0FQRCxDQURGO0FBQUEsS0FIa0IsQzs7Ozs7O3dDQWNBVixNLEVBQVFHLE0sRUFBUTtBQUNsQyxVQUFJVSxPQUFPLEdBQUcsRUFBZDtBQUNBYixNQUFBQSxNQUFNLENBQUNRLEdBQVAsQ0FBVyxVQUFBTSxNQUFNLEVBQUk7QUFBQSxZQUNaWixNQURZLEdBQ0ZZLE1BREUsQ0FDWlosTUFEWTtBQUVuQixZQUFNYSxXQUFXLEdBQUdiLE1BQU0sQ0FBQ0MsTUFBM0I7O0FBQ0EsWUFBSVksV0FBVyxLQUFLWixNQUFwQixFQUE0QjtBQUMxQlUsVUFBQUEsT0FBTyxDQUFDRyxJQUFSLENBQWE7QUFDWE4sWUFBQUEsS0FBSyxFQUFFSSxNQUFNLENBQUNaLE1BQVAsQ0FBY1EsS0FEVjtBQUVYQyxZQUFBQSxLQUFLLEVBQUU7QUFBQ0MsY0FBQUEsRUFBRSxFQUFFRSxNQUFNLENBQUNGLEVBQVo7QUFBZ0JGLGNBQUFBLEtBQUssRUFBRUksTUFBTSxDQUFDWixNQUFQLENBQWNRO0FBQXJDO0FBRkksV0FBYjtBQUlEO0FBQ0YsT0FURDtBQVVBLGFBQU9HLE9BQVA7QUFDRDs7O3VDQUVrQkQsRSxFQUFJO0FBQ3JCLFVBQUlLLFdBQVcsR0FBRyxLQUFLbEIsS0FBTCxDQUFXQyxNQUFYLENBQWtCUSxHQUFsQixDQUFzQixVQUFBVSxDQUFDLEVBQUk7QUFDM0MsWUFBSUEsQ0FBQyxDQUFDTixFQUFGLEtBQVNBLEVBQWIsRUFBaUI7QUFDZixpQkFBT00sQ0FBQyxDQUFDaEIsTUFBRixDQUFTUSxLQUFoQjtBQUNEO0FBQ0YsT0FKaUIsQ0FBbEI7QUFLQSxhQUFPTyxXQUFQO0FBQ0Q7Ozs2QkFFUTtBQUFBOztBQUFBLHdCQUNvQyxLQUFLbEIsS0FEekM7QUFBQSxVQUNBQyxNQURBLGVBQ0FBLE1BREE7QUFBQSxVQUNRQyxNQURSLGVBQ1FBLE1BRFI7QUFBQSxVQUNnQkUsTUFEaEIsZUFDZ0JBLE1BRGhCO0FBQUEsVUFDd0JnQixRQUR4QixlQUN3QkEsUUFEeEI7QUFBQSxVQUVBakIsTUFGQSxHQUVVRCxNQUZWLENBRUFDLE1BRkE7QUFHUCxVQUFJa0IsYUFBSjtBQUVBQSxNQUFBQSxhQUFhLEdBQUdsQixNQUFNLENBQUNrQixhQUF2QixDQUxPLENBTVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBLGFBQ0UsZ0NBQUMsa0NBQUQ7QUFBa0IsUUFBQSxTQUFTLEVBQUM7QUFBNUIsU0FDRSxnQ0FBQyw0QkFBRCxpQkFERixFQUVFLGdDQUFDLHdCQUFEO0FBQ0UsUUFBQSxXQUFXLEVBQ1RBLGFBQWEsR0FDVCxLQUFLQyxrQkFBTCxDQUF3QkQsYUFBYSxDQUFDUixFQUF0QyxDQURTLEdBRVQsZ0JBSlIsQ0FNRTtBQUNBO0FBUEY7QUFRRSxRQUFBLE9BQU8sRUFBRSxLQUFLVSxtQkFBTCxDQUF5QnRCLE1BQXpCLEVBQWlDRyxNQUFqQyxDQVJYO0FBU0UsUUFBQSxXQUFXLEVBQUUsS0FUZjtBQVVFLFFBQUEsY0FBYyxFQUFFO0FBVmxCLCtFQVdlLEtBWGYsc0VBWVlnQixRQVpaLDJFQWFpQixPQWJqQix3RUFjYyxLQWRkLHlCQUZGLENBREY7QUFxQkQ7OztFQTVFOENJLGdCOzs7aUNBQTVCekIsbUIsZUFDQSxFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDE5IFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICBQYW5lbExhYmVsLFxuICBTaWRlUGFuZWxTZWN0aW9uXG59IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBJdGVtU2VsZWN0b3IgZnJvbSAnY29tcG9uZW50cy9jb21tb24vaXRlbS1zZWxlY3Rvci9pdGVtLXNlbGVjdG9yJztcbmltcG9ydCB7Y3JlYXRlU2VsZWN0b3J9IGZyb20gJ3Jlc2VsZWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV2lkZ2V0TGF5ZXJTZWxlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wdHlwZXMgPSB7fTtcblxuICBsYXllcnNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmxheWVycztcbiAgZGF0YUlkU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy53aWRnZXQuY29uZmlnLmRhdGFJZDtcbiAgbHNPcHRpb25zU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgIHRoaXMuZGF0YUlkU2VsZWN0b3IsXG4gICAgKGxheWVycywgZGF0YUlkKSA9PlxuICAgICAgT2JqZWN0LnZhbHVlcyhsYXllcnMpLm1hcChscyA9PiB7XG4gICAgICAgIGlmIChscy5jb25maWcuZGF0YUlkID09PSBkYXRhSWQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGFiZWw6IGxzLmNvbmZpZy5sYWJlbCxcbiAgICAgICAgICAgIHZhbHVlOiB7aWQ6IGxzLmlkLCBsYWJlbDogbHMuY29uZmlnLmxhYmVsfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICk7XG5cbiAgX3dpZGdldExheWVyT3B0aW9ucyhsYXllcnMsIGRhdGFJZCkge1xuICAgIHZhciBvcHRpb25zID0gW107XG4gICAgbGF5ZXJzLm1hcChsaWRnZXQgPT4ge1xuICAgICAgY29uc3Qge2NvbmZpZ30gPSBsaWRnZXQ7XG4gICAgICBjb25zdCBMYXllckRhdGFJZCA9IGNvbmZpZy5kYXRhSWQ7XG4gICAgICBpZiAoTGF5ZXJEYXRhSWQgPT09IGRhdGFJZCkge1xuICAgICAgICBvcHRpb25zLnB1c2goe1xuICAgICAgICAgIGxhYmVsOiBsaWRnZXQuY29uZmlnLmxhYmVsLFxuICAgICAgICAgIHZhbHVlOiB7aWQ6IGxpZGdldC5pZCwgbGFiZWw6IGxpZGdldC5jb25maWcubGFiZWx9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cbiAgX3JlbmRlclBsYWNlaG9sZGVyKGlkKSB7XG4gICAgdmFyIHBsYWNlaG9sZGVyID0gdGhpcy5wcm9wcy5sYXllcnMubWFwKGwgPT4ge1xuICAgICAgaWYgKGwuaWQgPT09IGlkKSB7XG4gICAgICAgIHJldHVybiBsLmNvbmZpZy5sYWJlbDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcGxhY2Vob2xkZXI7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2xheWVycywgd2lkZ2V0LCBkYXRhSWQsIG9uU2VsZWN0fSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge2NvbmZpZ30gPSB3aWRnZXQ7XG4gICAgdmFyIHNlbGVjdGVkTGF5ZXI7XG5cbiAgICBzZWxlY3RlZExheWVyID0gY29uZmlnLnNlbGVjdGVkTGF5ZXI7XG4gICAgLy8gY29uc29sZS5sb2coc2VsZWN0ZWRMYXllcik7XG4gICAgLy8gY29uc29sZS5sb2coJ2xzb3B0aW9ucyBpbiB3aWRnZXRMYXllclNlbGVjdG9yJywgbHNPcHRpb25zKTtcbiAgICAvLyBjb25zb2xlLmxvZygnc2VsZWN0ZWQgbGF5ZXIgaXMgJywgdHlwZW9mIHNlbGVjdGVkTGF5ZXIpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdsYXllcnMgd2lkZ2V0TGF5ZXJTZWxlY3RvcicsIGxheWVycyk7XG4gICAgLy8gY29uc29sZS5sb2coJ29wdGlvbnMnLCB0aGlzLl93aWRnZXRMYXllck9wdGlvbnMobGF5ZXJzLCBkYXRhSWQpKTtcbiAgICAvLyBjb25zb2xlLmxvZygnbGF5ZXJzJywgbGF5ZXJzKTtcbiAgICByZXR1cm4gKFxuICAgICAgPFNpZGVQYW5lbFNlY3Rpb24gY2xhc3NOYW1lPVwibGF5ZXItc2VsZWN0b3JcIj5cbiAgICAgICAgPFBhbmVsTGFiZWw+TGF5ZXJzPC9QYW5lbExhYmVsPlxuICAgICAgICA8SXRlbVNlbGVjdG9yXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e1xuICAgICAgICAgICAgc2VsZWN0ZWRMYXllclxuICAgICAgICAgICAgICA/IHRoaXMuX3JlbmRlclBsYWNlaG9sZGVyKHNlbGVjdGVkTGF5ZXIuaWQpXG4gICAgICAgICAgICAgIDogJ1NlbGVjdCBBIExheWVyJ1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBzZWxlY3RlZEl0ZW1zPXtzZWxlY3RlZExheWVyfVxuICAgICAgICAgIC8vIG9wdGlvbnM9e3RoaXMuX3dpZGdldExheWVyT3B0aW9ucyhsYXllcnMsIGRhdGFJZCl9XG4gICAgICAgICAgb3B0aW9ucz17dGhpcy5fd2lkZ2V0TGF5ZXJPcHRpb25zKGxheWVycywgZGF0YUlkKX1cbiAgICAgICAgICBtdWx0aVNlbGVjdD17ZmFsc2V9XG4gICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9eyd2YWx1ZSd9XG4gICAgICAgICAgbXVsdGlTZWxlY3Q9e2ZhbHNlfVxuICAgICAgICAgIG9uQ2hhbmdlPXtvblNlbGVjdH1cbiAgICAgICAgICBkaXNwbGF5T3B0aW9uPXsnbGFiZWwnfVxuICAgICAgICAgIHNlYXJjaGFibGU9e2ZhbHNlfVxuICAgICAgICAvPlxuICAgICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuICAgICk7XG4gIH1cbn1cbiJdfQ==