UNPKG

kepler.gl.geoiq

Version:

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

203 lines (168 loc) 20.5 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _classnames = _interopRequireDefault(require("classnames")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _panelHeaderAction = _interopRequireDefault(require("../panel-header-action")); var _icons = require("../../common/icons"); var _styledComponents2 = require("../../common/styled-components"); var _loadingSpinner = _interopRequireDefault(require("../../common/loading-spinner")); function _templateObject5() { var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n opacity: 0;\n\n :hover {\n cursor: move;\n color: ", ";\n }\n"]); _templateObject5 = function _templateObject5() { return data; }; return data; } function _templateObject4() { var data = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: 12px;\n\n .layer__title__type {\n color: ", ";\n font-size: 10px;\n line-height: 12px;\n letter-spacing: 0.37px;\n text-transform: capitalize;\n }\n"]); _templateObject4 = function _templateObject4() { return data; }; return data; } function _templateObject3() { var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n"]); _templateObject3 = function _templateObject3() { return data; }; return data; } function _templateObject2() { var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n color: ", ";\n"]); _templateObject2 = function _templateObject2() { return data; }; return data; } function _templateObject() { var data = (0, _taggedTemplateLiteral2["default"])(["\n .layer__remove-layer {\n opacity: 0;\n }\n :hover {\n cursor: pointer;\n background-color: ", ";\n\n .layer__drag-handle {\n opacity: 1;\n }\n\n .layer__remove-layer {\n opacity: 1;\n }\n\n .layer__enable-config {\n color: #494c52;\n }\n }\n"]); _templateObject = function _templateObject() { return data; }; return data; } var propTypes = { // required id: _propTypes["default"].string.isRequired, isDragNDropEnabled: _propTypes["default"].bool, isVisible: _propTypes["default"].bool.isRequired, label: _propTypes["default"].string.isRequired, onToggleVisibility: _propTypes["default"].func.isRequired, // optional className: _propTypes["default"].string, idx: _propTypes["default"].number, isConfigActive: _propTypes["default"].bool, labelRCGColorValues: _propTypes["default"].arrayOf(_propTypes["default"].number), onUpdateLayerLabel: _propTypes["default"].func, onRemoveLayer: _propTypes["default"].func }; var defaultProps = { isDragNDropEnabled: true, showRemoveLayer: true }; var StyledLayerPanelHeader = _styledComponents2.StyledPanelHeader.extend(_templateObject(), function (props) { return props.theme.panelBackgroundHover; }); var HeaderLabelSection = _styledComponents["default"].div(_templateObject2(), function (props) { return props.theme.textColor; }); var HeaderActionSection = _styledComponents["default"].div(_templateObject3()); var LayerTitleSection = _styledComponents["default"].div(_templateObject4(), function (props) { return props.theme.subtextColor; }); var DragHandle = _styledComponents["default"].div(_templateObject5(), function (props) { return props.theme.textColorHl; }); var LayerPanelHeader = function LayerPanelHeader(_ref) { var className = _ref.className, idx = _ref.idx, isConfigActive = _ref.isConfigActive, isDragNDropEnabled = _ref.isDragNDropEnabled, isVisible = _ref.isVisible, label = _ref.label, layerId = _ref.layerId, layerType = _ref.layerType, labelRCGColorValues = _ref.labelRCGColorValues, onToggleVisibility = _ref.onToggleVisibility, onUpdateLayerLabel = _ref.onUpdateLayerLabel, onToggleEnableConfig = _ref.onToggleEnableConfig, onRemoveLayer = _ref.onRemoveLayer, showRemoveLayer = _ref.showRemoveLayer, apiCallLoader = _ref.apiCallLoader; return _react["default"].createElement(StyledLayerPanelHeader, { className: (0, _classnames["default"])('layer-panel__header', { 'sort--handle': !isConfigActive }), active: isConfigActive, labelRCGColorValues: labelRCGColorValues, onClick: onToggleEnableConfig }, _react["default"].createElement(HeaderLabelSection, { className: "layer-panel__header__content" }, isDragNDropEnabled && _react["default"].createElement(DragHandle, { className: "layer__drag-handle" }, _react["default"].createElement(_icons.VertDots, { height: "20px" })), _react["default"].createElement(_panelHeaderAction["default"], { className: "layer__visibility-toggle", id: layerId, tooltip: isVisible ? 'hide layer' : 'show layer', onClick: onToggleVisibility, IconComponent: isVisible ? _icons.EyeSeen : _icons.EyeUnseen, active: isVisible, flush: true }), _react["default"].createElement(LayerTitleSection, { className: "layer__title" }, _react["default"].createElement("div", null, _react["default"].createElement(LayerLabelEditor, { label: label, onEdit: onUpdateLayerLabel }), _react["default"].createElement("div", { className: "layer__title__type" }, layerType)))), apiCallLoader && _react["default"].createElement("div", { style: { padding: '5px' } }, _react["default"].createElement(_loadingSpinner["default"], { size: 20 })), _react["default"].createElement(HeaderActionSection, { className: "layer-panel__header__actions" }, showRemoveLayer ? _react["default"].createElement(_panelHeaderAction["default"], { className: "layer__remove-layer", id: layerId, tooltip: 'Remove layer', onClick: onRemoveLayer, tooltipType: "error", IconComponent: _icons.Trash }) : null, _react["default"].createElement(_panelHeaderAction["default"], { className: "layer__enable-config", id: layerId, tooltip: 'Layer settings', onClick: onToggleEnableConfig, IconComponent: _icons.ArrowDown }))); }; var LayerLabelEditor = function LayerLabelEditor(_ref2) { var label = _ref2.label, onEdit = _ref2.onEdit; return _react["default"].createElement(_styledComponents2.InlineInput, { type: "text", className: "layer__title__editor", value: label, onClick: function onClick(e) { e.stopPropagation(); }, onChange: onEdit, id: "input-layer-label" }); }; LayerPanelHeader.propTypes = propTypes; LayerPanelHeader.defaultProps = defaultProps; var _default = LayerPanelHeader; exports["default"] = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvbGF5ZXItcGFuZWwtaGVhZGVyLmpzIl0sIm5hbWVzIjpbInByb3BUeXBlcyIsImlkIiwiUHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsImlzRHJhZ05Ecm9wRW5hYmxlZCIsImJvb2wiLCJpc1Zpc2libGUiLCJsYWJlbCIsIm9uVG9nZ2xlVmlzaWJpbGl0eSIsImZ1bmMiLCJjbGFzc05hbWUiLCJpZHgiLCJudW1iZXIiLCJpc0NvbmZpZ0FjdGl2ZSIsImxhYmVsUkNHQ29sb3JWYWx1ZXMiLCJhcnJheU9mIiwib25VcGRhdGVMYXllckxhYmVsIiwib25SZW1vdmVMYXllciIsImRlZmF1bHRQcm9wcyIsInNob3dSZW1vdmVMYXllciIsIlN0eWxlZExheWVyUGFuZWxIZWFkZXIiLCJTdHlsZWRQYW5lbEhlYWRlciIsImV4dGVuZCIsInByb3BzIiwidGhlbWUiLCJwYW5lbEJhY2tncm91bmRIb3ZlciIsIkhlYWRlckxhYmVsU2VjdGlvbiIsInN0eWxlZCIsImRpdiIsInRleHRDb2xvciIsIkhlYWRlckFjdGlvblNlY3Rpb24iLCJMYXllclRpdGxlU2VjdGlvbiIsInN1YnRleHRDb2xvciIsIkRyYWdIYW5kbGUiLCJ0ZXh0Q29sb3JIbCIsIkxheWVyUGFuZWxIZWFkZXIiLCJsYXllcklkIiwibGF5ZXJUeXBlIiwib25Ub2dnbGVFbmFibGVDb25maWciLCJhcGlDYWxsTG9hZGVyIiwiRXllU2VlbiIsIkV5ZVVuc2VlbiIsInBhZGRpbmciLCJUcmFzaCIsIkFycm93RG93biIsIkxheWVyTGFiZWxFZGl0b3IiLCJvbkVkaXQiLCJlIiwic3RvcFByb3BhZ2F0aW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFRQTs7QUFLQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QVZOLEVBV0UsZ0NBQUMsNkJBQUQ7QUFDRSxJQUFBLFNBQVMsRUFBQyxzQkFEWjtBQUVFLElBQUEsRUFBRSxFQUFFUCxPQUZOO0FBR0UsSUFBQSxPQUFPLEVBQUUsZ0JBSFg7QUFJRSxJQUFBLE9BQU8sRUFBRUUsb0JBSlg7QUFLRSxJQUFBLGFBQWEsRUFBRU07QUFMakIsSUFYRixDQXBDRixDQURGO0FBMERELENBM0VEOztBQTZFQSxJQUFNQyxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQW1CO0FBQUEsTUFBRXRDLEtBQUYsU0FBRUEsS0FBRjtBQUFBLE1BQVN1QyxNQUFULFNBQVNBLE1BQVQ7QUFBQSxTQUN2QixnQ0FBQyw4QkFBRDtBQUNFLElBQUEsSUFBSSxFQUFDLE1BRFA7QUFFRSxJQUFBLFNBQVMsRUFBQyxzQkFGWjtBQUdFLElBQUEsS0FBSyxFQUFFdkMsS0FIVDtBQUlFLElBQUEsT0FBTyxFQUFFLGlCQUFBd0MsQ0FBQyxFQUFJO0FBQ1pBLE1BQUFBLENBQUMsQ0FBQ0MsZUFBRjtBQUNELEtBTkg7QUFPRSxJQUFBLFFBQVEsRUFBRUYsTUFQWjtBQVFFLElBQUEsRUFBRSxFQUFDO0FBUkwsSUFEdUI7QUFBQSxDQUF6Qjs7QUFhQVgsZ0JBQWdCLENBQUNwQyxTQUFqQixHQUE2QkEsU0FBN0I7QUFDQW9DLGdCQUFnQixDQUFDakIsWUFBakIsR0FBZ0NBLFlBQWhDO2VBRWVpQixnQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAxOSBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBQYW5lbEhlYWRlckFjdGlvbiBmcm9tICdjb21wb25lbnRzL3NpZGUtcGFuZWwvcGFuZWwtaGVhZGVyLWFjdGlvbic7XG5pbXBvcnQge1xuICBFeWVTZWVuLFxuICBFeWVVbnNlZW4sXG4gIFZlcnREb3RzLFxuICBBcnJvd0Rvd24sXG4gIFRyYXNoXG59IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2ljb25zJztcblxuaW1wb3J0IHtcbiAgSW5saW5lSW5wdXQsXG4gIFN0eWxlZFBhbmVsSGVhZGVyXG59IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IExvYWRpbmdTcGlubmVyIGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2xvYWRpbmctc3Bpbm5lcic7XG5cbmNvbnN0IHByb3BUeXBlcyA9IHtcbiAgLy8gcmVxdWlyZWRcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgaXNEcmFnTkRyb3BFbmFibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNWaXNpYmxlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBvblRvZ2dsZVZpc2liaWxpdHk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG5cbiAgLy8gb3B0aW9uYWxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpZHg6IFByb3BUeXBlcy5udW1iZXIsXG4gIGlzQ29uZmlnQWN0aXZlOiBQcm9wVHlwZXMuYm9vbCxcbiAgbGFiZWxSQ0dDb2xvclZhbHVlczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm51bWJlciksXG4gIG9uVXBkYXRlTGF5ZXJMYWJlbDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVtb3ZlTGF5ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIGlzRHJhZ05Ecm9wRW5hYmxlZDogdHJ1ZSxcbiAgc2hvd1JlbW92ZUxheWVyOiB0cnVlXG59O1xuXG5jb25zdCBTdHlsZWRMYXllclBhbmVsSGVhZGVyID0gU3R5bGVkUGFuZWxIZWFkZXIuZXh0ZW5kYFxuICAubGF5ZXJfX3JlbW92ZS1sYXllciB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICA6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBhbmVsQmFja2dyb3VuZEhvdmVyfTtcblxuICAgIC5sYXllcl9fZHJhZy1oYW5kbGUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICAubGF5ZXJfX3JlbW92ZS1sYXllciB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIC5sYXllcl9fZW5hYmxlLWNvbmZpZyB7XG4gICAgICBjb2xvcjogIzQ5NGM1MjtcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IEhlYWRlckxhYmVsU2VjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG5gO1xuXG5jb25zdCBIZWFkZXJBY3Rpb25TZWN0aW9uID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbmA7XG5cbmNvbnN0IExheWVyVGl0bGVTZWN0aW9uID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luLWxlZnQ6IDEycHg7XG5cbiAgLmxheWVyX190aXRsZV9fdHlwZSB7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yfTtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDEycHg7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMzdweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgfVxuYDtcblxuY29uc3QgRHJhZ0hhbmRsZSA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG9wYWNpdHk6IDA7XG5cbiAgOmhvdmVyIHtcbiAgICBjdXJzb3I6IG1vdmU7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9ySGx9O1xuICB9XG5gO1xuXG5jb25zdCBMYXllclBhbmVsSGVhZGVyID0gKHtcbiAgY2xhc3NOYW1lLFxuICBpZHgsXG4gIGlzQ29uZmlnQWN0aXZlLFxuICBpc0RyYWdORHJvcEVuYWJsZWQsXG4gIGlzVmlzaWJsZSxcbiAgbGFiZWwsXG4gIGxheWVySWQsXG4gIGxheWVyVHlwZSxcbiAgbGFiZWxSQ0dDb2xvclZhbHVlcyxcbiAgb25Ub2dnbGVWaXNpYmlsaXR5LFxuICBvblVwZGF0ZUxheWVyTGFiZWwsXG4gIG9uVG9nZ2xlRW5hYmxlQ29uZmlnLFxuICBvblJlbW92ZUxheWVyLFxuICBzaG93UmVtb3ZlTGF5ZXIsXG4gIGFwaUNhbGxMb2FkZXJcbn0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkTGF5ZXJQYW5lbEhlYWRlclxuICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdsYXllci1wYW5lbF9faGVhZGVyJywge1xuICAgICAgICAnc29ydC0taGFuZGxlJzogIWlzQ29uZmlnQWN0aXZlXG4gICAgICB9KX1cbiAgICAgIGFjdGl2ZT17aXNDb25maWdBY3RpdmV9XG4gICAgICBsYWJlbFJDR0NvbG9yVmFsdWVzPXtsYWJlbFJDR0NvbG9yVmFsdWVzfVxuICAgICAgb25DbGljaz17b25Ub2dnbGVFbmFibGVDb25maWd9XG4gICAgPlxuICAgICAgPEhlYWRlckxhYmVsU2VjdGlvbiBjbGFzc05hbWU9XCJsYXllci1wYW5lbF9faGVhZGVyX19jb250ZW50XCI+XG4gICAgICAgIHtpc0RyYWdORHJvcEVuYWJsZWQgJiYgKFxuICAgICAgICAgIDxEcmFnSGFuZGxlIGNsYXNzTmFtZT1cImxheWVyX19kcmFnLWhhbmRsZVwiPlxuICAgICAgICAgICAgPFZlcnREb3RzIGhlaWdodD1cIjIwcHhcIiAvPlxuICAgICAgICAgIDwvRHJhZ0hhbmRsZT5cbiAgICAgICAgKX1cbiAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXJfX3Zpc2liaWxpdHktdG9nZ2xlXCJcbiAgICAgICAgICBpZD17bGF5ZXJJZH1cbiAgICAgICAgICB0b29sdGlwPXtpc1Zpc2libGUgPyAnaGlkZSBsYXllcicgOiAnc2hvdyBsYXllcid9XG4gICAgICAgICAgb25DbGljaz17b25Ub2dnbGVWaXNpYmlsaXR5fVxuICAgICAgICAgIEljb25Db21wb25lbnQ9e2lzVmlzaWJsZSA/IEV5ZVNlZW4gOiBFeWVVbnNlZW59XG4gICAgICAgICAgYWN0aXZlPXtpc1Zpc2libGV9XG4gICAgICAgICAgZmx1c2hcbiAgICAgICAgLz5cbiAgICAgICAgPExheWVyVGl0bGVTZWN0aW9uIGNsYXNzTmFtZT1cImxheWVyX190aXRsZVwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8TGF5ZXJMYWJlbEVkaXRvciBsYWJlbD17bGFiZWx9IG9uRWRpdD17b25VcGRhdGVMYXllckxhYmVsfSAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYXllcl9fdGl0bGVfX3R5cGVcIj57bGF5ZXJUeXBlfTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0xheWVyVGl0bGVTZWN0aW9uPlxuICAgICAgPC9IZWFkZXJMYWJlbFNlY3Rpb24+XG5cbiAgICAgIHthcGlDYWxsTG9hZGVyICYmIChcbiAgICAgICAgPGRpdiBzdHlsZT17e3BhZGRpbmc6ICc1cHgnfX0+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIHNpemU9ezIwfSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgICA8SGVhZGVyQWN0aW9uU2VjdGlvbiBjbGFzc05hbWU9XCJsYXllci1wYW5lbF9faGVhZGVyX19hY3Rpb25zXCI+XG4gICAgICAgIHtzaG93UmVtb3ZlTGF5ZXIgPyAoXG4gICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJsYXllcl9fcmVtb3ZlLWxheWVyXCJcbiAgICAgICAgICAgIGlkPXtsYXllcklkfVxuICAgICAgICAgICAgdG9vbHRpcD17J1JlbW92ZSBsYXllcid9XG4gICAgICAgICAgICBvbkNsaWNrPXtvblJlbW92ZUxheWVyfVxuICAgICAgICAgICAgdG9vbHRpcFR5cGU9XCJlcnJvclwiXG4gICAgICAgICAgICBJY29uQ29tcG9uZW50PXtUcmFzaH1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXJfX2VuYWJsZS1jb25maWdcIlxuICAgICAgICAgIGlkPXtsYXllcklkfVxuICAgICAgICAgIHRvb2x0aXA9eydMYXllciBzZXR0aW5ncyd9XG4gICAgICAgICAgb25DbGljaz17b25Ub2dnbGVFbmFibGVDb25maWd9XG4gICAgICAgICAgSWNvbkNvbXBvbmVudD17QXJyb3dEb3dufVxuICAgICAgICAvPlxuICAgICAgPC9IZWFkZXJBY3Rpb25TZWN0aW9uPlxuICAgIDwvU3R5bGVkTGF5ZXJQYW5lbEhlYWRlcj5cbiAgKTtcbn07XG5cbmNvbnN0IExheWVyTGFiZWxFZGl0b3IgPSAoe2xhYmVsLCBvbkVkaXR9KSA9PiAoXG4gIDxJbmxpbmVJbnB1dFxuICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICBjbGFzc05hbWU9XCJsYXllcl9fdGl0bGVfX2VkaXRvclwiXG4gICAgdmFsdWU9e2xhYmVsfVxuICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9fVxuICAgIG9uQ2hhbmdlPXtvbkVkaXR9XG4gICAgaWQ9XCJpbnB1dC1sYXllci1sYWJlbFwiXG4gIC8+XG4pO1xuXG5MYXllclBhbmVsSGVhZGVyLnByb3BUeXBlcyA9IHByb3BUeXBlcztcbkxheWVyUGFuZWxIZWFkZXIuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuXG5leHBvcnQgZGVmYXVsdCBMYXllclBhbmVsSGVhZGVyO1xuIl19