diff --git a/MaxWaterSystem.db b/MaxWaterSystem.db new file mode 100644 index 0000000..79a3176 Binary files /dev/null and b/MaxWaterSystem.db differ diff --git a/app/build/bundle.js b/app/build/bundle.js index 9e22d31..0a2af81 100644 --- a/app/build/bundle.js +++ b/app/build/bundle.js @@ -139,7 +139,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.FlexibleGraph = exports.mapTimestampAndValuePropToXY = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nexports.findClosestXValue = findClosestXValue;\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _lodash = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _moment = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _reactVis = __webpack_require__(/*! react-vis */ \"./node_modules/react-vis/es/index.js\");\n\n__webpack_require__(/*! ../../../node_modules/react-vis/dist/style.css */ \"./node_modules/react-vis/dist/style.css\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction findClosestXValue(tagHistory, xval) {\n\tvar mapped = _lodash2.default.map(tagHistory, function (_ref) {\n\t\tvar timestamp = _ref.timestamp,\n\t\t value = _ref.value;\n\n\t\tvar timeInt = timestamp.getTime();\n\t\treturn { dist: Math.abs(xval - timeInt), x: xval, y: value };\n\t});\n\tvar sorted = _lodash2.default.orderBy(mapped, \"dist\", \"asc\");\n\treturn _lodash2.default.omit(sorted[0], \"dist\");\n}\n\n/**\n * Map an array of objects to a graph-usable array of objects\n * \n * @param {Array} values - list of objects with timestame and value properties\n * \n * @returns {Array} list of objects with x and y properties\n */\nvar mapTimestampAndValuePropToXY = exports.mapTimestampAndValuePropToXY = function mapTimestampAndValuePropToXY(values) {\n\treturn _lodash2.default.map(values, function (_ref2) {\n\t\tvar timestamp = _ref2.timestamp,\n\t\t value = _ref2.value;\n\n\t\treturn { x: new Date(timestamp).getTime(), y: value };\n\t});\n};\n\nvar FlexibleGraph = exports.FlexibleGraph = function (_Component) {\n\t_inherits(FlexibleGraph, _Component);\n\n\tfunction FlexibleGraph(props) {\n\t\t_classCallCheck(this, FlexibleGraph);\n\n\t\t// props.tagHistory\n\t\t// props.tags\n\t\t// props.tagDescriptions\n\t\t// props.units\n\t\t// props.round\n\n\t\tvar _this = _possibleConstructorReturn(this, (FlexibleGraph.__proto__ || Object.getPrototypeOf(FlexibleGraph)).call(this, props));\n\n\t\t_this.tagsExist = function () {\n\t\t\tif (!_this.props.tags) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t_lodash2.default.forEach(_this.props.tags, function (tag) {\n\t\t\t\tif (!tag || !tag.value) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t_lodash2.default.forEach(_this.props.tagHistory, function (tag) {\n\t\t\t\tif (!tag || !tag.value) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn true;\n\t\t};\n\n\t\t_this.renderLegendData = function () {\n\n\t\t\tif (!_this.tagsExist()) {\n\t\t\t\treturn _lodash2.default.map(_this.props.tagDescriptions, function (desc) {\n\t\t\t\t\treturn { title: desc };\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn _lodash2.default.map(_this.props.tagDescriptions, function (desc, key) {\n\t\t\t\t\treturn { title: desc + \": \" + _lodash2.default.round(_this.props.tags[key].value, _this.props.round[key]) + \" \" + _this.props.units[key] };\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\t_this.renderCrossHairData = function (values) {\n\t\t\tvar mappedValues = _lodash2.default.map(_this.props.tagDescriptions, function (desc, key) {\n\t\t\t\treturn { title: desc, value: _lodash2.default.round(values[key].y, 1) + (\" \" + _this.props.units[key]) };\n\t\t\t});\n\t\t\tconsole.log(mappedValues, _this.props.tagDescriptions);\n\t\t\treturn mappedValues;\n\t\t};\n\n\t\t_this.renderTitleData = function (values) {\n\t\t\treturn { title: \"Time\", value: (0, _moment2.default)(values[0].x).format(\"hh:mm A\") };\n\t\t};\n\n\t\t_this._onMouseLeave = function () {\n\t\t\t_this.setState({ crosshairValues: [] });\n\t\t};\n\n\t\t_this._onNearestX = function (value) {\n\t\t\t_this.setState({\n\t\t\t\tcrosshairValues: _lodash2.default.map(_this.props.tagHistory, function (tagHist) {\n\t\t\t\t\treturn findClosestXValue(tagHist, value.x);\n\t\t\t\t})\n\t\t\t});\n\t\t};\n\n\t\t_this.state = {\n\t\t\tcrosshairValues: []\n\t\t};\n\t\treturn _this;\n\t}\n\n\t/**\n * Event handler for onMouseLeave.\n * @private\n */\n\n\n\t/**\n * Event handler for onNearestX.\n * @param {Object} value Selected value.\n * @param {index} index Index of the value in the data array.\n * @private\n */\n\n\n\t_createClass(FlexibleGraph, [{\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar lineSeries = _lodash2.default.map(this.props.tagHistory, function (tag, key) {\n\t\t\t\tif (key === 0) {\n\t\t\t\t\treturn _react2.default.createElement(_reactVis.LineSeries, { key: key, data: mapTimestampAndValuePropToXY(tag), onNearestX: _this2._onNearestX });\n\t\t\t\t} else {\n\t\t\t\t\treturn _react2.default.createElement(_reactVis.LineSeries, { key: key, data: mapTimestampAndValuePropToXY(tag) });\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!this.tagsExist()) {\n\t\t\t\treturn _react2.default.createElement(\"span\", { className: \"flexible-graph-notags\" });\n\t\t\t}\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t\"div\",\n\t\t\t\t{ className: \"flexible-graph\" },\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t_reactVis.FlexibleWidthXYPlot,\n\t\t\t\t\t{\n\t\t\t\t\t\theight: 300,\n\t\t\t\t\t\txType: \"time\",\n\t\t\t\t\t\tonMouseLeave: this._onMouseLeave\n\t\t\t\t\t},\n\t\t\t\t\t_react2.default.createElement(_reactVis.VerticalGridLines, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.HorizontalGridLines, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.XAxis, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.YAxis, null),\n\t\t\t\t\tlineSeries,\n\t\t\t\t\t_react2.default.createElement(_reactVis.Crosshair, {\n\t\t\t\t\t\tvalues: this.state.crosshairValues,\n\t\t\t\t\t\ttitleFormat: this.renderTitleData,\n\t\t\t\t\t\titemsFormat: this.renderCrossHairData\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(_reactVis.DiscreteColorLegend, {\n\t\t\t\t\titems: this.renderLegendData(),\n\t\t\t\t\torientation: \"horizontal\"\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn FlexibleGraph;\n}(_react.Component);\n\n//# sourceURL=webpack:///./app/src/components/FlexibleGraph.js?"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.FlexibleGraph = exports.mapTimestampAndValuePropToXY = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nexports.findClosestXValue = findClosestXValue;\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _lodash = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _moment = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _reactVis = __webpack_require__(/*! react-vis */ \"./node_modules/react-vis/es/index.js\");\n\n__webpack_require__(/*! ../../../node_modules/react-vis/dist/style.css */ \"./node_modules/react-vis/dist/style.css\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction findClosestXValue(tagHistory, xval) {\n\tvar mapped = _lodash2.default.map(tagHistory, function (_ref) {\n\t\tvar timestamp = _ref.timestamp,\n\t\t value = _ref.value;\n\n\t\tvar timeInt = timestamp.getTime();\n\t\treturn { dist: Math.abs(xval - timeInt), x: xval, y: value };\n\t});\n\tvar sorted = _lodash2.default.orderBy(mapped, \"dist\", \"asc\");\n\treturn _lodash2.default.omit(sorted[0], \"dist\");\n}\n\n/**\n * Map an array of objects to a graph-usable array of objects\n * \n * @param {Array} values - list of objects with timestame and value properties\n * \n * @returns {Array} list of objects with x and y properties\n */\nvar mapTimestampAndValuePropToXY = exports.mapTimestampAndValuePropToXY = function mapTimestampAndValuePropToXY(values) {\n\treturn _lodash2.default.map(values, function (_ref2) {\n\t\tvar timestamp = _ref2.timestamp,\n\t\t value = _ref2.value;\n\n\t\treturn { x: new Date(timestamp).getTime(), y: value };\n\t});\n};\n\nvar FlexibleGraph = exports.FlexibleGraph = function (_Component) {\n\t_inherits(FlexibleGraph, _Component);\n\n\tfunction FlexibleGraph(props) {\n\t\t_classCallCheck(this, FlexibleGraph);\n\n\t\t// props.tagHistory\n\t\t// props.tags\n\t\t// props.tagDescriptions\n\t\t// props.units\n\t\t// props.round\n\n\t\tvar _this = _possibleConstructorReturn(this, (FlexibleGraph.__proto__ || Object.getPrototypeOf(FlexibleGraph)).call(this, props));\n\n\t\t_this.tagsExist = function () {\n\t\t\tif (!_this.props.tags) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t_lodash2.default.forEach(_this.props.tags, function (tag) {\n\t\t\t\tif (!tag || !tag.value) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t_lodash2.default.forEach(_this.props.tagHistory, function (tag) {\n\t\t\t\tif (!tag || !tag.value) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn true;\n\t\t};\n\n\t\t_this.renderLegendData = function () {\n\n\t\t\tif (!_this.tagsExist()) {\n\t\t\t\treturn _lodash2.default.map(_this.props.tagDescriptions, function (desc) {\n\t\t\t\t\treturn { title: desc };\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn _lodash2.default.map(_this.props.tagDescriptions, function (desc, key) {\n\t\t\t\t\treturn { title: desc + \": \" + _lodash2.default.round(_this.props.tags[key].value, _this.props.round[key]) + \" \" + _this.props.units[key] };\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\t_this.renderCrossHairData = function (values) {\n\t\t\tvar mappedValues = _lodash2.default.map(_this.props.tagDescriptions, function (desc, key) {\n\t\t\t\treturn { title: desc, value: _lodash2.default.round(values[key].y, 1) + (\" \" + _this.props.units[key]) };\n\t\t\t});\n\t\t\treturn mappedValues;\n\t\t};\n\n\t\t_this.renderTitleData = function (values) {\n\t\t\treturn { title: \"Time\", value: (0, _moment2.default)(values[0].x).format(\"hh:mm A\") };\n\t\t};\n\n\t\t_this._onMouseLeave = function () {\n\t\t\t_this.setState({ crosshairValues: [] });\n\t\t};\n\n\t\t_this._onNearestX = function (value) {\n\t\t\t_this.setState({\n\t\t\t\tcrosshairValues: _lodash2.default.map(_this.props.tagHistory, function (tagHist) {\n\t\t\t\t\treturn findClosestXValue(tagHist, value.x);\n\t\t\t\t})\n\t\t\t});\n\t\t};\n\n\t\t_this.state = {\n\t\t\tcrosshairValues: []\n\t\t};\n\t\treturn _this;\n\t}\n\n\t/**\n * Event handler for onMouseLeave.\n * @private\n */\n\n\n\t/**\n * Event handler for onNearestX.\n * @param {Object} value Selected value.\n * @param {index} index Index of the value in the data array.\n * @private\n */\n\n\n\t_createClass(FlexibleGraph, [{\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar lineSeries = _lodash2.default.map(this.props.tagHistory, function (tag, key) {\n\t\t\t\tif (key === 0) {\n\t\t\t\t\treturn _react2.default.createElement(_reactVis.LineSeries, { key: key, data: mapTimestampAndValuePropToXY(tag), onNearestX: _this2._onNearestX });\n\t\t\t\t} else {\n\t\t\t\t\treturn _react2.default.createElement(_reactVis.LineSeries, { key: key, data: mapTimestampAndValuePropToXY(tag) });\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!this.tagsExist()) {\n\t\t\t\treturn _react2.default.createElement(\"span\", { className: \"flexible-graph-notags\" });\n\t\t\t}\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t\"div\",\n\t\t\t\t{ className: \"flexible-graph\" },\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t_reactVis.FlexibleWidthXYPlot,\n\t\t\t\t\t{\n\t\t\t\t\t\theight: 300,\n\t\t\t\t\t\txType: \"time\",\n\t\t\t\t\t\tonMouseLeave: this._onMouseLeave\n\t\t\t\t\t},\n\t\t\t\t\t_react2.default.createElement(_reactVis.VerticalGridLines, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.HorizontalGridLines, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.XAxis, null),\n\t\t\t\t\t_react2.default.createElement(_reactVis.YAxis, null),\n\t\t\t\t\tlineSeries,\n\t\t\t\t\t_react2.default.createElement(_reactVis.Crosshair, {\n\t\t\t\t\t\tvalues: this.state.crosshairValues,\n\t\t\t\t\t\ttitleFormat: this.renderTitleData,\n\t\t\t\t\t\titemsFormat: this.renderCrossHairData\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(_reactVis.DiscreteColorLegend, {\n\t\t\t\t\titems: this.renderLegendData(),\n\t\t\t\t\torientation: \"horizontal\"\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn FlexibleGraph;\n}(_react.Component);\n\n//# sourceURL=webpack:///./app/src/components/FlexibleGraph.js?"); /***/ }), @@ -175,7 +175,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.Main = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nexports.mapStateToProps = mapStateToProps;\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _LiquidGauge = __webpack_require__(/*! ./LiquidGauge */ \"./app/src/components/LiquidGauge.js\");\n\nvar _FlexibleGraph = __webpack_require__(/*! ./FlexibleGraph */ \"./app/src/components/FlexibleGraph.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// const graphColors = [\"#d7191c\", \"#fdae61\", \"#ffffbf\", \"#abd9e9\", \"#2c7bb6\"];\n\n/** Class for Main Page \n *\n * @extends React.Component \n*/\nvar Main = exports.Main = function (_Component) {\n\t_inherits(Main, _Component);\n\n\tfunction Main() {\n\t\t_classCallCheck(this, Main);\n\n\t\treturn _possibleConstructorReturn(this, (Main.__proto__ || Object.getPrototypeOf(Main)).apply(this, arguments));\n\t}\n\n\t_createClass(Main, [{\n\t\tkey: \"render\",\n\n\n\t\t/**\n * render\n * \n * @returns {ReactElement} markup\n */\n\t\tvalue: function render() {\n\n\t\t\tif (!this.props.tagHistory || Object.keys(this.props.tagHistory).length === 0) {\n\t\t\t\treturn _react2.default.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ className: \"container loading\" },\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"h1\",\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\"Loading...\"\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (this.props.plc.error) {\n\t\t\t\treturn _react2.default.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ className: \"container plc-error\" },\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"h1\",\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\"PLC Error\"\n\t\t\t\t\t),\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"h3\",\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tthis.props.plc.error\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (!this.props.tags || !this.props.tagHistory || !this.props.tags.val_FluidLevel || !this.props.tags.val_Flowmeter_BarrelsPerDay || !this.props.tags.val_TubingPressure || !this.props.tags.VFD_SpeedFdbk || !this.props.tags.VFD_OutCurrent || !this.props.tags.VFD_OutPower || !this.props.tags.VFD_Temp || !this.props.tagHistory.val_FluidLevel || !this.props.tagHistory.val_Flowmeter_BarrelsPerDay || !this.props.tagHistory.val_IntakePressure || !this.props.tagHistory.val_IntakeTemperature || !this.props.tagHistory.val_TubingPressure || !this.props.tagHistory.VFD_SpeedFdbk || !this.props.tagHistory.VFD_OutCurrent || !this.props.tagHistory.VFD_OutPower || !this.props.tagHistory.VFD_Temp) {\n\t\t\t\treturn _react2.default.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ className: \"container waiting\" },\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"h1\",\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\"Waiting for data...\"\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t\"div\",\n\t\t\t\t{ className: \"container main\" },\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"h3\",\n\t\t\t\t\tnull,\n\t\t\t\t\t\"Process Values\"\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ className: \"row\", style: { marginBottom: \"20px\" } },\n\t\t\t\t\t_react2.default.createElement(_LiquidGauge.LiquidGauge, { tag: this.props.tags.val_FluidLevel, units: \"ft.\", maxValue: 500, label: \"Level\" }),\n\t\t\t\t\t_react2.default.createElement(_LiquidGauge.LiquidGauge, { tag: this.props.tags.val_Flowmeter_BarrelsPerDay, units: \"BPD\", maxValue: 5000, label: \"Flow Rate\" }),\n\t\t\t\t\t_react2.default.createElement(_LiquidGauge.LiquidGauge, { tag: this.props.tags.val_TubingPressure, units: \"PSI\", maxValue: 400, label: \"Tubing Pressure\" })\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(_FlexibleGraph.FlexibleGraph, {\n\t\t\t\t\ttagHistory: [this.props.tagHistory.val_FluidLevel, this.props.tagHistory.val_Flowmeter, this.props.tagHistory.val_IntakePressure, this.props.tagHistory.val_IntakeTemperature, this.props.tagHistory.val_TubingPressure],\n\t\t\t\t\ttags: [this.props.tags.val_FluidLevel, this.props.tags.val_Flowmeter, this.props.tags.val_IntakePressure, this.props.tags.val_IntakeTemperature, this.props.tags.val_TubingPressure],\n\t\t\t\t\ttagDescriptions: [\"Level\", \"Flow Rate\", \"Intake Pres\", \"Intake Temp\", \"Tubing Pres\"],\n\t\t\t\t\tunits: [\"Ft.\", \"GPM\", \"PSI\", \"deg F\", \"PSI\"],\n\t\t\t\t\tround: [1, 2, 1, 1, 1]\n\t\t\t\t}),\n\t\t\t\t_react2.default.createElement(\"hr\", null),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"h3\",\n\t\t\t\t\tnull,\n\t\t\t\t\t\"VFD Data\"\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ className: \"row\", style: { marginBottom: \"20px\" } },\n\t\t\t\t\t_react2.default.createElement(_LiquidGauge.LiquidGauge, { tag: this.props.tags.VFD_OutCurrent, units: \"A.\", maxValue: 100, label: \"Current\" }),\n\t\t\t\t\t_react2.default.createElement(_LiquidGauge.LiquidGauge, { tag: this.props.tags.VFD_SpeedFdbk, units: \"Hz\", maxValue: 60, label: \"Frequency\" })\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(_FlexibleGraph.FlexibleGraph, {\n\t\t\t\t\ttagHistory: [this.props.tagHistory.VFD_SpeedFdbk, this.props.tagHistory.VFD_OutCurrent, this.props.tagHistory.VFD_OutPower, this.props.tagHistory.VFD_Temp],\n\t\t\t\t\ttags: [this.props.tags.VFD_SpeedFdbk, this.props.tags.VFD_OutCurrent, this.props.tags.VFD_OutPower, this.props.tags.VFD_Temp],\n\t\t\t\t\ttagDescriptions: [\"Speed\", \"Current\", \"Power\", \"Temp\"],\n\t\t\t\t\tunits: [\"Hz\", \"Amps\", \"kW\", \"deg C\"],\n\t\t\t\t\tround: [2, 2, 1, 1]\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn Main;\n}(_react.Component);\n\n/**\n * Map Redux state to React props\n * \n * @param {Object} state\n * \n * @returns {Object} mapped state\n */\n\n\nfunction mapStateToProps(state) {\n\treturn {\n\t\ttags: state.tags,\n\t\ttagHistory: state.tagHistory,\n\t\tplc: state.plc\n\t};\n}\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps)(Main);\n\n//# sourceURL=webpack:///./app/src/components/Main.js?"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.Main = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nexports.mapStateToProps = mapStateToProps;\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _LiquidGauge = __webpack_require__(/*! ./LiquidGauge */ \"./app/src/components/LiquidGauge.js\");\n\nvar _FlexibleGraph = __webpack_require__(/*! ./FlexibleGraph */ \"./app/src/components/FlexibleGraph.js\");\n\nvar _TimeSeriesGraph = __webpack_require__(/*! ./TimeSeriesGraph */ \"./app/src/components/TimeSeriesGraph.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// const graphColors = [\"#d7191c\", \"#fdae61\", \"#ffffbf\", \"#abd9e9\", \"#2c7bb6\"];\n\n/** Class for Main Page \n *\n * @extends React.Component \n*/\nvar Main = exports.Main = function (_Component) {\n\t_inherits(Main, _Component);\n\n\tfunction Main() {\n\t\t_classCallCheck(this, Main);\n\n\t\treturn _possibleConstructorReturn(this, (Main.__proto__ || Object.getPrototypeOf(Main)).apply(this, arguments));\n\t}\n\n\t_createClass(Main, [{\n\t\tkey: \"render\",\n\n\n\t\t/**\n * render\n * \n * @returns {ReactElement} markup\n */\n\t\tvalue: function render() {\n\n\t\t\tif (!this.props.tagHistory || Object.keys(this.props.tagHistory).length === 0) {\n\t\t\t\treturn _react2.default.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ className: \"container loading\" },\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"h1\",\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\"Loading...\"\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (this.props.plc.error) {\n\t\t\t\treturn _react2.default.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ className: \"container plc-error\" },\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"h1\",\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\"PLC Error\"\n\t\t\t\t\t),\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"h3\",\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tthis.props.plc.error\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (!this.props.tags || !this.props.tagHistory || !this.props.tags.val_FluidLevel || !this.props.tags.val_Flowmeter_BarrelsPerDay || !this.props.tags.val_TubingPressure || !this.props.tags.VFD_SpeedFdbk || !this.props.tags.VFD_OutCurrent || !this.props.tags.VFD_OutPower || !this.props.tags.VFD_Temp || !this.props.tagHistory.val_FluidLevel || !this.props.tagHistory.val_Flowmeter_BarrelsPerDay || !this.props.tagHistory.val_IntakePressure || !this.props.tagHistory.val_IntakeTemperature || !this.props.tagHistory.val_TubingPressure || !this.props.tagHistory.VFD_SpeedFdbk || !this.props.tagHistory.VFD_OutCurrent || !this.props.tagHistory.VFD_OutPower || !this.props.tagHistory.VFD_Temp) {\n\t\t\t\treturn _react2.default.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ className: \"container waiting\" },\n\t\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\t\"h1\",\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\"Waiting for data...\"\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t\"div\",\n\t\t\t\t{ className: \"container main\" },\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"h3\",\n\t\t\t\t\tnull,\n\t\t\t\t\t\"Process Values\"\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ className: \"row\", style: { marginBottom: \"20px\" } },\n\t\t\t\t\t_react2.default.createElement(_LiquidGauge.LiquidGauge, { tag: this.props.tags.val_FluidLevel, units: \"ft.\", maxValue: 500, label: \"Level\" }),\n\t\t\t\t\t_react2.default.createElement(_LiquidGauge.LiquidGauge, { tag: this.props.tags.val_Flowmeter_BarrelsPerDay, units: \"BPD\", maxValue: 5000, label: \"Flow Rate\" }),\n\t\t\t\t\t_react2.default.createElement(_LiquidGauge.LiquidGauge, { tag: this.props.tags.val_TubingPressure, units: \"PSI\", maxValue: 400, label: \"Tubing Pressure\" })\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(_FlexibleGraph.FlexibleGraph, {\n\t\t\t\t\ttagHistory: [this.props.tagHistory.val_FluidLevel, this.props.tagHistory.val_Flowmeter, this.props.tagHistory.val_IntakePressure, this.props.tagHistory.val_IntakeTemperature, this.props.tagHistory.val_TubingPressure],\n\t\t\t\t\ttags: [this.props.tags.val_FluidLevel, this.props.tags.val_Flowmeter, this.props.tags.val_IntakePressure, this.props.tags.val_IntakeTemperature, this.props.tags.val_TubingPressure],\n\t\t\t\t\ttagDescriptions: [\"Level\", \"Flow Rate\", \"Intake Pres\", \"Intake Temp\", \"Tubing Pres\"],\n\t\t\t\t\tunits: [\"Ft.\", \"GPM\", \"PSI\", \"deg F\", \"PSI\"],\n\t\t\t\t\tround: [1, 2, 1, 1, 1]\n\t\t\t\t}),\n\t\t\t\t_react2.default.createElement(_TimeSeriesGraph.TimeSeriesGraph, { tagHistory: [this.props.tagHistory.val_FluidLevel],\n\n\t\t\t\t\ttagDescriptions: [\"Level\", \"Flow Rate\", \"Intake Pres\", \"Intake Temp\", \"Tubing Pres\"]\n\t\t\t\t}),\n\t\t\t\t_react2.default.createElement(\"hr\", null),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"h3\",\n\t\t\t\t\tnull,\n\t\t\t\t\t\"VFD Data\"\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ className: \"row\", style: { marginBottom: \"20px\" } },\n\t\t\t\t\t_react2.default.createElement(_LiquidGauge.LiquidGauge, { tag: this.props.tags.VFD_OutCurrent, units: \"A.\", maxValue: 100, label: \"Current\" }),\n\t\t\t\t\t_react2.default.createElement(_LiquidGauge.LiquidGauge, { tag: this.props.tags.VFD_SpeedFdbk, units: \"Hz\", maxValue: 60, label: \"Frequency\" })\n\t\t\t\t),\n\t\t\t\t_react2.default.createElement(_FlexibleGraph.FlexibleGraph, {\n\t\t\t\t\ttagHistory: [this.props.tagHistory.VFD_SpeedFdbk, this.props.tagHistory.VFD_OutCurrent, this.props.tagHistory.VFD_OutPower, this.props.tagHistory.VFD_Temp],\n\t\t\t\t\ttags: [this.props.tags.VFD_SpeedFdbk, this.props.tags.VFD_OutCurrent, this.props.tags.VFD_OutPower, this.props.tags.VFD_Temp],\n\t\t\t\t\ttagDescriptions: [\"Speed\", \"Current\", \"Power\", \"Temp\"],\n\t\t\t\t\tunits: [\"Hz\", \"Amps\", \"kW\", \"deg C\"],\n\t\t\t\t\tround: [2, 2, 1, 1]\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn Main;\n}(_react.Component);\n\n/**\n * Map Redux state to React props\n * \n * @param {Object} state\n * \n * @returns {Object} mapped state\n */\n\n\nfunction mapStateToProps(state) {\n\treturn {\n\t\ttags: state.tags,\n\t\ttagHistory: state.tagHistory,\n\t\tplc: state.plc\n\t};\n}\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps)(Main);\n\n//# sourceURL=webpack:///./app/src/components/Main.js?"); /***/ }), @@ -215,6 +215,18 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n /***/ }), +/***/ "./app/src/components/TimeSeriesGraph.js": +/*!***********************************************!*\ + !*** ./app/src/components/TimeSeriesGraph.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.TimeSeriesGraph = TimeSeriesGraph;\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _pondjs = __webpack_require__(/*! pondjs */ \"./node_modules/pondjs/lib/entry.js\");\n\nvar _lodash = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reactTimeseriesCharts = __webpack_require__(/*! react-timeseries-charts */ \"./node_modules/react-timeseries-charts/lib/entry.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction TimeSeriesGraph(props) {\n\n\tvar series = _lodash2.default.map(props.tagHistory, function (tag, key) {\n\t\tvar points = _lodash2.default.reverse(_lodash2.default.map(tag, function (_ref) {\n\t\t\tvar timestamp = _ref.timestamp,\n\t\t\t value = _ref.value;\n\n\t\t\treturn [timestamp.getTime(), parseFloat(value)];\n\t\t}));\n\t\treturn new _pondjs.TimeSeries({\n\t\t\tname: props.tagDescriptions[key],\n\t\t\tcolumns: [\"time\", props.tagDescriptions[key]],\n\t\t\tpoints: points\n\t\t});\n\t});\n\n\t// const lineCharts = _.map(props.tagHistory, (tag, key) => {\n\t// \treturn ;\n\t// });\n\n\n\treturn _react2.default.createElement(\n\t\t_reactTimeseriesCharts.ChartContainer,\n\t\t{ timeRange: series[0].timerange(), width: 800 },\n\t\t_react2.default.createElement(\n\t\t\t_reactTimeseriesCharts.ChartRow,\n\t\t\t{ height: \"200\" },\n\t\t\t_react2.default.createElement(_reactTimeseriesCharts.YAxis, { id: \"axis1\", min: 0, max: 500, width: \"60\", type: \"linear\" }),\n\t\t\t_react2.default.createElement(\n\t\t\t\t_reactTimeseriesCharts.Charts,\n\t\t\t\tnull,\n\t\t\t\t_react2.default.createElement(_reactTimeseriesCharts.LineChart, { axis: \"axis1\", series: series[0], column: [props.tagDescriptions[0]] }),\n\t\t\t\t\";\"\n\t\t\t)\n\t\t)\n\t);\n}\n\n//# sourceURL=webpack:///./app/src/components/TimeSeriesGraph.js?"); + +/***/ }), + /***/ "./app/src/global.css": /*!****************************!*\ !*** ./app/src/global.css ***! @@ -346,6 +358,1422 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _for /***/ }), +/***/ "./node_modules/array.prototype.fill/index.js": +/*!****************************************************!*\ + !*** ./node_modules/array.prototype.fill/index.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("(function () {\n if (Array.prototype.fill) return;\n\n var fill = function (value) {\n // Steps 1-2.\n if (this == null) {\n throw new TypeError(\"this is null or not defined\");\n }\n\n var O = Object(this);\n\n // Steps 3-5.\n var len = O.length >>> 0;\n\n // Steps 6-7.\n var start = arguments[1];\n var relativeStart = start >> 0;\n\n // Step 8.\n var k = relativeStart < 0 ?\n Math.max(len + relativeStart, 0) :\n Math.min(relativeStart, len);\n\n // Steps 9-10.\n var end = arguments[2];\n var relativeEnd = end === undefined ?\n len : end >> 0;\n\n // Step 11.\n var last = relativeEnd < 0 ?\n Math.max(len + relativeEnd, 0) :\n Math.min(relativeEnd, len);\n\n // Step 12.\n while (k < last) {\n O[k] = value;\n k++;\n }\n\n // Step 13.\n return O;\n };\n\n if (Object.defineProperty) {\n try {\n Object.defineProperty(Array.prototype, 'fill', {\n value: fill,\n configurable: true,\n enumerable: false,\n writable: true\n });\n } catch(e) {}\n }\n\n if (!Array.prototype.fill) {\n Array.prototype.fill = fill;\n }\n})(this);\n\n\n//# sourceURL=webpack:///./node_modules/array.prototype.fill/index.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/core-js/array/from.js": +/*!**********************************************************!*\ + !*** ./node_modules/babel-runtime/core-js/array/from.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/array/from */ \"./node_modules/core-js/library/fn/array/from.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/array/from.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/core-js/get-iterator.js": +/*!************************************************************!*\ + !*** ./node_modules/babel-runtime/core-js/get-iterator.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/get-iterator */ \"./node_modules/core-js/library/fn/get-iterator.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/get-iterator.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/core-js/is-iterable.js": +/*!***********************************************************!*\ + !*** ./node_modules/babel-runtime/core-js/is-iterable.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/is-iterable */ \"./node_modules/core-js/library/fn/is-iterable.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/is-iterable.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/core-js/json/stringify.js": +/*!**************************************************************!*\ + !*** ./node_modules/babel-runtime/core-js/json/stringify.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/json/stringify */ \"./node_modules/core-js/library/fn/json/stringify.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/json/stringify.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/core-js/number/is-integer.js": +/*!*****************************************************************!*\ + !*** ./node_modules/babel-runtime/core-js/number/is-integer.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/number/is-integer */ \"./node_modules/core-js/library/fn/number/is-integer.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/number/is-integer.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/core-js/object/assign.js": +/*!*************************************************************!*\ + !*** ./node_modules/babel-runtime/core-js/object/assign.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/assign */ \"./node_modules/core-js/library/fn/object/assign.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/object/assign.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/core-js/object/create.js": +/*!*************************************************************!*\ + !*** ./node_modules/babel-runtime/core-js/object/create.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/create */ \"./node_modules/core-js/library/fn/object/create.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/object/create.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/core-js/object/define-property.js": +/*!**********************************************************************!*\ + !*** ./node_modules/babel-runtime/core-js/object/define-property.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/define-property */ \"./node_modules/core-js/library/fn/object/define-property.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/object/define-property.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js ***! + \**********************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/get-own-property-descriptor */ \"./node_modules/core-js/library/fn/object/get-own-property-descriptor.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/core-js/object/get-prototype-of.js": +/*!***********************************************************************!*\ + !*** ./node_modules/babel-runtime/core-js/object/get-prototype-of.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/get-prototype-of */ \"./node_modules/core-js/library/fn/object/get-prototype-of.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/object/get-prototype-of.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/core-js/object/keys.js": +/*!***********************************************************!*\ + !*** ./node_modules/babel-runtime/core-js/object/keys.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/keys */ \"./node_modules/core-js/library/fn/object/keys.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/object/keys.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/core-js/object/set-prototype-of.js": +/*!***********************************************************************!*\ + !*** ./node_modules/babel-runtime/core-js/object/set-prototype-of.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/set-prototype-of */ \"./node_modules/core-js/library/fn/object/set-prototype-of.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/object/set-prototype-of.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/core-js/symbol.js": +/*!******************************************************!*\ + !*** ./node_modules/babel-runtime/core-js/symbol.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/symbol */ \"./node_modules/core-js/library/fn/symbol/index.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/symbol.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/core-js/symbol/iterator.js": +/*!***************************************************************!*\ + !*** ./node_modules/babel-runtime/core-js/symbol/iterator.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/symbol/iterator */ \"./node_modules/core-js/library/fn/symbol/iterator.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/symbol/iterator.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/helpers/classCallCheck.js": +/*!**************************************************************!*\ + !*** ./node_modules/babel-runtime/helpers/classCallCheck.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/classCallCheck.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/helpers/createClass.js": +/*!***********************************************************!*\ + !*** ./node_modules/babel-runtime/helpers/createClass.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(/*! ../core-js/object/define-property */ \"./node_modules/babel-runtime/core-js/object/define-property.js\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/createClass.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/helpers/extends.js": +/*!*******************************************************!*\ + !*** ./node_modules/babel-runtime/helpers/extends.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nexports.__esModule = true;\n\nvar _assign = __webpack_require__(/*! ../core-js/object/assign */ \"./node_modules/babel-runtime/core-js/object/assign.js\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/extends.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/helpers/get.js": +/*!***************************************************!*\ + !*** ./node_modules/babel-runtime/helpers/get.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nexports.__esModule = true;\n\nvar _getPrototypeOf = __webpack_require__(/*! ../core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _getOwnPropertyDescriptor = __webpack_require__(/*! ../core-js/object/get-own-property-descriptor */ \"./node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js\");\n\nvar _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = (0, _getOwnPropertyDescriptor2.default)(object, property);\n\n if (desc === undefined) {\n var parent = (0, _getPrototypeOf2.default)(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/get.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/helpers/inherits.js": +/*!********************************************************!*\ + !*** ./node_modules/babel-runtime/helpers/inherits.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = __webpack_require__(/*! ../core-js/object/set-prototype-of */ \"./node_modules/babel-runtime/core-js/object/set-prototype-of.js\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = __webpack_require__(/*! ../core-js/object/create */ \"./node_modules/babel-runtime/core-js/object/create.js\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = __webpack_require__(/*! ../helpers/typeof */ \"./node_modules/babel-runtime/helpers/typeof.js\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/inherits.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/helpers/objectWithoutProperties.js": +/*!***********************************************************************!*\ + !*** ./node_modules/babel-runtime/helpers/objectWithoutProperties.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/objectWithoutProperties.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/helpers/possibleConstructorReturn.js": +/*!*************************************************************************!*\ + !*** ./node_modules/babel-runtime/helpers/possibleConstructorReturn.js ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nexports.__esModule = true;\n\nvar _typeof2 = __webpack_require__(/*! ../helpers/typeof */ \"./node_modules/babel-runtime/helpers/typeof.js\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/possibleConstructorReturn.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/helpers/slicedToArray.js": +/*!*************************************************************!*\ + !*** ./node_modules/babel-runtime/helpers/slicedToArray.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nexports.__esModule = true;\n\nvar _isIterable2 = __webpack_require__(/*! ../core-js/is-iterable */ \"./node_modules/babel-runtime/core-js/is-iterable.js\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = __webpack_require__(/*! ../core-js/get-iterator */ \"./node_modules/babel-runtime/core-js/get-iterator.js\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/slicedToArray.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/helpers/toArray.js": +/*!*******************************************************!*\ + !*** ./node_modules/babel-runtime/helpers/toArray.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nexports.__esModule = true;\n\nvar _from = __webpack_require__(/*! ../core-js/array/from */ \"./node_modules/babel-runtime/core-js/array/from.js\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n return Array.isArray(arr) ? arr : (0, _from2.default)(arr);\n};\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/toArray.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/helpers/toConsumableArray.js": +/*!*****************************************************************!*\ + !*** ./node_modules/babel-runtime/helpers/toConsumableArray.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nexports.__esModule = true;\n\nvar _from = __webpack_require__(/*! ../core-js/array/from */ \"./node_modules/babel-runtime/core-js/array/from.js\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/toConsumableArray.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/helpers/typeof.js": +/*!******************************************************!*\ + !*** ./node_modules/babel-runtime/helpers/typeof.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nexports.__esModule = true;\n\nvar _iterator = __webpack_require__(/*! ../core-js/symbol/iterator */ \"./node_modules/babel-runtime/core-js/symbol/iterator.js\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = __webpack_require__(/*! ../core-js/symbol */ \"./node_modules/babel-runtime/core-js/symbol.js\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/typeof.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/node_modules/regenerator-runtime/runtime-module.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/babel-runtime/node_modules/regenerator-runtime/runtime-module.js ***! + \***************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() { return this })() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = __webpack_require__(/*! ./runtime */ \"./node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/node_modules/regenerator-runtime/runtime-module.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js": +/*!********************************************************************************!*\ + !*** ./node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js ***! + \********************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js?"); + +/***/ }), + +/***/ "./node_modules/babel-runtime/regenerator/index.js": +/*!*********************************************************!*\ + !*** ./node_modules/babel-runtime/regenerator/index.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports = __webpack_require__(/*! regenerator-runtime */ \"./node_modules/babel-runtime/node_modules/regenerator-runtime/runtime-module.js\");\n\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/regenerator/index.js?"); + +/***/ }), + +/***/ "./node_modules/colorbrewer/index.js": +/*!*******************************************!*\ + !*** ./node_modules/colorbrewer/index.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;// This product includes color specifications and designs developed by Cynthia Brewer (http://colorbrewer.org/).\n// JavaScript specs as packaged in the D3 library (d3js.org). Please see license at http://colorbrewer.org/export/LICENSE.txt\n!function() {\n\nvar colorbrewer = {YlGn: {\n3: [\"#f7fcb9\",\"#addd8e\",\"#31a354\"],\n4: [\"#ffffcc\",\"#c2e699\",\"#78c679\",\"#238443\"],\n5: [\"#ffffcc\",\"#c2e699\",\"#78c679\",\"#31a354\",\"#006837\"],\n6: [\"#ffffcc\",\"#d9f0a3\",\"#addd8e\",\"#78c679\",\"#31a354\",\"#006837\"],\n7: [\"#ffffcc\",\"#d9f0a3\",\"#addd8e\",\"#78c679\",\"#41ab5d\",\"#238443\",\"#005a32\"],\n8: [\"#ffffe5\",\"#f7fcb9\",\"#d9f0a3\",\"#addd8e\",\"#78c679\",\"#41ab5d\",\"#238443\",\"#005a32\"],\n9: [\"#ffffe5\",\"#f7fcb9\",\"#d9f0a3\",\"#addd8e\",\"#78c679\",\"#41ab5d\",\"#238443\",\"#006837\",\"#004529\"]\n},YlGnBu: {\n3: [\"#edf8b1\",\"#7fcdbb\",\"#2c7fb8\"],\n4: [\"#ffffcc\",\"#a1dab4\",\"#41b6c4\",\"#225ea8\"],\n5: [\"#ffffcc\",\"#a1dab4\",\"#41b6c4\",\"#2c7fb8\",\"#253494\"],\n6: [\"#ffffcc\",\"#c7e9b4\",\"#7fcdbb\",\"#41b6c4\",\"#2c7fb8\",\"#253494\"],\n7: [\"#ffffcc\",\"#c7e9b4\",\"#7fcdbb\",\"#41b6c4\",\"#1d91c0\",\"#225ea8\",\"#0c2c84\"],\n8: [\"#ffffd9\",\"#edf8b1\",\"#c7e9b4\",\"#7fcdbb\",\"#41b6c4\",\"#1d91c0\",\"#225ea8\",\"#0c2c84\"],\n9: [\"#ffffd9\",\"#edf8b1\",\"#c7e9b4\",\"#7fcdbb\",\"#41b6c4\",\"#1d91c0\",\"#225ea8\",\"#253494\",\"#081d58\"]\n},GnBu: {\n3: [\"#e0f3db\",\"#a8ddb5\",\"#43a2ca\"],\n4: [\"#f0f9e8\",\"#bae4bc\",\"#7bccc4\",\"#2b8cbe\"],\n5: [\"#f0f9e8\",\"#bae4bc\",\"#7bccc4\",\"#43a2ca\",\"#0868ac\"],\n6: [\"#f0f9e8\",\"#ccebc5\",\"#a8ddb5\",\"#7bccc4\",\"#43a2ca\",\"#0868ac\"],\n7: [\"#f0f9e8\",\"#ccebc5\",\"#a8ddb5\",\"#7bccc4\",\"#4eb3d3\",\"#2b8cbe\",\"#08589e\"],\n8: [\"#f7fcf0\",\"#e0f3db\",\"#ccebc5\",\"#a8ddb5\",\"#7bccc4\",\"#4eb3d3\",\"#2b8cbe\",\"#08589e\"],\n9: [\"#f7fcf0\",\"#e0f3db\",\"#ccebc5\",\"#a8ddb5\",\"#7bccc4\",\"#4eb3d3\",\"#2b8cbe\",\"#0868ac\",\"#084081\"]\n},BuGn: {\n3: [\"#e5f5f9\",\"#99d8c9\",\"#2ca25f\"],\n4: [\"#edf8fb\",\"#b2e2e2\",\"#66c2a4\",\"#238b45\"],\n5: [\"#edf8fb\",\"#b2e2e2\",\"#66c2a4\",\"#2ca25f\",\"#006d2c\"],\n6: [\"#edf8fb\",\"#ccece6\",\"#99d8c9\",\"#66c2a4\",\"#2ca25f\",\"#006d2c\"],\n7: [\"#edf8fb\",\"#ccece6\",\"#99d8c9\",\"#66c2a4\",\"#41ae76\",\"#238b45\",\"#005824\"],\n8: [\"#f7fcfd\",\"#e5f5f9\",\"#ccece6\",\"#99d8c9\",\"#66c2a4\",\"#41ae76\",\"#238b45\",\"#005824\"],\n9: [\"#f7fcfd\",\"#e5f5f9\",\"#ccece6\",\"#99d8c9\",\"#66c2a4\",\"#41ae76\",\"#238b45\",\"#006d2c\",\"#00441b\"]\n},PuBuGn: {\n3: [\"#ece2f0\",\"#a6bddb\",\"#1c9099\"],\n4: [\"#f6eff7\",\"#bdc9e1\",\"#67a9cf\",\"#02818a\"],\n5: [\"#f6eff7\",\"#bdc9e1\",\"#67a9cf\",\"#1c9099\",\"#016c59\"],\n6: [\"#f6eff7\",\"#d0d1e6\",\"#a6bddb\",\"#67a9cf\",\"#1c9099\",\"#016c59\"],\n7: [\"#f6eff7\",\"#d0d1e6\",\"#a6bddb\",\"#67a9cf\",\"#3690c0\",\"#02818a\",\"#016450\"],\n8: [\"#fff7fb\",\"#ece2f0\",\"#d0d1e6\",\"#a6bddb\",\"#67a9cf\",\"#3690c0\",\"#02818a\",\"#016450\"],\n9: [\"#fff7fb\",\"#ece2f0\",\"#d0d1e6\",\"#a6bddb\",\"#67a9cf\",\"#3690c0\",\"#02818a\",\"#016c59\",\"#014636\"]\n},PuBu: {\n3: [\"#ece7f2\",\"#a6bddb\",\"#2b8cbe\"],\n4: [\"#f1eef6\",\"#bdc9e1\",\"#74a9cf\",\"#0570b0\"],\n5: [\"#f1eef6\",\"#bdc9e1\",\"#74a9cf\",\"#2b8cbe\",\"#045a8d\"],\n6: [\"#f1eef6\",\"#d0d1e6\",\"#a6bddb\",\"#74a9cf\",\"#2b8cbe\",\"#045a8d\"],\n7: [\"#f1eef6\",\"#d0d1e6\",\"#a6bddb\",\"#74a9cf\",\"#3690c0\",\"#0570b0\",\"#034e7b\"],\n8: [\"#fff7fb\",\"#ece7f2\",\"#d0d1e6\",\"#a6bddb\",\"#74a9cf\",\"#3690c0\",\"#0570b0\",\"#034e7b\"],\n9: [\"#fff7fb\",\"#ece7f2\",\"#d0d1e6\",\"#a6bddb\",\"#74a9cf\",\"#3690c0\",\"#0570b0\",\"#045a8d\",\"#023858\"]\n},BuPu: {\n3: [\"#e0ecf4\",\"#9ebcda\",\"#8856a7\"],\n4: [\"#edf8fb\",\"#b3cde3\",\"#8c96c6\",\"#88419d\"],\n5: [\"#edf8fb\",\"#b3cde3\",\"#8c96c6\",\"#8856a7\",\"#810f7c\"],\n6: [\"#edf8fb\",\"#bfd3e6\",\"#9ebcda\",\"#8c96c6\",\"#8856a7\",\"#810f7c\"],\n7: [\"#edf8fb\",\"#bfd3e6\",\"#9ebcda\",\"#8c96c6\",\"#8c6bb1\",\"#88419d\",\"#6e016b\"],\n8: [\"#f7fcfd\",\"#e0ecf4\",\"#bfd3e6\",\"#9ebcda\",\"#8c96c6\",\"#8c6bb1\",\"#88419d\",\"#6e016b\"],\n9: [\"#f7fcfd\",\"#e0ecf4\",\"#bfd3e6\",\"#9ebcda\",\"#8c96c6\",\"#8c6bb1\",\"#88419d\",\"#810f7c\",\"#4d004b\"]\n},RdPu: {\n3: [\"#fde0dd\",\"#fa9fb5\",\"#c51b8a\"],\n4: [\"#feebe2\",\"#fbb4b9\",\"#f768a1\",\"#ae017e\"],\n5: [\"#feebe2\",\"#fbb4b9\",\"#f768a1\",\"#c51b8a\",\"#7a0177\"],\n6: [\"#feebe2\",\"#fcc5c0\",\"#fa9fb5\",\"#f768a1\",\"#c51b8a\",\"#7a0177\"],\n7: [\"#feebe2\",\"#fcc5c0\",\"#fa9fb5\",\"#f768a1\",\"#dd3497\",\"#ae017e\",\"#7a0177\"],\n8: [\"#fff7f3\",\"#fde0dd\",\"#fcc5c0\",\"#fa9fb5\",\"#f768a1\",\"#dd3497\",\"#ae017e\",\"#7a0177\"],\n9: [\"#fff7f3\",\"#fde0dd\",\"#fcc5c0\",\"#fa9fb5\",\"#f768a1\",\"#dd3497\",\"#ae017e\",\"#7a0177\",\"#49006a\"]\n},PuRd: {\n3: [\"#e7e1ef\",\"#c994c7\",\"#dd1c77\"],\n4: [\"#f1eef6\",\"#d7b5d8\",\"#df65b0\",\"#ce1256\"],\n5: [\"#f1eef6\",\"#d7b5d8\",\"#df65b0\",\"#dd1c77\",\"#980043\"],\n6: [\"#f1eef6\",\"#d4b9da\",\"#c994c7\",\"#df65b0\",\"#dd1c77\",\"#980043\"],\n7: [\"#f1eef6\",\"#d4b9da\",\"#c994c7\",\"#df65b0\",\"#e7298a\",\"#ce1256\",\"#91003f\"],\n8: [\"#f7f4f9\",\"#e7e1ef\",\"#d4b9da\",\"#c994c7\",\"#df65b0\",\"#e7298a\",\"#ce1256\",\"#91003f\"],\n9: [\"#f7f4f9\",\"#e7e1ef\",\"#d4b9da\",\"#c994c7\",\"#df65b0\",\"#e7298a\",\"#ce1256\",\"#980043\",\"#67001f\"]\n},OrRd: {\n3: [\"#fee8c8\",\"#fdbb84\",\"#e34a33\"],\n4: [\"#fef0d9\",\"#fdcc8a\",\"#fc8d59\",\"#d7301f\"],\n5: [\"#fef0d9\",\"#fdcc8a\",\"#fc8d59\",\"#e34a33\",\"#b30000\"],\n6: [\"#fef0d9\",\"#fdd49e\",\"#fdbb84\",\"#fc8d59\",\"#e34a33\",\"#b30000\"],\n7: [\"#fef0d9\",\"#fdd49e\",\"#fdbb84\",\"#fc8d59\",\"#ef6548\",\"#d7301f\",\"#990000\"],\n8: [\"#fff7ec\",\"#fee8c8\",\"#fdd49e\",\"#fdbb84\",\"#fc8d59\",\"#ef6548\",\"#d7301f\",\"#990000\"],\n9: [\"#fff7ec\",\"#fee8c8\",\"#fdd49e\",\"#fdbb84\",\"#fc8d59\",\"#ef6548\",\"#d7301f\",\"#b30000\",\"#7f0000\"]\n},YlOrRd: {\n3: [\"#ffeda0\",\"#feb24c\",\"#f03b20\"],\n4: [\"#ffffb2\",\"#fecc5c\",\"#fd8d3c\",\"#e31a1c\"],\n5: [\"#ffffb2\",\"#fecc5c\",\"#fd8d3c\",\"#f03b20\",\"#bd0026\"],\n6: [\"#ffffb2\",\"#fed976\",\"#feb24c\",\"#fd8d3c\",\"#f03b20\",\"#bd0026\"],\n7: [\"#ffffb2\",\"#fed976\",\"#feb24c\",\"#fd8d3c\",\"#fc4e2a\",\"#e31a1c\",\"#b10026\"],\n8: [\"#ffffcc\",\"#ffeda0\",\"#fed976\",\"#feb24c\",\"#fd8d3c\",\"#fc4e2a\",\"#e31a1c\",\"#b10026\"],\n9: [\"#ffffcc\",\"#ffeda0\",\"#fed976\",\"#feb24c\",\"#fd8d3c\",\"#fc4e2a\",\"#e31a1c\",\"#bd0026\",\"#800026\"]\n},YlOrBr: {\n3: [\"#fff7bc\",\"#fec44f\",\"#d95f0e\"],\n4: [\"#ffffd4\",\"#fed98e\",\"#fe9929\",\"#cc4c02\"],\n5: [\"#ffffd4\",\"#fed98e\",\"#fe9929\",\"#d95f0e\",\"#993404\"],\n6: [\"#ffffd4\",\"#fee391\",\"#fec44f\",\"#fe9929\",\"#d95f0e\",\"#993404\"],\n7: [\"#ffffd4\",\"#fee391\",\"#fec44f\",\"#fe9929\",\"#ec7014\",\"#cc4c02\",\"#8c2d04\"],\n8: [\"#ffffe5\",\"#fff7bc\",\"#fee391\",\"#fec44f\",\"#fe9929\",\"#ec7014\",\"#cc4c02\",\"#8c2d04\"],\n9: [\"#ffffe5\",\"#fff7bc\",\"#fee391\",\"#fec44f\",\"#fe9929\",\"#ec7014\",\"#cc4c02\",\"#993404\",\"#662506\"]\n},Purples: {\n3: [\"#efedf5\",\"#bcbddc\",\"#756bb1\"],\n4: [\"#f2f0f7\",\"#cbc9e2\",\"#9e9ac8\",\"#6a51a3\"],\n5: [\"#f2f0f7\",\"#cbc9e2\",\"#9e9ac8\",\"#756bb1\",\"#54278f\"],\n6: [\"#f2f0f7\",\"#dadaeb\",\"#bcbddc\",\"#9e9ac8\",\"#756bb1\",\"#54278f\"],\n7: [\"#f2f0f7\",\"#dadaeb\",\"#bcbddc\",\"#9e9ac8\",\"#807dba\",\"#6a51a3\",\"#4a1486\"],\n8: [\"#fcfbfd\",\"#efedf5\",\"#dadaeb\",\"#bcbddc\",\"#9e9ac8\",\"#807dba\",\"#6a51a3\",\"#4a1486\"],\n9: [\"#fcfbfd\",\"#efedf5\",\"#dadaeb\",\"#bcbddc\",\"#9e9ac8\",\"#807dba\",\"#6a51a3\",\"#54278f\",\"#3f007d\"]\n},Blues: {\n3: [\"#deebf7\",\"#9ecae1\",\"#3182bd\"],\n4: [\"#eff3ff\",\"#bdd7e7\",\"#6baed6\",\"#2171b5\"],\n5: [\"#eff3ff\",\"#bdd7e7\",\"#6baed6\",\"#3182bd\",\"#08519c\"],\n6: [\"#eff3ff\",\"#c6dbef\",\"#9ecae1\",\"#6baed6\",\"#3182bd\",\"#08519c\"],\n7: [\"#eff3ff\",\"#c6dbef\",\"#9ecae1\",\"#6baed6\",\"#4292c6\",\"#2171b5\",\"#084594\"],\n8: [\"#f7fbff\",\"#deebf7\",\"#c6dbef\",\"#9ecae1\",\"#6baed6\",\"#4292c6\",\"#2171b5\",\"#084594\"],\n9: [\"#f7fbff\",\"#deebf7\",\"#c6dbef\",\"#9ecae1\",\"#6baed6\",\"#4292c6\",\"#2171b5\",\"#08519c\",\"#08306b\"]\n},Greens: {\n3: [\"#e5f5e0\",\"#a1d99b\",\"#31a354\"],\n4: [\"#edf8e9\",\"#bae4b3\",\"#74c476\",\"#238b45\"],\n5: [\"#edf8e9\",\"#bae4b3\",\"#74c476\",\"#31a354\",\"#006d2c\"],\n6: [\"#edf8e9\",\"#c7e9c0\",\"#a1d99b\",\"#74c476\",\"#31a354\",\"#006d2c\"],\n7: [\"#edf8e9\",\"#c7e9c0\",\"#a1d99b\",\"#74c476\",\"#41ab5d\",\"#238b45\",\"#005a32\"],\n8: [\"#f7fcf5\",\"#e5f5e0\",\"#c7e9c0\",\"#a1d99b\",\"#74c476\",\"#41ab5d\",\"#238b45\",\"#005a32\"],\n9: [\"#f7fcf5\",\"#e5f5e0\",\"#c7e9c0\",\"#a1d99b\",\"#74c476\",\"#41ab5d\",\"#238b45\",\"#006d2c\",\"#00441b\"]\n},Oranges: {\n3: [\"#fee6ce\",\"#fdae6b\",\"#e6550d\"],\n4: [\"#feedde\",\"#fdbe85\",\"#fd8d3c\",\"#d94701\"],\n5: [\"#feedde\",\"#fdbe85\",\"#fd8d3c\",\"#e6550d\",\"#a63603\"],\n6: [\"#feedde\",\"#fdd0a2\",\"#fdae6b\",\"#fd8d3c\",\"#e6550d\",\"#a63603\"],\n7: [\"#feedde\",\"#fdd0a2\",\"#fdae6b\",\"#fd8d3c\",\"#f16913\",\"#d94801\",\"#8c2d04\"],\n8: [\"#fff5eb\",\"#fee6ce\",\"#fdd0a2\",\"#fdae6b\",\"#fd8d3c\",\"#f16913\",\"#d94801\",\"#8c2d04\"],\n9: [\"#fff5eb\",\"#fee6ce\",\"#fdd0a2\",\"#fdae6b\",\"#fd8d3c\",\"#f16913\",\"#d94801\",\"#a63603\",\"#7f2704\"]\n},Reds: {\n3: [\"#fee0d2\",\"#fc9272\",\"#de2d26\"],\n4: [\"#fee5d9\",\"#fcae91\",\"#fb6a4a\",\"#cb181d\"],\n5: [\"#fee5d9\",\"#fcae91\",\"#fb6a4a\",\"#de2d26\",\"#a50f15\"],\n6: [\"#fee5d9\",\"#fcbba1\",\"#fc9272\",\"#fb6a4a\",\"#de2d26\",\"#a50f15\"],\n7: [\"#fee5d9\",\"#fcbba1\",\"#fc9272\",\"#fb6a4a\",\"#ef3b2c\",\"#cb181d\",\"#99000d\"],\n8: [\"#fff5f0\",\"#fee0d2\",\"#fcbba1\",\"#fc9272\",\"#fb6a4a\",\"#ef3b2c\",\"#cb181d\",\"#99000d\"],\n9: [\"#fff5f0\",\"#fee0d2\",\"#fcbba1\",\"#fc9272\",\"#fb6a4a\",\"#ef3b2c\",\"#cb181d\",\"#a50f15\",\"#67000d\"]\n},Greys: {\n3: [\"#f0f0f0\",\"#bdbdbd\",\"#636363\"],\n4: [\"#f7f7f7\",\"#cccccc\",\"#969696\",\"#525252\"],\n5: [\"#f7f7f7\",\"#cccccc\",\"#969696\",\"#636363\",\"#252525\"],\n6: [\"#f7f7f7\",\"#d9d9d9\",\"#bdbdbd\",\"#969696\",\"#636363\",\"#252525\"],\n7: [\"#f7f7f7\",\"#d9d9d9\",\"#bdbdbd\",\"#969696\",\"#737373\",\"#525252\",\"#252525\"],\n8: [\"#ffffff\",\"#f0f0f0\",\"#d9d9d9\",\"#bdbdbd\",\"#969696\",\"#737373\",\"#525252\",\"#252525\"],\n9: [\"#ffffff\",\"#f0f0f0\",\"#d9d9d9\",\"#bdbdbd\",\"#969696\",\"#737373\",\"#525252\",\"#252525\",\"#000000\"]\n},PuOr: {\n3: [\"#f1a340\",\"#f7f7f7\",\"#998ec3\"],\n4: [\"#e66101\",\"#fdb863\",\"#b2abd2\",\"#5e3c99\"],\n5: [\"#e66101\",\"#fdb863\",\"#f7f7f7\",\"#b2abd2\",\"#5e3c99\"],\n6: [\"#b35806\",\"#f1a340\",\"#fee0b6\",\"#d8daeb\",\"#998ec3\",\"#542788\"],\n7: [\"#b35806\",\"#f1a340\",\"#fee0b6\",\"#f7f7f7\",\"#d8daeb\",\"#998ec3\",\"#542788\"],\n8: [\"#b35806\",\"#e08214\",\"#fdb863\",\"#fee0b6\",\"#d8daeb\",\"#b2abd2\",\"#8073ac\",\"#542788\"],\n9: [\"#b35806\",\"#e08214\",\"#fdb863\",\"#fee0b6\",\"#f7f7f7\",\"#d8daeb\",\"#b2abd2\",\"#8073ac\",\"#542788\"],\n10: [\"#7f3b08\",\"#b35806\",\"#e08214\",\"#fdb863\",\"#fee0b6\",\"#d8daeb\",\"#b2abd2\",\"#8073ac\",\"#542788\",\"#2d004b\"],\n11: [\"#7f3b08\",\"#b35806\",\"#e08214\",\"#fdb863\",\"#fee0b6\",\"#f7f7f7\",\"#d8daeb\",\"#b2abd2\",\"#8073ac\",\"#542788\",\"#2d004b\"]\n},BrBG: {\n3: [\"#d8b365\",\"#f5f5f5\",\"#5ab4ac\"],\n4: [\"#a6611a\",\"#dfc27d\",\"#80cdc1\",\"#018571\"],\n5: [\"#a6611a\",\"#dfc27d\",\"#f5f5f5\",\"#80cdc1\",\"#018571\"],\n6: [\"#8c510a\",\"#d8b365\",\"#f6e8c3\",\"#c7eae5\",\"#5ab4ac\",\"#01665e\"],\n7: [\"#8c510a\",\"#d8b365\",\"#f6e8c3\",\"#f5f5f5\",\"#c7eae5\",\"#5ab4ac\",\"#01665e\"],\n8: [\"#8c510a\",\"#bf812d\",\"#dfc27d\",\"#f6e8c3\",\"#c7eae5\",\"#80cdc1\",\"#35978f\",\"#01665e\"],\n9: [\"#8c510a\",\"#bf812d\",\"#dfc27d\",\"#f6e8c3\",\"#f5f5f5\",\"#c7eae5\",\"#80cdc1\",\"#35978f\",\"#01665e\"],\n10: [\"#543005\",\"#8c510a\",\"#bf812d\",\"#dfc27d\",\"#f6e8c3\",\"#c7eae5\",\"#80cdc1\",\"#35978f\",\"#01665e\",\"#003c30\"],\n11: [\"#543005\",\"#8c510a\",\"#bf812d\",\"#dfc27d\",\"#f6e8c3\",\"#f5f5f5\",\"#c7eae5\",\"#80cdc1\",\"#35978f\",\"#01665e\",\"#003c30\"]\n},PRGn: {\n3: [\"#af8dc3\",\"#f7f7f7\",\"#7fbf7b\"],\n4: [\"#7b3294\",\"#c2a5cf\",\"#a6dba0\",\"#008837\"],\n5: [\"#7b3294\",\"#c2a5cf\",\"#f7f7f7\",\"#a6dba0\",\"#008837\"],\n6: [\"#762a83\",\"#af8dc3\",\"#e7d4e8\",\"#d9f0d3\",\"#7fbf7b\",\"#1b7837\"],\n7: [\"#762a83\",\"#af8dc3\",\"#e7d4e8\",\"#f7f7f7\",\"#d9f0d3\",\"#7fbf7b\",\"#1b7837\"],\n8: [\"#762a83\",\"#9970ab\",\"#c2a5cf\",\"#e7d4e8\",\"#d9f0d3\",\"#a6dba0\",\"#5aae61\",\"#1b7837\"],\n9: [\"#762a83\",\"#9970ab\",\"#c2a5cf\",\"#e7d4e8\",\"#f7f7f7\",\"#d9f0d3\",\"#a6dba0\",\"#5aae61\",\"#1b7837\"],\n10: [\"#40004b\",\"#762a83\",\"#9970ab\",\"#c2a5cf\",\"#e7d4e8\",\"#d9f0d3\",\"#a6dba0\",\"#5aae61\",\"#1b7837\",\"#00441b\"],\n11: [\"#40004b\",\"#762a83\",\"#9970ab\",\"#c2a5cf\",\"#e7d4e8\",\"#f7f7f7\",\"#d9f0d3\",\"#a6dba0\",\"#5aae61\",\"#1b7837\",\"#00441b\"]\n},PiYG: {\n3: [\"#e9a3c9\",\"#f7f7f7\",\"#a1d76a\"],\n4: [\"#d01c8b\",\"#f1b6da\",\"#b8e186\",\"#4dac26\"],\n5: [\"#d01c8b\",\"#f1b6da\",\"#f7f7f7\",\"#b8e186\",\"#4dac26\"],\n6: [\"#c51b7d\",\"#e9a3c9\",\"#fde0ef\",\"#e6f5d0\",\"#a1d76a\",\"#4d9221\"],\n7: [\"#c51b7d\",\"#e9a3c9\",\"#fde0ef\",\"#f7f7f7\",\"#e6f5d0\",\"#a1d76a\",\"#4d9221\"],\n8: [\"#c51b7d\",\"#de77ae\",\"#f1b6da\",\"#fde0ef\",\"#e6f5d0\",\"#b8e186\",\"#7fbc41\",\"#4d9221\"],\n9: [\"#c51b7d\",\"#de77ae\",\"#f1b6da\",\"#fde0ef\",\"#f7f7f7\",\"#e6f5d0\",\"#b8e186\",\"#7fbc41\",\"#4d9221\"],\n10: [\"#8e0152\",\"#c51b7d\",\"#de77ae\",\"#f1b6da\",\"#fde0ef\",\"#e6f5d0\",\"#b8e186\",\"#7fbc41\",\"#4d9221\",\"#276419\"],\n11: [\"#8e0152\",\"#c51b7d\",\"#de77ae\",\"#f1b6da\",\"#fde0ef\",\"#f7f7f7\",\"#e6f5d0\",\"#b8e186\",\"#7fbc41\",\"#4d9221\",\"#276419\"]\n},RdBu: {\n3: [\"#ef8a62\",\"#f7f7f7\",\"#67a9cf\"],\n4: [\"#ca0020\",\"#f4a582\",\"#92c5de\",\"#0571b0\"],\n5: [\"#ca0020\",\"#f4a582\",\"#f7f7f7\",\"#92c5de\",\"#0571b0\"],\n6: [\"#b2182b\",\"#ef8a62\",\"#fddbc7\",\"#d1e5f0\",\"#67a9cf\",\"#2166ac\"],\n7: [\"#b2182b\",\"#ef8a62\",\"#fddbc7\",\"#f7f7f7\",\"#d1e5f0\",\"#67a9cf\",\"#2166ac\"],\n8: [\"#b2182b\",\"#d6604d\",\"#f4a582\",\"#fddbc7\",\"#d1e5f0\",\"#92c5de\",\"#4393c3\",\"#2166ac\"],\n9: [\"#b2182b\",\"#d6604d\",\"#f4a582\",\"#fddbc7\",\"#f7f7f7\",\"#d1e5f0\",\"#92c5de\",\"#4393c3\",\"#2166ac\"],\n10: [\"#67001f\",\"#b2182b\",\"#d6604d\",\"#f4a582\",\"#fddbc7\",\"#d1e5f0\",\"#92c5de\",\"#4393c3\",\"#2166ac\",\"#053061\"],\n11: [\"#67001f\",\"#b2182b\",\"#d6604d\",\"#f4a582\",\"#fddbc7\",\"#f7f7f7\",\"#d1e5f0\",\"#92c5de\",\"#4393c3\",\"#2166ac\",\"#053061\"]\n},RdGy: {\n3: [\"#ef8a62\",\"#ffffff\",\"#999999\"],\n4: [\"#ca0020\",\"#f4a582\",\"#bababa\",\"#404040\"],\n5: [\"#ca0020\",\"#f4a582\",\"#ffffff\",\"#bababa\",\"#404040\"],\n6: [\"#b2182b\",\"#ef8a62\",\"#fddbc7\",\"#e0e0e0\",\"#999999\",\"#4d4d4d\"],\n7: [\"#b2182b\",\"#ef8a62\",\"#fddbc7\",\"#ffffff\",\"#e0e0e0\",\"#999999\",\"#4d4d4d\"],\n8: [\"#b2182b\",\"#d6604d\",\"#f4a582\",\"#fddbc7\",\"#e0e0e0\",\"#bababa\",\"#878787\",\"#4d4d4d\"],\n9: [\"#b2182b\",\"#d6604d\",\"#f4a582\",\"#fddbc7\",\"#ffffff\",\"#e0e0e0\",\"#bababa\",\"#878787\",\"#4d4d4d\"],\n10: [\"#67001f\",\"#b2182b\",\"#d6604d\",\"#f4a582\",\"#fddbc7\",\"#e0e0e0\",\"#bababa\",\"#878787\",\"#4d4d4d\",\"#1a1a1a\"],\n11: [\"#67001f\",\"#b2182b\",\"#d6604d\",\"#f4a582\",\"#fddbc7\",\"#ffffff\",\"#e0e0e0\",\"#bababa\",\"#878787\",\"#4d4d4d\",\"#1a1a1a\"]\n},RdYlBu: {\n3: [\"#fc8d59\",\"#ffffbf\",\"#91bfdb\"],\n4: [\"#d7191c\",\"#fdae61\",\"#abd9e9\",\"#2c7bb6\"],\n5: [\"#d7191c\",\"#fdae61\",\"#ffffbf\",\"#abd9e9\",\"#2c7bb6\"],\n6: [\"#d73027\",\"#fc8d59\",\"#fee090\",\"#e0f3f8\",\"#91bfdb\",\"#4575b4\"],\n7: [\"#d73027\",\"#fc8d59\",\"#fee090\",\"#ffffbf\",\"#e0f3f8\",\"#91bfdb\",\"#4575b4\"],\n8: [\"#d73027\",\"#f46d43\",\"#fdae61\",\"#fee090\",\"#e0f3f8\",\"#abd9e9\",\"#74add1\",\"#4575b4\"],\n9: [\"#d73027\",\"#f46d43\",\"#fdae61\",\"#fee090\",\"#ffffbf\",\"#e0f3f8\",\"#abd9e9\",\"#74add1\",\"#4575b4\"],\n10: [\"#a50026\",\"#d73027\",\"#f46d43\",\"#fdae61\",\"#fee090\",\"#e0f3f8\",\"#abd9e9\",\"#74add1\",\"#4575b4\",\"#313695\"],\n11: [\"#a50026\",\"#d73027\",\"#f46d43\",\"#fdae61\",\"#fee090\",\"#ffffbf\",\"#e0f3f8\",\"#abd9e9\",\"#74add1\",\"#4575b4\",\"#313695\"]\n},Spectral: {\n3: [\"#fc8d59\",\"#ffffbf\",\"#99d594\"],\n4: [\"#d7191c\",\"#fdae61\",\"#abdda4\",\"#2b83ba\"],\n5: [\"#d7191c\",\"#fdae61\",\"#ffffbf\",\"#abdda4\",\"#2b83ba\"],\n6: [\"#d53e4f\",\"#fc8d59\",\"#fee08b\",\"#e6f598\",\"#99d594\",\"#3288bd\"],\n7: [\"#d53e4f\",\"#fc8d59\",\"#fee08b\",\"#ffffbf\",\"#e6f598\",\"#99d594\",\"#3288bd\"],\n8: [\"#d53e4f\",\"#f46d43\",\"#fdae61\",\"#fee08b\",\"#e6f598\",\"#abdda4\",\"#66c2a5\",\"#3288bd\"],\n9: [\"#d53e4f\",\"#f46d43\",\"#fdae61\",\"#fee08b\",\"#ffffbf\",\"#e6f598\",\"#abdda4\",\"#66c2a5\",\"#3288bd\"],\n10: [\"#9e0142\",\"#d53e4f\",\"#f46d43\",\"#fdae61\",\"#fee08b\",\"#e6f598\",\"#abdda4\",\"#66c2a5\",\"#3288bd\",\"#5e4fa2\"],\n11: [\"#9e0142\",\"#d53e4f\",\"#f46d43\",\"#fdae61\",\"#fee08b\",\"#ffffbf\",\"#e6f598\",\"#abdda4\",\"#66c2a5\",\"#3288bd\",\"#5e4fa2\"]\n},RdYlGn: {\n3: [\"#fc8d59\",\"#ffffbf\",\"#91cf60\"],\n4: [\"#d7191c\",\"#fdae61\",\"#a6d96a\",\"#1a9641\"],\n5: [\"#d7191c\",\"#fdae61\",\"#ffffbf\",\"#a6d96a\",\"#1a9641\"],\n6: [\"#d73027\",\"#fc8d59\",\"#fee08b\",\"#d9ef8b\",\"#91cf60\",\"#1a9850\"],\n7: [\"#d73027\",\"#fc8d59\",\"#fee08b\",\"#ffffbf\",\"#d9ef8b\",\"#91cf60\",\"#1a9850\"],\n8: [\"#d73027\",\"#f46d43\",\"#fdae61\",\"#fee08b\",\"#d9ef8b\",\"#a6d96a\",\"#66bd63\",\"#1a9850\"],\n9: [\"#d73027\",\"#f46d43\",\"#fdae61\",\"#fee08b\",\"#ffffbf\",\"#d9ef8b\",\"#a6d96a\",\"#66bd63\",\"#1a9850\"],\n10: [\"#a50026\",\"#d73027\",\"#f46d43\",\"#fdae61\",\"#fee08b\",\"#d9ef8b\",\"#a6d96a\",\"#66bd63\",\"#1a9850\",\"#006837\"],\n11: [\"#a50026\",\"#d73027\",\"#f46d43\",\"#fdae61\",\"#fee08b\",\"#ffffbf\",\"#d9ef8b\",\"#a6d96a\",\"#66bd63\",\"#1a9850\",\"#006837\"]\n},Accent: {\n3: [\"#7fc97f\",\"#beaed4\",\"#fdc086\"],\n4: [\"#7fc97f\",\"#beaed4\",\"#fdc086\",\"#ffff99\"],\n5: [\"#7fc97f\",\"#beaed4\",\"#fdc086\",\"#ffff99\",\"#386cb0\"],\n6: [\"#7fc97f\",\"#beaed4\",\"#fdc086\",\"#ffff99\",\"#386cb0\",\"#f0027f\"],\n7: [\"#7fc97f\",\"#beaed4\",\"#fdc086\",\"#ffff99\",\"#386cb0\",\"#f0027f\",\"#bf5b17\"],\n8: [\"#7fc97f\",\"#beaed4\",\"#fdc086\",\"#ffff99\",\"#386cb0\",\"#f0027f\",\"#bf5b17\",\"#666666\"]\n},Dark2: {\n3: [\"#1b9e77\",\"#d95f02\",\"#7570b3\"],\n4: [\"#1b9e77\",\"#d95f02\",\"#7570b3\",\"#e7298a\"],\n5: [\"#1b9e77\",\"#d95f02\",\"#7570b3\",\"#e7298a\",\"#66a61e\"],\n6: [\"#1b9e77\",\"#d95f02\",\"#7570b3\",\"#e7298a\",\"#66a61e\",\"#e6ab02\"],\n7: [\"#1b9e77\",\"#d95f02\",\"#7570b3\",\"#e7298a\",\"#66a61e\",\"#e6ab02\",\"#a6761d\"],\n8: [\"#1b9e77\",\"#d95f02\",\"#7570b3\",\"#e7298a\",\"#66a61e\",\"#e6ab02\",\"#a6761d\",\"#666666\"]\n},Paired: {\n3: [\"#a6cee3\",\"#1f78b4\",\"#b2df8a\"],\n4: [\"#a6cee3\",\"#1f78b4\",\"#b2df8a\",\"#33a02c\"],\n5: [\"#a6cee3\",\"#1f78b4\",\"#b2df8a\",\"#33a02c\",\"#fb9a99\"],\n6: [\"#a6cee3\",\"#1f78b4\",\"#b2df8a\",\"#33a02c\",\"#fb9a99\",\"#e31a1c\"],\n7: [\"#a6cee3\",\"#1f78b4\",\"#b2df8a\",\"#33a02c\",\"#fb9a99\",\"#e31a1c\",\"#fdbf6f\"],\n8: [\"#a6cee3\",\"#1f78b4\",\"#b2df8a\",\"#33a02c\",\"#fb9a99\",\"#e31a1c\",\"#fdbf6f\",\"#ff7f00\"],\n9: [\"#a6cee3\",\"#1f78b4\",\"#b2df8a\",\"#33a02c\",\"#fb9a99\",\"#e31a1c\",\"#fdbf6f\",\"#ff7f00\",\"#cab2d6\"],\n10: [\"#a6cee3\",\"#1f78b4\",\"#b2df8a\",\"#33a02c\",\"#fb9a99\",\"#e31a1c\",\"#fdbf6f\",\"#ff7f00\",\"#cab2d6\",\"#6a3d9a\"],\n11: [\"#a6cee3\",\"#1f78b4\",\"#b2df8a\",\"#33a02c\",\"#fb9a99\",\"#e31a1c\",\"#fdbf6f\",\"#ff7f00\",\"#cab2d6\",\"#6a3d9a\",\"#ffff99\"],\n12: [\"#a6cee3\",\"#1f78b4\",\"#b2df8a\",\"#33a02c\",\"#fb9a99\",\"#e31a1c\",\"#fdbf6f\",\"#ff7f00\",\"#cab2d6\",\"#6a3d9a\",\"#ffff99\",\"#b15928\"]\n},Pastel1: {\n3: [\"#fbb4ae\",\"#b3cde3\",\"#ccebc5\"],\n4: [\"#fbb4ae\",\"#b3cde3\",\"#ccebc5\",\"#decbe4\"],\n5: [\"#fbb4ae\",\"#b3cde3\",\"#ccebc5\",\"#decbe4\",\"#fed9a6\"],\n6: [\"#fbb4ae\",\"#b3cde3\",\"#ccebc5\",\"#decbe4\",\"#fed9a6\",\"#ffffcc\"],\n7: [\"#fbb4ae\",\"#b3cde3\",\"#ccebc5\",\"#decbe4\",\"#fed9a6\",\"#ffffcc\",\"#e5d8bd\"],\n8: [\"#fbb4ae\",\"#b3cde3\",\"#ccebc5\",\"#decbe4\",\"#fed9a6\",\"#ffffcc\",\"#e5d8bd\",\"#fddaec\"],\n9: [\"#fbb4ae\",\"#b3cde3\",\"#ccebc5\",\"#decbe4\",\"#fed9a6\",\"#ffffcc\",\"#e5d8bd\",\"#fddaec\",\"#f2f2f2\"]\n},Pastel2: {\n3: [\"#b3e2cd\",\"#fdcdac\",\"#cbd5e8\"],\n4: [\"#b3e2cd\",\"#fdcdac\",\"#cbd5e8\",\"#f4cae4\"],\n5: [\"#b3e2cd\",\"#fdcdac\",\"#cbd5e8\",\"#f4cae4\",\"#e6f5c9\"],\n6: [\"#b3e2cd\",\"#fdcdac\",\"#cbd5e8\",\"#f4cae4\",\"#e6f5c9\",\"#fff2ae\"],\n7: [\"#b3e2cd\",\"#fdcdac\",\"#cbd5e8\",\"#f4cae4\",\"#e6f5c9\",\"#fff2ae\",\"#f1e2cc\"],\n8: [\"#b3e2cd\",\"#fdcdac\",\"#cbd5e8\",\"#f4cae4\",\"#e6f5c9\",\"#fff2ae\",\"#f1e2cc\",\"#cccccc\"]\n},Set1: {\n3: [\"#e41a1c\",\"#377eb8\",\"#4daf4a\"],\n4: [\"#e41a1c\",\"#377eb8\",\"#4daf4a\",\"#984ea3\"],\n5: [\"#e41a1c\",\"#377eb8\",\"#4daf4a\",\"#984ea3\",\"#ff7f00\"],\n6: [\"#e41a1c\",\"#377eb8\",\"#4daf4a\",\"#984ea3\",\"#ff7f00\",\"#ffff33\"],\n7: [\"#e41a1c\",\"#377eb8\",\"#4daf4a\",\"#984ea3\",\"#ff7f00\",\"#ffff33\",\"#a65628\"],\n8: [\"#e41a1c\",\"#377eb8\",\"#4daf4a\",\"#984ea3\",\"#ff7f00\",\"#ffff33\",\"#a65628\",\"#f781bf\"],\n9: [\"#e41a1c\",\"#377eb8\",\"#4daf4a\",\"#984ea3\",\"#ff7f00\",\"#ffff33\",\"#a65628\",\"#f781bf\",\"#999999\"]\n},Set2: {\n3: [\"#66c2a5\",\"#fc8d62\",\"#8da0cb\"],\n4: [\"#66c2a5\",\"#fc8d62\",\"#8da0cb\",\"#e78ac3\"],\n5: [\"#66c2a5\",\"#fc8d62\",\"#8da0cb\",\"#e78ac3\",\"#a6d854\"],\n6: [\"#66c2a5\",\"#fc8d62\",\"#8da0cb\",\"#e78ac3\",\"#a6d854\",\"#ffd92f\"],\n7: [\"#66c2a5\",\"#fc8d62\",\"#8da0cb\",\"#e78ac3\",\"#a6d854\",\"#ffd92f\",\"#e5c494\"],\n8: [\"#66c2a5\",\"#fc8d62\",\"#8da0cb\",\"#e78ac3\",\"#a6d854\",\"#ffd92f\",\"#e5c494\",\"#b3b3b3\"]\n},Set3: {\n3: [\"#8dd3c7\",\"#ffffb3\",\"#bebada\"],\n4: [\"#8dd3c7\",\"#ffffb3\",\"#bebada\",\"#fb8072\"],\n5: [\"#8dd3c7\",\"#ffffb3\",\"#bebada\",\"#fb8072\",\"#80b1d3\"],\n6: [\"#8dd3c7\",\"#ffffb3\",\"#bebada\",\"#fb8072\",\"#80b1d3\",\"#fdb462\"],\n7: [\"#8dd3c7\",\"#ffffb3\",\"#bebada\",\"#fb8072\",\"#80b1d3\",\"#fdb462\",\"#b3de69\"],\n8: [\"#8dd3c7\",\"#ffffb3\",\"#bebada\",\"#fb8072\",\"#80b1d3\",\"#fdb462\",\"#b3de69\",\"#fccde5\"],\n9: [\"#8dd3c7\",\"#ffffb3\",\"#bebada\",\"#fb8072\",\"#80b1d3\",\"#fdb462\",\"#b3de69\",\"#fccde5\",\"#d9d9d9\"],\n10: [\"#8dd3c7\",\"#ffffb3\",\"#bebada\",\"#fb8072\",\"#80b1d3\",\"#fdb462\",\"#b3de69\",\"#fccde5\",\"#d9d9d9\",\"#bc80bd\"],\n11: [\"#8dd3c7\",\"#ffffb3\",\"#bebada\",\"#fb8072\",\"#80b1d3\",\"#fdb462\",\"#b3de69\",\"#fccde5\",\"#d9d9d9\",\"#bc80bd\",\"#ccebc5\"],\n12: [\"#8dd3c7\",\"#ffffb3\",\"#bebada\",\"#fb8072\",\"#80b1d3\",\"#fdb462\",\"#b3de69\",\"#fccde5\",\"#d9d9d9\",\"#bc80bd\",\"#ccebc5\",\"#ffed6f\"]\n}};\n\nif (true) {\n !(__WEBPACK_AMD_DEFINE_FACTORY__ = (colorbrewer),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n} else {}\n\n}();\n\n\n//# sourceURL=webpack:///./node_modules/colorbrewer/index.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/fn/array/from.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/library/fn/array/from.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("__webpack_require__(/*! ../../modules/es6.string.iterator */ \"./node_modules/core-js/library/modules/es6.string.iterator.js\");\n__webpack_require__(/*! ../../modules/es6.array.from */ \"./node_modules/core-js/library/modules/es6.array.from.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Array.from;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/array/from.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/fn/get-iterator.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/library/fn/get-iterator.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("__webpack_require__(/*! ../modules/web.dom.iterable */ \"./node_modules/core-js/library/modules/web.dom.iterable.js\");\n__webpack_require__(/*! ../modules/es6.string.iterator */ \"./node_modules/core-js/library/modules/es6.string.iterator.js\");\nmodule.exports = __webpack_require__(/*! ../modules/core.get-iterator */ \"./node_modules/core-js/library/modules/core.get-iterator.js\");\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/get-iterator.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/fn/is-iterable.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/library/fn/is-iterable.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("__webpack_require__(/*! ../modules/web.dom.iterable */ \"./node_modules/core-js/library/modules/web.dom.iterable.js\");\n__webpack_require__(/*! ../modules/es6.string.iterator */ \"./node_modules/core-js/library/modules/es6.string.iterator.js\");\nmodule.exports = __webpack_require__(/*! ../modules/core.is-iterable */ \"./node_modules/core-js/library/modules/core.is-iterable.js\");\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/is-iterable.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/fn/json/stringify.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/library/fn/json/stringify.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var core = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\");\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/json/stringify.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/fn/number/is-integer.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/library/fn/number/is-integer.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("__webpack_require__(/*! ../../modules/es6.number.is-integer */ \"./node_modules/core-js/library/modules/es6.number.is-integer.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Number.isInteger;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/number/is-integer.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/fn/object/assign.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/library/fn/object/assign.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("__webpack_require__(/*! ../../modules/es6.object.assign */ \"./node_modules/core-js/library/modules/es6.object.assign.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object.assign;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/object/assign.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/fn/object/create.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/library/fn/object/create.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("__webpack_require__(/*! ../../modules/es6.object.create */ \"./node_modules/core-js/library/modules/es6.object.create.js\");\nvar $Object = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/object/create.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/fn/object/define-property.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/library/fn/object/define-property.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("__webpack_require__(/*! ../../modules/es6.object.define-property */ \"./node_modules/core-js/library/modules/es6.object.define-property.js\");\nvar $Object = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/object/define-property.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/fn/object/get-own-property-descriptor.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/core-js/library/fn/object/get-own-property-descriptor.js ***! + \*******************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("__webpack_require__(/*! ../../modules/es6.object.get-own-property-descriptor */ \"./node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js\");\nvar $Object = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/object/get-own-property-descriptor.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/fn/object/get-prototype-of.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/library/fn/object/get-prototype-of.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("__webpack_require__(/*! ../../modules/es6.object.get-prototype-of */ \"./node_modules/core-js/library/modules/es6.object.get-prototype-of.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object.getPrototypeOf;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/object/get-prototype-of.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/fn/object/keys.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/library/fn/object/keys.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("__webpack_require__(/*! ../../modules/es6.object.keys */ \"./node_modules/core-js/library/modules/es6.object.keys.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object.keys;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/object/keys.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/fn/object/set-prototype-of.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/library/fn/object/set-prototype-of.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("__webpack_require__(/*! ../../modules/es6.object.set-prototype-of */ \"./node_modules/core-js/library/modules/es6.object.set-prototype-of.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object.setPrototypeOf;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/object/set-prototype-of.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/fn/symbol/index.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/library/fn/symbol/index.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("__webpack_require__(/*! ../../modules/es6.symbol */ \"./node_modules/core-js/library/modules/es6.symbol.js\");\n__webpack_require__(/*! ../../modules/es6.object.to-string */ \"./node_modules/core-js/library/modules/es6.object.to-string.js\");\n__webpack_require__(/*! ../../modules/es7.symbol.async-iterator */ \"./node_modules/core-js/library/modules/es7.symbol.async-iterator.js\");\n__webpack_require__(/*! ../../modules/es7.symbol.observable */ \"./node_modules/core-js/library/modules/es7.symbol.observable.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Symbol;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/symbol/index.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/fn/symbol/iterator.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/library/fn/symbol/iterator.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("__webpack_require__(/*! ../../modules/es6.string.iterator */ \"./node_modules/core-js/library/modules/es6.string.iterator.js\");\n__webpack_require__(/*! ../../modules/web.dom.iterable */ \"./node_modules/core-js/library/modules/web.dom.iterable.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_wks-ext */ \"./node_modules/core-js/library/modules/_wks-ext.js\").f('iterator');\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/symbol/iterator.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_a-function.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_a-function.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_a-function.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_add-to-unscopables.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_add-to-unscopables.js ***! + \*********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("module.exports = function () { /* empty */ };\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_add-to-unscopables.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_an-object.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_an-object.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_an-object.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_array-includes.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_array-includes.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/core-js/library/modules/_to-length.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ \"./node_modules/core-js/library/modules/_to-absolute-index.js\");\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_array-includes.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_classof.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/library/modules/_classof.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/core-js/library/modules/_cof.js\");\nvar TAG = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_classof.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_cof.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/library/modules/_cof.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_cof.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_core.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/library/modules/_core.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("var core = module.exports = { version: '2.5.5' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_core.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_create-property.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_create-property.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar $defineProperty = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/library/modules/_property-desc.js\");\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_create-property.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_ctx.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/library/modules/_ctx.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// optional / simple context binding\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/core-js/library/modules/_a-function.js\");\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_ctx.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_defined.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/library/modules/_defined.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_defined.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_descriptors.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_descriptors.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\")(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_descriptors.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_dom-create.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_dom-create.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar document = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_dom-create.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_enum-bug-keys.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_enum-bug-keys.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_enum-bug-keys.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_enum-keys.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_enum-keys.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/library/modules/_object-keys.js\");\nvar gOPS = __webpack_require__(/*! ./_object-gops */ \"./node_modules/core-js/library/modules/_object-gops.js\");\nvar pIE = __webpack_require__(/*! ./_object-pie */ \"./node_modules/core-js/library/modules/_object-pie.js\");\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_enum-keys.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_export.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/library/modules/_export.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\");\nvar ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/library/modules/_ctx.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_export.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_fails.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/library/modules/_fails.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_fails.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_global.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/library/modules/_global.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_global.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_has.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/library/modules/_has.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_has.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_hide.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/library/modules/_hide.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/library/modules/_property-desc.js\");\nmodule.exports = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_hide.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_html.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/library/modules/_html.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var document = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\").document;\nmodule.exports = document && document.documentElement;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_html.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_ie8-dom-define.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_ie8-dom-define.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports = !__webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") && !__webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\")(function () {\n return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ \"./node_modules/core-js/library/modules/_dom-create.js\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_ie8-dom-define.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_iobject.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/library/modules/_iobject.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/core-js/library/modules/_cof.js\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_iobject.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_is-array-iter.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_is-array-iter.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// check on default Array iterator\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_is-array-iter.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_is-array.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/library/modules/_is-array.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/core-js/library/modules/_cof.js\");\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_is-array.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_is-integer.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_is-integer.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// 20.1.2.3 Number.isInteger(number)\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_is-integer.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_is-object.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_is-object.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_is-object.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_iter-call.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_iter-call.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_iter-call.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_iter-create.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_iter-create.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar create = __webpack_require__(/*! ./_object-create */ \"./node_modules/core-js/library/modules/_object-create.js\");\nvar descriptor = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/library/modules/_property-desc.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/core-js/library/modules/_set-to-string-tag.js\");\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\")(IteratorPrototype, __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_iter-create.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_iter-define.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_iter-define.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar LIBRARY = __webpack_require__(/*! ./_library */ \"./node_modules/core-js/library/modules/_library.js\");\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\nvar redefine = __webpack_require__(/*! ./_redefine */ \"./node_modules/core-js/library/modules/_redefine.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nvar $iterCreate = __webpack_require__(/*! ./_iter-create */ \"./node_modules/core-js/library/modules/_iter-create.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/core-js/library/modules/_set-to-string-tag.js\");\nvar getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ \"./node_modules/core-js/library/modules/_object-gpo.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_iter-define.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_iter-detect.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_iter-detect.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_iter-detect.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_iter-step.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_iter-step.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_iter-step.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_iterators.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_iterators.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("module.exports = {};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_iterators.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_library.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/library/modules/_library.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("module.exports = true;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_library.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_meta.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/library/modules/_meta.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var META = __webpack_require__(/*! ./_uid */ \"./node_modules/core-js/library/modules/_uid.js\")('meta');\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar setDesc = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\").f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !__webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\")(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_meta.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_object-assign.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_object-assign.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/library/modules/_object-keys.js\");\nvar gOPS = __webpack_require__(/*! ./_object-gops */ \"./node_modules/core-js/library/modules/_object-gops.js\");\nvar pIE = __webpack_require__(/*! ./_object-pie */ \"./node_modules/core-js/library/modules/_object-pie.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/library/modules/_to-object.js\");\nvar IObject = __webpack_require__(/*! ./_iobject */ \"./node_modules/core-js/library/modules/_iobject.js\");\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\")(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-assign.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_object-create.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_object-create.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar dPs = __webpack_require__(/*! ./_object-dps */ \"./node_modules/core-js/library/modules/_object-dps.js\");\nvar enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/core-js/library/modules/_enum-bug-keys.js\");\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/core-js/library/modules/_shared-key.js\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(/*! ./_dom-create */ \"./node_modules/core-js/library/modules/_dom-create.js\")('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(/*! ./_html */ \"./node_modules/core-js/library/modules/_html.js\").appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-create.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_object-dp.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_object-dp.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ \"./node_modules/core-js/library/modules/_ie8-dom-define.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/core-js/library/modules/_to-primitive.js\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-dp.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_object-dps.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_object-dps.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar getKeys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/library/modules/_object-keys.js\");\n\nmodule.exports = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-dps.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_object-gopd.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_object-gopd.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var pIE = __webpack_require__(/*! ./_object-pie */ \"./node_modules/core-js/library/modules/_object-pie.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/library/modules/_property-desc.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/core-js/library/modules/_to-primitive.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ \"./node_modules/core-js/library/modules/_ie8-dom-define.js\");\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-gopd.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_object-gopn-ext.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_object-gopn-ext.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar gOPN = __webpack_require__(/*! ./_object-gopn */ \"./node_modules/core-js/library/modules/_object-gopn.js\").f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-gopn-ext.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_object-gopn.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_object-gopn.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(/*! ./_object-keys-internal */ \"./node_modules/core-js/library/modules/_object-keys-internal.js\");\nvar hiddenKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/core-js/library/modules/_enum-bug-keys.js\").concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-gopn.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_object-gops.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_object-gops.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("exports.f = Object.getOwnPropertySymbols;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-gops.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_object-gpo.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_object-gpo.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/library/modules/_to-object.js\");\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/core-js/library/modules/_shared-key.js\")('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-gpo.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_object-keys-internal.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_object-keys-internal.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar arrayIndexOf = __webpack_require__(/*! ./_array-includes */ \"./node_modules/core-js/library/modules/_array-includes.js\")(false);\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/core-js/library/modules/_shared-key.js\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-keys-internal.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_object-keys.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_object-keys.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(/*! ./_object-keys-internal */ \"./node_modules/core-js/library/modules/_object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/core-js/library/modules/_enum-bug-keys.js\");\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-keys.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_object-pie.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_object-pie.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("exports.f = {}.propertyIsEnumerable;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-pie.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_object-sap.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_object-sap.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\");\nvar fails = __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\");\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-sap.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_property-desc.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_property-desc.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_property-desc.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_redefine.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/library/modules/_redefine.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\");\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_redefine.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_set-proto.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_set-proto.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/library/modules/_ctx.js\")(Function.call, __webpack_require__(/*! ./_object-gopd */ \"./node_modules/core-js/library/modules/_object-gopd.js\").f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_set-proto.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_set-to-string-tag.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_set-to-string-tag.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var def = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\").f;\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar TAG = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_set-to-string-tag.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_shared-key.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_shared-key.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var shared = __webpack_require__(/*! ./_shared */ \"./node_modules/core-js/library/modules/_shared.js\")('keys');\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/core-js/library/modules/_uid.js\");\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_shared-key.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_shared.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/library/modules/_shared.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n return store[key] || (store[key] = {});\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_shared.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_string-at.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_string-at.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/core-js/library/modules/_to-integer.js\");\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/core-js/library/modules/_defined.js\");\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_string-at.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_to-absolute-index.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_to-absolute-index.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/core-js/library/modules/_to-integer.js\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_to-absolute-index.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_to-integer.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_to-integer.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_to-integer.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_to-iobject.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_to-iobject.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(/*! ./_iobject */ \"./node_modules/core-js/library/modules/_iobject.js\");\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/core-js/library/modules/_defined.js\");\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_to-iobject.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_to-length.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_to-length.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/core-js/library/modules/_to-integer.js\");\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_to-length.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_to-object.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_to-object.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/core-js/library/modules/_defined.js\");\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_to-object.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_to-primitive.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_to-primitive.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_to-primitive.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_uid.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/library/modules/_uid.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_uid.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_wks-define.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/library/modules/_wks-define.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\");\nvar LIBRARY = __webpack_require__(/*! ./_library */ \"./node_modules/core-js/library/modules/_library.js\");\nvar wksExt = __webpack_require__(/*! ./_wks-ext */ \"./node_modules/core-js/library/modules/_wks-ext.js\");\nvar defineProperty = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\").f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_wks-define.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_wks-ext.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/library/modules/_wks-ext.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("exports.f = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\");\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_wks-ext.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/_wks.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/library/modules/_wks.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var store = __webpack_require__(/*! ./_shared */ \"./node_modules/core-js/library/modules/_shared.js\")('wks');\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/core-js/library/modules/_uid.js\");\nvar Symbol = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_wks.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/core.get-iterator-method.js": +/*!**************************************************************************!*\ + !*** ./node_modules/core-js/library/modules/core.get-iterator-method.js ***! + \**************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var classof = __webpack_require__(/*! ./_classof */ \"./node_modules/core-js/library/modules/_classof.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nmodule.exports = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\").getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/core.get-iterator-method.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/core.get-iterator.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/library/modules/core.get-iterator.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar get = __webpack_require__(/*! ./core.get-iterator-method */ \"./node_modules/core-js/library/modules/core.get-iterator-method.js\");\nmodule.exports = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\").getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/core.get-iterator.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/core.is-iterable.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/library/modules/core.is-iterable.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var classof = __webpack_require__(/*! ./_classof */ \"./node_modules/core-js/library/modules/_classof.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nmodule.exports = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\").isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/core.is-iterable.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/es6.array.from.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/library/modules/es6.array.from.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/library/modules/_ctx.js\");\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/library/modules/_to-object.js\");\nvar call = __webpack_require__(/*! ./_iter-call */ \"./node_modules/core-js/library/modules/_iter-call.js\");\nvar isArrayIter = __webpack_require__(/*! ./_is-array-iter */ \"./node_modules/core-js/library/modules/_is-array-iter.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/core-js/library/modules/_to-length.js\");\nvar createProperty = __webpack_require__(/*! ./_create-property */ \"./node_modules/core-js/library/modules/_create-property.js\");\nvar getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ \"./node_modules/core-js/library/modules/core.get-iterator-method.js\");\n\n$export($export.S + $export.F * !__webpack_require__(/*! ./_iter-detect */ \"./node_modules/core-js/library/modules/_iter-detect.js\")(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.array.from.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/es6.array.iterator.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/library/modules/es6.array.iterator.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar addToUnscopables = __webpack_require__(/*! ./_add-to-unscopables */ \"./node_modules/core-js/library/modules/_add-to-unscopables.js\");\nvar step = __webpack_require__(/*! ./_iter-step */ \"./node_modules/core-js/library/modules/_iter-step.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(/*! ./_iter-define */ \"./node_modules/core-js/library/modules/_iter-define.js\")(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.array.iterator.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/es6.number.is-integer.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js/library/modules/es6.number.is-integer.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// 20.1.2.3 Number.isInteger(number)\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n\n$export($export.S, 'Number', { isInteger: __webpack_require__(/*! ./_is-integer */ \"./node_modules/core-js/library/modules/_is-integer.js\") });\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.number.is-integer.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/es6.object.assign.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/library/modules/es6.object.assign.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(/*! ./_object-assign */ \"./node_modules/core-js/library/modules/_object-assign.js\") });\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.assign.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/es6.object.create.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/library/modules/es6.object.create.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: __webpack_require__(/*! ./_object-create */ \"./node_modules/core-js/library/modules/_object-create.js\") });\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.create.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/es6.object.define-property.js": +/*!****************************************************************************!*\ + !*** ./node_modules/core-js/library/modules/es6.object.define-property.js ***! + \****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\"), 'Object', { defineProperty: __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\").f });\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.define-property.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js": +/*!****************************************************************************************!*\ + !*** ./node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js ***! + \****************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar $getOwnPropertyDescriptor = __webpack_require__(/*! ./_object-gopd */ \"./node_modules/core-js/library/modules/_object-gopd.js\").f;\n\n__webpack_require__(/*! ./_object-sap */ \"./node_modules/core-js/library/modules/_object-sap.js\")('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/es6.object.get-prototype-of.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/core-js/library/modules/es6.object.get-prototype-of.js ***! + \*****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/library/modules/_to-object.js\");\nvar $getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ \"./node_modules/core-js/library/modules/_object-gpo.js\");\n\n__webpack_require__(/*! ./_object-sap */ \"./node_modules/core-js/library/modules/_object-sap.js\")('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.get-prototype-of.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/es6.object.keys.js": +/*!*****************************************************************!*\ + !*** ./node_modules/core-js/library/modules/es6.object.keys.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/library/modules/_to-object.js\");\nvar $keys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/library/modules/_object-keys.js\");\n\n__webpack_require__(/*! ./_object-sap */ \"./node_modules/core-js/library/modules/_object-sap.js\")('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.keys.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/es6.object.set-prototype-of.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/core-js/library/modules/es6.object.set-prototype-of.js ***! + \*****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(/*! ./_set-proto */ \"./node_modules/core-js/library/modules/_set-proto.js\").set });\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.set-prototype-of.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/es6.object.to-string.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js/library/modules/es6.object.to-string.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.to-string.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/es6.string.iterator.js": +/*!*********************************************************************!*\ + !*** ./node_modules/core-js/library/modules/es6.string.iterator.js ***! + \*********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\nvar $at = __webpack_require__(/*! ./_string-at */ \"./node_modules/core-js/library/modules/_string-at.js\")(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(/*! ./_iter-define */ \"./node_modules/core-js/library/modules/_iter-define.js\")(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.string.iterator.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/es6.symbol.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/library/modules/es6.symbol.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\");\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\nvar redefine = __webpack_require__(/*! ./_redefine */ \"./node_modules/core-js/library/modules/_redefine.js\");\nvar META = __webpack_require__(/*! ./_meta */ \"./node_modules/core-js/library/modules/_meta.js\").KEY;\nvar $fails = __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\");\nvar shared = __webpack_require__(/*! ./_shared */ \"./node_modules/core-js/library/modules/_shared.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/core-js/library/modules/_set-to-string-tag.js\");\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/core-js/library/modules/_uid.js\");\nvar wks = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\");\nvar wksExt = __webpack_require__(/*! ./_wks-ext */ \"./node_modules/core-js/library/modules/_wks-ext.js\");\nvar wksDefine = __webpack_require__(/*! ./_wks-define */ \"./node_modules/core-js/library/modules/_wks-define.js\");\nvar enumKeys = __webpack_require__(/*! ./_enum-keys */ \"./node_modules/core-js/library/modules/_enum-keys.js\");\nvar isArray = __webpack_require__(/*! ./_is-array */ \"./node_modules/core-js/library/modules/_is-array.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/core-js/library/modules/_to-primitive.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/library/modules/_property-desc.js\");\nvar _create = __webpack_require__(/*! ./_object-create */ \"./node_modules/core-js/library/modules/_object-create.js\");\nvar gOPNExt = __webpack_require__(/*! ./_object-gopn-ext */ \"./node_modules/core-js/library/modules/_object-gopn-ext.js\");\nvar $GOPD = __webpack_require__(/*! ./_object-gopd */ \"./node_modules/core-js/library/modules/_object-gopd.js\");\nvar $DP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\");\nvar $keys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/library/modules/_object-keys.js\");\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n __webpack_require__(/*! ./_object-gopn */ \"./node_modules/core-js/library/modules/_object-gopn.js\").f = gOPNExt.f = $getOwnPropertyNames;\n __webpack_require__(/*! ./_object-pie */ \"./node_modules/core-js/library/modules/_object-pie.js\").f = $propertyIsEnumerable;\n __webpack_require__(/*! ./_object-gops */ \"./node_modules/core-js/library/modules/_object-gops.js\").f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !__webpack_require__(/*! ./_library */ \"./node_modules/core-js/library/modules/_library.js\")) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\")($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.symbol.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/es7.symbol.async-iterator.js": +/*!***************************************************************************!*\ + !*** ./node_modules/core-js/library/modules/es7.symbol.async-iterator.js ***! + \***************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("__webpack_require__(/*! ./_wks-define */ \"./node_modules/core-js/library/modules/_wks-define.js\")('asyncIterator');\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es7.symbol.async-iterator.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/es7.symbol.observable.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js/library/modules/es7.symbol.observable.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("__webpack_require__(/*! ./_wks-define */ \"./node_modules/core-js/library/modules/_wks-define.js\")('observable');\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es7.symbol.observable.js?"); + +/***/ }), + +/***/ "./node_modules/core-js/library/modules/web.dom.iterable.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/library/modules/web.dom.iterable.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("__webpack_require__(/*! ./es6.array.iterator */ \"./node_modules/core-js/library/modules/es6.array.iterator.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nvar TO_STRING_TAG = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/web.dom.iterable.js?"); + +/***/ }), + /***/ "./node_modules/d3-array/index.js": /*!****************************************!*\ !*** ./node_modules/d3-array/index.js ***! @@ -730,6 +2158,54 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _tra /***/ }), +/***/ "./node_modules/d3-axis/index.js": +/*!***************************************!*\ + !*** ./node_modules/d3-axis/index.js ***! + \***************************************/ +/*! exports provided: axisTop, axisRight, axisBottom, axisLeft */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _src_axis__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/axis */ \"./node_modules/d3-axis/src/axis.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"axisTop\", function() { return _src_axis__WEBPACK_IMPORTED_MODULE_0__[\"axisTop\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"axisRight\", function() { return _src_axis__WEBPACK_IMPORTED_MODULE_0__[\"axisRight\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"axisBottom\", function() { return _src_axis__WEBPACK_IMPORTED_MODULE_0__[\"axisBottom\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"axisLeft\", function() { return _src_axis__WEBPACK_IMPORTED_MODULE_0__[\"axisLeft\"]; });\n\n\n\n\n//# sourceURL=webpack:///./node_modules/d3-axis/index.js?"); + +/***/ }), + +/***/ "./node_modules/d3-axis/src/array.js": +/*!*******************************************!*\ + !*** ./node_modules/d3-axis/src/array.js ***! + \*******************************************/ +/*! exports provided: slice */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"slice\", function() { return slice; });\nvar slice = Array.prototype.slice;\n\n\n//# sourceURL=webpack:///./node_modules/d3-axis/src/array.js?"); + +/***/ }), + +/***/ "./node_modules/d3-axis/src/axis.js": +/*!******************************************!*\ + !*** ./node_modules/d3-axis/src/axis.js ***! + \******************************************/ +/*! exports provided: axisTop, axisRight, axisBottom, axisLeft */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"axisTop\", function() { return axisTop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"axisRight\", function() { return axisRight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"axisBottom\", function() { return axisBottom; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"axisLeft\", function() { return axisLeft; });\n/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./array */ \"./node_modules/d3-axis/src/array.js\");\n/* harmony import */ var _identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./identity */ \"./node_modules/d3-axis/src/identity.js\");\n\n\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : _identity__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"#000\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"#000\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"#000\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter\n : \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter);\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = _array__WEBPACK_IMPORTED_MODULE_0__[\"slice\"].call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : _array__WEBPACK_IMPORTED_MODULE_0__[\"slice\"].call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : _array__WEBPACK_IMPORTED_MODULE_0__[\"slice\"].call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nfunction axisTop(scale) {\n return axis(top, scale);\n}\n\nfunction axisRight(scale) {\n return axis(right, scale);\n}\n\nfunction axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nfunction axisLeft(scale) {\n return axis(left, scale);\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-axis/src/axis.js?"); + +/***/ }), + +/***/ "./node_modules/d3-axis/src/identity.js": +/*!**********************************************!*\ + !*** ./node_modules/d3-axis/src/identity.js ***! + \**********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n return x;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-axis/src/identity.js?"); + +/***/ }), + /***/ "./node_modules/d3-collection/index.js": /*!*********************************************!*\ !*** ./node_modules/d3-collection/index.js ***! @@ -5263,6 +6739,30 @@ eval("/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source cod /***/ }), +/***/ "./node_modules/flexbox-react/dist/Flexbox.js": +/*!****************************************************!*\ + !*** ./node_modules/flexbox-react/dist/Flexbox.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _templateObject = _taggedTemplateLiteral(['\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n'], ['\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n']);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar Flexbox = (0, _styledComponents2.default)(function (_ref) {\n var alignContent = _ref.alignContent,\n alignItems = _ref.alignItems,\n alignSelf = _ref.alignSelf,\n children = _ref.children,\n display = _ref.display,\n element = _ref.element,\n flex = _ref.flex,\n flexBasis = _ref.flexBasis,\n flexDirection = _ref.flexDirection,\n flexGrow = _ref.flexGrow,\n flexShrink = _ref.flexShrink,\n flexWrap = _ref.flexWrap,\n height = _ref.height,\n justifyContent = _ref.justifyContent,\n margin = _ref.margin,\n marginBottom = _ref.marginBottom,\n marginLeft = _ref.marginLeft,\n marginRight = _ref.marginRight,\n marginTop = _ref.marginTop,\n maxHeight = _ref.maxHeight,\n maxWidth = _ref.maxWidth,\n minHeight = _ref.minHeight,\n minWidth = _ref.minWidth,\n order = _ref.order,\n padding = _ref.padding,\n paddingBottom = _ref.paddingBottom,\n paddingLeft = _ref.paddingLeft,\n paddingRight = _ref.paddingRight,\n paddingTop = _ref.paddingTop,\n width = _ref.width,\n props = _objectWithoutProperties(_ref, ['alignContent', 'alignItems', 'alignSelf', 'children', 'display', 'element', 'flex', 'flexBasis', 'flexDirection', 'flexGrow', 'flexShrink', 'flexWrap', 'height', 'justifyContent', 'margin', 'marginBottom', 'marginLeft', 'marginRight', 'marginTop', 'maxHeight', 'maxWidth', 'minHeight', 'minWidth', 'order', 'padding', 'paddingBottom', 'paddingLeft', 'paddingRight', 'paddingTop', 'width']);\n\n return _react2.default.createElement(element, props, children);\n})(_templateObject, function (props) {\n return props.alignContent ? 'align-content: ' + props.alignContent + ';' : '';\n}, function (props) {\n return props.alignSelf ? 'align-self: ' + props.alignSelf + ';' : '';\n}, function (props) {\n return props.alignItems ? 'align-items: ' + props.alignItems + ';' : '';\n}, function (props) {\n return props.display ? 'display: ' + props.display + ';' : '';\n}, function (props) {\n return props.flex ? 'flex: ' + props.flex + ';' : '';\n}, function (props) {\n return props.flexBasis ? 'flex-basis: ' + props.flexBasis + ';' : '';\n}, function (props) {\n return props.flexDirection ? 'flex-direction: ' + props.flexDirection + ';' : '';\n}, function (props) {\n return props.flexGrow ? 'flex-grow: ' + props.flexGrow + ';' : '';\n}, function (props) {\n return props.flexShrink ? 'flex-shrink: ' + props.flexShrink + ';' : '';\n}, function (props) {\n return props.flexWrap ? 'flex-wrap: ' + props.flexWrap + ';' : '';\n}, function (props) {\n return props.height ? 'height: ' + props.height + ';' : '';\n}, function (props) {\n return props.justifyContent ? 'justify-content: ' + props.justifyContent + ';' : '';\n}, function (props) {\n return props.margin ? 'margin: ' + props.margin + ';' : '';\n}, function (props) {\n return props.marginBottom ? 'margin-bottom: ' + props.marginBottom + ';' : '';\n}, function (props) {\n return props.marginLeft ? 'margin-left: ' + props.marginLeft + ';' : '';\n}, function (props) {\n return props.marginRight ? 'margin-right: ' + props.marginRight + ';' : '';\n}, function (props) {\n return props.marginTop ? 'margin-top: ' + props.marginTop + ';' : '';\n}, function (props) {\n return props.maxHeight ? 'max-height: ' + props.maxHeight + ';' : '';\n}, function (props) {\n return props.maxWidth ? 'max-width: ' + props.maxWidth + ';' : '';\n}, function (props) {\n return props.minHeight ? 'min-height: ' + props.minHeight + ';' : '';\n}, function (props) {\n return props.minWidth ? 'min-width: ' + props.minWidth + ';' : '';\n}, function (props) {\n return props.order ? 'order: ' + props.order + ';' : '';\n}, function (props) {\n return props.padding ? 'padding: ' + props.padding + ';' : '';\n}, function (props) {\n return props.paddingBottom ? 'padding-bottom: ' + props.paddingBottom + ';' : '';\n}, function (props) {\n return props.paddingLeft ? 'padding-left: ' + props.paddingLeft + ';' : '';\n}, function (props) {\n return props.paddingRight ? 'padding-right: ' + props.paddingRight + ';' : '';\n}, function (props) {\n return props.paddingTop ? 'padding-top: ' + props.paddingTop + ';' : '';\n}, function (props) {\n return props.width ? 'width: ' + props.width + ';' : '';\n});\n\nFlexbox.propTypes = {\n alignContent: _propTypes2.default.oneOf(['center', 'flex-end', 'flex-start', 'space-around', 'space-between', 'stretch']),\n alignItems: _propTypes2.default.oneOf(['baseline', 'center', 'flex-end', 'flex-start', 'stretch']),\n alignSelf: _propTypes2.default.oneOf(['baseline', 'center', 'flex-end', 'flex-start', 'stretch']),\n children: _propTypes2.default.node,\n display: _propTypes2.default.oneOf(['flex', 'inline-flex']),\n element: _propTypes2.default.oneOf(['article', 'aside', 'div', 'figure', 'footer', 'header', 'main', 'nav', 'section']),\n flex: _propTypes2.default.string,\n flexBasis: _propTypes2.default.string,\n flexDirection: _propTypes2.default.oneOf(['column-reverse', 'column', 'row-reverse', 'row']),\n flexGrow: _propTypes2.default.number,\n flexShrink: _propTypes2.default.number,\n flexWrap: _propTypes2.default.oneOf(['nowrap', 'wrap-reverse', 'wrap']),\n height: _propTypes2.default.string,\n inline: _propTypes2.default.bool,\n justifyContent: _propTypes2.default.oneOf(['center', 'flex-end', 'flex-start', 'space-around', 'space-between']),\n margin: _propTypes2.default.string,\n marginBottom: _propTypes2.default.string,\n marginLeft: _propTypes2.default.string,\n marginRight: _propTypes2.default.string,\n marginTop: _propTypes2.default.string,\n maxHeight: _propTypes2.default.string,\n maxWidth: _propTypes2.default.string,\n minHeight: _propTypes2.default.string,\n minWidth: _propTypes2.default.string,\n order: _propTypes2.default.number,\n padding: _propTypes2.default.string,\n paddingBottom: _propTypes2.default.string,\n paddingLeft: _propTypes2.default.string,\n paddingRight: _propTypes2.default.string,\n paddingTop: _propTypes2.default.string,\n style: _propTypes2.default.object,\n width: _propTypes2.default.string\n};\n\nFlexbox.defaultProps = {\n display: 'flex',\n element: 'div'\n};\n\nexports.default = Flexbox;\n\n//# sourceURL=webpack:///./node_modules/flexbox-react/dist/Flexbox.js?"); + +/***/ }), + +/***/ "./node_modules/flexbox-react/dist/index.js": +/*!**************************************************!*\ + !*** ./node_modules/flexbox-react/dist/index.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = undefined;\n\nvar _Flexbox = __webpack_require__(/*! ./Flexbox */ \"./node_modules/flexbox-react/dist/Flexbox.js\");\n\nvar _Flexbox2 = _interopRequireDefault(_Flexbox);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Flexbox2.default;\n\n//# sourceURL=webpack:///./node_modules/flexbox-react/dist/index.js?"); + +/***/ }), + /***/ "./node_modules/global/window.js": /*!***************************************!*\ !*** ./node_modules/global/window.js ***! @@ -5465,6 +6965,28 @@ eval("/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New /***/ }), +/***/ "./node_modules/immutable-devtools/dist/index.js": +/*!*******************************************************!*\ + !*** ./node_modules/immutable-devtools/dist/index.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("module.exports=function(n){function r(e){if(t[e])return t[e].exports;var o=t[e]={exports:{},id:e,loaded:!1};return n[e].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}var t={};return r.m=n,r.c=t,r.p=\"\",r(0)}([function(n,r,t){\"use strict\";var e=t(1);\"undefined\"!=typeof Immutable&&(Immutable.installDevTools=install.bind(null,Immutable));var o=!1;n.exports=function(n){if(\"undefined\"==typeof window)throw new Error(\"Can only install immutable-devtools in a browser environment.\");o!==!0&&(window.devtoolsFormatters=window.devtoolsFormatters||[],window.devtoolsFormatters.push(e(n)),o=!0)}},function(n,r){\"use strict\";function t(n){if(Array.isArray(n)){for(var r=0,t=Array(n.length);r0}function a(n){return[\"span\",o,n+\": \"]}function i(n){var o=n.map(function(n,t){return[\"li\",a(t),r(n)]}).toList().toJS();return[\"ol\",e].concat(t(o))}function d(n){var o=n.map(function(n){return[\"li\",r(n)]}).toJS();return[\"ol\",e].concat(t(o))}function s(r){return r instanceof n.Record?v:Object.keys(w).filter(function(t){return n[t][\"is\"+t](r)}).map(function(n){return w[n]}).concat(f)[0]}var c={},f={header:function(n,t){return t===c?null:r(n,c)},hasBody:function(n,r){return!1},body:function(n,r){return null}},l={header:function(){return[\"span\",\"Map\"]},hasBody:u,body:i},y={header:function(){return[\"span\",\"OrderedMap\"]},hasBody:u,body:i},p={header:function(){return[\"span\",\"List\"]},hasBody:u,body:i},h={header:function(){return[\"span\",\"Stack\"]},hasBody:u,body:d},m={header:function(){return[\"span\",\"Set\"]},hasBody:u,body:d},b={header:function(){return[\"span\",\"OrderedSet\"]},hasBody:u,body:d},v={header:function(){return[\"span\",\"Record\"]},hasBody:u,body:function(n){var o=n.keySeq().map(function(t){return[\"li\",a(t),r(n.get(t))]}).toJS();return[\"ol\",e].concat(t(o))}},w={OrderedMap:y,OrderedSet:b,List:p,Map:l,Set:m,Stack:h};return{header:function(n,r){return s(n).header(n,r)},hasBody:function(n,r){return s(n).hasBody(n,r)},body:function(n,r){return s(n).body(n,r)}}}}]);\n\n//# sourceURL=webpack:///./node_modules/immutable-devtools/dist/index.js?"); + +/***/ }), + +/***/ "./node_modules/immutable/dist/immutable.js": +/*!**************************************************!*\ + !*** ./node_modules/immutable/dist/immutable.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n(function (global, factory) {\n true ? module.exports = factory() :\n undefined;\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n if (o !== o || o === Infinity) {\n return 0;\n }\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.of = function() {var keyValues = SLICE$0.call(arguments, 0);\n return emptyMap().withMutations(function(map ) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n if (end === Infinity) {\n end = originalSize;\n } else {\n end = end | 0;\n }\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n if (this._map && !this._map.has(k)) {\n var defaultVal = this._defaultValues[k];\n if (v === defaultVal) {\n return this;\n }\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n lastKeyOf: function(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function() {\n return Range(0, this.size);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n SetIterable.prototype.contains = SetIterable.prototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));\n\n//# sourceURL=webpack:///./node_modules/immutable/dist/immutable.js?"); + +/***/ }), + /***/ "./node_modules/invariant/invariant.js": /*!*********************************************!*\ !*** ./node_modules/invariant/invariant.js ***! @@ -5477,6 +6999,18 @@ eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source cod /***/ }), +/***/ "./node_modules/is-plain-object/index.js": +/*!***********************************************!*\ + !*** ./node_modules/is-plain-object/index.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("/*!\n * is-plain-object \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n\n\nvar isObject = __webpack_require__(/*! isobject */ \"./node_modules/isobject/index.js\");\n\nfunction isObjectObject(o) {\n return isObject(o) === true\n && Object.prototype.toString.call(o) === '[object Object]';\n}\n\nmodule.exports = function isPlainObject(o) {\n var ctor,prot;\n\n if (isObjectObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (typeof ctor !== 'function') return false;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObjectObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n};\n\n\n//# sourceURL=webpack:///./node_modules/is-plain-object/index.js?"); + +/***/ }), + /***/ "./node_modules/isarray/index.js": /*!***************************************!*\ !*** ./node_modules/isarray/index.js ***! @@ -5488,6 +7022,18 @@ eval("module.exports = Array.isArray || function (arr) {\n return Object.protot /***/ }), +/***/ "./node_modules/isobject/index.js": +/*!****************************************!*\ + !*** ./node_modules/isobject/index.js ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("/*!\n * isobject \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n\n\nmodule.exports = function isObject(val) {\n return val != null && typeof val === 'object' && Array.isArray(val) === false;\n};\n\n\n//# sourceURL=webpack:///./node_modules/isobject/index.js?"); + +/***/ }), + /***/ "./node_modules/lodash-es/_Symbol.js": /*!*******************************************!*\ !*** ./node_modules/lodash-es/_Symbol.js ***! @@ -5619,6 +7165,28 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_RES /***/ }), +/***/ "./node_modules/merge/merge.js": +/*!*************************************!*\ + !*** ./node_modules/merge/merge.js ***! + \*************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/* WEBPACK VAR INJECTION */(function(module) {/*!\r\n * @name JavaScript/NodeJS Merge v1.2.0\r\n * @author yeikos\r\n * @repository https://github.com/yeikos/js.merge\r\n\r\n * Copyright 2014 yeikos - MIT license\r\n * https://raw.github.com/yeikos/js.merge/master/LICENSE\r\n */\r\n\r\n;(function(isNode) {\r\n\r\n\t/**\r\n\t * Merge one or more objects \r\n\t * @param bool? clone\r\n\t * @param mixed,... arguments\r\n\t * @return object\r\n\t */\r\n\r\n\tvar Public = function(clone) {\r\n\r\n\t\treturn merge(clone === true, false, arguments);\r\n\r\n\t}, publicName = 'merge';\r\n\r\n\t/**\r\n\t * Merge two or more objects recursively \r\n\t * @param bool? clone\r\n\t * @param mixed,... arguments\r\n\t * @return object\r\n\t */\r\n\r\n\tPublic.recursive = function(clone) {\r\n\r\n\t\treturn merge(clone === true, true, arguments);\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Clone the input removing any reference\r\n\t * @param mixed input\r\n\t * @return mixed\r\n\t */\r\n\r\n\tPublic.clone = function(input) {\r\n\r\n\t\tvar output = input,\r\n\t\t\ttype = typeOf(input),\r\n\t\t\tindex, size;\r\n\r\n\t\tif (type === 'array') {\r\n\r\n\t\t\toutput = [];\r\n\t\t\tsize = input.length;\r\n\r\n\t\t\tfor (index=0;index 0 ? Math.floor(value) : Math.ceil(value));\n\t\t\tdecimalValue = value - wholeValue;\n\n\t\t\t// is this the least-significant moment token found?\n\t\t\tisLeast = ((index + 1) === momentTypes.length);\n\n\t\t\t// is this the most-significant moment token found?\n\t\t\tisMost = (!index);\n\n\t\t\t// update tokens array\n\t\t\t// using this algorithm to not assume anything about\n\t\t\t// the order or frequency of any tokens\n\t\t\teach(tokens, function (token) {\n\t\t\t\tif (token.type === momentType) {\n\t\t\t\t\textend(token, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\twholeValue: wholeValue,\n\t\t\t\t\t\tdecimalValue: decimalValue,\n\t\t\t\t\t\tisLeast: isLeast,\n\t\t\t\t\t\tisMost: isMost\n\t\t\t\t\t});\n\n\t\t\t\t\tif (isMost) {\n\t\t\t\t\t\t// note the length of the most-significant moment token:\n\t\t\t\t\t\t// if it is greater than one and forceLength is not set, default forceLength to `true`\n\t\t\t\t\t\tif (settings.forceLength == null && token.length > 1) {\n\t\t\t\t\t\t\tsettings.forceLength = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// rationale is this:\n\t\t\t\t\t\t// if the template is \"h:mm:ss\" and the moment value is 5 minutes, the user-friendly output is \"5:00\", not \"05:00\"\n\t\t\t\t\t\t// shouldn't pad the `minutes` token even though it has length of two\n\t\t\t\t\t\t// if the template is \"hh:mm:ss\", the user clearly wanted everything padded so we should output \"05:00\"\n\t\t\t\t\t\t// if the user wanted the full padded output, they can set `{ trim: false }` to get \"00:05:00\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// update remainder\n\t\t\tremainder.subtract(wholeValue, momentType);\n\t\t});\n\t\n\t\t// trim tokens array\n\t\tif (settings.trim) {\n\t\t\ttokens = (settings.trim === \"left\" ? rest : initial)(tokens, function (token) {\n\t\t\t\t// return `true` if:\n\t\t\t\t// the token is not the least moment token (don't trim the least moment token)\n\t\t\t\t// the token is a moment token that does not have a value (don't trim moment tokens that have a whole value)\n\t\t\t\treturn !(token.isLeast || (token.type != null && token.wholeValue));\n\t\t\t});\n\t\t}\n\t\t\n\t\t\n\t\t// build output\n\n\t\t// the first moment token can have special handling\n\t\tfoundFirst = false;\n\n\t\t// run the map in reverse order if trimming from the right\n\t\tif (settings.trim === \"right\") {\n\t\t\ttokens.reverse();\n\t\t}\n\n\t\ttokens = map(tokens, function (token) {\n\t\t\tvar val,\n\t\t\t\tdecVal;\n\n\t\t\tif (!token.type) {\n\t\t\t\t// if it is not a moment token, use the token as its own value\n\t\t\t\treturn token.token;\n\t\t\t}\n\n\t\t\t// apply negative precision formatting to the least-significant moment token\n\t\t\tif (token.isLeast && (settings.precision < 0)) {\n\t\t\t\tval = (Math.floor(token.wholeValue * Math.pow(10, settings.precision)) * Math.pow(10, -settings.precision)).toString();\n\t\t\t} else {\n\t\t\t\tval = token.wholeValue.toString();\n\t\t\t}\n\t\t\t\n\t\t\t// remove negative sign from the beginning\n\t\t\tval = val.replace(/^\\-/, \"\");\n\n\t\t\t// apply token length formatting\n\t\t\t// special handling for the first moment token that is not the most significant in a trimmed template\n\t\t\tif (token.length > 1 && (foundFirst || token.isMost || settings.forceLength)) {\n\t\t\t\tval = padZero(val, token.length);\n\t\t\t}\n\n\t\t\t// add decimal value if precision > 0\n\t\t\tif (token.isLeast && (settings.precision > 0)) {\n\t\t\t\tdecVal = token.decimalValue.toString().replace(/^\\-/, \"\").split(/\\.|e\\-/);\n\t\t\t\tswitch (decVal.length) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tval += \".\" + padZero(decVal[0], settings.precision, true).slice(0, settings.precision);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tval += \".\" + padZero(decVal[1], settings.precision, true).slice(0, settings.precision);\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tval += \".\" + padZero(repeatZero((+decVal[2]) - 1) + (decVal[0] || \"0\") + decVal[1], settings.precision, true).slice(0, settings.precision);\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow \"Moment Duration Format: unable to parse token decimal value.\";\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// add a negative sign if the value is negative and token is most significant\n\t\t\tif (token.isMost && token.value < 0) {\n\t\t\t\tval = \"-\" + val;\n\t\t\t}\n\n\t\t\tfoundFirst = true;\n\n\t\t\treturn val;\n\t\t});\n\n\t\t// undo the reverse if trimming from the right\n\t\tif (settings.trim === \"right\") {\n\t\t\ttokens.reverse();\n\t\t}\n\n\t\treturn tokens.join(\"\");\n\t};\n\n\tmoment.duration.fn.format.defaults = {\n\t\t// token definitions\n\t\tescape: /\\[(.+?)\\]/,\n\t\tyears: /[Yy]+/,\n\t\tmonths: /M+/,\n\t\tweeks: /[Ww]+/,\n\t\tdays: /[Dd]+/,\n\t\thours: /[Hh]+/,\n\t\tminutes: /m+/,\n\t\tseconds: /s+/,\n\t\tmilliseconds: /S+/,\n\t\tgeneral: /.+?/,\n\n\t\t// token type names\n\t\t// in order of descending magnitude\n\t\t// can be a space-separated token name list or an array of token names\n\t\ttypes: \"escape years months weeks days hours minutes seconds milliseconds general\",\n\n\t\t// format options\n\n\t\t// trim\n\t\t// \"left\" - template tokens are trimmed from the left until the first moment token that has a value >= 1\n\t\t// \"right\" - template tokens are trimmed from the right until the first moment token that has a value >= 1\n\t\t// (the final moment token is not trimmed, regardless of value)\n\t\t// `false` - template tokens are not trimmed\n\t\ttrim: \"left\",\n\n\t\t// precision\n\t\t// number of decimal digits to include after (to the right of) the decimal point (positive integer)\n\t\t// or the number of digits to truncate to 0 before (to the left of) the decimal point (negative integer)\n\t\tprecision: 0,\n\n\t\t// force first moment token with a value to render at full length even when template is trimmed and first moment token has length of 1\n\t\tforceLength: null,\n\n\t\t// template used to format duration\n\t\t// may be a function or a string\n\t\t// template functions are executed with the `this` binding of the settings object\n\t\t// so that template strings may be dynamically generated based on the duration object\n\t\t// (accessible via `this.duration`)\n\t\t// or any of the other settings\n\t\ttemplate: function () {\n\t\t\tvar types = this.types,\n\t\t\t\tdur = this.duration,\n\t\t\t\tlastType = findLast(types, function (type) {\n\t\t\t\t\treturn dur._data[type];\n\t\t\t\t});\n\n\t\t\t// default template strings for each duration dimension type\n\t\t\tswitch (lastType) {\n\t\t\t\tcase \"seconds\":\n\t\t\t\t\treturn \"h:mm:ss\";\n\t\t\t\tcase \"minutes\":\n\t\t\t\t\treturn \"d[d] h:mm\";\n\t\t\t\tcase \"hours\":\n\t\t\t\t\treturn \"d[d] h[h]\";\n\t\t\t\tcase \"days\":\n\t\t\t\t\treturn \"M[m] d[d]\";\n\t\t\t\tcase \"weeks\":\n\t\t\t\t\treturn \"y[y] w[w]\";\n\t\t\t\tcase \"months\":\n\t\t\t\t\treturn \"y[y] M[m]\";\n\t\t\t\tcase \"years\":\n\t\t\t\t\treturn \"y[y]\";\n\t\t\t\tdefault:\n\t\t\t\t\treturn \"y[y] M[m] d[d] h:mm:ss\";\n\t\t\t}\n\t\t}\n\t};\n\n})(this);\n\n\n//# sourceURL=webpack:///./node_modules/moment-duration-format/lib/moment-duration-format.js?"); + +/***/ }), + /***/ "./node_modules/moment/locale sync recursive ^\\.\\/.*$": /*!**************************************************!*\ !*** ./node_modules/moment/locale sync ^\.\/.*$ ***! @@ -7028,6 +8596,390 @@ eval("// Generated by CoffeeScript 1.7.1\n(function() {\n var getNanoSeconds, h /***/ }), +/***/ "./node_modules/pondjs/lib/entry.js": +/*!******************************************!*\ + !*** ./node_modules/pondjs/lib/entry.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.filter = exports.percentile = exports.stdev = exports.median = exports.difference = exports.last = exports.first = exports.count = exports.min = exports.max = exports.avg = exports.sum = exports.keep = exports.CollectionOut = exports.EventOut = exports.PipelineOut = exports.Bounded = exports.Stream = exports.Pipeline = exports.TimeSeries = exports.Collection = exports.TimeRange = exports.Index = exports.IndexedEvent = exports.TimeRangeEvent = exports.TimeEvent = exports.Event = undefined;\n\nvar _pipeline = __webpack_require__(/*! ./lib/pipeline.js */ \"./node_modules/pondjs/lib/lib/pipeline.js\");\n\nObject.defineProperty(exports, \"Pipeline\", {\n enumerable: true,\n get: function get() {\n return _pipeline.Pipeline;\n }\n});\n\nvar _functions = __webpack_require__(/*! ./lib/base/functions */ \"./node_modules/pondjs/lib/lib/base/functions.js\");\n\nObject.defineProperty(exports, \"keep\", {\n enumerable: true,\n get: function get() {\n return _functions.keep;\n }\n});\nObject.defineProperty(exports, \"sum\", {\n enumerable: true,\n get: function get() {\n return _functions.sum;\n }\n});\nObject.defineProperty(exports, \"avg\", {\n enumerable: true,\n get: function get() {\n return _functions.avg;\n }\n});\nObject.defineProperty(exports, \"max\", {\n enumerable: true,\n get: function get() {\n return _functions.max;\n }\n});\nObject.defineProperty(exports, \"min\", {\n enumerable: true,\n get: function get() {\n return _functions.min;\n }\n});\nObject.defineProperty(exports, \"count\", {\n enumerable: true,\n get: function get() {\n return _functions.count;\n }\n});\nObject.defineProperty(exports, \"first\", {\n enumerable: true,\n get: function get() {\n return _functions.first;\n }\n});\nObject.defineProperty(exports, \"last\", {\n enumerable: true,\n get: function get() {\n return _functions.last;\n }\n});\nObject.defineProperty(exports, \"difference\", {\n enumerable: true,\n get: function get() {\n return _functions.difference;\n }\n});\nObject.defineProperty(exports, \"median\", {\n enumerable: true,\n get: function get() {\n return _functions.median;\n }\n});\nObject.defineProperty(exports, \"stdev\", {\n enumerable: true,\n get: function get() {\n return _functions.stdev;\n }\n});\nObject.defineProperty(exports, \"percentile\", {\n enumerable: true,\n get: function get() {\n return _functions.percentile;\n }\n});\nObject.defineProperty(exports, \"filter\", {\n enumerable: true,\n get: function get() {\n return _functions.filter;\n }\n});\n\nvar _event = __webpack_require__(/*! ./lib/event */ \"./node_modules/pondjs/lib/lib/event.js\");\n\nvar _event2 = _interopRequireDefault(_event);\n\nvar _timeevent = __webpack_require__(/*! ./lib/timeevent */ \"./node_modules/pondjs/lib/lib/timeevent.js\");\n\nvar _timeevent2 = _interopRequireDefault(_timeevent);\n\nvar _timerangeevent = __webpack_require__(/*! ./lib/timerangeevent */ \"./node_modules/pondjs/lib/lib/timerangeevent.js\");\n\nvar _timerangeevent2 = _interopRequireDefault(_timerangeevent);\n\nvar _indexedevent = __webpack_require__(/*! ./lib/indexedevent */ \"./node_modules/pondjs/lib/lib/indexedevent.js\");\n\nvar _indexedevent2 = _interopRequireDefault(_indexedevent);\n\nvar _index = __webpack_require__(/*! ./lib/index.js */ \"./node_modules/pondjs/lib/lib/index.js\");\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _timerange = __webpack_require__(/*! ./lib/timerange.js */ \"./node_modules/pondjs/lib/lib/timerange.js\");\n\nvar _timerange2 = _interopRequireDefault(_timerange);\n\nvar _collection = __webpack_require__(/*! ./lib/collection.js */ \"./node_modules/pondjs/lib/lib/collection.js\");\n\nvar _collection2 = _interopRequireDefault(_collection);\n\nvar _timeseries = __webpack_require__(/*! ./lib/timeseries.js */ \"./node_modules/pondjs/lib/lib/timeseries.js\");\n\nvar _timeseries2 = _interopRequireDefault(_timeseries);\n\nvar _stream = __webpack_require__(/*! ./lib/io/stream */ \"./node_modules/pondjs/lib/lib/io/stream.js\");\n\nvar _stream2 = _interopRequireDefault(_stream);\n\nvar _bounded = __webpack_require__(/*! ./lib/io/bounded */ \"./node_modules/pondjs/lib/lib/io/bounded.js\");\n\nvar _bounded2 = _interopRequireDefault(_bounded);\n\nvar _pipelineout = __webpack_require__(/*! ./lib/io/pipelineout */ \"./node_modules/pondjs/lib/lib/io/pipelineout.js\");\n\nvar _pipelineout2 = _interopRequireDefault(_pipelineout);\n\nvar _eventout = __webpack_require__(/*! ./lib/io/eventout */ \"./node_modules/pondjs/lib/lib/io/eventout.js\");\n\nvar _eventout2 = _interopRequireDefault(_eventout);\n\nvar _collectionout = __webpack_require__(/*! ./lib/io/collectionout */ \"./node_modules/pondjs/lib/lib/io/collectionout.js\");\n\nvar _collectionout2 = _interopRequireDefault(_collectionout);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Chrome debugging for immutable.js structures\nvar Immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\nvar installDevTools = __webpack_require__(/*! immutable-devtools */ \"./node_modules/immutable-devtools/dist/index.js\");\nif (typeof window !== \"undefined\") {\n installDevTools(Immutable);\n}\n\n// Structures\nexports.Event = _event2.default;\nexports.TimeEvent = _timeevent2.default;\nexports.TimeRangeEvent = _timerangeevent2.default;\nexports.IndexedEvent = _indexedevent2.default;\nexports.Index = _index2.default;\nexports.TimeRange = _timerange2.default;\nexports.Collection = _collection2.default;\nexports.TimeSeries = _timeseries2.default;\n\n// Pipeline\n\n\n// I/O\n\nexports.Stream = _stream2.default;\nexports.Bounded = _bounded2.default;\nexports.PipelineOut = _pipelineout2.default;\nexports.EventOut = _eventout2.default;\nexports.CollectionOut = _collectionout2.default;\n\n// Functions\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/entry.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/base/functions.js": +/*!*******************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/base/functions.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.filter = undefined;\nexports.keep = keep;\nexports.sum = sum;\nexports.avg = avg;\nexports.max = max;\nexports.min = min;\nexports.count = count;\nexports.first = first;\nexports.last = last;\nexports.difference = difference;\nexports.median = median;\nexports.stdev = stdev;\nexports.percentile = percentile;\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isValid(v) {\n return !(_underscore2.default.isUndefined(v) || _underscore2.default.isNaN(v) || _underscore2.default.isNull(v));\n}\n\n//\n// Functions to process missing values out of a value list\n//\n\n/**\n * Default filter, so default it does nothing at all to the values passed to it\n * e.g. max(1, 2, null, 4) would be max(1, 2, null, 4)\n */\n/**\n * Copyright (c) 2015-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar keepMissing = function keepMissing(values) {\n return values;\n};\n\n/**\n * Removes missing values (null, undefined or NaN) from the list of\n * values passed into the aggregation function \n * e.g. avg(1, 2, null, 4) would be avg(1, 2, 4)\n */\nvar ignoreMissing = function ignoreMissing(values) {\n return values.filter(isValid);\n};\n\n/**\n * Replaces missing values (null, undefined or NaN) by 0.\n * e.g. avg(1, 2, null, 4) would be avg(1, 2, 0, 4)\n */\nvar zeroMissing = function zeroMissing(values) {\n return values.map(function (v) {\n return isValid(v) ? v : 0;\n });\n};\n\n/**\n * If there are missing values in the list of values being\n * aggregated then the result of the aggregation should be\n * also undefined or null.\n * e.g. avg(2, 4, null, 7) would be null.\n */\nvar propagateMissing = function propagateMissing(values) {\n return ignoreMissing(values).length === values.length ? values : null;\n};\n\n/**\n * If there are no values in the list, the result of the aggregation\n * is null \n */\nvar noneIfEmpty = function noneIfEmpty(values) {\n return values.length === 0 ? null : values;\n};\n\nvar filter = exports.filter = {\n keepMissing: keepMissing,\n ignoreMissing: ignoreMissing,\n zeroMissing: zeroMissing,\n propagateMissing: propagateMissing,\n noneIfEmpty: noneIfEmpty\n};\n\n/**\n * Like first() except it will return null if not all the values are\n * the same. This can be used to transfer a value when doing aggregation.\n * For instance you might group by the 'type', then avg the 'value', but\n * you want to results to include the type. So you would 'keep' the type\n * and 'avg' the value.\n */\nfunction keep() {\n var clean = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : filter.ignoreMissing;\n\n return function (values) {\n var cleanValues = clean(values);\n if (!cleanValues) return null;\n var result = first()(cleanValues);\n cleanValues.forEach(function (v) {\n if (v !== result) {\n return null;\n }\n });\n return result;\n };\n}\n\n/**\n * Returns a sum function.\n *\n * Optionally you can specify the method by which unclean values\n * are treated. The default is to exclude missing values from\n * the sum calculation. Other possibilities are:\n * `propergateMissing` - which will cause the min itself to\n * be null if the values contain a missing value\n * `zeroMissing` - will replace missing values with a zero\n */\nfunction sum() {\n var clean = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : filter.ignoreMissing;\n\n return function (values) {\n var cleanValues = clean(values);\n if (!cleanValues) return null;\n return _underscore2.default.reduce(cleanValues, function (a, b) {\n return a + b;\n }, 0);\n };\n}\n\n/**\n * Returns a avg function.\n *\n * Optionally you can specify the method by which unclean values\n * are treated. The default is to exclude missing values from\n * the average calculation. Other possibilities are:\n * `propergateMissing` - which will cause the avg itself to\n * be null if the values contain a missing value\n * `zeroMissing` - will replace missing values with a zero\n */\nfunction avg() {\n var clean = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : filter.ignoreMissing;\n\n return function (values) {\n var cleanValues = clean(values);\n if (!cleanValues) return null;\n var sum = _underscore2.default.reduce(cleanValues, function (a, b) {\n return a + b;\n }, 0);\n return sum / cleanValues.length;\n };\n}\n\n/**\n * Return a max function.\n *\n * Optionally you can specify the method by which unclean values\n * are treated. The default is to exclude missing values from\n * the maximum search. Other possibilities are:\n * `propergateMissing` - which will cause the max itself to\n * be null if the values contain a missing value\n * `zeroMissing` - will replace missing values with a zero\n */\nfunction max() {\n var clean = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : filter.ignoreMissing;\n\n return function (values) {\n var cleanValues = clean(values);\n if (!cleanValues) return null;\n var max = _underscore2.default.max(cleanValues);\n if (_underscore2.default.isFinite(max)) {\n return max;\n }\n };\n}\n\n/**\n * Return a min function.\n *\n * Optionally you can specify the method by which unclean values\n * are treated. The default is to exclude missing values from\n * the minimum search. Other possibilities are:\n * `propergateMissing` - which will cause the min itself to\n * be null if the values contain a missing value\n * `zeroMissing` - will replace missing values with a zero\n */\nfunction min() {\n var clean = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : filter.ignoreMissing;\n\n return function (values) {\n var cleanValues = clean(values);\n if (!cleanValues) return null;\n var min = _underscore2.default.min(cleanValues);\n if (_underscore2.default.isFinite(min)) {\n return min;\n }\n };\n}\n\n/**\n * Returns a count() function.\n *\n * Optionally you can specify the method by which unclean values\n * are treated. The default is to exclude missing values from\n * the count. Other possibilities are:\n * `propergateMissing` - which will cause the count itself to\n * be null if the values contain a missing value\n */\nfunction count() {\n var clean = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : filter.ignoreMissing;\n\n return function (values) {\n var cleanValues = clean(values);\n if (!cleanValues) return null;\n return cleanValues.length;\n };\n}\n\n/**\n * Returns a first() function, i.e. a function that returns the first\n * value in the supplied values list.\n *\n * Optionally you can specify the method by which unclean values\n * are treated. The default is to exclude missing values from\n * the list, i.e to find the first non-missing value. Other\n * possibilities are:\n * `keepMissing` - to return the first value, regardless of if\n * it is a missing value or not.\n */\nfunction first() {\n var clean = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : filter.ignoreMissing;\n\n return function (values) {\n var cleanValues = clean(values);\n if (!cleanValues) return null;\n return cleanValues.length ? cleanValues[0] : undefined;\n };\n}\n\n/**\n * Returns a last() function, i.e. a function that returns the list\n * value in the supplied values list.\n *\n * Optionally you can specify the method by which unclean values\n * are treated. The default is to exclude missing values from\n * the list, i.e to find the last non-missing value. Other\n * possibilities are:\n * `keepMissing` - to return the last value, regardless of if\n * it is a missing value or not.\n */\nfunction last() {\n var clean = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : filter.ignoreMissing;\n\n return function (values) {\n var cleanValues = clean(values);\n if (!cleanValues) return null;\n return cleanValues.length ? cleanValues[cleanValues.length - 1] : undefined;\n };\n}\n\n/**\n * Returns a difference() function, i.e. a function that returns\n * the difference between the min and max values.\n *\n * Optionally you can specify the method by which unclean values\n * are treated. The default is to exclude missing values from\n * the list, i.e to find the last non-missing value. Other\n * possibilities are:\n * `propergateMissing` - which will cause the min itself to\n * be null if the values contain a missing value\n * `zeroMissing` - will replace missing values with a zero\n */\nfunction difference() {\n var clean = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : filter.ignoreMissing;\n\n return function (values) {\n var cleanValues = clean(values);\n if (!cleanValues) return null;\n return _underscore2.default.max(cleanValues) - _underscore2.default.min(cleanValues);\n };\n}\n\nfunction median() {\n var clean = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : filter.ignoreMissing;\n\n return function (values) {\n var cleanValues = clean(values);\n if (!cleanValues) return null;\n var sorted = cleanValues.sort();\n var i = Math.floor(sorted.length / 2);\n if (sorted.length % 2 === 0) {\n var a = sorted[i];\n var b = sorted[i - 1];\n return (a + b) / 2;\n } else {\n return sorted[i];\n }\n };\n}\n\nfunction stdev() {\n var clean = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : filter.ignoreMissing;\n\n return function (values) {\n var cleanValues = clean(values);\n if (!cleanValues) return null;\n var sums = 0;\n var mean = avg(clean)(cleanValues);\n cleanValues.forEach(function (v) {\n return sums += Math.pow(v - mean, 2);\n });\n return Math.sqrt(sums / values.length);\n };\n}\n\n/**\n * Returns a percentile function within the a values list.\n *\n * @param {object} options The parameters controlling the function:\n * * q The percentile (should be between 0 and 100)\n * * interp Specifies the interpolation method\n * to use when the desired quantile lies between\n * two data points. Options are:\n * * linear: i + (j - i) * fraction, where fraction is the fractional part of the index surrounded by i and j.\n * * lower: i.\n * * higher: j.\n * * nearest: i or j whichever is nearest.\n * * midpoint: (i + j) / 2.\n * * clean Strategy to use when encountering missing data:\n * * `propergateMissing` - which will cause the min\n * itself to be null if the values contain a\n * missing value\n * * `zeroMissing` - will replace missing values\n * with a zero\n * @return {number} The percentile\n */\nfunction percentile(q) {\n var interp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"linear\";\n var clean = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : filter.ignoreMissing;\n\n return function (values) {\n var cleanValues = clean(values);\n if (!cleanValues) return null;\n\n var v = void 0;\n\n var sorted = cleanValues.slice().sort(function (a, b) {\n return a - b;\n });\n var size = sorted.length;\n\n if (q < 0 || q > 100) {\n throw new Error(\"Percentile q must be between 0 and 100\");\n }\n\n var i = q / 100;\n var index = Math.floor((sorted.length - 1) * i);\n\n if (size === 1 || q === 0) {\n return sorted[0];\n }\n\n if (q === 100) {\n return sorted[size - 1];\n }\n\n if (index < size - 1) {\n var fraction = (size - 1) * i - index;\n var v0 = sorted[index];\n var v1 = sorted[index + 1];\n if (interp === \"lower\" || fraction === 0) {\n v = v0;\n } else if (interp === \"linear\") {\n v = v0 + (v1 - v0) * fraction;\n } else if (interp === \"higher\") {\n v = v1;\n } else if (interp === \"nearest\") {\n v = fraction < 0.5 ? v0 : v1;\n } else if (interp === \"midpoint\") {\n v = (v0 + v1) / 2;\n }\n }\n\n return v;\n };\n}\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/base/functions.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/base/observable.js": +/*!********************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/base/observable.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Base class for objects in the processing chain which\n * need other object to listen to them. It provides a basic\n * interface to define the relationships and to emit events\n * to the interested observers.\n */\nvar Observable = function () {\n function Observable() {\n (0, _classCallCheck3.default)(this, Observable);\n\n this._id = _underscore2.default.uniqueId(\"id-\");\n this._observers = [];\n }\n\n (0, _createClass3.default)(Observable, [{\n key: \"emit\",\n value: function emit(event) {\n this._observers.forEach(function (observer) {\n observer.addEvent(event);\n });\n }\n }, {\n key: \"flush\",\n value: function flush() {\n this._observers.forEach(function (observer) {\n observer.flush();\n });\n }\n }, {\n key: \"addObserver\",\n value: function addObserver(observer) {\n var shouldAdd = true;\n this._observers.forEach(function (o) {\n if (o === observer) {\n shouldAdd = false;\n }\n });\n\n if (shouldAdd) this._observers.push(observer);\n }\n }, {\n key: \"hasObservers\",\n value: function hasObservers() {\n return this._observers.length > 0;\n }\n }]);\n return Observable;\n}(); /**\n * Copyright (c) 2016, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexports.default = Observable;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/base/observable.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/base/util.js": +/*!**************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/base/util.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray2 = __webpack_require__(/*! babel-runtime/helpers/slicedToArray */ \"./node_modules/babel-runtime/helpers/slicedToArray.js\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"./node_modules/babel-runtime/regenerator/index.js\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _toConsumableArray2 = __webpack_require__(/*! babel-runtime/helpers/toConsumableArray */ \"./node_modules/babel-runtime/helpers/toConsumableArray.js\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _keys = __webpack_require__(/*! babel-runtime/core-js/object/keys */ \"./node_modules/babel-runtime/core-js/object/keys.js\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = __webpack_require__(/*! babel-runtime/core-js/get-iterator */ \"./node_modules/babel-runtime/core-js/get-iterator.js\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _moment = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _timerange = __webpack_require__(/*! ../timerange */ \"./node_modules/pondjs/lib/lib/timerange.js\");\n\nvar _timerange2 = _interopRequireDefault(_timerange);\n\nvar _index = __webpack_require__(/*! ../index */ \"./node_modules/pondjs/lib/lib/index.js\");\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar units = {\n s: { label: \"seconds\", length: 1 },\n m: { label: \"minutes\", length: 60 },\n h: { label: \"hours\", length: 60 * 60 },\n d: { label: \"days\", length: 60 * 60 * 24 }\n};\n\n/**\n * This function will take an index, which may be of two forms:\n * 2015-07-14 (day)\n * 2015-07 (month)\n * 2015 (year)\n * or:\n * 1d-278 (range, in n x days, hours, minutes or seconds)\n *\n * and return a TimeRange for that time. The TimeRange may be considered to be\n * local time or UTC time, depending on the utc flag passed in.\n */\n/**\n * Copyright (c) 2015-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexports.default = {\n /**\n * Single zero left padding, for days and months.\n */\n leftPad: function leftPad(value) {\n return \"\" + (value < 10 ? \"0\" : \"\") + value;\n },\n\n /**\n * Returns a duration in milliseconds given a window duration string.\n * For example \"30s\" (30 seconds) should return 30000ms. Accepts\n * seconds (e.g. \"30s\"), minutes (e.g. \"5m\"), hours (e.g. \"6h\") and\n * days (e.g. \"30d\")\n */\n windowDuration: function windowDuration(w) {\n // window should be two parts, a number and a letter if it's a\n // range based index, e.g \"1h\".\n var regex = /([0-9]+)([smhd])/;\n var parts = regex.exec(w);\n if (parts && parts.length >= 3) {\n var num = parseInt(parts[1], 10);\n var unit = parts[2];\n return num * units[unit].length * 1000;\n }\n },\n windowPositionFromDate: function windowPositionFromDate(w, date) {\n var duration = this.windowDuration(w);\n var dd = _moment2.default.utc(date).valueOf();\n return parseInt(dd /= duration, 10);\n },\n rangeFromIndexString: function rangeFromIndexString(index, utc) {\n var isUTC = !_underscore2.default.isUndefined(utc) ? utc : true;\n var parts = index.split(\"-\");\n\n var beginTime = void 0;\n var endTime = void 0;\n\n switch (parts.length) {\n case 3:\n // A day, month and year e.g. 2014-10-24\n if (!_underscore2.default.isNaN(parseInt(parts[0], 10)) && !_underscore2.default.isNaN(parseInt(parts[1], 10)) && !_underscore2.default.isNaN(parseInt(parts[2], 10))) {\n var _year = parseInt(parts[0], 10);\n var month = parseInt(parts[1], 10);\n var day = parseInt(parts[2], 10);\n beginTime = isUTC ? _moment2.default.utc([_year, month - 1, day]) : (0, _moment2.default)([_year, month - 1, day]);\n endTime = isUTC ? _moment2.default.utc(beginTime).endOf(\"day\") : (0, _moment2.default)(beginTime).endOf(\"day\");\n }\n break;\n\n case 2:\n // Size should be two parts, a number and a letter if it's a\n // range based index, e.g 1h-23478\n var rangeRegex = /([0-9]+)([smhd])/;\n var sizeParts = rangeRegex.exec(parts[0]);\n if (sizeParts && sizeParts.length >= 3 && !_underscore2.default.isNaN(parseInt(parts[1], 10))) {\n var pos = parseInt(parts[1], 10);\n var num = parseInt(sizeParts[1], 10);\n var unit = sizeParts[2];\n var length = num * units[unit].length * 1000;\n\n beginTime = isUTC ? _moment2.default.utc(pos * length) : (0, _moment2.default)(pos * length);\n endTime = isUTC ? _moment2.default.utc((pos + 1) * length) : (0, _moment2.default)((pos + 1) * length);\n // A month and year e.g 2015-09\n } else if (!_underscore2.default.isNaN(parseInt(parts[0], 10)) && !_underscore2.default.isNaN(parseInt(parts[1], 10))) {\n var _year2 = parseInt(parts[0], 10);\n var _month = parseInt(parts[1], 10);\n beginTime = isUTC ? _moment2.default.utc([_year2, _month - 1]) : (0, _moment2.default)([_year2, _month - 1]);\n endTime = isUTC ? _moment2.default.utc(beginTime).endOf(\"month\") : (0, _moment2.default)(beginTime).endOf(\"month\");\n }\n break;\n\n // A year e.g. 2015\n case 1:\n var year = parts[0];\n beginTime = isUTC ? _moment2.default.utc([year]) : (0, _moment2.default)([year]);\n endTime = isUTC ? _moment2.default.utc(beginTime).endOf(\"year\") : (0, _moment2.default)(beginTime).endOf(\"year\");\n break;\n }\n\n if (beginTime && beginTime.isValid() && endTime && endTime.isValid()) {\n return new _timerange2.default(beginTime, endTime);\n } else {\n return undefined;\n }\n },\n\n /**\n * Returns a nice string for the index. If the index is of the form\n * 1d-2345 then just that string is returned (there's not nice way to put\n * it), but if it represents a day, month, or year (e.g. 2015-07) then a\n * nice string like \"July\" will be returned. It's also possible to pass in\n * the format of the reply for these types of strings. See moment's format\n * naming conventions:\n * http://momentjs.com/docs/#/displaying/format/\n */\n niceIndexString: function niceIndexString(index, format) {\n var t = void 0;\n\n var parts = index.split(\"-\");\n switch (parts.length) {\n case 3:\n if (!_underscore2.default.isNaN(parseInt(parts[0], 10)) && !_underscore2.default.isNaN(parseInt(parts[1], 10)) && !_underscore2.default.isNaN(parseInt(parts[2], 10))) {\n var _year3 = parseInt(parts[0], 10);\n var month = parseInt(parts[1], 10);\n var day = parseInt(parts[2], 10);\n t = _moment2.default.utc([_year3, month - 1, day]);\n if (format) {\n return t.format(format);\n } else {\n return t.format(\"MMMM Do YYYY\");\n }\n }\n break;\n\n case 2:\n var rangeRegex = /([0-9]+)([smhd])/;\n var sizeParts = rangeRegex.exec(parts[0]);\n if (sizeParts && sizeParts.length >= 3 && !_underscore2.default.isNaN(parseInt(parts[1], 10))) {\n return index;\n } else if (!_underscore2.default.isNaN(parseInt(parts[0], 10)) && !_underscore2.default.isNaN(parseInt(parts[1], 10))) {\n var _year4 = parseInt(parts[0], 10);\n var _month2 = parseInt(parts[1], 10);\n t = _moment2.default.utc([_year4, _month2 - 1]);\n if (format) {\n return t.format(format);\n } else {\n return t.format(\"MMMM\");\n }\n }\n break;\n\n case 1:\n var year = parts[0];\n t = _moment2.default.utc([year]);\n if (format) {\n return t.format(format);\n } else {\n return t.format(\"YYYY\");\n }\n break;\n }\n return index;\n },\n isMissing: function isMissing(val) {\n return _underscore2.default.isNull(val) || _underscore2.default.isUndefined(val) || _underscore2.default.isNaN(val);\n },\n\n /**\n * Split the field spec if it is not already a list.\n *\n * Also, allow for deep fields to be passed in as a tuple because\n * it will need to be used as a dict key in some of the processor\n * Options.\n *\n * This is deployed in Event.get() to process anything passed\n * to it, but this should also be deployed \"upstream\" to avoid\n * having that split() done over and over in a loop.\n */\n fieldPathToArray: function fieldPathToArray(fieldSpec) {\n if (_underscore2.default.isArray(fieldSpec) || _underscore2.default.isFunction(fieldSpec)) {\n return fieldSpec;\n } else if (_underscore2.default.isString(fieldSpec)) {\n return fieldSpec.split(\".\");\n } else if (_underscore2.default.isUndefined(fieldSpec)) {\n return [\"value\"];\n }\n },\n\n /**\n * Generate a list of all possible field paths in an object. This is\n * for to determine all deep paths when none is given.\n */\n generatePaths: function generatePaths(newData) {\n var _marked = [recurse].map(_regenerator2.default.mark);\n\n var paths = [];\n\n function recurse(data) {\n var keys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, key, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, path;\n\n return _regenerator2.default.wrap(function recurse$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!_underscore2.default.isObject(data)) {\n _context.next = 53;\n break;\n }\n\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 4;\n _iterator = (0, _getIterator3.default)((0, _keys2.default)(data));\n\n case 6:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context.next = 37;\n break;\n }\n\n key = _step.value;\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context.prev = 11;\n _iterator2 = (0, _getIterator3.default)(recurse(data[key], [].concat((0, _toConsumableArray3.default)(keys), [key])));\n\n case 13:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context.next = 20;\n break;\n }\n\n path = _step2.value;\n _context.next = 17;\n return path;\n\n case 17:\n _iteratorNormalCompletion2 = true;\n _context.next = 13;\n break;\n\n case 20:\n _context.next = 26;\n break;\n\n case 22:\n _context.prev = 22;\n _context.t0 = _context[\"catch\"](11);\n _didIteratorError2 = true;\n _iteratorError2 = _context.t0;\n\n case 26:\n _context.prev = 26;\n _context.prev = 27;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n\n case 29:\n _context.prev = 29;\n\n if (!_didIteratorError2) {\n _context.next = 32;\n break;\n }\n\n throw _iteratorError2;\n\n case 32:\n return _context.finish(29);\n\n case 33:\n return _context.finish(26);\n\n case 34:\n _iteratorNormalCompletion = true;\n _context.next = 6;\n break;\n\n case 37:\n _context.next = 43;\n break;\n\n case 39:\n _context.prev = 39;\n _context.t1 = _context[\"catch\"](4);\n _didIteratorError = true;\n _iteratorError = _context.t1;\n\n case 43:\n _context.prev = 43;\n _context.prev = 44;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 46:\n _context.prev = 46;\n\n if (!_didIteratorError) {\n _context.next = 49;\n break;\n }\n\n throw _iteratorError;\n\n case 49:\n return _context.finish(46);\n\n case 50:\n return _context.finish(43);\n\n case 51:\n _context.next = 55;\n break;\n\n case 53:\n _context.next = 55;\n return keys;\n\n case 55:\n case \"end\":\n return _context.stop();\n }\n }\n }, _marked[0], this, [[4, 39, 43, 51], [11, 22, 26, 34], [27,, 29, 33], [44,, 46, 50]]);\n }\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(recurse(newData)), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var key = _step3.value;\n\n paths.push(key);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n return paths;\n },\n\n //\n // Functions to turn constructor args\n // into other stuff\n //\n timestampFromArg: function timestampFromArg(arg) {\n if (_underscore2.default.isNumber(arg)) {\n return new Date(arg);\n } else if (_underscore2.default.isString(arg)) {\n return new Date(+arg);\n } else if (_underscore2.default.isDate(arg)) {\n return new Date(arg.getTime());\n } else if (_moment2.default.isMoment(arg)) {\n return new Date(arg.valueOf());\n } else {\n throw new Error(\"Unable to get timestamp from \" + arg + \". Should be a number, date, or moment.\");\n }\n },\n timeRangeFromArg: function timeRangeFromArg(arg) {\n if (arg instanceof _timerange2.default) {\n return arg;\n } else if (_underscore2.default.isString(arg)) {\n var _arg$split = arg.split(\",\"),\n _arg$split2 = (0, _slicedToArray3.default)(_arg$split, 2),\n begin = _arg$split2[0],\n end = _arg$split2[1];\n\n return new _timerange2.default([+begin, +end]);\n } else if (_underscore2.default.isArray(arg) && arg.length === 2) {\n return new _timerange2.default(arg);\n } else {\n throw new Error(\"Unable to parse timerange. Should be a TimeRange. Got \" + arg + \".\");\n }\n },\n indexFromArgs: function indexFromArgs(arg1) {\n var arg2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (_underscore2.default.isString(arg1)) {\n return new _index2.default(arg1, arg2);\n } else if (arg1 instanceof _index2.default) {\n return arg1;\n } else {\n throw new Error(\"Unable to get index from \" + arg1 + \". Should be a string or Index.\");\n }\n },\n dataFromArg: function dataFromArg(arg) {\n var data = void 0;\n if (_underscore2.default.isObject(arg)) {\n // Deeply convert the data to Immutable Map\n data = new _immutable2.default.fromJS(arg);\n } else if (data instanceof _immutable2.default.Map) {\n // Copy reference to the data\n data = arg;\n } else if (_underscore2.default.isNumber(arg) || _underscore2.default.isString(arg)) {\n // Just add it to the value key of a new Map\n // e.g. new Event(t, 25); -> t, {value: 25}\n data = new _immutable2.default.Map({ value: arg });\n } else {\n throw new Error(\"Unable to interpret event data from \" + arg + \".\");\n }\n return data;\n }\n};\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/base/util.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/collection.js": +/*!***************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/collection.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"./node_modules/babel-runtime/regenerator/index.js\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _getIterator2 = __webpack_require__(/*! babel-runtime/core-js/get-iterator */ \"./node_modules/babel-runtime/core-js/get-iterator.js\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _stringify = __webpack_require__(/*! babel-runtime/core-js/json/stringify */ \"./node_modules/babel-runtime/core-js/json/stringify.js\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _bounded = __webpack_require__(/*! ./io/bounded */ \"./node_modules/pondjs/lib/lib/io/bounded.js\");\n\nvar _bounded2 = _interopRequireDefault(_bounded);\n\nvar _event = __webpack_require__(/*! ./event */ \"./node_modules/pondjs/lib/lib/event.js\");\n\nvar _event2 = _interopRequireDefault(_event);\n\nvar _timerange = __webpack_require__(/*! ./timerange */ \"./node_modules/pondjs/lib/lib/timerange.js\");\n\nvar _timerange2 = _interopRequireDefault(_timerange);\n\nvar _util = __webpack_require__(/*! ./base/util */ \"./node_modules/pondjs/lib/lib/base/util.js\");\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _functions = __webpack_require__(/*! ./base/functions */ \"./node_modules/pondjs/lib/lib/base/functions.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A collection is an abstraction for a bag of Events.\n *\n * You typically construct a Collection from a list of Events, which\n * may be either within an Immutable.List or an Array. You can also\n * copy another Collection or create an empty one.\n *\n * You can mutate a collection in a number of ways. In each instance\n * a new Collection will be returned.\n *\n * Basic operations on the list of events are also possible. You\n * can iterate over the collection with a for..of loop, get the size()\n * of the collection and access a specific element with at().\n *\n * You can also perform aggregations of the events, map them, filter them\n * clean them, etc.\n *\n * Collections form the backing structure for a TimeSeries, as well as\n * in Pipeline event processing. They are an instance of a BoundedIn, so\n * they can be used as a pipeline source.\n */\nvar Collection = function (_Bounded) {\n (0, _inherits3.default)(Collection, _Bounded);\n\n /**\n * Construct a new Collection.\n *\n * @param {Collection|array|Immutable.List} arg1 Initial data for\n * the collection. If arg1 is another Collection, this will act as\n * a copy constructor.\n * @param {Boolean} [arg2] When using a the copy constructor\n * this specified whether or not to also copy all the events in this\n * collection. Generally you'll want to let it copy the events.\n * If arg1 is an Immutable.List, then arg2 will specify the type of\n * the Events accepted into the Collection. This form is generally\n * used internally.\n *\n * @return {Collection} The constructed Collection.\n */\n function Collection(arg1, arg2) {\n (0, _classCallCheck3.default)(this, Collection);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Collection.__proto__ || (0, _getPrototypeOf2.default)(Collection)).call(this));\n\n _this._id = _underscore2.default.uniqueId(\"collection-\");\n _this._eventList = null;\n // The events in this collection\n _this._type = null;\n\n // The type (class) of the events in this collection\n if (!arg1) {\n _this._eventList = new _immutable2.default.List();\n } else if (arg1 instanceof Collection) {\n var other = arg1;\n var copyEvents = arg2 || true;\n // copyEvents is whether to copy events from other, default is true\n if (_underscore2.default.isUndefined(copyEvents) || copyEvents === true) {\n _this._eventList = other._eventList;\n _this._type = other._type;\n } else {\n _this._eventList = new _immutable2.default.List();\n }\n } else if (_underscore2.default.isArray(arg1)) {\n var events = [];\n arg1.forEach(function (e) {\n _this._check(e);\n events.push(e._d);\n });\n _this._eventList = new _immutable2.default.List(events);\n } else if (_immutable2.default.List.isList(arg1)) {\n var type = arg2;\n if (!type) {\n throw new Error(\"No type supplied to Collection constructor\");\n }\n _this._type = type;\n _this._eventList = arg1;\n }\n return _this;\n }\n\n /**\n * Returns the Collection as a regular JSON object.\n *\n * @return {Object} The JSON representation of this Collection\n */\n\n\n (0, _createClass3.default)(Collection, [{\n key: \"toJSON\",\n value: function toJSON() {\n return this._eventList.toJS();\n }\n\n /**\n * Serialize out the Collection as a string. This will be the\n * string representation of `toJSON()`.\n *\n * @return {string} The Collection serialized as a string.\n */\n\n }, {\n key: \"toString\",\n value: function toString() {\n return (0, _stringify2.default)(this.toJSON());\n }\n\n /**\n * Returns the Event object type in this Collection.\n *\n * Since Collections may only have one type of event (`Event`, `IndexedEvent`\n * or `TimeRangeEvent`) this will return that type. If no events\n * have been added to the Collection it will return `undefined`.\n *\n * @return {Event} - The class of the type of events contained in\n * this Collection.\n */\n\n }, {\n key: \"type\",\n value: function type() {\n return this._type;\n }\n\n /**\n * Returns the number of events in this collection\n *\n * @return {number} Count of events\n */\n\n }, {\n key: \"size\",\n value: function size() {\n return this._eventList.size;\n }\n\n /**\n * Returns the number of valid items in this collection.\n *\n * Uses the fieldPath to look up values in all events.\n * It then counts the number that are considered valid, which\n * specifically are not NaN, undefined or null.\n *\n * @return {number} Count of valid events\n */\n\n }, {\n key: \"sizeValid\",\n value: function sizeValid() {\n var fieldPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"value\";\n\n var count = 0;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this.events()), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var e = _step.value;\n\n if (_event2.default.isValidValue(e, fieldPath)) count++;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return count;\n }\n\n /**\n * Returns an event in the Collection by its position.\n * @example\n * ```\n * for (let row=0; row < series.size(); row++) {\n * const event = series.at(row);\n * console.log(event.toString());\n * }\n * ```\n * @param {number} pos The position of the event\n * @return {Event} Returns the event at the pos specified.\n */\n\n }, {\n key: \"at\",\n value: function at(pos) {\n if (this._eventList.size > 0) {\n var event = new this._type(this._eventList.get(pos));\n return event;\n }\n }\n\n /**\n * Returns a list of events in the Collection which have\n * the exact key (time, timerange or index) as the key specified\n * by 'at'. Note that this is an O(n) search for the time specified,\n * since collections are an unordered bag of events.\n *\n * @param {Date|string|TimeRange} key The key of the event.\n * @return {Array} All events at that key\n */\n\n }, {\n key: \"atKey\",\n value: function atKey(k) {\n var result = [];\n var key = void 0;\n if (k instanceof Date) {\n key = k.getTime();\n } else if (_underscore2.default.isString(k)) {\n key = k;\n } else if (k instanceof _timerange2.default) {\n key = this.timerange().begin() + \",\" + this.timerange().end();\n }\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(this.events()), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var e = _step2.value;\n\n if (e.key() === key) {\n result.push(e);\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return result;\n }\n\n /**\n * Returns the first event in the Collection.\n *\n * @return {Event}\n */\n\n }, {\n key: \"atFirst\",\n value: function atFirst() {\n if (this.size()) {\n return this.at(0);\n }\n }\n\n /**\n * Returns the last event in the Collection.\n *\n * @return {Event}\n */\n\n }, {\n key: \"atLast\",\n value: function atLast() {\n if (this.size()) {\n return this.at(this.size() - 1);\n }\n }\n\n /**\n * Generator to return all the events in the Collection.\n *\n * @example\n * ```\n * for (let event of collection.events()) {\n * console.log(event.toString());\n * }\n * ```\n */\n\n }, {\n key: \"events\",\n value: _regenerator2.default.mark(function events() {\n var i;\n return _regenerator2.default.wrap(function events$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n i = 0;\n\n case 1:\n if (!(i < this.size())) {\n _context.next = 7;\n break;\n }\n\n _context.next = 4;\n return this.at(i);\n\n case 4:\n i++;\n _context.next = 1;\n break;\n\n case 7:\n case \"end\":\n return _context.stop();\n }\n }\n }, events, this);\n })\n }, {\n key: \"setEvents\",\n value: function setEvents(events) {\n var result = new Collection(this);\n result._eventList = events;\n return result;\n }\n\n /**\n * Returns the raw Immutable event list\n *\n * @return {Immutable.List} All events as an Immutable List.\n */\n\n }, {\n key: \"eventList\",\n value: function eventList() {\n return this._eventList;\n }\n\n /**\n * Returns a Javascript array representation of the event list\n *\n * @return {Array} All events as a Javascript Array.\n */\n\n }, {\n key: \"eventListAsArray\",\n value: function eventListAsArray() {\n var events = [];\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(this.events()), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var e = _step3.value;\n\n events.push(e);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n return events;\n }\n\n /**\n * Returns the events in the collection as a Javascript Map, where\n * the key is the timestamp, index or timerange and the\n * value is an array of events with that key.\n *\n * @return {map} The map of events\n */\n\n }, {\n key: \"eventListAsMap\",\n value: function eventListAsMap() {\n var events = {};\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)(this.events()), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var e = _step4.value;\n\n var key = e.key();\n if (!_underscore2.default.has(events, key)) {\n events[key] = [];\n }\n events[key].push(e);\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n return events;\n }\n\n //\n // De-duplicate\n //\n /**\n * Removes duplicates from the Collection. If duplicates\n * exist in the collection with the same key but with different\n * values, then later event values will be used.\n *\n * @return {Collection} The sorted Collection.\n */\n\n }, {\n key: \"dedup\",\n value: function dedup() {\n var events = _event2.default.merge(this.eventListAsArray());\n return new Collection(events);\n }\n\n //\n // Sorting\n //\n /**\n * Sorts the Collection by the timestamp. In the case\n * of TimeRangeEvents and IndexedEvents, it will be sorted\n * by the begin time. This is useful when the collection\n * will be passed into a TimeSeries.\n *\n * See also isChronological().\n *\n * @return {Collection} The sorted Collection\n */\n\n }, {\n key: \"sortByTime\",\n value: function sortByTime() {\n var _this2 = this;\n\n var sorted = this._eventList.sortBy(function (event) {\n var e = new _this2._type(event);\n return e.timestamp().getTime();\n });\n return this.setEvents(sorted);\n }\n\n /**\n * Sorts the Collection using the value referenced by\n * the fieldPath.\n *\n * @return {Collection} The extents of the Collection\n */\n\n }, {\n key: \"sort\",\n value: function sort(fieldPath) {\n var _this3 = this;\n\n var fs = _util2.default.fieldPathToArray(fieldPath);\n var sorted = this._eventList.sortBy(function (event) {\n var e = new _this3._type(event);\n return e.get(fs);\n });\n return this.setEvents(sorted);\n }\n\n //\n // Series range\n //\n /**\n * From the range of times, or Indexes within the TimeSeries, return\n * the extents of the TimeSeries as a TimeRange. This is currently implemented\n * by walking the events.\n *\n * @return {TimeRange} The extents of the TimeSeries\n */\n\n }, {\n key: \"range\",\n value: function range() {\n var min = void 0;\n var max = void 0;\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = (0, _getIterator3.default)(this.events()), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var e = _step5.value;\n\n if (!min || e.begin() < min) min = e.begin();\n if (!max || e.end() > max) max = e.end();\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n\n if (min && max) return new _timerange2.default(min, max);\n }\n\n //\n // Collection mutation\n //\n /**\n * Adds an event to the collection, returns a new Collection. The event added\n * can be an Event, TimeRangeEvent or IndexedEvent, but it must be of the\n * same type as other events within the Collection.\n *\n * @param {Event} event The event being added.\n *\n * @return {Collection} A new, modified, Collection containing the new event.\n */\n\n }, {\n key: \"addEvent\",\n value: function addEvent(event) {\n this._check(event);\n var result = new Collection(this);\n result._eventList = this._eventList.push(event._d);\n return result;\n }\n\n /**\n * Perform a slice of events within the Collection, returns a new\n * Collection representing a portion of this TimeSeries from begin up to\n * but not including end.\n *\n * @param {Number} begin The position to begin slicing\n * @param {Number} end The position to end slicing\n *\n * @return {Collection} The new, sliced, Collection.\n */\n\n }, {\n key: \"slice\",\n value: function slice(begin, end) {\n return new Collection(this._eventList.slice(begin, end), this._type);\n }\n\n /**\n * Filter the collection's event list with the supplied function\n *\n * @param {function} func The filter function, that should return\n * true or false when passed in an event.\n *\n * @return {Collection} A new, filtered, Collection.\n */\n\n }, {\n key: \"filter\",\n value: function filter(filterFunc) {\n var filteredEventList = [];\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = (0, _getIterator3.default)(this.events()), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var e = _step6.value;\n\n if (filterFunc(e)) {\n filteredEventList.push(e);\n }\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n\n return new Collection(filteredEventList);\n }\n\n /**\n * Map the collection's event list to a new event list with\n * the supplied function.\n * @param {function} func The mapping function, that should return\n * a new event when passed in the old event.\n *\n * @return {Collection} A new, modified, Collection.\n */\n\n }, {\n key: \"map\",\n value: function map(mapFunc) {\n var result = [];\n var _iteratorNormalCompletion7 = true;\n var _didIteratorError7 = false;\n var _iteratorError7 = undefined;\n\n try {\n for (var _iterator7 = (0, _getIterator3.default)(this.events()), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {\n var e = _step7.value;\n\n result.push(mapFunc(e));\n }\n } catch (err) {\n _didIteratorError7 = true;\n _iteratorError7 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion7 && _iterator7.return) {\n _iterator7.return();\n }\n } finally {\n if (_didIteratorError7) {\n throw _iteratorError7;\n }\n }\n }\n\n return new Collection(result);\n }\n\n /**\n * Returns a new Collection by testing the fieldPath\n * values for being valid (not NaN, null or undefined).\n *\n * The resulting Collection will be clean (for that fieldPath).\n *\n * @param {string} fieldPath Name of value to look up. If not supplied,\n * defaults to ['value']. \"Deep\" syntax is\n * ['deep', 'value'] or 'deep.value'\n *\n * @return {Collection} A new, modified, Collection.\n */\n\n }, {\n key: \"clean\",\n value: function clean(fieldPath) {\n var fs = _util2.default.fieldPathToArray(fieldPath);\n var filteredEvents = [];\n var _iteratorNormalCompletion8 = true;\n var _didIteratorError8 = false;\n var _iteratorError8 = undefined;\n\n try {\n for (var _iterator8 = (0, _getIterator3.default)(this.events()), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {\n var e = _step8.value;\n\n if (_event2.default.isValidValue(e, fs)) {\n filteredEvents.push(e);\n }\n }\n } catch (err) {\n _didIteratorError8 = true;\n _iteratorError8 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion8 && _iterator8.return) {\n _iterator8.return();\n }\n } finally {\n if (_didIteratorError8) {\n throw _iteratorError8;\n }\n }\n }\n\n return new Collection(filteredEvents);\n }\n\n //\n // Aggregate the event list to a single value\n //\n /**\n * Returns the number of events in this collection\n *\n * @return {number} The number of events\n */\n\n }, {\n key: \"count\",\n value: function count() {\n return this.size();\n }\n\n /**\n * Returns the first value in the Collection for the fieldspec\n *\n * @param {string} fieldPath Column to find the first value of. A deep value can be referenced with a\n * string.like.this. If not supplied the `value` column will be\n * aggregated.\n * @param {function} filter Optional filter function used to clean data before aggregating\n *\n * @return {number} The first value\n */\n\n }, {\n key: \"first\",\n value: function first(fieldPath, filter) {\n return this.aggregate((0, _functions.first)(filter), fieldPath);\n }\n\n /**\n * Returns the last value in the Collection for the fieldspec\n *\n * @param {string} fieldPath Column to find the last value of. A deep value can be referenced with a\n * string.like.this. If not supplied the `value` column will be\n * aggregated.\n * @param {function} filter Optional filter function used to clean data before aggregating\n *\n * @return {number} The last value\n */\n\n }, {\n key: \"last\",\n value: function last(fieldPath, filter) {\n return this.aggregate((0, _functions.last)(filter), fieldPath);\n }\n\n /**\n * Returns the sum of the Collection for the fieldspec\n *\n * @param {string} fieldPath Column to find the sum of. A deep value can be referenced with a\n * string.like.this. If not supplied the `value` column will be\n * aggregated.\n * @param {function} filter Optional filter function used to clean data before aggregating\n *\n * @return {number} The sum\n */\n\n }, {\n key: \"sum\",\n value: function sum(fieldPath, filter) {\n return this.aggregate((0, _functions.sum)(filter), fieldPath);\n }\n\n /**\n * Aggregates the events down to their average(s)\n *\n * @param {string} fieldPath Column to find the avg of. A deep value can be referenced with a\n * string.like.this. If not supplied the `value` column will be\n * aggregated.\n * @param {function} filter Optional filter function used to clean data before aggregating\n *\n * @return {number} The average\n */\n\n }, {\n key: \"avg\",\n value: function avg(fieldPath, filter) {\n return this.aggregate((0, _functions.avg)(filter), fieldPath);\n }\n\n /**\n * Aggregates the events down to their maximum value\n *\n * @param {string} fieldPath Column to find the max of. A deep value can be referenced with a\n * string.like.this. If not supplied the `value` column will be\n * aggregated.\n * @param {function} filter Optional filter function used to clean data before aggregating\n *\n * @return {number} The max value for the field\n */\n\n }, {\n key: \"max\",\n value: function max(fieldPath, filter) {\n return this.aggregate((0, _functions.max)(filter), fieldPath);\n }\n\n /**\n * Aggregates the events down to their minimum value\n *\n * @param {string} fieldPath Column to find the min of. A deep value can be referenced with a\n * string.like.this. If not supplied the `value` column will be\n * aggregated.\n * @param {function} filter Optional filter function used to clean data before aggregating\n *\n * @return {number} The min value for the field\n */\n\n }, {\n key: \"min\",\n value: function min(fieldPath, filter) {\n return this.aggregate((0, _functions.min)(filter), fieldPath);\n }\n\n /**\n * Aggregates the events down to their mean (same as avg)\n *\n * @param {string} fieldPath Column to find the mean of. A deep value can be referenced with a\n * string.like.this. If not supplied the `value` column will be\n * aggregated.\n * @param {function} filter Optional filter function used to clean data before aggregating\n *\n * @return {number} The mean\n */\n\n }, {\n key: \"mean\",\n value: function mean(fieldPath, filter) {\n return this.avg(fieldPath, filter);\n }\n\n /**\n * Aggregates the events down to their minimum value\n *\n * @param {string} fieldPath Column to find the median of. A deep value can be referenced with a\n * string.like.this. If not supplied the `value` column will be\n * aggregated.\n * @param {function} filter Optional filter function used to clean data before aggregating\n *\n * @return {number} The median value\n */\n\n }, {\n key: \"median\",\n value: function median(fieldPath, filter) {\n return this.aggregate((0, _functions.median)(filter), fieldPath);\n }\n\n /**\n * Aggregates the events down to their stdev\n *\n * @param {string} fieldPath Column to find the stdev of. A deep value can be referenced with a\n * string.like.this. If not supplied the `value` column will be\n * aggregated.\n * @param {function} filter Optional filter function used to clean data before aggregating\n *\n * @return {number} The resulting stdev value\n */\n\n }, {\n key: \"stdev\",\n value: function stdev(fieldPath, filter) {\n return this.aggregate((0, _functions.stdev)(filter), fieldPath);\n }\n\n /**\n * Gets percentile q within the Collection. This works the same way as numpy.\n *\n * @param {integer} q The percentile (should be between 0 and 100)\n *\n * @param {string} fieldPath Column to find the percentile of. A deep value can be referenced with a\n * string.like.this. If not supplied the `value` column will be\n * aggregated.\n *\n * @param {string} interp Specifies the interpolation method\n * to use when the desired quantile lies between\n * two data points. Options are:\n * options are:\n * * linear: i + (j - i) * fraction, where fraction is the fractional part of the index surrounded by i and j.\n * * lower: i.\n * * higher: j.\n * * nearest: i or j whichever is nearest.\n * * midpoint: (i + j) / 2.\n * @param {function} filter Optional filter function used to clean data before aggregating\n *\n * @return {number} The percentile\n */\n\n }, {\n key: \"percentile\",\n value: function percentile(q, fieldPath) {\n var interp = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"linear\";\n var filter = arguments[3];\n\n return this.aggregate((0, _functions.percentile)(q, interp, filter), fieldPath);\n }\n\n /**\n * Aggregates the events down using a user defined function to\n * do the reduction.\n *\n * @param {function} func User defined reduction function. Will be\n * passed a list of values. Should return a\n * singe value.\n *\n * @param {String} fieldPath The field to aggregate over\n *\n * @return {number} The resulting value\n */\n\n }, {\n key: \"aggregate\",\n value: function aggregate(func, fieldPath) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var fpath = void 0;\n if (!_underscore2.default.isFunction(func)) {\n throw new Error(\"First arg to aggregate() must be a function\");\n }\n\n if (_underscore2.default.isString(fieldPath)) {\n fpath = fieldPath;\n } else if (_underscore2.default.isArray(fieldPath)) {\n // if the ['array', 'style', 'fieldpath'] is being used,\n // we need to turn it back into a string since we are\n // using a subset of the the map() functionality on\n // a single column\n fpath = fieldPath.split(\".\");\n } else if (_underscore2.default.isUndefined(fieldPath)) {\n // map() needs a field name to use as a key. Normally\n // this case is normally handled by _field_spec_to_array()\n // inside get(). Also, if map(func, field_spec=None) then\n // it will map all the columns.\n fpath = \"value\";\n } else {\n throw new Error(\"Collection.aggregate() takes a string/array fieldPath\");\n }\n\n var result = _event2.default.mapReduce(this.eventListAsArray(), fpath, func, options);\n return result[fpath];\n }\n\n /**\n * Gets n quantiles within the Collection. This works the same way as numpy.\n *\n * @param {integer} n The number of quantiles to divide the\n * Collection into.\n *\n * @param {string} column The field to return as the quantile\n *\n * @param {string} interp Specifies the interpolation method\n * to use when the desired quantile lies between\n * two data points. Options are:\n * options are:\n * * linear: i + (j - i) * fraction, where fraction is the fractional part of the index surrounded by i and j.\n * * lower: i.\n * * higher: j.\n * * nearest: i or j whichever is nearest.\n * * midpoint: (i + j) / 2.\n *\n * @return {array} An array of n quantiles\n */\n\n }, {\n key: \"quantile\",\n value: function quantile(n) {\n var column = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"value\";\n var interp = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"linear\";\n\n var results = [];\n var sorted = this.sort(column);\n var subsets = 1.0 / n;\n\n if (n > this.length) {\n throw new Error(\"Subset n is greater than the Collection length\");\n }\n\n for (var i = subsets; i < 1; i += subsets) {\n var index = Math.floor((sorted.size() - 1) * i);\n if (index < sorted.size() - 1) {\n var fraction = (sorted.size() - 1) * i - index;\n var v0 = sorted.at(index).get(column);\n var v1 = sorted.at(index + 1).get(column);\n var v = void 0;\n\n if (interp === \"lower\" || fraction === 0) {\n v = v0;\n } else if (interp === \"linear\") {\n v = v0 + (v1 - v0) * fraction;\n } else if (interp === \"higher\") {\n v = v1;\n } else if (interp === \"nearest\") {\n v = fraction < 0.5 ? v0 : v1;\n } else if (interp === \"midpoint\") {\n v = (v0 + v1) / 2;\n }\n\n results.push(v);\n }\n }\n return results;\n }\n\n /**\n * Returns true if all events in this Collection are in chronological order.\n * @return {Boolean} True if all events are in order, oldest events to newest.\n */\n\n }, {\n key: \"isChronological\",\n value: function isChronological() {\n var result = true;\n var t = void 0;\n var _iteratorNormalCompletion9 = true;\n var _didIteratorError9 = false;\n var _iteratorError9 = undefined;\n\n try {\n for (var _iterator9 = (0, _getIterator3.default)(this.events()), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {\n var e = _step9.value;\n\n if (!t) {\n t = e.timestamp().getTime();\n } else {\n if (e.timestamp() < t) {\n result = false;\n }\n t = e.timestamp();\n }\n }\n } catch (err) {\n _didIteratorError9 = true;\n _iteratorError9 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion9 && _iterator9.return) {\n _iterator9.return();\n }\n } finally {\n if (_didIteratorError9) {\n throw _iteratorError9;\n }\n }\n }\n\n return result;\n }\n\n /**\n * STATIC\n */\n /**\n * Static function to compare two collections to each other. If the collections\n * are of the same instance as each other then equals will return true.\n *\n * @param {Collection} collection1\n * @param {Collection} collection2\n *\n * @return {bool} result\n */\n\n }], [{\n key: \"equal\",\n value: function equal(collection1, collection2) {\n return collection1._type === collection2._type && collection1._eventList === collection2._eventList;\n }\n\n /**\n * Static function to compare two collections to each other. If the collections\n * are of the same value as each other then equals will return true.\n *\n * @param {Collection} collection1\n * @param {Collection} collection2\n *\n * @return {bool} result\n */\n\n }, {\n key: \"is\",\n value: function is(collection1, collection2) {\n return collection1._type === collection2._type && _immutable2.default.is(collection1._eventList, collection2._eventList);\n }\n }]);\n return Collection;\n}(_bounded2.default); /*\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexports.default = Collection;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/collection.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/collector.js": +/*!**************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/collector.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = __webpack_require__(/*! babel-runtime/core-js/object/keys */ \"./node_modules/babel-runtime/core-js/object/keys.js\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _collection = __webpack_require__(/*! ./collection */ \"./node_modules/pondjs/lib/lib/collection.js\");\n\nvar _collection2 = _interopRequireDefault(_collection);\n\nvar _index = __webpack_require__(/*! ./index */ \"./node_modules/pondjs/lib/lib/index.js\");\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A Collector is used to accumulate events into multiple collections,\n * based on potentially many strategies. In this current implementation\n * a collection is partitioned based on the window that it falls in\n * and the group it is part of.\n *\n * Collections are emitted from this class to the supplied onTrigger\n * callback.\n */\nvar Collector = function () {\n function Collector(options, onTrigger) {\n (0, _classCallCheck3.default)(this, Collector);\n var windowType = options.windowType,\n windowDuration = options.windowDuration,\n groupBy = options.groupBy,\n emitOn = options.emitOn;\n\n\n this._groupBy = groupBy;\n this._emitOn = emitOn;\n this._windowType = windowType;\n this._windowDuration = windowDuration;\n\n // Callback for trigger\n this._onTrigger = onTrigger;\n\n // Maintained collections\n this._collections = {};\n }\n\n (0, _createClass3.default)(Collector, [{\n key: \"flushCollections\",\n value: function flushCollections() {\n this.emitCollections(this._collections);\n }\n }, {\n key: \"emitCollections\",\n value: function emitCollections(collections) {\n var _this = this;\n\n if (this._onTrigger) {\n _underscore2.default.each(collections, function (c) {\n var collection = c.collection,\n windowKey = c.windowKey,\n groupByKey = c.groupByKey;\n\n _this._onTrigger && _this._onTrigger(collection, windowKey, groupByKey);\n });\n }\n }\n }, {\n key: \"addEvent\",\n value: function addEvent(event) {\n var _this2 = this;\n\n var timestamp = event.timestamp();\n\n //\n // Window key\n //\n var windowType = this._windowType;\n var windowKey = void 0;\n if (windowType === \"fixed\") {\n windowKey = _index2.default.getIndexString(this._windowDuration, timestamp);\n } else if (windowType === \"daily\") {\n windowKey = _index2.default.getDailyIndexString(timestamp);\n } else if (windowType === \"monthly\") {\n windowKey = _index2.default.getMonthlyIndexString(timestamp);\n } else if (windowType === \"yearly\") {\n windowKey = _index2.default.getYearlyIndexString(timestamp);\n } else {\n windowKey = windowType;\n }\n\n //\n // Groupby key\n //\n var groupByKey = this._groupBy(event);\n\n //\n // Collection key\n //\n var collectionKey = groupByKey ? windowKey + \"::\" + groupByKey : windowKey;\n\n var discard = false;\n if (!_underscore2.default.has(this._collections, collectionKey)) {\n this._collections[collectionKey] = {\n windowKey: windowKey,\n groupByKey: groupByKey,\n collection: new _collection2.default()\n };\n discard = true;\n }\n this._collections[collectionKey].collection = this._collections[collectionKey].collection.addEvent(event);\n\n //\n // If fixed windows, collect together old collections that\n // will be discarded\n //\n var discards = {};\n if (discard && windowType === \"fixed\") {\n _underscore2.default.each(this._collections, function (c, k) {\n if (windowKey !== c.windowKey) {\n discards[k] = c;\n }\n });\n }\n\n //\n // Emit\n //\n var emitOn = this._emitOn;\n if (emitOn === \"eachEvent\") {\n this.emitCollections(this._collections);\n } else if (emitOn === \"discard\") {\n this.emitCollections(discards);\n _underscore2.default.each((0, _keys2.default)(discards), function (k) {\n delete _this2._collections[k];\n });\n } else if (emitOn === \"flush\") {\n // pass\n } else {\n throw new Error(\"Unknown emit type supplied to Collector\");\n }\n }\n }]);\n return Collector;\n}(); /*\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexports.default = Collector;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/collector.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/event.js": +/*!**********************************************!*\ + !*** ./node_modules/pondjs/lib/lib/event.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(/*! babel-runtime/core-js/json/stringify */ \"./node_modules/babel-runtime/core-js/json/stringify.js\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _util = __webpack_require__(/*! ./base/util */ \"./node_modules/pondjs/lib/lib/base/util.js\");\n\nvar _util2 = _interopRequireDefault(_util);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\nThere are three types of Events in Pond, while this class provides the base class\nfor them all:\n\n1. *TimeEvent* - a generic event which associates a timestamp with some data\n2. *TimeRangeEvent* - associates a TimeRange with some data\n3. *IndexedEvent* - associates a time range specified as an Index\n\nEvent contains several static methods that may be useful, though in general\nare used by the Collection and TimeSeries classes. So, if you already have a\nTimeSeries or Collection you may want to examine the API there to see if you\ncan do what you want to do.\n*/\nvar Event = function () {\n function Event() {\n (0, _classCallCheck3.default)(this, Event);\n\n if (this.constructor.name === \"Event\") {\n throw new TypeError(\"Cannot construct Event instances directly\");\n }\n }\n\n /**\n * Express the event as a string\n */\n\n\n (0, _createClass3.default)(Event, [{\n key: \"toString\",\n value: function toString() {\n if (this.toJSON === undefined) {\n throw new TypeError(\"Must implement toJSON()\");\n }\n return (0, _stringify2.default)(this.toJSON());\n }\n\n /**\n * Returns the type of this class instance\n */\n\n }, {\n key: \"type\",\n value: function type() {\n return this.constructor;\n }\n\n /**\n * Sets the data of the event and returns a new event of the\n * same type.\n *\n * @param {object} data New data for the event\n * @return {object} A new event\n */\n\n }, {\n key: \"setData\",\n value: function setData(data) {\n var eventType = this.type();\n var d = this._d.set(\"data\", _util2.default.dataFromArg(data));\n return new eventType(d);\n }\n\n /**\n * Access the event data in its native form. The result\n * will be an Immutable.Map.\n *\n * @return {Immutable.Map} Data for the Event\n */\n\n }, {\n key: \"data\",\n value: function data() {\n return this._d.get(\"data\");\n }\n\n /**\n * Get specific data out of the event. The data will be converted\n * to a JS Object. You can use a `fieldSpec` to address deep data.\n * A `fieldSpec` could be \"a.b\"\n */\n\n }, {\n key: \"get\",\n value: function get() {\n var fieldSpec = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [\"value\"];\n\n var v = void 0;\n if (_underscore2.default.isArray(fieldSpec)) {\n v = this.data().getIn(fieldSpec);\n } else if (_underscore2.default.isString(fieldSpec)) {\n var searchKeyPath = fieldSpec.split(\".\");\n v = this.data().getIn(searchKeyPath);\n }\n\n if (v instanceof _immutable2.default.Map || v instanceof _immutable2.default.List) {\n return v.toJS();\n }\n return v;\n }\n\n /**\n * Alias for `get()`.\n */\n\n }, {\n key: \"value\",\n value: function value() {\n var fieldSpec = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [\"value\"];\n\n return this.get(fieldSpec);\n }\n\n /**\n * Collapses this event's columns, represented by the fieldSpecList\n * into a single column. The collapsing itself is done with the reducer\n * function. Optionally the collapsed column could be appended to the\n * existing columns, or replace them (the default).\n */\n\n }, {\n key: \"collapse\",\n value: function collapse(fieldSpecList, name, reducer) {\n var _this = this;\n\n var append = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n var data = append ? this.data().toJS() : {};\n var d = fieldSpecList.map(function (fs) {\n return _this.get(fs);\n });\n data[name] = reducer(d);\n return this.setData(data);\n }\n\n //\n // Static Event functions\n //\n /**\n * Do the two supplied events contain the same data,\n * even if they are not the same instance.\n * @param {Event} event1 First event to compare\n * @param {Event} event2 Second event to compare\n * @return {Boolean} Result\n */\n\n }], [{\n key: \"is\",\n value: function is(event1, event2) {\n return event1.key() === event2.key() && _immutable2.default.is(event1._d.get(\"data\"), event2._d.get(\"data\"));\n }\n\n /**\n * Returns if the two supplied events are duplicates\n * of each other. By default, duplicated means that the\n * timestamps are the same. This is the case with incoming events\n * where the second event is either known to be the same (but\n * duplicate) of the first, or supersedes the first. You can\n * also pass in false for ignoreValues and get a full\n * compare.\n *\n * @return {Boolean} The result of the compare\n */\n\n }, {\n key: \"isDuplicate\",\n value: function isDuplicate(event1, event2) {\n var ignoreValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (ignoreValues) {\n return event1.type() === event2.type() && event1.key() === event2.key();\n } else {\n return event1.type() === event2.type() && Event.is(event1, event2);\n }\n }\n\n /**\n * The same as Event.value() only it will return false if the\n * value is either undefined, NaN or Null.\n *\n * @param {Event} event The Event to check\n * @param {string|array} The field to check\n */\n\n }, {\n key: \"isValidValue\",\n value: function isValidValue(event, fieldPath) {\n var v = event.value(fieldPath);\n var invalid = _underscore2.default.isUndefined(v) || _underscore2.default.isNaN(v) || _underscore2.default.isNull(v);\n return !invalid;\n }\n\n /**\n * Function to select specific fields of an event using\n * a fieldPath and return a new event with just those fields.\n *\n * The fieldPath currently can be:\n * * A single field name\n * * An array of field names\n *\n * The function returns a new event.\n */\n\n }, {\n key: \"selector\",\n value: function selector(event, fieldPath) {\n var data = {};\n if (_underscore2.default.isString(fieldPath)) {\n var fieldName = fieldPath;\n var value = event.get(fieldName);\n data[fieldName] = value;\n } else if (_underscore2.default.isArray(fieldPath)) {\n _underscore2.default.each(fieldPath, function (fieldName) {\n var value = event.get(fieldName);\n data[fieldName] = value;\n });\n } else {\n return event;\n }\n return event.setData(data);\n }\n\n /**\n * Merges multiple `events` together into a new array of events, one\n * for each time/index/timerange of the source events. Merging is done on\n * the data of each event. Values from later events in the list overwrite\n * early values if fields conflict.\n *\n * Common use cases:\n * - append events of different timestamps\n * - merge in events with one field to events with another\n * - merge in events that supersede the previous events\n *\n * See also: TimeSeries.timeSeriesListMerge()\n *\n * @param {Immutable.List|array} events Array or Immutable.List of events\n *\n * @return {Immutable.List|array} Array or Immutable.List of events\n */\n\n }, {\n key: \"merge\",\n value: function merge(events, deep) {\n if (events instanceof _immutable2.default.List && events.size === 0 || _underscore2.default.isArray(events) && events.length === 0) {\n return [];\n }\n\n //\n // Group by the time (the key), as well as keeping track\n // of the event types so we can check that for a given key\n // they are homogeneous and also so we can build an output\n // event for this key\n //\n var eventMap = {};\n var typeMap = {};\n\n events.forEach(function (e) {\n var type = e.type();\n var key = e.key();\n if (!_underscore2.default.has(eventMap, key)) {\n eventMap[key] = [];\n }\n eventMap[key].push(e);\n\n if (!_underscore2.default.has(typeMap, key)) {\n typeMap[key] = type;\n } else {\n if (typeMap[key] !== type) {\n throw new Error(\"Events for time \" + key + \" are not homogeneous\");\n }\n }\n });\n\n //\n // For each key we'll build a new event of the same type as the source\n // events. Here we loop through all the events for that key, then for each field\n // we are considering, we get all the values and reduce them (sum, avg, etc).\n //\n var outEvents = [];\n _underscore2.default.each(eventMap, function (events, key) {\n var data = _immutable2.default.Map();\n events.forEach(function (event) {\n data = deep ? data.mergeDeep(event.data()) : data.merge(event.data());\n });\n var type = typeMap[key];\n outEvents.push(new type(key, data));\n });\n\n // This function outputs the same as its input. If we are\n // passed an Immutable.List of events, the user will get\n // an Immutable.List back. If an array, a simple JS array will\n // be returned.\n if (events instanceof _immutable2.default.List) {\n return _immutable2.default.List(outEvents);\n }\n return outEvents;\n }\n\n /**\n * Combines multiple `events` together into a new array of events, one\n * for each time/index/timerange of the source events. The list of\n * events may be specified as an array or `Immutable.List`. Combining acts\n * on the fields specified in the `fieldSpec` and uses the reducer\n * function to take the multiple values and reducer them down to one.\n *\n * The return result will be an of the same form as the input. If you\n * pass in an array of events, you will get an array of events back. If\n * you pass an `Immutable.List` of events then you will get an\n * `Immutable.List` of events back.\n *\n * This is the general version of `Event.sum()` and `Event.avg()`. If those\n * common use cases are what you want, just use those functions. If you\n * want to specify your own reducer you can use this function.\n *\n * See also: `TimeSeries.timeSeriesListSum()`\n *\n * @param {Immutable.List|array} events Array of event objects\n * @param {string|array} fieldSpec Column or columns to look up. If you need\n * to retrieve multiple deep nested values that\n * ['can.be', 'done.with', 'this.notation'].\n * A single deep value with a string.like.this.\n * If not supplied, all columns will be operated on.\n * @param {function} reducer Reducer function to apply to column data.\n *\n * @return {Immutable.List|array} An Immutable.List or array of events\n */\n\n }, {\n key: \"combine\",\n value: function combine(events, reducer, fieldSpec) {\n if (events instanceof _immutable2.default.List && events.size === 0 || _underscore2.default.isArray(events) && events.length === 0) {\n return [];\n }\n\n var fieldNames = void 0;\n if (_underscore2.default.isString(fieldSpec)) {\n fieldNames = [fieldSpec];\n } else if (_underscore2.default.isArray(fieldSpec)) {\n fieldNames = fieldSpec;\n }\n\n var eventMap = {};\n var typeMap = {};\n\n //\n // Group by the time (the key), as well as keeping track\n // of the event types so we can check that for a given key\n // they are homogeneous and also so we can build an output\n // event for this key\n //\n events.forEach(function (e) {\n var type = e.type();\n var key = e.key();\n if (!_underscore2.default.has(eventMap, key)) {\n eventMap[key] = [];\n }\n eventMap[key].push(e);\n if (!_underscore2.default.has(typeMap, key)) {\n typeMap[key] = type;\n } else {\n if (typeMap[key] !== type) {\n throw new Error(\"Events for time \" + key + \" are not homogeneous\");\n }\n }\n });\n\n //\n // For each key we'll build a new event of the same type as the source\n // events. Here we loop through all the events for that key, then for each field\n // we are considering, we get all the values and reduce them (sum, avg, etc).\n //\n var outEvents = [];\n _underscore2.default.each(eventMap, function (events, key) {\n var mapEvent = {};\n events.forEach(function (event) {\n var fields = fieldNames;\n if (!fieldNames) {\n fields = _underscore2.default.map(event.data().toJSON(), function (value, fieldName) {\n return fieldName;\n });\n }\n fields.forEach(function (fieldName) {\n if (!mapEvent[fieldName]) {\n mapEvent[fieldName] = [];\n }\n mapEvent[fieldName].push(event.data().get(fieldName));\n });\n });\n\n var data = {};\n _underscore2.default.map(mapEvent, function (values, fieldName) {\n data[fieldName] = reducer(values);\n });\n\n var type = typeMap[key];\n outEvents.push(new type(key, data));\n });\n\n // This function outputs the same as its input. If we are\n // passed an Immutable.List of events, the user will get\n // an Immutable.List back. If an array, a simple JS array will\n // be returned.\n if (events instanceof _immutable2.default.List) {\n return _immutable2.default.List(outEvents);\n }\n return outEvents;\n }\n\n /**\n * Returns a function that will take a list of events and combine them\n * together using the fieldSpec and reducer function provided. This is\n * used as an event reducer for merging multiple TimeSeries together\n * with `timeSeriesListReduce()`.\n */\n\n }, {\n key: \"combiner\",\n value: function combiner(fieldSpec, reducer) {\n return function (events) {\n return Event.combine(events, reducer, fieldSpec);\n };\n }\n\n /**\n * Returns a function that will take a list of events and merge them\n * together using the fieldSpec provided. This is used as a reducer for\n * merging multiple TimeSeries together with `timeSeriesListMerge()`.\n */\n\n }, {\n key: \"merger\",\n value: function merger(fieldSpec) {\n return function (events) {\n return Event.merge(events, fieldSpec);\n };\n }\n\n /**\n * Maps a list of events according to the fieldSpec\n * passed in. The spec maybe a single field name, a\n * list of field names, or a function that takes an\n * event and returns a key/value pair.\n *\n * @example\n * ````\n * in out\n * 3am 1 2\n * 4am 3 4\n *\n * Mapper result: { in: [1, 3], out: [2, 4]}\n * ```\n * @param {string|array} fieldSpec Column or columns to look up. If you need\n * to retrieve multiple deep nested values that\n * ['can.be', 'done.with', 'this.notation'].\n * A single deep value with a string.like.this.\n * If not supplied, all columns will be operated on.\n * If field_spec is a function, the function should\n * return a map. The keys will be come the\n * \"column names\" that will be used in the map that\n * is returned.\n */\n\n }, {\n key: \"map\",\n value: function map(evts) {\n var multiFieldSpec = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"value\";\n\n var result = {};\n\n var events = void 0;\n if (evts instanceof _immutable2.default.List) {\n events = evts;\n } else if (_underscore2.default.isArray(evts)) {\n events = new _immutable2.default.List(evts);\n } else {\n throw new Error(\"Unknown event list type. Should be an array or Immutable List\");\n }\n\n if (_underscore2.default.isString(multiFieldSpec)) {\n var fieldSpec = multiFieldSpec;\n events.forEach(function (event) {\n if (!_underscore2.default.has(result, fieldSpec)) {\n result[fieldSpec] = [];\n }\n var value = event.get(fieldSpec);\n\n result[fieldSpec].push(value);\n });\n } else if (_underscore2.default.isArray(multiFieldSpec)) {\n _underscore2.default.each(multiFieldSpec, function (fieldSpec) {\n events.forEach(function (event) {\n if (!_underscore2.default.has(result, fieldSpec)) {\n result[fieldSpec] = [];\n }\n result[fieldSpec].push(event.get(fieldSpec));\n });\n });\n } else if (_underscore2.default.isFunction(multiFieldSpec)) {\n events.forEach(function (event) {\n var pair = multiFieldSpec(event);\n _underscore2.default.each(pair, function (value, key) {\n if (!_underscore2.default.has(result, key)) {\n result[key] = [];\n }\n result[key].push(value);\n });\n });\n } else {\n events.forEach(function (event) {\n _underscore2.default.each(event.data().toJSON(), function (value, key) {\n if (!_underscore2.default.has(result, key)) {\n result[key] = [];\n }\n result[key].push(value);\n });\n });\n }\n return result;\n }\n\n /**\n * Takes a list of events and a reducer function and returns\n * a new Event with the result, for each column. The reducer is\n * of the form:\n * ```\n * function sum(valueList) {\n * return calcValue;\n * }\n * ```\n * @param {map} mapped A map, as produced from map()\n * @param {function} reducer The reducer function\n */\n\n }, {\n key: \"reduce\",\n value: function reduce(mapped, reducer) {\n var result = {};\n _underscore2.default.each(mapped, function (valueList, key) {\n result[key] = reducer(valueList);\n });\n return result;\n }\n /*\n * @param {array} events Array of event objects\n * @param {string|array} fieldSpec Column or columns to look up. If you need\n * to retrieve multiple deep nested values that\n * ['can.be', 'done.with', 'this.notation'].\n * A single deep value with a string.like.this.\n * If not supplied, all columns will be operated on.\n * @param {function} reducer The reducer function\n */\n\n }, {\n key: \"mapReduce\",\n value: function mapReduce(events, multiFieldSpec, reducer) {\n return Event.reduce(this.map(events, multiFieldSpec), reducer);\n }\n }]);\n return Event;\n}(); /*\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexports.default = Event;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/event.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/index.js": +/*!**********************************************!*\ + !*** ./node_modules/pondjs/lib/lib/index.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _util = __webpack_require__(/*! ./base/util */ \"./node_modules/pondjs/lib/lib/base/util.js\");\n\nvar _util2 = _interopRequireDefault(_util);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\nAn index is simply a string that represents a fixed range of time. There are two basic types:\n * *Multiplier index* - the number of some unit of time (hours, days etc) since the UNIX epoch.\n * *Calendar index* - The second represents a calendar range, such as Oct 2014.\n\nFor the first type, a multiplier index, an example might be:\n\n```text\n 1d-12355 // 30th Oct 2003 (GMT), the 12355th day since the UNIX epoch\n```\n\nYou can also use seconds (e.g. 30s), minutes (e.g. 5m), hours (e.g. 1h) or days (e.g. 7d).\n\nHere are several examples of a calendar index:\n\n```text\n 2003-10-30 // 30th Oct 2003\n 2014-09 // Sept 2014\n 2015 // All of the year 2015\n```\n\nAn Index is a nice representation of certain types of time intervals because it can be cached with its string representation as a key. A specific chunk of time, and associated data can be looked up based on that string. It also allows us to represent things like months, which have variable length.\n\nAn Index is also useful when collecting into specific time ranges, for example generating all the 5 min (\"5m\") maximum rollups within a specific day (\"1d\"). See the processing section within these docs.\n\n */\nvar Index = function () {\n function Index(s) {\n var utc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n (0, _classCallCheck3.default)(this, Index);\n\n this._utc = utc;\n this._string = s;\n this._timerange = _util2.default.rangeFromIndexString(s, this._utc);\n }\n\n /**\n * Returns the Index as JSON, which will just be its string\n * representation\n */\n\n\n (0, _createClass3.default)(Index, [{\n key: \"toJSON\",\n value: function toJSON() {\n return this._string;\n }\n\n /**\n * Simply returns the Index as its string\n */\n\n }, {\n key: \"toString\",\n value: function toString() {\n return this._string;\n }\n\n /**\n * for the calendar range style Indexes, this lets you return\n * that calendar range as a human readable format, e.g. \"June, 2014\".\n * The format specified is a Moment.format.\n */\n\n }, {\n key: \"toNiceString\",\n value: function toNiceString(format) {\n return _util2.default.niceIndexString(this._string, format);\n }\n\n /**\n * Alias for toString()\n */\n\n }, {\n key: \"asString\",\n value: function asString() {\n return this.toString();\n }\n\n /**\n * Returns the Index as a TimeRange\n */\n\n }, {\n key: \"asTimerange\",\n value: function asTimerange() {\n return this._timerange;\n }\n\n /**\n * Returns the start date of the Index\n */\n\n }, {\n key: \"begin\",\n value: function begin() {\n return this._timerange.begin();\n }\n\n /**\n * Returns the end date of the Index\n */\n\n }, {\n key: \"end\",\n value: function end() {\n return this._timerange.end();\n }\n\n /**\n * Return the index string given an index prefix and a datetime object.\n */\n\n }], [{\n key: \"getIndexString\",\n value: function getIndexString(win, date) {\n var pos = _util2.default.windowPositionFromDate(win, date);\n return win + \"-\" + pos;\n }\n\n /**\n * Given the time range, return a list of strings of index values every tick.\n */\n\n }, {\n key: \"getIndexStringList\",\n value: function getIndexStringList(win, timerange) {\n var pos1 = _util2.default.windowPositionFromDate(win, timerange.begin());\n var pos2 = _util2.default.windowPositionFromDate(win, timerange.end());\n var indexList = [];\n if (pos1 <= pos2) {\n for (var pos = pos1; pos <= pos2; pos++) {\n indexList.push(win + \"-\" + pos);\n }\n }\n return indexList;\n }\n\n /**\n * Generate an index string with day granularity.\n */\n\n }, {\n key: \"getDailyIndexString\",\n value: function getDailyIndexString(date) {\n var utc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var day = _util2.default.leftPad(utc ? date.getUTCDate() : date.getDate());\n var month = _util2.default.leftPad(utc ? date.getUTCMonth() + 1 : date.getMonth() + 1);\n var year = utc ? date.getUTCFullYear() : date.getFullYear();\n return year + \"-\" + month + \"-\" + day;\n }\n\n /**\n * Generate an index string with month granularity.\n */\n\n }, {\n key: \"getMonthlyIndexString\",\n value: function getMonthlyIndexString(date) {\n var utc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var month = _util2.default.leftPad(utc ? date.getUTCMonth() + 1 : date.getMonth() + 1);\n var year = utc ? date.getUTCFullYear() : date.getFullYear();\n return year + \"-\" + month;\n }\n\n /**\n * Generate an index string with month granularity.\n */\n\n }, {\n key: \"getYearlyIndexString\",\n value: function getYearlyIndexString(date) {\n var utc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var year = utc ? date.getUTCFullYear() : date.getFullYear();\n return \"\" + year;\n }\n }]);\n return Index;\n}(); /*\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexports.default = Index;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/index.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/indexedevent.js": +/*!*****************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/indexedevent.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = __webpack_require__(/*! babel-runtime/helpers/toConsumableArray */ \"./node_modules/babel-runtime/helpers/toConsumableArray.js\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _event = __webpack_require__(/*! ./event */ \"./node_modules/pondjs/lib/lib/event.js\");\n\nvar _event2 = _interopRequireDefault(_event);\n\nvar _util = __webpack_require__(/*! ./base/util */ \"./node_modules/pondjs/lib/lib/base/util.js\");\n\nvar _util2 = _interopRequireDefault(_util);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * An `IndexedEvent` uses an `Index` to specify a timerange over which the event\n * occurs and maps that to a data object representing some measurement or metric\n * during that time range.\n *\n * You can supply the index as a string or as an Index object.\n *\n * Example Indexes are:\n * * 1d-1565 is the entire duration of the 1565th day since the UNIX epoch\n * * 2014-03 is the entire duration of march in 2014\n *\n * The range, as expressed by the `Index`, is provided by the convenience method\n * `range()`, which returns a `TimeRange` instance. Alternatively the begin\n * and end times represented by the Index can be found with `begin()`\n * and `end()` respectively.\n *\n * The data is also specified during construction, and is generally expected to\n * be an object or an Immutable Map. If an object is provided it will be stored\n * internally as an Immutable Map. If the data provided is some other type then\n * it will be equivalent to supplying an object of `{value: data}`. Data may be\n * undefined.\n *\n * The get the data out of an IndexedEvent instance use `data()`. It will return\n * an Immutable.Map.\n */\n/*\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar IndexedEvent = function (_Event) {\n (0, _inherits3.default)(IndexedEvent, _Event);\n\n /**\n * The creation of an IndexedEvent is done by combining two parts:\n * the Index and the data.\n *\n * To construct you specify an Index, along with the data.\n *\n * The index may be an Index, or a string.\n *\n * To specify the data you can supply either:\n * - a Javascript object containing key values pairs\n * - an Immutable.Map, or\n * - a simple type such as an integer. In the case of the simple type\n * this is a shorthand for supplying {\"value\": v}.\n */\n function IndexedEvent(arg1, arg2, arg3) {\n (0, _classCallCheck3.default)(this, IndexedEvent);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (IndexedEvent.__proto__ || (0, _getPrototypeOf2.default)(IndexedEvent)).call(this));\n\n if (arg1 instanceof IndexedEvent) {\n var other = arg1;\n _this._d = other._d;\n return (0, _possibleConstructorReturn3.default)(_this);\n } else if (arg1 instanceof _immutable2.default.Map) {\n _this._d = arg1;\n return (0, _possibleConstructorReturn3.default)(_this);\n }\n var index = _util2.default.indexFromArgs(arg1, arg3);\n var data = _util2.default.dataFromArg(arg2);\n _this._d = new _immutable2.default.Map({ index: index, data: data });\n return _this;\n }\n\n /**\n * Returns the timestamp (as ms since the epoch)\n */\n\n\n (0, _createClass3.default)(IndexedEvent, [{\n key: \"key\",\n value: function key() {\n return this.indexAsString();\n }\n\n /**\n * For Avro serialization, this defines the event's key (the Index)\n * as a simple string\n */\n\n }, {\n key: \"toJSON\",\n\n\n /**\n * Express the IndexedEvent as a JSON object\n */\n value: function toJSON() {\n return { index: this.indexAsString(), data: this.data().toJSON() };\n }\n\n /**\n * Returns a flat array starting with the index, followed by the values.\n */\n\n }, {\n key: \"toPoint\",\n value: function toPoint() {\n return [this.indexAsString()].concat((0, _toConsumableArray3.default)(_underscore2.default.values(this.data().toJSON())));\n }\n\n /**\n * Returns the Index associated with the data in this Event\n * @return {Index} The Index\n */\n\n }, {\n key: \"index\",\n value: function index() {\n return this._d.get(\"index\");\n }\n\n /**\n * Returns the Index as a string, same as event.index().toString()\n * @return {string} The Index\n */\n\n }, {\n key: \"indexAsString\",\n value: function indexAsString() {\n return this.index().asString();\n }\n\n /**\n * The TimeRange of this data, in UTC, as a string.\n * @return {string} TimeRange of this data.\n */\n\n }, {\n key: \"timerangeAsUTCString\",\n value: function timerangeAsUTCString() {\n return this.timerange().toUTCString();\n }\n\n /**\n * The TimeRange of this data, in Local time, as a string.\n * @return {string} TimeRange of this data.\n */\n\n }, {\n key: \"timerangeAsLocalString\",\n value: function timerangeAsLocalString() {\n return this.timerange().toLocalString();\n }\n\n /**\n * The TimeRange of this data\n * @return {TimeRange} TimeRange of this data.\n */\n\n }, {\n key: \"timerange\",\n value: function timerange() {\n return this.index().asTimerange();\n }\n\n /**\n * The begin time of this Event\n * @return {Data} Begin time\n */\n\n }, {\n key: \"begin\",\n value: function begin() {\n return this.timerange().begin();\n }\n\n /**\n * The end time of this Event\n * @return {Data} End time\n */\n\n }, {\n key: \"end\",\n value: function end() {\n return this.timerange().end();\n }\n\n /**\n * Alias for the begin() time.\n * @return {Data} Time representing this Event\n */\n\n }, {\n key: \"timestamp\",\n value: function timestamp() {\n return this.begin();\n }\n }], [{\n key: \"keySchema\",\n value: function keySchema() {\n return { name: \"index\", type: \"string\" };\n }\n }]);\n return IndexedEvent;\n}(_event2.default);\n\nexports.default = IndexedEvent;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/indexedevent.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/io/bounded.js": +/*!***************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/io/bounded.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _pipelinein = __webpack_require__(/*! ./pipelinein */ \"./node_modules/pondjs/lib/lib/io/pipelinein.js\");\n\nvar _pipelinein2 = _interopRequireDefault(_pipelinein);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Bounded = function (_PipelineIn) {\n (0, _inherits3.default)(Bounded, _PipelineIn);\n\n function Bounded() {\n (0, _classCallCheck3.default)(this, Bounded);\n return (0, _possibleConstructorReturn3.default)(this, (Bounded.__proto__ || (0, _getPrototypeOf2.default)(Bounded)).call(this));\n }\n\n (0, _createClass3.default)(Bounded, [{\n key: \"start\",\n value: function start() {\n throw new Error(\"start() not supported on bounded source.\");\n }\n }, {\n key: \"stop\",\n value: function stop() {\n throw new Error(\"stop() not supported on bounded source.\");\n }\n }, {\n key: \"onEmit\",\n value: function onEmit() {\n throw new Error(\"You can not setup a listener to a bounded source.\");\n }\n }]);\n return Bounded;\n}(_pipelinein2.default); /**\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexports.default = Bounded;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/io/bounded.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/io/collectionout.js": +/*!*********************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/io/collectionout.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _collector = __webpack_require__(/*! ../collector */ \"./node_modules/pondjs/lib/lib/collector.js\");\n\nvar _collector2 = _interopRequireDefault(_collector);\n\nvar _pipelineout = __webpack_require__(/*! ./pipelineout */ \"./node_modules/pondjs/lib/lib/io/pipelineout.js\");\n\nvar _pipelineout2 = _interopRequireDefault(_pipelineout);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar CollectionOut = function (_PipelineOut) {\n (0, _inherits3.default)(CollectionOut, _PipelineOut);\n\n function CollectionOut(pipeline, options, callback) {\n (0, _classCallCheck3.default)(this, CollectionOut);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (CollectionOut.__proto__ || (0, _getPrototypeOf2.default)(CollectionOut)).call(this, pipeline));\n\n _this._callback = callback;\n _this._collector = new _collector2.default({\n windowType: pipeline.getWindowType(),\n windowDuration: pipeline.getWindowDuration(),\n groupBy: pipeline.getGroupBy(),\n emitOn: pipeline.getEmitOn()\n }, function (collection, windowKey, groupByKey) {\n var groupBy = groupByKey ? groupByKey : \"all\";\n if (_this._callback) {\n _this._callback(collection, windowKey, groupBy);\n } else {\n var keys = [];\n if (windowKey !== \"global\") {\n keys.push(windowKey);\n }\n if (groupBy !== \"all\") {\n keys.push(groupBy);\n }\n var k = keys.length > 0 ? keys.join(\"--\") : \"all\";\n _this._pipeline.addResult(k, collection);\n }\n });\n return _this;\n }\n\n (0, _createClass3.default)(CollectionOut, [{\n key: \"addEvent\",\n value: function addEvent(event) {\n this._collector.addEvent(event);\n }\n }, {\n key: \"onEmit\",\n value: function onEmit(cb) {\n this._callback = cb;\n }\n }, {\n key: \"flush\",\n value: function flush() {\n this._collector.flushCollections();\n if (!this._callback) {\n this._pipeline.resultsDone();\n }\n }\n }]);\n return CollectionOut;\n}(_pipelineout2.default);\n\nexports.default = CollectionOut;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/io/collectionout.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/io/eventout.js": +/*!****************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/io/eventout.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _pipelineout = __webpack_require__(/*! ./pipelineout */ \"./node_modules/pondjs/lib/lib/io/pipelineout.js\");\n\nvar _pipelineout2 = _interopRequireDefault(_pipelineout);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EventOut = function (_PipelineOut) {\n (0, _inherits3.default)(EventOut, _PipelineOut);\n\n function EventOut(pipeline, options, callback) {\n (0, _classCallCheck3.default)(this, EventOut);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (EventOut.__proto__ || (0, _getPrototypeOf2.default)(EventOut)).call(this, pipeline));\n\n _this._callback = callback;\n return _this;\n }\n\n (0, _createClass3.default)(EventOut, [{\n key: \"addEvent\",\n value: function addEvent(event) {\n if (this._callback) {\n this._callback(event);\n } else {\n this._pipeline.addResult(event);\n }\n }\n }, {\n key: \"onEmit\",\n value: function onEmit(cb) {\n this._callback = cb;\n }\n }, {\n key: \"flush\",\n value: function flush() {\n if (!this._callback) {\n this._pipeline.resultsDone();\n }\n }\n }]);\n return EventOut;\n}(_pipelineout2.default); /**\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexports.default = EventOut;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/io/eventout.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/io/pipelinein.js": +/*!******************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/io/pipelinein.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _observable = __webpack_require__(/*! ../base/observable */ \"./node_modules/pondjs/lib/lib/base/observable.js\");\n\nvar _observable2 = _interopRequireDefault(_observable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar PipelineIn = function (_Observable) {\n (0, _inherits3.default)(PipelineIn, _Observable);\n\n function PipelineIn() {\n (0, _classCallCheck3.default)(this, PipelineIn);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (PipelineIn.__proto__ || (0, _getPrototypeOf2.default)(PipelineIn)).call(this));\n\n _this._id = _underscore2.default.uniqueId(\"in-\");\n _this._type = null; // The type (class) of the events in this In\n return _this;\n }\n\n (0, _createClass3.default)(PipelineIn, [{\n key: \"_check\",\n value: function _check(e) {\n if (!this._type) {\n this._type = e.type();\n } else {\n if (!(e instanceof this._type)) {\n throw new Error(\"Homogeneous events expected.\");\n }\n }\n }\n }]);\n return PipelineIn;\n}(_observable2.default);\n\nexports.default = PipelineIn;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/io/pipelinein.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/io/pipelineout.js": +/*!*******************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/io/pipelineout.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PipelineOut = function PipelineOut(pipeline) {\n (0, _classCallCheck3.default)(this, PipelineOut);\n\n this._id = _underscore2.default.uniqueId(\"id-\");\n this._pipeline = pipeline;\n}; /**\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexports.default = PipelineOut;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/io/pipelineout.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/io/stream.js": +/*!**************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/io/stream.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"./node_modules/babel-runtime/regenerator/index.js\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _pipelinein = __webpack_require__(/*! ./pipelinein */ \"./node_modules/pondjs/lib/lib/io/pipelinein.js\");\n\nvar _pipelinein2 = _interopRequireDefault(_pipelinein);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Stream = function (_PipelineIn) {\n (0, _inherits3.default)(Stream, _PipelineIn);\n\n function Stream() {\n (0, _classCallCheck3.default)(this, Stream);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Stream.__proto__ || (0, _getPrototypeOf2.default)(Stream)).call(this));\n\n _this._running = true;\n return _this;\n }\n\n /**\n * Start listening to events\n */\n\n\n (0, _createClass3.default)(Stream, [{\n key: \"start\",\n value: function start() {\n this._running = true;\n }\n\n /**\n * Stop listening to events\n */\n\n }, {\n key: \"stop\",\n value: function stop() {\n this._running = false;\n this.flush(); // emit a flush to let processors cleanly exit.\n }\n\n /**\n * Add an incoming event to the source\n */\n\n }, {\n key: \"addEvent\",\n value: function addEvent(event) {\n this._check(event);\n if (this.hasObservers() && this._running) {\n this.emit(event);\n }\n }\n }, {\n key: \"events\",\n value: _regenerator2.default.mark(function events() {\n return _regenerator2.default.wrap(function events$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n throw new Error(\"Iteration across unbounded sources is not supported.\");\n\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, events, this);\n })\n }]);\n return Stream;\n}(_pipelinein2.default); /**\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexports.default = Stream;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/io/stream.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/pipeline.js": +/*!*************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/pipeline.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isPipeline = exports.Pipeline = undefined;\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"./node_modules/babel-runtime/helpers/extends.js\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _getIterator2 = __webpack_require__(/*! babel-runtime/core-js/get-iterator */ \"./node_modules/babel-runtime/core-js/get-iterator.js\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _timeevent = __webpack_require__(/*! ./timeevent */ \"./node_modules/pondjs/lib/lib/timeevent.js\");\n\nvar _timeevent2 = _interopRequireDefault(_timeevent);\n\nvar _indexedevent = __webpack_require__(/*! ./indexedevent */ \"./node_modules/pondjs/lib/lib/indexedevent.js\");\n\nvar _indexedevent2 = _interopRequireDefault(_indexedevent);\n\nvar _timerangeevent = __webpack_require__(/*! ./timerangeevent */ \"./node_modules/pondjs/lib/lib/timerangeevent.js\");\n\nvar _timerangeevent2 = _interopRequireDefault(_timerangeevent);\n\nvar _timeseries = __webpack_require__(/*! ./timeseries */ \"./node_modules/pondjs/lib/lib/timeseries.js\");\n\nvar _timeseries2 = _interopRequireDefault(_timeseries);\n\nvar _bounded = __webpack_require__(/*! ./io/bounded */ \"./node_modules/pondjs/lib/lib/io/bounded.js\");\n\nvar _bounded2 = _interopRequireDefault(_bounded);\n\nvar _collectionout = __webpack_require__(/*! ./io/collectionout */ \"./node_modules/pondjs/lib/lib/io/collectionout.js\");\n\nvar _collectionout2 = _interopRequireDefault(_collectionout);\n\nvar _eventout = __webpack_require__(/*! ./io/eventout */ \"./node_modules/pondjs/lib/lib/io/eventout.js\");\n\nvar _eventout2 = _interopRequireDefault(_eventout);\n\nvar _stream = __webpack_require__(/*! ./io/stream */ \"./node_modules/pondjs/lib/lib/io/stream.js\");\n\nvar _stream2 = _interopRequireDefault(_stream);\n\nvar _aggregator = __webpack_require__(/*! ./processors/aggregator */ \"./node_modules/pondjs/lib/lib/processors/aggregator.js\");\n\nvar _aggregator2 = _interopRequireDefault(_aggregator);\n\nvar _aligner = __webpack_require__(/*! ./processors/aligner */ \"./node_modules/pondjs/lib/lib/processors/aligner.js\");\n\nvar _aligner2 = _interopRequireDefault(_aligner);\n\nvar _collapser = __webpack_require__(/*! ./processors/collapser */ \"./node_modules/pondjs/lib/lib/processors/collapser.js\");\n\nvar _collapser2 = _interopRequireDefault(_collapser);\n\nvar _converter = __webpack_require__(/*! ./processors/converter */ \"./node_modules/pondjs/lib/lib/processors/converter.js\");\n\nvar _converter2 = _interopRequireDefault(_converter);\n\nvar _derivator = __webpack_require__(/*! ./processors/derivator */ \"./node_modules/pondjs/lib/lib/processors/derivator.js\");\n\nvar _derivator2 = _interopRequireDefault(_derivator);\n\nvar _filler = __webpack_require__(/*! ./processors/filler */ \"./node_modules/pondjs/lib/lib/processors/filler.js\");\n\nvar _filler2 = _interopRequireDefault(_filler);\n\nvar _filter = __webpack_require__(/*! ./processors/filter */ \"./node_modules/pondjs/lib/lib/processors/filter.js\");\n\nvar _filter2 = _interopRequireDefault(_filter);\n\nvar _mapper = __webpack_require__(/*! ./processors/mapper */ \"./node_modules/pondjs/lib/lib/processors/mapper.js\");\n\nvar _mapper2 = _interopRequireDefault(_mapper);\n\nvar _offset = __webpack_require__(/*! ./processors/offset */ \"./node_modules/pondjs/lib/lib/processors/offset.js\");\n\nvar _offset2 = _interopRequireDefault(_offset);\n\nvar _processor = __webpack_require__(/*! ./processors/processor */ \"./node_modules/pondjs/lib/lib/processors/processor.js\");\n\nvar _processor2 = _interopRequireDefault(_processor);\n\nvar _selector = __webpack_require__(/*! ./processors/selector */ \"./node_modules/pondjs/lib/lib/processors/selector.js\");\n\nvar _selector2 = _interopRequireDefault(_selector);\n\nvar _taker = __webpack_require__(/*! ./processors/taker */ \"./node_modules/pondjs/lib/lib/processors/taker.js\");\n\nvar _taker2 = _interopRequireDefault(_taker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A runner is used to extract the chain of processing operations\n * from a Pipeline given an Output. The idea here is to traverse\n * back up the Pipeline(s) and build an execution chain.\n *\n * When the runner is started, events from the \"in\" are streamed\n * into the execution chain and outputed into the \"out\".\n *\n * Rebuilding in this way enables us to handle connected pipelines:\n *\n * |--\n * in --> pipeline ---.\n * |----pipeline ---| -> out\n *\n * The runner breaks this into the following for execution:\n *\n * _input - the \"in\" or from() bounded input of\n * the upstream pipeline\n * _processChain - the process nodes in the pipelines\n * leading to the out\n * _output - the supplied output destination for\n * the batch process\n *\n * NOTE: There's no current way to merge multiple sources, though\n * a time series has a TimeSeries.merge() static method for\n * this purpose.\n */\n\n\n// Processors\n\n\n// I/O\n/*\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar Runner = function () {\n /**\n * Create a new batch runner.\n * @param {Pipeline} pipeline The pipeline to run\n * @param {PipelineOut} output The output driving this runner\n */\n function Runner(pipeline, output) {\n var _this = this;\n\n (0, _classCallCheck3.default)(this, Runner);\n\n this._output = output;\n this._pipeline = pipeline;\n\n //\n // We use the pipeline's chain() function to walk the\n // DAG back up the tree to the \"in\" to:\n // 1) assemble a list of process nodes that feed into\n // this pipeline, the processChain\n // 2) determine the _input\n //\n // TODO: we do not currently support merging, so this is\n // a linear chain.\n //\n var processChain = [];\n if (pipeline.last()) {\n processChain = pipeline.last().chain();\n this._input = processChain[0].pipeline().in();\n } else {\n this._input = pipeline.in();\n }\n\n //\n // Using the list of nodes in the tree that will be involved in\n // our processing we can build an execution chain. This is the\n // chain of processor clones, linked together, for our specific\n // processing pipeline. We run this execution chain later by\n // evoking start().\n //\n this._executionChain = [this._output];\n var prev = this._output;\n processChain.forEach(function (p) {\n if (p instanceof _processor2.default) {\n var processor = p.clone();\n if (prev) processor.addObserver(prev);\n _this._executionChain.push(processor);\n prev = processor;\n }\n });\n }\n\n /**\n * Start the runner\n * @param {Boolean} force Force a flush at the end of the batch source\n * to cause any buffers to emit.\n */\n\n\n (0, _createClass3.default)(Runner, [{\n key: \"start\",\n value: function start() {\n var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n // Clear any results ready for the run\n this._pipeline.clearResults();\n\n //\n // The head is the first process node in the execution chain.\n // To process the source through the execution chain we add\n // each event from the input to the head.\n //\n var head = this._executionChain.pop();\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this._input.events()), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var e = _step.value;\n\n head.addEvent(e);\n }\n\n //\n // The runner indicates that it is finished with the bounded\n // data by sending a flush() call down the chain. If force is\n // set to false (the default) this is never called.\n //\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (force) {\n head.flush();\n }\n }\n }]);\n return Runner;\n}();\n\n/**\n * A pipeline manages a processing chain, for either batch or stream processing\n * of collection data.\n */\n\n\nvar Pipeline = function () {\n /**\n * Build a new Pipeline.\n *\n * @param {Pipeline|Immutable.Map|null} [arg] May be either:\n * * a Pipeline (copy contructor)\n * * an Immutable.Map, in which case the internal state of the\n * Pipeline will be contructed from the Map\n * * not specified\n *\n * Usually you would initialize a Pipeline using the factory\n * function, rather than this object directly with `new`.\n *\n * @example\n * ```\n * import { Pipeline } from \"pondjs\";\n * const p = Pipeline()...`\n * ```\n *\n * @return {Pipeline} The Pipeline\n */\n function Pipeline(arg) {\n (0, _classCallCheck3.default)(this, Pipeline);\n\n if (arg instanceof Pipeline) {\n var other = arg;\n this._d = other._d;\n } else if (arg instanceof _immutable2.default.Map) {\n this._d = arg;\n } else {\n this._d = new _immutable2.default.Map({\n type: null,\n in: null,\n first: null,\n last: null,\n groupBy: function groupBy() {\n return \"\";\n },\n windowType: \"global\",\n windowDuration: null,\n emitOn: \"eachEvent\"\n });\n }\n this._results = [];\n }\n\n //\n // Accessors to the current Pipeline state\n //\n\n\n (0, _createClass3.default)(Pipeline, [{\n key: \"in\",\n value: function _in() {\n return this._d.get(\"in\");\n }\n }, {\n key: \"mode\",\n value: function mode() {\n return this._d.get(\"mode\");\n }\n }, {\n key: \"first\",\n value: function first() {\n return this._d.get(\"first\");\n }\n }, {\n key: \"last\",\n value: function last() {\n return this._d.get(\"last\");\n }\n }, {\n key: \"getWindowType\",\n value: function getWindowType() {\n return this._d.get(\"windowType\");\n }\n }, {\n key: \"getWindowDuration\",\n value: function getWindowDuration() {\n return this._d.get(\"windowDuration\");\n }\n }, {\n key: \"getGroupBy\",\n value: function getGroupBy() {\n return this._d.get(\"groupBy\");\n }\n }, {\n key: \"getEmitOn\",\n value: function getEmitOn() {\n return this._d.get(\"emitOn\");\n }\n\n //\n // Results\n //\n\n }, {\n key: \"clearResults\",\n value: function clearResults() {\n this._resultsDone = false;\n this._results = null;\n }\n }, {\n key: \"addResult\",\n value: function addResult(arg1, arg2) {\n if (!this._results) {\n if (_underscore2.default.isString(arg1) && arg2) {\n this._results = {};\n } else {\n this._results = [];\n }\n }\n\n if (_underscore2.default.isString(arg1) && arg2) {\n this._results[arg1] = arg2;\n } else {\n this._results.push(arg1);\n }\n this._resultsDone = false;\n }\n }, {\n key: \"resultsDone\",\n value: function resultsDone() {\n this._resultsDone = true;\n }\n\n //\n // Pipeline mutations\n //\n /**\n * Setting the In for the Pipeline returns a new Pipeline\n *\n * @private\n */\n\n }, {\n key: \"_setIn\",\n value: function _setIn(input) {\n var mode = void 0;\n var source = input;\n if (input instanceof _timeseries2.default) {\n mode = \"batch\";\n source = input.collection();\n } else if (input instanceof _bounded2.default) {\n mode = \"batch\";\n } else if (input instanceof _stream2.default) {\n mode = \"stream\";\n } else {\n throw new Error(\"Unknown input type\", input);\n }\n\n var d = this._d.withMutations(function (map) {\n map.set(\"in\", source).set(\"mode\", mode);\n });\n\n return new Pipeline(d);\n }\n\n /**\n * Set the first processing node pointed to, returning\n * a new Pipeline. The original pipeline will still point\n * to its orginal processing node.\n *\n * @private\n */\n\n }, {\n key: \"_setFirst\",\n value: function _setFirst(n) {\n var d = this._d.set(\"first\", n);\n return new Pipeline(d);\n }\n\n /**\n * Set the last processing node pointed to, returning\n * a new Pipeline. The original pipeline will still point\n * to its orginal processing node.\n *\n * @private\n */\n\n }, {\n key: \"_setLast\",\n value: function _setLast(n) {\n var d = this._d.set(\"last\", n);\n return new Pipeline(d);\n }\n\n /**\n * @private\n */\n\n }, {\n key: \"_append\",\n value: function _append(processor) {\n var first = this.first();\n var last = this.last();\n\n if (!first) first = processor;\n if (last) last.addObserver(processor);\n last = processor;\n\n var d = this._d.withMutations(function (map) {\n map.set(\"first\", first).set(\"last\", last);\n });\n return new Pipeline(d);\n }\n }, {\n key: \"_chainPrev\",\n value: function _chainPrev() {\n return this.last() || this;\n }\n\n //\n // Pipeline state chained methods\n //\n /**\n * Set the window, returning a new Pipeline. A new window will\n * have a type and duration associated with it. Current available\n * types are:\n * * fixed (e.g. every 5m)\n * * calendar based windows (e.g. every month)\n *\n * Windows are a type of grouping. Typically you'd define a window\n * on the pipeline before doing an aggregation or some other operation\n * on the resulting grouped collection. You can combine window-based\n * grouping with key-grouping (see groupBy()).\n *\n * There are several ways to define a window. The general format is\n * an options object containing a `type` field and a `duration` field.\n *\n * Currently the only accepted type is `fixed`, but others are planned.\n * For duration, this is a duration string, for example \"30s\" or \"1d\".\n * Supported are: seconds (s), minutes (m), hours (h) and days (d).\n *\n * If no arg is supplied, the window type is set to 'global' and there\n * is no duration.\n *\n * There is also a short-cut notation for a fixed window or a calendar\n * window. Simply supplying the duration string (\"30s\" for example) will\n * result in a `fixed` window type with the supplied duration.\n *\n * Calendar types are specified by simply specifying \"daily\", \"monthly\"\n * or \"yearly\".\n *\n * @param {string|object} w Window or duration - See above\n * @return {Pipeline} The Pipeline\n */\n\n }, {\n key: \"windowBy\",\n value: function windowBy(w) {\n var type = void 0,\n duration = void 0;\n if (_underscore2.default.isString(w)) {\n if (w === \"daily\" || w === \"monthly\" || w === \"yearly\") {\n type = w;\n } else {\n // assume fixed window with size w\n type = \"fixed\";\n duration = w;\n }\n } else if (_underscore2.default.isObject(w)) {\n type = w.type;\n duration = w.duration;\n } else {\n type = \"global\";\n duration = null;\n }\n\n var d = this._d.withMutations(function (map) {\n map.set(\"windowType\", type).set(\"windowDuration\", duration);\n });\n\n return new Pipeline(d);\n }\n\n /**\n * Remove windowing from the Pipeline. This will\n * return the pipeline to no window grouping. This is\n * useful if you have first done some aggregated by\n * some window size and then wish to collect together\n * the all resulting events.\n *\n * @return {Pipeline} The Pipeline\n */\n\n }, {\n key: \"clearWindow\",\n value: function clearWindow() {\n return this.windowBy();\n }\n\n /**\n * Sets a new key grouping. Returns a new Pipeline.\n *\n * Grouping is a state set on the Pipeline. Operations downstream\n * of the group specification will use that state. For example, an\n * aggregation would occur over any grouping specified. You can\n * combine a key grouping with windowing (see windowBy()).\n *\n * Note: the key, if it is a field path, is not a list of multiple\n * columns, it is the path to a single column to pull group by keys\n * from. For example, a column called 'status' that contains the\n * values 'OK' and 'FAIL' - then the key would be 'status' and two\n * collections OK and FAIL will be generated.\n *\n * @param {function|array|string} k The key to group by.\n * You can groupBy using a function\n * `(event) => return key`,\n * a field path (a field name, or dot\n * delimitted path to a field),\n * or a array of field paths.\n *\n * @return {Pipeline} The Pipeline\n */\n\n }, {\n key: \"groupBy\",\n value: function groupBy(k) {\n var grp = void 0;\n var groupBy = k || \"value\";\n if (_underscore2.default.isFunction(groupBy)) {\n // group using a user defined function\n // (event) => key\n grp = groupBy;\n } else if (_underscore2.default.isArray(groupBy)) {\n // group by several column values\n grp = function grp(e) {\n return _underscore2.default.map(groupBy, function (c) {\n return \"\" + e.get(c);\n }).join(\"::\");\n };\n } else if (_underscore2.default.isString(groupBy)) {\n // group by a column value\n grp = function grp(e) {\n return \"\" + e.get(groupBy);\n };\n } else {\n // Reset to no grouping\n grp = function grp() {\n return \"\";\n };\n }\n\n var d = this._d.withMutations(function (map) {\n map.set(\"groupBy\", grp);\n });\n\n return new Pipeline(d);\n }\n\n /**\n * Remove the grouping from the pipeline. In other words\n * recombine the events.\n *\n * @return {Pipeline} The Pipeline\n */\n\n }, {\n key: \"clearGroupBy\",\n value: function clearGroupBy() {\n return this.groupBy();\n }\n\n /**\n * Sets the condition under which an accumulated collection will\n * be emitted. If specified before an aggregation this will control\n * when the resulting event will be emitted relative to the\n * window accumulation. Current options are:\n * * to emit on every event, or\n * * just when the collection is complete, or\n * * when a flush signal is received, either manually calling done(),\n * or at the end of a bounded source\n *\n * The difference will depend on the output you want, how often\n * you want to get updated, and if you need to get a partial state.\n * There's currently no support for late data or watermarks. If an\n * event passes comes in after a collection window, that collection\n * is considered finished.\n *\n * @param {string} trigger A string indicating how to trigger a\n * Collection should be emitted. May be:\n * * \"eachEvent\" - when a new event comes in, all currently\n * maintained collections will emit their result\n * * \"discard\" - when a collection is to be discarded,\n * first it will emit. But only then.\n * * \"flush\" - when a flush signal is received\n *\n * @return {Pipeline} The Pipeline\n */\n\n }, {\n key: \"emitOn\",\n value: function emitOn(trigger) {\n var d = this._d.set(\"emitOn\", trigger);\n return new Pipeline(d);\n }\n\n //\n // I/O\n //\n /**\n * The source to get events from. The source needs to be able to\n * iterate its events using `for..of` loop for bounded Ins, or\n * be able to emit() for unbounded Ins. The actual batch, or stream\n * connection occurs when an output is defined with `to()`.\n *\n * Pipelines can be chained together since a source may be another\n * Pipeline.\n *\n * @param {Bounded|Stream} src The source for the Pipeline\n * @return {Pipeline} The Pipeline\n */\n\n }, {\n key: \"from\",\n value: function from(src) {\n return this._setIn(src);\n }\n\n /**\n * Directly return the results from the processor rather than\n * feeding to a callback. This breaks the chain, causing a result to\n * be returned (the array of events) rather than a reference to the\n * Pipeline itself. This function is only available for sync batch\n * processing.\n *\n * @return {array|map} Returns the _results attribute from a Pipeline\n * object after processing. Will contain Collection\n * objects.\n */\n\n }, {\n key: \"toEventList\",\n value: function toEventList() {\n return this.to(_eventout2.default);\n }\n\n /**\n * Directly return the results from the processor rather than\n * passing a callback in. This breaks the chain, causing a result to\n * be returned (the collections) rather than a reference to the\n * Pipeline itself. This function is only available for sync batch\n * processing.\n *\n * @return {array|map} Returns the _results attribute from a Pipeline\n * object after processing. Will contain Collection\n * objects.\n */\n\n }, {\n key: \"toKeyedCollections\",\n value: function toKeyedCollections() {\n var result = this.to(_collectionout2.default);\n if (result) {\n return result;\n } else {\n return {};\n }\n }\n\n /**\n * Sets up the destination sink for the pipeline.\n *\n * For a batch mode connection, i.e. one with a Bounded source,\n * the output is connected to a clone of the parts of the Pipeline dependencies\n * that lead to this output. This is done by a Runner. The source input is\n * then iterated over to process all events into the pipeline and though to the Out.\n *\n * For stream mode connections, the output is connected and from then on\n * any events added to the input will be processed down the pipeline to\n * the out.\n *\n * @example\n * ```\n * const p = Pipeline()\n * ...\n * .to(EventOut, {}, event => {\n * result[`${event.index()}`] = event;\n * });\n * ```\n * @return {Pipeline} The Pipeline\n */\n\n }, {\n key: \"to\",\n value: function to(arg1, arg2, arg3) {\n var Out = arg1;\n var observer = void 0;\n var options = {};\n\n if (_underscore2.default.isFunction(arg2)) {\n observer = arg2;\n } else if (_underscore2.default.isObject(arg2)) {\n options = arg2;\n observer = arg3;\n }\n\n if (!this.in()) {\n throw new Error(\"Tried to eval pipeline without a In. Missing from() in chain?\");\n }\n\n var out = new Out(this, options, observer);\n\n if (this.mode() === \"batch\") {\n var runner = new Runner(this, out);\n runner.start(true);\n if (this._resultsDone && !observer) {\n return this._results;\n }\n } else if (this.mode() === \"stream\") {\n var _out = new Out(this, options, observer);\n if (this.first()) {\n this.in().addObserver(this.first());\n }\n if (this.last()) {\n this.last().addObserver(_out);\n } else {\n this.in().addObserver(_out);\n }\n }\n\n return this;\n }\n\n /**\n * Outputs the count of events\n *\n * @param {function} observer The callback function. This will be\n * passed the count, the windowKey and\n * the groupByKey\n * @param {Boolean} force Flush at the end of processing batch\n * events, output again with possibly partial\n * result.\n * @return {Pipeline} The Pipeline\n */\n\n }, {\n key: \"count\",\n value: function count(observer) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n return this.to(_collectionout2.default, function (collection, windowKey, groupByKey) {\n observer(collection.size(), windowKey, groupByKey);\n }, force);\n }\n\n //\n // Processors\n //\n /**\n * Processor to offset a set of fields by a value. Mostly used for\n * testing processor and pipeline operations with a simple operation.\n *\n * @param {number} by The amount to offset by\n * @param {string|array} fieldSpec The field(s)\n *\n * @return {Pipeline} The modified Pipeline\n */\n\n }, {\n key: \"offsetBy\",\n value: function offsetBy(by, fieldSpec) {\n var p = new _offset2.default(this, { by: by, fieldSpec: fieldSpec, prev: this._chainPrev() });\n\n return this._append(p);\n }\n\n /**\n * Uses the current Pipeline windowing and grouping\n * state to build collections of events and aggregate them.\n *\n * `IndexedEvent`s will be emitted out of the aggregator based\n * on the `emitOn` state of the Pipeline.\n *\n * To specify what part of the incoming events should\n * be aggregated together you specify a `fields`\n * object. This is a map from fieldName to operator.\n *\n * @example\n *\n * ```\n * import { Pipeline, EventOut, functions } from \"pondjs\";\n * const { avg } = functions;\n *\n * const p = Pipeline()\n * .from(input)\n * .windowBy(\"1h\") // 1 day fixed windows\n * .emitOn(\"eachEvent\") // emit result on each event\n * .aggregate({\n * in_avg: {in: avg},\n * out_avg: {in: avg}\n * })\n * .asTimeEvents()\n * .to(EventOut, {}, event => {\n * result[`${event.index()}`] = event; // Result\n * });\n * ```\n *\n * @param {object} fields Fields and operators to be aggregated\n *\n * @return {Pipeline} The Pipeline\n */\n\n }, {\n key: \"aggregate\",\n value: function aggregate(fields) {\n var p = new _aggregator2.default(this, { fields: fields, prev: this._chainPrev() });\n return this._append(p);\n }\n\n /**\n * Converts incoming TimeRangeEvents or IndexedEvents to\n * TimeEvents. This is helpful since some processors,\n * especially aggregators, will emit TimeRangeEvents or\n * IndexedEvents, which may be unsuitable for some applications.\n *\n * @param {object} options To convert to an TimeEvent you need\n * to convert a time range to a single time. There are three options:\n * 1. use the beginning time (options = {alignment: \"lag\"})\n * 2. use the center time (options = {alignment: \"center\"})\n * 3. use the end time (options = {alignment: \"lead\"})\n *\n * @return {Pipeline} The Pipeline\n */\n\n }, {\n key: \"asTimeEvents\",\n value: function asTimeEvents(options) {\n var type = _timeevent2.default;\n var p = new _converter2.default(this, (0, _extends3.default)({\n type: type\n }, options, {\n prev: this._chainPrev()\n }));\n\n return this._append(p);\n }\n\n /**\n * Map the event stream using an operator\n *\n * @param {function} op A function that returns a new Event\n *\n * @return {Pipeline} The Pipeline\n */\n\n }, {\n key: \"map\",\n value: function map(op) {\n var p = new _mapper2.default(this, { op: op, prev: this._chainPrev() });\n\n return this._append(p);\n }\n\n /**\n * Filter the event stream using an operator\n *\n * @param {function} op A function that returns true or false\n *\n * @return {Pipeline} The Pipeline\n */\n\n }, {\n key: \"filter\",\n value: function filter(op) {\n var p = new _filter2.default(this, { op: op, prev: this._chainPrev() });\n\n return this._append(p);\n }\n\n /**\n * Select a subset of columns\n *\n * @param {string|array} fieldSpec Column or columns to look up. If you need\n * to retrieve multiple deep nested values that\n * ['can.be', 'done.with', 'this.notation'].\n * A single deep value with a string.like.this.\n * If not supplied, the 'value' column will be used.\n *\n * @return {Pipeline} The Pipeline\n */\n\n }, {\n key: \"select\",\n value: function select(fieldSpec) {\n var p = new _selector2.default(this, { fieldSpec: fieldSpec, prev: this._chainPrev() });\n\n return this._append(p);\n }\n\n /**\n * Collapse a subset of columns using a reducer function\n *\n * @example\n *\n * ```\n * const timeseries = new TimeSeries(inOutData);\n * Pipeline()\n * .from(timeseries)\n * .collapse([\"in\", \"out\"], \"in_out_sum\", sum)\n * .emitOn(\"flush\")\n * .to(CollectionOut, c => {\n * const ts = new TimeSeries({name: \"subset\", collection: c});\n * ...\n * }, true);\n * ```\n * @param {string|array} fieldSpecList Column or columns to collapse. If you need\n * to retrieve multiple deep nested values that\n * ['can.be', 'done.with', 'this.notation'].\n * @param {string} name The resulting output column's name\n * @param {function} reducer Function to use to do the reduction\n * @param {boolean} append Add the new column to the existing ones,\n * or replace them.\n *\n * @return {Pipeline} The Pipeline\n */\n\n }, {\n key: \"collapse\",\n value: function collapse(fieldSpecList, name, reducer, append) {\n var p = new _collapser2.default(this, {\n fieldSpecList: fieldSpecList,\n name: name,\n reducer: reducer,\n append: append,\n prev: this._chainPrev()\n });\n\n return this._append(p);\n }\n\n /**\n * Take the data in this event steam and \"fill\" any missing\n * or invalid values. This could be setting `null` values to `0`\n * so mathematical operations will succeed, interpolate a new\n * value, or pad with the previously given value.\n *\n * If one wishes to limit the number of filled events in the result\n * set, use Pipeline.keep() in the chain. See: TimeSeries.fill()\n * for an example.\n *\n * Fill takes a single arg `options` which should be composed of:\n * * fieldSpec - Column or columns to look up. If you need\n * to retrieve multiple deep nested values that\n * ['can.be', 'done.with', 'this.notation'].\n * A single deep value with a string.like.this.\n * * method - Filling method: zero | linear | pad\n *\n * @return {Pipeline} The Pipeline\n */\n\n }, {\n key: \"fill\",\n value: function fill(_ref) {\n var _ref$fieldSpec = _ref.fieldSpec,\n fieldSpec = _ref$fieldSpec === undefined ? null : _ref$fieldSpec,\n _ref$method = _ref.method,\n method = _ref$method === undefined ? \"linear\" : _ref$method,\n _ref$limit = _ref.limit,\n limit = _ref$limit === undefined ? null : _ref$limit;\n\n var prev = this._chainPrev();\n return this._append(new _filler2.default(this, {\n fieldSpec: fieldSpec,\n method: method,\n limit: limit,\n prev: prev\n }));\n }\n }, {\n key: \"align\",\n value: function align(fieldSpec, window, method, limit) {\n var prev = this._chainPrev();\n return this._append(new _aligner2.default(this, {\n fieldSpec: fieldSpec,\n window: window,\n method: method,\n limit: limit,\n prev: prev\n }));\n }\n }, {\n key: \"rate\",\n value: function rate(fieldSpec) {\n var allowNegative = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var p = new _derivator2.default(this, {\n fieldSpec: fieldSpec,\n allowNegative: allowNegative,\n prev: this._chainPrev()\n });\n\n return this._append(p);\n }\n\n /**\n * Take events up to the supplied limit, per key.\n *\n * @param {number} limit Integer number of events to take\n *\n * @return {Pipeline} The Pipeline\n */\n\n }, {\n key: \"take\",\n value: function take(limit) {\n var p = new _taker2.default(this, { limit: limit, prev: this._chainPrev() });\n\n return this._append(p);\n }\n\n /**\n * Converts incoming Events or IndexedEvents to TimeRangeEvents.\n *\n * @param {object} options To convert from an Event you need\n * to convert a single time to a time range. To control this you\n * need to specify the duration of that time range, along with\n * the positioning (alignment) of the time range with respect to\n * the time stamp of the Event.\n *\n * There are three option for alignment:\n * 1. time range will be in front of the timestamp (options = {alignment: \"front\"})\n * 2. time range will be centered on the timestamp (options = {alignment: \"center\"})\n * 3. time range will be positoned behind the timestamp (options = {alignment: \"behind\"})\n *\n * The duration is of the form \"1h\" for one hour, \"30s\" for 30 seconds and so on.\n *\n * @return {Pipeline} The Pipeline\n */\n\n }, {\n key: \"asTimeRangeEvents\",\n value: function asTimeRangeEvents(options) {\n var type = _timerangeevent2.default;\n var p = new _converter2.default(this, (0, _extends3.default)({\n type: type\n }, options, {\n prev: this._chainPrev()\n }));\n\n return this._append(p);\n }\n\n /**\n * Converts incoming Events to IndexedEvents.\n *\n * Note: It isn't possible to convert TimeRangeEvents to IndexedEvents.\n *\n * @param {Object} options An object containing the conversion\n * options. In this case the duration string of the Index is expected.\n * @param {string} options.duration The duration string is of the form \"1h\" for one hour, \"30s\"\n * for 30 seconds and so on.\n *\n * @return {Pipeline} The Pipeline\n */\n\n }, {\n key: \"asIndexedEvents\",\n value: function asIndexedEvents(options) {\n var type = _indexedevent2.default;\n var p = new _converter2.default(this, (0, _extends3.default)({\n type: type\n }, options, {\n prev: this._chainPrev()\n }));\n return this._append(p);\n }\n }]);\n return Pipeline;\n}();\n\nfunction pipeline(args) {\n return new Pipeline(args);\n}\n\nfunction is(p) {\n return p instanceof Pipeline;\n}\n\nexports.Pipeline = pipeline;\nexports.isPipeline = is;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/pipeline.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/processors/aggregator.js": +/*!**************************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/processors/aggregator.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = __webpack_require__(/*! babel-runtime/core-js/object/keys */ \"./node_modules/babel-runtime/core-js/object/keys.js\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = __webpack_require__(/*! babel-runtime/helpers/get */ \"./node_modules/babel-runtime/helpers/get.js\");\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _processor = __webpack_require__(/*! ./processor */ \"./node_modules/pondjs/lib/lib/processors/processor.js\");\n\nvar _processor2 = _interopRequireDefault(_processor);\n\nvar _collector = __webpack_require__(/*! ../collector */ \"./node_modules/pondjs/lib/lib/collector.js\");\n\nvar _collector2 = _interopRequireDefault(_collector);\n\nvar _indexedevent = __webpack_require__(/*! ../indexedevent */ \"./node_modules/pondjs/lib/lib/indexedevent.js\");\n\nvar _indexedevent2 = _interopRequireDefault(_indexedevent);\n\nvar _timerangeevent = __webpack_require__(/*! ../timerangeevent */ \"./node_modules/pondjs/lib/lib/timerangeevent.js\");\n\nvar _timerangeevent2 = _interopRequireDefault(_timerangeevent);\n\nvar _pipeline = __webpack_require__(/*! ../pipeline */ \"./node_modules/pondjs/lib/lib/pipeline.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * An Aggregator takes incoming events and adds them to a Collector\n * with given windowing and grouping parameters. As each Collection is\n * emitted from the Collector it is aggregated into a new event\n * and emitted from this Processor.\n */\n/**\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar Aggregator = function (_Processor) {\n (0, _inherits3.default)(Aggregator, _Processor);\n\n function Aggregator(arg1, options) {\n (0, _classCallCheck3.default)(this, Aggregator);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Aggregator.__proto__ || (0, _getPrototypeOf2.default)(Aggregator)).call(this, arg1, options));\n\n if (arg1 instanceof Aggregator) {\n var other = arg1;\n\n _this._fields = other._fields;\n _this._windowType = other._windowType;\n _this._windowDuration = other._windowDuration;\n _this._groupBy = other._groupBy;\n _this._emitOn = other._emitOn;\n } else if ((0, _pipeline.isPipeline)(arg1)) {\n var pipeline = arg1;\n\n _this._windowType = pipeline.getWindowType();\n _this._windowDuration = pipeline.getWindowDuration();\n _this._groupBy = pipeline.getGroupBy();\n _this._emitOn = pipeline.getEmitOn();\n\n if (!_underscore2.default.has(options, \"fields\")) {\n throw new Error(\"Aggregator: constructor needs an aggregator field mapping\");\n }\n\n // Check each of the aggregator -> field mappings\n _underscore2.default.forEach(options.fields, function (operator, field) {\n // Field should either be an array or a string\n if (!_underscore2.default.isString(field) && !_underscore2.default.isArray(field)) {\n throw new Error(\"Aggregator: field of unknown type: \" + field);\n }\n });\n\n if (pipeline.mode() === \"stream\") {\n if (!pipeline.getWindowType() || !pipeline.getWindowDuration()) {\n throw new Error(\"Unable to aggregate because no windowing strategy was specified in pipeline\");\n }\n }\n _this._fields = options.fields;\n } else {\n throw new Error(\"Unknown arg to Filter constructor\", arg1);\n }\n\n _this._collector = new _collector2.default({\n windowType: _this._windowType,\n windowDuration: _this._windowDuration,\n groupBy: _this._groupBy,\n emitOn: _this._emitOn\n }, function (collection, windowKey, groupByKey) {\n return _this.handleTrigger(collection, windowKey, groupByKey);\n });\n return _this;\n }\n\n (0, _createClass3.default)(Aggregator, [{\n key: \"clone\",\n value: function clone() {\n return new Aggregator(this);\n }\n }, {\n key: \"handleTrigger\",\n value: function handleTrigger(collection, windowKey) {\n var d = {};\n _underscore2.default.each(this._fields, function (f, fieldName) {\n var keys = (0, _keys2.default)(f);\n if (keys.length !== 1) {\n throw new Error(\"Fields should contain exactly one field\", f);\n }\n var field = keys[0];\n var operator = f[field];\n\n d[fieldName] = collection.aggregate(operator, field);\n });\n\n var event = void 0;\n if (windowKey === \"global\") {\n event = new _timerangeevent2.default(collection.range(), d);\n } else {\n //TODO: Specify UTC (or local) pipeline\n var utc = this._windowType === \"fixed\";\n event = new _indexedevent2.default(windowKey, d, utc);\n }\n\n this.emit(event);\n }\n }, {\n key: \"flush\",\n value: function flush() {\n this._collector.flushCollections();\n (0, _get3.default)(Aggregator.prototype.__proto__ || (0, _getPrototypeOf2.default)(Aggregator.prototype), \"flush\", this).call(this);\n }\n }, {\n key: \"addEvent\",\n value: function addEvent(event) {\n if (this.hasObservers()) {\n this._collector.addEvent(event);\n }\n }\n }]);\n return Aggregator;\n}(_processor2.default);\n\nexports.default = Aggregator;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/processors/aggregator.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/processors/aligner.js": +/*!***********************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/processors/aligner.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _isInteger = __webpack_require__(/*! babel-runtime/core-js/number/is-integer */ \"./node_modules/babel-runtime/core-js/number/is-integer.js\");\n\nvar _isInteger2 = _interopRequireDefault(_isInteger);\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _index = __webpack_require__(/*! ../index */ \"./node_modules/pondjs/lib/lib/index.js\");\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _indexedevent = __webpack_require__(/*! ../indexedevent */ \"./node_modules/pondjs/lib/lib/indexedevent.js\");\n\nvar _indexedevent2 = _interopRequireDefault(_indexedevent);\n\nvar _processor = __webpack_require__(/*! ./processor */ \"./node_modules/pondjs/lib/lib/processors/processor.js\");\n\nvar _processor2 = _interopRequireDefault(_processor);\n\nvar _timeevent = __webpack_require__(/*! ../timeevent */ \"./node_modules/pondjs/lib/lib/timeevent.js\");\n\nvar _timeevent2 = _interopRequireDefault(_timeevent);\n\nvar _timerange = __webpack_require__(/*! ../timerange */ \"./node_modules/pondjs/lib/lib/timerange.js\");\n\nvar _timerange2 = _interopRequireDefault(_timerange);\n\nvar _timerangeevent = __webpack_require__(/*! ../timerangeevent */ \"./node_modules/pondjs/lib/lib/timerangeevent.js\");\n\nvar _timerangeevent2 = _interopRequireDefault(_timerangeevent);\n\nvar _pipeline = __webpack_require__(/*! ../pipeline */ \"./node_modules/pondjs/lib/lib/pipeline.js\");\n\nvar _util = __webpack_require__(/*! ../base/util */ \"./node_modules/pondjs/lib/lib/base/util.js\");\n\nvar _util2 = _interopRequireDefault(_util);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A processor to align the data into bins of regular time period.\n */\n/**\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*eslint no-console: 0 */\n\nvar Aligner = function (_Processor) {\n (0, _inherits3.default)(Aligner, _Processor);\n\n function Aligner(arg1, options) {\n (0, _classCallCheck3.default)(this, Aligner);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Aligner.__proto__ || (0, _getPrototypeOf2.default)(Aligner)).call(this, arg1, options));\n\n if (arg1 instanceof Aligner) {\n var other = arg1;\n _this._fieldSpec = other._fieldSpec;\n _this._window = other._window;\n _this._method = other._method;\n _this._limit = other._limit;\n } else if ((0, _pipeline.isPipeline)(arg1)) {\n var fieldSpec = options.fieldSpec,\n window = options.window,\n _options$method = options.method,\n method = _options$method === undefined ? \"hold\" : _options$method,\n _options$limit = options.limit,\n limit = _options$limit === undefined ? null : _options$limit;\n\n\n _this._fieldSpec = fieldSpec;\n _this._window = window;\n _this._method = method;\n _this._limit = limit;\n } else {\n throw new Error(\"Unknown arg to Aligner constructor\", arg1);\n }\n\n //\n // Internal members\n //\n _this._previous = null;\n\n // work out field specs\n if (_underscore2.default.isString(_this._fieldSpec)) {\n _this._fieldSpec = [_this._fieldSpec];\n }\n\n // check input of method\n if (!_underscore2.default.contains([\"linear\", \"hold\"], _this._method)) {\n throw new Error(\"Unknown method '\" + _this._method + \"' passed to Aligner\");\n }\n\n // check limit\n if (_this._limit && !(0, _isInteger2.default)(_this._limit)) {\n throw new Error(\"Limit passed to Aligner is not an integer\");\n }\n return _this;\n }\n\n (0, _createClass3.default)(Aligner, [{\n key: \"clone\",\n value: function clone() {\n return new Aligner(this);\n }\n\n /**\n * Test to see if an event is perfectly aligned. Used on first event.\n */\n\n }, {\n key: \"isAligned\",\n value: function isAligned(event) {\n var bound = _index2.default.getIndexString(this._window, event.timestamp());\n return this.getBoundaryTime(bound) === event.timestamp().getTime();\n }\n\n /**\n * Returns a list of indexes of window boundaries if the current\n * event and the previous event do not lie in the same window. If\n * they are in the same window, return an empty list.\n */\n\n }, {\n key: \"getBoundaries\",\n value: function getBoundaries(event) {\n var prevIndex = _index2.default.getIndexString(this._window, this._previous.timestamp());\n var currentIndex = _index2.default.getIndexString(this._window, event.timestamp());\n if (prevIndex !== currentIndex) {\n var range = new _timerange2.default(this._previous.timestamp(), event.timestamp());\n return _index2.default.getIndexStringList(this._window, range).slice(1);\n } else {\n return [];\n }\n }\n\n /**\n * We are dealing in UTC only with the Index because the events\n * all have internal timestamps in UTC and that's what we're\n * aligning. Let the user display in local time if that's\n * what they want.\n */\n\n }, {\n key: \"getBoundaryTime\",\n value: function getBoundaryTime(boundaryIndex) {\n var index = new _index2.default(boundaryIndex);\n return index.begin().getTime();\n }\n\n /**\n * Generate a new event on the requested boundary and carry over the\n * value from the previous event.\n *\n * A variation just sets the values to null, this is used when the\n * limit is hit.\n */\n\n }, {\n key: \"interpolateHold\",\n value: function interpolateHold(boundary) {\n var _this2 = this;\n\n var setNone = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var d = new _immutable2.default.Map();\n var t = this.getBoundaryTime(boundary);\n this._fieldSpec.forEach(function (path) {\n var fieldPath = _util2.default.fieldPathToArray(path);\n if (!setNone) {\n d = d.setIn(fieldPath, _this2._previous.get(fieldPath));\n } else {\n d = d.setIn(fieldPath, null);\n }\n });\n return new _timeevent2.default(t, d);\n }\n\n /**\n * Generate a linear differential between two counter values that lie\n * on either side of a window boundary.\n */\n\n }, {\n key: \"interpolateLinear\",\n value: function interpolateLinear(boundary, event) {\n var _this3 = this;\n\n var d = new _immutable2.default.Map();\n\n var previousTime = this._previous.timestamp().getTime();\n var boundaryTime = this.getBoundaryTime(boundary);\n var currentTime = event.timestamp().getTime();\n\n // This ratio will be the same for all values being processed\n var f = (boundaryTime - previousTime) / (currentTime - previousTime);\n\n this._fieldSpec.forEach(function (path) {\n var fieldPath = _util2.default.fieldPathToArray(path);\n\n //\n // Generate the delta beteen the values and\n // bulletproof against non-numeric or bad paths\n //\n var previousVal = _this3._previous.get(fieldPath);\n var currentVal = event.get(fieldPath);\n\n var interpolatedVal = null;\n if (!_underscore2.default.isNumber(previousVal) || !_underscore2.default.isNumber(currentVal)) {\n console.warn(\"Path \" + fieldPath + \" contains a non-numeric value or does not exist\");\n } else {\n interpolatedVal = previousVal + f * (currentVal - previousVal);\n }\n d = d.setIn(fieldPath, interpolatedVal);\n });\n\n return new _timeevent2.default(boundaryTime, d);\n }\n\n /**\n * Perform the fill operation on the event and emit.\n */\n\n }, {\n key: \"addEvent\",\n value: function addEvent(event) {\n var _this4 = this;\n\n if (event instanceof _timerangeevent2.default || event instanceof _indexedevent2.default) {\n throw new Error(\"TimeRangeEvent and IndexedEvent series can not be aligned.\");\n }\n\n if (this.hasObservers()) {\n if (!this._previous) {\n this._previous = event;\n if (this.isAligned(event)) {\n this.emit(event);\n }\n return;\n }\n\n var boundaries = this.getBoundaries(event);\n\n //\n // If the returned list is not empty, interpolate an event\n // on each of the boundaries and emit them\n //\n var count = boundaries.length;\n boundaries.forEach(function (boundary) {\n var outputEvent = void 0;\n if (_this4._limit && count > _this4._limit) {\n outputEvent = _this4.interpolateHold(boundary, true);\n } else {\n if (_this4._method === \"linear\") {\n outputEvent = _this4.interpolateLinear(boundary, event);\n } else {\n outputEvent = _this4.interpolateHold(boundary);\n }\n }\n _this4.emit(outputEvent);\n });\n\n //\n // The current event now becomes the previous event\n //\n this._previous = event;\n }\n }\n }]);\n return Aligner;\n}(_processor2.default);\n\nexports.default = Aligner;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/processors/aligner.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/processors/collapser.js": +/*!*************************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/processors/collapser.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _processor = __webpack_require__(/*! ./processor */ \"./node_modules/pondjs/lib/lib/processors/processor.js\");\n\nvar _processor2 = _interopRequireDefault(_processor);\n\nvar _pipeline = __webpack_require__(/*! ../pipeline */ \"./node_modules/pondjs/lib/lib/pipeline.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A processor which takes a fieldSpec and returns a new event\n * with a new column that is a collapsed result of the selected\n * columns. To collapse the columns it uses the supplied reducer\n * function. Optionally the new column can completely replace\n * the existing columns in the event.\n */\n/**\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar Collapser = function (_Processor) {\n (0, _inherits3.default)(Collapser, _Processor);\n\n function Collapser(arg1, options) {\n (0, _classCallCheck3.default)(this, Collapser);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Collapser.__proto__ || (0, _getPrototypeOf2.default)(Collapser)).call(this, arg1, options));\n\n if (arg1 instanceof Collapser) {\n var other = arg1;\n _this._fieldSpecList = other._fieldSpecList;\n _this._name = other._name;\n _this._reducer = other._reducer;\n _this._append = other._append;\n } else if ((0, _pipeline.isPipeline)(arg1)) {\n _this._fieldSpecList = options.fieldSpecList;\n _this._name = options.name;\n _this._reducer = options.reducer;\n _this._append = options.append;\n } else {\n throw new Error(\"Unknown arg to Collapser constructor\", arg1);\n }\n return _this;\n }\n\n (0, _createClass3.default)(Collapser, [{\n key: \"clone\",\n value: function clone() {\n return new Collapser(this);\n }\n }, {\n key: \"addEvent\",\n value: function addEvent(event) {\n if (this.hasObservers()) {\n this.emit(event.collapse(this._fieldSpecList, this._name, this._reducer, this._append));\n }\n }\n }]);\n return Collapser;\n}(_processor2.default);\n\nexports.default = Collapser;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/processors/collapser.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/processors/converter.js": +/*!*************************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/processors/converter.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _processor = __webpack_require__(/*! ./processor */ \"./node_modules/pondjs/lib/lib/processors/processor.js\");\n\nvar _processor2 = _interopRequireDefault(_processor);\n\nvar _index = __webpack_require__(/*! ../index */ \"./node_modules/pondjs/lib/lib/index.js\");\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _timeevent = __webpack_require__(/*! ../timeevent */ \"./node_modules/pondjs/lib/lib/timeevent.js\");\n\nvar _timeevent2 = _interopRequireDefault(_timeevent);\n\nvar _indexedevent = __webpack_require__(/*! ../indexedevent */ \"./node_modules/pondjs/lib/lib/indexedevent.js\");\n\nvar _indexedevent2 = _interopRequireDefault(_indexedevent);\n\nvar _timerange = __webpack_require__(/*! ../timerange */ \"./node_modules/pondjs/lib/lib/timerange.js\");\n\nvar _timerange2 = _interopRequireDefault(_timerange);\n\nvar _timerangeevent = __webpack_require__(/*! ../timerangeevent */ \"./node_modules/pondjs/lib/lib/timerangeevent.js\");\n\nvar _timerangeevent2 = _interopRequireDefault(_timerangeevent);\n\nvar _pipeline = __webpack_require__(/*! ../pipeline */ \"./node_modules/pondjs/lib/lib/pipeline.js\");\n\nvar _util = __webpack_require__(/*! ../base/util */ \"./node_modules/pondjs/lib/lib/base/util.js\");\n\nvar _util2 = _interopRequireDefault(_util);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isSubclass(Base, X) {\n return Base === X || X.prototype === Base;\n} /**\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar Converter = function (_Processor) {\n (0, _inherits3.default)(Converter, _Processor);\n\n function Converter(arg1, options) {\n (0, _classCallCheck3.default)(this, Converter);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Converter.__proto__ || (0, _getPrototypeOf2.default)(Converter)).call(this, arg1, options));\n\n if (arg1 instanceof Converter) {\n var other = arg1;\n _this._convertTo = other._convertTo;\n _this._duration = other._duration;\n _this._durationString = other._durationString;\n _this._alignment = other._alignment;\n } else if ((0, _pipeline.isPipeline)(arg1)) {\n if (!_underscore2.default.has(options, \"type\")) {\n throw new Error(\"Converter: constructor needs 'type' in options\");\n }\n if (isSubclass(_timeevent2.default, options.type)) {\n _this._convertTo = options.type;\n } else if (isSubclass(_timerangeevent2.default, options.type) || isSubclass(_indexedevent2.default, options.type)) {\n _this._convertTo = options.type;\n if (options.duration && _underscore2.default.isString(options.duration)) {\n _this._duration = _util2.default.windowDuration(options.duration);\n _this._durationString = options.duration;\n }\n } else {\n throw Error(\"Unable to interpret type argument passed to Converter constructor\");\n }\n _this._alignment = options.alignment || \"center\";\n } else {\n throw new Error(\"Unknown arg to Converter constructor\", arg1);\n }\n return _this;\n }\n\n (0, _createClass3.default)(Converter, [{\n key: \"clone\",\n value: function clone() {\n return new Converter(this);\n }\n }, {\n key: \"convertEvent\",\n value: function convertEvent(event) {\n var T = this._convertTo;\n if (isSubclass(_timeevent2.default, T)) {\n return event;\n } else if (isSubclass(_timerangeevent2.default, T)) {\n var alignment = this._alignment;\n var begin = void 0,\n end = void 0;\n if (!this._duration) {\n throw new Error(\"Duration expected in converter\");\n }\n switch (alignment) {\n case \"front\":\n begin = event.timestamp();\n end = new Date(+event.timestamp() + this._duration);\n break;\n case \"center\":\n begin = new Date(+event.timestamp() - parseInt(this._duration / 2, 10));\n end = new Date(+event.timestamp() + parseInt(this._duration / 2, 10));\n break;\n case \"behind\":\n end = event.timestamp();\n begin = new Date(+event.timestamp() - this._duration);\n break;\n default:\n throw new Error(\"Unknown alignment of converter\");\n }\n var timeRange = new _timerange2.default([begin, end]);\n return new T(timeRange, event.data());\n } else if (isSubclass(_indexedevent2.default, T)) {\n var timestamp = event.timestamp();\n var indexString = _index2.default.getIndexString(this._durationString, timestamp);\n return new this._convertTo(indexString, event.data(), null);\n }\n }\n }, {\n key: \"convertTimeRangeEvent\",\n value: function convertTimeRangeEvent(event) {\n var T = this._convertTo;\n if (isSubclass(_timerangeevent2.default, T)) {\n return event;\n }\n if (isSubclass(_timeevent2.default, T)) {\n var alignment = this._alignment;\n var beginTime = event.begin();\n var endTime = event.end();\n var timestamp = void 0;\n switch (alignment) {\n case \"lag\":\n timestamp = beginTime;\n break;\n case \"center\":\n timestamp = new Date(parseInt((beginTime.getTime() + endTime.getTime()) / 2, 10));\n break;\n case \"lead\":\n timestamp = endTime;\n break;\n }\n return new T(timestamp, event.data());\n }\n if (isSubclass(_indexedevent2.default, T)) {\n throw new Error(\"Cannot convert TimeRangeEvent to an IndexedEvent\");\n }\n }\n }, {\n key: \"convertIndexedEvent\",\n value: function convertIndexedEvent(event) {\n var T = this._convertTo;\n if (isSubclass(_indexedevent2.default, T)) {\n return event;\n }\n if (isSubclass(_timeevent2.default, T)) {\n var alignment = this._alignment;\n var beginTime = event.begin();\n var endTime = event.end();\n var timestamp = void 0;\n switch (alignment) {\n case \"lag\":\n timestamp = beginTime;\n break;\n case \"center\":\n timestamp = new Date(parseInt((beginTime.getTime() + endTime.getTime()) / 2, 10));\n break;\n case \"lead\":\n timestamp = endTime;\n break;\n }\n return new T(timestamp, event.data());\n }\n if (isSubclass(_timerangeevent2.default, T)) {\n return new T(event.timerange(), event.data());\n }\n }\n\n /**\n * Output a converted event\n */\n\n }, {\n key: \"addEvent\",\n value: function addEvent(event) {\n if (this.hasObservers()) {\n var outputEvent = void 0;\n if (event instanceof _timerangeevent2.default) {\n outputEvent = this.convertTimeRangeEvent(event);\n } else if (event instanceof _indexedevent2.default) {\n outputEvent = this.convertIndexedEvent(event);\n } else if (event instanceof _timeevent2.default) {\n outputEvent = this.convertEvent(event);\n } else {\n throw new Error(\"Unknown event type received\");\n }\n this.emit(outputEvent);\n }\n }\n }]);\n return Converter;\n}(_processor2.default);\n\nexports.default = Converter;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/processors/converter.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/processors/derivator.js": +/*!*************************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/processors/derivator.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _processor = __webpack_require__(/*! ./processor */ \"./node_modules/pondjs/lib/lib/processors/processor.js\");\n\nvar _processor2 = _interopRequireDefault(_processor);\n\nvar _indexedevent = __webpack_require__(/*! ../indexedevent */ \"./node_modules/pondjs/lib/lib/indexedevent.js\");\n\nvar _indexedevent2 = _interopRequireDefault(_indexedevent);\n\nvar _timerangeevent = __webpack_require__(/*! ../timerangeevent */ \"./node_modules/pondjs/lib/lib/timerangeevent.js\");\n\nvar _timerangeevent2 = _interopRequireDefault(_timerangeevent);\n\nvar _pipeline = __webpack_require__(/*! ../pipeline */ \"./node_modules/pondjs/lib/lib/pipeline.js\");\n\nvar _util = __webpack_require__(/*! ../base/util */ \"./node_modules/pondjs/lib/lib/base/util.js\");\n\nvar _util2 = _interopRequireDefault(_util);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Simple processor generate the Rate of two Event objects and\n * emit them as a TimeRangeEvent. Can be used alone or chained\n * with the Align processor for snmp rates, etc.\n */\nvar Derivator = function (_Processor) {\n (0, _inherits3.default)(Derivator, _Processor);\n\n function Derivator(arg1, options) {\n (0, _classCallCheck3.default)(this, Derivator);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Derivator.__proto__ || (0, _getPrototypeOf2.default)(Derivator)).call(this, arg1, options));\n\n if (arg1 instanceof Derivator) {\n var other = arg1;\n _this._fieldSpec = other._fieldSpec;\n _this._allowNegative = other._allowNegative;\n } else if ((0, _pipeline.isPipeline)(arg1)) {\n var fieldSpec = options.fieldSpec,\n allowNegative = options.allowNegative;\n\n _this._fieldSpec = fieldSpec;\n _this._allowNegative = allowNegative;\n } else {\n throw new Error(\"Unknown arg to Derivator constructor\", arg1);\n }\n\n //\n // Internal members\n //\n _this._previous = null;\n\n // work out field specs\n if (_underscore2.default.isString(_this._fieldSpec)) {\n _this._fieldSpec = [_this._fieldSpec];\n } else if (!_this._fieldSpec) {\n _this._fieldSpec = [\"value\"];\n }\n return _this;\n }\n\n (0, _createClass3.default)(Derivator, [{\n key: \"clone\",\n value: function clone() {\n return new Derivator(this);\n }\n\n /**\n * Generate a new TimeRangeEvent containing the rate per second\n * between two events.\n */\n\n }, {\n key: \"getRate\",\n value: function getRate(event) {\n var _this2 = this;\n\n var d = new _immutable2.default.Map();\n\n var previousTime = this._previous.timestamp().getTime();\n var currentTime = event.timestamp().getTime();\n var deltaTime = (currentTime - previousTime) / 1000;\n\n this._fieldSpec.forEach(function (path) {\n var fieldPath = _util2.default.fieldPathToArray(path);\n var ratePath = fieldPath.slice();\n ratePath[ratePath.length - 1] += \"_rate\";\n\n var previousVal = _this2._previous.get(fieldPath);\n var currentVal = event.get(fieldPath);\n\n var rate = null;\n if (!_underscore2.default.isNumber(previousVal) || !_underscore2.default.isNumber(currentVal)) {\n console.warn(\"Path \" + fieldPath + \" contains a non-numeric value or does not exist\");\n } else {\n rate = (currentVal - previousVal) / deltaTime;\n }\n\n if (_this2._allowNegative === false && rate < 0) {\n // don't allow negative differentials in certain cases\n d = d.setIn(ratePath, null);\n } else {\n d = d.setIn(ratePath, rate);\n }\n });\n\n return new _timerangeevent2.default([previousTime, currentTime], d);\n }\n\n /**\n * Perform the fill operation on the event and emit.\n */\n\n }, {\n key: \"addEvent\",\n value: function addEvent(event) {\n if (event instanceof _timerangeevent2.default || event instanceof _indexedevent2.default) {\n throw new Error(\"TimeRangeEvent and IndexedEvent series can not be aligned.\");\n }\n\n if (this.hasObservers()) {\n if (!this._previous) {\n this._previous = event;\n return;\n }\n\n var outputEvent = this.getRate(event);\n this.emit(outputEvent);\n\n // The current event now becomes the previous event\n this._previous = event;\n }\n }\n }]);\n return Derivator;\n}(_processor2.default); /**\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*eslint no-console: 0 */\n\nexports.default = Derivator;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/processors/derivator.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/processors/filler.js": +/*!**********************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/processors/filler.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = __webpack_require__(/*! babel-runtime/helpers/toConsumableArray */ \"./node_modules/babel-runtime/helpers/toConsumableArray.js\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _getIterator2 = __webpack_require__(/*! babel-runtime/core-js/get-iterator */ \"./node_modules/babel-runtime/core-js/get-iterator.js\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = __webpack_require__(/*! babel-runtime/helpers/get */ \"./node_modules/babel-runtime/helpers/get.js\");\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _processor = __webpack_require__(/*! ./processor */ \"./node_modules/pondjs/lib/lib/processors/processor.js\");\n\nvar _processor2 = _interopRequireDefault(_processor);\n\nvar _pipeline = __webpack_require__(/*! ../pipeline */ \"./node_modules/pondjs/lib/lib/pipeline.js\");\n\nvar _util = __webpack_require__(/*! ../base/util */ \"./node_modules/pondjs/lib/lib/base/util.js\");\n\nvar _util2 = _interopRequireDefault(_util);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A processor that fills missing/invalid values in the event with\n * new values (zero, interpolated or padded).\n *\n * When doing a linear fill, Filler instances should be chained.\n *\n * If no fieldSpec is supplied, the default field \"value\" will be used.\n */\n/**\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*eslint no-console: 0 */\n\nvar Filler = function (_Processor) {\n (0, _inherits3.default)(Filler, _Processor);\n\n function Filler(arg1, options) {\n (0, _classCallCheck3.default)(this, Filler);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Filler.__proto__ || (0, _getPrototypeOf2.default)(Filler)).call(this, arg1, options));\n\n if (arg1 instanceof Filler) {\n var other = arg1;\n _this._fieldSpec = other._fieldSpec;\n _this._method = other._method;\n _this._limit = other._limit;\n } else if ((0, _pipeline.isPipeline)(arg1)) {\n var _options$fieldSpec = options.fieldSpec,\n fieldSpec = _options$fieldSpec === undefined ? null : _options$fieldSpec,\n _options$method = options.method,\n method = _options$method === undefined ? \"zero\" : _options$method,\n _options$limit = options.limit,\n limit = _options$limit === undefined ? null : _options$limit;\n\n _this._fieldSpec = fieldSpec;\n _this._method = method;\n _this._limit = limit;\n } else {\n throw new Error(\"Unknown arg to Filler constructor\", arg1);\n }\n\n //\n // Internal members\n //\n // state for pad to refer to previous event\n _this._previousEvent = null;\n\n // key count for zero and pad fill\n _this._keyCount = {};\n\n // special state for linear fill\n _this._lastGoodLinear = null;\n\n // cache of events pending linear fill\n _this._linearFillCache = [];\n\n //\n // Sanity checks\n //\n if (!_underscore2.default.contains([\"zero\", \"pad\", \"linear\"], _this._method)) {\n throw new Error(\"Unknown method \" + _this._method + \" passed to Filler\");\n }\n\n if (_this._limit && !_underscore2.default.isNumber(_this._limit)) {\n throw new Error(\"Limit supplied to fill() should be a number\");\n }\n\n if (_underscore2.default.isString(_this._fieldSpec)) {\n _this._fieldSpec = [_this._fieldSpec];\n } else if (_underscore2.default.isNull(_this._fieldSpec)) {\n _this._fieldSpec = [\"value\"];\n }\n\n // Special case: when using linear mode, only a single\n // column will be processed per instance\n if (_this._method === \"linear\" && _this._fieldSpec.length > 1) {\n throw new Error(\"Linear fill takes a path to a single column\");\n }\n return _this;\n }\n\n (0, _createClass3.default)(Filler, [{\n key: \"clone\",\n value: function clone() {\n return new Filler(this);\n }\n\n /**\n * Process and fill the values at the paths as apropos when the fill\n * method is either pad or zero.\n */\n\n }, {\n key: \"constFill\",\n value: function constFill(data) {\n var newData = data;\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this._fieldSpec), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var path = _step.value;\n\n var fieldPath = _util2.default.fieldPathToArray(path);\n var pathKey = fieldPath.join(\":\");\n\n //initialize a counter for this column\n if (!_underscore2.default.has(this._keyCount, pathKey)) {\n this._keyCount[pathKey] = 0;\n }\n\n // this is pointing at a path that does not exist\n if (!newData.hasIn(fieldPath)) {\n continue;\n }\n\n // Get the next value using the fieldPath\n var val = newData.getIn(fieldPath);\n\n if (_util2.default.isMissing(val)) {\n // Have we hit the limit?\n if (this._limit && this._keyCount[pathKey] >= this._limit) {\n continue;\n }\n\n if (this._method === \"zero\") {\n // set to zero\n newData = newData.setIn(fieldPath, 0);\n this._keyCount[pathKey]++;\n } else if (this._method === \"pad\") {\n // set to previous value\n if (!_underscore2.default.isNull(this._previousEvent)) {\n var prevVal = this._previousEvent.data().getIn(fieldPath);\n\n if (!_util2.default.isMissing(prevVal)) {\n newData = newData.setIn(fieldPath, prevVal);\n this._keyCount[pathKey]++;\n }\n }\n } else if (this._method === \"linear\") {\n //noop\n }\n } else {\n this._keyCount[pathKey] = 0;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return newData;\n }\n\n /**\n * Check to see if an event has good values when doing\n * linear fill since we need to keep a completely intact\n * event for the values.\n * While we are inspecting the data payload, make a note if\n * any of the paths are pointing at a list. Then it\n * will trigger that filling code later.\n */\n\n }, {\n key: \"isValidLinearEvent\",\n value: function isValidLinearEvent(event) {\n var valid = true;\n var fieldPath = _util2.default.fieldPathToArray(this._fieldSpec[0]);\n\n // Detect path that doesn't exist\n if (!event.data().hasIn(fieldPath)) {\n console.warn(\"path does not exist: \" + fieldPath);\n return valid;\n }\n\n var val = event.data().getIn(fieldPath);\n\n // Detect if missing or not a number\n if (_util2.default.isMissing(val) || !_underscore2.default.isNumber(val)) {\n valid = false;\n }\n return valid;\n }\n\n /**\n * This handles the linear filling. It returns a list of\n * zero or more events to be emitted.\n *\n * If an event is valid - it has valid values for all of\n * the field paths - it is cached as \"last good\" and\n * returned to be emitted. The return value is then a list\n * of one event.\n *\n * If an event has invalid values, it is cached to be\n * processed later and an empty list is returned.\n *\n * Additional invalid events will continue to be cached until\n * a new valid value is seen, then the cached events will\n * be filled and returned. That will be a list of indeterminate\n * length.\n */\n\n }, {\n key: \"linearFill\",\n value: function linearFill(event) {\n var _this2 = this;\n\n // See if the event is valid and also if it has any\n // list values to be filled.\n var isValidEvent = this.isValidLinearEvent(event);\n\n var events = [];\n if (isValidEvent && !this._linearFillCache.length) {\n // Valid event, no cached events, use as last good val\n this._lastGoodLinear = event;\n events.push(event);\n } else if (!isValidEvent && !_underscore2.default.isNull(this._lastGoodLinear)) {\n this._linearFillCache.push(event);\n\n // Check limit\n if (!_underscore2.default.isNull(this._limit) && this._linearFillCache.length >= this._limit) {\n // Flush the cache now because limit is reached\n this._linearFillCache.forEach(function (e) {\n _this2.emit(e);\n });\n\n // Reset\n this._linearFillCache = [];\n this._lastGoodLinear = null;\n }\n } else if (!isValidEvent && _underscore2.default.isNull(this._lastGoodLinear)) {\n //\n // An invalid event but we have not seen a good\n // event yet so there is nothing to start filling \"from\"\n // so just return and live with it.\n //\n events.push(event);\n } else if (isValidEvent && this._linearFillCache) {\n // Linear interpolation between last good and this event\n var eventList = [this._lastGoodLinear].concat((0, _toConsumableArray3.default)(this._linearFillCache), [event]);\n var interpolatedEvents = this.interpolateEventList(eventList);\n\n //\n // The first event in the returned list from interpolatedEvents\n // is our last good event. This event has already been emitted so\n // it is sliced off.\n //\n interpolatedEvents.slice(1).forEach(function (e) {\n events.push(e);\n });\n\n // Reset\n this._linearFillCache = [];\n this._lastGoodLinear = event;\n }\n\n return events;\n }\n\n /**\n * The fundamental linear interpolation workhorse code. Process\n * a list of events and return a new list. Does a pass for\n * every fieldSpec.\n *\n * This is abstracted out like this because we probably want\n * to interpolate a list of events not tied to a Collection.\n * A Pipeline result list, etc etc.\n *\n **/\n\n }, {\n key: \"interpolateEventList\",\n value: function interpolateEventList(events) {\n var prevValue = void 0;\n var prevTime = void 0;\n\n // new array of interpolated events for each field path\n var newEvents = [];\n\n var fieldPath = _util2.default.fieldPathToArray(this._fieldSpec[0]);\n\n // setup done, loop through the events\n for (var i = 0; i < events.length; i++) {\n var e = events[i];\n\n // Can't interpolate first or last event so just save it\n // as is and move on.\n if (i === 0) {\n prevValue = e.get(fieldPath);\n prevTime = e.timestamp().getTime();\n newEvents.push(e);\n continue;\n }\n\n if (i === events.length - 1) {\n newEvents.push(e);\n continue;\n }\n\n // Detect non-numeric value\n if (!_util2.default.isMissing(e.get(fieldPath)) && !_underscore2.default.isNumber(e.get(fieldPath))) {\n console.warn(\"linear requires numeric values - skipping this field_spec\");\n return events;\n }\n\n // Found a missing value so start calculating.\n if (_util2.default.isMissing(e.get(fieldPath))) {\n // Find the next valid value in the original events\n var ii = i + 1;\n var nextValue = null;\n var nextTime = null;\n while (_underscore2.default.isNull(nextValue) && ii < events.length) {\n var val = events[ii].get(fieldPath);\n if (!_util2.default.isMissing(val)) {\n nextValue = val;\n // exits loop\n nextTime = events[ii].timestamp().getTime();\n }\n ii++;\n }\n\n // Interpolate a new value to fill\n if (!_underscore2.default.isNull(prevValue) && ~_underscore2.default.isNull(nextValue)) {\n var currentTime = e.timestamp().getTime();\n if (nextTime === prevTime) {\n // If times are the same, just avg\n var newValue = (prevValue + nextValue) / 2;\n newEvents.push(e.setData(newValue));\n } else {\n var f = (currentTime - prevTime) / (nextTime - prevTime);\n var _newValue = prevValue + f * (nextValue - prevValue);\n var d = e.data().setIn(fieldPath, _newValue);\n newEvents.push(e.setData(d));\n }\n } else {\n newEvents.push(e);\n }\n } else {\n newEvents.push(e);\n }\n }\n\n return newEvents;\n }\n\n /**\n * Perform the fill operation on the event and emit.\n */\n\n }, {\n key: \"addEvent\",\n value: function addEvent(event) {\n if (this.hasObservers()) {\n var emitList = [];\n var d = event.data();\n if (this._method === \"zero\" || this._method === \"pad\") {\n var dd = this.constFill(d);\n var e = event.setData(dd);\n emitList.push(e);\n this._previousEvent = e;\n } else if (this._method === \"linear\") {\n this.linearFill(event).forEach(function (e) {\n emitList.push(e);\n });\n }\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(emitList), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _event = _step2.value;\n\n this.emit(_event);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n }\n }, {\n key: \"flush\",\n value: function flush() {\n if (this.hasObservers() && this._method == \"linear\") {\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(this._linearFillCache), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var event = _step3.value;\n\n this.emit(event);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n (0, _get3.default)(Filler.prototype.__proto__ || (0, _getPrototypeOf2.default)(Filler.prototype), \"flush\", this).call(this);\n }\n }]);\n return Filler;\n}(_processor2.default);\n\nexports.default = Filler;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/processors/filler.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/processors/filter.js": +/*!**********************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/processors/filter.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _processor = __webpack_require__(/*! ./processor */ \"./node_modules/pondjs/lib/lib/processors/processor.js\");\n\nvar _processor2 = _interopRequireDefault(_processor);\n\nvar _pipeline = __webpack_require__(/*! ../pipeline */ \"./node_modules/pondjs/lib/lib/pipeline.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A processor which takes an operator as its only option\n * and uses that to either output the event or skip the\n * event\n */\n/**\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar Filter = function (_Processor) {\n (0, _inherits3.default)(Filter, _Processor);\n\n function Filter(arg1, options) {\n (0, _classCallCheck3.default)(this, Filter);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Filter.__proto__ || (0, _getPrototypeOf2.default)(Filter)).call(this, arg1, options));\n\n if (arg1 instanceof Filter) {\n var other = arg1;\n _this._op = other._op;\n } else if ((0, _pipeline.isPipeline)(arg1)) {\n _this._op = options.op;\n } else {\n throw new Error(\"Unknown arg to Filter constructor\", arg1);\n }\n return _this;\n }\n\n (0, _createClass3.default)(Filter, [{\n key: \"clone\",\n value: function clone() {\n return new Filter(this);\n }\n\n /**\n * Output an event that is offset\n */\n\n }, {\n key: \"addEvent\",\n value: function addEvent(event) {\n if (this.hasObservers()) {\n if (this._op(event)) {\n this.emit(event);\n }\n }\n }\n }]);\n return Filter;\n}(_processor2.default);\n\nexports.default = Filter;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/processors/filter.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/processors/mapper.js": +/*!**********************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/processors/mapper.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _processor = __webpack_require__(/*! ./processor */ \"./node_modules/pondjs/lib/lib/processors/processor.js\");\n\nvar _processor2 = _interopRequireDefault(_processor);\n\nvar _pipeline = __webpack_require__(/*! ../pipeline */ \"./node_modules/pondjs/lib/lib/pipeline.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A processor which takes an operator as its only option\n * and uses that to either output a new event\n */\n/**\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar Mapper = function (_Processor) {\n (0, _inherits3.default)(Mapper, _Processor);\n\n function Mapper(arg1, options) {\n (0, _classCallCheck3.default)(this, Mapper);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Mapper.__proto__ || (0, _getPrototypeOf2.default)(Mapper)).call(this, arg1, options));\n\n if (arg1 instanceof Mapper) {\n var other = arg1;\n _this._op = other._op;\n } else if ((0, _pipeline.isPipeline)(arg1)) {\n _this._op = options.op;\n } else {\n throw new Error(\"Unknown arg to Mapper constructor\", arg1);\n }\n return _this;\n }\n\n (0, _createClass3.default)(Mapper, [{\n key: \"clone\",\n value: function clone() {\n return new Mapper(this);\n }\n\n /**\n * Output an event that is remapped\n */\n\n }, {\n key: \"addEvent\",\n value: function addEvent(event) {\n if (this.hasObservers()) {\n this.emit(this._op(event));\n }\n }\n }]);\n return Mapper;\n}(_processor2.default);\n\nexports.default = Mapper;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/processors/mapper.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/processors/offset.js": +/*!**********************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/processors/offset.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _processor = __webpack_require__(/*! ./processor */ \"./node_modules/pondjs/lib/lib/processors/processor.js\");\n\nvar _processor2 = _interopRequireDefault(_processor);\n\nvar _event = __webpack_require__(/*! ../event */ \"./node_modules/pondjs/lib/lib/event.js\");\n\nvar _event2 = _interopRequireDefault(_event);\n\nvar _pipeline = __webpack_require__(/*! ../pipeline */ \"./node_modules/pondjs/lib/lib/pipeline.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A simple processor used by the testing code to verify Pipeline behavior\n */\n/**\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar Offset = function (_Processor) {\n (0, _inherits3.default)(Offset, _Processor);\n\n function Offset(arg1, options) {\n (0, _classCallCheck3.default)(this, Offset);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Offset.__proto__ || (0, _getPrototypeOf2.default)(Offset)).call(this, arg1, options));\n\n if (arg1 instanceof Offset) {\n var other = arg1;\n _this._by = other._by;\n _this._fieldSpec = other._fieldSpec;\n } else if ((0, _pipeline.isPipeline)(arg1)) {\n _this._by = options.by || 1;\n _this._fieldSpec = options.fieldSpec;\n } else {\n throw new Error(\"Unknown arg to Offset constructor\", arg1);\n }\n return _this;\n }\n\n (0, _createClass3.default)(Offset, [{\n key: \"clone\",\n value: function clone() {\n return new Offset(this);\n }\n\n /**\n * Output an event that is offset\n */\n\n }, {\n key: \"addEvent\",\n value: function addEvent(event) {\n var _this2 = this;\n\n if (this.hasObservers()) {\n var selected = _event2.default.selector(event, this._fieldSpec);\n var data = {};\n _underscore2.default.each(selected.data().toJSON(), function (value, key) {\n var offsetValue = value + _this2._by;\n data[key] = offsetValue;\n });\n var outputEvent = event.setData(data);\n\n this.emit(outputEvent);\n }\n }\n }]);\n return Offset;\n}(_processor2.default);\n\nexports.default = Offset;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/processors/offset.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/processors/processor.js": +/*!*************************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/processors/processor.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = __webpack_require__(/*! babel-runtime/helpers/get */ \"./node_modules/babel-runtime/helpers/get.js\");\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _observable = __webpack_require__(/*! ../base/observable */ \"./node_modules/pondjs/lib/lib/base/observable.js\");\n\nvar _observable2 = _interopRequireDefault(_observable);\n\nvar _pipeline = __webpack_require__(/*! ../pipeline */ \"./node_modules/pondjs/lib/lib/pipeline.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction addPrevToChain(n, chain) {\n chain.push(n);\n if ((0, _pipeline.isPipeline)(n.prev())) {\n chain.push(n.prev().in());\n return chain;\n } else {\n return addPrevToChain(n.prev(), chain);\n }\n}\n\n/**\n * Base class for all Pipeline processors\n */\n\nvar Processor = function (_Observable) {\n (0, _inherits3.default)(Processor, _Observable);\n\n function Processor(arg1, options) {\n (0, _classCallCheck3.default)(this, Processor);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Processor.__proto__ || (0, _getPrototypeOf2.default)(Processor)).call(this));\n\n if ((0, _pipeline.isPipeline)(arg1)) {\n _this._pipeline = arg1;\n _this._prev = options.prev;\n }\n return _this;\n }\n\n (0, _createClass3.default)(Processor, [{\n key: \"prev\",\n value: function prev() {\n return this._prev;\n }\n }, {\n key: \"pipeline\",\n value: function pipeline() {\n return this._pipeline;\n }\n }, {\n key: \"chain\",\n value: function chain() {\n var chain = [this];\n if ((0, _pipeline.isPipeline)(this.prev())) {\n chain.push(this.prev().in());\n return chain;\n } else {\n return addPrevToChain(this.prev(), chain);\n }\n }\n }, {\n key: \"flush\",\n value: function flush() {\n (0, _get3.default)(Processor.prototype.__proto__ || (0, _getPrototypeOf2.default)(Processor.prototype), \"flush\", this).call(this);\n }\n }]);\n return Processor;\n}(_observable2.default);\n\nexports.default = Processor;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/processors/processor.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/processors/selector.js": +/*!************************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/processors/selector.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _processor = __webpack_require__(/*! ./processor */ \"./node_modules/pondjs/lib/lib/processors/processor.js\");\n\nvar _processor2 = _interopRequireDefault(_processor);\n\nvar _event = __webpack_require__(/*! ../event */ \"./node_modules/pondjs/lib/lib/event.js\");\n\nvar _event2 = _interopRequireDefault(_event);\n\nvar _pipeline = __webpack_require__(/*! ../pipeline */ \"./node_modules/pondjs/lib/lib/pipeline.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A processor which takes a fieldSpec as its only argument\n * and returns a new event with only those selected columns\n */\nvar Selector = function (_Processor) {\n (0, _inherits3.default)(Selector, _Processor);\n\n function Selector(arg1, options) {\n (0, _classCallCheck3.default)(this, Selector);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Selector.__proto__ || (0, _getPrototypeOf2.default)(Selector)).call(this, arg1, options));\n\n if (arg1 instanceof Selector) {\n var other = arg1;\n _this._fieldSpec = other._fieldSpec;\n } else if ((0, _pipeline.isPipeline)(arg1)) {\n _this._fieldSpec = options.fieldSpec;\n } else {\n throw new Error(\"Unknown arg to filter constructor\", arg1);\n }\n return _this;\n }\n\n (0, _createClass3.default)(Selector, [{\n key: \"clone\",\n value: function clone() {\n return new Selector(this);\n }\n }, {\n key: \"addEvent\",\n value: function addEvent(event) {\n if (this.hasObservers()) {\n this.emit(_event2.default.selector(event, this._fieldSpec));\n }\n }\n }]);\n return Selector;\n}(_processor2.default); /**\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexports.default = Selector;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/processors/selector.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/processors/taker.js": +/*!*********************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/processors/taker.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = __webpack_require__(/*! babel-runtime/helpers/get */ \"./node_modules/babel-runtime/helpers/get.js\");\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _processor = __webpack_require__(/*! ./processor */ \"./node_modules/pondjs/lib/lib/processors/processor.js\");\n\nvar _processor2 = _interopRequireDefault(_processor);\n\nvar _index = __webpack_require__(/*! ../index */ \"./node_modules/pondjs/lib/lib/index.js\");\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _pipeline = __webpack_require__(/*! ../pipeline */ \"./node_modules/pondjs/lib/lib/pipeline.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A processor which takes an operator as its only option\n * and uses that to either output the event or skip the\n * event\n */\n/**\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar Taker = function (_Processor) {\n (0, _inherits3.default)(Taker, _Processor);\n\n function Taker(arg1, options) {\n (0, _classCallCheck3.default)(this, Taker);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Taker.__proto__ || (0, _getPrototypeOf2.default)(Taker)).call(this, arg1, options));\n\n if (arg1 instanceof Taker) {\n var other = arg1;\n _this._limit = other._limit;\n _this._windowType = other._windowType;\n _this._windowDuration = other._windowDuration;\n _this._groupBy = other._groupBy;\n } else if ((0, _pipeline.isPipeline)(arg1)) {\n var pipeline = arg1;\n _this._limit = options.limit;\n _this._windowType = pipeline.getWindowType();\n _this._windowDuration = pipeline.getWindowDuration();\n _this._groupBy = pipeline.getGroupBy();\n } else {\n throw new Error(\"Unknown arg to Taker constructor\", arg1);\n }\n\n _this._count = {};\n return _this;\n }\n\n (0, _createClass3.default)(Taker, [{\n key: \"clone\",\n value: function clone() {\n return new Taker(this);\n }\n }, {\n key: \"flush\",\n value: function flush() {\n (0, _get3.default)(Taker.prototype.__proto__ || (0, _getPrototypeOf2.default)(Taker.prototype), \"flush\", this).call(this);\n }\n\n /**\n * Output an event that is offset\n */\n\n }, {\n key: \"addEvent\",\n value: function addEvent(event) {\n if (this.hasObservers()) {\n var timestamp = event.timestamp();\n\n var windowType = this._windowType;\n var windowKey = void 0;\n if (windowType === \"fixed\") {\n windowKey = _index2.default.getIndexString(this._windowDuration, timestamp);\n } else {\n windowKey = windowType;\n }\n var groupByKey = this._groupBy(event);\n var collectionKey = groupByKey ? windowKey + \"::\" + groupByKey : windowKey;\n\n if (!_underscore2.default.has(this._count, collectionKey)) {\n this._count[collectionKey] = 0;\n }\n\n if (this._count[collectionKey] < this._limit) {\n this.emit(event);\n }\n\n this._count[collectionKey]++;\n }\n }\n }]);\n return Taker;\n}(_processor2.default);\n\nexports.default = Taker;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/processors/taker.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/timeevent.js": +/*!**************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/timeevent.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(/*! babel-runtime/core-js/json/stringify */ \"./node_modules/babel-runtime/core-js/json/stringify.js\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _toConsumableArray2 = __webpack_require__(/*! babel-runtime/helpers/toConsumableArray */ \"./node_modules/babel-runtime/helpers/toConsumableArray.js\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _event = __webpack_require__(/*! ./event */ \"./node_modules/pondjs/lib/lib/event.js\");\n\nvar _event2 = _interopRequireDefault(_event);\n\nvar _util = __webpack_require__(/*! ./base/util */ \"./node_modules/pondjs/lib/lib/base/util.js\");\n\nvar _util2 = _interopRequireDefault(_util);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The creation of an TimeEvent is done by combining two parts:\n * * the timestamp\n * * the data\n *\n * To specify the data you can supply:\n\n * * a Javascript object of key/values. The object may contained nested data.\n * * an Immutable.Map\n * * a simple type such as an integer. This is a shorthand for supplying {\"value\": v}.\n *\n * Example:\n *\n * ```\n * const t = new Date(\"2015-04-22T03:30:00Z\");\n * const event1 = new TimeEvent(t, { a: 5, b: 6 });\n * ```\n */\n/*\n * Copyright (c) 2015, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar TimeEvent = function (_Event) {\n (0, _inherits3.default)(TimeEvent, _Event);\n\n /**\n * The creation of an TimeEvent is done by combining two parts:\n * the timestamp and the data.\n *\n * To construct you specify the timestamp as either:\n * - Javascript Date object\n * - a Moment, or\n * - millisecond timestamp: the number of ms since the UNIX epoch\n *\n * To specify the data you can supply either:\n * - a Javascript object containing key values pairs\n * - an Immutable.Map, or\n * - a simple type such as an integer. In the case of the simple type\n * this is a shorthand for supplying {\"value\": v}.\n */\n function TimeEvent(arg1, arg2) {\n (0, _classCallCheck3.default)(this, TimeEvent);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (TimeEvent.__proto__ || (0, _getPrototypeOf2.default)(TimeEvent)).call(this));\n\n if (arg1 instanceof TimeEvent) {\n var other = arg1;\n _this._d = other._d;\n return (0, _possibleConstructorReturn3.default)(_this);\n } else if (arg1 instanceof _immutable2.default.Map && arg1.has(\"time\") && arg1.has(\"data\")) {\n _this._d = arg1;\n return (0, _possibleConstructorReturn3.default)(_this);\n }\n var time = _util2.default.timestampFromArg(arg1);\n var data = _util2.default.dataFromArg(arg2);\n _this._d = new _immutable2.default.Map({ time: time, data: data });\n return _this;\n }\n\n /**\n * Returns the timestamp (as ms since the epoch)\n */\n\n\n (0, _createClass3.default)(TimeEvent, [{\n key: \"key\",\n value: function key() {\n return this.timestamp().getTime();\n }\n\n /**\n * Returns the Event as a JSON object, essentially:\n * {time: t, data: {key: value, ...}}\n * @return {Object} The event as JSON.\n */\n\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return { time: this.timestamp().getTime(), data: this.data().toJSON() };\n }\n\n /**\n * Returns a flat array starting with the timestamp, followed by the values.\n */\n\n }, {\n key: \"toPoint\",\n value: function toPoint() {\n return [this.timestamp().getTime()].concat((0, _toConsumableArray3.default)(_underscore2.default.values(this.data().toJSON())));\n }\n\n /**\n * The timestamp of this data, in UTC time, as a string.\n */\n\n }, {\n key: \"timestampAsUTCString\",\n value: function timestampAsUTCString() {\n return this.timestamp().toUTCString();\n }\n\n /**\n * The timestamp of this data, in Local time, as a string.\n */\n\n }, {\n key: \"timestampAsLocalString\",\n value: function timestampAsLocalString() {\n return this.timestamp().toString();\n }\n\n /**\n * The timestamp of this data\n */\n\n }, {\n key: \"timestamp\",\n value: function timestamp() {\n return this._d.get(\"time\");\n }\n\n /**\n * The begin time of this Event, which will be just the timestamp\n */\n\n }, {\n key: \"begin\",\n value: function begin() {\n return this.timestamp();\n }\n\n /**\n * The end time of this Event, which will be just the timestamp\n */\n\n }, {\n key: \"end\",\n value: function end() {\n return this.timestamp();\n }\n\n /**\n * Turn the Collection data into a string\n * @return {string} The collection as a string\n */\n\n }, {\n key: \"stringify\",\n value: function stringify() {\n return (0, _stringify2.default)(this.data());\n }\n }]);\n return TimeEvent;\n}(_event2.default);\n\nexports.default = TimeEvent;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/timeevent.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/timerange.js": +/*!**************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/timerange.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(/*! babel-runtime/core-js/json/stringify */ \"./node_modules/babel-runtime/core-js/json/stringify.js\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _moment = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\nA time range is a simple representation of a begin and end time, used\nto maintain consistency across an application.\n\n### Construction\n\nYou can define a TimeRange with moments, Javascript Date objects\nor ms since UNIX epoch. Here we construct one with two moments:\n\n```js\nvar fmt = \"YYYY-MM-DD HH:mm\";\nvar beginTime = moment(\"2012-01-11 11:11\", fmt);\nvar endTime = moment(\"2012-02-22 12:12\", fmt);\nvar range = new TimeRange(beginTime, endTime);\n```\n\nor with ms times:\n\n```js\nvar range = new TimeRange([1326309060000, 1329941520000]);\n```\n\n */\nvar TimeRange = function () {\n /**\n * Builds a new TimeRange which may be of several different formats:\n * - Another TimeRange (copy constructor)\n * - An Immutable.List containing two Dates.\n * - A Javascript array containing two Date or ms timestamps\n * - Two arguments, begin and end, each of which may be a Data,\n * a Moment, or a ms timestamp.\n */\n function TimeRange(arg1, arg2) {\n (0, _classCallCheck3.default)(this, TimeRange);\n\n if (arg1 instanceof TimeRange) {\n var other = arg1;\n this._range = other._range;\n } else if (arg1 instanceof _immutable2.default.List) {\n var rangeList = arg1;\n this._range = rangeList;\n } else if (_underscore2.default.isArray(arg1)) {\n var rangeArray = arg1;\n this._range = new _immutable2.default.List([new Date(rangeArray[0]), new Date(rangeArray[1])]);\n } else {\n var b = arg1;\n var e = arg2;\n if (_underscore2.default.isDate(b) && _underscore2.default.isDate(e)) {\n this._range = new _immutable2.default.List([new Date(b.getTime()), new Date(e.getTime())]);\n } else if (_moment2.default.isMoment(b) && _moment2.default.isMoment(e)) {\n this._range = new _immutable2.default.List([new Date(b.valueOf()), new Date(e.valueOf())]);\n } else if (_underscore2.default.isNumber(b) && _underscore2.default.isNumber(e)) {\n this._range = new _immutable2.default.List([new Date(b), new Date(e)]);\n }\n }\n }\n\n /**\n * Returns the internal range, which is an Immutable List containing\n * begin and end times.\n *\n * @return {Immutable.List} List containing the begin and end of the time range.\n */\n\n\n (0, _createClass3.default)(TimeRange, [{\n key: \"range\",\n value: function range() {\n return this._range;\n }\n\n //\n // Serialize\n //\n /**\n * Returns the TimeRange as JSON, which will be a Javascript array\n * of two ms timestamps.\n *\n * @return {number[]} JSON representation of the TimeRange\n */\n\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return [this.begin().getTime(), this.end().getTime()];\n }\n\n /**\n * Returns the TimeRange as a string, useful for serialization.\n *\n * @return {string} String representation of the TimeRange\n */\n\n }, {\n key: \"toString\",\n value: function toString() {\n return (0, _stringify2.default)(this.toJSON());\n }\n\n /**\n * Returns the TimeRange as a string expressed in local time\n *\n * @return {string} String representation of the TimeRange\n */\n\n }, {\n key: \"toLocalString\",\n value: function toLocalString() {\n return \"[\" + this.begin() + \", \" + this.end() + \"]\";\n }\n\n /**\n * Returns the TimeRange as a string expressed in UTC time\n *\n * @return {string} String representation of the TimeRange\n */\n\n }, {\n key: \"toUTCString\",\n value: function toUTCString() {\n return \"[\" + this.begin().toUTCString() + \", \" + this.end().toUTCString() + \"]\";\n }\n\n /**\n * Returns a human friendly version of the TimeRange, e.g.\n * \"Aug 1, 2014 05:19:59 am to Aug 1, 2014 07:41:06 am\"\n *\n * @return {string} Human friendly string representation of the TimeRange\n */\n\n }, {\n key: \"humanize\",\n value: function humanize() {\n var begin = (0, _moment2.default)(this.begin());\n var end = (0, _moment2.default)(this.end());\n var beginStr = begin.format(\"MMM D, YYYY hh:mm:ss a\");\n var endStr = end.format(\"MMM D, YYYY hh:mm:ss a\");\n\n return beginStr + \" to \" + endStr;\n }\n\n /**\n * Returns a human friendly version of the TimeRange\n * @example\n * \"a few seconds ago to a month ago\"\n *\n * @return {string} Human friendly string representation of the TimeRange\n */\n\n }, {\n key: \"relativeString\",\n value: function relativeString() {\n var begin = (0, _moment2.default)(this.begin());\n var end = (0, _moment2.default)(this.end());\n return begin.fromNow() + \" to \" + end.fromNow();\n }\n\n /**\n * Returns the begin time of the TimeRange.\n *\n * @return {Date} The begin time of the TimeRange\n */\n\n }, {\n key: \"begin\",\n value: function begin() {\n return this._range.get(0);\n }\n\n /**\n * Returns the end time of the TimeRange.\n *\n * @return {Date} The end time of the TimeRange\n */\n\n }, {\n key: \"end\",\n value: function end() {\n return this._range.get(1);\n }\n\n /**\n * Sets a new begin time on the TimeRange. The result will be\n * a new TimeRange.\n *\n * @param {Date} t Time to set the begin time to\n * @return {TimeRange} The new mutated TimeRange\n */\n\n }, {\n key: \"setBegin\",\n value: function setBegin(t) {\n return new TimeRange(this._range.set(0, t));\n }\n\n /**\n * Sets a new end time on the TimeRange. The result will be\n * a new TimeRange.\n *\n * @param {Date} t Time to set the end time to\n * @return {TimeRange} The new mutated TimeRange\n */\n\n }, {\n key: \"setEnd\",\n value: function setEnd(t) {\n return new TimeRange(this._range.set(1, t));\n }\n\n /**\n * Returns if the two TimeRanges can be considered equal,\n * in that they have the same times.\n *\n * @param {TimeRange} other The TimeRange to compare to\n * @return {boolean} Result\n */\n\n }, {\n key: \"equals\",\n value: function equals(other) {\n return this.begin().getTime() === other.begin().getTime() && this.end().getTime() === other.end().getTime();\n }\n\n /**\n * Returns true if other is completely inside this.\n *\n * @param {TimeRange} other The TimeRange to compare to\n * @return {boolean} Result\n */\n\n }, {\n key: \"contains\",\n value: function contains(other) {\n if (_underscore2.default.isDate(other)) {\n return this.begin() <= other && this.end() >= other;\n } else {\n return this.begin() <= other.begin() && this.end() >= other.end();\n }\n return false;\n }\n\n /**\n * Returns true if this TimeRange is completely within the supplied\n * other TimeRange.\n *\n * @param {TimeRange} other The TimeRange to compare to\n * @return {boolean} Result\n */\n\n }, {\n key: \"within\",\n value: function within(other) {\n return this.begin() >= other.begin() && this.end() <= other.end();\n }\n\n /**\n * Returns true if the passed in other TimeRange overlaps this time Range.\n *\n * @param {TimeRange} other The TimeRange to compare to\n * @return {boolean} Result\n */\n\n }, {\n key: \"overlaps\",\n value: function overlaps(other) {\n if (this.contains(other.begin()) && !this.contains(other.end()) || this.contains(other.end()) && !this.contains(other.begin())) {\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Returns true if the passed in other Range in no way\n * overlaps this time Range.\n *\n * @param {TimeRange} other The TimeRange to compare to\n * @return {boolean} Result\n */\n\n }, {\n key: \"disjoint\",\n value: function disjoint(other) {\n return this.end() < other.begin() || this.begin() > other.end();\n }\n\n /**\n * @param {TimeRange} other The TimeRange to extend with\n * @return {TimeRange} a new Timerange which covers the extents of this and\n * other combined.\n */\n\n }, {\n key: \"extents\",\n value: function extents(other) {\n var b = this.begin() < other.begin() ? this.begin() : other.begin();\n var e = this.end() > other.end() ? this.end() : other.end();\n return new TimeRange(new Date(b.getTime()), new Date(e.getTime()));\n }\n\n /**\n * @param {TimeRange} other The TimeRange to intersect with\n * @return {TimeRange} A new TimeRange which represents the intersection\n * (overlapping) part of this and other.\n */\n\n }, {\n key: \"intersection\",\n value: function intersection(other) {\n if (this.disjoint(other)) {\n return undefined;\n }\n var b = this.begin() > other.begin() ? this.begin() : other.begin();\n var e = this.end() < other.end() ? this.end() : other.end();\n return new TimeRange(new Date(b.getTime()), new Date(e.getTime()));\n }\n\n /**\n * @return {number} The duration of the TimeRange in milliseconds\n */\n\n }, {\n key: \"duration\",\n value: function duration() {\n return this.end().getTime() - this.begin().getTime();\n }\n\n /**\n * @return {string} A user friendly version of the duration.\n */\n\n }, {\n key: \"humanizeDuration\",\n value: function humanizeDuration() {\n return _moment2.default.duration(this.duration()).humanize();\n }\n\n //\n // Static TimeRange creators\n //\n /**\n * @return {TimeRange} The last day, as a TimeRange\n */\n\n }], [{\n key: \"lastDay\",\n value: function lastDay() {\n var endTime = (0, _moment2.default)();\n var beginTime = endTime.clone().subtract(24, \"hours\");\n return new TimeRange(beginTime, endTime);\n }\n\n /**\n * @return {TimeRange} The last seven days, as a TimeRange\n */\n\n }, {\n key: \"lastSevenDays\",\n value: function lastSevenDays() {\n var endTime = (0, _moment2.default)();\n var beginTime = endTime.clone().subtract(7, \"days\");\n return new TimeRange(beginTime, endTime);\n }\n\n /**\n * @return {TimeRange} The last thirty days, as a TimeRange\n */\n\n }, {\n key: \"lastThirtyDays\",\n value: function lastThirtyDays() {\n var endTime = (0, _moment2.default)();\n var beginTime = endTime.clone().subtract(30, \"days\");\n return new TimeRange(beginTime, endTime);\n }\n\n /**\n * @return {TimeRange} The last month, as a TimeRange\n */\n\n }, {\n key: \"lastMonth\",\n value: function lastMonth() {\n var endTime = (0, _moment2.default)();\n var beginTime = endTime.clone().subtract(1, \"month\");\n return new TimeRange(beginTime, endTime);\n }\n\n /**\n * @return {TimeRange} The last 90 days, as a TimeRange\n */\n\n }, {\n key: \"lastNinetyDays\",\n value: function lastNinetyDays() {\n var endTime = (0, _moment2.default)();\n var beginTime = endTime.clone().subtract(90, \"days\");\n return new TimeRange(beginTime, endTime);\n }\n\n /**\n * @return {TimeRange} The last year, as a TimeRange\n */\n\n }, {\n key: \"lastYear\",\n value: function lastYear() {\n var endTime = (0, _moment2.default)();\n var beginTime = endTime.clone().subtract(1, \"year\");\n return new TimeRange(beginTime, endTime);\n }\n }]);\n return TimeRange;\n}(); /*\n * Copyright (c) 2015-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexports.default = TimeRange;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/timerange.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/timerangeevent.js": +/*!*******************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/timerangeevent.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = __webpack_require__(/*! babel-runtime/helpers/toConsumableArray */ \"./node_modules/babel-runtime/helpers/toConsumableArray.js\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _event = __webpack_require__(/*! ./event */ \"./node_modules/pondjs/lib/lib/event.js\");\n\nvar _event2 = _interopRequireDefault(_event);\n\nvar _util = __webpack_require__(/*! ./base/util */ \"./node_modules/pondjs/lib/lib/base/util.js\");\n\nvar _util2 = _interopRequireDefault(_util);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A `TimeRangeEvent` uses a `TimeRange` to specify the range over\n * which the event occurs and maps that to a data object representing\n * some measurements or metrics during that time range.\n *\n * You supply the timerange as a `TimeRange` object.\n *\n * The data is also specified during construction and maybe either:\n * 1) a Javascript object or simple type\n * 2) an Immutable.Map.\n * 3) Simple measurement\n *\n * If an Javascript object is provided it will be stored internally as an\n * Immutable Map. If the data provided is some other simple type (such as an\n * integer) then it will be equivalent to supplying an object of {value: data}.\n * Data may also be undefined.\n *\n * ```\n * const e = new TimeRangeEvent(timerange, data);\n * ```\n *\n * To get the data out of an TimeRangeEvent instance use `data()`.\n * It will return an Immutable.Map. Alternatively you can call `toJSON()`\n * to return a Javascript object representation of the data, while\n * `toString()` will serialize the entire event to a string.\n *\n * **Example:**\n *\n * Given some source of data that looks like this:\n *\n * ```json\n * const event = {\n * \"start_time\": \"2015-04-22T03:30:00Z\",\n * \"end_time\": \"2015-04-22T13:00:00Z\",\n * \"description\": \"At 13:33 pacific circuit 06519 went down.\",\n * \"title\": \"STAR-CR5 - Outage\",\n * \"completed\": true,\n * \"external_ticket\": \"\",\n * \"esnet_ticket\": \"ESNET-20150421-013\",\n * \"organization\": \"Internet2 / Level 3\",\n * \"type\": \"U\"\n * }\n * ```\n *\n * We first extract the begin and end times to build a TimeRange:\n *\n * ```js\n * let b = new Date(event.start_time);\n * let e = new Date(event.end_time);\n * let timerange = new TimeRange(b, e);\n * ```\n *\n * Then we combine the TimeRange and the event itself to create the Event.\n *\n * ```js\n * let outageEvent = new TimeRangeEvent(timerange, sampleEvent);\n * ```\n *\n * Once we have an event we can get access the time range with:\n *\n * ```js\n * outageEvent.begin().getTime() // 1429673400000\n * outageEvent.end().getTime()) // 1429707600000\n * outageEvent.humanizeDuration()) // \"10 hours\"\n * ```\n *\n * And we can access the data like so:\n *\n * ```js\n * outageEvent.get(\"title\") // \"STAR-CR5 - Outage\"\n * ```\n */\n/*\n * Copyright (c) 2016-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar TimeRangeEvent = function (_Event) {\n (0, _inherits3.default)(TimeRangeEvent, _Event);\n\n /**\n * The creation of an TimeRangeEvent is done by combining two parts:\n * the timerange and the data.\n *\n * To construct you specify a TimeRange, along with the data.\n *\n * To specify the data you can supply either:\n * - a Javascript object containing key values pairs\n * - an Immutable.Map, or\n * - a simple type such as an integer. In the case of the simple type\n * this is a shorthand for supplying {\"value\": v}.\n */\n function TimeRangeEvent(arg1, arg2) {\n (0, _classCallCheck3.default)(this, TimeRangeEvent);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (TimeRangeEvent.__proto__ || (0, _getPrototypeOf2.default)(TimeRangeEvent)).call(this));\n\n if (arg1 instanceof TimeRangeEvent) {\n var other = arg1;\n _this._d = other._d;\n return (0, _possibleConstructorReturn3.default)(_this);\n } else if (arg1 instanceof _immutable2.default.Map) {\n _this._d = arg1;\n return (0, _possibleConstructorReturn3.default)(_this);\n }\n var range = _util2.default.timeRangeFromArg(arg1);\n var data = _util2.default.dataFromArg(arg2);\n _this._d = new _immutable2.default.Map({ range: range, data: data });\n return _this;\n }\n\n /**\n * Returns the timerange as a string\n */\n\n\n (0, _createClass3.default)(TimeRangeEvent, [{\n key: \"key\",\n value: function key() {\n return +this.timerange().begin() + \",\" + +this.timerange().end();\n }\n\n /**\n * Returns the TimeRangeEvent as a JSON object, converting all\n * Immutable structures in the process.\n */\n\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n timerange: this.timerange().toJSON(),\n data: this.data().toJSON()\n };\n }\n\n /**\n * Returns a flat array starting with the timestamp, followed by the values.\n */\n\n }, {\n key: \"toPoint\",\n value: function toPoint() {\n return [this.timerange().toJSON()].concat((0, _toConsumableArray3.default)(_underscore2.default.values(this.data().toJSON())));\n }\n\n /**\n * The timerange of this data as a `TimeRange` object\n * @return {TimeRange} TimeRange of this data.\n */\n\n }, {\n key: \"timerange\",\n value: function timerange() {\n return this._d.get(\"range\");\n }\n\n /**\n * The TimeRange of this event, in UTC, as a string.\n * @return {string} TimeRange of this data.\n */\n\n }, {\n key: \"timerangeAsUTCString\",\n value: function timerangeAsUTCString() {\n return this.timerange().toUTCString();\n }\n\n /**\n * The TimeRange of this event, in Local time, as a string.\n * @return {string} TimeRange of this data.\n */\n\n }, {\n key: \"timerangeAsLocalString\",\n value: function timerangeAsLocalString() {\n return this.timerange().toLocalString();\n }\n\n /**\n * The begin time of this Event\n * @return {Data} Begin time\n */\n\n }, {\n key: \"begin\",\n value: function begin() {\n return this.timerange().begin();\n }\n\n /**\n * The end time of this Event\n * @return {Data} End time\n */\n\n }, {\n key: \"end\",\n value: function end() {\n return this.timerange().end();\n }\n\n /**\n * Alias for the begin() time.\n * @return {Data} Time representing this Event\n */\n\n }, {\n key: \"timestamp\",\n value: function timestamp() {\n return this.begin();\n }\n\n /**\n * A human friendly version of the duration of this event\n */\n\n }, {\n key: \"humanizeDuration\",\n value: function humanizeDuration() {\n return this.timerange().humanizeDuration();\n }\n }]);\n return TimeRangeEvent;\n}(_event2.default);\n\nexports.default = TimeRangeEvent;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/timerangeevent.js?"); + +/***/ }), + +/***/ "./node_modules/pondjs/lib/lib/timeseries.js": +/*!***************************************************!*\ + !*** ./node_modules/pondjs/lib/lib/timeseries.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"./node_modules/babel-runtime/helpers/extends.js\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"./node_modules/babel-runtime/regenerator/index.js\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _stringify = __webpack_require__(/*! babel-runtime/core-js/json/stringify */ \"./node_modules/babel-runtime/core-js/json/stringify.js\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _getIterator2 = __webpack_require__(/*! babel-runtime/core-js/get-iterator */ \"./node_modules/babel-runtime/core-js/get-iterator.js\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _toConsumableArray2 = __webpack_require__(/*! babel-runtime/helpers/toConsumableArray */ \"./node_modules/babel-runtime/helpers/toConsumableArray.js\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _toArray2 = __webpack_require__(/*! babel-runtime/helpers/toArray */ \"./node_modules/babel-runtime/helpers/toArray.js\");\n\nvar _toArray3 = _interopRequireDefault(_toArray2);\n\nvar _objectWithoutProperties2 = __webpack_require__(/*! babel-runtime/helpers/objectWithoutProperties */ \"./node_modules/babel-runtime/helpers/objectWithoutProperties.js\");\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n\nvar _immutable2 = _interopRequireDefault(_immutable);\n\nvar _collection = __webpack_require__(/*! ./collection */ \"./node_modules/pondjs/lib/lib/collection.js\");\n\nvar _collection2 = _interopRequireDefault(_collection);\n\nvar _index = __webpack_require__(/*! ./index */ \"./node_modules/pondjs/lib/lib/index.js\");\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _event = __webpack_require__(/*! ./event */ \"./node_modules/pondjs/lib/lib/event.js\");\n\nvar _event2 = _interopRequireDefault(_event);\n\nvar _timeevent = __webpack_require__(/*! ./timeevent */ \"./node_modules/pondjs/lib/lib/timeevent.js\");\n\nvar _timeevent2 = _interopRequireDefault(_timeevent);\n\nvar _timerangeevent = __webpack_require__(/*! ./timerangeevent */ \"./node_modules/pondjs/lib/lib/timerangeevent.js\");\n\nvar _timerangeevent2 = _interopRequireDefault(_timerangeevent);\n\nvar _indexedevent = __webpack_require__(/*! ./indexedevent */ \"./node_modules/pondjs/lib/lib/indexedevent.js\");\n\nvar _indexedevent2 = _interopRequireDefault(_indexedevent);\n\nvar _pipeline = __webpack_require__(/*! ./pipeline.js */ \"./node_modules/pondjs/lib/lib/pipeline.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction buildMetaData(meta) {\n var d = meta ? meta : {};\n\n // Name\n d.name = meta.name ? meta.name : \"\";\n\n // Index\n if (meta.index) {\n if (_underscore2.default.isString(meta.index)) {\n d.index = new _index2.default(meta.index);\n } else if (meta.index instanceof _index2.default) {\n d.index = meta.index;\n }\n }\n\n // UTC or Local time\n d.utc = true;\n if (_underscore2.default.isBoolean(meta.utc)) {\n d.utc = meta.utc;\n }\n\n return new _immutable2.default.Map(d);\n}\n\n/**\n * A `TimeSeries` represents a series of events, with each event being a combination of:\n *\n * - time (or `TimeRange`, or `Index`)\n * - data - corresponding set of key/values.\n *\n * ### Construction\n *\n * Currently you can initialize a `TimeSeries` with either a list of events, or with a data format that looks like this:\n *\n * ```javascript\n * const data = {\n * name: \"trafficc\",\n * columns: [\"time\", \"value\"],\n * points: [\n * [1400425947000, 52],\n * [1400425948000, 18],\n * [1400425949000, 26],\n * [1400425950000, 93],\n * ...\n * ]\n * };\n * ```\n *\n * To create a new TimeSeries object from the above format, simply use the constructor:\n *\n * ```javascript\n * const series = new TimeSeries(data);\n * ```\n *\n * The format of the data is as follows:\n *\n * - **name** - optional, but a good practice\n * - **columns** - are necessary and give labels to the data in the points.\n * - **points** - are an array of tuples. Each row is at a different time (or timerange), and each value corresponds to the column labels.\n *\n * As just hinted at, the first column may actually be:\n *\n * - \"time\"\n * - \"timeRange\" represented by a `TimeRange`\n * - \"index\" - a time range represented by an `Index`. By using an index it is possible, for example, to refer to a specific month:\n *\n * ```javascript\n * const availabilityData = {\n * name: \"Last 3 months availability\",\n * columns: [\"index\", \"uptime\"],\n * points: [\n * [\"2015-06\", \"100%\"], // <-- 2015-06 specified here represents June 2015\n * [\"2015-05\", \"92%\"],\n * [\"2015-04\", \"87%\"],\n * ]\n * };\n * ```\n *\n * Alternatively, you can construct a `TimeSeries` with a list of events.\n * These may be `TimeEvents`, `TimeRangeEvents` or `IndexedEvents`. Here's an example of that:\n *\n * ```javascript\n * const events = [];\n * events.push(new TimeEvent(new Date(2015, 7, 1), {value: 27}));\n * events.push(new TimeEvent(new Date(2015, 8, 1), {value: 29}));\n * const series = new TimeSeries({\n * name: \"avg temps\",\n * events: events\n * });\n * ```\n *\n * ### Nested data\n *\n * The values do not have to be simple types like the above examples. Here's an\n * example where each value is itself an object with \"in\" and \"out\" keys:\n *\n * ```javascript\n * const series = new TimeSeries({\n * name: \"Map Traffic\",\n * columns: [\"time\", \"NASA_north\", \"NASA_south\"],\n * points: [\n * [1400425951000, {in: 100, out: 200}, {in: 145, out: 135}],\n * [1400425952000, {in: 200, out: 400}, {in: 146, out: 142}],\n * [1400425953000, {in: 300, out: 600}, {in: 147, out: 158}],\n * [1400425954000, {in: 400, out: 800}, {in: 155, out: 175}],\n * ]\n * });\n * ```\n *\n * Complex data is stored in an Immutable structure. To get a value out of nested\n * data like this you will get the event you want (by row), as usual, and then use\n * `get()` to fetch the value by column name. The result of this call will be a\n * JSON copy of the Immutable data so you can query deeper in the usual way:\n *\n * ```javascript\n * series.at(0).get(\"NASA_north\")[\"in\"] // 200`\n * ```\n *\n * It is then possible to use a value mapper function when calculating different\n * properties. For example, to get the average \"in\" value of the NASA_north column:\n *\n * ```javascript\n * series.avg(\"NASA_north\", d => d.in); // 250\n * ```\n */\n/*\n * Copyright (c) 2015-2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar TimeSeries = function () {\n function TimeSeries(arg) {\n (0, _classCallCheck3.default)(this, TimeSeries);\n\n this._collection = null;\n // Collection\n this._data = null;\n\n // Meta data\n if (arg instanceof TimeSeries) {\n //\n // Copy another TimeSeries\n //\n var other = arg;\n this._data = other._data;\n this._collection = other._collection;\n } else if (_underscore2.default.isObject(arg)) {\n //\n // TimeSeries(object data) where data may be:\n // { \"events\": [event-1, event-2, ..., event-n]}\n // or\n // { \"columns\": [time|timerange|index, column-1, ..., column-n]\n // \"points\": [\n // [t1, v1, v2, ..., v2],\n // [t2, v1, v2, ..., vn],\n // ...\n // ]\n // }\n var obj = arg;\n\n if (_underscore2.default.has(obj, \"events\")) {\n //\n // Initialized from an event list\n //\n var events = obj.events,\n meta1 = (0, _objectWithoutProperties3.default)(obj, [\"events\"]);\n //eslint-disable-line\n\n this._collection = new _collection2.default(events);\n this._data = buildMetaData(meta1);\n } else if (_underscore2.default.has(obj, \"collection\")) {\n //\n // Initialized from a Collection\n //\n var collection = obj.collection,\n meta3 = (0, _objectWithoutProperties3.default)(obj, [\"collection\"]);\n //eslint-disable-line\n\n this._collection = collection;\n this._data = buildMetaData(meta3);\n } else if (_underscore2.default.has(obj, \"columns\") && _underscore2.default.has(obj, \"points\")) {\n //\n // Initialized from the wire format\n //\n var columns = obj.columns,\n points = obj.points,\n _obj$utc = obj.utc,\n utc = _obj$utc === undefined ? true : _obj$utc,\n meta2 = (0, _objectWithoutProperties3.default)(obj, [\"columns\", \"points\", \"utc\"]);\n //eslint-disable-line\n\n var _columns = (0, _toArray3.default)(columns),\n eventKey = _columns[0],\n eventFields = _columns.slice(1);\n\n var _events = points.map(function (point) {\n var _point = (0, _toArray3.default)(point),\n t = _point[0],\n eventValues = _point.slice(1);\n\n var d = _underscore2.default.object(eventFields, eventValues);\n var options = utc;\n switch (eventKey) {\n case \"time\":\n return new _timeevent2.default(t, d, options);\n case \"index\":\n return new _indexedevent2.default(t, d, options);\n case \"timerange\":\n return new _timerangeevent2.default(t, d, options);\n default:\n throw new Error(\"Unknown event type\");\n }\n });\n\n this._collection = new _collection2.default(_events);\n this._data = buildMetaData(meta2);\n }\n\n if (!this._collection.isChronological()) {\n throw new Error(\"TimeSeries was passed non-chronological events\");\n }\n }\n }\n\n //\n // Serialize\n //\n /**\n * Turn the TimeSeries into regular javascript objects\n */\n\n\n (0, _createClass3.default)(TimeSeries, [{\n key: \"toJSON\",\n value: function toJSON() {\n var e = this.atFirst();\n if (!e) {\n return;\n }\n\n var columns = void 0;\n if (e instanceof _timeevent2.default) {\n columns = [\"time\"].concat((0, _toConsumableArray3.default)(this.columns()));\n } else if (e instanceof _timerangeevent2.default) {\n columns = [\"timerange\"].concat((0, _toConsumableArray3.default)(this.columns()));\n } else if (e instanceof _indexedevent2.default) {\n columns = [\"index\"].concat((0, _toConsumableArray3.default)(this.columns()));\n }\n\n var points = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this._collection.events()), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _e = _step.value;\n\n points.push(_e.toPoint());\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return _underscore2.default.extend(this._data.toJSON(), { columns: columns, points: points });\n }\n\n /**\n * Represent the TimeSeries as a string\n */\n\n }, {\n key: \"toString\",\n value: function toString() {\n return (0, _stringify2.default)(this.toJSON());\n }\n\n /**\n * Returns the extents of the TimeSeries as a TimeRange.\n */\n\n }, {\n key: \"timerange\",\n value: function timerange() {\n return this._collection.range();\n }\n\n /**\n * Alias for `timerange()`\n */\n\n }, {\n key: \"range\",\n value: function range() {\n return this.timerange();\n }\n\n /**\n * Gets the earliest time represented in the TimeSeries.\n *\n * @return {Date} Begin time\n */\n\n }, {\n key: \"begin\",\n value: function begin() {\n return this.range().begin();\n }\n\n /**\n * Gets the latest time represented in the TimeSeries.\n *\n * @return {Date} End time\n */\n\n }, {\n key: \"end\",\n value: function end() {\n return this.range().end();\n }\n\n /**\n * Access a specific TimeSeries event via its position\n *\n * @param {number} pos The event position\n */\n\n }, {\n key: \"at\",\n value: function at(pos) {\n return this._collection.at(pos);\n }\n\n /**\n * Returns an event in the series by its time. This is the same\n * as calling `bisect` first and then using `at` with the index.\n *\n * @param {Date} time The time of the event.\n * @return {TimeEvent|IndexedEvent|TimeRangeEvent}\n */\n\n }, {\n key: \"atTime\",\n value: function atTime(time) {\n var pos = this.bisect(time);\n if (pos >= 0 && pos < this.size()) {\n return this.at(pos);\n }\n }\n\n /**\n * Returns the first event in the series.\n *\n * @return {TimeEvent|IndexedEvent|TimeRangeEvent}\n */\n\n }, {\n key: \"atFirst\",\n value: function atFirst() {\n return this._collection.atFirst();\n }\n\n /**\n * Returns the last event in the series.\n *\n * @return {TimeEvent|IndexedEvent|TimeRangeEvent}\n */\n\n }, {\n key: \"atLast\",\n value: function atLast() {\n return this._collection.atLast();\n }\n\n /**\n * Generator to return all the events in the series\n *\n * @example\n * ```\n * for (let event of series.events()) {\n * console.log(event.toString());\n * }\n * ```\n */\n\n }, {\n key: \"events\",\n value: _regenerator2.default.mark(function events() {\n var i;\n return _regenerator2.default.wrap(function events$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n i = 0;\n\n case 1:\n if (!(i < this.size())) {\n _context.next = 7;\n break;\n }\n\n _context.next = 4;\n return this.at(i);\n\n case 4:\n i++;\n _context.next = 1;\n break;\n\n case 7:\n case \"end\":\n return _context.stop();\n }\n }\n }, events, this);\n })\n\n /**\n * Sets a new underlying collection for this TimeSeries.\n *\n * @param {Collection} collection The new collection\n * @param {boolean} isChronological Causes the chronological\n * order of the events to\n * not be checked\n *\n * @return {TimeSeries} A new TimeSeries\n */\n\n }, {\n key: \"setCollection\",\n value: function setCollection(collection) {\n var isChronological = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!isChronological && !collection.isChronological()) {\n throw new Error(\"Collection supplied is not chronological\");\n }\n var result = new TimeSeries(this);\n if (collection) {\n result._collection = collection;\n } else {\n result._collection = new _collection2.default();\n }\n return result;\n }\n\n /**\n * Returns the index that bisects the TimeSeries at the time specified.\n *\n * @param {Date} t The time to bisect the TimeSeries with\n * @param {number} b The position to begin searching at\n *\n * @return {number} The row number that is the greatest, but still below t.\n */\n\n }, {\n key: \"bisect\",\n value: function bisect(t, b) {\n var tms = t.getTime();\n var size = this.size();\n var i = b || 0;\n\n if (!size) {\n return undefined;\n }\n\n for (; i < size; i++) {\n var ts = this.at(i).timestamp().getTime();\n if (ts > tms) {\n return i - 1 >= 0 ? i - 1 : 0;\n } else if (ts === tms) {\n return i;\n }\n }\n return i - 1;\n }\n\n /**\n * Perform a slice of events within the TimeSeries, returns a new\n * TimeSeries representing a portion of this TimeSeries from\n * begin up to but not including end.\n *\n * @param {Number} begin The position to begin slicing\n * @param {Number} end The position to end slicing\n *\n * @return {TimeSeries} The new, sliced, TimeSeries.\n */\n\n }, {\n key: \"slice\",\n value: function slice(begin, end) {\n var sliced = this._collection.slice(begin, end);\n return this.setCollection(sliced, true);\n }\n\n /**\n * Crop the TimeSeries to the specified TimeRange and\n * return a new TimeSeries.\n *\n * @param {TimeRange} timerange The bounds of the new TimeSeries\n *\n * @return {TimeSeries} The new, cropped, TimeSeries.\n */\n\n }, {\n key: \"crop\",\n value: function crop(timerange) {\n var beginPos = this.bisect(timerange.begin());\n var endPos = this.bisect(timerange.end(), beginPos);\n return this.slice(beginPos, endPos);\n }\n\n /**\n * Returns a new TimeSeries by testing the fieldPath\n * values for being valid (not NaN, null or undefined).\n *\n * The resulting TimeSeries will be clean (for that fieldPath).\n *\n * @param {string} fieldPath Name of value to look up. If not supplied,\n * defaults to ['value']. \"Deep\" syntax is\n * ['deep', 'value'] or 'deep.value'\n *\n * @return {TimeSeries} A new, modified, TimeSeries.\n */\n\n }, {\n key: \"clean\",\n value: function clean(fieldSpec) {\n var cleaned = this._collection.clean(fieldSpec);\n return this.setCollection(cleaned, true);\n }\n\n /**\n * Generator to return all the events in the collection.\n *\n * @example\n * ```\n * for (let event of timeseries.events()) {\n * console.log(event.toString());\n * }\n * ```\n */\n\n }, {\n key: \"events\",\n value: _regenerator2.default.mark(function events() {\n var i;\n return _regenerator2.default.wrap(function events$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n i = 0;\n\n case 1:\n if (!(i < this.size())) {\n _context2.next = 7;\n break;\n }\n\n _context2.next = 4;\n return this.at(i);\n\n case 4:\n i++;\n _context2.next = 1;\n break;\n\n case 7:\n case \"end\":\n return _context2.stop();\n }\n }\n }, events, this);\n })\n\n //\n // Access meta data about the series\n //\n /**\n * Fetch the timeseries name\n *\n * @return {string} The name given to this TimeSeries\n */\n\n }, {\n key: \"name\",\n value: function name() {\n return this._data.get(\"name\");\n }\n\n /**\n * Rename the timeseries\n */\n\n }, {\n key: \"setName\",\n value: function setName(name) {\n return this.setMeta(\"name\", name);\n }\n\n /**\n * Fetch the timeseries Index, if it has one.\n *\n * @return {Index} The Index given to this TimeSeries\n */\n\n }, {\n key: \"index\",\n value: function index() {\n return this._data.get(\"index\");\n }\n\n /**\n * Fetch the timeseries Index, as a string, if it has one.\n *\n * @return {string} The Index, as a string, given to this TimeSeries\n */\n\n }, {\n key: \"indexAsString\",\n value: function indexAsString() {\n return this.index() ? this.index().asString() : undefined;\n }\n\n /**\n * Fetch the timeseries `Index`, as a `TimeRange`, if it has one.\n *\n * @return {TimeRange} The `Index`, as a `TimeRange`, given to this `TimeSeries`\n */\n\n }, {\n key: \"indexAsRange\",\n value: function indexAsRange() {\n return this.index() ? this.index().asTimerange() : undefined;\n }\n\n /**\n * Fetch the UTC flag, i.e. are the events in this `TimeSeries` in\n * UTC or local time (if they are `IndexedEvent`s an event might be\n * \"2014-08-31\". The actual time range of that representation\n * depends on where you are. Pond supports thinking about that in\n * either as a UTC day, or a local day).\n *\n * @return {TimeRange} The Index, as a TimeRange, given to this TimeSeries\n */\n\n }, {\n key: \"isUTC\",\n value: function isUTC() {\n return this._data.get(\"utc\");\n }\n\n /**\n * Fetch the list of column names. This is determined by\n * traversing though the events and collecting the set.\n *\n * Note: the order is not defined\n *\n * @return {array} List of columns\n */\n\n }, {\n key: \"columns\",\n value: function columns() {\n var c = {};\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(this._collection.events()), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var e = _step2.value;\n\n var d = e.toJSON().data;\n _underscore2.default.each(d, function (val, key) {\n c[key] = true;\n });\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return _underscore2.default.keys(c);\n }\n\n /**\n * Returns the internal `Collection` of events for this `TimeSeries`\n *\n * @return {Collection} The collection backing this `TimeSeries`\n */\n\n }, {\n key: \"collection\",\n value: function collection() {\n return this._collection;\n }\n\n /**\n * Returns the meta data about this TimeSeries as a JSON object.\n * Any extra data supplied to the TimeSeries constructor will be\n * placed in the meta data object. This returns either all of that\n * data as a JSON object, or a specific key if `key` is supplied.\n *\n * @param {string} key Optional specific part of the meta data\n * @return {object} The meta data\n */\n\n }, {\n key: \"meta\",\n value: function meta(key) {\n if (!key) {\n return this._data.toJSON();\n } else {\n return this._data.get(key);\n }\n }\n\n /**\n * Set new meta data for the TimeSeries. The result will\n * be a new TimeSeries.\n */\n\n }, {\n key: \"setMeta\",\n value: function setMeta(key, value) {\n var newTimeSeries = new TimeSeries(this);\n var d = newTimeSeries._data;\n var dd = d.set(key, value);\n newTimeSeries._data = dd;\n return newTimeSeries;\n }\n\n //\n // Access the series itself\n //\n /**\n * Returns the number of events in this TimeSeries\n *\n * @return {number} Count of events\n */\n\n }, {\n key: \"size\",\n value: function size() {\n return this._collection ? this._collection.size() : 0;\n }\n\n /**\n * Returns the number of valid items in this TimeSeries.\n *\n * Uses the fieldSpec to look up values in all events.\n * It then counts the number that are considered valid, which\n * specifically are not NaN, undefined or null.\n *\n * @return {number} Count of valid events\n */\n\n }, {\n key: \"sizeValid\",\n value: function sizeValid(fieldSpec) {\n return this._collection.sizeValid(fieldSpec);\n }\n\n /**\n * Returns the number of events in this TimeSeries. Alias\n * for size().\n *\n * @return {number} Count of events\n */\n\n }, {\n key: \"count\",\n value: function count() {\n return this.size();\n }\n\n /**\n * Returns the sum for the fieldspec\n *\n * @param {string} fieldPath Column to find the stdev of. A deep value can\n * be referenced with a string.like.this. If not supplied\n * the `value` column will be aggregated.\n * @param {function} filter Optional filter function used to clean data before aggregating\n *\n * @return {number} The sum\n */\n\n }, {\n key: \"sum\",\n value: function sum(fieldPath, filter) {\n return this._collection.sum(fieldPath, filter);\n }\n\n /**\n * Aggregates the events down to their maximum value\n *\n * @param {string} fieldPath Column to find the max of. A deep value can\n * be referenced with a string.like.this. If not supplied\n * the `value` column will be aggregated.\n *\n * @return {number} The max value for the field\n */\n\n }, {\n key: \"max\",\n value: function max(fieldPath, filter) {\n return this._collection.max(fieldPath, filter);\n }\n\n /**\n * Aggregates the events down to their minimum value\n *\n * @param {string} fieldPath Column to find the min of. A deep value can\n * be referenced with a string.like.this. If not supplied\n * the `value` column will be aggregated.\n * @param {function} filter Optional filter function used to clean data before aggregating\n *\n * @return {number} The min value for the field\n */\n\n }, {\n key: \"min\",\n value: function min(fieldPath, filter) {\n return this._collection.min(fieldPath, filter);\n }\n\n /**\n * Aggregates the events in the TimeSeries down to their average\n *\n * @param {string} fieldPath Column to find the avg of. A deep value can\n * be referenced with a string.like.this. If not supplied\n * the `value` column will be aggregated.\n * @param {function} filter Optional filter function used to clean data before aggregating\n *\n * @return {number} The average\n */\n\n }, {\n key: \"avg\",\n value: function avg(fieldPath, filter) {\n return this._collection.avg(fieldPath, filter);\n }\n\n /**\n * Aggregates the events in the TimeSeries down to their mean (same as avg)\n *\n * @param {string} fieldPath Column to find the mean of. A deep value can\n * be referenced with a string.like.this. If not supplied\n * the `value` column will be aggregated.\n * @param {function} filter Optional filter function used to clean data before aggregating\n *\n * @return {number} The mean\n */\n\n }, {\n key: \"mean\",\n value: function mean(fieldPath, filter) {\n return this._collection.mean(fieldPath, filter);\n }\n\n /**\n * Aggregates the events down to their medium value\n *\n * @param {string} fieldPath Column to find the median of. A deep value can\n * be referenced with a string.like.this. If not supplied\n * the `value` column will be aggregated.\n * @param {function} filter Optional filter function used to clean data before aggregating\n *\n * @return {number} The resulting median value\n */\n\n }, {\n key: \"median\",\n value: function median(fieldPath, filter) {\n return this._collection.median(fieldPath, filter);\n }\n\n /**\n * Aggregates the events down to their stdev\n *\n * @param {string} fieldPath Column to find the stdev of. A deep value can\n * be referenced with a string.like.this. If not supplied\n * the `value` column will be aggregated.\n * @param {function} filter Optional filter function used to clean data before aggregating\n *\n * @return {number} The resulting stdev value\n */\n\n }, {\n key: \"stdev\",\n value: function stdev(fieldPath, filter) {\n return this._collection.stdev(fieldPath, filter);\n }\n\n /**\n * Gets percentile q within the TimeSeries. This works the same way as numpy.\n *\n * @param {integer} q The percentile (should be between 0 and 100)\n *\n * @param {string} fieldPath Column to find the qth percentile of. A deep value can\n * be referenced with a string.like.this. If not supplied\n * the `value` column will be aggregated.\n *\n * @param {string} interp Specifies the interpolation method\n * to use when the desired quantile lies between\n * two data points. Options are: \"linear\", \"lower\", \"higher\",\n * \"nearest\", \"midpoint\"\n * @param {function} filter Optional filter function used to clean data before aggregating\n *\n * @return {number} The percentile\n */\n\n }, {\n key: \"percentile\",\n value: function percentile(q, fieldPath) {\n var interp = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"linear\";\n var filter = arguments[3];\n\n return this._collection.percentile(q, fieldPath, interp, filter);\n }\n\n /**\n * Aggregates the events down using a user defined function to\n * do the reduction.\n *\n * @param {function} func User defined reduction function. Will be\n * passed a list of values. Should return a\n * singe value.\n * @param {string} fieldPath Column to aggregate over. A deep value can\n * be referenced with a string.like.this. If not supplied\n * the `value` column will be aggregated.\n *\n * @return {number} The resulting value\n */\n\n }, {\n key: \"aggregate\",\n value: function aggregate(func, fieldPath) {\n return this._collection.aggregate(func, fieldPath);\n }\n\n /**\n * Gets n quantiles within the TimeSeries. This works the same way as numpy's percentile().\n * For example `timeseries.quantile(4)` would be the same as using percentile with q = 0.25, 0.5 and 0.75.\n *\n * @param {integer} n The number of quantiles to divide the\n * TimeSeries into.\n * @param {string} fieldPath Column to calculate over. A deep value can\n * be referenced with a string.like.this. If not supplied\n * the `value` column will be aggregated.\n * @param {string} interp Specifies the interpolation method\n * to use when the desired quantile lies between\n * two data points. Options are: \"linear\", \"lower\", \"higher\",\n * \"nearest\", \"midpoint\".\n * @return {array} An array of n quantiles\n */\n\n }, {\n key: \"quantile\",\n value: function quantile(quantity) {\n var fieldPath = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"value\";\n var interp = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"linear\";\n\n return this._collection.quantile(quantity, fieldPath, interp);\n }\n\n /**\n * Returns a new Pipeline with input source being initialized to\n * this TimeSeries collection. This allows pipeline operations\n * to be chained directly onto the TimeSeries to produce a new\n * TimeSeries or event result.\n *\n * @example\n *\n * ```\n * timeseries.pipeline()\n * .offsetBy(1)\n * .offsetBy(2)\n * .to(CollectionOut, c => out = c);\n * ```\n *\n * @return {Pipeline} The Pipeline.\n */\n\n }, {\n key: \"pipeline\",\n value: function pipeline() {\n return new _pipeline.Pipeline().from(this._collection);\n }\n\n /**\n * Takes an operator that is used to remap events from this TimeSeries to\n * a new set of events.\n *\n * @param {function} operator An operator which will be passed each\n * event and which should return a new event.\n * @return {TimeSeries} A TimeSeries containing the remapped events\n */\n\n }, {\n key: \"map\",\n value: function map(op) {\n var collections = this.pipeline().map(op).toKeyedCollections();\n return this.setCollection(collections[\"all\"], true);\n }\n\n /**\n * Takes a fieldSpec (list of column names) and outputs to the callback just those\n * columns in a new TimeSeries.\n *\n * @example\n *\n * ```\n * const ts = timeseries.select({fieldSpec: [\"uptime\", \"notes\"]});\n * ```\n *\n * @param options An object containing options for the command\n * @param {string|array} options.fieldSpec Column or columns to select into the new TimeSeries.\n * If you need to retrieve multiple deep nested values\n * that ['can.be', 'done.with', 'this.notation'].\n * A single deep value with a string.like.this.\n *\n * @return {TimeSeries} The resulting TimeSeries with renamed columns\n */\n\n }, {\n key: \"select\",\n value: function select(options) {\n var fieldSpec = options.fieldSpec;\n\n var collections = this.pipeline().select(fieldSpec).toKeyedCollections();\n return this.setCollection(collections[\"all\"], true);\n }\n\n /**\n * Takes a `fieldSpecList` (list of column names) and collapses\n * them to a new column named `name` which is the reduction (using\n * the `reducer` function) of the matched columns in the `fieldSpecList`.\n *\n * The column may be appended to the existing columns, or replace them,\n * based on the `append` boolean.\n *\n * @example\n *\n * ```\n * const sums = ts.collapse({\n * name: \"sum_series\",\n * fieldSpecList: [\"in\", \"out\"],\n * reducer: sum(),\n * append: false\n * });\n * ```\n *\n * @param options An object containing options:\n * @param {array} options.fieldSpecList The list of columns to collapse. (required)\n * @param {string} options.name The resulting collapsed column name (required)\n * @param {function} options.reducer The reducer function (required)\n * @param {bool} options.append Append the collapsed column, rather\n * than replace\n *\n * @return {TimeSeries} The resulting collapsed TimeSeries\n */\n\n }, {\n key: \"collapse\",\n value: function collapse(options) {\n var fieldSpecList = options.fieldSpecList,\n name = options.name,\n reducer = options.reducer,\n append = options.append;\n\n var collections = this.pipeline().collapse(fieldSpecList, name, reducer, append).toKeyedCollections();\n return this.setCollection(collections[\"all\"], true);\n }\n\n /**\n * Rename columns in the underlying events.\n *\n * Takes a object of columns to rename. Returns a new `TimeSeries` containing\n * new events. Columns not in the dict will be retained and not renamed.\n *\n * @example\n * ```\n * new_ts = ts.renameColumns({\n * renameMap: {in: \"new_in\", out: \"new_out\"}\n * });\n * ```\n *\n * @note As the name implies, this will only rename the main\n * \"top level\" (ie: non-deep) columns. If you need more\n * extravagant renaming, roll your own using `TimeSeries.map()`.\n *\n * @param options An object containing options:\n * @param {Object} options.renameMap Columns to rename.\n *\n * @return {TimeSeries} The resulting TimeSeries with renamed columns\n */\n\n }, {\n key: \"renameColumns\",\n value: function renameColumns(options) {\n var renameMap = options.renameMap;\n\n return this.map(function (event) {\n var eventType = event.type();\n var d = event.data().mapKeys(function (key) {\n return renameMap[key] || key;\n });\n return new eventType(event.key(), d);\n });\n }\n\n /**\n * Take the data in this TimeSeries and \"fill\" any missing or invalid\n * values. This could be setting `null` values to zero so mathematical\n * operations will succeed, interpolate a new value, or pad with the\n * previously given value.\n *\n * The `fill()` method takes a single `options` arg.\n *\n * @example\n * ```\n * const filled = timeseries.fill({\n * fieldSpec: [\"direction.in\", \"direction.out\"],\n * method: \"zero\",\n * limit: 3\n * });\n * ```\n *\n * @param options An object containing options:\n * @param {string|array} options.fieldSpec Column or columns to fill. If you need to\n * retrieve multiple deep nested values\n * that ['can.be', 'done.with', 'this.notation'].\n * A single deep value with a string.like.this.\n * @param {string} options.method \"linear\" or \"pad\" or \"zero\" style interpolation\n * @param {number} options.limit The maximum number of points which should be\n * interpolated onto missing points. You might set this to\n * 2 if you are willing to fill 2 new points,\n * and then beyond that leave data with missing values.\n *\n * @return {TimeSeries} The resulting filled TimeSeries\n */\n\n }, {\n key: \"fill\",\n value: function fill(options) {\n var _options$fieldSpec = options.fieldSpec,\n fieldSpec = _options$fieldSpec === undefined ? null : _options$fieldSpec,\n _options$method = options.method,\n method = _options$method === undefined ? \"zero\" : _options$method,\n _options$limit = options.limit,\n limit = _options$limit === undefined ? null : _options$limit;\n\n\n var pipeline = this.pipeline();\n\n if (method === \"zero\" || method === \"pad\") {\n pipeline = pipeline.fill({ fieldSpec: fieldSpec, method: method, limit: limit });\n } else if (method === \"linear\" && _underscore2.default.isArray(fieldSpec)) {\n fieldSpec.forEach(function (fieldPath) {\n pipeline = pipeline.fill({\n fieldSpec: fieldPath,\n method: method,\n limit: limit\n });\n });\n } else {\n throw new Error(\"Invalid fill method:\", method);\n }\n\n var collections = pipeline.toKeyedCollections();\n\n return this.setCollection(collections[\"all\"], true);\n }\n\n /**\n * Align event values to regular time boundaries. The value at\n * the boundary is interpolated. Only the new interpolated\n * points are returned. If limit is reached nulls will be\n * returned at each boundary position.\n *\n * One use case for this is to modify irregular data (i.e. data\n * that falls at slightly irregular times) so that it falls into a\n * sequence of evenly spaced values. We use this to take data we\n * get from the network which is approximately every 30 second\n * (:32, 1:02, 1:34, ...) and output data on exact 30 second\n * boundaries (:30, 1:00, 1:30, ...).\n *\n * Another use case is data that might be already aligned to\n * some regular interval, but that contains missing points.\n * While `fill()` can be used to replace `null` values, `align()`\n * can be used to add in missing points completely. Those points\n * can have an interpolated value, or by setting limit to 0,\n * can be filled with nulls. This is really useful when downstream\n * processing depends on complete sequences.\n *\n * @example\n * ```\n * const aligned = ts.align({\n * fieldSpec: \"value\",\n * period: \"1m\",\n * method: \"linear\"\n * });\n * ```\n *\n * @param options An object containing options:\n * @param {string|array} options.fieldSpec Column or columns to align. If you need to\n * retrieve multiple deep nested values\n * that ['can.be', 'done.with', 'this.notation'].\n * A single deep value with a string.like.this.\n * @param {string} options.period Spacing of aligned values. e.g. \"6h\" or \"5m\"\n * @param {string} options.method \"linear\" or \"pad\" style interpolation to boundaries.\n * @param {number} options.limit The maximum number of points which should be\n * interpolated onto boundaries. You might set this to\n * 2 if you are willing to interpolate 2 new points,\n * and then beyond that just emit nulls on the boundaries.\n *\n * @return {TimeSeries} The resulting aligned TimeSeries\n */\n\n }, {\n key: \"align\",\n value: function align(options) {\n var _options$fieldSpec2 = options.fieldSpec,\n fieldSpec = _options$fieldSpec2 === undefined ? \"value\" : _options$fieldSpec2,\n _options$period = options.period,\n period = _options$period === undefined ? \"5m\" : _options$period,\n _options$method2 = options.method,\n method = _options$method2 === undefined ? \"linear\" : _options$method2,\n _options$limit2 = options.limit,\n limit = _options$limit2 === undefined ? null : _options$limit2;\n\n var collection = this.pipeline().align(fieldSpec, period, method, limit).toKeyedCollections();\n\n return this.setCollection(collection[\"all\"], true);\n }\n\n /**\n * Returns the derivative of the TimeSeries for the given columns. The result will\n * be per second. Optionally you can substitute in `null` values if the rate\n * is negative. This is useful when a negative rate would be considered invalid.\n *\n * @param options An object containing options:\n * @param {string|array} options.fieldSpec Column or columns to get the rate of. If you\n * need to retrieve multiple deep nested values\n * that ['can.be', 'done.with', 'this.notation'].\n * @param {bool} options.allowNegative Will output null values for negative rates.\n * This is useful if you are getting the rate\n * of a counter that always goes up, except\n * when perhaps it rolls around or resets.\n *\n * @return {TimeSeries} The resulting `TimeSeries` containing calculated rates.\n */\n\n }, {\n key: \"rate\",\n value: function rate() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _options$fieldSpec3 = options.fieldSpec,\n fieldSpec = _options$fieldSpec3 === undefined ? \"value\" : _options$fieldSpec3,\n _options$allowNegativ = options.allowNegative,\n allowNegative = _options$allowNegativ === undefined ? true : _options$allowNegativ;\n\n var collection = this.pipeline().rate(fieldSpec, allowNegative).toKeyedCollections();\n\n return this.setCollection(collection[\"all\"], true);\n }\n\n /**\n * Builds a new TimeSeries by dividing events within the TimeSeries\n * across multiple fixed windows of size `windowSize`.\n *\n * Note that these are windows defined relative to Jan 1st, 1970,\n * and are UTC, so this is best suited to smaller window sizes\n * (hourly, 5m, 30s, 1s etc), or in situations where you don't care\n * about the specific window, just that the data is smaller.\n *\n * Each window then has an aggregation specification applied as\n * `aggregation`. This specification describes a mapping of output\n * fieldNames to aggregation functions and their fieldPath. For example:\n * ```\n * { in_avg: { in: avg() }, out_avg: { out: avg() } }\n * ```\n * will aggregate both \"in\" and \"out\" using the average aggregation\n * function and return the result as in_avg and out_avg.\n * \n * Note that each aggregation function, such as `avg()` also can take a\n * filter function to apply before the aggregation. A set of filter functions\n * exists to do common data cleanup such as removing bad values. For example:\n * ```\n * { value_avg: { value: avg(filter.ignoreMissing) } }\n * ```\n *\n * @example\n * ```\n * const timeseries = new TimeSeries(data);\n * const dailyAvg = timeseries.fixedWindowRollup({\n * windowSize: \"1d\",\n * aggregation: {value: {value: avg()}}\n * });\n * ```\n *\n * @param options An object containing options:\n * @param {string} options.windowSize The size of the window. e.g. \"6h\" or \"5m\"\n * @param {object} options.aggregation The aggregation specification (see description above)\n * @param {bool} options.toTimeEvents Output as `TimeEvent`s, rather than `IndexedEvent`s\n * @return {TimeSeries} The resulting rolled up `TimeSeries`\n */\n\n }, {\n key: \"fixedWindowRollup\",\n value: function fixedWindowRollup(options) {\n var windowSize = options.windowSize,\n aggregation = options.aggregation,\n _options$toTimeEvents = options.toTimeEvents,\n toTimeEvents = _options$toTimeEvents === undefined ? false : _options$toTimeEvents;\n\n if (!windowSize) {\n throw new Error(\"windowSize must be supplied, for example '5m' for five minute rollups\");\n }\n\n if (!aggregation || !_underscore2.default.isObject(aggregation)) {\n throw new Error(\"aggregation object must be supplied, for example: {value: {value: avg()}}\");\n }\n\n var aggregatorPipeline = this.pipeline().windowBy(windowSize).emitOn(\"discard\").aggregate(aggregation);\n\n var eventTypePipeline = toTimeEvents ? aggregatorPipeline.asTimeEvents() : aggregatorPipeline;\n\n var collections = eventTypePipeline.clearWindow().toKeyedCollections();\n\n return this.setCollection(collections[\"all\"], true);\n }\n\n /**\n * Builds a new TimeSeries by dividing events into hours.\n *\n * Each window then has an aggregation specification `aggregation`\n * applied. This specification describes a mapping of output\n * fieldNames to aggregation functions and their fieldPath. For example:\n * ```\n * {in_avg: {in: avg()}, out_avg: {out: avg()}}\n * ```\n *\n * @param options An object containing options:\n * @param {bool} options.toTimeEvents Convert the rollup events to `TimeEvent`s, otherwise it\n * will be returned as a `TimeSeries` of `IndexedEvent`s.\n * @param {object} options.aggregation The aggregation specification (see description above)\n *\n * @return {TimeSeries} The resulting rolled up TimeSeries\n */\n\n }, {\n key: \"hourlyRollup\",\n value: function hourlyRollup(options) {\n var aggregation = options.aggregation,\n _options$toTimeEvents2 = options.toTimeEvents,\n toTimeEvents = _options$toTimeEvents2 === undefined ? false : _options$toTimeEvents2;\n\n\n if (!aggregation || !_underscore2.default.isObject(aggregation)) {\n throw new Error(\"aggregation object must be supplied, for example: {value: {value: avg()}}\");\n }\n\n return this.fixedWindowRollup(\"1h\", aggregation, toTimeEvents);\n }\n\n /**\n * Builds a new TimeSeries by dividing events into days.\n *\n * Each window then has an aggregation specification `aggregation`\n * applied. This specification describes a mapping of output\n * fieldNames to aggregation functions and their fieldPath. For example:\n * ```\n * {in_avg: {in: avg()}, out_avg: {out: avg()}}\n * ```\n *\n * @param options An object containing options:\n * @param {bool} options.toTimeEvents Convert the rollup events to `TimeEvent`s, otherwise it\n * will be returned as a `TimeSeries` of `IndexedEvent`s.\n * @param {object} options.aggregation The aggregation specification (see description above)\n *\n * @return {TimeSeries} The resulting rolled up TimeSeries\n */\n\n }, {\n key: \"dailyRollup\",\n value: function dailyRollup(options) {\n var aggregation = options.aggregation,\n _options$toTimeEvents3 = options.toTimeEvents,\n toTimeEvents = _options$toTimeEvents3 === undefined ? false : _options$toTimeEvents3;\n\n\n if (!aggregation || !_underscore2.default.isObject(aggregation)) {\n throw new Error(\"aggregation object must be supplied, for example: {value: {value: avg()}}\");\n }\n\n return this._rollup(\"daily\", aggregation, toTimeEvents);\n }\n\n /**\n * Builds a new TimeSeries by dividing events into months.\n *\n * Each window then has an aggregation specification `aggregation`\n * applied. This specification describes a mapping of output\n * fieldNames to aggregation functions and their fieldPath. For example:\n * ```\n * {in_avg: {in: avg()}, out_avg: {out: avg()}}\n * ```\n *\n * @param options An object containing options:\n * @param {bool} options.toTimeEvents Convert the rollup events to `TimeEvent`s, otherwise it\n * will be returned as a `TimeSeries` of `IndexedEvent`s.\n * @param {object} options.aggregation The aggregation specification (see description above)\n *\n * @return {TimeSeries} The resulting rolled up `TimeSeries`\n */\n\n }, {\n key: \"monthlyRollup\",\n value: function monthlyRollup(options) {\n var aggregation = options.aggregation,\n _options$toTimeEvents4 = options.toTimeEvents,\n toTimeEvents = _options$toTimeEvents4 === undefined ? false : _options$toTimeEvents4;\n\n\n if (!aggregation || !_underscore2.default.isObject(aggregation)) {\n throw new Error(\"aggregation object must be supplied, for example: {value: {value: avg()}}\");\n }\n\n return this._rollup(\"monthly\", aggregation, toTimeEvents);\n }\n\n /**\n * Builds a new TimeSeries by dividing events into years.\n *\n * Each window then has an aggregation specification `aggregation`\n * applied. This specification describes a mapping of output\n * fieldNames to aggregation functions and their fieldPath. For example:\n *\n * ```\n * {in_avg: {in: avg()}, out_avg: {out: avg()}}\n * ```\n *\n * @param options An object containing options:\n * @param {bool} options.toTimeEvents Convert the rollup events to `TimeEvent`s, otherwise it\n * will be returned as a `TimeSeries` of `IndexedEvent`s.\n * @param {object} options.aggregation The aggregation specification (see description above)\n *\n * @return {TimeSeries} The resulting rolled up `TimeSeries`\n */\n\n }, {\n key: \"yearlyRollup\",\n value: function yearlyRollup(options) {\n var aggregation = options.aggregation,\n _options$toTimeEvents5 = options.toTimeEvents,\n toTimeEvents = _options$toTimeEvents5 === undefined ? false : _options$toTimeEvents5;\n\n\n if (!aggregation || !_underscore2.default.isObject(aggregation)) {\n throw new Error(\"aggregation object must be supplied, for example: {value: {value: avg()}}\");\n }\n\n return this._rollup(\"yearly\", aggregation, toTimeEvents);\n }\n\n /**\n * @private\n *\n * Internal function to build the TimeSeries rollup functions using\n * an aggregator Pipeline.\n */\n\n }, {\n key: \"_rollup\",\n value: function _rollup(type, aggregation) {\n var toTimeEvents = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var aggregatorPipeline = this.pipeline().windowBy(type).emitOn(\"discard\").aggregate(aggregation);\n\n var eventTypePipeline = toTimeEvents ? aggregatorPipeline.asTimeEvents() : aggregatorPipeline;\n\n var collections = eventTypePipeline.clearWindow().toKeyedCollections();\n\n return this.setCollection(collections[\"all\"], true);\n }\n\n /**\n * Builds multiple `Collection`s, each collects together\n * events within a window of size `windowSize`. Note that these\n * are windows defined relative to Jan 1st, 1970, and are UTC.\n *\n * @example\n * ```\n * const timeseries = new TimeSeries(data);\n * const collections = timeseries.collectByFixedWindow({windowSize: \"1d\"});\n * console.log(collections); // {1d-16314: Collection, 1d-16315: Collection, ...}\n * ```\n *\n * @param options An object containing options:\n * @param {bool} options.windowSize The size of the window. e.g. \"6h\" or \"5m\"\n *\n * @return {map} The result is a mapping from window index to a Collection.\n */\n\n }, {\n key: \"collectByFixedWindow\",\n value: function collectByFixedWindow(_ref) {\n var windowSize = _ref.windowSize;\n\n return this.pipeline().windowBy(windowSize).emitOn(\"discard\").toKeyedCollections();\n }\n\n /*\n * STATIC\n */\n /**\n * Defines the event type contained in this TimeSeries. The default here\n * is to use the supplied type (time, timerange or index) to build either\n * a TimeEvent, TimeRangeEvent or IndexedEvent. However, you can also\n * subclass the TimeSeries and reimplement this to return another event\n * type.\n */\n\n }], [{\n key: \"event\",\n value: function event(eventKey) {\n switch (eventKey) {\n case \"time\":\n return _timeevent2.default;\n case \"timerange\":\n return _timerangeevent2.default;\n case \"index\":\n return _indexedevent2.default;\n default:\n throw new Error(\"Unknown event type: \" + eventKey);\n }\n }\n\n /**\n * Static function to compare two TimeSeries to each other. If the TimeSeries\n * are of the same instance as each other then equals will return true.\n * @param {TimeSeries} series1\n * @param {TimeSeries} series2\n * @return {bool} result\n */\n\n }, {\n key: \"equal\",\n value: function equal(series1, series2) {\n return series1._data === series2._data && series1._collection === series2._collection;\n }\n\n /**\n * Static function to compare two TimeSeries to each other. If the TimeSeries\n * are of the same value as each other then equals will return true.\n * @param {TimeSeries} series1\n * @param {TimeSeries} series2\n * @return {bool} result\n */\n\n }, {\n key: \"is\",\n value: function is(series1, series2) {\n return _immutable2.default.is(series1._data, series2._data) && _collection2.default.is(series1._collection, series2._collection);\n }\n\n /**\n * Reduces a list of TimeSeries objects using a reducer function. This works\n * by taking each event in each TimeSeries and collecting them together\n * based on timestamp. All events for a given time are then merged together\n * using the reducer function to produce a new event. The reducer function is\n * applied to all columns in the fieldSpec. Those new events are then\n * collected together to form a new TimeSeries.\n *\n * @example\n *\n * For example you might have three TimeSeries with columns \"in\" and \"out\" which\n * corresponds to two measurements per timestamp. You could use this function to\n * obtain a new TimeSeries which was the sum of the the three measurements using\n * the `sum()` reducer function and an [\"in\", \"out\"] fieldSpec.\n *\n * ```\n * const totalSeries = TimeSeries.timeSeriesListReduce({\n * name: \"totals\",\n * seriesList: [inTraffic, outTraffic],\n * reducer: sum(),\n * fieldSpec: [ \"in\", \"out\" ]\n * });\n * ```\n *\n * @param options An object containing options. Additional key\n * values in the options will be added as meta data\n * to the resulting TimeSeries.\n * @param {array} options.seriesList A list of `TimeSeries` (required)\n * @param {function} options.reducer The reducer function e.g. `max()` (required)\n * @param {array | string} options.fieldSpec Column or columns to reduce. If you\n * need to retrieve multiple deep\n * nested values that ['can.be', 'done.with',\n * 'this.notation']. A single deep value with a\n * string.like.this.\n *\n * @return {TimeSeries} The reduced TimeSeries\n */\n\n }, {\n key: \"timeSeriesListReduce\",\n value: function timeSeriesListReduce(options) {\n var fieldSpec = options.fieldSpec,\n reducer = options.reducer,\n data = (0, _objectWithoutProperties3.default)(options, [\"fieldSpec\", \"reducer\"]);\n\n var combiner = _event2.default.combiner(fieldSpec, reducer);\n return TimeSeries.timeSeriesListEventReduce((0, _extends3.default)({\n fieldSpec: fieldSpec,\n reducer: combiner\n }, data));\n }\n\n /**\n * Takes a list of TimeSeries and merges them together to form a new\n * Timeseries.\n *\n * Merging will produce a new Event;\n only when events are conflict free, so\n * it is useful in the following cases:\n * * to combine multiple TimeSeries which have different time ranges, essentially\n * concatenating them together\n * * combine TimeSeries which have different columns, for example inTraffic has\n * a column \"in\" and outTraffic has a column \"out\" and you want to produce a merged\n * trafficSeries with columns \"in\" and \"out\".\n *\n * @example\n * ```\n * const inTraffic = new TimeSeries(trafficDataIn);\n * const outTraffic = new TimeSeries(trafficDataOut);\n * const trafficSeries = TimeSeries.timeSeriesListMerge({\n * name: \"traffic\",\n * seriesList: [inTraffic, outTraffic]\n * });\n * ```\n *\n * @param options An object containing options. Additional key\n * values in the options will be added as meta data\n * to the resulting TimeSeries.\n * @param {array} options.seriesList A list of `TimeSeries` (required)\n * @param {array | string} options.fieldSpec Column or columns to merge. If you\n * need to retrieve multiple deep\n * nested values that ['can.be', 'done.with',\n * 'this.notation']. A single deep value with a\n * string.like.this.\n *\n * @return {TimeSeries} The merged TimeSeries\n */\n\n }, {\n key: \"timeSeriesListMerge\",\n value: function timeSeriesListMerge(options) {\n var fieldSpec = options.fieldSpec,\n data = (0, _objectWithoutProperties3.default)(options, [\"fieldSpec\"]);\n\n var merger = _event2.default.merger(fieldSpec);\n return TimeSeries.timeSeriesListEventReduce((0, _extends3.default)({\n fieldSpec: fieldSpec,\n reducer: merger\n }, data));\n }\n\n /**\n * @private\n */\n\n }, {\n key: \"timeSeriesListEventReduce\",\n value: function timeSeriesListEventReduce(options) {\n var seriesList = options.seriesList,\n fieldSpec = options.fieldSpec,\n reducer = options.reducer,\n data = (0, _objectWithoutProperties3.default)(options, [\"seriesList\", \"fieldSpec\", \"reducer\"]);\n\n\n if (!seriesList || !_underscore2.default.isArray(seriesList)) {\n throw new Error(\"A list of TimeSeries must be supplied to reduce\");\n }\n\n if (!reducer || !_underscore2.default.isFunction(reducer)) {\n throw new Error(\"reducer function must be supplied, for example avg()\");\n }\n\n // for each series, make a map from timestamp to the\n // list of events with that timestamp\n var eventList = [];\n seriesList.forEach(function (series) {\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(series.events()), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var event = _step3.value;\n\n eventList.push(event);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n });\n\n var events = reducer(eventList, fieldSpec);\n\n // Make a collection. If the events are out of order, sort them.\n // It's always possible that events are out of order here, depending\n // on the start times of the series, along with it the series\n // have missing data, so I think we don't have a choice here.\n var collection = new _collection2.default(events);\n if (!collection.isChronological()) {\n collection = collection.sortByTime();\n }\n\n var timeseries = new TimeSeries((0, _extends3.default)({}, data, { collection: collection }));\n\n return timeseries;\n }\n }]);\n return TimeSeries;\n}();\n\nexports.default = TimeSeries;\n\n//# sourceURL=webpack:///./node_modules/pondjs/lib/lib/timeseries.js?"); + +/***/ }), + /***/ "./node_modules/prop-types/checkPropTypes.js": /*!***************************************************!*\ !*** ./node_modules/prop-types/checkPropTypes.js ***! @@ -7865,6 +9817,354 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var reac /***/ }), +/***/ "./node_modules/react-timeseries-charts/lib/components/AreaChart.js": +/*!**************************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/AreaChart.js ***! + \**************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\n__webpack_require__(/*! array.prototype.fill */ \"./node_modules/array.prototype.fill/index.js\");\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _d3Shape = __webpack_require__(/*! d3-shape */ \"./node_modules/d3-shape/index.js\");\n\nvar _merge = __webpack_require__(/*! merge */ \"./node_modules/merge/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _pondjs = __webpack_require__(/*! pondjs */ \"./node_modules/pondjs/lib/entry.js\");\n\nvar _util = __webpack_require__(/*! ../js/util */ \"./node_modules/react-timeseries-charts/lib/js/util.js\");\n\nvar _styler = __webpack_require__(/*! ../js/styler */ \"./node_modules/react-timeseries-charts/lib/js/styler.js\");\n\nvar _curve = __webpack_require__(/*! ../js/curve */ \"./node_modules/react-timeseries-charts/lib/js/curve.js\");\n\nvar _curve2 = _interopRequireDefault(_curve);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\n \"Super expression must either be null or a function, not \" + typeof superClass\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: { value: subClass, enumerable: false, writable: true, configurable: true }\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n} /**\n * Copyright (c) 2015-present, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar defaultStyle = {\n line: {\n normal: { stroke: \"steelblue\", fill: \"none\", strokeWidth: 1 },\n highlighted: { stroke: \"#5a98cb\", fill: \"none\", strokeWidth: 1 },\n selected: { stroke: \"steelblue\", fill: \"none\", strokeWidth: 1 },\n muted: { stroke: \"steelblue\", fill: \"none\", opacity: 0.4, strokeWidth: 1 }\n },\n area: {\n normal: { fill: \"steelblue\", stroke: \"none\", opacity: 0.75 },\n highlighted: { fill: \"#5a98cb\", stroke: \"none\", opacity: 0.75 },\n selected: { fill: \"steelblue\", stroke: \"none\", opacity: 0.75 },\n muted: { fill: \"steelblue\", stroke: \"none\", opacity: 0.25 }\n }\n};\n\n/**\n * The `` component is able to display single or multiple stacked\n * areas above or below the axis. It used throughout the\n * [My ESnet Portal](http://my.es.net).\n\n * The `` should be used within a `` structure,\n * as this will construct the horizontal and vertical axis, and manage\n * other elements. Here is an example of an `` with an up and down\n * network traffic visualization:\n *\n * ```\n * render() {\n * return (\n * ...\n * \n * \n * \n * \n * \n * \n * \n * \n * ...\n * );\n * }\n * ```\n * The `` takes a single `TimeSeries` object into its `series` prop. This\n * series can contain multiple columns and those columns can be referenced using the `columns`\n * prop. The `columns` props allows you to map columns in the series to the chart,\n * letting you specify the stacking and orientation of the data. In the above example\n * we map the \"in\" column in `trafficSeries` to the up direction and the \"out\" column to\n * the down direction. Each direction is specified as an array, so adding multiple\n * columns into a direction will stack the areas in that direction.\n *\n * Note: It is recommended that ``s be placed within a tag,\n * rather than hard coding the width as in the above example.\n */\n\nvar AreaChart = (function(_React$Component) {\n _inherits(AreaChart, _React$Component);\n\n function AreaChart() {\n _classCallCheck(this, AreaChart);\n\n return _possibleConstructorReturn(\n this,\n (AreaChart.__proto__ || Object.getPrototypeOf(AreaChart)).apply(this, arguments)\n );\n }\n\n _createClass(AreaChart, [\n {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n var newSeries = nextProps.series;\n var oldSeries = this.props.series;\n var width = nextProps.width;\n var timeScale = nextProps.timeScale;\n var yScale = nextProps.yScale;\n var interpolation = nextProps.interpolation;\n var columns = nextProps.columns;\n var style = nextProps.style;\n var highlight = nextProps.highlight;\n var selection = nextProps.selection;\n\n var widthChanged = this.props.width !== width;\n var timeScaleChanged =\n (0, _util.scaleAsString)(this.props.timeScale) !==\n (0, _util.scaleAsString)(timeScale);\n var yAxisScaleChanged = this.props.yScale !== yScale;\n var interpolationChanged = this.props.interpolation !== interpolation;\n var columnsChanged = JSON.stringify(this.props.columns) !== JSON.stringify(columns);\n var styleChanged = JSON.stringify(this.props.style) !== JSON.stringify(style);\n var highlightChanged = this.props.highlight !== highlight;\n var selectionChanged = this.props.selection !== selection;\n\n var seriesChanged = false;\n if (oldSeries.length !== newSeries.length) {\n seriesChanged = true;\n } else {\n seriesChanged = !_pondjs.TimeSeries.is(oldSeries, newSeries);\n }\n\n return (\n seriesChanged ||\n timeScaleChanged ||\n widthChanged ||\n interpolationChanged ||\n columnsChanged ||\n styleChanged ||\n yAxisScaleChanged ||\n highlightChanged ||\n selectionChanged\n );\n }\n },\n {\n key: \"handleHover\",\n value: function handleHover(e, column) {\n if (this.props.onHighlightChange) {\n this.props.onHighlightChange(column);\n }\n }\n },\n {\n key: \"handleHoverLeave\",\n value: function handleHoverLeave() {\n if (this.props.onHighlightChange) {\n this.props.onHighlightChange(null);\n }\n }\n },\n {\n key: \"handleClick\",\n value: function handleClick(e, column) {\n e.stopPropagation();\n if (this.props.onSelectionChange) {\n this.props.onSelectionChange(column);\n }\n }\n },\n {\n key: \"providedAreaStyleMap\",\n value: function providedAreaStyleMap(column) {\n var style = defaultStyle;\n if (this.props.style) {\n if (this.props.style instanceof _styler.Styler) {\n style = this.props.style.areaChartStyle()[column];\n } else if (_underscore2.default.isObject(this.props.style)) {\n style = this.props.style[column];\n } else if (_underscore2.default.isFunction(this.props.style)) {\n style = this.props.style(column);\n }\n }\n return style;\n }\n\n /**\n * Returns the style used for drawing the path\n */\n },\n {\n key: \"style\",\n value: function style(column, type) {\n var style = void 0;\n\n var styleMap = this.providedAreaStyleMap(column);\n var isHighlighted = this.props.highlight && column === this.props.highlight;\n var isSelected = this.props.selection && column === this.props.selection;\n\n if (!_underscore2.default.has(styleMap, \"line\")) {\n console.error(\n \"Provided style for AreaChart does not define a style for the outline:\",\n styleMap,\n column\n );\n }\n\n if (!_underscore2.default.has(styleMap, \"area\")) {\n console.error(\n \"Provided style for AreaChart does not define a style for the area:\",\n styleMap\n );\n }\n\n if (this.props.selection) {\n if (isSelected) {\n style = (0, _merge2.default)(\n true,\n defaultStyle[type].selected,\n styleMap[type].selected ? styleMap[type].selected : {}\n );\n } else if (isHighlighted) {\n style = (0, _merge2.default)(\n true,\n defaultStyle[type].highlighted,\n styleMap[type].highlighted ? styleMap[type].highlighted : {}\n );\n } else {\n style = (0, _merge2.default)(\n true,\n defaultStyle[type].muted,\n styleMap[type].muted ? styleMap[type].muted : {}\n );\n }\n } else if (isHighlighted) {\n style = (0, _merge2.default)(\n true,\n defaultStyle[type].highlighted,\n styleMap[type].highlighted ? styleMap[type].highlighted : {}\n );\n } else {\n style = (0, _merge2.default)(\n true,\n defaultStyle[type].normal,\n styleMap[type].normal ? styleMap[type].normal : {}\n );\n }\n return style;\n }\n },\n {\n key: \"pathStyle\",\n value: function pathStyle(column) {\n return this.style(column, \"line\");\n }\n },\n {\n key: \"areaStyle\",\n value: function areaStyle(column) {\n return this.style(column, \"area\");\n }\n },\n {\n key: \"renderPaths\",\n value: function renderPaths(columnList, direction) {\n var _this2 = this;\n\n var dir = direction === \"up\" ? 1 : -1;\n var size = this.props.series.size();\n var offsets = new Array(size).fill(0);\n\n return columnList.map(function(column, i) {\n var style = _this2.areaStyle(column);\n var pathStyle = _this2.pathStyle(column);\n\n // Stack the series columns to get our data in x0, y0, y1 format\n var data = [];\n for (var j = 0; j < _this2.props.series.size(); j += 1) {\n var seriesPoint = _this2.props.series.at(j);\n data.push({\n x0: _this2.props.timeScale(seriesPoint.timestamp()),\n y0: _this2.props.yScale(offsets[j]),\n y1: _this2.props.yScale(offsets[j] + dir * seriesPoint.get(column))\n });\n if (_this2.props.stack) {\n offsets[j] += dir * seriesPoint.get(column);\n }\n }\n\n // Use D3 to build an area generation function\n var areaGenerator = (0, _d3Shape.area)()\n .curve(_curve2.default[_this2.props.interpolation])\n .x(function(d) {\n return d.x0;\n })\n .y0(function(d) {\n return d.y0;\n })\n .y1(function(d) {\n return d.y1;\n });\n\n // Use the area generation function with our stacked data\n // to get an SVG path\n var areaPath = areaGenerator(data);\n\n // Outline the top of the curve\n var lineGenerator = (0, _d3Shape.line)()\n .curve(_curve2.default[_this2.props.interpolation])\n .x(function(d) {\n return d.x0;\n })\n .y(function(d) {\n return d.y1;\n });\n var outlinePath = lineGenerator(data);\n\n return _react2.default.createElement(\n \"g\",\n { key: \"area-\" + i },\n _react2.default.createElement(\"path\", {\n d: areaPath,\n style: style,\n onClick: function onClick(e) {\n return _this2.handleClick(e, column);\n },\n onMouseLeave: function onMouseLeave() {\n return _this2.handleHoverLeave();\n },\n onMouseMove: function onMouseMove(e) {\n return _this2.handleHover(e, column);\n }\n }),\n _react2.default.createElement(\"path\", {\n d: outlinePath,\n style: pathStyle,\n onClick: function onClick(e) {\n return _this2.handleClick(e, column);\n },\n onMouseLeave: function onMouseLeave() {\n return _this2.handleHoverLeave();\n },\n onMouseMove: function onMouseMove(e) {\n return _this2.handleHover(e, column);\n }\n })\n );\n });\n }\n },\n {\n key: \"renderAreas\",\n value: function renderAreas() {\n var up = this.props.columns.up || [];\n var down = this.props.columns.down || [];\n return _react2.default.createElement(\n \"g\",\n null,\n this.renderPaths(up, \"up\"),\n this.renderPaths(down, \"down\")\n );\n }\n },\n {\n key: \"render\",\n value: function render() {\n return _react2.default.createElement(\"g\", null, this.renderAreas());\n }\n }\n ]);\n\n return AreaChart;\n})(_react2.default.Component);\n\nexports.default = AreaChart;\n\nAreaChart.propTypes = {\n /**\n * What [Pond TimeSeries](https://esnet-pondjs.appspot.com/#/timeseries) data to visualize\n */\n series: _propTypes2.default.instanceOf(_pondjs.TimeSeries).isRequired,\n\n /**\n * Reference to the axis which provides the vertical scale for ## drawing. e.g.\n * specifying axis=\"trafficRate\" would refer the y-scale to the YAxis of id=\"trafficRate\".\n */\n axis: _propTypes2.default.string.isRequired, // eslint-disable-line\n\n /**\n * Show or hide this chart\n */\n visible: _propTypes2.default.bool,\n\n /**\n * The series series columns mapped to stacking up and down.\n * Has the format:\n * ```\n * \"columns\": {\n * up: [\"in\", ...],\n * down: [\"out\", ...]\n * }\n * ```\n */\n columns: _propTypes2.default.shape({\n up: _propTypes2.default.arrayOf(_propTypes2.default.string),\n down: _propTypes2.default.arrayOf(_propTypes2.default.string)\n }),\n\n /**\n * Stack areas on top of each other\n */\n stack: _propTypes2.default.bool,\n\n /**\n * The styles to apply to the underlying SVG lines. This is a mapping\n * of column names to objects with style attributes, in the following\n * format:\n *\n * ```\n * const style = {\n * in: {\n * line: {\n * normal: {stroke: \"steelblue\", fill: \"none\", strokeWidth: 1},\n * highlighted: {stroke: \"#5a98cb\", fill: \"none\", strokeWidth: 1},\n * selected: {stroke: \"steelblue\", fill: \"none\", strokeWidth: 1},\n * muted: {stroke: \"steelblue\", fill: \"none\", opacity: 0.4, strokeWidth: 1}\n * },\n * area: {\n * normal: {fill: \"steelblue\", stroke: \"none\", opacity: 0.75},\n * highlighted: {fill: \"#5a98cb\", stroke: \"none\", opacity: 0.75},\n * selected: {fill: \"steelblue\", stroke: \"none\", opacity: 0.75},\n * muted: {fill: \"steelblue\", stroke: \"none\", opacity: 0.25}\n * }\n * },\n * out: {\n * ...\n * }\n * };\n *\n * \n * ```\n *\n * Alternatively, you can pass in a Styler. For example:\n *\n * ```\n * const upDownStyler = styler([\n * {key: \"in\", color: \"#C8D5B8\"},\n * {key: \"out\", color: \"#9BB8D7\"}\n * ]);\n *\n * \n *\n * ```\n */\n style: _propTypes2.default.oneOfType([\n _propTypes2.default.object,\n _propTypes2.default.func,\n _propTypes2.default.instanceOf(_styler.Styler)\n ]),\n\n /**\n * Any of D3's interpolation modes.\n */\n interpolation: _propTypes2.default.oneOf([\n \"curveBasis\",\n \"curveBasisOpen\",\n \"curveBundle\",\n \"curveCardinal\",\n \"curveCardinalOpen\",\n \"curveCatmullRom\",\n \"curveCatmullRomOpen\",\n \"curveLinear\",\n \"curveMonotoneX\",\n \"curveMonotoneY\",\n \"curveNatural\",\n \"curveRadial\",\n \"curveStep\",\n \"curveStepAfter\",\n \"curveStepBefore\"\n ]),\n\n /**\n * The currenly highlighted column\n */\n highlight: _propTypes2.default.string,\n\n /**\n * Callback called when the highlight changes, i.e. hover event\n */\n onHighlightChange: _propTypes2.default.func,\n\n /**\n * The currenly selected column\n */\n selection: _propTypes2.default.string,\n\n /**\n * Callback called when the selection changes, i.e. area is clicked\n */\n onSelectionChange: _propTypes2.default.func,\n\n /**\n * [Internal] The timeScale supplied by the surrounding ChartContainer\n */\n timeScale: _propTypes2.default.func,\n\n /**\n * [Internal] The yScale supplied by the associated YAxis\n */\n yScale: _propTypes2.default.func,\n\n /**\n * [Internal] The width supplied by the surrounding ChartContainer\n */\n width: _propTypes2.default.number\n};\n\nAreaChart.defaultProps = {\n visible: true,\n interpolation: \"curveLinear\",\n columns: {\n up: [\"value\"],\n down: []\n },\n stack: true\n};\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/AreaChart.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/BarChart.js": +/*!*************************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/BarChart.js ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends =\n Object.assign ||\n function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _merge = __webpack_require__(/*! merge */ \"./node_modules/merge/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _pondjs = __webpack_require__(/*! pondjs */ \"./node_modules/pondjs/lib/entry.js\");\n\nvar _EventMarker = __webpack_require__(/*! ./EventMarker */ \"./node_modules/react-timeseries-charts/lib/components/EventMarker.js\");\n\nvar _EventMarker2 = _interopRequireDefault(_EventMarker);\n\nvar _styler = __webpack_require__(/*! ../js/styler */ \"./node_modules/react-timeseries-charts/lib/js/styler.js\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\n \"Super expression must either be null or a function, not \" + typeof superClass\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: { value: subClass, enumerable: false, writable: true, configurable: true }\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n} /**\n * Copyright (c) 2015-present, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar defaultStyle = {\n normal: { fill: \"steelblue\", opacity: 0.8 },\n highlighted: { fill: \"steelblue\", opacity: 1.0 },\n selected: { fill: \"steelblue\", opacity: 1.0 },\n muted: { fill: \"steelblue\", opacity: 0.4 }\n};\n\n/**\n * Renders a bar chart based on IndexedEvents within a TimeSeries.\n *\n * This BarChart implementation is a little different that other time axis\n * bar charts in that it will render across a the time range of the event\n * rather than rendering to specific categories. As a result,\n * a Aug-2014 bar will render between the Aug 2014 tick mark and\n * the Sept 2014 tickmark. However, this allows it to play well with other\n * types of charts that maybe integrated into the same visualization.\n *\n * The BarChart will render a single TimeSeries. You can specify the columns\n * you want to render with the `columns` prop. Each column will be stacked on\n * the other, in the order specified in the `columns` array.\n *\n * ### IndexedEvents\n *\n * BarCharts are supposed to be for aggregated values (e.g. average of\n * many points over an hour), so the hours themselves are specified\n * with an \"Index\". An Index is a string that represents that range of time,\n * rather than a specific time like a timestamp would.\n *\n * Pond provides several mechanisms for building aggregated series from\n * a TimeSeries, and the BarChart code is suited to visualizing that\n * output. See Pond for more details (especially TimeSeries.fixedWindowRollup\n * and the Pipeline processing facilities). The realtime example in this\n * library also shows how to do this on incoming streams of data.\n *\n * If you have one timestamped point per hour and really want to represent\n * those with a BarChart, you can use the Pond static method\n * `Index.getIndexString(period, date)` to take the Date and return an\n * Index string. Say if those points were hourly, you'll end up with\n * strings that look like \"1h-412715\". This represents a specific hour\n * in time (the 412,715th hour since midnight 1 Jan 1970, actually).\n * Note that for larger time periods, index strings can be partial\n * dates, like \"2016-08-31\" for Aug 31st, 2016 or \"2016-08\" for Aug 2016.\n *\n * Use those index strings to build your timeseries instead of timestamps.\n * Here's the Pond code needed to convert a date to an index string:\n *\n * ```\n * import { Index } from \"pondjs\";\n * const d = new Date(\"2017-01-30T11:58:38.741Z\");\n * const index = Index.getIndexString(\"1h\", d); // '1h-412715'\n * ```\n *\n * With either the aggregated approach, or the above timestamped\n * conversion, you will want a `TimeSeries` of `IndexedEvent`s that\n * looks like this:\n * ```\n * const series = new TimeSeries({\n * name: \"myseries\",\n * columns: [\"index\", \"value\"],\n * points: [\n * [\"1h-41275\", 22],\n * [\"1h-41276\", 35],\n * [\"1h-41277\", 72],\n * ...\n * ]\n * })\n * ```\n *\n * Note: the first column of the timeseries should be \"index\" (not \"time\")\n * and each point should have an index string at the beginning.\n *\n * ### Interactivity\n *\n * The BarChart supports selection of individual bars. To control this use\n * `onSelectionChange` to get a callback of selection changed. Your callback\n * will be called with the selection (an object containing the event\n * and column). You can pass this back into the BarChart as `selection`. For\n * example:\n *\n * ```\n * this.setState({selection})} />\n * ```\n *\n * Similarly you can monitor which bar is being hovered over with the\n * `onHighlightChange` callback. This can be used to determine the info box\n * to display. Info box will display a box (like a tooltip) with a line\n * connecting it to the bar. You use the `info` prop to evoke this and to\n * supply the text for the info box. See the styling notes below for more\n * information on this.\n *\n * ### Styling\n *\n * A BarChart supports per-column or per-event styling. Styles can be set for\n * each of the four states that are possible: normal, highlighted,\n * selected and muted. To style per-column, supply an object. For per-event styling\n * supply a function: `(event, column) => {}` The functon should return a style object.\n *\n * See the `style` prop in the API documentation for more information.\n *\n * Separately the size of the bars can be controlled with the `spacing` and\n * `offset` props. Spacing controls the gap between the bars. Offset moves the\n * bars left or right by the given number of pixels. You can use this to place\n * bars along side each other. Alternatively, you can give each column a fixed width\n * using the `size` prop. In this case this size will be used in preference to the size\n * determined from the timerange of the event and the `spacing`.\n *\n * The info box is also able to be styled using `infoStyle`, `stemStyle` and\n * `markerStyle` This enables you to control the drawing of the box, the connecting\n * lines (stem) and dot respectively. Using the `infoWidth` and `infoHeight`\n * props you can control the size of the box, which is fixed. For the info inside\n * the box, it's up to you: it can either be a simple string or an array of\n * {label, value} pairs.\n */\n\nvar BarChart = (function(_React$Component) {\n _inherits(BarChart, _React$Component);\n\n function BarChart() {\n _classCallCheck(this, BarChart);\n\n return _possibleConstructorReturn(\n this,\n (BarChart.__proto__ || Object.getPrototypeOf(BarChart)).apply(this, arguments)\n );\n }\n\n _createClass(BarChart, [\n {\n key: \"handleHover\",\n value: function handleHover(e, event, column) {\n var bar = { event: event, column: column };\n if (this.props.onHighlightChange) {\n this.props.onHighlightChange(bar);\n }\n }\n },\n {\n key: \"handleHoverLeave\",\n value: function handleHoverLeave() {\n if (this.props.onHighlightChange) {\n this.props.onHighlightChange(null);\n }\n }\n },\n {\n key: \"handleClick\",\n value: function handleClick(e, event, column) {\n var bar = { event: event, column: column };\n if (this.props.onSelectionChange) {\n this.props.onSelectionChange(bar);\n }\n e.stopPropagation();\n }\n },\n {\n key: \"providedStyleMap\",\n value: function providedStyleMap(column) {\n var style = {};\n if (this.props.style) {\n if (this.props.style instanceof _styler.Styler) {\n style = this.props.style.barChartStyle()[column];\n } else if (_underscore2.default.isFunction(this.props.style)) {\n style = this.props.style(column);\n } else if (_underscore2.default.isObject(this.props.style)) {\n style = this.props.style ? this.props.style[column] : defaultStyle;\n }\n }\n return style;\n }\n\n /**\n * Returns the style used for drawing the path\n */\n },\n {\n key: \"style\",\n value: function style(column, event) {\n var style = void 0;\n var styleMap = this.providedStyleMap(column);\n\n var isHighlighted =\n this.props.highlighted &&\n column === this.props.highlighted.column &&\n _pondjs.Event.is(this.props.highlighted.event, event);\n\n var isSelected =\n this.props.selected &&\n column === this.props.selected.column &&\n _pondjs.Event.is(this.props.selected.event, event);\n\n if (this.props.selected) {\n if (isSelected) {\n style = (0, _merge2.default)(\n true,\n defaultStyle.selected,\n styleMap.selected ? styleMap.selected : {}\n );\n } else if (isHighlighted) {\n style = (0, _merge2.default)(\n true,\n defaultStyle.highlighted,\n styleMap.highlighted ? styleMap.highlighted : {}\n );\n } else {\n style = (0, _merge2.default)(\n true,\n defaultStyle.muted,\n styleMap.muted ? styleMap.muted : {}\n );\n }\n } else if (isHighlighted) {\n style = (0, _merge2.default)(\n true,\n defaultStyle.highlighted,\n styleMap.highlighted ? styleMap.highlighted : {}\n );\n } else {\n style = (0, _merge2.default)(\n true,\n defaultStyle.normal,\n styleMap.normal ? styleMap.normal : {}\n );\n }\n\n return style;\n }\n },\n {\n key: \"renderBars\",\n value: function renderBars() {\n var _this2 = this;\n\n var spacing = +this.props.spacing;\n var offset = +this.props.offset;\n var minBarHeight = this.props.minBarHeight;\n var series = this.props.series;\n var timeScale = this.props.timeScale;\n var yScale = this.props.yScale;\n var columns = this.props.columns || [\"value\"];\n\n var bars = [];\n var eventMarker = void 0;\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n var _loop = function _loop() {\n var event = _step.value;\n\n var begin = event.begin();\n var end = event.end();\n var beginPos = timeScale(begin) + spacing;\n var endPos = timeScale(end) - spacing;\n\n var width = void 0;\n if (_this2.props.size) {\n width = _this2.props.size;\n } else {\n width = endPos - beginPos;\n }\n\n if (width < 1) {\n width = 1;\n }\n\n var x = void 0;\n if (_this2.props.size) {\n var center = timeScale(begin) + (timeScale(end) - timeScale(begin)) / 2;\n x = center - _this2.props.size / 2 + offset;\n } else {\n x = timeScale(begin) + spacing + offset;\n }\n\n var yBase = yScale(0);\n var yposPositive = yBase;\n var yposNegative = yBase;\n if (columns) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n var _loop2 = function _loop2() {\n var column = _step2.value;\n\n var index = event.index();\n var key = series.name() + \"-\" + index + \"-\" + column;\n var value = event.get(column);\n var style = _this2.style(column, event);\n\n var height = yScale(0) - yScale(value);\n // Allow negative values. Minimum bar height = 1 pixel.\n // Stack negative bars below X-axis and positive above X-Axis\n var positiveBar = height >= 0;\n height = Math.max(Math.abs(height), minBarHeight);\n var y = positiveBar ? yposPositive - height : yposNegative;\n\n // Event marker if info provided and hovering\n var isHighlighted =\n _this2.props.highlighted &&\n column === _this2.props.highlighted.column &&\n _pondjs.Event.is(_this2.props.highlighted.event, event);\n if (isHighlighted && _this2.props.info) {\n eventMarker = _react2.default.createElement(\n _EventMarker2.default,\n _extends({}, _this2.props, {\n event: event,\n column: column,\n offsetX: offset,\n offsetY:\n yBase -\n (positiveBar ? yposPositive : yposNegative)\n })\n );\n }\n\n var box = { x: x, y: y, width: width, height: height };\n var barProps = _extends({ key: key }, box, { style: style });\n\n if (_this2.props.onSelectionChange) {\n barProps.onClick = function(e) {\n return _this2.handleClick(e, event, column);\n };\n }\n if (_this2.props.onHighlightChange) {\n barProps.onMouseMove = function(e) {\n return _this2.handleHover(e, event, column);\n };\n barProps.onMouseLeave = function() {\n return _this2.handleHoverLeave();\n };\n }\n\n bars.push(_react2.default.createElement(\"rect\", barProps));\n\n if (positiveBar) {\n yposPositive -= height;\n } else {\n yposNegative += height;\n }\n };\n\n for (\n var _iterator2 = columns[Symbol.iterator](), _step2;\n !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next())\n .done);\n _iteratorNormalCompletion2 = true\n ) {\n _loop2();\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n };\n\n for (\n var _iterator = series.events()[Symbol.iterator](), _step;\n !(_iteratorNormalCompletion = (_step = _iterator.next()).done);\n _iteratorNormalCompletion = true\n ) {\n _loop();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return _react2.default.createElement(\"g\", null, bars, eventMarker);\n }\n },\n {\n key: \"render\",\n value: function render() {\n return _react2.default.createElement(\"g\", null, this.renderBars());\n }\n }\n ]);\n\n return BarChart;\n})(_react2.default.Component);\n\nexports.default = BarChart;\n\nBarChart.propTypes = {\n /**\n * Show or hide this chart\n */\n visible: _propTypes2.default.bool,\n\n /**\n * What [Pond TimeSeries](https://esnet-pondjs.appspot.com/#/timeseries)\n * data to visualize\n */\n series: _propTypes2.default.instanceOf(_pondjs.TimeSeries).isRequired,\n\n /**\n * The distance in pixels to inset the bar chart from its actual timerange\n */\n spacing: _propTypes2.default.number,\n\n /**\n * The distance in pixels to offset the bar from its center position within the timerange\n * it represents\n */\n offset: _propTypes2.default.number,\n\n /**\n * The minimum height of a bar given in pixels.\n * By default, the minimum height of a bar is 1 pixel\n */\n minBarHeight: _propTypes2.default.number,\n\n /**\n * A list of columns within the series that will be stacked on top of each other\n */\n columns: _propTypes2.default.arrayOf(_propTypes2.default.string),\n\n /**\n * The style of the bar chart drawing (using SVG CSS properties).\n * This is an object with a key for each column which is being drawn,\n * per the `columns` prop. For each column a style is defined for\n * each state the bar may be in. This style is the CSS properties for\n * the underlying SVG , so most likely you'll define fill and\n * opacity.\n *\n * For example:\n * ```\n * style = {\n * columnName: {\n * normal: {\n * fill: \"steelblue\",\n * opacity: 0.8,\n * },\n * highlighted: {\n * fill: \"#a7c4dd\",\n * opacity: 1.0,\n * },\n * selected: {\n * fill: \"orange\",\n * opacity: 1.0,\n * },\n * muted: {\n * fill: \"grey\",\n * opacity: 0.5\n * }\n * }\n * }\n * ```\n *\n * You can also supply a function, which will be called with an event\n * and column. The function should return an object containing the\n * four states (normal, highlighted, selected and muted) and the corresponding\n * CSS properties.\n */\n style: _propTypes2.default.oneOfType([\n _propTypes2.default.object,\n _propTypes2.default.func,\n _propTypes2.default.instanceOf(_styler.Styler)\n ]),\n\n /**\n * The values to show in the info box. This is an array of\n * objects, with each object specifying the label and value\n * to be shown in the info box.\n */\n info: _propTypes2.default.arrayOf(\n _propTypes2.default.shape({\n label: _propTypes2.default.string, //eslint-disable-line\n value: _propTypes2.default.string //eslint-disable-line\n })\n ),\n\n /**\n * The style of the info box itself. Typically you'd want to\n * specify a fill color, and stroke color / width here.\n */\n infoStyle: _propTypes2.default.object, //eslint-disable-line\n\n /**\n * The width of the info box\n */\n infoWidth: _propTypes2.default.number, //eslint-disable-line\n\n /**\n * The height of the info box\n */\n infoHeight: _propTypes2.default.number, //eslint-disable-line\n\n /**\n * Alter the format of the timestamp shown on the info box.\n * This may be either a function or a string. If you provide a function\n * that will be passed an Index and should return a string. For example:\n * ```\n * index => moment(index.begin()).format(\"Do MMM 'YY\")\n * ```\n * Alternatively you can pass in a d3 format string. That will be applied\n * to the begin time of the Index range.\n */\n infoTimeFormat: _propTypes2.default.oneOfType([\n //eslint-disable-line\n _propTypes2.default.string, //eslint-disable-line\n _propTypes2.default.func //eslint-disable-line\n ]),\n\n /**\n * The radius of the infoBox dot at the end of the marker\n */\n markerRadius: _propTypes2.default.number,\n\n /**\n * The style of the infoBox dot at the end of the marker\n */\n markerStyle: _propTypes2.default.object,\n\n /**\n * If size is specified, then the bar will be this number of pixels wide. This\n * prop takes priority over \"spacing\".\n */\n size: _propTypes2.default.number,\n\n /**\n * The selected item, which will be rendered in the \"selected\" style.\n * If a bar is selected, all other bars will be rendered in the \"muted\" style.\n *\n * See also `onSelectionChange`\n */\n selected: _propTypes2.default.shape({\n event: _propTypes2.default.instanceOf(_pondjs.IndexedEvent),\n column: _propTypes2.default.string\n }),\n\n /**\n * A callback that will be called when the selection changes. It will be called\n * with an object containing the event and column.\n */\n onSelectionChange: _propTypes2.default.func,\n\n /**\n * The highlighted item, which will be rendered in the \"highlighted\" style.\n *\n * See also `onHighlightChange`\n */\n highlighted: _propTypes2.default.shape({\n event: _propTypes2.default.instanceOf(_pondjs.IndexedEvent),\n column: _propTypes2.default.string\n }),\n\n /**\n * A callback that will be called when the hovered over bar changes.\n * It will be called with an object containing the event and column.\n */\n onHighlightChange: _propTypes2.default.func,\n\n /**\n * [Internal] The timeScale supplied by the surrounding ChartContainer\n */\n timeScale: _propTypes2.default.func,\n\n /**\n * [Internal] The yScale supplied by the associated YAxis\n */\n yScale: _propTypes2.default.func\n};\n\nBarChart.defaultProps = {\n visible: true,\n columns: [\"value\"],\n spacing: 1.0,\n offset: 0,\n minBarHeight: 1,\n infoStyle: {\n stroke: \"#999\",\n fill: \"white\",\n opacity: 0.9,\n pointerEvents: \"none\"\n },\n stemStyle: {\n stroke: \"#999\",\n cursor: \"crosshair\",\n pointerEvents: \"none\"\n },\n markerStyle: {\n fill: \"#999\"\n },\n markerRadius: 2,\n infoWidth: 90,\n infoHeight: 30\n};\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/BarChart.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/Baseline.js": +/*!*************************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/Baseline.js ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends =\n Object.assign ||\n function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nvar _merge = __webpack_require__(/*! merge */ \"./node_modules/merge/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\n \"Super expression must either be null or a function, not \" + typeof superClass\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: { value: subClass, enumerable: false, writable: true, configurable: true }\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n} /**\n * Copyright (c) 2015-present, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar defaultStyle = {\n label: {\n fill: \"#8B7E7E\", // Default label color\n fontWeight: 100,\n fontSize: 11,\n pointerEvents: \"none\"\n },\n line: {\n stroke: \"#626262\",\n strokeWidth: 1,\n strokeDasharray: \"5,3\",\n pointerEvents: \"none\"\n }\n};\n\n/**\n *\n * The BaseLine component displays a simple horizontal line at a value.\n *\n * For example the following code overlays Baselines for the mean and stdev\n * of a series on top of another chart.\n *\n * ```\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n */\n\nvar Baseline = (function(_React$Component) {\n _inherits(Baseline, _React$Component);\n\n function Baseline() {\n _classCallCheck(this, Baseline);\n\n return _possibleConstructorReturn(\n this,\n (Baseline.__proto__ || Object.getPrototypeOf(Baseline)).apply(this, arguments)\n );\n }\n\n _createClass(Baseline, [\n {\n key: \"render\",\n value: function render() {\n var _props = this.props,\n vposition = _props.vposition,\n yScale = _props.yScale,\n value = _props.value,\n position = _props.position,\n style = _props.style,\n width = _props.width;\n\n if (!yScale || _underscore2.default.isUndefined(value)) {\n return null;\n }\n\n var y = yScale(value);\n var transform = \"translate(0 \" + y + \")\";\n var textAnchor = void 0;\n var textPositionX = void 0;\n var pts = [];\n\n var labelBelow = (vposition === \"auto\" && y < 15) || vposition === \"below\";\n var textPositionY = labelBelow ? 2 : -2;\n var alignmentBaseline = labelBelow ? \"hanging\" : \"auto\";\n\n if (position === \"left\") {\n textAnchor = \"start\";\n textPositionX = 5;\n }\n if (position === \"right\") {\n textAnchor = \"end\";\n textPositionX = width - 5;\n }\n\n pts.push(\"0 0\");\n pts.push(width + \" 0\");\n var points = pts.join(\" \");\n\n //\n // Style\n //\n\n var baseLabelStyle = _extends({}, defaultStyle.label, {\n alignmentBaseline: alignmentBaseline\n });\n\n var labelStyle = (0, _merge2.default)(\n true,\n baseLabelStyle,\n style.label ? style.label : {}\n );\n var lineStyle = (0, _merge2.default)(\n true,\n defaultStyle.line,\n style.line ? style.line : {}\n );\n\n return _react2.default.createElement(\n \"g\",\n { className: \"baseline\", transform: transform },\n _react2.default.createElement(\"polyline\", { points: points, style: lineStyle }),\n _react2.default.createElement(\n \"text\",\n {\n style: labelStyle,\n x: textPositionX,\n y: textPositionY,\n textAnchor: textAnchor\n },\n this.props.label\n )\n );\n }\n }\n ]);\n\n return Baseline;\n})(_react2.default.Component);\n\nexports.default = Baseline;\n\nBaseline.defaultProps = {\n visible: true,\n value: 0,\n label: \"\",\n position: \"left\",\n vposition: \"auto\",\n style: defaultStyle\n};\n\nBaseline.propTypes = {\n /**\n * Show or hide this chart\n */\n visible: _propTypes2.default.bool,\n\n /**\n * Reference to the axis which provides the vertical scale for drawing. e.g.\n * specifying axis=\"trafficRate\" would refer the y-scale to the YAxis of id=\"trafficRate\".\n */\n axis: _propTypes2.default.string.isRequired, // eslint-disable-line\n\n /**\n * An object describing the style of the baseline of the form\n * { label, line }. \"label\" and \"line\" are both objects containing\n * the inline CSS for that part of the baseline.\n */\n style: _propTypes2.default.shape({\n label: _propTypes2.default.object, // eslint-disable-line\n line: _propTypes2.default.object // eslint-disable-line\n }),\n\n /**\n * The y-value to display the line at.\n */\n value: _propTypes2.default.number,\n\n /**\n * The label to display with the axis.\n */\n label: _propTypes2.default.string,\n\n /**\n * Whether to display the label on the \"left\" or \"right\".\n */\n position: _propTypes2.default.oneOf([\"left\", \"right\"]),\n\n /**\n * Whether to display the label above or below the line. The default is \"auto\",\n * which will show it above the line unless the position is near to the top\n * of the chart.\n */\n vposition: _propTypes2.default.oneOf([\"above\", \"below\", \"auto\"]),\n\n /**\n * [Internal] The yScale supplied by the associated YAxis\n */\n yScale: _propTypes2.default.func,\n\n /**\n * [Internal] The width supplied by the surrounding ChartContainer\n */\n width: _propTypes2.default.number\n};\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/Baseline.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/BoxChart.js": +/*!*************************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/BoxChart.js ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nvar _extends =\n Object.assign ||\n function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n }; /**\n * Copyright (c) 2015-present, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _merge = __webpack_require__(/*! merge */ \"./node_modules/merge/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _pondjs = __webpack_require__(/*! pondjs */ \"./node_modules/pondjs/lib/entry.js\");\n\nvar _EventMarker = __webpack_require__(/*! ./EventMarker */ \"./node_modules/react-timeseries-charts/lib/components/EventMarker.js\");\n\nvar _EventMarker2 = _interopRequireDefault(_EventMarker);\n\nvar _styler = __webpack_require__(/*! ../js/styler */ \"./node_modules/react-timeseries-charts/lib/js/styler.js\");\n\nvar _util = __webpack_require__(/*! ../js/util */ \"./node_modules/react-timeseries-charts/lib/js/util.js\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\n \"Super expression must either be null or a function, not \" + typeof superClass\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: { value: subClass, enumerable: false, writable: true, configurable: true }\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n}\n\nvar defaultFillStyle = {\n fill: \"steelblue\",\n stroke: \"none\"\n};\n\nvar defaultMutedStyle = {\n fill: \"grey\",\n stroke: \"none\"\n};\n\nvar defaultStyle = [\n {\n normal: _extends({}, defaultFillStyle, { opacity: 0.2 }),\n highlighted: _extends({}, defaultFillStyle, { opacity: 0.3 }),\n selected: _extends({}, defaultFillStyle, { opacity: 0.3 }),\n muted: _extends({}, defaultMutedStyle, { opacity: 0.1 })\n },\n {\n normal: _extends({}, defaultFillStyle, { opacity: 0.5 }),\n highlighted: _extends({}, defaultFillStyle, { opacity: 0.6 }),\n selected: _extends({}, defaultFillStyle, { opacity: 0.6 }),\n muted: _extends({}, defaultMutedStyle, { opacity: 0.2 })\n },\n {\n normal: _extends({}, defaultFillStyle, { opacity: 0.9 }),\n highlighted: _extends({}, defaultFillStyle, { opacity: 1.0 }),\n selected: _extends({}, defaultFillStyle, { opacity: 1.0 }),\n muted: _extends({}, defaultMutedStyle, { opacity: 0.2 })\n }\n];\n\nvar defaultAggregation = {\n size: \"5m\",\n reducers: {\n outer: [(0, _pondjs.min)(), (0, _pondjs.max)()],\n inner: [(0, _pondjs.percentile)(25), (0, _pondjs.percentile)(75)],\n center: (0, _pondjs.median)()\n }\n};\n\nfunction getSeries(series, column) {\n return series.map(function(e) {\n var v = e.get(column);\n var d = {};\n switch (v.length) {\n case 1:\n d.center = v[0];\n break;\n case 2:\n d.innerMin = v[0];\n d.innerMax = v[1];\n break;\n case 3:\n d.innerMin = v[0];\n d.center = v[1];\n d.innerMax = v[2];\n break;\n case 4:\n d.outerMin = v[0];\n d.innerMin = v[1];\n d.innerMax = v[2];\n d.outerMax = v[3];\n break;\n case 5:\n d.outerMin = v[0];\n d.innerMin = v[1];\n d.center = v[2];\n d.innerMax = v[3];\n d.outerMax = v[4];\n break;\n default:\n console.error(\"Tried to make boxchart from invalid array\");\n }\n var ee = new _pondjs.IndexedEvent(e.index(), d);\n return ee;\n });\n}\n\nfunction getAggregatedSeries(series, column) {\n var aggregation =\n arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultAggregation;\n var size = aggregation.size,\n reducers = aggregation.reducers;\n var inner = reducers.inner,\n outer = reducers.outer,\n center = reducers.center;\n\n function mapColumn(c, r) {\n var obj = {};\n obj[c] = r;\n return obj;\n }\n\n var fixedWindowAggregation = {};\n\n if (inner) {\n fixedWindowAggregation.innerMin = mapColumn(column, inner[0]);\n fixedWindowAggregation.innerMax = mapColumn(column, inner[1]);\n }\n\n if (outer) {\n fixedWindowAggregation.outerMin = mapColumn(column, outer[0]);\n fixedWindowAggregation.outerMax = mapColumn(column, outer[1]);\n }\n\n if (center) {\n fixedWindowAggregation.center = mapColumn(column, center);\n }\n\n var aggregatedSeries = series.fixedWindowRollup({\n windowSize: size,\n aggregation: fixedWindowAggregation\n });\n\n return aggregatedSeries;\n}\n\n/**\n * Renders a boxplot chart.\n *\n * The TimeSeries supplied to the boxplot, as the `series` prop can be one of two types:\n *\n * 1) It can be a TimeSeries containing IndexedEvents or TimeRangeEvents.\n * In this case a `column` prop should be supplied to specify the\n * data column containing the dimensions of the boxes. This props\n * should be an array of size 1 to 5 elements. e.g. [12, 18, 22, 28]. The\n * numbers should be ordered, lowest to greatest.\n *\n * 2) A TimeSeries containing timestamp based Events. In this case the\n * boxplot will be aggregated for you. To control the aggregation you can supply\n * an `aggregation` prop: a structure to specify the window size and\n * reducers used to determine the boxes.\n *\n * In both cases you are generating up to two ranges and a center marker. In the\n * first case you are defining this based on the array of numbers. The outer numbers\n * specify the outerRange, the inner numbers specify the innerRange and the middle\n * number specifies the center marker. In the second case you are building those ranges\n * from denser data, specifying a window and aggregation functions to build each\n * of the ranges and center maker.\n *\n * In both cases you do not need to supply all the values. For example if you\n * provide an array of 2 elements, that would define a single range, with no outer range\n * and no center marker. The BoxChart is pretty flexible in that way, so you\n * can use it in many situations.\n *\n * Here is an example of using it to display temperature ranges. The series\n * passed to this code would be a TimeSeries containing IndexedEvents. For\n * each event, the column `temp` contains an array of values used for the\n * box plot ranges:\n *\n * ```\n * \n * ```\n *\n * While here is an example with a dense TimeSeries of Events supplied,\n * along with an aggregation specification. This code would produce an\n * outer range from the 5th percentile to the 95th, along with an inner\n * range for the interquantile, and a center marker at the median:\n *\n * ```\n * \n * ```\n *\n * The BoxChart supports Info boxes, highlighting and selection.\n *\n * Note: selection and highlighting is on the whole event, not individual ranges.\n * Also note that since the box chart builds an internal TimeSeries for performance\n * reasons, selection will give you and IndexedEvent, but it won't be the same\n * IndexedEvent in your `series`. Similarly if you are using the aggregation\n * specification you will get events for the rollup, not your original data.\n */\n\nvar BoxChart = (function(_React$Component) {\n _inherits(BoxChart, _React$Component);\n\n function BoxChart(props) {\n _classCallCheck(this, BoxChart);\n\n var _this = _possibleConstructorReturn(\n this,\n (BoxChart.__proto__ || Object.getPrototypeOf(BoxChart)).call(this, props)\n );\n\n if (\n props.series._collection._type === _pondjs.TimeEvent // eslint-disable-line\n ) {\n _this.series = getAggregatedSeries(props.series, props.column, props.aggregation);\n } else {\n _this.series = getSeries(props.series, props.column);\n }\n return _this;\n }\n\n _createClass(BoxChart, [\n {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n var aggregation = nextProps.aggregation;\n\n var aggregationChanged = false;\n if (\n _underscore2.default.isUndefined(aggregation) !==\n _underscore2.default.isUndefined(this.props.aggregation)\n ) {\n aggregationChanged = true;\n }\n\n if (aggregation && this.props.aggregation) {\n if (aggregation.size !== this.props.aggregation.size) {\n aggregationChanged = true;\n }\n }\n\n if (aggregationChanged) {\n this.series = getAggregatedSeries(\n nextProps.series,\n nextProps.column,\n nextProps.aggregation\n );\n }\n }\n },\n {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n var newSeries = nextProps.series;\n var oldSeries = this.props.series;\n var width = nextProps.width;\n var timeScale = nextProps.timeScale;\n var yScale = nextProps.yScale;\n var column = nextProps.column;\n var style = nextProps.style;\n var aggregation = nextProps.aggregation;\n var highlighted = nextProps.highlighted;\n var selected = nextProps.selected;\n\n var widthChanged = this.props.width !== width;\n var timeScaleChanged =\n (0, _util.scaleAsString)(this.props.timeScale) !==\n (0, _util.scaleAsString)(timeScale);\n var yAxisScaleChanged = this.props.yScale !== yScale;\n var columnChanged = this.props.column !== column;\n var styleChanged = JSON.stringify(this.props.style) !== JSON.stringify(style);\n var highlightedChanged = this.props.highlighted !== highlighted;\n var selectedChanged = this.props.selected !== selected;\n\n var aggregationChanged = false;\n if (\n _underscore2.default.isUndefined(aggregation) !==\n _underscore2.default.isUndefined(this.props.aggregation)\n ) {\n aggregationChanged = true;\n }\n\n if (aggregation && this.props.aggregation) {\n if (aggregation.size !== this.props.aggregation.size) {\n aggregationChanged = true;\n }\n }\n\n var seriesChanged = false;\n if (oldSeries.length !== newSeries.length) {\n seriesChanged = true;\n } else {\n seriesChanged = !_pondjs.TimeSeries.is(oldSeries, newSeries);\n }\n\n // If the series changes we need to rebuild this.series with\n // the incoming props\n if (seriesChanged) {\n if (\n nextProps.series._collection._type === _pondjs.TimeEvent // eslint-disable-line\n ) {\n this.series = getAggregatedSeries(\n nextProps.series,\n nextProps.column,\n nextProps.aggregation\n );\n } else {\n this.series = getSeries(nextProps.series, nextProps.column);\n }\n }\n\n return (\n seriesChanged ||\n timeScaleChanged ||\n widthChanged ||\n columnChanged ||\n styleChanged ||\n yAxisScaleChanged ||\n aggregationChanged ||\n highlightedChanged ||\n selectedChanged\n );\n }\n },\n {\n key: \"handleHover\",\n value: function handleHover(e, event) {\n if (this.props.onHighlightChange) {\n this.props.onHighlightChange(event);\n }\n }\n },\n {\n key: \"handleHoverLeave\",\n value: function handleHoverLeave() {\n if (this.props.onHighlightChange) {\n this.props.onHighlightChange(null);\n }\n }\n },\n {\n key: \"handleClick\",\n value: function handleClick(e, event) {\n if (this.props.onSelectionChange) {\n this.props.onSelectionChange(event);\n }\n e.stopPropagation();\n }\n },\n {\n key: \"providedStyleArray\",\n value: function providedStyleArray(column) {\n var style = defaultStyle;\n if (this.props.style) {\n if (this.props.style instanceof _styler.Styler) {\n style = this.props.style.boxChartStyle()[column];\n } else if (_underscore2.default.isFunction(this.props.style)) {\n style = this.props.style(column);\n } else if (_underscore2.default.isObject(this.props.style)) {\n style = this.props.style ? this.props.style[column] : defaultStyle;\n }\n }\n return style;\n }\n\n /**\n * Returns the style used for drawing the path\n */\n },\n {\n key: \"style\",\n value: function style(column, event, level) {\n var style = void 0;\n if (!this.providedStyle) {\n this.providedStyle = this.providedStyleArray(this.props.column);\n }\n\n if (\n !_underscore2.default.isNull(this.providedStyle) &&\n (!_underscore2.default.isArray(this.providedStyle) ||\n this.providedStyle.length !== 3)\n ) {\n console.warn(\"Provided style to BoxChart should be an array of 3 objects\");\n return defaultStyle;\n }\n\n var isHighlighted =\n this.props.highlighted && _pondjs.Event.is(this.props.highlighted, event);\n\n var isSelected =\n this.props.selected && _pondjs.Event.is(this.props.selected, event);\n\n if (this.props.selected) {\n if (isSelected) {\n if (!this.selectedStyle || !this.selectedStyle[level]) {\n if (!this.selectedStyle) {\n this.selectedStyle = [];\n }\n this.selectedStyle[level] = (0, _merge2.default)(\n true,\n defaultStyle[level].selected,\n this.providedStyle[level].selected\n ? this.providedStyle[level].selected\n : {}\n );\n }\n style = this.selectedStyle[level];\n } else if (isHighlighted) {\n if (!this.highlightedStyle || !this.highlightedStyle[level]) {\n if (!this.highlightedStyle) {\n this.highlightedStyle = [];\n }\n this.highlightedStyle[level] = (0, _merge2.default)(\n true,\n defaultStyle[level].highlighted,\n this.providedStyle[level].highlighted\n ? this.providedStyle[level].highlighted\n : {}\n );\n }\n style = this.highlightedStyle[level];\n } else {\n if (!this.mutedStyle) {\n this.mutedStyle = [];\n }\n if (!this.mutedStyle[level]) {\n this.mutedStyle[level] = (0, _merge2.default)(\n true,\n defaultStyle[level].muted,\n this.providedStyle[level].muted\n ? this.providedStyle[level].muted\n : {}\n );\n }\n style = this.mutedStyle[level];\n }\n } else if (isHighlighted) {\n style = (0, _merge2.default)(\n true,\n defaultStyle[level].highlighted,\n this.providedStyle[level].highlighted\n ? this.providedStyle[level].highlighted\n : {}\n );\n } else {\n if (!this.normalStyle) {\n this.normalStyle = [];\n }\n if (!this.normalStyle[level]) {\n this.normalStyle[level] = (0, _merge2.default)(\n true,\n defaultStyle[level].normal,\n this.providedStyle[level].normal ? this.providedStyle[level].normal : {}\n );\n }\n style = this.normalStyle[level];\n }\n return style;\n }\n },\n {\n key: \"renderBars\",\n value: function renderBars() {\n var _this2 = this;\n\n var _props = this.props,\n timeScale = _props.timeScale,\n yScale = _props.yScale,\n column = _props.column;\n\n var innerSpacing = +this.props.innerSpacing;\n var outerSpacing = +this.props.outerSpacing;\n var innerSize = +this.props.innerSize;\n var outerSize = +this.props.outerSize;\n\n var bars = [];\n var eventMarker = void 0;\n\n var scaled = function scaled(d, field) {\n return d.has(field) &&\n !_underscore2.default.isUndefined(d.get(field)) &&\n !_underscore2.default.isNaN(d.get(field))\n ? yScale(d.get(field))\n : null;\n };\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n var _loop = function _loop() {\n var event = _step.value;\n\n var index = event.index();\n var begin = event.begin();\n var end = event.end();\n var d = event.data();\n\n var beginPosInner = timeScale(begin) + innerSpacing;\n var endPosInner = timeScale(end) - innerSpacing;\n\n var beginPosOuter = timeScale(begin) + outerSpacing;\n var endPosOuter = timeScale(end) - outerSpacing;\n\n var innerWidth = innerSize || endPosInner - beginPosInner;\n if (innerWidth < 1) {\n innerWidth = 1;\n }\n\n var outerWidth = outerSize || endPosOuter - beginPosOuter;\n if (outerWidth < 1) {\n outerWidth = 1;\n }\n\n var c = timeScale(begin) + (timeScale(end) - timeScale(begin)) / 2;\n\n var xInner = timeScale(begin) + innerSpacing;\n if (innerSize) {\n xInner = c - innerSize / 2;\n }\n\n var xOuter = timeScale(begin) + outerSpacing;\n if (outerSize) {\n xOuter = c - outerSize / 2;\n }\n\n var styles = [];\n styles[0] = _this2.style(column, event, 0);\n styles[1] = _this2.style(column, event, 1);\n styles[2] = _this2.style(column, event, 2);\n\n var innerMin = scaled(d, \"innerMin\");\n var innerMax = scaled(d, \"innerMax\");\n var outerMin = scaled(d, \"outerMin\");\n var outerMax = scaled(d, \"outerMax\");\n var center = scaled(d, \"center\");\n\n var hasInner = true;\n var hasOuter = true;\n var hasCenter = true;\n if (\n _underscore2.default.isNull(innerMin) ||\n _underscore2.default.isNull(innerMax)\n ) {\n hasInner = false;\n }\n if (\n _underscore2.default.isNull(outerMin) ||\n _underscore2.default.isNull(outerMax)\n ) {\n hasOuter = false;\n }\n if (_underscore2.default.isNull(center)) {\n hasCenter = false;\n }\n\n var ymax = 0;\n if (hasOuter) {\n var level = 0;\n if (!hasInner) {\n level += 1;\n }\n if (!hasCenter) {\n level += 1;\n }\n var keyOuter =\n (_this2.series.name() ? _this2.series.name() : \"series\") +\n \"-\" +\n index +\n \"-outer\";\n var boxOuter = {\n x: xOuter,\n y: outerMax,\n width: outerWidth,\n height: outerMin - outerMax,\n rx: 2,\n ry: 2\n };\n var barOuterProps = _extends(\n {\n key: keyOuter\n },\n boxOuter,\n {\n style: styles[level]\n }\n );\n\n if (_this2.props.onSelectionChange) {\n barOuterProps.onClick = function(e) {\n return _this2.handleClick(e, event);\n };\n }\n if (_this2.props.onHighlightChange) {\n barOuterProps.onMouseMove = function(e) {\n return _this2.handleHover(e, event);\n };\n barOuterProps.onMouseLeave = function() {\n return _this2.handleHoverLeave();\n };\n }\n\n bars.push(_react2.default.createElement(\"rect\", barOuterProps));\n ymax = \"outerMax\";\n }\n\n if (hasInner) {\n var _level = 1;\n if (!hasCenter) {\n _level += 1;\n }\n var keyInner = _this2.series.name() + \"-\" + index + \"-inner\";\n var boxInner = {\n x: xInner,\n y: innerMax,\n width: innerWidth,\n height: innerMin - innerMax,\n rx: 1,\n ry: 1\n };\n var barInnerProps = _extends(\n {\n key: keyInner\n },\n boxInner,\n {\n style: styles[_level]\n }\n );\n if (_this2.props.onSelectionChange) {\n barInnerProps.onClick = function(e) {\n return _this2.handleClick(e, event);\n };\n }\n if (_this2.props.onHighlightChange) {\n barInnerProps.onMouseMove = function(e) {\n return _this2.handleHover(e, event);\n };\n barInnerProps.onMouseLeave = function() {\n return _this2.handleHoverLeave();\n };\n }\n\n bars.push(_react2.default.createElement(\"rect\", barInnerProps));\n ymax = ymax || \"innerMax\";\n }\n\n if (hasCenter) {\n var _level2 = 2;\n var keyCenter = _this2.series.name() + \"-\" + index + \"-center\";\n var boxCenter = {\n x: xInner,\n y: center,\n width: innerWidth,\n height: 1\n };\n var barCenterProps = _extends(\n {\n key: keyCenter\n },\n boxCenter,\n {\n style: styles[_level2]\n }\n );\n if (_this2.props.onSelectionChange) {\n barCenterProps.onClick = function(e) {\n return _this2.handleClick(e, event);\n };\n }\n if (_this2.props.onHighlightChange) {\n barCenterProps.onMouseMove = function(e) {\n return _this2.handleHover(e, event);\n };\n barCenterProps.onMouseLeave = function() {\n return _this2.handleHoverLeave();\n };\n }\n if (_underscore2.default.isNaN(barCenterProps.y)) {\n console.log(d.toString());\n }\n bars.push(_react2.default.createElement(\"rect\", barCenterProps));\n ymax = ymax || \"center\";\n }\n\n // Event marker if info provided and hovering\n var isHighlighted =\n _this2.props.highlighted &&\n _pondjs.Event.is(_this2.props.highlighted, event);\n if (isHighlighted && _this2.props.info) {\n eventMarker = _react2.default.createElement(\n _EventMarker2.default,\n _extends({}, _this2.props, {\n yValueFunc: function yValueFunc(e) {\n return e.get(ymax);\n },\n event: event,\n column: column,\n marker: \"circle\",\n markerRadius: 2\n })\n );\n }\n };\n\n for (\n var _iterator = this.series.events()[Symbol.iterator](), _step;\n !(_iteratorNormalCompletion = (_step = _iterator.next()).done);\n _iteratorNormalCompletion = true\n ) {\n _loop();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return _react2.default.createElement(\"g\", null, bars, eventMarker);\n }\n },\n {\n key: \"render\",\n value: function render() {\n return _react2.default.createElement(\"g\", null, this.renderBars());\n }\n }\n ]);\n\n return BoxChart;\n})(_react2.default.Component);\n\nexports.default = BoxChart;\n\nBoxChart.propTypes = {\n /**\n * Show or hide this chart\n */\n visible: _propTypes2.default.bool,\n\n /**\n * What [Pond TimeSeries](https://esnet-pondjs.appspot.com/#/timeseries)\n * data to visualize. See general notes on the BoxChart.\n */\n series: function series(props, propName, componentName) {\n var value = props[propName];\n if (!(value instanceof _pondjs.TimeSeries)) {\n return new Error(\n \"A TimeSeries needs to be passed to \" + componentName + \" as the 'series' prop.\"\n );\n }\n\n // TODO: Better detection of errors\n\n // everything ok\n return null;\n },\n\n /**\n * The column within the TimeSeries to plot. Unlike other charts, the BoxChart\n * works on just a single column.\n */\n column: _propTypes2.default.string,\n\n /**\n * The aggregation specification. This object should contain:\n * - innerMax\n * - innerMin\n * - outerMax\n * - outerMin\n * - center\n * Though each of the pairs, and center, is optional.\n * For each of these keys you should supply the function you\n * want to use to calculate these. You can import common functions\n * from Pond, e.g. min(), avg(), percentile(95), etc.\n *\n * For example:\n * ```\n * {\n * size: this.state.rollup,\n * reducers: {\n * outer: [min(), max()],\n * inner: [percentile(25), percentile(75)],\n * center: median(),\n * },\n * }\n * ```\n */\n aggregation: _propTypes2.default.shape({\n size: _propTypes2.default.string,\n reducers: _propTypes2.default.shape({\n inner: _propTypes2.default.arrayOf(_propTypes2.default.func), // eslint-disable-line\n outer: _propTypes2.default.arrayOf(_propTypes2.default.func), // eslint-disable-line\n center: _propTypes2.default.func // eslint-disable-line\n })\n }), // eslint-disable-line\n\n /**\n * The style of the box chart drawing (using SVG CSS properties) or\n * a styler object. It is recommended to user the styler unless you need\n * detailed customization.\n */\n style: _propTypes2.default.oneOfType([\n _propTypes2.default.object,\n _propTypes2.default.func,\n _propTypes2.default.instanceOf(_styler.Styler)\n ]),\n\n /**\n * The style of the info box and connecting lines\n */\n infoStyle: _propTypes2.default.object, //eslint-disable-line\n\n /**\n * The width of the hover info box\n */\n infoWidth: _propTypes2.default.number, //eslint-disable-line\n\n /**\n * The height of the hover info box\n */\n infoHeight: _propTypes2.default.number, //eslint-disable-line\n\n /**\n * The values to show in the info box. This is an array of\n * objects, with each object specifying the label and value\n * to be shown in the info box.\n */\n info: _propTypes2.default.arrayOf(\n _propTypes2.default.shape({\n //eslint-disable-line\n label: _propTypes2.default.string, //eslint-disable-line\n value: _propTypes2.default.string //eslint-disable-line\n })\n ),\n\n /**\n * If spacing is specified, then the boxes will be separated from the\n * timerange boundary by this number of pixels. Use this to space out\n * the boxes from each other. Inner and outer boxes are controlled\n * separately.\n */\n innerSpacing: _propTypes2.default.number,\n\n /**\n * If spacing is specified, then the boxes will be separated from the\n * timerange boundary by this number of pixels. Use this to space out\n * the boxes from each other. Inner and outer boxes are controlled\n * separately.\n */\n outerSpacing: _propTypes2.default.number,\n\n /**\n * If size is specified, then the innerBox will be this number of pixels wide. This\n * prop takes priority over \"spacing\".\n */\n innerSize: _propTypes2.default.number,\n\n /**\n * If size is specified, then the outer box will be this number of pixels wide. This\n * prop takes priority over \"spacing\".\n */\n outerSize: _propTypes2.default.number,\n\n /**\n * The selected item, which will be rendered in the \"selected\" style.\n * If a bar is selected, all other bars will be rendered in the \"muted\" style.\n *\n * See also `onSelectionChange`\n */\n selected: _propTypes2.default.instanceOf(_pondjs.IndexedEvent),\n\n /**\n * The highlighted item, which will be rendered in the \"highlighted\" style.\n *\n * See also `onHighlightChange`\n */\n highlighted: _propTypes2.default.instanceOf(_pondjs.IndexedEvent),\n\n /**\n * A callback that will be called when the selection changes. It will be called\n * with the event corresponding to the box clicked as its only arg.\n */\n onSelectionChange: _propTypes2.default.func,\n\n /**\n * A callback that will be called when the hovered over box changes.\n * It will be called with the event corresponding to the box hovered over.\n */\n onHighlightChange: _propTypes2.default.func,\n\n /**\n * [Internal] The timeScale supplied by the surrounding ChartContainer\n */\n timeScale: _propTypes2.default.func,\n\n /**\n * [Internal] The yScale supplied by the associated YAxis\n */\n yScale: _propTypes2.default.func,\n\n /**\n * [Internal] The width supplied by the surrounding ChartContainer\n */\n width: _propTypes2.default.number\n};\n\nBoxChart.defaultProps = {\n visible: true,\n column: \"value\",\n innerSpacing: 1.0,\n outerSpacing: 2.0,\n infoStyle: {\n stroke: \"#999\",\n fill: \"white\",\n opacity: 0.9,\n pointerEvents: \"none\"\n },\n stemStyle: {\n stroke: \"#999\",\n cursor: \"crosshair\",\n pointerEvents: \"none\"\n },\n markerStyle: {\n fill: \"#999\"\n },\n markerRadius: 2,\n infoWidth: 90,\n infoHeight: 30\n};\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/BoxChart.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/Brush.js": +/*!**********************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/Brush.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = (function() {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n return function(arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n})();\n\nvar _extends =\n Object.assign ||\n function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nvar _merge = __webpack_require__(/*! merge */ \"./node_modules/merge/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _pondjs = __webpack_require__(/*! pondjs */ \"./node_modules/pondjs/lib/entry.js\");\n\nvar _util = __webpack_require__(/*! ../js/util */ \"./node_modules/react-timeseries-charts/lib/js/util.js\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\n \"Super expression must either be null or a function, not \" + typeof superClass\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: { value: subClass, enumerable: false, writable: true, configurable: true }\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n} /**\n * Copyright (c) 2016, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Renders a brush with the range defined in the prop `timeRange`.\n */\nvar Brush = (function(_React$Component) {\n _inherits(Brush, _React$Component);\n\n function Brush(props) {\n _classCallCheck(this, Brush);\n\n var _this = _possibleConstructorReturn(\n this,\n (Brush.__proto__ || Object.getPrototypeOf(Brush)).call(this, props)\n );\n\n _this.state = {\n isBrushing: false\n };\n\n _this.handleBrushMouseDown = _this.handleBrushMouseDown.bind(_this);\n _this.handleOverlayMouseDown = _this.handleOverlayMouseDown.bind(_this);\n _this.handleHandleMouseDown = _this.handleHandleMouseDown.bind(_this);\n _this.handleMouseUp = _this.handleMouseUp.bind(_this);\n _this.handleClick = _this.handleClick.bind(_this);\n _this.handleMouseMove = _this.handleMouseMove.bind(_this);\n return _this;\n }\n\n _createClass(Brush, [\n {\n key: \"viewport\",\n value: function viewport() {\n var _props = this.props,\n width = _props.width,\n timeScale = _props.timeScale;\n\n var viewBeginTime = timeScale.invert(0);\n var viewEndTime = timeScale.invert(width);\n return new _pondjs.TimeRange(viewBeginTime, viewEndTime);\n }\n\n //\n // Event handlers\n //\n },\n {\n key: \"handleBrushMouseDown\",\n value: function handleBrushMouseDown(e) {\n e.preventDefault();\n\n var x = e.pageX,\n y = e.pageY;\n\n var xy0 = [Math.round(x), Math.round(y)];\n var begin = +this.props.timeRange.begin();\n var end = +this.props.timeRange.end();\n\n document.addEventListener(\"mouseup\", this.handleMouseUp);\n\n this.setState({\n isBrushing: true,\n brushingInitializationSite: \"brush\",\n initialBrushBeginTime: begin,\n initialBrushEndTime: end,\n initialBrushXYPosition: xy0\n });\n }\n },\n {\n key: \"handleOverlayMouseDown\",\n value: function handleOverlayMouseDown(e) {\n e.preventDefault();\n\n var offset = (0, _util.getElementOffset)(this.overlay);\n var x = e.pageX - offset.left;\n var t = this.props.timeScale.invert(x).getTime();\n\n document.addEventListener(\"mouseup\", this.handleMouseUp);\n\n this.setState({\n isBrushing: true,\n brushingInitializationSite: \"overlay\",\n initialBrushBeginTime: t,\n initialBrushEndTime: t,\n initialBrushXYPosition: null\n });\n }\n },\n {\n key: \"handleHandleMouseDown\",\n value: function handleHandleMouseDown(e, handle) {\n e.preventDefault();\n\n var x = e.pageX,\n y = e.pageY;\n\n var xy0 = [Math.round(x), Math.round(y)];\n var begin = this.props.timeRange.begin().getTime();\n var end = this.props.timeRange.end().getTime();\n\n document.addEventListener(\"mouseover\", this.handleMouseMove);\n document.addEventListener(\"mouseup\", this.handleMouseUp);\n\n this.setState({\n isBrushing: true,\n brushingInitializationSite: \"handle-\" + handle,\n initialBrushBeginTime: begin,\n initialBrushEndTime: end,\n initialBrushXYPosition: xy0\n });\n }\n },\n {\n key: \"handleMouseUp\",\n value: function handleMouseUp(e) {\n e.preventDefault();\n\n document.removeEventListener(\"mouseover\", this.handleMouseMove);\n document.removeEventListener(\"mouseup\", this.handleMouseUp);\n\n this.setState({\n isBrushing: false,\n brushingInitializationSite: null,\n initialBrushBeginTime: null,\n initialBrushEndTime: null,\n initialBrushXYPosition: null\n });\n }\n\n /**\n * Handles clearing the TimeRange if the user clicks on the overlay (but\n * doesn't drag to create a new brush). This will send a null as the\n * new TimeRange. The user of this code can react to that however they\n * see fit, but the most logical response is to reset the timerange to\n * some initial value. This behavior is optional.\n */\n },\n {\n key: \"handleClick\",\n value: function handleClick() {\n if (this.props.allowSelectionClear && this.props.onTimeRangeChanged) {\n this.props.onTimeRangeChanged(null);\n }\n }\n },\n {\n key: \"handleMouseMove\",\n value: function handleMouseMove(e) {\n e.preventDefault();\n\n var x = e.pageX;\n var y = e.pageY;\n var xy = [Math.round(x), Math.round(y)];\n var viewport = this.viewport();\n\n if (this.state.isBrushing) {\n var newBegin = void 0;\n var newEnd = void 0;\n\n var tb = this.state.initialBrushBeginTime;\n var te = this.state.initialBrushEndTime;\n\n if (this.state.brushingInitializationSite === \"overlay\") {\n var offset = (0, _util.getElementOffset)(this.overlay);\n var xx = e.pageX - offset.left;\n var t = this.props.timeScale.invert(xx).getTime();\n if (t < tb) {\n newBegin = t < viewport.begin().getTime() ? viewport.begin() : t;\n newEnd = tb > viewport.end().getTime() ? viewport.end() : tb;\n } else {\n newBegin = tb < viewport.begin().getTime() ? viewport.begin() : tb;\n newEnd = t > viewport.end().getTime() ? viewport.end() : t;\n }\n } else {\n var xy0 = this.state.initialBrushXYPosition;\n var timeOffset =\n this.props.timeScale.invert(xy0[0]).getTime() -\n this.props.timeScale.invert(xy[0]).getTime();\n\n // Constrain\n var startOffsetConstraint = timeOffset;\n var endOffsetConstrain = timeOffset;\n if (tb - timeOffset < viewport.begin()) {\n startOffsetConstraint = tb - viewport.begin().getTime();\n }\n if (te - timeOffset > viewport.end()) {\n endOffsetConstrain = te - viewport.end().getTime();\n }\n\n newBegin =\n this.state.brushingInitializationSite === \"brush\" ||\n this.state.brushingInitializationSite === \"handle-left\"\n ? parseInt(tb - startOffsetConstraint, 10)\n : tb;\n newEnd =\n this.state.brushingInitializationSite === \"brush\" ||\n this.state.brushingInitializationSite === \"handle-right\"\n ? parseInt(te - endOffsetConstrain, 10)\n : te;\n\n // Swap if needed\n if (newBegin > newEnd) {\n var _ref = [newEnd, newBegin];\n newBegin = _ref[0];\n newEnd = _ref[1];\n }\n }\n\n if (this.props.onTimeRangeChanged) {\n this.props.onTimeRangeChanged(new _pondjs.TimeRange(newBegin, newEnd));\n }\n }\n }\n\n //\n // Render\n //\n },\n {\n key: \"renderOverlay\",\n value: function renderOverlay() {\n var _this2 = this;\n\n var _props2 = this.props,\n width = _props2.width,\n height = _props2.height;\n\n var cursor = void 0;\n switch (this.state.brushingInitializationSite) {\n case \"handle-right\":\n case \"handle-left\":\n cursor = \"ew-resize\";\n break;\n case \"brush\":\n cursor = \"move\";\n break;\n default:\n cursor = \"crosshair\";\n }\n\n var overlayStyle = {\n fill: \"white\",\n opacity: 0,\n cursor: cursor\n };\n return _react2.default.createElement(\"rect\", {\n ref: function ref(c) {\n _this2.overlay = c;\n },\n x: 0,\n y: 0,\n width: width,\n height: height,\n style: overlayStyle,\n onMouseDown: this.handleOverlayMouseDown,\n onMouseUp: this.handleMouseUp,\n onClick: this.handleClick\n });\n }\n },\n {\n key: \"renderBrush\",\n value: function renderBrush() {\n var _props3 = this.props,\n timeRange = _props3.timeRange,\n timeScale = _props3.timeScale,\n height = _props3.height,\n style = _props3.style;\n\n if (!timeRange) {\n return _react2.default.createElement(\"g\", null);\n }\n\n var cursor = void 0;\n switch (this.state.brushingInitializationSite) {\n case \"handle-right\":\n case \"handle-left\":\n cursor = \"ew-resize\";\n break;\n case \"overlay\":\n cursor = \"crosshair\";\n break;\n default:\n cursor = \"move\";\n }\n\n // Style of the brush area\n var brushDefaultStyle = {\n fill: \"#777\",\n fillOpacity: 0.3,\n stroke: \"#fff\",\n shapeRendering: \"crispEdges\",\n cursor: cursor\n };\n var brushStyle = (0, _merge2.default)(true, brushDefaultStyle, style);\n\n if (!this.viewport().disjoint(timeRange)) {\n var range = timeRange.intersection(this.viewport());\n var begin = range.begin();\n var end = range.end();\n var _ref2 = [timeScale(begin), 0],\n x = _ref2[0],\n y = _ref2[1];\n\n var endPos = timeScale(end);\n var width = endPos - x;\n if (width < 1) {\n width = 1;\n }\n\n var bounds = { x: x, y: y, width: width, height: height };\n\n return _react2.default.createElement(\n \"rect\",\n _extends({}, bounds, {\n style: brushStyle,\n pointerEvents: \"all\",\n onMouseDown: this.handleBrushMouseDown,\n onMouseUp: this.handleMouseUp\n })\n );\n }\n return _react2.default.createElement(\"g\", null);\n }\n },\n {\n key: \"renderHandles\",\n value: function renderHandles() {\n var _this3 = this;\n\n var _props4 = this.props,\n timeRange = _props4.timeRange,\n timeScale = _props4.timeScale,\n height = _props4.height;\n\n if (!timeRange) {\n return _react2.default.createElement(\"g\", null);\n }\n\n // Style of the handles\n var handleStyle = {\n fill: \"white\",\n opacity: 0,\n cursor: \"ew-resize\"\n };\n\n if (!this.viewport().disjoint(timeRange)) {\n var range = timeRange.intersection(this.viewport());\n\n var _range$toJSON = range.toJSON(),\n _range$toJSON2 = _slicedToArray(_range$toJSON, 2),\n begin = _range$toJSON2[0],\n end = _range$toJSON2[1];\n\n var _ref3 = [timeScale(begin), 0],\n x = _ref3[0],\n y = _ref3[1];\n\n var endPos = timeScale(end);\n\n var width = endPos - x;\n if (width < 1) {\n width = 1;\n }\n\n var handleSize = this.props.handleSize;\n\n var leftHandleBounds = { x: x - 1, y: y, width: handleSize, height: height };\n var rightHandleBounds = {\n x: x + (width - handleSize),\n y: y,\n width: handleSize + 1,\n height: height\n };\n\n return _react2.default.createElement(\n \"g\",\n null,\n _react2.default.createElement(\n \"rect\",\n _extends({}, leftHandleBounds, {\n style: handleStyle,\n pointerEvents: \"all\",\n onMouseDown: function onMouseDown(e) {\n return _this3.handleHandleMouseDown(e, \"left\");\n },\n onMouseUp: this.handleMouseUp\n })\n ),\n _react2.default.createElement(\n \"rect\",\n _extends({}, rightHandleBounds, {\n style: handleStyle,\n pointerEvents: \"all\",\n onMouseDown: function onMouseDown(e) {\n return _this3.handleHandleMouseDown(e, \"right\");\n },\n onMouseUp: this.handleMouseUp\n })\n )\n );\n }\n return _react2.default.createElement(\"g\", null);\n }\n },\n {\n key: \"render\",\n value: function render() {\n return _react2.default.createElement(\n \"g\",\n { onMouseMove: this.handleMouseMove },\n this.renderOverlay(),\n this.renderBrush(),\n this.renderHandles()\n );\n }\n }\n ]);\n\n return Brush;\n})(_react2.default.Component);\n\nexports.default = Brush;\n\nBrush.propTypes = {\n /**\n * The timerange for the brush. Typically you would maintain this\n * as state on the surrounding page, since it would likely control\n * another page element, such as the range of the main chart. See\n * also `onTimeRangeChanged()` for receiving notification of the\n * brush range being changed by the user.\n *\n * Takes a Pond TimeRange object.\n */\n timeRange: _propTypes2.default.instanceOf(_pondjs.TimeRange),\n /**\n * The brush is rendered as an SVG rect. You can specify the style\n * of this rect using this prop.\n */\n style: _propTypes2.default.object, //eslint-disable-line\n /**\n * The size of the invisible side handles. Defaults to 6 pixels.\n */\n handleSize: _propTypes2.default.number,\n allowSelectionClear: _propTypes2.default.bool,\n /**\n * A callback which will be called if the brush range is changed by\n * the user. It is called with a Pond TimeRange object. Note that if\n * `allowSelectionClear` is set to true, then this can also be called\n * when the user performs a simple click outside the brush area. In\n * this case it will be called with null as the TimeRange. You can\n * use this to reset the selection, perhaps to some initial range.\n */\n onTimeRangeChanged: _propTypes2.default.func,\n /**\n * [Internal] The timeScale supplied by the surrounding ChartContainer\n */\n timeScale: _propTypes2.default.func,\n /**\n * [Internal] The width supplied by the surrounding ChartContainer\n */\n width: _propTypes2.default.number,\n /**\n * [Internal] The height supplied by the surrounding ChartContainer\n */\n height: _propTypes2.default.number\n};\n\nBrush.defaultProps = {\n handleSize: 6,\n allowSelectionClear: false\n};\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/Brush.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/ChartContainer.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/ChartContainer.js ***! + \*******************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _invariant = __webpack_require__(/*! invariant */ \"./node_modules/invariant/invariant.js\");\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _d3Scale = __webpack_require__(/*! d3-scale */ \"./node_modules/d3-scale/index.js\");\n\nvar _pondjs = __webpack_require__(/*! pondjs */ \"./node_modules/pondjs/lib/entry.js\");\n\nvar _Brush = __webpack_require__(/*! ./Brush */ \"./node_modules/react-timeseries-charts/lib/components/Brush.js\");\n\nvar _Brush2 = _interopRequireDefault(_Brush);\n\nvar _MultiBrush = __webpack_require__(/*! ./MultiBrush */ \"./node_modules/react-timeseries-charts/lib/components/MultiBrush.js\");\n\nvar _MultiBrush2 = _interopRequireDefault(_MultiBrush);\n\nvar _ChartRow = __webpack_require__(/*! ./ChartRow */ \"./node_modules/react-timeseries-charts/lib/components/ChartRow.js\");\n\nvar _ChartRow2 = _interopRequireDefault(_ChartRow);\n\nvar _Charts = __webpack_require__(/*! ./Charts */ \"./node_modules/react-timeseries-charts/lib/components/Charts.js\");\n\nvar _Charts2 = _interopRequireDefault(_Charts);\n\nvar _EventHandler = __webpack_require__(/*! ./EventHandler */ \"./node_modules/react-timeseries-charts/lib/components/EventHandler.js\");\n\nvar _EventHandler2 = _interopRequireDefault(_EventHandler);\n\nvar _TimeAxis = __webpack_require__(/*! ./TimeAxis */ \"./node_modules/react-timeseries-charts/lib/components/TimeAxis.js\");\n\nvar _TimeAxis2 = _interopRequireDefault(_TimeAxis);\n\nvar _TimeMarker = __webpack_require__(/*! ./TimeMarker */ \"./node_modules/react-timeseries-charts/lib/components/TimeMarker.js\");\n\nvar _TimeMarker2 = _interopRequireDefault(_TimeMarker);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\n \"Super expression must either be null or a function, not \" + typeof superClass\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: { value: subClass, enumerable: false, writable: true, configurable: true }\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n} /**\n * Copyright (c) 2015-present, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar defaultTimeAxisStyle = {\n labels: {\n labelColor: \"#8B7E7E\",\n labelWeight: 100,\n labelSize: 11\n },\n axis: {\n axisColor: \"#C0C0C0\",\n axisWidth: 1\n }\n};\n\n/**\n * The `` is the outer most element of a chart and is\n * responsible for generating and arranging its sub-elements. Specifically,\n * it is a container for one or more `` (each of which contains\n * charts, axes etc) and in addition it manages the overall time range of\n * the chart and so also is responsible for the time axis, which is always\n * shared by all the rows.\n *\n * Here is an example:\n *\n * ```xml\n * \n * \n * ...\n * \n * \n * ...\n * \n * \n * ```\n */\n\nvar ChartContainer = (function(_React$Component) {\n _inherits(ChartContainer, _React$Component);\n\n function ChartContainer() {\n _classCallCheck(this, ChartContainer);\n\n return _possibleConstructorReturn(\n this,\n (ChartContainer.__proto__ || Object.getPrototypeOf(ChartContainer)).apply(\n this,\n arguments\n )\n );\n }\n\n _createClass(ChartContainer, [\n {\n key: \"handleTrackerChanged\",\n\n //\n // Event handlers\n //\n\n value: function handleTrackerChanged(t) {\n if (this.props.onTrackerChanged) {\n this.props.onTrackerChanged(t);\n }\n }\n\n /**\n * Within the charts library the time range of the x axis is kept as a begin\n * and end time (Javascript Date objects). But the interface is Pond based,\n * so this callback returns a Pond TimeRange.\n */\n },\n {\n key: \"handleTimeRangeChanged\",\n value: function handleTimeRangeChanged(timerange) {\n if (this.props.onTimeRangeChanged) {\n this.props.onTimeRangeChanged(timerange);\n }\n }\n },\n {\n key: \"handleMouseMove\",\n value: function handleMouseMove(x, y) {\n if (this.props.onTrackerChanged) {\n var time = this.timeScale.invert(x);\n this.props.onTrackerChanged(time);\n }\n if (this.props.onMouseMove) {\n this.props.onMouseMove(x, y);\n }\n }\n },\n {\n key: \"handleMouseOut\",\n value: function handleMouseOut() {\n if (this.props.onTrackerChanged) {\n this.props.onTrackerChanged(null);\n }\n }\n },\n {\n key: \"handleBackgroundClick\",\n value: function handleBackgroundClick() {\n if (this.props.onBackgroundClick) {\n this.props.onBackgroundClick();\n }\n }\n },\n {\n key: \"handleZoom\",\n value: function handleZoom(timerange) {\n if (this.props.onTimeRangeChanged) {\n this.props.onTimeRangeChanged(timerange);\n }\n }\n\n //\n // Render\n //\n },\n {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var chartRows = [];\n var leftAxisWidths = [];\n var rightAxisWidths = [];\n\n //\n // How much room does the axes of all the charts take up on the right\n // and left. The result is an array for left and right axis which\n // contain the min column width needed to hold the axes widths at the\n // pos for all rows.\n //\n // pos 1 0 0 1 2\n // | Axis | Axis | CHARTS | Axis | Row 1\n // | Axis | CHARTS | Axis | Axis | Axis | Row 2\n // ............... ..........................\n // left cols right cols\n //\n\n _react2.default.Children.forEach(this.props.children, function(childRow) {\n if (childRow.type === _ChartRow2.default) {\n //\n // Within this row, count the number of columns that will be\n // left and right of the Charts tag, as well as the total number\n // of Charts tags for error handling\n //\n\n var countLeft = 0;\n var countCharts = 0;\n\n var align = \"left\";\n\n _react2.default.Children.forEach(childRow.props.children, function(child) {\n if (child.type === _Charts2.default) {\n countCharts += 1;\n align = \"right\";\n } else if (\n child.type !== _Brush2.default &&\n child.type !== _MultiBrush2.default\n ) {\n if (align === \"left\") {\n countLeft += 1;\n }\n }\n });\n\n if (countCharts !== 1) {\n var msg =\n \"ChartRow should have one and only one tag within it\";\n (0, _invariant2.default)(false, msg, childRow.constructor.name);\n }\n\n align = \"left\";\n var pos = countLeft - 1;\n\n _react2.default.Children.forEach(childRow.props.children, function(child) {\n if (\n child.type === _Charts2.default ||\n child.type === _Brush2.default ||\n child.type === _MultiBrush2.default\n ) {\n if (child.type === _Charts2.default) {\n align = \"right\";\n pos = 0;\n }\n } else {\n var width = Number(child.props.width) || 40;\n var visible =\n !_underscore2.default.has(child.props, \"visible\") ||\n child.props.visible;\n if (!visible) width = 0;\n\n if (align === \"left\") {\n leftAxisWidths[pos] = leftAxisWidths[pos]\n ? Math.max(width, leftAxisWidths[pos])\n : width;\n pos -= 1;\n } else if (align === \"right\") {\n rightAxisWidths[pos] = rightAxisWidths[pos]\n ? Math.max(width, rightAxisWidths[pos])\n : width;\n pos += 1;\n }\n }\n });\n }\n });\n\n // Space used by columns on left and right of charts\n var leftWidth = _underscore2.default.reduce(\n leftAxisWidths,\n function(a, b) {\n return a + b;\n },\n 0\n );\n var rightWidth = _underscore2.default.reduce(\n rightAxisWidths,\n function(a, b) {\n return a + b;\n },\n 0\n );\n\n //\n // Time scale\n //\n\n var timeAxisHeight = 35;\n var timeAxisWidth = this.props.width - leftWidth - rightWidth;\n\n if (!this.props.timeRange) {\n throw Error(\"Invalid timerange passed to ChartContainer\");\n }\n\n var timeScale = (this.timeScale = this.props.utc\n ? (0, _d3Scale.scaleUtc)()\n .domain(this.props.timeRange.toJSON())\n .range([0, timeAxisWidth])\n : (0, _d3Scale.scaleTime)()\n .domain(this.props.timeRange.toJSON())\n .range([0, timeAxisWidth]));\n\n var i = 0;\n var yPosition = 0;\n _react2.default.Children.forEach(this.props.children, function(child) {\n if (child.type === _ChartRow2.default) {\n var chartRow = child;\n var rowKey = \"chart-row-row-\" + i;\n var firstRow = i === 0;\n var isVisible = child.props.visible;\n var props = {\n timeScale: timeScale,\n leftAxisWidths: leftAxisWidths,\n rightAxisWidths: rightAxisWidths,\n width: _this2.props.width,\n minTime: _this2.props.minTime,\n maxTime: _this2.props.maxTime,\n transition: _this2.props.transition,\n enablePanZoom: _this2.props.enablePanZoom,\n minDuration: _this2.props.minDuration,\n timeFormat: _this2.props.format,\n trackerShowTime: firstRow,\n trackerTime: _this2.props.trackerPosition,\n trackerTimeFormat: _this2.props.format,\n onTimeRangeChanged: function onTimeRangeChanged(tr) {\n return _this2.handleTimeRangeChanged(tr);\n },\n onTrackerChanged: function onTrackerChanged(t) {\n return _this2.handleTrackerChanged(t);\n }\n };\n var transform = \"translate(\" + -leftWidth + \",\" + yPosition + \")\";\n if (isVisible) {\n chartRows.push(\n _react2.default.createElement(\n \"g\",\n { transform: transform, key: rowKey },\n _react2.default.cloneElement(chartRow, props)\n )\n );\n\n yPosition += parseInt(child.props.height, 10);\n }\n }\n i += 1;\n });\n\n var chartsHeight = yPosition;\n var chartsWidth = this.props.width - leftWidth - rightWidth;\n\n // Hover tracker line\n var tracker = void 0;\n if (\n this.props.trackerPosition &&\n this.props.timeRange.contains(this.props.trackerPosition)\n ) {\n tracker = _react2.default.createElement(\n \"g\",\n {\n key: \"tracker-group\",\n style: { pointerEvents: \"none\" },\n transform: \"translate(\" + leftWidth + \",0)\"\n },\n _react2.default.createElement(_TimeMarker2.default, {\n width: chartsWidth,\n height: chartsHeight,\n showInfoBox: false,\n time: this.props.trackerPosition,\n timeScale: timeScale,\n timeFormat: this.props.format,\n infoWidth: this.props.trackerHintWidth,\n infoHeight: this.props.trackerHintHeight,\n info: this.props.trackerValues\n })\n );\n }\n\n //\n // TimeAxis\n //\n\n var xStyle = {\n stroke: this.props.timeAxisStyle.axis.axisColor,\n strokeWidth: this.props.timeAxisStyle.axis.axisWidth,\n fill: \"none\",\n pointerEvents: \"none\"\n };\n\n var timeAxis = _react2.default.createElement(\n \"g\",\n { transform: \"translate(\" + leftWidth + \",\" + chartsHeight + \")\" },\n _react2.default.createElement(\"line\", {\n x1: -leftWidth,\n y1: 0.5,\n x2: this.props.width,\n y2: 0.5,\n style: xStyle\n }),\n _react2.default.createElement(_TimeAxis2.default, {\n scale: timeScale,\n utc: this.props.utc,\n style: this.props.timeAxisStyle,\n format: this.props.format,\n showGrid: this.props.showGrid,\n gridHeight: chartsHeight,\n tickCount: this.props.timeAxisTickCount\n })\n );\n\n //\n // Event handler\n //\n\n var rows = _react2.default.createElement(\n \"g\",\n { transform: \"translate(\" + leftWidth + \",\" + 0 + \")\" },\n _react2.default.createElement(\n _EventHandler2.default,\n {\n key: \"event-handler\",\n width: chartsWidth,\n height: chartsHeight + timeAxisHeight,\n scale: timeScale,\n enablePanZoom: this.props.enablePanZoom,\n minDuration: this.props.minDuration,\n minTime: this.props.minTime,\n maxTime: this.props.maxTime,\n onMouseOut: function onMouseOut(e) {\n return _this2.handleMouseOut(e);\n },\n onMouseMove: function onMouseMove(x, y) {\n return _this2.handleMouseMove(x, y);\n },\n onMouseClick: function onMouseClick(e) {\n return _this2.handleBackgroundClick(e);\n },\n onZoom: function onZoom(tr) {\n return _this2.handleZoom(tr);\n }\n },\n chartRows\n )\n );\n\n //\n // Final render of the ChartContainer is composed of a number of\n // chartRows, a timeAxis and the tracker indicator\n //\n\n var svgWidth = this.props.width;\n var svgHeight = yPosition + timeAxisHeight;\n\n return this.props.showGridPosition === \"over\"\n ? _react2.default.createElement(\n \"svg\",\n {\n width: svgWidth,\n height: svgHeight,\n style: { display: \"block\" },\n ref: function ref(c) {\n _this2.svg = c;\n }\n },\n rows,\n tracker,\n timeAxis\n )\n : _react2.default.createElement(\n \"svg\",\n {\n width: svgWidth,\n height: svgHeight,\n style: { display: \"block\" },\n ref: function ref(c) {\n _this2.svg = c;\n }\n },\n timeAxis,\n rows,\n tracker\n );\n }\n }\n ]);\n\n return ChartContainer;\n})(_react2.default.Component);\n\nexports.default = ChartContainer;\n\nChartContainer.propTypes = {\n /**\n * A [Pond TimeRange](https://esnet-pondjs.appspot.com/#/timerange) representing the\n * begin and end time of the chart.\n */\n timeRange: _propTypes2.default.instanceOf(_pondjs.TimeRange).isRequired,\n\n /**\n * Should the time axis use a UTC scale or local\n */\n utc: _propTypes2.default.bool,\n\n /**\n * Children of the ChartContainer should be ChartRows.\n */\n children: _propTypes2.default.oneOfType([\n _propTypes2.default.arrayOf(_propTypes2.default.element),\n _propTypes2.default.element\n ]).isRequired,\n\n /**\n * The width of the chart. This library also includes a component\n * that can be wrapped around a \\. The purpose of this is to\n * inject a width prop into the ChartContainer so that it will fit the\n * surrounding element. This is very handy when you need the chart to resize\n * based on a responsive layout.\n */\n width: _propTypes2.default.number,\n\n /**\n * Constrain the timerange to not move back in time further than this Date.\n */\n minTime: _propTypes2.default.instanceOf(Date),\n\n /**\n * Constrain the timerange to not move forward in time than this Date. A\n * common example is setting this to the current time or the end time\n * of a fixed set of data.\n */\n maxTime: _propTypes2.default.instanceOf(Date),\n\n /**\n * Boolean to turn on interactive pan and zoom behavior for the chart.\n */\n enablePanZoom: _propTypes2.default.bool,\n\n /**\n * If this is set the timerange of the chart cannot be zoomed in further\n * than this duration, in milliseconds. This might be determined by the\n * resolution of your data.\n */\n minDuration: _propTypes2.default.number,\n\n /**\n * Provides several options as to the format of the time axis labels.\n *\n * In general the time axis will generate an appropriate time scale based\n * on the timeRange prop and there is no need to set this.\n *\n * However, some options exist:\n *\n * - setting format to \"day\", \"month\" or \"year\" will show only ticks on those,\n * and every one of those intervals. For example maybe you are showing a bar\n * chart for October 2014 then setting the format to \"day\" will insure that a\n * label is placed for each and every day\n *\n * - setting format to \"relative\" interprets the time as a duration. This\n * is good for data that is specified relative to its start time, rather than\n * as an actual date/time\n *\n * - setting the format to a d3 format string will use that format\n *\n * - supplying a function for format will cause that function to be called\n * whenever rendering a time\n */\n format: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func]),\n\n /**\n * Time in milliseconds to transition from one Y-scale to the next\n */\n transition: _propTypes2.default.number,\n\n /**\n * Show grid lines for each time marker\n */\n showGrid: _propTypes2.default.bool,\n\n /**\n * Defines whether grid is overlayed (\"over\"( or underlayed (\"under\")\n * with respect to the charts\n */\n showGridPosition: _propTypes2.default.oneOf([\"over\", \"under\"]),\n\n /**\n * Specify the number of ticks\n * The default ticks for quantitative scales are multiples of 2, 5 and 10.\n * So, while you can use this prop to increase or decrease the tick count, it will always return multiples of 2, 5 and 10.\n */\n timeAxisTickCount: _propTypes2.default.number,\n\n /**\n * Adjust the time axis style. This is an object of the\n * form { labels, axis } where \"label\" and \"axis\" are objects\n * themselves. The options here are best represented by\n * an example:\n *\n * ```\n * const axisStyle = {\n * labels: {\n * labelColor: \"grey\",\n * labelWeight: 100,\n * labelSize: 11\n * },\n * axis: {\n * axisColor: \"grey\",\n * axisWidth: 1\n * }\n * };\n * ```\n */\n timeAxisStyle: _propTypes2.default.shape({\n labels: _propTypes2.default.object, // eslint-disable-line\n axis: _propTypes2.default.object\n }),\n\n /**\n * The width of the tracker info box\n */\n trackerHintWidth: _propTypes2.default.number,\n\n /**\n * The height of the tracker info box\n */\n trackerHintHeight: _propTypes2.default.number,\n\n /**\n * Info box value or values to place next to the tracker line.\n * This is either an array of objects, with each object\n * specifying the label and value to be shown in the info box,\n * or a simple string label.\n */\n trackerValues: _propTypes2.default.oneOfType([\n _propTypes2.default.string,\n _propTypes2.default.arrayOf(\n _propTypes2.default.shape({\n label: _propTypes2.default.string, // eslint-disable-line\n value: _propTypes2.default.string // eslint-disable-line\n })\n )\n ]),\n\n /**\n * A Date specifying the position of the tracker line on the chart. It is\n * common to take this from the onTrackerChanged callback so that the tracker\n * followers the user's cursor, but it could be modified to snap to a point or\n * to the nearest minute, for example.\n */\n trackerPosition: _propTypes2.default.instanceOf(Date),\n\n /**\n * Will be called when the user hovers over a chart. The callback will\n * be called with the timestamp (a Date object) of the position hovered\n * over. This maybe then used as the trackerPosition (see above), or to\n * information data about the time hovered over within the greater page.\n * Commonly we might do something like this:\n * ```\n * this.setState({tracker})}\n * trackerPosition={this.state.tracker}\n * ... />\n * ```\n */\n onTrackerChanged: _propTypes2.default.func,\n\n /**\n * This will be called if the user pans and/or zooms the chart. The callback\n * will be called with the new TimeRange. This can be fed into the timeRange\n * prop as well as used elsewhere on the greater page. Typical use might look\n * like this:\n * ```\n * this.setState({timerange})}\n * timeRange={this.state.timerange}\n * ... />\n * ```\n */\n onTimeRangeChanged: _propTypes2.default.func,\n\n /**\n * Called when the size of the chart changes\n */\n onChartResize: _propTypes2.default.func,\n\n /**\n * Called when the user clicks the background plane of the chart. This is\n * useful when deselecting elements.\n */\n onBackgroundClick: _propTypes2.default.func\n};\n\nChartContainer.defaultProps = {\n width: 800,\n padding: 0,\n enablePanZoom: false,\n utc: false,\n showGrid: false,\n showGridPosition: \"over\",\n timeAxisStyle: defaultTimeAxisStyle\n};\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/ChartContainer.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/ChartRow.js": +/*!*************************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/ChartRow.js ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _d3Ease = __webpack_require__(/*! d3-ease */ \"./node_modules/d3-ease/index.js\");\n\nvar _d3Scale = __webpack_require__(/*! d3-scale */ \"./node_modules/d3-scale/index.js\");\n\nvar _Brush = __webpack_require__(/*! ./Brush */ \"./node_modules/react-timeseries-charts/lib/components/Brush.js\");\n\nvar _Brush2 = _interopRequireDefault(_Brush);\n\nvar _MultiBrush = __webpack_require__(/*! ./MultiBrush */ \"./node_modules/react-timeseries-charts/lib/components/MultiBrush.js\");\n\nvar _MultiBrush2 = _interopRequireDefault(_MultiBrush);\n\nvar _Charts = __webpack_require__(/*! ./Charts */ \"./node_modules/react-timeseries-charts/lib/components/Charts.js\");\n\nvar _Charts2 = _interopRequireDefault(_Charts);\n\nvar _TimeMarker = __webpack_require__(/*! ./TimeMarker */ \"./node_modules/react-timeseries-charts/lib/components/TimeMarker.js\");\n\nvar _TimeMarker2 = _interopRequireDefault(_TimeMarker);\n\nvar _YAxis = __webpack_require__(/*! ./YAxis */ \"./node_modules/react-timeseries-charts/lib/components/YAxis.js\");\n\nvar _YAxis2 = _interopRequireDefault(_YAxis);\n\nvar _interpolators = __webpack_require__(/*! ../js/interpolators */ \"./node_modules/react-timeseries-charts/lib/js/interpolators.js\");\n\nvar _interpolators2 = _interopRequireDefault(_interpolators);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\n \"Super expression must either be null or a function, not \" + typeof superClass\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: { value: subClass, enumerable: false, writable: true, configurable: true }\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n} /**\n * Copyright (c) 2015-present, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar AXIS_MARGIN = 5;\n\nfunction createScale(yaxis, type, min, max, y0, y1) {\n var scale = void 0;\n if (_underscore2.default.isUndefined(min) || _underscore2.default.isUndefined(max)) {\n scale = null;\n } else if (type === \"linear\") {\n scale = (0, _d3Scale.scaleLinear)()\n .domain([min, max])\n .range([y0, y1])\n .nice();\n } else if (type === \"log\") {\n var base = yaxis.props.logBase || 10;\n scale = (0, _d3Scale.scaleLog)()\n .base(base)\n .domain([min, max])\n .range([y0, y1]);\n } else if (type === \"power\") {\n var power = yaxis.props.powerExponent || 2;\n scale = (0, _d3Scale.scalePow)()\n .exponent(power)\n .domain([min, max])\n .range([y0, y1]);\n }\n return scale;\n}\n\n/**\n * A ChartRow is a container for a set of YAxis and multiple charts\n * which are overlaid on each other in a central canvas.\n *\n * Here is an example where a single `` is defined within\n * the ``. Of course you can have any number of rows.\n *\n * For this row we specify the one prop `height` as 200 pixels high.\n *\n * Within the `` we add:\n *\n * * `` elements for axes to the left of the chart\n * * `` block containing our central chart area\n * * `` elements for our axes to the right of the charts\n *\n * ```\n * \n * \n * \n * \n * \n * charts...\n * \n * \n * \n * \n * ```\n */\n\nvar ChartRow = (function(_React$Component) {\n _inherits(ChartRow, _React$Component);\n\n function ChartRow(props) {\n _classCallCheck(this, ChartRow);\n\n // id of clipping rectangle we will generate and use for each child\n // chart. Lives in state to ensure just one clipping rectangle and\n // id per chart row instance; we don't want a fresh id generated on\n // each render.\n var _this = _possibleConstructorReturn(\n this,\n (ChartRow.__proto__ || Object.getPrototypeOf(ChartRow)).call(this, props)\n );\n\n var clipId = _underscore2.default.uniqueId(\"clip_\");\n var clipPathURL = \"url(#\" + clipId + \")\";\n _this.state = {\n clipId: clipId,\n clipPathURL: clipPathURL\n };\n return _this;\n }\n\n _createClass(ChartRow, [\n {\n key: \"componentWillMount\",\n value: function componentWillMount() {\n var _this2 = this;\n\n // Our chart scales are driven off a mapping between id of the axis\n // and the scale that axis represents. Depending on the transition time,\n // this scale will animate over time. The controller of this animation is\n // the ScaleInterpolator. We create new Scale Interpolators here for each\n // axis id.\n this.scaleMap = {};\n\n var innerHeight = +this.props.height - AXIS_MARGIN * 2;\n var rangeTop = AXIS_MARGIN;\n var rangeBottom = innerHeight - AXIS_MARGIN;\n _react2.default.Children.forEach(this.props.children, function(child) {\n if (\n (child.type === _YAxis2.default ||\n _underscore2.default.has(child.props, \"min\")) &&\n _underscore2.default.has(child.props, \"max\")\n ) {\n var _child$props = child.props,\n id = _child$props.id,\n max = _child$props.max,\n min = _child$props.min,\n _child$props$transiti = _child$props.transition,\n transition =\n _child$props$transiti === undefined ? 0 : _child$props$transiti,\n _child$props$type = _child$props.type,\n type = _child$props$type === undefined ? \"linear\" : _child$props$type;\n\n var initialScale = createScale(\n child,\n type,\n min,\n max,\n rangeBottom,\n rangeTop\n );\n _this2.scaleMap[id] = new _interpolators2.default(\n transition,\n _d3Ease.easeSinOut,\n function(s) {\n var yAxisScalerMap = _this2.state.yAxisScalerMap;\n yAxisScalerMap[id] = s;\n _this2.setState(yAxisScalerMap);\n }\n );\n var cacheKey =\n type + \"-\" + min + \"-\" + max + \"-\" + rangeBottom + \"-\" + rangeTop;\n _this2.scaleMap[id].setScale(cacheKey, initialScale);\n }\n });\n\n var scalerMap = {};\n _underscore2.default.forEach(this.scaleMap, function(interpolator, id) {\n scalerMap[id] = interpolator.scaler();\n });\n\n this.setState({ yAxisScalerMap: scalerMap });\n }\n\n /**\n * When we get changes to the row's props we update our map of\n * axis scales.\n */\n },\n {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n var _this3 = this;\n\n var innerHeight = +nextProps.height - AXIS_MARGIN * 2;\n var rangeTop = AXIS_MARGIN;\n var rangeBottom = innerHeight - AXIS_MARGIN;\n\n // Loop over all the children who are YAxis. If this is our first\n // time here, we'll populate the scaleMap with new ScaleInterpolators.\n // If we already have a ScaleInterpolator then we can set a new scale\n // target on it.\n _react2.default.Children.forEach(nextProps.children, function(child) {\n if (\n (child.type === _YAxis2.default ||\n _underscore2.default.has(child.props, \"min\")) &&\n _underscore2.default.has(child.props, \"max\")\n ) {\n var _child$props2 = child.props,\n id = _child$props2.id,\n max = _child$props2.max,\n min = _child$props2.min,\n _child$props2$transit = _child$props2.transition,\n transition =\n _child$props2$transit === undefined ? 0 : _child$props2$transit,\n _child$props2$type = _child$props2.type,\n type = _child$props2$type === undefined ? \"linear\" : _child$props2$type;\n\n var scale = createScale(child, type, min, max, rangeBottom, rangeTop);\n if (!_underscore2.default.has(_this3.scaleMap, id)) {\n // No scale map yet, create one on this.state.yAxisScalarMap\n _this3.scaleMap[id] = new _interpolators2.default(\n transition,\n _d3Ease.easeSinOut,\n function(s) {\n var yAxisScalerMap = _this3.state.yAxisScalerMap;\n yAxisScalerMap[id] = s;\n _this3.setState(yAxisScalerMap);\n }\n );\n }\n var cacheKey =\n type + \"-\" + min + \"-\" + max + \"-\" + rangeBottom + \"-\" + rangeTop;\n _this3.scaleMap[id].setScale(cacheKey, scale);\n }\n });\n\n var scalerMap = {};\n _underscore2.default.forEach(this.scaleMap, function(interpolator, id) {\n scalerMap[id] = interpolator.scaler();\n });\n\n this.setState({ yAxisScalerMap: scalerMap });\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var axes = []; // Contains all the yAxis elements used in the render\n var chartList = []; // Contains all the Chart elements used in the render\n // Dimensions\n var innerHeight = +this.props.height - AXIS_MARGIN * 2;\n\n //\n // Build a map of elements that occupy left or right slots next to the\n // chart.\n //\n // If an element has both and id and a min/max range, then we consider\n // it to be a y axis. For those we calculate a d3 scale that can be\n // reference by a chart. That scale will also be available to the axis\n // when it renders.\n //\n // For this row, we will need to know how many axis slots we are using.\n //\n\n var yAxisMap = {}; // Maps axis id -> axis element\n var leftAxisList = []; // Ordered list of left axes ids\n var rightAxisList = []; // Ordered list of right axes ids\n var alignLeft = true;\n _react2.default.Children.forEach(this.props.children, function(child) {\n if (child.type === _Charts2.default) {\n alignLeft = false;\n } else {\n var _id = child.props.id;\n // Check to see if we think this 'axis' is actually an axis\n if (\n (child.type === _YAxis2.default ||\n _underscore2.default.has(child.props, \"min\")) &&\n _underscore2.default.has(child.props, \"max\")\n ) {\n var yaxis = child;\n\n if (yaxis.props.id) {\n // Relate id to the axis\n yAxisMap[yaxis.props.id] = yaxis;\n }\n\n // Columns counts\n if (alignLeft) {\n leftAxisList.push(_id);\n } else {\n rightAxisList.push(_id);\n }\n }\n }\n });\n\n // Since we'll be building the left axis items from the inside to the outside\n leftAxisList.reverse();\n\n //\n // Push each axis onto the axes, transforming each into its\n // column location\n //\n\n var transform = void 0;\n var id = void 0;\n var props = void 0;\n var axis = void 0;\n var posx = 0;\n\n // Space used by columns on left and right of charts\n var leftWidth = _underscore2.default.reduce(\n this.props.leftAxisWidths,\n function(a, b) {\n return a + b;\n },\n 0\n );\n var rightWidth = _underscore2.default.reduce(\n this.props.rightAxisWidths,\n function(a, b) {\n return a + b;\n },\n 0\n );\n\n posx = leftWidth;\n for (\n var leftColumnIndex = 0;\n leftColumnIndex < this.props.leftAxisWidths.length;\n leftColumnIndex += 1\n ) {\n var colWidth = this.props.leftAxisWidths[leftColumnIndex];\n posx -= colWidth;\n if (colWidth > 0 && leftColumnIndex < leftAxisList.length) {\n id = leftAxisList[leftColumnIndex];\n transform = \"translate(\" + posx + \",0)\";\n\n // Additional props for left aligned axes\n props = {\n width: colWidth,\n height: innerHeight,\n align: \"left\",\n scale: this.scaleMap[id].latestScale()\n };\n\n // Cloned left axis\n axis = _react2.default.cloneElement(yAxisMap[id], props);\n\n axes.push(\n _react2.default.createElement(\n \"g\",\n { key: \"y-axis-left-\" + leftColumnIndex, transform: transform },\n axis\n )\n );\n }\n }\n\n posx = this.props.width - rightWidth;\n for (\n var rightColumnIndex = 0;\n rightColumnIndex < this.props.rightAxisWidths.length;\n rightColumnIndex += 1\n ) {\n var _colWidth = this.props.rightAxisWidths[rightColumnIndex];\n if (_colWidth > 0 && rightColumnIndex < rightAxisList.length) {\n id = rightAxisList[rightColumnIndex];\n transform = \"translate(\" + posx + \",0)\";\n\n // Additional props for right aligned axes\n props = {\n width: _colWidth,\n height: innerHeight,\n align: \"right\",\n scale: this.scaleMap[id].latestScale()\n };\n\n // Cloned right axis\n axis = _react2.default.cloneElement(yAxisMap[id], props);\n\n axes.push(\n _react2.default.createElement(\n \"g\",\n { key: \"y-axis-right-\" + rightColumnIndex, transform: transform },\n axis\n )\n );\n }\n\n posx += _colWidth;\n }\n\n //\n // Push each chart onto the chartList, transforming each to the right\n // of the left axis slots and specifying its width. Each chart is passed\n // its time and y-scale. The y-scale is looked up in scaleMap, whose\n // current value is stored in the component state.\n //\n\n var chartWidth = this.props.width - leftWidth - rightWidth;\n var chartTransform = \"translate(\" + leftWidth + \",0)\";\n\n var keyCount = 0;\n _react2.default.Children.forEach(this.props.children, function(child) {\n if (child.type === _Charts2.default) {\n var _charts = child;\n _react2.default.Children.forEach(_charts.props.children, function(chart) {\n if (\n !_underscore2.default.has(chart.props, \"visible\") ||\n chart.props.visible\n ) {\n var scale = null;\n if (\n _underscore2.default.has(\n _this4.state.yAxisScalerMap,\n chart.props.axis\n )\n ) {\n scale = _this4.state.yAxisScalerMap[chart.props.axis];\n }\n\n var ytransition = null;\n if (_underscore2.default.has(_this4.scaleMap, chart.props.axis)) {\n ytransition = _this4.scaleMap[chart.props.axis];\n }\n\n var chartProps = {\n key: keyCount,\n width: chartWidth,\n height: innerHeight,\n timeScale: _this4.props.timeScale,\n timeFormat: _this4.props.timeFormat\n };\n\n if (scale) {\n chartProps.yScale = scale;\n }\n\n if (ytransition) {\n chartProps.transition = ytransition;\n }\n\n chartList.push(_react2.default.cloneElement(chart, chartProps));\n keyCount += 1;\n }\n });\n }\n });\n\n //\n // Push each child Brush on to the brush list. We need brushed to be\n // rendered last (on top) of everything else in the Z order, both for\n // visual correctness and to ensure that the brush gets mouse events\n // before anything underneath\n //\n\n var brushList = [];\n var multiBrushList = [];\n keyCount = 0;\n _react2.default.Children.forEach(this.props.children, function(child) {\n if (child.type === _Brush2.default || child.type === _MultiBrush2.default) {\n var brushProps = {\n key: \"brush-\" + keyCount,\n width: chartWidth,\n height: innerHeight,\n timeScale: _this4.props.timeScale\n };\n if (child.type === _Brush2.default) {\n brushList.push(_react2.default.cloneElement(child, brushProps));\n } else {\n multiBrushList.push(_react2.default.cloneElement(child, brushProps));\n }\n }\n keyCount += 1;\n });\n\n var charts = _react2.default.createElement(\n \"g\",\n { transform: chartTransform, key: \"event-rect-group\" },\n _react2.default.createElement(\n \"g\",\n { key: \"charts\", clipPath: this.state.clipPathURL },\n chartList\n )\n );\n\n //\n // Clipping\n //\n var clipper = _react2.default.createElement(\n \"defs\",\n null,\n _react2.default.createElement(\n \"clipPath\",\n { id: this.state.clipId },\n _react2.default.createElement(\"rect\", {\n x: \"0\",\n y: \"0\",\n width: chartWidth,\n height: innerHeight\n })\n )\n );\n\n //\n // Brush\n //\n var brushes = _react2.default.createElement(\n \"g\",\n { transform: chartTransform, key: \"brush-group\" },\n brushList\n );\n\n //\n // Multi Brush\n //\n var multiBrushes = _react2.default.createElement(\n \"g\",\n { transform: chartTransform, key: \"multi-brush-group\" },\n multiBrushList\n );\n\n //\n // TimeMarker used as a tracker\n //\n var tracker = void 0;\n if (this.props.trackerTime) {\n var timeFormat = this.props.trackerTimeFormat || this.props.timeFormat;\n var timeMarkerProps = {\n timeFormat: timeFormat,\n showLine: false,\n showTime: this.props.trackerShowTime,\n time: this.props.trackerTime,\n timeScale: this.props.timeScale,\n width: chartWidth\n };\n if (this.props.trackerInfoValues) {\n timeMarkerProps.infoWidth = this.props.trackerInfoWidth;\n timeMarkerProps.infoHeight = this.props.trackerInfoHeight;\n timeMarkerProps.infoValues = this.props.trackerInfoValues;\n timeMarkerProps.timeFormat = this.props.trackerTimeFormat;\n }\n var trackerStyle = {\n pointerEvents: \"none\"\n };\n var trackerTransform = \"translate(\" + leftWidth + \",0)\";\n\n tracker = _react2.default.createElement(\n \"g\",\n { key: \"tracker-group\", style: trackerStyle, transform: trackerTransform },\n _react2.default.createElement(_TimeMarker2.default, timeMarkerProps)\n );\n }\n\n return _react2.default.createElement(\n \"g\",\n null,\n clipper,\n axes,\n charts,\n brushes,\n multiBrushes,\n tracker\n );\n }\n }\n ]);\n\n return ChartRow;\n})(_react2.default.Component);\n\nexports.default = ChartRow;\n\nChartRow.defaultProps = {\n trackerTimeFormat: \"%b %d %Y %X\",\n enablePanZoom: false,\n height: 100,\n visible: true\n};\n\nChartRow.propTypes = {\n /**\n * The height of the row.\n */\n height: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n\n /**\n * Show or hide this row\n */\n visible: _propTypes2.default.bool,\n\n /**\n * Should the time be shown on top of the tracker info box\n */\n trackerShowTime: _propTypes2.default.bool,\n /**\n * The width of the tracker info box\n */\n trackerInfoWidth: _propTypes2.default.number,\n /**\n * The height of the tracker info box\n */\n trackerInfoHeight: _propTypes2.default.number,\n /**\n * Info box value or values to place next to the tracker line\n * This is either an array of objects, with each object\n * specifying the label (a string) and value (also a string)\n * to be shown in the info box, or a simple string label.\n */\n trackerInfoValues: _propTypes2.default.oneOfType([\n _propTypes2.default.string,\n _propTypes2.default.arrayOf(\n _propTypes2.default.shape({\n label: _propTypes2.default.string, // eslint-disable-line\n value: _propTypes2.default.string // eslint-disable-line\n })\n )\n ]),\n\n children: _propTypes2.default.oneOfType([\n _propTypes2.default.arrayOf(_propTypes2.default.node),\n _propTypes2.default.node\n ]),\n leftAxisWidths: _propTypes2.default.arrayOf(_propTypes2.default.number),\n rightAxisWidths: _propTypes2.default.arrayOf(_propTypes2.default.number),\n width: _propTypes2.default.number,\n timeScale: _propTypes2.default.func,\n trackerTimeFormat: _propTypes2.default.string,\n timeFormat: _propTypes2.default.string,\n trackerTime: _propTypes2.default.instanceOf(Date)\n};\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/ChartRow.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/Charts.js": +/*!***********************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/Charts.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n * Copyright (c) 2015-present, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n *\n * The `` element is a grouping for charts within a row.\n * It takes no props. Each chart within the group will be overlaid\n * on top of each other.\n *\n * Here is an example of two line charts within a `` group:\n *\n * ```xml\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n *\n * ## Making your own chart\n *\n * Anything within this grouping is considered a chart, meaning it will have\n * certain props injected into it. As a result you can easily implement your own chart\n * by simply expecting to have these props available and rendering as such.\n *\n * For your own chart, the render() method should return a SVG group `` at the\n * top level, and then your chart rendering within that.\n *\n * In addition to any props you add to your chart, the following props are passed into\n * each chart automatically:\n *\n * #### timeScale\n *\n * A d3 scale for the time axis which you can use to transform your data in the x direction\n *\n * #### yScale\n *\n * A d3 scale for the y-axis which you can use to transform your data in the y direction\n *\n * #### width\n *\n * A the width your chart will render into\n */\nvar Charts = function (_React$Component) {\n _inherits(Charts, _React$Component);\n\n function Charts() {\n _classCallCheck(this, Charts);\n\n return _possibleConstructorReturn(this, (Charts.__proto__ || Object.getPrototypeOf(Charts)).apply(this, arguments));\n }\n\n _createClass(Charts, [{\n key: \"render\",\n value: function render() {\n return this.constructor.name + \" elements are for configuration only\\nand should not be rendered\";\n }\n }]);\n\n return Charts;\n}(_react2.default.Component);\n\nexports.default = Charts;\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/Charts.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/EventChart.js": +/*!***************************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/EventChart.js ***! + \***************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends =\n Object.assign ||\n function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _merge = __webpack_require__(/*! merge */ \"./node_modules/merge/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _pondjs = __webpack_require__(/*! pondjs */ \"./node_modules/pondjs/lib/entry.js\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\n \"Super expression must either be null or a function, not \" + typeof superClass\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: { value: subClass, enumerable: false, writable: true, configurable: true }\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n} /**\n * Copyright (c) 2015-present, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Renders an event view that shows the supplied set of events along a time axis.\n * The events should be supplied as a Pond TimeSeries.\n * That series may contain regular TimeEvents, TimeRangeEvents\n * or IndexedEvents.\n */\nvar EventChart = (function(_React$Component) {\n _inherits(EventChart, _React$Component);\n\n function EventChart(props) {\n _classCallCheck(this, EventChart);\n\n var _this = _possibleConstructorReturn(\n this,\n (EventChart.__proto__ || Object.getPrototypeOf(EventChart)).call(this, props)\n );\n\n _this.state = {\n hover: null\n };\n return _this;\n }\n\n /**\n * Continues a hover event on a specific bar of the bar chart.\n */\n\n _createClass(EventChart, [\n {\n key: \"onMouseOver\",\n value: function onMouseOver(e, event) {\n if (this.props.onMouseOver) {\n this.props.onMouseOver(event);\n }\n this.setState({ hover: event });\n }\n\n /**\n * Handle mouse leave and calls onMouseLeave callback if one is provided\n */\n },\n {\n key: \"onMouseLeave\",\n value: function onMouseLeave() {\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(this.state.hover);\n }\n this.setState({ hover: null });\n }\n\n /**\n * Handle click will call the onSelectionChange callback if one is provided\n * as a prop. It will be called with the event selected.\n */\n },\n {\n key: \"handleClick\",\n value: function handleClick(e, event) {\n e.stopPropagation();\n if (this.props.onSelectionChange) {\n this.props.onSelectionChange(event);\n }\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n series = _props.series,\n textOffsetX = _props.textOffsetX,\n textOffsetY = _props.textOffsetY,\n hoverMarkerWidth = _props.hoverMarkerWidth;\n\n var scale = this.props.timeScale;\n var eventMarkers = [];\n\n // Create and array of markers, one for each event\n var i = 0;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n var _loop = function _loop() {\n var event = _step.value;\n\n var begin = event.begin();\n var end = event.end();\n var beginPos = scale(begin) >= 0 ? scale(begin) : 0;\n var endPos =\n scale(end) <= _this2.props.width ? scale(end) : _this2.props.width;\n\n var transform = \"translate(\" + beginPos + \",0)\";\n var isHover = _this2.state.hover\n ? _pondjs.Event.is(event, _this2.state.hover)\n : false;\n\n var state = void 0;\n if (isHover) {\n state = \"hover\";\n } else {\n state = \"normal\";\n }\n\n var barNormalStyle = {};\n var barStyle = {};\n if (_this2.props.style) {\n barNormalStyle = _this2.props.style(event, \"normal\");\n barStyle = _this2.props.style(event, state);\n }\n\n var label = \"\";\n if (_this2.props.label) {\n if (_underscore2.default.isString(_this2.props.label)) {\n label = _this2.props.label;\n } else if (_underscore2.default.isFunction(_this2.props.label)) {\n label = _this2.props.label(event);\n }\n }\n\n var x = _this2.props.spacing;\n var y = 0;\n var width = endPos - beginPos - 2 * _this2.props.spacing;\n width = width < 0 ? 0 : width;\n var height = _this2.props.size;\n\n var eventLabelStyle = {\n fontWeight: 100,\n fontSize: 11\n };\n\n var text = null;\n if (isHover) {\n text = _react2.default.createElement(\n \"g\",\n null,\n _react2.default.createElement(\"rect\", {\n className: \"eventchart-marker\",\n x: x,\n y: y,\n width: hoverMarkerWidth,\n height: height + 4,\n style: (0, _merge2.default)(true, barNormalStyle, {\n pointerEvents: \"none\"\n })\n }),\n _react2.default.createElement(\n \"text\",\n {\n style: _extends(\n {\n pointerEvents: \"none\",\n fill: \"#444\"\n },\n eventLabelStyle\n ),\n x: 8 + textOffsetX,\n y: 15 + textOffsetY\n },\n label\n )\n );\n }\n\n eventMarkers.push(\n _react2.default.createElement(\n \"g\",\n { transform: transform, key: i },\n _react2.default.createElement(\"rect\", {\n className: \"eventchart-marker\",\n x: x,\n y: y,\n width: width,\n height: height,\n style: barStyle,\n onClick: function onClick(e) {\n return _this2.handleClick(e, event);\n },\n onMouseLeave: function onMouseLeave() {\n return _this2.onMouseLeave();\n },\n onMouseOver: function onMouseOver(e) {\n return _this2.onMouseOver(e, event);\n }\n }),\n text\n )\n );\n\n i += 1;\n };\n\n for (\n var _iterator = series.events()[Symbol.iterator](), _step;\n !(_iteratorNormalCompletion = (_step = _iterator.next()).done);\n _iteratorNormalCompletion = true\n ) {\n _loop();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return _react2.default.createElement(\"g\", null, eventMarkers);\n }\n }\n ]);\n\n return EventChart;\n})(_react2.default.Component);\n\nexports.default = EventChart;\n\nEventChart.defaultProps = {\n visible: true,\n size: 30,\n spacing: 0,\n textOffsetX: 0,\n textOffsetY: 0,\n hoverMarkerWidth: 5\n};\n\nEventChart.propTypes = {\n /**\n * Show or hide this chart\n */\n visible: _propTypes2.default.bool,\n\n /**\n * What [Pond TimeSeries](https://esnet-pondjs.appspot.com/#/timeseries) data to visualize\n */\n series: _propTypes2.default.instanceOf(_pondjs.TimeSeries).isRequired,\n\n /**\n * Set hover label text\n * When label is function callback it will be called with current event.\n */\n label: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func]),\n\n /**\n * The height in pixels for the event bar\n */\n size: _propTypes2.default.number,\n\n /**\n * The distance in pixels to inset the event bar from its actual timerange\n */\n spacing: _propTypes2.default.number,\n\n /**\n * Marker width on hover\n */\n hoverMarkerWidth: _propTypes2.default.number,\n\n /**\n * Hover text offset position X\n */\n textOffsetX: _propTypes2.default.number,\n\n /**\n * Hover text offset position Y\n */\n textOffsetY: _propTypes2.default.number,\n\n /**\n * A function that should return the style of the event box\n */\n style: _propTypes2.default.func,\n\n /**\n * Event selection on click. Will be called with selected event.\n */\n onSelectionChange: _propTypes2.default.func,\n\n /**\n * Mouse leave at end of hover event\n */\n onMouseLeave: _propTypes2.default.func,\n\n /**\n * Mouse over event callback\n */\n onMouseOver: _propTypes2.default.func,\n\n /**\n * [Internal] The timeScale supplied by the surrounding ChartContainer\n */\n timeScale: _propTypes2.default.func,\n\n /**\n * [Internal] The width supplied by the surrounding ChartContainer\n */\n width: _propTypes2.default.number\n};\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/EventChart.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/EventHandler.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/EventHandler.js ***! + \*****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends =\n Object.assign ||\n function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _pondjs = __webpack_require__(/*! pondjs */ \"./node_modules/pondjs/lib/entry.js\");\n\nvar _util = __webpack_require__(/*! ../js/util */ \"./node_modules/react-timeseries-charts/lib/js/util.js\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\n \"Super expression must either be null or a function, not \" + typeof superClass\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: { value: subClass, enumerable: false, writable: true, configurable: true }\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n} /**\n * Copyright (c) 2015-present, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// eslint-disable-line\n\n/**\n * Internal component which provides the top level event catcher for the charts.\n * This is a higher order component. It wraps a tree of SVG elements below it,\n * passed in as this.props.children, and catches events that they do not handle.\n *\n * The EventHandler is responsible for pan and zoom events as well as other click\n * and hover actions.\n */\nvar EventHandler = (function(_React$Component) {\n _inherits(EventHandler, _React$Component);\n\n function EventHandler(props) {\n _classCallCheck(this, EventHandler);\n\n var _this = _possibleConstructorReturn(\n this,\n (EventHandler.__proto__ || Object.getPrototypeOf(EventHandler)).call(this, props)\n );\n\n _this.state = {\n isPanning: false,\n initialPanBegin: null,\n initialPanEnd: null,\n initialPanPosition: null\n };\n\n _this.handleScrollWheel = _this.handleScrollWheel.bind(_this);\n _this.handleMouseDown = _this.handleMouseDown.bind(_this);\n _this.handleMouseUp = _this.handleMouseUp.bind(_this);\n _this.handleMouseOut = _this.handleMouseOut.bind(_this);\n _this.handleMouseMove = _this.handleMouseMove.bind(_this);\n return _this;\n }\n\n // get the event mouse position relative to the event rect\n\n _createClass(EventHandler, [\n {\n key: \"getOffsetMousePosition\",\n value: function getOffsetMousePosition(e) {\n var offset = (0, _util.getElementOffset)(this.eventRect);\n var x = e.pageX - offset.left;\n var y = e.pageY - offset.top;\n return [Math.round(x), Math.round(y)];\n }\n\n //\n // Event handlers\n //\n },\n {\n key: \"handleScrollWheel\",\n value: function handleScrollWheel(e) {\n if (!this.props.enablePanZoom) {\n return;\n }\n\n e.preventDefault();\n\n var SCALE_FACTOR = 0.001;\n var scale = 1 + e.deltaY * SCALE_FACTOR;\n if (scale > 3) {\n scale = 3;\n }\n if (scale < 0.1) {\n scale = 0.1;\n }\n\n var xy = this.getOffsetMousePosition(e);\n\n var begin = this.props.scale.domain()[0].getTime();\n var end = this.props.scale.domain()[1].getTime();\n var center = this.props.scale.invert(xy[0]).getTime();\n\n var beginScaled = center - parseInt((center - begin) * scale, 10);\n var endScaled = center + parseInt((end - center) * scale, 10);\n\n // Duration constraint\n var duration = (end - begin) * scale;\n\n if (this.props.minDuration) {\n var minDuration = parseInt(this.props.minDuration, 10);\n if (duration < this.props.minDuration) {\n beginScaled = center - (center - begin) / (end - begin) * minDuration;\n endScaled = center + (end - center) / (end - begin) * minDuration;\n }\n }\n\n if (this.props.minTime && this.props.maxTime) {\n var maxDuration = this.props.maxTime.getTime() - this.props.minTime.getTime();\n if (duration > maxDuration) {\n duration = maxDuration;\n }\n }\n\n // Range constraint\n if (this.props.minTime && beginScaled < this.props.minTime.getTime()) {\n beginScaled = this.props.minTime.getTime();\n endScaled = beginScaled + duration;\n }\n\n if (this.props.maxTime && endScaled > this.props.maxTime.getTime()) {\n endScaled = this.props.maxTime.getTime();\n beginScaled = endScaled - duration;\n }\n\n var newBegin = new Date(beginScaled);\n var newEnd = new Date(endScaled);\n\n var newTimeRange = new _pondjs.TimeRange(newBegin, newEnd);\n\n if (this.props.onZoom) {\n this.props.onZoom(newTimeRange);\n }\n }\n },\n {\n key: \"handleMouseDown\",\n value: function handleMouseDown(e) {\n if (!this.props.enablePanZoom) {\n return;\n }\n\n e.preventDefault();\n\n var x = e.pageX;\n var y = e.pageY;\n var xy0 = [Math.round(x), Math.round(y)];\n\n var begin = this.props.scale.domain()[0].getTime();\n var end = this.props.scale.domain()[1].getTime();\n\n document.addEventListener(\"mouseover\", this.handleMouseMove);\n document.addEventListener(\"mouseup\", this.handleMouseUp);\n\n this.setState({\n isPanning: true,\n initialPanBegin: begin,\n initialPanEnd: end,\n initialPanPosition: xy0\n });\n\n return false;\n }\n },\n {\n key: \"handleMouseUp\",\n value: function handleMouseUp(e) {\n if (!this.props.enablePanZoom) {\n return;\n }\n\n e.stopPropagation();\n\n document.removeEventListener(\"mouseover\", this.handleMouseMove);\n document.removeEventListener(\"mouseup\", this.handleMouseUp);\n\n var x = e.pageX;\n if (\n this.props.onMouseClick &&\n this.state.initialPanPosition &&\n Math.abs(x - this.state.initialPanPosition[0]) < 2\n ) {\n this.props.onMouseClick();\n }\n\n this.setState({\n isPanning: false,\n initialPanBegin: null,\n initialPanEnd: null,\n initialPanPosition: null\n });\n }\n },\n {\n key: \"handleMouseOut\",\n value: function handleMouseOut(e) {\n e.preventDefault();\n\n if (this.props.onMouseOut) {\n this.props.onMouseOut();\n }\n }\n },\n {\n key: \"handleMouseMove\",\n value: function handleMouseMove(e) {\n e.preventDefault();\n var x = e.pageX;\n var y = e.pageY;\n var xy = [Math.round(x), Math.round(y)];\n if (this.state.isPanning) {\n var xy0 = this.state.initialPanPosition;\n var timeOffset =\n this.props.scale.invert(xy[0]).getTime() -\n this.props.scale.invert(xy0[0]).getTime();\n\n var newBegin = parseInt(this.state.initialPanBegin - timeOffset, 10);\n var newEnd = parseInt(this.state.initialPanEnd - timeOffset, 10);\n var duration = parseInt(\n this.state.initialPanEnd - this.state.initialPanBegin,\n 10\n );\n\n if (this.props.minTime && newBegin < this.props.minTime.getTime()) {\n newBegin = this.props.minTime.getTime();\n newEnd = newBegin + duration;\n }\n\n if (this.props.maxTime && newEnd > this.props.maxTime.getTime()) {\n newEnd = this.props.maxTime.getTime();\n newBegin = newEnd - duration;\n }\n\n var newTimeRange = new _pondjs.TimeRange(newBegin, newEnd);\n if (this.props.onZoom) {\n this.props.onZoom(newTimeRange);\n }\n } else if (this.props.onMouseMove) {\n var mousePosition = this.getOffsetMousePosition(e);\n if (this.props.onMouseMove) {\n this.props.onMouseMove(mousePosition[0], mousePosition[1]);\n }\n }\n }\n\n //\n // Render\n //\n },\n {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var cursor = this.state.isPanning ? \"-webkit-grabbing\" : \"default\";\n var handlers = {\n onWheel: this.handleScrollWheel,\n onMouseDown: this.handleMouseDown,\n onMouseMove: this.handleMouseMove,\n onMouseOut: this.handleMouseOut,\n onMouseUp: this.handleMouseUp\n };\n return _react2.default.createElement(\n \"g\",\n _extends({ pointerEvents: \"all\" }, handlers),\n _react2.default.createElement(\"rect\", {\n key: \"handler-hit-rect\",\n ref: function ref(c) {\n _this2.eventRect = c;\n },\n style: { opacity: 0.0, cursor: cursor },\n x: 0,\n y: 0,\n width: this.props.width,\n height: this.props.height\n }),\n this.props.children\n );\n }\n }\n ]);\n\n return EventHandler;\n})(_react2.default.Component);\n\nexports.default = EventHandler;\n\nEventHandler.propTypes = {\n children: _propTypes2.default.oneOfType([\n _propTypes2.default.arrayOf(_propTypes2.default.node),\n _propTypes2.default.node\n ]),\n enablePanZoom: _propTypes2.default.bool,\n scale: _propTypes2.default.func.isRequired,\n width: _propTypes2.default.number.isRequired,\n height: _propTypes2.default.number.isRequired,\n maxTime: _propTypes2.default.instanceOf(Date),\n minTime: _propTypes2.default.instanceOf(Date),\n minDuration: _propTypes2.default.number,\n onZoom: _propTypes2.default.func,\n onMouseMove: _propTypes2.default.func,\n onMouseOut: _propTypes2.default.func,\n onMouseClick: _propTypes2.default.func\n};\n\nEventHandler.defaultProps = {\n enablePanZoom: false\n};\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/EventHandler.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/EventMarker.js": +/*!****************************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/EventMarker.js ***! + \****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends =\n Object.assign ||\n function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _merge = __webpack_require__(/*! merge */ \"./node_modules/merge/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _pondjs = __webpack_require__(/*! pondjs */ \"./node_modules/pondjs/lib/entry.js\");\n\nvar _d3TimeFormat = __webpack_require__(/*! d3-time-format */ \"./node_modules/d3-time-format/index.js\");\n\nvar _Label = __webpack_require__(/*! ./Label */ \"./node_modules/react-timeseries-charts/lib/components/Label.js\");\n\nvar _Label2 = _interopRequireDefault(_Label);\n\nvar _ValueList = __webpack_require__(/*! ./ValueList */ \"./node_modules/react-timeseries-charts/lib/components/ValueList.js\");\n\nvar _ValueList2 = _interopRequireDefault(_ValueList);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\n \"Super expression must either be null or a function, not \" + typeof superClass\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: { value: subClass, enumerable: false, writable: true, configurable: true }\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n} /**\n * Copyright (c) 2016, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar EventTime = function EventTime(_ref) {\n var time = _ref.time,\n _ref$format = _ref.format,\n format = _ref$format === undefined ? \"%m/%d/%y %X\" : _ref$format;\n\n var textStyle = {\n fontSize: 11,\n textAnchor: \"left\",\n fill: \"#bdbdbd\",\n pointerEvents: \"none\"\n };\n\n var text = void 0;\n if (_underscore2.default.isFunction(format)) {\n text = format(time);\n } else {\n var fmt = (0, _d3TimeFormat.timeFormat)(format);\n text = fmt(time);\n }\n\n return _react2.default.createElement(\n \"text\",\n { x: 0, y: 0, dy: \"1.2em\", style: textStyle },\n text\n );\n};\nEventTime.propTypes = {\n time: _propTypes2.default.instanceOf(Date),\n format: _propTypes2.default.oneOfType([_propTypes2.default.func, _propTypes2.default.string])\n};\nEventTime.defaultProps = {\n infoTimeFormat: \"%m/%d/%y %X\"\n};\n\nvar EventTimeRange = function EventTimeRange(_ref2) {\n var timerange = _ref2.timerange,\n _ref2$format = _ref2.format,\n format = _ref2$format === undefined ? \"%m/%d/%y %X\" : _ref2$format;\n\n var textStyle = {\n fontSize: 11,\n textAnchor: \"left\",\n fill: \"#bdbdbd\",\n pointerEvents: \"none\"\n };\n var d1 = timerange.begin();\n var d2 = timerange.end();\n\n var beginText = void 0;\n var endText = void 0;\n\n if (_underscore2.default.isFunction(format)) {\n beginText = format(d1);\n endText = format(d2);\n } else {\n var fmt = (0, _d3TimeFormat.timeFormat)(format);\n beginText = fmt(d1);\n endText = fmt(d2);\n }\n\n return _react2.default.createElement(\n \"text\",\n { x: 0, y: 0, dy: \"1.2em\", style: textStyle },\n beginText + \" to \" + endText\n );\n};\nEventTimeRange.propTypes = {\n timerange: _propTypes2.default.instanceOf(_pondjs.TimeRange),\n format: _propTypes2.default.oneOfType([_propTypes2.default.func, _propTypes2.default.string])\n};\nEventTimeRange.defaultProps = {\n infoTimeFormat: \"%m/%d/%y %X\"\n};\n\nvar EventIndex = function EventIndex(_ref3) {\n var index = _ref3.index,\n format = _ref3.format;\n\n var textStyle = {\n fontSize: 11,\n textAnchor: \"left\",\n fill: \"#bdbdbd\",\n pointerEvents: \"none\"\n };\n\n var text = void 0;\n if (_underscore2.default.isFunction(format)) {\n text = format(index);\n } else if (_underscore2.default.isString(format)) {\n var fmt = (0, _d3TimeFormat.timeFormat)(format);\n text = fmt(index.begin());\n } else {\n text = index.toString();\n }\n\n return _react2.default.createElement(\n \"text\",\n { x: 0, y: 0, dy: \"1.2em\", style: textStyle },\n text\n );\n};\nEventIndex.propTypes = {\n index: _propTypes2.default.instanceOf(_pondjs.Index),\n format: _propTypes2.default.oneOfType([_propTypes2.default.func, _propTypes2.default.string])\n};\n\n/**\n * Renders a marker at a specific event on the chart.\n *\n * To explain how EventMarkers work, it's useful to explain a little\n * terminology used here. A marker has several parts:\n *\n * * the \"marker\" itself which appears at the (value, time) of the event.\n * This is a dot which whose radius is defined by markerRadius, and\n * whose style is set with markerStyle\n * * the \"markerLabel\" which is a string that will be rendered next to\n * the marker. The label can be aligned with markerAlign and also\n * styled with markerLabelStyle\n * * the \"info box\" which is a box containing values that hovers that the\n * top of the chart. Optionally it can show the time above the box.\n * The values themselves are supplied as an array of objects using\n * the `info` prop. The info box can be styled with `infoStyle`,\n * sized with `infoWidth` and `infoHeight`, and the time formatted\n * with `infoTimeFormat`\n * * the \"stem\" which is a connector between the marker and the\n * info box to visually link the two\n *\n * Combining these attributes, Event markers fall into two flavors, either\n * you want to omit the infoBox and mark the event with a dot and optionally\n * a label, or you want to omit the label (and perhaps marker dot) and show\n * a flag style marker with the infoBox connected to the event with the stem.\n *\n * As with other IndexedEvents or TimeRangeEvents, the marker will appear at\n * the center of the timerange represented by that event. You can, however,\n * override either the x or y position by a number of pixels.\n */\n\nvar EventMarker = (function(_React$Component) {\n _inherits(EventMarker, _React$Component);\n\n function EventMarker() {\n _classCallCheck(this, EventMarker);\n\n return _possibleConstructorReturn(\n this,\n (EventMarker.__proto__ || Object.getPrototypeOf(EventMarker)).apply(this, arguments)\n );\n }\n\n _createClass(EventMarker, [\n {\n key: \"renderTime\",\n value: function renderTime(event) {\n if (event instanceof _pondjs.TimeEvent) {\n return _react2.default.createElement(EventTime, {\n time: event.timestamp(),\n format: this.props.infoTimeFormat\n });\n } else if (event instanceof _pondjs.IndexedEvent) {\n return _react2.default.createElement(EventIndex, {\n index: event.index(),\n format: this.props.infoTimeFormat\n });\n } else if (event instanceof _pondjs.TimeRangeEvent) {\n return _react2.default.createElement(EventTimeRange, {\n timerange: event.timerange(),\n format: this.props.infoTimeFormat\n });\n }\n return _react2.default.createElement(\"g\", null);\n }\n },\n {\n key: \"renderMarker\",\n value: function renderMarker(event, column, info) {\n var t = void 0;\n if (event instanceof _pondjs.TimeEvent) {\n t = event.timestamp();\n } else {\n t = new Date(\n event.begin().getTime() +\n (event.end().getTime() - event.begin().getTime()) / 2\n );\n }\n\n var value = void 0;\n if (this.props.yValueFunc) {\n value = this.props.yValueFunc(event, column);\n } else {\n value = event.get(column);\n }\n\n // Allow overrides on the x and y position. This is useful for the barchart\n // tracker because bars maybe be offset from their actual event position in\n // order to display them side by side.\n var posx = this.props.timeScale(t) + this.props.offsetX;\n var posy = this.props.yScale(value) - this.props.offsetY;\n\n var infoBoxProps = {\n align: \"left\",\n style: this.props.infoStyle,\n width: this.props.infoWidth,\n height: this.props.infoHeight\n };\n\n var w = this.props.infoWidth;\n var lineBottom = posy - 10;\n\n var verticalStem = void 0;\n var horizontalStem = void 0;\n var dot = void 0;\n var infoBox = void 0;\n var transform = void 0;\n var label = void 0;\n\n if (info) {\n if (_underscore2.default.isString(this.props.info)) {\n infoBox = _react2.default.createElement(\n _Label2.default,\n _extends({}, infoBoxProps, { label: info })\n );\n } else {\n infoBox = _react2.default.createElement(\n _ValueList2.default,\n _extends({}, infoBoxProps, { values: info })\n );\n }\n }\n\n //\n // Marker on right of event\n //\n\n if (this.props.type === \"point\") {\n var textDefaultStyle = {\n fontSize: 11,\n pointerEvents: \"none\",\n paintOrder: \"stroke\",\n fill: \"#b0b0b0\",\n strokeWidth: 2,\n strokeLinecap: \"butt\",\n strokeLinejoin: \"miter\",\n fontWeight: 800\n };\n\n var dx = 0;\n var dy = 0;\n switch (this.props.markerLabelAlign) {\n case \"left\":\n dx = 5;\n textDefaultStyle.textAnchor = \"start\";\n textDefaultStyle.alignmentBaseline = \"central\";\n break;\n case \"right\":\n dx = -5;\n textDefaultStyle.textAnchor = \"end\";\n textDefaultStyle.alignmentBaseline = \"central\";\n break;\n case \"top\":\n dy = -5;\n textDefaultStyle.textAnchor = \"middle\";\n textDefaultStyle.alignmentBaseline = \"bottom\";\n break;\n case \"bottom\":\n dy = 5;\n textDefaultStyle.textAnchor = \"middle\";\n textDefaultStyle.alignmentBaseline = \"hanging\";\n break;\n default:\n //pass\n }\n\n var tstyle = (0, _merge2.default)(\n true,\n textDefaultStyle,\n this.props.markerLabelStyle\n );\n\n dot = _react2.default.createElement(\"circle\", {\n cx: posx,\n cy: posy,\n r: this.props.markerRadius,\n pointerEvents: \"none\",\n style: this.props.markerStyle\n });\n label = _react2.default.createElement(\n \"text\",\n { x: posx, y: posy, dx: dx, dy: dy, style: tstyle },\n this.props.markerLabel\n );\n\n return _react2.default.createElement(\"g\", null, dot, label);\n } else {\n if (posx + 10 + w < this.props.width * 3 / 4) {\n if (info) {\n verticalStem = _react2.default.createElement(\"line\", {\n pointerEvents: \"none\",\n style: this.props.stemStyle,\n x1: -10,\n y1: lineBottom,\n x2: -10,\n y2: 20\n });\n horizontalStem = _react2.default.createElement(\"line\", {\n pointerEvents: \"none\",\n style: this.props.stemStyle,\n x1: -10,\n y1: 20,\n x2: -2,\n y2: 20\n });\n }\n dot = _react2.default.createElement(\"circle\", {\n cx: -10,\n cy: lineBottom,\n r: this.props.markerRadius,\n pointerEvents: \"none\",\n style: this.props.markerStyle\n });\n transform = \"translate(\" + (posx + 10) + \",\" + 10 + \")\";\n } else {\n if (info) {\n verticalStem = _react2.default.createElement(\"line\", {\n pointerEvents: \"none\",\n style: this.props.stemStyle,\n x1: w + 10,\n y1: lineBottom,\n x2: w + 10,\n y2: 20\n });\n horizontalStem = _react2.default.createElement(\"line\", {\n pointerEvents: \"none\",\n style: this.props.stemStyle,\n x1: w + 10,\n y1: 20,\n x2: w + 2,\n y2: 20\n });\n }\n dot = _react2.default.createElement(\"circle\", {\n cx: w + 10,\n cy: lineBottom,\n r: this.props.markerRadius,\n pointerEvents: \"none\",\n style: this.props.markerStyle\n });\n transform = \"translate(\" + (posx - w - 10) + \",\" + 10 + \")\";\n }\n\n return _react2.default.createElement(\n \"g\",\n { transform: transform },\n verticalStem,\n horizontalStem,\n dot,\n this.renderTime(event),\n _react2.default.createElement(\n \"g\",\n { transform: \"translate(0,\" + 20 + \")\" },\n infoBox\n )\n );\n }\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _props = this.props,\n event = _props.event,\n column = _props.column,\n info = _props.info;\n\n if (!event) {\n return _react2.default.createElement(\"g\", null);\n }\n return _react2.default.createElement(\n \"g\",\n null,\n this.renderMarker(event, column, info)\n );\n }\n }\n ]);\n\n return EventMarker;\n})(_react2.default.Component);\n\nexports.default = EventMarker;\n\nEventMarker.propTypes = {\n type: _propTypes2.default.oneOf([\"point\", \"flag\"]),\n\n /**\n * What [Pond Event](https://esnet-pondjs.appspot.com/#/event) to mark\n */\n event: _propTypes2.default.oneOfType([\n _propTypes2.default.instanceOf(_pondjs.TimeEvent),\n _propTypes2.default.instanceOf(_pondjs.IndexedEvent),\n _propTypes2.default.instanceOf(_pondjs.TimeRangeEvent)\n ]),\n\n /**\n * Which column in the Event to use\n */\n column: _propTypes2.default.string,\n\n /**\n * The values to show in the info box. This is either an array of\n * objects, with each object specifying the label and value\n * to be shown in the info box, or a simple string label. If this\n * prop is not supplied, no infoBox will be displayed.\n */\n info: _propTypes2.default.oneOfType([\n _propTypes2.default.string,\n _propTypes2.default.arrayOf(\n _propTypes2.default.shape({\n label: _propTypes2.default.string, // eslint-disable-line\n value: _propTypes2.default.string // eslint-disable-line\n })\n )\n ]),\n\n /**\n * The style of the info box itself. Typically you'd want to\n * specify a fill color, and stroke color/width here.\n */\n infoStyle: _propTypes2.default.object,\n\n /**\n * The width of the info box\n */\n infoWidth: _propTypes2.default.number,\n\n /**\n * The height of the info box\n */\n infoHeight: _propTypes2.default.number,\n\n /**\n * Alter the format of the timestamp shown on the info box.\n * This may be either a function or a string. If you provide a function\n * that will be passed an Index and should return a string. For example:\n * ```\n * index => moment(index.begin()).format(\"Do MMM 'YY\")\n * ```\n * Alternatively you can pass in a d3 format string. That will be applied\n * to the begin time of the Index range.\n */\n infoTimeFormat: _propTypes2.default.oneOfType([\n _propTypes2.default.func,\n _propTypes2.default.string\n ]),\n\n /**\n * Show a label to the left or right of the marker\n */\n markerLabelAlign: _propTypes2.default.oneOf([\"left\", \"right\", \"top\", \"bottom\"]),\n\n /**\n * The radius of the dot at the end of the marker\n */\n markerRadius: _propTypes2.default.number,\n\n /**\n * The style of the event marker dot\n */\n markerStyle: _propTypes2.default.object,\n\n /**\n * The y value is calculated by the column and event, but if\n * this prop is provided this will be used instead.\n */\n yValueFunc: _propTypes2.default.func,\n\n /**\n * Offset the marker position in the x direction.\n */\n offsetX: _propTypes2.default.number,\n\n /**\n * Offset the marker position in the y direction\n */\n offsetY: _propTypes2.default.number,\n\n /**\n * [Internal] The timeScale supplied by the surrounding ChartContainer\n */\n timeScale: _propTypes2.default.func,\n\n /**\n * [Internal] The yScale supplied by the associated YAxis\n */\n yScale: _propTypes2.default.func,\n\n /**\n * [Internal] The width supplied by the surrounding ChartContainer\n */\n width: _propTypes2.default.number\n};\n\nEventMarker.defaultProps = {\n type: \"flag\",\n column: \"value\",\n infoWidth: 90,\n infoHeight: 25,\n infoStyle: {\n fill: \"white\",\n opacity: 0.9,\n stroke: \"#999\",\n pointerEvents: \"none\"\n },\n stemStyle: {\n stroke: \"#999\",\n cursor: \"crosshair\",\n pointerEvents: \"none\"\n },\n markerStyle: {\n fill: \"#999\"\n },\n markerRadius: 2,\n markerLabelAlign: \"left\",\n markerLabelStyle: {\n fill: \"#999\"\n },\n offsetX: 0,\n offsetY: 0\n};\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/EventMarker.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/Label.js": +/*!**********************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/Label.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\n/**\n * Renders a simple label surrounded by a box within in svg\n *\n * +----------------+\n * | My label |\n * | |\n * +----------------+\n */\n\n/**\n * Copyright (c) 2016, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar Label = function Label(_ref) {\n var label = _ref.label,\n style = _ref.style,\n align = _ref.align,\n width = _ref.width,\n height = _ref.height;\n\n var textStyle = {\n fontSize: 11,\n textAnchor: \"left\",\n fill: \"#b0b0b0\",\n pointerEvents: \"none\"\n };\n\n var textStyleCentered = {\n fontSize: 11,\n textAnchor: \"middle\",\n fill: \"#bdbdbd\",\n pointerEvents: \"none\"\n };\n\n var tstyle = align === \"center\" ? textStyleCentered : textStyle;\n var posx = align === \"center\" ? parseInt(width / 2, 10) : 10;\n\n var text = _react2.default.createElement(\n \"text\",\n { x: posx, y: 5, dy: \"1.2em\", style: tstyle },\n label\n );\n\n var box = _react2.default.createElement(\"rect\", {\n x: 0,\n y: 0,\n style: style,\n width: width,\n height: height\n });\n\n return _react2.default.createElement(\"g\", null, box, text);\n};\n\nLabel.defaultProps = {\n align: \"center\",\n width: 100,\n height: 100,\n pointerEvents: \"none\",\n style: { fill: \"#FEFEFE\", stroke: \"#DDD\", opacity: 0.8 }\n};\n\nLabel.propTypes = {\n /**\n * Where to position the label, either \"left\" or \"center\" within the box\n */\n align: _propTypes2.default.oneOf([\"center\", \"left\"]),\n\n /**\n * The label to render\n */\n label: _propTypes2.default.string.isRequired,\n\n /**\n * The style of the label. This is the inline CSS applied directly\n * to the label box\n */\n style: _propTypes2.default.object, // eslint-disable-line\n\n /**\n * The width of the rectangle to render into\n */\n width: _propTypes2.default.number,\n\n /**\n * The height of the rectangle to render into\n */\n height: _propTypes2.default.number\n};\n\nexports.default = Label;\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/Label.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/LabelAxis.js": +/*!**************************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/LabelAxis.js ***! + \**************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _d3Format = __webpack_require__(/*! d3-format */ \"./node_modules/d3-format/index.js\");\n\nvar _ValueList = __webpack_require__(/*! ./ValueList */ \"./node_modules/react-timeseries-charts/lib/components/ValueList.js\");\n\nvar _ValueList2 = _interopRequireDefault(_ValueList);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\n \"Super expression must either be null or a function, not \" + typeof superClass\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: { value: subClass, enumerable: false, writable: true, configurable: true }\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n} /**\n * Copyright (c) 2015-present, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Renders a 'axis' that display a label for a data channel and a\n * max and average value:\n * ```\n * +----------------+-----+------- ...\n * | Traffic | 120 |\n * | Max 100 Gbps | | Chart ...\n * | Avg 26 Gbps | 0 |\n * +----------------+-----+------- ...\n * ```\n *\n * This can be used for data channel style displays where the user will see many\n * rows of data stacked on top of each other and will need to interact with the\n * data to see actual values. You can combine this with the `ValueAxis` to help\n * do that. See the Cycling example for exactly how to arrange that.\n *\n */\nvar LabelAxis = (function(_React$Component) {\n _inherits(LabelAxis, _React$Component);\n\n function LabelAxis() {\n _classCallCheck(this, LabelAxis);\n\n return _possibleConstructorReturn(\n this,\n (LabelAxis.__proto__ || Object.getPrototypeOf(LabelAxis)).apply(this, arguments)\n );\n }\n\n _createClass(LabelAxis, [\n {\n key: \"renderAxis\",\n value: function renderAxis() {\n var valueWidth = this.props.valWidth;\n var rectWidth = this.props.width - valueWidth;\n\n var style = {\n fontSize: 11,\n textAnchor: \"left\",\n fill: \"#bdbdbd\"\n };\n\n if (this.props.hideScale) {\n return _react2.default.createElement(\"g\", null);\n }\n var valXPos = rectWidth + 3; // padding\n var fmt = this.props.format;\n var maxStr = (0, _d3Format.format)(fmt)(this.props.max);\n var minStr = (0, _d3Format.format)(fmt)(this.props.min);\n\n return _react2.default.createElement(\n \"g\",\n null,\n _react2.default.createElement(\n \"text\",\n { x: valXPos, y: 0, dy: \"1.2em\", style: style },\n maxStr\n ),\n _react2.default.createElement(\n \"text\",\n { x: valXPos, y: this.props.height, style: style },\n minStr\n )\n );\n }\n },\n {\n key: \"render\",\n value: function render() {\n var valueWidth = this.props.valWidth;\n var rectWidth = this.props.width - valueWidth;\n\n var labelStyle = {\n fontSize: 12,\n textAnchor: \"middle\",\n fill: \"#838383\"\n };\n\n var valueList = null;\n var labelYPos = void 0;\n if (this.props.values) {\n labelYPos = Math.max(parseInt(this.props.height / 4, 10), 10);\n valueList = _react2.default.createElement(_ValueList2.default, {\n style: { fill: \"none\", stroke: \"none\" },\n values: this.props.values,\n width: rectWidth\n });\n } else {\n labelYPos = parseInt(this.props.height / 2, 10);\n }\n\n return _react2.default.createElement(\n \"g\",\n null,\n _react2.default.createElement(\"rect\", {\n x: \"0\",\n y: \"0\",\n width: rectWidth,\n height: this.props.height,\n style: { fill: \"none\", stroke: \"none\" }\n }),\n _react2.default.createElement(\n \"text\",\n { x: parseInt(rectWidth / 2, 10), y: labelYPos, style: labelStyle },\n this.props.label\n ),\n _react2.default.createElement(\n \"g\",\n { transform: \"translate(0,\" + (labelYPos + 2) + \")\" },\n valueList\n ),\n this.renderAxis()\n );\n }\n }\n ]);\n\n return LabelAxis;\n})(_react2.default.Component);\n\nexports.default = LabelAxis;\n\nLabelAxis.propTypes = {\n /**\n * The label to show as the axis.\n */\n label: _propTypes2.default.string.isRequired,\n\n /**\n * Show or hide the max/min values that appear alongside the label\n */\n hideScale: _propTypes2.default.bool,\n\n /**\n * Supply a list of label value pairs to render within the LabelAxis.\n * This expects an array of objects. Each object is of the form:\n * {label: \"Speed\", value: \"26.2 mph\"}.\n */\n values: _propTypes2.default.arrayOf(\n _propTypes2.default.shape({\n label: _propTypes2.default.string, // eslint-disable-line\n value: _propTypes2.default.oneOfType([\n // eslint-disable-line\n _propTypes2.default.number,\n _propTypes2.default.string\n ])\n })\n ).isRequired,\n\n /**\n * Width to provide the values\n */\n valWidth: _propTypes2.default.number,\n\n /**\n * Max value of the axis scale\n */\n max: _propTypes2.default.number.isRequired,\n\n /**\n * Min value of the axis scale\n */\n min: _propTypes2.default.number.isRequired,\n\n /**\n * If values are numbers, use this format string\n */\n format: _propTypes2.default.string,\n\n /**\n * The width of the axis\n */\n width: _propTypes2.default.number,\n\n /**\n * The height of the axis\n */\n height: _propTypes2.default.number\n};\n\nLabelAxis.defaultProps = {\n hideScale: false,\n values: [],\n valWidth: 40,\n format: \".2f\"\n};\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/LabelAxis.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/Legend.js": +/*!***********************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/Legend.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _merge = __webpack_require__(/*! merge */ \"./node_modules/merge/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _flexboxReact = __webpack_require__(/*! flexbox-react */ \"./node_modules/flexbox-react/dist/index.js\");\n\nvar _flexboxReact2 = _interopRequireDefault(_flexboxReact);\n\nvar _styler = __webpack_require__(/*! ../js/styler */ \"./node_modules/react-timeseries-charts/lib/js/styler.js\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\n \"Super expression must either be null or a function, not \" + typeof superClass\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: { value: subClass, enumerable: false, writable: true, configurable: true }\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n} /**\n * Copyright (c) 2015-present, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar defaultStyle = {\n symbol: {\n normal: { stroke: \"steelblue\", fill: \"none\", strokeWidth: 1 },\n highlighted: { stroke: \"#5a98cb\", fill: \"none\", strokeWidth: 1 },\n selected: { stroke: \"steelblue\", fill: \"none\", strokeWidth: 2 },\n muted: { stroke: \"steelblue\", fill: \"none\", opacity: 0.4, strokeWidth: 1 }\n },\n label: {\n normal: { fontSize: \"normal\", color: \"#333\" },\n highlighted: { fontSize: \"normal\", color: \"#222\" },\n selected: { fontSize: \"normal\", color: \"#333\" },\n muted: { fontSize: \"normal\", color: \"#333\", opacity: 0.4 }\n },\n value: {\n normal: { fontSize: \"normal\", color: \"#333\" },\n highlighted: { fontSize: \"normal\", color: \"#222\" },\n selected: { fontSize: \"normal\", color: \"#333\" },\n muted: { fontSize: \"normal\", color: \"#333\", opacity: 0.4 }\n }\n};\n\n/**\n * Legends are simple to define.\n *\n * First specify the styles you want each item to have. This is either\n * the CSS that should be appied to rendered symbol. Or you can provide\n * a Styler object. See below for full styling details.\n *\n * ```\n * const style = Styler([\n * {key: \"aud\", color: \"steelblue\", width: 1, dashed: true},\n * {key: \"euro\", color: \"#F68B24\", width: 2}\n * ]);\n * ```\n *\n * Next build a list of categories you want in the legend.\n *\n * ```\n * const categories = [\n * {key: \"aust\", label: \"AUD\", value: \"1.52\", disabled: true},\n * {key: \"usa\", label: \"USD\", value: \"1.43\", disabled: false}\n * ];\n * ```\n * For each category to display you must provide a key, a label and\n * if it should be displayed disabled or not.\n *\n * Then render the legend, with type either \"line\", \"swatch\" or \"dot\":\n *\n * ```\n * \n * ```\n *\n * Optionally you can also display a value below the label. This is\n * useful when hovering over another chart on the page, or to display\n * the current value of live data. You can see this defined in the\n * above categories.\n *\n * The legend can also be supplied with callback functions which will\n * tell you if the user has clicked or hovered over on one of the legend\n * items. You can use this to sync highlighting and selection to a\n * chart.\n *\n * ## Styling\n *\n * There are three methods of styling a legend:\n * - using a Styler object\n * - using an object containing inline styles\n * - using a function which returns an inline style\n *\n * A Styler object can be supplied directly to the `style` prop\n * of the legend. This is the simplest approach, since you can\n * usually just use the same Styler as you use for your chart.\n *\n * Supplying an object to the `style` prop gives you more control\n * than the Styler, since you can provide the actual CSS properties\n * for each element of the legend. The format for the object is:\n *\n * ```\n * {\n * columnName1: {\n symbol: {\n normal: {...styleSymbol},\n highlighted: {...styleSymbol},\n selected: {...styleSymbol},\n muted: {...styleSymbol}\n },\n label: {\n normal: {...labelStyle},\n highlighted: {...labelStyle},\n selected: {...labelStyle},\n muted: {...labelStyle}\n },\n value: {\n normal: {...valueStyle},\n highlighted: {...valueStyle},\n selected: {...valueStyle},\n muted: {...valueStyle}\n }\n * },\n * columnName2 : {\n * ...\n * },\n * ...\n * }\n *\n * - symbolStyle is the CSS properties for the symbol, which\n * is either a swatch, dot or line. For a line, you'd want to\n * provide the SVG properties, for a swatch you'd provide\n * the SVG properties and for a dot the properties.\n * - labelStyle is the main label for the legend item. It is a\n * SVG element, so you can control the font properties.\n * - valueStyle is the optional value. As with the labelStyle you\n * this is an SVG element.\n *\n * Finally, you can provide a function to the `style` prop. This\n * is similar to providing an object, except your function will\n * be called with the columnName and you should return the map\n * containing symbol, label and value styles.\n */\n\nvar LegendItem = (function(_React$Component) {\n _inherits(LegendItem, _React$Component);\n\n function LegendItem() {\n _classCallCheck(this, LegendItem);\n\n return _possibleConstructorReturn(\n this,\n (LegendItem.__proto__ || Object.getPrototypeOf(LegendItem)).apply(this, arguments)\n );\n }\n\n _createClass(LegendItem, [\n {\n key: \"handleClick\",\n value: function handleClick(e, key) {\n e.stopPropagation();\n if (this.props.onSelectionChange) {\n this.props.onSelectionChange(key);\n }\n }\n },\n {\n key: \"handleHover\",\n value: function handleHover(e, key) {\n if (this.props.onHighlightChange) {\n this.props.onHighlightChange(key);\n }\n }\n },\n {\n key: \"handleHoverLeave\",\n value: function handleHoverLeave() {\n if (this.props.onHighlightChange) {\n this.props.onHighlightChange(null);\n }\n }\n },\n {\n key: \"renderLine\",\n value: function renderLine(style) {\n var _props = this.props,\n symbolWidth = _props.symbolWidth,\n symbolHeight = _props.symbolHeight;\n\n return _react2.default.createElement(\n \"svg\",\n { style: { float: \"left\" }, width: symbolWidth, height: symbolHeight },\n _react2.default.createElement(\"line\", {\n style: style,\n x1: 0,\n y1: parseInt(symbolWidth / 2, 10),\n x2: symbolWidth,\n y2: parseInt(symbolWidth / 2, 10),\n stroke: \"black\",\n strokeWidth: \"2\"\n })\n );\n }\n },\n {\n key: \"renderSwatch\",\n value: function renderSwatch(style) {\n var _props2 = this.props,\n symbolWidth = _props2.symbolWidth,\n symbolHeight = _props2.symbolHeight;\n\n return _react2.default.createElement(\n \"svg\",\n { style: { float: \"left\" }, width: symbolWidth, height: symbolHeight },\n _react2.default.createElement(\"rect\", {\n style: style,\n x: 2,\n y: 2,\n width: symbolWidth - 4,\n height: symbolHeight - 4,\n rx: 2,\n ry: 2\n })\n );\n }\n },\n {\n key: \"renderDot\",\n value: function renderDot(style) {\n var _props3 = this.props,\n symbolWidth = _props3.symbolWidth,\n symbolHeight = _props3.symbolHeight;\n\n var w = parseInt(symbolWidth / 2, 10);\n var h = parseInt(symbolHeight / 2, 10);\n var radius = w * 0.75;\n\n return _react2.default.createElement(\n \"svg\",\n { style: { float: \"left\" }, width: symbolWidth, height: symbolHeight },\n _react2.default.createElement(\"circle\", {\n style: style,\n cx: w,\n cy: h,\n r: radius\n })\n );\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _props4 = this.props,\n symbolStyle = _props4.symbolStyle,\n labelStyle = _props4.labelStyle,\n valueStyle = _props4.valueStyle,\n itemKey = _props4.itemKey,\n symbolType = _props4.symbolType;\n\n var symbol = void 0;\n switch (symbolType) {\n case \"swatch\":\n symbol = this.renderSwatch(symbolStyle);\n break;\n case \"line\":\n symbol = this.renderLine(symbolStyle);\n break;\n case \"dot\":\n symbol = this.renderDot(symbolStyle);\n break;\n default:\n //pass\n }\n\n // TODO: We shouldn't be adding interactions to a element like this.\n // The alternative it to put it on a or something?\n\n return _react2.default.createElement(\n _flexboxReact2.default,\n { flexDirection: \"column\", key: itemKey },\n _react2.default.createElement(\n \"div\",\n {\n onClick: function onClick(e) {\n return _this2.handleClick(e, itemKey);\n },\n onMouseMove: function onMouseMove(e) {\n return _this2.handleHover(e, itemKey);\n },\n onMouseLeave: function onMouseLeave() {\n return _this2.handleHoverLeave();\n }\n },\n _react2.default.createElement(\n _flexboxReact2.default,\n { flexDirection: \"row\" },\n _react2.default.createElement(\n _flexboxReact2.default,\n { width: \"20px\" },\n symbol\n ),\n _react2.default.createElement(\n _flexboxReact2.default,\n { flexDirection: \"column\" },\n _react2.default.createElement(\n _flexboxReact2.default,\n null,\n _react2.default.createElement(\n \"div\",\n { style: labelStyle },\n this.props.label\n )\n ),\n _react2.default.createElement(\n _flexboxReact2.default,\n null,\n _react2.default.createElement(\n \"div\",\n { style: valueStyle },\n this.props.value\n )\n )\n )\n )\n )\n );\n }\n }\n ]);\n\n return LegendItem;\n})(_react2.default.Component);\n\nvar Legend = (function(_React$Component2) {\n _inherits(Legend, _React$Component2);\n\n function Legend() {\n _classCallCheck(this, Legend);\n\n return _possibleConstructorReturn(\n this,\n (Legend.__proto__ || Object.getPrototypeOf(Legend)).apply(this, arguments)\n );\n }\n\n _createClass(Legend, [\n {\n key: \"handleClick\",\n value: function handleClick(e, key) {\n e.stopPropagation();\n if (this.props.onSelectionChange) {\n this.props.onSelectionChange(key);\n }\n }\n },\n {\n key: \"handleHover\",\n value: function handleHover(e, key) {\n if (this.props.onHighlightChange) {\n this.props.onHighlightChange(key);\n }\n }\n },\n {\n key: \"handleHoverLeave\",\n value: function handleHoverLeave() {\n if (this.props.onHighlightChange) {\n this.props.onHighlightChange(null);\n }\n }\n\n /**\n * For each category item we get the users stle preference. This\n * can be supplied in a number of ways:\n * * Typically you would get the legend stle from a Style instance\n * * Alternatively, you can pass in a style object which has your\n * category in it and the associated style\n * * Finally, the provided style can also be a function\n */\n },\n {\n key: \"providedStyle\",\n value: function providedStyle(category, type) {\n var style = {};\n if (this.props.style) {\n if (this.props.style instanceof _styler.Styler) {\n style = this.props.style.legendStyle(category.key, type);\n } else if (_underscore2.default.isObject(this.props.style)) {\n style = this.props.style[category.key];\n } else if (_underscore2.default.isFunction(this.props.style)) {\n style = this.props.style(category.key);\n }\n }\n return style;\n }\n\n /**\n * For each category this function takes the current\n * selected and highlighted item, along with the disabled\n * state of the item, and returns the mode it should be\n * rendered in: normal, selected, highlighted, or muted\n */\n },\n {\n key: \"styleMode\",\n value: function styleMode(category) {\n var isHighlighted = this.props.highlight && category.key === this.props.highlight;\n var isSelected = this.props.selection && category.key === this.props.selection;\n var isDisabled = category.disabled;\n\n var mode = \"normal\";\n if (this.props.selection) {\n if (isSelected) {\n mode = \"selected\";\n } else if (isHighlighted) {\n mode = \"highlighted\";\n } else {\n mode = \"muted\";\n }\n } else if (isHighlighted) {\n mode = \"highlighted\";\n } else if (isDisabled) {\n mode = \"muted\";\n }\n return mode;\n }\n },\n {\n key: \"symbolStyle\",\n value: function symbolStyle(category, type) {\n var styleMap = this.providedStyle(category, type);\n var styleMode = this.styleMode(category);\n return (0, _merge2.default)(\n true,\n defaultStyle[styleMode],\n styleMap.symbol[styleMode] ? styleMap.symbol[styleMode] : {}\n );\n }\n },\n {\n key: \"labelStyle\",\n value: function labelStyle(category) {\n var styleMap = this.providedStyle(category);\n var styleMode = this.styleMode(category);\n return (0, _merge2.default)(\n true,\n defaultStyle[styleMode],\n styleMap.label[styleMode] ? styleMap.label[styleMode] : {}\n );\n }\n },\n {\n key: \"valueStyle\",\n value: function valueStyle(category) {\n var styleMap = this.providedStyle(category);\n var styleMode = this.styleMode(category);\n return (0, _merge2.default)(\n true,\n defaultStyle[styleMode],\n styleMap.value[styleMode] ? styleMap.value[styleMode] : {}\n );\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var _props5 = this.props,\n _props5$type = _props5.type,\n type = _props5$type === undefined ? \"swatch\" : _props5$type,\n symbolWidth = _props5.symbolWidth,\n symbolHeight = _props5.symbolHeight;\n\n var items = this.props.categories.map(function(category) {\n var key = category.key,\n label = category.label,\n value = category.value,\n _category$symbolType = category.symbolType,\n symbolType =\n _category$symbolType === undefined ? type : _category$symbolType;\n\n var symbolStyle = _this4.symbolStyle(category, symbolType);\n var labelStyle = _this4.labelStyle(category);\n var valueStyle = _this4.valueStyle(category);\n return _react2.default.createElement(LegendItem, {\n key: key,\n type: type,\n itemKey: key,\n label: label,\n value: value,\n symbolType: symbolType,\n symbolWidth: symbolWidth,\n symbolHeight: symbolHeight,\n symbolStyle: symbolStyle,\n labelStyle: labelStyle,\n valueStyle: valueStyle,\n onSelectionChange: _this4.props.onSelectionChange,\n onHighlightChange: _this4.props.onHighlightChange\n });\n });\n\n var align = this.props.align === \"left\" ? \"flex-start\" : \"flex-end\";\n\n if (this.props.stack) {\n return _react2.default.createElement(\n _flexboxReact2.default,\n { justifyContent: align, flexDirection: \"column\", marginBottom: \"20px\" },\n items\n );\n } else {\n return _react2.default.createElement(\n _flexboxReact2.default,\n { justifyContent: align, flexWrap: \"wrap\", marginBottom: \"20px\" },\n items\n );\n }\n }\n }\n ]);\n\n return Legend;\n})(_react2.default.Component);\n\nexports.default = Legend;\n\nLegend.propTypes = {\n /**\n * The overall style of the legend items, either a color \"swatch\", a\n * colored \"line\", or a \"dot\".\n */\n type: _propTypes2.default.oneOf([\"swatch\", \"line\", \"dot\"]),\n\n /**\n * Alignment of the legend within the available space. Either left or right.\n */\n align: _propTypes2.default.oneOf([\"left\", \"right\"]),\n style: _propTypes2.default.oneOfType([\n _propTypes2.default.object,\n _propTypes2.default.func,\n _propTypes2.default.instanceOf(_styler.Styler)\n ]).isRequired,\n\n /**\n * The categories array specifies details and style for each item in the legend. For each item:\n * * \"key\" - (required) the name by which the legend will be known\n * * \"label\" - (required) the displayed label\n * * \"style\" - the swatch, dot, or line style. Typically you'd just\n * specify {backgroundColor: \"#1f77b4\"}\n * * \"labelStyle\" - the label style\n * * \"disabled\" - a disabled state\n *\n * ```\n * const categories = [\n * {key: \"aust\", label: \"AUD\", disabled: this.state.disabled[\"aust\"],\n * style: {backgroundColor: \"#1f77b4\"}},\n * {key: \"usa\", label: \"USD\", disabled: this.state.disabled[\"usa\"],\n * style: {backgroundColor: \"#aec7e8\"}}\n * ];\n * ```\n */\n categories: _propTypes2.default.arrayOf(\n _propTypes2.default.shape({\n key: _propTypes2.default.string.isRequired, // eslint-disable-line\n label: _propTypes2.default.string.isRequired, // eslint-disable-line\n disabled: _propTypes2.default.bool, // eslint-disable-line\n style: _propTypes2.default.object, // eslint-disable-line\n labelStyle: _propTypes2.default.object // eslint-disable-line\n })\n ).isRequired,\n\n /**\n * The width of the legend symbol\n */\n symbolWidth: _propTypes2.default.number,\n\n /**\n * The height of the legend symbol\n */\n symbolHeight: _propTypes2.default.number,\n\n /**\n * Which item, specified by its key, should be rendered as highlighted\n */\n highlight: _propTypes2.default.string,\n\n /**\n * Which item, specified by its key, should be rendered as selected\n */\n selection: _propTypes2.default.string,\n\n /**\n * Callback will be called with a legend item is selected (i.e. it is clicked\n * on by the user)\n */\n onSelectionChange: _propTypes2.default.func,\n\n /**\n * Callback will be called with a legend item is highlighted (i.e. it is hovered\n * over by the user)\n */\n onHighlightChange: _propTypes2.default.func,\n\n /**\n * Defines whether to stack legend items vertically or not\n */\n stack: _propTypes2.default.bool\n};\n\nLegend.defaultProps = {\n style: {},\n labelStyle: {},\n type: \"swatch\", // or \"line\" or \"dot\"\n align: \"left\",\n symbolWidth: 16,\n symbolHeight: 16,\n stack: false\n};\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/Legend.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/LineChart.js": +/*!**************************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/LineChart.js ***! + \**************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _d3Shape = __webpack_require__(/*! d3-shape */ \"./node_modules/d3-shape/index.js\");\n\nvar _merge = __webpack_require__(/*! merge */ \"./node_modules/merge/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _pondjs = __webpack_require__(/*! pondjs */ \"./node_modules/pondjs/lib/entry.js\");\n\nvar _styler = __webpack_require__(/*! ../js/styler */ \"./node_modules/react-timeseries-charts/lib/js/styler.js\");\n\nvar _util = __webpack_require__(/*! ../js/util */ \"./node_modules/react-timeseries-charts/lib/js/util.js\");\n\nvar _curve = __webpack_require__(/*! ../js/curve */ \"./node_modules/react-timeseries-charts/lib/js/curve.js\");\n\nvar _curve2 = _interopRequireDefault(_curve);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\n \"Super expression must either be null or a function, not \" + typeof superClass\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: { value: subClass, enumerable: false, writable: true, configurable: true }\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n} /**\n * Copyright (c) 2015-present, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar defaultStyle = {\n normal: { stroke: \"steelblue\", fill: \"none\", strokeWidth: 1 },\n highlighted: { stroke: \"#5a98cb\", fill: \"none\", strokeWidth: 1 },\n selected: { stroke: \"steelblue\", fill: \"none\", strokeWidth: 2 },\n muted: { stroke: \"steelblue\", fill: \"none\", opacity: 0.4, strokeWidth: 1 }\n};\n\n/**\n * The `` component is able to display multiple columns of a TimeSeries\n * as separate line charts.\n *\n * The `` should be used within `` etc., as this will\n * construct the horizontal and vertical axis, and manage other elements.\n *\n * Here is an example of two columns of a TimeSeries being plotted with the ``:\n *\n * ```\n \n \n \n \n \n \n \n \n * ```\n */\n\nvar LineChart = (function(_React$Component) {\n _inherits(LineChart, _React$Component);\n\n function LineChart() {\n _classCallCheck(this, LineChart);\n\n return _possibleConstructorReturn(\n this,\n (LineChart.__proto__ || Object.getPrototypeOf(LineChart)).apply(this, arguments)\n );\n }\n\n _createClass(LineChart, [\n {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n var newSeries = nextProps.series;\n var oldSeries = this.props.series;\n\n var width = nextProps.width;\n var timeScale = nextProps.timeScale;\n var yScale = nextProps.yScale;\n var interpolation = nextProps.interpolation;\n var highlight = nextProps.highlight;\n var selection = nextProps.selection;\n var columns = nextProps.columns;\n\n // What changed?\n var widthChanged = this.props.width !== width;\n var timeScaleChanged =\n (0, _util.scaleAsString)(this.props.timeScale) !==\n (0, _util.scaleAsString)(timeScale);\n var yAxisScaleChanged = this.props.yScale !== yScale;\n var interpolationChanged = this.props.interpolation !== interpolation;\n var highlightChanged = this.props.highlight !== highlight;\n var selectionChanged = this.props.selection !== selection;\n var columnsChanged = this.props.columns !== columns;\n\n var seriesChanged = false;\n if (oldSeries.length !== newSeries.length) {\n seriesChanged = true;\n } else {\n seriesChanged = !_pondjs.TimeSeries.is(oldSeries, newSeries);\n }\n\n return (\n widthChanged ||\n seriesChanged ||\n timeScaleChanged ||\n yAxisScaleChanged ||\n interpolationChanged ||\n highlightChanged ||\n selectionChanged ||\n columnsChanged\n );\n }\n },\n {\n key: \"handleHover\",\n value: function handleHover(e, column) {\n if (this.props.onHighlightChange) {\n this.props.onHighlightChange(column);\n }\n }\n },\n {\n key: \"handleHoverLeave\",\n value: function handleHoverLeave() {\n if (this.props.onHighlightChange) {\n this.props.onHighlightChange(null);\n }\n }\n },\n {\n key: \"handleClick\",\n value: function handleClick(e, column) {\n e.stopPropagation();\n if (this.props.onSelectionChange) {\n this.props.onSelectionChange(column);\n }\n }\n },\n {\n key: \"providedPathStyleMap\",\n value: function providedPathStyleMap(column) {\n var style = {};\n if (this.props.style) {\n if (this.props.style instanceof _styler.Styler) {\n style = this.props.style.lineChartStyle()[column];\n } else if (_underscore2.default.isObject(this.props.style)) {\n style = this.props.style[column];\n } else if (_underscore2.default.isFunction(this.props.style)) {\n style = this.props.style(column);\n }\n }\n return style;\n }\n\n /**\n * Returns the style used for drawing the path\n */\n },\n {\n key: \"pathStyle\",\n value: function pathStyle(column) {\n var style = void 0;\n\n var styleMap = this.providedPathStyleMap(column);\n var isHighlighted = this.props.highlight && column === this.props.highlight;\n var isSelected = this.props.selection && column === this.props.selection;\n\n if (this.props.selection) {\n if (isSelected) {\n style = (0, _merge2.default)(\n true,\n defaultStyle.selected,\n styleMap.selected ? styleMap.selected : {}\n );\n } else if (isHighlighted) {\n style = (0, _merge2.default)(\n true,\n defaultStyle.highlighted,\n styleMap.highlighted ? styleMap.highlighted : {}\n );\n } else {\n style = (0, _merge2.default)(\n true,\n defaultStyle.muted,\n styleMap.muted ? styleMap.muted : {}\n );\n }\n } else if (isHighlighted) {\n style = (0, _merge2.default)(\n true,\n defaultStyle.highlighted,\n styleMap.highlighted ? styleMap.highlighted : {}\n );\n } else {\n style = (0, _merge2.default)(true, defaultStyle.normal, styleMap.normal);\n }\n\n style.pointerEvents = \"none\";\n\n return style;\n }\n },\n {\n key: \"renderPath\",\n value: function renderPath(data, column, key) {\n var _this2 = this;\n\n var hitStyle = {\n stroke: \"white\",\n fill: \"none\",\n opacity: 0.0,\n strokeWidth: 7,\n cursor: \"crosshair\",\n pointerEvents: \"stroke\"\n };\n\n // D3 generates each path\n var path = (0, _d3Shape.line)()\n .curve(_curve2.default[this.props.interpolation])\n .x(function(d) {\n return _this2.props.timeScale(d.x);\n })\n .y(function(d) {\n return _this2.props.yScale(d.y);\n })(data);\n\n return _react2.default.createElement(\n \"g\",\n { key: key },\n _react2.default.createElement(\"path\", {\n d: path,\n style: this.pathStyle(column)\n }),\n _react2.default.createElement(\"path\", {\n d: path,\n style: hitStyle,\n onClick: function onClick(e) {\n return _this2.handleClick(e, column);\n },\n onMouseLeave: function onMouseLeave() {\n return _this2.handleHoverLeave();\n },\n onMouseMove: function onMouseMove(e) {\n return _this2.handleHover(e, column);\n }\n })\n );\n }\n },\n {\n key: \"renderLines\",\n value: function renderLines() {\n var _this3 = this;\n\n return _underscore2.default.map(this.props.columns, function(column) {\n return _this3.renderLine(column);\n });\n }\n },\n {\n key: \"renderLine\",\n value: function renderLine(column) {\n var pathLines = [];\n var count = 1;\n if (this.props.breakLine) {\n // Remove nulls and NaNs from the line by generating a break in the line\n var currentPoints = null;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (\n var _iterator = this.props.series.events()[Symbol.iterator](), _step;\n !(_iteratorNormalCompletion = (_step = _iterator.next()).done);\n _iteratorNormalCompletion = true\n ) {\n var d = _step.value;\n\n var timestamp = new Date(\n d.begin().getTime() + (d.end().getTime() - d.begin().getTime()) / 2\n );\n var value = d.get(column);\n var badPoint =\n _underscore2.default.isNull(value) ||\n _underscore2.default.isNaN(value) ||\n !_underscore2.default.isFinite(value);\n if (!badPoint) {\n if (!currentPoints) currentPoints = [];\n currentPoints.push({ x: timestamp, y: value });\n } else if (currentPoints) {\n if (currentPoints.length > 1) {\n pathLines.push(this.renderPath(currentPoints, column, count));\n count += 1;\n }\n currentPoints = null;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (currentPoints && currentPoints.length > 1) {\n pathLines.push(this.renderPath(currentPoints, column, count));\n count += 1;\n }\n } else {\n // Ignore nulls and NaNs in the line\n var cleanedPoints = [];\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (\n var _iterator2 = this.props.series.events()[Symbol.iterator](), _step2;\n !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done);\n _iteratorNormalCompletion2 = true\n ) {\n var _d = _step2.value;\n\n var _timestamp = new Date(\n _d.begin().getTime() +\n (_d.end().getTime() - _d.begin().getTime()) / 2\n );\n var _value = _d.get(column);\n var _badPoint =\n _underscore2.default.isNull(_value) ||\n _underscore2.default.isNaN(_value) ||\n !_underscore2.default.isFinite(_value);\n if (!_badPoint) {\n cleanedPoints.push({ x: _timestamp, y: _value });\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n pathLines.push(this.renderPath(cleanedPoints, column, count));\n count += 1;\n }\n\n return _react2.default.createElement(\"g\", { key: column }, pathLines);\n }\n },\n {\n key: \"render\",\n value: function render() {\n return _react2.default.createElement(\"g\", null, this.renderLines());\n }\n }\n ]);\n\n return LineChart;\n})(_react2.default.Component);\n\nexports.default = LineChart;\n\nLineChart.propTypes = {\n /**\n * Show or hide this chart\n */\n visible: _propTypes2.default.bool,\n\n /**\n * What [Pond TimeSeries](https://esnet-pondjs.appspot.com/#/timeseries) data to visualize\n */\n series: _propTypes2.default.instanceOf(_pondjs.TimeSeries).isRequired,\n\n /**\n * Reference to the axis which provides the vertical scale for drawing.\n * e.g. specifying `axis=\"trafficRate\"` would refer the y-scale of the YAxis\n * with id=\"trafficRate\".\n */\n axis: _propTypes2.default.string.isRequired, // eslint-disable-line\n\n /**\n * Which columns from the series to draw.\n */\n columns: _propTypes2.default.arrayOf(_propTypes2.default.string),\n\n /**\n * The styles to apply to the underlying SVG lines. This is a mapping\n * of column names to objects with style attributes, in the following\n * format:\n *\n * ```\n * const style = {\n * in: {\n * normal: {stroke: \"steelblue\", fill: \"none\", strokeWidth: 1},\n * highlighted: {stroke: \"#5a98cb\", fill: \"none\", strokeWidth: 1},\n * selected: {stroke: \"steelblue\", fill: \"none\", strokeWidth: 1},\n * muted: {stroke: \"steelblue\", fill: \"none\", opacity: 0.4, strokeWidth: 1}\n * },\n * out: {\n * ...\n * }\n * };\n *\n * \n * ```\n *\n * Alternatively, you can pass in a `Styler`. For example:\n *\n * ```\n * const currencyStyle = Styler([\n * {key: \"aud\", color: \"steelblue\", width: 1, dashed: true},\n * {key: \"euro\", color: \"#F68B24\", width: 2}\n * ]);\n *\n * \n *\n * ```\n */\n style: _propTypes2.default.oneOfType([\n _propTypes2.default.object,\n _propTypes2.default.func,\n _propTypes2.default.instanceOf(_styler.Styler)\n ]),\n\n /**\n * Any of D3's interpolation modes.\n */\n interpolation: _propTypes2.default.oneOf([\n \"curveBasis\",\n \"curveBasisOpen\",\n \"curveBundle\",\n \"curveCardinal\",\n \"curveCardinalOpen\",\n \"curveCatmullRom\",\n \"curveCatmullRomOpen\",\n \"curveLinear\",\n \"curveMonotoneX\",\n \"curveMonotoneY\",\n \"curveNatural\",\n \"curveRadial\",\n \"curveStep\",\n \"curveStepAfter\",\n \"curveStepBefore\"\n ]),\n\n /**\n * The determines how to handle bad/missing values in the supplied\n * TimeSeries. A missing value can be null or NaN. If breakLine\n * is set to true then the line will be broken on either side of\n * the bad value(s). If breakLine is false (the default) bad values\n * are simply removed and the adjoining points are connected.\n */\n breakLine: _propTypes2.default.bool,\n\n /**\n * The selected item, which will be rendered in the \"selected\" style.\n * If a line is selected, all other lines will be rendered in the \"muted\" style.\n *\n * See also `onSelectionChange`\n */\n selection: _propTypes2.default.string,\n\n /**\n * A callback that will be called when the selection changes. It will be called\n * with the column corresponding to the line being clicked.\n */\n onSelectionChange: _propTypes2.default.func,\n\n /**\n * The highlighted column, which will be rendered in the \"highlighted\" style.\n *\n * See also `onHighlightChange`\n */\n highlight: _propTypes2.default.string,\n\n /**\n * A callback that will be called when the hovered over line changes.\n * It will be called with the corresponding column.\n */\n onHighlightChange: _propTypes2.default.func,\n\n /**\n * [Internal] The timeScale supplied by the surrounding ChartContainer\n */\n timeScale: _propTypes2.default.func,\n\n /**\n * [Internal] The yScale supplied by the associated YAxis\n */\n yScale: _propTypes2.default.func,\n\n /**\n * [Internal] The width supplied by the surrounding ChartContainer\n */\n width: _propTypes2.default.number\n};\n\nLineChart.defaultProps = {\n visible: true,\n columns: [\"value\"],\n smooth: true,\n interpolation: \"curveLinear\",\n breakLine: true\n};\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/LineChart.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/MultiBrush.js": +/*!***************************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/MultiBrush.js ***! + \***************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = (function() {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n return function(arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n})();\n\nvar _extends =\n Object.assign ||\n function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nvar _merge = __webpack_require__(/*! merge */ \"./node_modules/merge/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _pondjs = __webpack_require__(/*! pondjs */ \"./node_modules/pondjs/lib/entry.js\");\n\nvar _util = __webpack_require__(/*! ../js/util */ \"./node_modules/react-timeseries-charts/lib/js/util.js\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\n \"Super expression must either be null or a function, not \" + typeof superClass\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: { value: subClass, enumerable: false, writable: true, configurable: true }\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n} /**\n * Copyright (c) 2016, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Renders a brush with the range defined in the prop `timeRange`.\n */\nvar MultiBrush = (function(_React$Component) {\n _inherits(MultiBrush, _React$Component);\n\n function MultiBrush(props) {\n _classCallCheck(this, MultiBrush);\n\n var _this = _possibleConstructorReturn(\n this,\n (MultiBrush.__proto__ || Object.getPrototypeOf(MultiBrush)).call(this, props)\n );\n\n _this.hasNullBrush = function() {\n return (\n (_this.props.timeRanges || []).length > 0 &&\n _this.props.timeRanges[_this.props.timeRanges.length - 1] == null\n );\n };\n\n _this.handleMouseClick = function(e, brushIndex) {\n if (_this.props.onTimeRangeClicked) {\n _this.props.onTimeRangeClicked(brushIndex);\n }\n };\n\n _this.state = {\n isBrushing: false\n };\n\n _this.handleBrushMouseDown = _this.handleBrushMouseDown.bind(_this);\n _this.handleOverlayMouseDown = _this.handleOverlayMouseDown.bind(_this);\n _this.handleHandleMouseDown = _this.handleHandleMouseDown.bind(_this);\n _this.handleMouseUp = _this.handleMouseUp.bind(_this);\n _this.handleMouseMove = _this.handleMouseMove.bind(_this);\n return _this;\n }\n\n _createClass(MultiBrush, [\n {\n key: \"viewport\",\n value: function viewport() {\n var _props = this.props,\n width = _props.width,\n timeScale = _props.timeScale;\n\n var viewBeginTime = timeScale.invert(0);\n var viewEndTime = timeScale.invert(width);\n return new _pondjs.TimeRange(viewBeginTime, viewEndTime);\n }\n\n //\n // Event handlers\n //\n },\n {\n key: \"handleBrushMouseDown\",\n value: function handleBrushMouseDown(e, brush_idx) {\n e.preventDefault();\n\n var x = e.pageX,\n y = e.pageY;\n\n var xy0 = [Math.round(x), Math.round(y)];\n var begin = +this.props.timeRanges[brush_idx].begin();\n var end = +this.props.timeRanges[brush_idx].end();\n\n document.addEventListener(\"mouseup\", this.handleMouseUp);\n\n this.setState({\n isBrushing: true,\n brushingInitializationSite: \"brush\",\n initialBrushBeginTime: begin,\n initialBrushEndTime: end,\n initialBrushXYPosition: xy0,\n brushIndex: brush_idx\n });\n }\n },\n {\n key: \"handleOverlayMouseDown\",\n value: function handleOverlayMouseDown(e) {\n if (this.props.allowFreeDrawing || this.hasNullBrush()) {\n e.preventDefault();\n\n var offset = (0, _util.getElementOffset)(this.overlay);\n var x = e.pageX - offset.left;\n var t = this.props.timeScale.invert(x).getTime();\n\n document.addEventListener(\"mouseup\", this.handleMouseUp);\n\n var drawingPosition = this.props.allowFreeDrawing\n ? this.props.timeRanges.length\n : this.props.timeRanges.length - 1;\n\n this.setState({\n isBrushing: true,\n brushingInitializationSite: \"overlay\",\n initialBrushBeginTime: t,\n initialBrushEndTime: t,\n initialBrushXYPosition: null,\n brushIndex: drawingPosition\n });\n }\n }\n },\n {\n key: \"handleHandleMouseDown\",\n value: function handleHandleMouseDown(e, handle, brushIndex) {\n e.preventDefault();\n\n var x = e.pageX,\n y = e.pageY;\n\n var xy0 = [Math.round(x), Math.round(y)];\n var begin = this.props.timeRanges[brushIndex].begin().getTime();\n var end = this.props.timeRanges[brushIndex].end().getTime();\n\n document.addEventListener(\"mouseover\", this.handleMouseMove);\n document.addEventListener(\"mouseup\", this.handleMouseUp);\n\n this.setState({\n isBrushing: true,\n brushingInitializationSite: \"handle-\" + handle,\n initialBrushBeginTime: begin,\n initialBrushEndTime: end,\n initialBrushXYPosition: xy0,\n brushIndex: brushIndex\n });\n }\n },\n {\n key: \"handleMouseUp\",\n value: function handleMouseUp(e) {\n var _this2 = this;\n\n e.preventDefault();\n\n document.removeEventListener(\"mouseover\", this.handleMouseMove);\n document.removeEventListener(\"mouseup\", this.handleMouseUp);\n\n var brushing_is = this.state.brushIndex;\n this.setState(\n {\n isBrushing: false,\n brushingInitializationSite: null,\n initialBrushBeginTime: null,\n initialBrushEndTime: null,\n initialBrushXYPosition: null,\n brushIndex: null\n },\n function() {\n if (_this2.props.onUserMouseUp) {\n _this2.props.onUserMouseUp(brushing_is);\n }\n }\n );\n }\n },\n {\n key: \"handleMouseMove\",\n value: function handleMouseMove(e) {\n e.preventDefault();\n\n var x = e.pageX;\n var y = e.pageY;\n var xy = [Math.round(x), Math.round(y)];\n var viewport = this.viewport();\n\n if (this.state.isBrushing) {\n var newBegin = void 0;\n var newEnd = void 0;\n\n var tb = this.state.initialBrushBeginTime;\n var te = this.state.initialBrushEndTime;\n\n if (this.state.brushingInitializationSite === \"overlay\") {\n var offset = (0, _util.getElementOffset)(this.overlay);\n var xx = e.pageX - offset.left;\n var t = this.props.timeScale.invert(xx).getTime();\n if (t < tb) {\n newBegin = t < viewport.begin().getTime() ? viewport.begin() : t;\n newEnd = tb > viewport.end().getTime() ? viewport.end() : tb;\n } else {\n newBegin = tb < viewport.begin().getTime() ? viewport.begin() : tb;\n newEnd = t > viewport.end().getTime() ? viewport.end() : t;\n }\n } else {\n var xy0 = this.state.initialBrushXYPosition;\n var timeOffset =\n this.props.timeScale.invert(xy0[0]).getTime() -\n this.props.timeScale.invert(xy[0]).getTime();\n\n // Constrain\n var startOffsetConstraint = timeOffset;\n var endOffsetConstrain = timeOffset;\n if (tb - timeOffset < viewport.begin()) {\n startOffsetConstraint = tb - viewport.begin().getTime();\n }\n if (te - timeOffset > viewport.end()) {\n endOffsetConstrain = te - viewport.end().getTime();\n }\n\n newBegin =\n this.state.brushingInitializationSite === \"brush\" ||\n this.state.brushingInitializationSite === \"handle-left\"\n ? parseInt(tb - startOffsetConstraint, 10)\n : tb;\n newEnd =\n this.state.brushingInitializationSite === \"brush\" ||\n this.state.brushingInitializationSite === \"handle-right\"\n ? parseInt(te - endOffsetConstrain, 10)\n : te;\n\n // Swap if needed\n if (newBegin > newEnd) {\n var _ref = [newEnd, newBegin];\n newBegin = _ref[0];\n newEnd = _ref[1];\n }\n }\n\n if (this.props.onTimeRangeChanged) {\n this.props.onTimeRangeChanged(\n new _pondjs.TimeRange(newBegin, newEnd),\n this.state.brushIndex\n );\n }\n }\n }\n\n //\n // Render\n //\n },\n {\n key: \"renderOverlay\",\n value: function renderOverlay() {\n var _this3 = this;\n\n var _props2 = this.props,\n width = _props2.width,\n height = _props2.height;\n\n var cursor = void 0;\n switch (this.state.brushingInitializationSite) {\n case \"handle-right\":\n case \"handle-left\":\n cursor = \"ew-resize\";\n break;\n case \"brush\":\n cursor = \"move\";\n break;\n default:\n cursor =\n this.props.allowFreeDrawing || this.hasNullBrush()\n ? \"crosshair\"\n : \"default\";\n }\n\n var overlayStyle = {\n fill: \"white\",\n opacity: 0,\n cursor: cursor\n };\n return _react2.default.createElement(\"rect\", {\n ref: function ref(c) {\n _this3.overlay = c;\n },\n x: 0,\n y: 0,\n width: width,\n height: height,\n style: overlayStyle,\n onClick: this.handleMouseClick,\n onMouseDown: this.handleOverlayMouseDown,\n onMouseUp: this.handleMouseUp\n });\n }\n },\n {\n key: \"renderBrush\",\n value: function renderBrush(timeRange, idx) {\n var _this4 = this;\n\n var _props3 = this.props,\n timeScale = _props3.timeScale,\n height = _props3.height;\n\n if (!timeRange) {\n return _react2.default.createElement(\"g\", null);\n }\n\n var cursor = void 0;\n switch (this.state.brushingInitializationSite) {\n case \"handle-right\":\n case \"handle-left\":\n cursor = \"ew-resize\";\n break;\n case \"overlay\":\n cursor =\n this.props.allowFreeDrawing || this.hasNullBrush()\n ? \"crosshair\"\n : \"default\";\n break;\n default:\n cursor = \"move\";\n }\n\n // Style of the brush area\n var brushDefaultStyle = {\n fill: \"#777\",\n fillOpacity: 0.3,\n stroke: \"#fff\",\n shapeRendering: \"crispEdges\",\n cursor: cursor\n };\n var userStyle = this.props.style ? this.props.style(idx) : {};\n var brushStyle = (0, _merge2.default)(true, brushDefaultStyle, userStyle);\n\n if (!this.viewport().disjoint(timeRange)) {\n var range = timeRange.intersection(this.viewport());\n var begin = range.begin();\n var end = range.end();\n var _ref2 = [timeScale(begin), 0],\n x = _ref2[0],\n y = _ref2[1];\n\n var endPos = timeScale(end);\n var width = endPos - x;\n if (width < 1) {\n width = 1;\n }\n\n var bounds = { x: x, y: y, width: width, height: height };\n\n return _react2.default.createElement(\n \"rect\",\n _extends({}, bounds, {\n key: idx + \"-\" + brushStyle,\n style: brushStyle,\n pointerEvents: \"all\",\n onClick: function onClick(e) {\n return _this4.handleMouseClick(e, idx);\n },\n onMouseDown: function onMouseDown(e) {\n return _this4.handleBrushMouseDown(e, idx);\n },\n onMouseUp: this.handleMouseUp\n })\n );\n }\n return _react2.default.createElement(\"g\", null);\n }\n },\n {\n key: \"renderHandles\",\n value: function renderHandles(timeRange, idx) {\n var _this5 = this;\n\n var _props4 = this.props,\n timeScale = _props4.timeScale,\n height = _props4.height;\n\n if (!timeRange) {\n return _react2.default.createElement(\"g\", null);\n }\n\n // Style of the handles\n var handleStyle = {\n fill: \"white\",\n opacity: 0,\n cursor: \"ew-resize\"\n };\n\n if (!this.viewport().disjoint(timeRange)) {\n var range = timeRange.intersection(this.viewport());\n\n var _range$toJSON = range.toJSON(),\n _range$toJSON2 = _slicedToArray(_range$toJSON, 2),\n begin = _range$toJSON2[0],\n end = _range$toJSON2[1];\n\n var _ref3 = [timeScale(begin), 0],\n x = _ref3[0],\n y = _ref3[1];\n\n var endPos = timeScale(end);\n\n var width = endPos - x;\n if (width < 1) {\n width = 1;\n }\n\n var handleSize = this.props.handleSize;\n\n var leftHandleBounds = { x: x - 1, y: y, width: handleSize, height: height };\n var rightHandleBounds = {\n x: x + (width - handleSize),\n y: y,\n width: handleSize + 1,\n height: height\n };\n\n return _react2.default.createElement(\n \"g\",\n null,\n _react2.default.createElement(\n \"rect\",\n _extends({}, leftHandleBounds, {\n style: handleStyle,\n pointerEvents: \"all\",\n onMouseDown: function onMouseDown(e) {\n return _this5.handleHandleMouseDown(e, \"left\", idx);\n },\n onMouseUp: this.handleMouseUp\n })\n ),\n _react2.default.createElement(\n \"rect\",\n _extends({}, rightHandleBounds, {\n style: handleStyle,\n pointerEvents: \"all\",\n onMouseDown: function onMouseDown(e) {\n return _this5.handleHandleMouseDown(e, \"right\", idx);\n },\n onMouseUp: this.handleMouseUp\n })\n )\n );\n }\n return _react2.default.createElement(\"g\", null);\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this6 = this;\n\n return _react2.default.createElement(\n \"g\",\n { onMouseMove: this.handleMouseMove },\n this.renderOverlay(),\n (this.props.timeRanges || []).map(function(timeRange, idx) {\n return _react2.default.createElement(\n \"g\",\n { key: \"multibrush_\" + idx },\n _this6.renderBrush(timeRange, idx),\n _this6.renderHandles(timeRange, idx)\n );\n })\n );\n }\n }\n ]);\n\n return MultiBrush;\n})(_react2.default.Component);\n\nexports.default = MultiBrush;\n\nMultiBrush.propTypes = {\n /**\n * The timeranges for the brushes. Typically you would maintain this\n * as state on the surrounding page, since it would likely control\n * another page element, such as the range of the main chart. See\n * also `onTimeRangeChanged()` for receiving notification of the\n * brush range being changed by the user.\n *\n * Takes an array of Pond TimeRange object.\n */\n timeRanges: _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(_pondjs.TimeRange)),\n\n /**\n * The brush is rendered as an SVG rect. You can specify the style\n * of this rect using this prop. The brush style is a function that you\n * provide. It will be called with the index of the TimeRange, corresponding\n * to those in the `timeRanges` prop.\n */\n style: _propTypes2.default.func, //eslint-disable-line\n\n /**\n * The size of the invisible side handles. Defaults to 6 pixels.\n */\n handleSize: _propTypes2.default.number,\n\n /**\n * If this prop is false, you will only be able to draw a new brush if the last position of the timeRanges\n * array is equal to null, otherwise it will allow the free drawing and the index passed to onTimeRangeChanged\n * will the equal to the length of the timeRanges array\n */\n allowFreeDrawing: _propTypes2.default.bool,\n\n /**\n * A callback which will be called if the brush range is changed by\n * the user. It is called with a Pond TimeRange object and the index position of\n * the brush in the timeRanges prop.\n */\n onTimeRangeChanged: _propTypes2.default.func,\n\n /**\n * when user stop drawing or dragging box\n */\n onUserMouseUp: _propTypes2.default.func,\n\n /**\n * When the user clicks one of the TimeRanges\n */\n onTimeRangeClicked: _propTypes2.default.func,\n\n /**\n * [Internal] The timeScale supplied by the surrounding ChartContainer\n */\n timeScale: _propTypes2.default.func,\n\n /**\n * [Internal] The width supplied by the surrounding ChartContainer\n */\n width: _propTypes2.default.number,\n\n /**\n * [Internal] The height supplied by the surrounding ChartContainer\n */\n height: _propTypes2.default.number\n};\n\nMultiBrush.defaultProps = {\n handleSize: 6,\n allowFreeDrawing: true\n};\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/MultiBrush.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/Resizable.js": +/*!**************************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/Resizable.js ***! + \**************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends =\n Object.assign ||\n function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\n \"Super expression must either be null or a function, not \" + typeof superClass\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: { value: subClass, enumerable: false, writable: true, configurable: true }\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n} /**\n * Copyright (c) 2015-present, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * This takes a single child and inserts a prop 'width' on it that is the\n * current width of the this container. This is handy if you want to surround\n * a chart or other svg diagram and have this drive the chart width.\n */\nvar Resizable = (function(_React$Component) {\n _inherits(Resizable, _React$Component);\n\n function Resizable(props) {\n _classCallCheck(this, Resizable);\n\n var _this = _possibleConstructorReturn(\n this,\n (Resizable.__proto__ || Object.getPrototypeOf(Resizable)).call(this, props)\n );\n\n _this.state = { width: 0 };\n return _this;\n }\n\n _createClass(Resizable, [\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n window.addEventListener(\"resize\", function() {\n return _this2.handleResize();\n });\n this.handleResize();\n }\n },\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var _this3 = this;\n\n window.removeEventListener(\"resize\", function() {\n return _this3.handleResize();\n });\n }\n },\n {\n key: \"handleResize\",\n value: function handleResize() {\n if (this.container) {\n this.setState({\n width: this.container.offsetWidth\n });\n }\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var child = _react2.default.Children.only(this.props.children);\n var childElement = this.state.width\n ? _react2.default.cloneElement(child, { width: this.state.width })\n : null;\n return _react2.default.createElement(\n \"div\",\n _extends(\n {\n ref: function ref(c) {\n _this4.container = c;\n }\n },\n this.props\n ),\n childElement\n );\n }\n }\n ]);\n\n return Resizable;\n})(_react2.default.Component);\n\nexports.default = Resizable;\n\nResizable.propTypes = {\n children: _propTypes2.default.node\n};\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/Resizable.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/ScatterChart.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/ScatterChart.js ***! + \*****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends =\n Object.assign ||\n function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n\nvar _slicedToArray = (function() {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n return function(arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n})();\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _merge = __webpack_require__(/*! merge */ \"./node_modules/merge/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDom = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _pondjs = __webpack_require__(/*! pondjs */ \"./node_modules/pondjs/lib/entry.js\");\n\nvar _EventMarker = __webpack_require__(/*! ./EventMarker */ \"./node_modules/react-timeseries-charts/lib/components/EventMarker.js\");\n\nvar _EventMarker2 = _interopRequireDefault(_EventMarker);\n\nvar _util = __webpack_require__(/*! ../js/util */ \"./node_modules/react-timeseries-charts/lib/js/util.js\");\n\nvar _styler = __webpack_require__(/*! ../js/styler */ \"./node_modules/react-timeseries-charts/lib/js/styler.js\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\n \"Super expression must either be null or a function, not \" + typeof superClass\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: { value: subClass, enumerable: false, writable: true, configurable: true }\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n} /**\n * Copyright (c) 2015-present, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// eslint-disable-line\n\nvar defaultStyle = {\n normal: { fill: \"steelblue\", opacity: 0.8 },\n highlighted: { fill: \"steelblue\", opacity: 1.0 },\n selected: { fill: \"steelblue\", opacity: 1.0 },\n muted: { fill: \"steelblue\", opacity: 0.4 }\n};\n\n/**\n * The `` widget is able to display multiple columns of a series\n * scattered across a time axis.\n *\n * The ScatterChart should be used within `` etc.,\n * as this will construct the horizontal and vertical axis, and\n * manage other elements. As with other charts, this lets them be stacked or\n * overlaid on top of each other.\n *\n * A custom info overlay lets you hover over the data and examine points. Points\n * can be selected or highlighted.\n *\n * ```\n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n *\n * ### Styling\n *\n * A scatter chart supports per-column or per-event styling. Styles can be set for\n * each of the four states that are possible for each event: normal, highlighted,\n * selected or muted. To style per-column, supply an object. For per-event styling\n * supply a function: `(event, column) => {}` The functon will return a style object.\n * See the `style` prop in the API documentation for more information.\n *\n * Separately the size of the dots can be controlled with the `radius` prop. This\n * can either be a fixed value (e.g. 2.0), or a function. If a function is supplied\n * it will be called as `(event, column) => {}` and should return the size.\n *\n * The hover info for each point is also able to be styled using the info style.\n * This enables you to control the drawing of the box and connecting lines. Using\n * the `infoWidth` and `infoHeight` props you can control the size of the box, which\n * is fixed.\n */\n\nvar ScatterChart = (function(_React$Component) {\n _inherits(ScatterChart, _React$Component);\n\n function ScatterChart(props) {\n _classCallCheck(this, ScatterChart);\n\n var _this = _possibleConstructorReturn(\n this,\n (ScatterChart.__proto__ || Object.getPrototypeOf(ScatterChart)).call(this, props)\n );\n\n _this.handleHover = _this.handleHover.bind(_this);\n _this.handleHoverLeave = _this.handleHoverLeave.bind(_this);\n return _this;\n }\n\n // get the event mouse position relative to the event rect\n\n _createClass(ScatterChart, [\n {\n key: \"getOffsetMousePosition\",\n value: function getOffsetMousePosition(e) {\n var offset = (0, _util.getElementOffset)(this.eventrect);\n var x = e.pageX - offset.left;\n var y = e.pageY - offset.top;\n return [Math.round(x), Math.round(y)];\n }\n\n //\n // Event handlers\n //\n },\n {\n key: \"handleClick\",\n value: function handleClick(e, event, column) {\n var point = { event: event, column: column };\n if (this.props.onSelectionChange) {\n this.props.onSelectionChange(point);\n }\n }\n },\n {\n key: \"handleHover\",\n value: function handleHover(e) {\n var _getOffsetMousePositi = this.getOffsetMousePosition(e),\n _getOffsetMousePositi2 = _slicedToArray(_getOffsetMousePositi, 2),\n x = _getOffsetMousePositi2[0],\n y = _getOffsetMousePositi2[1];\n\n var point = void 0;\n var minDistance = Infinity;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (\n var _iterator = this.props.columns[Symbol.iterator](), _step;\n !(_iteratorNormalCompletion = (_step = _iterator.next()).done);\n _iteratorNormalCompletion = true\n ) {\n var column = _step.value;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (\n var _iterator2 = this.props.series.events()[Symbol.iterator](),\n _step2;\n !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done);\n _iteratorNormalCompletion2 = true\n ) {\n var event = _step2.value;\n\n var t = event.timestamp();\n var value = event.get(column);\n var px = this.props.timeScale(t);\n var py = this.props.yScale(value);\n var distance = Math.sqrt((px - x) * (px - x) + (py - y) * (py - y));\n if (distance < minDistance) {\n point = { event: event, column: column };\n minDistance = distance;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (this.props.onMouseNear) {\n this.props.onMouseNear(point);\n }\n }\n },\n {\n key: \"handleHoverLeave\",\n value: function handleHoverLeave() {\n if (this.props.onMouseNear) {\n this.props.onMouseNear(null);\n }\n }\n\n //\n // Internal methods\n //\n },\n {\n key: \"providedStyleMap\",\n value: function providedStyleMap(column, event) {\n var style = {};\n if (this.props.style) {\n if (this.props.style instanceof _styler.Styler) {\n style = this.props.style.scatterChartStyle()[column];\n } else if (_underscore2.default.isFunction(this.props.style)) {\n style = this.props.style(column, event);\n } else if (_underscore2.default.isObject(this.props.style)) {\n style = this.props.style ? this.props.style[column] : defaultStyle;\n }\n }\n return style;\n }\n\n /**\n * Returns the style used for drawing the path\n */\n },\n {\n key: \"style\",\n value: function style(column, event) {\n var style = void 0;\n\n var styleMap = this.providedStyleMap(column, event);\n\n var isHighlighted =\n this.props.highlight &&\n column === this.props.highlight.column &&\n _pondjs.Event.is(this.props.highlight.event, event);\n var isSelected =\n this.props.selected &&\n column === this.props.selected.column &&\n _pondjs.Event.is(this.props.selected.event, event);\n\n if (this.props.selected) {\n if (isSelected) {\n style = (0, _merge2.default)(\n true,\n defaultStyle.selected,\n styleMap.selected ? styleMap.selected : {}\n );\n } else if (isHighlighted) {\n style = (0, _merge2.default)(\n true,\n defaultStyle.highlighted,\n styleMap.highlighted ? styleMap.highlighted : {}\n );\n } else {\n style = (0, _merge2.default)(\n true,\n defaultStyle.muted,\n styleMap.muted ? styleMap.muted : {}\n );\n }\n } else if (isHighlighted) {\n style = (0, _merge2.default)(\n true,\n defaultStyle.highlighted,\n styleMap.highlighted ? styleMap.highlighted : {}\n );\n } else {\n style = (0, _merge2.default)(\n true,\n defaultStyle.normal,\n styleMap.normal ? styleMap.normal : {}\n );\n }\n\n return style;\n }\n\n //\n // Render\n //\n },\n {\n key: \"renderScatter\",\n value: function renderScatter() {\n var _this2 = this;\n\n var _props = this.props,\n series = _props.series,\n timeScale = _props.timeScale,\n yScale = _props.yScale;\n\n var points = [];\n var hoverOverlay = void 0;\n\n // if selectionChange is enabled, pointerEvents should be enabled as well\n var pointerEvents = this.props.onSelectionChange ? \"auto\" : \"none\";\n\n this.props.columns.forEach(function(column) {\n var key = 1;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n var _loop = function _loop() {\n var event = _step3.value;\n\n var t = new Date(\n event.begin().getTime() +\n (event.end().getTime() - event.begin().getTime()) / 2\n );\n var value = event.get(column);\n var badPoint =\n _underscore2.default.isNull(value) ||\n _underscore2.default.isNaN(value);\n var style = _this2.style(column, event);\n\n if (!badPoint) {\n var x = timeScale(t);\n var y = yScale(value);\n\n var radius = _underscore2.default.isFunction(_this2.props.radius)\n ? _this2.props.radius(event, column)\n : +_this2.props.radius;\n\n var isHighlighted =\n _this2.props.highlight &&\n _pondjs.Event.is(_this2.props.highlight.event, event) &&\n column === _this2.props.highlight.column;\n\n // Hover info. Note that we just pass all of our props down\n // into the EventMarker here, but the interesting ones are:\n // * the info values themselves\n // * the infoStyle\n // * infoWidth and infoHeight\n if (isHighlighted && _this2.props.info) {\n hoverOverlay = _react2.default.createElement(\n _EventMarker2.default,\n _extends({}, _this2.props, {\n event: event,\n column: column,\n marker: \"circle\",\n markerRadius: 0\n })\n );\n }\n\n points.push(\n _react2.default.createElement(\"circle\", {\n key: column + \"-\" + key,\n cx: x,\n cy: y,\n r: radius,\n style: style,\n pointerEvents: pointerEvents,\n onMouseMove: _this2.handleHover,\n onClick: function onClick(e) {\n return _this2.handleClick(e, event, column);\n }\n })\n );\n\n key += 1;\n }\n };\n\n for (\n var _iterator3 = series.events()[Symbol.iterator](), _step3;\n !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done);\n _iteratorNormalCompletion3 = true\n ) {\n _loop();\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n });\n\n return _react2.default.createElement(\"g\", null, points, hoverOverlay);\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n return _react2.default.createElement(\n \"g\",\n null,\n _react2.default.createElement(\"rect\", {\n key: \"scatter-hit-rect\",\n ref: function ref(c) {\n _this3.eventrect = c;\n },\n style: { opacity: 0.0 },\n x: 0,\n y: 0,\n width: this.props.width,\n height: this.props.height,\n onMouseMove: this.handleHover,\n onMouseLeave: this.handleHoverLeave\n }),\n this.renderScatter()\n );\n }\n }\n ]);\n\n return ScatterChart;\n})(_react2.default.Component);\n\nexports.default = ScatterChart;\n\nScatterChart.propTypes = {\n /**\n * Show or hide this chart\n */\n visible: _propTypes2.default.bool,\n\n /**\n * What [Pond TimeSeries](https://esnet-pondjs.appspot.com/#/timeseries) data to visualize\n */\n series: _propTypes2.default.instanceOf(_pondjs.TimeSeries).isRequired,\n\n /**\n * Which columns of the series to render\n */\n columns: _propTypes2.default.arrayOf(_propTypes2.default.string),\n\n /**\n * Reference to the axis which provides the vertical scale for drawing. e.g.\n * specifying axis=\"trafficRate\" would refer the y-scale to the YAxis of id=\"trafficRate\".\n */\n axis: _propTypes2.default.string.isRequired, // eslint-disable-line\n\n /**\n * The radius of the points in the scatter chart.\n *\n * If this is a number it will be used as the radius for every point.\n * If this is a function it will be called for each event.\n *\n * The function is called with the event and the column name and must return a number.\n *\n * For example this function will use the radius column of the event:\n *\n * ```\n * const radius = (event, column) => {\n * return event.get(\"radius\");\n * }\n * ```\n */\n radius: _propTypes2.default.oneOfType([\n _propTypes2.default.number,\n _propTypes2.default.func,\n _propTypes2.default.instanceOf(_styler.Styler)\n ]),\n\n /**\n * The style of the scatter chart drawing (using SVG CSS properties).\n * This is an object with a key for each column which is being plotted,\n * per the `columns` prop. Each of those keys has an object as its\n * value which has keys which are style properties for an SVG and\n * the value to use.\n *\n * For example:\n * ```\n * style = {\n * columnName: {\n * normal: {\n * fill: \"steelblue\",\n * opacity: 0.8,\n * },\n * highlighted: {\n * fill: \"#a7c4dd\",\n * opacity: 1.0,\n * },\n * selected: {\n * fill: \"orange\",\n * opacity: 1.0,\n * },\n * muted: {\n * fill: \"grey\",\n * opacity: 0.5\n * }\n * }\n * }\n * ```\n *\n * You can also supply a function, which will be called with an event\n * and column. The function should return an object containing the\n * 4 states (normal, highlighted, selected and muted) and the corresponding\n * CSS properties.\n */\n style: _propTypes2.default.oneOfType([_propTypes2.default.object, _propTypes2.default.func]),\n\n /**\n * The style of the info box and connecting lines. The style should\n * be an object of the form { line, box }. Line and box are both objects\n * containing the inline CSS for those elements of the info tracker.\n */\n infoStyle: _propTypes2.default.shape({\n line: _propTypes2.default.object, // eslint-disable-line\n box: _propTypes2.default.object // eslint-disable-line\n }),\n\n /**\n * The width of the hover info box\n */\n infoWidth: _propTypes2.default.number, // eslint-disable-line\n\n /**\n * The height of the hover info box\n */\n infoHeight: _propTypes2.default.number, // eslint-disable-line\n\n /**\n * The values to show in the info box. This is an array of\n * objects, with each object specifying the label and value\n * to be shown in the info box.\n */\n info: _propTypes2.default.arrayOf(\n _propTypes2.default.shape({\n label: _propTypes2.default.string, // eslint-disable-line\n value: _propTypes2.default.string // eslint-disable-line\n })\n ),\n\n /**\n * The selected dot, which will be rendered in the \"selected\" style.\n * If a dot is selected, all other dots will be rendered in the \"muted\" style.\n *\n * See also `onSelectionChange`\n */\n selected: _propTypes2.default.arrayOf(\n _propTypes2.default.shape({\n event: _propTypes2.default.instanceOf(_pondjs.Event),\n column: _propTypes2.default.string\n })\n ),\n\n /**\n * A callback that will be called when the selection changes. It will be called\n * with an object containing the event and column.\n */\n onSelectionChange: _propTypes2.default.func,\n\n /**\n * The highlighted dot, as an object containing the { event, column },\n * which will be rendered in the \"highlighted\" style.\n *\n * See also the prop `onMouseNear`.\n */\n highlight: _propTypes2.default.shape({\n event: _propTypes2.default.instanceOf(_pondjs.Event),\n column: _propTypes2.default.string\n }),\n\n /**\n * Will be called with the nearest point to the cursor. The callback\n * will contain the point, which is a map of { event, column }.\n */\n onMouseNear: _propTypes2.default.func,\n\n /**\n * [Internal] The timeScale supplied by the surrounding ChartContainer\n */\n timeScale: _propTypes2.default.func,\n\n /**\n * [Internal] The yScale supplied by the associated YAxis\n */\n yScale: _propTypes2.default.func,\n\n /**\n * [Internal] The width supplied by the surrounding ChartContainer\n */\n width: _propTypes2.default.number,\n\n /**\n * [Internal] The height supplied by the surrounding ChartContainer\n */\n height: _propTypes2.default.number\n};\n\nScatterChart.defaultProps = {\n visible: true,\n columns: [\"value\"],\n radius: 2.0,\n infoStyle: {\n stroke: \"#999\",\n fill: \"white\",\n opacity: 0.9,\n pointerEvents: \"none\"\n },\n stemStyle: {\n stroke: \"#999\",\n cursor: \"crosshair\",\n pointerEvents: \"none\"\n },\n markerStyle: {\n fill: \"#999\"\n },\n infoWidth: 90,\n infoHeight: 30\n};\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/ScatterChart.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/TimeAxis.js": +/*!*************************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/TimeAxis.js ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _merge = __webpack_require__(/*! merge */ \"./node_modules/merge/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _moment = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _d3Axis = __webpack_require__(/*! d3-axis */ \"./node_modules/d3-axis/index.js\");\n\nvar _d3Selection = __webpack_require__(/*! d3-selection */ \"./node_modules/d3-selection/index.js\");\n\nvar _d3Time = __webpack_require__(/*! d3-time */ \"./node_modules/d3-time/index.js\");\n\nvar _d3TimeFormat = __webpack_require__(/*! d3-time-format */ \"./node_modules/d3-time-format/index.js\");\n\n__webpack_require__(/*! moment-duration-format */ \"./node_modules/moment-duration-format/lib/moment-duration-format.js\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\n \"Super expression must either be null or a function, not \" + typeof superClass\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: { value: subClass, enumerable: false, writable: true, configurable: true }\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n} /**\n * Copyright (c) 2015-present, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// eslint-disable-line\n\nfunction scaleAsString(scale) {\n return scale.domain().toString() + \"-\" + scale.range().toString();\n}\n\nvar defaultStyle = {\n labels: {\n labelColor: \"#8B7E7E\", // Default label color\n labelWeight: 100,\n labelSize: 11\n },\n axis: {\n axisColor: \"#C0C0C0\"\n }\n};\n\n/**\n * Renders a horizontal time axis. This is used internally by the ChartContainer\n * as a result of you specifying the timerange for the chart. Please see the API\n * docs for ChartContainer for more information.\n */\n\nvar TimeAxis = (function(_React$Component) {\n _inherits(TimeAxis, _React$Component);\n\n function TimeAxis() {\n _classCallCheck(this, TimeAxis);\n\n return _possibleConstructorReturn(\n this,\n (TimeAxis.__proto__ || Object.getPrototypeOf(TimeAxis)).apply(this, arguments)\n );\n }\n\n _createClass(TimeAxis, [\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.renderTimeAxis(this.props.scale, this.props.format);\n }\n },\n {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n var scale = nextProps.scale,\n utc = nextProps.utc,\n format = nextProps.format;\n\n if (\n scaleAsString(this.props.scale) !== scaleAsString(scale) ||\n this.props.utc !== utc\n ) {\n this.renderTimeAxis(scale, format);\n }\n }\n\n // Force the component not to update because d3 will control the\n // DOM from this point down.\n },\n {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate() {\n // eslint-disable-line\n return false;\n }\n },\n {\n key: \"renderTimeAxis\",\n value: function renderTimeAxis(scale, format) {\n var axis = void 0;\n\n var tickSize = this.props.showGrid ? -this.props.gridHeight : 10;\n var utc = this.props.utc;\n var tickCount = this.props.tickCount;\n\n if (tickCount > 0) {\n if (format === \"day\") {\n axis = (0, _d3Axis.axisBottom)(scale)\n .tickArguments([utc ? _d3Time.utcDay : _d3Time.timeDay, 1, tickCount])\n .tickFormat((0, _d3TimeFormat.timeFormat)(\"%d\"))\n .tickSizeOuter(0);\n } else if (format === \"month\") {\n axis = (0, _d3Axis.axisBottom)(scale)\n .tickArguments([\n utc ? _d3Time.utcMonth : _d3Time.timeMonth,\n 1,\n tickCount\n ])\n .tickFormat((0, _d3TimeFormat.timeFormat)(\"%B\"))\n .tickSizeOuter(0);\n } else if (format === \"year\") {\n axis = (0, _d3Axis.axisBottom)(scale)\n .tickArguments([utc ? _d3Time.utcYear : _d3Time.timeYear, 1, tickCount])\n .tickFormat((0, _d3TimeFormat.timeFormat)(\"%Y\"))\n .tickSizeOuter(0);\n } else if (format === \"relative\") {\n axis = (0, _d3Axis.axisBottom)(scale)\n .ticks(tickCount)\n .tickFormat(function(d) {\n return _moment2.default.duration(+d).format();\n })\n .tickSizeOuter(0);\n } else if (_underscore2.default.isString(format)) {\n axis = (0, _d3Axis.axisBottom)(scale)\n .ticks(tickCount)\n .tickFormat((0, _d3TimeFormat.timeFormat)(format))\n .tickSizeOuter(0);\n } else if (_underscore2.default.isFunction(format)) {\n axis = (0, _d3Axis.axisBottom)(scale)\n .ticks(tickCount)\n .tickFormat(format)\n .tickSizeOuter(0);\n } else {\n axis = (0, _d3Axis.axisBottom)(scale)\n .ticks(tickCount)\n .tickSize(0);\n }\n } else {\n if (format === \"day\") {\n axis = (0, _d3Axis.axisBottom)(scale)\n .tickArguments([utc ? _d3Time.utcDay : _d3Time.timeDay, 1])\n .tickFormat((0, _d3TimeFormat.timeFormat)(\"%d\"))\n .tickSizeOuter(0);\n } else if (format === \"month\") {\n axis = (0, _d3Axis.axisBottom)(scale)\n .tickArguments([utc ? _d3Time.utcMonth : _d3Time.timeMonth, 1])\n .tickFormat((0, _d3TimeFormat.timeFormat)(\"%B\"))\n .tickSizeOuter(0);\n } else if (format === \"year\") {\n axis = (0, _d3Axis.axisBottom)(scale)\n .tickArguments([utc ? _d3Time.utcYear : _d3Time.timeYear, 1])\n .tickFormat((0, _d3TimeFormat.timeFormat)(\"%Y\"))\n .tickSizeOuter(0);\n } else if (format === \"relative\") {\n axis = (0, _d3Axis.axisBottom)(scale)\n .tickFormat(function(d) {\n return _moment2.default.duration(+d).format();\n })\n .tickSizeOuter(0);\n } else if (_underscore2.default.isString(format)) {\n axis = (0, _d3Axis.axisBottom)(scale)\n .tickFormat((0, _d3TimeFormat.timeFormat)(format))\n .tickSizeOuter(0);\n } else if (_underscore2.default.isFunction(format)) {\n axis = (0, _d3Axis.axisBottom)(scale)\n .tickFormat(format)\n .tickSizeOuter(0);\n } else {\n axis = (0, _d3Axis.axisBottom)(scale).tickSize(0);\n }\n }\n\n // Style\n\n var labelStyle = (0, _merge2.default)(\n true,\n defaultStyle.labels,\n this.props.style.labels ? this.props.style.labels : {}\n );\n var axisStyle = (0, _merge2.default)(\n true,\n defaultStyle.axis,\n this.props.style.axis ? this.props.style.axis : {}\n );\n var axisColor = axisStyle.axisColor;\n var labelColor = labelStyle.labelColor,\n labelWeight = labelStyle.labelWeight,\n labelSize = labelStyle.labelSize;\n\n // Remove the old axis from under this DOM node\n\n (0, _d3Selection.select)(_reactDom2.default.findDOMNode(this))\n .selectAll(\"*\")\n .remove(); // eslint-disable-line\n //\n // Draw the new axis\n //\n (0, _d3Selection.select)(_reactDom2.default.findDOMNode(this)) // eslint-disable-line\n .append(\"g\")\n .attr(\"class\", \"x axis\")\n .style(\"stroke\", \"none\")\n .style(\"fill\", labelColor)\n .style(\"font-weight\", labelWeight)\n .style(\"font-size\", labelSize)\n .call(axis.tickSize(tickSize));\n (0, _d3Selection.select)(_reactDom2.default.findDOMNode(this)) // eslint-disable-line\n .select(\"g\")\n .selectAll(\".tick\")\n .select(\"text\")\n .style(\"fill\", labelColor)\n .style(\"stroke\", \"none\");\n (0, _d3Selection.select)(_reactDom2.default.findDOMNode(this)) // eslint-disable-line\n .select(\"g\")\n .selectAll(\".tick\")\n .select(\"line\")\n .style(\"stroke\", axisColor);\n (0, _d3Selection.select)(_reactDom2.default.findDOMNode(this))\n .select(\"g\")\n .select(\"path\")\n .remove(); // eslint-disable-line\n }\n },\n {\n key: \"render\",\n value: function render() {\n // eslint-disable-line\n return _react2.default.createElement(\"g\", null);\n }\n }\n ]);\n\n return TimeAxis;\n})(_react2.default.Component);\n\nexports.default = TimeAxis;\n\nTimeAxis.defaultProps = {\n showGrid: false,\n style: defaultStyle\n};\n\nTimeAxis.propTypes = {\n scale: _propTypes2.default.func.isRequired,\n showGrid: _propTypes2.default.bool,\n gridHeight: _propTypes2.default.number,\n format: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func]),\n utc: _propTypes2.default.bool,\n style: _propTypes2.default.shape({\n labels: _propTypes2.default.object, // eslint-disable-line\n axis: _propTypes2.default.object // eslint-disable-line\n }),\n tickCount: _propTypes2.default.number\n};\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/TimeAxis.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/TimeMarker.js": +/*!***************************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/TimeMarker.js ***! + \***************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends =\n Object.assign ||\n function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _moment = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _d3TimeFormat = __webpack_require__(/*! d3-time-format */ \"./node_modules/d3-time-format/index.js\");\n\n__webpack_require__(/*! moment-duration-format */ \"./node_modules/moment-duration-format/lib/moment-duration-format.js\");\n\nvar _ValueList = __webpack_require__(/*! ./ValueList */ \"./node_modules/react-timeseries-charts/lib/components/ValueList.js\");\n\nvar _ValueList2 = _interopRequireDefault(_ValueList);\n\nvar _Label = __webpack_require__(/*! ./Label */ \"./node_modules/react-timeseries-charts/lib/components/Label.js\");\n\nvar _Label2 = _interopRequireDefault(_Label);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\n \"Super expression must either be null or a function, not \" + typeof superClass\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: { value: subClass, enumerable: false, writable: true, configurable: true }\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n} /**\n * Copyright (c) 2015-present, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar TimeMarker = (function(_React$Component) {\n _inherits(TimeMarker, _React$Component);\n\n function TimeMarker() {\n _classCallCheck(this, TimeMarker);\n\n return _possibleConstructorReturn(\n this,\n (TimeMarker.__proto__ || Object.getPrototypeOf(TimeMarker)).apply(this, arguments)\n );\n }\n\n _createClass(TimeMarker, [\n {\n key: \"renderLine\",\n value: function renderLine(posx) {\n return _react2.default.createElement(\"line\", {\n style: this.props.infoStyle.line,\n x1: posx,\n y1: 0,\n x2: posx,\n y2: this.props.height\n });\n }\n },\n {\n key: \"renderTimeMarker\",\n value: function renderTimeMarker(d) {\n var textStyle = {\n fontSize: 11,\n textAnchor: \"left\",\n fill: \"#bdbdbd\"\n };\n\n var dateStr = \"\" + d;\n if (this.props.timeFormat === \"day\") {\n var formatter = (0, _d3TimeFormat.timeFormat)(\"%d\");\n dateStr = formatter(d);\n } else if (this.props.timeFormat === \"month\") {\n var _formatter = (0, _d3TimeFormat.timeFormat)(\"%B\");\n dateStr = _formatter(d);\n } else if (this.props.timeFormat === \"year\") {\n var _formatter2 = (0, _d3TimeFormat.timeFormat)(\"%Y\");\n dateStr = _formatter2(d);\n } else if (this.props.timeFormat === \"relative\") {\n dateStr = _moment2.default.duration(+d).format();\n } else if (_underscore2.default.isString(this.props.timeFormat)) {\n var _formatter3 = (0, _d3TimeFormat.timeFormat)(this.props.timeFormat);\n dateStr = _formatter3(d);\n } else if (_underscore2.default.isFunction(this.props.timeFormat)) {\n dateStr = this.props.timeFormat(d);\n }\n\n return _react2.default.createElement(\n \"text\",\n { x: 0, y: 0, dy: \"1.2em\", style: textStyle },\n dateStr\n );\n }\n },\n {\n key: \"renderInfoBox\",\n value: function renderInfoBox(posx) {\n var w = this.props.infoWidth;\n\n var infoBoxProps = {\n align: \"left\",\n style: this.props.infoStyle.box,\n width: this.props.infoWidth,\n height: this.props.infoHeight\n };\n\n if (this.props.infoValues) {\n var infoBox = _underscore2.default.isString(this.props.infoValues)\n ? _react2.default.createElement(\n _Label2.default,\n _extends({}, infoBoxProps, { label: this.props.infoValues })\n )\n : _react2.default.createElement(\n _ValueList2.default,\n _extends({}, infoBoxProps, { values: this.props.infoValues })\n );\n\n if (posx + 10 + w < this.props.width - 50) {\n return _react2.default.createElement(\n \"g\",\n { transform: \"translate(\" + (posx + 10) + \",\" + 5 + \")\" },\n this.props.showTime ? this.renderTimeMarker(this.props.time) : null,\n _react2.default.createElement(\n \"g\",\n {\n transform: \"translate(0,\" + (this.props.showTime ? 20 : 0) + \")\"\n },\n infoBox\n )\n );\n }\n return _react2.default.createElement(\n \"g\",\n { transform: \"translate(\" + (posx - w - 10) + \",\" + 5 + \")\" },\n this.props.showTime ? this.renderTimeMarker(this.props.time) : null,\n _react2.default.createElement(\n \"g\",\n { transform: \"translate(0,\" + (this.props.showTime ? 20 : 0) + \")\" },\n infoBox\n )\n );\n }\n return _react2.default.createElement(\"g\", null);\n }\n },\n {\n key: \"render\",\n value: function render() {\n var posx = this.props.timeScale(this.props.time);\n if (posx) {\n return _react2.default.createElement(\n \"g\",\n null,\n this.props.showLine ? this.renderLine(posx) : null,\n this.props.showInfoBox ? this.renderInfoBox(posx) : null\n );\n }\n return null;\n }\n }\n ]);\n\n return TimeMarker;\n})(_react2.default.Component);\n\nexports.default = TimeMarker;\n\nTimeMarker.propTypes = {\n /**\n * Show or hide this chart\n */\n visible: _propTypes2.default.bool,\n\n /**\n * The time, expressed as a Javascript `Date` object, to display the marker\n */\n time: _propTypes2.default.instanceOf(Date),\n\n /**\n * The values to show in the info box. This is either an array of\n * objects, with each object specifying the label and value\n * to be shown in the info box, or a simple string label\n */\n infoValues: _propTypes2.default.oneOfType([\n _propTypes2.default.string,\n _propTypes2.default.arrayOf(\n _propTypes2.default.shape({\n label: _propTypes2.default.string, // eslint-disable-line\n value: _propTypes2.default.string // eslint-disable-line\n })\n )\n ]),\n\n /**\n * The style of the info box and connecting lines. This is an\n * object of the form { line, box, dot }. Line, box and dot\n * are themselves objects representing inline CSS for each of\n * the pieces of the info marker.\n */\n infoStyle: _propTypes2.default.shape({\n line: _propTypes2.default.object, // eslint-disable-line\n box: _propTypes2.default.object, // eslint-disable-line\n dot: _propTypes2.default.object // eslint-disable-line\n }),\n\n /**\n * The width of the hover info box\n */\n infoWidth: _propTypes2.default.number,\n\n /**\n * The height of the hover info box\n */\n infoHeight: _propTypes2.default.number,\n\n /**\n * Display the info box at all. If you don't have any values to show and just\n * want a line and a time (for example), you can set this to false.\n */\n showInfoBox: _propTypes2.default.bool,\n\n /**\n * You can show the info box without the corresponding time marker. Why would\n * you do this? I don't know. Actually, I do. You might use the ChartContainer\n * tracker mechanism to show the line across multiple rows, then add a TimeMarker\n * selectively to each row.\n */\n showLine: _propTypes2.default.bool,\n\n /**\n * You can hide the time displayed above the info box. You might do this because\n * it is already displayed elsewhere in your UI. Or maybe you just don't like it.\n */\n showTime: _propTypes2.default.bool,\n\n /**\n * The time format used for display of the time above the info box.\n */\n timeFormat: _propTypes2.default.oneOfType([\n _propTypes2.default.string,\n _propTypes2.default.func\n ]),\n\n /**\n * [Internal] The timeScale supplied by the surrounding ChartContainer\n */\n timeScale: _propTypes2.default.func,\n\n /**\n * [Internal] The width supplied by the surrounding ChartContainer\n */\n width: _propTypes2.default.number,\n\n /**\n * [Internal] The height supplied by the surrounding ChartContainer\n */\n height: _propTypes2.default.number\n};\n\nTimeMarker.defaultProps = {\n visible: true,\n showInfoBox: true,\n showLine: true,\n showTime: true,\n infoStyle: {\n line: {\n stroke: \"#999\",\n cursor: \"crosshair\",\n pointerEvents: \"none\"\n },\n box: {\n fill: \"white\",\n opacity: 0.9,\n stroke: \"#999\",\n pointerEvents: \"none\"\n },\n dot: {\n fill: \"#999\"\n }\n },\n infoWidth: 90,\n infoHeight: 25\n};\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/TimeMarker.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/TimeRangeMarker.js": +/*!********************************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/TimeRangeMarker.js ***! + \********************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _pondjs = __webpack_require__(/*! pondjs */ \"./node_modules/pondjs/lib/entry.js\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\n \"Super expression must either be null or a function, not \" + typeof superClass\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: { value: subClass, enumerable: false, writable: true, configurable: true }\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n} /**\n * Copyright (c) 2015-present, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Renders a band with extents defined by the supplied TimeRange. This\n * is a super simple component right now which just renders a simple\n * rectangle, in the style of the prop `style` across the timerange\n * specified. However, this is useful for highlighting a timerange to\n * correspond with another part of the your UI.\n *\n * See also the Brush component for a TimeRange marker that you can\n * resize interactively.\n */\nvar TimeRangeMarker = (function(_React$Component) {\n _inherits(TimeRangeMarker, _React$Component);\n\n function TimeRangeMarker() {\n _classCallCheck(this, TimeRangeMarker);\n\n return _possibleConstructorReturn(\n this,\n (TimeRangeMarker.__proto__ || Object.getPrototypeOf(TimeRangeMarker)).apply(\n this,\n arguments\n )\n );\n }\n\n _createClass(TimeRangeMarker, [\n {\n key: \"renderBand\",\n value: function renderBand() {\n var timerange = this.props.timerange;\n var timeScale = this.props.timeScale;\n\n // Viewport bounds\n var viewBeginTime = timeScale.invert(0);\n var viewEndTime = timeScale.invert(this.props.width);\n var viewport = new _pondjs.TimeRange(viewBeginTime, viewEndTime);\n\n var bandStyle = void 0;\n if (this.props.style) {\n bandStyle = this.props.style;\n } else {\n bandStyle = { fill: \"steelblue\" };\n }\n\n if (!viewport.disjoint(timerange)) {\n var range = timerange.intersection(viewport);\n var begin = range.begin();\n var end = range.end();\n var beginPos = timeScale(begin);\n var endPos = timeScale(end);\n var width = endPos - beginPos;\n if (width < 1) {\n width = 1;\n }\n return _react2.default.createElement(\"rect\", {\n x: beginPos,\n y: 0,\n width: width,\n height: this.props.height,\n style: bandStyle\n });\n }\n return _react2.default.createElement(\"g\", null);\n }\n },\n {\n key: \"render\",\n value: function render() {\n return _react2.default.createElement(\"g\", null, this.renderBand());\n }\n }\n ]);\n\n return TimeRangeMarker;\n})(_react2.default.Component);\n\nexports.default = TimeRangeMarker;\n\nTimeRangeMarker.propTypes = {\n /**\n * Show or hide this marker\n */\n visible: _propTypes2.default.bool,\n\n /**\n * The timerange to mark. This is in the form of a\n * [Pond TimeRange](https://esnet-pondjs.appspot.com/#/timerange)\n */\n timerange: _propTypes2.default.instanceOf(_pondjs.TimeRange).isRequired,\n\n /**\n * The style of the rect that will be rendered as a SVG . This\n * object is the inline CSS for that rect.\n */\n style: _propTypes2.default.object, // eslint-disable-line\n\n /**\n * [Internal] The timeScale supplied by the surrounding ChartContainer\n */\n timeScale: _propTypes2.default.func.isRequired,\n\n /**\n * [Internal] The width supplied by the surrounding ChartContainer\n */\n width: _propTypes2.default.number.isRequired,\n\n /**\n * [Internal] The height supplied by the surrounding ChartContainer\n */\n height: _propTypes2.default.number.isRequired\n};\n\nTimeRangeMarker.defaultProps = {\n visible: true,\n spacing: 1,\n offset: 0,\n style: { fill: \"rgba(70, 130, 180, 0.25);\" }\n};\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/TimeRangeMarker.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/ValueAxis.js": +/*!**************************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/ValueAxis.js ***! + \**************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\n/**\n * Renders a 'axis' that display a label for a current tracker value:\n * ```\n * ----+----------------+\n * | 56.2G |\n * | bps |\n * | |\n * ----+----------------+\n * ```\n * This would be used when you have many rows of data and the user is required\n * to interact with the data to see actual values. You would use this at the\n * end of the row and supply it with the current value. See the cycling example\n * for how that would all work.\n */\n/**\n * Copyright (c) 2015-present, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ValueAxis = function ValueAxis(_ref) {\n var width = _ref.width,\n height = _ref.height,\n value = _ref.value,\n detail = _ref.detail;\n\n var labelStyle = {\n fill: \"#666\",\n fontSize: 20,\n textAnchor: \"middle\"\n };\n var detailStyle = {\n fontSize: 12,\n textAnchor: \"middle\",\n fill: \"#9a9a9a\"\n };\n return _react2.default.createElement(\n \"g\",\n null,\n _react2.default.createElement(\"rect\", {\n key: \"background\",\n x: \"0\",\n y: \"0\",\n width: width,\n height: height,\n style: { fill: \"none\", stroke: \"none\" }\n }),\n _react2.default.createElement(\n \"text\",\n { key: \"value\", x: parseInt(width / 2, 10), y: height / 2, style: labelStyle },\n value\n ),\n _react2.default.createElement(\n \"text\",\n {\n key: \"detail\",\n x: parseInt(width / 2, 10),\n y: height / 2,\n dy: \"1.2em\",\n style: detailStyle\n },\n detail\n )\n );\n};\n\nValueAxis.propTypes = {\n /**\n * Show or hide this\n */\n visible: _propTypes2.default.bool,\n\n /**\n * If values are numbers, use this format string\n */\n value: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n\n /**\n * Use this to show what units are being used. It will appear below\n * the value.\n */\n detail: _propTypes2.default.string,\n\n /**\n * The width of the axis\n */\n width: _propTypes2.default.number,\n\n /**\n * [Internal] The height of the axis\n */\n height: _propTypes2.default.number\n};\n\nValueAxis.defaultProps = {\n visible: true\n};\n\nexports.default = ValueAxis;\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/ValueAxis.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/ValueList.js": +/*!**************************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/ValueList.js ***! + \**************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\n/**\n * Renders a list of values in svg\n *\n * +----------------+\n * | Max 100 Gbps |\n * | Avg 26 Gbps |\n * +----------------+\n */\n/**\n * Copyright (c) 2015-present, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ValueList = function ValueList(props) {\n var align = props.align,\n style = props.style,\n width = props.width,\n height = props.height;\n\n if (!props.values.length) {\n return _react2.default.createElement(\"g\", null);\n }\n\n var textStyle = {\n fontSize: 11,\n textAnchor: \"left\",\n fill: \"#b0b0b0\",\n pointerEvents: \"none\"\n };\n\n var textStyleCentered = {\n fontSize: 11,\n textAnchor: \"middle\",\n fill: \"#bdbdbd\",\n pointerEvents: \"none\"\n };\n\n var values = props.values.map(function(item, i) {\n if (align === \"left\") {\n return _react2.default.createElement(\n \"g\",\n { key: i },\n _react2.default.createElement(\n \"text\",\n { x: 10, y: 5, dy: (i + 1) * 1.2 + \"em\", style: textStyle },\n _react2.default.createElement(\n \"tspan\",\n { style: { fontWeight: 700 } },\n item.label + \": \"\n ),\n _react2.default.createElement(\"tspan\", null, \"\" + item.value)\n )\n );\n }\n\n var posx = parseInt(props.width / 2, 10);\n return _react2.default.createElement(\n \"g\",\n { key: i },\n _react2.default.createElement(\n \"text\",\n { x: posx, y: 5, dy: (i + 1) * 1.2 + \"em\", style: textStyleCentered },\n _react2.default.createElement(\n \"tspan\",\n { style: { fontWeight: 700 } },\n item.label + \": \"\n ),\n _react2.default.createElement(\"tspan\", null, \"\" + item.value)\n )\n );\n });\n\n var box = _react2.default.createElement(\"rect\", {\n style: style,\n x: 0,\n y: 0,\n width: width,\n height: height\n });\n\n return _react2.default.createElement(\"g\", null, box, values);\n};\n\nValueList.defaultProps = {\n align: \"center\",\n width: 100,\n height: 100,\n pointerEvents: \"none\",\n style: { fill: \"#FEFEFE\", stroke: \"#DDD\", opacity: 0.8 }\n};\n\nValueList.propTypes = {\n align: _propTypes2.default.oneOf([\"center\", \"left\"]),\n /**\n * An array of label value pairs to render\n */\n values: _propTypes2.default.arrayOf(\n _propTypes2.default.shape({\n label: _propTypes2.default.string, // eslint-disable-line\n value: _propTypes2.default.oneOfType([\n // eslint-disable-line\n _propTypes2.default.number,\n _propTypes2.default.string\n ])\n })\n ).isRequired,\n /**\n * CSS object to be applied to the ValueList surrounding box\n */\n style: _propTypes2.default.object, // eslint-disable-line\n /**\n * The width of the rectangle to render into\n */\n width: _propTypes2.default.number,\n /**\n * The height of the rectangle to render into\n */\n height: _propTypes2.default.number\n};\n\nexports.default = ValueList;\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/ValueList.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/components/YAxis.js": +/*!**********************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/components/YAxis.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\n__webpack_require__(/*! d3-transition */ \"./node_modules/d3-transition/index.js\");\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _merge = __webpack_require__(/*! merge */ \"./node_modules/merge/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _d3Array = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/index.js\");\n\nvar _d3Axis = __webpack_require__(/*! d3-axis */ \"./node_modules/d3-axis/index.js\");\n\nvar _d3Ease = __webpack_require__(/*! d3-ease */ \"./node_modules/d3-ease/index.js\");\n\nvar _d3Format = __webpack_require__(/*! d3-format */ \"./node_modules/d3-format/index.js\");\n\nvar _d3Selection = __webpack_require__(/*! d3-selection */ \"./node_modules/d3-selection/index.js\");\n\nvar _util = __webpack_require__(/*! ../js/util */ \"./node_modules/react-timeseries-charts/lib/js/util.js\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\n \"Super expression must either be null or a function, not \" + typeof superClass\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: { value: subClass, enumerable: false, writable: true, configurable: true }\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n} /**\n * Copyright (c) 2015-present, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// eslint-disable-line\n\nvar MARGIN = 0;\n\nvar defaultStyle = {\n labels: {\n labelColor: \"#8B7E7E\", // Default label color\n labelWeight: 100,\n labelSize: 11\n },\n axis: {\n axisColor: \"#C0C0C0\"\n }\n};\n\n/**\n * The `YAxis` widget displays a vertical axis to the left or right\n * of the charts. A `YAxis` always appears within a `ChartRow`, from\n * which it gets its height and positioning. You can have more than\n * one axis per row. You do control how wide it is.\n *\n * Here's a simple YAxis example:\n *\n * ```js\n * \n * ```\n *\n * Visually you can control the axis `label`, its size via the `width`\n * prop, its `format`, and `type` of scale (linear). You can quicky turn\n * it on and off with the `visible` prop.\n *\n * Each axis also defines a scale through a `min` and `max` prop. Chart\n * then refer to the axis by by citing the axis `id` in their `axis`\n * prop. Those charts will then use the axis scale for their y-scale.\n * This is what ties them together. Many charts can use the same axis,\n * or not.\n *\n * Here is an example of two line charts that each have their own axis:\n *\n * ```js\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n *\n * Note that there are two `` components defined here, one before\n * the `` block and one after. This defines that the first axis will\n * appear to the left of the charts and the second will appear right of the charts.\n * Each of the line charts uses its `axis` prop to identify the axis (\"aud\" or \"euro\")\n * it will use for its vertical scale.\n */\n\nvar YAxis = (function(_React$Component) {\n _inherits(YAxis, _React$Component);\n\n function YAxis() {\n _classCallCheck(this, YAxis);\n\n return _possibleConstructorReturn(\n this,\n (YAxis.__proto__ || Object.getPrototypeOf(YAxis)).apply(this, arguments)\n );\n }\n\n _createClass(YAxis, [\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.renderAxis(\n this.props.align,\n this.props.scale,\n +this.props.width,\n this.props.absolute,\n this.props.format\n );\n }\n },\n {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n var scale = nextProps.scale;\n var align = nextProps.align;\n var width = nextProps.width;\n var absolute = nextProps.absolute;\n var fmt = nextProps.format;\n var type = nextProps.type;\n\n if (\n (0, _util.scaleAsString)(this.props.scale) !==\n (0, _util.scaleAsString)(scale) ||\n this.props.type !== nextProps.type\n ) {\n this.updateAxis(align, scale, width, absolute, type, fmt);\n }\n }\n },\n {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate() {\n // eslint-disable-line\n return false;\n }\n },\n {\n key: \"yformat\",\n value: function yformat(fmt) {\n if (_underscore2.default.isString(fmt)) {\n return (0, _d3Format.format)(fmt);\n } else if (_underscore2.default.isFunction(fmt)) {\n return fmt;\n } else {\n return (0, _d3Format.format)(\"\");\n }\n }\n },\n {\n key: \"updateAxis\",\n value: function updateAxis(align, scale, width, absolute, type, fmt) {\n var yformat = this.yformat(fmt);\n var axis = align === \"left\" ? _d3Axis.axisLeft : _d3Axis.axisRight;\n\n var axisStyle = (0, _merge2.default)(\n true,\n defaultStyle.axis,\n this.props.style.axis ? this.props.style.axis : {}\n );\n var axisColor = axisStyle.axisColor;\n\n //\n // Make an axis generator\n //\n\n var axisGenerator = void 0;\n if (type === \"linear\" || type === \"power\") {\n if (this.props.height <= 200) {\n axisGenerator = axis(scale)\n .ticks(5)\n .tickFormat(function(d) {\n if (absolute) {\n return yformat(Math.abs(d));\n }\n return yformat(d);\n });\n } else {\n axisGenerator = axis(scale).tickFormat(function(d) {\n if (absolute) {\n return yformat(Math.abs(d));\n }\n return yformat(d);\n });\n }\n } else if (type === \"log\") {\n if (this.props.min === 0) {\n throw Error(\"In a log scale, minimum value can't be 0\");\n }\n axisGenerator = axis(scale).ticks(10, \".2s\");\n }\n\n (0, _d3Selection.select)(_reactDom2.default.findDOMNode(this))\n .select(\".yaxis\")\n .transition()\n .duration(this.props.transition)\n .ease(_d3Ease.easeSinOut)\n .call(axisGenerator);\n\n (0, _d3Selection.select)(_reactDom2.default.findDOMNode(this)) // eslint-disable-line\n .select(\"g\")\n .selectAll(\".tick\")\n .select(\"text\")\n .style(\"fill\", axisColor)\n .style(\"stroke\", \"none\");\n\n (0, _d3Selection.select)(_reactDom2.default.findDOMNode(this)) // eslint-disable-line\n .select(\"g\")\n .selectAll(\".tick\")\n .select(\"line\")\n .style(\"stroke\", axisColor);\n }\n },\n {\n key: \"renderAxis\",\n value: function renderAxis(align, scale, width, absolute, fmt) {\n var yformat = this.yformat(fmt);\n var axisGenerator = void 0;\n var axis = align === \"left\" ? _d3Axis.axisLeft : _d3Axis.axisRight;\n if (this.props.type === \"linear\" || this.props.type === \"power\") {\n if (this.props.tickCount > 0) {\n var stepSize =\n (this.props.max - this.props.min) / (this.props.tickCount - 1);\n axisGenerator = axis(scale)\n .tickValues(\n (0, _d3Array.range)(\n this.props.min,\n this.props.max + this.props.max / 10000,\n stepSize\n )\n )\n .tickFormat(function(d) {\n if (absolute) {\n return yformat(Math.abs(d));\n }\n return yformat(d);\n })\n .tickSizeOuter(0);\n } else {\n if (this.props.height <= 200) {\n axisGenerator = axis(scale)\n .ticks(4)\n .tickFormat(function(d) {\n if (absolute) {\n return yformat(Math.abs(d));\n }\n return yformat(d);\n })\n .tickSizeOuter(0);\n } else {\n axisGenerator = axis(scale)\n .tickFormat(function(d) {\n if (absolute) {\n return yformat(Math.abs(d));\n }\n return yformat(d);\n })\n .tickSizeOuter(0);\n }\n }\n } else if (this.props.type === \"log\") {\n if (this.props.min === 0) {\n throw Error(\"In a log scale, minimum value can't be 0\");\n }\n axisGenerator = axis()\n .scale(scale)\n .ticks(10, \".2s\")\n .tickSizeOuter(0);\n }\n\n // Remove the old axis from under this DOM node\n (0, _d3Selection.select)(_reactDom2.default.findDOMNode(this))\n .selectAll(\"*\")\n .remove(); // eslint-disable-line\n // Add the new axis\n var x = align === \"left\" ? width - MARGIN : 0;\n var labelOffset =\n align === \"left\" ? this.props.labelOffset - 50 : 40 + this.props.labelOffset;\n\n //\n // Style\n //\n\n var labelStyle = (0, _merge2.default)(\n true,\n defaultStyle.labels,\n this.props.style.labels ? this.props.style.labels : {}\n );\n var axisStyle = (0, _merge2.default)(\n true,\n defaultStyle.axis,\n this.props.style.axis ? this.props.style.axis : {}\n );\n var axisColor = axisStyle.axisColor;\n var labelColor = labelStyle.labelColor,\n labelWeight = labelStyle.labelWeight,\n labelSize = labelStyle.labelSize;\n\n this.axis = (0, _d3Selection.select)(_reactDom2.default.findDOMNode(this)) // eslint-disable-line\n .append(\"g\")\n .attr(\"transform\", \"translate(\" + x + \",0)\")\n .style(\"stroke\", \"none\")\n .attr(\"class\", \"yaxis\")\n .style(\"fill\", labelColor)\n .style(\"font-weight\", labelWeight)\n .style(\"font-size\", labelSize)\n .call(axisGenerator)\n .append(\"text\")\n .text(this.props.label)\n .attr(\"transform\", \"rotate(-90)\")\n .attr(\"y\", labelOffset)\n .attr(\"dy\", \".71em\")\n .attr(\"text-anchor\", \"end\")\n .style(\"fill\", this.props.style.labelColor)\n .style(\n \"font-family\",\n this.props.style.labelFont || '\"Goudy Bookletter 1911\", sans-serif\"'\n )\n .style(\"font-weight\", this.props.style.labelWeight || 100)\n .style(\n \"font-size\",\n this.props.style.labelSize ? this.props.style.width + \"px\" : \"12px\"\n );\n\n (0, _d3Selection.select)(_reactDom2.default.findDOMNode(this)) // eslint-disable-line\n .select(\"g\")\n .selectAll(\".tick\")\n .select(\"text\")\n .style(\"fill\", axisColor)\n .style(\"stroke\", \"none\");\n\n (0, _d3Selection.select)(_reactDom2.default.findDOMNode(this)) // eslint-disable-line\n .select(\"g\")\n .selectAll(\".tick\")\n .select(\"line\")\n .style(\"stroke\", axisColor);\n\n (0, _d3Selection.select)(_reactDom2.default.findDOMNode(this)) // eslint-disable-line\n .select(\"g\")\n .select(\"path\")\n .style(\"fill\", \"none\")\n .style(\"stroke\", axisColor);\n }\n },\n {\n key: \"render\",\n value: function render() {\n // eslint-disable-line\n return _react2.default.createElement(\"g\", null);\n }\n }\n ]);\n\n return YAxis;\n})(_react2.default.Component);\n\nexports.default = YAxis;\n\nYAxis.defaultProps = {\n id: \"yaxis\", // id referred to by the chart\n align: \"left\", // left or right of the chart\n min: 0, // range\n max: 1,\n type: \"linear\", // linear, log, or power\n absolute: false, // Display scale always positive\n format: \".2s\", // Format string for d3.format\n labelOffset: 0, // Offset the label position\n transition: 100, // Axis transition time\n width: 80,\n style: defaultStyle\n};\n\nYAxis.propTypes = {\n /**\n * A name for the axis which can be used by a chart to reference the axis.\n * This is used by the ChartRow to match charts to this axis.\n */\n id: _propTypes2.default.string.isRequired, // eslint-disable-line\n\n /**\n * Show or hide this axis\n */\n visible: _propTypes2.default.bool,\n\n /**\n * The label to be displayed alongside the axis.\n */\n label: _propTypes2.default.string,\n\n /**\n * The scale type: linear, power, or log.\n */\n type: _propTypes2.default.oneOf([\"linear\", \"power\", \"log\"]),\n\n /**\n * Minium value, which combined with \"max\", define the scale of the axis.\n */\n min: _propTypes2.default.number.isRequired, // eslint-disable-line\n\n /**\n * Maxium value, which combined with \"min,\"\" define the scale of the axis.\n */\n max: _propTypes2.default.number.isRequired, // eslint-disable-line\n\n /**\n * Render all ticks on the axis as positive values.\n */\n absolute: _propTypes2.default.bool, // eslint-disable-line\n\n /**\n * Object specifying the available parameters by which the axis can be\n * styled. The object can contain: \"labels\" and \"axis\". Each of these\n * is an inline CSS style applied to the tick labels and axis lines\n * respectively.\n *\n * In addition the axis label itself can be styled with: \"labelColor\",\n * \"labelFont\", \"labelWidth\" and \"labelSize\".\n */\n style: _propTypes2.default.shape({\n labels: _propTypes2.default.object, // eslint-disable-line\n axis: _propTypes2.default.object, // eslint-disable-line\n labelColor: _propTypes2.default.string,\n labelFont: _propTypes2.default.string,\n labelWeight: _propTypes2.default.string,\n labelSize: _propTypes2.default.string,\n width: _propTypes2.default.number\n }),\n\n /**\n * The transition time for moving from one scale to another\n */\n transition: _propTypes2.default.number,\n\n /**\n * The width of the axis\n */\n width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n\n /**\n * Offset the axis label from its default position. This allows you to\n * fine tune the label location, which may be necessary depending on the\n * scale and how much room the tick labels take up. Maybe positive or\n * negative.\n */\n labelOffset: _propTypes2.default.number,\n\n /**\n * If a string, the d3.format for the axis labels (e.g. `format=\\\"$,.2f\\\"`).\n * If a function, that function will be called with each tick value and\n * should generate a formatted string for that value to be used as the label\n * for that tick (e.g. `function (n) { return Number(n).toFixed(2) }`).\n */\n format: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func]),\n\n /**\n * If the chart should be rendered to with the axis on the left or right.\n * If you are using the axis in a ChartRow, you do not need to provide this.\n */\n align: _propTypes2.default.string,\n\n /**\n * [Internal] The scale supplied by the ChartRow\n */\n scale: _propTypes2.default.func,\n\n /**\n * [Internal] The height supplied by the surrounding ChartContainer\n */\n height: _propTypes2.default.number,\n\n /**\n * The number of ticks\n */\n tickCount: _propTypes2.default.number\n};\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/components/YAxis.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/entry.js": +/*!***********************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/entry.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.YAxis = exports.ValueList = exports.ValueAxis = exports.TimeRangeMarker = exports.TimeMarker = exports.TimeAxis = exports.styler = exports.ScatterChart = exports.Resizable = exports.LineChart = exports.Legend = exports.LabelAxis = exports.EventMarker = exports.EventChart = exports.Charts = exports.ChartRow = exports.ChartContainer = exports.MultiBrush = exports.Brush = exports.Baseline = exports.BoxChart = exports.BarChart = exports.AreaChart = undefined;\n\nvar _AreaChart2 = __webpack_require__(/*! ./components/AreaChart */ \"./node_modules/react-timeseries-charts/lib/components/AreaChart.js\");\n\nvar _AreaChart3 = _interopRequireDefault(_AreaChart2);\n\nvar _BarChart2 = __webpack_require__(/*! ./components/BarChart */ \"./node_modules/react-timeseries-charts/lib/components/BarChart.js\");\n\nvar _BarChart3 = _interopRequireDefault(_BarChart2);\n\nvar _BoxChart2 = __webpack_require__(/*! ./components/BoxChart */ \"./node_modules/react-timeseries-charts/lib/components/BoxChart.js\");\n\nvar _BoxChart3 = _interopRequireDefault(_BoxChart2);\n\nvar _Baseline2 = __webpack_require__(/*! ./components/Baseline */ \"./node_modules/react-timeseries-charts/lib/components/Baseline.js\");\n\nvar _Baseline3 = _interopRequireDefault(_Baseline2);\n\nvar _Brush2 = __webpack_require__(/*! ./components/Brush */ \"./node_modules/react-timeseries-charts/lib/components/Brush.js\");\n\nvar _Brush3 = _interopRequireDefault(_Brush2);\n\nvar _MultiBrush2 = __webpack_require__(/*! ./components/MultiBrush */ \"./node_modules/react-timeseries-charts/lib/components/MultiBrush.js\");\n\nvar _MultiBrush3 = _interopRequireDefault(_MultiBrush2);\n\nvar _ChartContainer2 = __webpack_require__(/*! ./components/ChartContainer */ \"./node_modules/react-timeseries-charts/lib/components/ChartContainer.js\");\n\nvar _ChartContainer3 = _interopRequireDefault(_ChartContainer2);\n\nvar _ChartRow2 = __webpack_require__(/*! ./components/ChartRow */ \"./node_modules/react-timeseries-charts/lib/components/ChartRow.js\");\n\nvar _ChartRow3 = _interopRequireDefault(_ChartRow2);\n\nvar _Charts2 = __webpack_require__(/*! ./components/Charts */ \"./node_modules/react-timeseries-charts/lib/components/Charts.js\");\n\nvar _Charts3 = _interopRequireDefault(_Charts2);\n\nvar _EventChart2 = __webpack_require__(/*! ./components/EventChart */ \"./node_modules/react-timeseries-charts/lib/components/EventChart.js\");\n\nvar _EventChart3 = _interopRequireDefault(_EventChart2);\n\nvar _EventMarker2 = __webpack_require__(/*! ./components/EventMarker */ \"./node_modules/react-timeseries-charts/lib/components/EventMarker.js\");\n\nvar _EventMarker3 = _interopRequireDefault(_EventMarker2);\n\nvar _LabelAxis2 = __webpack_require__(/*! ./components/LabelAxis */ \"./node_modules/react-timeseries-charts/lib/components/LabelAxis.js\");\n\nvar _LabelAxis3 = _interopRequireDefault(_LabelAxis2);\n\nvar _Legend2 = __webpack_require__(/*! ./components/Legend */ \"./node_modules/react-timeseries-charts/lib/components/Legend.js\");\n\nvar _Legend3 = _interopRequireDefault(_Legend2);\n\nvar _LineChart2 = __webpack_require__(/*! ./components/LineChart */ \"./node_modules/react-timeseries-charts/lib/components/LineChart.js\");\n\nvar _LineChart3 = _interopRequireDefault(_LineChart2);\n\nvar _Resizable2 = __webpack_require__(/*! ./components/Resizable */ \"./node_modules/react-timeseries-charts/lib/components/Resizable.js\");\n\nvar _Resizable3 = _interopRequireDefault(_Resizable2);\n\nvar _ScatterChart2 = __webpack_require__(/*! ./components/ScatterChart */ \"./node_modules/react-timeseries-charts/lib/components/ScatterChart.js\");\n\nvar _ScatterChart3 = _interopRequireDefault(_ScatterChart2);\n\nvar _styler2 = __webpack_require__(/*! ./js/styler */ \"./node_modules/react-timeseries-charts/lib/js/styler.js\");\n\nvar _styler3 = _interopRequireDefault(_styler2);\n\nvar _TimeAxis2 = __webpack_require__(/*! ./components/TimeAxis */ \"./node_modules/react-timeseries-charts/lib/components/TimeAxis.js\");\n\nvar _TimeAxis3 = _interopRequireDefault(_TimeAxis2);\n\nvar _TimeMarker2 = __webpack_require__(/*! ./components/TimeMarker */ \"./node_modules/react-timeseries-charts/lib/components/TimeMarker.js\");\n\nvar _TimeMarker3 = _interopRequireDefault(_TimeMarker2);\n\nvar _TimeRangeMarker2 = __webpack_require__(/*! ./components/TimeRangeMarker */ \"./node_modules/react-timeseries-charts/lib/components/TimeRangeMarker.js\");\n\nvar _TimeRangeMarker3 = _interopRequireDefault(_TimeRangeMarker2);\n\nvar _ValueAxis2 = __webpack_require__(/*! ./components/ValueAxis */ \"./node_modules/react-timeseries-charts/lib/components/ValueAxis.js\");\n\nvar _ValueAxis3 = _interopRequireDefault(_ValueAxis2);\n\nvar _ValueList2 = __webpack_require__(/*! ./components/ValueList */ \"./node_modules/react-timeseries-charts/lib/components/ValueList.js\");\n\nvar _ValueList3 = _interopRequireDefault(_ValueList2);\n\nvar _YAxis2 = __webpack_require__(/*! ./components/YAxis */ \"./node_modules/react-timeseries-charts/lib/components/YAxis.js\");\n\nvar _YAxis3 = _interopRequireDefault(_YAxis2);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nexports.AreaChart = _AreaChart3.default; /**\n * Copyright (c) 2016, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexports.BarChart = _BarChart3.default;\nexports.BoxChart = _BoxChart3.default;\nexports.Baseline = _Baseline3.default;\nexports.Brush = _Brush3.default;\nexports.MultiBrush = _MultiBrush3.default;\nexports.ChartContainer = _ChartContainer3.default;\nexports.ChartRow = _ChartRow3.default;\nexports.Charts = _Charts3.default;\nexports.EventChart = _EventChart3.default;\nexports.EventMarker = _EventMarker3.default;\nexports.LabelAxis = _LabelAxis3.default;\nexports.Legend = _Legend3.default;\nexports.LineChart = _LineChart3.default;\nexports.Resizable = _Resizable3.default;\nexports.ScatterChart = _ScatterChart3.default;\nexports.styler = _styler3.default;\nexports.TimeAxis = _TimeAxis3.default;\nexports.TimeMarker = _TimeMarker3.default;\nexports.TimeRangeMarker = _TimeRangeMarker3.default;\nexports.ValueAxis = _ValueAxis3.default;\nexports.ValueList = _ValueList3.default;\nexports.YAxis = _YAxis3.default;\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/entry.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/js/curve.js": +/*!**************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/js/curve.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _d3Shape = __webpack_require__(/*! d3-shape */ \"./node_modules/d3-shape/index.js\");\n\nexports.default = {\n curveBasisClosed: _d3Shape.curveBasisClosed,\n curveBasisOpen: _d3Shape.curveBasisOpen,\n curveBasis: _d3Shape.curveBasis,\n curveBundle: _d3Shape.curveBundle,\n curveCardinalClosed: _d3Shape.curveCardinalClosed,\n curveCardinalOpen: _d3Shape.curveCardinalOpen,\n curveCardinal: _d3Shape.curveCardinal,\n curveCatmullRomClosed: _d3Shape.curveCatmullRomClosed,\n curveCatmullRomOpen: _d3Shape.curveCatmullRomOpen,\n curveCatmullRom: _d3Shape.curveCatmullRom,\n curveLinearClosed: _d3Shape.curveLinearClosed,\n curveLinear: _d3Shape.curveLinear,\n curveMonotoneX: _d3Shape.curveMonotoneX,\n curveMonotoneY: _d3Shape.curveMonotoneY,\n curveNatural: _d3Shape.curveNatural,\n curveStep: _d3Shape.curveStep,\n curveStepAfter: _d3Shape.curveStepAfter,\n curveStepBefore: _d3Shape.curveStepBefore\n}; /**\n * Copyright (c) 2017, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/js/curve.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/js/interpolators.js": +/*!**********************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/js/interpolators.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})(); /**\n * Copyright (c) 2015, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nvar ScaleInterpolator = (function() {\n function ScaleInterpolator(transition, ease, observer) {\n _classCallCheck(this, ScaleInterpolator);\n\n this.id = _underscore2.default.uniqueId(\"scaler\");\n this.ease = ease;\n this.transitionTime = transition;\n this.observer = observer;\n\n this.sourceScale = null;\n this.targetScale = null;\n this.cachedScaler = null;\n this.cacheKey = null;\n }\n\n _createClass(ScaleInterpolator, [\n {\n key: \"update\",\n value: function update() {\n var _this = this;\n\n var animationTime = 0;\n\n if (!this.initialTimestamp) {\n this.initialTimestamp = window.performance.now();\n } else {\n animationTime = window.performance.now() - this.initialTimestamp;\n }\n\n var animationPosition = this.transitionTime\n ? Math.min(animationTime / this.transitionTime, 1.0)\n : 1.0;\n\n if (!this.targetScale) {\n return;\n }\n\n if (this.observer) {\n var func1 = this.sourceScale;\n var func2 = this.targetScale;\n var te = this.ease(animationPosition);\n var scaler = function scaler(x) {\n var a = func1(x);\n var b = func2(x);\n return a + (b - a) * te;\n };\n this.observer(scaler);\n }\n\n if (animationPosition < 1.0) {\n // keep animating\n setTimeout(function() {\n return _this.update();\n }, 20);\n } else {\n // reset\n this.sourceScale = this.targetScale;\n this.targetScale = null;\n this.initialTimestamp = null;\n }\n }\n\n /**\n * A new (or initial) scale is set on the interpolator\n */\n },\n {\n key: \"setScale\",\n value: function setScale(key, scale) {\n var _this2 = this;\n\n // Initial scale\n if (!this.sourceScale) {\n this.sourceScale = scale;\n return;\n }\n\n //\n // If there was already a scale, and a new scale is set\n // the this begins an animation across between the two\n // scales, assuming a transition time is provided. To do\n // this we set the new scale as the target and reset the\n // t to 0. (if there's no transition, jump to t = 1)\n //\n\n if (key !== this.cacheKey) {\n this.targetScale = scale;\n this.cachedScaler = null;\n this.initialTimestamp = null;\n setTimeout(function() {\n return _this2.update();\n }, 0);\n }\n\n this.cacheKey = key;\n }\n\n /**\n * Returns a scaler, which is a function that scales the value\n * supplied to it. This return the scaler corresponding to the\n * source scale. Note that if a target scale is defined and the\n * interpolator is animating towards that target, the observer\n * callback will be called with the transitional scaler that can\n * be used to scale data to the intermediate state.\n */\n },\n {\n key: \"scaler\",\n value: function scaler() {\n var _this3 = this;\n\n if (_underscore2.default.isNull(this.cachedScaler)) {\n this.cachedScaler = function(v) {\n return _this3.sourceScale(v);\n };\n }\n return this.cachedScaler;\n }\n\n /**\n * Returns the d3 scale. It will return the target scale if present\n * otherwise the source scale. Note: this is the d3 internal scale. To\n * scale values, use the scaler.\n */\n },\n {\n key: \"latestScale\",\n value: function latestScale() {\n return this.targetScale ? this.targetScale : this.sourceScale;\n }\n\n /**\n * Returns the transition, as set in the constructor\n */\n },\n {\n key: \"transition\",\n value: function transition() {\n return this.transitionTime;\n }\n }\n ]);\n\n return ScaleInterpolator;\n})();\n\nexports.default = ScaleInterpolator;\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/js/interpolators.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/js/styler.js": +/*!***************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/js/styler.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Styler = undefined;\n\nvar _extends =\n Object.assign ||\n function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n\nvar _createClass = (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})(); /**\n * Copyright (c) 2016, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexports.default = styler;\n\nvar _underscore = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\");\n\nvar _underscore2 = _interopRequireDefault(_underscore);\n\nvar _colorbrewer = __webpack_require__(/*! colorbrewer */ \"./node_modules/colorbrewer/index.js\");\n\nvar _colorbrewer2 = _interopRequireDefault(_colorbrewer);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\n/**\n * For our Style we want to represent two things:\n *\n * 1. The overall style of an AreaChart should be consistent across a site\n * 2. The specific style of a columnName (e.g. \"pressure\") should be consistent\n *\n * The overall style is implemented with methods specific to\n * each chart type or entity:\n *\n * - lineChartStyle()\n * - areaChartStyle()\n * - legendStyle()\n * - etc\n *\n * These will render out an object that can be passed into the\n * charts themselves and will control the visual appearance,\n * keyed by columnName. This abstracts away the SVG details of the\n * underlying DOM elements.\n *\n * For the specific style we define here three out of the box parameters\n * by which one column can be different from another when rendered:\n * - color\n * - width (of a line)\n * - dashed or not\n *\n */\nvar Styler = (exports.Styler = (function() {\n /**\n * The columns define the style associated with a particular\n * quantity, such as \"inTraffic\" or \"temperature\". The columns\n * are an array, with each element being either a string, or\n * and object defining the style.\n *\n * * Using a string makes the assumption that you want to use a\n * color scheme, so you need to define that if you don't want the\n * default. A color will be then assigned to each column based\n * on the scheme. The string is the column name.\n *\n * * In the second case of providing an object, you define properties\n * of the style yourself. Each object should contain a \"key\" property\n * which is the column name and optionally the `width` and `dashed`\n * property. If you don't supply the color, then the color\n * will come from the scheme.\n *\n */\n function Styler(columns) {\n var _this = this;\n\n var scheme = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"Paired\";\n\n _classCallCheck(this, Styler);\n\n this.columnStyles = {};\n if (_underscore2.default.isArray(columns)) {\n columns.forEach(function(column) {\n if (_underscore2.default.isString(column)) {\n _this.columnStyles[column] = { key: column };\n } else if (_underscore2.default.isObject(column)) {\n var key = column.key,\n style = _objectWithoutProperties(column, [\"key\"]);\n\n _this.columnStyles[key] = style;\n }\n });\n }\n this.columnNames = _underscore2.default.map(columns, function(c) {\n var cc = _underscore2.default.isString(c) ? c : c.key;\n return cc;\n });\n\n if (scheme && !_underscore2.default.has(_colorbrewer2.default, scheme)) {\n throw new Error(\"Unknown scheme '\" + scheme + \"' supplied to Style constructor\");\n }\n this.colorScheme = scheme;\n }\n\n _createClass(Styler, [\n {\n key: \"numColumns\",\n value: function numColumns() {\n return this.columnNames.length;\n }\n\n /**\n * Returns the color scheme with the appropiate number of colors.\n * If there are more columns than the largest set in the scheme then\n * just the largest scheme set will be returned.\n * If there are less columns than the smallest set in the scheme then\n * just the smallest scheme will be returned.\n * @param {number} columnCount The number of columns to apply the scheme to\n * @return {array} An array with the scheme colors in it.\n */\n },\n {\n key: \"colorLookup\",\n value: function colorLookup(columnCount) {\n var colorSchemeKeys = _underscore2.default.keys(\n _colorbrewer2.default[this.colorScheme]\n );\n var minSchemeSize = _underscore2.default.min(colorSchemeKeys);\n var maxSchemeSize = _underscore2.default.max(colorSchemeKeys);\n var colorLookupSize = columnCount > maxSchemeSize ? maxSchemeSize : columnCount;\n colorLookupSize = _underscore2.default.max([colorLookupSize, minSchemeSize]);\n return this.colorScheme\n ? _colorbrewer2.default[this.colorScheme][colorLookupSize]\n : [];\n }\n\n /**\n */\n },\n {\n key: \"legendStyle\",\n value: function legendStyle(column, type) {\n var numColumns = this.numColumns();\n var colorLookup = this.colorLookup(numColumns);\n var i = _underscore2.default.indexOf(this.columnNames, column);\n var columnName = this.columnNames[i];\n var _columnStyles$columnN = this.columnStyles[columnName],\n color = _columnStyles$columnN.color,\n _columnStyles$columnN2 = _columnStyles$columnN.width,\n width = _columnStyles$columnN2 === undefined ? 1 : _columnStyles$columnN2,\n _columnStyles$columnN3 = _columnStyles$columnN.dashed,\n dashed = _columnStyles$columnN3 === undefined ? false : _columnStyles$columnN3;\n\n var c = color || colorLookup[i % colorLookup.length];\n\n var styleSymbol = {};\n if (type === \"swatch\" || type === \"dot\") {\n styleSymbol = {\n fill: c,\n opacity: 0.9,\n stroke: c,\n cursor: \"pointer\"\n };\n } else if (type === \"line\") {\n styleSymbol = {\n opacity: 0.9,\n stroke: c,\n strokeWidth: width,\n cursor: \"pointer\"\n };\n if (dashed) {\n styleSymbol.strokeDasharray = \"4,2\";\n }\n }\n\n var labelStyle = {\n fontSize: \"normal\",\n color: \"#333\",\n paddingRight: 10,\n cursor: \"pointer\"\n };\n var valueStyle = {\n fontSize: \"smaller\",\n color: \"#999\",\n cursor: \"pointer\"\n };\n var legendStyle = {\n symbol: {\n normal: _extends({}, styleSymbol, { opacity: 0.7 }),\n highlighted: _extends({}, styleSymbol, { opacity: 0.8 }),\n selected: _extends({}, styleSymbol, { opacity: 0.8 }),\n muted: _extends({}, styleSymbol, { opacity: 0.2 })\n },\n label: {\n normal: _extends({}, labelStyle, { opacity: 0.7 }),\n highlighted: _extends({}, labelStyle, { opacity: 0.8 }),\n selected: _extends({}, labelStyle, { opacity: 0.8 }),\n muted: _extends({}, labelStyle, { opacity: 0.5 })\n },\n value: {\n normal: _extends({}, valueStyle, { opacity: 0.7 }),\n highlighted: _extends({}, valueStyle, { opacity: 0.8 }),\n selected: _extends({}, valueStyle, { opacity: 0.8 }),\n muted: _extends({}, valueStyle, { opacity: 0.5 })\n }\n };\n return legendStyle;\n }\n },\n {\n key: \"areaChartStyle\",\n value: function areaChartStyle() {\n var style = {};\n\n var numColumns = this.numColumns();\n var colorLookup = this.colorLookup(numColumns);\n\n var i = 0;\n _underscore2.default.forEach(this.columnStyles, function(_ref, column) {\n var color = _ref.color,\n selected = _ref.selected,\n _ref$width = _ref.width,\n width = _ref$width === undefined ? 1 : _ref$width,\n _ref$dashed = _ref.dashed,\n dashed = _ref$dashed === undefined ? false : _ref$dashed;\n\n var c = color || colorLookup[i % colorLookup.length];\n var styleLine = {\n stroke: c,\n fill: \"none\",\n strokeWidth: width\n };\n var styleSelectedLine = {\n stroke: selected || color,\n fill: \"none\",\n strokeWidth: width\n };\n if (dashed) {\n styleLine.strokeDasharray = \"4,2\";\n }\n var styleArea = {\n fill: c,\n stroke: \"none\"\n };\n var styleSelectedArea = {\n fill: selected || color,\n stroke: \"none\"\n };\n style[column] = {\n line: {\n normal: _extends({}, styleLine, { opacity: 0.9 }),\n highlighted: _extends({}, styleLine, { opacity: 1.0 }),\n selected: _extends({}, styleSelectedLine, { opacity: 1.0 }),\n muted: _extends({}, styleLine, { opacity: 0.4 })\n },\n area: {\n normal: _extends({}, styleArea, { opacity: 0.7 }),\n highlighted: _extends({}, styleArea, { opacity: 0.8 }),\n selected: _extends({}, styleSelectedArea, { opacity: 0.8 }),\n muted: _extends({}, styleArea, { opacity: 0.2 })\n }\n };\n i += 1;\n });\n return style;\n }\n },\n {\n key: \"lineChartStyle\",\n value: function lineChartStyle() {\n var _this2 = this;\n\n var numColumns = this.numColumns();\n var colorLookup = this.colorLookup(numColumns);\n var style = {};\n _underscore2.default.forEach(this.columnStyles, function(_ref2, column) {\n var color = _ref2.color,\n selected = _ref2.selected,\n _ref2$width = _ref2.width,\n width = _ref2$width === undefined ? 1 : _ref2$width,\n _ref2$dashed = _ref2.dashed,\n dashed = _ref2$dashed === undefined ? false : _ref2$dashed;\n\n var i = _underscore2.default.indexOf(_this2.columnNames, column);\n var c = color || colorLookup[i % colorLookup.length];\n var styleLine = {\n stroke: c,\n strokeWidth: width,\n fill: \"none\"\n };\n var styleSelectedLine = {\n stroke: selected || c,\n strokeWidth: width,\n fill: \"none\"\n };\n\n if (dashed) {\n styleLine.strokeDasharray = \"4,2\";\n }\n style[column] = {\n normal: _extends({}, styleLine, { opacity: 0.8, strokeWidth: width }),\n highlighted: _extends({}, styleLine, { opacity: 1.0, strokeWidth: width }),\n selected: _extends({}, styleSelectedLine, {\n opacity: 1.0,\n strokeWidth: width\n }),\n muted: _extends({}, styleLine, { opacity: 0.2, strokeWidth: width })\n };\n });\n return style;\n }\n },\n {\n key: \"barChartStyle\",\n value: function barChartStyle() {\n var _this3 = this;\n\n var numColumns = this.numColumns();\n var colorLookup = this.colorLookup(numColumns);\n var style = {};\n _underscore2.default.forEach(this.columnStyles, function(_ref3, column) {\n var color = _ref3.color,\n selected = _ref3.selected;\n\n var i = _underscore2.default.indexOf(_this3.columnNames, column);\n var c = color || colorLookup[i % colorLookup.length];\n var fillStyle = {\n fill: c\n };\n var selectedStyle = {\n fill: selected || c\n };\n style[column] = {\n normal: _extends({}, fillStyle, { opacity: 0.8 }),\n highlighted: _extends({}, fillStyle, { opacity: 1.0 }),\n selected: _extends({}, selectedStyle, { opacity: 1.0 }),\n muted: _extends({}, fillStyle, { opacity: 0.2 })\n };\n });\n return style;\n }\n },\n {\n key: \"scatterChartStyle\",\n value: function scatterChartStyle() {\n var _this4 = this;\n\n var numColumns = this.numColumns();\n var colorLookup = this.colorLookup(numColumns);\n var style = {};\n _underscore2.default.forEach(this.columnStyles, function(_ref4, column) {\n var color = _ref4.color,\n selected = _ref4.selected;\n\n var i = _underscore2.default.indexOf(_this4.columnNames, column);\n var c = color || colorLookup[i % colorLookup.length];\n var fillStyle = {\n fill: c\n };\n var selectedStyle = {\n fill: selected || c\n };\n style[column] = {\n normal: _extends({}, fillStyle, { opacity: 0.8 }),\n highlighted: _extends({}, fillStyle, { opacity: 1.0 }),\n selected: _extends({}, selectedStyle, { opacity: 1.0 }),\n muted: _extends({}, fillStyle, { opacity: 0.2 })\n };\n });\n return style;\n }\n },\n {\n key: \"axisStyle\",\n value: function axisStyle(column) {\n var numColumns = this.numColumns();\n var colorLookup = this.colorLookup(numColumns);\n var i = _underscore2.default.indexOf(this.columnNames, column);\n var columnName = this.columnNames[i];\n var color = this.columnStyles[columnName].color;\n\n var c = color || colorLookup[i % colorLookup.length];\n return {\n labelColor: c\n };\n }\n },\n {\n key: \"boxChartStyle\",\n value: function boxChartStyle() {\n var style = {};\n\n var numColumns = this.numColumns();\n var colorLookup = this.colorLookup(numColumns);\n\n var i = 0;\n _underscore2.default.forEach(this.columnStyles, function(_ref5, column) {\n var color = _ref5.color,\n selected = _ref5.selected;\n\n var c = color || colorLookup[i % colorLookup.length];\n var styleArea = {\n fill: c,\n stroke: \"none\"\n };\n var styleSelectedArea = {\n fill: selected || color,\n stroke: \"none\"\n };\n style[column] = [\n {\n normal: _extends({}, styleArea, { opacity: 0.2 }),\n highlighted: _extends({}, styleArea, { opacity: 0.3 }),\n selected: _extends({}, styleSelectedArea, { opacity: 0.3 }),\n muted: _extends({}, styleArea, { opacity: 0.1 })\n },\n {\n normal: _extends({}, styleArea, { opacity: 0.5 }),\n highlighted: _extends({}, styleArea, { opacity: 0.6 }),\n selected: _extends({}, styleSelectedArea, { opacity: 0.6 }),\n muted: _extends({}, styleArea, { opacity: 0.2 })\n },\n {\n normal: _extends({}, styleArea, { opacity: 0.9 }),\n highlighted: _extends({}, styleArea, { opacity: 1.0 }),\n selected: _extends({}, styleSelectedArea, { opacity: 1.0 }),\n muted: _extends({}, styleArea, { opacity: 0.2 })\n }\n ];\n i += 1;\n });\n return style;\n }\n }\n ]);\n\n return Styler;\n})());\n\nfunction styler(columns, scheme) {\n return new Styler(columns, scheme);\n}\n\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/js/styler.js?"); + +/***/ }), + +/***/ "./node_modules/react-timeseries-charts/lib/js/util.js": +/*!*************************************************************!*\ + !*** ./node_modules/react-timeseries-charts/lib/js/util.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.scaleAsString = scaleAsString;\nexports.getElementOffset = getElementOffset;\n/**\n * Copyright (c) 2016, The Regents of the University of California,\n * through Lawrence Berkeley National Laboratory (subject to receipt\n * of any required approvals from the U.S. Dept. of Energy).\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction scaleAsString(scale) {\n return scale.domain() + \"-\" + scale.range();\n}\n\n// http://stackoverflow.com/a/28857255\nfunction getElementOffset(element) {\n var de = document.documentElement;\n var box = element.getBoundingClientRect();\n var top = box.top + window.pageYOffset - de.clientTop;\n var left = box.left + window.pageXOffset - de.clientLeft;\n return { top: top, left: left };\n}\n\n//# sourceURL=webpack:///./node_modules/react-timeseries-charts/lib/js/util.js?"); + +/***/ }), + /***/ "./node_modules/react-vis/dist/style.css": /*!***********************************************!*\ !*** ./node_modules/react-vis/dist/style.css ***! @@ -8870,6 +11170,41 @@ eval("__webpack_require__.r(__webpack_exports__);\nfunction isAbsolute(pathname) /***/ }), +/***/ "./node_modules/styled-components/dist/styled-components.es.js": +/*!*********************************************************************!*\ + !*** ./node_modules/styled-components/dist/styled-components.es.js ***! + \*********************************************************************/ +/*! exports provided: css, keyframes, injectGlobal, ThemeProvider, withTheme, ServerStyleSheet, StyleSheetManager, default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(module) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"css\", function() { return css; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"keyframes\", function() { return keyframes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"injectGlobal\", function() { return injectGlobal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ThemeProvider\", function() { return ThemeProvider; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"withTheme\", function() { return wrapWithTheme; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ServerStyleSheet\", function() { return ServerStyleSheet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"StyleSheetManager\", function() { return StyleSheetManager; });\n/* harmony import */ var is_plain_object__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! is-plain-object */ \"./node_modules/is-plain-object/index.js\");\n/* harmony import */ var is_plain_object__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(is_plain_object__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! stylis */ \"./node_modules/stylis/stylis.js\");\n/* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(stylis__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! hoist-non-react-statics */ \"./node_modules/styled-components/node_modules/hoist-non-react-statics/index.js\");\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar _uppercasePattern = /([A-Z])/g;\n\n/**\n * Hyphenates a camelcased string, for example:\n *\n * > hyphenate('backgroundColor')\n * < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenate$2(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nvar hyphenate_1 = hyphenate$2;\n\nvar hyphenate = hyphenate_1;\n\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}\n\nvar hyphenateStyleName_1 = hyphenateStyleName;\n\n// \nvar objToCss = function objToCss(obj, prevKey) {\n var css = Object.keys(obj).filter(function (key) {\n var chunk = obj[key];\n return chunk !== undefined && chunk !== null && chunk !== false && chunk !== '';\n }).map(function (key) {\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(obj[key])) return objToCss(obj[key], key);\n return hyphenateStyleName_1(key) + ': ' + obj[key] + ';';\n }).join(' ');\n return prevKey ? prevKey + ' {\\n ' + css + '\\n}' : css;\n};\n\nvar flatten = function flatten(chunks, executionContext) {\n return chunks.reduce(function (ruleSet, chunk) {\n /* Remove falsey values */\n if (chunk === undefined || chunk === null || chunk === false || chunk === '') {\n return ruleSet;\n }\n /* Flatten ruleSet */\n if (Array.isArray(chunk)) {\n return [].concat(ruleSet, flatten(chunk, executionContext));\n }\n\n /* Handle other components */\n if (chunk.hasOwnProperty('styledComponentId')) {\n // $FlowFixMe not sure how to make this pass\n return [].concat(ruleSet, ['.' + chunk.styledComponentId]);\n }\n\n /* Either execute or defer the function */\n if (typeof chunk === 'function') {\n return executionContext ? ruleSet.concat.apply(ruleSet, flatten([chunk(executionContext)], executionContext)) : ruleSet.concat(chunk);\n }\n\n /* Handle objects */\n return ruleSet.concat(\n // $FlowFixMe have to add %checks somehow to isPlainObject\n is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(chunk) ? objToCss(chunk) : chunk.toString());\n }, []);\n};\n\n// \nvar stylis = new stylis__WEBPACK_IMPORTED_MODULE_1___default.a({\n global: false,\n cascade: true,\n keyframe: false,\n prefix: true,\n compress: false,\n semicolon: true\n});\n\nvar stringifyRules = function stringifyRules(rules, selector, prefix) {\n var flatCSS = rules.join('').replace(/^\\s*\\/\\/.*$/gm, ''); // replace JS comments\n\n var cssStr = selector && prefix ? prefix + ' ' + selector + ' { ' + flatCSS + ' }' : flatCSS;\n\n return stylis(prefix || !selector ? '' : selector, cssStr);\n};\n\n// \nvar chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\nvar charsLength = chars.length;\n\n/* Some high number, usually 9-digit base-10. Map it to base-😎 */\nvar generateAlphabeticName = function generateAlphabeticName(code) {\n var name = '';\n var x = void 0;\n\n for (x = code; x > charsLength; x = Math.floor(x / charsLength)) {\n name = chars[x % charsLength] + name;\n }\n\n return chars[x % charsLength] + name;\n};\n\n// \n\n\nvar interleave = (function (strings, interpolations) {\n return interpolations.reduce(function (array, interp, i) {\n return array.concat(interp, strings[i + 1]);\n }, [strings[0]]);\n});\n\n// \nvar css = (function (strings) {\n for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n\n return flatten(interleave(strings, interpolations));\n});\n\n// \nvar SC_COMPONENT_ID = /^[^\\S\\n]*?\\/\\* sc-component-id:\\s+(\\S+)\\s+\\*\\//gm;\n\nvar extractCompsFromCSS = (function (maybeCSS) {\n var css = '' + (maybeCSS || ''); // Definitely a string, and a clone\n var existingComponents = [];\n css.replace(SC_COMPONENT_ID, function (match, componentId, matchIndex) {\n existingComponents.push({ componentId: componentId, matchIndex: matchIndex });\n return match;\n });\n return existingComponents.map(function (_ref, i) {\n var componentId = _ref.componentId,\n matchIndex = _ref.matchIndex;\n\n var nextComp = existingComponents[i + 1];\n var cssFromDOM = nextComp ? css.slice(matchIndex, nextComp.matchIndex) : css.slice(matchIndex);\n return { componentId: componentId, cssFromDOM: cssFromDOM };\n });\n});\n\n// \n/* eslint-disable camelcase, no-undef */\n\nvar getNonce = (function () {\n return true ? __webpack_require__.nc : undefined;\n});\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\n\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n// \n/* eslint-disable no-underscore-dangle */\n/*\n * Browser Style Sheet with Rehydration\n *\n * \n *\n * Note: replace · with * in the above snippet.\n * */\nvar COMPONENTS_PER_TAG = 40;\n\nvar BrowserTag = function () {\n function BrowserTag(el, isLocal) {\n var existingSource = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n classCallCheck(this, BrowserTag);\n\n this.el = el;\n this.isLocal = isLocal;\n this.ready = false;\n\n var extractedComps = extractCompsFromCSS(existingSource);\n\n this.size = extractedComps.length;\n this.components = extractedComps.reduce(function (acc, obj) {\n acc[obj.componentId] = obj; // eslint-disable-line no-param-reassign\n return acc;\n }, {});\n }\n\n BrowserTag.prototype.isFull = function isFull() {\n return this.size >= COMPONENTS_PER_TAG;\n };\n\n BrowserTag.prototype.addComponent = function addComponent(componentId) {\n if (!this.ready) this.replaceElement();\n if (\"development\" !== 'production' && this.components[componentId]) {\n throw new Error('Trying to add Component \\'' + componentId + '\\' twice!');\n }\n\n var comp = { componentId: componentId, textNode: document.createTextNode('') };\n this.el.appendChild(comp.textNode);\n\n this.size += 1;\n this.components[componentId] = comp;\n };\n\n BrowserTag.prototype.inject = function inject(componentId, css, name) {\n if (!this.ready) this.replaceElement();\n var comp = this.components[componentId];\n\n if (\"development\" !== 'production' && !comp) {\n throw new Error('Must add a new component before you can inject css into it');\n }\n if (comp.textNode.data === '') {\n comp.textNode.appendData('\\n/* sc-component-id: ' + componentId + ' */\\n');\n }\n\n comp.textNode.appendData(css);\n if (name) {\n var existingNames = this.el.getAttribute(SC_ATTR);\n this.el.setAttribute(SC_ATTR, existingNames ? existingNames + ' ' + name : name);\n }\n\n var nonce = getNonce();\n\n if (nonce) {\n this.el.setAttribute('nonce', nonce);\n }\n };\n\n BrowserTag.prototype.toHTML = function toHTML() {\n return this.el.outerHTML;\n };\n\n BrowserTag.prototype.toReactElement = function toReactElement() {\n throw new Error(\"BrowserTag doesn't implement toReactElement!\");\n };\n\n BrowserTag.prototype.clone = function clone() {\n throw new Error('BrowserTag cannot be cloned!');\n };\n\n /* Because we care about source order, before we can inject anything we need to\n * create a text node for each component and replace the existing CSS. */\n\n\n BrowserTag.prototype.replaceElement = function replaceElement() {\n var _this = this;\n\n this.ready = true;\n // We have nothing to inject. Use the current el.\n if (this.size === 0) return;\n\n // Build up our replacement style tag\n var newEl = this.el.cloneNode();\n newEl.appendChild(document.createTextNode('\\n'));\n\n Object.keys(this.components).forEach(function (key) {\n var comp = _this.components[key];\n\n // eslint-disable-next-line no-param-reassign\n comp.textNode = document.createTextNode(comp.cssFromDOM);\n newEl.appendChild(comp.textNode);\n });\n\n if (!this.el.parentNode) {\n throw new Error(\"Trying to replace an element that wasn't mounted!\");\n }\n\n // The ol' switcheroo\n this.el.parentNode.replaceChild(newEl, this.el);\n this.el = newEl;\n };\n\n return BrowserTag;\n}();\n\n/* Factory function to separate DOM operations from logical ones*/\n\n\nvar BrowserStyleSheet = {\n create: function create() {\n var tags = [];\n var names = {};\n\n /* Construct existing state from DOM */\n var nodes = document.querySelectorAll('[' + SC_ATTR + ']');\n var nodesLength = nodes.length;\n\n for (var i = 0; i < nodesLength; i += 1) {\n var el = nodes[i];\n\n tags.push(new BrowserTag(el, el.getAttribute(LOCAL_ATTR) === 'true', el.innerHTML));\n\n var attr = el.getAttribute(SC_ATTR);\n if (attr) {\n attr.trim().split(/\\s+/).forEach(function (name) {\n names[name] = true;\n });\n }\n }\n\n /* Factory for making more tags */\n var tagConstructor = function tagConstructor(isLocal) {\n var el = document.createElement('style');\n el.type = 'text/css';\n el.setAttribute(SC_ATTR, '');\n el.setAttribute(LOCAL_ATTR, isLocal ? 'true' : 'false');\n if (!document.head) throw new Error('Missing document ');\n document.head.appendChild(el);\n return new BrowserTag(el, isLocal);\n };\n\n return new StyleSheet(tagConstructor, tags, names);\n }\n};\n\n// \nvar SC_ATTR = 'data-styled-components';\nvar LOCAL_ATTR = 'data-styled-components-is-local';\nvar CONTEXT_KEY = '__styled-components-stylesheet__';\n\n/* eslint-disable flowtype/object-type-delimiter */\n\n/* eslint-enable flowtype/object-type-delimiter */\n\nvar instance = null;\n// eslint-disable-next-line no-use-before-define\nvar clones = [];\n\nvar StyleSheet = function () {\n function StyleSheet(tagConstructor) {\n var tags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var names = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, StyleSheet);\n this.hashes = {};\n this.deferredInjections = {};\n this.stylesCacheable = typeof document !== 'undefined';\n\n this.tagConstructor = tagConstructor;\n this.tags = tags;\n this.names = names;\n this.constructComponentTagMap();\n }\n\n // helper for `ComponentStyle` to know when it cache static styles.\n // staticly styled-component can not safely cache styles on the server\n // without all `ComponentStyle` instances saving a reference to the\n // the styleSheet instance they last rendered with,\n // or listening to creation / reset events. otherwise you might create\n // a component with one stylesheet and render it another api response\n // with another, losing styles on from your server-side render.\n\n\n StyleSheet.prototype.constructComponentTagMap = function constructComponentTagMap() {\n var _this = this;\n\n this.componentTags = {};\n\n this.tags.forEach(function (tag) {\n Object.keys(tag.components).forEach(function (componentId) {\n _this.componentTags[componentId] = tag;\n });\n });\n };\n\n /* Best level of caching—get the name from the hash straight away. */\n\n\n StyleSheet.prototype.getName = function getName(hash) {\n return this.hashes[hash.toString()];\n };\n\n /* Second level of caching—if the name is already in the dom, don't\n * inject anything and record the hash for getName next time. */\n\n\n StyleSheet.prototype.alreadyInjected = function alreadyInjected(hash, name) {\n if (!this.names[name]) return false;\n\n this.hashes[hash.toString()] = name;\n return true;\n };\n\n /* Third type of caching—don't inject components' componentId twice. */\n\n\n StyleSheet.prototype.hasInjectedComponent = function hasInjectedComponent(componentId) {\n return !!this.componentTags[componentId];\n };\n\n StyleSheet.prototype.deferredInject = function deferredInject(componentId, isLocal, css) {\n if (this === instance) {\n clones.forEach(function (clone) {\n clone.deferredInject(componentId, isLocal, css);\n });\n }\n\n this.getOrCreateTag(componentId, isLocal);\n this.deferredInjections[componentId] = css;\n };\n\n StyleSheet.prototype.inject = function inject(componentId, isLocal, css, hash, name) {\n if (this === instance) {\n clones.forEach(function (clone) {\n clone.inject(componentId, isLocal, css);\n });\n }\n\n var tag = this.getOrCreateTag(componentId, isLocal);\n\n var deferredInjection = this.deferredInjections[componentId];\n if (deferredInjection) {\n tag.inject(componentId, deferredInjection);\n delete this.deferredInjections[componentId];\n }\n\n tag.inject(componentId, css, name);\n\n if (hash && name) {\n this.hashes[hash.toString()] = name;\n }\n };\n\n StyleSheet.prototype.toHTML = function toHTML() {\n return this.tags.map(function (tag) {\n return tag.toHTML();\n }).join('');\n };\n\n StyleSheet.prototype.toReactElements = function toReactElements() {\n return this.tags.map(function (tag, i) {\n return tag.toReactElement('sc-' + i);\n });\n };\n\n StyleSheet.prototype.getOrCreateTag = function getOrCreateTag(componentId, isLocal) {\n var existingTag = this.componentTags[componentId];\n if (existingTag) {\n return existingTag;\n }\n\n var lastTag = this.tags[this.tags.length - 1];\n var componentTag = !lastTag || lastTag.isFull() || lastTag.isLocal !== isLocal ? this.createNewTag(isLocal) : lastTag;\n this.componentTags[componentId] = componentTag;\n componentTag.addComponent(componentId);\n return componentTag;\n };\n\n StyleSheet.prototype.createNewTag = function createNewTag(isLocal) {\n var newTag = this.tagConstructor(isLocal);\n this.tags.push(newTag);\n return newTag;\n };\n\n StyleSheet.reset = function reset(isServer) {\n instance = StyleSheet.create(isServer);\n };\n\n /* We can make isServer totally implicit once Jest 20 drops and we\n * can change environment on a per-test basis. */\n\n\n StyleSheet.create = function create() {\n var isServer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : typeof document === 'undefined';\n\n return (isServer ? ServerStyleSheet : BrowserStyleSheet).create();\n };\n\n StyleSheet.clone = function clone(oldSheet) {\n var newSheet = new StyleSheet(oldSheet.tagConstructor, oldSheet.tags.map(function (tag) {\n return tag.clone();\n }), _extends({}, oldSheet.names));\n\n newSheet.hashes = _extends({}, oldSheet.hashes);\n newSheet.deferredInjections = _extends({}, oldSheet.deferredInjections);\n clones.push(newSheet);\n\n return newSheet;\n };\n\n createClass(StyleSheet, null, [{\n key: 'instance',\n get: function get$$1() {\n return instance || (instance = StyleSheet.create());\n }\n }]);\n return StyleSheet;\n}();\n\nvar _StyleSheetManager$ch;\n\n// \nvar StyleSheetManager = function (_Component) {\n inherits(StyleSheetManager, _Component);\n\n function StyleSheetManager() {\n classCallCheck(this, StyleSheetManager);\n return possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n StyleSheetManager.prototype.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[CONTEXT_KEY] = this.props.sheet, _ref;\n };\n\n StyleSheetManager.prototype.render = function render() {\n /* eslint-disable react/prop-types */\n // Flow v0.43.1 will report an error accessing the `children` property,\n // but v0.47.0 will not. It is necessary to use a type cast instead of\n // a \"fixme\" comment to satisfy both Flow versions.\n return react__WEBPACK_IMPORTED_MODULE_2___default.a.Children.only(this.props.children);\n };\n\n return StyleSheetManager;\n}(react__WEBPACK_IMPORTED_MODULE_2__[\"Component\"]);\n\nStyleSheetManager.childContextTypes = (_StyleSheetManager$ch = {}, _StyleSheetManager$ch[CONTEXT_KEY] = prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.instanceOf(StyleSheet), prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.instanceOf(ServerStyleSheet)]).isRequired, _StyleSheetManager$ch);\n\nStyleSheetManager.propTypes = {\n sheet: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.instanceOf(StyleSheet), prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.instanceOf(ServerStyleSheet)]).isRequired\n};\n\n// \n/* eslint-disable no-underscore-dangle */\nvar ServerTag = function () {\n function ServerTag(isLocal) {\n classCallCheck(this, ServerTag);\n\n this.isLocal = isLocal;\n this.components = {};\n this.size = 0;\n this.names = [];\n }\n\n ServerTag.prototype.isFull = function isFull() {\n return false;\n };\n\n ServerTag.prototype.addComponent = function addComponent(componentId) {\n if (\"development\" !== 'production' && this.components[componentId]) {\n throw new Error('Trying to add Component \\'' + componentId + '\\' twice!');\n }\n this.components[componentId] = { componentId: componentId, css: '' };\n this.size += 1;\n };\n\n ServerTag.prototype.concatenateCSS = function concatenateCSS() {\n var _this = this;\n\n return Object.keys(this.components).reduce(function (styles, k) {\n return styles + _this.components[k].css;\n }, '');\n };\n\n ServerTag.prototype.inject = function inject(componentId, css, name) {\n var comp = this.components[componentId];\n\n if (\"development\" !== 'production' && !comp) {\n throw new Error('Must add a new component before you can inject css into it');\n }\n if (comp.css === '') comp.css = '/* sc-component-id: ' + componentId + ' */\\n';\n\n comp.css += css.replace(/\\n*$/, '\\n');\n\n if (name) this.names.push(name);\n };\n\n ServerTag.prototype.toHTML = function toHTML() {\n var attrs = ['type=\"text/css\"', SC_ATTR + '=\"' + this.names.join(' ') + '\"', LOCAL_ATTR + '=\"' + (this.isLocal ? 'true' : 'false') + '\"'];\n\n var nonce = getNonce();\n\n if (nonce) {\n attrs.push('nonce=\"' + nonce + '\"');\n }\n\n return '';\n };\n\n ServerTag.prototype.toReactElement = function toReactElement(key) {\n var _attrs;\n\n var attrs = (_attrs = {}, _attrs[SC_ATTR] = this.names.join(' '), _attrs[LOCAL_ATTR] = this.isLocal.toString(), _attrs);\n\n var nonce = getNonce();\n\n if (nonce) {\n attrs.nonce = nonce;\n }\n\n return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement('style', _extends({\n key: key,\n type: 'text/css'\n }, attrs, {\n dangerouslySetInnerHTML: { __html: this.concatenateCSS() }\n }));\n };\n\n ServerTag.prototype.clone = function clone() {\n var _this2 = this;\n\n var copy = new ServerTag(this.isLocal);\n copy.names = [].concat(this.names);\n copy.size = this.size;\n copy.components = Object.keys(this.components).reduce(function (acc, key) {\n acc[key] = _extends({}, _this2.components[key]); // eslint-disable-line no-param-reassign\n return acc;\n }, {});\n\n return copy;\n };\n\n return ServerTag;\n}();\n\nvar ServerStyleSheet = function () {\n function ServerStyleSheet() {\n classCallCheck(this, ServerStyleSheet);\n\n this.instance = StyleSheet.clone(StyleSheet.instance);\n }\n\n ServerStyleSheet.prototype.collectStyles = function collectStyles(children) {\n if (this.closed) {\n throw new Error(\"Can't collect styles once you've called getStyleTags!\");\n }\n return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\n StyleSheetManager,\n { sheet: this.instance },\n children\n );\n };\n\n ServerStyleSheet.prototype.getStyleTags = function getStyleTags() {\n if (!this.closed) {\n clones.splice(clones.indexOf(this.instance), 1);\n this.closed = true;\n }\n\n return this.instance.toHTML();\n };\n\n ServerStyleSheet.prototype.getStyleElement = function getStyleElement() {\n if (!this.closed) {\n clones.splice(clones.indexOf(this.instance), 1);\n this.closed = true;\n }\n\n return this.instance.toReactElements();\n };\n\n ServerStyleSheet.create = function create() {\n return new StyleSheet(function (isLocal) {\n return new ServerTag(isLocal);\n });\n };\n\n return ServerStyleSheet;\n}();\n\n// \n\nvar LIMIT = 200;\n\nvar createWarnTooManyClasses = (function (displayName) {\n var generatedClasses = {};\n var warningSeen = false;\n\n return function (className) {\n if (!warningSeen) {\n generatedClasses[className] = true;\n if (Object.keys(generatedClasses).length >= LIMIT) {\n // Unable to find latestRule in test environment.\n /* eslint-disable no-console, prefer-template */\n console.warn('Over ' + LIMIT + ' classes were generated for component ' + displayName + '. \\n' + 'Consider using the attrs method, together with a style object for frequently changed styles.\\n' + 'Example:\\n' + ' const Component = styled.div.attrs({\\n' + ' style: ({ background }) => ({\\n' + ' background,\\n' + ' }),\\n' + ' })`width: 100%;`\\n\\n' + ' ');\n warningSeen = true;\n generatedClasses = {};\n }\n }\n };\n});\n\n// \n/* eslint-disable max-len */\n/**\n * Trying to avoid the unknown-prop errors on styled components by filtering by\n * React's attribute whitelist.\n *\n * To regenerate this regex:\n *\n * 1. `npm i -g regexgen` (https://github.com/devongovett/regexgen)\n * 2. Run `regexgen` with the list of space-separated words below as input\n * 3. Surround the emitted regex with this: `/^(GENERATED_REGEX)$/` -- this will ensure a full string match\n * and no false positives from partials\n **/\n/*\nchildren dangerouslySetInnerHTML key ref autoFocus defaultValue valueLink defaultChecked checkedLink innerHTML suppressContentEditableWarning onFocusIn onFocusOut className onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onReset onClick onContextMenu onDoubleClick onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onAnimationStart onAnimationEnd onAnimationIteration onTransitionEnd onCopyCapture onCutCapture onPasteCapture onCompositionEndCapture onCompositionStartCapture onCompositionUpdateCapture onKeyDownCapture onKeyPressCapture onKeyUpCapture onFocusCapture onBlurCapture onChangeCapture onInputCapture onSubmitCapture onResetCapture onClickCapture onContextMenuCapture onDoubleClickCapture onDragCapture onDragEndCapture onDragEnterCapture onDragExitCapture onDragLeaveCapture onDragOverCapture onDragStartCapture onDropCapture onMouseDownCapture onMouseEnterCapture onMouseLeaveCapture onMouseMoveCapture onMouseOutCapture onMouseOverCapture onMouseUpCapture onSelectCapture onTouchCancelCapture onTouchEndCapture onTouchMoveCapture onTouchStartCapture onScrollCapture onWheelCapture onAbortCapture onCanPlayCapture onCanPlayThroughCapture onDurationChangeCapture onEmptiedCapture onEncryptedCapture onEndedCapture onErrorCapture onLoadedDataCapture onLoadedMetadataCapture onLoadStartCapture onPauseCapture onPlayCapture onPlayingCapture onProgressCapture onRateChangeCapture onSeekedCapture onSeekingCapture onStalledCapture onSuspendCapture onTimeUpdateCapture onVolumeChangeCapture onWaitingCapture onLoadCapture onAnimationStartCapture onAnimationEndCapture onAnimationIterationCapture onTransitionEndCapture accept acceptCharset accessKey action allowFullScreen allowTransparency alt as async autoComplete autoPlay capture cellPadding cellSpacing charSet challenge checked cite classID className cols colSpan content contentEditable contextMenu controls coords crossOrigin data dateTime default defer dir disabled download draggable encType form formAction formEncType formMethod formNoValidate formTarget frameBorder headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media mediaGroup method min minLength multiple muted name nonce noValidate open optimum pattern placeholder playsInline poster preload profile radioGroup readOnly referrerPolicy rel required reversed role rows rowSpan sandbox scope scoped scrolling seamless selected shape size sizes span spellCheck src srcDoc srcLang srcSet start step style summary tabIndex target title type useMap value width wmode wrap about datatype inlist prefix property resource typeof vocab autoCapitalize autoCorrect autoSave color itemProp itemScope itemType itemID itemRef results security unselectable accentHeight accumulate additive alignmentBaseline allowReorder alphabetic amplitude arabicForm ascent attributeName attributeType autoReverse azimuth baseFrequency baseProfile baselineShift bbox begin bias by calcMode capHeight clip clipPath clipRule clipPathUnits colorInterpolation colorInterpolationFilters colorProfile colorRendering contentScriptType contentStyleType cursor cx cy d decelerate descent diffuseConstant direction display divisor dominantBaseline dur dx dy edgeMode elevation enableBackground end exponent externalResourcesRequired fill fillOpacity fillRule filter filterRes filterUnits floodColor floodOpacity focusable fontFamily fontSize fontSizeAdjust fontStretch fontStyle fontVariant fontWeight format from fx fy g1 g2 glyphName glyphOrientationHorizontal glyphOrientationVertical glyphRef gradientTransform gradientUnits hanging horizAdvX horizOriginX ideographic imageRendering in in2 intercept k k1 k2 k3 k4 kernelMatrix kernelUnitLength kerning keyPoints keySplines keyTimes lengthAdjust letterSpacing lightingColor limitingConeAngle local markerEnd markerMid markerStart markerHeight markerUnits markerWidth mask maskContentUnits maskUnits mathematical mode numOctaves offset opacity operator order orient orientation origin overflow overlinePosition overlineThickness paintOrder panose1 pathLength patternContentUnits patternTransform patternUnits pointerEvents points pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits r radius refX refY renderingIntent repeatCount repeatDur requiredExtensions requiredFeatures restart result rotate rx ry scale seed shapeRendering slope spacing specularConstant specularExponent speed spreadMethod startOffset stdDeviation stemh stemv stitchTiles stopColor stopOpacity strikethroughPosition strikethroughThickness string stroke strokeDasharray strokeDashoffset strokeLinecap strokeLinejoin strokeMiterlimit strokeOpacity strokeWidth surfaceScale systemLanguage tableValues targetX targetY textAnchor textDecoration textRendering textLength to transform u1 u2 underlinePosition underlineThickness unicode unicodeBidi unicodeRange unitsPerEm vAlphabetic vHanging vIdeographic vMathematical values vectorEffect version vertAdvY vertOriginX vertOriginY viewBox viewTarget visibility widths wordSpacing writingMode x xHeight x1 x2 xChannelSelector xlinkActuate xlinkArcrole xlinkHref xlinkRole xlinkShow xlinkTitle xlinkType xmlBase xmlns xmlnsXlink xmlLang xmlSpace y y1 y2 yChannelSelector z zoomAndPan\n*/\n/* eslint-enable max-len */\n\nvar ATTRIBUTE_REGEX = /^((?:s(?:uppressContentEditableWarn|croll|pac)|(?:shape|image|text)Render|(?:letter|word)Spac|vHang|hang)ing|(?:on(?:AnimationIteration|C(?:o(?:mposition(?:Update|Start|End)|ntextMenu|py)|anPlayThrough|anPlay|hange|lick|ut)|(?:(?:Duration|Volume|Rate)Chang|(?:MouseLea|(?:Touch|Mouse)Mo|DragLea)v|Paus)e|Loaded(?:Metad|D)ata|(?:Animation|Touch|Load|Drag)Start|(?:(?:T(?:ransition|ouch)|Animation)E|Suspe)nd|DoubleClick|(?:TouchCanc|Whe)el|(?:Mouse(?:Ent|Ov)e|Drag(?:Ent|Ov)e|Erro)r|TimeUpdate|(?:E(?:n(?:crypt|d)|mpti)|S(?:tall|eek))ed|MouseDown|P(?:rogress|laying)|(?:MouseOu|DragExi|S(?:elec|ubmi)|Rese|Inpu)t|KeyPress|DragEnd|Key(?:Down|Up)|(?:Wait|Seek)ing|(?:MouseU|Dro)p|Scroll|Paste|Focus|Abort|Drag|Play|Load|Blur)Captur|alignmentBaselin|(?:limitingConeAng|xlink(?:(?:Arcr|R)o|Tit)|s(?:urfaceSca|ty|ca)|unselectab|baseProfi|fontSty|(?:focus|dragg)ab|multip|profi|tit)l|d(?:ominantBaselin|efaultValu)|a(?:uto(?:Capitaliz|Revers|Sav)|dditiv)|(?:(?:formNoValid|xlinkActu|noValid|accumul|rot)a|autoComple|decelera)t|(?:(?:attribute|item)T|datat)yp|(?:attribute|glyph)Nam|playsInlin|(?:formE|e)ncTyp|(?:writing|input|edge)Mod|(?:xlinkTy|itemSco|keyTy|slo)p|(?:amplitu|mo)d|(?:xmlSpa|non)c|fillRul|(?:dateTi|na)m|r(?:esourc|ol)|xmlBas|wmod)e|(?:glyphOrientationHorizont|loc)al|(?:externalResourcesRequir|select|revers|mut)ed|c(?:o(?:lorInterpolationFilter|ntrol|ord)s|o(?:lor(?:Interpolation)?|ntent)|(?:ontentS(?:cript|tyle)Typ|o(?:ntentEditab|lorProfi)l|l(?:assNam|ipRul)|a(?:lcMod|ptur)|it)e|olorRendering|l(?:ipPathUnits|assID)|o(?:ntextMenu|ls)|h(?:eckedLink|a(?:llenge|rSet)|ildren|ecked)|ell(?:Spac|Padd)ing|(?:rossOrigi|olSpa)n|apHeight|lip(?:Path)?|ursor|[xy])|glyphOrientationVertical|d(?:angerouslySetInnerHTML|efaultChecked|ownload|isabled|isplay|[xy])|(?:s(?:trikethroughThickn|eaml)es|(?:und|ov)erlineThicknes|r(?:equiredExtension|adiu)|(?:requiredFeatur|tableValu|stitchTil|numOctav|filterR)e|key(?:(?:Splin|Tim)e|Param)|autoFocu|header|bia)s|(?:(?:st(?:rikethroughPosi|dDevia)|(?:und|ov)erlinePosi|(?:textDecor|elev)a|orienta)tio|(?:strokeLinejo|orig)i|formActio|zoomAndPa|onFocusI|directio|(?:vers|act)io|rowSpa|begi|ico)n|o(?:n(?:AnimationIteration|C(?:o(?:mposition(?:Update|Start|End)|ntextMenu|py)|anPlayThrough|anPlay|hange|lick|ut)|(?:(?:Duration|Volume|Rate)Chang|(?:MouseLea|(?:Touch|Mouse)Mo|DragLea)v|Paus)e|Loaded(?:Metad|D)ata|(?:Animation|Touch|Load|Drag)Start|(?:(?:T(?:ransition|ouch)|Animation)E|Suspe)nd|DoubleClick|(?:TouchCanc|Whe)el|(?:Mouse(?:Ent|Ov)e|Drag(?:Ent|Ov)e|Erro)r|TimeUpdate|(?:E(?:n(?:crypt|d)|mpti)|S(?:tall|eek))ed|MouseDown|P(?:rogress|laying)|(?:MouseOu|DragExi|S(?:elec|ubmi)|Rese|Inpu)t|KeyPress|DragEnd|Key(?:Down|Up)|(?:Wait|Seek)ing|(?:MouseU|Dro)p|Scroll|Paste|Focus|Abort|Drag|Play|Load|Blur)|rient)|p(?:reserveA(?:spectRatio|lpha)|ointsAt[X-Z]|anose1)|(?:patternContent|ma(?:sk(?:Content)?|rker)|primitive|gradient|pattern|filter)Units|(?:gradientT|patternT|t)ransform|(?:(?:allowTranspar|baseFrequ)enc|re(?:ferrerPolic|adOnl)|(?:(?:st(?:roke|op)O|floodO|fillO|o)pac|integr|secur)it|visibilit|fontFamil|accessKe|propert|summar)y|(?:strokeMiterlimi|(?:specularConsta|repeatCou|fontVaria)n|(?:(?:specularE|e)xpon|renderingInt|asc)en|d(?:iffuseConsta|esce)n|(?:fontSizeAdju|lengthAdju|manife)s|baselineShif|vectorEffec|(?:(?:mar(?:ker|gin)|x)H|accentH|fontW)eigh|a(?:utoCorrec|bou)|markerStar|onFocusOu|in(?:tercep|lis)|restar|forma|heigh|lis)t|(?:(?:st(?:rokeDasho|artO)|o)ffs|acceptChars|formTarg|viewTarg|srcS)et|(?:(?:enableBackgrou|markerE)n|s(?:p(?:readMetho|ee)|ee)|formMetho|m(?:arkerMi|etho)|preloa|kin)d|k(?:ernel(?:UnitLength|Matrix)|[1-4])|(?:[xy]ChannelSelect|lightingCol|textAnch|floodCol|stopCol|operat|htmlF)or|(?:allowFullScre|hidd)en|strokeDasharray|systemLanguage|(?:strokeLineca|itemPro|useMa|wra|loo)p|v(?:Mathematical|ert(?:Origin[XY]|AdvY)|alues|ocab)|(?:pointerEve|keyPoi)nts|unicodeRange|(?:(?:allowReord|placehold|frameBord|paintOrd|post|ord)e|repeatDu|d(?:efe|u))r|mathematical|(?:vI|i)deographic|h(?:oriz(?:Origin|Adv)X|ttpEquiv)|u(?:nicodeBidi|[12])|(?:fontStretc|hig)h|(?:(?:mar(?:ker|gin)W|strokeW)id|azimu)th|vAlphabetic|mediaGroup|spellCheck|(?:unitsPerE|optimu|fro)m|r(?:adioGroup|e(?:sults|f[XY]|l)|ows|[xy])|(?:xmlnsXl|valueL)ink|a(?:rabicForm|l(?:phabetic|t)|sync)|pathLength|(?:text|m(?:in|ax))Length|innerHTML|xlinkShow|(?:xlinkHr|glyphR)ef|r(?:e(?:quired|sult|f))?|o(?:verflow|pen)|(?:tabInde|(?:sand|b)bo|viewBo)x|(?:(?:href|xml|src)La|kerni)ng|f(?:o(?:ntSize|rm)|il(?:ter|l))|autoPlay|unicode|p(?:attern|oints)|t(?:arget[XY]|o)|i(?:temRef|n2|s)|divisor|d(?:efault|ata|ir)?|srcDoc|s(?:coped|te(?:m[hv]|p)|pan)|(?:width|size)s|(?:stri|la)ng|prefix|itemID|s(?:t(?:roke|art)|hape|cope|rc)|a(?:ccept|s)|t(?:arget|ype)|typeof|width|value|x(?:mlns)?|label|m(?:edia|a(?:sk|x)|in)|size|href|k(?:ey)?|end|low|x[12]|i[dn]|y[12]|g[12]|by|f[xy]|[yz])$/;\n\n/* From DOMProperty */\nvar ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nvar ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nvar isCustomAttribute = RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$'));\n\nvar validAttr = (function (name) {\n return ATTRIBUTE_REGEX.test(name) || isCustomAttribute(name.toLowerCase());\n});\n\n// \n\n\nfunction isTag(target) /* : %checks */{\n return typeof target === 'string';\n}\n\n// \n\n\nfunction isStyledComponent(target) /* : %checks */{\n return typeof target === 'function' && typeof target.styledComponentId === 'string';\n}\n\n// \n\n/* eslint-disable no-undef */\nfunction getComponentName(target) {\n return target.displayName || target.name || 'Component';\n}\n\n// \n\n\nvar determineTheme = (function (props, fallbackTheme, defaultProps) {\n // Props should take precedence over ThemeProvider, which should take precedence over\n // defaultProps, but React automatically puts defaultProps on props.\n\n /* eslint-disable react/prop-types */\n var isDefaultTheme = defaultProps && props.theme === defaultProps.theme;\n var theme = props.theme && !isDefaultTheme ? props.theme : fallbackTheme;\n /* eslint-enable */\n\n return theme;\n});\n\n// \nvar escapeRegex = /[[\\].#*$><+~=|^:(),\"'`-]+/g;\nvar dashesAtEnds = /(^-|-$)/g;\n\n/**\n * TODO: Explore using CSS.escape when it becomes more available\n * in evergreen browsers.\n */\nfunction escape(str) {\n return str\n // Replace all possible CSS selectors\n .replace(escapeRegex, '-')\n\n // Remove extraneous hyphens at the start and end\n .replace(dashesAtEnds, '');\n}\n\n// \n/**\n * Creates a broadcast that can be listened to, i.e. simple event emitter\n *\n * @see https://github.com/ReactTraining/react-broadcast\n */\n\nvar createBroadcast = function createBroadcast(initialState) {\n var listeners = {};\n var id = 0;\n var state = initialState;\n\n function publish(nextState) {\n state = nextState;\n\n // eslint-disable-next-line guard-for-in, no-restricted-syntax\n for (var key in listeners) {\n var listener = listeners[key];\n if (listener === undefined) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n listener(state);\n }\n }\n\n function subscribe(listener) {\n var currentId = id;\n listeners[currentId] = listener;\n id += 1;\n listener(state);\n return currentId;\n }\n\n function unsubscribe(unsubID) {\n listeners[unsubID] = undefined;\n }\n\n return { publish: publish, subscribe: subscribe, unsubscribe: unsubscribe };\n};\n\n// \n// Helper to call a given function, only once\nvar once = (function (cb) {\n var called = false;\n\n return function () {\n if (!called) {\n called = true;\n cb();\n }\n };\n});\n\nvar _ThemeProvider$childC;\nvar _ThemeProvider$contex;\n\n// \n/* globals React$Element */\n// NOTE: DO NOT CHANGE, changing this is a semver major change!\nvar CHANNEL = '__styled-components__';\nvar CHANNEL_NEXT = CHANNEL + 'next__';\n\nvar CONTEXT_CHANNEL_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.shape({\n getTheme: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.func,\n subscribe: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.func,\n unsubscribe: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.func\n});\n\nvar warnChannelDeprecated = void 0;\nif (true) {\n warnChannelDeprecated = once(function () {\n // eslint-disable-next-line no-console\n console.error('Warning: Usage of `context.' + CHANNEL + '` as a function is deprecated. It will be replaced with the object on `.context.' + CHANNEL_NEXT + '` in a future version.');\n });\n}\n\nvar isFunction = function isFunction(test) {\n return typeof test === 'function';\n};\n\n/**\n * Provide a theme to an entire react component tree via context and event listeners (have to do\n * both context and event emitter as pure components block context updates)\n */\n\nvar ThemeProvider = function (_Component) {\n inherits(ThemeProvider, _Component);\n\n function ThemeProvider() {\n classCallCheck(this, ThemeProvider);\n\n var _this = possibleConstructorReturn(this, _Component.call(this));\n\n _this.unsubscribeToOuterId = -1;\n\n _this.getTheme = _this.getTheme.bind(_this);\n return _this;\n }\n\n ThemeProvider.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n // If there is a ThemeProvider wrapper anywhere around this theme provider, merge this theme\n // with the outer theme\n var outerContext = this.context[CHANNEL_NEXT];\n if (outerContext !== undefined) {\n this.unsubscribeToOuterId = outerContext.subscribe(function (theme) {\n _this2.outerTheme = theme;\n });\n }\n this.broadcast = createBroadcast(this.getTheme());\n };\n\n ThemeProvider.prototype.getChildContext = function getChildContext() {\n var _this3 = this,\n _babelHelpers$extends;\n\n return _extends({}, this.context, (_babelHelpers$extends = {}, _babelHelpers$extends[CHANNEL_NEXT] = {\n getTheme: this.getTheme,\n subscribe: this.broadcast.subscribe,\n unsubscribe: this.broadcast.unsubscribe\n }, _babelHelpers$extends[CHANNEL] = function (subscriber) {\n if (true) {\n warnChannelDeprecated();\n }\n\n // Patch the old `subscribe` provide via `CHANNEL` for older clients.\n var unsubscribeId = _this3.broadcast.subscribe(subscriber);\n return function () {\n return _this3.broadcast.unsubscribe(unsubscribeId);\n };\n }, _babelHelpers$extends));\n };\n\n ThemeProvider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.theme !== nextProps.theme) {\n this.broadcast.publish(this.getTheme(nextProps.theme));\n }\n };\n\n ThemeProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.unsubscribeToOuterId !== -1) {\n this.context[CHANNEL_NEXT].unsubscribe(this.unsubscribeToOuterId);\n }\n };\n\n // Get the theme from the props, supporting both (outerTheme) => {} as well as object notation\n\n\n ThemeProvider.prototype.getTheme = function getTheme(passedTheme) {\n var theme = passedTheme || this.props.theme;\n if (isFunction(theme)) {\n var mergedTheme = theme(this.outerTheme);\n if (\"development\" !== 'production' && !is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(mergedTheme)) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n return mergedTheme;\n }\n if (!is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(theme)) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n }\n return _extends({}, this.outerTheme, theme);\n };\n\n ThemeProvider.prototype.render = function render() {\n if (!this.props.children) {\n return null;\n }\n return react__WEBPACK_IMPORTED_MODULE_2___default.a.Children.only(this.props.children);\n };\n\n return ThemeProvider;\n}(react__WEBPACK_IMPORTED_MODULE_2__[\"Component\"]);\n\nThemeProvider.childContextTypes = (_ThemeProvider$childC = {}, _ThemeProvider$childC[CHANNEL] = prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.func, _ThemeProvider$childC[CHANNEL_NEXT] = CONTEXT_CHANNEL_SHAPE, _ThemeProvider$childC);\nThemeProvider.contextTypes = (_ThemeProvider$contex = {}, _ThemeProvider$contex[CHANNEL_NEXT] = CONTEXT_CHANNEL_SHAPE, _ThemeProvider$contex);\n\n// \n\n// HACK for generating all static styles without needing to allocate\n// an empty execution context every single time...\nvar STATIC_EXECUTION_CONTEXT = {};\n\nvar _StyledComponent = (function (ComponentStyle, constructWithOptions) {\n var identifiers = {};\n\n /* We depend on components having unique IDs */\n var generateId = function generateId(_displayName, parentComponentId) {\n var displayName = typeof _displayName !== 'string' ? 'sc' : escape(_displayName);\n\n var componentId = void 0;\n\n /**\n * only fall back to hashing the component injection order if\n * a proper displayName isn't provided by the babel plugin\n */\n if (!_displayName) {\n var nr = (identifiers[displayName] || 0) + 1;\n identifiers[displayName] = nr;\n\n componentId = displayName + '-' + ComponentStyle.generateName(displayName + nr);\n } else {\n componentId = displayName + '-' + ComponentStyle.generateName(displayName);\n }\n\n return parentComponentId !== undefined ? parentComponentId + '-' + componentId : componentId;\n };\n\n var BaseStyledComponent = function (_Component) {\n inherits(BaseStyledComponent, _Component);\n\n function BaseStyledComponent() {\n var _temp, _this, _ret;\n\n classCallCheck(this, BaseStyledComponent);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.attrs = {}, _this.state = {\n theme: null,\n generatedClassName: ''\n }, _this.unsubscribeId = -1, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n BaseStyledComponent.prototype.unsubscribeFromContext = function unsubscribeFromContext() {\n if (this.unsubscribeId !== -1) {\n this.context[CHANNEL_NEXT].unsubscribe(this.unsubscribeId);\n }\n };\n\n BaseStyledComponent.prototype.buildExecutionContext = function buildExecutionContext(theme, props) {\n var attrs = this.constructor.attrs;\n\n var context = _extends({}, props, { theme: theme });\n if (attrs === undefined) {\n return context;\n }\n\n this.attrs = Object.keys(attrs).reduce(function (acc, key) {\n var attr = attrs[key];\n // eslint-disable-next-line no-param-reassign\n acc[key] = typeof attr === 'function' ? attr(context) : attr;\n return acc;\n }, {});\n\n return _extends({}, context, this.attrs);\n };\n\n BaseStyledComponent.prototype.generateAndInjectStyles = function generateAndInjectStyles(theme, props) {\n var _constructor = this.constructor,\n attrs = _constructor.attrs,\n componentStyle = _constructor.componentStyle,\n warnTooManyClasses = _constructor.warnTooManyClasses;\n\n var styleSheet = this.context[CONTEXT_KEY] || StyleSheet.instance;\n\n // staticaly styled-components don't need to build an execution context object,\n // and shouldn't be increasing the number of class names\n if (componentStyle.isStatic && attrs === undefined) {\n return componentStyle.generateAndInjectStyles(STATIC_EXECUTION_CONTEXT, styleSheet);\n } else {\n var executionContext = this.buildExecutionContext(theme, props);\n var className = componentStyle.generateAndInjectStyles(executionContext, styleSheet);\n\n if (\"development\" !== 'production' && warnTooManyClasses !== undefined) {\n warnTooManyClasses(className);\n }\n\n return className;\n }\n };\n\n BaseStyledComponent.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n var componentStyle = this.constructor.componentStyle;\n\n var styledContext = this.context[CHANNEL_NEXT];\n\n // If this is a staticaly-styled component, we don't need to the theme\n // to generate or build styles.\n if (componentStyle.isStatic) {\n var generatedClassName = this.generateAndInjectStyles(STATIC_EXECUTION_CONTEXT, this.props);\n this.setState({ generatedClassName: generatedClassName });\n // If there is a theme in the context, subscribe to the event emitter. This\n // is necessary due to pure components blocking context updates, this circumvents\n // that by updating when an event is emitted\n } else if (styledContext !== undefined) {\n var subscribe = styledContext.subscribe;\n\n this.unsubscribeId = subscribe(function (nextTheme) {\n // This will be called once immediately\n var theme = determineTheme(_this2.props, nextTheme, _this2.constructor.defaultProps);\n var generatedClassName = _this2.generateAndInjectStyles(theme, _this2.props);\n\n _this2.setState({ theme: theme, generatedClassName: generatedClassName });\n });\n } else {\n // eslint-disable-next-line react/prop-types\n var theme = this.props.theme || {};\n var _generatedClassName = this.generateAndInjectStyles(theme, this.props);\n this.setState({ theme: theme, generatedClassName: _generatedClassName });\n }\n };\n\n BaseStyledComponent.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var _this3 = this;\n\n // If this is a staticaly-styled component, we don't need to listen to\n // props changes to update styles\n var componentStyle = this.constructor.componentStyle;\n\n if (componentStyle.isStatic) {\n return;\n }\n\n this.setState(function (oldState) {\n var theme = determineTheme(nextProps, oldState.theme, _this3.constructor.defaultProps);\n var generatedClassName = _this3.generateAndInjectStyles(theme, nextProps);\n\n return { theme: theme, generatedClassName: generatedClassName };\n });\n };\n\n BaseStyledComponent.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unsubscribeFromContext();\n };\n\n BaseStyledComponent.prototype.render = function render() {\n var _this4 = this;\n\n // eslint-disable-next-line react/prop-types\n var innerRef = this.props.innerRef;\n var generatedClassName = this.state.generatedClassName;\n var _constructor2 = this.constructor,\n styledComponentId = _constructor2.styledComponentId,\n target = _constructor2.target;\n\n\n var isTargetTag = isTag(target);\n\n var className = [\n // eslint-disable-next-line react/prop-types\n this.props.className, styledComponentId, this.attrs.className, generatedClassName].filter(Boolean).join(' ');\n\n var baseProps = _extends({}, this.attrs, {\n className: className\n });\n\n if (isStyledComponent(target)) {\n baseProps.innerRef = innerRef;\n } else {\n baseProps.ref = innerRef;\n }\n\n var propsForElement = Object.keys(this.props).reduce(function (acc, propName) {\n // Don't pass through non HTML tags through to HTML elements\n // always omit innerRef\n if (propName !== 'innerRef' && propName !== 'className' && (!isTargetTag || validAttr(propName))) {\n // eslint-disable-next-line no-param-reassign\n acc[propName] = _this4.props[propName];\n }\n\n return acc;\n }, baseProps);\n\n return Object(react__WEBPACK_IMPORTED_MODULE_2__[\"createElement\"])(target, propsForElement);\n };\n\n return BaseStyledComponent;\n }(react__WEBPACK_IMPORTED_MODULE_2__[\"Component\"]);\n\n var createStyledComponent = function createStyledComponent(target, options, rules) {\n var _StyledComponent$cont;\n\n var _options$displayName = options.displayName,\n displayName = _options$displayName === undefined ? isTag(target) ? 'styled.' + target : 'Styled(' + getComponentName(target) + ')' : _options$displayName,\n _options$componentId = options.componentId,\n componentId = _options$componentId === undefined ? generateId(options.displayName, options.parentComponentId) : _options$componentId,\n _options$ParentCompon = options.ParentComponent,\n ParentComponent = _options$ParentCompon === undefined ? BaseStyledComponent : _options$ParentCompon,\n extendingRules = options.rules,\n attrs = options.attrs;\n\n\n var styledComponentId = options.displayName && options.componentId ? escape(options.displayName) + '-' + options.componentId : componentId;\n\n var componentStyle = new ComponentStyle(extendingRules === undefined ? rules : extendingRules.concat(rules), attrs, styledComponentId);\n\n var StyledComponent = function (_ParentComponent) {\n inherits(StyledComponent, _ParentComponent);\n\n function StyledComponent() {\n classCallCheck(this, StyledComponent);\n return possibleConstructorReturn(this, _ParentComponent.apply(this, arguments));\n }\n\n StyledComponent.withComponent = function withComponent(tag) {\n var previousComponentId = options.componentId,\n optionsToCopy = objectWithoutProperties(options, ['componentId']);\n\n\n var newComponentId = previousComponentId && previousComponentId + '-' + (isTag(tag) ? tag : escape(getComponentName(tag)));\n\n var newOptions = _extends({}, optionsToCopy, {\n componentId: newComponentId,\n ParentComponent: StyledComponent\n });\n\n return createStyledComponent(tag, newOptions, rules);\n };\n\n createClass(StyledComponent, null, [{\n key: 'extend',\n get: function get$$1() {\n var rulesFromOptions = options.rules,\n parentComponentId = options.componentId,\n optionsToCopy = objectWithoutProperties(options, ['rules', 'componentId']);\n\n\n var newRules = rulesFromOptions === undefined ? rules : rulesFromOptions.concat(rules);\n\n var newOptions = _extends({}, optionsToCopy, {\n rules: newRules,\n parentComponentId: parentComponentId,\n ParentComponent: StyledComponent\n });\n\n return constructWithOptions(createStyledComponent, target, newOptions);\n }\n }]);\n return StyledComponent;\n }(ParentComponent);\n\n StyledComponent.contextTypes = (_StyledComponent$cont = {}, _StyledComponent$cont[CHANNEL] = prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.func, _StyledComponent$cont[CHANNEL_NEXT] = CONTEXT_CHANNEL_SHAPE, _StyledComponent$cont[CONTEXT_KEY] = prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.instanceOf(StyleSheet), prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.instanceOf(ServerStyleSheet)]), _StyledComponent$cont);\n StyledComponent.displayName = displayName;\n StyledComponent.styledComponentId = styledComponentId;\n StyledComponent.attrs = attrs;\n StyledComponent.componentStyle = componentStyle;\n StyledComponent.target = target;\n\n\n if (true) {\n StyledComponent.warnTooManyClasses = createWarnTooManyClasses(displayName);\n }\n\n return StyledComponent;\n };\n\n return createStyledComponent;\n});\n\n// murmurhash2 via https://gist.github.com/raycmorgan/588423\n\nfunction doHash(str, seed) {\n var m = 0x5bd1e995;\n var r = 24;\n var h = seed ^ str.length;\n var length = str.length;\n var currentIndex = 0;\n\n while (length >= 4) {\n var k = UInt32(str, currentIndex);\n\n k = Umul32(k, m);\n k ^= k >>> r;\n k = Umul32(k, m);\n\n h = Umul32(h, m);\n h ^= k;\n\n currentIndex += 4;\n length -= 4;\n }\n\n switch (length) {\n case 3:\n h ^= UInt16(str, currentIndex);\n h ^= str.charCodeAt(currentIndex + 2) << 16;\n h = Umul32(h, m);\n break;\n\n case 2:\n h ^= UInt16(str, currentIndex);\n h = Umul32(h, m);\n break;\n\n case 1:\n h ^= str.charCodeAt(currentIndex);\n h = Umul32(h, m);\n break;\n }\n\n h ^= h >>> 13;\n h = Umul32(h, m);\n h ^= h >>> 15;\n\n return h >>> 0;\n}\n\nfunction UInt32(str, pos) {\n return str.charCodeAt(pos++) + (str.charCodeAt(pos++) << 8) + (str.charCodeAt(pos++) << 16) + (str.charCodeAt(pos) << 24);\n}\n\nfunction UInt16(str, pos) {\n return str.charCodeAt(pos++) + (str.charCodeAt(pos++) << 8);\n}\n\nfunction Umul32(n, m) {\n n = n | 0;\n m = m | 0;\n var nlo = n & 0xffff;\n var nhi = n >>> 16;\n var res = nlo * m + ((nhi * m & 0xffff) << 16) | 0;\n return res;\n}\n\n// \nvar isStaticRules = function isStaticRules(rules, attrs) {\n for (var i = 0; i < rules.length; i += 1) {\n var rule = rules[i];\n\n // recursive case\n if (Array.isArray(rule) && !isStaticRules(rule)) {\n return false;\n } else if (typeof rule === 'function' && !isStyledComponent(rule)) {\n // functions are allowed to be static if they're just being\n // used to get the classname of a nested styled copmonent\n return false;\n }\n }\n\n if (attrs !== undefined) {\n // eslint-disable-next-line guard-for-in, no-restricted-syntax\n for (var key in attrs) {\n var value = attrs[key];\n if (typeof value === 'function') {\n return false;\n }\n }\n }\n\n return true;\n};\n\nvar isHRMEnabled = typeof module !== 'undefined' && module.hot && \"development\" !== 'production';\n\n/*\n ComponentStyle is all the CSS-specific stuff, not\n the React-specific stuff.\n */\nvar _ComponentStyle = (function (nameGenerator, flatten, stringifyRules) {\n var ComponentStyle = function () {\n function ComponentStyle(rules, attrs, componentId) {\n classCallCheck(this, ComponentStyle);\n\n this.rules = rules;\n this.isStatic = !isHRMEnabled && isStaticRules(rules, attrs);\n this.componentId = componentId;\n if (!StyleSheet.instance.hasInjectedComponent(this.componentId)) {\n var placeholder = true ? '.' + componentId + ' {}' : undefined;\n StyleSheet.instance.deferredInject(componentId, true, placeholder);\n }\n }\n\n /*\n * Flattens a rule set into valid CSS\n * Hashes it, wraps the whole chunk in a .hash1234 {}\n * Returns the hash to be injected on render()\n * */\n\n\n ComponentStyle.prototype.generateAndInjectStyles = function generateAndInjectStyles(executionContext, styleSheet) {\n var isStatic = this.isStatic,\n lastClassName = this.lastClassName;\n\n if (isStatic && lastClassName !== undefined) {\n return lastClassName;\n }\n\n var flatCSS = flatten(this.rules, executionContext);\n var hash = doHash(this.componentId + flatCSS.join(''));\n\n var existingName = styleSheet.getName(hash);\n if (existingName !== undefined) {\n if (styleSheet.stylesCacheable) {\n this.lastClassName = existingName;\n }\n return existingName;\n }\n\n var name = nameGenerator(hash);\n if (styleSheet.stylesCacheable) {\n this.lastClassName = existingName;\n }\n if (styleSheet.alreadyInjected(hash, name)) {\n return name;\n }\n\n var css = '\\n' + stringifyRules(flatCSS, '.' + name);\n // NOTE: this can only be set when we inject the class-name.\n // For some reason, presumably due to how css is stringifyRules behaves in\n // differently between client and server, styles break.\n styleSheet.inject(this.componentId, true, css, hash, name);\n return name;\n };\n\n ComponentStyle.generateName = function generateName(str) {\n return nameGenerator(doHash(str));\n };\n\n return ComponentStyle;\n }();\n\n return ComponentStyle;\n});\n\n// \n// Thanks to ReactDOMFactories for this handy list!\n\nvar domElements = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr',\n\n// SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\n// \n\nvar _styled = (function (styledComponent, constructWithOptions) {\n var styled = function styled(tag) {\n return constructWithOptions(styledComponent, tag);\n };\n\n // Shorthands for all valid HTML Elements\n domElements.forEach(function (domElement) {\n styled[domElement] = styled(domElement);\n });\n\n return styled;\n});\n\n// \nvar replaceWhitespace = function replaceWhitespace(str) {\n return str.replace(/\\s|\\\\n/g, '');\n};\n\nvar _keyframes = (function (nameGenerator, stringifyRules, css) {\n return function (strings) {\n for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n\n var rules = css.apply(undefined, [strings].concat(interpolations));\n var hash = doHash(replaceWhitespace(JSON.stringify(rules)));\n\n var existingName = StyleSheet.instance.getName(hash);\n if (existingName) return existingName;\n\n var name = nameGenerator(hash);\n if (StyleSheet.instance.alreadyInjected(hash, name)) return name;\n\n var generatedCSS = stringifyRules(rules, name, '@keyframes');\n StyleSheet.instance.inject('sc-keyframes-' + name, true, generatedCSS, hash, name);\n return name;\n };\n});\n\n// \nvar _injectGlobal = (function (stringifyRules, css) {\n var injectGlobal = function injectGlobal(strings) {\n for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n\n var rules = css.apply(undefined, [strings].concat(interpolations));\n var hash = doHash(JSON.stringify(rules));\n\n var componentId = 'sc-global-' + hash;\n if (StyleSheet.instance.hasInjectedComponent(componentId)) return;\n\n StyleSheet.instance.inject(componentId, false, stringifyRules(rules));\n };\n\n return injectGlobal;\n});\n\n// \n\n\nvar _constructWithOptions = (function (css) {\n var constructWithOptions = function constructWithOptions(componentConstructor, tag) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (\"development\" !== 'production' && typeof tag !== 'string' && typeof tag !== 'function') {\n // $FlowInvalidInputTest\n throw new Error('Cannot create styled-component for component: ' + tag);\n }\n\n /* This is callable directly as a template function */\n var templateFunction = function templateFunction(strings) {\n for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n\n return componentConstructor(tag, options, css.apply(undefined, [strings].concat(interpolations)));\n };\n\n /* If config methods are called, wrap up a new template function and merge options */\n templateFunction.withConfig = function (config) {\n return constructWithOptions(componentConstructor, tag, _extends({}, options, config));\n };\n templateFunction.attrs = function (attrs) {\n return constructWithOptions(componentConstructor, tag, _extends({}, options, {\n attrs: _extends({}, options.attrs || {}, attrs)\n }));\n };\n\n return templateFunction;\n };\n\n return constructWithOptions;\n});\n\n// \n/* globals ReactClass */\n\nvar wrapWithTheme = function wrapWithTheme(Component$$1) {\n var _WithTheme$contextTyp;\n\n var componentName = Component$$1.displayName || Component$$1.name || 'Component';\n\n var shouldSetInnerRef = isStyledComponent(Component$$1) ||\n // NOTE: We can't pass a ref to a stateless functional component\n typeof Component$$1 === 'function' && !(Component$$1.prototype && 'isReactComponent' in Component$$1.prototype);\n\n var WithTheme = function (_React$Component) {\n inherits(WithTheme, _React$Component);\n\n function WithTheme() {\n var _temp, _this, _ret;\n\n classCallCheck(this, WithTheme);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {}, _this.unsubscribeId = -1, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n // NOTE: This is so that isStyledComponent passes for the innerRef unwrapping\n\n\n WithTheme.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n var defaultProps = this.constructor.defaultProps;\n\n var styledContext = this.context[CHANNEL_NEXT];\n var themeProp = determineTheme(this.props, undefined, defaultProps);\n if (styledContext === undefined && themeProp === undefined && \"development\" !== 'production') {\n // eslint-disable-next-line no-console\n console.warn('[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps');\n } else if (styledContext === undefined && themeProp !== undefined) {\n this.setState({ theme: themeProp });\n } else {\n var subscribe = styledContext.subscribe;\n\n this.unsubscribeId = subscribe(function (nextTheme) {\n var theme = determineTheme(_this2.props, nextTheme, defaultProps);\n _this2.setState({ theme: theme });\n });\n }\n };\n\n WithTheme.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var defaultProps = this.constructor.defaultProps;\n\n this.setState(function (oldState) {\n var theme = determineTheme(nextProps, oldState.theme, defaultProps);\n\n return { theme: theme };\n });\n };\n\n WithTheme.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.unsubscribeId !== -1) {\n this.context[CHANNEL_NEXT].unsubscribe(this.unsubscribeId);\n }\n };\n\n WithTheme.prototype.render = function render() {\n // eslint-disable-next-line react/prop-types\n var innerRef = this.props.innerRef;\n var theme = this.state.theme;\n\n\n return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(Component$$1, _extends({\n theme: theme\n }, this.props, {\n innerRef: shouldSetInnerRef ? innerRef : undefined,\n ref: shouldSetInnerRef ? undefined : innerRef\n }));\n };\n\n return WithTheme;\n }(react__WEBPACK_IMPORTED_MODULE_2___default.a.Component);\n\n WithTheme.displayName = 'WithTheme(' + componentName + ')';\n WithTheme.styledComponentId = 'withTheme';\n WithTheme.contextTypes = (_WithTheme$contextTyp = {}, _WithTheme$contextTyp[CHANNEL] = prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.func, _WithTheme$contextTyp[CHANNEL_NEXT] = CONTEXT_CHANNEL_SHAPE, _WithTheme$contextTyp);\n\n\n return hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_4___default()(WithTheme, Component$$1);\n};\n\n// \n\n/* Import singletons */\n/* Import singleton constructors */\n/* Import components */\n/* Import Higher Order Components */\n/* Instantiate singletons */\nvar ComponentStyle = _ComponentStyle(generateAlphabeticName, flatten, stringifyRules);\nvar constructWithOptions = _constructWithOptions(css);\nvar StyledComponent = _StyledComponent(ComponentStyle, constructWithOptions);\n\n/* Instantiate exported singletons */\nvar keyframes = _keyframes(generateAlphabeticName, stringifyRules, css);\nvar injectGlobal = _injectGlobal(stringifyRules, css);\nvar styled = _styled(StyledComponent, constructWithOptions);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (styled);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/harmony-module.js */ \"./node_modules/webpack/buildin/harmony-module.js\")(module)))\n\n//# sourceURL=webpack:///./node_modules/styled-components/dist/styled-components.es.js?"); + +/***/ }), + +/***/ "./node_modules/styled-components/node_modules/hoist-non-react-statics/index.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/styled-components/node_modules/hoist-non-react-statics/index.js ***! + \**************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\n\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n arguments: true,\n arity: true\n};\n\nvar isGetOwnPropertySymbolsAvailable = typeof Object.getOwnPropertySymbols === 'function';\n\nmodule.exports = function hoistNonReactStatics(targetComponent, sourceComponent, customStatics) {\n if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n var keys = Object.getOwnPropertyNames(sourceComponent);\n\n /* istanbul ignore else */\n if (isGetOwnPropertySymbolsAvailable) {\n keys = keys.concat(Object.getOwnPropertySymbols(sourceComponent));\n }\n\n for (var i = 0; i < keys.length; ++i) {\n if (!REACT_STATICS[keys[i]] && !KNOWN_STATICS[keys[i]] && (!customStatics || !customStatics[keys[i]])) {\n try {\n targetComponent[keys[i]] = sourceComponent[keys[i]];\n } catch (error) {\n\n }\n }\n }\n }\n\n return targetComponent;\n};\n\n\n//# sourceURL=webpack:///./node_modules/styled-components/node_modules/hoist-non-react-statics/index.js?"); + +/***/ }), + +/***/ "./node_modules/stylis/stylis.js": +/*!***************************************!*\ + !*** ./node_modules/stylis/stylis.js ***! + \***************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/*\n * __ ___\n * _____/ /___ __/ (_)____\n * / ___/ __/ / / / / / ___/\n * (__ ) /_/ /_/ / / (__ )\n * /____/\\__/\\__, /_/_/____/\n * /____/\n *\n * light - weight css preprocessor @licence MIT\n */\n(function (factory) {/* eslint-disable */\n\t true ? (module['exports'] = factory(null)) :\n\t\tundefined\n}(/** @param {*=} options */function factory (options) {/* eslint-disable */\n\n\t'use strict'\n\n\t/**\n\t * Notes\n\t *\n\t * The [''] pattern is used to support closure compiler\n\t * the jsdoc signatures are also used to the same effect\n\t *\n\t * ----\n\t *\n\t * int + int + int === n4 [faster]\n\t *\n\t * vs\n\t *\n\t * int === n1 && int === n2 && int === n3\n\t *\n\t * ----\n\t *\n\t * switch (int) { case ints...} [faster]\n\t *\n\t * vs\n\t *\n\t * if (int == 1 && int === 2 ...)\n\t *\n\t * ----\n\t *\n\t * The (first*n1 + second*n2 + third*n3) format used in the property parser\n\t * is a simple way to hash the sequence of characters\n\t * taking into account the index they occur in\n\t * since any number of 3 character sequences could produce duplicates.\n\t *\n\t * On the other hand sequences that are directly tied to the index of the character\n\t * resolve a far more accurate measure, it's also faster\n\t * to evaluate one condition in a switch statement\n\t * than three in an if statement regardless of the added math.\n\t *\n\t * This allows the vendor prefixer to be both small and fast.\n\t */\n\n\tvar nullptn = /^\\0+/g /* matches leading null characters */\n\tvar formatptn = /[\\0\\r\\f]/g /* matches new line, null and formfeed characters */\n\tvar colonptn = /: */g /* splits animation rules */\n\tvar cursorptn = /zoo|gra/ /* assert cursor varient */\n\tvar transformptn = /([,: ])(transform)/g /* vendor prefix transform, older webkit */\n\tvar animationptn = /,+\\s*(?![^(]*[)])/g /* splits multiple shorthand notation animations */\n\tvar propertiesptn = / +\\s*(?![^(]*[)])/g /* animation properties */\n\tvar elementptn = / *[\\0] */g /* selector elements */\n\tvar selectorptn = /,\\r+?/g /* splits selectors */\n\tvar andptn = /([\\t\\r\\n ])*\\f?&/g /* match & */\n\tvar escapeptn = /:global\\(((?:[^\\(\\)\\[\\]]*|\\[.*\\]|\\([^\\(\\)]*\\))*)\\)/g /* matches :global(.*) */\n\tvar invalidptn = /\\W+/g /* removes invalid characters from keyframes */\n\tvar keyframeptn = /@(k\\w+)\\s*(\\S*)\\s*/ /* matches @keyframes $1 */\n\tvar plcholdrptn = /::(place)/g /* match ::placeholder varient */\n\tvar readonlyptn = /:(read-only)/g /* match :read-only varient */\n\tvar beforeptn = /\\s+(?=[{\\];=:>])/g /* matches \\s before ] ; = : */\n\tvar afterptn = /([[}=:>])\\s+/g /* matches \\s after characters [ } = : */\n\tvar tailptn = /(\\{[^{]+?);(?=\\})/g /* matches tail semi-colons ;} */\n\tvar whiteptn = /\\s{2,}/g /* matches repeating whitespace */\n\tvar pseudoptn = /([^\\(])(:+) */g /* pseudo element */\n\tvar writingptn = /[svh]\\w+-[tblr]{2}/ /* match writing mode property values */\n\tvar gradientptn = /([\\w-]+t\\()/g /* match *gradient property */\n\tvar supportsptn = /\\(\\s*(.*)\\s*\\)/g /* match supports (groups) */\n\tvar propertyptn = /([\\s\\S]*?);/g /* match properties leading semicolon */\n\tvar selfptn = /-self|flex-/g /* match flex- and -self in align-self: flex-*; */\n\tvar pseudofmt = /[^]*?(:[rp][el]a[\\w-]+)[^]*/ /* extrats :readonly or :placholder from selector */\n\tvar trimptn = /[ \\t]+$/ /* match tail whitspace */\n\tvar dimensionptn = /stretch|:\\s*\\w+\\-(?:conte|avail)/ /* match max/min/fit-content, fill-available\n\n\t/* vendors */\n\tvar webkit = '-webkit-'\n\tvar moz = '-moz-'\n\tvar ms = '-ms-'\n\n\t/* character codes */\n\tvar SEMICOLON = 59 /* ; */\n\tvar CLOSEBRACES = 125 /* } */\n\tvar OPENBRACES = 123 /* { */\n\tvar OPENPARENTHESES = 40 /* ( */\n\tvar CLOSEPARENTHESES = 41 /* ) */\n\tvar OPENBRACKET = 91 /* [ */\n\tvar CLOSEBRACKET = 93 /* ] */\n\tvar NEWLINE = 10 /* \\n */\n\tvar CARRIAGE = 13 /* \\r */\n\tvar TAB = 9 /* \\t */\n\tvar AT = 64 /* @ */\n\tvar SPACE = 32 /* */\n\tvar AND = 38 /* & */\n\tvar DASH = 45 /* - */\n\tvar UNDERSCORE = 95 /* _ */\n\tvar STAR = 42 /* * */\n\tvar COMMA = 44 /* , */\n\tvar COLON = 58 /* : */\n\tvar SINGLEQUOTE = 39 /* ' */\n\tvar DOUBLEQUOTE = 34 /* \" */\n\tvar FOWARDSLASH = 47 /* / */\n\tvar GREATERTHAN = 62 /* > */\n\tvar PLUS = 43 /* + */\n\tvar TILDE = 126 /* ~ */\n\tvar NULL = 0 /* \\0 */\n\tvar FORMFEED = 12 /* \\f */\n\tvar VERTICALTAB = 11 /* \\v */\n\n\t/* special identifiers */\n\tvar KEYFRAME = 107 /* k */\n\tvar MEDIA = 109 /* m */\n\tvar SUPPORTS = 115 /* s */\n\tvar PLACEHOLDER = 112 /* p */\n\tvar READONLY = 111 /* o */\n\tvar IMPORT = 169 /* i */\n\tvar CHARSET = 163 /* c */\n\tvar DOCUMENT = 100 /* d */\n\tvar PAGE = 112 /* p */\n\n\tvar column = 1 /* current column */\n\tvar line = 1 /* current line numebr */\n\tvar pattern = 0 /* :pattern */\n\n\tvar cascade = 1 /* #id h1 h2 vs h1#id h2#id */\n\tvar prefix = 1 /* vendor prefix */\n\tvar escape = 1 /* escape :global() pattern */\n\tvar compress = 0 /* compress output */\n\tvar semicolon = 0 /* no/semicolon option */\n\tvar preserve = 0 /* preserve empty selectors */\n\n\t/* empty reference */\n\tvar array = []\n\n\t/* plugins */\n\tvar plugins = []\n\tvar plugged = 0\n\tvar should = null\n\n\t/* plugin context */\n\tvar POSTS = -2\n\tvar PREPS = -1\n\tvar UNKWN = 0\n\tvar PROPS = 1\n\tvar BLCKS = 2\n\tvar ATRUL = 3\n\n\t/* plugin newline context */\n\tvar unkwn = 0\n\n\t/* keyframe animation */\n\tvar keyed = 1\n\tvar key = ''\n\n\t/* selector namespace */\n\tvar nscopealt = ''\n\tvar nscope = ''\n\n\t/**\n\t * Compile\n\t *\n\t * @param {Array} parent\n\t * @param {Array} current\n\t * @param {string} body\n\t * @param {number} id\n\t * @param {number} depth\n\t * @return {string}\n\t */\n\tfunction compile (parent, current, body, id, depth) {\n\t\tvar bracket = 0 /* brackets [] */\n\t\tvar comment = 0 /* comments /* // or /* */\n\t\tvar parentheses = 0 /* functions () */\n\t\tvar quote = 0 /* quotes '', \"\" */\n\n\t\tvar first = 0 /* first character code */\n\t\tvar second = 0 /* second character code */\n\t\tvar code = 0 /* current character code */\n\t\tvar tail = 0 /* previous character code */\n\t\tvar trail = 0 /* character before previous code */\n\t\tvar peak = 0 /* previous non-whitespace code */\n\n\t\tvar counter = 0 /* count sequence termination */\n\t\tvar context = 0 /* track current context */\n\t\tvar atrule = 0 /* track @at-rule context */\n\t\tvar pseudo = 0 /* track pseudo token index */\n\t\tvar caret = 0 /* current character index */\n\t\tvar format = 0 /* control character formating context */\n\t\tvar insert = 0 /* auto semicolon insertion */\n\t\tvar invert = 0 /* inverted selector pattern */\n\t\tvar length = 0 /* generic length address */\n\t\tvar eof = body.length /* end of file(length) */\n\t\tvar eol = eof - 1 /* end of file(characters) */\n\n\t\tvar char = '' /* current character */\n\t\tvar chars = '' /* current buffer of characters */\n\t\tvar child = '' /* next buffer of characters */\n\t\tvar out = '' /* compiled body */\n\t\tvar children = '' /* compiled children */\n\t\tvar flat = '' /* compiled leafs */\n\t\tvar selector /* generic selector address */\n\t\tvar result /* generic address */\n\n\t\t// ...build body\n\t\twhile (caret < eof) {\n\t\t\tcode = body.charCodeAt(caret)\n\n\t\t\t// eof varient\n\t\t\tif (caret === eol) {\n\t\t\t\t// last character + noop context, add synthetic padding for noop context to terminate\n\t\t\t\tif (comment + quote + parentheses + bracket !== 0) {\n\t\t\t\t\tif (comment !== 0) {\n\t\t\t\t\t\tcode = comment === FOWARDSLASH ? NEWLINE : FOWARDSLASH\n\t\t\t\t\t}\n\n\t\t\t\t\tquote = parentheses = bracket = 0\n\t\t\t\t\teof++\n\t\t\t\t\teol++\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (comment + quote + parentheses + bracket === 0) {\n\t\t\t\t// eof varient\n\t\t\t\tif (caret === eol) {\n\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\tchars = chars.replace(formatptn, '')\n\t\t\t\t\t}\n\n\t\t\t\t\tif (chars.trim().length > 0) {\n\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\t\tcase NEWLINE: {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tchars += body.charAt(caret)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcode = SEMICOLON\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// auto semicolon insertion\n\t\t\t\tif (insert === 1) {\n\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t// false flags\n\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\tcase SINGLEQUOTE:\n\t\t\t\t\t\tcase OPENPARENTHESES:\n\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ignore\n\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// valid\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\t\tlength = caret\n\t\t\t\t\t\t\tfirst = code\n\t\t\t\t\t\t\tcaret--\n\t\t\t\t\t\t\tcode = SEMICOLON\n\n\t\t\t\t\t\t\twhile (length < eof) {\n\t\t\t\t\t\t\t\tswitch (body.charCodeAt(length++)) {\n\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\t\t\t\tcase SEMICOLON: {\n\t\t\t\t\t\t\t\t\t\t++caret\n\t\t\t\t\t\t\t\t\t\tcode = first\n\t\t\t\t\t\t\t\t\t\tlength = eof\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\t\t\t\t\t\t++caret\n\t\t\t\t\t\t\t\t\t\t\tcode = first\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\t\t\t\t\tlength = eof\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// token varient\n\t\t\t\tswitch (code) {\n\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\tchars = chars.trim()\n\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\t\t\t\t\t\tcounter = 1\n\t\t\t\t\t\tlength = ++caret\n\n\t\t\t\t\t\twhile (caret < eof) {\n\t\t\t\t\t\t\tcode = body.charCodeAt(caret)\n\n\t\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\t\t\t\tcounter++\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\t\t\t\t\tcounter--\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (counter === 0) {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcaret++\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tchild = body.substring(length, caret)\n\n\t\t\t\t\t\tif (first === NULL) {\n\t\t\t\t\t\t\tfirst = (chars = chars.replace(nullptn, '').trim()).charCodeAt(0)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tswitch (first) {\n\t\t\t\t\t\t\t// @at-rule\n\t\t\t\t\t\t\tcase AT: {\n\t\t\t\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\t\t\t\tchars = chars.replace(formatptn, '')\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tsecond = chars.charCodeAt(1)\n\n\t\t\t\t\t\t\t\tswitch (second) {\n\t\t\t\t\t\t\t\t\tcase DOCUMENT:\n\t\t\t\t\t\t\t\t\tcase MEDIA:\n\t\t\t\t\t\t\t\t\tcase SUPPORTS:\n\t\t\t\t\t\t\t\t\tcase DASH: {\n\t\t\t\t\t\t\t\t\t\tselector = current\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\tselector = array\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tchild = compile(current, selector, child, second, depth+1)\n\t\t\t\t\t\t\t\tlength = child.length\n\n\t\t\t\t\t\t\t\t// preserve empty @at-rule\n\t\t\t\t\t\t\t\tif (preserve > 0 && length === 0) {\n\t\t\t\t\t\t\t\t\tlength = chars.length\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// execute plugins, @at-rule context\n\t\t\t\t\t\t\t\tif (plugged > 0) {\n\t\t\t\t\t\t\t\t\tselector = select(array, chars, invert)\n\t\t\t\t\t\t\t\t\tresult = proxy(ATRUL, child, selector, current, line, column, length, second, depth, id)\n\t\t\t\t\t\t\t\t\tchars = selector.join('')\n\n\t\t\t\t\t\t\t\t\tif (result !== void 0) {\n\t\t\t\t\t\t\t\t\t\tif ((length = (child = result.trim()).length) === 0) {\n\t\t\t\t\t\t\t\t\t\t\tsecond = 0\n\t\t\t\t\t\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (length > 0) {\n\t\t\t\t\t\t\t\t\tswitch (second) {\n\t\t\t\t\t\t\t\t\t\tcase SUPPORTS: {\n\t\t\t\t\t\t\t\t\t\t\tchars = chars.replace(supportsptn, supports)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcase DOCUMENT:\n\t\t\t\t\t\t\t\t\t\tcase MEDIA:\n\t\t\t\t\t\t\t\t\t\tcase DASH: {\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + '{' + child + '}'\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcase KEYFRAME: {\n\t\t\t\t\t\t\t\t\t\t\tchars = chars.replace(keyframeptn, '$1 $2' + (keyed > 0 ? key : ''))\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + '{' + child + '}'\n\n\t\t\t\t\t\t\t\t\t\t\tif (prefix === 1 || (prefix === 2 && vendor('@'+child, 3))) {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = '@' + webkit + child + '@' + child\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = '@' + child\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + child\n\n\t\t\t\t\t\t\t\t\t\t\tif (id === PAGE) {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = (out += child, '')\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// selector\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tchild = compile(current, select(current, chars, invert), child, id, depth+1)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tchildren += child\n\n\t\t\t\t\t\t// reset\n\t\t\t\t\t\tcontext = 0\n\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\tpseudo = 0\n\t\t\t\t\t\tformat = 0\n\t\t\t\t\t\tinvert = 0\n\t\t\t\t\t\tatrule = 0\n\t\t\t\t\t\tchars = ''\n\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\tcode = body.charCodeAt(++caret)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\tcase SEMICOLON: {\n\t\t\t\t\t\tchars = (format > 0 ? chars.replace(formatptn, '') : chars).trim()\n\n\t\t\t\t\t\tif ((length = chars.length) > 1) {\n\t\t\t\t\t\t\t// monkey-patch missing colon\n\t\t\t\t\t\t\tif (pseudo === 0) {\n\t\t\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\n\t\t\t\t\t\t\t\t// first character is a letter or dash, buffer has a space character\n\t\t\t\t\t\t\t\tif ((first === DASH || first > 96 && first < 123)) {\n\t\t\t\t\t\t\t\t\tlength = (chars = chars.replace(' ', ':')).length\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// execute plugins, property context\n\t\t\t\t\t\t\tif (plugged > 0) {\n\t\t\t\t\t\t\t\tif ((result = proxy(PROPS, chars, current, parent, line, column, out.length, id, depth, id)) !== void 0) {\n\t\t\t\t\t\t\t\t\tif ((length = (chars = result.trim()).length) === 0) {\n\t\t\t\t\t\t\t\t\t\tchars = '\\0\\0'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\t\t\t\t\t\t\tsecond = chars.charCodeAt(1)\n\n\t\t\t\t\t\t\tswitch (first + second) {\n\t\t\t\t\t\t\t\tcase NULL: {\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase IMPORT:\n\t\t\t\t\t\t\t\tcase CHARSET: {\n\t\t\t\t\t\t\t\t\tflat += chars + body.charAt(caret)\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\tif (chars.charCodeAt(length-1) === COLON)\n\t\t\t\t\t\t\t\t\t\tbreak\n\n\t\t\t\t\t\t\t\t\tout += property(chars, first, second, chars.charCodeAt(2))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// reset\n\t\t\t\t\t\tcontext = 0\n\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\tpseudo = 0\n\t\t\t\t\t\tformat = 0\n\t\t\t\t\t\tinvert = 0\n\t\t\t\t\t\tchars = ''\n\t\t\t\t\t\tcode = body.charCodeAt(++caret)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// parse characters\n\t\t\tswitch (code) {\n\t\t\t\tcase CARRIAGE:\n\t\t\t\tcase NEWLINE: {\n\t\t\t\t\t// auto insert semicolon\n\t\t\t\t\tif (comment + quote + parentheses + bracket + semicolon === 0) {\n\t\t\t\t\t\t// valid non-whitespace characters that\n\t\t\t\t\t\t// may precede a newline\n\t\t\t\t\t\tswitch (peak) {\n\t\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\t\tcase SINGLEQUOTE:\n\t\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\t\tcase AT:\n\t\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\t\tcase FOWARDSLASH:\n\t\t\t\t\t\t\tcase DASH:\n\t\t\t\t\t\t\tcase COLON:\n\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t// current buffer has a colon\n\t\t\t\t\t\t\t\tif (pseudo > 0) {\n\t\t\t\t\t\t\t\t\tinsert = 1\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// terminate line comment\n\t\t\t\t\tif (comment === FOWARDSLASH) {\n\t\t\t\t\t\tcomment = 0\n\t\t\t\t\t} else if (cascade + context === 0) {\n\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\tchars += '\\0'\n\t\t\t\t\t}\n\n\t\t\t\t\t// execute plugins, newline context\n\t\t\t\t\tif (plugged * unkwn > 0) {\n\t\t\t\t\t\tproxy(UNKWN, chars, current, parent, line, column, out.length, id, depth, id)\n\t\t\t\t\t}\n\n\t\t\t\t\t// next line, reset column position\n\t\t\t\t\tcolumn = 1\n\t\t\t\t\tline++\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase SEMICOLON:\n\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\tif (comment + quote + parentheses + bracket === 0) {\n\t\t\t\t\t\tcolumn++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\t// increment column position\n\t\t\t\t\tcolumn++\n\n\t\t\t\t\t// current character\n\t\t\t\t\tchar = body.charAt(caret)\n\n\t\t\t\t\t// remove comments, escape functions, strings, attributes and prepare selectors\n\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\tif (quote + bracket + comment === 0) {\n\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\t\tcase COLON:\n\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\t\t\t\tchar = ''\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\tif (code !== SPACE) {\n\t\t\t\t\t\t\t\t\t\t\tchar = ' '\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// escape breaking control characters\n\t\t\t\t\t\tcase NULL: {\n\t\t\t\t\t\t\tchar = '\\\\0'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase FORMFEED: {\n\t\t\t\t\t\t\tchar = '\\\\f'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase VERTICALTAB: {\n\t\t\t\t\t\t\tchar = '\\\\v'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// &\n\t\t\t\t\t\tcase AND: {\n\t\t\t\t\t\t\t// inverted selector pattern i.e html &\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0 && cascade > 0) {\n\t\t\t\t\t\t\t\tinvert = 1\n\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\tchar = '\\f' + char\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ::paceholder, l\n\t\t\t\t\t\t// :read-ony, l\n\t\t\t\t\t\tcase 108: {\n\t\t\t\t\t\t\tif (quote + comment + bracket + pattern === 0 && pseudo > 0) {\n\t\t\t\t\t\t\t\tswitch (caret - pseudo) {\n\t\t\t\t\t\t\t\t\t// ::placeholder\n\t\t\t\t\t\t\t\t\tcase 2: {\n\t\t\t\t\t\t\t\t\t\tif (tail === PLACEHOLDER && body.charCodeAt(caret-3) === COLON) {\n\t\t\t\t\t\t\t\t\t\t\tpattern = tail\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// :read-only\n\t\t\t\t\t\t\t\t\tcase 8: {\n\t\t\t\t\t\t\t\t\t\tif (trail === READONLY) {\n\t\t\t\t\t\t\t\t\t\t\tpattern = trail\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tpseudo = caret\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// selectors\n\t\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\t\tif (comment + parentheses + quote + bracket === 0) {\n\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\tchar += '\\r'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// quotes\n\t\t\t\t\t\tcase DOUBLEQUOTE: {\n\t\t\t\t\t\t\tif (comment === 0) {\n\t\t\t\t\t\t\t\tquote = quote === code ? 0 : (quote === 0 ? code : quote)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase SINGLEQUOTE: {\n\t\t\t\t\t\t\tif (comment === 0) {\n\t\t\t\t\t\t\t\tquote = quote === code ? 0 : (quote === 0 ? code : quote)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// attributes\n\t\t\t\t\t\tcase OPENBRACKET: {\n\t\t\t\t\t\t\tif (quote + comment + parentheses === 0) {\n\t\t\t\t\t\t\t\tbracket++\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase CLOSEBRACKET: {\n\t\t\t\t\t\t\tif (quote + comment + parentheses === 0) {\n\t\t\t\t\t\t\t\tbracket--\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// functions\n\t\t\t\t\t\tcase CLOSEPARENTHESES: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tparentheses--\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\tswitch (tail*2 + trail*3) {\n\t\t\t\t\t\t\t\t\t\t// :matches\n\t\t\t\t\t\t\t\t\t\tcase 533: {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// :global, :not, :nth-child etc...\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tcounter = 0\n\t\t\t\t\t\t\t\t\t\t\tcontext = 1\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tparentheses++\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase AT: {\n\t\t\t\t\t\t\tif (comment + parentheses + quote + bracket + pseudo + atrule === 0) {\n\t\t\t\t\t\t\t\tatrule = 1\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// block/line comments\n\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\t\t\tif (quote + bracket + parentheses > 0) {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tswitch (comment) {\n\t\t\t\t\t\t\t\t// initialize line/block comment context\n\t\t\t\t\t\t\t\tcase 0: {\n\t\t\t\t\t\t\t\t\tswitch (code*2 + body.charCodeAt(caret+1)*3) {\n\t\t\t\t\t\t\t\t\t\t// //\n\t\t\t\t\t\t\t\t\t\tcase 235: {\n\t\t\t\t\t\t\t\t\t\t\tcomment = FOWARDSLASH\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// /*\n\t\t\t\t\t\t\t\t\t\tcase 220: {\n\t\t\t\t\t\t\t\t\t\t\tlength = caret\n\t\t\t\t\t\t\t\t\t\t\tcomment = STAR\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// end block comment context\n\t\t\t\t\t\t\t\tcase STAR: {\n\t\t\t\t\t\t\t\t\tif (code === FOWARDSLASH && tail === STAR) {\n\t\t\t\t\t\t\t\t\t\t// /* ... */, !\n\t\t\t\t\t\t\t\t\t\tif (body.charCodeAt(length+2) === 33) {\n\t\t\t\t\t\t\t\t\t\t\tout += body.substring(length, caret+1)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tchar = ''\n\t\t\t\t\t\t\t\t\t\tcomment = 0\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ignore comment blocks\n\t\t\t\t\tif (comment === 0) {\n\t\t\t\t\t\t// aggressive isolation mode, divide each individual selector\n\t\t\t\t\t\t// including selectors in :not function but excluding selectors in :global function\n\t\t\t\t\t\tif (cascade + quote + bracket + atrule === 0 && id !== KEYFRAME && code !== SEMICOLON) {\n\t\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\t\t// outside of an isolated context i.e nth-child(<...>)\n\t\t\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\t\t\tcase CARRIAGE: {\n\t\t\t\t\t\t\t\t\t\t\t\tchar = char + '\\0'\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\t\tchar = '\\0' + char + (code === COMMA ? '' : '\\0')\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// within an isolated context, sleep untill it's terminated\n\t\t\t\t\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\t\t\t\t\t\tcontext = ++counter\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tcase CLOSEPARENTHESES: {\n\t\t\t\t\t\t\t\t\t\t\t\tif ((context = --counter) === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t\t\t\t\tchar += '\\0'\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\t\tcase NULL:\n\t\t\t\t\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\t\t\tcase FORMFEED:\n\t\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\t\tcase CARRIAGE: {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\t// ignore in isolated contexts\n\t\t\t\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t\t\t\tchar += '\\0'\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// concat buffer of characters\n\t\t\t\t\t\tchars += char\n\n\t\t\t\t\t\t// previous non-whitespace character code\n\t\t\t\t\t\tif (code !== SPACE && code !== TAB) {\n\t\t\t\t\t\t\tpeak = code\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// tail character codes\n\t\t\ttrail = tail\n\t\t\ttail = code\n\n\t\t\t// visit every character\n\t\t\tcaret++\n\t\t}\n\n\t\tlength = out.length\n\n\t\t// preserve empty selector\n \t\tif (preserve > 0) {\n \t\t\tif (length === 0 && children.length === 0 && (current[0].length === 0) === false) {\n \t\t\t\tif (id !== MEDIA || (current.length === 1 && (cascade > 0 ? nscopealt : nscope) === current[0])) {\n\t\t\t\t\tlength = current.join(',').length + 2\n \t\t\t\t}\n \t\t\t}\n\t\t}\n\n\t\tif (length > 0) {\n\t\t\t// cascade isolation mode?\n\t\t\tselector = cascade === 0 && id !== KEYFRAME ? isolate(current) : current\n\n\t\t\t// execute plugins, block context\n\t\t\tif (plugged > 0) {\n\t\t\t\tresult = proxy(BLCKS, out, selector, parent, line, column, length, id, depth, id)\n\n\t\t\t\tif (result !== void 0 && (out = result).length === 0) {\n\t\t\t\t\treturn flat + out + children\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tout = selector.join(',') + '{' + out + '}'\n\n\t\t\tif (prefix*pattern !== 0) {\n\t\t\t\tif (prefix === 2 && !vendor(out, 2))\n\t\t\t\t\tpattern = 0\n\n\t\t\t\tswitch (pattern) {\n\t\t\t\t\t// ::read-only\n\t\t\t\t\tcase READONLY: {\n\t\t\t\t\t\tout = out.replace(readonlyptn, ':'+moz+'$1')+out\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// ::placeholder\n\t\t\t\t\tcase PLACEHOLDER: {\n\t\t\t\t\t\tout = (\n\t\t\t\t\t\t\tout.replace(plcholdrptn, '::' + webkit + 'input-$1') +\n\t\t\t\t\t\t\tout.replace(plcholdrptn, '::' + moz + '$1') +\n\t\t\t\t\t\t\tout.replace(plcholdrptn, ':' + ms + 'input-$1') + out\n\t\t\t\t\t\t)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tpattern = 0\n\t\t\t}\n\t\t}\n\n\t\treturn flat + out + children\n\t}\n\n\t/**\n\t * Select\n\t *\n\t * @param {Array} parent\n\t * @param {string} current\n\t * @param {number} invert\n\t * @return {Array}\n\t */\n\tfunction select (parent, current, invert) {\n\t\tvar selectors = current.trim().split(selectorptn)\n\t\tvar out = selectors\n\n\t\tvar length = selectors.length\n\t\tvar l = parent.length\n\n\t\tswitch (l) {\n\t\t\t// 0-1 parent selectors\n\t\t\tcase 0:\n\t\t\tcase 1: {\n\t\t\t\tfor (var i = 0, selector = l === 0 ? '' : parent[0] + ' '; i < length; ++i) {\n\t\t\t\t\tout[i] = scope(selector, out[i], invert, l).trim()\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// >2 parent selectors, nested\n\t\t\tdefault: {\n\t\t\t\tfor (var i = 0, j = 0, out = []; i < length; ++i) {\n\t\t\t\t\tfor (var k = 0; k < l; ++k) {\n\t\t\t\t\t\tout[j++] = scope(parent[k] + ' ', selectors[i], invert, l).trim()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Scope\n\t *\n\t * @param {string} parent\n\t * @param {string} current\n\t * @param {number} invert\n\t * @param {number} level\n\t * @return {string}\n\t */\n\tfunction scope (parent, current, invert, level) {\n\t\tvar selector = current\n\t\tvar code = selector.charCodeAt(0)\n\n\t\t// trim leading whitespace\n\t\tif (code < 33) {\n\t\t\tcode = (selector = selector.trim()).charCodeAt(0)\n\t\t}\n\n\t\tswitch (code) {\n\t\t\t// &\n\t\t\tcase AND: {\n\t\t\t\tswitch (cascade + level) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\tcase 1: {\n\t\t\t\t\t\tif (parent.trim().length === 0) {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\treturn selector.replace(andptn, '$1'+parent.trim())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// :\n\t\t\tcase COLON: {\n\t\t\t\tswitch (selector.charCodeAt(1)) {\n\t\t\t\t\t// g in :global\n\t\t\t\t\tcase 103: {\n\t\t\t\t\t\tif (escape > 0 && cascade > 0) {\n\t\t\t\t\t\t\treturn selector.replace(escapeptn, '$1').replace(andptn, '$1'+nscope)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\t// :hover\n\t\t\t\t\t\treturn parent.trim() + selector.replace(andptn, '$1'+parent.trim())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\t// html &\n\t\t\t\tif (invert*cascade > 0 && selector.indexOf('\\f') > 0) {\n\t\t\t\t\treturn selector.replace(andptn, (parent.charCodeAt(0) === COLON ? '' : '$1')+parent.trim())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn parent + selector\n\t}\n\n\t/**\n\t * Property\n\t *\n\t * @param {string} input\n\t * @param {number} first\n\t * @param {number} second\n\t * @param {number} third\n\t * @return {string}\n\t */\n\tfunction property (input, first, second, third) {\n\t\tvar index = 0\n\t\tvar out = input + ';'\n\t\tvar hash = (first*2) + (second*3) + (third*4)\n\t\tvar cache\n\n\t\t// animation: a, n, i characters\n\t\tif (hash === 944) {\n\t\t\treturn animation(out)\n\t\t} else if (prefix === 0 || (prefix === 2 && !vendor(out, 1))) {\n\t\t\treturn out\n\t\t}\n\n\t\t// vendor prefix\n\t\tswitch (hash) {\n\t\t\t// text-decoration/text-size-adjust/text-shadow/text-align/text-transform: t, e, x\n\t\t\tcase 1015: {\n\t\t\t\t// text-shadow/text-align/text-transform, a\n\t\t\t\treturn out.charCodeAt(10) === 97 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// filter/fill f, i, l\n\t\t\tcase 951: {\n\t\t\t\t// filter, t\n\t\t\t\treturn out.charCodeAt(3) === 116 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// color/column, c, o, l\n\t\t\tcase 963: {\n\t\t\t\t// column, n\n\t\t\t\treturn out.charCodeAt(5) === 110 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// box-decoration-break, b, o, x\n\t\t\tcase 1009: {\n\t\t\t\tif (out.charCodeAt(4) !== 100) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// mask, m, a, s\n\t\t\t// clip-path, c, l, i\n\t\t\tcase 969:\n\t\t\tcase 942: {\n\t\t\t\treturn webkit + out + out\n\t\t\t}\n\t\t\t// appearance: a, p, p\n\t\t\tcase 978: {\n\t\t\t\treturn webkit + out + moz + out + out\n\t\t\t}\n\t\t\t// hyphens: h, y, p\n\t\t\t// user-select: u, s, e\n\t\t\tcase 1019:\n\t\t\tcase 983: {\n\t\t\t\treturn webkit + out + moz + out + ms + out + out\n\t\t\t}\n\t\t\t// background/backface-visibility, b, a, c\n\t\t\tcase 883: {\n\t\t\t\t// backface-visibility, -\n\t\t\t\treturn out.charCodeAt(8) === DASH ? webkit + out + out : out\n\t\t\t}\n\t\t\t// flex: f, l, e\n\t\t\tcase 932: {\n\t\t\t\tif (out.charCodeAt(4) === DASH) {\n\t\t\t\t\tswitch (out.charCodeAt(5)) {\n\t\t\t\t\t\t// flex-grow, g\n\t\t\t\t\t\tcase 103: {\n\t\t\t\t\t\t\treturn webkit + 'box-' + out.replace('-grow', '') + webkit + out + ms + out.replace('grow', 'positive') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// flex-shrink, s\n\t\t\t\t\t\tcase 115: {\n\t\t\t\t\t\t\treturn webkit + out + ms + out.replace('shrink', 'negative') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// flex-basis, b\n\t\t\t\t\t\tcase 98: {\n\t\t\t\t\t\t\treturn webkit + out + ms + out.replace('basis', 'preferred-size') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn webkit + out + ms + out + out\n\t\t\t}\n\t\t\t// order: o, r, d\n\t\t\tcase 964: {\n\t\t\t\treturn webkit + out + ms + 'flex' + '-' + out + out\n\t\t\t}\n\t\t\t// justify-items/justify-content, j, u, s\n\t\t\tcase 1023: {\n\t\t\t\t// justify-content, c\n\t\t\t\tif (out.charCodeAt(8) !== 99) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tcache = out.substring(out.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify')\n\t\t\t\treturn webkit + 'box-pack' + cache + webkit + out + ms + 'flex-pack' + cache + out\n\t\t\t}\n\t\t\t// cursor, c, u, r\n\t\t\tcase 1005: {\n\t\t\t\treturn cursorptn.test(out) ? out.replace(colonptn, ':' + webkit) + out.replace(colonptn, ':' + moz) + out : out\n\t\t\t}\n\t\t\t// writing-mode, w, r, i\n\t\t\tcase 1000: {\n\t\t\t\tcache = out.substring(13).trim()\n\t\t\t\tindex = cache.indexOf('-') + 1\n\n\t\t\t\tswitch (cache.charCodeAt(0)+cache.charCodeAt(index)) {\n\t\t\t\t\t// vertical-lr\n\t\t\t\t\tcase 226: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'tb')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// vertical-rl\n\t\t\t\t\tcase 232: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'tb-rl')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// horizontal-tb\n\t\t\t\t\tcase 220: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'lr')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\treturn out\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn webkit + out + ms + cache + out\n\t\t\t}\n\t\t\t// position: sticky\n\t\t\tcase 1017: {\n\t\t\t\tif (out.indexOf('sticky', 9) === -1) {\n\t\t\t\t\treturn out\n\t\t\t\t}\n\t\t\t}\n\t\t\t// display(flex/inline-flex/inline-box): d, i, s\n\t\t\tcase 975: {\n\t\t\t\tindex = (out = input).length - 10\n\t\t\t\tcache = (out.charCodeAt(index) === 33 ? out.substring(0, index) : out).substring(input.indexOf(':', 7) + 1).trim()\n\n\t\t\t\tswitch (hash = cache.charCodeAt(0) + (cache.charCodeAt(7)|0)) {\n\t\t\t\t\t// inline-\n\t\t\t\t\tcase 203: {\n\t\t\t\t\t\t// inline-box\n\t\t\t\t\t\tif (cache.charCodeAt(8) < 111) {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// inline-box/sticky\n\t\t\t\t\tcase 115: {\n\t\t\t\t\t\tout = out.replace(cache, webkit+cache)+';'+out\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// inline-flex\n\t\t\t\t\t// flex\n\t\t\t\t\tcase 207:\n\t\t\t\t\tcase 102: {\n\t\t\t\t\t\tout = (\n\t\t\t\t\t\t\tout.replace(cache, webkit+(hash > 102 ? 'inline-' : '')+'box')+';'+\n\t\t\t\t\t\t\tout.replace(cache, webkit+cache)+';'+\n\t\t\t\t\t\t\tout.replace(cache, ms+cache+'box')+';'+\n\t\t\t\t\t\t\tout\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn out + ';'\n\t\t\t}\n\t\t\t// align-items, align-center, align-self: a, l, i, -\n\t\t\tcase 938: {\n\t\t\t\tif (out.charCodeAt(5) === DASH) {\n\t\t\t\t\tswitch (out.charCodeAt(6)) {\n\t\t\t\t\t\t// align-items, i\n\t\t\t\t\t\tcase 105: {\n\t\t\t\t\t\t\tcache = out.replace('-items', '')\n\t\t\t\t\t\t\treturn webkit + out + webkit + 'box-' + cache + ms + 'flex-' + cache + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// align-self, s\n\t\t\t\t\t\tcase 115: {\n\t\t\t\t\t\t\treturn webkit + out + ms + 'flex-item-' + out.replace(selfptn, '') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// align-content\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\treturn webkit + out + ms + 'flex-line-pack' + out.replace('align-content', '').replace(selfptn, '') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// min/max\n\t\t\tcase 973:\n\t\t\tcase 989: {\n\t\t\t\t// min-/max- height/width/block-size/inline-size\n\t\t\t\tif (out.charCodeAt(3) !== DASH || out.charCodeAt(4) === 122) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// height/width: min-content / width: max-content\n\t\t\tcase 931:\n\t\t\tcase 953: {\n\t\t\t\tif (dimensionptn.test(input) === true) {\n\t\t\t\t\t// stretch\n\t\t\t\t\tif ((cache = input.substring(input.indexOf(':') + 1)).charCodeAt(0) === 115)\n\t\t\t\t\t\treturn property(input.replace('stretch', 'fill-available'), first, second, third).replace(':fill-available', ':stretch')\n\t\t\t\t\telse\n\t\t\t\t\t\treturn out.replace(cache, webkit + cache) + out.replace(cache, moz + cache.replace('fill-', '')) + out\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// transform, transition: t, r, a\n\t\t\tcase 962: {\n\t\t\t\tout = webkit + out + (out.charCodeAt(5) === 102 ? ms + out : '') + out\n\n\t\t\t\t// transitions\n\t\t\t\tif (second + third === 211 && out.charCodeAt(13) === 105 && out.indexOf('transform', 10) > 0) {\n\t\t\t\t\treturn out.substring(0, out.indexOf(';', 27) + 1).replace(transformptn, '$1' + webkit + '$2') + out\n\t\t\t\t}\n\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Vendor\n\t *\n\t * @param {string} content\n\t * @param {number} context\n\t * @return {boolean}\n\t */\n\tfunction vendor (content, context) {\n\t\tvar index = content.indexOf(context === 1 ? ':' : '{')\n\t\tvar key = content.substring(0, context !== 3 ? index : 10)\n\t\tvar value = content.substring(index + 1, content.length - 1)\n\n\t\treturn should(context !== 2 ? key : key.replace(pseudofmt, '$1'), value, context)\n\t}\n\n\t/**\n\t * Supports\n\t *\n\t * @param {string} match\n\t * @param {string} group\n\t * @return {string}\n\t */\n\tfunction supports (match, group) {\n\t\tvar out = property(group, group.charCodeAt(0), group.charCodeAt(1), group.charCodeAt(2))\n\n\t\treturn out !== group+';' ? out.replace(propertyptn, ' or ($1)').substring(4) : '('+group+')'\n\t}\n\n\t/**\n\t * Animation\n\t *\n\t * @param {string} input\n\t * @return {string}\n\t */\n\tfunction animation (input) {\n\t\tvar length = input.length\n\t\tvar index = input.indexOf(':', 9) + 1\n\t\tvar declare = input.substring(0, index).trim()\n\t\tvar out = input.substring(index, length-1).trim()\n\n\t\tswitch (input.charCodeAt(9)*keyed) {\n\t\t\tcase 0: {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// animation-*, -\n\t\t\tcase DASH: {\n\t\t\t\t// animation-name, n\n\t\t\t\tif (input.charCodeAt(10) !== 110) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// animation/animation-name\n\t\t\tdefault: {\n\t\t\t\t// split in case of multiple animations\n\t\t\t\tvar list = out.split((out = '', animationptn))\n\n\t\t\t\tfor (var i = 0, index = 0, length = list.length; i < length; index = 0, ++i) {\n\t\t\t\t\tvar value = list[i]\n\t\t\t\t\tvar items = value.split(propertiesptn)\n\n\t\t\t\t\twhile (value = items[index]) {\n\t\t\t\t\t\tvar peak = value.charCodeAt(0)\n\n\t\t\t\t\t\tif (keyed === 1 && (\n\t\t\t\t\t\t\t// letters\n\t\t\t\t\t\t\t(peak > AT && peak < 90) || (peak > 96 && peak < 123) || peak === UNDERSCORE ||\n\t\t\t\t\t\t\t// dash but not in sequence i.e --\n\t\t\t\t\t\t\t(peak === DASH && value.charCodeAt(1) !== DASH)\n\t\t\t\t\t\t)) {\n\t\t\t\t\t\t\t// not a number/function\n\t\t\t\t\t\t\tswitch (isNaN(parseFloat(value)) + (value.indexOf('(') !== -1)) {\n\t\t\t\t\t\t\t\tcase 1: {\n\t\t\t\t\t\t\t\t\tswitch (value) {\n\t\t\t\t\t\t\t\t\t\t// not a valid reserved keyword\n\t\t\t\t\t\t\t\t\t\tcase 'infinite': case 'alternate': case 'backwards': case 'running':\n\t\t\t\t\t\t\t\t\t\tcase 'normal': case 'forwards': case 'both': case 'none': case 'linear':\n\t\t\t\t\t\t\t\t\t\tcase 'ease': case 'ease-in': case 'ease-out': case 'ease-in-out':\n\t\t\t\t\t\t\t\t\t\tcase 'paused': case 'reverse': case 'alternate-reverse': case 'inherit':\n\t\t\t\t\t\t\t\t\t\tcase 'initial': case 'unset': case 'step-start': case 'step-end': {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tvalue += key\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titems[index++] = value\n\t\t\t\t\t}\n\n\t\t\t\t\tout += (i === 0 ? '' : ',') + items.join(' ')\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tout = declare + out + ';'\n\n\t\tif (prefix === 1 || (prefix === 2 && vendor(out, 1)))\n\t\t\treturn webkit + out + out\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Isolate\n\t *\n\t * @param {Array} current\n\t */\n\tfunction isolate (current) {\n\t\tfor (var i = 0, length = current.length, selector = Array(length), padding, element; i < length; ++i) {\n\t\t\t// split individual elements in a selector i.e h1 h2 === [h1, h2]\n\t\t\tvar elements = current[i].split(elementptn)\n\t\t\tvar out = ''\n\n\t\t\tfor (var j = 0, size = 0, tail = 0, code = 0, l = elements.length; j < l; ++j) {\n\t\t\t\t// empty element\n\t\t\t\tif ((size = (element = elements[j]).length) === 0 && l > 1) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\ttail = out.charCodeAt(out.length-1)\n\t\t\t\tcode = element.charCodeAt(0)\n\t\t\t\tpadding = ''\n\n\t\t\t\tif (j !== 0) {\n\t\t\t\t\t// determine if we need padding\n\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tpadding = ' '\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tswitch (code) {\n\t\t\t\t\tcase AND: {\n\t\t\t\t\t\telement = padding + nscopealt\n\t\t\t\t\t}\n\t\t\t\t\tcase TILDE:\n\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\tcase PLUS:\n\t\t\t\t\tcase SPACE:\n\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase OPENBRACKET: {\n\t\t\t\t\t\telement = padding + element + nscopealt\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\tswitch (element.charCodeAt(1)*2 + element.charCodeAt(2)*3) {\n\t\t\t\t\t\t\t// :global\n\t\t\t\t\t\t\tcase 530: {\n\t\t\t\t\t\t\t\tif (escape > 0) {\n\t\t\t\t\t\t\t\t\telement = padding + element.substring(8, size - 1)\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// :hover, :nth-child(), ...\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tif (j < 1 || elements[j-1].length < 1) {\n\t\t\t\t\t\t\t\t\telement = padding + nscopealt + element\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\tpadding = ''\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\tif (size > 1 && element.indexOf(':') > 0) {\n\t\t\t\t\t\t\telement = padding + element.replace(pseudoptn, '$1' + nscopealt + '$2')\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telement = padding + element + nscopealt\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tout += element\n\t\t\t}\n\n\t\t\tselector[i] = out.replace(formatptn, '').trim()\n\t\t}\n\n\t\treturn selector\n\t}\n\n\t/**\n\t * Proxy\n\t *\n\t * @param {number} context\n\t * @param {string} content\n\t * @param {Array} selectors\n\t * @param {Array} parents\n\t * @param {number} line\n\t * @param {number} column\n\t * @param {number} length\n\t * @param {number} id\n\t * @param {number} depth\n\t * @param {number} at\n\t * @return {(string|void|*)}\n\t */\n\tfunction proxy (context, content, selectors, parents, line, column, length, id, depth, at) {\n\t\tfor (var i = 0, out = content, next; i < plugged; ++i) {\n\t\t\tswitch (next = plugins[i].call(stylis, context, out, selectors, parents, line, column, length, id, depth, at)) {\n\t\t\t\tcase void 0:\n\t\t\t\tcase false:\n\t\t\t\tcase true:\n\t\t\t\tcase null: {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tout = next\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tswitch (out) {\n\t\t\tcase void 0:\n\t\t\tcase false:\n\t\t\tcase true:\n\t\t\tcase null:\n\t\t\tcase content: {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\treturn out\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Minify\n\t *\n\t * @param {(string|*)} output\n\t * @return {string}\n\t */\n\tfunction minify (output) {\n\t\treturn output\n\t\t\t.replace(formatptn, '')\n\t\t\t.replace(beforeptn, '')\n\t\t\t.replace(afterptn, '$1')\n\t\t\t.replace(tailptn, '$1')\n\t\t\t.replace(whiteptn, ' ')\n\t}\n\n\t/**\n\t * Use\n\t *\n\t * @param {(Array|function(...?)|number|void)?} plugin\n\t */\n\tfunction use (plugin) {\n\t\tswitch (plugin) {\n\t\t\tcase void 0:\n\t\t\tcase null: {\n\t\t\t\tplugged = plugins.length = 0\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tswitch (plugin.constructor) {\n\t\t\t\t\tcase Array: {\n\t\t\t\t\t\tfor (var i = 0, length = plugin.length; i < length; ++i) {\n\t\t\t\t\t\t\tuse(plugin[i])\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase Function: {\n\t\t\t\t\t\tplugins[plugged++] = plugin\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase Boolean: {\n\t\t\t\t\t\tunkwn = !!plugin|0\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n \t\t}\n\n \t\treturn use\n\t}\n\n\t/**\n\t * Set\n\t *\n\t * @param {*} options\n\t */\n\tfunction set (options) {\n\t\tfor (var name in options) {\n\t\t\tvar value = options[name]\n\t\t\tswitch (name) {\n\t\t\t\tcase 'keyframe': keyed = value|0; break\n\t\t\t\tcase 'global': escape = value|0; break\n\t\t\t\tcase 'cascade': cascade = value|0; break\n\t\t\t\tcase 'compress': compress = value|0; break\n\t\t\t\tcase 'semicolon': semicolon = value|0; break\n\t\t\t\tcase 'preserve': preserve = value|0; break\n\t\t\t\tcase 'prefix':\n\t\t\t\t\tshould = null\n\n\t\t\t\t\tif (!value) {\n\t\t\t\t\t\tprefix = 0\n\t\t\t\t\t} else if (typeof value !== 'function') {\n\t\t\t\t\t\tprefix = 1\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprefix = 2\n\t\t\t\t\t\tshould = value\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn set\n\t}\n\n\t/**\n\t * Stylis\n\t *\n\t * @param {string} selector\n\t * @param {string} input\n\t * @return {*}\n\t */\n\tfunction stylis (selector, input) {\n\t\tif (this !== void 0 && this.constructor === stylis) {\n\t\t\treturn factory(selector)\n\t\t}\n\n\t\t// setup\n\t\tvar ns = selector\n\t\tvar code = ns.charCodeAt(0)\n\n\t\t// trim leading whitespace\n\t\tif (code < 33) {\n\t\t\tcode = (ns = ns.trim()).charCodeAt(0)\n\t\t}\n\n\t\t// keyframe/animation namespace\n\t\tif (keyed > 0) {\n\t\t\tkey = ns.replace(invalidptn, code === OPENBRACKET ? '' : '-')\n\t\t}\n\n\t\t// reset, used to assert if a plugin is moneky-patching the return value\n\t\tcode = 1\n\n\t\t// cascade/isolate\n\t\tif (cascade === 1) {\n\t\t\tnscope = ns\n\t\t} else {\n\t\t\tnscopealt = ns\n\t\t}\n\n\t\tvar selectors = [nscope]\n\t\tvar result\n\n\t\t// execute plugins, pre-process context\n\t\tif (plugged > 0) {\n\t\t\tresult = proxy(PREPS, input, selectors, selectors, line, column, 0, 0, 0, 0)\n\n\t\t\tif (result !== void 0 && typeof result === 'string') {\n\t\t\t\tinput = result\n\t\t\t}\n\t\t}\n\n\t\t// build\n\t\tvar output = compile(array, selectors, input, 0, 0)\n\n\t\t// execute plugins, post-process context\n\t\tif (plugged > 0) {\n\t\t\tresult = proxy(POSTS, output, selectors, selectors, line, column, output.length, 0, 0, 0)\n\n\t\t\t// bypass minification\n\t\t\tif (result !== void 0 && typeof(output = result) !== 'string') {\n\t\t\t\tcode = 0\n\t\t\t}\n\t\t}\n\n\t\t// reset\n\t\tkey = ''\n\t\tnscope = ''\n\t\tnscopealt = ''\n\t\tpattern = 0\n\t\tline = 1\n\t\tcolumn = 1\n\n\t\treturn compress*code === 0 ? output : minify(output)\n\t}\n\n\tstylis['use'] = use\n\tstylis['set'] = set\n\n\tif (options !== void 0) {\n\t\tset(options)\n\t}\n\n\treturn stylis\n}));\n\n\n//# sourceURL=webpack:///./node_modules/stylis/stylis.js?"); + +/***/ }), + /***/ "./node_modules/symbol-observable/es/index.js": /*!****************************************************!*\ !*** ./node_modules/symbol-observable/es/index.js ***! @@ -8894,6 +11229,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ }), +/***/ "./node_modules/underscore/underscore.js": +/*!***********************************************!*\ + !*** ./node_modules/underscore/underscore.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// Underscore.js 1.9.0\n// http://underscorejs.org\n// (c) 2009-2018 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\n(function() {\n\n // Baseline setup\n // --------------\n\n // Establish the root object, `window` (`self`) in the browser, `global`\n // on the server, or `this` in some virtual machines. We use `self`\n // instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n this ||\n {};\n\n // Save the previous value of the `_` variable.\n var previousUnderscore = root._;\n\n // Save bytes in the minified (but not gzipped) version:\n var ArrayProto = Array.prototype, ObjProto = Object.prototype;\n var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n // Create quick reference variables for speed access to core prototypes.\n var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n // All **ECMAScript 5** native function implementations that we hope to use\n // are declared here.\n var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create;\n\n // Naked function reference for surrogate-prototype-swapping.\n var Ctor = function(){};\n\n // Create a safe reference to the Underscore object for use below.\n var _ = function(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n };\n\n // Export the Underscore object for **Node.js**, with\n // backwards-compatibility for their old module API. If we're in\n // the browser, add `_` as a global object.\n // (`nodeType` is checked to ensure that `module`\n // and `exports` are not HTML elements.)\n if (typeof exports != 'undefined' && !exports.nodeType) {\n if (typeof module != 'undefined' && !module.nodeType && module.exports) {\n exports = module.exports = _;\n }\n exports._ = _;\n } else {\n root._ = _;\n }\n\n // Current version.\n _.VERSION = '1.9.0';\n\n // Internal function that returns an efficient (for current engines) version\n // of the passed-in callback, to be repeatedly applied in other Underscore\n // functions.\n var optimizeCb = function(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n };\n\n var builtinIteratee;\n\n // An internal function to generate callbacks that can be applied to each\n // element in a collection, returning the desired result — either `identity`,\n // an arbitrary callback, a property matcher, or a property accessor.\n var cb = function(value, context, argCount) {\n if (_.iteratee !== builtinIteratee) return _.iteratee(value, context);\n if (value == null) return _.identity;\n if (_.isFunction(value)) return optimizeCb(value, context, argCount);\n if (_.isObject(value) && !_.isArray(value)) return _.matcher(value);\n return _.property(value);\n };\n\n // External wrapper for our callback generator. Users may customize\n // `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n // This abstraction hides the internal-only argCount argument.\n _.iteratee = builtinIteratee = function(value, context) {\n return cb(value, context, Infinity);\n };\n\n // Some functions take a variable number of arguments, or a few expected\n // arguments at the beginning and then a variable number of values to operate\n // on. This helper accumulates all remaining arguments past the function’s\n // argument length (or an explicit `startIndex`), into an array that becomes\n // the last argument. Similar to ES6’s \"rest parameter\".\n var restArguments = function(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n };\n\n // An internal function for creating a new object that inherits from another.\n var baseCreate = function(prototype) {\n if (!_.isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n };\n\n var shallowProperty = function(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n };\n\n var deepGet = function(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n };\n\n // Helper for collection methods to determine whether a collection\n // should be iterated as an array or as an object.\n // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\n var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n var getLength = shallowProperty('length');\n var isArrayLike = function(collection) {\n var length = getLength(collection);\n return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;\n };\n\n // Collection Functions\n // --------------------\n\n // The cornerstone, an `each` implementation, aka `forEach`.\n // Handles raw objects in addition to array-likes. Treats all\n // sparse array-likes as if they were dense.\n _.each = _.forEach = function(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var keys = _.keys(obj);\n for (i = 0, length = keys.length; i < length; i++) {\n iteratee(obj[keys[i]], keys[i], obj);\n }\n }\n return obj;\n };\n\n // Return the results of applying the iteratee to each element.\n _.map = _.collect = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Create a reducing function iterating left or right.\n var createReduce = function(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[keys ? keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = keys ? keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n };\n\n // **Reduce** builds up a single result from a list of values, aka `inject`,\n // or `foldl`.\n _.reduce = _.foldl = _.inject = createReduce(1);\n\n // The right-associative version of reduce, also known as `foldr`.\n _.reduceRight = _.foldr = createReduce(-1);\n\n // Return the first value which passes a truth test. Aliased as `detect`.\n _.find = _.detect = function(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? _.findIndex : _.findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n };\n\n // Return all the elements that pass a truth test.\n // Aliased as `select`.\n _.filter = _.select = function(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n _.each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n };\n\n // Return all the elements for which a truth test fails.\n _.reject = function(obj, predicate, context) {\n return _.filter(obj, _.negate(cb(predicate)), context);\n };\n\n // Determine whether all of the elements match a truth test.\n // Aliased as `all`.\n _.every = _.all = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n };\n\n // Determine if at least one element in the object matches a truth test.\n // Aliased as `any`.\n _.some = _.any = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n };\n\n // Determine if the array or object contains a given item (using `===`).\n // Aliased as `includes` and `include`.\n _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return _.indexOf(obj, item, fromIndex) >= 0;\n };\n\n // Invoke a method (with arguments) on every item in a collection.\n _.invoke = restArguments(function(obj, path, args) {\n var contextPath, func;\n if (_.isFunction(path)) {\n func = path;\n } else if (_.isArray(path)) {\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return _.map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n });\n\n // Convenience version of a common use case of `map`: fetching a property.\n _.pluck = function(obj, key) {\n return _.map(obj, _.property(key));\n };\n\n // Convenience version of a common use case of `filter`: selecting only objects\n // containing specific `key:value` pairs.\n _.where = function(obj, attrs) {\n return _.filter(obj, _.matcher(attrs));\n };\n\n // Convenience version of a common use case of `find`: getting the first object\n // containing specific `key:value` pairs.\n _.findWhere = function(obj, attrs) {\n return _.find(obj, _.matcher(attrs));\n };\n\n // Return the maximum element (or element-based computation).\n _.max = function(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Return the minimum element (or element-based computation).\n _.min = function(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Shuffle a collection.\n _.shuffle = function(obj) {\n return _.sample(obj, Infinity);\n };\n\n // Sample **n** random values from a collection using the modern version of the\n // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n // If **n** is not specified, returns a single random element.\n // The internal `guard` argument allows it to work with `map`.\n _.sample = function(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n return obj[_.random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? _.clone(obj) : _.values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = _.random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n };\n\n // Sort the object's values by a criterion produced by an iteratee.\n _.sortBy = function(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return _.pluck(_.map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n };\n\n // An internal function used for aggregate \"group by\" operations.\n var group = function(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n _.each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n };\n\n // Groups the object's values by a criterion. Pass either a string attribute\n // to group by, or a function that returns the criterion.\n _.groupBy = group(function(result, value, key) {\n if (_.has(result, key)) result[key].push(value); else result[key] = [value];\n });\n\n // Indexes the object's values by a criterion, similar to `groupBy`, but for\n // when you know that your index values will be unique.\n _.indexBy = group(function(result, value, key) {\n result[key] = value;\n });\n\n // Counts instances of an object that group by a certain criterion. Pass\n // either a string attribute to count by, or a function that returns the\n // criterion.\n _.countBy = group(function(result, value, key) {\n if (_.has(result, key)) result[key]++; else result[key] = 1;\n });\n\n var reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\n // Safely create a real, live array from anything iterable.\n _.toArray = function(obj) {\n if (!obj) return [];\n if (_.isArray(obj)) return slice.call(obj);\n if (_.isString(obj)) {\n // Keep surrogate pair characters together\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return _.map(obj, _.identity);\n return _.values(obj);\n };\n\n // Return the number of elements in an object.\n _.size = function(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : _.keys(obj).length;\n };\n\n // Split a collection into two arrays: one whose elements all satisfy the given\n // predicate, and one whose elements all do not satisfy the predicate.\n _.partition = group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n }, true);\n\n // Array Functions\n // ---------------\n\n // Get the first element of an array. Passing **n** will return the first N\n // values in the array. Aliased as `head` and `take`. The **guard** check\n // allows it to work with `_.map`.\n _.first = _.head = _.take = function(array, n, guard) {\n if (array == null || array.length < 1) return void 0;\n if (n == null || guard) return array[0];\n return _.initial(array, array.length - n);\n };\n\n // Returns everything but the last entry of the array. Especially useful on\n // the arguments object. Passing **n** will return all the values in\n // the array, excluding the last N.\n _.initial = function(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n };\n\n // Get the last element of an array. Passing **n** will return the last N\n // values in the array.\n _.last = function(array, n, guard) {\n if (array == null || array.length < 1) return void 0;\n if (n == null || guard) return array[array.length - 1];\n return _.rest(array, Math.max(0, array.length - n));\n };\n\n // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.\n // Especially useful on the arguments object. Passing an **n** will return\n // the rest N values in the array.\n _.rest = _.tail = _.drop = function(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n };\n\n // Trim out all falsy values from an array.\n _.compact = function(array) {\n return _.filter(array, Boolean);\n };\n\n // Internal implementation of a recursive `flatten` function.\n var flatten = function(input, shallow, strict, output) {\n output = output || [];\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (shallow) {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n } else {\n flatten(value, shallow, strict, output);\n idx = output.length;\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n };\n\n // Flatten out an array, either recursively (by default), or just one level.\n _.flatten = function(array, shallow) {\n return flatten(array, shallow, false);\n };\n\n // Return a version of the array that does not contain the specified value(s).\n _.without = restArguments(function(array, otherArrays) {\n return _.difference(array, otherArrays);\n });\n\n // Produce a duplicate-free version of the array. If the array has already\n // been sorted, you have the option of using a faster algorithm.\n // The faster algorithm will not work with an iteratee if the iteratee\n // is not a one-to-one function, so providing an iteratee will disable\n // the faster algorithm.\n // Aliased as `unique`.\n _.uniq = _.unique = function(array, isSorted, iteratee, context) {\n if (!_.isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!_.contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!_.contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n };\n\n // Produce an array that contains the union: each distinct element from all of\n // the passed-in arrays.\n _.union = restArguments(function(arrays) {\n return _.uniq(flatten(arrays, true, true));\n });\n\n // Produce an array that contains every item shared between all the\n // passed-in arrays.\n _.intersection = function(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (_.contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!_.contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n };\n\n // Take the difference between one array and a number of other arrays.\n // Only the elements present in just the first array will remain.\n _.difference = restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return _.filter(array, function(value){\n return !_.contains(rest, value);\n });\n });\n\n // Complement of _.zip. Unzip accepts an array of arrays and groups\n // each array's elements on shared indices.\n _.unzip = function(array) {\n var length = array && _.max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = _.pluck(array, index);\n }\n return result;\n };\n\n // Zip together multiple lists into a single array -- elements that share\n // an index go together.\n _.zip = restArguments(_.unzip);\n\n // Converts lists into objects. Pass either a single array of `[key, value]`\n // pairs, or two parallel arrays of the same length -- one of keys, and one of\n // the corresponding values. Passing by pairs is the reverse of _.pairs.\n _.object = function(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n };\n\n // Generator function to create the findIndex and findLastIndex functions.\n var createPredicateIndexFinder = function(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n };\n\n // Returns the first index on an array-like that passes a predicate test.\n _.findIndex = createPredicateIndexFinder(1);\n _.findLastIndex = createPredicateIndexFinder(-1);\n\n // Use a comparator function to figure out the smallest index at which\n // an object should be inserted so as to maintain order. Uses binary search.\n _.sortedIndex = function(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n };\n\n // Generator function to create the indexOf and lastIndexOf functions.\n var createIndexFinder = function(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), _.isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n };\n\n // Return the position of the first occurrence of an item in an array,\n // or -1 if the item is not included in the array.\n // If the array is large and already in sort order, pass `true`\n // for **isSorted** to use binary search.\n _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);\n _.lastIndexOf = createIndexFinder(-1, _.findLastIndex);\n\n // Generate an integer Array containing an arithmetic progression. A port of\n // the native Python `range()` function. See\n // [the Python documentation](http://docs.python.org/library/functions.html#range).\n _.range = function(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n };\n\n // Chunk a single array into multiple arrays, each containing `count` or fewer\n // items.\n _.chunk = function(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n };\n\n // Function (ahem) Functions\n // ------------------\n\n // Determines whether to execute a function as a constructor\n // or a normal function with the provided arguments.\n var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (_.isObject(result)) return result;\n return self;\n };\n\n // Create a function bound to a given object (assigning `this`, and arguments,\n // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if\n // available.\n _.bind = restArguments(function(func, context, args) {\n if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n });\n\n // Partially apply a function by creating a version that has had some of its\n // arguments pre-filled, without changing its dynamic `this` context. _ acts\n // as a placeholder by default, allowing any combination of arguments to be\n // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\n _.partial = restArguments(function(func, boundArgs) {\n var placeholder = _.partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n });\n\n _.partial.placeholder = _;\n\n // Bind a number of an object's methods to that object. Remaining arguments\n // are the method names to be bound. Useful for ensuring that all callbacks\n // defined on an object belong to it.\n _.bindAll = restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = _.bind(obj[key], obj);\n }\n });\n\n // Memoize an expensive function by storing its results.\n _.memoize = function(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!_.has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n };\n\n // Delays a function for the given number of milliseconds, and then calls\n // it with the arguments supplied.\n _.delay = restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n });\n\n // Defers a function, scheduling it to run after the current call stack has\n // cleared.\n _.defer = _.partial(_.delay, _, 1);\n\n // Returns a function, that, when invoked, will only be triggered at most once\n // during a given window of time. Normally, the throttled function will run\n // as much as it can, without ever going more than once per `wait` duration;\n // but if you'd like to disable the execution on the leading edge, pass\n // `{leading: false}`. To disable execution on the trailing edge, ditto.\n _.throttle = function(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : _.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var now = _.now();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n };\n\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds. If `immediate` is passed, trigger the function on the\n // leading edge, instead of the trailing.\n _.debounce = function(func, wait, immediate) {\n var timeout, result;\n\n var later = function(context, args) {\n timeout = null;\n if (args) result = func.apply(context, args);\n };\n\n var debounced = restArguments(function(args) {\n if (timeout) clearTimeout(timeout);\n if (immediate) {\n var callNow = !timeout;\n timeout = setTimeout(later, wait);\n if (callNow) result = func.apply(this, args);\n } else {\n timeout = _.delay(later, wait, this, args);\n }\n\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = null;\n };\n\n return debounced;\n };\n\n // Returns the first function passed as an argument to the second,\n // allowing you to adjust arguments, run code before and after, and\n // conditionally execute the original function.\n _.wrap = function(func, wrapper) {\n return _.partial(wrapper, func);\n };\n\n // Returns a negated version of the passed-in predicate.\n _.negate = function(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n };\n\n // Returns a function that is the composition of a list of functions, each\n // consuming the return value of the function that follows.\n _.compose = function() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n };\n\n // Returns a function that will only be executed on and after the Nth call.\n _.after = function(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n };\n\n // Returns a function that will only be executed up to (but not including) the Nth call.\n _.before = function(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n };\n\n // Returns a function that will be executed at most one time, no matter how\n // often you call it. Useful for lazy initialization.\n _.once = _.partial(_.before, 2);\n\n _.restArguments = restArguments;\n\n // Object Functions\n // ----------------\n\n // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\n var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\n var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n var collectNonEnumProps = function(obj, keys) {\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = _.isFunction(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (_.has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) {\n keys.push(prop);\n }\n }\n };\n\n // Retrieve the names of an object's own properties.\n // Delegates to **ECMAScript 5**'s native `Object.keys`.\n _.keys = function(obj) {\n if (!_.isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (_.has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve all the property names of an object.\n _.allKeys = function(obj) {\n if (!_.isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve the values of an object's properties.\n _.values = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[keys[i]];\n }\n return values;\n };\n\n // Returns the results of applying the iteratee to each element of the object.\n // In contrast to _.map it returns an object.\n _.mapObject = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = _.keys(obj),\n length = keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Convert an object into a list of `[key, value]` pairs.\n // The opposite of _.object.\n _.pairs = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [keys[i], obj[keys[i]]];\n }\n return pairs;\n };\n\n // Invert the keys and values of an object. The values must be serializable.\n _.invert = function(obj) {\n var result = {};\n var keys = _.keys(obj);\n for (var i = 0, length = keys.length; i < length; i++) {\n result[obj[keys[i]]] = keys[i];\n }\n return result;\n };\n\n // Return a sorted list of the function names available on the object.\n // Aliased as `methods`.\n _.functions = _.methods = function(obj) {\n var names = [];\n for (var key in obj) {\n if (_.isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n };\n\n // An internal function for creating assigner functions.\n var createAssigner = function(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n };\n\n // Extend a given object with all the properties in passed-in object(s).\n _.extend = createAssigner(_.allKeys);\n\n // Assigns a given object with all the own properties in the passed-in object(s).\n // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\n _.extendOwn = _.assign = createAssigner(_.keys);\n\n // Returns the first key on an object that passes a predicate test.\n _.findKey = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = _.keys(obj), key;\n for (var i = 0, length = keys.length; i < length; i++) {\n key = keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n };\n\n // Internal pick helper function to determine if `obj` has key `key`.\n var keyInObj = function(value, key, obj) {\n return key in obj;\n };\n\n // Return a copy of the object only containing the whitelisted properties.\n _.pick = restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (_.isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = _.allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n });\n\n // Return a copy of the object without the blacklisted properties.\n _.omit = restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (_.isFunction(iteratee)) {\n iteratee = _.negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = _.map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !_.contains(keys, key);\n };\n }\n return _.pick(obj, iteratee, context);\n });\n\n // Fill in a given object with default properties.\n _.defaults = createAssigner(_.allKeys, true);\n\n // Creates an object that inherits from the given prototype object.\n // If additional properties are provided then they will be added to the\n // created object.\n _.create = function(prototype, props) {\n var result = baseCreate(prototype);\n if (props) _.extendOwn(result, props);\n return result;\n };\n\n // Create a (shallow-cloned) duplicate of an object.\n _.clone = function(obj) {\n if (!_.isObject(obj)) return obj;\n return _.isArray(obj) ? obj.slice() : _.extend({}, obj);\n };\n\n // Invokes interceptor with the obj, and then returns obj.\n // The primary purpose of this method is to \"tap into\" a method chain, in\n // order to perform operations on intermediate results within the chain.\n _.tap = function(obj, interceptor) {\n interceptor(obj);\n return obj;\n };\n\n // Returns whether an object has a given set of `key:value` pairs.\n _.isMatch = function(object, attrs) {\n var keys = _.keys(attrs), length = keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n };\n\n\n // Internal recursive comparison function for `isEqual`.\n var eq, deepEq;\n eq = function(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n };\n\n // Internal recursive comparison function for `isEqual`.\n deepEq = function(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor &&\n _.isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var keys = _.keys(a), key;\n length = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (_.keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = keys[length];\n if (!(_.has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n };\n\n // Perform a deep comparison to check if two objects are equal.\n _.isEqual = function(a, b) {\n return eq(a, b);\n };\n\n // Is a given array, string, or object empty?\n // An \"empty\" object has no enumerable own-properties.\n _.isEmpty = function(obj) {\n if (obj == null) return true;\n if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;\n return _.keys(obj).length === 0;\n };\n\n // Is a given value a DOM element?\n _.isElement = function(obj) {\n return !!(obj && obj.nodeType === 1);\n };\n\n // Is a given value an array?\n // Delegates to ECMA5's native Array.isArray\n _.isArray = nativeIsArray || function(obj) {\n return toString.call(obj) === '[object Array]';\n };\n\n // Is a given variable an object?\n _.isObject = function(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n };\n\n // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError, isMap, isWeakMap, isSet, isWeakSet.\n _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet'], function(name) {\n _['is' + name] = function(obj) {\n return toString.call(obj) === '[object ' + name + ']';\n };\n });\n\n // Define a fallback version of the method in browsers (ahem, IE < 9), where\n // there isn't any inspectable \"Arguments\" type.\n if (!_.isArguments(arguments)) {\n _.isArguments = function(obj) {\n return _.has(obj, 'callee');\n };\n }\n\n // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,\n // IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\n var nodelist = root.document && root.document.childNodes;\n if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n _.isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n }\n\n // Is a given object a finite number?\n _.isFinite = function(obj) {\n return !_.isSymbol(obj) && isFinite(obj) && !isNaN(parseFloat(obj));\n };\n\n // Is the given value `NaN`?\n _.isNaN = function(obj) {\n return _.isNumber(obj) && isNaN(obj);\n };\n\n // Is a given value a boolean?\n _.isBoolean = function(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n };\n\n // Is a given value equal to null?\n _.isNull = function(obj) {\n return obj === null;\n };\n\n // Is a given variable undefined?\n _.isUndefined = function(obj) {\n return obj === void 0;\n };\n\n // Shortcut function for checking if an object has a given property directly\n // on itself (in other words, not on a prototype).\n _.has = function(obj, path) {\n if (!_.isArray(path)) {\n return obj != null && hasOwnProperty.call(obj, path);\n }\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (obj == null || !hasOwnProperty.call(obj, key)) {\n return false;\n }\n obj = obj[key];\n }\n return !!length;\n };\n\n // Utility Functions\n // -----------------\n\n // Run Underscore.js in *noConflict* mode, returning the `_` variable to its\n // previous owner. Returns a reference to the Underscore object.\n _.noConflict = function() {\n root._ = previousUnderscore;\n return this;\n };\n\n // Keep the identity function around for default iteratees.\n _.identity = function(value) {\n return value;\n };\n\n // Predicate-generating functions. Often useful outside of Underscore.\n _.constant = function(value) {\n return function() {\n return value;\n };\n };\n\n _.noop = function(){};\n\n // Creates a function that, when passed an object, will traverse that object’s\n // properties down the given `path`, specified as an array of keys or indexes.\n _.property = function(path) {\n if (!_.isArray(path)) {\n return shallowProperty(path);\n }\n return function(obj) {\n return deepGet(obj, path);\n };\n };\n\n // Generates a function for a given object that returns a given property.\n _.propertyOf = function(obj) {\n if (obj == null) {\n return function(){};\n }\n return function(path) {\n return !_.isArray(path) ? obj[path] : deepGet(obj, path);\n };\n };\n\n // Returns a predicate for checking whether an object has a given set of\n // `key:value` pairs.\n _.matcher = _.matches = function(attrs) {\n attrs = _.extendOwn({}, attrs);\n return function(obj) {\n return _.isMatch(obj, attrs);\n };\n };\n\n // Run a function **n** times.\n _.times = function(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n };\n\n // Return a random integer between min and max (inclusive).\n _.random = function(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n };\n\n // A (possibly faster) way to get the current timestamp as an integer.\n _.now = Date.now || function() {\n return new Date().getTime();\n };\n\n // List of HTML entities for escaping.\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n var unescapeMap = _.invert(escapeMap);\n\n // Functions for escaping and unescaping strings to/from HTML interpolation.\n var createEscaper = function(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + _.keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n };\n _.escape = createEscaper(escapeMap);\n _.unescape = createEscaper(unescapeMap);\n\n // Traverses the children of `obj` along `path`. If a child is a function, it\n // is invoked with its parent as context. Returns the value of the final\n // child, or `fallback` if any child is undefined.\n _.result = function(obj, path, fallback) {\n if (!_.isArray(path)) path = [path];\n var length = path.length;\n if (!length) {\n return _.isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = _.isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n };\n\n // Generate a unique integer id (unique within the entire client session).\n // Useful for temporary DOM ids.\n var idCounter = 0;\n _.uniqueId = function(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n };\n\n // By default, Underscore uses ERB-style template delimiters, change the\n // following template settings to use alternative delimiters.\n _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n };\n\n // When customizing `templateSettings`, if you don't want to define an\n // interpolation, evaluation or escaping regex, we need one that is\n // guaranteed not to match.\n var noMatch = /(.)^/;\n\n // Certain characters need to be escaped so that they can be put into a\n // string literal.\n var escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n var escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\n var escapeChar = function(match) {\n return '\\\\' + escapes[match];\n };\n\n // JavaScript micro-templating, similar to John Resig's implementation.\n // Underscore templating handles arbitrary delimiters, preserves whitespace,\n // and correctly escapes quotes within interpolated code.\n // NB: `oldSettings` only exists for backwards compatibility.\n _.template = function(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = _.defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n // If a variable is not specified, place data values in local scope.\n if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(settings.variable || 'obj', '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n var argument = settings.variable || 'obj';\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n };\n\n // Add a \"chain\" function. Start chaining a wrapped Underscore object.\n _.chain = function(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n };\n\n // OOP\n // ---------------\n // If Underscore is called as a function, it returns a wrapped object that\n // can be used OO-style. This wrapper holds altered versions of all the\n // underscore functions. Wrapped objects may be chained.\n\n // Helper function to continue chaining intermediate results.\n var chainResult = function(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n };\n\n // Add your own custom functions to the Underscore object.\n _.mixin = function(obj) {\n _.each(_.functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n };\n\n // Add all of the Underscore functions to the wrapper object.\n _.mixin(_);\n\n // Add all mutator Array functions to the wrapper.\n _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];\n return chainResult(this, obj);\n };\n });\n\n // Add all accessor Array functions to the wrapper.\n _.each(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n return chainResult(this, method.apply(this._wrapped, arguments));\n };\n });\n\n // Extracts the result from a wrapped and chained object.\n _.prototype.value = function() {\n return this._wrapped;\n };\n\n // Provide unwrapping proxy for some methods used in engine operations\n // such as arithmetic and JSON stringification.\n _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n _.prototype.toString = function() {\n return String(this._wrapped);\n };\n\n // AMD registration happens at the end for compatibility with AMD loaders\n // that may not enforce next-turn semantics on modules. Even though general\n // practice for AMD registration is to be anonymous, underscore registers\n // as a named module because, like jQuery, it is a base library that is\n // popular enough to be bundled in a third party lib, but not be part of\n // an AMD load request. Those cases could generate an error when an\n // anonymous define() is called outside of a loader request.\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function() {\n return _;\n }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n }\n}());\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack:///./node_modules/underscore/underscore.js?"); + +/***/ }), + /***/ "./node_modules/value-equal/index.js": /*!*******************************************!*\ !*** ./node_modules/value-equal/index.js ***! diff --git a/app/src/components/FlexibleGraph.js b/app/src/components/FlexibleGraph.js index d1b03a2..b346d89 100644 --- a/app/src/components/FlexibleGraph.js +++ b/app/src/components/FlexibleGraph.js @@ -81,7 +81,6 @@ export class FlexibleGraph extends Component{ const mappedValues = _.map(this.props.tagDescriptions, (desc, key) => { return {title: desc, value: _.round(values[key].y, 1) + ` ${this.props.units[key]}`}; }); - console.log(mappedValues, this.props.tagDescriptions); return mappedValues; } diff --git a/app/src/components/Main.js b/app/src/components/Main.js index d34f087..ccd1077 100644 --- a/app/src/components/Main.js +++ b/app/src/components/Main.js @@ -3,6 +3,7 @@ import { connect } from "react-redux"; import { LiquidGauge } from "./LiquidGauge"; import { FlexibleGraph } from "./FlexibleGraph"; +import { TimeSeriesGraph } from "./TimeSeriesGraph"; // const graphColors = ["#d7191c", "#fdae61", "#ffffbf", "#abd9e9", "#2c7bb6"]; @@ -103,6 +104,22 @@ export class Main extends Component { ]} round={[1, 2, 1, 1, 1]} /> +

VFD Data

diff --git a/app/src/components/TimeSeriesGraph.js b/app/src/components/TimeSeriesGraph.js new file mode 100644 index 0000000..a477964 --- /dev/null +++ b/app/src/components/TimeSeriesGraph.js @@ -0,0 +1,36 @@ +import React from "react"; +import { TimeSeries } from "pondjs"; +import _ from "lodash"; + +import { Charts, ChartContainer, ChartRow, YAxis, LineChart } from "react-timeseries-charts"; + +export function TimeSeriesGraph(props) { + + const series = _.map(props.tagHistory, (tag, key) => { + const points = _.reverse(_.map(tag, ({timestamp, value}) => { + return [timestamp.getTime(), parseFloat(value)]; + })); + return new TimeSeries({ + name: props.tagDescriptions[key], + columns: ["time", props.tagDescriptions[key]], + points: points + }); + }); + + // const lineCharts = _.map(props.tagHistory, (tag, key) => { + // return ; + // }); + + + return( + + + + + ; + + + + ); +} + diff --git a/package.json b/package.json index 638a93e..3d20e40 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,7 @@ "lodash": "^4.17.5", "moment": "^2.22.1", "node": "^9.11.0", + "pondjs": "^0.8.8", "react": "^16.2.0", "react-dom": "^16.2.0", "react-event-timeline": "^1.5.1", @@ -72,6 +73,7 @@ "react-redux": "^5.0.7", "react-router": "^4.2.0", "react-router-dom": "^4.2.2", + "react-timeseries-charts": "^0.14.0", "react-vis": "^1.9.2", "redux": "^3.7.2", "redux-electron-ipc": "^1.1.12", diff --git a/yarn.lock b/yarn.lock index 433e9f3..49afb5e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -136,6 +136,22 @@ version "8.10.8" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.8.tgz#794cba23cc9f8d9715f6543fa8827433b5f5cd3b" +"@types/react-dom@^0.14.23": + version "0.14.23" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-0.14.23.tgz#cecfcfad754b4c2765fe5d29b81b301889ad6c2e" + dependencies: + "@types/react" "*" + +"@types/react@*": + version "16.3.12" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.3.12.tgz#68d9146f3e9797e38ffbf22f7ed1dde91a2cfd2e" + dependencies: + csstype "^2.2.0" + +"@types/react@^15.0.21": + version "15.6.15" + resolved "https://registry.yarnpkg.com/@types/react/-/react-15.6.15.tgz#1856f932120311aa566f91e6d0c6e613d6448236" + abab@^1.0.0, abab@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" @@ -433,6 +449,10 @@ array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" +array.prototype.fill@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array.prototype.fill/-/array.prototype.fill-1.0.2.tgz#ab33207f21d57d1ab2f7f0d1cf122d3419c38ef5" + arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -1122,6 +1142,14 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" +babel-polyfill@^6.9.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" + dependencies: + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" + babel-preset-env@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48" @@ -1257,7 +1285,7 @@ babel-register@^6.26.0, babel-register@^6.9.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0, babel-runtime@^6.5.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: @@ -1537,6 +1565,13 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +buffer@^5.0.3: + version "5.1.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.1.0.tgz#c913e43678c7cb7c8bd16afbcddb6c5505e8f9fe" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + builder-util-runtime@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-4.1.0.tgz#7dcd042d555d2f161a5538d7a0ea8c292daa0683" @@ -2018,6 +2053,10 @@ color@^0.11.0: color-convert "^1.3.0" color-string "^0.3.0" +colorbrewer@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/colorbrewer/-/colorbrewer-1.1.0.tgz#5197584353527eb37466df3dc611f1a51de8cd27" + colormin@^1.0.5: version "1.1.2" resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" @@ -2229,6 +2268,10 @@ crypto-random-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + css-color-names@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" @@ -2269,6 +2312,14 @@ css-selector-tokenizer@^0.7.0: fastparse "^1.1.1" regexpu-core "^1.0.0" +css-to-react-native@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-2.1.2.tgz#c06d628467ef961c85ec358a90f3c87469fb0095" + dependencies: + css-color-keywords "^1.0.0" + fbjs "^0.8.5" + postcss-value-parser "^3.3.0" + css-what@2.1: version "2.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" @@ -2331,6 +2382,10 @@ cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0", "cssom@>= 0.3.2 < 0.4.0": dependencies: cssom "0.3.x" +csstype@^2.2.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.4.1.tgz#ba35a94259cffc07ed022954737a1da690dcae2c" + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -2345,6 +2400,10 @@ d3-array@1, d3-array@^1.1.1, d3-array@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.1.tgz#d1ca33de2f6ac31efadb8e050a021d7e2396d5dc" +d3-axis@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-1.0.8.tgz#31a705a0b535e65759de14173a31933137f18efa" + d3-collection@1, d3-collection@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.4.tgz#342dfd12837c90974f33f1cc0a785aea570dcdc2" @@ -2363,7 +2422,7 @@ d3-dispatch@1: version "1.0.3" resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.3.tgz#46e1491eaa9b58c358fce5be4e8bed626e7871f8" -d3-ease@1, d3-ease@^1.0.2: +d3-ease@1, d3-ease@^1.0.2, d3-ease@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.3.tgz#68bfbc349338a380c44d8acc4fbc3304aa2d8c0e" @@ -2399,6 +2458,13 @@ d3-sankey@^0.7.1: d3-collection "1" d3-shape "^1.2.0" +d3-scale-chromatic@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-1.2.0.tgz#25820d059c0eccc33e85f77561f37382a817ab58" + dependencies: + d3-color "1" + d3-interpolate "1" + d3-scale@^1.0.5, d3-scale@^1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-1.0.7.tgz#fa90324b3ea8a776422bd0472afab0b252a0945d" @@ -2421,13 +2487,13 @@ d3-shape@^1.1.0, d3-shape@^1.2.0: dependencies: d3-path "1" -d3-time-format@2: +d3-time-format@2, d3-time-format@^2.0.5: version "2.1.1" resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.1.1.tgz#85b7cdfbc9ffca187f14d3c456ffda268081bb31" dependencies: d3-time "1" -d3-time@1: +d3-time@1, d3-time@^1.0.7: version "1.0.8" resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.0.8.tgz#dbd2d6007bf416fe67a76d17947b784bffea1e84" @@ -2634,6 +2700,10 @@ doctrine@^2.0.2, doctrine@^2.1.0: dependencies: esutils "^2.0.2" +dom-resize@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dom-resize/-/dom-resize-1.0.3.tgz#df9d71e808171fdb66ee88517b0d1c02cdb98876" + dom-serializer@0, dom-serializer@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" @@ -3355,7 +3425,7 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" -fbjs@^0.8.16: +fbjs@^0.8.16, fbjs@^0.8.5, fbjs@^0.8.9: version "0.8.16" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db" dependencies: @@ -3470,6 +3540,15 @@ flatten@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" +flexbox-react@^4.3.3: + version "4.4.0" + resolved "https://registry.yarnpkg.com/flexbox-react/-/flexbox-react-4.4.0.tgz#35ebd3eb108bbda1b2760df4968aabc7061f5f33" + dependencies: + styled-components "^2.0.0" + optionalDependencies: + "@types/react" "^15.0.21" + "@types/react-dom" "^0.14.23" + flow-parser@^0.*: version "0.69.0" resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.69.0.tgz#378b5128d6d0b554a8b2f16a4ca3e1ab9649f00e" @@ -4018,6 +4097,10 @@ hoek@4.x.x: version "4.2.1" resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" +hoist-non-react-statics@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" + hoist-non-react-statics@^2.3.0, hoist-non-react-statics@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.0.tgz#d2ca2dfc19c5a91c5a6615ce8e564ef0347e2a40" @@ -4153,6 +4236,14 @@ ignore@^3.3.3: version "3.3.7" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" +immutable-devtools@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/immutable-devtools/-/immutable-devtools-0.0.4.tgz#1e7e87f2c7a4f0533955bc4c2922d124bf9129dd" + +immutable@^3.6.4: + version "3.8.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" + import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" @@ -4253,7 +4344,7 @@ into-stream@^3.1.0: from2 "^2.1.1" p-is-promise "^1.1.0" -invariant@^2.0.0, invariant@^2.2.0, invariant@^2.2.1, invariant@^2.2.2: +invariant@^2.0.0, invariant@^2.1.1, invariant@^2.2.0, invariant@^2.2.1, invariant@^2.2.2: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" dependencies: @@ -5533,7 +5624,7 @@ merge-stream@^1.0.1: dependencies: readable-stream "^2.0.1" -merge@^1.1.3: +merge@^1.1.3, merge@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" @@ -5692,7 +5783,11 @@ mkdirp@0.5.0: dependencies: minimist "0.0.8" -moment@^2.22.1: +moment-duration-format@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/moment-duration-format/-/moment-duration-format-1.3.0.tgz#541771b5f87a049cc65540475d3ad966737d6908" + +moment@^2.18.1, moment@^2.22.1, moment@^2.9.0: version "2.22.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.1.tgz#529a2e9bf973f259c9643d237fda84de3a26e8ad" @@ -6426,6 +6521,17 @@ pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" +pondjs@^0.8.8: + version "0.8.8" + resolved "https://registry.yarnpkg.com/pondjs/-/pondjs-0.8.8.tgz#6f5de41cfdf6535e7198cf7be1998243fb949473" + dependencies: + babel-polyfill "^6.9.1" + babel-runtime "^6.5.0" + immutable "^3.6.4" + immutable-devtools "0.0.4" + moment "^2.9.0" + underscore "^1.8.2" + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -6751,7 +6857,7 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -prop-types@^15.5.4, prop-types@^15.5.8, prop-types@^15.6.0: +prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.8, prop-types@^15.6.0: version "15.6.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca" dependencies: @@ -6984,6 +7090,33 @@ react-test-renderer@^16.0.0-0: prop-types "^15.6.0" react-is "^16.3.1" +react-timeseries-charts@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/react-timeseries-charts/-/react-timeseries-charts-0.14.0.tgz#69db7e70298f0f40723b52e2b9e496d614cba4a1" + dependencies: + array.prototype.fill "^1.0.1" + babel-runtime "^6.23.0" + colorbrewer "^1.0.0" + d3-axis "^1.0.8" + d3-ease "^1.0.3" + d3-format "^1.2.0" + d3-interpolate "^1.1.5" + d3-scale "^1.0.6" + d3-scale-chromatic "^1.1.1" + d3-selection "^1.1.0" + d3-shape "^1.2.0" + d3-time "^1.0.7" + d3-time-format "^2.0.5" + d3-transition "^1.1.0" + dom-resize "^1.0.3" + flexbox-react "^4.3.3" + invariant "^2.1.1" + merge "^1.2.0" + moment "^2.18.1" + moment-duration-format "^1.3.0" + prop-types "^15.5.10" + underscore "^1.8.3" + react-vis@^1.9.2: version "1.9.2" resolved "https://registry.yarnpkg.com/react-vis/-/react-vis-1.9.2.tgz#4dbd5d91ac820fd39fa7ad1c892198495194f6e3" @@ -7177,6 +7310,10 @@ regenerate@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" +regenerator-runtime@^0.10.5: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" @@ -7956,6 +8093,23 @@ strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" +styled-components@^2.0.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-2.4.0.tgz#086d0fd483d54638837fca3ea546a030b94adf75" + dependencies: + buffer "^5.0.3" + css-to-react-native "^2.0.3" + fbjs "^0.8.9" + hoist-non-react-statics "^1.2.0" + is-plain-object "^2.0.1" + prop-types "^15.5.4" + stylis "^3.4.0" + supports-color "^3.2.3" + +stylis@^3.4.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.0.tgz#016fa239663d77f868fef5b67cf201c4b7c701e1" + sumchecker@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-1.3.1.tgz#79bb3b4456dd04f18ebdbc0d703a1d1daec5105d" @@ -8284,6 +8438,10 @@ uid-number@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" +underscore@^1.8.2, underscore@^1.8.3: + version "1.9.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.0.tgz#31dbb314cfcc88f169cd3692d9149d81a00a73e4" + underscore@~1.4.4: version "1.4.4" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604"