UNPKG

kepler.gl

Version:

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

137 lines (136 loc) 25.2 kB
"use strict"; 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 _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireWildcard(require("react")); var _classnames = _interopRequireDefault(require("classnames")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _mouseEvent = _interopRequireDefault(require("./mouse-event")); var _templateObject, _templateObject2; // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; } function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } var StyledSliderHandle = _styledComponents["default"].span.attrs(function (props) { return { className: (0, _classnames["default"])('kg-range-slider__handle', props.className) }; })(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n z-index: 10;\n ", ": -", "px;\n\n height: ", "px;\n width: ", "px;\n box-shadow: ", ";\n background-color: ", ";\n color: ", ";\n\n border-width: 1px;\n border-radius: ", ";\n border-style: solid;\n border-color: ", ";\n\n &:hover {\n background-color: ", ";\n cursor: pointer;\n }\n\n line-height: 10px;\n font-size: 6px;\n padding: 0 3px;\n letter-spacing: 1px;\n &:after {\n content: '", "';\n }\n"])), function (props) { return props.vertical ? 'margin-left' : 'margin-top'; }, function (props) { return (props.sliderHandleWidth - props.theme.sliderBarHeight) / 2; }, function (props) { return Number.isFinite(props.sliderHandleWidth) ? props.sliderHandleWidth : props.theme.sliderHandleHeight; }, function (props) { return Number.isFinite(props.sliderHandleWidth) ? props.sliderHandleWidth : props.theme.sliderHandleHeight; }, function (props) { return props.theme.sliderHandleShadow; }, function (props) { return props.theme.sliderHandleColor; }, function (props) { return props.theme.sliderHandleTextColor; }, function (props) { return props.theme.sliderBorderRadius; }, function (props) { return props.active ? props.theme.selectBorderColor : props.theme.sliderInactiveBorderColor; }, function (props) { return props.theme.sliderHandleHoverColor; }, function (props) { return props.theme.sliderHandleAfterContent; }); var StyledSliderTooltip = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n border-radius: 3px;\n display: inline-block;\n pointer-events: none;\n transition: opacity 0.3s ease-out;\n z-index: 999;\n margin-left: ", "px;\n font-size: 9.5px;\n font-weight: 500;\n padding: 7px 10px;\n background-color: ", ";\n color: ", ";\n margin-bottom: -6px;\n width: 50px;\n\n &:before,\n &:after {\n content: '';\n width: 0;\n height: 0;\n position: absolute;\n }\n\n &:before {\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n left: -8px;\n top: 50%;\n }\n\n &:after {\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n left: -6px;\n top: 50%;\n margin-top: -4px;\n border-right-color: ", ";\n border-right-style: solid;\n border-right-width: 6px;\n }\n"])), function (props) { return props.sliderHandleWidth + 12; }, function (props) { return props.theme.tooltipBg; }, function (props) { return props.theme.tooltipColor; }, function (props) { return props.theme.tooltipBg; }); var SliderTooltip = function SliderTooltip(_ref) { var value = _ref.value, _ref$format = _ref.format, format = _ref$format === void 0 ? function (val) { return val; } : _ref$format, style = _ref.style, sliderHandleWidth = _ref.sliderHandleWidth; return /*#__PURE__*/_react["default"].createElement(StyledSliderTooltip, { sliderHandleWidth: sliderHandleWidth, style: style }, format(value)); }; var SliderHandle = exports["default"] = /*#__PURE__*/function (_Component) { function SliderHandle(props) { var _this; (0, _classCallCheck2["default"])(this, SliderHandle); _this = _callSuper(this, SliderHandle, [props]); (0, _defineProperty2["default"])(_this, "mouseEvent", void 0); (0, _defineProperty2["default"])(_this, "state", { mouseOver: false }); (0, _defineProperty2["default"])(_this, "ref", /*#__PURE__*/(0, _react.createRef)()); (0, _defineProperty2["default"])(_this, "toggleMouseOver", function () { _this.setState({ mouseOver: !_this.state.mouseOver }); }); _this.props = props; _this.mouseEvent = new _mouseEvent["default"]({ vertical: props.vertical, valueListener: props.valueListener, toggleMouseOver: _this.toggleMouseOver, track: props.track }); return _this; } (0, _inherits2["default"])(SliderHandle, _Component); return (0, _createClass2["default"])(SliderHandle, [{ key: "render", value: function render() { var style = (0, _defineProperty2["default"])({}, this.props.vertical ? 'bottom' : 'left', this.props.left); return /*#__PURE__*/_react["default"].createElement("div", { style: { display: this.props.display ? 'block' : 'none' } }, this.props.showTooltip && this.state.mouseOver ? /*#__PURE__*/_react["default"].createElement(SliderTooltip, { style: style, sliderHandleWidth: this.props.sliderHandleWidth, value: Number.isFinite(this.props.value) ? this.props.value : null }) : null, /*#__PURE__*/_react["default"].createElement(StyledSliderHandle, { className: (0, _classnames["default"])({ 'kg-range-slider__handle--active': this.state.mouseOver }), ref: this.ref, sliderHandleWidth: this.props.sliderHandleWidth, active: this.state.mouseOver, vertical: this.props.vertical, style: style, onMouseDown: this.mouseEvent.handleMouseDown, onTouchStart: this.mouseEvent.handleTouchStart })); } }]); }(_react.Component); (0, _defineProperty2["default"])(SliderHandle, "defaultProps", { sliderHandleWidth: 12, left: '50%', display: true, vertical: false, valueListener: function valueListenerFn() { return; }, showTooltip: false }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9tb3VzZUV2ZW50IiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9jYWxsU3VwZXIiLCJvIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiU3R5bGVkU2xpZGVySGFuZGxlIiwic3R5bGVkIiwic3BhbiIsImF0dHJzIiwicHJvcHMiLCJjbGFzc05hbWUiLCJjbGFzc25hbWVzIiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJ2ZXJ0aWNhbCIsInNsaWRlckhhbmRsZVdpZHRoIiwidGhlbWUiLCJzbGlkZXJCYXJIZWlnaHQiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsInNsaWRlckhhbmRsZUhlaWdodCIsInNsaWRlckhhbmRsZVNoYWRvdyIsInNsaWRlckhhbmRsZUNvbG9yIiwic2xpZGVySGFuZGxlVGV4dENvbG9yIiwic2xpZGVyQm9yZGVyUmFkaXVzIiwiYWN0aXZlIiwic2VsZWN0Qm9yZGVyQ29sb3IiLCJzbGlkZXJJbmFjdGl2ZUJvcmRlckNvbG9yIiwic2xpZGVySGFuZGxlSG92ZXJDb2xvciIsInNsaWRlckhhbmRsZUFmdGVyQ29udGVudCIsIlN0eWxlZFNsaWRlclRvb2x0aXAiLCJkaXYiLCJ0b29sdGlwQmciLCJ0b29sdGlwQ29sb3IiLCJTbGlkZXJUb29sdGlwIiwiX3JlZiIsInZhbHVlIiwiX3JlZiRmb3JtYXQiLCJmb3JtYXQiLCJ2YWwiLCJzdHlsZSIsImNyZWF0ZUVsZW1lbnQiLCJTbGlkZXJIYW5kbGUiLCJleHBvcnRzIiwiX0NvbXBvbmVudCIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJtb3VzZU92ZXIiLCJjcmVhdGVSZWYiLCJzZXRTdGF0ZSIsInN0YXRlIiwibW91c2VFdmVudCIsIk1vdXNlRXZlbnRIYW5kbGVyIiwidmFsdWVMaXN0ZW5lciIsInRvZ2dsZU1vdXNlT3ZlciIsInRyYWNrIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJyZW5kZXIiLCJsZWZ0IiwiZGlzcGxheSIsInNob3dUb29sdGlwIiwicmVmIiwib25Nb3VzZURvd24iLCJoYW5kbGVNb3VzZURvd24iLCJvblRvdWNoU3RhcnQiLCJoYW5kbGVUb3VjaFN0YXJ0IiwiQ29tcG9uZW50IiwidmFsdWVMaXN0ZW5lckZuIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1vbi9zbGlkZXIvc2xpZGVyLWhhbmRsZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWYsIENTU1Byb3BlcnRpZXMsIFJlZk9iamVjdH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgc3R5bGVkLCB7SVN0eWxlZENvbXBvbmVudH0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IE1vdXNlRXZlbnRIYW5kbGVyIGZyb20gJy4vbW91c2UtZXZlbnQnO1xuaW1wb3J0IHtTdHlsZVJhbmdlU2xpZGVyVHlwZX0gZnJvbSAnLi9zbGlkZXInO1xuaW1wb3J0IHtCYXNlQ29tcG9uZW50UHJvcHN9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgU3R5bGVkU2xpZGVySGFuZGxlUHJvcHMgPSBTdHlsZWRTbGlkZXJUb29sdGlwUHJvcHMgJiB7XG4gIHZlcnRpY2FsPzogYm9vbGVhbjtcbiAgYWN0aXZlPzogYm9vbGVhbjtcbiAgcmVmOiBSZWZPYmplY3Q8RWxlbWVudD47XG59O1xuXG5jb25zdCBTdHlsZWRTbGlkZXJIYW5kbGU6IElTdHlsZWRDb21wb25lbnQ8J3dlYicsIFN0eWxlZFNsaWRlckhhbmRsZVByb3BzPiA9IHN0eWxlZC5zcGFuLmF0dHJzKFxuICBwcm9wcyA9PiAoe1xuICAgIGNsYXNzTmFtZTogY2xhc3NuYW1lcygna2ctcmFuZ2Utc2xpZGVyX19oYW5kbGUnLCBwcm9wcy5jbGFzc05hbWUpXG4gIH0pXG4pPFN0eWxlZFNsaWRlckhhbmRsZVByb3BzPmBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDtcbiAgJHtwcm9wcyA9PiAocHJvcHMudmVydGljYWwgPyAnbWFyZ2luLWxlZnQnIDogJ21hcmdpbi10b3AnKX06IC0ke3Byb3BzID0+XG4gICAgKHByb3BzLnNsaWRlckhhbmRsZVdpZHRoIC0gcHJvcHMudGhlbWUuc2xpZGVyQmFySGVpZ2h0KSAvIDJ9cHg7XG5cbiAgaGVpZ2h0OiAke3Byb3BzID0+XG4gICAgTnVtYmVyLmlzRmluaXRlKHByb3BzLnNsaWRlckhhbmRsZVdpZHRoKVxuICAgICAgPyBwcm9wcy5zbGlkZXJIYW5kbGVXaWR0aFxuICAgICAgOiBwcm9wcy50aGVtZS5zbGlkZXJIYW5kbGVIZWlnaHR9cHg7XG4gIHdpZHRoOiAke3Byb3BzID0+XG4gICAgTnVtYmVyLmlzRmluaXRlKHByb3BzLnNsaWRlckhhbmRsZVdpZHRoKVxuICAgICAgPyBwcm9wcy5zbGlkZXJIYW5kbGVXaWR0aFxuICAgICAgOiBwcm9wcy50aGVtZS5zbGlkZXJIYW5kbGVIZWlnaHR9cHg7XG4gIGJveC1zaGFkb3c6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2xpZGVySGFuZGxlU2hhZG93fTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zbGlkZXJIYW5kbGVDb2xvcn07XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNsaWRlckhhbmRsZVRleHRDb2xvcn07XG5cbiAgYm9yZGVyLXdpZHRoOiAxcHg7XG4gIGJvcmRlci1yYWRpdXM6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2xpZGVyQm9yZGVyUmFkaXVzfTtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLWNvbG9yOiAke3Byb3BzID0+XG4gICAgcHJvcHMuYWN0aXZlID8gcHJvcHMudGhlbWUuc2VsZWN0Qm9yZGVyQ29sb3IgOiBwcm9wcy50aGVtZS5zbGlkZXJJbmFjdGl2ZUJvcmRlckNvbG9yfTtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNsaWRlckhhbmRsZUhvdmVyQ29sb3J9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gIGxpbmUtaGVpZ2h0OiAxMHB4O1xuICBmb250LXNpemU6IDZweDtcbiAgcGFkZGluZzogMCAzcHg7XG4gIGxldHRlci1zcGFjaW5nOiAxcHg7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcke3Byb3BzID0+IHByb3BzLnRoZW1lLnNsaWRlckhhbmRsZUFmdGVyQ29udGVudH0nO1xuICB9XG5gO1xuXG5leHBvcnQgdHlwZSBTdHlsZWRTbGlkZXJUb29sdGlwUHJvcHMgPSBCYXNlQ29tcG9uZW50UHJvcHMgJiB7XG4gIHNsaWRlckhhbmRsZVdpZHRoOiBudW1iZXI7XG59O1xuXG5jb25zdCBTdHlsZWRTbGlkZXJUb29sdGlwOiBJU3R5bGVkQ29tcG9uZW50PFxuICAnd2ViJyxcbiAgU3R5bGVkU2xpZGVyVG9vbHRpcFByb3BzXG4+ID0gc3R5bGVkLmRpdjxTdHlsZWRTbGlkZXJUb29sdGlwUHJvcHM+YFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2Utb3V0O1xuICB6LWluZGV4OiA5OTk7XG4gIG1hcmdpbi1sZWZ0OiAke3Byb3BzID0+IHByb3BzLnNsaWRlckhhbmRsZVdpZHRoICsgMTJ9cHg7XG4gIGZvbnQtc2l6ZTogOS41cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIHBhZGRpbmc6IDdweCAxMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRvb2x0aXBCZ307XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRvb2x0aXBDb2xvcn07XG4gIG1hcmdpbi1ib3R0b206IC02cHg7XG4gIHdpZHRoOiA1MHB4O1xuXG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICB3aWR0aDogMDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICB9XG5cbiAgJjpiZWZvcmUge1xuICAgIGJvcmRlci10b3A6IDZweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItYm90dG9tOiA2cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgbGVmdDogLThweDtcbiAgICB0b3A6IDUwJTtcbiAgfVxuXG4gICY6YWZ0ZXIge1xuICAgIGJvcmRlci10b3A6IDVweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItYm90dG9tOiA1cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgbGVmdDogLTZweDtcbiAgICB0b3A6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiAtNHB4O1xuICAgIGJvcmRlci1yaWdodC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50b29sdGlwQmd9O1xuICAgIGJvcmRlci1yaWdodC1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiA2cHg7XG4gIH1cbmA7XG5cbnR5cGUgU2xpZGVyVG9vbHRpcFByb3BzID0ge1xuICB2YWx1ZT86IG51bWJlciB8IG51bGw7XG4gIGZvcm1hdD86ICh2YWx1ZTogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4gbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgc3R5bGU6IENTU1Byb3BlcnRpZXM7XG4gIHNsaWRlckhhbmRsZVdpZHRoOiBudW1iZXI7XG59O1xuXG5jb25zdCBTbGlkZXJUb29sdGlwID0gKHtcbiAgdmFsdWUsXG4gIGZvcm1hdCA9IHZhbCA9PiB2YWwsXG4gIHN0eWxlLFxuICBzbGlkZXJIYW5kbGVXaWR0aFxufTogU2xpZGVyVG9vbHRpcFByb3BzKSA9PiB7XG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFNsaWRlclRvb2x0aXAgc2xpZGVySGFuZGxlV2lkdGg9e3NsaWRlckhhbmRsZVdpZHRofSBzdHlsZT17c3R5bGV9PlxuICAgICAge2Zvcm1hdCh2YWx1ZSl9XG4gICAgPC9TdHlsZWRTbGlkZXJUb29sdGlwPlxuICApO1xufTtcblxudHlwZSBTbGlkZXJIYW5kbGVQcm9wcyA9IHtcbiAgc2xpZGVySGFuZGxlV2lkdGg6IG51bWJlcjtcbiAgbGVmdDogc3RyaW5nO1xuICBkaXNwbGF5OiBib29sZWFuO1xuICB2YWx1ZUxpc3RlbmVyOiAoZGlzdGFuY2U6IG51bWJlcikgPT4gdm9pZDtcbiAgdmVydGljYWw6IGJvb2xlYW47XG4gIHRyYWNrOiBSZWZPYmplY3Q8U3R5bGVSYW5nZVNsaWRlclR5cGU+O1xuICBzaG93VG9vbHRpcDogYm9vbGVhbjtcbiAgdmFsdWU/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbGlkZXJIYW5kbGUgZXh0ZW5kcyBDb21wb25lbnQge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIHNsaWRlckhhbmRsZVdpZHRoOiAxMixcbiAgICBsZWZ0OiAnNTAlJyxcbiAgICBkaXNwbGF5OiB0cnVlLFxuICAgIHZlcnRpY2FsOiBmYWxzZSxcbiAgICB2YWx1ZUxpc3RlbmVyOiBmdW5jdGlvbiB2YWx1ZUxpc3RlbmVyRm4oKSB7XG4gICAgICByZXR1cm47XG4gICAgfSxcbiAgICBzaG93VG9vbHRpcDogZmFsc2VcbiAgfTtcblxuICBwdWJsaWMgbW91c2VFdmVudDogTW91c2VFdmVudEhhbmRsZXI7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHByb3BzOiBTbGlkZXJIYW5kbGVQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMubW91c2VFdmVudCA9IG5ldyBNb3VzZUV2ZW50SGFuZGxlcih7XG4gICAgICB2ZXJ0aWNhbDogcHJvcHMudmVydGljYWwsXG4gICAgICB2YWx1ZUxpc3RlbmVyOiBwcm9wcy52YWx1ZUxpc3RlbmVyLFxuICAgICAgdG9nZ2xlTW91c2VPdmVyOiB0aGlzLnRvZ2dsZU1vdXNlT3ZlcixcbiAgICAgIHRyYWNrOiBwcm9wcy50cmFja1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGUgPSB7bW91c2VPdmVyOiBmYWxzZX07XG4gIHJlZiA9IGNyZWF0ZVJlZjxIVE1MU3BhbkVsZW1lbnQ+KCk7XG5cbiAgdG9nZ2xlTW91c2VPdmVyID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe21vdXNlT3ZlcjogIXRoaXMuc3RhdGUubW91c2VPdmVyfSk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHN0eWxlID0ge1t0aGlzLnByb3BzLnZlcnRpY2FsID8gJ2JvdHRvbScgOiAnbGVmdCddOiB0aGlzLnByb3BzLmxlZnR9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgc3R5bGU9e3tkaXNwbGF5OiB0aGlzLnByb3BzLmRpc3BsYXkgPyAnYmxvY2snIDogJ25vbmUnfX0+XG4gICAgICAgIHt0aGlzLnByb3BzLnNob3dUb29sdGlwICYmIHRoaXMuc3RhdGUubW91c2VPdmVyID8gKFxuICAgICAgICAgIDxTbGlkZXJUb29sdGlwXG4gICAgICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgICAgICBzbGlkZXJIYW5kbGVXaWR0aD17dGhpcy5wcm9wcy5zbGlkZXJIYW5kbGVXaWR0aH1cbiAgICAgICAgICAgIHZhbHVlPXtOdW1iZXIuaXNGaW5pdGUodGhpcy5wcm9wcy52YWx1ZSkgPyB0aGlzLnByb3BzLnZhbHVlIDogbnVsbH1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPFN0eWxlZFNsaWRlckhhbmRsZVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyh7XG4gICAgICAgICAgICAna2ctcmFuZ2Utc2xpZGVyX19oYW5kbGUtLWFjdGl2ZSc6IHRoaXMuc3RhdGUubW91c2VPdmVyXG4gICAgICAgICAgfSl9XG4gICAgICAgICAgcmVmPXt0aGlzLnJlZn1cbiAgICAgICAgICBzbGlkZXJIYW5kbGVXaWR0aD17dGhpcy5wcm9wcy5zbGlkZXJIYW5kbGVXaWR0aH1cbiAgICAgICAgICBhY3RpdmU9e3RoaXMuc3RhdGUubW91c2VPdmVyfVxuICAgICAgICAgIHZlcnRpY2FsPXt0aGlzLnByb3BzLnZlcnRpY2FsfVxuICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICBvbk1vdXNlRG93bj17dGhpcy5tb3VzZUV2ZW50LmhhbmRsZU1vdXNlRG93bn1cbiAgICAgICAgICBvblRvdWNoU3RhcnQ9e3RoaXMubW91c2VFdmVudC5oYW5kbGVUb3VjaFN0YXJ0fVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxX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