UNPKG

kepler.gl

Version:

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

163 lines (133 loc) 21.9 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireDefault(require("react")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _reactIntl = require("react-intl"); var _localization = require("../../../localization"); var _styledComponents2 = require("../../common/styled-components"); var _datasetTag = _interopRequireDefault(require("../common/dataset-tag")); var _tooltipChicklet = _interopRequireDefault(require("./tooltip-config/tooltip-chicklet")); var _switch = _interopRequireDefault(require("../../common/switch")); var _itemSelector = _interopRequireDefault(require("../../common/item-selector/item-selector")); var _tooltip = require("../../../constants/tooltip"); var _fieldSelector = _interopRequireDefault(require("../../common/field-selector")); var _templateObject, _templateObject2, _templateObject3; 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; } var TooltipConfigWrapper = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n .item-selector > div > div {\n overflow: visible;\n }\n"]))); var ButtonWrapper = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: inherit;\n padding: 0;\n\n .button.clear-all {\n background: transparent;\n color: ", ";\n margin: 0 0 0 8px;\n padding: 0;\n\n &:hover {\n color: ", ";\n }\n }\n"])), function (props) { return props.theme.subtextColor; }, function (props) { return props.theme.textColor; }); var CompareSwitchWrapper = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n display: flex;\n font-size: ", ";\n justify-content: space-between;\n line-height: 11px;\n margin-bottom: 8px;\n"])), function (props) { return props.theme.labelColor; }, function (props) { return props.theme.inputFontSize; }); TooltipConfigFactory.deps = [_datasetTag["default"], _fieldSelector["default"]]; function TooltipConfigFactory(DatasetTag, FieldSelector) { var DatasetTooltipConfig = function DatasetTooltipConfig(_ref) { var config = _ref.config, onChange = _ref.onChange, dataset = _ref.dataset; var dataId = dataset.id; return /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, { key: dataId }, /*#__PURE__*/_react["default"].createElement(_styledComponents2.SBFlexboxNoMargin, null, /*#__PURE__*/_react["default"].createElement(DatasetTag, { dataset: dataset }), Boolean(config.fieldsToShow[dataId].length) && /*#__PURE__*/_react["default"].createElement(ButtonWrapper, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.Button, { className: "clear-all", onClick: function onClick() { var newConfig = _objectSpread(_objectSpread({}, config), {}, { fieldsToShow: _objectSpread(_objectSpread({}, config.fieldsToShow), {}, (0, _defineProperty2["default"])({}, dataId, [])) }); onChange(newConfig); }, width: "54px", secondary: true }, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, { id: "fieldSelector.clearAll" })))), /*#__PURE__*/_react["default"].createElement(FieldSelector, { fields: dataset.fields, value: config.fieldsToShow[dataId], onSelect: function onSelect(selected) { var newConfig = _objectSpread(_objectSpread({}, config), {}, { fieldsToShow: _objectSpread(_objectSpread({}, config.fieldsToShow), {}, (0, _defineProperty2["default"])({}, dataId, selected.map(function (f) { return config.fieldsToShow[dataId].find(function (tooltipField) { return tooltipField.name === f.name; }) || { name: f.name, // default initial tooltip is null format: null }; }))) }); onChange(newConfig); }, closeOnSelect: false, multiSelect: true, inputTheme: "secondary", CustomChickletComponent: (0, _tooltipChicklet["default"])(dataId, config, onChange, dataset.fields) })); }; var TooltipConfig = function TooltipConfig(_ref2) { var config = _ref2.config, datasets = _ref2.datasets, _onChange = _ref2.onChange, intl = _ref2.intl; return /*#__PURE__*/_react["default"].createElement(TooltipConfigWrapper, null, Object.keys(config.fieldsToShow).map(function (dataId) { return /*#__PURE__*/_react["default"].createElement(DatasetTooltipConfig, { key: dataId, config: config, onChange: _onChange, dataset: datasets[dataId] }); }), /*#__PURE__*/_react["default"].createElement(CompareSwitchWrapper, null, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, { id: "compare.modeLabel" }), /*#__PURE__*/_react["default"].createElement(_switch["default"], { checked: config.compareMode, id: "compare-mode-toggle", onChange: function onChange() { var newConfig = _objectSpread(_objectSpread({}, config), {}, { compareMode: !config.compareMode }); _onChange(newConfig); }, secondary: true })), /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabel, null, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, { id: "compare.typeLabel" })), /*#__PURE__*/_react["default"].createElement(_itemSelector["default"], { disabled: !config.compareMode, displayOption: function displayOption(d) { return intl.formatMessage({ id: "compare.types.".concat(d) }); }, selectedItems: config.compareType, options: Object.values(_tooltip.COMPARE_TYPES), multiSelect: false, searchable: false, inputTheme: 'secondary', getOptionValue: function getOptionValue(d) { return d; }, onChange: function onChange(option) { var newConfig = _objectSpread(_objectSpread({}, config), {}, { compareType: option }); _onChange(newConfig); } }))); }; return (0, _reactIntl.injectIntl)(TooltipConfig); } var _default = TooltipConfigFactory; exports["default"] = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvaW50ZXJhY3Rpb24tcGFuZWwvdG9vbHRpcC1jb25maWcuanMiXSwibmFtZXMiOlsiVG9vbHRpcENvbmZpZ1dyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJCdXR0b25XcmFwcGVyIiwicHJvcHMiLCJ0aGVtZSIsInN1YnRleHRDb2xvciIsInRleHRDb2xvciIsIkNvbXBhcmVTd2l0Y2hXcmFwcGVyIiwibGFiZWxDb2xvciIsImlucHV0Rm9udFNpemUiLCJUb29sdGlwQ29uZmlnRmFjdG9yeSIsImRlcHMiLCJEYXRhc2V0VGFnRmFjdG9yeSIsIkZpZWxkU2VsZWN0b3JGYWN0b3J5IiwiRGF0YXNldFRhZyIsIkZpZWxkU2VsZWN0b3IiLCJEYXRhc2V0VG9vbHRpcENvbmZpZyIsImNvbmZpZyIsIm9uQ2hhbmdlIiwiZGF0YXNldCIsImRhdGFJZCIsImlkIiwiQm9vbGVhbiIsImZpZWxkc1RvU2hvdyIsImxlbmd0aCIsIm5ld0NvbmZpZyIsImZpZWxkcyIsInNlbGVjdGVkIiwibWFwIiwiZiIsImZpbmQiLCJ0b29sdGlwRmllbGQiLCJuYW1lIiwiZm9ybWF0IiwiVG9vbHRpcENvbmZpZyIsImRhdGFzZXRzIiwiaW50bCIsIk9iamVjdCIsImtleXMiLCJjb21wYXJlTW9kZSIsImQiLCJmb3JtYXRNZXNzYWdlIiwiY29tcGFyZVR5cGUiLCJ2YWx1ZXMiLCJDT01QQVJFX1RZUEVTIiwib3B0aW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQU1BOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVBLElBQU1BLG9CQUFvQixHQUFHQyw2QkFBT0MsR0FBVixxSkFBMUI7O0FBTUEsSUFBTUMsYUFBYSxHQUFHRiw2QkFBT0MsR0FBVixrU0FNTixVQUFBRSxLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlD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QVEsRUFBRSxDQUFDUixNQUFNLENBQUNzQixXQURwQjtBQUVFLE1BQUEsYUFBYSxFQUFFLHVCQUFBQyxDQUFDO0FBQUEsZUFDZEosSUFBSSxDQUFDSyxhQUFMLENBQW1CO0FBQ2pCcEIsVUFBQUEsRUFBRSwwQkFBbUJtQixDQUFuQjtBQURlLFNBQW5CLENBRGM7QUFBQSxPQUZsQjtBQU9FLE1BQUEsYUFBYSxFQUFFdkIsTUFBTSxDQUFDeUIsV0FQeEI7QUFRRSxNQUFBLE9BQU8sRUFBRUwsTUFBTSxDQUFDTSxNQUFQLENBQWNDLHNCQUFkLENBUlg7QUFTRSxNQUFBLFdBQVcsRUFBRSxLQVRmO0FBVUUsTUFBQSxVQUFVLEVBQUUsS0FWZDtBQVdFLE1BQUEsVUFBVSxFQUFFLFdBWGQ7QUFZRSxNQUFBLGNBQWMsRUFBRSx3QkFBQUosQ0FBQztBQUFBLGVBQUlBLENBQUo7QUFBQSxPQVpuQjtBQWFFLE1BQUEsUUFBUSxFQUFFLGtCQUFBSyxNQUFNLEVBQUk7QUFDbEIsWUFBTXBCLFNBQVMsbUNBQ1ZSLE1BRFU7QUFFYnlCLFVBQUFBLFdBQVcsRUFBRUc7QUFGQSxVQUFmOztBQUlBM0IsUUFBQUEsU0FBUSxDQUFDTyxTQUFELENBQVI7QUFDRDtBQW5CSCxNQUpGLENBeEJGLENBREY7QUFxREQsR0F0REQ7O0FBd0RBLFNBQU8sMkJBQVdTLGFBQVgsQ0FBUDtBQUNEOztlQUVjeEIsb0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjEgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge2luamVjdEludGx9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdsb2NhbGl6YXRpb24nO1xuXG5pbXBvcnQge1xuICBTaWRlUGFuZWxTZWN0aW9uLFxuICBTQkZsZXhib3hOb01hcmdpbixcbiAgQnV0dG9uLFxuICBQYW5lbExhYmVsXG59IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBEYXRhc2V0VGFnRmFjdG9yeSBmcm9tICdjb21wb25lbnRzL3NpZGUtcGFuZWwvY29tbW9uL2RhdGFzZXQtdGFnJztcbmltcG9ydCBUb29sdGlwQ2hpY2tsZXRGYWN0b3J5IGZyb20gJy4vdG9vbHRpcC1jb25maWcvdG9vbHRpcC1jaGlja2xldCc7XG5pbXBvcnQgU3dpdGNoIGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N3aXRjaCc7XG5pbXBvcnQgSXRlbVNlbGVjdG9yIGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2l0ZW0tc2VsZWN0b3IvaXRlbS1zZWxlY3Rvcic7XG5pbXBvcnQge0NPTVBBUkVfVFlQRVN9IGZyb20gJ2NvbnN0YW50cy90b29sdGlwJztcbmltcG9ydCBGaWVsZFNlbGVjdG9yRmFjdG9yeSBmcm9tICcuLi8uLi9jb21tb24vZmllbGQtc2VsZWN0b3InO1xuXG5jb25zdCBUb29sdGlwQ29uZmlnV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIC5pdGVtLXNlbGVjdG9yID4gZGl2ID4gZGl2IHtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgfVxuYDtcblxuY29uc3QgQnV0dG9uV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGluaGVyaXQ7XG4gIHBhZGRpbmc6IDA7XG5cbiAgLmJ1dHRvbi5jbGVhci1hbGwge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnN1YnRleHRDb2xvcn07XG4gICAgbWFyZ2luOiAwIDAgMCA4cHg7XG4gICAgcGFkZGluZzogMDtcblxuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IENvbXBhcmVTd2l0Y2hXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGFiZWxDb2xvcn07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dEZvbnRTaXplfTtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBsaW5lLWhlaWdodDogMTFweDtcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xuYDtcblxuVG9vbHRpcENvbmZpZ0ZhY3RvcnkuZGVwcyA9IFtEYXRhc2V0VGFnRmFjdG9yeSwgRmllbGRTZWxlY3RvckZhY3RvcnldO1xuZnVuY3Rpb24gVG9vbHRpcENvbmZpZ0ZhY3RvcnkoRGF0YXNldFRhZywgRmllbGRTZWxlY3Rvcikge1xuICBjb25zdCBEYXRhc2V0VG9vbHRpcENvbmZpZyA9ICh7Y29uZmlnLCBvbkNoYW5nZSwgZGF0YXNldH0pID0+IHtcbiAgICBjb25zdCBkYXRhSWQgPSBkYXRhc2V0LmlkO1xuICAgIHJldHVybiAoXG4gICAgICA8U2lkZVBhbmVsU2VjdGlvbiBrZXk9e2RhdGFJZH0+XG4gICAgICAgIDxTQkZsZXhib3hOb01hcmdpbj5cbiAgICAgICAgICA8RGF0YXNldFRhZyBkYXRhc2V0PXtkYXRhc2V0fSAvPlxuICAgICAgICAgIHtCb29sZWFuKGNvbmZpZy5maWVsZHNUb1Nob3dbZGF0YUlkXS5sZW5ndGgpICYmIChcbiAgICAgICAgICAgIDxCdXR0b25XcmFwcGVyPlxuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiY2xlYXItYWxsXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBuZXdDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRzVG9TaG93OiB7XG4gICAgICAgICAgICAgICAgICAgICAgLi4uY29uZmlnLmZpZWxkc1RvU2hvdyxcbiAgICAgICAgICAgICAgICAgICAgICBbZGF0YUlkXTogW11cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlKG5ld0NvbmZpZyk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICB3aWR0aD1cIjU0cHhcIlxuICAgICAgICAgICAgICAgIHNlY29uZGFyeVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJmaWVsZFNlbGVjdG9yLmNsZWFyQWxsXCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8L0J1dHRvbldyYXBwZXI+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TQkZsZXhib3hOb01hcmdpbj5cbiAgICAgICAgPEZpZWxkU2VsZWN0b3JcbiAgICAgICAgICBmaWVsZHM9e2RhdGFzZXQuZmllbGRzfVxuICAgICAgICAgIHZhbHVlPXtjb25maWcuZmllbGRzVG9TaG93W2RhdGFJZF19XG4gICAgICAgICAgb25TZWxlY3Q9e3NlbGVjdGVkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0NvbmZpZyA9IHtcbiAgICAgICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgICAgICBmaWVsZHNUb1Nob3c6IHtcbiAgICAgICAgICAgICAgICAuLi5jb25maWcuZmllbGRzVG9TaG93LFxuICAgICAgICAgICAgICAgIFtkYXRhSWRdOiBzZWxlY3RlZC5tYXAoXG4gICAgICAgICAgICAgICAgICBmID0+XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5maWVsZHNUb1Nob3dbZGF0YUlkXS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBGaWVsZCA9PiB0b29sdGlwRmllbGQubmFtZSA9PT0gZi5uYW1lXG4gICAgICAgICAgICAgICAgICAgICkgfHwge1xuICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGYubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IGluaXRpYWwgdG9vbHRpcCBpcyBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBvbkNoYW5nZShuZXdDb25maWcpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgY2xvc2VPblNlbGVjdD17ZmFsc2V9XG4gICAgICAgICAgbXVsdGlTZWxlY3RcbiAgICAgICAgICBpbnB1dFRoZW1lPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICBDdXN0b21DaGlja2xldENvbXBvbmVudD17VG9vbHRpcENoaWNrbGV0RmFjdG9yeShkYXRhSWQsIGNvbmZpZywgb25DaGFuZ2UsIGRhdGFzZXQuZmllbGRzKX1cbiAgICAgICAgLz5cbiAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IFRvb2x0aXBDb25maWcgPSAoe2NvbmZpZywgZGF0YXNldHMsIG9uQ2hhbmdlLCBpbnRsfSkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8VG9vbHRpcENvbmZpZ1dyYXBwZXI+XG4gICAgICAgIHtPYmplY3Qua2V5cyhjb25maWcuZmllbGRzVG9TaG93KS5tYXAoZGF0YUlkID0+IChcbiAgICAgICAgICA8RGF0YXNldFRvb2x0aXBDb25maWdcbiAgICAgICAgICAgIGtleT17ZGF0YUlkfVxuICAgICAgICAgICAgY29uZmlnPXtjb25maWd9XG4gICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgICBkYXRhc2V0PXtkYXRhc2V0c1tkYXRhSWRdfVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgICA8Q29tcGFyZVN3aXRjaFdyYXBwZXI+XG4gICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21wYXJlLm1vZGVMYWJlbFwiIC8+XG4gICAgICAgICAgPFN3aXRjaFxuICAgICAgICAgICAgY2hlY2tlZD17Y29uZmlnLmNvbXBhcmVNb2RlfVxuICAgICAgICAgICAgaWQ9XCJjb21wYXJlLW1vZGUtdG9nZ2xlXCJcbiAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld0NvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAuLi5jb25maWcsXG4gICAgICAgICAgICAgICAgY29tcGFyZU1vZGU6ICFjb25maWcuY29tcGFyZU1vZGVcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgb25DaGFuZ2UobmV3Q29uZmlnKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBzZWNvbmRhcnlcbiAgICAgICAgICAvPlxuICAgICAgICA8L0NvbXBhcmVTd2l0Y2hXcmFwcGVyPlxuICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICA8UGFuZWxMYWJlbD5cbiAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tcGFyZS50eXBlTGFiZWxcIiAvPlxuICAgICAgICAgIDwvUGFuZWxMYWJlbD5cbiAgICAgICAgICA8SXRlbVNlbGVjdG9yXG4gICAgICAgICAgICBkaXNhYmxlZD17IWNvbmZpZy5jb21wYXJlTW9kZX1cbiAgICAgICAgICAgIGRpc3BsYXlPcHRpb249e2QgPT5cbiAgICAgICAgICAgICAgaW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICBpZDogYGNvbXBhcmUudHlwZXMuJHtkfWBcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e2NvbmZpZy5jb21wYXJlVHlwZX1cbiAgICAgICAgICAgIG9wdGlvbnM9e09iamVjdC52YWx1ZXMoQ09NUEFSRV9UWVBFUyl9XG4gICAgICAgICAgICBtdWx0aVNlbGVjdD17ZmFsc2V9XG4gICAgICAgICAgICBzZWFyY2hhYmxlPXtmYWxzZX1cbiAgICAgICAgICAgIGlucHV0VGhlbWU9eydzZWNvbmRhcnknfVxuICAgICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9e2QgPT4gZH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvcHRpb24gPT4ge1xuICAgICAgICAgICAgICBjb25zdCBuZXdDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgICAgICAgIGNvbXBhcmVUeXBlOiBvcHRpb25cbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgb25DaGFuZ2UobmV3Q29uZmlnKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgPC9Ub29sdGlwQ29uZmlnV3JhcHBlcj5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBpbmplY3RJbnRsKFRvb2x0aXBDb25maWcpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBUb29sdGlwQ29uZmlnRmFjdG9yeTtcbiJdfQ==