kepler.gl.geoiq
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
150 lines (118 loc) • 18.3 kB
JavaScript
;
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 LayerColumnConfig = exports["default"] = /*#__PURE__*/function (_Component) {
(0, _inherits2["default"])(LayerColumnConfig, _Component);
var _super = _createSuper(LayerColumnConfig);
function LayerColumnConfig() {
(0, _classCallCheck2["default"])(this, LayerColumnConfig);
return _super.apply(this, arguments);
}
(0, _createClass2["default"])(LayerColumnConfig, [{
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
});
layer.type === 'pincode' ? this.props.updateLayerConfig({
apiCallRequest: true,
apiCallLoader: true
}) : null;
}
}, {
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(
// 'inside layer-column-config layer=',
// layer,
// 'fields=',
// fields,
// 'fieldPairs=',
// fieldPairs
// );
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, "Columns"), /*#__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 LayerColumnConfig;
}(_react.Component);
(0, _defineProperty2["default"])(LayerColumnConfig, "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"])));
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: "layer-config__column__selector"
}, /*#__PURE__*/_react["default"].createElement(ColumnName, {
className: "layer-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: "layer-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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvbGF5ZXItY29sdW1uLWNvbmZpZy5qcyJdLCJuYW1lcyI6WyJUb3BSb3ciLCJzdHlsZWQiLCJkaXYiLCJMYXllckNvbHVtbkNvbmZpZyIsImtleSIsInZhbHVlIiwibGF5ZXIiLCJwcm9wcyIsImNvbHVtbnMiLCJwYWlyIiwiY29sdW1uUGFpcnMiLCJhc3NpZ25Db2x1bW5QYWlycyIsImFzc2lnbkNvbHVtbiIsInVwZGF0ZUxheWVyQ29uZmlnIiwidHlwZSIsImFwaUNhbGxSZXF1ZXN0IiwiYXBpQ2FsbExvYWRlciIsImZpZWxkcyIsImZpZWxkUGFpcnMiLCJPYmplY3QiLCJrZXlzIiwiY29uZmlnIiwibWFwIiwiZnAiLCJuYW1lIiwiZGVmYXVsdE5hbWUiLCJ2YWwiLCJfdXBkYXRlQ29sdW1uIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsImFycmF5T2YiLCJhbnkiLCJmdW5jIiwiQ29sdW1uUm93IiwiQ29sdW1uTmFtZSIsIkNvbHVtblNlbGVjdCIsIkNvbHVtblNlbGVjdG9yIiwiY29sdW1uIiwibGFiZWwiLCJhbGxGaWVsZHMiLCJvblNlbGVjdCIsIm9wdGlvbmFsIiwiQm9vbGVhbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FBS0EsSUFBTUEsTUFBTSxHQUFHQyw2QkFBT0MsR0FBViw2SUFBWjs7SUFLcUJDLGlCOzs7Ozs7Ozs7Ozs7V0FRbkIsdUJBQWNDLEdBQWQsRUFBbUJDLEtBQW5CLEVBQTBCO0FBQ3hCLFVBQU9DLEtBQVAsR0FBZ0IsS0FBS0MsS0FBckIsQ0FBT0QsS0FBUDtBQUVBLFVBQU1FLE9BQU8sR0FDWEgsS0FBSyxJQUFJQSxLQUFLLENBQUNJLElBQWYsSUFBdUJILEtBQUssQ0FBQ0ksV0FBN0IsR0FDSUos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LFFBQTRCQSxRQUE1QjtBQUFBLE1BQXNDeEIsVUFBdEMsUUFBc0NBLFVBQXRDO0FBQUEsdUJBQ3JCLGdDQUFDLFNBQUQ7QUFBVyxNQUFBLFNBQVMsRUFBQztBQUFyQixvQkFDRSxnQ0FBQyxVQUFEO0FBQVksTUFBQSxTQUFTLEVBQUM7QUFBdEIsb0JBQ0UsZ0NBQUMsNkJBQUQsUUFBYXNCLEtBQWIsQ0FERixFQUVHLENBQUNELE1BQU0sQ0FBQ0ksUUFBUixnQkFBbUIsZ0NBQUMsNkJBQUQsY0FBbkIsR0FBc0QsSUFGekQsQ0FERixlQUtFLGdDQUFDLFlBQUQ7QUFBYyxNQUFBLFNBQVMsRUFBQztBQUF4QixvQkFDRSxnQ0FBQyx5QkFBRDtBQUNFLE1BQUEsU0FBUyxFQUFFekIsVUFEYjtBQUVFLE1BQUEsS0FBSyxFQUFFLENBQUNxQixNQUFNLENBQUNJLFFBQVIsSUFBb0IsQ0FBQ0osTUFBTSxDQUFDbEMsS0FGckM7QUFHRSxNQUFBLE1BQU0sRUFBRW9DLFNBSFY7QUFJRSxNQUFBLEtBQUssRUFBRUYsTUFBTSxDQUFDbEMsS0FKaEI7QUFLRSxNQUFBLFFBQVEsRUFBRXVDLE9BQU8sQ0FBQ0wsTUFBTSxDQUFDSSxRQUFSLENBTG5CO0FBTUUsTUFBQSxRQUFRLEVBQUVEO0FBTlosTUFERixDQUxGO0FBRHFCO0FBQUEsQ0FBdkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjMgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBGaWVsZFNlbGVjdG9yIGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2ZpZWxkLXNlbGVjdG9yJztcblxuaW1wb3J0IHtcbiAgUGFuZWxMYWJlbCxcbiAgU2lkZVBhbmVsU2VjdGlvblxufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5cbmNvbnN0IFRvcFJvdyA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbmA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExheWVyQ29sdW1uQ29uZmlnIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBsYXllcjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGZpZWxkczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSkuaXNSZXF1aXJlZCxcbiAgICB1cGRhdGVMYXllckNvbmZpZzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBmaWVsZFBhaXJzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KVxuICB9O1xuXG4gIF91cGRhdGVDb2x1bW4oa2V5LCB2YWx1ZSkge1xuICAgIGNvbnN0IHtsYXllcn0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgY29sdW1ucyA9XG4gICAgICB2YWx1ZSAmJiB2YWx1ZS5wYWlyICYmIGxheWVyLmNvbHVtblBhaXJzXG4gICAgICAgID8gbGF5ZXIuYXNzaWduQ29sdW1uUGFpcnMoa2V5LCB2YWx1ZS5wYWlyKVxuICAgICAgICA6IGxheWVyLmFzc2lnbkNvbHVtbihrZXksIHZhbHVlKTtcblxuICAgIHRoaXMucHJvcHMudXBkYXRlTGF5ZXJDb25maWcoe2NvbHVtbnN9KTtcbiAgICBsYXllci50eXBlID09PSAncGluY29kZSdcbiAgICAgID8gdGhpcy5wcm9wcy51cGRhdGVMYXllckNvbmZpZyh7XG4gICAgICAgICAgYXBpQ2FsbFJlcXVlc3Q6IHRydWUsXG4gICAgICAgICAgYXBpQ2FsbExvYWRlcjogdHJ1ZVxuICAgICAgICB9KVxuICAgICAgOiBudWxsO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtsYXllciwgZmllbGRzLCBmaWVsZFBhaXJzfSA9IHRoaXMucHJvcHM7XG4gICAgLy8gY29uc29sZS5sb2coXG4gICAgLy8gICAnaW5zaWRlIGxheWVyLWNvbHVtbi1jb25maWcgbGF5ZXI9JyxcbiAgICAvLyAgIGxheWVyLFxuICAgIC8vICAgJ2ZpZWxkcz0nLFxuICAgIC8vICAgZmllbGRzLFxuICAgIC8vICAgJ2ZpZWxkUGFpcnM9JyxcbiAgICAvLyAgIGZpZWxkUGFpcnNcbiAgICAvLyApO1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2PlxuICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxheWVyLWNvbmZpZ19fY29sdW1uXCI+XG4gICAgICAgICAgICA8VG9wUm93PlxuICAgICAgICAgICAgICA8UGFuZWxMYWJlbD5Db2x1bW5zPC9QYW5lbExhYmVsPlxuICAgICAgICAgICAgICA8UGFuZWxMYWJlbD4qIFJlcXVpcmVkPC9QYW5lbExhYmVsPlxuICAgICAgICAgICAgPC9Ub3BSb3c+XG4gICAgICAgICAgICB7T2JqZWN0LmtleXMobGF5ZXIuY29uZmlnLmNvbHVtbnMpLm1hcChrZXkgPT4gKFxuICAgICAgICAgICAgICA8Q29sdW1uU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBjb2x1bW49e2xheWVyLmNvbmZpZy5jb2x1bW5zW2tleV19XG4gICAgICAgICAgICAgICAgbGFiZWw9e2tleX1cbiAgICAgICAgICAgICAgICBrZXk9e2tleX1cbiAgICAgICAgICAgICAgICBhbGxGaWVsZHM9e2ZpZWxkc31cbiAgICAgICAgICAgICAgICBmaWVsZFBhaXJzPXtcbiAgICAgICAgICAgICAgICAgIGxheWVyLmNvbHVtblBhaXJzXG4gICAgICAgICAgICAgICAgICAgID8gZmllbGRQYWlycy5tYXAoZnAgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGZwLmRlZmF1bHROYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3BvaW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhaXI6IGZwLnBhaXJcbiAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt2YWwgPT4gdGhpcy5fdXBkYXRlQ29sdW1uKGtleSwgdmFsKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IENvbHVtblJvdyA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IENvbHVtbk5hbWUgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMzAlO1xuYDtcbmNvbnN0IENvbHVtblNlbGVjdCA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiA3MCU7XG5gO1xuXG5jb25zdCBDb2x1bW5TZWxlY3RvciA9ICh7Y29sdW1uLCBsYWJlbCwgYWxsRmllbGRzLCBvblNlbGVjdCwgZmllbGRQYWlyc30pID0+IChcbiAgPENvbHVtblJvdyBjbGFzc05hbWU9XCJsYXllci1jb25maWdfX2NvbHVtbl9fc2VsZWN0b3JcIj5cbiAgICA8Q29sdW1uTmFtZSBjbGFzc05hbWU9XCJsYXllci1jb25maWdfX2NvbHVtbl9fbmFtZVwiPlxuICAgICAgPFBhbmVsTGFiZWw+e2xhYmVsfTwvUGFuZWxMYWJlbD5cbiAgICAgIHshY29sdW1uLm9wdGlvbmFsID8gPFBhbmVsTGFiZWw+e2AgICpgfTwvUGFuZWxMYWJlbD4gOiBudWxsfVxuICAgIDwvQ29sdW1uTmFtZT5cbiAgICA8Q29sdW1uU2VsZWN0IGNsYXNzTmFtZT1cImxheWVyLWNvbmZpZ19fY29sdW1uX19zZWxlY3RcIj5cbiAgICAgIDxGaWVsZFNlbGVjdG9yXG4gICAgICAgIHN1Z2dlc3RlZD17ZmllbGRQYWlyc31cbiAgICAgICAgZXJyb3I9eyFjb2x1bW4ub3B0aW9uYWwgJiYgIWNvbHVtbi52YWx1ZX1cbiAgICAgICAgZmllbGRzPXthbGxGaWVsZHN9XG4gICAgICAgIHZhbHVlPXtjb2x1bW4udmFsdWV9XG4gICAgICAgIGVyYXNhYmxlPXtCb29sZWFuKGNvbHVtbi5vcHRpb25hbCl9XG4gICAgICAgIG9uU2VsZWN0PXtvblNlbGVjdH1cbiAgICAgIC8+XG4gICAgPC9Db2x1bW5TZWxlY3Q+XG4gIDwvQ29sdW1uUm93PlxuKTtcbiJdfQ==