UNPKG

kepler.gl.geoiq

Version:

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

176 lines (152 loc) 22.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 _reactSortableHoc = require("react-sortable-hoc"); 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")); var _layer = _interopRequireDefault(require("react-map-gl/dist/es5/components/layer")); var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5; 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 = (0, _styledComponents["default"])(_styledComponents2.StyledPanelHeader)(_templateObject || (_templateObject = (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"])), function (props) { return props.theme.panelBackgroundHover; }); var HeaderLabelSection = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n width: 100%;\n color: ", ";\n"])), function (props) { return props.theme.textColor; }); var HeaderActionSection = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n"]))); var LayerTitleSection = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: 12px;\n width: 100%;\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"])), function (props) { return props.theme.subtextColor; }); var StyledDragHandle = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n opacity: 0;\n z-index: 1000;\n\n :hover {\n cursor: move;\n opacity: 1;\n color: ", ";\n }\n"])), function (props) { return props.theme.textColorHl; }); var DragHandle = (0, _reactSortableHoc.sortableHandle)(function (_ref) { var className = _ref.className, children = _ref.children; return (/*#__PURE__*/_react["default"].createElement(StyledDragHandle, { className: className }, children) ); }); var LayerPanelHeader = function LayerPanelHeader(_ref2) { var className = _ref2.className, idx = _ref2.idx, isConfigActive = _ref2.isConfigActive, isDragNDropEnabled = _ref2.isDragNDropEnabled, isVisible = _ref2.isVisible, label = _ref2.label, layerId = _ref2.layerId, layerType = _ref2.layerType, labelRCGColorValues = _ref2.labelRCGColorValues, onToggleVisibility = _ref2.onToggleVisibility, onUpdateLayerLabel = _ref2.onUpdateLayerLabel, onToggleEnableConfig = _ref2.onToggleEnableConfig, onRemoveLayer = _ref2.onRemoveLayer, showRemoveLayer = _ref2.showRemoveLayer, apiCallLoader = _ref2.apiCallLoader, showLoader = _ref2.showLoader; return (/*#__PURE__*/_react["default"].createElement(StyledLayerPanelHeader, { className: (0, _classnames["default"])('layer-panel__header', { 'sort--handle': !isConfigActive }), active: isConfigActive, labelRCGColorValues: labelRCGColorValues, onClick: onToggleEnableConfig }, /*#__PURE__*/_react["default"].createElement(HeaderLabelSection, { className: "layer-panel__header__content" }, isDragNDropEnabled && /*#__PURE__*/_react["default"].createElement(DragHandle, { className: "layer__drag-handle" }, /*#__PURE__*/_react["default"].createElement(_icons.VertDots, { height: "20px" })), /*#__PURE__*/_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 }), /*#__PURE__*/_react["default"].createElement(LayerTitleSection, { className: "layer__title" }, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(LayerLabelEditor, { label: label, onEdit: onUpdateLayerLabel }), /*#__PURE__*/_react["default"].createElement("div", { className: "layer__title__type" }, layerType)))), layerType === 'boundary' || layerType === 'pincode' ? apiCallLoader && /*#__PURE__*/_react["default"].createElement("div", { style: { padding: '5px' } }, /*#__PURE__*/_react["default"].createElement(_loadingSpinner["default"], { size: 20 })) : null, showLoader && apiCallLoader && /*#__PURE__*/_react["default"].createElement("div", { style: { padding: '5px' } }, /*#__PURE__*/_react["default"].createElement(_loadingSpinner["default"], { size: 20 })), /*#__PURE__*/_react["default"].createElement(HeaderActionSection, { className: "layer-panel__header__actions" }, showRemoveLayer ? /*#__PURE__*/_react["default"].createElement(_panelHeaderAction["default"], { className: "layer__remove-layer", id: layerId, tooltip: 'Remove layer', onClick: onRemoveLayer, tooltipType: "error", IconComponent: _icons.Trash }) : null, /*#__PURE__*/_react["default"].createElement(_panelHeaderAction["default"], { className: "layer__enable-config", id: layerId, tooltip: 'Layer settings', onClick: onToggleEnableConfig, IconComponent: _icons.ArrowDown }))) ); }; var LayerLabelEditor = function LayerLabelEditor(_ref3) { var label = _ref3.label, onEdit = _ref3.onEdit; return (/*#__PURE__*/_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 = exports["default"] = LayerPanelHeader; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvbGF5ZXItcGFuZWwtaGVhZGVyLmpzIl0sIm5hbWVzIjpbInByb3BUeXBlcyIsImlkIiwiUHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsImlzRHJhZ05Ecm9wRW5hYmxlZCIsImJvb2wiLCJpc1Zpc2libGUiLCJsYWJlbCIsIm9uVG9nZ2xlVmlzaWJpbGl0eSIsImZ1bmMiLCJjbGFzc05hbWUiLCJpZHgiLCJudW1iZXIiLCJpc0NvbmZpZ0FjdGl2ZSIsImxhYmVsUkNHQ29sb3JWYWx1ZXMiLCJhcnJheU9mIiwib25VcGRhdGVMYXllckxhYmVsIiwib25SZW1vdmVMYXllciIsImRlZmF1bHRQcm9wcyIsInNob3dSZW1vdmVMYXllciIsIlN0eWxlZExheWVyUGFuZWxIZWFkZXIiLCJTdHlsZWRQYW5lbEhlYWRlciIsInByb3BzIiwidGhlbWUiLCJwYW5lbEJhY2tncm91bmRIb3ZlciIsIkhlYWRlckxhYmVsU2VjdGlvbiIsInN0eWxlZCIsImRpdiIsInRleHRDb2xvciIsIkhlYWRlckFjdGlvblNlY3Rpb24iLCJMYXllclRpdGxlU2VjdGlvbiIsInN1YnRleHRDb2xvciIsIlN0eWxlZERyYWdIYW5kbGUiLCJ0ZXh0Q29sb3JIbCIsIkRyYWdIYW5kbGUiLCJjaGlsZHJlbiIsIkxheWVyUGFuZWxIZWFkZXIiLCJsYXllcklkIiwibGF5ZXJUeXBlIiwib25Ub2dnbGVFbmFibGVDb25maWciLCJhcGlDYWxsTG9hZGVyIiwic2hvd0xvYWRlciIsIkV5ZVNlZW4iLCJFeWVVbnNlZW4iLCJwYWRkaW5nIiwiVHJhc2giLCJBcnJvd0Rvd24iLCJMYXllckxhYmVsRWRpdG9yIiwib25FZGl0IiwiZSIsInN0b3BQcm9wYWdhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBUUE7O0FBS0E7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RUFBQztBQVJMO0FBRHVCO0FBQUEsQ0FBekI7O0FBYUFaLGdCQUFnQixDQUFDckMsU0FBakIsR0FBNkJBLFNBQTdCO0FBQ0FxQyxnQkFBZ0IsQ0FBQ2xCLFlBQWpCLEdBQWdDQSxZQUFoQzs7b0NBRWVrQixnQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMyBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7c29ydGFibGVIYW5kbGV9IGZyb20gJ3JlYWN0LXNvcnRhYmxlLWhvYyc7XG5pbXBvcnQgUGFuZWxIZWFkZXJBY3Rpb24gZnJvbSAnY29tcG9uZW50cy9zaWRlLXBhbmVsL3BhbmVsLWhlYWRlci1hY3Rpb24nO1xuaW1wb3J0IHtcbiAgRXllU2VlbixcbiAgRXllVW5zZWVuLFxuICBWZXJ0RG90cyxcbiAgQXJyb3dEb3duLFxuICBUcmFzaFxufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucyc7XG5cbmltcG9ydCB7XG4gIElubGluZUlucHV0LFxuICBTdHlsZWRQYW5lbEhlYWRlclxufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCBMb2FkaW5nU3Bpbm5lciBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9sb2FkaW5nLXNwaW5uZXInO1xuaW1wb3J0IGxheWVyIGZyb20gJ3JlYWN0LW1hcC1nbC9kaXN0L2VzNS9jb21wb25lbnRzL2xheWVyJztcblxuY29uc3QgcHJvcFR5cGVzID0ge1xuICAvLyByZXF1aXJlZFxuICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBpc0RyYWdORHJvcEVuYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc1Zpc2libGU6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIG9uVG9nZ2xlVmlzaWJpbGl0eTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcblxuICAvLyBvcHRpb25hbFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlkeDogUHJvcFR5cGVzLm51bWJlcixcbiAgaXNDb25maWdBY3RpdmU6IFByb3BUeXBlcy5ib29sLFxuICBsYWJlbFJDR0NvbG9yVmFsdWVzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubnVtYmVyKSxcbiAgb25VcGRhdGVMYXllckxhYmVsOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZW1vdmVMYXllcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgaXNEcmFnTkRyb3BFbmFibGVkOiB0cnVlLFxuICBzaG93UmVtb3ZlTGF5ZXI6IHRydWVcbn07XG5cbmNvbnN0IFN0eWxlZExheWVyUGFuZWxIZWFkZXIgPSBzdHlsZWQoU3R5bGVkUGFuZWxIZWFkZXIpYFxuICAubGF5ZXJfX3JlbW92ZS1sYXllciB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICA6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBhbmVsQmFja2dyb3VuZEhvdmVyfTtcblxuICAgIC5sYXllcl9fZHJhZy1oYW5kbGUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICAubGF5ZXJfX3JlbW92ZS1sYXllciB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIC5sYXllcl9fZW5hYmxlLWNvbmZpZyB7XG4gICAgICBjb2xvcjogIzQ5NGM1MjtcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IEhlYWRlckxhYmVsU2VjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuYDtcblxuY29uc3QgSGVhZGVyQWN0aW9uU2VjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG5gO1xuXG5jb25zdCBMYXllclRpdGxlU2VjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICB3aWR0aDogMTAwJTtcbiAgLmxheWVyX190aXRsZV9fdHlwZSB7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yfTtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDEycHg7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMzdweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkRHJhZ0hhbmRsZSA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG9wYWNpdHk6IDA7XG4gIHotaW5kZXg6IDEwMDA7XG5cbiAgOmhvdmVyIHtcbiAgICBjdXJzb3I6IG1vdmU7XG4gICAgb3BhY2l0eTogMTtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gIH1cbmA7XG5cbmNvbnN0IERyYWdIYW5kbGUgPSBzb3J0YWJsZUhhbmRsZSgoe2NsYXNzTmFtZSwgY2hpbGRyZW59KSA9PiAoXG4gIDxTdHlsZWREcmFnSGFuZGxlIGNsYXNzTmFtZT17Y2xhc3NOYW1lfT57Y2hpbGRyZW59PC9TdHlsZWREcmFnSGFuZGxlPlxuKSk7XG5cbmNvbnN0IExheWVyUGFuZWxIZWFkZXIgPSAoe1xuICBjbGFzc05hbWUsXG4gIGlkeCxcbiAgaXNDb25maWdBY3RpdmUsXG4gIGlzRHJhZ05Ecm9wRW5hYmxlZCxcbiAgaXNWaXNpYmxlLFxuICBsYWJlbCxcbiAgbGF5ZXJJZCxcbiAgbGF5ZXJUeXBlLFxuICBsYWJlbFJDR0NvbG9yVmFsdWVzLFxuICBvblRvZ2dsZVZpc2liaWxpdHksXG4gIG9uVXBkYXRlTGF5ZXJMYWJlbCxcbiAgb25Ub2dnbGVFbmFibGVDb25maWcsXG4gIG9uUmVtb3ZlTGF5ZXIsXG4gIHNob3dSZW1vdmVMYXllcixcbiAgYXBpQ2FsbExvYWRlcixcbiAgc2hvd0xvYWRlclxufSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWRMYXllclBhbmVsSGVhZGVyXG4gICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2xheWVyLXBhbmVsX19oZWFkZXInLCB7XG4gICAgICAgICdzb3J0LS1oYW5kbGUnOiAhaXNDb25maWdBY3RpdmVcbiAgICAgIH0pfVxuICAgICAgYWN0aXZlPXtpc0NvbmZpZ0FjdGl2ZX1cbiAgICAgIGxhYmVsUkNHQ29sb3JWYWx1ZXM9e2xhYmVsUkNHQ29sb3JWYWx1ZXN9XG4gICAgICBvbkNsaWNrPXtvblRvZ2dsZUVuYWJsZUNvbmZpZ31cbiAgICA+XG4gICAgICA8SGVhZGVyTGFiZWxTZWN0aW9uIGNsYXNzTmFtZT1cImxheWVyLXBhbmVsX19oZWFkZXJfX2NvbnRlbnRcIj5cbiAgICAgICAge2lzRHJhZ05Ecm9wRW5hYmxlZCAmJiAoXG4gICAgICAgICAgPERyYWdIYW5kbGUgY2xhc3NOYW1lPVwibGF5ZXJfX2RyYWctaGFuZGxlXCI+XG4gICAgICAgICAgICA8VmVydERvdHMgaGVpZ2h0PVwiMjBweFwiIC8+XG4gICAgICAgICAgPC9EcmFnSGFuZGxlPlxuICAgICAgICApfVxuICAgICAgICA8UGFuZWxIZWFkZXJBY3Rpb25cbiAgICAgICAgICBjbGFzc05hbWU9XCJsYXllcl9fdmlzaWJpbGl0eS10b2dnbGVcIlxuICAgICAgICAgIGlkPXtsYXllcklkfVxuICAgICAgICAgIHRvb2x0aXA9e2lzVmlzaWJsZSA/ICdoaWRlIGxheWVyJyA6ICdzaG93IGxheWVyJ31cbiAgICAgICAgICBvbkNsaWNrPXtvblRvZ2dsZVZpc2liaWxpdHl9XG4gICAgICAgICAgSWNvbkNvbXBvbmVudD17aXNWaXNpYmxlID8gRXllU2VlbiA6IEV5ZVVuc2Vlbn1cbiAgICAgICAgICBhY3RpdmU9e2lzVmlzaWJsZX1cbiAgICAgICAgICBmbHVzaFxuICAgICAgICAvPlxuICAgICAgICA8TGF5ZXJUaXRsZVNlY3Rpb24gY2xhc3NOYW1lPVwibGF5ZXJfX3RpdGxlXCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxMYXllckxhYmVsRWRpdG9yIGxhYmVsPXtsYWJlbH0gb25FZGl0PXtvblVwZGF0ZUxheWVyTGFiZWx9IC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxheWVyX190aXRsZV9fdHlwZVwiPntsYXllclR5cGV9PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvTGF5ZXJUaXRsZVNlY3Rpb24+XG4gICAgICA8L0hlYWRlckxhYmVsU2VjdGlvbj5cblxuICAgICAge2xheWVyVHlwZSA9PT0gJ2JvdW5kYXJ5JyB8fCBsYXllclR5cGUgPT09ICdwaW5jb2RlJ1xuICAgICAgICA/IGFwaUNhbGxMb2FkZXIgJiYgKFxuICAgICAgICAgICAgPGRpdiBzdHlsZT17e3BhZGRpbmc6ICc1cHgnfX0+XG4gICAgICAgICAgICAgIDxMb2FkaW5nU3Bpbm5lciBzaXplPXsyMH0gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIClcbiAgICAgICAgOiBudWxsfVxuXG4gICAgICB7c2hvd0xvYWRlciAmJiBhcGlDYWxsTG9hZGVyICYmIChcbiAgICAgICAgPGRpdiBzdHlsZT17e3BhZGRpbmc6ICc1cHgnfX0+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIHNpemU9ezIwfSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgICA8SGVhZGVyQWN0aW9uU2VjdGlvbiBjbGFzc05hbWU9XCJsYXllci1wYW5lbF9faGVhZGVyX19hY3Rpb25zXCI+XG4gICAgICAgIHtzaG93UmVtb3ZlTGF5ZXIgPyAoXG4gICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJsYXllcl9fcmVtb3ZlLWxheWVyXCJcbiAgICAgICAgICAgIGlkPXtsYXllcklkfVxuICAgICAgICAgICAgdG9vbHRpcD17J1JlbW92ZSBsYXllcid9XG4gICAgICAgICAgICBvbkNsaWNrPXtvblJlbW92ZUxheWVyfVxuICAgICAgICAgICAgdG9vbHRpcFR5cGU9XCJlcnJvclwiXG4gICAgICAgICAgICBJY29uQ29tcG9uZW50PXtUcmFzaH1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXJfX2VuYWJsZS1jb25maWdcIlxuICAgICAgICAgIGlkPXtsYXllcklkfVxuICAgICAgICAgIHRvb2x0aXA9eydMYXllciBzZXR0aW5ncyd9XG4gICAgICAgICAgb25DbGljaz17b25Ub2dnbGVFbmFibGVDb25maWd9XG4gICAgICAgICAgSWNvbkNvbXBvbmVudD17QXJyb3dEb3dufVxuICAgICAgICAvPlxuICAgICAgPC9IZWFkZXJBY3Rpb25TZWN0aW9uPlxuICAgIDwvU3R5bGVkTGF5ZXJQYW5lbEhlYWRlcj5cbiAgKTtcbn07XG5cbmNvbnN0IExheWVyTGFiZWxFZGl0b3IgPSAoe2xhYmVsLCBvbkVkaXR9KSA9PiAoXG4gIDxJbmxpbmVJbnB1dFxuICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICBjbGFzc05hbWU9XCJsYXllcl9fdGl0bGVfX2VkaXRvclwiXG4gICAgdmFsdWU9e2xhYmVsfVxuICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9fVxuICAgIG9uQ2hhbmdlPXtvbkVkaXR9XG4gICAgaWQ9XCJpbnB1dC1sYXllci1sYWJlbFwiXG4gIC8+XG4pO1xuXG5MYXllclBhbmVsSGVhZGVyLnByb3BUeXBlcyA9IHByb3BUeXBlcztcbkxheWVyUGFuZWxIZWFkZXIuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuXG5leHBvcnQgZGVmYXVsdCBMYXllclBhbmVsSGVhZGVyO1xuIl19