UNPKG

kepler.gl.geoiq

Version:

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

153 lines (120 loc) 18.4 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); 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 _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _fieldSelector = _interopRequireDefault(require("../../common/field-selector")); var _styledComponents2 = require("../../common/styled-components"); var _templateObject, _templateObject2, _templateObject3, _templateObject4; function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } var TopRow = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n"]))); var WidgetColumnConfig = exports["default"] = /*#__PURE__*/function (_Component) { (0, _inherits2["default"])(WidgetColumnConfig, _Component); var _super = _createSuper(WidgetColumnConfig); function WidgetColumnConfig() { (0, _classCallCheck2["default"])(this, WidgetColumnConfig); return _super.apply(this, arguments); } (0, _createClass2["default"])(WidgetColumnConfig, [{ key: "_updateColumn", value: function _updateColumn(key, value) { var layer = this.props.layer; var columns = value && value.pair && layer.columnPairs ? layer.assignColumnPairs(key, value.pair) : layer.assignColumn(key, value); this.props.updateLayerConfig({ columns: columns }); } }, { key: "render", value: function render() { var _this = this; var _this$props = this.props, layer = _this$props.layer, fields = _this$props.fields, fieldPairs = _this$props.fieldPairs; // console.log('widgetColumnConfig', layer); return (/*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement("div", { className: "layer-config__column" }, /*#__PURE__*/_react["default"].createElement(TopRow, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabel, null, "Column"), /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabel, null, "* Required")), Object.keys(layer.config.columns).map(function (key) { return (/*#__PURE__*/_react["default"].createElement(ColumnSelector, { column: layer.config.columns[key], label: key, key: key, allFields: fields, fieldPairs: layer.columnPairs ? fieldPairs.map(function (fp) { return { name: fp.defaultName, type: 'point', pair: fp.pair }; }) : null, onSelect: function onSelect(val) { return _this._updateColumn(key, val); } }) ); })))) ); } }]); return WidgetColumnConfig; }(_react.Component); (0, _defineProperty2["default"])(WidgetColumnConfig, "propTypes", { layer: _propTypes["default"].object.isRequired, fields: _propTypes["default"].arrayOf(_propTypes["default"].any).isRequired, updateLayerConfig: _propTypes["default"].func.isRequired, fieldPairs: _propTypes["default"].arrayOf(_propTypes["default"].any) }); var ColumnRow = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n margin-bottom: 8px;\n align-items: center;\n"]))); var ColumnName = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n width: 30%;\n"]))); var ColumnSelect = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n width: 70%;\n"]))); // const availableFieldsSelector = createSelector( // this.fieldsSelector, // this.filterSelector, // this.nameSelector, // this.dataIdSelector, // (fields, filters, name, dataId) => // fields.filter( // f => // f.type && // f.type !== ALL_FIELD_TYPES.geojson && // (f.name === name || // !filters.find(d => d.name === f.name && d.dataId === dataId)) // ) // ); var ColumnSelector = function ColumnSelector(_ref) { var column = _ref.column, label = _ref.label, allFields = _ref.allFields, onSelect = _ref.onSelect, fieldPairs = _ref.fieldPairs; return (/*#__PURE__*/_react["default"].createElement(ColumnRow, { className: "widget-config__column__selector" }, /*#__PURE__*/_react["default"].createElement(ColumnName, { className: "widget-config__column__name" }, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabel, null, label), !column.optional ? /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabel, null, " *") : null), /*#__PURE__*/_react["default"].createElement(ColumnSelect, { className: "widget-config__column__select" }, /*#__PURE__*/_react["default"].createElement(_fieldSelector["default"], { suggested: fieldPairs, error: !column.optional && !column.value, fields: allFields, value: column.value, erasable: Boolean(column.optional), onSelect: onSelect }))) ); }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvd2lkZ2V0LXBhbmVsL3dpZGdldC1jb2x1bW4tY29uZmlnLmpzIl0sIm5hbWVzIjpbIlRvcFJvdyIsInN0eWxlZCIsImRpdiIsIldpZGdldENvbHVtbkNvbmZpZyIsImtleSIsInZhbHVlIiwibGF5ZXIiLCJwcm9wcyIsImNvbHVtbnMiLCJwYWlyIiwiY29sdW1uUGFpcnMiLCJhc3NpZ25Db2x1bW5QYWlycyIsImFzc2lnbkNvbHVtbiIsInVwZGF0ZUxheWVyQ29uZmlnIiwiZmllbGRzIiwiZmllbGRQYWlycyIsIk9iamVjdCIsImtleXMiLCJjb25maWciLCJtYXAiLCJmcCIsIm5hbWUiLCJkZWZhdWx0TmFtZSIsInR5cGUiLCJ2YWwiLCJfdXBkYXRlQ29sdW1uIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsImFycmF5T2YiLCJhbnkiLCJmdW5jIiwiQ29sdW1uUm93IiwiQ29sdW1uTmFtZSIsIkNvbHVtblNlbGVjdCIsIkNvbHVtblNlbGVjdG9yIiwiY29sdW1uIiwibGFiZWwiLCJhbGxGaWVsZHMiLCJvblNlbGVjdCIsIm9wdGlvbmFsIiwiQm9vbGVhbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FBS0EsSUFBTUEsTUFBTSxHQUFHQyw2QkFBT0MsR0FBViw2SUFBWjs7SUFLcUJDLGtCOzs7Ozs7Ozs7Ozs7V0FRbkIsdUJBQWNDLEdBQWQsRUFBbUJDLEtBQW5CLEVBQTBCO0FBQ3hCLFVBQU9DLEtBQVAsR0FBZ0IsS0FBS0MsS0FBckIsQ0FBT0QsS0FBUDtBQUVBLFVBQU1FLE9BQU8sR0FDWEgsS0FBSyxJQUFJQSxLQUFLLENBQUNJLElBQWYsSUFBdUJILEtBQUssQ0FBQ0ksV0FBN0IsR0FDSUosS0FBSyxDQUFDSyxpQkFBTixDQUF3QlAsR0FBeEIs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Z0NBQUMsNkJBQUQsUUFBYXVCLEtBQWIsQ0FERixFQUVHLENBQUNELE1BQU0sQ0FBQ0ksUUFBUixnQkFBbUIsZ0NBQUMsNkJBQUQsY0FBbkIsR0FBc0QsSUFGekQsQ0FERixlQUtFLGdDQUFDLFlBQUQ7QUFBYyxNQUFBLFNBQVMsRUFBQztBQUF4QixvQkFDRSxnQ0FBQyx5QkFBRDtBQUNFLE1BQUEsU0FBUyxFQUFFMUIsVUFEYjtBQUVFLE1BQUEsS0FBSyxFQUFFLENBQUNzQixNQUFNLENBQUNJLFFBQVIsSUFBb0IsQ0FBQ0osTUFBTSxDQUFDaEMsS0FGckM7QUFHRSxNQUFBLE1BQU0sRUFBRWtDLFNBSFY7QUFJRSxNQUFBLEtBQUssRUFBRUYsTUFBTSxDQUFDaEMsS0FKaEI7QUFLRSxNQUFBLFFBQVEsRUFBRXFDLE9BQU8sQ0FBQ0wsTUFBTSxDQUFDSSxRQUFSLENBTG5CO0FBTUUsTUFBQSxRQUFRLEVBQUVEO0FBTlosTUFERixDQUxGO0FBRHFCO0FBQUEsQ0FBdkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjMgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBGaWVsZFNlbGVjdG9yIGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2ZpZWxkLXNlbGVjdG9yJztcblxuaW1wb3J0IHtcbiAgUGFuZWxMYWJlbCxcbiAgU2lkZVBhbmVsU2VjdGlvblxufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5cbmNvbnN0IFRvcFJvdyA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbmA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdpZGdldENvbHVtbkNvbmZpZyBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgbGF5ZXI6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBmaWVsZHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgdXBkYXRlTGF5ZXJDb25maWc6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgZmllbGRQYWlyczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSlcbiAgfTtcblxuICBfdXBkYXRlQ29sdW1uKGtleSwgdmFsdWUpIHtcbiAgICBjb25zdCB7bGF5ZXJ9ID0gdGhpcy5wcm9wcztcblxuICAgIGNvbnN0IGNvbHVtbnMgPVxuICAgICAgdmFsdWUgJiYgdmFsdWUucGFpciAmJiBsYXllci5jb2x1bW5QYWlyc1xuICAgICAgICA/IGxheWVyLmFzc2lnbkNvbHVtblBhaXJzKGtleSwgdmFsdWUucGFpcilcbiAgICAgICAgOiBsYXllci5hc3NpZ25Db2x1bW4oa2V5LCB2YWx1ZSk7XG5cbiAgICB0aGlzLnByb3BzLnVwZGF0ZUxheWVyQ29uZmlnKHtjb2x1bW5zfSk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2xheWVyLCBmaWVsZHMsIGZpZWxkUGFpcnN9ID0gdGhpcy5wcm9wcztcbiAgICAvLyBjb25zb2xlLmxvZygnd2lkZ2V0Q29sdW1uQ29uZmlnJywgbGF5ZXIpO1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2PlxuICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxheWVyLWNvbmZpZ19fY29sdW1uXCI+XG4gICAgICAgICAgICA8VG9wUm93PlxuICAgICAgICAgICAgICA8UGFuZWxMYWJlbD5Db2x1bW48L1BhbmVsTGFiZWw+XG4gICAgICAgICAgICAgIDxQYW5lbExhYmVsPiogUmVxdWlyZWQ8L1BhbmVsTGFiZWw+XG4gICAgICAgICAgICA8L1RvcFJvdz5cbiAgICAgICAgICAgIHtPYmplY3Qua2V5cyhsYXllci5jb25maWcuY29sdW1ucykubWFwKGtleSA9PiAoXG4gICAgICAgICAgICAgIDxDb2x1bW5TZWxlY3RvclxuICAgICAgICAgICAgICAgIGNvbHVtbj17bGF5ZXIuY29uZmlnLmNvbHVtbnNba2V5XX1cbiAgICAgICAgICAgICAgICBsYWJlbD17a2V5fVxuICAgICAgICAgICAgICAgIGtleT17a2V5fVxuICAgICAgICAgICAgICAgIGFsbEZpZWxkcz17ZmllbGRzfVxuICAgICAgICAgICAgICAgIGZpZWxkUGFpcnM9e1xuICAgICAgICAgICAgICAgICAgbGF5ZXIuY29sdW1uUGFpcnNcbiAgICAgICAgICAgICAgICAgICAgPyBmaWVsZFBhaXJzLm1hcChmcCA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZnAuZGVmYXVsdE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFpcjogZnAucGFpclxuICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25TZWxlY3Q9e3ZhbCA9PiB0aGlzLl91cGRhdGVDb2x1bW4oa2V5LCB2YWwpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuY29uc3QgQ29sdW1uUm93ID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuYDtcblxuY29uc3QgQ29sdW1uTmFtZSA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAzMCU7XG5gO1xuY29uc3QgQ29sdW1uU2VsZWN0ID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDcwJTtcbmA7XG5cbi8vIGNvbnN0IGF2YWlsYWJsZUZpZWxkc1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4vLyAgIHRoaXMuZmllbGRzU2VsZWN0b3IsXG4vLyAgIHRoaXMuZmlsdGVyU2VsZWN0b3IsXG4vLyAgIHRoaXMubmFtZVNlbGVjdG9yLFxuLy8gICB0aGlzLmRhdGFJZFNlbGVjdG9yLFxuLy8gICAoZmllbGRzLCBmaWx0ZXJzLCBuYW1lLCBkYXRhSWQpID0+XG4vLyAgICAgZmllbGRzLmZpbHRlcihcbi8vICAgICAgIGYgPT5cbi8vICAgICAgICAgZi50eXBlICYmXG4vLyAgICAgICAgIGYudHlwZSAhPT0gQUxMX0ZJRUxEX1RZUEVTLmdlb2pzb24gJiZcbi8vICAgICAgICAgKGYubmFtZSA9PT0gbmFtZSB8fFxuLy8gICAgICAgICAgICFmaWx0ZXJzLmZpbmQoZCA9PiBkLm5hbWUgPT09IGYubmFtZSAmJiBkLmRhdGFJZCA9PT0gZGF0YUlkKSlcbi8vICAgICApXG4vLyApO1xuXG5jb25zdCBDb2x1bW5TZWxlY3RvciA9ICh7Y29sdW1uLCBsYWJlbCwgYWxsRmllbGRzLCBvblNlbGVjdCwgZmllbGRQYWlyc30pID0+IChcbiAgPENvbHVtblJvdyBjbGFzc05hbWU9XCJ3aWRnZXQtY29uZmlnX19jb2x1bW5fX3NlbGVjdG9yXCI+XG4gICAgPENvbHVtbk5hbWUgY2xhc3NOYW1lPVwid2lkZ2V0LWNvbmZpZ19fY29sdW1uX19uYW1lXCI+XG4gICAgICA8UGFuZWxMYWJlbD57bGFiZWx9PC9QYW5lbExhYmVsPlxuICAgICAgeyFjb2x1bW4ub3B0aW9uYWwgPyA8UGFuZWxMYWJlbD57YCAgKmB9PC9QYW5lbExhYmVsPiA6IG51bGx9XG4gICAgPC9Db2x1bW5OYW1lPlxuICAgIDxDb2x1bW5TZWxlY3QgY2xhc3NOYW1lPVwid2lkZ2V0LWNvbmZpZ19fY29sdW1uX19zZWxlY3RcIj5cbiAgICAgIDxGaWVsZFNlbGVjdG9yXG4gICAgICAgIHN1Z2dlc3RlZD17ZmllbGRQYWlyc31cbiAgICAgICAgZXJyb3I9eyFjb2x1bW4ub3B0aW9uYWwgJiYgIWNvbHVtbi52YWx1ZX1cbiAgICAgICAgZmllbGRzPXthbGxGaWVsZHN9XG4gICAgICAgIHZhbHVlPXtjb2x1bW4udmFsdWV9XG4gICAgICAgIGVyYXNhYmxlPXtCb29sZWFuKGNvbHVtbi5vcHRpb25hbCl9XG4gICAgICAgIG9uU2VsZWN0PXtvblNlbGVjdH1cbiAgICAgIC8+XG4gICAgPC9Db2x1bW5TZWxlY3Q+XG4gIDwvQ29sdW1uUm93PlxuKTtcbiJdfQ==