UNPKG

kepler.gl.geoiq

Version:

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

189 lines (152 loc) 26.6 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 _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 _styledComponents = _interopRequireDefault(require("styled-components")); var _reselect = require("reselect"); var _fieldSelector = _interopRequireDefault(require("../common/field-selector")); var _styledComponents2 = require("../common/styled-components"); var _icons = require("../common/icons"); var _speedControl = _interopRequireDefault(require("../common/animation-control/speed-control")); var _timeRangeFilter = _interopRequireDefault(require("./time-range-filter")); var _floatingTimeDisplay = _interopRequireDefault(require("../common/animation-control/floating-time-display")); var _templateObject, _templateObject2; function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } 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 TOP_SECTION_HEIGHT = '36px'; var TopSectionWrapper = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n width: 90%;\n color: ", ";\n height: ", ";\n\n .bottom-widget__y-axis {\n flex-grow: 1;\n margin-left: 20px;\n }\n\n .bottom-widget__field-select {\n width: 160px;\n display: inline-block;\n\n .item-selector__dropdown {\n background: transparent;\n padding: 4px 10px 4px 4px;\n border-color: transparent;\n\n :active,\n :focus,\n &.focus,\n &.active {\n background: transparent;\n border-color: transparent;\n }\n }\n\n .item-selector__dropdown:hover {\n background: transparent;\n border-color: transparent;\n\n .item-selector__dropdown__value {\n color: ", ";\n }\n }\n }\n\n .animation-control__speed-control {\n margin-right: -12px;\n\n .animation-control__speed-slider {\n right: calc(0% - 48px);\n }\n }\n"])), function (props) { return props.theme.labelColor; }, TOP_SECTION_HEIGHT, function (props) { return props.hoverColor ? props.theme[props.hoverColor] : props.theme.textColorHl; }); var StyledTitle = (0, _styledComponents["default"])(_styledComponents2.CenterFlexbox)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n flex-grow: 0;\n color: ", ";\n margin-right: 10px;\n\n .bottom-widget__icon {\n margin-right: 6px;\n }\n .bottom-widget__icon.speed {\n margin-right: 0;\n }\n"])), function (props) { return props.theme.textColor; }); TimeWidgetFactory.deps = [_speedControl["default"], _timeRangeFilter["default"], _floatingTimeDisplay["default"]]; function TimeWidgetFactory(SpeedControl, TimeRangeFilter, FloatingTimeDisplay) { var TimeWidget = /*#__PURE__*/function (_Component) { (0, _inherits2["default"])(TimeWidget, _Component); var _super = _createSuper(TimeWidget); function TimeWidget() { var _this; (0, _classCallCheck2["default"])(this, TimeWidget); 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", { showSpeedControl: false }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "fieldSelector", function (props) { return props.fields; }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "yAxisFieldsSelector", (0, _reselect.createSelector)(_this.fieldSelector, function (fields) { return fields.filter(function (f) { return f.type === 'integer' || f.type === 'real'; }); })); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_updateAnimationSpeed", function (speed) { return _this.props.updateAnimationSpeed(_this.props.index, speed); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_toggleSpeedControl", function () { return _this.setState({ showSpeedControl: !_this.state.showSpeedControl }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_setFilterPlotYAxis", function (value) { return _this.props.setFilterPlot(_this.props.index, { yAxis: value }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_updateAnimationSpeed", function (speed) { return _this.props.updateAnimationSpeed(_this.props.index, speed); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_toggleAnimation", function () { return _this.props.toggleAnimation(_this.props.index); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_onClose", function () { return _this.props.enlargeFilter(_this.props.index); }); return _this; } (0, _createClass2["default"])(TimeWidget, [{ key: "render", value: function render() { var _this$props = this.props, datasets = _this$props.datasets, filter = _this$props.filter, index = _this$props.index, readOnly = _this$props.readOnly, _setFilter = _this$props.setFilter, showTimeDisplay = _this$props.showTimeDisplay; var showSpeedControl = this.state.showSpeedControl; return (/*#__PURE__*/_react["default"].createElement(_styledComponents2.BottomWidgetInner, { className: "bottom-widget--inner" }, /*#__PURE__*/_react["default"].createElement(TopSectionWrapper, null, /*#__PURE__*/_react["default"].createElement(StyledTitle, { className: "bottom-widget__field" }, /*#__PURE__*/_react["default"].createElement(_styledComponents2.CenterFlexbox, { className: "bottom-widget__icon" }, /*#__PURE__*/_react["default"].createElement(_icons.Clock, { height: "15px" })), /*#__PURE__*/_react["default"].createElement(_styledComponents2.SelectTextBold, null, filter.name)), /*#__PURE__*/_react["default"].createElement(StyledTitle, { className: "bottom-widget__y-axis" }, /*#__PURE__*/_react["default"].createElement(_styledComponents2.CenterFlexbox, { className: "bottom-widget__icon" }, /*#__PURE__*/_react["default"].createElement(_icons.LineChart, { height: "15px" })), /*#__PURE__*/_react["default"].createElement("div", { className: "bottom-widget__field-select" }, /*#__PURE__*/_react["default"].createElement(_fieldSelector["default"], { fields: this.yAxisFieldsSelector(datasets[filter.dataId]), placement: "top", id: "selected-time-widget-field", value: filter.yAxis ? filter.yAxis.name : null, onSelect: this._setFilterPlotYAxis, placeholder: "Y Axis", erasable: true, showToken: false }))), /*#__PURE__*/_react["default"].createElement(StyledTitle, { className: "bottom-widget__speed" }, /*#__PURE__*/_react["default"].createElement(SpeedControl, { onClick: this._toggleSpeedControl, showSpeedControl: showSpeedControl, updateAnimationSpeed: this._updateAnimationSpeed, speed: filter.speed })), !readOnly ? /*#__PURE__*/_react["default"].createElement(_styledComponents2.CenterFlexbox, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.IconRoundSmall, null, /*#__PURE__*/_react["default"].createElement(_icons.Close, { height: "12px", onClick: this._onClose }))) : null), /*#__PURE__*/_react["default"].createElement(TimeRangeFilter, { filter: filter, isLargeData: datasets[filter.dataId[0]].isLargeCategory, setFilter: function setFilter(value) { return _setFilter(index, 'value', value); }, toggleAnimation: this._toggleAnimation, hideTimeTitle: showTimeDisplay, isAnimatable: true }), showTimeDisplay ? /*#__PURE__*/_react["default"].createElement(FloatingTimeDisplay, { currentTime: filter.value }) : null) ); } }]); return TimeWidget; }(_react.Component); return TimeWidget; } var _default = exports["default"] = TimeWidgetFactory; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2ZpbHRlcnMvdGltZS13aWRnZXQuanMiXSwibmFtZXMiOlsiVE9QX1NFQ1RJT05fSEVJR0hUIiwiVG9wU2VjdGlvbldyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsInRoZW1lIiwibGFiZWxDb2xvciIsImhvdmVyQ29sb3IiLCJ0ZXh0Q29sb3JIbCIsIlN0eWxlZFRpdGxlIiwiQ2VudGVyRmxleGJveCIsInRleHRDb2xvciIsIlRpbWVXaWRnZXRGYWN0b3J5IiwiZGVwcyIsIlNwZWVkQ29udHJvbEZhY3RvcnkiLCJUaW1lUmFuZ2VGaWx0ZXJGYWN0b3J5IiwiRmxvYXRpbmdUaW1lRGlzcGxheUZhY3RvcnkiLCJTcGVlZENvbnRyb2wiLCJUaW1lUmFuZ2VGaWx0ZXIiLCJGbG9hdGluZ1RpbWVEaXNwbGF5IiwiVGltZVdpZGdldCIsInNob3dTcGVlZENvbnRyb2wiLCJmaWVsZHMiLCJmaWVsZFNlbGVjdG9yIiwiZmlsdGVyIiwiZiIsInR5cGUiLCJzcGVlZCIsInVwZGF0ZUFuaW1hdGlvblNwZWVkIiwiaW5kZXgiLCJzZXRTdGF0ZSIsInN0YXRlIiwidmFsdWUiLCJzZXRGaWx0ZXJQbG90IiwieUF4aXMiLCJ0b2dnbGVBbmltYXRpb24iLCJlbmxhcmdlRmlsdGVyIiwiZGF0YXNldHMiLCJyZWFkT25seSIsInNldEZpbHRlciIsInNob3dUaW1lRGlzcGxheSIsIm5hbWUiLCJ5QXhpc0ZpZWxkc1NlbGVjdG9yIiwiZGF0YUlkIiwiX3NldEZpbHRlclBsb3RZQXhpcyIsIl90b2dnbGVTcGVlZENvbnRyb2wiLCJfdXBkYXRlQW5pbWF0aW9uU3BlZWQiLCJfb25DbG9zZSIsImlzTGFyZ2VDYXRlZ29yeSIsIl90b2dnbGVBbmltYXRpb24iLCJDb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFNQTs7QUFDQTs7QUFD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QUFhLFlBQUEsU0FBUyxFQUFDO0FBQXZCLDBCQUNFLGdDQUFDLFlBQUQ7QUFDRSxZQUFBLE9BQU8sRUFBRSxLQUFLQyxtQkFEaEI7QUFFRSxZQUFBLGdCQUFnQixFQUFFeEIsZ0JBRnBCO0FBR0UsWUFBQSxvQkFBb0IsRUFBRSxLQUFLeUIscUJBSDdCO0FBSUUsWUFBQSxLQUFLLEVBQUV0QixNQUFNLENBQUNHO0FBSmhCLFlBREYsQ0F4QkYsRUFnQ0csQ0FBQ1csUUFBRCxnQkFDQyxnQ0FBQyxnQ0FBRCxxQkFDRSxnQ0FBQyxpQ0FBRCxxQkFDRSxnQ0FBQyxZQUFEO0FBQU8sWUFBQSxNQUFNLEVBQUMsTUFBZDtBQUFxQixZQUFBLE9BQU8sRUFBRSxLQUFLUztBQUFuQyxZQURGLENBREYsQ0FERCxHQU1HLElBdENOLENBREYsZUF5Q0UsZ0NBQUMsZUFBRDtBQUNFLFlBQUEsTUFBTSxFQUFFdkIsTUFEVjtBQUVFLFlBQUEsV0FBVyxFQUFFYSxRQUFRLENBQUNiLE1BQU0sQ0FBQ21CLE1BQVAsQ0FBYyxDQUFkLENBQUQsQ0FBUixDQUEyQkssZUFGMUM7QUFHRSxZQUFBLFNBQVMsRUFBRSxtQkFBQWhCLEtBQUs7QUFBQSxxQkFBSU8sVUFBUyxDQUFDVixLQUFELEVBQVEsT0FBUixFQUFpQkcsS0FBakIsQ0FBYjtBQUFBLGFBSGxCO0FBSUUsWUFBQSxlQUFlLEVBQUUsS0FBS2lCLGdCQUp4QjtBQUtFLFlBQUEsYUFBYSxFQUFFVCxlQUxqQjtBQU1FLFlBQUEsWUFBWTtBQU5kLFlBekNGLEVBaURHQSxlQUFlLGdCQUNkLGdDQUFDLG1CQUFEO0FBQXFCLFlBQUEsV0FBVyxFQUFFaEIsTUFBTSxDQUFDUTtBQUF6QyxZQURjLEdBRVosSUFuRE47QUFERjtBQXVERDtBQTdGMEU7QUFBQTtBQUFBLElBQ3BEa0IsZ0JBRG9EOztBQStGN0UsU0FBTzlCLFVBQVA7QUFDRDs7b0NBRWNSLGlCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIzIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7Y3JlYXRlU2VsZWN0b3J9IGZyb20gJ3Jlc2VsZWN0JztcblxuaW1wb3J0IEZpZWxkU2VsZWN0b3IgZnJvbSAnY29tcG9uZW50cy9jb21tb24vZmllbGQtc2VsZWN0b3InO1xuXG5pbXBvcnQge1xuICBTZWxlY3RUZXh0Qm9sZCxcbiAgSWNvblJvdW5kU21hbGwsXG4gIENlbnRlckZsZXhib3gsXG4gIEJvdHRvbVdpZGdldElubmVyXG59IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7Q2xvc2UsIENsb2NrLCBMaW5lQ2hhcnR9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2ljb25zJztcbmltcG9ydCBTcGVlZENvbnRyb2xGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2FuaW1hdGlvbi1jb250cm9sL3NwZWVkLWNvbnRyb2wnO1xuaW1wb3J0IFRpbWVSYW5nZUZpbHRlckZhY3RvcnkgZnJvbSAnY29tcG9uZW50cy9maWx0ZXJzL3RpbWUtcmFuZ2UtZmlsdGVyJztcbmltcG9ydCBGbG9hdGluZ1RpbWVEaXNwbGF5RmFjdG9yeSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9hbmltYXRpb24tY29udHJvbC9mbG9hdGluZy10aW1lLWRpc3BsYXknO1xuXG5jb25zdCBUT1BfU0VDVElPTl9IRUlHSFQgPSAnMzZweCc7XG5cbmNvbnN0IFRvcFNlY3Rpb25XcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB3aWR0aDogOTAlO1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYWJlbENvbG9yfTtcbiAgaGVpZ2h0OiAke1RPUF9TRUNUSU9OX0hFSUdIVH07XG5cbiAgLmJvdHRvbS13aWRnZXRfX3ktYXhpcyB7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICB9XG5cbiAgLmJvdHRvbS13aWRnZXRfX2ZpZWxkLXNlbGVjdCB7XG4gICAgd2lkdGg6IDE2MHB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgIC5pdGVtLXNlbGVjdG9yX19kcm9wZG93biB7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIHBhZGRpbmc6IDRweCAxMHB4IDRweCA0cHg7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gICAgICA6YWN0aXZlLFxuICAgICAgOmZvY3VzLFxuICAgICAgJi5mb2N1cyxcbiAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLml0ZW0tc2VsZWN0b3JfX2Ryb3Bkb3duOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcblxuICAgICAgLml0ZW0tc2VsZWN0b3JfX2Ryb3Bkb3duX192YWx1ZSB7XG4gICAgICAgIGNvbG9yOiAke3Byb3BzID0+XG4gICAgICAgICAgcHJvcHMuaG92ZXJDb2xvclxuICAgICAgICAgICAgPyBwcm9wcy50aGVtZVtwcm9wcy5ob3ZlckNvbG9yXVxuICAgICAgICAgICAgOiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmFuaW1hdGlvbi1jb250cm9sX19zcGVlZC1jb250cm9sIHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0xMnB4O1xuXG4gICAgLmFuaW1hdGlvbi1jb250cm9sX19zcGVlZC1zbGlkZXIge1xuICAgICAgcmlnaHQ6IGNhbGMoMCUgLSA0OHB4KTtcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZFRpdGxlID0gc3R5bGVkKENlbnRlckZsZXhib3gpYFxuICBmbGV4LWdyb3c6IDA7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gIG1hcmdpbi1yaWdodDogMTBweDtcblxuICAuYm90dG9tLXdpZGdldF9faWNvbiB7XG4gICAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gIH1cbiAgLmJvdHRvbS13aWRnZXRfX2ljb24uc3BlZWQge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxuYDtcblxuVGltZVdpZGdldEZhY3RvcnkuZGVwcyA9IFtcbiAgU3BlZWRDb250cm9sRmFjdG9yeSxcbiAgVGltZVJhbmdlRmlsdGVyRmFjdG9yeSxcbiAgRmxvYXRpbmdUaW1lRGlzcGxheUZhY3Rvcnlcbl07XG5cbmZ1bmN0aW9uIFRpbWVXaWRnZXRGYWN0b3J5KFNwZWVkQ29udHJvbCwgVGltZVJhbmdlRmlsdGVyLCBGbG9hdGluZ1RpbWVEaXNwbGF5KSB7XG4gIGNsYXNzIFRpbWVXaWRnZXQgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHN0YXRlID0ge1xuICAgICAgc2hvd1NwZWVkQ29udHJvbDogZmFsc2VcbiAgICB9O1xuXG4gICAgZmllbGRTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmZpZWxkcztcbiAgICB5QXhpc0ZpZWxkc1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IodGhpcy5maWVsZFNlbGVjdG9yLCBmaWVsZHMgPT5cbiAgICAgIGZpZWxkcy5maWx0ZXIoZiA9PiBmLnR5cGUgPT09ICdpbnRlZ2VyJyB8fCBmLnR5cGUgPT09ICdyZWFsJylcbiAgICApO1xuXG4gICAgX3VwZGF0ZUFuaW1hdGlvblNwZWVkID0gc3BlZWQgPT5cbiAgICAgIHRoaXMucHJvcHMudXBkYXRlQW5pbWF0aW9uU3BlZWQodGhpcy5wcm9wcy5pbmRleCwgc3BlZWQpO1xuXG4gICAgX3RvZ2dsZVNwZWVkQ29udHJvbCA9ICgpID0+XG4gICAgICB0aGlzLnNldFN0YXRlKHtzaG93U3BlZWRDb250cm9sOiAhdGhpcy5zdGF0ZS5zaG93U3BlZWRDb250cm9sfSk7XG5cbiAgICBfc2V0RmlsdGVyUGxvdFlBeGlzID0gdmFsdWUgPT5cbiAgICAgIHRoaXMucHJvcHMuc2V0RmlsdGVyUGxvdCh0aGlzLnByb3BzLmluZGV4LCB7eUF4aXM6IHZhbHVlfSk7XG5cbiAgICBfdXBkYXRlQW5pbWF0aW9uU3BlZWQgPSBzcGVlZCA9PlxuICAgICAgdGhpcy5wcm9wcy51cGRhdGVBbmltYXRpb25TcGVlZCh0aGlzLnByb3BzLmluZGV4LCBzcGVlZCk7XG5cbiAgICBfdG9nZ2xlQW5pbWF0aW9uID0gKCkgPT4gdGhpcy5wcm9wcy50b2dnbGVBbmltYXRpb24odGhpcy5wcm9wcy5pbmRleCk7XG5cbiAgICBfb25DbG9zZSA9ICgpID0+IHRoaXMucHJvcHMuZW5sYXJnZUZpbHRlcih0aGlzLnByb3BzLmluZGV4KTtcblxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZGF0YXNldHMsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIHJlYWRPbmx5LFxuICAgICAgICBzZXRGaWx0ZXIsXG4gICAgICAgIHNob3dUaW1lRGlzcGxheVxuICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIGNvbnN0IHtzaG93U3BlZWRDb250cm9sfSA9IHRoaXMuc3RhdGU7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Qm90dG9tV2lkZ2V0SW5uZXIgY2xhc3NOYW1lPVwiYm90dG9tLXdpZGdldC0taW5uZXJcIj5cbiAgICAgICAgICA8VG9wU2VjdGlvbldyYXBwZXI+XG4gICAgICAgICAgICA8U3R5bGVkVGl0bGUgY2xhc3NOYW1lPVwiYm90dG9tLXdpZGdldF9fZmllbGRcIj5cbiAgICAgICAgICAgICAgPENlbnRlckZsZXhib3ggY2xhc3NOYW1lPVwiYm90dG9tLXdpZGdldF9faWNvblwiPlxuICAgICAgICAgICAgICAgIDxDbG9jayBoZWlnaHQ9XCIxNXB4XCIgLz5cbiAgICAgICAgICAgICAgPC9DZW50ZXJGbGV4Ym94PlxuICAgICAgICAgICAgICA8U2VsZWN0VGV4dEJvbGQ+e2ZpbHRlci5uYW1lfTwvU2VsZWN0VGV4dEJvbGQ+XG4gICAgICAgICAgICA8L1N0eWxlZFRpdGxlPlxuICAgICAgICAgICAgPFN0eWxlZFRpdGxlIGNsYXNzTmFtZT1cImJvdHRvbS13aWRnZXRfX3ktYXhpc1wiPlxuICAgICAgICAgICAgICA8Q2VudGVyRmxleGJveCBjbGFzc05hbWU9XCJib3R0b20td2lkZ2V0X19pY29uXCI+XG4gICAgICAgICAgICAgICAgPExpbmVDaGFydCBoZWlnaHQ9XCIxNXB4XCIgLz5cbiAgICAgICAgICAgICAgPC9DZW50ZXJGbGV4Ym94PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvdHRvbS13aWRnZXRfX2ZpZWxkLXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgIDxGaWVsZFNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICBmaWVsZHM9e3RoaXMueUF4aXNGaWVsZHNTZWxlY3RvcihkYXRhc2V0c1tmaWx0ZXIuZGF0YUlkXSl9XG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWxlY3RlZC10aW1lLXdpZGdldC1maWVsZFwiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT17ZmlsdGVyLnlBeGlzID8gZmlsdGVyLnlBeGlzLm5hbWUgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMuX3NldEZpbHRlclBsb3RZQXhpc31cbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiWSBBeGlzXCJcbiAgICAgICAgICAgICAgICAgIGVyYXNhYmxlXG4gICAgICAgICAgICAgICAgICBzaG93VG9rZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9TdHlsZWRUaXRsZT5cbiAgICAgICAgICAgIDxTdHlsZWRUaXRsZSBjbGFzc05hbWU9XCJib3R0b20td2lkZ2V0X19zcGVlZFwiPlxuICAgICAgICAgICAgICA8U3BlZWRDb250cm9sXG4gICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5fdG9nZ2xlU3BlZWRDb250cm9sfVxuICAgICAgICAgICAgICAgIHNob3dTcGVlZENvbnRyb2w9e3Nob3dTcGVlZENvbnRyb2x9XG4gICAgICAgICAgICAgICAgdXBkYXRlQW5pbWF0aW9uU3BlZWQ9e3RoaXMuX3VwZGF0ZUFuaW1hdGlvblNwZWVkfVxuICAgICAgICAgICAgICAgIHNwZWVkPXtmaWx0ZXIuc3BlZWR9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L1N0eWxlZFRpdGxlPlxuICAgICAgICAgICAgeyFyZWFkT25seSA/IChcbiAgICAgICAgICAgICAgPENlbnRlckZsZXhib3g+XG4gICAgICAgICAgICAgICAgPEljb25Sb3VuZFNtYWxsPlxuICAgICAgICAgICAgICAgICAgPENsb3NlIGhlaWdodD1cIjEycHhcIiBvbkNsaWNrPXt0aGlzLl9vbkNsb3NlfSAvPlxuICAgICAgICAgICAgICAgIDwvSWNvblJvdW5kU21hbGw+XG4gICAgICAgICAgICAgIDwvQ2VudGVyRmxleGJveD5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvVG9wU2VjdGlvbldyYXBwZXI+XG4gICAgICAgICAgPFRpbWVSYW5nZUZpbHRlclxuICAgICAgICAgICAgZmlsdGVyPXtmaWx0ZXJ9XG4gICAgICAgICAgICBpc0xhcmdlRGF0YT17ZGF0YXNldHNbZmlsdGVyLmRhdGFJZFswXV0uaXNMYXJnZUNhdGVnb3J5fVxuICAgICAgICAgICAgc2V0RmlsdGVyPXt2YWx1ZSA9PiBzZXRGaWx0ZXIoaW5kZXgsICd2YWx1ZScsIHZhbHVlKX1cbiAgICAgICAgICAgIHRvZ2dsZUFuaW1hdGlvbj17dGhpcy5fdG9nZ2xlQW5pbWF0aW9ufVxuICAgICAgICAgICAgaGlkZVRpbWVUaXRsZT17c2hvd1RpbWVEaXNwbGF5fVxuICAgICAgICAgICAgaXNBbmltYXRhYmxlXG4gICAgICAgICAgLz5cbiAgICAgICAgICB7c2hvd1RpbWVEaXNwbGF5ID8gKFxuICAgICAgICAgICAgPEZsb2F0aW5nVGltZURpc3BsYXkgY3VycmVudFRpbWU9e2ZpbHRlci52YWx1ZX0gLz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9Cb3R0b21XaWRnZXRJbm5lcj5cbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHJldHVybiBUaW1lV2lkZ2V0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBUaW1lV2lkZ2V0RmFjdG9yeTtcbiJdfQ==