UNPKG

kepler.gl

Version:

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

220 lines (172 loc) 26.2 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); Object.defineProperty(exports, "__esModule", { value: true }); exports.LayerConfigGroupLabelFactory = LayerConfigGroupLabelFactory; exports["default"] = exports.StyledLayerConfigGroup = exports.ConfigGroupCollapsibleHeader = exports.ConfigGroupCollapsibleContent = exports.StyledLayerConfigGroupAction = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); 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 _reactLifecyclesCompat = require("react-lifecycles-compat"); var _styledComponents = _interopRequireDefault(require("styled-components")); var _classnames = _interopRequireDefault(require("classnames")); var _reactIntl = require("react-intl"); var _switch = _interopRequireDefault(require("../../common/switch")); var _infoHelper = _interopRequireDefault(require("../../common/info-helper")); var _icons = require("../../common/icons"); var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7; 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 StyledLayerConfigGroupAction = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n color: ", ";\n"])), function (props) { return props.theme.textColor; }); exports.StyledLayerConfigGroupAction = StyledLayerConfigGroupAction; var ConfigGroupCollapsibleContent = _styledComponents["default"].div.attrs({ className: 'layer-config-group__content__collapsible' })(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: visible;\n transition: max-height 0.3s ease-out;\n height: max-content;\n max-height: 600px;\n"]))); exports.ConfigGroupCollapsibleContent = ConfigGroupCollapsibleContent; var ConfigGroupCollapsibleHeader = _styledComponents["default"].div.attrs({ className: 'layer-config-group__header__collapsible' })(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: visible;\n overflow: hidden;\n max-height: 0;\n"]))); exports.ConfigGroupCollapsibleHeader = ConfigGroupCollapsibleHeader; var StyledLayerConfigGroup = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n padding-left: ", "px;\n margin-bottom: ", "px;\n\n &.disabled {\n opacity: 0.3;\n pointer-events: none;\n }\n &.collapsed {\n .layer-config-group__header__collapsible {\n overflow: visible;\n max-height: 600px;\n }\n .layer-config-group__content {\n .layer-config-group__content__collapsible {\n overflow: hidden;\n max-height: 0;\n }\n }\n }\n"])), function (props) { return props.theme.layerConfigGroupPaddingLeft; }, function (props) { return props.theme.layerConfigGroupMarginBottom; }); exports.StyledLayerConfigGroup = StyledLayerConfigGroup; var StyledConfigGroupHeader = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n\n :hover {\n cursor: pointer;\n .layer-config-group__label {\n color: ", ";\n }\n\n .layer-config-group__action {\n color: ", ";\n }\n }\n"])), function (props) { return props.theme.textColorHl; }, function (props) { return props.theme.textColorHl; }); var ConfigGroupContent = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n &.disabled {\n opacity: 0.3;\n pointer-events: none;\n * {\n pointer-events: none;\n }\n }\n"]))); LayerConfigGroupLabelFactory.deps = [_infoHelper["default"]]; function LayerConfigGroupLabelFactory(InfoHelper) { var StyledLayerConfigGroupLabel = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n border-left: ", " solid\n ", ";\n line-height: 12px;\n margin-left: ", ";\n padding-left: ", ";\n\n display: flex;\n align-items: center;\n\n span {\n color: ", ";\n font-weight: 500;\n letter-spacing: 0.2px;\n text-transform: capitalize;\n margin-left: ", ";\n font-size: ", ";\n }\n "])), function (props) { return props.theme.layerConfigGroupLabelBorderLeft; }, function (props) { return props.theme.labelColor; }, function (props) { return props.theme.layerConfigGroupLabelMargin; }, function (props) { return props.theme.layerConfigGroupLabelPadding; }, function (props) { return props.theme.textColor; }, function (props) { return props.theme.layerConfigGroupLabelLabelMargin; }, function (props) { return props.theme.layerConfigGroupLabelLabelFontSize; }); var LayerConfigGroupLabel = function LayerConfigGroupLabel(_ref) { var label = _ref.label, description = _ref.description; return /*#__PURE__*/_react["default"].createElement(StyledLayerConfigGroupLabel, { className: "layer-config-group__label" }, /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_reactIntl.FormattedMessage, { id: label || 'misc.empty', defaultMessage: label })), description && /*#__PURE__*/_react["default"].createElement(InfoHelper, { description: description, id: label })); }; return LayerConfigGroupLabel; } LayerConfigGroupFactory.deps = [LayerConfigGroupLabelFactory]; function LayerConfigGroupFactory(LayerConfigGroupLabel) { var LayerConfigGroup = /*#__PURE__*/function (_Component) { (0, _inherits2["default"])(LayerConfigGroup, _Component); var _super = _createSuper(LayerConfigGroup); function LayerConfigGroup() { var _this; (0, _classCallCheck2["default"])(this, LayerConfigGroup); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _super.call.apply(_super, [this].concat(args)); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", { collapsed: true }); return _this; } (0, _createClass2["default"])(LayerConfigGroup, [{ key: "render", value: function render() { var _this2 = this; var _this$props = this.props, label = _this$props.label, children = _this$props.children, property = _this$props.property, layer = _this$props.layer, _onChange2 = _this$props.onChange, collapsible = _this$props.collapsible, description = _this$props.description, disabled = _this$props.disabled; var collapsed = this.state.collapsed; return /*#__PURE__*/_react["default"].createElement(StyledLayerConfigGroup, { className: (0, _classnames["default"])('layer-config-group', { collapsed: collapsed, disabled: disabled }) }, /*#__PURE__*/_react["default"].createElement(StyledConfigGroupHeader, { className: "layer-config-group__header", onClick: function onClick() { return _this2.setState({ collapsed: !_this2.state.collapsed }); } }, /*#__PURE__*/_react["default"].createElement(LayerConfigGroupLabel, { label: label, description: description }), /*#__PURE__*/_react["default"].createElement(StyledLayerConfigGroupAction, { className: "layer-config-group__action" }, property ? /*#__PURE__*/_react["default"].createElement(_switch["default"], { checked: layer.config.visConfig[property], id: "".concat(layer.id, "-").concat(property), onChange: function onChange() { return _onChange2((0, _defineProperty2["default"])({}, property, !layer.config.visConfig[property])); } }) : null, collapsible ? /*#__PURE__*/_react["default"].createElement(_icons.VertThreeDots, { height: "18px" }) : null)), /*#__PURE__*/_react["default"].createElement(ConfigGroupContent, { className: (0, _classnames["default"])('layer-config-group__content', { disabled: property && !layer.config.visConfig[property] }) }, children)); } }], [{ key: "getDerivedStateFromProps", value: function getDerivedStateFromProps(props, state) { // invoked after a component is instantiated as well as before it is re-rendered if (props.expanded && state.collapsed) { return { collapsed: false }; } return null; } }]); return LayerConfigGroup; }(_react.Component); (0, _defineProperty2["default"])(LayerConfigGroup, "defaultProps", { collapsible: false, expanded: false, onChange: function onChange() {}, description: null, disabled: false }); (0, _reactLifecyclesCompat.polyfill)(LayerConfigGroup); return LayerConfigGroup; } var _default = LayerConfigGroupFactory; exports["default"] = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvbGF5ZXItY29uZmlnLWdyb3VwLmpzIl0sIm5hbWVzIjpbIlN0eWxlZExheWVyQ29uZmlnR3JvdXBBY3Rpb24iLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsInRoZW1lIiwidGV4dENvbG9yIiwiQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQiLCJhdHRycyIsImNsYXNzTmFtZSIsIkNvbmZpZ0dyb3VwQ29sbGFwc2libGVIZWFkZXIiLCJTdHlsZWRMYXllckNvbmZpZ0dyb3VwIiwibGF5ZXJDb25maWdHcm91cFBhZGRpbmdMZWZ0IiwibGF5ZXJDb25maWdHcm91cE1hcmdpbkJvdHRvbSIsIlN0eWxlZENvbmZpZ0dyb3VwSGVhZGVyIiwidGV4dENvbG9ySGwiLCJDb25maWdHcm91cENvbnRlbnQiLCJMYXllckNvbmZpZ0dyb3VwTGFiZWxGYWN0b3J5IiwiZGVwcyIsIkluZm9IZWxwZXJGYWN0b3J5IiwiSW5mb0hlbHBlciIsIlN0eWxlZExheWVyQ29uZmlnR3JvdXBMYWJlbCIsImxheWVyQ29uZmlnR3JvdXBMYWJlbEJvcmRlckxlZnQiLCJsYWJlbENvbG9yIiwibGF5ZXJDb25maWdHcm91cExhYmVsTWFyZ2luIiwibGF5ZXJDb25maWdHcm91cExhYmVsUGFkZGluZyIsImxheWVyQ29uZmlnR3JvdXBMYWJlbExhYmVsTWFyZ2luIiwibGF5ZXJDb25maWdHcm91cExhYmVsTGFiZWxGb250U2l6ZSIsIkxheWVyQ29uZmlnR3JvdXBMYWJlbCIsImxhYmVsIiwiZGVzY3JpcHRpb24iLCJMYXllckNvbmZpZ0dyb3VwRmFjdG9yeSIsIkxheWVyQ29uZmlnR3JvdXAiLCJjb2xsYXBzZWQiLCJjaGlsZHJlbiIsInByb3BlcnR5IiwibGF5ZXIiLCJvbkNoYW5nZSIsImNvbGxhcHNpYmxlIiwiZGlzYWJsZWQiLCJzdGF0ZSIsInNldFN0YXRlIiwiY29uZmlnIiwidmlzQ29uZmln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QVcsRUFBRSxLQURPO0FBRXBCTyxJQUFBQSxRQUFRLEVBQUUsS0FGVTtBQUdwQlIsSUFBQUEsUUFBUSxFQUFFLG9CQUFNLENBQUUsQ0FIRTtBQUlwQlAsSUFBQUEsV0FBVyxFQUFFLElBSk87QUFLcEJTLElBQUFBLFFBQVEsRUFBRTtBQUxVLEdBRjhCO0FBbUV0RCx1Q0FBU1AsZ0JBQVQ7QUFFQSxTQUFPQSxnQkFBUDtBQUNEOztlQUVjRCx1QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMSBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtwb2x5ZmlsbH0gZnJvbSAncmVhY3QtbGlmZWN5Y2xlcy1jb21wYXQnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7Rm9ybWF0dGVkTWVzc2FnZX0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQgU3dpdGNoIGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N3aXRjaCc7XG5pbXBvcnQgSW5mb0hlbHBlckZhY3RvcnkgZnJvbSAnY29tcG9uZW50cy9jb21tb24vaW5mby1oZWxwZXInO1xuaW1wb3J0IHtWZXJ0VGhyZWVEb3RzfSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucyc7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRMYXllckNvbmZpZ0dyb3VwQWN0aW9uID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbmA7XG5cbmV4cG9ydCBjb25zdCBDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudCA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdsYXllci1jb25maWctZ3JvdXBfX2NvbnRlbnRfX2NvbGxhcHNpYmxlJ1xufSlgXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuM3MgZWFzZS1vdXQ7XG4gIGhlaWdodDogbWF4LWNvbnRlbnQ7XG4gIG1heC1oZWlnaHQ6IDYwMHB4O1xuYDtcblxuZXhwb3J0IGNvbnN0IENvbmZpZ0dyb3VwQ29sbGFwc2libGVIZWFkZXIgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnbGF5ZXItY29uZmlnLWdyb3VwX19oZWFkZXJfX2NvbGxhcHNpYmxlJ1xufSlgXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBtYXgtaGVpZ2h0OiAwO1xuYDtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZExheWVyQ29uZmlnR3JvdXAgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nLWxlZnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGF5ZXJDb25maWdHcm91cFBhZGRpbmdMZWZ0fXB4O1xuICBtYXJnaW4tYm90dG9tOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxheWVyQ29uZmlnR3JvdXBNYXJnaW5Cb3R0b219cHg7XG5cbiAgJi5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC4zO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG4gICYuY29sbGFwc2VkIHtcbiAgICAubGF5ZXItY29uZmlnLWdyb3VwX19oZWFkZXJfX2NvbGxhcHNpYmxlIHtcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgbWF4LWhlaWdodDogNjAwcHg7XG4gICAgfVxuICAgIC5sYXllci1jb25maWctZ3JvdXBfX2NvbnRlbnQge1xuICAgICAgLmxheWVyLWNvbmZpZy1ncm91cF9fY29udGVudF9fY29sbGFwc2libGUge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXgtaGVpZ2h0OiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkQ29uZmlnR3JvdXBIZWFkZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbi1ib3R0b206IDEycHg7XG5cbiAgOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgLmxheWVyLWNvbmZpZy1ncm91cF9fbGFiZWwge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9ySGx9O1xuICAgIH1cblxuICAgIC5sYXllci1jb25maWctZ3JvdXBfX2FjdGlvbiB7XG4gICAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBDb25maWdHcm91cENvbnRlbnQgPSBzdHlsZWQuZGl2YFxuICAmLmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjM7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgKiB7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB9XG4gIH1cbmA7XG5cbkxheWVyQ29uZmlnR3JvdXBMYWJlbEZhY3RvcnkuZGVwcyA9IFtJbmZvSGVscGVyRmFjdG9yeV07XG5cbmV4cG9ydCBmdW5jdGlvbiBMYXllckNvbmZpZ0dyb3VwTGFiZWxGYWN0b3J5KEluZm9IZWxwZXIpIHtcbiAgY29uc3QgU3R5bGVkTGF5ZXJDb25maWdHcm91cExhYmVsID0gc3R5bGVkLmRpdmBcbiAgICBib3JkZXItbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTGFiZWxCb3JkZXJMZWZ0fSBzb2xpZFxuICAgICAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYWJlbENvbG9yfTtcbiAgICBsaW5lLWhlaWdodDogMTJweDtcbiAgICBtYXJnaW4tbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTGFiZWxNYXJnaW59O1xuICAgIHBhZGRpbmctbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTGFiZWxQYWRkaW5nfTtcblxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIHNwYW4ge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICBsZXR0ZXItc3BhY2luZzogMC4ycHg7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxheWVyQ29uZmlnR3JvdXBMYWJlbExhYmVsTWFyZ2lufTtcbiAgICAgIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTGFiZWxMYWJlbEZvbnRTaXplfTtcbiAgICB9XG4gIGA7XG5cbiAgY29uc3QgTGF5ZXJDb25maWdHcm91cExhYmVsID0gKHtsYWJlbCwgZGVzY3JpcHRpb259KSA9PiAoXG4gICAgPFN0eWxlZExheWVyQ29uZmlnR3JvdXBMYWJlbCBjbGFzc05hbWU9XCJsYXllci1jb25maWctZ3JvdXBfX2xhYmVsXCI+XG4gICAgICA8c3Bhbj5cbiAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9e2xhYmVsIHx8ICdtaXNjLmVtcHR5J30gZGVmYXVsdE1lc3NhZ2U9e2xhYmVsfSAvPlxuICAgICAgPC9zcGFuPlxuICAgICAge2Rlc2NyaXB0aW9uICYmIDxJbmZvSGVscGVyIGRlc2NyaXB0aW9uPXtkZXNjcmlwdGlvbn0gaWQ9e2xhYmVsfSAvPn1cbiAgICA8L1N0eWxlZExheWVyQ29uZmlnR3JvdXBMYWJlbD5cbiAgKTtcblxuICByZXR1cm4gTGF5ZXJDb25maWdHcm91cExhYmVsO1xufVxuXG5MYXllckNvbmZpZ0dyb3VwRmFjdG9yeS5kZXBzID0gW0xheWVyQ29uZmlnR3JvdXBMYWJlbEZhY3RvcnldO1xuXG5mdW5jdGlvbiBMYXllckNvbmZpZ0dyb3VwRmFjdG9yeShMYXllckNvbmZpZ0dyb3VwTGFiZWwpIHtcbiAgY2xhc3MgTGF5ZXJDb25maWdHcm91cCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgIGNvbGxhcHNpYmxlOiBmYWxzZSxcbiAgICAgIGV4cGFuZGVkOiBmYWxzZSxcbiAgICAgIG9uQ2hhbmdlOiAoKSA9PiB7fSxcbiAgICAgIGRlc2NyaXB0aW9uOiBudWxsLFxuICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgfTtcblxuICAgIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMocHJvcHMsIHN0YXRlKSB7XG4gICAgICAvLyAgaW52b2tlZCBhZnRlciBhIGNvbXBvbmVudCBpcyBpbnN0YW50aWF0ZWQgYXMgd2VsbCBhcyBiZWZvcmUgaXQgaXMgcmUtcmVuZGVyZWRcbiAgICAgIGlmIChwcm9wcy5leHBhbmRlZCAmJiBzdGF0ZS5jb2xsYXBzZWQpIHtcbiAgICAgICAgcmV0dXJuIHtjb2xsYXBzZWQ6IGZhbHNlfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgc3RhdGUgPSB7XG4gICAgICBjb2xsYXBzZWQ6IHRydWVcbiAgICB9O1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBsYWJlbCxcbiAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgIHByb3BlcnR5LFxuICAgICAgICBsYXllcixcbiAgICAgICAgb25DaGFuZ2UsXG4gICAgICAgIGNvbGxhcHNpYmxlLFxuICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgZGlzYWJsZWRcbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICBjb25zdCB7Y29sbGFwc2VkfSA9IHRoaXMuc3RhdGU7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRMYXllckNvbmZpZ0dyb3VwIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnbGF5ZXItY29uZmlnLWdyb3VwJywge2NvbGxhcHNlZCwgZGlzYWJsZWR9KX0+XG4gICAgICAgICAgPFN0eWxlZENvbmZpZ0dyb3VwSGVhZGVyXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJsYXllci1jb25maWctZ3JvdXBfX2hlYWRlclwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLnNldFN0YXRlKHtjb2xsYXBzZWQ6ICF0aGlzLnN0YXRlLmNvbGxhcHNlZH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwTGFiZWwgbGFiZWw9e2xhYmVsfSBkZXNjcmlwdGlvbj17ZGVzY3JpcHRpb259IC8+XG4gICAgICAgICAgICA8U3R5bGVkTGF5ZXJDb25maWdHcm91cEFjdGlvbiBjbGFzc05hbWU9XCJsYXllci1jb25maWctZ3JvdXBfX2FjdGlvblwiPlxuICAgICAgICAgICAgICB7cHJvcGVydHkgPyAoXG4gICAgICAgICAgICAgICAgPFN3aXRjaFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17bGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1twcm9wZXJ0eV19XG4gICAgICAgICAgICAgICAgICBpZD17YCR7bGF5ZXIuaWR9LSR7cHJvcGVydHl9YH1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBvbkNoYW5nZSh7W3Byb3BlcnR5XTogIWxheWVyLmNvbmZpZy52aXNDb25maWdbcHJvcGVydHldfSl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIHtjb2xsYXBzaWJsZSA/IDxWZXJ0VGhyZWVEb3RzIGhlaWdodD1cIjE4cHhcIiAvPiA6IG51bGx9XG4gICAgICAgICAgICA8L1N0eWxlZExheWVyQ29uZmlnR3JvdXBBY3Rpb24+XG4gICAgICAgICAgPC9TdHlsZWRDb25maWdHcm91cEhlYWRlcj5cbiAgICAgICAgICA8Q29uZmlnR3JvdXBDb250ZW50XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2xheWVyLWNvbmZpZy1ncm91cF9fY29udGVudCcsIHtcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IHByb3BlcnR5ICYmICFsYXllci5jb25maWcudmlzQ29uZmlnW3Byb3BlcnR5XVxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb250ZW50PlxuICAgICAgICA8L1N0eWxlZExheWVyQ29uZmlnR3JvdXA+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHBvbHlmaWxsKExheWVyQ29uZmlnR3JvdXApO1xuXG4gIHJldHVybiBMYXllckNvbmZpZ0dyb3VwO1xufVxuXG5leHBvcnQgZGVmYXVsdCBMYXllckNvbmZpZ0dyb3VwRmFjdG9yeTtcbiJdfQ==