{"version":3,"file":"js/2652-08a42a902cc0bfea03c9.chunk.js","mappings":"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EIjB,EAAES,GAAK,CACH,GAGZ,CACA07E,EAAG7rF,KAAK0P,EACZ,CACA,OAAOm8E,CACX,CAyeDuC,CAAG,CACRviF,IAAKi5D,EAAE,CACP,GACA,EACA,EACA,GACA,EACA,GACA54D,EACA,CAAC,EAAG,GACJ,EACAA,EACA,CAAC,EAAG,IACJA,EACA,CAAC,GAAI,GACLkH,EACA,CAAC,GAAI,GACL,EACA,EACA,GACA,EACA,EACA,EACAlH,EACA,CAAC,EAAG,GACJ,EACA,EACA,EACAkH,EACA,CAAC,GAAI,GACLA,EACA,CAAC,GAAI,GACL,EACA,EACA,IAEAsT,OAAQo+C,EAAE,CACV,EACA,EACA,EACA,GACA,GACA54D,EACA,CAAC,GAAI,GAAI,GACT,EACA,EACAA,EACA,CAAC,EAAG,EAAG,GACPkH,EACA,CAAC,GAAI,IACLA,EACA,CAAC,GAAI,GACL,EACA,EACA,GACA,GACAA,EACA,CAAC,GAAI,IACLA,EACA,CAAC,GAAI,GACLA,EACA,CAAC,GAAI,IACLA,EACA,CAAC,GAAI,IACLA,EACA,CAAC,IAAK,GACN,EACAA,EACA,CAAC,GAAI,IACL,EACAA,EACA,CAAC,IAAK,IACN,GACAA,EACA,CAAC,IAAK,GACN,EACAA,EACA,CAAC,EAAG,GACJA,EACA,CAAC,EAAG,GACJ,EACA,EACA,GACAA,EACA,CAAC,IAAK,IACNA,EACA,CAAC,GAAI,MAELgT,KAAM0+C,EAAE,CACR54D,EACA,CAAC,EAAG,IACJA,EACA,CAAC,EAAG,GACJ,EACAA,EACA,CAAC,EAAG,IACJA,EACA,CAAC,EAAG,GACJkH,EACA,CAAC,GAAI,IACLA,EACA,CAAC,GAAI,IACLA,EACA,CAAC,GAAI,IACLA,EACA,CAAC,GAAI,IACLA,EACA,CAAC,GAAI,IACLA,EACA,CAAC,IAAK,MAENyX,MAAOi6C,EAAE,CACT,EACA,EACA,EACA,EACA,EACA,GACA1xD,EACA,CAAC,EAAG,GACJ,GACA,GACAA,EACA,CAAC,EAAG,GACJ,GACAA,EACA,CAAC,EAAG,GACJ,GACAA,EACA,CAAC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","sources":["webpack://solvi-web/./node_modules/@fast-csv/format/build/src/CsvFormatterStream.js","webpack://solvi-web/./node_modules/@fast-csv/format/build/src/FormatterOptions.js","webpack://solvi-web/./node_modules/@fast-csv/format/build/src/formatter/FieldFormatter.js","webpack://solvi-web/./node_modules/@fast-csv/format/build/src/formatter/RowFormatter.js","webpack://solvi-web/./node_modules/@fast-csv/format/build/src/formatter/index.js","webpack://solvi-web/./node_modules/@fast-csv/format/build/src/index.js","webpack://solvi-web/./node_modules/@fast-csv/format/build/src/types.js","webpack://solvi-web/./node_modules/classnames/index.js","webpack://solvi-web/./node_modules/css-unit-converter/index.js","webpack://solvi-web/./node_modules/decimal.js-light/decimal.js","webpack://solvi-web/./node_modules/eventemitter3/index.js","webpack://solvi-web/./node_modules/fast-equals/dist/fast-equals.js","webpack://solvi-web/./node_modules/lodash.escaperegexp/index.js","webpack://solvi-web/./node_modules/lodash.isboolean/index.js","webpack://solvi-web/./node_modules/lodash.isequal/index.js","webpack://solvi-web/./node_modules/lodash.isfunction/index.js","webpack://solvi-web/./node_modules/lodash.isnil/index.js","webpack://solvi-web/./node_modules/lodash/_Symbol.js","webpack://solvi-web/./node_modules/lodash/_baseGetTag.js","webpack://solvi-web/./node_modules/lodash/_freeGlobal.js","webpack://solvi-web/./node_modules/lodash/_getRawTag.js","webpack://solvi-web/./node_modules/lodash/_objectToString.js","webpack://solvi-web/./node_modules/lodash/_root.js","webpack://solvi-web/./node_modules/lodash/debounce.js","webpack://solvi-web/./node_modules/lodash/isObject.js","webpack://solvi-web/./node_modules/lodash/isObjectLike.js","webpack://solvi-web/./node_modules/lodash/isSymbol.js","webpack://solvi-web/./node_modules/lodash/now.js","webpack://solvi-web/./node_modules/lodash/toNumber.js","webpack://solvi-web/./node_modules/performance-now/lib/performance-now.js","webpack://solvi-web/./node_modules/raf/index.js","webpack://solvi-web/./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","webpack://solvi-web/./node_modules/react-smooth/es6/setRafTimeout.js","webpack://solvi-web/./node_modules/react-smooth/es6/AnimateManager.js","webpack://solvi-web/./node_modules/react-smooth/es6/util.js","webpack://solvi-web/./node_modules/react-smooth/es6/easing.js","webpack://solvi-web/./node_modules/react-smooth/es6/configUpdate.js","webpack://solvi-web/./node_modules/react-smooth/es6/Animate.js","webpack://solvi-web/./node_modules/react-smooth/es6/AnimateGroupChild.js","webpack://solvi-web/./node_modules/react-smooth/es6/AnimateGroup.js","webpack://solvi-web/./node_modules/react-smooth/es6/index.js","webpack://solvi-web/./node_modules/react-smooth/node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://solvi-web/./node_modules/react-smooth/node_modules/dom-helpers/class/addClass.js","webpack://solvi-web/./node_modules/react-smooth/node_modules/dom-helpers/class/hasClass.js","webpack://solvi-web/./node_modules/react-smooth/node_modules/dom-helpers/class/removeClass.js","webpack://solvi-web/./node_modules/react-smooth/node_modules/react-transition-group/CSSTransition.js","webpack://solvi-web/./node_modules/react-smooth/node_modules/react-transition-group/ReplaceTransition.js","webpack://solvi-web/./node_modules/react-smooth/node_modules/react-transition-group/Transition.js","webpack://solvi-web/./node_modules/react-smooth/node_modules/react-transition-group/TransitionGroup.js","webpack://solvi-web/./node_modules/react-smooth/node_modules/react-transition-group/index.js","webpack://solvi-web/./node_modules/react-smooth/node_modules/react-transition-group/utils/ChildMapping.js","webpack://solvi-web/./node_modules/react-smooth/node_modules/react-transition-group/utils/PropTypes.js","webpack://solvi-web/./node_modules/recharts/es6/component/DefaultTooltipContent.js","webpack://solvi-web/./node_modules/recharts/es6/component/Tooltip.js","webpack://solvi-web/./node_modules/recharts/es6/shape/Cross.js","webpack://solvi-web/./node_modules/recharts/es6/cartesian/CartesianAxis.js","webpack://solvi-web/./node_modules/recharts/es6/util/CssPrefixUtils.js","webpack://solvi-web/./node_modules/recharts/es6/cartesian/Brush.js","webpack://solvi-web/./node_modules/recharts/es6/util/IfOverflowMatches.js","webpack://solvi-web/./node_modules/recharts/es6/cartesian/ReferenceDot.js","webpack://solvi-web/./node_modules/recharts/es6/cartesian/ReferenceLine.js","webpack://solvi-web/./node_modules/recharts/es6/cartesian/ReferenceArea.js","webpack://solvi-web/./node_modules/recharts/es6/util/DetectReferenceElementsDomain.js","webpack://solvi-web/./node_modules/recharts/es6/util/Events.js","webpack://solvi-web/./node_modules/recharts/es6/chart/generateCategoricalChart.js","webpack://solvi-web/./node_modules/recharts/es6/component/Cell.js","webpack://solvi-web/./node_modules/recharts/es6/component/Label.js","webpack://solvi-web/./node_modules/recharts/es6/component/LabelList.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/math.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/symbol/circle.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/symbol/cross.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/symbol/diamond.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/symbol/square.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/symbol/star.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/symbol/triangle.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/symbol/wye.js","webpack://solvi-web/./node_modules/recharts/es6/shape/Symbols.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/symbol.js","webpack://solvi-web/./node_modules/recharts/es6/component/DefaultLegendContent.js","webpack://solvi-web/./node_modules/recharts/es6/component/Legend.js","webpack://solvi-web/./node_modules/recharts/es6/component/Text.js","webpack://solvi-web/./node_modules/recharts/es6/container/Layer.js","webpack://solvi-web/./node_modules/recharts/es6/container/Surface.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/noop.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/curve/basis.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/curve/basisClosed.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/curve/basisOpen.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/curve/linearClosed.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/curve/linear.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/curve/monotone.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/curve/natural.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/curve/step.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/point.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/line.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/area.js","webpack://solvi-web/./node_modules/recharts/es6/shape/Curve.js","webpack://solvi-web/./node_modules/recharts/es6/shape/Dot.js","webpack://solvi-web/./node_modules/recharts/es6/shape/Rectangle.js","webpack://solvi-web/./node_modules/recharts/es6/shape/Sector.js","webpack://solvi-web/./node_modules/recharts/es6/util/CartesianUtils.js","webpack://solvi-web/./node_modules/recharts-scale/es6/util/utils.js","webpack://solvi-web/./node_modules/recharts-scale/es6/util/arithmetic.js","webpack://solvi-web/./node_modules/recharts-scale/es6/getNiceTickValues.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/number.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/continuous.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/constant.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/tickFormat.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/linear.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/identity.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/nice.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/log.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/symlog.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/pow.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/radial.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/quantile.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/quantize.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/threshold.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-time/src/duration.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-time/src/interval.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-time/src/millisecond.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-time/src/second.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-time/src/minute.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-time/src/hour.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-time/src/day.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-time/src/week.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-time/src/month.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-time/src/year.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-time/src/utcMinute.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-time/src/utcHour.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-time/src/utcDay.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-time/src/utcWeek.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-time/src/utcMonth.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-time/src/utcYear.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-time/src/ticks.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/time.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/utcTime.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/sequential.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/sequentialQuantile.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/diverging.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/offset/none.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/order/none.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/stack.js","webpack://solvi-web/./node_modules/recharts/es6/util/ChartUtils.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/offset/expand.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/offset/silhouette.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/offset/wiggle.js","webpack://solvi-web/./node_modules/recharts/es6/util/DOMUtils.js","webpack://solvi-web/./node_modules/recharts/es6/util/DataUtils.js","webpack://solvi-web/./node_modules/recharts/es6/util/Global.js","webpack://solvi-web/./node_modules/recharts/es6/util/LogUtils.js","webpack://solvi-web/./node_modules/recharts/es6/util/PolarUtils.js","webpack://solvi-web/./node_modules/recharts/es6/util/ReactUtils.js","webpack://solvi-web/./node_modules/recharts/es6/util/ShallowEqual.js","webpack://solvi-web/./node_modules/recharts/es6/util/types.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/band.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/init.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-scale/src/ordinal.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/array.js","webpack://solvi-web/./node_modules/recharts/node_modules/d3-shape/src/constant.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_DataView.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_Hash.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_ListCache.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_Map.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_MapCache.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_Promise.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_Set.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_SetCache.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_Stack.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_Symbol.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_Uint8Array.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_WeakMap.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_apply.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_arrayEvery.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_arrayFilter.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_arrayIncludes.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_arrayIncludesWith.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_arrayLikeKeys.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_arrayMap.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_arrayPush.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_arraySome.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_asciiToArray.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_assocIndexOf.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseAssignValue.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseEach.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseEvery.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseExtremum.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseFindIndex.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseFlatten.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseFor.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseForOwn.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseGet.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseGetAllKeys.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseGetTag.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseGt.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseHasIn.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseIndexOf.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseIsArguments.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseIsEqual.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseIsEqualDeep.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseIsMatch.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseIsNaN.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseIsNative.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseIsTypedArray.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseIteratee.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseKeys.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseLt.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseMap.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseMatches.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseMatchesProperty.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseOrderBy.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseProperty.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_basePropertyDeep.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseRange.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseRest.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseSetToString.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseSlice.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseSome.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseSortBy.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseTimes.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseToString.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseTrim.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseUnary.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_baseUniq.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_cacheHas.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_castPath.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_castSlice.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_compareAscending.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_compareMultiple.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_coreJsData.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_createBaseEach.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_createBaseFor.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_createCaseFirst.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_createFind.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_createRange.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_createSet.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_defineProperty.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_equalArrays.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_equalByTag.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_equalObjects.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_freeGlobal.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_getAllKeys.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_getMapData.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_getMatchData.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_getNative.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_getRawTag.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_getSymbols.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_getTag.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_getValue.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_hasPath.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_hasUnicode.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_hashClear.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_hashDelete.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_hashGet.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_hashHas.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_hashSet.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_isFlattenable.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_isIndex.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_isIterateeCall.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_isKey.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_isKeyable.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_isMasked.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_isPrototype.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_isStrictComparable.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_listCacheClear.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_listCacheDelete.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_listCacheGet.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_listCacheHas.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_listCacheSet.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_mapCacheClear.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_mapCacheDelete.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_mapCacheGet.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_mapCacheHas.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_mapCacheSet.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_mapToArray.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_matchesStrictComparable.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_memoizeCapped.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_nativeCreate.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_nativeKeys.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_nodeUtil.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_objectToString.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_overArg.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_overRest.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_root.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_setCacheAdd.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_setCacheHas.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_setToArray.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_setToString.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_shortOut.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_stackClear.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_stackDelete.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_stackGet.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_stackHas.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_stackSet.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_strictIndexOf.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_stringToArray.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_stringToPath.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_toKey.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_toSource.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_trimmedEndIndex.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/_unicodeToArray.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/constant.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/debounce.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/eq.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/every.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/find.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/findIndex.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/flatMap.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/flatten.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/get.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/hasIn.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/identity.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/isArguments.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/isArray.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/isArrayLike.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/isBoolean.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/isBuffer.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/isEqual.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/isFunction.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/isLength.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/isNaN.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/isNil.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/isNumber.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/isObject.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/isObjectLike.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/isString.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/isSymbol.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/isTypedArray.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/keys.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/last.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/map.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/mapValues.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/max.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/memoize.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/min.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/noop.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/now.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/property.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/range.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/some.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/sortBy.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/stubArray.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/stubFalse.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/throttle.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/toFinite.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/toInteger.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/toNumber.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/toString.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/uniqBy.js","webpack://solvi-web/./node_modules/recharts/node_modules/lodash/upperFirst.js","webpack://solvi-web/./node_modules/recharts/node_modules/react-is/cjs/react-is.production.min.js","webpack://solvi-web/./node_modules/recharts/node_modules/react-is/index.js","webpack://solvi-web/./node_modules/reduce-css-calc/dist/index.js","webpack://solvi-web/./node_modules/reduce-css-calc/dist/lib/convert.js","webpack://solvi-web/./node_modules/reduce-css-calc/dist/lib/reducer.js","webpack://solvi-web/./node_modules/reduce-css-calc/dist/lib/stringifier.js","webpack://solvi-web/./node_modules/reduce-css-calc/dist/parser.js","webpack://solvi-web/./node_modules/reduce-css-calc/node_modules/postcss-value-parser/lib/index.js","webpack://solvi-web/./node_modules/reduce-css-calc/node_modules/postcss-value-parser/lib/parse.js","webpack://solvi-web/./node_modules/reduce-css-calc/node_modules/postcss-value-parser/lib/stringify.js","webpack://solvi-web/./node_modules/reduce-css-calc/node_modules/postcss-value-parser/lib/unit.js","webpack://solvi-web/./node_modules/reduce-css-calc/node_modules/postcss-value-parser/lib/walk.js","webpack://solvi-web/./node_modules/@turf/explode/dist/es/index.js","webpack://solvi-web/./node_modules/ol/control/ScaleLine.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CsvFormatterStream = void 0;\nconst stream_1 = require(\"stream\");\nconst formatter_1 = require(\"./formatter\");\nclass CsvFormatterStream extends stream_1.Transform {\n constructor(formatterOptions) {\n super({ writableObjectMode: formatterOptions.objectMode });\n this.hasWrittenBOM = false;\n this.formatterOptions = formatterOptions;\n this.rowFormatter = new formatter_1.RowFormatter(formatterOptions);\n // if writeBOM is false then set to true\n // if writeBOM is true then set to false by default so it is written out\n this.hasWrittenBOM = !formatterOptions.writeBOM;\n }\n transform(transformFunction) {\n this.rowFormatter.rowTransform = transformFunction;\n return this;\n }\n _transform(row, encoding, cb) {\n let cbCalled = false;\n try {\n if (!this.hasWrittenBOM) {\n this.push(this.formatterOptions.BOM);\n this.hasWrittenBOM = true;\n }\n this.rowFormatter.format(row, (err, rows) => {\n if (err) {\n cbCalled = true;\n return cb(err);\n }\n if (rows) {\n rows.forEach((r) => {\n this.push(Buffer.from(r, 'utf8'));\n });\n }\n cbCalled = true;\n return cb();\n });\n }\n catch (e) {\n if (cbCalled) {\n throw e;\n }\n cb(e);\n }\n }\n _flush(cb) {\n this.rowFormatter.finish((err, rows) => {\n if (err) {\n return cb(err);\n }\n if (rows) {\n rows.forEach((r) => {\n this.push(Buffer.from(r, 'utf8'));\n });\n }\n return cb();\n });\n }\n}\nexports.CsvFormatterStream = CsvFormatterStream;\n//# sourceMappingURL=CsvFormatterStream.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FormatterOptions = void 0;\nclass FormatterOptions {\n constructor(opts = {}) {\n var _a;\n this.objectMode = true;\n this.delimiter = ',';\n this.rowDelimiter = '\\n';\n this.quote = '\"';\n this.escape = this.quote;\n this.quoteColumns = false;\n this.quoteHeaders = this.quoteColumns;\n this.headers = null;\n this.includeEndRowDelimiter = false;\n this.writeBOM = false;\n this.BOM = '\\ufeff';\n this.alwaysWriteHeaders = false;\n Object.assign(this, opts || {});\n if (typeof (opts === null || opts === void 0 ? void 0 : opts.quoteHeaders) === 'undefined') {\n this.quoteHeaders = this.quoteColumns;\n }\n if ((opts === null || opts === void 0 ? void 0 : opts.quote) === true) {\n this.quote = '\"';\n }\n else if ((opts === null || opts === void 0 ? void 0 : opts.quote) === false) {\n this.quote = '';\n }\n if (typeof (opts === null || opts === void 0 ? void 0 : opts.escape) !== 'string') {\n this.escape = this.quote;\n }\n this.shouldWriteHeaders = !!this.headers && ((_a = opts.writeHeaders) !== null && _a !== void 0 ? _a : true);\n this.headers = Array.isArray(this.headers) ? this.headers : null;\n this.escapedQuote = `${this.escape}${this.quote}`;\n }\n}\nexports.FormatterOptions = FormatterOptions;\n//# sourceMappingURL=FormatterOptions.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FieldFormatter = void 0;\nconst lodash_isboolean_1 = __importDefault(require(\"lodash.isboolean\"));\nconst lodash_isnil_1 = __importDefault(require(\"lodash.isnil\"));\nconst lodash_escaperegexp_1 = __importDefault(require(\"lodash.escaperegexp\"));\nclass FieldFormatter {\n constructor(formatterOptions) {\n this._headers = null;\n this.formatterOptions = formatterOptions;\n if (formatterOptions.headers !== null) {\n this.headers = formatterOptions.headers;\n }\n this.REPLACE_REGEXP = new RegExp(formatterOptions.quote, 'g');\n const escapePattern = `[${formatterOptions.delimiter}${lodash_escaperegexp_1.default(formatterOptions.rowDelimiter)}|\\r|\\n]`;\n this.ESCAPE_REGEXP = new RegExp(escapePattern);\n }\n set headers(headers) {\n this._headers = headers;\n }\n shouldQuote(fieldIndex, isHeader) {\n const quoteConfig = isHeader ? this.formatterOptions.quoteHeaders : this.formatterOptions.quoteColumns;\n if (lodash_isboolean_1.default(quoteConfig)) {\n return quoteConfig;\n }\n if (Array.isArray(quoteConfig)) {\n return quoteConfig[fieldIndex];\n }\n if (this._headers !== null) {\n return quoteConfig[this._headers[fieldIndex]];\n }\n return false;\n }\n format(field, fieldIndex, isHeader) {\n const preparedField = `${lodash_isnil_1.default(field) ? '' : field}`.replace(/\\0/g, '');\n const { formatterOptions } = this;\n if (formatterOptions.quote !== '') {\n const shouldEscape = preparedField.indexOf(formatterOptions.quote) !== -1;\n if (shouldEscape) {\n return this.quoteField(preparedField.replace(this.REPLACE_REGEXP, formatterOptions.escapedQuote));\n }\n }\n const hasEscapeCharacters = preparedField.search(this.ESCAPE_REGEXP) !== -1;\n if (hasEscapeCharacters || this.shouldQuote(fieldIndex, isHeader)) {\n return this.quoteField(preparedField);\n }\n return preparedField;\n }\n quoteField(field) {\n const { quote } = this.formatterOptions;\n return `${quote}${field}${quote}`;\n }\n}\nexports.FieldFormatter = FieldFormatter;\n//# sourceMappingURL=FieldFormatter.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RowFormatter = void 0;\nconst lodash_isfunction_1 = __importDefault(require(\"lodash.isfunction\"));\nconst lodash_isequal_1 = __importDefault(require(\"lodash.isequal\"));\nconst FieldFormatter_1 = require(\"./FieldFormatter\");\nconst types_1 = require(\"../types\");\nclass RowFormatter {\n constructor(formatterOptions) {\n this.rowCount = 0;\n this.formatterOptions = formatterOptions;\n this.fieldFormatter = new FieldFormatter_1.FieldFormatter(formatterOptions);\n this.headers = formatterOptions.headers;\n this.shouldWriteHeaders = formatterOptions.shouldWriteHeaders;\n this.hasWrittenHeaders = false;\n if (this.headers !== null) {\n this.fieldFormatter.headers = this.headers;\n }\n if (formatterOptions.transform) {\n this.rowTransform = formatterOptions.transform;\n }\n }\n static isRowHashArray(row) {\n if (Array.isArray(row)) {\n return Array.isArray(row[0]) && row[0].length === 2;\n }\n return false;\n }\n static isRowArray(row) {\n return Array.isArray(row) && !this.isRowHashArray(row);\n }\n // get headers from a row item\n static gatherHeaders(row) {\n if (RowFormatter.isRowHashArray(row)) {\n // lets assume a multi-dimesional array with item 0 being the header\n return row.map((it) => it[0]);\n }\n if (Array.isArray(row)) {\n return row;\n }\n return Object.keys(row);\n }\n // eslint-disable-next-line @typescript-eslint/no-shadow\n static createTransform(transformFunction) {\n if (types_1.isSyncTransform(transformFunction)) {\n return (row, cb) => {\n let transformedRow = null;\n try {\n transformedRow = transformFunction(row);\n }\n catch (e) {\n return cb(e);\n }\n return cb(null, transformedRow);\n };\n }\n return (row, cb) => {\n transformFunction(row, cb);\n };\n }\n set rowTransform(transformFunction) {\n if (!lodash_isfunction_1.default(transformFunction)) {\n throw new TypeError('The transform should be a function');\n }\n this._rowTransform = RowFormatter.createTransform(transformFunction);\n }\n format(row, cb) {\n this.callTransformer(row, (err, transformedRow) => {\n if (err) {\n return cb(err);\n }\n if (!row) {\n return cb(null);\n }\n const rows = [];\n if (transformedRow) {\n const { shouldFormatColumns, headers } = this.checkHeaders(transformedRow);\n if (this.shouldWriteHeaders && headers && !this.hasWrittenHeaders) {\n rows.push(this.formatColumns(headers, true));\n this.hasWrittenHeaders = true;\n }\n if (shouldFormatColumns) {\n const columns = this.gatherColumns(transformedRow);\n rows.push(this.formatColumns(columns, false));\n }\n }\n return cb(null, rows);\n });\n }\n finish(cb) {\n const rows = [];\n // check if we should write headers and we didnt get any rows\n if (this.formatterOptions.alwaysWriteHeaders && this.rowCount === 0) {\n if (!this.headers) {\n return cb(new Error('`alwaysWriteHeaders` option is set to true but `headers` option not provided.'));\n }\n rows.push(this.formatColumns(this.headers, true));\n }\n if (this.formatterOptions.includeEndRowDelimiter) {\n rows.push(this.formatterOptions.rowDelimiter);\n }\n return cb(null, rows);\n }\n // check if we need to write header return true if we should also write a row\n // could be false if headers is true and the header row(first item) is passed in\n checkHeaders(row) {\n if (this.headers) {\n // either the headers were provided by the user or we have already gathered them.\n return { shouldFormatColumns: true, headers: this.headers };\n }\n const headers = RowFormatter.gatherHeaders(row);\n this.headers = headers;\n this.fieldFormatter.headers = headers;\n if (!this.shouldWriteHeaders) {\n // if we are not supposed to write the headers then\n // always format the columns\n return { shouldFormatColumns: true, headers: null };\n }\n // if the row is equal to headers dont format\n return { shouldFormatColumns: !lodash_isequal_1.default(headers, row), headers };\n }\n // todo change this method to unknown[]\n gatherColumns(row) {\n if (this.headers === null) {\n throw new Error('Headers is currently null');\n }\n if (!Array.isArray(row)) {\n return this.headers.map((header) => row[header]);\n }\n if (RowFormatter.isRowHashArray(row)) {\n return this.headers.map((header, i) => {\n const col = row[i];\n if (col) {\n return col[1];\n }\n return '';\n });\n }\n // if its a one dimensional array and headers were not provided\n // then just return the row\n if (RowFormatter.isRowArray(row) && !this.shouldWriteHeaders) {\n return row;\n }\n return this.headers.map((header, i) => row[i]);\n }\n callTransformer(row, cb) {\n if (!this._rowTransform) {\n return cb(null, row);\n }\n return this._rowTransform(row, cb);\n }\n formatColumns(columns, isHeadersRow) {\n const formattedCols = columns\n .map((field, i) => this.fieldFormatter.format(field, i, isHeadersRow))\n .join(this.formatterOptions.delimiter);\n const { rowCount } = this;\n this.rowCount += 1;\n if (rowCount) {\n return [this.formatterOptions.rowDelimiter, formattedCols].join('');\n }\n return formattedCols;\n }\n}\nexports.RowFormatter = RowFormatter;\n//# sourceMappingURL=RowFormatter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FieldFormatter = exports.RowFormatter = void 0;\nvar RowFormatter_1 = require(\"./RowFormatter\");\nObject.defineProperty(exports, \"RowFormatter\", { enumerable: true, get: function () { return RowFormatter_1.RowFormatter; } });\nvar FieldFormatter_1 = require(\"./FieldFormatter\");\nObject.defineProperty(exports, \"FieldFormatter\", { enumerable: true, get: function () { return FieldFormatter_1.FieldFormatter; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.writeToPath = exports.writeToString = exports.writeToBuffer = exports.writeToStream = exports.write = exports.format = exports.FormatterOptions = exports.CsvFormatterStream = void 0;\nconst util_1 = require(\"util\");\nconst stream_1 = require(\"stream\");\nconst fs = __importStar(require(\"fs\"));\nconst FormatterOptions_1 = require(\"./FormatterOptions\");\nconst CsvFormatterStream_1 = require(\"./CsvFormatterStream\");\n__exportStar(require(\"./types\"), exports);\nvar CsvFormatterStream_2 = require(\"./CsvFormatterStream\");\nObject.defineProperty(exports, \"CsvFormatterStream\", { enumerable: true, get: function () { return CsvFormatterStream_2.CsvFormatterStream; } });\nvar FormatterOptions_2 = require(\"./FormatterOptions\");\nObject.defineProperty(exports, \"FormatterOptions\", { enumerable: true, get: function () { return FormatterOptions_2.FormatterOptions; } });\nexports.format = (options) => new CsvFormatterStream_1.CsvFormatterStream(new FormatterOptions_1.FormatterOptions(options));\nexports.write = (rows, options) => {\n const csvStream = exports.format(options);\n const promiseWrite = util_1.promisify((row, cb) => {\n csvStream.write(row, undefined, cb);\n });\n rows.reduce((prev, row) => prev.then(() => promiseWrite(row)), Promise.resolve())\n .then(() => csvStream.end())\n .catch((err) => {\n csvStream.emit('error', err);\n });\n return csvStream;\n};\nexports.writeToStream = (ws, rows, options) => exports.write(rows, options).pipe(ws);\nexports.writeToBuffer = (rows, opts = {}) => {\n const buffers = [];\n const ws = new stream_1.Writable({\n write(data, enc, writeCb) {\n buffers.push(data);\n writeCb();\n },\n });\n return new Promise((res, rej) => {\n ws.on('error', rej).on('finish', () => res(Buffer.concat(buffers)));\n exports.write(rows, opts).pipe(ws);\n });\n};\nexports.writeToString = (rows, options) => exports.writeToBuffer(rows, options).then((buffer) => buffer.toString());\nexports.writeToPath = (path, rows, options) => {\n const stream = fs.createWriteStream(path, { encoding: 'utf8' });\n return exports.write(rows, options).pipe(stream);\n};\n//# sourceMappingURL=index.js.map","\"use strict\";\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isSyncTransform = void 0;\nexports.isSyncTransform = (transform) => transform.length === 1;\n//# sourceMappingURL=types.js.map","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","var conversions = {\r\n // length\r\n 'px': {\r\n 'px': 1,\r\n 'cm': 96.0/2.54,\r\n 'mm': 96.0/25.4,\r\n 'in': 96,\r\n 'pt': 96.0/72.0,\r\n 'pc': 16\r\n },\r\n 'cm': {\r\n 'px': 2.54/96.0,\r\n 'cm': 1,\r\n 'mm': 0.1,\r\n 'in': 2.54,\r\n 'pt': 2.54/72.0,\r\n 'pc': 2.54/6.0\r\n },\r\n 'mm': {\r\n 'px': 25.4/96.0,\r\n 'cm': 10,\r\n 'mm': 1,\r\n 'in': 25.4,\r\n 'pt': 25.4/72.0,\r\n 'pc': 25.4/6.0\r\n },\r\n 'in': {\r\n 'px': 1.0/96.0,\r\n 'cm': 1.0/2.54,\r\n 'mm': 1.0/25.4,\r\n 'in': 1,\r\n 'pt': 1.0/72.0,\r\n 'pc': 1.0/6.0\r\n },\r\n 'pt': {\r\n 'px': 0.75,\r\n 'cm': 72.0/2.54,\r\n 'mm': 72.0/25.4,\r\n 'in': 72,\r\n 'pt': 1,\r\n 'pc': 12\r\n },\r\n 'pc': {\r\n 'px': 6.0/96.0,\r\n 'cm': 6.0/2.54,\r\n 'mm': 6.0/25.4,\r\n 'in': 6,\r\n 'pt': 6.0/72.0,\r\n 'pc': 1\r\n },\r\n // angle\r\n 'deg': {\r\n 'deg': 1,\r\n 'grad': 0.9,\r\n 'rad': 180/Math.PI,\r\n 'turn': 360\r\n },\r\n 'grad': {\r\n 'deg': 400/360,\r\n 'grad': 1,\r\n 'rad': 200/Math.PI,\r\n 'turn': 400\r\n },\r\n 'rad': {\r\n 'deg': Math.PI/180,\r\n 'grad': Math.PI/200,\r\n 'rad': 1,\r\n 'turn': Math.PI*2\r\n },\r\n 'turn': {\r\n 'deg': 1/360,\r\n 'grad': 1/400,\r\n 'rad': 0.5/Math.PI,\r\n 'turn': 1\r\n },\r\n // time\r\n 's': {\r\n 's': 1,\r\n 'ms': 1/1000\r\n },\r\n 'ms': {\r\n 's': 1000,\r\n 'ms': 1\r\n },\r\n // frequency\r\n 'Hz': {\r\n 'Hz': 1,\r\n 'kHz': 1000\r\n },\r\n 'kHz': {\r\n 'Hz': 1/1000,\r\n 'kHz': 1\r\n },\r\n // resolution\r\n 'dpi': {\r\n 'dpi': 1,\r\n 'dpcm': 1.0/2.54,\r\n 'dppx': 1/96\r\n },\r\n 'dpcm': {\r\n 'dpi': 2.54,\r\n 'dpcm': 1,\r\n 'dppx': 2.54/96.0\r\n },\r\n 'dppx': {\r\n 'dpi': 96,\r\n 'dpcm': 96.0/2.54,\r\n 'dppx': 1\r\n }\r\n};\r\n\r\nmodule.exports = function (value, sourceUnit, targetUnit, precision) {\r\n if (!conversions.hasOwnProperty(targetUnit))\r\n throw new Error(\"Cannot convert to \" + targetUnit);\r\n\r\n if (!conversions[targetUnit].hasOwnProperty(sourceUnit))\r\n throw new Error(\"Cannot convert from \" + sourceUnit + \" to \" + targetUnit);\r\n \r\n var converted = conversions[targetUnit][sourceUnit] * value;\r\n \r\n if (precision !== false) {\r\n precision = Math.pow(10, parseInt(precision) || 5);\r\n return Math.round(converted * precision) / precision;\r\n }\r\n \r\n return converted;\r\n};\r\n","/*! decimal.js-light v2.5.1 https://github.com/MikeMcl/decimal.js-light/LICENCE */\r\n;(function (globalScope) {\r\n 'use strict';\r\n\r\n\r\n /*\r\n * decimal.js-light v2.5.1\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js-light\r\n * Copyright (c) 2020 Michael Mclaughlin \r\n * MIT Expat Licence\r\n */\r\n\r\n\r\n // ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n var MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n Decimal = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed during run-time using `Decimal.config`.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used by default by `toInteger`, `toDecimalPlaces`, `toExponential`,\r\n // `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -MAX_E\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to MAX_E\r\n\r\n // The natural logarithm of 10.\r\n // 115 digits\r\n LN10: '2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286'\r\n },\r\n\r\n\r\n // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n exponentOutOfRange = decimalError + 'Exponent out of range: ',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n ONE,\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n MAX_E = mathfloor(MAX_SAFE_INTEGER / LOG_BASE), // 1286742750677284\r\n\r\n // Decimal.prototype object\r\n P = {};\r\n\r\n\r\n // Decimal prototype methods\r\n\r\n\r\n /*\r\n * absoluteValue abs\r\n * comparedTo cmp\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy idiv\r\n * equals eq\r\n * exponent\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * isInteger isint\r\n * isNegative isneg\r\n * isPositive ispos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * squareRoot sqrt\r\n * times mul\r\n * toDecimalPlaces todp\r\n * toExponential\r\n * toFixed\r\n * toInteger toint\r\n * toNumber\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits tosd\r\n * toString\r\n * valueOf val\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value\r\n *\r\n */\r\n P.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this;\r\n\r\n y = new x.constructor(y);\r\n\r\n // Signs differ?\r\n if (x.s !== y.s) return x.s || -y.s;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ x.s < 0 ? 1 : -1;\r\n\r\n xdL = x.d.length;\r\n ydL = y.d.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (x.d[i] !== y.d[i]) return x.d[i] > y.d[i] ^ x.s < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ x.s < 0 ? 1 : -1;\r\n };\r\n\r\n\r\n /*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\n P.decimalPlaces = P.dp = function () {\r\n var x = this,\r\n w = x.d.length - 1,\r\n dp = (w - x.e) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = x.d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) dp--;\r\n\r\n return dp < 0 ? 0 : dp;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, truncated to `precision` significant digits.\r\n *\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(divide(x, new Ctor(y), 0, 1), Ctor.precision);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\n P.equals = P.eq = function (y) {\r\n return !this.cmp(y);\r\n };\r\n\r\n\r\n /*\r\n * Return the (base 10) exponent value of this Decimal (this.e is the base 10000000 exponent).\r\n *\r\n */\r\n P.exponent = function () {\r\n return getBase10Exponent(this);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\n P.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\n P.greaterThanOrEqualTo = P.gte = function (y) {\r\n return this.cmp(y) >= 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\n P.isInteger = P.isint = function () {\r\n return this.e > this.d.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\n P.isNegative = P.isneg = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\n P.isPositive = P.ispos = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is 0, otherwise return false.\r\n *\r\n */\r\n P.isZero = function () {\r\n return this.s === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n };\r\n\r\n\r\n /*\r\n * Return the logarithm of the value of this Decimal to the specified base, truncated to\r\n * `precision` significant digits.\r\n *\r\n * If no base is specified, return log[10](x).\r\n *\r\n * log[base](x) = ln(x) / ln(base)\r\n *\r\n * The maximum error of the result is 1 ulp (unit in the last place).\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\n P.logarithm = P.log = function (base) {\r\n var r,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n wpr = pr + 5;\r\n\r\n // Default base is 10.\r\n if (base === void 0) {\r\n base = new Ctor(10);\r\n } else {\r\n base = new Ctor(base);\r\n\r\n // log[-b](x) = NaN\r\n // log[0](x) = NaN\r\n // log[1](x) = NaN\r\n if (base.s < 1 || base.eq(ONE)) throw Error(decimalError + 'NaN');\r\n }\r\n\r\n // log[b](-x) = NaN\r\n // log[b](0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // log[b](1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n external = false;\r\n r = divide(ln(x, wpr), ln(base, wpr), wpr);\r\n external = true;\r\n\r\n return round(r, pr);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.minus = P.sub = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? subtract(x, y) : add(x, (y.s = -y.s, y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n y = new Ctor(y);\r\n\r\n // x % 0 = NaN\r\n if (!y.s) throw Error(decimalError + 'NaN');\r\n\r\n // Return x if x is 0.\r\n if (!x.s) return round(new Ctor(x), pr);\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n q = divide(x, y, 0, 1).times(y);\r\n external = true;\r\n\r\n return x.minus(q);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\n P.naturalExponential = P.exp = function () {\r\n return exp(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * truncated to `precision` significant digits.\r\n *\r\n */\r\n P.naturalLogarithm = P.ln = function () {\r\n return ln(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\n P.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s || 0;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.plus = P.add = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? add(x, y) : subtract(x, (y.s = -y.s, y));\r\n };\r\n\r\n\r\n /*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\n P.precision = P.sd = function (z) {\r\n var e, sd, w,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n e = getBase10Exponent(x) + 1;\r\n w = x.d.length - 1;\r\n sd = w * LOG_BASE + 1;\r\n w = x.d[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) sd--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = x.d[0]; w >= 10; w /= 10) sd++;\r\n }\r\n\r\n return z && e > sd ? e : sd;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var e, n, pr, r, s, t, wpr,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n // Negative or zero?\r\n if (x.s < 1) {\r\n if (!x.s) return new Ctor(0);\r\n\r\n // sqrt(-x) = NaN\r\n throw Error(decimalError + 'NaN');\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(x.d);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n pr = Ctor.precision;\r\n s = wpr = pr + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, wpr + 2)).times(0.5);\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === (n = digitsToString(r.d)).slice(0, wpr)) {\r\n n = n.slice(wpr - 3, wpr + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (s == wpr && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n round(t, pr + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n } else if (n != '9999') {\r\n break;\r\n }\r\n\r\n wpr += 4;\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return round(r, pr);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal times `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n // Return 0 if either is 0.\r\n if (!x.s || !y.s) return new Ctor(0);\r\n\r\n y.s *= x.s;\r\n e = x.e + y.e;\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = e;\r\n\r\n return external ? round(y, Ctor.precision) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toDecimalPlaces = P.todp = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return round(x, dp + getBase10Exponent(x) + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = toString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), dp + 1, rm);\r\n str = toString(x, true, dp + 1);\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\n P.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) return toString(x);\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = round(new Ctor(x), dp + getBase10Exponent(x) + 1, rm);\r\n str = toString(y.abs(), false, dp + getBase10Exponent(y) + 1);\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isneg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\n P.toInteger = P.toint = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(new Ctor(x), getBase10Exponent(x) + 1, Ctor.rounding);\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this Decimal converted to a number primitive.\r\n *\r\n */\r\n P.toNumber = function () {\r\n return +this;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`,\r\n * truncated to `precision` significant digits.\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * The maximum error is 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\n P.toPower = P.pow = function (y) {\r\n var e, k, pr, r, sign, yIsInt,\r\n x = this,\r\n Ctor = x.constructor,\r\n guard = 12,\r\n yn = +(y = new Ctor(y));\r\n\r\n // pow(x, 0) = 1\r\n if (!y.s) return new Ctor(ONE);\r\n\r\n x = new Ctor(x);\r\n\r\n // pow(0, y > 0) = 0\r\n // pow(0, y < 0) = Infinity\r\n if (!x.s) {\r\n if (y.s < 1) throw Error(decimalError + 'Infinity');\r\n return x;\r\n }\r\n\r\n // pow(1, y) = 1\r\n if (x.eq(ONE)) return x;\r\n\r\n pr = Ctor.precision;\r\n\r\n // pow(x, 1) = x\r\n if (y.eq(ONE)) return round(x, pr);\r\n\r\n e = y.e;\r\n k = y.d.length - 1;\r\n yIsInt = e >= k;\r\n sign = x.s;\r\n\r\n if (!yIsInt) {\r\n\r\n // pow(x < 0, y non-integer) = NaN\r\n if (sign < 0) throw Error(decimalError + 'NaN');\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n } else if ((k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = new Ctor(ONE);\r\n\r\n // Max k of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n e = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (k % 2) {\r\n r = r.times(x);\r\n truncate(r.d, e);\r\n }\r\n\r\n k = mathfloor(k / 2);\r\n if (k === 0) break;\r\n\r\n x = x.times(x);\r\n truncate(x.d, e);\r\n }\r\n\r\n external = true;\r\n\r\n return y.s < 0 ? new Ctor(ONE).div(r) : round(r, pr);\r\n }\r\n\r\n // Result is negative if x is negative and the last digit of integer y is odd.\r\n sign = sign < 0 && y.d[Math.max(e, k)] & 1 ? -1 : 1;\r\n\r\n x.s = 1;\r\n external = false;\r\n r = y.times(ln(x, pr + guard));\r\n external = true;\r\n r = exp(r);\r\n r.s = sign;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n var e, str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n e = getBase10Exponent(x);\r\n str = toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), sd, rm);\r\n e = getBase10Exponent(x);\r\n str = toString(x, sd <= e || e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toSignificantDigits = P.tosd = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return round(new Ctor(x), sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\n P.toString = P.valueOf = P.val = P.toJSON = function () {\r\n var x = this,\r\n e = getBase10Exponent(x),\r\n Ctor = x.constructor;\r\n\r\n return toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n };\r\n\r\n\r\n // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n /*\r\n * add P.minus, P.plus\r\n * checkInt32 P.todp, P.toExponential, P.toFixed, P.toPrecision, P.tosd\r\n * digitsToString P.log, P.sqrt, P.pow, toString, exp, ln\r\n * divide P.div, P.idiv, P.log, P.mod, P.sqrt, exp, ln\r\n * exp P.exp, P.pow\r\n * getBase10Exponent P.exponent, P.sd, P.toint, P.sqrt, P.todp, P.toFixed, P.toPrecision,\r\n * P.toString, divide, round, toString, exp, ln\r\n * getLn10 P.log, ln\r\n * getZeroString digitsToString, toString\r\n * ln P.log, P.ln, P.pow, exp\r\n * parseDecimal Decimal\r\n * round P.abs, P.idiv, P.log, P.minus, P.mod, P.neg, P.plus, P.toint, P.sqrt,\r\n * P.times, P.todp, P.toExponential, P.toFixed, P.pow, P.toPrecision, P.tosd,\r\n * divide, getLn10, exp, ln\r\n * subtract P.minus, P.plus\r\n * toString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf\r\n * truncate P.pow\r\n *\r\n * Throws: P.log, P.mod, P.sd, P.sqrt, P.pow, checkInt32, divide, round,\r\n * getLn10, exp, ln, parseDecimal, Decimal, config\r\n */\r\n\r\n\r\n function add(x, y) {\r\n var carry, d, e, i, k, len, xd, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // If either is zero...\r\n if (!x.s || !y.s) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!y.s) y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n k = x.e;\r\n e = y.e;\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n\r\n function checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n }\r\n\r\n\r\n function digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n }\r\n\r\n\r\n var divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % BASE | 0;\r\n carry = temp / BASE | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * BASE + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, dp) {\r\n var cmp, e, i, k, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either 0?\r\n if (!x.s) return new Ctor(x);\r\n if (!y.s) throw Error(decimalError + 'Division by zero');\r\n\r\n e = x.e - y.e;\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n for (i = 0; yd[i] == (xd[i] || 0); ) ++i;\r\n if (yd[i] > (xd[i] || 0)) --e;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n } else if (dp) {\r\n sd = pr + (getBase10Exponent(x) - getBase10Exponent(y)) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) return new Ctor(0);\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / LOG_BASE + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * BASE + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= BASE/2\r\n k = BASE / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k);\r\n xd = multiplyInteger(xd, k);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= BASE / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * BASE + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= BASE) k = BASE - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n\r\n q.e = e;\r\n\r\n return round(q, dp ? pr + getBase10Exponent(q) + 1 : pr);\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of `x` truncated to `sd`\r\n * significant digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n */\r\n function exp(x, sd) {\r\n var denominator, guard, pow, sum, t, wpr,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n if (getBase10Exponent(x) > 16) throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n\r\n // exp(0) = 1\r\n if (!x.s) return new Ctor(ONE);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n while (x.abs().gte(0.1)) {\r\n x = x.times(t); // x = x / 2^5\r\n k += 5;\r\n }\r\n\r\n // Estimate the precision increase necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(ONE);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = round(pow.times(x), wpr);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n while (k--) sum = round(sum.times(sum), wpr);\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n }\r\n }\r\n\r\n\r\n // Calculate the base 10 exponent from the base 1e7 exponent.\r\n function getBase10Exponent(x) {\r\n var e = x.e * LOG_BASE,\r\n w = x.d[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for (; w >= 10; w /= 10) e++;\r\n return e;\r\n }\r\n\r\n\r\n function getLn10(Ctor, sd, pr) {\r\n\r\n if (sd > Ctor.LN10.sd()) {\r\n\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(decimalError + 'LN10 precision limit exceeded');\r\n }\r\n\r\n return round(new Ctor(Ctor.LN10), sd);\r\n }\r\n\r\n\r\n function getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of `x` truncated to `sd` significant\r\n * digits.\r\n *\r\n * ln(n) is non-terminating (n != 1)\r\n *\r\n */\r\n function ln(y, sd) {\r\n var c, c0, denominator, e, numerator, sum, t, wpr, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // ln(-x) = NaN\r\n // ln(0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // ln(1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n if (x.eq(10)) {\r\n if (sd == null) external = true;\r\n return getLn10(Ctor, wpr);\r\n }\r\n\r\n wpr += guard;\r\n Ctor.precision = wpr;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n e = getBase10Exponent(x);\r\n\r\n if (Math.abs(e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = ln(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(x, pr)) : x;\r\n }\r\n\r\n // x is reduced to a value near 1.\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(ONE), x.plus(ONE), wpr);\r\n x2 = round(x.times(x), wpr);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = round(numerator.times(x2), wpr);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\n function parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48;) ++i;\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48;) --len;\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n e = e - i - 1;\r\n x.e = mathfloor(e / LOG_BASE);\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) throw Error(exponentOutOfRange + e);\r\n } else {\r\n\r\n // Zero.\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Round `x` to `sd` significant digits, using rounding mode `rm` if present (truncate otherwise).\r\n */\r\n function round(x, sd, rm) {\r\n var i, j, k, n, rd, doRound, w, xdi,\r\n xd = x.d;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd which contains the rounding digit, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // n: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (n = 1, k = xd[0]; k >= 10; k /= 10) n++;\r\n i = sd - n;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) return x;\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (n = 1; k >= 10; k /= 10) n++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - n.\r\n j = i - LOG_BASE + n;\r\n }\r\n\r\n if (rm !== void 0) {\r\n k = mathpow(10, n - j - 1);\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / k % 10 | 0;\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n doRound = sd < 0 || xd[xdi + 1] !== void 0 || w % k;\r\n\r\n // The expression `w % mathpow(10, n - j - 1)` returns all the digits of w to the right of the\r\n // digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression will give\r\n // 714.\r\n\r\n doRound = rm < 4\r\n ? (rd || doRound) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || doRound || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, n - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n }\r\n\r\n if (sd < 1 || !xd[0]) {\r\n if (doRound) {\r\n k = getBase10Exponent(x);\r\n xd.length = 1;\r\n\r\n // Convert sd to decimal places.\r\n sd = sd - k - 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = mathfloor(-sd / LOG_BASE) || 0;\r\n } else {\r\n xd.length = 1;\r\n\r\n // Zero.\r\n xd[0] = x.e = x.s = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, n - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (doRound) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n if ((xd[0] += k) == BASE) {\r\n xd[0] = 1;\r\n ++x.e;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) {\r\n throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function subtract(x, y) {\r\n var d, e, i, j, k, len, xd, xe, xLTy, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // Return y negated if x is zero.\r\n // Return x if y is zero and x is non-zero.\r\n if (!x.s || !y.s) {\r\n if (y.s) y.s = -y.s;\r\n else y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are non-zero numbers with the same sign.\r\n\r\n e = y.e;\r\n xe = x.e;\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of zeros\r\n // needing to be prepended, but this can be avoided while still ensuring correct rounding by\r\n // limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to xd if shorter.\r\n // Don't add zeros to yd if shorter as subtraction only needs to start at yd length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(0);\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n //return external && xd.length >= pr / LOG_BASE ? round(y, pr) : y;\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n\r\n function toString(x, isExp, sd) {\r\n var k,\r\n e = getBase10Exponent(x),\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (e < 0 ? 'e' : 'e+') + e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Does not strip trailing zeros.\r\n function truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n }\r\n\r\n\r\n // Decimal methods\r\n\r\n\r\n /*\r\n * clone\r\n * config/set\r\n */\r\n\r\n\r\n /*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\n function clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * value {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(value) {\r\n var x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(value);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (value instanceof Decimal) {\r\n x.s = value.s;\r\n x.e = value.e;\r\n x.d = (value = value.d) ? value.slice() : value;\r\n return;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n\r\n // Reject Infinity/NaN.\r\n if (value * 0 !== 0) {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n if (value > 0) {\r\n x.s = 1;\r\n } else if (value < 0) {\r\n value = -value;\r\n x.s = -1;\r\n } else {\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (value === ~~value && value < 1e7) {\r\n x.e = 0;\r\n x.d = [value];\r\n return;\r\n }\r\n\r\n return parseDecimal(x, value.toString());\r\n } else if (typeof value !== 'string') {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n // Minus sign?\r\n if (value.charCodeAt(0) === 45) {\r\n value = value.slice(1);\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n if (isDecimal.test(value)) parseDecimal(x, value);\r\n else throw Error(invalidArgument + value);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n\r\n Decimal.clone = clone;\r\n Decimal.config = Decimal.set = config;\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'LN10'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n }\r\n\r\n\r\n /*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\n function config(obj) {\r\n if (!obj || typeof obj !== 'object') {\r\n throw Error(decimalError + 'Object expected');\r\n }\r\n var i, p, v,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -1 / 0, 0,\r\n 'toExpPos', 0, 1 / 0\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if ((v = obj[p = ps[i]]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if ((v = obj[p = 'LN10']) !== void 0) {\r\n if (v == Math.LN10) this[p] = new this(v);\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n\r\n // Create and configure initial Decimal constructor.\r\n Decimal = clone(Decimal);\r\n\r\n Decimal['default'] = Decimal.Decimal = Decimal;\r\n\r\n // Internal constant.\r\n ONE = new Decimal(1);\r\n\r\n\r\n // Export.\r\n\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () {\r\n return Decimal;\r\n });\r\n\r\n // Node and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = Decimal;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalScope) {\r\n globalScope = typeof self != 'undefined' && self && self.self == self\r\n ? self : Function('return this')();\r\n }\r\n\r\n globalScope.Decimal = Decimal;\r\n }\r\n})(this);\r\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['fast-equals'] = {}));\n}(this, (function (exports) { 'use strict';\n\n var HAS_WEAKSET_SUPPORT = typeof WeakSet === 'function';\r\n var keys = Object.keys;\r\n /**\r\n * are the values passed strictly equal or both NaN\r\n *\r\n * @param a the value to compare against\r\n * @param b the value to test\r\n * @returns are the values equal by the SameValueZero principle\r\n */\r\n function sameValueZeroEqual(a, b) {\r\n return a === b || (a !== a && b !== b);\r\n }\r\n /**\r\n * is the value a plain object\r\n *\r\n * @param value the value to test\r\n * @returns is the value a plain object\r\n */\r\n function isPlainObject(value) {\r\n return value.constructor === Object || value.constructor == null;\r\n }\r\n /**\r\n * is the value promise-like (meaning it is thenable)\r\n *\r\n * @param value the value to test\r\n * @returns is the value promise-like\r\n */\r\n function isPromiseLike(value) {\r\n return !!value && typeof value.then === 'function';\r\n }\r\n /**\r\n * is the value passed a react element\r\n *\r\n * @param value the value to test\r\n * @returns is the value a react element\r\n */\r\n function isReactElement(value) {\r\n return !!(value && value.$$typeof);\r\n }\r\n /**\r\n * in cases where WeakSet is not supported, creates a new custom\r\n * object that mimics the necessary API aspects for cache purposes\r\n *\r\n * @returns the new cache object\r\n */\r\n function getNewCacheFallback() {\r\n var values = [];\r\n return {\r\n add: function (value) {\r\n values.push(value);\r\n },\r\n has: function (value) {\r\n return values.indexOf(value) !== -1;\r\n },\r\n };\r\n }\r\n /**\r\n * get a new cache object to prevent circular references\r\n *\r\n * @returns the new cache object\r\n */\r\n var getNewCache = (function (canUseWeakMap) {\r\n if (canUseWeakMap) {\r\n return function _getNewCache() {\r\n return new WeakSet();\r\n };\r\n }\r\n return getNewCacheFallback;\r\n })(HAS_WEAKSET_SUPPORT);\r\n /**\r\n * create a custom isEqual handler specific to circular objects\r\n *\r\n * @param [isEqual] the isEqual comparator to use instead of isDeepEqual\r\n * @returns the method to create the `isEqual` function\r\n */\r\n function createCircularEqualCreator(isEqual) {\r\n return function createCircularEqual(comparator) {\r\n var _comparator = isEqual || comparator;\r\n return function circularEqual(a, b, cache) {\r\n if (cache === void 0) { cache = getNewCache(); }\r\n var isCacheableA = !!a && typeof a === 'object';\r\n var isCacheableB = !!b && typeof b === 'object';\r\n if (isCacheableA || isCacheableB) {\r\n var hasA = isCacheableA && cache.has(a);\r\n var hasB = isCacheableB && cache.has(b);\r\n if (hasA || hasB) {\r\n return hasA && hasB;\r\n }\r\n if (isCacheableA) {\r\n cache.add(a);\r\n }\r\n if (isCacheableB) {\r\n cache.add(b);\r\n }\r\n }\r\n return _comparator(a, b, cache);\r\n };\r\n };\r\n }\r\n /**\r\n * are the arrays equal in value\r\n *\r\n * @param a the array to test\r\n * @param b the array to test against\r\n * @param isEqual the comparator to determine equality\r\n * @param meta the meta object to pass through\r\n * @returns are the arrays equal\r\n */\r\n function areArraysEqual(a, b, isEqual, meta) {\r\n var index = a.length;\r\n if (b.length !== index) {\r\n return false;\r\n }\r\n while (index-- > 0) {\r\n if (!isEqual(a[index], b[index], meta)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * are the maps equal in value\r\n *\r\n * @param a the map to test\r\n * @param b the map to test against\r\n * @param isEqual the comparator to determine equality\r\n * @param meta the meta map to pass through\r\n * @returns are the maps equal\r\n */\r\n function areMapsEqual(a, b, isEqual, meta) {\r\n var isValueEqual = a.size === b.size;\r\n if (isValueEqual && a.size) {\r\n a.forEach(function (aValue, aKey) {\r\n if (isValueEqual) {\r\n isValueEqual = false;\r\n b.forEach(function (bValue, bKey) {\r\n if (!isValueEqual && isEqual(aKey, bKey, meta)) {\r\n isValueEqual = isEqual(aValue, bValue, meta);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n return isValueEqual;\r\n }\r\n var OWNER = '_owner';\r\n var hasOwnProperty = Function.prototype.bind.call(Function.prototype.call, Object.prototype.hasOwnProperty);\r\n /**\r\n * are the objects equal in value\r\n *\r\n * @param a the object to test\r\n * @param b the object to test against\r\n * @param isEqual the comparator to determine equality\r\n * @param meta the meta object to pass through\r\n * @returns are the objects equal\r\n */\r\n function areObjectsEqual(a, b, isEqual, meta) {\r\n var keysA = keys(a);\r\n var index = keysA.length;\r\n if (keys(b).length !== index) {\r\n return false;\r\n }\r\n if (index) {\r\n var key = void 0;\r\n while (index-- > 0) {\r\n key = keysA[index];\r\n if (key === OWNER) {\r\n var reactElementA = isReactElement(a);\r\n var reactElementB = isReactElement(b);\r\n if ((reactElementA || reactElementB) &&\r\n reactElementA !== reactElementB) {\r\n return false;\r\n }\r\n }\r\n if (!hasOwnProperty(b, key) || !isEqual(a[key], b[key], meta)) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * are the regExps equal in value\r\n *\r\n * @param a the regExp to test\r\n * @param b the regExp to test agains\r\n * @returns are the regExps equal\r\n */\r\n function areRegExpsEqual(a, b) {\r\n return (a.source === b.source &&\r\n a.global === b.global &&\r\n a.ignoreCase === b.ignoreCase &&\r\n a.multiline === b.multiline &&\r\n a.unicode === b.unicode &&\r\n a.sticky === b.sticky &&\r\n a.lastIndex === b.lastIndex);\r\n }\r\n /**\r\n * are the sets equal in value\r\n *\r\n * @param a the set to test\r\n * @param b the set to test against\r\n * @param isEqual the comparator to determine equality\r\n * @param meta the meta set to pass through\r\n * @returns are the sets equal\r\n */\r\n function areSetsEqual(a, b, isEqual, meta) {\r\n var isValueEqual = a.size === b.size;\r\n if (isValueEqual && a.size) {\r\n a.forEach(function (aValue) {\r\n if (isValueEqual) {\r\n isValueEqual = false;\r\n b.forEach(function (bValue) {\r\n if (!isValueEqual) {\r\n isValueEqual = isEqual(aValue, bValue, meta);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n return isValueEqual;\r\n }\n\n var HAS_MAP_SUPPORT = typeof Map === 'function';\r\n var HAS_SET_SUPPORT = typeof Set === 'function';\r\n function createComparator(createIsEqual) {\r\n var isEqual = \r\n /* eslint-disable no-use-before-define */\r\n typeof createIsEqual === 'function'\r\n ? createIsEqual(comparator)\r\n : comparator;\r\n /* eslint-enable */\r\n /**\r\n * compare the value of the two objects and return true if they are equivalent in values\r\n *\r\n * @param a the value to test against\r\n * @param b the value to test\r\n * @param [meta] an optional meta object that is passed through to all equality test calls\r\n * @returns are a and b equivalent in value\r\n */\r\n function comparator(a, b, meta) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a && b && typeof a === 'object' && typeof b === 'object') {\r\n if (isPlainObject(a) && isPlainObject(b)) {\r\n return areObjectsEqual(a, b, isEqual, meta);\r\n }\r\n var aShape = Array.isArray(a);\r\n var bShape = Array.isArray(b);\r\n if (aShape || bShape) {\r\n return aShape === bShape && areArraysEqual(a, b, isEqual, meta);\r\n }\r\n aShape = a instanceof Date;\r\n bShape = b instanceof Date;\r\n if (aShape || bShape) {\r\n return (aShape === bShape && sameValueZeroEqual(a.getTime(), b.getTime()));\r\n }\r\n aShape = a instanceof RegExp;\r\n bShape = b instanceof RegExp;\r\n if (aShape || bShape) {\r\n return aShape === bShape && areRegExpsEqual(a, b);\r\n }\r\n if (isPromiseLike(a) || isPromiseLike(b)) {\r\n return a === b;\r\n }\r\n if (HAS_MAP_SUPPORT) {\r\n aShape = a instanceof Map;\r\n bShape = b instanceof Map;\r\n if (aShape || bShape) {\r\n return aShape === bShape && areMapsEqual(a, b, isEqual, meta);\r\n }\r\n }\r\n if (HAS_SET_SUPPORT) {\r\n aShape = a instanceof Set;\r\n bShape = b instanceof Set;\r\n if (aShape || bShape) {\r\n return aShape === bShape && areSetsEqual(a, b, isEqual, meta);\r\n }\r\n }\r\n return areObjectsEqual(a, b, isEqual, meta);\r\n }\r\n return a !== a && b !== b;\r\n }\r\n return comparator;\r\n }\n\n var deepEqual = createComparator();\r\n var shallowEqual = createComparator(function () { return sameValueZeroEqual; });\r\n var circularDeepEqual = createComparator(createCircularEqualCreator());\r\n var circularShallowEqual = createComparator(createCircularEqualCreator(sameValueZeroEqual));\n\n exports.circularDeepEqual = circularDeepEqual;\n exports.circularShallowEqual = circularShallowEqual;\n exports.createCustomEqual = createComparator;\n exports.deepEqual = deepEqual;\n exports.sameValueZeroEqual = sameValueZeroEqual;\n exports.shallowEqual = shallowEqual;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=fast-equals.js.map\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n}\n\nmodule.exports = escapeRegExp;\n","/**\n * lodash 3.0.3 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && objectToString.call(value) == boolTag);\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isBoolean;\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n nullTag = '[object Null]',\n proxyTag = '[object Proxy]',\n undefinedTag = '[object Undefined]';\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isFunction;\n","/**\n * lodash 4.0.0 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nmodule.exports = isNil;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","/**\n * Copyright (c) 2013-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\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","import raf from 'raf';\nexport default function setRafTimeout(callback) {\n var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var currTime = -1;\n\n var shouldUpdate = function shouldUpdate(now) {\n if (currTime < 0) {\n currTime = now;\n }\n\n if (now - currTime > timeout) {\n callback(now);\n currTime = -1;\n } else {\n raf(shouldUpdate);\n }\n };\n\n raf(shouldUpdate);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport setRafTimeout from './setRafTimeout';\nexport default function createAnimateManager() {\n var currStyle = {};\n\n var handleChange = function handleChange() {\n return null;\n };\n\n var shouldStop = false;\n\n var setStyle = function setStyle(_style) {\n if (shouldStop) {\n return;\n }\n\n if (Array.isArray(_style)) {\n if (!_style.length) {\n return;\n }\n\n var styles = _style;\n\n var _styles = _toArray(styles),\n curr = _styles[0],\n restStyles = _styles.slice(1);\n\n if (typeof curr === 'number') {\n setRafTimeout(setStyle.bind(null, restStyles), curr);\n return;\n }\n\n setStyle(curr);\n setRafTimeout(setStyle.bind(null, restStyles));\n return;\n }\n\n if (_typeof(_style) === 'object') {\n currStyle = _style;\n handleChange(currStyle);\n }\n\n if (typeof _style === 'function') {\n _style();\n }\n };\n\n return {\n stop: function stop() {\n shouldStop = true;\n },\n start: function start(style) {\n shouldStop = false;\n setStyle(style);\n },\n subscribe: function subscribe(_handleChange) {\n handleChange = _handleChange;\n return function () {\n handleChange = function handleChange() {\n return null;\n };\n };\n }\n };\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/* eslint no-console: 0 */\nvar PREFIX_LIST = ['Webkit', 'Moz', 'O', 'ms'];\nvar IN_LINE_PREFIX_LIST = ['-webkit-', '-moz-', '-o-', '-ms-'];\nvar IN_COMPATIBLE_PROPERTY = ['transform', 'transformOrigin', 'transition'];\nexport var getIntersectionKeys = function getIntersectionKeys(preObj, nextObj) {\n return [Object.keys(preObj), Object.keys(nextObj)].reduce(function (a, b) {\n return a.filter(function (c) {\n return b.includes(c);\n });\n });\n};\nexport var identity = function identity(param) {\n return param;\n};\n/*\n * @description: convert camel case to dash case\n * string => string\n */\n\nexport var getDashCase = function getDashCase(name) {\n return name.replace(/([A-Z])/g, function (v) {\n return \"-\".concat(v.toLowerCase());\n });\n};\n/*\n * @description: add compatible style prefix\n * (string, string) => object\n */\n\nexport var generatePrefixStyle = function generatePrefixStyle(name, value) {\n if (IN_COMPATIBLE_PROPERTY.indexOf(name) === -1) {\n return _defineProperty({}, name, value);\n }\n\n var isTransition = name === 'transition';\n var camelName = name.replace(/(\\w)/, function (v) {\n return v.toUpperCase();\n });\n var styleVal = value;\n return PREFIX_LIST.reduce(function (result, property, i) {\n if (isTransition) {\n styleVal = value.replace(/(transform|transform-origin)/gim, \"\".concat(IN_LINE_PREFIX_LIST[i], \"$1\"));\n }\n\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, property + camelName, styleVal));\n }, {});\n};\nexport var log = function log() {\n var _console;\n\n (_console = console).log.apply(_console, arguments);\n};\n/*\n * @description: log the value of a varible\n * string => any => any\n */\n\nexport var debug = function debug(name) {\n return function (item) {\n log(name, item);\n return item;\n };\n};\n/*\n * @description: log name, args, return value of a function\n * function => function\n */\n\nexport var debugf = function debugf(tag, f) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var res = f.apply(void 0, args);\n var name = tag || f.name || 'anonymous function';\n var argNames = \"(\".concat(args.map(JSON.stringify).join(', '), \")\");\n log(\"\".concat(name, \": \").concat(argNames, \" => \").concat(JSON.stringify(res)));\n return res;\n };\n};\n/*\n * @description: map object on every element in this object.\n * (function, object) => object\n */\n\nexport var mapObject = function mapObject(fn, obj) {\n return Object.keys(obj).reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, fn(key, obj[key])));\n }, {});\n};\n/*\n * @description: add compatible prefix to style\n * object => object\n */\n\nexport var translateStyle = function translateStyle(style) {\n return Object.keys(style).reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), generatePrefixStyle(key, res[key]));\n }, style);\n};\nexport var compose = function compose() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (!args.length) {\n return identity;\n }\n\n var fns = args.reverse(); // first function can receive multiply arguments\n\n var firstFn = fns[0];\n var tailsFn = fns.slice(1);\n return function () {\n return tailsFn.reduce(function (res, fn) {\n return fn(res);\n }, firstFn.apply(void 0, arguments));\n };\n};\nexport var getTransitionVal = function getTransitionVal(props, duration, easing) {\n return props.map(function (prop) {\n return \"\".concat(getDashCase(prop), \" \").concat(duration, \"ms \").concat(easing);\n }).join(',');\n};\nvar isDev = process.env.NODE_ENV !== 'production';\nexport var warn = function warn(condition, format, a, b, c, d, e, f) {\n if (isDev && typeof console !== 'undefined' && console.warn) {\n if (format === undefined) {\n console.warn('LogUtils requires an error message argument');\n }\n\n if (!condition) {\n if (format === undefined) {\n console.warn('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n console.warn(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n }\n }\n }\n};","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { warn } from './util';\nvar ACCURACY = 1e-4;\n\nvar cubicBezierFactor = function cubicBezierFactor(c1, c2) {\n return [0, 3 * c1, 3 * c2 - 6 * c1, 3 * c1 - 3 * c2 + 1];\n};\n\nvar multyTime = function multyTime(params, t) {\n return params.map(function (param, i) {\n return param * Math.pow(t, i);\n }).reduce(function (pre, curr) {\n return pre + curr;\n });\n};\n\nvar cubicBezier = function cubicBezier(c1, c2) {\n return function (t) {\n var params = cubicBezierFactor(c1, c2);\n return multyTime(params, t);\n };\n};\n\nvar derivativeCubicBezier = function derivativeCubicBezier(c1, c2) {\n return function (t) {\n var params = cubicBezierFactor(c1, c2);\n var newParams = [].concat(_toConsumableArray(params.map(function (param, i) {\n return param * i;\n }).slice(1)), [0]);\n return multyTime(newParams, t);\n };\n}; // calculate cubic-bezier using Newton's method\n\n\nexport var configBezier = function configBezier() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var x1 = args[0],\n y1 = args[1],\n x2 = args[2],\n y2 = args[3];\n\n if (args.length === 1) {\n switch (args[0]) {\n case 'linear':\n x1 = 0.0;\n y1 = 0.0;\n x2 = 1.0;\n y2 = 1.0;\n break;\n\n case 'ease':\n x1 = 0.25;\n y1 = 0.1;\n x2 = 0.25;\n y2 = 1.0;\n break;\n\n case 'ease-in':\n x1 = 0.42;\n y1 = 0.0;\n x2 = 1.0;\n y2 = 1.0;\n break;\n\n case 'ease-out':\n x1 = 0.42;\n y1 = 0.0;\n x2 = 0.58;\n y2 = 1.0;\n break;\n\n case 'ease-in-out':\n x1 = 0.0;\n y1 = 0.0;\n x2 = 0.58;\n y2 = 1.0;\n break;\n\n default:\n {\n var easing = args[0].split('(');\n\n if (easing[0] === 'cubic-bezier' && easing[1].split(')')[0].split(',').length === 4) {\n var _easing$1$split$0$spl = easing[1].split(')')[0].split(',').map(function (x) {\n return parseFloat(x);\n });\n\n var _easing$1$split$0$spl2 = _slicedToArray(_easing$1$split$0$spl, 4);\n\n x1 = _easing$1$split$0$spl2[0];\n y1 = _easing$1$split$0$spl2[1];\n x2 = _easing$1$split$0$spl2[2];\n y2 = _easing$1$split$0$spl2[3];\n } else {\n warn(false, '[configBezier]: arguments should be one of ' + 'oneOf \\'linear\\', \\'ease\\', \\'ease-in\\', \\'ease-out\\', ' + '\\'ease-in-out\\',\\'cubic-bezier(x1,y1,x2,y2)\\', instead received %s', args);\n }\n }\n }\n }\n\n warn([x1, x2, y1, y2].every(function (num) {\n return typeof num === 'number' && num >= 0 && num <= 1;\n }), '[configBezier]: arguments should be x1, y1, x2, y2 of [0, 1] instead received %s', args);\n var curveX = cubicBezier(x1, x2);\n var curveY = cubicBezier(y1, y2);\n var derCurveX = derivativeCubicBezier(x1, x2);\n\n var rangeValue = function rangeValue(value) {\n if (value > 1) {\n return 1;\n } else if (value < 0) {\n return 0;\n }\n\n return value;\n };\n\n var bezier = function bezier(_t) {\n var t = _t > 1 ? 1 : _t;\n var x = t;\n\n for (var i = 0; i < 8; ++i) {\n var evalT = curveX(x) - t;\n var derVal = derCurveX(x);\n\n if (Math.abs(evalT - t) < ACCURACY || derVal < ACCURACY) {\n return curveY(x);\n }\n\n x = rangeValue(x - evalT / derVal);\n }\n\n return curveY(x);\n };\n\n bezier.isStepper = false;\n return bezier;\n};\nexport var configSpring = function configSpring() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _config$stiff = config.stiff,\n stiff = _config$stiff === void 0 ? 100 : _config$stiff,\n _config$damping = config.damping,\n damping = _config$damping === void 0 ? 8 : _config$damping,\n _config$dt = config.dt,\n dt = _config$dt === void 0 ? 17 : _config$dt;\n\n var stepper = function stepper(currX, destX, currV) {\n var FSpring = -(currX - destX) * stiff;\n var FDamping = currV * damping;\n var newV = currV + (FSpring - FDamping) * dt / 1000;\n var newX = currV * dt / 1000 + currX;\n\n if (Math.abs(newX - destX) < ACCURACY && Math.abs(newV) < ACCURACY) {\n return [destX, 0];\n }\n\n return [newX, newV];\n };\n\n stepper.isStepper = true;\n stepper.dt = dt;\n return stepper;\n};\nexport var configEasing = function configEasing() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var easing = args[0];\n\n if (typeof easing === 'string') {\n switch (easing) {\n case 'ease':\n case 'ease-in-out':\n case 'ease-out':\n case 'ease-in':\n case 'linear':\n return configBezier(easing);\n\n case 'spring':\n return configSpring();\n\n default:\n if (easing.split('(')[0] === 'cubic-bezier') {\n return configBezier(easing);\n }\n\n warn(false, '[configEasing]: first argument should be one of \\'ease\\', \\'ease-in\\', ' + '\\'ease-out\\', \\'ease-in-out\\',\\'cubic-bezier(x1,y1,x2,y2)\\', \\'linear\\' and \\'spring\\', instead received %s', args);\n }\n }\n\n if (typeof easing === 'function') {\n return easing;\n }\n\n warn(false, '[configEasing]: first argument type should be function or ' + 'string, instead received %s', args);\n return null;\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport raf, { cancel as caf } from 'raf';\nimport { getIntersectionKeys, mapObject } from './util';\n\nvar alpha = function alpha(begin, end, k) {\n return begin + (end - begin) * k;\n};\n\nvar needContinue = function needContinue(_ref) {\n var from = _ref.from,\n to = _ref.to;\n return from !== to;\n};\n/*\n * @description: cal new from value and velocity in each stepper\n * @return: { [styleProperty]: { from, to, velocity } }\n */\n\n\nvar calStepperVals = function calStepperVals(easing, preVals, steps) {\n var nextStepVals = mapObject(function (key, val) {\n if (needContinue(val)) {\n var _easing = easing(val.from, val.to, val.velocity),\n _easing2 = _slicedToArray(_easing, 2),\n newX = _easing2[0],\n newV = _easing2[1];\n\n return _objectSpread(_objectSpread({}, val), {}, {\n from: newX,\n velocity: newV\n });\n }\n\n return val;\n }, preVals);\n\n if (steps < 1) {\n return mapObject(function (key, val) {\n if (needContinue(val)) {\n return _objectSpread(_objectSpread({}, val), {}, {\n velocity: alpha(val.velocity, nextStepVals[key].velocity, steps),\n from: alpha(val.from, nextStepVals[key].from, steps)\n });\n }\n\n return val;\n }, preVals);\n }\n\n return calStepperVals(easing, nextStepVals, steps - 1);\n}; // configure update function\n\n\nexport default (function (from, to, easing, duration, render) {\n var interKeys = getIntersectionKeys(from, to);\n var timingStyle = interKeys.reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, [from[key], to[key]]));\n }, {});\n var stepperStyle = interKeys.reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, {\n from: from[key],\n velocity: 0,\n to: to[key]\n }));\n }, {});\n var cafId = -1;\n var preTime;\n var beginTime;\n\n var update = function update() {\n return null;\n };\n\n var getCurrStyle = function getCurrStyle() {\n return mapObject(function (key, val) {\n return val.from;\n }, stepperStyle);\n };\n\n var shouldStopAnimation = function shouldStopAnimation() {\n return !Object.values(stepperStyle).filter(needContinue).length;\n }; // stepper timing function like spring\n\n\n var stepperUpdate = function stepperUpdate(now) {\n if (!preTime) {\n preTime = now;\n }\n\n var deltaTime = now - preTime;\n var steps = deltaTime / easing.dt;\n stepperStyle = calStepperVals(easing, stepperStyle, steps); // get union set and add compatible prefix\n\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), getCurrStyle(stepperStyle)));\n preTime = now;\n\n if (!shouldStopAnimation()) {\n cafId = raf(update);\n }\n }; // t => val timing function like cubic-bezier\n\n\n var timingUpdate = function timingUpdate(now) {\n if (!beginTime) {\n beginTime = now;\n }\n\n var t = (now - beginTime) / duration;\n var currStyle = mapObject(function (key, val) {\n return alpha.apply(void 0, _toConsumableArray(val).concat([easing(t)]));\n }, timingStyle); // get union set and add compatible prefix\n\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), currStyle));\n\n if (t < 1) {\n cafId = raf(update);\n } else {\n var finalStyle = mapObject(function (key, val) {\n return alpha.apply(void 0, _toConsumableArray(val).concat([easing(1)]));\n }, timingStyle);\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), finalStyle));\n }\n };\n\n update = easing.isStepper ? stepperUpdate : timingUpdate; // return start animation method\n\n return function () {\n raf(update); // return stop animation method\n\n return function () {\n caf(cafId);\n };\n };\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport React, { PureComponent, cloneElement, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { deepEqual } from 'fast-equals';\nimport createAnimateManager from './AnimateManager';\nimport { configEasing } from './easing';\nimport configUpdate from './configUpdate';\nimport { getTransitionVal, identity, translateStyle } from './util';\n\nvar Animate = /*#__PURE__*/function (_PureComponent) {\n _inherits(Animate, _PureComponent);\n\n var _super = _createSuper(Animate);\n\n function Animate(props, context) {\n var _this;\n\n _classCallCheck(this, Animate);\n\n _this = _super.call(this, props, context);\n var _this$props = _this.props,\n isActive = _this$props.isActive,\n attributeName = _this$props.attributeName,\n from = _this$props.from,\n to = _this$props.to,\n steps = _this$props.steps,\n children = _this$props.children;\n _this.handleStyleChange = _this.handleStyleChange.bind(_assertThisInitialized(_this));\n _this.changeStyle = _this.changeStyle.bind(_assertThisInitialized(_this));\n\n if (!isActive) {\n _this.state = {\n style: {}\n }; // if children is a function and animation is not active, set style to 'to'\n\n if (typeof children === 'function') {\n _this.state = {\n style: to\n };\n }\n\n return _possibleConstructorReturn(_this);\n }\n\n if (steps && steps.length) {\n _this.state = {\n style: steps[0].style\n };\n } else if (from) {\n if (typeof children === 'function') {\n _this.state = {\n style: from\n };\n return _possibleConstructorReturn(_this);\n }\n\n _this.state = {\n style: attributeName ? _defineProperty({}, attributeName, from) : from\n };\n } else {\n _this.state = {\n style: {}\n };\n }\n\n return _this;\n }\n\n _createClass(Animate, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props2 = this.props,\n isActive = _this$props2.isActive,\n canBegin = _this$props2.canBegin;\n this.mounted = true;\n\n if (!isActive || !canBegin) {\n return;\n }\n\n this.runAnimation(this.props);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props3 = this.props,\n isActive = _this$props3.isActive,\n canBegin = _this$props3.canBegin,\n attributeName = _this$props3.attributeName,\n shouldReAnimate = _this$props3.shouldReAnimate;\n\n if (!canBegin) {\n return;\n }\n\n if (!isActive) {\n var newState = {\n style: attributeName ? _defineProperty({}, attributeName, this.props.to) : this.props.to\n };\n\n if (this.state && this.state.style) {\n if (attributeName && this.state.style[attributeName] !== this.props.to || !attributeName && this.state.style !== this.props.to) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState(newState);\n }\n }\n\n return;\n }\n\n if (deepEqual(prevProps.to, this.props.to) && prevProps.canBegin && prevProps.isActive) {\n return;\n }\n\n var isTriggered = !prevProps.canBegin || !prevProps.isActive;\n\n if (this.manager) {\n this.manager.stop();\n }\n\n if (this.stopJSAnimation) {\n this.stopJSAnimation();\n }\n\n var from = isTriggered || shouldReAnimate ? this.props.from : prevProps.to;\n\n if (this.state && this.state.style) {\n var _newState = {\n style: attributeName ? _defineProperty({}, attributeName, from) : from\n };\n\n if (attributeName && this.state.style[attributeName] !== from || !attributeName && this.state.style !== from) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState(_newState);\n }\n }\n\n this.runAnimation(_objectSpread(_objectSpread({}, this.props), {}, {\n from: from,\n begin: 0\n }));\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mounted = false;\n\n if (this.unSubscribe) {\n this.unSubscribe();\n }\n\n if (this.manager) {\n this.manager.stop();\n this.manager = null;\n }\n\n if (this.stopJSAnimation) {\n this.stopJSAnimation();\n }\n }\n }, {\n key: \"runJSAnimation\",\n value: function runJSAnimation(props) {\n var _this2 = this;\n\n var from = props.from,\n to = props.to,\n duration = props.duration,\n easing = props.easing,\n begin = props.begin,\n onAnimationEnd = props.onAnimationEnd,\n onAnimationStart = props.onAnimationStart;\n var startAnimation = configUpdate(from, to, configEasing(easing), duration, this.changeStyle);\n\n var finalStartAnimation = function finalStartAnimation() {\n _this2.stopJSAnimation = startAnimation();\n };\n\n this.manager.start([onAnimationStart, begin, finalStartAnimation, duration, onAnimationEnd]);\n }\n }, {\n key: \"runStepAnimation\",\n value: function runStepAnimation(props) {\n var _this3 = this;\n\n var steps = props.steps,\n begin = props.begin,\n onAnimationStart = props.onAnimationStart;\n var _steps$ = steps[0],\n initialStyle = _steps$.style,\n _steps$$duration = _steps$.duration,\n initialTime = _steps$$duration === void 0 ? 0 : _steps$$duration;\n\n var addStyle = function addStyle(sequence, nextItem, index) {\n if (index === 0) {\n return sequence;\n }\n\n var duration = nextItem.duration,\n _nextItem$easing = nextItem.easing,\n easing = _nextItem$easing === void 0 ? 'ease' : _nextItem$easing,\n style = nextItem.style,\n nextProperties = nextItem.properties,\n onAnimationEnd = nextItem.onAnimationEnd;\n var preItem = index > 0 ? steps[index - 1] : nextItem;\n var properties = nextProperties || Object.keys(style);\n\n if (typeof easing === 'function' || easing === 'spring') {\n return [].concat(_toConsumableArray(sequence), [_this3.runJSAnimation.bind(_this3, {\n from: preItem.style,\n to: style,\n duration: duration,\n easing: easing\n }), duration]);\n }\n\n var transition = getTransitionVal(properties, duration, easing);\n\n var newStyle = _objectSpread(_objectSpread(_objectSpread({}, preItem.style), style), {}, {\n transition: transition\n });\n\n return [].concat(_toConsumableArray(sequence), [newStyle, duration, onAnimationEnd]).filter(identity);\n };\n\n return this.manager.start([onAnimationStart].concat(_toConsumableArray(steps.reduce(addStyle, [initialStyle, Math.max(initialTime, begin)])), [props.onAnimationEnd]));\n }\n }, {\n key: \"runAnimation\",\n value: function runAnimation(props) {\n if (!this.manager) {\n this.manager = createAnimateManager();\n }\n\n var begin = props.begin,\n duration = props.duration,\n attributeName = props.attributeName,\n propsTo = props.to,\n easing = props.easing,\n onAnimationStart = props.onAnimationStart,\n onAnimationEnd = props.onAnimationEnd,\n steps = props.steps,\n children = props.children;\n var manager = this.manager;\n this.unSubscribe = manager.subscribe(this.handleStyleChange);\n\n if (typeof easing === 'function' || typeof children === 'function' || easing === 'spring') {\n this.runJSAnimation(props);\n return;\n }\n\n if (steps.length > 1) {\n this.runStepAnimation(props);\n return;\n }\n\n var to = attributeName ? _defineProperty({}, attributeName, propsTo) : propsTo;\n var transition = getTransitionVal(Object.keys(to), duration, easing);\n manager.start([onAnimationStart, begin, _objectSpread(_objectSpread({}, to), {}, {\n transition: transition\n }), duration, onAnimationEnd]);\n }\n }, {\n key: \"handleStyleChange\",\n value: function handleStyleChange(style) {\n this.changeStyle(style);\n }\n }, {\n key: \"changeStyle\",\n value: function changeStyle(style) {\n if (this.mounted) {\n this.setState({\n style: style\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n children = _this$props4.children,\n begin = _this$props4.begin,\n duration = _this$props4.duration,\n attributeName = _this$props4.attributeName,\n easing = _this$props4.easing,\n isActive = _this$props4.isActive,\n steps = _this$props4.steps,\n from = _this$props4.from,\n to = _this$props4.to,\n canBegin = _this$props4.canBegin,\n onAnimationEnd = _this$props4.onAnimationEnd,\n shouldReAnimate = _this$props4.shouldReAnimate,\n onAnimationReStart = _this$props4.onAnimationReStart,\n others = _objectWithoutProperties(_this$props4, [\"children\", \"begin\", \"duration\", \"attributeName\", \"easing\", \"isActive\", \"steps\", \"from\", \"to\", \"canBegin\", \"onAnimationEnd\", \"shouldReAnimate\", \"onAnimationReStart\"]);\n\n var count = Children.count(children);\n var stateStyle = translateStyle(this.state.style);\n\n if (typeof children === 'function') {\n return children(stateStyle);\n }\n\n if (!isActive || count === 0) {\n return children;\n }\n\n var cloneContainer = function cloneContainer(container) {\n var _container$props = container.props,\n _container$props$styl = _container$props.style,\n style = _container$props$styl === void 0 ? {} : _container$props$styl,\n className = _container$props.className;\n var res = /*#__PURE__*/cloneElement(container, _objectSpread(_objectSpread({}, others), {}, {\n style: _objectSpread(_objectSpread({}, style), stateStyle),\n className: className\n }));\n return res;\n };\n\n if (count === 1) {\n return cloneContainer(Children.only(children));\n }\n\n return /*#__PURE__*/React.createElement(\"div\", null, Children.map(children, function (child) {\n return cloneContainer(child);\n }));\n }\n }]);\n\n return Animate;\n}(PureComponent);\n\nAnimate.displayName = 'Animate';\nAnimate.propTypes = {\n from: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n to: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n attributeName: PropTypes.string,\n // animation duration\n duration: PropTypes.number,\n begin: PropTypes.number,\n easing: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n steps: PropTypes.arrayOf(PropTypes.shape({\n duration: PropTypes.number.isRequired,\n style: PropTypes.object.isRequired,\n easing: PropTypes.oneOfType([PropTypes.oneOf(['ease', 'ease-in', 'ease-out', 'ease-in-out', 'linear']), PropTypes.func]),\n // transition css properties(dash case), optional\n properties: PropTypes.arrayOf('string'),\n onAnimationEnd: PropTypes.func\n })),\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n isActive: PropTypes.bool,\n canBegin: PropTypes.bool,\n onAnimationEnd: PropTypes.func,\n // decide if it should reanimate with initial from style when props change\n shouldReAnimate: PropTypes.bool,\n onAnimationStart: PropTypes.func,\n onAnimationReStart: PropTypes.func\n};\nAnimate.defaultProps = {\n begin: 0,\n duration: 1000,\n from: '',\n to: '',\n attributeName: '',\n easing: 'ease',\n isActive: true,\n canBegin: true,\n steps: [],\n onAnimationEnd: function onAnimationEnd() {},\n onAnimationStart: function onAnimationStart() {}\n};\nexport default Animate;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport React, { Component, Children } from 'react';\nimport { Transition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport Animate from './Animate';\n\nif (Number.isFinite === undefined) {\n Number.isFinite = function (value) {\n return typeof value === 'number' && isFinite(value);\n };\n}\n\nvar parseDurationOfSingleTransition = function parseDurationOfSingleTransition() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var steps = options.steps,\n duration = options.duration;\n\n if (steps && steps.length) {\n return steps.reduce(function (result, entry) {\n return result + (Number.isFinite(entry.duration) && entry.duration > 0 ? entry.duration : 0);\n }, 0);\n }\n\n if (Number.isFinite(duration)) {\n return duration;\n }\n\n return 0;\n};\n\nvar AnimateGroupChild = /*#__PURE__*/function (_Component) {\n _inherits(AnimateGroupChild, _Component);\n\n var _super = _createSuper(AnimateGroupChild);\n\n function AnimateGroupChild() {\n var _this;\n\n _classCallCheck(this, AnimateGroupChild);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n isActive: false\n };\n\n _this.handleEnter = function (node, isAppearing) {\n var _this$props = _this.props,\n appearOptions = _this$props.appearOptions,\n enterOptions = _this$props.enterOptions;\n\n _this.handleStyleActive(isAppearing ? appearOptions : enterOptions);\n };\n\n _this.handleExit = function () {\n _this.handleStyleActive(_this.props.leaveOptions);\n };\n\n return _this;\n }\n\n _createClass(AnimateGroupChild, [{\n key: \"handleStyleActive\",\n value: function handleStyleActive(style) {\n if (style) {\n var onAnimationEnd = style.onAnimationEnd ? function () {\n style.onAnimationEnd();\n } : null;\n this.setState(_objectSpread(_objectSpread({}, style), {}, {\n onAnimationEnd: onAnimationEnd,\n isActive: true\n }));\n }\n }\n }, {\n key: \"parseTimeout\",\n value: function parseTimeout() {\n var _this$props2 = this.props,\n appearOptions = _this$props2.appearOptions,\n enterOptions = _this$props2.enterOptions,\n leaveOptions = _this$props2.leaveOptions;\n return parseDurationOfSingleTransition(appearOptions) + parseDurationOfSingleTransition(enterOptions) + parseDurationOfSingleTransition(leaveOptions);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props3 = this.props,\n children = _this$props3.children,\n appearOptions = _this$props3.appearOptions,\n enterOptions = _this$props3.enterOptions,\n leaveOptions = _this$props3.leaveOptions,\n props = _objectWithoutProperties(_this$props3, [\"children\", \"appearOptions\", \"enterOptions\", \"leaveOptions\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.handleEnter,\n onExit: this.handleExit,\n timeout: this.parseTimeout()\n }), function () {\n return /*#__PURE__*/React.createElement(Animate, _this2.state, Children.only(children));\n });\n }\n }]);\n\n return AnimateGroupChild;\n}(Component);\n\nAnimateGroupChild.propTypes = {\n appearOptions: PropTypes.object,\n enterOptions: PropTypes.object,\n leaveOptions: PropTypes.object,\n children: PropTypes.element\n};\nexport default AnimateGroupChild;","import React, { Children } from 'react';\nimport { TransitionGroup } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport AnimateGroupChild from './AnimateGroupChild';\n\nfunction AnimateGroup(props) {\n var component = props.component,\n children = props.children,\n appear = props.appear,\n enter = props.enter,\n leave = props.leave;\n return /*#__PURE__*/React.createElement(TransitionGroup, {\n component: component\n }, Children.map(children, function (child, index) {\n return /*#__PURE__*/React.createElement(AnimateGroupChild, {\n appearOptions: appear,\n enterOptions: enter,\n leaveOptions: leave,\n key: \"child-\".concat(index) // eslint-disable-line\n\n }, child);\n }));\n}\n\nAnimateGroup.propTypes = {\n appear: PropTypes.object,\n enter: PropTypes.object,\n leave: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.array, PropTypes.element]),\n component: PropTypes.any\n};\nAnimateGroup.defaultProps = {\n component: 'span'\n};\nexport default AnimateGroup;","import Animate from './Animate';\nimport { configBezier, configSpring } from './easing';\nimport { translateStyle } from './util';\nimport AnimateGroup from './AnimateGroup';\nexport { configSpring, configBezier, AnimateGroup, translateStyle };\nexport default Animate;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _addClass = _interopRequireDefault(require(\"dom-helpers/class/addClass\"));\n\nvar _removeClass = _interopRequireDefault(require(\"dom-helpers/class/removeClass\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _addClass.default)(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _removeClass.default)(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](http://www.nganimate.org/) library, you should use it if you're\n * using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n *
\n * {\"I'll receive my-node-* classes\"}\n *
\n *
\n * \n *
\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity: 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */\n\n\nvar CSSTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.onEnter = function (node, appearing) {\n var _this$getClassNames = _this.getClassNames(appearing ? 'appear' : 'enter'),\n className = _this$getClassNames.className;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, className);\n\n if (_this.props.onEnter) {\n _this.props.onEnter(node, appearing);\n }\n };\n\n _this.onEntering = function (node, appearing) {\n var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n activeClassName = _this$getClassNames2.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onEntering) {\n _this.props.onEntering(node, appearing);\n }\n };\n\n _this.onEntered = function (node, appearing) {\n var appearClassName = _this.getClassNames('appear').doneClassName;\n\n var enterClassName = _this.getClassNames('enter').doneClassName;\n\n var doneClassName = appearing ? appearClassName + \" \" + enterClassName : enterClassName;\n\n _this.removeClasses(node, appearing ? 'appear' : 'enter');\n\n addClass(node, doneClassName);\n\n if (_this.props.onEntered) {\n _this.props.onEntered(node, appearing);\n }\n };\n\n _this.onExit = function (node) {\n var _this$getClassNames3 = _this.getClassNames('exit'),\n className = _this$getClassNames3.className;\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n addClass(node, className);\n\n if (_this.props.onExit) {\n _this.props.onExit(node);\n }\n };\n\n _this.onExiting = function (node) {\n var _this$getClassNames4 = _this.getClassNames('exit'),\n activeClassName = _this$getClassNames4.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onExiting) {\n _this.props.onExiting(node);\n }\n };\n\n _this.onExited = function (node) {\n var _this$getClassNames5 = _this.getClassNames('exit'),\n doneClassName = _this$getClassNames5.doneClassName;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, doneClassName);\n\n if (_this.props.onExited) {\n _this.props.onExited(node);\n }\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + '-' : '';\n var className = isStringClassNames ? prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? className + '-active' : classNames[type + 'Active'];\n var doneClassName = isStringClassNames ? className + '-done' : classNames[type + 'Done'];\n return {\n className: className,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$getClassNames6 = this.getClassNames(type),\n className = _this$getClassNames6.className,\n activeClassName = _this$getClassNames6.activeClassName,\n doneClassName = _this$getClassNames6.doneClassName;\n\n className && removeClass(node, className);\n activeClassName && removeClass(node, activeClassName);\n doneClassName && removeClass(node, doneClassName);\n };\n\n _proto.reflowAndAddClass = function reflowAndAddClass(node, className) {\n // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n if (className) {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n /* eslint-enable no-unused-expressions */\n\n addClass(node, className);\n }\n };\n\n _proto.render = function render() {\n var props = _extends({}, this.props);\n\n delete props.classNames;\n return _react.default.createElement(_Transition.default, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(_react.default.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, _Transition.default.propTypes, {\n /**\n * The animation classNames applied to the component as it enters, exits or\n * has finished the transition. A single name can be provided and it will be\n * suffixed for each stage: e.g.\n *\n * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`,\n * `fade-enter-done`, `fade-exit`, `fade-exit-active`, `fade-exit-done`,\n * `fade-appear`, `fade-appear-active`, and `fade-appear-done`.\n *\n * **Note**: `fade-appear-done` and `fade-enter-done` will _both_ be applied.\n * This allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply an\n * epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: _PropTypes.classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nvar _default = CSSTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * \n *
I appear first
\n *
I replace the above
\n *
\n * ```\n */\nvar ReplaceTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReplaceTransition, _React$Component);\n\n function ReplaceTransition() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n _this.handleEnter = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _this.handleLifecycle('onEnter', 0, args);\n };\n\n _this.handleEntering = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return _this.handleLifecycle('onEntering', 0, args);\n };\n\n _this.handleEntered = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return _this.handleLifecycle('onEntered', 0, args);\n };\n\n _this.handleExit = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n return _this.handleLifecycle('onExit', 1, args);\n };\n\n _this.handleExiting = function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n return _this.handleLifecycle('onExiting', 1, args);\n };\n\n _this.handleExited = function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n return _this.handleLifecycle('onExited', 1, args);\n };\n\n return _this;\n }\n\n var _proto = ReplaceTransition.prototype;\n\n _proto.handleLifecycle = function handleLifecycle(handler, idx, originalArgs) {\n var _child$props;\n\n var children = this.props.children;\n\n var child = _react.default.Children.toArray(children)[idx];\n\n if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n if (this.props[handler]) this.props[handler]((0, _reactDom.findDOMNode)(this));\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n inProp = _this$props.in,\n props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n\n var _React$Children$toArr = _react.default.Children.toArray(children),\n first = _React$Children$toArr[0],\n second = _React$Children$toArr[1];\n\n delete props.onEnter;\n delete props.onEntering;\n delete props.onEntered;\n delete props.onExit;\n delete props.onExiting;\n delete props.onExited;\n return _react.default.createElement(_TransitionGroup.default, props, inProp ? _react.default.cloneElement(first, {\n key: 'first',\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onEntered: this.handleEntered\n }) : _react.default.cloneElement(second, {\n key: 'second',\n onEnter: this.handleExit,\n onEntering: this.handleExiting,\n onEntered: this.handleExited\n }));\n };\n\n return ReplaceTransition;\n}(_react.default.Component);\n\nReplaceTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n in: _propTypes.default.bool.isRequired,\n children: function children(props, propName) {\n if (_react.default.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n return null;\n }\n} : {};\nvar _default = ReplaceTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\n };\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = _PropTypes.timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n /**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: {\n isMounting: !this.appeared\n }\n };\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.appeared = true;\n this.mounted = true;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return children;\n }\n\n return _react.default.createElement(Component, props, children);\n };\n\n return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.childContextTypes = {\n transitionGroup: _propTypes.default.object.isRequired\n};\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: _propTypes.default.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: _propTypes.default.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: _propTypes.default.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n Transition: _Transition.default,\n TransitionGroup: _TransitionGroup.default,\n ReplaceTransition: _ReplaceTransition.default,\n CSSTransition: _CSSTransition.default\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\nexports.getInitialChildMapping = getInitialChildMapping;\nexports.getNextChildMapping = getNextChildMapping;\n\nvar _react = require(\"react\");\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) _react.Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\n\nfunction mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nfunction getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\n\nfunction getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!(0, _react.isValidElement)(child)) return;\n var hasPrev = key in prevChildMapping;\n var hasNext = key in nextChildMapping;\n var prevChild = prevChildMapping[key];\n var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = (0, _react.cloneElement)(child, {\n in: false\n });\n } else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number,\n appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isNil from \"lodash/isNil\";\nimport _sortBy from \"lodash/sortBy\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { isNumOrStr } from '../util/DataUtils';\n\nfunction defaultFormatter(value) {\n return _isArray(value) && isNumOrStr(value[0]) && isNumOrStr(value[1]) ? value.join(' ~ ') : value;\n}\n\nexport var DefaultTooltipContent = /*#__PURE__*/function (_PureComponent) {\n _inherits(DefaultTooltipContent, _PureComponent);\n\n var _super = _createSuper(DefaultTooltipContent);\n\n function DefaultTooltipContent() {\n _classCallCheck(this, DefaultTooltipContent);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(DefaultTooltipContent, [{\n key: \"renderContent\",\n value: function renderContent() {\n var _this$props = this.props,\n payload = _this$props.payload,\n separator = _this$props.separator,\n formatter = _this$props.formatter,\n itemStyle = _this$props.itemStyle,\n itemSorter = _this$props.itemSorter;\n\n if (payload && payload.length) {\n var listStyle = {\n padding: 0,\n margin: 0\n };\n var items = (itemSorter ? _sortBy(payload, itemSorter) : payload).map(function (entry, i) {\n if (entry.type === 'none') {\n return null;\n }\n\n var finalItemStyle = _objectSpread({\n display: 'block',\n paddingTop: 4,\n paddingBottom: 4,\n color: entry.color || '#000'\n }, itemStyle);\n\n var finalFormatter = entry.formatter || formatter || defaultFormatter;\n var name = entry.name,\n value = entry.value;\n\n if (finalFormatter) {\n var formatted = finalFormatter(value, name, entry, i, payload);\n\n if (Array.isArray(formatted)) {\n var _formatted = _slicedToArray(formatted, 2);\n\n value = _formatted[0];\n name = _formatted[1];\n } else {\n value = formatted;\n }\n }\n\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"li\", {\n className: \"recharts-tooltip-item\",\n key: \"tooltip-item-\".concat(i),\n style: finalItemStyle\n }, isNumOrStr(name) ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-name\"\n }, name) : null, isNumOrStr(name) ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-separator\"\n }, separator) : null, /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-value\"\n }, value), /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-unit\"\n }, entry.unit || ''))\n );\n });\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: \"recharts-tooltip-item-list\",\n style: listStyle\n }, items);\n }\n\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n wrapperClassName = _this$props2.wrapperClassName,\n contentStyle = _this$props2.contentStyle,\n labelClassName = _this$props2.labelClassName,\n labelStyle = _this$props2.labelStyle,\n label = _this$props2.label,\n labelFormatter = _this$props2.labelFormatter,\n payload = _this$props2.payload;\n\n var finalStyle = _objectSpread({\n margin: 0,\n padding: 10,\n backgroundColor: '#fff',\n border: '1px solid #ccc',\n whiteSpace: 'nowrap'\n }, contentStyle);\n\n var finalLabelStyle = _objectSpread({\n margin: 0\n }, labelStyle);\n\n var hasLabel = !_isNil(label);\n var finalLabel = hasLabel ? label : '';\n var wrapperCN = classNames('recharts-default-tooltip', wrapperClassName);\n var labelCN = classNames('recharts-tooltip-label', labelClassName);\n\n if (hasLabel && labelFormatter) {\n finalLabel = labelFormatter(label, payload);\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: wrapperCN,\n style: finalStyle\n }, /*#__PURE__*/React.createElement(\"p\", {\n className: labelCN,\n style: finalLabelStyle\n }, /*#__PURE__*/React.isValidElement(finalLabel) ? finalLabel : \"\".concat(finalLabel)), this.renderContent());\n }\n }]);\n\n return DefaultTooltipContent;\n}(PureComponent);\nDefaultTooltipContent.displayName = 'DefaultTooltipContent';\nDefaultTooltipContent.defaultProps = {\n separator: ' : ',\n contentStyle: {},\n itemStyle: {},\n labelStyle: {}\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isNil from \"lodash/isNil\";\nimport _isFunction from \"lodash/isFunction\";\nimport _uniqBy from \"lodash/uniqBy\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Tooltip\n */\nimport React, { PureComponent } from 'react';\nimport { translateStyle } from 'react-smooth';\nimport classNames from 'classnames';\nimport { DefaultTooltipContent } from './DefaultTooltipContent';\nimport { Global } from '../util/Global';\nimport { isNumber } from '../util/DataUtils';\nvar CLS_PREFIX = 'recharts-tooltip-wrapper';\nvar EPS = 1;\n\nfunction defaultUniqBy(entry) {\n return entry.dataKey;\n}\n\nfunction getUniqPayload(option, payload) {\n if (option === true) {\n return _uniqBy(payload, defaultUniqBy);\n }\n\n if (_isFunction(option)) {\n return _uniqBy(payload, option);\n }\n\n return payload;\n}\n\nfunction renderContent(content, props) {\n if ( /*#__PURE__*/React.isValidElement(content)) {\n return /*#__PURE__*/React.cloneElement(content, props);\n }\n\n if (_isFunction(content)) {\n return /*#__PURE__*/React.createElement(content, props);\n }\n\n return /*#__PURE__*/React.createElement(DefaultTooltipContent, props);\n}\n\nexport var Tooltip = /*#__PURE__*/function (_PureComponent) {\n _inherits(Tooltip, _PureComponent);\n\n var _super = _createSuper(Tooltip);\n\n function Tooltip() {\n var _this;\n\n _classCallCheck(this, Tooltip);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n boxWidth: -1,\n boxHeight: -1\n };\n _this.wrapperNode = void 0;\n\n _this.getTranslate = function (_ref) {\n var key = _ref.key,\n tooltipDimension = _ref.tooltipDimension,\n viewBoxDimension = _ref.viewBoxDimension;\n var _this$props = _this.props,\n allowEscapeViewBox = _this$props.allowEscapeViewBox,\n coordinate = _this$props.coordinate,\n offset = _this$props.offset,\n position = _this$props.position,\n viewBox = _this$props.viewBox;\n\n if (position && isNumber(position[key])) {\n return position[key];\n }\n\n var restricted = coordinate[key] - tooltipDimension - offset;\n var unrestricted = coordinate[key] + offset;\n\n if (allowEscapeViewBox[key]) {\n return unrestricted;\n }\n\n var tooltipBoundary = coordinate[key] + tooltipDimension + offset;\n var viewBoxBoundary = viewBox[key] + viewBoxDimension;\n\n if (tooltipBoundary > viewBoxBoundary) {\n return Math.max(restricted, viewBox[key]);\n }\n\n return Math.max(unrestricted, viewBox[key]);\n };\n\n return _this;\n }\n\n _createClass(Tooltip, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.updateBBox();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.updateBBox();\n }\n }, {\n key: \"updateBBox\",\n value: function updateBBox() {\n var _this$state = this.state,\n boxWidth = _this$state.boxWidth,\n boxHeight = _this$state.boxHeight;\n\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n var box = this.wrapperNode.getBoundingClientRect();\n\n if (Math.abs(box.width - boxWidth) > EPS || Math.abs(box.height - boxHeight) > EPS) {\n this.setState({\n boxWidth: box.width,\n boxHeight: box.height\n });\n }\n } else if (boxWidth !== -1 || boxHeight !== -1) {\n this.setState({\n boxWidth: -1,\n boxHeight: -1\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames,\n _this2 = this;\n\n var _this$props2 = this.props,\n payload = _this$props2.payload,\n isAnimationActive = _this$props2.isAnimationActive,\n animationDuration = _this$props2.animationDuration,\n animationEasing = _this$props2.animationEasing,\n filterNull = _this$props2.filterNull,\n payloadUniqBy = _this$props2.payloadUniqBy;\n var finalPayload = getUniqPayload(payloadUniqBy, filterNull && payload && payload.length ? payload.filter(function (entry) {\n return !_isNil(entry.value);\n }) : payload);\n var hasPayload = finalPayload && finalPayload.length;\n var _this$props3 = this.props,\n content = _this$props3.content,\n viewBox = _this$props3.viewBox,\n coordinate = _this$props3.coordinate,\n position = _this$props3.position,\n active = _this$props3.active,\n wrapperStyle = _this$props3.wrapperStyle;\n\n var outerStyle = _objectSpread({\n pointerEvents: 'none',\n visibility: active && hasPayload ? 'visible' : 'hidden',\n position: 'absolute',\n top: 0,\n left: 0\n }, wrapperStyle);\n\n var translateX, translateY;\n\n if (position && isNumber(position.x) && isNumber(position.y)) {\n translateX = position.x;\n translateY = position.y;\n } else {\n var _this$state2 = this.state,\n boxWidth = _this$state2.boxWidth,\n boxHeight = _this$state2.boxHeight;\n\n if (boxWidth > 0 && boxHeight > 0 && coordinate) {\n translateX = this.getTranslate({\n key: 'x',\n tooltipDimension: boxWidth,\n viewBoxDimension: viewBox.width\n });\n translateY = this.getTranslate({\n key: 'y',\n tooltipDimension: boxHeight,\n viewBoxDimension: viewBox.height\n });\n } else {\n outerStyle.visibility = 'hidden';\n }\n }\n\n outerStyle = _objectSpread(_objectSpread({}, translateStyle({\n transform: this.props.useTranslate3d ? \"translate3d(\".concat(translateX, \"px, \").concat(translateY, \"px, 0)\") : \"translate(\".concat(translateX, \"px, \").concat(translateY, \"px)\")\n })), outerStyle);\n\n if (isAnimationActive && active) {\n outerStyle = _objectSpread(_objectSpread({}, translateStyle({\n transition: \"transform \".concat(animationDuration, \"ms \").concat(animationEasing)\n })), outerStyle);\n }\n\n var cls = classNames(CLS_PREFIX, (_classNames = {}, _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-right\"), isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX >= coordinate.x), _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-left\"), isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX < coordinate.x), _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-bottom\"), isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY >= coordinate.y), _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-top\"), isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY < coordinate.y), _classNames));\n return /*#__PURE__*/React.createElement(\"div\", {\n className: cls,\n style: outerStyle,\n ref: function ref(node) {\n _this2.wrapperNode = node;\n }\n }, renderContent(content, _objectSpread(_objectSpread({}, this.props), {}, {\n payload: finalPayload\n })));\n }\n }]);\n\n return Tooltip;\n}(PureComponent);\nTooltip.displayName = 'Tooltip';\nTooltip.defaultProps = {\n active: false,\n allowEscapeViewBox: {\n x: false,\n y: false\n },\n offset: 10,\n viewBox: {\n x1: 0,\n x2: 0,\n y1: 0,\n y2: 0\n },\n coordinate: {\n x: 0,\n y: 0\n },\n cursorStyle: {},\n separator: ' : ',\n wrapperStyle: {},\n contentStyle: {},\n itemStyle: {},\n labelStyle: {},\n cursor: true,\n trigger: 'hover',\n isAnimationActive: !Global.isSsr,\n animationEasing: 'ease',\n animationDuration: 400,\n filterNull: true,\n useTranslate3d: false\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Cross\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { isNumber } from '../util/DataUtils';\nimport { filterProps } from '../util/types';\nexport var Cross = /*#__PURE__*/function (_PureComponent) {\n _inherits(Cross, _PureComponent);\n\n var _super = _createSuper(Cross);\n\n function Cross() {\n _classCallCheck(this, Cross);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Cross, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n x = _this$props.x,\n y = _this$props.y,\n width = _this$props.width,\n height = _this$props.height,\n top = _this$props.top,\n left = _this$props.left,\n className = _this$props.className;\n\n if (!isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || !isNumber(top) || !isNumber(left)) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(this.props, true), {\n className: classNames('recharts-cross', className),\n d: Cross.getPath(x, y, width, height, top, left)\n }));\n }\n }], [{\n key: \"getPath\",\n value: function getPath(x, y, width, height, top, left) {\n return \"M\".concat(x, \",\").concat(top, \"v\").concat(height, \"M\").concat(left, \",\").concat(y, \"h\").concat(width);\n }\n }]);\n\n return Cross;\n}(PureComponent);\nCross.defaultProps = {\n x: 0,\n y: 0,\n top: 0,\n left: 0,\n width: 0,\n height: 0\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _get from \"lodash/get\";\nimport _isFunction from \"lodash/isFunction\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Cartesian Axis\n */\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { getStringSize } from '../util/DOMUtils';\nimport { Layer } from '../container/Layer';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { Global } from '../util/Global';\nimport { isNumber, mathSign } from '../util/DataUtils';\nimport { filterProps, adaptEventsOfChild } from '../util/types';\nexport var CartesianAxis = /*#__PURE__*/function (_Component) {\n _inherits(CartesianAxis, _Component);\n\n var _super = _createSuper(CartesianAxis);\n\n function CartesianAxis() {\n _classCallCheck(this, CartesianAxis);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(CartesianAxis, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(_ref) {\n var viewBox = _ref.viewBox,\n restProps = _objectWithoutProperties(_ref, [\"viewBox\"]);\n\n // props.viewBox is sometimes generated every time -\n // check that specially as object equality is likely to fail\n var _this$props = this.props,\n viewBoxOld = _this$props.viewBox,\n restPropsOld = _objectWithoutProperties(_this$props, [\"viewBox\"]);\n\n return !shallowEqual(viewBox, viewBoxOld) || !shallowEqual(restProps, restPropsOld);\n }\n /**\n * Calculate the coordinates of endpoints in ticks\n * @param {Object} data The data of a simple tick\n * @return {Object} (x1, y1): The coordinate of endpoint close to tick text\n * (x2, y2): The coordinate of endpoint close to axis\n */\n\n }, {\n key: \"getTickLineCoord\",\n value: function getTickLineCoord(data) {\n var _this$props2 = this.props,\n x = _this$props2.x,\n y = _this$props2.y,\n width = _this$props2.width,\n height = _this$props2.height,\n orientation = _this$props2.orientation,\n tickSize = _this$props2.tickSize,\n mirror = _this$props2.mirror,\n tickMargin = _this$props2.tickMargin;\n var x1, x2, y1, y2, tx, ty;\n var sign = mirror ? -1 : 1;\n var finalTickSize = data.tickSize || tickSize;\n var tickCoord = isNumber(data.tickCoord) ? data.tickCoord : data.coordinate;\n\n switch (orientation) {\n case 'top':\n x1 = x2 = data.coordinate;\n y2 = y + +!mirror * height;\n y1 = y2 - sign * finalTickSize;\n ty = y1 - sign * tickMargin;\n tx = tickCoord;\n break;\n\n case 'left':\n y1 = y2 = data.coordinate;\n x2 = x + +!mirror * width;\n x1 = x2 - sign * finalTickSize;\n tx = x1 - sign * tickMargin;\n ty = tickCoord;\n break;\n\n case 'right':\n y1 = y2 = data.coordinate;\n x2 = x + +mirror * width;\n x1 = x2 + sign * finalTickSize;\n tx = x1 + sign * tickMargin;\n ty = tickCoord;\n break;\n\n default:\n x1 = x2 = data.coordinate;\n y2 = y + +mirror * height;\n y1 = y2 + sign * finalTickSize;\n ty = y1 + sign * tickMargin;\n tx = tickCoord;\n break;\n }\n\n return {\n line: {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n },\n tick: {\n x: tx,\n y: ty\n }\n };\n }\n }, {\n key: \"getTickTextAnchor\",\n value: function getTickTextAnchor() {\n var _this$props3 = this.props,\n orientation = _this$props3.orientation,\n mirror = _this$props3.mirror;\n var textAnchor;\n\n switch (orientation) {\n case 'left':\n textAnchor = mirror ? 'start' : 'end';\n break;\n\n case 'right':\n textAnchor = mirror ? 'end' : 'start';\n break;\n\n default:\n textAnchor = 'middle';\n break;\n }\n\n return textAnchor;\n }\n }, {\n key: \"getTickVerticalAnchor\",\n value: function getTickVerticalAnchor() {\n var _this$props4 = this.props,\n orientation = _this$props4.orientation,\n mirror = _this$props4.mirror;\n var verticalAnchor = 'end';\n\n switch (orientation) {\n case 'left':\n case 'right':\n verticalAnchor = 'middle';\n break;\n\n case 'top':\n verticalAnchor = mirror ? 'start' : 'end';\n break;\n\n default:\n verticalAnchor = mirror ? 'end' : 'start';\n break;\n }\n\n return verticalAnchor;\n }\n }, {\n key: \"renderAxisLine\",\n value: function renderAxisLine() {\n var _this$props5 = this.props,\n x = _this$props5.x,\n y = _this$props5.y,\n width = _this$props5.width,\n height = _this$props5.height,\n orientation = _this$props5.orientation,\n mirror = _this$props5.mirror,\n axisLine = _this$props5.axisLine;\n\n var props = _objectSpread(_objectSpread(_objectSpread({}, filterProps(this.props)), filterProps(axisLine)), {}, {\n fill: 'none'\n });\n\n if (orientation === 'top' || orientation === 'bottom') {\n var needHeight = +(orientation === 'top' && !mirror || orientation === 'bottom' && mirror);\n props = _objectSpread(_objectSpread({}, props), {}, {\n x1: x,\n y1: y + needHeight * height,\n x2: x + width,\n y2: y + needHeight * height\n });\n } else {\n var needWidth = +(orientation === 'left' && !mirror || orientation === 'right' && mirror);\n props = _objectSpread(_objectSpread({}, props), {}, {\n x1: x + needWidth * width,\n y1: y,\n x2: x + needWidth * width,\n y2: y + height\n });\n }\n\n return /*#__PURE__*/React.createElement(\"line\", _extends({}, props, {\n className: classNames('recharts-cartesian-axis-line', _get(axisLine, 'className'))\n }));\n }\n }, {\n key: \"renderTicks\",\n value:\n /**\n * render the ticks\n * @param {Array} ticks The ticks to actually render (overrides what was passed in props)\n * @return {ReactComponent} renderedTicks\n */\n function renderTicks(ticks) {\n var _this = this;\n\n var _this$props6 = this.props,\n tickLine = _this$props6.tickLine,\n stroke = _this$props6.stroke,\n tick = _this$props6.tick,\n tickFormatter = _this$props6.tickFormatter,\n unit = _this$props6.unit;\n var finalTicks = CartesianAxis.getTicks(_objectSpread(_objectSpread({}, this.props), {}, {\n ticks: ticks\n }));\n var textAnchor = this.getTickTextAnchor();\n var verticalAnchor = this.getTickVerticalAnchor();\n var axisProps = filterProps(this.props);\n var customTickProps = filterProps(tick);\n\n var tickLineProps = _objectSpread(_objectSpread({}, axisProps), {}, {\n fill: 'none'\n }, filterProps(tickLine));\n\n var items = finalTicks.map(function (entry, i) {\n var _this$getTickLineCoor = _this.getTickLineCoord(entry),\n lineCoord = _this$getTickLineCoor.line,\n tickCoord = _this$getTickLineCoor.tick;\n\n var tickProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n textAnchor: textAnchor,\n verticalAnchor: verticalAnchor\n }, axisProps), {}, {\n stroke: 'none',\n fill: stroke\n }, customTickProps), tickCoord), {}, {\n index: i,\n payload: entry,\n visibleTicksCount: finalTicks.length,\n tickFormatter: tickFormatter\n });\n\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-cartesian-axis-tick\",\n key: \"tick-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n }, adaptEventsOfChild(_this.props, entry, i)), tickLine && /*#__PURE__*/React.createElement(\"line\", _extends({}, tickLineProps, lineCoord, {\n className: classNames('recharts-cartesian-axis-tick-line', _get(tickLine, 'className'))\n })), tick && CartesianAxis.renderTickItem(tick, tickProps, \"\".concat(_isFunction(tickFormatter) ? tickFormatter(entry.value, i) : entry.value).concat(unit || '')));\n });\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-axis-ticks\"\n }, items);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props7 = this.props,\n axisLine = _this$props7.axisLine,\n width = _this$props7.width,\n height = _this$props7.height,\n ticksGenerator = _this$props7.ticksGenerator,\n className = _this$props7.className,\n hide = _this$props7.hide;\n\n if (hide) {\n return null;\n }\n\n var _this$props8 = this.props,\n ticks = _this$props8.ticks,\n noTicksProps = _objectWithoutProperties(_this$props8, [\"ticks\"]);\n\n var finalTicks = ticks;\n\n if (_isFunction(ticksGenerator)) {\n finalTicks = ticks && ticks.length > 0 ? ticksGenerator(this.props) : ticksGenerator(noTicksProps);\n }\n\n if (width <= 0 || height <= 0 || !finalTicks || !finalTicks.length) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(Layer, {\n className: classNames('recharts-cartesian-axis', className)\n }, axisLine && this.renderAxisLine(), this.renderTicks(finalTicks), Label.renderCallByParent(this.props));\n }\n }], [{\n key: \"getTicks\",\n value: // todo Array\n function getTicks(props) {\n var tick = props.tick,\n ticks = props.ticks,\n viewBox = props.viewBox,\n minTickGap = props.minTickGap,\n orientation = props.orientation,\n interval = props.interval,\n tickFormatter = props.tickFormatter,\n unit = props.unit;\n\n if (!ticks || !ticks.length || !tick) {\n return [];\n }\n\n if (isNumber(interval) || Global.isSsr) {\n return CartesianAxis.getNumberIntervalTicks(ticks, typeof interval === 'number' && isNumber(interval) ? interval : 0);\n }\n\n if (interval === 'preserveStartEnd') {\n return CartesianAxis.getTicksStart({\n ticks: ticks,\n tickFormatter: tickFormatter,\n viewBox: viewBox,\n orientation: orientation,\n minTickGap: minTickGap,\n unit: unit\n }, true);\n }\n\n if (interval === 'preserveStart') {\n return CartesianAxis.getTicksStart({\n ticks: ticks,\n tickFormatter: tickFormatter,\n viewBox: viewBox,\n orientation: orientation,\n minTickGap: minTickGap,\n unit: unit\n });\n }\n\n return CartesianAxis.getTicksEnd({\n ticks: ticks,\n tickFormatter: tickFormatter,\n viewBox: viewBox,\n orientation: orientation,\n minTickGap: minTickGap,\n unit: unit\n });\n }\n }, {\n key: \"getNumberIntervalTicks\",\n value: function getNumberIntervalTicks(ticks, interval) {\n return ticks.filter(function (entry, i) {\n return i % (interval + 1) === 0;\n });\n }\n }, {\n key: \"getTicksStart\",\n value: function getTicksStart(_ref2, preserveEnd) {\n var ticks = _ref2.ticks,\n tickFormatter = _ref2.tickFormatter,\n viewBox = _ref2.viewBox,\n orientation = _ref2.orientation,\n minTickGap = _ref2.minTickGap,\n unit = _ref2.unit;\n var x = viewBox.x,\n y = viewBox.y,\n width = viewBox.width,\n height = viewBox.height;\n var sizeKey = orientation === 'top' || orientation === 'bottom' ? 'width' : 'height';\n var result = (ticks || []).slice(); // we need add the width of 'unit' only when sizeKey === 'width'\n\n var unitSize = unit && sizeKey === 'width' ? getStringSize(unit)[sizeKey] : 0;\n var len = result.length;\n var sign = len >= 2 ? mathSign(result[1].coordinate - result[0].coordinate) : 1;\n var start, end;\n\n if (sign === 1) {\n start = sizeKey === 'width' ? x : y;\n end = sizeKey === 'width' ? x + width : y + height;\n } else {\n start = sizeKey === 'width' ? x + width : y + height;\n end = sizeKey === 'width' ? x : y;\n }\n\n if (preserveEnd) {\n // Try to guarantee the tail to be displayed\n var tail = ticks[len - 1];\n var tailContent = _isFunction(tickFormatter) ? tickFormatter(tail.value, len - 1) : tail.value;\n var tailSize = getStringSize(tailContent)[sizeKey] + unitSize;\n var tailGap = sign * (tail.coordinate + sign * tailSize / 2 - end);\n result[len - 1] = tail = _objectSpread(_objectSpread({}, tail), {}, {\n tickCoord: tailGap > 0 ? tail.coordinate - tailGap * sign : tail.coordinate\n });\n var isTailShow = sign * (tail.tickCoord - sign * tailSize / 2 - start) >= 0 && sign * (tail.tickCoord + sign * tailSize / 2 - end) <= 0;\n\n if (isTailShow) {\n end = tail.tickCoord - sign * (tailSize / 2 + minTickGap);\n result[len - 1] = _objectSpread(_objectSpread({}, tail), {}, {\n isShow: true\n });\n }\n }\n\n var count = preserveEnd ? len - 1 : len;\n\n for (var i = 0; i < count; i++) {\n var entry = result[i];\n var content = _isFunction(tickFormatter) ? tickFormatter(entry.value, i) : entry.value;\n var size = getStringSize(content)[sizeKey] + unitSize;\n\n if (i === 0) {\n var gap = sign * (entry.coordinate - sign * size / 2 - start);\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: gap < 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: entry.coordinate\n });\n }\n\n var isShow = sign * (entry.tickCoord - sign * size / 2 - start) >= 0 && sign * (entry.tickCoord + sign * size / 2 - end) <= 0;\n\n if (isShow) {\n start = entry.tickCoord + sign * (size / 2 + minTickGap);\n result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n isShow: true\n });\n }\n }\n\n return result.filter(function (entry) {\n return entry.isShow;\n });\n }\n }, {\n key: \"getTicksEnd\",\n value: function getTicksEnd(_ref3) {\n var ticks = _ref3.ticks,\n tickFormatter = _ref3.tickFormatter,\n viewBox = _ref3.viewBox,\n orientation = _ref3.orientation,\n minTickGap = _ref3.minTickGap,\n unit = _ref3.unit;\n var x = viewBox.x,\n y = viewBox.y,\n width = viewBox.width,\n height = viewBox.height;\n var sizeKey = orientation === 'top' || orientation === 'bottom' ? 'width' : 'height'; // we need add the width of 'unit' only when sizeKey === 'width'\n\n var unitSize = unit && sizeKey === 'width' ? getStringSize(unit)[sizeKey] : 0;\n var result = (ticks || []).slice();\n var len = result.length;\n var sign = len >= 2 ? mathSign(result[1].coordinate - result[0].coordinate) : 1;\n var start, end;\n\n if (sign === 1) {\n start = sizeKey === 'width' ? x : y;\n end = sizeKey === 'width' ? x + width : y + height;\n } else {\n start = sizeKey === 'width' ? x + width : y + height;\n end = sizeKey === 'width' ? x : y;\n }\n\n for (var i = len - 1; i >= 0; i--) {\n var entry = result[i];\n var content = _isFunction(tickFormatter) ? tickFormatter(entry.value, len - i - 1) : entry.value;\n var size = getStringSize(content)[sizeKey] + unitSize;\n\n if (i === len - 1) {\n var gap = sign * (entry.coordinate + sign * size / 2 - end);\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: gap > 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: entry.coordinate\n });\n }\n\n var isShow = sign * (entry.tickCoord - sign * size / 2 - start) >= 0 && sign * (entry.tickCoord + sign * size / 2 - end) <= 0;\n\n if (isShow) {\n end = entry.tickCoord - sign * (size / 2 + minTickGap);\n result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n isShow: true\n });\n }\n }\n\n return result.filter(function (entry) {\n return entry.isShow;\n });\n }\n }, {\n key: \"renderTickItem\",\n value: function renderTickItem(option, props, value) {\n var tickItem;\n\n if ( /*#__PURE__*/React.isValidElement(option)) {\n tickItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n tickItem = option(props);\n } else {\n tickItem = /*#__PURE__*/React.createElement(Text, _extends({}, props, {\n className: \"recharts-cartesian-axis-tick-value\"\n }), value);\n }\n\n return tickItem;\n }\n }]);\n\n return CartesianAxis;\n}(Component);\nCartesianAxis.displayName = 'CartesianAxis';\nCartesianAxis.defaultProps = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n viewBox: {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n // The orientation of axis\n orientation: 'bottom',\n // The ticks\n ticks: [],\n stroke: '#666',\n tickLine: true,\n axisLine: true,\n tick: true,\n mirror: false,\n minTickGap: 5,\n // The width or height of tick\n tickSize: 6,\n tickMargin: 2,\n interval: 'preserveEnd'\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar PREFIX_LIST = ['Webkit', 'Moz', 'O', 'ms'];\nexport var generatePrefixStyle = function generatePrefixStyle(name, value) {\n if (!name) {\n return null;\n }\n\n var camelName = name.replace(/(\\w)/, function (v) {\n return v.toUpperCase();\n });\n var result = PREFIX_LIST.reduce(function (res, entry) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, entry + camelName, value));\n }, {});\n result[name] = value;\n return result;\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isFunction from \"lodash/isFunction\";\nimport _range from \"lodash/range\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Brush\n */\nimport React, { PureComponent, Children } from 'react';\nimport classNames from 'classnames';\nimport { scalePoint } from 'd3-scale';\nimport { Layer } from '../container/Layer';\nimport { Text } from '../component/Text';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { isNumber } from '../util/DataUtils';\nimport { generatePrefixStyle } from '../util/CssPrefixUtils';\nimport { filterProps } from '../util/types';\n\nvar createScale = function createScale(_ref) {\n var data = _ref.data,\n startIndex = _ref.startIndex,\n endIndex = _ref.endIndex,\n x = _ref.x,\n width = _ref.width,\n travellerWidth = _ref.travellerWidth;\n\n if (!data || !data.length) {\n return {};\n }\n\n var len = data.length;\n var scale = scalePoint().domain(_range(0, len)).range([x, x + width - travellerWidth]);\n var scaleValues = scale.domain().map(function (entry) {\n return scale(entry);\n });\n return {\n isTextActive: false,\n isSlideMoving: false,\n isTravellerMoving: false,\n startX: scale(startIndex),\n endX: scale(endIndex),\n scale: scale,\n scaleValues: scaleValues\n };\n};\n\nvar isTouch = function isTouch(e) {\n return e.changedTouches && !!e.changedTouches.length;\n};\n\nexport var Brush = /*#__PURE__*/function (_PureComponent) {\n _inherits(Brush, _PureComponent);\n\n var _super = _createSuper(Brush);\n\n function Brush(props) {\n var _this;\n\n _classCallCheck(this, Brush);\n\n _this = _super.call(this, props);\n _this.leaveTimer = void 0;\n _this.travellerDragStartHandlers = void 0;\n\n _this.handleDrag = function (e) {\n if (_this.leaveTimer) {\n clearTimeout(_this.leaveTimer);\n _this.leaveTimer = null;\n }\n\n if (_this.state.isTravellerMoving) {\n _this.handleTravellerMove(e);\n } else if (_this.state.isSlideMoving) {\n _this.handleSlideDrag(e);\n }\n };\n\n _this.handleTouchMove = function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleDrag(e.changedTouches[0]);\n }\n };\n\n _this.handleDragEnd = function () {\n _this.setState({\n isTravellerMoving: false,\n isSlideMoving: false\n });\n\n _this.detachDragEndListener();\n };\n\n _this.handleLeaveWrapper = function () {\n if (_this.state.isTravellerMoving || _this.state.isSlideMoving) {\n _this.leaveTimer = window.setTimeout(_this.handleDragEnd, _this.props.leaveTimeOut);\n }\n };\n\n _this.handleEnterSlideOrTraveller = function () {\n _this.setState({\n isTextActive: true\n });\n };\n\n _this.handleLeaveSlideOrTraveller = function () {\n _this.setState({\n isTextActive: false\n });\n };\n\n _this.handleSlideDragStart = function (e) {\n var event = isTouch(e) ? e.changedTouches[0] : e;\n\n _this.setState({\n isTravellerMoving: false,\n isSlideMoving: true,\n slideMoveStartX: event.pageX\n });\n\n _this.attachDragEndListener();\n };\n\n _this.travellerDragStartHandlers = {\n startX: _this.handleTravellerDragStart.bind(_assertThisInitialized(_this), 'startX'),\n endX: _this.handleTravellerDragStart.bind(_assertThisInitialized(_this), 'endX')\n };\n _this.state = {};\n return _this;\n }\n\n _createClass(Brush, [{\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.leaveTimer) {\n clearTimeout(this.leaveTimer);\n this.leaveTimer = null;\n }\n\n this.detachDragEndListener();\n }\n }, {\n key: \"getIndex\",\n value: function getIndex(_ref2) {\n var startX = _ref2.startX,\n endX = _ref2.endX;\n var scaleValues = this.state.scaleValues;\n var _this$props = this.props,\n gap = _this$props.gap,\n data = _this$props.data;\n var lastIndex = data.length - 1;\n var min = Math.min(startX, endX);\n var max = Math.max(startX, endX);\n var minIndex = Brush.getIndexInRange(scaleValues, min);\n var maxIndex = Brush.getIndexInRange(scaleValues, max);\n return {\n startIndex: minIndex - minIndex % gap,\n endIndex: maxIndex === lastIndex ? lastIndex : maxIndex - maxIndex % gap\n };\n }\n }, {\n key: \"getTextOfTick\",\n value: function getTextOfTick(index) {\n var _this$props2 = this.props,\n data = _this$props2.data,\n tickFormatter = _this$props2.tickFormatter,\n dataKey = _this$props2.dataKey;\n var text = getValueByDataKey(data[index], dataKey, index);\n return _isFunction(tickFormatter) ? tickFormatter(text, index) : text;\n }\n }, {\n key: \"attachDragEndListener\",\n value: function attachDragEndListener() {\n window.addEventListener('mouseup', this.handleDragEnd, true);\n window.addEventListener('touchend', this.handleDragEnd, true);\n }\n }, {\n key: \"detachDragEndListener\",\n value: function detachDragEndListener() {\n window.removeEventListener('mouseup', this.handleDragEnd, true);\n window.removeEventListener('touchend', this.handleDragEnd, true);\n }\n }, {\n key: \"handleSlideDrag\",\n value: function handleSlideDrag(e) {\n var _this$state = this.state,\n slideMoveStartX = _this$state.slideMoveStartX,\n startX = _this$state.startX,\n endX = _this$state.endX;\n var _this$props3 = this.props,\n x = _this$props3.x,\n width = _this$props3.width,\n travellerWidth = _this$props3.travellerWidth,\n startIndex = _this$props3.startIndex,\n endIndex = _this$props3.endIndex,\n onChange = _this$props3.onChange;\n var delta = e.pageX - slideMoveStartX;\n\n if (delta > 0) {\n delta = Math.min(delta, x + width - travellerWidth - endX, x + width - travellerWidth - startX);\n } else if (delta < 0) {\n delta = Math.max(delta, x - startX, x - endX);\n }\n\n var newIndex = this.getIndex({\n startX: startX + delta,\n endX: endX + delta\n });\n\n if ((newIndex.startIndex !== startIndex || newIndex.endIndex !== endIndex) && onChange) {\n onChange(newIndex);\n }\n\n this.setState({\n startX: startX + delta,\n endX: endX + delta,\n slideMoveStartX: e.pageX\n });\n }\n }, {\n key: \"handleTravellerDragStart\",\n value: function handleTravellerDragStart(id, e) {\n var event = isTouch(e) ? e.changedTouches[0] : e;\n this.setState({\n isSlideMoving: false,\n isTravellerMoving: true,\n movingTravellerId: id,\n brushMoveStartX: event.pageX\n });\n this.attachDragEndListener();\n }\n }, {\n key: \"handleTravellerMove\",\n value: function handleTravellerMove(e) {\n var _this$setState;\n\n var _this$state2 = this.state,\n brushMoveStartX = _this$state2.brushMoveStartX,\n movingTravellerId = _this$state2.movingTravellerId,\n endX = _this$state2.endX,\n startX = _this$state2.startX;\n var prevValue = this.state[movingTravellerId];\n var _this$props4 = this.props,\n x = _this$props4.x,\n width = _this$props4.width,\n travellerWidth = _this$props4.travellerWidth,\n onChange = _this$props4.onChange,\n gap = _this$props4.gap,\n data = _this$props4.data;\n var params = {\n startX: this.state.startX,\n endX: this.state.endX\n };\n var delta = e.pageX - brushMoveStartX;\n\n if (delta > 0) {\n delta = Math.min(delta, x + width - travellerWidth - prevValue);\n } else if (delta < 0) {\n delta = Math.max(delta, x - prevValue);\n }\n\n params[movingTravellerId] = prevValue + delta;\n var newIndex = this.getIndex(params);\n var startIndex = newIndex.startIndex,\n endIndex = newIndex.endIndex;\n\n var isFullGap = function isFullGap() {\n var lastIndex = data.length - 1;\n\n if (movingTravellerId === 'startX' && (endX > startX ? startIndex % gap === 0 : endIndex % gap === 0) || endX < startX && endIndex === lastIndex || movingTravellerId === 'endX' && (endX > startX ? endIndex % gap === 0 : startIndex % gap === 0) || endX > startX && endIndex === lastIndex) {\n return true;\n }\n\n return false;\n };\n\n this.setState((_this$setState = {}, _defineProperty(_this$setState, movingTravellerId, prevValue + delta), _defineProperty(_this$setState, \"brushMoveStartX\", e.pageX), _this$setState), function () {\n if (onChange) {\n if (isFullGap()) {\n onChange(newIndex);\n }\n }\n });\n }\n }, {\n key: \"renderBackground\",\n value: function renderBackground() {\n var _this$props5 = this.props,\n x = _this$props5.x,\n y = _this$props5.y,\n width = _this$props5.width,\n height = _this$props5.height,\n fill = _this$props5.fill,\n stroke = _this$props5.stroke;\n return /*#__PURE__*/React.createElement(\"rect\", {\n stroke: stroke,\n fill: fill,\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n }, {\n key: \"renderPanorama\",\n value: function renderPanorama() {\n var _this$props6 = this.props,\n x = _this$props6.x,\n y = _this$props6.y,\n width = _this$props6.width,\n height = _this$props6.height,\n data = _this$props6.data,\n children = _this$props6.children,\n padding = _this$props6.padding;\n var chartElement = Children.only(children);\n\n if (!chartElement) {\n return null;\n }\n\n return /*#__PURE__*/React.cloneElement(chartElement, {\n x: x,\n y: y,\n width: width,\n height: height,\n margin: padding,\n compact: true,\n data: data\n });\n }\n }, {\n key: \"renderTravellerLayer\",\n value: function renderTravellerLayer(travellerX, id) {\n var _this$props7 = this.props,\n y = _this$props7.y,\n travellerWidth = _this$props7.travellerWidth,\n height = _this$props7.height,\n traveller = _this$props7.traveller;\n var x = Math.max(travellerX, this.props.x);\n\n var travellerProps = _objectSpread(_objectSpread({}, filterProps(this.props)), {}, {\n x: x,\n y: y,\n width: travellerWidth,\n height: height\n });\n\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-brush-traveller\",\n onMouseEnter: this.handleEnterSlideOrTraveller,\n onMouseLeave: this.handleLeaveSlideOrTraveller,\n onMouseDown: this.travellerDragStartHandlers[id],\n onTouchStart: this.travellerDragStartHandlers[id],\n style: {\n cursor: 'col-resize'\n }\n }, Brush.renderTraveller(traveller, travellerProps));\n }\n }, {\n key: \"renderSlide\",\n value: function renderSlide(startX, endX) {\n var _this$props8 = this.props,\n y = _this$props8.y,\n height = _this$props8.height,\n stroke = _this$props8.stroke,\n travellerWidth = _this$props8.travellerWidth;\n var x = Math.min(startX, endX) + travellerWidth;\n var width = Math.max(Math.abs(endX - startX) - travellerWidth, 0);\n return /*#__PURE__*/React.createElement(\"rect\", {\n className: \"recharts-brush-slide\",\n onMouseEnter: this.handleEnterSlideOrTraveller,\n onMouseLeave: this.handleLeaveSlideOrTraveller,\n onMouseDown: this.handleSlideDragStart,\n onTouchStart: this.handleSlideDragStart,\n style: {\n cursor: 'move'\n },\n stroke: \"none\",\n fill: stroke,\n fillOpacity: 0.2,\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n }, {\n key: \"renderText\",\n value: function renderText() {\n var _this$props9 = this.props,\n startIndex = _this$props9.startIndex,\n endIndex = _this$props9.endIndex,\n y = _this$props9.y,\n height = _this$props9.height,\n travellerWidth = _this$props9.travellerWidth,\n stroke = _this$props9.stroke;\n var _this$state3 = this.state,\n startX = _this$state3.startX,\n endX = _this$state3.endX;\n var offset = 5;\n var attrs = {\n pointerEvents: 'none',\n fill: stroke\n };\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-brush-texts\"\n }, /*#__PURE__*/React.createElement(Text, _extends({\n textAnchor: \"end\",\n verticalAnchor: \"middle\",\n x: Math.min(startX, endX) - offset,\n y: y + height / 2\n }, attrs), this.getTextOfTick(startIndex)), /*#__PURE__*/React.createElement(Text, _extends({\n textAnchor: \"start\",\n verticalAnchor: \"middle\",\n x: Math.max(startX, endX) + travellerWidth + offset,\n y: y + height / 2\n }, attrs), this.getTextOfTick(endIndex)));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props10 = this.props,\n data = _this$props10.data,\n className = _this$props10.className,\n children = _this$props10.children,\n x = _this$props10.x,\n y = _this$props10.y,\n width = _this$props10.width,\n height = _this$props10.height,\n alwaysShowText = _this$props10.alwaysShowText;\n var _this$state4 = this.state,\n startX = _this$state4.startX,\n endX = _this$state4.endX,\n isTextActive = _this$state4.isTextActive,\n isSlideMoving = _this$state4.isSlideMoving,\n isTravellerMoving = _this$state4.isTravellerMoving;\n\n if (!data || !data.length || !isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || width <= 0 || height <= 0) {\n return null;\n }\n\n var layerClass = classNames('recharts-brush', className);\n var isPanoramic = React.Children.count(children) === 1;\n var style = generatePrefixStyle('userSelect', 'none');\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass,\n onMouseMove: this.handleDrag,\n onMouseLeave: this.handleLeaveWrapper,\n onTouchMove: this.handleTouchMove,\n style: style\n }, this.renderBackground(), isPanoramic && this.renderPanorama(), this.renderSlide(startX, endX), this.renderTravellerLayer(startX, 'startX'), this.renderTravellerLayer(endX, 'endX'), (isTextActive || isSlideMoving || isTravellerMoving || alwaysShowText) && this.renderText());\n }\n }], [{\n key: \"renderDefaultTraveller\",\n value: function renderDefaultTraveller(props) {\n var x = props.x,\n y = props.y,\n width = props.width,\n height = props.height,\n stroke = props.stroke;\n var lineY = Math.floor(y + height / 2) - 1;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"rect\", {\n x: x,\n y: y,\n width: width,\n height: height,\n fill: stroke,\n stroke: \"none\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: x + 1,\n y1: lineY,\n x2: x + width - 1,\n y2: lineY,\n fill: \"none\",\n stroke: \"#fff\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: x + 1,\n y1: lineY + 2,\n x2: x + width - 1,\n y2: lineY + 2,\n fill: \"none\",\n stroke: \"#fff\"\n }));\n }\n }, {\n key: \"renderTraveller\",\n value: function renderTraveller(option, props) {\n var rectangle;\n\n if ( /*#__PURE__*/React.isValidElement(option)) {\n rectangle = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n rectangle = option(props);\n } else {\n rectangle = Brush.renderDefaultTraveller(props);\n }\n\n return rectangle;\n }\n }, {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var data = nextProps.data,\n width = nextProps.width,\n x = nextProps.x,\n travellerWidth = nextProps.travellerWidth,\n updateId = nextProps.updateId,\n startIndex = nextProps.startIndex,\n endIndex = nextProps.endIndex;\n\n if (data !== prevState.prevData || updateId !== prevState.prevUpdateId) {\n return _objectSpread({\n prevData: data,\n prevTravellerWidth: travellerWidth,\n prevUpdateId: updateId,\n prevX: x,\n prevWidth: width\n }, data && data.length ? createScale({\n data: data,\n width: width,\n x: x,\n travellerWidth: travellerWidth,\n startIndex: startIndex,\n endIndex: endIndex\n }) : {\n scale: null,\n scaleValues: null\n });\n }\n\n if (prevState.scale && (width !== prevState.prevWidth || x !== prevState.prevX || travellerWidth !== prevState.prevTravellerWidth)) {\n prevState.scale.range([x, x + width - travellerWidth]);\n var scaleValues = prevState.scale.domain().map(function (entry) {\n return prevState.scale(entry);\n });\n return {\n prevData: data,\n prevTravellerWidth: travellerWidth,\n prevUpdateId: updateId,\n prevX: x,\n prevWidth: width,\n startX: prevState.scale(nextProps.startIndex),\n endX: prevState.scale(nextProps.endIndex),\n scaleValues: scaleValues\n };\n }\n\n return null;\n }\n }, {\n key: \"getIndexInRange\",\n value: function getIndexInRange(range, x) {\n var len = range.length;\n var start = 0;\n var end = len - 1;\n\n while (end - start > 1) {\n var middle = Math.floor((start + end) / 2);\n\n if (range[middle] > x) {\n end = middle;\n } else {\n start = middle;\n }\n }\n\n return x >= range[end] ? end : start;\n }\n }]);\n\n return Brush;\n}(PureComponent);\nBrush.displayName = 'Brush';\nBrush.defaultProps = {\n height: 40,\n travellerWidth: 5,\n gap: 1,\n fill: '#fff',\n stroke: '#666',\n padding: {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n },\n leaveTimeOut: 1000,\n alwaysShowText: false\n};","export var ifOverflowMatches = function ifOverflowMatches(props, value) {\n var alwaysShow = props.alwaysShow;\n var ifOverflow = props.ifOverflow;\n\n if (alwaysShow) {\n ifOverflow = 'extendDomain';\n }\n\n return ifOverflow === value;\n};","import _isFunction from \"lodash/isFunction\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * @fileOverview Reference Dot\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { Layer } from '../container/Layer';\nimport { Dot } from '../shape/Dot';\nimport { Label } from '../component/Label';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { createLabeledScales } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { filterProps } from '../util/types';\n\nvar getCoordinate = function getCoordinate(props) {\n var x = props.x,\n y = props.y,\n xAxis = props.xAxis,\n yAxis = props.yAxis;\n var scales = createLabeledScales({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var result = scales.apply({\n x: x,\n y: y\n }, {\n bandAware: true\n });\n\n if (ifOverflowMatches(props, 'discard') && !scales.isInRange(result)) {\n return null;\n }\n\n return result;\n};\n\nexport function ReferenceDot(props) {\n var x = props.x,\n y = props.y,\n r = props.r,\n alwaysShow = props.alwaysShow,\n clipPathId = props.clipPathId;\n var isX = isNumOrStr(x);\n var isY = isNumOrStr(y);\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n\n if (!isX || !isY) {\n return null;\n }\n\n var coordinate = getCoordinate(props);\n\n if (!coordinate) {\n return null;\n }\n\n var cx = coordinate.x,\n cy = coordinate.y;\n var shape = props.shape,\n className = props.className;\n var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n\n var dotProps = _objectSpread(_objectSpread({\n clipPath: clipPath\n }, filterProps(props, true)), {}, {\n cx: cx,\n cy: cy\n });\n\n return /*#__PURE__*/React.createElement(Layer, {\n className: classNames('recharts-reference-dot', className)\n }, ReferenceDot.renderDot(shape, dotProps), Label.renderCallByParent(props, {\n x: cx - r,\n y: cy - r,\n width: 2 * r,\n height: 2 * r\n }));\n}\nReferenceDot.displayName = 'ReferenceDot';\nReferenceDot.defaultProps = {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n r: 10,\n fill: '#fff',\n stroke: '#ccc',\n fillOpacity: 1,\n strokeWidth: 1\n};\n\nReferenceDot.renderDot = function (option, props) {\n var dot;\n\n if ( /*#__PURE__*/React.isValidElement(option)) {\n dot = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n dot = option(props);\n } else {\n dot = /*#__PURE__*/React.createElement(Dot, _extends({}, props, {\n cx: props.cx,\n cy: props.cy,\n className: \"recharts-reference-dot-dot\"\n }));\n }\n\n return dot;\n};","import _some from \"lodash/some\";\nimport _isFunction from \"lodash/isFunction\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n/**\n * @fileOverview Reference Line\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { Layer } from '../container/Layer';\nimport { Label } from '../component/Label';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { createLabeledScales, rectWithCoords } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { filterProps } from '../util/types';\n\nvar renderLine = function renderLine(option, props) {\n var line;\n\n if ( /*#__PURE__*/React.isValidElement(option)) {\n line = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n line = option(props);\n } else {\n line = /*#__PURE__*/React.createElement(\"line\", _extends({}, props, {\n className: \"recharts-reference-line-line\"\n }));\n }\n\n return line;\n}; // TODO: ScaleHelper\n\n\nvar getEndPoints = function getEndPoints(scales, isFixedX, isFixedY, isSegment, props) {\n var _props$viewBox = props.viewBox,\n x = _props$viewBox.x,\n y = _props$viewBox.y,\n width = _props$viewBox.width,\n height = _props$viewBox.height,\n position = props.position;\n\n if (isFixedY) {\n var yCoord = props.y,\n orientation = props.yAxis.orientation;\n var coord = scales.y.apply(yCoord, {\n position: position\n });\n\n if (ifOverflowMatches(props, 'discard') && !scales.y.isInRange(coord)) {\n return null;\n }\n\n var points = [{\n x: x + width,\n y: coord\n }, {\n x: x,\n y: coord\n }];\n return orientation === 'left' ? points.reverse() : points;\n }\n\n if (isFixedX) {\n var xCoord = props.x,\n _orientation = props.xAxis.orientation;\n\n var _coord = scales.x.apply(xCoord, {\n position: position\n });\n\n if (ifOverflowMatches(props, 'discard') && !scales.x.isInRange(_coord)) {\n return null;\n }\n\n var _points = [{\n x: _coord,\n y: y + height\n }, {\n x: _coord,\n y: y\n }];\n return _orientation === 'top' ? _points.reverse() : _points;\n }\n\n if (isSegment) {\n var segment = props.segment;\n\n var _points2 = segment.map(function (p) {\n return scales.apply(p, {\n position: position\n });\n });\n\n if (ifOverflowMatches(props, 'discard') && _some(_points2, function (p) {\n return !scales.isInRange(p);\n })) {\n return null;\n }\n\n return _points2;\n }\n\n return null;\n};\n\nexport function ReferenceLine(props) {\n var fixedX = props.x,\n fixedY = props.y,\n segment = props.segment,\n xAxis = props.xAxis,\n yAxis = props.yAxis,\n shape = props.shape,\n className = props.className,\n alwaysShow = props.alwaysShow,\n clipPathId = props.clipPathId;\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n var scales = createLabeledScales({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var isX = isNumOrStr(fixedX);\n var isY = isNumOrStr(fixedY);\n var isSegment = segment && segment.length === 2;\n var endPoints = getEndPoints(scales, isX, isY, isSegment, props);\n\n if (!endPoints) {\n return null;\n }\n\n var _endPoints = _slicedToArray(endPoints, 2),\n _endPoints$ = _endPoints[0],\n x1 = _endPoints$.x,\n y1 = _endPoints$.y,\n _endPoints$2 = _endPoints[1],\n x2 = _endPoints$2.x,\n y2 = _endPoints$2.y;\n\n var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n\n var lineProps = _objectSpread(_objectSpread({\n clipPath: clipPath\n }, filterProps(props, true)), {}, {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n });\n\n return /*#__PURE__*/React.createElement(Layer, {\n className: classNames('recharts-reference-line', className)\n }, renderLine(shape, lineProps), Label.renderCallByParent(props, rectWithCoords({\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n })));\n}\nReferenceLine.displayName = 'ReferenceLine';\nReferenceLine.defaultProps = {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n fill: 'none',\n stroke: '#ccc',\n fillOpacity: 1,\n strokeWidth: 1,\n position: 'middle'\n};","import _isFunction from \"lodash/isFunction\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * @fileOverview Reference Line\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { Layer } from '../container/Layer';\nimport { Label } from '../component/Label';\nimport { createLabeledScales, rectWithPoints } from '../util/CartesianUtils';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nimport { Rectangle } from '../shape/Rectangle';\nimport { filterProps } from '../util/types';\n\nvar getRect = function getRect(hasX1, hasX2, hasY1, hasY2, props) {\n var xValue1 = props.x1,\n xValue2 = props.x2,\n yValue1 = props.y1,\n yValue2 = props.y2,\n xAxis = props.xAxis,\n yAxis = props.yAxis;\n var scales = createLabeledScales({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var p1 = {\n x: hasX1 ? scales.x.apply(xValue1, {\n position: 'start'\n }) : scales.x.rangeMin,\n y: hasY1 ? scales.y.apply(yValue1, {\n position: 'start'\n }) : scales.y.rangeMin\n };\n var p2 = {\n x: hasX2 ? scales.x.apply(xValue2, {\n position: 'end'\n }) : scales.x.rangeMax,\n y: hasY2 ? scales.y.apply(yValue2, {\n position: 'end'\n }) : scales.y.rangeMax\n };\n\n if (ifOverflowMatches(props, 'discard') && (!scales.isInRange(p1) || !scales.isInRange(p2))) {\n return null;\n }\n\n return rectWithPoints(p1, p2);\n};\n\nexport function ReferenceArea(props) {\n var x1 = props.x1,\n x2 = props.x2,\n y1 = props.y1,\n y2 = props.y2,\n className = props.className,\n alwaysShow = props.alwaysShow,\n clipPathId = props.clipPathId;\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n var hasX1 = isNumOrStr(x1);\n var hasX2 = isNumOrStr(x2);\n var hasY1 = isNumOrStr(y1);\n var hasY2 = isNumOrStr(y2);\n var shape = props.shape;\n\n if (!hasX1 && !hasX2 && !hasY1 && !hasY2 && !shape) {\n return null;\n }\n\n var rect = getRect(hasX1, hasX2, hasY1, hasY2, props);\n\n if (!rect && !shape) {\n return null;\n }\n\n var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n return /*#__PURE__*/React.createElement(Layer, {\n className: classNames('recharts-reference-area', className)\n }, ReferenceArea.renderRect(shape, _objectSpread(_objectSpread({\n clipPath: clipPath\n }, filterProps(props, true)), rect)), Label.renderCallByParent(props, rect));\n}\nReferenceArea.displayName = 'ReferenceArea';\nReferenceArea.defaultProps = {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n r: 10,\n fill: '#ccc',\n fillOpacity: 0.5,\n stroke: 'none',\n strokeWidth: 1\n};\n\nReferenceArea.renderRect = function (option, props) {\n var rect;\n\n if ( /*#__PURE__*/React.isValidElement(option)) {\n rect = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n rect = option(props);\n } else {\n rect = /*#__PURE__*/React.createElement(Rectangle, _extends({}, props, {\n className: \"recharts-reference-area-rect\"\n }));\n }\n\n return rect;\n};","import { ReferenceDot } from '../cartesian/ReferenceDot';\nimport { ReferenceLine } from '../cartesian/ReferenceLine';\nimport { ReferenceArea } from '../cartesian/ReferenceArea';\nimport { ifOverflowMatches } from './IfOverflowMatches';\nimport { findAllByType } from './ReactUtils';\nimport { isNumber } from './DataUtils';\nexport var detectReferenceElementsDomain = function detectReferenceElementsDomain(children, domain, axisId, axisType, specifiedTicks) {\n var lines = findAllByType(children, ReferenceLine.displayName);\n var dots = findAllByType(children, ReferenceDot.displayName);\n var elements = lines.concat(dots);\n var areas = findAllByType(children, ReferenceArea.displayName);\n var idKey = \"\".concat(axisType, \"Id\");\n var valueKey = axisType[0];\n var finalDomain = domain;\n\n if (elements.length) {\n finalDomain = elements.reduce(function (result, el) {\n if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[valueKey])) {\n var value = el.props[valueKey];\n return [Math.min(result[0], value), Math.max(result[1], value)];\n }\n\n return result;\n }, finalDomain);\n }\n\n if (areas.length) {\n var key1 = \"\".concat(valueKey, \"1\");\n var key2 = \"\".concat(valueKey, \"2\");\n finalDomain = areas.reduce(function (result, el) {\n if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[key1]) && isNumber(el.props[key2])) {\n var value1 = el.props[key1];\n var value2 = el.props[key2];\n return [Math.min(result[0], value1, value2), Math.max(result[1], value1, value2)];\n }\n\n return result;\n }, finalDomain);\n }\n\n if (specifiedTicks && specifiedTicks.length) {\n finalDomain = specifiedTicks.reduce(function (result, tick) {\n if (isNumber(tick)) {\n return [Math.min(result[0], tick), Math.max(result[1], tick)];\n }\n\n return result;\n }, finalDomain);\n }\n\n return finalDomain;\n};","import EventEmitter from 'eventemitter3';\nvar eventCenter = new EventEmitter();\n\nif (eventCenter.setMaxListeners) {\n eventCenter.setMaxListeners(10);\n}\n\nexport { eventCenter };\nexport var SYNC_EVENT = 'recharts.syncMouseEvents'; // eslint-disable-next-line no-redeclare","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _every from \"lodash/every\";\nimport _find from \"lodash/find\";\nimport _isFunction from \"lodash/isFunction\";\nimport _throttle from \"lodash/throttle\";\nimport _sortBy from \"lodash/sortBy\";\nimport _get from \"lodash/get\";\nimport _range from \"lodash/range\";\nimport _isNil from \"lodash/isNil\";\nimport _isBoolean from \"lodash/isBoolean\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React, { Component, cloneElement, isValidElement, createElement } from 'react';\nimport classNames from 'classnames';\nimport { Surface } from '../container/Surface';\nimport { Layer } from '../container/Layer';\nimport { Tooltip } from '../component/Tooltip';\nimport { Legend } from '../component/Legend';\nimport { Curve } from '../shape/Curve';\nimport { Cross } from '../shape/Cross';\nimport { Sector } from '../shape/Sector';\nimport { Dot } from '../shape/Dot';\nimport { isInRectangle, Rectangle } from '../shape/Rectangle';\nimport { findAllByType, findChildByType, getDisplayName, parseChildIndex, validateWidthHeight, isChildrenEqual, renderByOrder, getReactEventByType } from '../util/ReactUtils';\nimport { CartesianAxis } from '../cartesian/CartesianAxis';\nimport { Brush } from '../cartesian/Brush';\nimport { getOffset, calculateChartCoordinate } from '../util/DOMUtils';\nimport { getAnyElementOfObject, hasDuplicate, uniqueId, isNumber, findEntryInArray } from '../util/DataUtils';\nimport { calculateActiveTickIndex, getMainColorOfGraphicItem, getBarSizeList, getBarPosition, appendOffsetOfLegend, getLegendProps, combineEventHandlers, getTicksOfAxis, getCoordinatesOfGrid, getStackedDataOfItem, parseErrorBarsOfAxis, getBandSizeOfAxis, getStackGroupsByAxisId, isCategoricalAxis, getDomainOfItemsWithSameAxis, getDomainOfStackGroups, getDomainOfDataByKey, parseSpecifiedDomain, parseDomainOfCategoryAxis, getTooltipItem } from '../util/ChartUtils';\nimport { detectReferenceElementsDomain } from '../util/DetectReferenceElementsDomain';\nimport { inRangeOfSector, polarToCartesian } from '../util/PolarUtils';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { eventCenter, SYNC_EVENT } from '../util/Events';\nimport { filterProps, adaptEventHandlers } from '../util/types';\nvar ORIENT_MAP = {\n xAxis: ['bottom', 'top'],\n yAxis: ['left', 'right']\n};\nvar originCoordinate = {\n x: 0,\n y: 0\n}; // use legacy isFinite only if there is a problem (aka IE)\n// eslint-disable-next-line no-restricted-globals\n\nvar isFinit = Number.isFinite ? Number.isFinite : isFinite;\nvar defer = // eslint-disable-next-line no-nested-ternary\ntypeof requestAnimationFrame === 'function' ? requestAnimationFrame : typeof setImmediate === 'function' ? setImmediate : setTimeout;\nvar deferClear = // eslint-disable-next-line no-nested-ternary\ntypeof cancelAnimationFrame === 'function' ? cancelAnimationFrame : typeof clearImmediate === 'function' ? clearImmediate : clearTimeout;\n\nvar calculateTooltipPos = function calculateTooltipPos(rangeObj, layout) {\n if (layout === 'horizontal') {\n return rangeObj.x;\n }\n\n if (layout === 'vertical') {\n return rangeObj.y;\n }\n\n if (layout === 'centric') {\n return rangeObj.angle;\n }\n\n return rangeObj.radius;\n};\n\nvar getActiveCoordinate = function getActiveCoordinate(layout, tooltipTicks, activeIndex, rangeObj) {\n var entry = tooltipTicks.find(function (tick) {\n return tick && tick.index === activeIndex;\n });\n\n if (entry) {\n if (layout === 'horizontal') {\n return {\n x: entry.coordinate,\n y: rangeObj.y\n };\n }\n\n if (layout === 'vertical') {\n return {\n x: rangeObj.x,\n y: entry.coordinate\n };\n }\n\n if (layout === 'centric') {\n var _angle = entry.coordinate;\n var _radius = rangeObj.radius;\n return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), polarToCartesian(rangeObj.cx, rangeObj.cy, _radius, _angle)), {}, {\n angle: _angle,\n radius: _radius\n });\n }\n\n var radius = entry.coordinate;\n var angle = rangeObj.angle;\n return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), polarToCartesian(rangeObj.cx, rangeObj.cy, radius, angle)), {}, {\n angle: angle,\n radius: radius\n });\n }\n\n return originCoordinate;\n};\n\nvar getDisplayedData = function getDisplayedData(data, _ref, item) {\n var graphicalItems = _ref.graphicalItems,\n dataStartIndex = _ref.dataStartIndex,\n dataEndIndex = _ref.dataEndIndex;\n var itemsData = (graphicalItems || []).reduce(function (result, child) {\n var itemData = child.props.data;\n\n if (itemData && itemData.length) {\n return [].concat(_toConsumableArray(result), _toConsumableArray(itemData));\n }\n\n return result;\n }, []);\n\n if (itemsData && itemsData.length > 0) {\n return itemsData;\n }\n\n if (item && item.props && item.props.data && item.props.data.length > 0) {\n return item.props.data;\n }\n\n if (data && data.length && isNumber(dataStartIndex) && isNumber(dataEndIndex)) {\n return data.slice(dataStartIndex, dataEndIndex + 1);\n }\n\n return [];\n};\n/**\n * Get the content to be displayed in the tooltip\n * @param {Object} state Current state\n * @param {Array} chartData The data defined in chart\n * @param {Number} activeIndex Active index of data\n * @param {String} activeLabel Active label of data\n * @return {Array} The content of tooltip\n */\n\n\nvar getTooltipContent = function getTooltipContent(state, chartData, activeIndex, activeLabel) {\n var graphicalItems = state.graphicalItems,\n tooltipAxis = state.tooltipAxis;\n var displayedData = getDisplayedData(chartData, state);\n\n if (activeIndex < 0 || !graphicalItems || !graphicalItems.length || activeIndex >= displayedData.length) {\n return null;\n } // get data by activeIndex when the axis don't allow duplicated category\n\n\n return graphicalItems.reduce(function (result, child) {\n var hide = child.props.hide;\n\n if (hide) {\n return result;\n }\n\n var data = child.props.data;\n var payload;\n\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // graphic child has data props\n var entries = data === undefined ? displayedData : data;\n payload = findEntryInArray(entries, tooltipAxis.dataKey, activeLabel);\n } else {\n payload = data && data[activeIndex] || displayedData[activeIndex];\n }\n\n if (!payload) {\n return result;\n }\n\n return [].concat(_toConsumableArray(result), [getTooltipItem(child, payload)]);\n }, []);\n};\n/**\n * Returns tooltip data based on a mouse position (as a parameter or in state)\n * @param {Object} state current state\n * @param {Array} chartData the data defined in chart\n * @param {String} layout The layout type of chart\n * @param {Object} rangeObj { x, y } coordinates\n * @return {Object} Tooltip data data\n */\n\n\nvar getTooltipData = function getTooltipData(state, chartData, layout, rangeObj) {\n var rangeData = rangeObj || {\n x: state.chartX,\n y: state.chartY\n };\n var pos = calculateTooltipPos(rangeData, layout);\n var ticks = state.orderedTooltipTicks,\n axis = state.tooltipAxis,\n tooltipTicks = state.tooltipTicks;\n var activeIndex = calculateActiveTickIndex(pos, ticks, tooltipTicks, axis);\n\n if (activeIndex >= 0 && tooltipTicks) {\n var activeLabel = tooltipTicks[activeIndex] && tooltipTicks[activeIndex].value;\n var activePayload = getTooltipContent(state, chartData, activeIndex, activeLabel);\n var activeCoordinate = getActiveCoordinate(layout, ticks, activeIndex, rangeData);\n return {\n activeTooltipIndex: activeIndex,\n activeLabel: activeLabel,\n activePayload: activePayload,\n activeCoordinate: activeCoordinate\n };\n }\n\n return null;\n};\n/**\n * Get the configuration of axis by the options of axis instance\n * @param {Object} props Latest props\n * @param {Array} axes The instance of axes\n * @param {Array} graphicalItems The instances of item\n * @param {String} axisType The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param {String} axisIdKey The unique id of an axis\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\n\n\nvar getAxisMapByAxes = function getAxisMapByAxes(props, _ref2) {\n var axes = _ref2.axes,\n graphicalItems = _ref2.graphicalItems,\n axisType = _ref2.axisType,\n axisIdKey = _ref2.axisIdKey,\n stackGroups = _ref2.stackGroups,\n dataStartIndex = _ref2.dataStartIndex,\n dataEndIndex = _ref2.dataEndIndex;\n var layout = props.layout,\n children = props.children,\n stackOffset = props.stackOffset;\n var isCategorical = isCategoricalAxis(layout, axisType); // Eliminate duplicated axes\n\n var axisMap = axes.reduce(function (result, child) {\n var _child$props = child.props,\n type = _child$props.type,\n dataKey = _child$props.dataKey,\n allowDataOverflow = _child$props.allowDataOverflow,\n allowDuplicatedCategory = _child$props.allowDuplicatedCategory,\n scale = _child$props.scale,\n ticks = _child$props.ticks;\n var axisId = child.props[axisIdKey];\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId;\n }),\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var len = displayedData.length;\n\n if (!result[axisId]) {\n var domain, duplicateDomain, categoricalDomain;\n\n if (dataKey) {\n // has dataKey in \n domain = getDomainOfDataByKey(displayedData, dataKey, type);\n\n if (type === 'category' && isCategorical) {\n // the field type is category data and this axis is catrgorical axis\n var duplicate = hasDuplicate(domain);\n\n if (allowDuplicatedCategory && duplicate) {\n duplicateDomain = domain; // When category axis has duplicated text, serial numbers are used to generate scale\n\n domain = _range(0, len);\n } else if (!allowDuplicatedCategory) {\n // remove duplicated category\n domain = parseDomainOfCategoryAxis(child.props.domain, domain, child).reduce(function (finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n }, []);\n }\n } else if (type === 'category') {\n // the field type is category data and this axis is numerical axis\n if (!allowDuplicatedCategory) {\n domain = parseDomainOfCategoryAxis(child.props.domain, domain, child).reduce(function (finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 || entry === '' || _isNil(entry) ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n }, []);\n } else {\n // eliminate undefined or null or empty string\n domain = domain.filter(function (entry) {\n return entry !== '' && !_isNil(entry);\n });\n }\n } else if (type === 'number') {\n // the field type is numerical\n var errorBarsDomain = parseErrorBarsOfAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && !item.props.hide;\n }), dataKey, axisType);\n\n if (errorBarsDomain) {\n domain = errorBarsDomain;\n }\n }\n\n if (isCategorical && (type === 'number' || scale !== 'auto')) {\n categoricalDomain = getDomainOfDataByKey(displayedData, dataKey, 'category');\n }\n } else if (isCategorical) {\n // the axis is a categorical axis\n domain = _range(0, len);\n } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack && type === 'number') {\n // when stackOffset is 'expand', the domain may be calculated as [0, 1.000000000002]\n domain = stackOffset === 'expand' ? [0, 1] : getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n } else {\n domain = getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && !item.props.hide;\n }), type, true);\n }\n\n if (type === 'number') {\n // To detect wether there is any reference lines whose props alwaysShow is true\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType, ticks);\n\n if (child.props.domain) {\n domain = parseSpecifiedDomain(child.props.domain, domain, allowDataOverflow);\n }\n } else if (type === 'category' && child.props.domain) {\n var axisDomain = child.props.domain;\n var isDomainValidate = domain.every(function (entry) {\n return axisDomain.indexOf(entry) >= 0;\n });\n\n if (isDomainValidate) {\n domain = axisDomain;\n }\n }\n\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({}, child.props), {}, {\n axisType: axisType,\n domain: domain,\n categoricalDomain: categoricalDomain,\n duplicateDomain: duplicateDomain,\n originalDomain: child.props.domain,\n isCategorical: isCategorical,\n layout: layout\n })));\n }\n\n return result;\n }, {});\n return axisMap;\n};\n/**\n * Get the configuration of axis by the options of item,\n * this kind of axis does not display in chart\n * @param {Object} props Latest props\n * @param {Array} graphicalItems The instances of item\n * @param {ReactElement} Axis Axis Component\n * @param {String} axisType The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param {String} axisIdKey The unique id of an axis\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\n\n\nvar getAxisMapByItems = function getAxisMapByItems(props, _ref3) {\n var graphicalItems = _ref3.graphicalItems,\n Axis = _ref3.Axis,\n axisType = _ref3.axisType,\n axisIdKey = _ref3.axisIdKey,\n stackGroups = _ref3.stackGroups,\n dataStartIndex = _ref3.dataStartIndex,\n dataEndIndex = _ref3.dataEndIndex;\n var layout = props.layout,\n children = props.children;\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: graphicalItems,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var len = displayedData.length;\n var isCategorical = isCategoricalAxis(layout, axisType);\n var index = -1; // The default type of x-axis is category axis,\n // The default contents of x-axis is the serial numbers of data\n // The default type of y-axis is number axis\n // The default contents of y-axis is the domain of data\n\n var axisMap = graphicalItems.reduce(function (result, child) {\n var axisId = child.props[axisIdKey];\n\n if (!result[axisId]) {\n index++;\n var domain;\n\n if (isCategorical) {\n domain = _range(0, len);\n } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack) {\n domain = getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n } else {\n domain = parseSpecifiedDomain(Axis.defaultProps.domain, getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && !item.props.hide;\n }), 'number'), Axis.defaultProps.allowDataOverflow);\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n }\n\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({\n axisType: axisType\n }, Axis.defaultProps), {}, {\n hide: true,\n orientation: _get(ORIENT_MAP, \"\".concat(axisType, \".\").concat(index % 2), null),\n domain: domain,\n originalDomain: Axis.defaultProps.domain,\n isCategorical: isCategorical,\n layout: layout // specify scale when no Axis\n // scale: isCategorical ? 'band' : 'linear',\n\n })));\n }\n\n return result;\n }, {});\n return axisMap;\n};\n/**\n * Get the configuration of all x-axis or y-axis\n * @param {Object} props Latest props\n * @param {String} axisType The type of axis\n * @param {Array} graphicalItems The instances of item\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\n\n\nvar getAxisMap = function getAxisMap(props, _ref4) {\n var _ref4$axisType = _ref4.axisType,\n axisType = _ref4$axisType === void 0 ? 'xAxis' : _ref4$axisType,\n AxisComp = _ref4.AxisComp,\n graphicalItems = _ref4.graphicalItems,\n stackGroups = _ref4.stackGroups,\n dataStartIndex = _ref4.dataStartIndex,\n dataEndIndex = _ref4.dataEndIndex;\n var children = props.children;\n var axisIdKey = \"\".concat(axisType, \"Id\"); // Get all the instance of Axis\n\n var axes = findAllByType(children, AxisComp);\n var axisMap = {};\n\n if (axes && axes.length) {\n axisMap = getAxisMapByAxes(props, {\n axes: axes,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n } else if (graphicalItems && graphicalItems.length) {\n axisMap = getAxisMapByItems(props, {\n Axis: AxisComp,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n }\n\n return axisMap;\n};\n\nvar tooltipTicksGenerator = function tooltipTicksGenerator(axisMap) {\n var axis = getAnyElementOfObject(axisMap);\n var tooltipTicks = getTicksOfAxis(axis, false, true);\n return {\n tooltipTicks: tooltipTicks,\n orderedTooltipTicks: _sortBy(tooltipTicks, function (o) {\n return o.coordinate;\n }),\n tooltipAxis: axis,\n tooltipAxisBandSize: getBandSizeOfAxis(axis)\n };\n};\n/**\n * Returns default, reset state for the categorical chart.\n * @param {Object} props Props object to use when creating the default state\n * @return {Object} Whole new state\n */\n\n\nvar createDefaultState = function createDefaultState(props) {\n var children = props.children,\n defaultShowTooltip = props.defaultShowTooltip;\n var brushItem = findChildByType(children, Brush.displayName);\n var startIndex = brushItem && brushItem.props && brushItem.props.startIndex || 0;\n var endIndex = brushItem && brushItem.props && brushItem.props.endIndex || props.data && props.data.length - 1 || 0;\n return {\n chartX: 0,\n chartY: 0,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n activeTooltipIndex: -1,\n isTooltipActive: !_isNil(defaultShowTooltip) ? defaultShowTooltip : false\n };\n};\n\nvar hasGraphicalBarItem = function hasGraphicalBarItem(graphicalItems) {\n if (!graphicalItems || !graphicalItems.length) {\n return false;\n }\n\n return graphicalItems.some(function (item) {\n var name = getDisplayName(item && item.type);\n return name && name.indexOf('Bar') >= 0;\n });\n};\n\nvar getAxisNameByLayout = function getAxisNameByLayout(layout) {\n if (layout === 'horizontal') {\n return {\n numericAxisName: 'yAxis',\n cateAxisName: 'xAxis'\n };\n }\n\n if (layout === 'vertical') {\n return {\n numericAxisName: 'xAxis',\n cateAxisName: 'yAxis'\n };\n }\n\n if (layout === 'centric') {\n return {\n numericAxisName: 'radiusAxis',\n cateAxisName: 'angleAxis'\n };\n }\n\n return {\n numericAxisName: 'angleAxis',\n cateAxisName: 'radiusAxis'\n };\n};\n/**\n * Calculate the offset of main part in the svg element\n * @param {Object} props Latest props\n * graphicalItems The instances of item\n * xAxisMap The configuration of x-axis\n * yAxisMap The configuration of y-axis\n * @param {Object} prevLegendBBox the boundary box of legend\n * @return {Object} The offset of main part in the svg element\n */\n\n\nvar calculateOffset = function calculateOffset(_ref5, prevLegendBBox) {\n var props = _ref5.props,\n graphicalItems = _ref5.graphicalItems,\n _ref5$xAxisMap = _ref5.xAxisMap,\n xAxisMap = _ref5$xAxisMap === void 0 ? {} : _ref5$xAxisMap,\n _ref5$yAxisMap = _ref5.yAxisMap,\n yAxisMap = _ref5$yAxisMap === void 0 ? {} : _ref5$yAxisMap;\n var width = props.width,\n height = props.height,\n children = props.children;\n var margin = props.margin || {};\n var brushItem = findChildByType(children, Brush.displayName);\n var legendItem = findChildByType(children, Legend.displayName);\n var offsetH = Object.keys(yAxisMap).reduce(function (result, id) {\n var entry = yAxisMap[id];\n var orientation = entry.orientation;\n\n if (!entry.mirror && !entry.hide) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, result[orientation] + entry.width));\n }\n\n return result;\n }, {\n left: margin.left || 0,\n right: margin.right || 0\n });\n var offsetV = Object.keys(xAxisMap).reduce(function (result, id) {\n var entry = xAxisMap[id];\n var orientation = entry.orientation;\n\n if (!entry.mirror && !entry.hide) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, _get(result, \"\".concat(orientation)) + entry.height));\n }\n\n return result;\n }, {\n top: margin.top || 0,\n bottom: margin.bottom || 0\n });\n\n var offset = _objectSpread(_objectSpread({}, offsetV), offsetH);\n\n var brushBottom = offset.bottom;\n\n if (brushItem) {\n offset.bottom += brushItem.props.height || Brush.defaultProps.height;\n }\n\n if (legendItem && prevLegendBBox) {\n offset = appendOffsetOfLegend(offset, graphicalItems, props, prevLegendBBox);\n }\n\n return _objectSpread(_objectSpread({\n brushBottom: brushBottom\n }, offset), {}, {\n width: width - offset.left - offset.right,\n height: height - offset.top - offset.bottom\n });\n};\n\nexport var generateCategoricalChart = function generateCategoricalChart(_ref6) {\n var _class, _temp;\n\n var chartName = _ref6.chartName,\n GraphicalChild = _ref6.GraphicalChild,\n _ref6$defaultTooltipE = _ref6.defaultTooltipEventType,\n defaultTooltipEventType = _ref6$defaultTooltipE === void 0 ? 'axis' : _ref6$defaultTooltipE,\n _ref6$validateTooltip = _ref6.validateTooltipEventTypes,\n validateTooltipEventTypes = _ref6$validateTooltip === void 0 ? ['axis'] : _ref6$validateTooltip,\n axisComponents = _ref6.axisComponents,\n legendContent = _ref6.legendContent,\n formatAxisMap = _ref6.formatAxisMap,\n defaultProps = _ref6.defaultProps;\n\n var getFormatItems = function getFormatItems(props, currentState) {\n var graphicalItems = currentState.graphicalItems,\n stackGroups = currentState.stackGroups,\n offset = currentState.offset,\n updateId = currentState.updateId,\n dataStartIndex = currentState.dataStartIndex,\n dataEndIndex = currentState.dataEndIndex;\n var barSize = props.barSize,\n layout = props.layout,\n barGap = props.barGap,\n barCategoryGap = props.barCategoryGap,\n globalMaxBarSize = props.maxBarSize;\n\n var _getAxisNameByLayout = getAxisNameByLayout(layout),\n numericAxisName = _getAxisNameByLayout.numericAxisName,\n cateAxisName = _getAxisNameByLayout.cateAxisName;\n\n var hasBar = hasGraphicalBarItem(graphicalItems);\n var sizeList = hasBar && getBarSizeList({\n barSize: barSize,\n stackGroups: stackGroups\n });\n var formatedItems = [];\n graphicalItems.forEach(function (item, index) {\n var displayedData = getDisplayedData(props.data, {\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }, item);\n var _item$props = item.props,\n dataKey = _item$props.dataKey,\n childMaxBarSize = _item$props.maxBarSize;\n var numericAxisId = item.props[\"\".concat(numericAxisName, \"Id\")];\n var cateAxisId = item.props[\"\".concat(cateAxisName, \"Id\")];\n var axisObj = axisComponents.reduce(function (result, entry) {\n var _objectSpread6;\n\n var axisMap = currentState[\"\".concat(entry.axisType, \"Map\")];\n var id = item.props[\"\".concat(entry.axisType, \"Id\")];\n var axis = axisMap && axisMap[id];\n return _objectSpread(_objectSpread({}, result), {}, (_objectSpread6 = {}, _defineProperty(_objectSpread6, entry.axisType, axis), _defineProperty(_objectSpread6, \"\".concat(entry.axisType, \"Ticks\"), getTicksOfAxis(axis)), _objectSpread6));\n }, {});\n var cateAxis = axisObj[cateAxisName];\n var cateTicks = axisObj[\"\".concat(cateAxisName, \"Ticks\")];\n var stackedData = stackGroups && stackGroups[numericAxisId] && stackGroups[numericAxisId].hasStack && getStackedDataOfItem(item, stackGroups[numericAxisId].stackGroups);\n var itemIsBar = getDisplayName(item.type).indexOf('Bar') >= 0;\n var bandSize = getBandSizeOfAxis(cateAxis, cateTicks);\n var barPosition = [];\n\n if (itemIsBar) {\n var barBandSize = getBandSizeOfAxis(cateAxis, cateTicks, true); // 如果是bar,计算bar的位置\n\n var maxBarSize = _isNil(childMaxBarSize) ? globalMaxBarSize : childMaxBarSize;\n barPosition = getBarPosition({\n barGap: barGap,\n barCategoryGap: barCategoryGap,\n bandSize: barBandSize !== bandSize ? barBandSize : bandSize,\n sizeList: sizeList[cateAxisId],\n maxBarSize: maxBarSize\n });\n\n if (barBandSize !== bandSize) {\n barPosition = barPosition.map(function (pos) {\n return _objectSpread(_objectSpread({}, pos), {}, {\n position: _objectSpread(_objectSpread({}, pos.position), {}, {\n offset: pos.position.offset - barBandSize / 2\n })\n });\n });\n }\n }\n\n var componsedFn = item && item.type && item.type.getComposedData;\n\n if (componsedFn) {\n var _objectSpread7;\n\n formatedItems.push({\n props: _objectSpread(_objectSpread({}, componsedFn(_objectSpread(_objectSpread({}, axisObj), {}, {\n displayedData: displayedData,\n props: props,\n dataKey: dataKey,\n item: item,\n bandSize: bandSize,\n barPosition: barPosition,\n offset: offset,\n stackedData: stackedData,\n layout: layout,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }))), {}, (_objectSpread7 = {\n key: item.key || \"item-\".concat(index)\n }, _defineProperty(_objectSpread7, numericAxisName, axisObj[numericAxisName]), _defineProperty(_objectSpread7, cateAxisName, axisObj[cateAxisName]), _defineProperty(_objectSpread7, \"animationId\", updateId), _objectSpread7)),\n childIndex: parseChildIndex(item, props.children),\n item: item\n });\n }\n });\n return formatedItems;\n };\n /**\n * The AxisMaps are expensive to render on large data sets\n * so provide the ability to store them in state and only update them when necessary\n * they are dependent upon the start and end index of\n * the brush so it's important that this method is called _after_\n * the state is updated with any new start/end indices\n *\n * @param {Object} props The props object to be used for updating the axismaps\n * dataStartIndex: The start index of the data series when a brush is applied\n * dataEndIndex: The end index of the data series when a brush is applied\n * updateId: The update id\n * @param {Object} prevState Prev state\n * @return {Object} state New state to set\n */\n\n\n var updateStateOfAxisMapsOffsetAndStackGroups = function updateStateOfAxisMapsOffsetAndStackGroups(_ref7, prevState) {\n var props = _ref7.props,\n dataStartIndex = _ref7.dataStartIndex,\n dataEndIndex = _ref7.dataEndIndex,\n updateId = _ref7.updateId;\n\n if (!validateWidthHeight({\n props: props\n })) {\n return null;\n }\n\n var children = props.children,\n layout = props.layout,\n stackOffset = props.stackOffset,\n data = props.data,\n reverseStackOrder = props.reverseStackOrder;\n\n var _getAxisNameByLayout2 = getAxisNameByLayout(layout),\n numericAxisName = _getAxisNameByLayout2.numericAxisName,\n cateAxisName = _getAxisNameByLayout2.cateAxisName;\n\n var graphicalItems = findAllByType(children, GraphicalChild);\n var stackGroups = getStackGroupsByAxisId(data, graphicalItems, \"\".concat(numericAxisName, \"Id\"), \"\".concat(cateAxisName, \"Id\"), stackOffset, reverseStackOrder);\n var axisObj = axisComponents.reduce(function (result, entry) {\n var name = \"\".concat(entry.axisType, \"Map\");\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, name, getAxisMap(props, _objectSpread(_objectSpread({}, entry), {}, {\n graphicalItems: graphicalItems,\n stackGroups: entry.axisType === numericAxisName && stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }))));\n }, {});\n var offset = calculateOffset(_objectSpread(_objectSpread({}, axisObj), {}, {\n props: props,\n graphicalItems: graphicalItems\n }), prevState === null || prevState === void 0 ? void 0 : prevState.legendBBox);\n Object.keys(axisObj).forEach(function (key) {\n axisObj[key] = formatAxisMap(props, axisObj[key], offset, key.replace('Map', ''), chartName);\n });\n var cateAxisMap = axisObj[\"\".concat(cateAxisName, \"Map\")];\n var ticksObj = tooltipTicksGenerator(cateAxisMap);\n var formatedGraphicalItems = getFormatItems(props, _objectSpread(_objectSpread({}, axisObj), {}, {\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId,\n graphicalItems: graphicalItems,\n stackGroups: stackGroups,\n offset: offset\n }));\n return _objectSpread(_objectSpread({\n formatedGraphicalItems: formatedGraphicalItems,\n graphicalItems: graphicalItems,\n offset: offset,\n stackGroups: stackGroups\n }, ticksObj), axisObj);\n };\n\n return _temp = _class = /*#__PURE__*/function (_Component) {\n _inherits(CategoricalChartWrapper, _Component);\n\n var _super = _createSuper(CategoricalChartWrapper);\n\n // todo join specific chart propTypes\n function CategoricalChartWrapper(_props) {\n var _this;\n\n _classCallCheck(this, CategoricalChartWrapper);\n\n _this = _super.call(this, _props);\n _this.uniqueChartId = void 0;\n _this.clipPathId = void 0;\n _this.legendInstance = void 0;\n _this.deferId = void 0;\n _this.container = void 0;\n\n _this.clearDeferId = function () {\n if (!_isNil(_this.deferId) && deferClear) {\n deferClear(_this.deferId);\n }\n\n _this.deferId = null;\n };\n\n _this.handleLegendBBoxUpdate = function (box) {\n if (box && _this.legendInstance) {\n var _this$state = _this.state,\n dataStartIndex = _this$state.dataStartIndex,\n dataEndIndex = _this$state.dataEndIndex,\n updateId = _this$state.updateId;\n\n _this.setState(_objectSpread({\n legendBBox: box\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n }, _objectSpread(_objectSpread({}, _this.state), {}, {\n legendBBox: box\n }))));\n }\n };\n\n _this.handleReceiveSyncEvent = function (cId, chartId, data) {\n var syncId = _this.props.syncId;\n\n if (syncId === cId && chartId !== _this.uniqueChartId) {\n _this.clearDeferId();\n\n _this.deferId = defer && defer(_this.applySyncEvent.bind(_assertThisInitialized(_this), data));\n }\n };\n\n _this.handleBrushChange = function (_ref8) {\n var startIndex = _ref8.startIndex,\n endIndex = _ref8.endIndex;\n\n // Only trigger changes if the extents of the brush have actually changed\n if (startIndex !== _this.state.dataStartIndex || endIndex !== _this.state.dataEndIndex) {\n var updateId = _this.state.updateId;\n\n _this.setState(function () {\n return _objectSpread({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n updateId: updateId\n }, _this.state));\n });\n\n _this.triggerSyncEvent({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n });\n }\n };\n\n _this.handleMouseEnter = function (e) {\n var onMouseEnter = _this.props.onMouseEnter;\n\n var mouse = _this.getMouseInfo(e);\n\n if (mouse) {\n var nextState = _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n });\n\n _this.setState(nextState);\n\n _this.triggerSyncEvent(nextState);\n\n if (_isFunction(onMouseEnter)) {\n onMouseEnter(nextState, e);\n }\n }\n };\n\n _this.triggeredAfterMouseMove = function (e) {\n var onMouseMove = _this.props.onMouseMove;\n\n var mouse = _this.getMouseInfo(e);\n\n var nextState = mouse ? _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n }) : {\n isTooltipActive: false\n };\n\n _this.setState(nextState);\n\n _this.triggerSyncEvent(nextState);\n\n if (_isFunction(onMouseMove)) {\n onMouseMove(nextState, e);\n }\n };\n\n _this.handleItemMouseEnter = function (el) {\n _this.setState(function () {\n return {\n isTooltipActive: true,\n activeItem: el,\n activePayload: el.tooltipPayload,\n activeCoordinate: el.tooltipPosition || {\n x: el.cx,\n y: el.cy\n }\n };\n });\n };\n\n _this.handleItemMouseLeave = function () {\n _this.setState(function () {\n return {\n isTooltipActive: false\n };\n });\n };\n\n _this.handleMouseMove = function (e) {\n if (e && _isFunction(e.persist)) {\n e.persist();\n }\n\n _this.triggeredAfterMouseMove(e);\n };\n\n _this.handleMouseLeave = function (e) {\n var onMouseLeave = _this.props.onMouseLeave;\n var nextState = {\n isTooltipActive: false\n };\n\n _this.setState(nextState);\n\n _this.triggerSyncEvent(nextState);\n\n if (_isFunction(onMouseLeave)) {\n onMouseLeave(nextState, e);\n }\n\n _this.cancelThrottledTriggerAfterMouseMove();\n };\n\n _this.handleOuterEvent = function (e) {\n var eventName = getReactEventByType(e);\n\n var event = _get(_this.props, \"\".concat(eventName));\n\n if (eventName && _isFunction(event)) {\n var mouse;\n\n if (/.*touch.*/i.test(eventName)) {\n mouse = _this.getMouseInfo(e.changedTouches[0]);\n } else {\n mouse = _this.getMouseInfo(e);\n }\n\n var handler = event;\n handler(mouse, e);\n }\n };\n\n _this.handleClick = function (e) {\n var onClick = _this.props.onClick;\n\n var mouse = _this.getMouseInfo(e);\n\n if (mouse) {\n var nextState = _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n });\n\n _this.setState(nextState);\n\n _this.triggerSyncEvent(nextState);\n\n if (_isFunction(onClick)) {\n onClick(nextState, e);\n }\n }\n };\n\n _this.handleMouseDown = function (e) {\n var onMouseDown = _this.props.onMouseDown;\n\n if (_isFunction(onMouseDown)) {\n var mouse = _this.getMouseInfo(e);\n\n onMouseDown(mouse, e);\n }\n };\n\n _this.handleMouseUp = function (e) {\n var onMouseUp = _this.props.onMouseUp;\n\n if (_isFunction(onMouseUp)) {\n var mouse = _this.getMouseInfo(e);\n\n onMouseUp(mouse, e);\n }\n };\n\n _this.handleTouchMove = function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseMove(e.changedTouches[0]);\n }\n };\n\n _this.handleTouchStart = function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseDown(e.changedTouches[0]);\n }\n };\n\n _this.handleTouchEnd = function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseUp(e.changedTouches[0]);\n }\n };\n\n _this.verticalCoordinatesGenerator = function (_ref9) {\n var xAxis = _ref9.xAxis,\n width = _ref9.width,\n height = _ref9.height,\n offset = _ref9.offset;\n return getCoordinatesOfGrid(CartesianAxis.getTicks(_objectSpread(_objectSpread(_objectSpread({}, CartesianAxis.defaultProps), xAxis), {}, {\n ticks: getTicksOfAxis(xAxis, true),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n }\n })), offset.left, offset.left + offset.width);\n };\n\n _this.horizontalCoordinatesGenerator = function (_ref10) {\n var yAxis = _ref10.yAxis,\n width = _ref10.width,\n height = _ref10.height,\n offset = _ref10.offset;\n return getCoordinatesOfGrid(CartesianAxis.getTicks(_objectSpread(_objectSpread(_objectSpread({}, CartesianAxis.defaultProps), yAxis), {}, {\n ticks: getTicksOfAxis(yAxis, true),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n }\n })), offset.top, offset.top + offset.height);\n };\n\n _this.axesTicksGenerator = function (axis) {\n return getTicksOfAxis(axis, true);\n };\n\n _this.renderCursor = function (element) {\n var _this$state2 = _this.state,\n isTooltipActive = _this$state2.isTooltipActive,\n activeCoordinate = _this$state2.activeCoordinate,\n activePayload = _this$state2.activePayload,\n offset = _this$state2.offset,\n activeTooltipIndex = _this$state2.activeTooltipIndex;\n\n var tooltipEventType = _this.getTooltipEventType();\n\n if (!element || !element.props.cursor || !isTooltipActive || !activeCoordinate || tooltipEventType !== 'axis') {\n return null;\n }\n\n var layout = _this.props.layout;\n var restProps;\n var cursorComp = Curve;\n\n if (chartName === 'ScatterChart') {\n restProps = activeCoordinate;\n cursorComp = Cross;\n } else if (chartName === 'BarChart') {\n restProps = _this.getCursorRectangle();\n cursorComp = Rectangle;\n } else if (layout === 'radial') {\n var _this$getCursorPoints = _this.getCursorPoints(),\n cx = _this$getCursorPoints.cx,\n cy = _this$getCursorPoints.cy,\n radius = _this$getCursorPoints.radius,\n startAngle = _this$getCursorPoints.startAngle,\n endAngle = _this$getCursorPoints.endAngle;\n\n restProps = {\n cx: cx,\n cy: cy,\n startAngle: startAngle,\n endAngle: endAngle,\n innerRadius: radius,\n outerRadius: radius\n };\n cursorComp = Sector;\n } else {\n restProps = {\n points: _this.getCursorPoints()\n };\n cursorComp = Curve;\n }\n\n var key = element.key || '_recharts-cursor';\n\n var cursorProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n stroke: '#ccc',\n pointerEvents: 'none'\n }, offset), restProps), filterProps(element.props.cursor)), {}, {\n payload: activePayload,\n payloadIndex: activeTooltipIndex,\n key: key,\n className: 'recharts-tooltip-cursor'\n });\n\n return /*#__PURE__*/isValidElement(element.props.cursor) ? /*#__PURE__*/cloneElement(element.props.cursor, cursorProps) : /*#__PURE__*/createElement(cursorComp, cursorProps);\n };\n\n _this.renderPolarAxis = function (element, displayName, index) {\n var axisType = _get(element, 'type.axisType');\n\n var axisMap = _get(_this.state, \"\".concat(axisType, \"Map\"));\n\n var axisOption = axisMap[element.props[\"\".concat(axisType, \"Id\")]];\n return /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({}, axisOption), {}, {\n className: axisType,\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n ticks: getTicksOfAxis(axisOption, true)\n }));\n };\n\n _this.renderXAxis = function (element, displayName, index) {\n var xAxisMap = _this.state.xAxisMap;\n var axisObj = xAxisMap[element.props.xAxisId];\n return _this.renderAxis(axisObj, element, displayName, index);\n };\n\n _this.renderYAxis = function (element, displayName, index) {\n var yAxisMap = _this.state.yAxisMap;\n var axisObj = yAxisMap[element.props.yAxisId];\n return _this.renderAxis(axisObj, element, displayName, index);\n };\n\n _this.renderGrid = function (element) {\n var _this$state3 = _this.state,\n xAxisMap = _this$state3.xAxisMap,\n yAxisMap = _this$state3.yAxisMap,\n offset = _this$state3.offset;\n var _this$props = _this.props,\n width = _this$props.width,\n height = _this$props.height;\n var xAxis = getAnyElementOfObject(xAxisMap);\n\n var yAxisWithFiniteDomain = _find(yAxisMap, function (axis) {\n return _every(axis.domain, isFinit);\n });\n\n var yAxis = yAxisWithFiniteDomain || getAnyElementOfObject(yAxisMap);\n var props = element.props || {};\n return /*#__PURE__*/cloneElement(element, {\n key: element.key || 'grid',\n x: isNumber(props.x) ? props.x : offset.left,\n y: isNumber(props.y) ? props.y : offset.top,\n width: isNumber(props.width) ? props.width : offset.width,\n height: isNumber(props.height) ? props.height : offset.height,\n xAxis: xAxis,\n yAxis: yAxis,\n offset: offset,\n chartWidth: width,\n chartHeight: height,\n verticalCoordinatesGenerator: props.verticalCoordinatesGenerator || _this.verticalCoordinatesGenerator,\n horizontalCoordinatesGenerator: props.horizontalCoordinatesGenerator || _this.horizontalCoordinatesGenerator\n });\n };\n\n _this.renderPolarGrid = function (element) {\n var _element$props = element.props,\n radialLines = _element$props.radialLines,\n polarAngles = _element$props.polarAngles,\n polarRadius = _element$props.polarRadius;\n var _this$state4 = _this.state,\n radiusAxisMap = _this$state4.radiusAxisMap,\n angleAxisMap = _this$state4.angleAxisMap;\n var radiusAxis = getAnyElementOfObject(radiusAxisMap);\n var angleAxis = getAnyElementOfObject(angleAxisMap);\n var cx = angleAxis.cx,\n cy = angleAxis.cy,\n innerRadius = angleAxis.innerRadius,\n outerRadius = angleAxis.outerRadius;\n var props = element.props || {};\n return /*#__PURE__*/cloneElement(element, {\n polarAngles: _isArray(polarAngles) ? polarAngles : getTicksOfAxis(angleAxis, true).map(function (entry) {\n return entry.coordinate;\n }),\n polarRadius: _isArray(polarRadius) ? polarRadius : getTicksOfAxis(radiusAxis, true).map(function (entry) {\n return entry.coordinate;\n }),\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n key: element.key || 'polar-grid',\n radialLines: radialLines\n });\n };\n\n _this.renderLegend = function () {\n var formatedGraphicalItems = _this.state.formatedGraphicalItems;\n var _this$props2 = _this.props,\n children = _this$props2.children,\n width = _this$props2.width,\n height = _this$props2.height;\n var margin = _this.props.margin || {};\n var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n var props = getLegendProps({\n children: children,\n formatedGraphicalItems: formatedGraphicalItems,\n legendWidth: legendWidth,\n legendContent: legendContent\n });\n\n if (!props) {\n return null;\n }\n\n var item = props.item,\n otherProps = _objectWithoutProperties(props, [\"item\"]);\n\n return /*#__PURE__*/cloneElement(item, _objectSpread(_objectSpread({}, otherProps), {}, {\n chartWidth: width,\n chartHeight: height,\n margin: margin,\n ref: function ref(legend) {\n _this.legendInstance = legend;\n },\n onBBoxUpdate: _this.handleLegendBBoxUpdate\n }));\n };\n\n _this.renderTooltip = function () {\n var children = _this.props.children;\n var tooltipItem = findChildByType(children, Tooltip.displayName);\n\n if (!tooltipItem) {\n return null;\n }\n\n var _this$state5 = _this.state,\n isTooltipActive = _this$state5.isTooltipActive,\n activeCoordinate = _this$state5.activeCoordinate,\n activePayload = _this$state5.activePayload,\n activeLabel = _this$state5.activeLabel,\n offset = _this$state5.offset;\n return /*#__PURE__*/cloneElement(tooltipItem, {\n viewBox: _objectSpread(_objectSpread({}, offset), {}, {\n x: offset.left,\n y: offset.top\n }),\n active: isTooltipActive,\n label: activeLabel,\n payload: isTooltipActive ? activePayload : [],\n coordinate: activeCoordinate\n });\n };\n\n _this.renderBrush = function (element) {\n var _this$props3 = _this.props,\n margin = _this$props3.margin,\n data = _this$props3.data;\n var _this$state6 = _this.state,\n offset = _this$state6.offset,\n dataStartIndex = _this$state6.dataStartIndex,\n dataEndIndex = _this$state6.dataEndIndex,\n updateId = _this$state6.updateId; // TODO: update brush when children update\n\n return /*#__PURE__*/cloneElement(element, {\n key: element.key || '_recharts-brush',\n onChange: combineEventHandlers(_this.handleBrushChange, null, element.props.onChange),\n data: data,\n x: isNumber(element.props.x) ? element.props.x : offset.left,\n y: isNumber(element.props.y) ? element.props.y : offset.top + offset.height + offset.brushBottom - (margin.bottom || 0),\n width: isNumber(element.props.width) ? element.props.width : offset.width,\n startIndex: dataStartIndex,\n endIndex: dataEndIndex,\n updateId: \"brush-\".concat(updateId)\n });\n };\n\n _this.renderReferenceElement = function (element, displayName, index) {\n if (!element) {\n return null;\n }\n\n var _assertThisInitialize = _assertThisInitialized(_this),\n clipPathId = _assertThisInitialize.clipPathId;\n\n var _this$state7 = _this.state,\n xAxisMap = _this$state7.xAxisMap,\n yAxisMap = _this$state7.yAxisMap,\n offset = _this$state7.offset;\n var _element$props2 = element.props,\n xAxisId = _element$props2.xAxisId,\n yAxisId = _element$props2.yAxisId;\n return /*#__PURE__*/cloneElement(element, {\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n xAxis: xAxisMap[xAxisId],\n yAxis: yAxisMap[yAxisId],\n viewBox: {\n x: offset.left,\n y: offset.top,\n width: offset.width,\n height: offset.height\n },\n clipPathId: clipPathId\n });\n };\n\n _this.renderActivePoints = function (_ref11) {\n var item = _ref11.item,\n activePoint = _ref11.activePoint,\n basePoint = _ref11.basePoint,\n childIndex = _ref11.childIndex,\n isRange = _ref11.isRange;\n var result = [];\n var key = item.props.key;\n var _item$item$props = item.item.props,\n activeDot = _item$item$props.activeDot,\n dataKey = _item$item$props.dataKey;\n\n var dotProps = _objectSpread(_objectSpread({\n index: childIndex,\n dataKey: dataKey,\n cx: activePoint.x,\n cy: activePoint.y,\n r: 4,\n fill: getMainColorOfGraphicItem(item.item),\n strokeWidth: 2,\n stroke: '#fff',\n payload: activePoint.payload,\n value: activePoint.value,\n key: \"\".concat(key, \"-activePoint-\").concat(childIndex)\n }, filterProps(activeDot)), adaptEventHandlers(activeDot));\n\n result.push(CategoricalChartWrapper.renderActiveDot(activeDot, dotProps));\n\n if (basePoint) {\n result.push(CategoricalChartWrapper.renderActiveDot(activeDot, _objectSpread(_objectSpread({}, dotProps), {}, {\n cx: basePoint.x,\n cy: basePoint.y,\n key: \"\".concat(key, \"-basePoint-\").concat(childIndex)\n })));\n } else if (isRange) {\n result.push(null);\n }\n\n return result;\n };\n\n _this.renderGraphicChild = function (element, displayName, index) {\n var item = _this.filterFormatItem(element, displayName, index);\n\n if (!item) {\n return null;\n }\n\n var tooltipEventType = _this.getTooltipEventType();\n\n var _this$state8 = _this.state,\n isTooltipActive = _this$state8.isTooltipActive,\n tooltipAxis = _this$state8.tooltipAxis,\n activeTooltipIndex = _this$state8.activeTooltipIndex,\n activeLabel = _this$state8.activeLabel;\n var children = _this.props.children;\n var tooltipItem = findChildByType(children, Tooltip.displayName);\n var _item$props2 = item.props,\n points = _item$props2.points,\n isRange = _item$props2.isRange,\n baseLine = _item$props2.baseLine;\n var _item$item$props2 = item.item.props,\n activeDot = _item$item$props2.activeDot,\n hide = _item$item$props2.hide;\n var hasActive = !hide && isTooltipActive && tooltipItem && activeDot && activeTooltipIndex >= 0;\n var itemEvents = {};\n\n if (tooltipEventType !== 'axis' && tooltipItem && tooltipItem.props.trigger === 'click') {\n itemEvents = {\n onClick: combineEventHandlers(_this.handleItemMouseEnter, null, element.props.onCLick)\n };\n } else if (tooltipEventType !== 'axis') {\n itemEvents = {\n onMouseLeave: combineEventHandlers(_this.handleItemMouseLeave, null, element.props.onMouseLeave),\n onMouseEnter: combineEventHandlers(_this.handleItemMouseEnter, null, element.props.onMouseEnter)\n };\n }\n\n var graphicalItem = /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({}, item.props), itemEvents));\n\n function findWithPayload(entry) {\n // TODO needs to verify dataKey is Function\n return typeof tooltipAxis.dataKey === 'function' ? tooltipAxis.dataKey(entry.payload) : null;\n }\n\n if (hasActive) {\n var activePoint, basePoint;\n\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // number transform to string\n var specifiedKey = typeof tooltipAxis.dataKey === 'function' ? findWithPayload : 'payload.'.concat(tooltipAxis.dataKey.toString());\n activePoint = findEntryInArray(points, specifiedKey, activeLabel);\n basePoint = isRange && baseLine && findEntryInArray(baseLine, specifiedKey, activeLabel);\n } else {\n activePoint = points[activeTooltipIndex];\n basePoint = isRange && baseLine && baseLine[activeTooltipIndex];\n }\n\n if (!_isNil(activePoint)) {\n return [graphicalItem].concat(_toConsumableArray(_this.renderActivePoints({\n item: item,\n activePoint: activePoint,\n basePoint: basePoint,\n childIndex: activeTooltipIndex,\n isRange: isRange\n })));\n }\n }\n\n if (isRange) {\n return [graphicalItem, null, null];\n }\n\n return [graphicalItem, null];\n };\n\n _this.renderCustomized = function (element) {\n return /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({}, _this.props), _this.state));\n };\n\n _this.uniqueChartId = _isNil(_props.id) ? uniqueId('recharts') : _props.id;\n _this.clipPathId = \"\".concat(_this.uniqueChartId, \"-clip\");\n\n if (_props.throttleDelay) {\n _this.triggeredAfterMouseMove = _throttle(_this.triggeredAfterMouseMove, _props.throttleDelay);\n }\n\n _this.state = {};\n return _this;\n }\n /* eslint-disable react/no-did-mount-set-state */\n\n\n _createClass(CategoricalChartWrapper, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!_isNil(this.props.syncId)) {\n this.addListener();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // add syncId\n if (_isNil(prevProps.syncId) && !_isNil(this.props.syncId)) {\n this.addListener();\n } // remove syncId\n\n\n if (!_isNil(prevProps.syncId) && _isNil(this.props.syncId)) {\n this.removeListener();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.clearDeferId();\n\n if (!_isNil(this.props.syncId)) {\n this.removeListener();\n }\n\n this.cancelThrottledTriggerAfterMouseMove();\n }\n }, {\n key: \"cancelThrottledTriggerAfterMouseMove\",\n value: function cancelThrottledTriggerAfterMouseMove() {\n if (typeof this.triggeredAfterMouseMove.cancel === 'function') {\n this.triggeredAfterMouseMove.cancel();\n }\n }\n }, {\n key: \"getTooltipEventType\",\n value: function getTooltipEventType() {\n var tooltipItem = findChildByType(this.props.children, Tooltip.displayName);\n\n if (tooltipItem && _isBoolean(tooltipItem.props.shared)) {\n var eventType = tooltipItem.props.shared ? 'axis' : 'item';\n return validateTooltipEventTypes.indexOf(eventType) >= 0 ? eventType : defaultTooltipEventType;\n }\n\n return defaultTooltipEventType;\n }\n /**\n * Get the information of mouse in chart, return null when the mouse is not in the chart\n * @param {Object} event The event object\n * @return {Object} Mouse data\n */\n\n }, {\n key: \"getMouseInfo\",\n value: function getMouseInfo(event) {\n if (!this.container) {\n return null;\n }\n\n var containerOffset = getOffset(this.container);\n var e = calculateChartCoordinate(event, containerOffset);\n var rangeObj = this.inRange(e.chartX, e.chartY);\n\n if (!rangeObj) {\n return null;\n }\n\n var _this$state9 = this.state,\n xAxisMap = _this$state9.xAxisMap,\n yAxisMap = _this$state9.yAxisMap;\n var tooltipEventType = this.getTooltipEventType();\n\n if (tooltipEventType !== 'axis' && xAxisMap && yAxisMap) {\n var xScale = getAnyElementOfObject(xAxisMap).scale;\n var yScale = getAnyElementOfObject(yAxisMap).scale;\n var xValue = xScale && xScale.invert ? xScale.invert(e.chartX) : null;\n var yValue = yScale && yScale.invert ? yScale.invert(e.chartY) : null;\n return _objectSpread(_objectSpread({}, e), {}, {\n xValue: xValue,\n yValue: yValue\n });\n }\n\n var toolTipData = getTooltipData(this.state, this.props.data, this.props.layout, rangeObj);\n\n if (toolTipData) {\n return _objectSpread(_objectSpread({}, e), toolTipData);\n }\n\n return null;\n }\n }, {\n key: \"getCursorRectangle\",\n value: function getCursorRectangle() {\n var layout = this.props.layout;\n var _this$state10 = this.state,\n activeCoordinate = _this$state10.activeCoordinate,\n offset = _this$state10.offset,\n tooltipAxisBandSize = _this$state10.tooltipAxisBandSize;\n var halfSize = tooltipAxisBandSize / 2;\n return {\n stroke: 'none',\n fill: '#ccc',\n x: layout === 'horizontal' ? activeCoordinate.x - halfSize : offset.left + 0.5,\n y: layout === 'horizontal' ? offset.top + 0.5 : activeCoordinate.y - halfSize,\n width: layout === 'horizontal' ? tooltipAxisBandSize : offset.width - 1,\n height: layout === 'horizontal' ? offset.height - 1 : tooltipAxisBandSize\n };\n }\n }, {\n key: \"getCursorPoints\",\n value: function getCursorPoints() {\n var layout = this.props.layout;\n var _this$state11 = this.state,\n activeCoordinate = _this$state11.activeCoordinate,\n offset = _this$state11.offset;\n var x1, y1, x2, y2;\n\n if (layout === 'horizontal') {\n x1 = activeCoordinate.x;\n x2 = x1;\n y1 = offset.top;\n y2 = offset.top + offset.height;\n } else if (layout === 'vertical') {\n y1 = activeCoordinate.y;\n y2 = y1;\n x1 = offset.left;\n x2 = offset.left + offset.width;\n } else if (!_isNil(activeCoordinate.cx) || !_isNil(activeCoordinate.cy)) {\n if (layout === 'centric') {\n var cx = activeCoordinate.cx,\n cy = activeCoordinate.cy,\n innerRadius = activeCoordinate.innerRadius,\n outerRadius = activeCoordinate.outerRadius,\n angle = activeCoordinate.angle;\n var innerPoint = polarToCartesian(cx, cy, innerRadius, angle);\n var outerPoint = polarToCartesian(cx, cy, outerRadius, angle);\n x1 = innerPoint.x;\n y1 = innerPoint.y;\n x2 = outerPoint.x;\n y2 = outerPoint.y;\n } else {\n var _cx = activeCoordinate.cx,\n _cy = activeCoordinate.cy,\n radius = activeCoordinate.radius,\n startAngle = activeCoordinate.startAngle,\n endAngle = activeCoordinate.endAngle;\n var startPoint = polarToCartesian(_cx, _cy, radius, startAngle);\n var endPoint = polarToCartesian(_cx, _cy, radius, endAngle);\n return {\n points: [startPoint, endPoint],\n cx: _cx,\n cy: _cy,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle\n };\n }\n }\n\n return [{\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n }];\n }\n }, {\n key: \"inRange\",\n value: function inRange(x, y) {\n var layout = this.props.layout;\n\n if (layout === 'horizontal' || layout === 'vertical') {\n var offset = this.state.offset;\n var isInRange = x >= offset.left && x <= offset.left + offset.width && y >= offset.top && y <= offset.top + offset.height;\n return isInRange ? {\n x: x,\n y: y\n } : null;\n }\n\n var _this$state12 = this.state,\n angleAxisMap = _this$state12.angleAxisMap,\n radiusAxisMap = _this$state12.radiusAxisMap;\n\n if (angleAxisMap && radiusAxisMap) {\n var angleAxis = getAnyElementOfObject(angleAxisMap);\n return inRangeOfSector({\n x: x,\n y: y\n }, angleAxis);\n }\n\n return null;\n }\n }, {\n key: \"parseEventsOfWrapper\",\n value: function parseEventsOfWrapper() {\n var children = this.props.children;\n var tooltipEventType = this.getTooltipEventType();\n var tooltipItem = findChildByType(children, Tooltip.displayName);\n var tooltipEvents = {};\n\n if (tooltipItem && tooltipEventType === 'axis') {\n if (tooltipItem.props.trigger === 'click') {\n tooltipEvents = {\n onClick: this.handleClick\n };\n } else {\n tooltipEvents = {\n onMouseEnter: this.handleMouseEnter,\n onMouseMove: this.handleMouseMove,\n onMouseLeave: this.handleMouseLeave,\n onTouchMove: this.handleTouchMove,\n onTouchStart: this.handleTouchStart,\n onTouchEnd: this.handleTouchEnd\n };\n }\n }\n\n var outerEvents = adaptEventHandlers(this.props, this.handleOuterEvent);\n return _objectSpread(_objectSpread({}, outerEvents), tooltipEvents);\n }\n /* eslint-disable no-underscore-dangle */\n\n }, {\n key: \"addListener\",\n value: function addListener() {\n eventCenter.on(SYNC_EVENT, this.handleReceiveSyncEvent);\n\n if (eventCenter.setMaxListeners && eventCenter._maxListeners) {\n eventCenter.setMaxListeners(eventCenter._maxListeners + 1);\n }\n }\n }, {\n key: \"removeListener\",\n value: function removeListener() {\n eventCenter.removeListener(SYNC_EVENT, this.handleReceiveSyncEvent);\n\n if (eventCenter.setMaxListeners && eventCenter._maxListeners) {\n eventCenter.setMaxListeners(eventCenter._maxListeners - 1);\n }\n }\n }, {\n key: \"triggerSyncEvent\",\n value: function triggerSyncEvent(data) {\n var syncId = this.props.syncId;\n\n if (!_isNil(syncId)) {\n eventCenter.emit(SYNC_EVENT, syncId, this.uniqueChartId, data);\n }\n }\n }, {\n key: \"applySyncEvent\",\n value: function applySyncEvent(data) {\n var _this$props4 = this.props,\n layout = _this$props4.layout,\n syncMethod = _this$props4.syncMethod;\n var updateId = this.state.updateId;\n var dataStartIndex = data.dataStartIndex,\n dataEndIndex = data.dataEndIndex;\n\n if (!_isNil(data.dataStartIndex) || !_isNil(data.dataEndIndex)) {\n this.setState(_objectSpread({\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n }, this.state)));\n } else if (!_isNil(data.activeTooltipIndex)) {\n var chartX = data.chartX,\n chartY = data.chartY;\n var activeTooltipIndex = data.activeTooltipIndex;\n var _this$state13 = this.state,\n offset = _this$state13.offset,\n tooltipTicks = _this$state13.tooltipTicks;\n\n if (!offset) {\n return;\n }\n\n if (typeof syncMethod === 'function') {\n // Call a callback function. If there is an application specific algorithm\n activeTooltipIndex = syncMethod(tooltipTicks, data);\n } else if (syncMethod === 'value') {\n // Set activeTooltipIndex to the index with the same value as data.activeLabel\n // For loop instead of findIndex because the latter is very slow in some browsers\n activeTooltipIndex = -1; // in case we cannot find the element\n\n for (var i = 0; i < tooltipTicks.length; i++) {\n if (tooltipTicks[i].value === data.activeLabel) {\n activeTooltipIndex = i;\n break;\n }\n }\n }\n\n var viewBox = _objectSpread(_objectSpread({}, offset), {}, {\n x: offset.left,\n y: offset.top\n }); // When a categotical chart is combined with another chart, the value of chartX\n // and chartY may beyond the boundaries.\n\n\n var validateChartX = Math.min(chartX, viewBox.x + viewBox.width);\n var validateChartY = Math.min(chartY, viewBox.y + viewBox.height);\n var activeLabel = tooltipTicks[activeTooltipIndex] && tooltipTicks[activeTooltipIndex].value;\n var activePayload = getTooltipContent(this.state, this.props.data, activeTooltipIndex);\n var activeCoordinate = tooltipTicks[activeTooltipIndex] ? {\n x: layout === 'horizontal' ? tooltipTicks[activeTooltipIndex].coordinate : validateChartX,\n y: layout === 'horizontal' ? validateChartY : tooltipTicks[activeTooltipIndex].coordinate\n } : originCoordinate;\n this.setState(_objectSpread(_objectSpread({}, data), {}, {\n activeLabel: activeLabel,\n activeCoordinate: activeCoordinate,\n activePayload: activePayload,\n activeTooltipIndex: activeTooltipIndex\n }));\n } else {\n this.setState(data);\n }\n }\n }, {\n key: \"filterFormatItem\",\n value: function filterFormatItem(item, displayName, childIndex) {\n var formatedGraphicalItems = this.state.formatedGraphicalItems;\n\n for (var i = 0, len = formatedGraphicalItems.length; i < len; i++) {\n var entry = formatedGraphicalItems[i];\n\n if (entry.item === item || entry.props.key === item.key || displayName === getDisplayName(entry.item.type) && childIndex === entry.childIndex) {\n return entry;\n }\n }\n\n return null;\n }\n }, {\n key: \"renderAxis\",\n value:\n /**\n * Draw axis\n * @param {Object} axisOptions The options of axis\n * @param {Object} element The axis element\n * @param {String} displayName The display name of axis\n * @param {Number} index The index of element\n * @return {ReactElement} The instance of x-axes\n */\n function renderAxis(axisOptions, element, displayName, index) {\n var _this$props5 = this.props,\n width = _this$props5.width,\n height = _this$props5.height;\n return /*#__PURE__*/React.createElement(CartesianAxis, _extends({}, axisOptions, {\n className: \"recharts-\".concat(axisOptions.axisType, \" \").concat(axisOptions.axisType),\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n ticksGenerator: this.axesTicksGenerator\n }));\n }\n /**\n * Draw grid\n * @param {ReactElement} element the grid item\n * @return {ReactElement} The instance of grid\n */\n\n }, {\n key: \"renderClipPath\",\n value: function renderClipPath() {\n var clipPathId = this.clipPathId;\n var _this$state$offset = this.state.offset,\n left = _this$state$offset.left,\n top = _this$state$offset.top,\n height = _this$state$offset.height,\n width = _this$state$offset.width;\n return /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: clipPathId\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: left,\n y: top,\n height: height,\n width: width\n })));\n }\n }, {\n key: \"getXScales\",\n value: function getXScales() {\n var xAxisMap = this.state.xAxisMap;\n return xAxisMap ? Object.entries(xAxisMap).reduce(function (res, _ref12) {\n var _ref13 = _slicedToArray(_ref12, 2),\n axisId = _ref13[0],\n axisProps = _ref13[1];\n\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n }, {}) : null;\n }\n }, {\n key: \"getYScales\",\n value: function getYScales() {\n var yAxisMap = this.state.yAxisMap;\n return yAxisMap ? Object.entries(yAxisMap).reduce(function (res, _ref14) {\n var _ref15 = _slicedToArray(_ref14, 2),\n axisId = _ref15[0],\n axisProps = _ref15[1];\n\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n }, {}) : null;\n }\n }, {\n key: \"getXScaleByAxisId\",\n value: function getXScaleByAxisId(axisId) {\n var _this$state$xAxisMap, _this$state$xAxisMap$;\n\n return (_this$state$xAxisMap = this.state.xAxisMap) === null || _this$state$xAxisMap === void 0 ? void 0 : (_this$state$xAxisMap$ = _this$state$xAxisMap[axisId]) === null || _this$state$xAxisMap$ === void 0 ? void 0 : _this$state$xAxisMap$.scale;\n }\n }, {\n key: \"getYScaleByAxisId\",\n value: function getYScaleByAxisId(axisId) {\n var _this$state$yAxisMap, _this$state$yAxisMap$;\n\n return (_this$state$yAxisMap = this.state.yAxisMap) === null || _this$state$yAxisMap === void 0 ? void 0 : (_this$state$yAxisMap$ = _this$state$yAxisMap[axisId]) === null || _this$state$yAxisMap$ === void 0 ? void 0 : _this$state$yAxisMap$.scale;\n }\n }, {\n key: \"getItemByXY\",\n value: function getItemByXY(chartXY) {\n var formatedGraphicalItems = this.state.formatedGraphicalItems;\n\n if (formatedGraphicalItems && formatedGraphicalItems.length) {\n for (var i = 0, len = formatedGraphicalItems.length; i < len; i++) {\n var graphicalItem = formatedGraphicalItems[i];\n var props = graphicalItem.props,\n item = graphicalItem.item;\n var itemDisplayName = getDisplayName(item.type);\n\n if (itemDisplayName === 'Bar') {\n var activeBarItem = (props.data || []).find(function (entry) {\n return isInRectangle(chartXY, entry);\n });\n\n if (activeBarItem) {\n return {\n graphicalItem: graphicalItem,\n payload: activeBarItem\n };\n }\n } else if (itemDisplayName === 'RadialBar') {\n var _activeBarItem = (props.data || []).find(function (entry) {\n return inRangeOfSector(chartXY, entry);\n });\n\n if (_activeBarItem) {\n return {\n graphicalItem: graphicalItem,\n payload: _activeBarItem\n };\n }\n }\n }\n }\n\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n if (!validateWidthHeight(this)) {\n return null;\n }\n\n var _this$props6 = this.props,\n children = _this$props6.children,\n className = _this$props6.className,\n width = _this$props6.width,\n height = _this$props6.height,\n style = _this$props6.style,\n compact = _this$props6.compact,\n others = _objectWithoutProperties(_this$props6, [\"children\", \"className\", \"width\", \"height\", \"style\", \"compact\"]);\n\n var attrs = filterProps(others);\n var map = {\n CartesianGrid: {\n handler: this.renderGrid,\n once: true\n },\n ReferenceArea: {\n handler: this.renderReferenceElement\n },\n ReferenceLine: {\n handler: this.renderReferenceElement\n },\n ReferenceDot: {\n handler: this.renderReferenceElement\n },\n XAxis: {\n handler: this.renderXAxis\n },\n YAxis: {\n handler: this.renderYAxis\n },\n Brush: {\n handler: this.renderBrush,\n once: true\n },\n Bar: {\n handler: this.renderGraphicChild\n },\n Line: {\n handler: this.renderGraphicChild\n },\n Area: {\n handler: this.renderGraphicChild\n },\n Radar: {\n handler: this.renderGraphicChild\n },\n RadialBar: {\n handler: this.renderGraphicChild\n },\n Scatter: {\n handler: this.renderGraphicChild\n },\n Pie: {\n handler: this.renderGraphicChild\n },\n Funnel: {\n handler: this.renderGraphicChild\n },\n Tooltip: {\n handler: this.renderCursor,\n once: true\n },\n PolarGrid: {\n handler: this.renderPolarGrid,\n once: true\n },\n PolarAngleAxis: {\n handler: this.renderPolarAxis\n },\n PolarRadiusAxis: {\n handler: this.renderPolarAxis\n },\n Customized: {\n handler: this.renderCustomized\n }\n }; // The \"compact\" mode is mainly used as the panorama within Brush\n\n if (compact) {\n return /*#__PURE__*/React.createElement(Surface, _extends({}, attrs, {\n width: width,\n height: height\n }), this.renderClipPath(), renderByOrder(children, map));\n }\n\n var events = this.parseEventsOfWrapper();\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: classNames('recharts-wrapper', className),\n style: _objectSpread({\n position: 'relative',\n cursor: 'default',\n width: width,\n height: height\n }, style)\n }, events, {\n ref: function ref(node) {\n _this2.container = node;\n }\n }), /*#__PURE__*/React.createElement(Surface, _extends({}, attrs, {\n width: width,\n height: height\n }), this.renderClipPath(), renderByOrder(children, map)), this.renderLegend(), this.renderTooltip());\n }\n }]);\n\n return CategoricalChartWrapper;\n }(Component), _class.displayName = chartName, _class.defaultProps = _objectSpread({\n layout: 'horizontal',\n stackOffset: 'none',\n barCategoryGap: '10%',\n barGap: 4,\n margin: {\n top: 5,\n right: 5,\n bottom: 5,\n left: 5\n },\n reverseStackOrder: false,\n syncMethod: 'index'\n }, defaultProps), _class.getDerivedStateFromProps = function (nextProps, prevState) {\n var data = nextProps.data,\n children = nextProps.children,\n width = nextProps.width,\n height = nextProps.height,\n layout = nextProps.layout,\n stackOffset = nextProps.stackOffset,\n margin = nextProps.margin;\n\n if (_isNil(prevState.updateId)) {\n var defaultState = createDefaultState(nextProps);\n return _objectSpread(_objectSpread(_objectSpread({}, defaultState), {}, {\n updateId: 0\n }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n props: nextProps\n }, defaultState), {}, {\n updateId: 0\n }), prevState)), {}, {\n prevData: data,\n prevWidth: width,\n prevHeight: height,\n prevLayout: layout,\n prevStackOffset: stackOffset,\n prevMargin: margin,\n prevChildren: children\n });\n }\n\n if (data !== prevState.prevData || width !== prevState.prevWidth || height !== prevState.prevHeight || layout !== prevState.prevLayout || stackOffset !== prevState.prevStackOffset || !shallowEqual(margin, prevState.prevMargin)) {\n var _defaultState = createDefaultState(nextProps); // Fixes https://github.com/recharts/recharts/issues/2143\n\n\n var keepFromPrevState = {\n // (chartX, chartY) are (0,0) in default state, but we want to keep the last mouse position to avoid\n // any flickering\n chartX: prevState.chartX,\n chartY: prevState.chartY,\n // The tooltip should stay active when it was active in the previous render. If this is not\n // the case, the tooltip disappears and immediately re-appears, causing a flickering effect\n isTooltipActive: prevState.isTooltipActive\n };\n\n var updatesToState = _objectSpread(_objectSpread({}, getTooltipData(prevState, data, layout)), {}, {\n updateId: prevState.updateId + 1\n });\n\n var newState = _objectSpread(_objectSpread(_objectSpread({}, _defaultState), keepFromPrevState), updatesToState);\n\n return _objectSpread(_objectSpread(_objectSpread({}, newState), updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread({\n props: nextProps\n }, newState), prevState)), {}, {\n prevData: data,\n prevWidth: width,\n prevHeight: height,\n prevLayout: layout,\n prevStackOffset: stackOffset,\n prevMargin: margin,\n prevChildren: children\n });\n }\n\n if (!isChildrenEqual(children, prevState.prevChildren)) {\n // update configuration in chilren\n var hasGlobalData = !_isNil(data);\n var newUpdateId = hasGlobalData ? prevState.updateId : prevState.updateId + 1;\n return _objectSpread(_objectSpread({\n updateId: newUpdateId\n }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n props: nextProps\n }, prevState), {}, {\n updateId: newUpdateId\n }), prevState)), {}, {\n prevChildren: children\n });\n }\n\n return null;\n }, _class.renderActiveDot = function (option, props) {\n var dot;\n\n if ( /*#__PURE__*/isValidElement(option)) {\n dot = /*#__PURE__*/cloneElement(option, props);\n } else if (_isFunction(option)) {\n dot = option(props);\n } else {\n dot = /*#__PURE__*/React.createElement(Dot, props);\n }\n\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-active-dot\",\n key: props.key\n }, dot);\n }, _temp;\n};","/**\n * @fileOverview Cross\n */\nexport var Cell = function Cell(props) {\n return null;\n};\nCell.displayName = 'Cell';","import _isObject from \"lodash/isObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React, { cloneElement, isValidElement, createElement } from 'react';\nimport classNames from 'classnames';\nimport { Text } from './Text';\nimport { findAllByType } from '../util/ReactUtils';\nimport { isNumOrStr, isNumber, isPercent, getPercentValue, uniqueId, mathSign } from '../util/DataUtils';\nimport { polarToCartesian } from '../util/PolarUtils';\nimport { filterProps } from '../util/types';\n\nvar getLabel = function getLabel(props) {\n var value = props.value,\n formatter = props.formatter;\n var label = _isNil(props.children) ? value : props.children;\n\n if (_isFunction(formatter)) {\n return formatter(label);\n }\n\n return label;\n};\n\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n var sign = mathSign(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n return sign * deltaAngle;\n};\n\nvar renderRadialLabel = function renderRadialLabel(labelProps, label, attrs) {\n var position = labelProps.position,\n viewBox = labelProps.viewBox,\n offset = labelProps.offset,\n className = labelProps.className;\n var _ref = viewBox,\n cx = _ref.cx,\n cy = _ref.cy,\n innerRadius = _ref.innerRadius,\n outerRadius = _ref.outerRadius,\n startAngle = _ref.startAngle,\n endAngle = _ref.endAngle,\n clockWise = _ref.clockWise;\n var radius = (innerRadius + outerRadius) / 2;\n var deltaAngle = getDeltaAngle(startAngle, endAngle);\n var sign = deltaAngle >= 0 ? 1 : -1;\n var labelAngle, direction;\n\n if (position === 'insideStart') {\n labelAngle = startAngle + sign * offset;\n direction = clockWise;\n } else if (position === 'insideEnd') {\n labelAngle = endAngle - sign * offset;\n direction = !clockWise;\n } else if (position === 'end') {\n labelAngle = endAngle + sign * offset;\n direction = clockWise;\n }\n\n direction = deltaAngle <= 0 ? direction : !direction;\n var startPoint = polarToCartesian(cx, cy, radius, labelAngle);\n var endPoint = polarToCartesian(cx, cy, radius, labelAngle + (direction ? 1 : -1) * 359);\n var path = \"M\".concat(startPoint.x, \",\").concat(startPoint.y, \"\\n A\").concat(radius, \",\").concat(radius, \",0,1,\").concat(direction ? 0 : 1, \",\\n \").concat(endPoint.x, \",\").concat(endPoint.y);\n var id = _isNil(labelProps.id) ? uniqueId('recharts-radial-line-') : labelProps.id;\n return /*#__PURE__*/React.createElement(\"text\", _extends({}, attrs, {\n dominantBaseline: \"central\",\n className: classNames('recharts-radial-bar-label', className)\n }), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"path\", {\n id: id,\n d: path\n })), /*#__PURE__*/React.createElement(\"textPath\", {\n xlinkHref: \"#\".concat(id)\n }, label));\n};\n\nvar getAttrsOfPolarLabel = function getAttrsOfPolarLabel(props) {\n var viewBox = props.viewBox,\n offset = props.offset,\n position = props.position;\n var _ref2 = viewBox,\n cx = _ref2.cx,\n cy = _ref2.cy,\n innerRadius = _ref2.innerRadius,\n outerRadius = _ref2.outerRadius,\n startAngle = _ref2.startAngle,\n endAngle = _ref2.endAngle;\n var midAngle = (startAngle + endAngle) / 2;\n\n if (position === 'outside') {\n var _polarToCartesian = polarToCartesian(cx, cy, outerRadius + offset, midAngle),\n _x = _polarToCartesian.x,\n _y = _polarToCartesian.y;\n\n return {\n x: _x,\n y: _y,\n textAnchor: _x >= cx ? 'start' : 'end',\n verticalAnchor: 'middle'\n };\n }\n\n if (position === 'center') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n };\n }\n\n if (position === 'centerTop') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'start'\n };\n }\n\n if (position === 'centerBottom') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'end'\n };\n }\n\n var r = (innerRadius + outerRadius) / 2;\n\n var _polarToCartesian2 = polarToCartesian(cx, cy, r, midAngle),\n x = _polarToCartesian2.x,\n y = _polarToCartesian2.y;\n\n return {\n x: x,\n y: y,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n };\n};\n\nvar getAttrsOfCartesianLabel = function getAttrsOfCartesianLabel(props) {\n var viewBox = props.viewBox,\n parentViewBox = props.parentViewBox,\n offset = props.offset,\n position = props.position;\n var _ref3 = viewBox,\n x = _ref3.x,\n y = _ref3.y,\n width = _ref3.width,\n height = _ref3.height; // Define vertical offsets and position inverts based on the value being positive or negative\n\n var verticalSign = height >= 0 ? 1 : -1;\n var verticalOffset = verticalSign * offset;\n var verticalEnd = verticalSign > 0 ? 'end' : 'start';\n var verticalStart = verticalSign > 0 ? 'start' : 'end'; // Define horizontal offsets and position inverts based on the value being positive or negative\n\n var horizontalSign = width >= 0 ? 1 : -1;\n var horizontalOffset = horizontalSign * offset;\n var horizontalEnd = horizontalSign > 0 ? 'end' : 'start';\n var horizontalStart = horizontalSign > 0 ? 'start' : 'end';\n\n if (position === 'top') {\n var attrs = {\n x: x + width / 2,\n y: y - verticalSign * offset,\n textAnchor: 'middle',\n verticalAnchor: verticalEnd\n };\n return _objectSpread(_objectSpread({}, attrs), parentViewBox ? {\n height: Math.max(y - parentViewBox.y, 0),\n width: width\n } : {});\n }\n\n if (position === 'bottom') {\n var _attrs = {\n x: x + width / 2,\n y: y + height + verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalStart\n };\n return _objectSpread(_objectSpread({}, _attrs), parentViewBox ? {\n height: Math.max(parentViewBox.y + parentViewBox.height - (y + height), 0),\n width: width\n } : {});\n }\n\n if (position === 'left') {\n var _attrs2 = {\n x: x - horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalEnd,\n verticalAnchor: 'middle'\n };\n return _objectSpread(_objectSpread({}, _attrs2), parentViewBox ? {\n width: Math.max(_attrs2.x - parentViewBox.x, 0),\n height: height\n } : {});\n }\n\n if (position === 'right') {\n var _attrs3 = {\n x: x + width + horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalStart,\n verticalAnchor: 'middle'\n };\n return _objectSpread(_objectSpread({}, _attrs3), parentViewBox ? {\n width: Math.max(parentViewBox.x + parentViewBox.width - _attrs3.x, 0),\n height: height\n } : {});\n }\n\n var sizeAttrs = parentViewBox ? {\n width: width,\n height: height\n } : {};\n\n if (position === 'insideLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalStart,\n verticalAnchor: 'middle'\n }, sizeAttrs);\n }\n\n if (position === 'insideRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalEnd,\n verticalAnchor: 'middle'\n }, sizeAttrs);\n }\n\n if (position === 'insideTop') {\n return _objectSpread({\n x: x + width / 2,\n y: y + verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n\n if (position === 'insideBottom') {\n return _objectSpread({\n x: x + width / 2,\n y: y + height - verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n\n if (position === 'insideTopLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + verticalOffset,\n textAnchor: horizontalStart,\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n\n if (position === 'insideTopRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + verticalOffset,\n textAnchor: horizontalEnd,\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n\n if (position === 'insideBottomLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + height - verticalOffset,\n textAnchor: horizontalStart,\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n\n if (position === 'insideBottomRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + height - verticalOffset,\n textAnchor: horizontalEnd,\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n\n if (_isObject(position) && (isNumber(position.x) || isPercent(position.x)) && (isNumber(position.y) || isPercent(position.y))) {\n return _objectSpread({\n x: x + getPercentValue(position.x, width),\n y: y + getPercentValue(position.y, height),\n textAnchor: 'end',\n verticalAnchor: 'end'\n }, sizeAttrs);\n }\n\n return _objectSpread({\n x: x + width / 2,\n y: y + height / 2,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n }, sizeAttrs);\n};\n\nvar isPolar = function isPolar(viewBox) {\n return isNumber(viewBox.cx);\n};\n\nexport function Label(props) {\n var viewBox = props.viewBox,\n position = props.position,\n value = props.value,\n children = props.children,\n content = props.content,\n _props$className = props.className,\n className = _props$className === void 0 ? '' : _props$className,\n textBreakAll = props.textBreakAll;\n\n if (!viewBox || _isNil(value) && _isNil(children) && ! /*#__PURE__*/isValidElement(content) && !_isFunction(content)) {\n return null;\n }\n\n if ( /*#__PURE__*/isValidElement(content)) {\n return /*#__PURE__*/cloneElement(content, props);\n }\n\n var label;\n\n if (_isFunction(content)) {\n label = /*#__PURE__*/createElement(content, props);\n\n if ( /*#__PURE__*/isValidElement(label)) {\n return label;\n }\n } else {\n label = getLabel(props);\n }\n\n var isPolarLabel = isPolar(viewBox);\n var attrs = filterProps(props, true);\n\n if (isPolarLabel && (position === 'insideStart' || position === 'insideEnd' || position === 'end')) {\n return renderRadialLabel(props, label, attrs);\n }\n\n var positionAttrs = isPolarLabel ? getAttrsOfPolarLabel(props) : getAttrsOfCartesianLabel(props);\n return /*#__PURE__*/React.createElement(Text, _extends({\n className: classNames('recharts-label', className)\n }, attrs, positionAttrs, {\n breakAll: textBreakAll\n }), label);\n}\nLabel.displayName = 'Label';\nLabel.defaultProps = {\n offset: 5\n};\n\nvar parseViewBox = function parseViewBox(props) {\n var cx = props.cx,\n cy = props.cy,\n angle = props.angle,\n startAngle = props.startAngle,\n endAngle = props.endAngle,\n r = props.r,\n radius = props.radius,\n innerRadius = props.innerRadius,\n outerRadius = props.outerRadius,\n x = props.x,\n y = props.y,\n top = props.top,\n left = props.left,\n width = props.width,\n height = props.height,\n clockWise = props.clockWise,\n labelViewBox = props.labelViewBox;\n\n if (labelViewBox) {\n return labelViewBox;\n }\n\n if (isNumber(width) && isNumber(height)) {\n if (isNumber(x) && isNumber(y)) {\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n }\n\n if (isNumber(top) && isNumber(left)) {\n return {\n x: top,\n y: left,\n width: width,\n height: height\n };\n }\n }\n\n if (isNumber(x) && isNumber(y)) {\n return {\n x: x,\n y: y,\n width: 0,\n height: 0\n };\n }\n\n if (isNumber(cx) && isNumber(cy)) {\n return {\n cx: cx,\n cy: cy,\n startAngle: startAngle || angle || 0,\n endAngle: endAngle || angle || 0,\n innerRadius: innerRadius || 0,\n outerRadius: outerRadius || radius || r || 0,\n clockWise: clockWise\n };\n }\n\n if (props.viewBox) {\n return props.viewBox;\n }\n\n return {};\n};\n\nvar parseLabel = function parseLabel(label, viewBox) {\n if (!label) {\n return null;\n }\n\n if (label === true) {\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox\n });\n }\n\n if (isNumOrStr(label)) {\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox,\n value: label\n });\n }\n\n if ( /*#__PURE__*/isValidElement(label)) {\n if (label.type === Label) {\n return /*#__PURE__*/cloneElement(label, {\n key: 'label-implicit',\n viewBox: viewBox\n });\n }\n\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n\n if (_isFunction(label)) {\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n\n if (_isObject(label)) {\n return /*#__PURE__*/React.createElement(Label, _extends({\n viewBox: viewBox\n }, label, {\n key: \"label-implicit\"\n }));\n }\n\n return null;\n};\n\nvar renderCallByParent = function renderCallByParent(parentProps, viewBox) {\n var checkPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (!parentProps || !parentProps.children && checkPropsLabel && !parentProps.label) {\n return null;\n }\n\n var children = parentProps.children;\n var parentViewBox = parseViewBox(parentProps);\n var explicitChildren = findAllByType(children, Label.displayName).map(function (child, index) {\n return /*#__PURE__*/cloneElement(child, {\n viewBox: viewBox || parentViewBox,\n key: \"label-\".concat(index)\n });\n });\n\n if (!checkPropsLabel) {\n return explicitChildren;\n }\n\n var implicitLabel = parseLabel(parentProps.label, viewBox || parentViewBox);\n return [implicitLabel].concat(_toConsumableArray(explicitChildren));\n};\n\nLabel.parseViewBox = parseViewBox;\nLabel.renderCallByParent = renderCallByParent;","import _isObject from \"lodash/isObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\nimport _last from \"lodash/last\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { cloneElement } from 'react';\nimport { Label } from './Label';\nimport { Layer } from '../container/Layer';\nimport { findAllByType } from '../util/ReactUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { filterProps } from '../util/types';\nvar defaultProps = {\n valueAccessor: function valueAccessor(entry) {\n return _isArray(entry.value) ? _last(entry.value) : entry.value;\n }\n};\nexport function LabelList(props) {\n var data = props.data,\n valueAccessor = props.valueAccessor,\n dataKey = props.dataKey,\n clockWise = props.clockWise,\n id = props.id,\n textBreakAll = props.textBreakAll,\n others = _objectWithoutProperties(props, [\"data\", \"valueAccessor\", \"dataKey\", \"clockWise\", \"id\", \"textBreakAll\"]);\n\n if (!data || !data.length) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-label-list\"\n }, data.map(function (entry, index) {\n var value = _isNil(dataKey) ? valueAccessor(entry, index) : getValueByDataKey(entry && entry.payload, dataKey);\n var idProps = _isNil(id) ? {} : {\n id: \"\".concat(id, \"-\").concat(index)\n };\n return /*#__PURE__*/React.createElement(Label, _extends({}, filterProps(entry, true), others, idProps, {\n parentViewBox: entry.parentViewBox,\n index: index,\n value: value,\n textBreakAll: textBreakAll,\n viewBox: Label.parseViewBox(_isNil(clockWise) ? entry : _objectSpread(_objectSpread({}, entry), {}, {\n clockWise: clockWise\n })),\n key: \"label-\".concat(index) // eslint-disable-line react/no-array-index-key\n\n }));\n }));\n}\nLabelList.displayName = 'LabelList';\n\nfunction parseLabelList(label, data) {\n if (!label) {\n return null;\n }\n\n if (label === true) {\n return /*#__PURE__*/React.createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data\n });\n }\n\n if ( /*#__PURE__*/React.isValidElement(label) || _isFunction(label)) {\n return /*#__PURE__*/React.createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data,\n content: label\n });\n }\n\n if (_isObject(label)) {\n return /*#__PURE__*/React.createElement(LabelList, _extends({\n data: data\n }, label, {\n key: \"labelList-implicit\"\n }));\n }\n\n return null;\n}\n\nfunction renderCallByParent(parentProps, data) {\n var ckeckPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (!parentProps || !parentProps.children && ckeckPropsLabel && !parentProps.label) {\n return null;\n }\n\n var children = parentProps.children;\n var explicitChilren = findAllByType(children, LabelList.displayName).map(function (child, index) {\n return /*#__PURE__*/cloneElement(child, {\n data: data,\n key: \"labelList-\".concat(index)\n });\n });\n\n if (!ckeckPropsLabel) {\n return explicitChilren;\n }\n\n var implicitLabelList = parseLabelList(parentProps.label, data);\n return [implicitLabelList].concat(_toConsumableArray(explicitChilren));\n}\n\nLabelList.renderCallByParent = renderCallByParent;\nLabelList.defaultProps = defaultProps;","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _upperFirst from \"lodash/upperFirst\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Curve\n */\nimport React, { PureComponent } from 'react';\nimport { symbol as shapeSymbol, symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye } from 'd3-shape';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/types';\nvar symbolFactories = {\n symbolCircle: symbolCircle,\n symbolCross: symbolCross,\n symbolDiamond: symbolDiamond,\n symbolSquare: symbolSquare,\n symbolStar: symbolStar,\n symbolTriangle: symbolTriangle,\n symbolWye: symbolWye\n};\nvar RADIAN = Math.PI / 180;\n\nvar getSymbolFactory = function getSymbolFactory(type) {\n var name = \"symbol\".concat(_upperFirst(type));\n return symbolFactories[name] || symbolCircle;\n};\n\nvar calculateAreaSize = function calculateAreaSize(size, sizeType, type) {\n if (sizeType === 'area') {\n return size;\n }\n\n switch (type) {\n case 'cross':\n return 5 * size * size / 9;\n\n case 'diamond':\n return 0.5 * size * size / Math.sqrt(3);\n\n case 'square':\n return size * size;\n\n case 'star':\n {\n var angle = 18 * RADIAN;\n return 1.25 * size * size * (Math.tan(angle) - Math.tan(angle * 2) * Math.pow(Math.tan(angle), 2));\n }\n\n case 'triangle':\n return Math.sqrt(3) * size * size / 4;\n\n case 'wye':\n return (21 - 10 * Math.sqrt(3)) * size * size / 8;\n\n default:\n return Math.PI * size * size / 4;\n }\n};\n\nexport var Symbols = /*#__PURE__*/function (_PureComponent) {\n _inherits(Symbols, _PureComponent);\n\n var _super = _createSuper(Symbols);\n\n function Symbols() {\n _classCallCheck(this, Symbols);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Symbols, [{\n key: \"getPath\",\n value:\n /**\n * Calculate the path of curve\n * @return {String} path\n */\n function getPath() {\n var _this$props = this.props,\n size = _this$props.size,\n sizeType = _this$props.sizeType,\n type = _this$props.type;\n var symbolFactory = getSymbolFactory(type);\n var symbol = shapeSymbol().type(symbolFactory).size(calculateAreaSize(size, sizeType, type));\n return symbol();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n className = _this$props2.className,\n cx = _this$props2.cx,\n cy = _this$props2.cy,\n size = _this$props2.size;\n\n if (cx === +cx && cy === +cy && size === +size) {\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(this.props, true), {\n className: classNames('recharts-symbols', className),\n transform: \"translate(\".concat(cx, \", \").concat(cy, \")\"),\n d: this.getPath()\n }));\n }\n\n return null;\n }\n }]);\n\n return Symbols;\n}(PureComponent);\nSymbols.defaultProps = {\n type: 'circle',\n size: 64,\n sizeType: 'area'\n};\n\nSymbols.registerSymbol = function (key, factory) {\n symbolFactories[\"symbol\".concat(_upperFirst(key))] = factory;\n};","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function(type, size) {\n var context = null;\n type = typeof type === \"function\" ? type : constant(type || circle);\n size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Default Legend Content\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { Surface } from '../container/Surface';\nimport { Symbols } from '../shape/Symbols';\nimport { adaptEventsOfChild } from '../util/types';\nvar SIZE = 32;\nexport var DefaultLegendContent = /*#__PURE__*/function (_PureComponent) {\n _inherits(DefaultLegendContent, _PureComponent);\n\n var _super = _createSuper(DefaultLegendContent);\n\n function DefaultLegendContent() {\n _classCallCheck(this, DefaultLegendContent);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(DefaultLegendContent, [{\n key: \"renderIcon\",\n value:\n /**\n * Render the path of icon\n * @param {Object} data Data of each legend item\n * @return {String} Path element\n */\n function renderIcon(data) {\n var inactiveColor = this.props.inactiveColor;\n var halfSize = SIZE / 2;\n var sixthSize = SIZE / 6;\n var thirdSize = SIZE / 3;\n var color = data.inactive ? inactiveColor : data.color;\n\n if (data.type === 'plainline') {\n return /*#__PURE__*/React.createElement(\"line\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n strokeDasharray: data.payload.strokeDasharray,\n x1: 0,\n y1: halfSize,\n x2: SIZE,\n y2: halfSize,\n className: \"recharts-legend-icon\"\n });\n }\n\n if (data.type === 'line') {\n return /*#__PURE__*/React.createElement(\"path\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n d: \"M0,\".concat(halfSize, \"h\").concat(thirdSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n H\").concat(SIZE, \"M\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(thirdSize, \",\").concat(halfSize),\n className: \"recharts-legend-icon\"\n });\n }\n\n if (data.type === 'rect') {\n return /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n fill: color,\n d: \"M0,\".concat(SIZE / 8, \"h\").concat(SIZE, \"v\").concat(SIZE * 3 / 4, \"h\").concat(-SIZE, \"z\"),\n className: \"recharts-legend-icon\"\n });\n }\n\n if ( /*#__PURE__*/React.isValidElement(data.legendIcon)) {\n var iconProps = _objectSpread({}, data);\n\n delete iconProps.legendIcon;\n return /*#__PURE__*/React.cloneElement(data.legendIcon, iconProps);\n }\n\n return /*#__PURE__*/React.createElement(Symbols, {\n fill: color,\n cx: halfSize,\n cy: halfSize,\n size: SIZE,\n sizeType: \"diameter\",\n type: data.type\n });\n }\n /**\n * Draw items of legend\n * @return {ReactElement} Items\n */\n\n }, {\n key: \"renderItems\",\n value: function renderItems() {\n var _this = this;\n\n var _this$props = this.props,\n payload = _this$props.payload,\n iconSize = _this$props.iconSize,\n layout = _this$props.layout,\n formatter = _this$props.formatter,\n inactiveColor = _this$props.inactiveColor;\n var viewBox = {\n x: 0,\n y: 0,\n width: SIZE,\n height: SIZE\n };\n var itemStyle = {\n display: layout === 'horizontal' ? 'inline-block' : 'block',\n marginRight: 10\n };\n var svgStyle = {\n display: 'inline-block',\n verticalAlign: 'middle',\n marginRight: 4\n };\n return payload.map(function (entry, i) {\n var _classNames;\n\n var finalFormatter = entry.formatter || formatter;\n var className = classNames((_classNames = {\n 'recharts-legend-item': true\n }, _defineProperty(_classNames, \"legend-item-\".concat(i), true), _defineProperty(_classNames, \"inactive\", entry.inactive), _classNames));\n\n if (entry.type === 'none') {\n return null;\n }\n\n var color = entry.inactive ? inactiveColor : entry.color;\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n className: className,\n style: itemStyle,\n key: \"legend-item-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n }, adaptEventsOfChild(_this.props, entry, i)), /*#__PURE__*/React.createElement(Surface, {\n width: iconSize,\n height: iconSize,\n viewBox: viewBox,\n style: svgStyle\n }, _this.renderIcon(entry)), /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-legend-item-text\",\n style: {\n color: color\n }\n }, finalFormatter ? finalFormatter(entry.value, entry, i) : entry.value));\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n payload = _this$props2.payload,\n layout = _this$props2.layout,\n align = _this$props2.align;\n\n if (!payload || !payload.length) {\n return null;\n }\n\n var finalStyle = {\n padding: 0,\n margin: 0,\n textAlign: layout === 'horizontal' ? align : 'left'\n };\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: \"recharts-default-legend\",\n style: finalStyle\n }, this.renderItems());\n }\n }]);\n\n return DefaultLegendContent;\n}(PureComponent);\nDefaultLegendContent.displayName = 'Legend';\nDefaultLegendContent.defaultProps = {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'middle',\n inactiveColor: '#ccc'\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isFunction from \"lodash/isFunction\";\nimport _uniqBy from \"lodash/uniqBy\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/**\n * @fileOverview Legend\n */\nimport React, { PureComponent } from 'react';\nimport { DefaultLegendContent } from './DefaultLegendContent';\nimport { isNumber } from '../util/DataUtils';\n\nfunction defaultUniqBy(entry) {\n return entry.value;\n}\n\nfunction getUniqPayload(option, payload) {\n if (option === true) {\n return _uniqBy(payload, defaultUniqBy);\n }\n\n if (_isFunction(option)) {\n return _uniqBy(payload, option);\n }\n\n return payload;\n}\n\nfunction renderContent(content, props) {\n if ( /*#__PURE__*/React.isValidElement(content)) {\n return /*#__PURE__*/React.cloneElement(content, props);\n }\n\n if (_isFunction(content)) {\n return /*#__PURE__*/React.createElement(content, props);\n }\n\n var ref = props.ref,\n otherProps = _objectWithoutProperties(props, [\"ref\"]);\n\n return /*#__PURE__*/React.createElement(DefaultLegendContent, otherProps);\n}\n\nvar EPS = 1;\nexport var Legend = /*#__PURE__*/function (_PureComponent) {\n _inherits(Legend, _PureComponent);\n\n var _super = _createSuper(Legend);\n\n function Legend() {\n var _this;\n\n _classCallCheck(this, Legend);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.wrapperNode = void 0;\n _this.state = {\n boxWidth: -1,\n boxHeight: -1\n };\n return _this;\n }\n\n _createClass(Legend, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.updateBBox();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.updateBBox();\n }\n }, {\n key: \"getBBox\",\n value: function getBBox() {\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n return this.wrapperNode.getBoundingClientRect();\n }\n\n return null;\n }\n }, {\n key: \"getBBoxSnapshot\",\n value: function getBBoxSnapshot() {\n var _this$state = this.state,\n boxWidth = _this$state.boxWidth,\n boxHeight = _this$state.boxHeight;\n\n if (boxWidth >= 0 && boxHeight >= 0) {\n return {\n width: boxWidth,\n height: boxHeight\n };\n }\n\n return null;\n }\n }, {\n key: \"getDefaultPosition\",\n value: function getDefaultPosition(style) {\n var _this$props = this.props,\n layout = _this$props.layout,\n align = _this$props.align,\n verticalAlign = _this$props.verticalAlign,\n margin = _this$props.margin,\n chartWidth = _this$props.chartWidth,\n chartHeight = _this$props.chartHeight;\n var hPos, vPos;\n\n if (!style || (style.left === undefined || style.left === null) && (style.right === undefined || style.right === null)) {\n if (align === 'center' && layout === 'vertical') {\n var _box = this.getBBoxSnapshot() || {\n width: 0\n };\n\n hPos = {\n left: ((chartWidth || 0) - _box.width) / 2\n };\n } else {\n hPos = align === 'right' ? {\n right: margin && margin.right || 0\n } : {\n left: margin && margin.left || 0\n };\n }\n }\n\n if (!style || (style.top === undefined || style.top === null) && (style.bottom === undefined || style.bottom === null)) {\n if (verticalAlign === 'middle') {\n var _box2 = this.getBBoxSnapshot() || {\n height: 0\n };\n\n vPos = {\n top: ((chartHeight || 0) - _box2.height) / 2\n };\n } else {\n vPos = verticalAlign === 'bottom' ? {\n bottom: margin && margin.bottom || 0\n } : {\n top: margin && margin.top || 0\n };\n }\n }\n\n return _objectSpread(_objectSpread({}, hPos), vPos);\n }\n }, {\n key: \"updateBBox\",\n value: function updateBBox() {\n var _this$state2 = this.state,\n boxWidth = _this$state2.boxWidth,\n boxHeight = _this$state2.boxHeight;\n var onBBoxUpdate = this.props.onBBoxUpdate;\n\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n var _box3 = this.wrapperNode.getBoundingClientRect();\n\n if (Math.abs(_box3.width - boxWidth) > EPS || Math.abs(_box3.height - boxHeight) > EPS) {\n this.setState({\n boxWidth: _box3.width,\n boxHeight: _box3.height\n }, function () {\n if (onBBoxUpdate) {\n onBBoxUpdate(_box3);\n }\n });\n }\n } else if (boxWidth !== -1 || boxHeight !== -1) {\n this.setState({\n boxWidth: -1,\n boxHeight: -1\n }, function () {\n if (onBBoxUpdate) {\n onBBoxUpdate(null);\n }\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n content = _this$props2.content,\n width = _this$props2.width,\n height = _this$props2.height,\n wrapperStyle = _this$props2.wrapperStyle,\n payloadUniqBy = _this$props2.payloadUniqBy,\n payload = _this$props2.payload;\n\n var outerStyle = _objectSpread(_objectSpread({\n position: 'absolute',\n width: width || 'auto',\n height: height || 'auto'\n }, this.getDefaultPosition(wrapperStyle)), wrapperStyle);\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"recharts-legend-wrapper\",\n style: outerStyle,\n ref: function ref(node) {\n _this2.wrapperNode = node;\n }\n }, renderContent(content, _objectSpread(_objectSpread({}, this.props), {}, {\n payload: getUniqPayload(payloadUniqBy, payload)\n })));\n }\n }], [{\n key: \"getWithHeight\",\n value: function getWithHeight(item, chartWidth) {\n var layout = item.props.layout;\n\n if (layout === 'vertical' && isNumber(item.props.height)) {\n return {\n height: item.props.height\n };\n }\n\n if (layout === 'horizontal') {\n return {\n width: item.props.width || chartWidth\n };\n }\n\n return null;\n }\n }]);\n\n return Legend;\n}(PureComponent);\nLegend.displayName = 'Legend';\nLegend.defaultProps = {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'bottom'\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isNil from \"lodash/isNil\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React, { Component } from 'react';\nimport reduceCSSCalc from 'reduce-css-calc';\nimport classNames from 'classnames';\nimport { isNumber, isNumOrStr } from '../util/DataUtils';\nimport { Global } from '../util/Global';\nimport { filterProps } from '../util/types';\nimport { getStringSize } from '../util/DOMUtils';\nvar BREAKING_SPACES = /[ \\f\\n\\r\\t\\v\\u2028\\u2029]+/;\n\nvar calculateWordWidths = function calculateWordWidths(props) {\n try {\n var words = [];\n\n if (!_isNil(props.children)) {\n if (props.breakAll) {\n words = props.children.toString().split('');\n } else {\n words = props.children.toString().split(BREAKING_SPACES);\n }\n }\n\n var wordsWithComputedWidth = words.map(function (word) {\n return {\n word: word,\n width: getStringSize(word, props.style).width\n };\n });\n var spaceWidth = props.breakAll ? 0 : getStringSize(\"\\xA0\", props.style).width;\n return {\n wordsWithComputedWidth: wordsWithComputedWidth,\n spaceWidth: spaceWidth\n };\n } catch (e) {\n return null;\n }\n};\n\nvar calculateWordsByLines = function calculateWordsByLines(props, initialWordsWithComputedWith, spaceWidth, lineWidth, scaleToFit) {\n var shouldLimitLines = isNumber(props.maxLines);\n var text = props.children;\n\n var calculate = function calculate() {\n var words = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return words.reduce(function (result, _ref) {\n var word = _ref.word,\n width = _ref.width;\n var currentLine = result[result.length - 1];\n\n if (currentLine && (lineWidth == null || scaleToFit || currentLine.width + width + spaceWidth < lineWidth)) {\n // Word can be added to an existing line\n currentLine.words.push(word);\n currentLine.width += width + spaceWidth;\n } else {\n // Add first word to line or word is too long to scaleToFit on existing line\n var newLine = {\n words: [word],\n width: width\n };\n result.push(newLine);\n }\n\n return result;\n }, []);\n };\n\n var originalResult = calculate(initialWordsWithComputedWith);\n\n var findLongestLine = function findLongestLine(words) {\n return words.reduce(function (a, b) {\n return a.width > b.width ? a : b;\n });\n };\n\n if (!shouldLimitLines) {\n return originalResult;\n }\n\n var suffix = '…';\n\n var checkOverflow = function checkOverflow(index) {\n var tempText = text.slice(0, index);\n var words = calculateWordWidths(_objectSpread(_objectSpread({}, props), {}, {\n children: tempText + suffix\n })).wordsWithComputedWidth;\n var result = calculate(words);\n var doesOverflow = result.length > props.maxLines || findLongestLine(result).width > lineWidth;\n return [doesOverflow, result];\n };\n\n var start = 0;\n var end = text.length - 1;\n var iterations = 0;\n var trimmedResult;\n\n while (start <= end && iterations <= text.length - 1) {\n var middle = Math.floor((start + end) / 2);\n var prev = middle - 1;\n\n var _checkOverflow = checkOverflow(prev),\n _checkOverflow2 = _slicedToArray(_checkOverflow, 2),\n doesPrevOverflow = _checkOverflow2[0],\n result = _checkOverflow2[1];\n\n var _checkOverflow3 = checkOverflow(middle),\n _checkOverflow4 = _slicedToArray(_checkOverflow3, 1),\n doesMiddleOverflow = _checkOverflow4[0];\n\n if (!doesPrevOverflow && !doesMiddleOverflow) {\n start = middle + 1;\n }\n\n if (doesPrevOverflow && doesMiddleOverflow) {\n end = middle - 1;\n }\n\n if (!doesPrevOverflow && doesMiddleOverflow) {\n trimmedResult = result;\n break;\n }\n\n iterations++;\n } // Fallback to originalResult (result without trimming) if we cannot find the\n // where to trim. This should not happen :tm:\n\n\n return trimmedResult || originalResult;\n};\n\nvar getWordsWithoutCalculate = function getWordsWithoutCalculate(children) {\n var words = !_isNil(children) ? children.toString().split(BREAKING_SPACES) : [];\n return [{\n words: words\n }];\n};\n\nvar getWordsByLines = function getWordsByLines(props, needCalculate) {\n // Only perform calculations if using features that require them (multiline, scaleToFit)\n if ((props.width || props.scaleToFit) && !Global.isSsr) {\n var wordsWithComputedWidth, spaceWidth;\n\n if (needCalculate) {\n var wordWidths = calculateWordWidths(props);\n\n if (wordWidths) {\n var wcw = wordWidths.wordsWithComputedWidth,\n sw = wordWidths.spaceWidth;\n wordsWithComputedWidth = wcw;\n spaceWidth = sw;\n } else {\n return getWordsWithoutCalculate(props.children);\n }\n\n return calculateWordsByLines(props, wordsWithComputedWidth, spaceWidth, props.width, props.scaleToFit);\n }\n }\n\n return getWordsWithoutCalculate(props.children);\n};\n\nexport var Text = /*#__PURE__*/function (_Component) {\n _inherits(Text, _Component);\n\n var _super = _createSuper(Text);\n\n function Text() {\n var _this;\n\n _classCallCheck(this, Text);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {};\n return _this;\n }\n\n _createClass(Text, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n dx = _this$props.dx,\n dy = _this$props.dy,\n textAnchor = _this$props.textAnchor,\n verticalAnchor = _this$props.verticalAnchor,\n scaleToFit = _this$props.scaleToFit,\n angle = _this$props.angle,\n lineHeight = _this$props.lineHeight,\n capHeight = _this$props.capHeight,\n className = _this$props.className,\n breakAll = _this$props.breakAll,\n textProps = _objectWithoutProperties(_this$props, [\"dx\", \"dy\", \"textAnchor\", \"verticalAnchor\", \"scaleToFit\", \"angle\", \"lineHeight\", \"capHeight\", \"className\", \"breakAll\"]);\n\n var wordsByLines = this.state.wordsByLines;\n\n if (!isNumOrStr(textProps.x) || !isNumOrStr(textProps.y)) {\n return null;\n }\n\n var x = textProps.x + (isNumber(dx) ? dx : 0);\n var y = textProps.y + (isNumber(dy) ? dy : 0);\n var startDy;\n\n switch (verticalAnchor) {\n case 'start':\n startDy = reduceCSSCalc(\"calc(\".concat(capHeight, \")\"));\n break;\n\n case 'middle':\n startDy = reduceCSSCalc(\"calc(\".concat((wordsByLines.length - 1) / 2, \" * -\").concat(lineHeight, \" + (\").concat(capHeight, \" / 2))\"));\n break;\n\n default:\n startDy = reduceCSSCalc(\"calc(\".concat(wordsByLines.length - 1, \" * -\").concat(lineHeight, \")\"));\n break;\n }\n\n var transforms = [];\n\n if (scaleToFit) {\n var lineWidth = wordsByLines[0].width;\n var width = this.props.width;\n transforms.push(\"scale(\".concat((isNumber(width) ? width / lineWidth : 1) / lineWidth, \")\"));\n }\n\n if (angle) {\n transforms.push(\"rotate(\".concat(angle, \", \").concat(x, \", \").concat(y, \")\"));\n }\n\n if (transforms.length) {\n textProps.transform = transforms.join(' ');\n }\n\n return /*#__PURE__*/React.createElement(\"text\", _extends({}, filterProps(textProps, true), {\n x: x,\n y: y,\n className: classNames('recharts-text', className),\n textAnchor: textAnchor\n }), wordsByLines.map(function (line, index) {\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"tspan\", {\n x: x,\n dy: index === 0 ? startDy : lineHeight,\n key: index\n }, line.words.join(breakAll ? '' : ' '))\n );\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.width !== prevState.prevWidth || nextProps.scaleToFit !== prevState.prevScaleToFit || nextProps.children !== prevState.prevChildren || nextProps.style !== prevState.prevStyle || nextProps.breakAll !== prevState.prevBreakAll) {\n var needCalculate = nextProps.children !== prevState.prevChildren || nextProps.style !== prevState.prevStyle || nextProps.breakAll !== prevState.prevBreakAll;\n return {\n prevWidth: nextProps.width,\n prevScaleToFit: nextProps.scaleToFit,\n prevChildren: nextProps.children,\n prevStyle: nextProps.style,\n wordsByLines: getWordsByLines(nextProps, needCalculate)\n };\n }\n\n return null;\n }\n }]);\n\n return Text;\n}(Component);\nText.defaultProps = {\n x: 0,\n y: 0,\n lineHeight: '1em',\n capHeight: '0.71em',\n // Magic number from d3\n scaleToFit: false,\n textAnchor: 'start',\n verticalAnchor: 'end' // Maintain compat with existing charts / default SVG behavior\n\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/**\n * @fileOverview Layer\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/types';\nexport function Layer(props) {\n var children = props.children,\n className = props.className,\n others = _objectWithoutProperties(props, [\"children\", \"className\"]);\n\n var layerClass = classNames('recharts-layer', className);\n return /*#__PURE__*/React.createElement(\"g\", _extends({\n className: layerClass\n }, filterProps(others, true)), children);\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/**\n * @fileOverview Surface\n */\nimport React from 'react';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/types';\nexport function Surface(props) {\n var children = props.children,\n width = props.width,\n height = props.height,\n viewBox = props.viewBox,\n className = props.className,\n style = props.style,\n others = _objectWithoutProperties(props, [\"children\", \"width\", \"height\", \"viewBox\", \"className\", \"style\"]);\n\n var svgView = viewBox || {\n width: width,\n height: height,\n x: 0,\n y: 0\n };\n var layerClass = classNames('recharts-surface', className);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({}, filterProps(others, true, true), {\n className: layerClass,\n width: width,\n height: height,\n style: style,\n viewBox: \"\".concat(svgView.x, \" \").concat(svgView.y, \" \").concat(svgView.width, \" \").concat(svgView.height),\n version: \"1.1\"\n }), children);\n}","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isArray from \"lodash/isArray\";\nimport _upperFirst from \"lodash/upperFirst\";\nimport _isFunction from \"lodash/isFunction\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Curve\n */\nimport React, { PureComponent } from 'react';\nimport { line as shapeLine, area as shapeArea, curveBasisClosed, curveBasisOpen, curveBasis, curveLinearClosed, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore } from 'd3-shape';\nimport classNames from 'classnames';\nimport { adaptEventHandlers, filterProps } from '../util/types';\nimport { isNumber } from '../util/DataUtils';\nvar CURVE_FACTORIES = {\n curveBasisClosed: curveBasisClosed,\n curveBasisOpen: curveBasisOpen,\n curveBasis: curveBasis,\n curveLinearClosed: curveLinearClosed,\n curveLinear: curveLinear,\n curveMonotoneX: curveMonotoneX,\n curveMonotoneY: curveMonotoneY,\n curveNatural: curveNatural,\n curveStep: curveStep,\n curveStepAfter: curveStepAfter,\n curveStepBefore: curveStepBefore\n};\n\nvar defined = function defined(p) {\n return p.x === +p.x && p.y === +p.y;\n};\n\nvar getX = function getX(p) {\n return p.x;\n};\n\nvar getY = function getY(p) {\n return p.y;\n};\n\nvar getCurveFactory = function getCurveFactory(type, layout) {\n if (_isFunction(type)) {\n return type;\n }\n\n var name = \"curve\".concat(_upperFirst(type));\n\n if (name === 'curveMonotone' && layout) {\n return CURVE_FACTORIES[\"\".concat(name).concat(layout === 'vertical' ? 'Y' : 'X')];\n }\n\n return CURVE_FACTORIES[name] || curveLinear;\n};\n\nexport var Curve = /*#__PURE__*/function (_PureComponent) {\n _inherits(Curve, _PureComponent);\n\n var _super = _createSuper(Curve);\n\n function Curve() {\n _classCallCheck(this, Curve);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Curve, [{\n key: \"getPath\",\n value:\n /**\n * Calculate the path of curve\n * @return {String} path\n */\n function getPath() {\n var _this$props = this.props,\n type = _this$props.type,\n points = _this$props.points,\n baseLine = _this$props.baseLine,\n layout = _this$props.layout,\n connectNulls = _this$props.connectNulls;\n var curveFactory = getCurveFactory(type, layout);\n var formatPoints = connectNulls ? points.filter(function (entry) {\n return defined(entry);\n }) : points;\n var lineFunction;\n\n if (_isArray(baseLine)) {\n var formatBaseLine = connectNulls ? baseLine.filter(function (base) {\n return defined(base);\n }) : baseLine;\n var areaPoints = formatPoints.map(function (entry, index) {\n return _objectSpread(_objectSpread({}, entry), {}, {\n base: formatBaseLine[index]\n });\n });\n\n if (layout === 'vertical') {\n lineFunction = shapeArea().y(getY).x1(getX).x0(function (d) {\n return d.base.x;\n });\n } else {\n lineFunction = shapeArea().x(getX).y1(getY).y0(function (d) {\n return d.base.y;\n });\n }\n\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(areaPoints);\n }\n\n if (layout === 'vertical' && isNumber(baseLine)) {\n lineFunction = shapeArea().y(getY).x1(getX).x0(baseLine);\n } else if (isNumber(baseLine)) {\n lineFunction = shapeArea().x(getX).y1(getY).y0(baseLine);\n } else {\n lineFunction = shapeLine().x(getX).y(getY);\n }\n\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(formatPoints);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n className = _this$props2.className,\n points = _this$props2.points,\n path = _this$props2.path,\n pathRef = _this$props2.pathRef;\n\n if ((!points || !points.length) && !path) {\n return null;\n }\n\n var realPath = points && points.length ? this.getPath() : path;\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(this.props), adaptEventHandlers(this.props), {\n className: classNames('recharts-curve', className),\n d: realPath,\n ref: pathRef\n }));\n }\n }]);\n\n return Curve;\n}(PureComponent);\nCurve.defaultProps = {\n type: 'linear',\n points: [],\n connectNulls: false\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Dot\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { adaptEventHandlers, filterProps } from '../util/types';\nexport var Dot = /*#__PURE__*/function (_PureComponent) {\n _inherits(Dot, _PureComponent);\n\n var _super = _createSuper(Dot);\n\n function Dot() {\n _classCallCheck(this, Dot);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Dot, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n cx = _this$props.cx,\n cy = _this$props.cy,\n r = _this$props.r,\n className = _this$props.className;\n var layerClass = classNames('recharts-dot', className);\n\n if (cx === +cx && cy === +cy && r === +r) {\n return /*#__PURE__*/React.createElement(\"circle\", _extends({}, filterProps(this.props), adaptEventHandlers(this.props), {\n className: layerClass,\n cx: cx,\n cy: cy,\n r: r\n }));\n }\n\n return null;\n }\n }]);\n\n return Dot;\n}(PureComponent);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Rectangle\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport Animate from 'react-smooth';\nimport { filterProps } from '../util/types';\n\nvar getRectanglePath = function getRectanglePath(x, y, width, height, radius) {\n var maxRadius = Math.min(Math.abs(width) / 2, Math.abs(height) / 2);\n var ySign = height >= 0 ? 1 : -1;\n var xSign = width >= 0 ? 1 : -1;\n var clockWise = height >= 0 && width >= 0 || height < 0 && width < 0 ? 1 : 0;\n var path;\n\n if (maxRadius > 0 && radius instanceof Array) {\n var newRadius = [0, 0, 0, 0];\n\n for (var i = 0, len = 4; i < len; i++) {\n newRadius[i] = radius[i] > maxRadius ? maxRadius : radius[i];\n }\n\n path = \"M\".concat(x, \",\").concat(y + ySign * newRadius[0]);\n\n if (newRadius[0] > 0) {\n path += \"A \".concat(newRadius[0], \",\").concat(newRadius[0], \",0,0,\").concat(clockWise, \",\").concat(x + xSign * newRadius[0], \",\").concat(y);\n }\n\n path += \"L \".concat(x + width - xSign * newRadius[1], \",\").concat(y);\n\n if (newRadius[1] > 0) {\n path += \"A \".concat(newRadius[1], \",\").concat(newRadius[1], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width, \",\").concat(y + ySign * newRadius[1]);\n }\n\n path += \"L \".concat(x + width, \",\").concat(y + height - ySign * newRadius[2]);\n\n if (newRadius[2] > 0) {\n path += \"A \".concat(newRadius[2], \",\").concat(newRadius[2], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width - xSign * newRadius[2], \",\").concat(y + height);\n }\n\n path += \"L \".concat(x + xSign * newRadius[3], \",\").concat(y + height);\n\n if (newRadius[3] > 0) {\n path += \"A \".concat(newRadius[3], \",\").concat(newRadius[3], \",0,0,\").concat(clockWise, \",\\n \").concat(x, \",\").concat(y + height - ySign * newRadius[3]);\n }\n\n path += 'Z';\n } else if (maxRadius > 0 && radius === +radius && radius > 0) {\n var _newRadius = Math.min(maxRadius, radius);\n\n path = \"M \".concat(x, \",\").concat(y + ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + xSign * _newRadius, \",\").concat(y, \"\\n L \").concat(x + width - xSign * _newRadius, \",\").concat(y, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width, \",\").concat(y + ySign * _newRadius, \"\\n L \").concat(x + width, \",\").concat(y + height - ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width - xSign * _newRadius, \",\").concat(y + height, \"\\n L \").concat(x + xSign * _newRadius, \",\").concat(y + height, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x, \",\").concat(y + height - ySign * _newRadius, \" Z\");\n } else {\n path = \"M \".concat(x, \",\").concat(y, \" h \").concat(width, \" v \").concat(height, \" h \").concat(-width, \" Z\");\n }\n\n return path;\n};\n\nexport var isInRectangle = function isInRectangle(point, rect) {\n if (!point || !rect) {\n return false;\n }\n\n var px = point.x,\n py = point.y;\n var x = rect.x,\n y = rect.y,\n width = rect.width,\n height = rect.height;\n\n if (Math.abs(width) > 0 && Math.abs(height) > 0) {\n var minX = Math.min(x, x + width);\n var maxX = Math.max(x, x + width);\n var minY = Math.min(y, y + height);\n var maxY = Math.max(y, y + height);\n return px >= minX && px <= maxX && py >= minY && py <= maxY;\n }\n\n return false;\n};\nexport var Rectangle = /*#__PURE__*/function (_PureComponent) {\n _inherits(Rectangle, _PureComponent);\n\n var _super = _createSuper(Rectangle);\n\n function Rectangle() {\n var _this;\n\n _classCallCheck(this, Rectangle);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n totalLength: -1\n };\n _this.node = void 0;\n return _this;\n }\n\n _createClass(Rectangle, [{\n key: \"componentDidMount\",\n value:\n /* eslint-disable react/no-did-mount-set-state */\n function componentDidMount() {\n if (this.node && this.node.getTotalLength) {\n try {\n var totalLength = this.node.getTotalLength();\n\n if (totalLength) {\n this.setState({\n totalLength: totalLength\n });\n }\n } catch (err) {// calculate total length error\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n x = _this$props.x,\n y = _this$props.y,\n width = _this$props.width,\n height = _this$props.height,\n radius = _this$props.radius,\n className = _this$props.className;\n var totalLength = this.state.totalLength;\n var _this$props2 = this.props,\n animationEasing = _this$props2.animationEasing,\n animationDuration = _this$props2.animationDuration,\n animationBegin = _this$props2.animationBegin,\n isAnimationActive = _this$props2.isAnimationActive,\n isUpdateAnimationActive = _this$props2.isUpdateAnimationActive;\n\n if (x !== +x || y !== +y || width !== +width || height !== +height || width === 0 || height === 0) {\n return null;\n }\n\n var layerClass = classNames('recharts-rectangle', className);\n\n if (!isUpdateAnimationActive) {\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(this.props, true), {\n className: layerClass,\n d: getRectanglePath(x, y, width, height, radius)\n }));\n }\n\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n to: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n duration: animationDuration,\n animationEasing: animationEasing,\n isActive: isUpdateAnimationActive\n }, function (_ref) {\n var currWidth = _ref.width,\n currHeight = _ref.height,\n currX = _ref.x,\n currY = _ref.y;\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: \"0px \".concat(totalLength === -1 ? 1 : totalLength, \"px\"),\n to: \"\".concat(totalLength, \"px 0px\"),\n attributeName: \"strokeDasharray\",\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing\n }, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(_this2.props, true), {\n className: layerClass,\n d: getRectanglePath(currX, currY, currWidth, currHeight, radius),\n ref: function ref(node) {\n _this2.node = node;\n }\n })));\n });\n }\n }]);\n\n return Rectangle;\n}(PureComponent);\nRectangle.defaultProps = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n // The radius of border\n // The radius of four corners when radius is a number\n // The radius of left-top, right-top, right-bottom, left-bottom when radius is an array\n radius: 0,\n isAnimationActive: false,\n isUpdateAnimationActive: false,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease'\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * @fileOverview Sector\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/types';\nimport { polarToCartesian, RADIAN } from '../util/PolarUtils';\nimport { getPercentValue, mathSign } from '../util/DataUtils';\n\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n var sign = mathSign(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 359.999);\n return sign * deltaAngle;\n};\n\nvar getTangentCircle = function getTangentCircle(_ref) {\n var cx = _ref.cx,\n cy = _ref.cy,\n radius = _ref.radius,\n angle = _ref.angle,\n sign = _ref.sign,\n isExternal = _ref.isExternal,\n cornerRadius = _ref.cornerRadius,\n cornerIsExternal = _ref.cornerIsExternal;\n var centerRadius = cornerRadius * (isExternal ? 1 : -1) + radius;\n var theta = Math.asin(cornerRadius / centerRadius) / RADIAN;\n var centerAngle = cornerIsExternal ? angle : angle + sign * theta;\n var center = polarToCartesian(cx, cy, centerRadius, centerAngle); // The coordinate of point which is tangent to the circle\n\n var circleTangency = polarToCartesian(cx, cy, radius, centerAngle); // The coordinate of point which is tangent to the radius line\n\n var lineTangencyAngle = cornerIsExternal ? angle - sign * theta : angle;\n var lineTangency = polarToCartesian(cx, cy, centerRadius * Math.cos(theta * RADIAN), lineTangencyAngle);\n return {\n center: center,\n circleTangency: circleTangency,\n lineTangency: lineTangency,\n theta: theta\n };\n};\n\nvar getSectorPath = function getSectorPath(_ref2) {\n var cx = _ref2.cx,\n cy = _ref2.cy,\n innerRadius = _ref2.innerRadius,\n outerRadius = _ref2.outerRadius,\n startAngle = _ref2.startAngle,\n endAngle = _ref2.endAngle;\n var angle = getDeltaAngle(startAngle, endAngle); // When the angle of sector equals to 360, star point and end point coincide\n\n var tempEndAngle = startAngle + angle;\n var outerStartPoint = polarToCartesian(cx, cy, outerRadius, startAngle);\n var outerEndPoint = polarToCartesian(cx, cy, outerRadius, tempEndAngle);\n var path = \"M \".concat(outerStartPoint.x, \",\").concat(outerStartPoint.y, \"\\n A \").concat(outerRadius, \",\").concat(outerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle > tempEndAngle), \",\\n \").concat(outerEndPoint.x, \",\").concat(outerEndPoint.y, \"\\n \");\n\n if (innerRadius > 0) {\n var innerStartPoint = polarToCartesian(cx, cy, innerRadius, startAngle);\n var innerEndPoint = polarToCartesian(cx, cy, innerRadius, tempEndAngle);\n path += \"L \".concat(innerEndPoint.x, \",\").concat(innerEndPoint.y, \"\\n A \").concat(innerRadius, \",\").concat(innerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle <= tempEndAngle), \",\\n \").concat(innerStartPoint.x, \",\").concat(innerStartPoint.y, \" Z\");\n } else {\n path += \"L \".concat(cx, \",\").concat(cy, \" Z\");\n }\n\n return path;\n};\n\nvar getSectorWithCorner = function getSectorWithCorner(_ref3) {\n var cx = _ref3.cx,\n cy = _ref3.cy,\n innerRadius = _ref3.innerRadius,\n outerRadius = _ref3.outerRadius,\n cornerRadius = _ref3.cornerRadius,\n forceCornerRadius = _ref3.forceCornerRadius,\n cornerIsExternal = _ref3.cornerIsExternal,\n startAngle = _ref3.startAngle,\n endAngle = _ref3.endAngle;\n var sign = mathSign(endAngle - startAngle);\n\n var _getTangentCircle = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: outerRadius,\n angle: startAngle,\n sign: sign,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n soct = _getTangentCircle.circleTangency,\n solt = _getTangentCircle.lineTangency,\n sot = _getTangentCircle.theta;\n\n var _getTangentCircle2 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: outerRadius,\n angle: endAngle,\n sign: -sign,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n eoct = _getTangentCircle2.circleTangency,\n eolt = _getTangentCircle2.lineTangency,\n eot = _getTangentCircle2.theta;\n\n var outerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sot - eot;\n\n if (outerArcAngle < 0) {\n if (forceCornerRadius) {\n return \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(cornerRadius * 2, \",0\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(-cornerRadius * 2, \",0\\n \");\n }\n\n return getSectorPath({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n }\n\n var path = \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(soct.x, \",\").concat(soct.y, \"\\n A\").concat(outerRadius, \",\").concat(outerRadius, \",0,\").concat(+(outerArcAngle > 180), \",\").concat(+(sign < 0), \",\").concat(eoct.x, \",\").concat(eoct.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eolt.x, \",\").concat(eolt.y, \"\\n \");\n\n if (innerRadius > 0) {\n var _getTangentCircle3 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: innerRadius,\n angle: startAngle,\n sign: sign,\n isExternal: true,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n sict = _getTangentCircle3.circleTangency,\n silt = _getTangentCircle3.lineTangency,\n sit = _getTangentCircle3.theta;\n\n var _getTangentCircle4 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: innerRadius,\n angle: endAngle,\n sign: -sign,\n isExternal: true,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n eict = _getTangentCircle4.circleTangency,\n eilt = _getTangentCircle4.lineTangency,\n eit = _getTangentCircle4.theta;\n\n var innerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sit - eit;\n\n if (innerArcAngle < 0 && cornerRadius === 0) {\n return \"\".concat(path, \"L\").concat(cx, \",\").concat(cy, \"Z\");\n }\n\n path += \"L\".concat(eilt.x, \",\").concat(eilt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eict.x, \",\").concat(eict.y, \"\\n A\").concat(innerRadius, \",\").concat(innerRadius, \",0,\").concat(+(innerArcAngle > 180), \",\").concat(+(sign > 0), \",\").concat(sict.x, \",\").concat(sict.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(silt.x, \",\").concat(silt.y, \"Z\");\n } else {\n path += \"L\".concat(cx, \",\").concat(cy, \"Z\");\n }\n\n return path;\n};\n\nexport var Sector = /*#__PURE__*/function (_PureComponent) {\n _inherits(Sector, _PureComponent);\n\n var _super = _createSuper(Sector);\n\n function Sector() {\n _classCallCheck(this, Sector);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Sector, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n cx = _this$props.cx,\n cy = _this$props.cy,\n innerRadius = _this$props.innerRadius,\n outerRadius = _this$props.outerRadius,\n cornerRadius = _this$props.cornerRadius,\n forceCornerRadius = _this$props.forceCornerRadius,\n cornerIsExternal = _this$props.cornerIsExternal,\n startAngle = _this$props.startAngle,\n endAngle = _this$props.endAngle,\n className = _this$props.className;\n\n if (outerRadius < innerRadius || startAngle === endAngle) {\n return null;\n }\n\n var layerClass = classNames('recharts-sector', className);\n var deltaRadius = outerRadius - innerRadius;\n var cr = getPercentValue(cornerRadius, deltaRadius, 0, true);\n var path;\n\n if (cr > 0 && Math.abs(startAngle - endAngle) < 360) {\n path = getSectorWithCorner({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n cornerRadius: Math.min(cr, deltaRadius / 2),\n forceCornerRadius: forceCornerRadius,\n cornerIsExternal: cornerIsExternal,\n startAngle: startAngle,\n endAngle: endAngle\n });\n } else {\n path = getSectorPath({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n }\n\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(this.props, true), {\n className: layerClass,\n d: path\n }));\n }\n }]);\n\n return Sector;\n}(PureComponent);\nSector.defaultProps = {\n cx: 0,\n cy: 0,\n innerRadius: 0,\n outerRadius: 0,\n startAngle: 0,\n endAngle: 0,\n cornerRadius: 0,\n forceCornerRadius: false,\n cornerIsExternal: false\n};","import _every from \"lodash/every\";\nimport _mapValues from \"lodash/mapValues\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { getTicksOfScale, parseScale, checkDomainOfScale, getBandSizeOfAxis } from './ChartUtils';\nimport { findChildByType } from './ReactUtils';\n\n/**\n * Calculate the scale function, position, width, height of axes\n * @param {Object} props Latest props\n * @param {Object} axisMap The configuration of axes\n * @param {Object} offset The offset of main part in the svg element\n * @param {String} axisType The type of axes, x-axis or y-axis\n * @param {String} chartName The name of chart\n * @return {Object} Configuration\n */\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width,\n height = props.height,\n layout = props.layout,\n children = props.children;\n var ids = Object.keys(axisMap);\n var steps = {\n left: offset.left,\n leftMirror: offset.left,\n right: width - offset.right,\n rightMirror: width - offset.right,\n top: offset.top,\n topMirror: offset.top,\n bottom: height - offset.bottom,\n bottomMirror: height - offset.bottom\n };\n var hasBar = !!findChildByType(children, 'Bar');\n return ids.reduce(function (result, id) {\n var axis = axisMap[id];\n var orientation = axis.orientation,\n domain = axis.domain,\n _axis$padding = axis.padding,\n padding = _axis$padding === void 0 ? {} : _axis$padding,\n mirror = axis.mirror,\n reversed = axis.reversed;\n var offsetKey = \"\".concat(orientation).concat(mirror ? 'Mirror' : '');\n var range, x, y, needSpace;\n\n if (axisType === 'xAxis') {\n range = [offset.left + (padding.left || 0), offset.left + offset.width - (padding.right || 0)];\n } else if (axisType === 'yAxis') {\n range = layout === 'horizontal' ? [offset.top + offset.height - (padding.bottom || 0), offset.top + (padding.top || 0)] : [offset.top + (padding.top || 0), offset.top + offset.height - (padding.bottom || 0)];\n } else {\n range = axis.range;\n }\n\n if (reversed) {\n range = [range[1], range[0]];\n }\n\n var _parseScale = parseScale(axis, chartName, hasBar),\n scale = _parseScale.scale,\n realScaleType = _parseScale.realScaleType;\n\n scale.domain(domain).range(range);\n checkDomainOfScale(scale);\n var ticks = getTicksOfScale(scale, _objectSpread(_objectSpread({}, axis), {}, {\n realScaleType: realScaleType\n }));\n\n if (axisType === 'xAxis') {\n needSpace = orientation === 'top' && !mirror || orientation === 'bottom' && mirror;\n x = offset.left;\n y = steps[offsetKey] - needSpace * axis.height;\n } else if (axisType === 'yAxis') {\n needSpace = orientation === 'left' && !mirror || orientation === 'right' && mirror;\n x = steps[offsetKey] - needSpace * axis.width;\n y = offset.top;\n }\n\n var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n realScaleType: realScaleType,\n x: x,\n y: y,\n scale: scale,\n width: axisType === 'xAxis' ? offset.width : axis.width,\n height: axisType === 'yAxis' ? offset.height : axis.height\n });\n\n finalAxis.bandSize = getBandSizeOfAxis(finalAxis, ticks);\n\n if (!axis.hide && axisType === 'xAxis') {\n steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.height;\n } else if (!axis.hide) {\n steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.width;\n }\n\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n }, {});\n};\nexport var rectWithPoints = function rectWithPoints(_ref, _ref2) {\n var x1 = _ref.x,\n y1 = _ref.y;\n var x2 = _ref2.x,\n y2 = _ref2.y;\n return {\n x: Math.min(x1, x2),\n y: Math.min(y1, y2),\n width: Math.abs(x2 - x1),\n height: Math.abs(y2 - y1)\n };\n};\n/**\n * Compute the x, y, width, and height of a box from two reference points.\n * @param {Object} coords x1, x2, y1, and y2\n * @return {Object} object\n */\n\nexport var rectWithCoords = function rectWithCoords(_ref3) {\n var x1 = _ref3.x1,\n y1 = _ref3.y1,\n x2 = _ref3.x2,\n y2 = _ref3.y2;\n return rectWithPoints({\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n });\n};\nexport var ScaleHelper = /*#__PURE__*/function () {\n function ScaleHelper(scale) {\n _classCallCheck(this, ScaleHelper);\n\n this.scale = void 0;\n this.scale = scale;\n }\n\n _createClass(ScaleHelper, [{\n key: \"domain\",\n get: function get() {\n return this.scale.domain;\n }\n }, {\n key: \"range\",\n get: function get() {\n return this.scale.range;\n }\n }, {\n key: \"rangeMin\",\n get: function get() {\n return this.range()[0];\n }\n }, {\n key: \"rangeMax\",\n get: function get() {\n return this.range()[1];\n }\n }, {\n key: \"bandwidth\",\n get: function get() {\n return this.scale.bandwidth;\n }\n }, {\n key: \"apply\",\n value: function apply(value) {\n var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n bandAware = _ref4.bandAware,\n position = _ref4.position;\n\n if (value === undefined) {\n return undefined;\n }\n\n if (position) {\n switch (position) {\n case 'start':\n {\n return this.scale(value);\n }\n\n case 'middle':\n {\n var offset = this.bandwidth ? this.bandwidth() / 2 : 0;\n return this.scale(value) + offset;\n }\n\n case 'end':\n {\n var _offset = this.bandwidth ? this.bandwidth() : 0;\n\n return this.scale(value) + _offset;\n }\n\n default:\n {\n return this.scale(value);\n }\n }\n }\n\n if (bandAware) {\n var _offset2 = this.bandwidth ? this.bandwidth() / 2 : 0;\n\n return this.scale(value) + _offset2;\n }\n\n return this.scale(value);\n }\n }, {\n key: \"isInRange\",\n value: function isInRange(value) {\n var range = this.range();\n var first = range[0];\n var last = range[range.length - 1];\n return first <= last ? value >= first && value <= last : value >= last && value <= first;\n }\n }], [{\n key: \"create\",\n value: function create(obj) {\n return new ScaleHelper(obj);\n }\n }]);\n\n return ScaleHelper;\n}();\nScaleHelper.EPS = 1e-4;\nexport var createLabeledScales = function createLabeledScales(options) {\n var scales = Object.keys(options).reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, ScaleHelper.create(options[key])));\n }, {});\n return _objectSpread(_objectSpread({}, scales), {}, {\n apply: function apply(coord) {\n var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n bandAware = _ref5.bandAware;\n\n return _mapValues(coord, function (value, label) {\n return scales[label].apply(value, {\n bandAware: bandAware\n });\n });\n },\n isInRange: function isInRange(coord) {\n return _every(coord, function (value, label) {\n return scales[label].isInRange(value);\n });\n }\n });\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar identity = function identity(i) {\n return i;\n};\n\nexport var PLACE_HOLDER = {\n '@@functional/placeholder': true\n};\n\nvar isPlaceHolder = function isPlaceHolder(val) {\n return val === PLACE_HOLDER;\n};\n\nvar curry0 = function curry0(fn) {\n return function _curried() {\n if (arguments.length === 0 || arguments.length === 1 && isPlaceHolder(arguments.length <= 0 ? undefined : arguments[0])) {\n return _curried;\n }\n\n return fn.apply(void 0, arguments);\n };\n};\n\nvar curryN = function curryN(n, fn) {\n if (n === 1) {\n return fn;\n }\n\n return curry0(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var argsLength = args.filter(function (arg) {\n return arg !== PLACE_HOLDER;\n }).length;\n\n if (argsLength >= n) {\n return fn.apply(void 0, args);\n }\n\n return curryN(n - argsLength, curry0(function () {\n for (var _len2 = arguments.length, restArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n restArgs[_key2] = arguments[_key2];\n }\n\n var newArgs = args.map(function (arg) {\n return isPlaceHolder(arg) ? restArgs.shift() : arg;\n });\n return fn.apply(void 0, _toConsumableArray(newArgs).concat(restArgs));\n }));\n });\n};\n\nexport var curry = function curry(fn) {\n return curryN(fn.length, fn);\n};\nexport var range = function range(begin, end) {\n var arr = [];\n\n for (var i = begin; i < end; ++i) {\n arr[i - begin] = i;\n }\n\n return arr;\n};\nexport var map = curry(function (fn, arr) {\n if (Array.isArray(arr)) {\n return arr.map(fn);\n }\n\n return Object.keys(arr).map(function (key) {\n return arr[key];\n }).map(fn);\n});\nexport var compose = function compose() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n if (!args.length) {\n return identity;\n }\n\n var fns = args.reverse(); // first function can receive multiply arguments\n\n var firstFn = fns[0];\n var tailsFn = fns.slice(1);\n return function () {\n return tailsFn.reduce(function (res, fn) {\n return fn(res);\n }, firstFn.apply(void 0, arguments));\n };\n};\nexport var reverse = function reverse(arr) {\n if (Array.isArray(arr)) {\n return arr.reverse();\n } // can be string\n\n\n return arr.split('').reverse.join('');\n};\nexport var memoize = function memoize(fn) {\n var lastArgs = null;\n var lastResult = null;\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n if (lastArgs && args.every(function (val, i) {\n return val === lastArgs[i];\n })) {\n return lastResult;\n }\n\n lastArgs = args;\n lastResult = fn.apply(void 0, args);\n return lastResult;\n };\n};","/**\n * @fileOverview 一些公用的运算方法\n * @author xile611\n * @date 2015-09-17\n */\nimport Decimal from 'decimal.js-light';\nimport { curry } from './utils';\n/**\n * 获取数值的位数\n * 其中绝对值属于区间[0.1, 1), 得到的值为0\n * 绝对值属于区间[0.01, 0.1),得到的位数为 -1\n * 绝对值属于区间[0.001, 0.01),得到的位数为 -2\n *\n * @param {Number} value 数值\n * @return {Integer} 位数\n */\n\nfunction getDigitCount(value) {\n var result;\n\n if (value === 0) {\n result = 1;\n } else {\n result = Math.floor(new Decimal(value).abs().log(10).toNumber()) + 1;\n }\n\n return result;\n}\n/**\n * 按照固定的步长获取[start, end)这个区间的数据\n * 并且需要处理js计算精度的问题\n *\n * @param {Decimal} start 起点\n * @param {Decimal} end 终点,不包含该值\n * @param {Decimal} step 步长\n * @return {Array} 若干数值\n */\n\n\nfunction rangeStep(start, end, step) {\n var num = new Decimal(start);\n var i = 0;\n var result = []; // magic number to prevent infinite loop\n\n while (num.lt(end) && i < 100000) {\n result.push(num.toNumber());\n num = num.add(step);\n i++;\n }\n\n return result;\n}\n/**\n * 对数值进行线性插值\n *\n * @param {Number} a 定义域的极点\n * @param {Number} b 定义域的极点\n * @param {Number} t [0, 1]内的某个值\n * @return {Number} 定义域内的某个值\n */\n\n\nvar interpolateNumber = curry(function (a, b, t) {\n var newA = +a;\n var newB = +b;\n return newA + t * (newB - newA);\n});\n/**\n * 线性插值的逆运算\n *\n * @param {Number} a 定义域的极点\n * @param {Number} b 定义域的极点\n * @param {Number} x 可以认为是插值后的一个输出值\n * @return {Number} 当x在 a ~ b这个范围内时,返回值属于[0, 1]\n */\n\nvar uninterpolateNumber = curry(function (a, b, x) {\n var diff = b - +a;\n diff = diff || Infinity;\n return (x - a) / diff;\n});\n/**\n * 线性插值的逆运算,并且有截断的操作\n *\n * @param {Number} a 定义域的极点\n * @param {Number} b 定义域的极点\n * @param {Number} x 可以认为是插值后的一个输出值\n * @return {Number} 当x在 a ~ b这个区间内时,返回值属于[0, 1],\n * 当x不在 a ~ b这个区间时,会截断到 a ~ b 这个区间\n */\n\nvar uninterpolateTruncation = curry(function (a, b, x) {\n var diff = b - +a;\n diff = diff || Infinity;\n return Math.max(0, Math.min(1, (x - a) / diff));\n});\nexport default {\n rangeStep: rangeStep,\n getDigitCount: getDigitCount,\n interpolateNumber: interpolateNumber,\n uninterpolateNumber: uninterpolateNumber,\n uninterpolateTruncation: uninterpolateTruncation\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n/**\n * @fileOverview calculate tick values of scale\n * @author xile611, arcthur\n * @date 2015-09-17\n */\nimport Decimal from 'decimal.js-light';\nimport { compose, range, memoize, map, reverse } from './util/utils';\nimport Arithmetic from './util/arithmetic';\n/**\n * Calculate a interval of a minimum value and a maximum value\n *\n * @param {Number} min The minimum value\n * @param {Number} max The maximum value\n * @return {Array} An interval\n */\n\nfunction getValidInterval(_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n min = _ref2[0],\n max = _ref2[1];\n\n var validMin = min,\n validMax = max; // exchange\n\n if (min > max) {\n validMin = max;\n validMax = min;\n }\n\n return [validMin, validMax];\n}\n/**\n * Calculate the step which is easy to understand between ticks, like 10, 20, 25\n *\n * @param {Decimal} roughStep The rough step calculated by deviding the\n * difference by the tickCount\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @param {Integer} correctionFactor A correction factor\n * @return {Decimal} The step which is easy to understand between two ticks\n */\n\n\nfunction getFormatStep(roughStep, allowDecimals, correctionFactor) {\n if (roughStep.lte(0)) {\n return new Decimal(0);\n }\n\n var digitCount = Arithmetic.getDigitCount(roughStep.toNumber()); // The ratio between the rough step and the smallest number which has a bigger\n // order of magnitudes than the rough step\n\n var digitCountValue = new Decimal(10).pow(digitCount);\n var stepRatio = roughStep.div(digitCountValue); // When an integer and a float multiplied, the accuracy of result may be wrong\n\n var stepRatioScale = digitCount !== 1 ? 0.05 : 0.1;\n var amendStepRatio = new Decimal(Math.ceil(stepRatio.div(stepRatioScale).toNumber())).add(correctionFactor).mul(stepRatioScale);\n var formatStep = amendStepRatio.mul(digitCountValue);\n return allowDecimals ? formatStep : new Decimal(Math.ceil(formatStep));\n}\n/**\n * calculate the ticks when the minimum value equals to the maximum value\n *\n * @param {Number} value The minimum valuue which is also the maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickOfSingleValue(value, tickCount, allowDecimals) {\n var step = 1; // calculate the middle value of ticks\n\n var middle = new Decimal(value);\n\n if (!middle.isint() && allowDecimals) {\n var absVal = Math.abs(value);\n\n if (absVal < 1) {\n // The step should be a float number when the difference is smaller than 1\n step = new Decimal(10).pow(Arithmetic.getDigitCount(value) - 1);\n middle = new Decimal(Math.floor(middle.div(step).toNumber())).mul(step);\n } else if (absVal > 1) {\n // Return the maximum integer which is smaller than 'value' when 'value' is greater than 1\n middle = new Decimal(Math.floor(value));\n }\n } else if (value === 0) {\n middle = new Decimal(Math.floor((tickCount - 1) / 2));\n } else if (!allowDecimals) {\n middle = new Decimal(Math.floor(value));\n }\n\n var middleIndex = Math.floor((tickCount - 1) / 2);\n var fn = compose(map(function (n) {\n return middle.add(new Decimal(n - middleIndex).mul(step)).toNumber();\n }), range);\n return fn(0, tickCount);\n}\n/**\n * Calculate the step\n *\n * @param {Number} min The minimum value of an interval\n * @param {Number} max The maximum value of an interval\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @param {Number} correctionFactor A correction factor\n * @return {Object} The step, minimum value of ticks, maximum value of ticks\n */\n\n\nfunction calculateStep(min, max, tickCount, allowDecimals) {\n var correctionFactor = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n\n // dirty hack (for recharts' test)\n if (!Number.isFinite((max - min) / (tickCount - 1))) {\n return {\n step: new Decimal(0),\n tickMin: new Decimal(0),\n tickMax: new Decimal(0)\n };\n } // The step which is easy to understand between two ticks\n\n\n var step = getFormatStep(new Decimal(max).sub(min).div(tickCount - 1), allowDecimals, correctionFactor); // A medial value of ticks\n\n var middle; // When 0 is inside the interval, 0 should be a tick\n\n if (min <= 0 && max >= 0) {\n middle = new Decimal(0);\n } else {\n // calculate the middle value\n middle = new Decimal(min).add(max).div(2); // minus modulo value\n\n middle = middle.sub(new Decimal(middle).mod(step));\n }\n\n var belowCount = Math.ceil(middle.sub(min).div(step).toNumber());\n var upCount = Math.ceil(new Decimal(max).sub(middle).div(step).toNumber());\n var scaleCount = belowCount + upCount + 1;\n\n if (scaleCount > tickCount) {\n // When more ticks need to cover the interval, step should be bigger.\n return calculateStep(min, max, tickCount, allowDecimals, correctionFactor + 1);\n }\n\n if (scaleCount < tickCount) {\n // When less ticks can cover the interval, we should add some additional ticks\n upCount = max > 0 ? upCount + (tickCount - scaleCount) : upCount;\n belowCount = max > 0 ? belowCount : belowCount + (tickCount - scaleCount);\n }\n\n return {\n step: step,\n tickMin: middle.sub(new Decimal(belowCount).mul(step)),\n tickMax: middle.add(new Decimal(upCount).mul(step))\n };\n}\n/**\n * Calculate the ticks of an interval, the count of ticks will be guraranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getNiceTickValuesFn(_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n min = _ref4[0],\n max = _ref4[1];\n\n var tickCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // More than two ticks should be return\n var count = Math.max(tickCount, 2);\n\n var _getValidInterval = getValidInterval([min, max]),\n _getValidInterval2 = _slicedToArray(_getValidInterval, 2),\n cormin = _getValidInterval2[0],\n cormax = _getValidInterval2[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n var _values = cormax === Infinity ? [cormin].concat(_toConsumableArray(range(0, tickCount - 1).map(function () {\n return Infinity;\n }))) : [].concat(_toConsumableArray(range(0, tickCount - 1).map(function () {\n return -Infinity;\n })), [cormax]);\n\n return min > max ? reverse(_values) : _values;\n }\n\n if (cormin === cormax) {\n return getTickOfSingleValue(cormin, tickCount, allowDecimals);\n } // Get the step between two ticks\n\n\n var _calculateStep = calculateStep(cormin, cormax, count, allowDecimals),\n step = _calculateStep.step,\n tickMin = _calculateStep.tickMin,\n tickMax = _calculateStep.tickMax;\n\n var values = Arithmetic.rangeStep(tickMin, tickMax.add(new Decimal(0.1).mul(step)), step);\n return min > max ? reverse(values) : values;\n}\n/**\n * Calculate the ticks of an interval, the count of ticks won't be guraranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickValuesFn(_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n min = _ref6[0],\n max = _ref6[1];\n\n var tickCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // More than two ticks should be return\n var count = Math.max(tickCount, 2);\n\n var _getValidInterval3 = getValidInterval([min, max]),\n _getValidInterval4 = _slicedToArray(_getValidInterval3, 2),\n cormin = _getValidInterval4[0],\n cormax = _getValidInterval4[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n return [min, max];\n }\n\n if (cormin === cormax) {\n return getTickOfSingleValue(cormin, tickCount, allowDecimals);\n }\n\n var step = getFormatStep(new Decimal(cormax).sub(cormin).div(count - 1), allowDecimals, 0);\n var fn = compose(map(function (n) {\n return new Decimal(cormin).add(new Decimal(n).mul(step)).toNumber();\n }), range);\n var values = fn(0, count).filter(function (entry) {\n return entry >= cormin && entry <= cormax;\n });\n return min > max ? reverse(values) : values;\n}\n/**\n * Calculate the ticks of an interval, the count of ticks won't be guraranteed,\n * but the domain will be guaranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickValuesFixedDomainFn(_ref7, tickCount) {\n var _ref8 = _slicedToArray(_ref7, 2),\n min = _ref8[0],\n max = _ref8[1];\n\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n // More than two ticks should be return\n var _getValidInterval5 = getValidInterval([min, max]),\n _getValidInterval6 = _slicedToArray(_getValidInterval5, 2),\n cormin = _getValidInterval6[0],\n cormax = _getValidInterval6[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n return [min, max];\n }\n\n if (cormin === cormax) {\n return [cormin];\n }\n\n var count = Math.max(tickCount, 2);\n var step = getFormatStep(new Decimal(cormax).sub(cormin).div(count - 1), allowDecimals, 0);\n var values = [].concat(_toConsumableArray(Arithmetic.rangeStep(new Decimal(cormin), new Decimal(cormax).sub(new Decimal(0.99).mul(step)), step)), [cormax]);\n return min > max ? reverse(values) : values;\n}\n\nexport var getNiceTickValues = memoize(getNiceTickValuesFn);\nexport var getTickValues = memoize(getTickValuesFn);\nexport var getTickValuesFixedDomain = memoize(getTickValuesFixedDomainFn);","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import continuous from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nfunction square(x) {\n return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nexport default function radial() {\n var squared = continuous(),\n range = [0, 1],\n round = false,\n unknown;\n\n function scale(x) {\n var y = unsquare(squared(x));\n return isNaN(y) ? unknown : round ? Math.round(y) : y;\n }\n\n scale.invert = function(y) {\n return squared.invert(square(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (squared.domain(_), scale) : squared.domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (squared.range((range = Array.from(_, number)).map(square)), scale) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return scale.range(_).round(true);\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, scale) : round;\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return radial(squared.domain(), range)\n .round(round)\n .clamp(squared.clamp())\n .unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport millisecond from \"./millisecond.js\";\nimport second from \"./second.js\";\nimport minute from \"./minute.js\";\nimport hour from \"./hour.js\";\nimport day from \"./day.js\";\nimport {sunday as week} from \"./week.js\";\nimport month from \"./month.js\";\nimport year from \"./year.js\";\nimport utcMinute from \"./utcMinute.js\";\nimport utcHour from \"./utcHour.js\";\nimport utcDay from \"./utcDay.js\";\nimport {utcSunday as utcWeek} from \"./utcWeek.js\";\nimport utcMonth from \"./utcMonth.js\";\nimport utcYear from \"./utcYear.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(year, month, week, day, hour, minute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1;\n return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile} from \"d3-array\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (x != null && !isNaN(x = +x)) return interpolator((bisect(domain, x, 1) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.range = function() {\n return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n };\n\n scale.quantiles = function(n) {\n return Array.from({length: n + 1}, (_, i) => quantile(domain, i / n));\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n s = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1, r2;\n return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nfunction stackSeries(key) {\n const series = [];\n series.key = key;\n return series;\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var sz = Array.from(keys.apply(this, arguments), stackSeries),\n i, n = sz.length, j = -1,\n oz;\n\n for (const d of data) {\n for (i = 0, ++j; i < n; ++i) {\n (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n }\n }\n\n for (i = 0, oz = array(order(sz)); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import _isEqual from \"lodash/isEqual\";\nimport _sortBy from \"lodash/sortBy\";\nimport _isNaN from \"lodash/isNaN\";\nimport _upperFirst from \"lodash/upperFirst\";\nimport _isString from \"lodash/isString\";\nimport _isArray from \"lodash/isArray\";\nimport _max from \"lodash/max\";\nimport _min from \"lodash/min\";\nimport _flatMap from \"lodash/flatMap\";\nimport _isFunction from \"lodash/isFunction\";\nimport _get from \"lodash/get\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { getNiceTickValues, getTickValuesFixedDomain } from 'recharts-scale';\nimport * as d3Scales from 'd3-scale';\nimport { stack as shapeStack, stackOrderNone, stackOffsetExpand, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle } from 'd3-shape';\nimport { isNumOrStr, uniqueId, isNumber, getPercentValue, mathSign, findEntryInArray } from './DataUtils';\nimport { Legend } from '../component/Legend';\nimport { findAllByType, findChildByType, getDisplayName } from './ReactUtils'; // TODO: Cause of circular dependency. Needs refactor.\n// import { RadiusAxisProps, AngleAxisProps } from '../polar/types';\n\nimport { filterProps } from './types';\nexport function getValueByDataKey(obj, dataKey, defaultValue) {\n if (_isNil(obj) || _isNil(dataKey)) {\n return defaultValue;\n }\n\n if (isNumOrStr(dataKey)) {\n return _get(obj, dataKey, defaultValue);\n }\n\n if (_isFunction(dataKey)) {\n return dataKey(obj);\n }\n\n return defaultValue;\n}\n/**\n * Get domain of data by key\n * @param {Array} data The data displayed in the chart\n * @param {String} key The unique key of a group of data\n * @param {String} type The type of axis\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain of data\n */\n\nexport function getDomainOfDataByKey(data, key, type, filterNil) {\n var flattenData = _flatMap(data, function (entry) {\n return getValueByDataKey(entry, key);\n });\n\n if (type === 'number') {\n var domain = flattenData.filter(function (entry) {\n return isNumber(entry) || parseFloat(entry);\n });\n return domain.length ? [_min(domain), _max(domain)] : [Infinity, -Infinity];\n }\n\n var validateData = filterNil ? flattenData.filter(function (entry) {\n return !_isNil(entry);\n }) : flattenData; // 支持Date类型的x轴\n\n return validateData.map(function (entry) {\n return isNumOrStr(entry) || entry instanceof Date ? entry : '';\n });\n}\nexport var calculateActiveTickIndex = function calculateActiveTickIndex(coordinate) {\n var _ticks$length;\n\n var ticks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var unsortedTicks = arguments.length > 2 ? arguments[2] : undefined;\n var axis = arguments.length > 3 ? arguments[3] : undefined;\n var index = -1;\n var len = (_ticks$length = ticks === null || ticks === void 0 ? void 0 : ticks.length) !== null && _ticks$length !== void 0 ? _ticks$length : 0;\n\n if (len > 1) {\n if (axis && axis.axisType === 'angleAxis' && Math.abs(Math.abs(axis.range[1] - axis.range[0]) - 360) <= 1e-6) {\n var range = axis.range; // ticks are distributed in a circle\n\n for (var i = 0; i < len; i++) {\n var before = i > 0 ? unsortedTicks[i - 1].coordinate : unsortedTicks[len - 1].coordinate;\n var cur = unsortedTicks[i].coordinate;\n var after = i >= len - 1 ? unsortedTicks[0].coordinate : unsortedTicks[i + 1].coordinate;\n var sameDirectionCoord = void 0;\n\n if (mathSign(cur - before) !== mathSign(after - cur)) {\n var diffInterval = [];\n\n if (mathSign(after - cur) === mathSign(range[1] - range[0])) {\n sameDirectionCoord = after;\n var curInRange = cur + range[1] - range[0];\n diffInterval[0] = Math.min(curInRange, (curInRange + before) / 2);\n diffInterval[1] = Math.max(curInRange, (curInRange + before) / 2);\n } else {\n sameDirectionCoord = before;\n var afterInRange = after + range[1] - range[0];\n diffInterval[0] = Math.min(cur, (afterInRange + cur) / 2);\n diffInterval[1] = Math.max(cur, (afterInRange + cur) / 2);\n }\n\n var sameInterval = [Math.min(cur, (sameDirectionCoord + cur) / 2), Math.max(cur, (sameDirectionCoord + cur) / 2)];\n\n if (coordinate > sameInterval[0] && coordinate <= sameInterval[1] || coordinate >= diffInterval[0] && coordinate <= diffInterval[1]) {\n index = unsortedTicks[i].index;\n break;\n }\n } else {\n var min = Math.min(before, after);\n var max = Math.max(before, after);\n\n if (coordinate > (min + cur) / 2 && coordinate <= (max + cur) / 2) {\n index = unsortedTicks[i].index;\n break;\n }\n }\n }\n } else {\n // ticks are distributed in a single direction\n for (var _i = 0; _i < len; _i++) {\n if (_i === 0 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i > 0 && _i < len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i === len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2) {\n index = ticks[_i].index;\n break;\n }\n }\n }\n } else {\n index = 0;\n }\n\n return index;\n};\n/**\n * Get the main color of each graphic item\n * @param {ReactElement} item A graphic item\n * @return {String} Color\n */\n\nexport var getMainColorOfGraphicItem = function getMainColorOfGraphicItem(item) {\n var _ref = item,\n displayName = _ref.type.displayName; // TODO: check if displayName is valid.\n\n var _item$props = item.props,\n stroke = _item$props.stroke,\n fill = _item$props.fill;\n var result;\n\n switch (displayName) {\n case 'Line':\n result = stroke;\n break;\n\n case 'Area':\n case 'Radar':\n result = stroke && stroke !== 'none' ? stroke : fill;\n break;\n\n default:\n result = fill;\n break;\n }\n\n return result;\n}; // TODO: Formated -> Formatted.\n\nexport var getLegendProps = function getLegendProps(_ref2) {\n var children = _ref2.children,\n formatedGraphicalItems = _ref2.formatedGraphicalItems,\n legendWidth = _ref2.legendWidth,\n legendContent = _ref2.legendContent;\n var legendItem = findChildByType(children, Legend.displayName);\n\n if (!legendItem) {\n return null;\n }\n\n var legendData;\n\n if (legendItem.props && legendItem.props.payload) {\n legendData = legendItem.props && legendItem.props.payload;\n } else if (legendContent === 'children') {\n legendData = (formatedGraphicalItems || []).reduce(function (result, _ref3) {\n var item = _ref3.item,\n props = _ref3.props;\n var data = props.sectors || props.data || [];\n return result.concat(data.map(function (entry) {\n return {\n type: legendItem.props.iconType || item.props.legendType,\n value: entry.name,\n color: entry.fill,\n payload: entry\n };\n }));\n }, []);\n } else {\n legendData = (formatedGraphicalItems || []).map(function (_ref4) {\n var item = _ref4.item;\n var _item$props2 = item.props,\n dataKey = _item$props2.dataKey,\n name = _item$props2.name,\n legendType = _item$props2.legendType,\n hide = _item$props2.hide;\n return {\n inactive: hide,\n dataKey: dataKey,\n type: legendItem.props.iconType || legendType || 'square',\n color: getMainColorOfGraphicItem(item),\n value: name || dataKey,\n payload: item.props\n };\n });\n }\n\n return _objectSpread(_objectSpread(_objectSpread({}, legendItem.props), Legend.getWithHeight(legendItem, legendWidth)), {}, {\n payload: legendData,\n item: legendItem\n });\n};\n/**\n * Calculate the size of all groups for stacked bar graph\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @return {Object} The size of all groups\n */\n\nexport var getBarSizeList = function getBarSizeList(_ref5) {\n var globalSize = _ref5.barSize,\n _ref5$stackGroups = _ref5.stackGroups,\n stackGroups = _ref5$stackGroups === void 0 ? {} : _ref5$stackGroups;\n\n if (!stackGroups) {\n return {};\n }\n\n var result = {};\n var numericAxisIds = Object.keys(stackGroups);\n\n for (var i = 0, len = numericAxisIds.length; i < len; i++) {\n var sgs = stackGroups[numericAxisIds[i]].stackGroups;\n var stackIds = Object.keys(sgs);\n\n for (var j = 0, sLen = stackIds.length; j < sLen; j++) {\n var _sgs$stackIds$j = sgs[stackIds[j]],\n items = _sgs$stackIds$j.items,\n cateAxisId = _sgs$stackIds$j.cateAxisId;\n var barItems = items.filter(function (item) {\n return getDisplayName(item.type).indexOf('Bar') >= 0;\n });\n\n if (barItems && barItems.length) {\n var selfSize = barItems[0].props.barSize;\n var cateId = barItems[0].props[cateAxisId];\n\n if (!result[cateId]) {\n result[cateId] = [];\n }\n\n result[cateId].push({\n item: barItems[0],\n stackList: barItems.slice(1),\n barSize: _isNil(selfSize) ? globalSize : selfSize\n });\n }\n }\n }\n\n return result;\n};\n/**\n * Calculate the size of each bar and the gap between two bars\n * @param {Number} bandSize The size of each category\n * @param {sizeList} sizeList The size of all groups\n * @param {maxBarSize} maxBarSize The maximum size of bar\n * @return {Number} The size of each bar and the gap between two bars\n */\n\nexport var getBarPosition = function getBarPosition(_ref6) {\n var barGap = _ref6.barGap,\n barCategoryGap = _ref6.barCategoryGap,\n bandSize = _ref6.bandSize,\n _ref6$sizeList = _ref6.sizeList,\n sizeList = _ref6$sizeList === void 0 ? [] : _ref6$sizeList,\n maxBarSize = _ref6.maxBarSize;\n var len = sizeList.length;\n if (len < 1) return null;\n var realBarGap = getPercentValue(barGap, bandSize, 0, true);\n var result; // whether or not is barSize setted by user\n\n if (sizeList[0].barSize === +sizeList[0].barSize) {\n var useFull = false;\n var fullBarSize = bandSize / len;\n var sum = sizeList.reduce(function (res, entry) {\n return res + entry.barSize || 0;\n }, 0);\n sum += (len - 1) * realBarGap;\n\n if (sum >= bandSize) {\n sum -= (len - 1) * realBarGap;\n realBarGap = 0;\n }\n\n if (sum >= bandSize && fullBarSize > 0) {\n useFull = true;\n fullBarSize *= 0.9;\n sum = len * fullBarSize;\n }\n\n var offset = (bandSize - sum) / 2 >> 0;\n var prev = {\n offset: offset - realBarGap,\n size: 0\n };\n result = sizeList.reduce(function (res, entry) {\n var newRes = [].concat(_toConsumableArray(res), [{\n item: entry.item,\n position: {\n offset: prev.offset + prev.size + realBarGap,\n size: useFull ? fullBarSize : entry.barSize\n }\n }]);\n prev = newRes[newRes.length - 1].position;\n\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function (item) {\n newRes.push({\n item: item,\n position: prev\n });\n });\n }\n\n return newRes;\n }, []);\n } else {\n var _offset = getPercentValue(barCategoryGap, bandSize, 0, true);\n\n if (bandSize - 2 * _offset - (len - 1) * realBarGap <= 0) {\n realBarGap = 0;\n }\n\n var originalSize = (bandSize - 2 * _offset - (len - 1) * realBarGap) / len;\n\n if (originalSize > 1) {\n originalSize >>= 0;\n }\n\n var size = maxBarSize === +maxBarSize ? Math.min(originalSize, maxBarSize) : originalSize;\n result = sizeList.reduce(function (res, entry, i) {\n var newRes = [].concat(_toConsumableArray(res), [{\n item: entry.item,\n position: {\n offset: _offset + (originalSize + realBarGap) * i + (originalSize - size) / 2,\n size: size\n }\n }]);\n\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function (item) {\n newRes.push({\n item: item,\n position: newRes[newRes.length - 1].position\n });\n });\n }\n\n return newRes;\n }, []);\n }\n\n return result;\n};\nexport var appendOffsetOfLegend = function appendOffsetOfLegend(offset, items, props, legendBox) {\n var children = props.children,\n width = props.width,\n margin = props.margin;\n var legendWidth = width - (margin.left || 0) - (margin.right || 0); // const legendHeight = height - (margin.top || 0) - (margin.bottom || 0);\n\n var legendProps = getLegendProps({\n children: children,\n legendWidth: legendWidth\n });\n var newOffset = offset;\n\n if (legendProps) {\n var box = legendBox || {};\n var align = legendProps.align,\n verticalAlign = legendProps.verticalAlign,\n layout = legendProps.layout;\n\n if ((layout === 'vertical' || layout === 'horizontal' && verticalAlign === 'center') && isNumber(offset[align])) {\n newOffset = _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, align, newOffset[align] + (box.width || 0)));\n }\n\n if ((layout === 'horizontal' || layout === 'vertical' && align === 'center') && isNumber(offset[verticalAlign])) {\n newOffset = _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, verticalAlign, newOffset[verticalAlign] + (box.height || 0)));\n }\n }\n\n return newOffset;\n};\nexport var getDomainOfErrorBars = function getDomainOfErrorBars(data, item, dataKey, axisType) {\n var children = item.props.children;\n var errorBars = findAllByType(children, 'ErrorBar').filter(function (errorBarChild) {\n var direction = errorBarChild.props.direction;\n return _isNil(direction) || _isNil(axisType) ? true : axisType.indexOf(direction) >= 0;\n });\n\n if (errorBars && errorBars.length) {\n var keys = errorBars.map(function (errorBarChild) {\n return errorBarChild.props.dataKey;\n });\n return data.reduce(function (result, entry) {\n var entryValue = getValueByDataKey(entry, dataKey, 0);\n var mainValue = _isArray(entryValue) ? [_min(entryValue), _max(entryValue)] : [entryValue, entryValue];\n var errorDomain = keys.reduce(function (prevErrorArr, k) {\n var errorValue = getValueByDataKey(entry, k, 0);\n var lowerValue = mainValue[0] - Math.abs(_isArray(errorValue) ? errorValue[0] : errorValue);\n var upperValue = mainValue[1] + Math.abs(_isArray(errorValue) ? errorValue[1] : errorValue);\n return [Math.min(lowerValue, prevErrorArr[0]), Math.max(upperValue, prevErrorArr[1])];\n }, [Infinity, -Infinity]);\n return [Math.min(errorDomain[0], result[0]), Math.max(errorDomain[1], result[1])];\n }, [Infinity, -Infinity]);\n }\n\n return null;\n};\nexport var parseErrorBarsOfAxis = function parseErrorBarsOfAxis(data, items, dataKey, axisType) {\n var domains = items.map(function (item) {\n return getDomainOfErrorBars(data, item, dataKey, axisType);\n }).filter(function (entry) {\n return !_isNil(entry);\n });\n\n if (domains && domains.length) {\n return domains.reduce(function (result, entry) {\n return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n }, [Infinity, -Infinity]);\n }\n\n return null;\n};\n/**\n * Get domain of data by the configuration of item element\n * @param {Array} data The data displayed in the chart\n * @param {Array} items The instances of item\n * @param {String} type The type of axis, number - Number Axis, category - Category Axis\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain\n */\n\nexport var getDomainOfItemsWithSameAxis = function getDomainOfItemsWithSameAxis(data, items, type, filterNil) {\n var domains = items.map(function (item) {\n var dataKey = item.props.dataKey;\n\n if (type === 'number' && dataKey) {\n return getDomainOfErrorBars(data, item, dataKey) || getDomainOfDataByKey(data, dataKey, type, filterNil);\n }\n\n return getDomainOfDataByKey(data, dataKey, type, filterNil);\n });\n\n if (type === 'number') {\n // Calculate the domain of number axis\n return domains.reduce(function (result, entry) {\n return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n }, [Infinity, -Infinity]);\n }\n\n var tag = {}; // Get the union set of category axis\n\n return domains.reduce(function (result, entry) {\n for (var i = 0, len = entry.length; i < len; i++) {\n if (!tag[entry[i]]) {\n tag[entry[i]] = true;\n result.push(entry[i]);\n }\n }\n\n return result;\n }, []);\n};\nexport var isCategoricalAxis = function isCategoricalAxis(layout, axisType) {\n return layout === 'horizontal' && axisType === 'xAxis' || layout === 'vertical' && axisType === 'yAxis' || layout === 'centric' && axisType === 'angleAxis' || layout === 'radial' && axisType === 'radiusAxis';\n};\n/**\n * Calculate the Coordinates of grid\n * @param {Array} ticks The ticks in axis\n * @param {Number} min The minimun value of axis\n * @param {Number} max The maximun value of axis\n * @return {Array} Coordinates\n */\n\nexport var getCoordinatesOfGrid = function getCoordinatesOfGrid(ticks, min, max) {\n var hasMin, hasMax;\n var values = ticks.map(function (entry) {\n if (entry.coordinate === min) {\n hasMin = true;\n }\n\n if (entry.coordinate === max) {\n hasMax = true;\n }\n\n return entry.coordinate;\n });\n\n if (!hasMin) {\n values.push(min);\n }\n\n if (!hasMax) {\n values.push(max);\n }\n\n return values;\n};\n/**\n * Get the ticks of an axis\n * @param {Object} axis The configuration of an axis\n * @param {Boolean} isGrid Whether or not are the ticks in grid\n * @param {Boolean} isAll Return the ticks of all the points or not\n * @return {Array} Ticks\n */\n\nexport var getTicksOfAxis = function getTicksOfAxis(axis, isGrid, isAll) {\n if (!axis) return null;\n var scale = axis.scale;\n var duplicateDomain = axis.duplicateDomain,\n type = axis.type,\n range = axis.range;\n var offset = (isGrid || isAll) && type === 'category' && scale.bandwidth ? scale.bandwidth() / 2 : 0;\n offset = axis.axisType === 'angleAxis' ? mathSign(range[0] - range[1]) * 2 * offset : offset; // The ticks setted by user should only affect the ticks adjacent to axis line\n\n if (isGrid && (axis.ticks || axis.niceTicks)) {\n return (axis.ticks || axis.niceTicks).map(function (entry) {\n var scaleContent = duplicateDomain ? duplicateDomain.indexOf(entry) : entry;\n return {\n coordinate: scale(scaleContent) + offset,\n value: entry,\n offset: offset\n };\n });\n } // When axis is a categorial axis, but the type of axis is number or the scale of axis is not \"auto\"\n\n\n if (axis.isCategorical && axis.categoricalDomain) {\n return axis.categoricalDomain.map(function (entry, index) {\n return {\n coordinate: scale(entry) + offset,\n value: entry,\n index: index,\n offset: offset\n };\n });\n }\n\n if (scale.ticks && !isAll) {\n return scale.ticks(axis.tickCount).map(function (entry) {\n return {\n coordinate: scale(entry) + offset,\n value: entry,\n offset: offset\n };\n });\n } // When axis has duplicated text, serial numbers are used to generate scale\n\n\n return scale.domain().map(function (entry, index) {\n return {\n coordinate: scale(entry) + offset,\n value: duplicateDomain ? duplicateDomain[entry] : entry,\n index: index,\n offset: offset\n };\n });\n};\n/**\n * combine the handlers\n * @param {Function} defaultHandler Internal private handler\n * @param {Function} parentHandler Handler function specified in parent component\n * @param {Function} childHandler Handler function specified in child component\n * @return {Function} The combined handler\n */\n\nexport var combineEventHandlers = function combineEventHandlers(defaultHandler, parentHandler, childHandler) {\n var customizedHandler;\n\n if (_isFunction(childHandler)) {\n customizedHandler = childHandler;\n } else if (_isFunction(parentHandler)) {\n customizedHandler = parentHandler;\n }\n\n if (_isFunction(defaultHandler) || customizedHandler) {\n return function (arg1, arg2, arg3, arg4) {\n if (_isFunction(defaultHandler)) {\n defaultHandler(arg1, arg2, arg3, arg4);\n }\n\n if (_isFunction(customizedHandler)) {\n customizedHandler(arg1, arg2, arg3, arg4);\n }\n };\n }\n\n return null;\n};\n/**\n * Parse the scale function of axis\n * @param {Object} axis The option of axis\n * @param {String} chartType The displayName of chart\n * @param {Boolean} hasBar if it has a bar\n * @return {Function} The scale function\n */\n\nexport var parseScale = function parseScale(axis, chartType, hasBar) {\n var scale = axis.scale,\n type = axis.type,\n layout = axis.layout,\n axisType = axis.axisType;\n\n if (scale === 'auto') {\n if (layout === 'radial' && axisType === 'radiusAxis') {\n return {\n scale: d3Scales.scaleBand(),\n realScaleType: 'band'\n };\n }\n\n if (layout === 'radial' && axisType === 'angleAxis') {\n return {\n scale: d3Scales.scaleLinear(),\n realScaleType: 'linear'\n };\n }\n\n if (type === 'category' && chartType && (chartType.indexOf('LineChart') >= 0 || chartType.indexOf('AreaChart') >= 0 || chartType.indexOf('ComposedChart') >= 0 && !hasBar)) {\n return {\n scale: d3Scales.scalePoint(),\n realScaleType: 'point'\n };\n }\n\n if (type === 'category') {\n return {\n scale: d3Scales.scaleBand(),\n realScaleType: 'band'\n };\n }\n\n return {\n scale: d3Scales.scaleLinear(),\n realScaleType: 'linear'\n };\n }\n\n if (_isString(scale)) {\n var name = \"scale\".concat(_upperFirst(scale));\n return {\n scale: (d3Scales[name] || d3Scales.scalePoint)(),\n realScaleType: d3Scales[name] ? name : 'point'\n };\n }\n\n return _isFunction(scale) ? {\n scale: scale\n } : {\n scale: d3Scales.scalePoint(),\n realScaleType: 'point'\n };\n};\nvar EPS = 1e-4;\nexport var checkDomainOfScale = function checkDomainOfScale(scale) {\n var domain = scale.domain();\n\n if (!domain || domain.length <= 2) {\n return;\n }\n\n var len = domain.length;\n var range = scale.range();\n var min = Math.min(range[0], range[1]) - EPS;\n var max = Math.max(range[0], range[1]) + EPS;\n var first = scale(domain[0]);\n var last = scale(domain[len - 1]);\n\n if (first < min || first > max || last < min || last > max) {\n scale.domain([domain[0], domain[len - 1]]);\n }\n};\nexport var findPositionOfBar = function findPositionOfBar(barPosition, child) {\n if (!barPosition) {\n return null;\n }\n\n for (var i = 0, len = barPosition.length; i < len; i++) {\n if (barPosition[i].item === child) {\n return barPosition[i].position;\n }\n }\n\n return null;\n};\nexport var truncateByDomain = function truncateByDomain(value, domain) {\n if (!domain || domain.length !== 2 || !isNumber(domain[0]) || !isNumber(domain[1])) {\n return value;\n }\n\n var min = Math.min(domain[0], domain[1]);\n var max = Math.max(domain[0], domain[1]);\n var result = [value[0], value[1]];\n\n if (!isNumber(value[0]) || value[0] < min) {\n result[0] = min;\n }\n\n if (!isNumber(value[1]) || value[1] > max) {\n result[1] = max;\n }\n\n if (result[0] > max) {\n result[0] = max;\n }\n\n if (result[1] < min) {\n result[1] = min;\n }\n\n return result;\n};\n/* eslint no-param-reassign: 0 */\n\nexport var offsetSign = function offsetSign(series) {\n var n = series.length;\n\n if (n <= 0) {\n return;\n }\n\n for (var j = 0, m = series[0].length; j < m; ++j) {\n var positive = 0;\n var negative = 0;\n\n for (var i = 0; i < n; ++i) {\n var value = _isNaN(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n /* eslint-disable prefer-destructuring */\n\n if (value >= 0) {\n series[i][j][0] = positive;\n series[i][j][1] = positive + value;\n positive = series[i][j][1];\n } else {\n series[i][j][0] = negative;\n series[i][j][1] = negative + value;\n negative = series[i][j][1];\n }\n /* eslint-enable prefer-destructuring */\n\n }\n }\n};\n/* eslint no-param-reassign: 0 */\n\nexport var offsetPositive = function offsetPositive(series) {\n var n = series.length;\n\n if (n <= 0) {\n return;\n }\n\n for (var j = 0, m = series[0].length; j < m; ++j) {\n var positive = 0;\n\n for (var i = 0; i < n; ++i) {\n var value = _isNaN(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n /* eslint-disable prefer-destructuring */\n\n if (value >= 0) {\n series[i][j][0] = positive;\n series[i][j][1] = positive + value;\n positive = series[i][j][1];\n } else {\n series[i][j][0] = 0;\n series[i][j][1] = 0;\n }\n /* eslint-enable prefer-destructuring */\n\n }\n }\n};\nvar STACK_OFFSET_MAP = {\n sign: offsetSign,\n expand: stackOffsetExpand,\n none: stackOffsetNone,\n silhouette: stackOffsetSilhouette,\n wiggle: stackOffsetWiggle,\n positive: offsetPositive\n};\nexport var getStackedData = function getStackedData(data, stackItems, offsetType) {\n var dataKeys = stackItems.map(function (item) {\n return item.props.dataKey;\n });\n var stack = shapeStack().keys(dataKeys).value(function (d, key) {\n return +getValueByDataKey(d, key, 0);\n }).order(stackOrderNone).offset(STACK_OFFSET_MAP[offsetType]);\n return stack(data);\n};\nexport var getStackGroupsByAxisId = function getStackGroupsByAxisId(data, _items, numericAxisId, cateAxisId, offsetType, reverseStackOrder) {\n if (!data) {\n return null;\n } // reversing items to affect render order (for layering)\n\n\n var items = reverseStackOrder ? _items.reverse() : _items;\n var stackGroups = items.reduce(function (result, item) {\n var _item$props3 = item.props,\n stackId = _item$props3.stackId,\n hide = _item$props3.hide;\n\n if (hide) {\n return result;\n }\n\n var axisId = item.props[numericAxisId];\n var parentGroup = result[axisId] || {\n hasStack: false,\n stackGroups: {}\n };\n\n if (isNumOrStr(stackId)) {\n var childGroup = parentGroup.stackGroups[stackId] || {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: []\n };\n childGroup.items.push(item);\n parentGroup.hasStack = true;\n parentGroup.stackGroups[stackId] = childGroup;\n } else {\n parentGroup.stackGroups[uniqueId('_stackId_')] = {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: [item]\n };\n }\n\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, parentGroup));\n }, {});\n return Object.keys(stackGroups).reduce(function (result, axisId) {\n var group = stackGroups[axisId];\n\n if (group.hasStack) {\n group.stackGroups = Object.keys(group.stackGroups).reduce(function (res, stackId) {\n var g = group.stackGroups[stackId];\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, stackId, {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: g.items,\n stackedData: getStackedData(data, g.items, offsetType)\n }));\n }, {});\n }\n\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, group));\n }, {});\n};\n/**\n * get domain of ticks\n * @param {Array} ticks Ticks of axis\n * @param {String} type The type of axis\n * @return {Array} domain\n */\n\nexport var calculateDomainOfTicks = function calculateDomainOfTicks(ticks, type) {\n if (type === 'number') {\n return [_min(ticks), _max(ticks)];\n }\n\n return ticks;\n};\n/**\n * Configure the scale function of axis\n * @param {Object} scale The scale function\n * @param {Object} opts The configuration of axis\n * @return {Object} null\n */\n\nexport var getTicksOfScale = function getTicksOfScale(scale, opts) {\n var realScaleType = opts.realScaleType,\n type = opts.type,\n tickCount = opts.tickCount,\n originalDomain = opts.originalDomain,\n allowDecimals = opts.allowDecimals;\n var scaleType = realScaleType || opts.scale;\n\n if (scaleType !== 'auto' && scaleType !== 'linear') {\n return null;\n }\n\n if (tickCount && type === 'number' && originalDomain && (originalDomain[0] === 'auto' || originalDomain[1] === 'auto')) {\n // Calculate the ticks by the number of grid when the axis is a number axis\n var domain = scale.domain();\n\n if (!domain.length) {\n return null;\n }\n\n var tickValues = getNiceTickValues(domain, tickCount, allowDecimals);\n scale.domain(calculateDomainOfTicks(tickValues, type));\n return {\n niceTicks: tickValues\n };\n }\n\n if (tickCount && type === 'number') {\n var _domain = scale.domain();\n\n var _tickValues = getTickValuesFixedDomain(_domain, tickCount, allowDecimals);\n\n return {\n niceTicks: _tickValues\n };\n }\n\n return null;\n};\nexport var getCateCoordinateOfLine = function getCateCoordinateOfLine(_ref7) {\n var axis = _ref7.axis,\n ticks = _ref7.ticks,\n bandSize = _ref7.bandSize,\n entry = _ref7.entry,\n index = _ref7.index,\n dataKey = _ref7.dataKey;\n\n if (axis.type === 'category') {\n // find coordinate of category axis by the value of category\n if (!axis.allowDuplicatedCategory && axis.dataKey && !_isNil(entry[axis.dataKey])) {\n var matchedTick = findEntryInArray(ticks, 'value', entry[axis.dataKey]);\n\n if (matchedTick) {\n return matchedTick.coordinate + bandSize / 2;\n }\n }\n\n return ticks[index] ? ticks[index].coordinate + bandSize / 2 : null;\n }\n\n var value = getValueByDataKey(entry, !_isNil(dataKey) ? dataKey : axis.dataKey);\n return !_isNil(value) ? axis.scale(value) : null;\n};\nexport var getCateCoordinateOfBar = function getCateCoordinateOfBar(_ref8) {\n var axis = _ref8.axis,\n ticks = _ref8.ticks,\n offset = _ref8.offset,\n bandSize = _ref8.bandSize,\n entry = _ref8.entry,\n index = _ref8.index;\n\n if (axis.type === 'category') {\n return ticks[index] ? ticks[index].coordinate + offset : null;\n }\n\n var value = getValueByDataKey(entry, axis.dataKey, axis.domain[index]);\n return !_isNil(value) ? axis.scale(value) - bandSize / 2 + offset : null;\n};\nexport var getBaseValueOfBar = function getBaseValueOfBar(_ref9) {\n var numericAxis = _ref9.numericAxis;\n var domain = numericAxis.scale.domain();\n\n if (numericAxis.type === 'number') {\n var min = Math.min(domain[0], domain[1]);\n var max = Math.max(domain[0], domain[1]);\n\n if (min <= 0 && max >= 0) {\n return 0;\n }\n\n if (max < 0) {\n return max;\n }\n\n return min;\n }\n\n return domain[0];\n};\nexport var getStackedDataOfItem = function getStackedDataOfItem(item, stackGroups) {\n var stackId = item.props.stackId;\n\n if (isNumOrStr(stackId)) {\n var group = stackGroups[stackId];\n\n if (group && group.items.length) {\n var itemIndex = -1;\n\n for (var i = 0, len = group.items.length; i < len; i++) {\n if (group.items[i] === item) {\n itemIndex = i;\n break;\n }\n }\n\n return itemIndex >= 0 ? group.stackedData[itemIndex] : null;\n }\n }\n\n return null;\n};\n\nvar getDomainOfSingle = function getDomainOfSingle(data) {\n return data.reduce(function (result, entry) {\n return [_min(entry.concat([result[0]]).filter(isNumber)), _max(entry.concat([result[1]]).filter(isNumber))];\n }, [Infinity, -Infinity]);\n};\n\nexport var getDomainOfStackGroups = function getDomainOfStackGroups(stackGroups, startIndex, endIndex) {\n return Object.keys(stackGroups).reduce(function (result, stackId) {\n var group = stackGroups[stackId];\n var stackedData = group.stackedData;\n var domain = stackedData.reduce(function (res, entry) {\n var s = getDomainOfSingle(entry.slice(startIndex, endIndex + 1));\n return [Math.min(res[0], s[0]), Math.max(res[1], s[1])];\n }, [Infinity, -Infinity]);\n return [Math.min(domain[0], result[0]), Math.max(domain[1], result[1])];\n }, [Infinity, -Infinity]).map(function (result) {\n return result === Infinity || result === -Infinity ? 0 : result;\n });\n};\nexport var MIN_VALUE_REG = /^dataMin[\\s]*-[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var MAX_VALUE_REG = /^dataMax[\\s]*\\+[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var parseSpecifiedDomain = function parseSpecifiedDomain(specifiedDomain, dataDomain, allowDataOverflow) {\n if (!_isArray(specifiedDomain)) {\n return dataDomain;\n }\n\n var domain = [];\n /* eslint-disable prefer-destructuring */\n\n if (isNumber(specifiedDomain[0])) {\n domain[0] = allowDataOverflow ? specifiedDomain[0] : Math.min(specifiedDomain[0], dataDomain[0]);\n } else if (MIN_VALUE_REG.test(specifiedDomain[0])) {\n var value = +MIN_VALUE_REG.exec(specifiedDomain[0])[1];\n domain[0] = dataDomain[0] - value;\n } else if (_isFunction(specifiedDomain[0])) {\n domain[0] = specifiedDomain[0](dataDomain[0]);\n } else {\n domain[0] = dataDomain[0];\n }\n\n if (isNumber(specifiedDomain[1])) {\n domain[1] = allowDataOverflow ? specifiedDomain[1] : Math.max(specifiedDomain[1], dataDomain[1]);\n } else if (MAX_VALUE_REG.test(specifiedDomain[1])) {\n var _value = +MAX_VALUE_REG.exec(specifiedDomain[1])[1];\n\n domain[1] = dataDomain[1] + _value;\n } else if (_isFunction(specifiedDomain[1])) {\n domain[1] = specifiedDomain[1](dataDomain[1]);\n } else {\n domain[1] = dataDomain[1];\n }\n /* eslint-enable prefer-destructuring */\n\n\n return domain;\n};\n/**\n * Calculate the size between two category\n * @param {Object} axis The options of axis\n * @param {Array} ticks The ticks of axis\n * @param {Boolean} isBar if items in axis are bars\n * @return {Number} Size\n */\n\nexport var getBandSizeOfAxis = function getBandSizeOfAxis(axis, ticks, isBar) {\n if (axis && axis.scale && axis.scale.bandwidth) {\n var bandWidth = axis.scale.bandwidth();\n\n if (!isBar || bandWidth > 0) {\n return bandWidth;\n }\n }\n\n if (axis && ticks && ticks.length >= 2) {\n var orderedTicks = _sortBy(ticks, function (o) {\n return o.coordinate;\n });\n\n var bandSize = Infinity;\n\n for (var i = 1, len = orderedTicks.length; i < len; i++) {\n var cur = orderedTicks[i];\n var prev = orderedTicks[i - 1];\n bandSize = Math.min((cur.coordinate || 0) - (prev.coordinate || 0), bandSize);\n }\n\n return bandSize === Infinity ? 0 : bandSize;\n }\n\n return 0;\n};\n/**\n * parse the domain of a category axis when a domain is specified\n * @param {Array} specifiedDomain The domain specified by users\n * @param {Array} calculatedDomain The domain calculated by dateKey\n * @param {ReactElement} axisChild The axis element\n * @returns {Array} domains\n */\n\nexport var parseDomainOfCategoryAxis = function parseDomainOfCategoryAxis(specifiedDomain, calculatedDomain, axisChild) {\n if (!specifiedDomain || !specifiedDomain.length) {\n return calculatedDomain;\n }\n\n if (_isEqual(specifiedDomain, _get(axisChild, 'type.defaultProps.domain'))) {\n return calculatedDomain;\n }\n\n return specifiedDomain;\n};\nexport var getTooltipItem = function getTooltipItem(graphicalItem, payload) {\n var _graphicalItem$props = graphicalItem.props,\n dataKey = _graphicalItem$props.dataKey,\n name = _graphicalItem$props.name,\n unit = _graphicalItem$props.unit,\n formatter = _graphicalItem$props.formatter,\n tooltipType = _graphicalItem$props.tooltipType;\n return _objectSpread(_objectSpread({}, filterProps(graphicalItem)), {}, {\n dataKey: dataKey,\n unit: unit,\n formatter: formatter,\n name: name || dataKey,\n color: getMainColorOfGraphicItem(graphicalItem),\n value: getValueByDataKey(payload, dataKey),\n type: tooltipType,\n payload: payload\n });\n};","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { Global } from './Global';\nvar stringCache = {\n widthCache: {},\n cacheCount: 0\n};\nvar MAX_CACHE_NUM = 2000;\nvar SPAN_STYLE = {\n position: 'absolute',\n top: '-20000px',\n left: 0,\n padding: 0,\n margin: 0,\n border: 'none',\n whiteSpace: 'pre'\n};\nvar STYLE_LIST = ['minWidth', 'maxWidth', 'width', 'minHeight', 'maxHeight', 'height', 'top', 'left', 'fontSize', 'lineHeight', 'padding', 'margin', 'paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom'];\nvar MEASUREMENT_SPAN_ID = 'recharts_measurement_span';\n\nfunction autoCompleteStyle(name, value) {\n if (STYLE_LIST.indexOf(name) >= 0 && value === +value) {\n return \"\".concat(value, \"px\");\n }\n\n return value;\n}\n\nfunction camelToMiddleLine(text) {\n var strs = text.split('');\n var formatStrs = strs.reduce(function (result, entry) {\n if (entry === entry.toUpperCase()) {\n return [].concat(_toConsumableArray(result), ['-', entry.toLowerCase()]);\n }\n\n return [].concat(_toConsumableArray(result), [entry]);\n }, []);\n return formatStrs.join('');\n}\n\nexport var getStyleString = function getStyleString(style) {\n return Object.keys(style).reduce(function (result, s) {\n return \"\".concat(result).concat(camelToMiddleLine(s), \":\").concat(autoCompleteStyle(s, style[s]), \";\");\n }, '');\n};\nexport var getStringSize = function getStringSize(text) {\n var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (text === undefined || text === null || Global.isSsr) {\n return {\n width: 0,\n height: 0\n };\n }\n\n var str = \"\".concat(text);\n var styleString = getStyleString(style);\n var cacheKey = \"\".concat(str, \"-\").concat(styleString);\n\n if (stringCache.widthCache[cacheKey]) {\n return stringCache.widthCache[cacheKey];\n }\n\n try {\n var measurementSpan = document.getElementById(MEASUREMENT_SPAN_ID);\n\n if (!measurementSpan) {\n measurementSpan = document.createElement('span');\n measurementSpan.setAttribute('id', MEASUREMENT_SPAN_ID);\n measurementSpan.setAttribute('aria-hidden', 'true');\n document.body.appendChild(measurementSpan);\n } // Need to use CSS Object Model (CSSOM) to be able to comply with Content Security Policy (CSP)\n // https://en.wikipedia.org/wiki/Content_Security_Policy\n\n\n var measurementSpanStyle = _objectSpread(_objectSpread({}, SPAN_STYLE), style);\n\n Object.keys(measurementSpanStyle).map(function (styleKey) {\n measurementSpan.style[styleKey] = measurementSpanStyle[styleKey];\n return styleKey;\n });\n measurementSpan.textContent = str;\n var rect = measurementSpan.getBoundingClientRect();\n var result = {\n width: rect.width,\n height: rect.height\n };\n stringCache.widthCache[cacheKey] = result;\n\n if (++stringCache.cacheCount > MAX_CACHE_NUM) {\n stringCache.cacheCount = 0;\n stringCache.widthCache = {};\n }\n\n return result;\n } catch (e) {\n return {\n width: 0,\n height: 0\n };\n }\n};\nexport var getOffset = function getOffset(el) {\n var html = el.ownerDocument.documentElement;\n var box = {\n top: 0,\n left: 0\n }; // If we don't have gBCR, just use 0,0 rather than error\n // BlackBerry 5, iOS 3 (original iPhone)\n\n if (typeof el.getBoundingClientRect !== 'undefined') {\n box = el.getBoundingClientRect();\n }\n\n return {\n top: box.top + window.pageYOffset - html.clientTop,\n left: box.left + window.pageXOffset - html.clientLeft\n };\n};\n/**\n * Calculate coordinate of cursor in chart\n * @param {Object} event Event object\n * @param {Object} offset The offset of main part in the svg element\n * @return {Object} {chartX, chartY}\n */\n\nexport var calculateChartCoordinate = function calculateChartCoordinate(event, offset) {\n return {\n chartX: Math.round(event.pageX - offset.left),\n chartY: Math.round(event.pageY - offset.top)\n };\n};","import _get from \"lodash/get\";\nimport _isArray from \"lodash/isArray\";\nimport _isNaN from \"lodash/isNaN\";\nimport _isNumber from \"lodash/isNumber\";\nimport _isString from \"lodash/isString\";\nexport var mathSign = function mathSign(value) {\n if (value === 0) {\n return 0;\n }\n\n if (value > 0) {\n return 1;\n }\n\n return -1;\n};\nexport var isPercent = function isPercent(value) {\n return _isString(value) && value.indexOf('%') === value.length - 1;\n};\nexport var isNumber = function isNumber(value) {\n return _isNumber(value) && !_isNaN(value);\n};\nexport var isNumOrStr = function isNumOrStr(value) {\n return isNumber(value) || _isString(value);\n};\nvar idCounter = 0;\nexport var uniqueId = function uniqueId(prefix) {\n var id = ++idCounter;\n return \"\".concat(prefix || '').concat(id);\n};\n/**\n * Get percent value of a total value\n * @param {Number|String} percent A percent\n * @param {Number} totalValue Total value\n * @param {NUmber} defaultValue The value returned when percent is undefined or invalid\n * @param {Boolean} validate If set to be true, the result will be validated\n * @return {Number} value\n */\n\nexport var getPercentValue = function getPercentValue(percent, totalValue) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var validate = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (!isNumber(percent) && !_isString(percent)) {\n return defaultValue;\n }\n\n var value;\n\n if (isPercent(percent)) {\n var index = percent.indexOf('%');\n value = totalValue * parseFloat(percent.slice(0, index)) / 100;\n } else {\n value = +percent;\n }\n\n if (_isNaN(value)) {\n value = defaultValue;\n }\n\n if (validate && value > totalValue) {\n value = totalValue;\n }\n\n return value;\n};\nexport var getAnyElementOfObject = function getAnyElementOfObject(obj) {\n if (!obj) {\n return null;\n }\n\n var keys = Object.keys(obj);\n\n if (keys && keys.length) {\n return obj[keys[0]];\n }\n\n return null;\n};\nexport var hasDuplicate = function hasDuplicate(ary) {\n if (!_isArray(ary)) {\n return false;\n }\n\n var len = ary.length;\n var cache = {};\n\n for (var i = 0; i < len; i++) {\n if (!cache[ary[i]]) {\n cache[ary[i]] = true;\n } else {\n return true;\n }\n }\n\n return false;\n};\nexport var interpolateNumber = function interpolateNumber(numberA, numberB) {\n if (isNumber(numberA) && isNumber(numberB)) {\n return function (t) {\n return numberA + t * (numberB - numberA);\n };\n }\n\n return function () {\n return numberB;\n };\n};\nexport function findEntryInArray(ary, specifiedKey, specifiedValue) {\n if (!ary || !ary.length) {\n return null;\n }\n\n return ary.find(function (entry) {\n return entry && (typeof specifiedKey === 'function' ? specifiedKey(entry) : _get(entry, specifiedKey)) === specifiedValue;\n });\n}\n/**\n * The least square linear regression\n * @param {Array} data The array of points\n * @returns {Object} The domain of x, and the parameter of linear function\n */\n\nexport var getLinearRegression = function getLinearRegression(data) {\n if (!data || !data.length) {\n return null;\n }\n\n var len = data.length;\n var xsum = 0;\n var ysum = 0;\n var xysum = 0;\n var xxsum = 0;\n var xmin = Infinity;\n var xmax = -Infinity;\n\n for (var i = 0; i < len; i++) {\n xsum += data[i].cx;\n ysum += data[i].cy;\n xysum += data[i].cx * data[i].cy;\n xxsum += data[i].cx * data[i].cx;\n xmin = Math.min(xmin, data[i].cx);\n xmax = Math.max(xmax, data[i].cx);\n }\n\n var a = len * xxsum !== xsum * xsum ? (len * xysum - xsum * ysum) / (len * xxsum - xsum * xsum) : 0;\n return {\n xmin: xmin,\n xmax: xmax,\n a: a,\n b: (ysum - a * xsum) / len\n };\n};","var parseIsSsrByDefault = function parseIsSsrByDefault() {\n return !(typeof window !== 'undefined' && window.document && window.document.createElement && window.setTimeout);\n};\n\nexport var Global = {\n isSsr: parseIsSsrByDefault(),\n get: function get(key) {\n return Global[key];\n },\n set: function set(key, value) {\n if (typeof key === 'string') {\n Global[key] = value;\n } else {\n var keys = Object.keys(key);\n\n if (keys && keys.length) {\n keys.forEach(function (k) {\n Global[k] = key[k];\n });\n }\n }\n }\n};","/* eslint no-console: 0 */\nvar isDev = process.env.NODE_ENV !== 'production';\nexport var warn = function warn(condition, format) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n if (isDev && typeof console !== 'undefined' && console.warn) {\n if (format === undefined) {\n console.warn('LogUtils requires an error message argument');\n }\n\n if (!condition) {\n if (format === undefined) {\n console.warn('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n console.warn(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n }\n }\n }\n};","import _isNil from \"lodash/isNil\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { getPercentValue } from './DataUtils';\nimport { parseScale, checkDomainOfScale, getTicksOfScale } from './ChartUtils';\nexport var RADIAN = Math.PI / 180;\nexport var degreeToRadian = function degreeToRadian(angle) {\n return angle * Math.PI / 180;\n};\nexport var radianToDegree = function radianToDegree(angleInRadian) {\n return angleInRadian * 180 / Math.PI;\n};\nexport var polarToCartesian = function polarToCartesian(cx, cy, radius, angle) {\n return {\n x: cx + Math.cos(-RADIAN * angle) * radius,\n y: cy + Math.sin(-RADIAN * angle) * radius\n };\n};\nexport var getMaxRadius = function getMaxRadius(width, height) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n return Math.min(Math.abs(width - (offset.left || 0) - (offset.right || 0)), Math.abs(height - (offset.top || 0) - (offset.bottom || 0))) / 2;\n};\n/**\n * Calculate the scale function, position, width, height of axes\n * @param {Object} props Latest props\n * @param {Object} axisMap The configuration of axes\n * @param {Object} offset The offset of main part in the svg element\n * @param {Object} axisType The type of axes, radius-axis or angle-axis\n * @param {String} chartName The name of chart\n * @return {Object} Configuration\n */\n\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width,\n height = props.height;\n var startAngle = props.startAngle,\n endAngle = props.endAngle;\n var cx = getPercentValue(props.cx, width, width / 2);\n var cy = getPercentValue(props.cy, height, height / 2);\n var maxRadius = getMaxRadius(width, height, offset);\n var innerRadius = getPercentValue(props.innerRadius, maxRadius, 0);\n var outerRadius = getPercentValue(props.outerRadius, maxRadius, maxRadius * 0.8);\n var ids = Object.keys(axisMap);\n return ids.reduce(function (result, id) {\n var axis = axisMap[id];\n var domain = axis.domain,\n reversed = axis.reversed;\n var range;\n\n if (_isNil(axis.range)) {\n if (axisType === 'angleAxis') {\n range = [startAngle, endAngle];\n } else if (axisType === 'radiusAxis') {\n range = [innerRadius, outerRadius];\n }\n\n if (reversed) {\n range = [range[1], range[0]];\n }\n } else {\n range = axis.range;\n var _range = range;\n\n var _range2 = _slicedToArray(_range, 2);\n\n startAngle = _range2[0];\n endAngle = _range2[1];\n }\n\n var _parseScale = parseScale(axis, chartName),\n realScaleType = _parseScale.realScaleType,\n scale = _parseScale.scale;\n\n scale.domain(domain).range(range);\n checkDomainOfScale(scale);\n var ticks = getTicksOfScale(scale, _objectSpread(_objectSpread({}, axis), {}, {\n realScaleType: realScaleType\n }));\n\n var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n range: range,\n radius: outerRadius,\n realScaleType: realScaleType,\n scale: scale,\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n }, {});\n};\nexport var distanceBetweenPoints = function distanceBetweenPoints(point, anotherPoint) {\n var x1 = point.x,\n y1 = point.y;\n var x2 = anotherPoint.x,\n y2 = anotherPoint.y;\n return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));\n};\nexport var getAngleOfPoint = function getAngleOfPoint(_ref, _ref2) {\n var x = _ref.x,\n y = _ref.y;\n var cx = _ref2.cx,\n cy = _ref2.cy;\n var radius = distanceBetweenPoints({\n x: x,\n y: y\n }, {\n x: cx,\n y: cy\n });\n\n if (radius <= 0) {\n return {\n radius: radius\n };\n }\n\n var cos = (x - cx) / radius;\n var angleInRadian = Math.acos(cos);\n\n if (y > cy) {\n angleInRadian = 2 * Math.PI - angleInRadian;\n }\n\n return {\n radius: radius,\n angle: radianToDegree(angleInRadian),\n angleInRadian: angleInRadian\n };\n};\nexport var formatAngleOfSector = function formatAngleOfSector(_ref3) {\n var startAngle = _ref3.startAngle,\n endAngle = _ref3.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return {\n startAngle: startAngle - min * 360,\n endAngle: endAngle - min * 360\n };\n};\n\nvar reverseFormatAngleOfSetor = function reverseFormatAngleOfSetor(angle, _ref4) {\n var startAngle = _ref4.startAngle,\n endAngle = _ref4.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return angle + min * 360;\n};\n\nexport var inRangeOfSector = function inRangeOfSector(_ref5, sector) {\n var x = _ref5.x,\n y = _ref5.y;\n\n var _getAngleOfPoint = getAngleOfPoint({\n x: x,\n y: y\n }, sector),\n radius = _getAngleOfPoint.radius,\n angle = _getAngleOfPoint.angle;\n\n var innerRadius = sector.innerRadius,\n outerRadius = sector.outerRadius;\n\n if (radius < innerRadius || radius > outerRadius) {\n return false;\n }\n\n if (radius === 0) {\n return true;\n }\n\n var _formatAngleOfSector = formatAngleOfSector(sector),\n startAngle = _formatAngleOfSector.startAngle,\n endAngle = _formatAngleOfSector.endAngle;\n\n var formatAngle = angle;\n var inRange;\n\n if (startAngle <= endAngle) {\n while (formatAngle > endAngle) {\n formatAngle -= 360;\n }\n\n while (formatAngle < startAngle) {\n formatAngle += 360;\n }\n\n inRange = formatAngle >= startAngle && formatAngle <= endAngle;\n } else {\n while (formatAngle > startAngle) {\n formatAngle -= 360;\n }\n\n while (formatAngle < endAngle) {\n formatAngle += 360;\n }\n\n inRange = formatAngle >= endAngle && formatAngle <= startAngle;\n }\n\n if (inRange) {\n return _objectSpread(_objectSpread({}, sector), {}, {\n radius: radius,\n angle: reverseFormatAngleOfSetor(formatAngle, sector)\n });\n }\n\n return null;\n};","import _flatten from \"lodash/flatten\";\nimport _isNil from \"lodash/isNil\";\nimport _isString from \"lodash/isString\";\nimport _get from \"lodash/get\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { Children } from 'react';\nimport { isFragment } from 'react-is';\nimport { isNumber } from './DataUtils';\nimport { shallowEqual } from './ShallowEqual';\nvar REACT_BROWSER_EVENT_MAP = {\n click: 'onClick',\n mousedown: 'onMouseDown',\n mouseup: 'onMouseUp',\n mouseover: 'onMouseOver',\n mousemove: 'onMouseMove',\n mouseout: 'onMouseOut',\n mouseenter: 'onMouseEnter',\n mouseleave: 'onMouseLeave',\n touchcancel: 'onTouchCancel',\n touchend: 'onTouchEnd',\n touchmove: 'onTouchMove',\n touchstart: 'onTouchStart'\n};\nexport var SCALE_TYPES = ['auto', 'linear', 'pow', 'sqrt', 'log', 'identity', 'time', 'band', 'point', 'ordinal', 'quantile', 'quantize', 'utc', 'sequential', 'threshold'];\nexport var LEGEND_TYPES = ['plainline', 'line', 'square', 'rect', 'circle', 'cross', 'diamond', 'star', 'triangle', 'wye', 'none'];\nexport var TOOLTIP_TYPES = ['none'];\n/**\n * Get the display name of a component\n * @param {Object} Comp Specified Component\n * @return {String} Display name of Component\n */\n\nexport var getDisplayName = function getDisplayName(Comp) {\n if (typeof Comp === 'string') {\n return Comp;\n }\n\n if (!Comp) {\n return '';\n }\n\n return Comp.displayName || Comp.name || 'Component';\n};\n/*\n * Find and return all matched children by type. `type` can be a React element class or\n * string\n */\n\nexport var findAllByType = function findAllByType(children, type) {\n var result = [];\n var types = [];\n\n if (_isArray(type)) {\n types = type.map(function (t) {\n return getDisplayName(t);\n });\n } else {\n types = [getDisplayName(type)];\n }\n\n React.Children.forEach(children, function (child) {\n if (isFragment(child)) {\n result = result.concat(findAllByType(child.props.children, type));\n }\n\n var childType = _get(child, 'type.displayName') || _get(child, 'type.name');\n\n if (types.indexOf(childType) !== -1) {\n result.push(child);\n }\n });\n return result;\n};\n/*\n * Return the first matched child by type, return null otherwise.\n * `type` can be a React element class or string.\n */\n\nexport var findChildByType = function findChildByType(children, type) {\n var result = findAllByType(children, type);\n return result && result[0];\n};\n/*\n * Create a new array of children excluding the ones matched the type\n */\n\nexport var withoutType = function withoutType(children, type) {\n var newChildren = [];\n var types;\n\n if (_isArray(type)) {\n types = type.map(function (t) {\n return getDisplayName(t);\n });\n } else {\n types = [getDisplayName(type)];\n }\n\n React.Children.forEach(children, function (child) {\n var displayName = _get(child, 'type.displayName');\n\n if (displayName && types.indexOf(displayName) !== -1) {\n return;\n }\n\n newChildren.push(child);\n });\n return newChildren;\n};\n/**\n * validate the width and height props of a chart element\n * @param {Object} el A chart element\n * @return {Boolean} true If the props width and height are number, and greater than 0\n */\n\nexport var validateWidthHeight = function validateWidthHeight(el) {\n if (!el || !el.props) {\n return false;\n }\n\n var _el$props = el.props,\n width = _el$props.width,\n height = _el$props.height;\n\n if (!isNumber(width) || width <= 0 || !isNumber(height) || height <= 0) {\n return false;\n }\n\n return true;\n};\nvar SVG_TAGS = ['a', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor', 'animateMotion', 'animateTransform', 'circle', 'clipPath', 'color-profile', 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColormatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter', 'font', 'font-face', 'font-face-format', 'font-face-name', 'font-face-url', 'foreignObject', 'g', 'glyph', 'glyphRef', 'hkern', 'image', 'line', 'lineGradient', 'marker', 'mask', 'metadata', 'missing-glyph', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'script', 'set', 'stop', 'style', 'svg', 'switch', 'symbol', 'text', 'textPath', 'title', 'tref', 'tspan', 'use', 'view', 'vkern'];\n\nvar isSvgElement = function isSvgElement(child) {\n return child && child.type && _isString(child.type) && SVG_TAGS.indexOf(child.type) >= 0;\n};\n/**\n * Filter all the svg elements of children\n * @param {Array} children The children of a react element\n * @return {Array} All the svg elements\n */\n\n\nexport var filterSvgElements = function filterSvgElements(children) {\n var svgElements = [];\n React.Children.forEach(children, function (entry) {\n if (isSvgElement(entry)) {\n svgElements.push(entry);\n }\n });\n return svgElements;\n};\n/**\n * Wether props of children changed\n * @param {Object} nextChildren The latest children\n * @param {Object} prevChildren The prev children\n * @return {Boolean} equal or not\n */\n\nexport var isChildrenEqual = function isChildrenEqual(nextChildren, prevChildren) {\n if (nextChildren === prevChildren) {\n return true;\n }\n\n if (Children.count(nextChildren) !== Children.count(prevChildren)) {\n return false;\n }\n\n var count = Children.count(nextChildren);\n\n if (count === 0) {\n return true;\n }\n\n if (count === 1) {\n // eslint-disable-next-line no-use-before-define,@typescript-eslint/no-use-before-define\n return isSingleChildEqual(_isArray(nextChildren) ? nextChildren[0] : nextChildren, _isArray(prevChildren) ? prevChildren[0] : prevChildren);\n }\n\n for (var i = 0; i < count; i++) {\n var nextChild = nextChildren[i];\n var prevChild = prevChildren[i];\n\n if (_isArray(nextChild) || _isArray(prevChild)) {\n if (!isChildrenEqual(nextChild, prevChild)) {\n return false;\n } // eslint-disable-next-line no-use-before-define,@typescript-eslint/no-use-before-define\n\n } else if (!isSingleChildEqual(nextChild, prevChild)) {\n return false;\n }\n }\n\n return true;\n};\nexport var isSingleChildEqual = function isSingleChildEqual(nextChild, prevChild) {\n if (_isNil(nextChild) && _isNil(prevChild)) {\n return true;\n }\n\n if (!_isNil(nextChild) && !_isNil(prevChild)) {\n var _ref = nextChild.props || {},\n nextChildren = _ref.children,\n nextProps = _objectWithoutProperties(_ref, [\"children\"]);\n\n var _ref2 = prevChild.props || {},\n prevChildren = _ref2.children,\n prevProps = _objectWithoutProperties(_ref2, [\"children\"]);\n\n if (nextChildren && prevChildren) {\n // eslint-disable-next-line no-use-before-define\n return shallowEqual(nextProps, prevProps) && isChildrenEqual(nextChildren, prevChildren);\n }\n\n if (!nextChildren && !prevChildren) {\n return shallowEqual(nextProps, prevProps);\n }\n\n return false;\n }\n\n return false;\n};\nexport var renderByOrder = function renderByOrder(children, renderMap) {\n var elements = [];\n var record = {};\n Children.forEach(children, function (child, index) {\n if (isSvgElement(child)) {\n elements.push(child);\n } else if (child) {\n var displayName = getDisplayName(child.type);\n\n var _ref3 = renderMap[displayName] || {},\n handler = _ref3.handler,\n once = _ref3.once;\n\n if (handler && (!once || !record[displayName])) {\n var results = handler(child, displayName, index);\n elements.push(results);\n record[displayName] = true;\n }\n }\n });\n return _flatten(elements).filter(function (element) {\n return !_isNil(element);\n });\n};\nexport var getReactEventByType = function getReactEventByType(e) {\n var type = e && e.type;\n\n if (type && REACT_BROWSER_EVENT_MAP[type]) {\n return REACT_BROWSER_EVENT_MAP[type];\n }\n\n return null;\n};\nexport var parseChildIndex = function parseChildIndex(child, children) {\n var result = -1;\n Children.forEach(children, function (entry, index) {\n if (entry === child) {\n result = index;\n }\n });\n return result;\n};","export function shallowEqual(a, b) {\n /* eslint-disable no-restricted-syntax */\n for (var key in a) {\n if ({}.hasOwnProperty.call(a, key) && (!{}.hasOwnProperty.call(b, key) || a[key] !== b[key])) {\n return false;\n }\n }\n\n for (var _key in b) {\n if ({}.hasOwnProperty.call(b, _key) && !{}.hasOwnProperty.call(a, _key)) {\n return false;\n }\n }\n\n return true;\n}","import _isObject from \"lodash/isObject\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { isValidElement } from 'react';\nvar SVGContainerPropKeys = ['viewBox', 'children'];\nvar SVGElementPropKeys = ['className', 'color', 'height', 'id', 'lang', 'max', 'media', 'method', 'min', 'name', 'style', 'target', 'type', 'width', 'role', 'tabIndex', 'accentHeight', 'accumulate', 'additive', 'alignmentBaseline', 'allowReorder', 'alphabetic', 'amplitude', 'arabicForm', 'ascent', 'attributeName', 'attributeType', 'autoReverse', 'azimuth', 'baseFrequency', 'baselineShift', 'baseProfile', 'bbox', 'begin', 'bias', 'by', 'calcMode', 'capHeight', 'clip', 'clipPath', 'clipPathUnits', 'clipRule', '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', 'href', 'ideographic', 'imageRendering', 'in2', 'in', 'intercept', 'k1', 'k2', 'k3', 'k4', 'k', 'kernelMatrix', 'kernelUnitLength', 'kerning', 'keyPoints', 'keySplines', 'keyTimes', 'lengthAdjust', 'letterSpacing', 'lightingColor', 'limitingConeAngle', 'local', 'markerEnd', 'markerHeight', 'markerMid', 'markerStart', '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', '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', 'textLength', 'textRendering', 'to', 'transform', 'u1', 'u2', 'underlinePosition', 'underlineThickness', 'unicode', 'unicodeBidi', 'unicodeRange', 'unitsPerEm', 'vAlphabetic', 'values', 'vectorEffect', 'version', 'vertAdvY', 'vertOriginX', 'vertOriginY', 'vHanging', 'vIdeographic', 'viewTarget', 'visibility', 'vMathematical', 'widths', 'wordSpacing', 'writingMode', 'x1', 'x2', 'x', 'xChannelSelector', 'xHeight', 'xlinkActuate', 'xlinkArcrole', 'xlinkHref', 'xlinkRole', 'xlinkShow', 'xlinkTitle', 'xlinkType', 'xmlBase', 'xmlLang', 'xmlns', 'xmlnsXlink', 'xmlSpace', 'y1', 'y2', 'y', 'yChannelSelector', 'z', 'zoomAndPan', 'ref', 'key', 'angle'];\nvar EventKeys = ['dangerouslySetInnerHTML', 'onCopy', 'onCopyCapture', 'onCut', 'onCutCapture', 'onPaste', 'onPasteCapture', 'onCompositionEnd', 'onCompositionEndCapture', 'onCompositionStart', 'onCompositionStartCapture', 'onCompositionUpdate', 'onCompositionUpdateCapture', 'onFocus', 'onFocusCapture', 'onBlur', 'onBlurCapture', 'onChange', 'onChangeCapture', 'onBeforeInput', 'onBeforeInputCapture', 'onInput', 'onInputCapture', 'onReset', 'onResetCapture', 'onSubmit', 'onSubmitCapture', 'onInvalid', 'onInvalidCapture', 'onLoad', 'onLoadCapture', 'onError', 'onErrorCapture', 'onKeyDown', 'onKeyDownCapture', 'onKeyPress', 'onKeyPressCapture', 'onKeyUp', 'onKeyUpCapture', 'onAbort', 'onAbortCapture', 'onCanPlay', 'onCanPlayCapture', 'onCanPlayThrough', 'onCanPlayThroughCapture', 'onDurationChange', 'onDurationChangeCapture', 'onEmptied', 'onEmptiedCapture', 'onEncrypted', 'onEncryptedCapture', 'onEnded', 'onEndedCapture', 'onLoadedData', 'onLoadedDataCapture', 'onLoadedMetadata', 'onLoadedMetadataCapture', 'onLoadStart', 'onLoadStartCapture', 'onPause', 'onPauseCapture', 'onPlay', 'onPlayCapture', 'onPlaying', 'onPlayingCapture', 'onProgress', 'onProgressCapture', 'onRateChange', 'onRateChangeCapture', 'onSeeked', 'onSeekedCapture', 'onSeeking', 'onSeekingCapture', 'onStalled', 'onStalledCapture', 'onSuspend', 'onSuspendCapture', 'onTimeUpdate', 'onTimeUpdateCapture', 'onVolumeChange', 'onVolumeChangeCapture', 'onWaiting', 'onWaitingCapture', 'onAuxClick', 'onAuxClickCapture', 'onClick', 'onClickCapture', 'onContextMenu', 'onContextMenuCapture', 'onDoubleClick', 'onDoubleClickCapture', 'onDrag', 'onDragCapture', 'onDragEnd', 'onDragEndCapture', 'onDragEnter', 'onDragEnterCapture', 'onDragExit', 'onDragExitCapture', 'onDragLeave', 'onDragLeaveCapture', 'onDragOver', 'onDragOverCapture', 'onDragStart', 'onDragStartCapture', 'onDrop', 'onDropCapture', 'onMouseDown', 'onMouseDownCapture', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseMoveCapture', 'onMouseOut', 'onMouseOutCapture', 'onMouseOver', 'onMouseOverCapture', 'onMouseUp', 'onMouseUpCapture', 'onSelect', 'onSelectCapture', 'onTouchCancel', 'onTouchCancelCapture', 'onTouchEnd', 'onTouchEndCapture', 'onTouchMove', 'onTouchMoveCapture', 'onTouchStart', 'onTouchStartCapture', 'onPointerDown', 'onPointerDownCapture', 'onPointerMove', 'onPointerMoveCapture', 'onPointerUp', 'onPointerUpCapture', 'onPointerCancel', 'onPointerCancelCapture', 'onPointerEnter', 'onPointerEnterCapture', 'onPointerLeave', 'onPointerLeaveCapture', 'onPointerOver', 'onPointerOverCapture', 'onPointerOut', 'onPointerOutCapture', 'onGotPointerCapture', 'onGotPointerCaptureCapture', 'onLostPointerCapture', 'onLostPointerCaptureCapture', 'onScroll', 'onScrollCapture', 'onWheel', 'onWheelCapture', 'onAnimationStart', 'onAnimationStartCapture', 'onAnimationEnd', 'onAnimationEndCapture', 'onAnimationIteration', 'onAnimationIterationCapture', 'onTransitionEnd', 'onTransitionEndCapture']; // Animation Types => TODO: Should be moved when react-smooth is typescriptified.\n\nexport var filterProps = function filterProps(props, includeEvents, isSvg) {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n\n var inputProps = props;\n\n if ( /*#__PURE__*/isValidElement(props)) {\n inputProps = props.props;\n }\n\n if (!_isObject(inputProps)) {\n return null;\n }\n\n var out = {};\n Object.keys(inputProps).forEach(function (key) {\n // viewBox only exist in \n if (SVGElementPropKeys.includes(key) || isSvg && SVGContainerPropKeys.includes(key) || includeEvents && EventKeys.includes(key)) {\n out[key] = inputProps[key];\n }\n });\n return out;\n};\nexport var adaptEventHandlers = function adaptEventHandlers(props, newHandler) {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n\n var inputProps = props;\n\n if ( /*#__PURE__*/isValidElement(props)) {\n inputProps = props.props;\n }\n\n if (!_isObject(inputProps)) {\n return null;\n }\n\n var out = {};\n Object.keys(inputProps).forEach(function (key) {\n if (EventKeys.includes(key)) {\n out[key] = newHandler || function (e) {\n return inputProps[key](inputProps, e);\n };\n }\n });\n return out;\n};\n\nvar getEventHandlerOfChild = function getEventHandlerOfChild(originalHandler, data, index) {\n return function (e) {\n originalHandler(data, index, e);\n return null;\n };\n};\n\nexport var adaptEventsOfChild = function adaptEventsOfChild(props, data, index) {\n if (!_isObject(props) || _typeof(props) !== 'object') {\n return null;\n }\n\n var out = null;\n Object.keys(props).forEach(function (key) {\n var item = props[key];\n\n if (EventKeys.includes(key) && typeof item === 'function') {\n if (!out) out = {};\n out[key] = getEventHandlerOfChild(item, data, index);\n }\n });\n return out;\n};","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new Map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new Map();\n for (const value of _) {\n const key = value + \"\";\n if (index.has(key)) continue;\n index.set(key, domain.push(value));\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\nfunction arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = arrayEvery;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\nfunction baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n}\n\nmodule.exports = baseEvery;\n","var isSymbol = require('./isSymbol');\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseExtremum;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nmodule.exports = baseGt;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nmodule.exports = baseLt;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n}\n\nmodule.exports = baseSome;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var arrayEvery = require('./_arrayEvery'),\n baseEvery = require('./_baseEvery'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\nfunction every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = every;\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","var baseFlatten = require('./_baseFlatten'),\n map = require('./map');\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nmodule.exports = flatMap;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n}\n\nmodule.exports = isBoolean;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var isNumber = require('./isNumber');\n\n/**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\nfunction isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n}\n\nmodule.exports = isNaN;\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nmodule.exports = isNil;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n identity = require('./identity');\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n}\n\nmodule.exports = max;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseExtremum = require('./_baseExtremum'),\n baseLt = require('./_baseLt'),\n identity = require('./identity');\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nmodule.exports = min;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","var arraySome = require('./_arraySome'),\n baseIteratee = require('./_baseIteratee'),\n baseSome = require('./_baseSome'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = some;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","/** @license React v16.10.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.suspense_list\"):\n60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.fundamental\"):60117,w=b?Symbol.for(\"react.responder\"):60118,x=b?Symbol.for(\"react.scope\"):60119;function y(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case t:case r:case d:return u}}}function z(a){return y(a)===m}\nexports.typeOf=y;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===v||a.$$typeof===w||a.$$typeof===x)};exports.isAsyncMode=function(a){return z(a)||y(a)===l};exports.isConcurrentMode=z;exports.isContextConsumer=function(a){return y(a)===k};exports.isContextProvider=function(a){return y(a)===h};\nexports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return y(a)===n};exports.isFragment=function(a){return y(a)===e};exports.isLazy=function(a){return y(a)===t};exports.isMemo=function(a){return y(a)===r};exports.isPortal=function(a){return y(a)===d};exports.isProfiler=function(a){return y(a)===g};exports.isStrictMode=function(a){return y(a)===f};exports.isSuspense=function(a){return y(a)===p};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _postcssValueParser = require('postcss-value-parser');\n\nvar _postcssValueParser2 = _interopRequireDefault(_postcssValueParser);\n\nvar _parser = require('./parser');\n\nvar _reducer = require('./lib/reducer');\n\nvar _reducer2 = _interopRequireDefault(_reducer);\n\nvar _stringifier = require('./lib/stringifier');\n\nvar _stringifier2 = _interopRequireDefault(_stringifier);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// eslint-disable-line\nvar MATCH_CALC = /((?:\\-[a-z]+\\-)?calc)/;\n\nexports.default = function (value) {\n var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;\n\n return (0, _postcssValueParser2.default)(value).walk(function (node) {\n // skip anything which isn't a calc() function\n if (node.type !== 'function' || !MATCH_CALC.test(node.value)) return;\n\n // stringify calc expression and produce an AST\n var contents = _postcssValueParser2.default.stringify(node.nodes);\n\n // skip constant() and env()\n if (contents.indexOf('constant') >= 0 || contents.indexOf('env') >= 0) return;\n\n var ast = _parser.parser.parse(contents);\n\n // reduce AST to its simplest form, that is, either to a single value\n // or a simplified calc expression\n var reducedAst = (0, _reducer2.default)(ast, precision);\n\n // stringify AST and write it back\n node.type = 'word';\n node.value = (0, _stringifier2.default)(node.value, reducedAst, precision);\n }, true).toString();\n};\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _cssUnitConverter = require('css-unit-converter');\n\nvar _cssUnitConverter2 = _interopRequireDefault(_cssUnitConverter);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction convertNodes(left, right, precision) {\n switch (left.type) {\n case 'LengthValue':\n case 'AngleValue':\n case 'TimeValue':\n case 'FrequencyValue':\n case 'ResolutionValue':\n return convertAbsoluteLength(left, right, precision);\n default:\n return { left: left, right: right };\n }\n}\n\nfunction convertAbsoluteLength(left, right, precision) {\n if (right.type === left.type) {\n right = {\n type: left.type,\n value: (0, _cssUnitConverter2.default)(right.value, right.unit, left.unit, precision),\n unit: left.unit\n };\n }\n return { left: left, right: right };\n}\n\nexports.default = convertNodes;\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flip = flip;\n\nvar _convert = require(\"./convert\");\n\nvar _convert2 = _interopRequireDefault(_convert);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction reduce(node, precision) {\n if (node.type === \"MathExpression\") return reduceMathExpression(node, precision);\n if (node.type === \"Calc\") return reduce(node.value, precision);\n\n return node;\n}\n\nfunction isEqual(left, right) {\n return left.type === right.type && left.value === right.value;\n}\n\nfunction isValueType(type) {\n switch (type) {\n case 'LengthValue':\n case 'AngleValue':\n case 'TimeValue':\n case 'FrequencyValue':\n case 'ResolutionValue':\n case 'EmValue':\n case 'ExValue':\n case 'ChValue':\n case 'RemValue':\n case 'VhValue':\n case 'VwValue':\n case 'VminValue':\n case 'VmaxValue':\n case 'PercentageValue':\n case 'Value':\n return true;\n }\n return false;\n}\n\nfunction convertMathExpression(node, precision) {\n var nodes = (0, _convert2.default)(node.left, node.right, precision);\n var left = reduce(nodes.left, precision);\n var right = reduce(nodes.right, precision);\n\n if (left.type === \"MathExpression\" && right.type === \"MathExpression\") {\n\n if (left.operator === '/' && right.operator === '*' || left.operator === '-' && right.operator === '+' || left.operator === '*' && right.operator === '/' || left.operator === '+' && right.operator === '-') {\n\n if (isEqual(left.right, right.right)) nodes = (0, _convert2.default)(left.left, right.left, precision);else if (isEqual(left.right, right.left)) nodes = (0, _convert2.default)(left.left, right.right, precision);\n\n left = reduce(nodes.left, precision);\n right = reduce(nodes.right, precision);\n }\n }\n\n node.left = left;\n node.right = right;\n return node;\n}\n\nfunction flip(operator) {\n return operator === '+' ? '-' : '+';\n}\n\nfunction flipValue(node) {\n if (isValueType(node.type)) node.value = -node.value;else if (node.type == 'MathExpression') {\n node.left = flipValue(node.left);\n node.right = flipValue(node.right);\n }\n return node;\n}\n\nfunction reduceAddSubExpression(node, precision) {\n var _node = node,\n left = _node.left,\n right = _node.right,\n op = _node.operator;\n\n\n if (left.type === 'CssVariable' || right.type === 'CssVariable') return node;\n\n // something + 0 => something\n // something - 0 => something\n if (right.value === 0) return left;\n\n // 0 + something => something\n if (left.value === 0 && op === \"+\") return right;\n\n // 0 - something => -something\n if (left.value === 0 && op === \"-\") return flipValue(right);\n\n // value + value\n // value - value\n if (left.type === right.type && isValueType(left.type)) {\n node = Object.assign({}, left);\n if (op === \"+\") node.value = left.value + right.value;else node.value = left.value - right.value;\n }\n\n // value (expr)\n if (isValueType(left.type) && (right.operator === '+' || right.operator === '-') && right.type === 'MathExpression') {\n // value + (value + something) => (value + value) + something\n // value + (value - something) => (value + value) - something\n // value - (value + something) => (value - value) - something\n // value - (value - something) => (value - value) + something\n if (left.type === right.left.type) {\n node = Object.assign({}, node);\n node.left = reduce({\n type: 'MathExpression',\n operator: op,\n left: left,\n right: right.left\n }, precision);\n node.right = right.right;\n node.operator = op === '-' ? flip(right.operator) : right.operator;\n return reduce(node, precision);\n }\n // value + (something + value) => (value + value) + something\n // value + (something - value) => (value - value) + something\n // value - (something + value) => (value - value) - something\n // value - (something - value) => (value + value) - something\n else if (left.type === right.right.type) {\n node = Object.assign({}, node);\n node.left = reduce({\n type: 'MathExpression',\n operator: op === '-' ? flip(right.operator) : right.operator,\n left: left,\n right: right.right\n }, precision);\n node.right = right.left;\n return reduce(node, precision);\n }\n }\n\n // (expr) value\n if (left.type === 'MathExpression' && (left.operator === '+' || left.operator === '-') && isValueType(right.type)) {\n // (value + something) + value => (value + value) + something\n // (value - something) + value => (value + value) - something\n // (value + something) - value => (value - value) + something\n // (value - something) - value => (value - value) - something\n if (right.type === left.left.type) {\n node = Object.assign({}, left);\n node.left = reduce({\n type: 'MathExpression',\n operator: op,\n left: left.left,\n right: right\n }, precision);\n return reduce(node, precision);\n }\n // (something + value) + value => something + (value + value)\n // (something - value1) + value2 => something - (value2 - value1)\n // (something + value) - value => something + (value - value)\n // (something - value) - value => something - (value + value)\n else if (right.type === left.right.type) {\n node = Object.assign({}, left);\n if (left.operator === '-') {\n node.right = reduce({\n type: 'MathExpression',\n operator: op === '-' ? '+' : '-',\n left: right,\n right: left.right\n }, precision);\n node.operator = op === '-' ? '-' : '+';\n } else {\n node.right = reduce({\n type: 'MathExpression',\n operator: op,\n left: left.right,\n right: right\n }, precision);\n }\n if (node.right.value < 0) {\n node.right.value *= -1;\n node.operator = node.operator === '-' ? '+' : '-';\n }\n return reduce(node, precision);\n }\n }\n return node;\n}\n\nfunction reduceDivisionExpression(node, precision) {\n if (!isValueType(node.right.type)) return node;\n\n if (node.right.type !== 'Value') throw new Error(\"Cannot divide by \\\"\" + node.right.unit + \"\\\", number expected\");\n\n if (node.right.value === 0) throw new Error('Cannot divide by zero');\n\n // (expr) / value\n if (node.left.type === 'MathExpression') {\n if (isValueType(node.left.left.type) && isValueType(node.left.right.type)) {\n node.left.left.value /= node.right.value;\n node.left.right.value /= node.right.value;\n return reduce(node.left, precision);\n }\n return node;\n }\n // something / value\n else if (isValueType(node.left.type)) {\n node.left.value /= node.right.value;\n return node.left;\n }\n return node;\n}\n\nfunction reduceMultiplicationExpression(node) {\n // (expr) * value\n if (node.left.type === 'MathExpression' && node.right.type === 'Value') {\n if (isValueType(node.left.left.type) && isValueType(node.left.right.type)) {\n node.left.left.value *= node.right.value;\n node.left.right.value *= node.right.value;\n return node.left;\n }\n }\n // something * value\n else if (isValueType(node.left.type) && node.right.type === 'Value') {\n node.left.value *= node.right.value;\n return node.left;\n }\n // value * (expr)\n else if (node.left.type === 'Value' && node.right.type === 'MathExpression') {\n if (isValueType(node.right.left.type) && isValueType(node.right.right.type)) {\n node.right.left.value *= node.left.value;\n node.right.right.value *= node.left.value;\n return node.right;\n }\n }\n // value * something\n else if (node.left.type === 'Value' && isValueType(node.right.type)) {\n node.right.value *= node.left.value;\n return node.right;\n }\n return node;\n}\n\nfunction reduceMathExpression(node, precision) {\n node = convertMathExpression(node, precision);\n\n switch (node.operator) {\n case \"+\":\n case \"-\":\n return reduceAddSubExpression(node, precision);\n case \"/\":\n return reduceDivisionExpression(node, precision);\n case \"*\":\n return reduceMultiplicationExpression(node);\n }\n return node;\n}\n\nexports.default = reduce;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (calc, node, precision) {\n var str = stringify(node, precision);\n\n if (node.type === \"MathExpression\") {\n // if calc expression couldn't be resolved to a single value, re-wrap it as\n // a calc()\n str = calc + \"(\" + str + \")\";\n }\n return str;\n};\n\nvar _reducer = require(\"./reducer\");\n\nvar order = {\n \"*\": 0,\n \"/\": 0,\n \"+\": 1,\n \"-\": 1\n};\n\nfunction round(value, prec) {\n if (prec !== false) {\n var precision = Math.pow(10, prec);\n return Math.round(value * precision) / precision;\n }\n return value;\n}\n\nfunction stringify(node, prec) {\n switch (node.type) {\n case \"MathExpression\":\n {\n var left = node.left,\n right = node.right,\n op = node.operator;\n\n var str = \"\";\n\n if (left.type === 'MathExpression' && order[op] < order[left.operator]) str += \"(\" + stringify(left, prec) + \")\";else str += stringify(left, prec);\n\n str += \" \" + node.operator + \" \";\n\n if (right.type === 'MathExpression' && order[op] < order[right.operator]) {\n str += \"(\" + stringify(right, prec) + \")\";\n } else if (right.type === 'MathExpression' && op === \"-\" && [\"+\", \"-\"].includes(right.operator)) {\n // fix #52 : a-(b+c) = a-b-c\n right.operator = (0, _reducer.flip)(right.operator);\n str += stringify(right, prec);\n } else {\n str += stringify(right, prec);\n }\n\n return str;\n }\n case \"Value\":\n return round(node.value, prec);\n case 'CssVariable':\n if (node.fallback) {\n return \"var(\" + node.value + \", \" + stringify(node.fallback, prec, true) + \")\";\n }\n return \"var(\" + node.value + \")\";\n case 'Calc':\n if (node.prefix) {\n return \"-\" + node.prefix + \"-calc(\" + stringify(node.value, prec) + \")\";\n }\n return \"calc(\" + stringify(node.value, prec) + \")\";\n default:\n return round(node.value, prec) + node.unit;\n }\n}\n\nmodule.exports = exports[\"default\"];","\n/* parser generated by jison 0.6.1-215 */\n\n/*\n * Returns a Parser object of the following structure:\n *\n * Parser: {\n * yy: {} The so-called \"shared state\" or rather the *source* of it;\n * the real \"shared state\" `yy` passed around to\n * the rule actions, etc. is a derivative/copy of this one,\n * not a direct reference!\n * }\n *\n * Parser.prototype: {\n * yy: {},\n * EOF: 1,\n * TERROR: 2,\n *\n * trace: function(errorMessage, ...),\n *\n * JisonParserError: function(msg, hash),\n *\n * quoteName: function(name),\n * Helper function which can be overridden by user code later on: put suitable\n * quotes around literal IDs in a description string.\n *\n * originalQuoteName: function(name),\n * The basic quoteName handler provided by JISON.\n * `cleanupAfterParse()` will clean up and reset `quoteName()` to reference this function\n * at the end of the `parse()`.\n *\n * describeSymbol: function(symbol),\n * Return a more-or-less human-readable description of the given symbol, when\n * available, or the symbol itself, serving as its own 'description' for lack\n * of something better to serve up.\n *\n * Return NULL when the symbol is unknown to the parser.\n *\n * symbols_: {associative list: name ==> number},\n * terminals_: {associative list: number ==> name},\n * nonterminals: {associative list: rule-name ==> {associative list: number ==> rule-alt}},\n * terminal_descriptions_: (if there are any) {associative list: number ==> description},\n * productions_: [...],\n *\n * performAction: function parser__performAction(yytext, yyleng, yylineno, yyloc, yystate, yysp, yyvstack, yylstack, yystack, yysstack),\n *\n * The function parameters and `this` have the following value/meaning:\n * - `this` : reference to the `yyval` internal object, which has members (`$` and `_$`)\n * to store/reference the rule value `$$` and location info `@$`.\n *\n * One important thing to note about `this` a.k.a. `yyval`: every *reduce* action gets\n * to see the same object via the `this` reference, i.e. if you wish to carry custom\n * data from one reduce action through to the next within a single parse run, then you\n * may get nasty and use `yyval` a.k.a. `this` for storing you own semi-permanent data.\n *\n * `this.yy` is a direct reference to the `yy` shared state object.\n *\n * `%parse-param`-specified additional `parse()` arguments have been added to this `yy`\n * object at `parse()` start and are therefore available to the action code via the\n * same named `yy.xxxx` attributes (where `xxxx` represents a identifier name from\n * the %parse-param` list.\n *\n * - `yytext` : reference to the lexer value which belongs to the last lexer token used\n * to match this rule. This is *not* the look-ahead token, but the last token\n * that's actually part of this rule.\n *\n * Formulated another way, `yytext` is the value of the token immediately preceeding\n * the current look-ahead token.\n * Caveats apply for rules which don't require look-ahead, such as epsilon rules.\n *\n * - `yyleng` : ditto as `yytext`, only now for the lexer.yyleng value.\n *\n * - `yylineno`: ditto as `yytext`, only now for the lexer.yylineno value.\n *\n * - `yyloc` : ditto as `yytext`, only now for the lexer.yylloc lexer token location info.\n *\n * WARNING: since jison 0.4.18-186 this entry may be NULL/UNDEFINED instead\n * of an empty object when no suitable location info can be provided.\n *\n * - `yystate` : the current parser state number, used internally for dispatching and\n * executing the action code chunk matching the rule currently being reduced.\n *\n * - `yysp` : the current state stack position (a.k.a. 'stack pointer')\n *\n * This one comes in handy when you are going to do advanced things to the parser\n * stacks, all of which are accessible from your action code (see the next entries below).\n *\n * Also note that you can access this and other stack index values using the new double-hash\n * syntax, i.e. `##$ === ##0 === yysp`, while `##1` is the stack index for all things\n * related to the first rule term, just like you have `$1`, `@1` and `#1`.\n * This is made available to write very advanced grammar action rules, e.g. when you want\n * to investigate the parse state stack in your action code, which would, for example,\n * be relevant when you wish to implement error diagnostics and reporting schemes similar\n * to the work described here:\n *\n * + Pottier, F., 2016. Reachability and error diagnosis in LR(1) automata.\n * In Journées Francophones des Languages Applicatifs.\n *\n * + Jeffery, C.L., 2003. Generating LR syntax error messages from examples.\n * ACM Transactions on Programming Languages and Systems (TOPLAS), 25(5), pp.631–640.\n *\n * - `yyrulelength`: the current rule's term count, i.e. the number of entries occupied on the stack.\n *\n * This one comes in handy when you are going to do advanced things to the parser\n * stacks, all of which are accessible from your action code (see the next entries below).\n *\n * - `yyvstack`: reference to the parser value stack. Also accessed via the `$1` etc.\n * constructs.\n *\n * - `yylstack`: reference to the parser token location stack. Also accessed via\n * the `@1` etc. constructs.\n *\n * WARNING: since jison 0.4.18-186 this array MAY contain slots which are\n * UNDEFINED rather than an empty (location) object, when the lexer/parser\n * action code did not provide a suitable location info object when such a\n * slot was filled!\n *\n * - `yystack` : reference to the parser token id stack. Also accessed via the\n * `#1` etc. constructs.\n *\n * Note: this is a bit of a **white lie** as we can statically decode any `#n` reference to\n * its numeric token id value, hence that code wouldn't need the `yystack` but *you* might\n * want access this array for your own purposes, such as error analysis as mentioned above!\n *\n * Note that this stack stores the current stack of *tokens*, that is the sequence of\n * already parsed=reduced *nonterminals* (tokens representing rules) and *terminals*\n * (lexer tokens *shifted* onto the stack until the rule they belong to is found and\n * *reduced*.\n *\n * - `yysstack`: reference to the parser state stack. This one carries the internal parser\n * *states* such as the one in `yystate`, which are used to represent\n * the parser state machine in the *parse table*. *Very* *internal* stuff,\n * what can I say? If you access this one, you're clearly doing wicked things\n *\n * - `...` : the extra arguments you specified in the `%parse-param` statement in your\n * grammar definition file.\n *\n * table: [...],\n * State transition table\n * ----------------------\n *\n * index levels are:\n * - `state` --> hash table\n * - `symbol` --> action (number or array)\n *\n * If the `action` is an array, these are the elements' meaning:\n * - index [0]: 1 = shift, 2 = reduce, 3 = accept\n * - index [1]: GOTO `state`\n *\n * If the `action` is a number, it is the GOTO `state`\n *\n * defaultActions: {...},\n *\n * parseError: function(str, hash, ExceptionClass),\n * yyError: function(str, ...),\n * yyRecovering: function(),\n * yyErrOk: function(),\n * yyClearIn: function(),\n *\n * constructParseErrorInfo: function(error_message, exception_object, expected_token_set, is_recoverable),\n * Helper function **which will be set up during the first invocation of the `parse()` method**.\n * Produces a new errorInfo 'hash object' which can be passed into `parseError()`.\n * See it's use in this parser kernel in many places; example usage:\n *\n * var infoObj = parser.constructParseErrorInfo('fail!', null,\n * parser.collect_expected_token_set(state), true);\n * var retVal = parser.parseError(infoObj.errStr, infoObj, parser.JisonParserError);\n *\n * originalParseError: function(str, hash, ExceptionClass),\n * The basic `parseError` handler provided by JISON.\n * `cleanupAfterParse()` will clean up and reset `parseError()` to reference this function\n * at the end of the `parse()`.\n *\n * options: { ... parser %options ... },\n *\n * parse: function(input[, args...]),\n * Parse the given `input` and return the parsed value (or `true` when none was provided by\n * the root action, in which case the parser is acting as a *matcher*).\n * You MAY use the additional `args...` parameters as per `%parse-param` spec of this grammar:\n * these extra `args...` are added verbatim to the `yy` object reference as member variables.\n *\n * WARNING:\n * Parser's additional `args...` parameters (via `%parse-param`) MAY conflict with\n * any attributes already added to `yy` by the jison run-time;\n * when such a collision is detected an exception is thrown to prevent the generated run-time\n * from silently accepting this confusing and potentially hazardous situation!\n *\n * The lexer MAY add its own set of additional parameters (via the `%parse-param` line in\n * the lexer section of the grammar spec): these will be inserted in the `yy` shared state\n * object and any collision with those will be reported by the lexer via a thrown exception.\n *\n * cleanupAfterParse: function(resultValue, invoke_post_methods, do_not_nuke_errorinfos),\n * Helper function **which will be set up during the first invocation of the `parse()` method**.\n * This helper API is invoked at the end of the `parse()` call, unless an exception was thrown\n * and `%options no-try-catch` has been defined for this grammar: in that case this helper MAY\n * be invoked by calling user code to ensure the `post_parse` callbacks are invoked and\n * the internal parser gets properly garbage collected under these particular circumstances.\n *\n * yyMergeLocationInfo: function(first_index, last_index, first_yylloc, last_yylloc, dont_look_back),\n * Helper function **which will be set up during the first invocation of the `parse()` method**.\n * This helper API can be invoked to calculate a spanning `yylloc` location info object.\n *\n * Note: %epsilon rules MAY specify no `first_index` and `first_yylloc`, in which case\n * this function will attempt to obtain a suitable location marker by inspecting the location stack\n * backwards.\n *\n * For more info see the documentation comment further below, immediately above this function's\n * implementation.\n *\n * lexer: {\n * yy: {...}, A reference to the so-called \"shared state\" `yy` once\n * received via a call to the `.setInput(input, yy)` lexer API.\n * EOF: 1,\n * ERROR: 2,\n * JisonLexerError: function(msg, hash),\n * parseError: function(str, hash, ExceptionClass),\n * setInput: function(input, [yy]),\n * input: function(),\n * unput: function(str),\n * more: function(),\n * reject: function(),\n * less: function(n),\n * pastInput: function(n),\n * upcomingInput: function(n),\n * showPosition: function(),\n * test_match: function(regex_match_array, rule_index, ...),\n * next: function(...),\n * lex: function(...),\n * begin: function(condition),\n * pushState: function(condition),\n * popState: function(),\n * topState: function(),\n * _currentRules: function(),\n * stateStackSize: function(),\n * cleanupAfterLex: function()\n *\n * options: { ... lexer %options ... },\n *\n * performAction: function(yy, yy_, $avoiding_name_collisions, YY_START, ...),\n * rules: [...],\n * conditions: {associative list: name ==> set},\n * }\n * }\n *\n *\n * token location info (@$, _$, etc.): {\n * first_line: n,\n * last_line: n,\n * first_column: n,\n * last_column: n,\n * range: [start_number, end_number]\n * (where the numbers are indexes into the input string, zero-based)\n * }\n *\n * ---\n *\n * The `parseError` function receives a 'hash' object with these members for lexer and\n * parser errors:\n *\n * {\n * text: (matched text)\n * token: (the produced terminal token, if any)\n * token_id: (the produced terminal token numeric ID, if any)\n * line: (yylineno)\n * loc: (yylloc)\n * }\n *\n * parser (grammar) errors will also provide these additional members:\n *\n * {\n * expected: (array describing the set of expected tokens;\n * may be UNDEFINED when we cannot easily produce such a set)\n * state: (integer (or array when the table includes grammar collisions);\n * represents the current internal state of the parser kernel.\n * can, for example, be used to pass to the `collect_expected_token_set()`\n * API to obtain the expected token set)\n * action: (integer; represents the current internal action which will be executed)\n * new_state: (integer; represents the next/planned internal state, once the current\n * action has executed)\n * recoverable: (boolean: TRUE when the parser MAY have an error recovery rule\n * available for this particular error)\n * state_stack: (array: the current parser LALR/LR internal state stack; this can be used,\n * for instance, for advanced error analysis and reporting)\n * value_stack: (array: the current parser LALR/LR internal `$$` value stack; this can be used,\n * for instance, for advanced error analysis and reporting)\n * location_stack: (array: the current parser LALR/LR internal location stack; this can be used,\n * for instance, for advanced error analysis and reporting)\n * yy: (object: the current parser internal \"shared state\" `yy`\n * as is also available in the rule actions; this can be used,\n * for instance, for advanced error analysis and reporting)\n * lexer: (reference to the current lexer instance used by the parser)\n * parser: (reference to the current parser instance)\n * }\n *\n * while `this` will reference the current parser instance.\n *\n * When `parseError` is invoked by the lexer, `this` will still reference the related *parser*\n * instance, while these additional `hash` fields will also be provided:\n *\n * {\n * lexer: (reference to the current lexer instance which reported the error)\n * }\n *\n * When `parseError` is invoked by the parser due to a **JavaScript exception** being fired\n * from either the parser or lexer, `this` will still reference the related *parser*\n * instance, while these additional `hash` fields will also be provided:\n *\n * {\n * exception: (reference to the exception thrown)\n * }\n *\n * Please do note that in the latter situation, the `expected` field will be omitted as\n * this type of failure is assumed not to be due to *parse errors* but rather due to user\n * action code in either parser or lexer failing unexpectedly.\n *\n * ---\n *\n * You can specify parser options by setting / modifying the `.yy` object of your Parser instance.\n * These options are available:\n *\n * ### options which are global for all parser instances\n *\n * Parser.pre_parse: function(yy)\n * optional: you can specify a pre_parse() function in the chunk following\n * the grammar, i.e. after the last `%%`.\n * Parser.post_parse: function(yy, retval, parseInfo) { return retval; }\n * optional: you can specify a post_parse() function in the chunk following\n * the grammar, i.e. after the last `%%`. When it does not return any value,\n * the parser will return the original `retval`.\n *\n * ### options which can be set up per parser instance\n *\n * yy: {\n * pre_parse: function(yy)\n * optional: is invoked before the parse cycle starts (and before the first\n * invocation of `lex()`) but immediately after the invocation of\n * `parser.pre_parse()`).\n * post_parse: function(yy, retval, parseInfo) { return retval; }\n * optional: is invoked when the parse terminates due to success ('accept')\n * or failure (even when exceptions are thrown).\n * `retval` contains the return value to be produced by `Parser.parse()`;\n * this function can override the return value by returning another.\n * When it does not return any value, the parser will return the original\n * `retval`.\n * This function is invoked immediately before `parser.post_parse()`.\n *\n * parseError: function(str, hash, ExceptionClass)\n * optional: overrides the default `parseError` function.\n * quoteName: function(name),\n * optional: overrides the default `quoteName` function.\n * }\n *\n * parser.lexer.options: {\n * pre_lex: function()\n * optional: is invoked before the lexer is invoked to produce another token.\n * `this` refers to the Lexer object.\n * post_lex: function(token) { return token; }\n * optional: is invoked when the lexer has produced a token `token`;\n * this function can override the returned token value by returning another.\n * When it does not return any (truthy) value, the lexer will return\n * the original `token`.\n * `this` refers to the Lexer object.\n *\n * ranges: boolean\n * optional: `true` ==> token location info will include a .range[] member.\n * flex: boolean\n * optional: `true` ==> flex-like lexing behaviour where the rules are tested\n * exhaustively to find the longest match.\n * backtrack_lexer: boolean\n * optional: `true` ==> lexer regexes are tested in order and for invoked;\n * the lexer terminates the scan when a token is returned by the action code.\n * xregexp: boolean\n * optional: `true` ==> lexer rule regexes are \"extended regex format\" requiring the\n * `XRegExp` library. When this `%option` has not been specified at compile time, all lexer\n * rule regexes have been written as standard JavaScript RegExp expressions.\n * }\n */\n\n \n \n var parser = (function () {\n\n\n// See also:\n// http://stackoverflow.com/questions/1382107/whats-a-good-way-to-extend-error-in-javascript/#35881508\n// but we keep the prototype.constructor and prototype.name assignment lines too for compatibility\n// with userland code which might access the derived class in a 'classic' way.\nfunction JisonParserError(msg, hash) {\n Object.defineProperty(this, 'name', {\n enumerable: false,\n writable: false,\n value: 'JisonParserError'\n });\n\n if (msg == null) msg = '???';\n\n Object.defineProperty(this, 'message', {\n enumerable: false,\n writable: true,\n value: msg\n });\n\n this.hash = hash;\n\n var stacktrace;\n if (hash && hash.exception instanceof Error) {\n var ex2 = hash.exception;\n this.message = ex2.message || msg;\n stacktrace = ex2.stack;\n }\n if (!stacktrace) {\n if (Error.hasOwnProperty('captureStackTrace')) { // V8/Chrome engine\n Error.captureStackTrace(this, this.constructor);\n } else {\n stacktrace = (new Error(msg)).stack;\n }\n }\n if (stacktrace) {\n Object.defineProperty(this, 'stack', {\n enumerable: false,\n writable: false,\n value: stacktrace\n });\n }\n}\n\nif (typeof Object.setPrototypeOf === 'function') {\n Object.setPrototypeOf(JisonParserError.prototype, Error.prototype);\n} else {\n JisonParserError.prototype = Object.create(Error.prototype);\n}\nJisonParserError.prototype.constructor = JisonParserError;\nJisonParserError.prototype.name = 'JisonParserError';\n\n\n\n\n // helper: reconstruct the productions[] table\n function bp(s) {\n var rv = [];\n var p = s.pop;\n var r = s.rule;\n for (var i = 0, l = p.length; i < l; i++) {\n rv.push([\n p[i],\n r[i]\n ]);\n }\n return rv;\n }\n \n\n\n // helper: reconstruct the defaultActions[] table\n function bda(s) {\n var rv = {};\n var d = s.idx;\n var g = s.goto;\n for (var i = 0, l = d.length; i < l; i++) {\n var j = d[i];\n rv[j] = g[i];\n }\n return rv;\n }\n \n\n\n // helper: reconstruct the 'goto' table\n function bt(s) {\n var rv = [];\n var d = s.len;\n var y = s.symbol;\n var t = s.type;\n var a = s.state;\n var m = s.mode;\n var g = s.goto;\n for (var i = 0, l = d.length; i < l; i++) {\n var n = d[i];\n var q = {};\n for (var j = 0; j < n; j++) {\n var z = y.shift();\n switch (t.shift()) {\n case 2:\n q[z] = [\n m.shift(),\n g.shift()\n ];\n break;\n\n case 0:\n q[z] = a.shift();\n break;\n\n default:\n // type === 1: accept\n q[z] = [\n 3\n ];\n }\n }\n rv.push(q);\n }\n return rv;\n }\n \n\n\n // helper: runlength encoding with increment step: code, length: step (default step = 0)\n // `this` references an array\n function s(c, l, a) {\n a = a || 0;\n for (var i = 0; i < l; i++) {\n this.push(c);\n c += a;\n }\n }\n\n // helper: duplicate sequence from *relative* offset and length.\n // `this` references an array\n function c(i, l) {\n i = this.length - i;\n for (l += i; i < l; i++) {\n this.push(this[i]);\n }\n }\n\n // helper: unpack an array using helpers and data, all passed in an array argument 'a'.\n function u(a) {\n var rv = [];\n for (var i = 0, l = a.length; i < l; i++) {\n var e = a[i];\n // Is this entry a helper function?\n if (typeof e === 'function') {\n i++;\n e.apply(rv, a[i]);\n } else {\n rv.push(e);\n }\n }\n return rv;\n }\n \n\nvar parser = {\n // Code Generator Information Report\n // ---------------------------------\n //\n // Options:\n //\n // default action mode: ............. [\"classic\",\"merge\"]\n // test-compile action mode: ........ \"parser:*,lexer:*\"\n // try..catch: ...................... true\n // default resolve on conflict: ..... true\n // on-demand look-ahead: ............ false\n // error recovery token skip maximum: 3\n // yyerror in parse actions is: ..... NOT recoverable,\n // yyerror in lexer actions and other non-fatal lexer are:\n // .................................. NOT recoverable,\n // debug grammar/output: ............ false\n // has partial LR conflict upgrade: true\n // rudimentary token-stack support: false\n // parser table compression mode: ... 2\n // export debug tables: ............. false\n // export *all* tables: ............. false\n // module type: ..................... commonjs\n // parser engine type: .............. lalr\n // output main() in the module: ..... true\n // has user-specified main(): ....... false\n // has user-specified require()/import modules for main():\n // .................................. false\n // number of expected conflicts: .... 0\n //\n //\n // Parser Analysis flags:\n //\n // no significant actions (parser is a language matcher only):\n // .................................. false\n // uses yyleng: ..................... false\n // uses yylineno: ................... false\n // uses yytext: ..................... false\n // uses yylloc: ..................... false\n // uses ParseError API: ............. false\n // uses YYERROR: .................... false\n // uses YYRECOVERING: ............... false\n // uses YYERROK: .................... false\n // uses YYCLEARIN: .................. false\n // tracks rule values: .............. true\n // assigns rule values: ............. true\n // uses location tracking: .......... false\n // assigns location: ................ false\n // uses yystack: .................... false\n // uses yysstack: ................... false\n // uses yysp: ....................... true\n // uses yyrulelength: ............... false\n // uses yyMergeLocationInfo API: .... false\n // has error recovery: .............. false\n // has error reporting: ............. false\n //\n // --------- END OF REPORT -----------\n\ntrace: function no_op_trace() { },\nJisonParserError: JisonParserError,\nyy: {},\noptions: {\n type: \"lalr\",\n hasPartialLrUpgradeOnConflict: true,\n errorRecoveryTokenDiscardCount: 3\n},\nsymbols_: {\n \"$accept\": 0,\n \"$end\": 1,\n \"ADD\": 3,\n \"ANGLE\": 16,\n \"CHS\": 22,\n \"COMMA\": 14,\n \"CSS_CPROP\": 13,\n \"CSS_VAR\": 12,\n \"DIV\": 6,\n \"EMS\": 20,\n \"EOF\": 1,\n \"EXS\": 21,\n \"FREQ\": 18,\n \"LENGTH\": 15,\n \"LPAREN\": 7,\n \"MUL\": 5,\n \"NESTED_CALC\": 9,\n \"NUMBER\": 11,\n \"PERCENTAGE\": 28,\n \"PREFIX\": 10,\n \"REMS\": 23,\n \"RES\": 19,\n \"RPAREN\": 8,\n \"SUB\": 4,\n \"TIME\": 17,\n \"VHS\": 24,\n \"VMAXS\": 27,\n \"VMINS\": 26,\n \"VWS\": 25,\n \"css_value\": 33,\n \"css_variable\": 32,\n \"error\": 2,\n \"expression\": 29,\n \"math_expression\": 30,\n \"value\": 31\n},\nterminals_: {\n 1: \"EOF\",\n 2: \"error\",\n 3: \"ADD\",\n 4: \"SUB\",\n 5: \"MUL\",\n 6: \"DIV\",\n 7: \"LPAREN\",\n 8: \"RPAREN\",\n 9: \"NESTED_CALC\",\n 10: \"PREFIX\",\n 11: \"NUMBER\",\n 12: \"CSS_VAR\",\n 13: \"CSS_CPROP\",\n 14: \"COMMA\",\n 15: \"LENGTH\",\n 16: \"ANGLE\",\n 17: \"TIME\",\n 18: \"FREQ\",\n 19: \"RES\",\n 20: \"EMS\",\n 21: \"EXS\",\n 22: \"CHS\",\n 23: \"REMS\",\n 24: \"VHS\",\n 25: \"VWS\",\n 26: \"VMINS\",\n 27: \"VMAXS\",\n 28: \"PERCENTAGE\"\n},\nTERROR: 2,\n EOF: 1,\n\n // internals: defined here so the object *structure* doesn't get modified by parse() et al,\n // thus helping JIT compilers like Chrome V8.\n originalQuoteName: null,\n originalParseError: null,\n cleanupAfterParse: null,\n constructParseErrorInfo: null,\n yyMergeLocationInfo: null,\n\n __reentrant_call_depth: 0, // INTERNAL USE ONLY\n __error_infos: [], // INTERNAL USE ONLY: the set of parseErrorInfo objects created since the last cleanup\n __error_recovery_infos: [], // INTERNAL USE ONLY: the set of parseErrorInfo objects created since the last cleanup\n\n // APIs which will be set up depending on user action code analysis:\n //yyRecovering: 0,\n //yyErrOk: 0,\n //yyClearIn: 0,\n\n // Helper APIs\n // -----------\n\n // Helper function which can be overridden by user code later on: put suitable quotes around\n // literal IDs in a description string.\n quoteName: function parser_quoteName(id_str) {\n return '\"' + id_str + '\"';\n },\n\n // Return the name of the given symbol (terminal or non-terminal) as a string, when available.\n //\n // Return NULL when the symbol is unknown to the parser.\n getSymbolName: function parser_getSymbolName(symbol) {\n if (this.terminals_[symbol]) {\n return this.terminals_[symbol];\n }\n\n // Otherwise... this might refer to a RULE token i.e. a non-terminal: see if we can dig that one up.\n //\n // An example of this may be where a rule's action code contains a call like this:\n //\n // parser.getSymbolName(#$)\n //\n // to obtain a human-readable name of the current grammar rule.\n var s = this.symbols_;\n for (var key in s) {\n if (s[key] === symbol) {\n return key;\n }\n }\n return null;\n },\n\n // Return a more-or-less human-readable description of the given symbol, when available,\n // or the symbol itself, serving as its own 'description' for lack of something better to serve up.\n //\n // Return NULL when the symbol is unknown to the parser.\n describeSymbol: function parser_describeSymbol(symbol) {\n if (symbol !== this.EOF && this.terminal_descriptions_ && this.terminal_descriptions_[symbol]) {\n return this.terminal_descriptions_[symbol];\n }\n else if (symbol === this.EOF) {\n return 'end of input';\n }\n var id = this.getSymbolName(symbol);\n if (id) {\n return this.quoteName(id);\n }\n return null;\n },\n\n // Produce a (more or less) human-readable list of expected tokens at the point of failure.\n //\n // The produced list may contain token or token set descriptions instead of the tokens\n // themselves to help turning this output into something that easier to read by humans\n // unless `do_not_describe` parameter is set, in which case a list of the raw, *numeric*,\n // expected terminals and nonterminals is produced.\n //\n // The returned list (array) will not contain any duplicate entries.\n collect_expected_token_set: function parser_collect_expected_token_set(state, do_not_describe) {\n var TERROR = this.TERROR;\n var tokenset = [];\n var check = {};\n // Has this (error?) state been outfitted with a custom expectations description text for human consumption?\n // If so, use that one instead of the less palatable token set.\n if (!do_not_describe && this.state_descriptions_ && this.state_descriptions_[state]) {\n return [\n this.state_descriptions_[state]\n ];\n }\n for (var p in this.table[state]) {\n p = +p;\n if (p !== TERROR) {\n var d = do_not_describe ? p : this.describeSymbol(p);\n if (d && !check[d]) {\n tokenset.push(d);\n check[d] = true; // Mark this token description as already mentioned to prevent outputting duplicate entries.\n }\n }\n }\n return tokenset;\n },\nproductions_: bp({\n pop: u([\n 29,\n s,\n [30, 10],\n 31,\n 31,\n 32,\n 32,\n s,\n [33, 15]\n]),\n rule: u([\n 2,\n s,\n [3, 5],\n 4,\n 7,\n s,\n [1, 4],\n 2,\n 4,\n 6,\n s,\n [1, 14],\n 2\n])\n}),\nperformAction: function parser__PerformAction(yystate /* action[1] */, yysp, yyvstack) {\n\n /* this == yyval */\n\n // the JS engine itself can go and remove these statements when `yy` turns out to be unused in any action code!\n var yy = this.yy;\n var yyparser = yy.parser;\n var yylexer = yy.lexer;\n\n \n\n switch (yystate) {\ncase 0:\n /*! Production:: $accept : expression $end */\n\n // default action (generated by JISON mode classic/merge :: 1,VT,VA,-,-,-,-,-,-):\n this.$ = yyvstack[yysp - 1];\n // END of default action (generated by JISON mode classic/merge :: 1,VT,VA,-,-,-,-,-,-)\n break;\n\ncase 1:\n /*! Production:: expression : math_expression EOF */\n\n // default action (generated by JISON mode classic/merge :: 2,VT,VA,-,-,-,-,-,-):\n this.$ = yyvstack[yysp - 1];\n // END of default action (generated by JISON mode classic/merge :: 2,VT,VA,-,-,-,-,-,-)\n \n \n return yyvstack[yysp - 1];\n break;\n\ncase 2:\n /*! Production:: math_expression : math_expression ADD math_expression */\ncase 3:\n /*! Production:: math_expression : math_expression SUB math_expression */\ncase 4:\n /*! Production:: math_expression : math_expression MUL math_expression */\ncase 5:\n /*! Production:: math_expression : math_expression DIV math_expression */\n\n this.$ = { type: 'MathExpression', operator: yyvstack[yysp - 1], left: yyvstack[yysp - 2], right: yyvstack[yysp] };\n break;\n\ncase 6:\n /*! Production:: math_expression : LPAREN math_expression RPAREN */\n\n this.$ = yyvstack[yysp - 1];\n break;\n\ncase 7:\n /*! Production:: math_expression : NESTED_CALC LPAREN math_expression RPAREN */\n\n this.$ = { type: 'Calc', value: yyvstack[yysp - 1] };\n break;\n\ncase 8:\n /*! Production:: math_expression : SUB PREFIX SUB NESTED_CALC LPAREN math_expression RPAREN */\n\n this.$ = { type: 'Calc', value: yyvstack[yysp - 1], prefix: yyvstack[yysp - 5] };\n break;\n\ncase 9:\n /*! Production:: math_expression : css_variable */\ncase 10:\n /*! Production:: math_expression : css_value */\ncase 11:\n /*! Production:: math_expression : value */\n\n this.$ = yyvstack[yysp];\n break;\n\ncase 12:\n /*! Production:: value : NUMBER */\n\n this.$ = { type: 'Value', value: parseFloat(yyvstack[yysp]) };\n break;\n\ncase 13:\n /*! Production:: value : SUB NUMBER */\n\n this.$ = { type: 'Value', value: parseFloat(yyvstack[yysp]) * -1 };\n break;\n\ncase 14:\n /*! Production:: css_variable : CSS_VAR LPAREN CSS_CPROP RPAREN */\n\n this.$ = { type: 'CssVariable', value: yyvstack[yysp - 1] };\n break;\n\ncase 15:\n /*! Production:: css_variable : CSS_VAR LPAREN CSS_CPROP COMMA math_expression RPAREN */\n\n this.$ = { type: 'CssVariable', value: yyvstack[yysp - 3], fallback: yyvstack[yysp - 1] };\n break;\n\ncase 16:\n /*! Production:: css_value : LENGTH */\n\n this.$ = { type: 'LengthValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/.exec(yyvstack[yysp])[0] };\n break;\n\ncase 17:\n /*! Production:: css_value : ANGLE */\n\n this.$ = { type: 'AngleValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/.exec(yyvstack[yysp])[0] };\n break;\n\ncase 18:\n /*! Production:: css_value : TIME */\n\n this.$ = { type: 'TimeValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/.exec(yyvstack[yysp])[0] };\n break;\n\ncase 19:\n /*! Production:: css_value : FREQ */\n\n this.$ = { type: 'FrequencyValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/.exec(yyvstack[yysp])[0] };\n break;\n\ncase 20:\n /*! Production:: css_value : RES */\n\n this.$ = { type: 'ResolutionValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+/.exec(yyvstack[yysp])[0] };\n break;\n\ncase 21:\n /*! Production:: css_value : EMS */\n\n this.$ = { type: 'EmValue', value: parseFloat(yyvstack[yysp]), unit: 'em' };\n break;\n\ncase 22:\n /*! Production:: css_value : EXS */\n\n this.$ = { type: 'ExValue', value: parseFloat(yyvstack[yysp]), unit: 'ex' };\n break;\n\ncase 23:\n /*! Production:: css_value : CHS */\n\n this.$ = { type: 'ChValue', value: parseFloat(yyvstack[yysp]), unit: 'ch' };\n break;\n\ncase 24:\n /*! Production:: css_value : REMS */\n\n this.$ = { type: 'RemValue', value: parseFloat(yyvstack[yysp]), unit: 'rem' };\n break;\n\ncase 25:\n /*! Production:: css_value : VHS */\n\n this.$ = { type: 'VhValue', value: parseFloat(yyvstack[yysp]), unit: 'vh' };\n break;\n\ncase 26:\n /*! Production:: css_value : VWS */\n\n this.$ = { type: 'VwValue', value: parseFloat(yyvstack[yysp]), unit: 'vw' };\n break;\n\ncase 27:\n /*! Production:: css_value : VMINS */\n\n this.$ = { type: 'VminValue', value: parseFloat(yyvstack[yysp]), unit: 'vmin' };\n break;\n\ncase 28:\n /*! Production:: css_value : VMAXS */\n\n this.$ = { type: 'VmaxValue', value: parseFloat(yyvstack[yysp]), unit: 'vmax' };\n break;\n\ncase 29:\n /*! Production:: css_value : PERCENTAGE */\n\n this.$ = { type: 'PercentageValue', value: parseFloat(yyvstack[yysp]), unit: '%' };\n break;\n\ncase 30:\n /*! Production:: css_value : SUB css_value */\n\n var prev = yyvstack[yysp]; prev.value *= -1; this.$ = prev;\n break;\n\n}\n},\ntable: bt({\n len: u([\n 24,\n 1,\n 5,\n 23,\n 1,\n 18,\n s,\n [0, 3],\n 1,\n s,\n [0, 16],\n s,\n [23, 4],\n c,\n [28, 3],\n 0,\n 0,\n 16,\n 1,\n 6,\n 6,\n s,\n [0, 3],\n 5,\n 1,\n 2,\n c,\n [37, 3],\n c,\n [20, 3],\n 5,\n 0,\n 0\n]),\n symbol: u([\n 4,\n 7,\n 9,\n 11,\n 12,\n s,\n [15, 19, 1],\n 1,\n 1,\n s,\n [3, 4, 1],\n c,\n [30, 19],\n c,\n [29, 4],\n 7,\n 4,\n 10,\n 11,\n c,\n [22, 14],\n c,\n [19, 3],\n c,\n [43, 22],\n c,\n [23, 69],\n c,\n [139, 4],\n 8,\n c,\n [51, 24],\n 4,\n c,\n [138, 15],\n 13,\n c,\n [186, 5],\n 8,\n c,\n [6, 6],\n c,\n [5, 5],\n 9,\n 8,\n 14,\n c,\n [159, 47],\n c,\n [60, 10]\n]),\n type: u([\n s,\n [2, 19],\n s,\n [0, 5],\n 1,\n s,\n [2, 24],\n s,\n [0, 4],\n c,\n [22, 19],\n c,\n [43, 42],\n c,\n [23, 70],\n c,\n [28, 25],\n c,\n [45, 25],\n c,\n [113, 54]\n]),\n state: u([\n 1,\n 2,\n 8,\n 6,\n 7,\n 30,\n c,\n [4, 3],\n 33,\n 37,\n c,\n [5, 3],\n 38,\n c,\n [4, 3],\n 39,\n c,\n [4, 3],\n 40,\n c,\n [4, 3],\n 42,\n c,\n [21, 4],\n 50,\n c,\n [5, 3],\n 51,\n c,\n [4, 3]\n]),\n mode: u([\n s,\n [1, 179],\n s,\n [2, 3],\n c,\n [5, 5],\n c,\n [6, 4],\n s,\n [1, 57]\n]),\n goto: u([\n 5,\n 3,\n 4,\n 24,\n s,\n [9, 15, 1],\n s,\n [25, 5, 1],\n c,\n [24, 19],\n 31,\n 35,\n 32,\n 34,\n c,\n [18, 14],\n 36,\n c,\n [38, 19],\n c,\n [19, 57],\n c,\n [118, 4],\n 41,\n c,\n [24, 19],\n 43,\n 35,\n c,\n [16, 14],\n 44,\n s,\n [2, 3],\n 28,\n 29,\n 2,\n s,\n [3, 3],\n 28,\n 29,\n 3,\n c,\n [53, 4],\n s,\n [45, 5, 1],\n c,\n [100, 42],\n 52,\n c,\n [5, 4],\n 53\n])\n}),\ndefaultActions: bda({\n idx: u([\n 6,\n 7,\n 8,\n s,\n [10, 16, 1],\n 33,\n 34,\n 39,\n 40,\n 41,\n 45,\n 47,\n 52,\n 53\n]),\n goto: u([\n 9,\n 10,\n 11,\n s,\n [16, 14, 1],\n 12,\n 1,\n 30,\n 13,\n s,\n [4, 4, 1],\n 14,\n 15,\n 8\n])\n}),\nparseError: function parseError(str, hash, ExceptionClass) {\n if (hash.recoverable) {\n if (typeof this.trace === 'function') {\n this.trace(str);\n }\n hash.destroy(); // destroy... well, *almost*!\n } else {\n if (typeof this.trace === 'function') {\n this.trace(str);\n }\n if (!ExceptionClass) {\n ExceptionClass = this.JisonParserError;\n }\n throw new ExceptionClass(str, hash);\n }\n},\nparse: function parse(input) {\n var self = this;\n var stack = new Array(128); // token stack: stores token which leads to state at the same index (column storage)\n var sstack = new Array(128); // state stack: stores states (column storage)\n\n var vstack = new Array(128); // semantic value stack\n\n var table = this.table;\n var sp = 0; // 'stack pointer': index into the stacks\n\n\n \n\n\n var symbol = 0;\n\n\n\n var TERROR = this.TERROR;\n var EOF = this.EOF;\n var ERROR_RECOVERY_TOKEN_DISCARD_COUNT = (this.options.errorRecoveryTokenDiscardCount | 0) || 3;\n var NO_ACTION = [0, 54 /* === table.length :: ensures that anyone using this new state will fail dramatically! */];\n\n var lexer;\n if (this.__lexer__) {\n lexer = this.__lexer__;\n } else {\n lexer = this.__lexer__ = Object.create(this.lexer);\n }\n\n var sharedState_yy = {\n parseError: undefined,\n quoteName: undefined,\n lexer: undefined,\n parser: undefined,\n pre_parse: undefined,\n post_parse: undefined,\n pre_lex: undefined,\n post_lex: undefined // WARNING: must be written this way for the code expanders to work correctly in both ES5 and ES6 modes!\n };\n\n var ASSERT;\n if (typeof assert !== 'function') {\n ASSERT = function JisonAssert(cond, msg) {\n if (!cond) {\n throw new Error('assertion failed: ' + (msg || '***'));\n }\n };\n } else {\n ASSERT = assert;\n }\n\n this.yyGetSharedState = function yyGetSharedState() {\n return sharedState_yy;\n };\n\n\n\n\n\n\n\n\n function shallow_copy_noclobber(dst, src) {\n for (var k in src) {\n if (typeof dst[k] === 'undefined' && Object.prototype.hasOwnProperty.call(src, k)) {\n dst[k] = src[k];\n }\n }\n }\n\n // copy state\n shallow_copy_noclobber(sharedState_yy, this.yy);\n\n sharedState_yy.lexer = lexer;\n sharedState_yy.parser = this;\n\n\n\n\n\n\n // Does the shared state override the default `parseError` that already comes with this instance?\n if (typeof sharedState_yy.parseError === 'function') {\n this.parseError = function parseErrorAlt(str, hash, ExceptionClass) {\n if (!ExceptionClass) {\n ExceptionClass = this.JisonParserError;\n }\n return sharedState_yy.parseError.call(this, str, hash, ExceptionClass);\n };\n } else {\n this.parseError = this.originalParseError;\n }\n\n // Does the shared state override the default `quoteName` that already comes with this instance?\n if (typeof sharedState_yy.quoteName === 'function') {\n this.quoteName = function quoteNameAlt(id_str) {\n return sharedState_yy.quoteName.call(this, id_str);\n };\n } else {\n this.quoteName = this.originalQuoteName;\n }\n\n // set up the cleanup function; make it an API so that external code can re-use this one in case of\n // calamities or when the `%options no-try-catch` option has been specified for the grammar, in which\n // case this parse() API method doesn't come with a `finally { ... }` block any more!\n //\n // NOTE: as this API uses parse() as a closure, it MUST be set again on every parse() invocation,\n // or else your `sharedState`, etc. references will be *wrong*!\n this.cleanupAfterParse = function parser_cleanupAfterParse(resultValue, invoke_post_methods, do_not_nuke_errorinfos) {\n var rv;\n\n if (invoke_post_methods) {\n var hash;\n\n if (sharedState_yy.post_parse || this.post_parse) {\n // create an error hash info instance: we re-use this API in a **non-error situation**\n // as this one delivers all parser internals ready for access by userland code.\n hash = this.constructParseErrorInfo(null /* no error! */, null /* no exception! */, null, false);\n }\n\n if (sharedState_yy.post_parse) {\n rv = sharedState_yy.post_parse.call(this, sharedState_yy, resultValue, hash);\n if (typeof rv !== 'undefined') resultValue = rv;\n }\n if (this.post_parse) {\n rv = this.post_parse.call(this, sharedState_yy, resultValue, hash);\n if (typeof rv !== 'undefined') resultValue = rv;\n }\n\n // cleanup:\n if (hash && hash.destroy) {\n hash.destroy();\n }\n }\n\n if (this.__reentrant_call_depth > 1) return resultValue; // do not (yet) kill the sharedState when this is a reentrant run.\n\n // clean up the lingering lexer structures as well:\n if (lexer.cleanupAfterLex) {\n lexer.cleanupAfterLex(do_not_nuke_errorinfos);\n }\n\n // prevent lingering circular references from causing memory leaks:\n if (sharedState_yy) {\n sharedState_yy.lexer = undefined;\n sharedState_yy.parser = undefined;\n if (lexer.yy === sharedState_yy) {\n lexer.yy = undefined;\n }\n }\n sharedState_yy = undefined;\n this.parseError = this.originalParseError;\n this.quoteName = this.originalQuoteName;\n\n // nuke the vstack[] array at least as that one will still reference obsoleted user values.\n // To be safe, we nuke the other internal stack columns as well...\n stack.length = 0; // fastest way to nuke an array without overly bothering the GC\n sstack.length = 0;\n\n vstack.length = 0;\n sp = 0;\n\n // nuke the error hash info instances created during this run.\n // Userland code must COPY any data/references\n // in the error hash instance(s) it is more permanently interested in.\n if (!do_not_nuke_errorinfos) {\n for (var i = this.__error_infos.length - 1; i >= 0; i--) {\n var el = this.__error_infos[i];\n if (el && typeof el.destroy === 'function') {\n el.destroy();\n }\n }\n this.__error_infos.length = 0;\n\n\n }\n\n return resultValue;\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\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // NOTE: as this API uses parse() as a closure, it MUST be set again on every parse() invocation,\n // or else your `lexer`, `sharedState`, etc. references will be *wrong*!\n this.constructParseErrorInfo = function parser_constructParseErrorInfo(msg, ex, expected, recoverable) {\n var pei = {\n errStr: msg,\n exception: ex,\n text: lexer.match,\n value: lexer.yytext,\n token: this.describeSymbol(symbol) || symbol,\n token_id: symbol,\n line: lexer.yylineno,\n\n expected: expected,\n recoverable: recoverable,\n state: state,\n action: action,\n new_state: newState,\n symbol_stack: stack,\n state_stack: sstack,\n value_stack: vstack,\n\n stack_pointer: sp,\n yy: sharedState_yy,\n lexer: lexer,\n parser: this,\n\n // and make sure the error info doesn't stay due to potential\n // ref cycle via userland code manipulations.\n // These would otherwise all be memory leak opportunities!\n //\n // Note that only array and object references are nuked as those\n // constitute the set of elements which can produce a cyclic ref.\n // The rest of the members is kept intact as they are harmless.\n destroy: function destructParseErrorInfo() {\n // remove cyclic references added to error info:\n // info.yy = null;\n // info.lexer = null;\n // info.value = null;\n // info.value_stack = null;\n // ...\n var rec = !!this.recoverable;\n for (var key in this) {\n if (this.hasOwnProperty(key) && typeof key === 'object') {\n this[key] = undefined;\n }\n }\n this.recoverable = rec;\n }\n };\n // track this instance so we can `destroy()` it once we deem it superfluous and ready for garbage collection!\n this.__error_infos.push(pei);\n return pei;\n };\n\n\n\n\n\n\n\n\n\n\n\n\n\n function getNonTerminalFromCode(symbol) {\n var tokenName = self.getSymbolName(symbol);\n if (!tokenName) {\n tokenName = symbol;\n }\n return tokenName;\n }\n\n\n function stdLex() {\n var token = lexer.lex();\n // if token isn't its numeric value, convert\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n\n return token || EOF;\n }\n\n function fastLex() {\n var token = lexer.fastLex();\n // if token isn't its numeric value, convert\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n\n return token || EOF;\n }\n\n var lex = stdLex;\n\n\n var state, action, r, t;\n var yyval = {\n $: true,\n _$: undefined,\n yy: sharedState_yy\n };\n var p;\n var yyrulelen;\n var this_production;\n var newState;\n var retval = false;\n\n\n try {\n this.__reentrant_call_depth++;\n\n lexer.setInput(input, sharedState_yy);\n\n // NOTE: we *assume* no lexer pre/post handlers are set up *after* \n // this initial `setInput()` call: hence we can now check and decide\n // whether we'll go with the standard, slower, lex() API or the\n // `fast_lex()` one:\n if (typeof lexer.canIUse === 'function') {\n var lexerInfo = lexer.canIUse();\n if (lexerInfo.fastLex && typeof fastLex === 'function') {\n lex = fastLex;\n }\n } \n\n\n\n vstack[sp] = null;\n sstack[sp] = 0;\n stack[sp] = 0;\n ++sp;\n\n\n\n\n\n if (this.pre_parse) {\n this.pre_parse.call(this, sharedState_yy);\n }\n if (sharedState_yy.pre_parse) {\n sharedState_yy.pre_parse.call(this, sharedState_yy);\n }\n\n newState = sstack[sp - 1];\n for (;;) {\n // retrieve state number from top of stack\n state = newState; // sstack[sp - 1];\n\n // use default actions if available\n if (this.defaultActions[state]) {\n action = 2;\n newState = this.defaultActions[state];\n } else {\n // The single `==` condition below covers both these `===` comparisons in a single\n // operation:\n //\n // if (symbol === null || typeof symbol === 'undefined') ...\n if (!symbol) {\n symbol = lex();\n }\n // read action for current state and first input\n t = (table[state] && table[state][symbol]) || NO_ACTION;\n newState = t[1];\n action = t[0];\n\n\n\n\n\n\n\n\n\n\n\n // handle parse error\n if (!action) {\n var errStr;\n var errSymbolDescr = (this.describeSymbol(symbol) || symbol);\n var expected = this.collect_expected_token_set(state);\n\n // Report error\n if (typeof lexer.yylineno === 'number') {\n errStr = 'Parse error on line ' + (lexer.yylineno + 1) + ': ';\n } else {\n errStr = 'Parse error: ';\n }\n if (typeof lexer.showPosition === 'function') {\n errStr += '\\n' + lexer.showPosition(79 - 10, 10) + '\\n';\n }\n if (expected.length) {\n errStr += 'Expecting ' + expected.join(', ') + ', got unexpected ' + errSymbolDescr;\n } else {\n errStr += 'Unexpected ' + errSymbolDescr;\n }\n // we cannot recover from the error!\n p = this.constructParseErrorInfo(errStr, null, expected, false);\n r = this.parseError(p.errStr, p, this.JisonParserError);\n if (typeof r !== 'undefined') {\n retval = r;\n }\n break;\n }\n\n\n }\n\n\n\n\n\n\n\n\n\n\n switch (action) {\n // catch misc. parse failures:\n default:\n // this shouldn't happen, unless resolve defaults are off\n if (action instanceof Array) {\n p = this.constructParseErrorInfo('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol, null, null, false);\n r = this.parseError(p.errStr, p, this.JisonParserError);\n if (typeof r !== 'undefined') {\n retval = r;\n }\n break;\n }\n // Another case of better safe than sorry: in case state transitions come out of another error recovery process\n // or a buggy LUT (LookUp Table):\n p = this.constructParseErrorInfo('Parsing halted. No viable error recovery approach available due to internal system failure.', null, null, false);\n r = this.parseError(p.errStr, p, this.JisonParserError);\n if (typeof r !== 'undefined') {\n retval = r;\n }\n break;\n\n // shift:\n case 1:\n stack[sp] = symbol;\n vstack[sp] = lexer.yytext;\n\n sstack[sp] = newState; // push state\n\n ++sp;\n symbol = 0;\n\n\n\n\n // Pick up the lexer details for the current symbol as that one is not 'look-ahead' any more:\n\n\n\n\n continue;\n\n // reduce:\n case 2:\n\n\n\n this_production = this.productions_[newState - 1]; // `this.productions_[]` is zero-based indexed while states start from 1 upwards...\n yyrulelen = this_production[1];\n\n\n\n\n\n\n\n\n\n\n r = this.performAction.call(yyval, newState, sp - 1, vstack);\n\n if (typeof r !== 'undefined') {\n retval = r;\n break;\n }\n\n // pop off stack\n sp -= yyrulelen;\n\n // don't overwrite the `symbol` variable: use a local var to speed things up:\n var ntsymbol = this_production[0]; // push nonterminal (reduce)\n stack[sp] = ntsymbol;\n vstack[sp] = yyval.$;\n\n // goto new state = table[STATE][NONTERMINAL]\n newState = table[sstack[sp - 1]][ntsymbol];\n sstack[sp] = newState;\n ++sp;\n\n\n\n\n\n\n\n\n\n continue;\n\n // accept:\n case 3:\n if (sp !== -2) {\n retval = true;\n // Return the `$accept` rule's `$$` result, if available.\n //\n // Also note that JISON always adds this top-most `$accept` rule (with implicit,\n // default, action):\n //\n // $accept: $end\n // %{ $$ = $1; @$ = @1; %}\n //\n // which, combined with the parse kernel's `$accept` state behaviour coded below,\n // will produce the `$$` value output of the rule as the parse result,\n // IFF that result is *not* `undefined`. (See also the parser kernel code.)\n //\n // In code:\n //\n // %{\n // @$ = @1; // if location tracking support is included\n // if (typeof $1 !== 'undefined')\n // return $1;\n // else\n // return true; // the default parse result if the rule actions don't produce anything\n // %}\n sp--;\n if (typeof vstack[sp] !== 'undefined') {\n retval = vstack[sp];\n }\n }\n break;\n }\n\n // break out of loop: we accept or fail with error\n break;\n }\n } catch (ex) {\n // report exceptions through the parseError callback too, but keep the exception intact\n // if it is a known parser or lexer error which has been thrown by parseError() already:\n if (ex instanceof this.JisonParserError) {\n throw ex;\n }\n else if (lexer && typeof lexer.JisonLexerError === 'function' && ex instanceof lexer.JisonLexerError) {\n throw ex;\n }\n\n p = this.constructParseErrorInfo('Parsing aborted due to exception.', ex, null, false);\n retval = false;\n r = this.parseError(p.errStr, p, this.JisonParserError);\n if (typeof r !== 'undefined') {\n retval = r;\n }\n } finally {\n retval = this.cleanupAfterParse(retval, true, true);\n this.__reentrant_call_depth--;\n } // /finally\n\n return retval;\n}\n};\nparser.originalParseError = parser.parseError;\nparser.originalQuoteName = parser.quoteName;\n/* lexer generated by jison-lex 0.6.1-215 */\n\n/*\n * Returns a Lexer object of the following structure:\n *\n * Lexer: {\n * yy: {} The so-called \"shared state\" or rather the *source* of it;\n * the real \"shared state\" `yy` passed around to\n * the rule actions, etc. is a direct reference!\n *\n * This \"shared context\" object was passed to the lexer by way of \n * the `lexer.setInput(str, yy)` API before you may use it.\n *\n * This \"shared context\" object is passed to the lexer action code in `performAction()`\n * so userland code in the lexer actions may communicate with the outside world \n * and/or other lexer rules' actions in more or less complex ways.\n *\n * }\n *\n * Lexer.prototype: {\n * EOF: 1,\n * ERROR: 2,\n *\n * yy: The overall \"shared context\" object reference.\n *\n * JisonLexerError: function(msg, hash),\n *\n * performAction: function lexer__performAction(yy, yyrulenumber, YY_START),\n *\n * The function parameters and `this` have the following value/meaning:\n * - `this` : reference to the `lexer` instance. \n * `yy_` is an alias for `this` lexer instance reference used internally.\n *\n * - `yy` : a reference to the `yy` \"shared state\" object which was passed to the lexer\n * by way of the `lexer.setInput(str, yy)` API before.\n *\n * Note:\n * The extra arguments you specified in the `%parse-param` statement in your\n * **parser** grammar definition file are passed to the lexer via this object\n * reference as member variables.\n *\n * - `yyrulenumber` : index of the matched lexer rule (regex), used internally.\n *\n * - `YY_START`: the current lexer \"start condition\" state.\n *\n * parseError: function(str, hash, ExceptionClass),\n *\n * constructLexErrorInfo: function(error_message, is_recoverable),\n * Helper function.\n * Produces a new errorInfo 'hash object' which can be passed into `parseError()`.\n * See it's use in this lexer kernel in many places; example usage:\n *\n * var infoObj = lexer.constructParseErrorInfo('fail!', true);\n * var retVal = lexer.parseError(infoObj.errStr, infoObj, lexer.JisonLexerError);\n *\n * options: { ... lexer %options ... },\n *\n * lex: function(),\n * Produce one token of lexed input, which was passed in earlier via the `lexer.setInput()` API.\n * You MAY use the additional `args...` parameters as per `%parse-param` spec of the **lexer** grammar:\n * these extra `args...` are added verbatim to the `yy` object reference as member variables.\n *\n * WARNING:\n * Lexer's additional `args...` parameters (via lexer's `%parse-param`) MAY conflict with\n * any attributes already added to `yy` by the **parser** or the jison run-time; \n * when such a collision is detected an exception is thrown to prevent the generated run-time \n * from silently accepting this confusing and potentially hazardous situation! \n *\n * cleanupAfterLex: function(do_not_nuke_errorinfos),\n * Helper function.\n *\n * This helper API is invoked when the **parse process** has completed: it is the responsibility\n * of the **parser** (or the calling userland code) to invoke this method once cleanup is desired. \n *\n * This helper may be invoked by user code to ensure the internal lexer gets properly garbage collected.\n *\n * setInput: function(input, [yy]),\n *\n *\n * input: function(),\n *\n *\n * unput: function(str),\n *\n *\n * more: function(),\n *\n *\n * reject: function(),\n *\n *\n * less: function(n),\n *\n *\n * pastInput: function(n),\n *\n *\n * upcomingInput: function(n),\n *\n *\n * showPosition: function(),\n *\n *\n * test_match: function(regex_match_array, rule_index),\n *\n *\n * next: function(),\n *\n *\n * begin: function(condition),\n *\n *\n * pushState: function(condition),\n *\n *\n * popState: function(),\n *\n *\n * topState: function(),\n *\n *\n * _currentRules: function(),\n *\n *\n * stateStackSize: function(),\n *\n *\n * performAction: function(yy, yy_, yyrulenumber, YY_START),\n *\n *\n * rules: [...],\n *\n *\n * conditions: {associative list: name ==> set},\n * }\n *\n *\n * token location info (`yylloc`): {\n * first_line: n,\n * last_line: n,\n * first_column: n,\n * last_column: n,\n * range: [start_number, end_number]\n * (where the numbers are indexes into the input string, zero-based)\n * }\n *\n * ---\n *\n * The `parseError` function receives a 'hash' object with these members for lexer errors:\n *\n * {\n * text: (matched text)\n * token: (the produced terminal token, if any)\n * token_id: (the produced terminal token numeric ID, if any)\n * line: (yylineno)\n * loc: (yylloc)\n * recoverable: (boolean: TRUE when the parser MAY have an error recovery rule\n * available for this particular error)\n * yy: (object: the current parser internal \"shared state\" `yy`\n * as is also available in the rule actions; this can be used,\n * for instance, for advanced error analysis and reporting)\n * lexer: (reference to the current lexer instance used by the parser)\n * }\n *\n * while `this` will reference the current lexer instance.\n *\n * When `parseError` is invoked by the lexer, the default implementation will\n * attempt to invoke `yy.parser.parseError()`; when this callback is not provided\n * it will try to invoke `yy.parseError()` instead. When that callback is also not\n * provided, a `JisonLexerError` exception will be thrown containing the error\n * message and `hash`, as constructed by the `constructLexErrorInfo()` API.\n *\n * Note that the lexer's `JisonLexerError` error class is passed via the\n * `ExceptionClass` argument, which is invoked to construct the exception\n * instance to be thrown, so technically `parseError` will throw the object\n * produced by the `new ExceptionClass(str, hash)` JavaScript expression.\n *\n * ---\n *\n * You can specify lexer options by setting / modifying the `.options` object of your Lexer instance.\n * These options are available:\n *\n * (Options are permanent.)\n * \n * yy: {\n * parseError: function(str, hash, ExceptionClass)\n * optional: overrides the default `parseError` function.\n * }\n *\n * lexer.options: {\n * pre_lex: function()\n * optional: is invoked before the lexer is invoked to produce another token.\n * `this` refers to the Lexer object.\n * post_lex: function(token) { return token; }\n * optional: is invoked when the lexer has produced a token `token`;\n * this function can override the returned token value by returning another.\n * When it does not return any (truthy) value, the lexer will return\n * the original `token`.\n * `this` refers to the Lexer object.\n *\n * WARNING: the next set of options are not meant to be changed. They echo the abilities of\n * the lexer as per when it was compiled!\n *\n * ranges: boolean\n * optional: `true` ==> token location info will include a .range[] member.\n * flex: boolean\n * optional: `true` ==> flex-like lexing behaviour where the rules are tested\n * exhaustively to find the longest match.\n * backtrack_lexer: boolean\n * optional: `true` ==> lexer regexes are tested in order and for invoked;\n * the lexer terminates the scan when a token is returned by the action code.\n * xregexp: boolean\n * optional: `true` ==> lexer rule regexes are \"extended regex format\" requiring the\n * `XRegExp` library. When this %option has not been specified at compile time, all lexer\n * rule regexes have been written as standard JavaScript RegExp expressions.\n * }\n */\n\n\nvar lexer = function() {\n /**\n * See also:\n * http://stackoverflow.com/questions/1382107/whats-a-good-way-to-extend-error-in-javascript/#35881508\n * but we keep the prototype.constructor and prototype.name assignment lines too for compatibility\n * with userland code which might access the derived class in a 'classic' way.\n *\n * @public\n * @constructor\n * @nocollapse\n */\n function JisonLexerError(msg, hash) {\n Object.defineProperty(this, 'name', {\n enumerable: false,\n writable: false,\n value: 'JisonLexerError'\n });\n\n if (msg == null)\n msg = '???';\n\n Object.defineProperty(this, 'message', {\n enumerable: false,\n writable: true,\n value: msg\n });\n\n this.hash = hash;\n var stacktrace;\n\n if (hash && hash.exception instanceof Error) {\n var ex2 = hash.exception;\n this.message = ex2.message || msg;\n stacktrace = ex2.stack;\n }\n\n if (!stacktrace) {\n if (Error.hasOwnProperty('captureStackTrace')) {\n // V8\n Error.captureStackTrace(this, this.constructor);\n } else {\n stacktrace = new Error(msg).stack;\n }\n }\n\n if (stacktrace) {\n Object.defineProperty(this, 'stack', {\n enumerable: false,\n writable: false,\n value: stacktrace\n });\n }\n }\n\n if (typeof Object.setPrototypeOf === 'function') {\n Object.setPrototypeOf(JisonLexerError.prototype, Error.prototype);\n } else {\n JisonLexerError.prototype = Object.create(Error.prototype);\n }\n\n JisonLexerError.prototype.constructor = JisonLexerError;\n JisonLexerError.prototype.name = 'JisonLexerError';\n\n var lexer = {\n \n// Code Generator Information Report\n// ---------------------------------\n//\n// Options:\n//\n// backtracking: .................... false\n// location.ranges: ................. false\n// location line+column tracking: ... true\n//\n//\n// Forwarded Parser Analysis flags:\n//\n// uses yyleng: ..................... false\n// uses yylineno: ................... false\n// uses yytext: ..................... false\n// uses yylloc: ..................... false\n// uses lexer values: ............... true / true\n// location tracking: ............... false\n// location assignment: ............. false\n//\n//\n// Lexer Analysis flags:\n//\n// uses yyleng: ..................... ???\n// uses yylineno: ................... ???\n// uses yytext: ..................... ???\n// uses yylloc: ..................... ???\n// uses ParseError API: ............. ???\n// uses yyerror: .................... ???\n// uses location tracking & editing: ???\n// uses more() API: ................. ???\n// uses unput() API: ................ ???\n// uses reject() API: ............... ???\n// uses less() API: ................. ???\n// uses display APIs pastInput(), upcomingInput(), showPosition():\n// ............................. ???\n// uses describeYYLLOC() API: ....... ???\n//\n// --------- END OF REPORT -----------\n\nEOF: 1,\n ERROR: 2,\n\n // JisonLexerError: JisonLexerError, /// <-- injected by the code generator\n\n // options: {}, /// <-- injected by the code generator\n\n // yy: ..., /// <-- injected by setInput()\n\n __currentRuleSet__: null, /// INTERNAL USE ONLY: internal rule set cache for the current lexer state \n\n __error_infos: [], /// INTERNAL USE ONLY: the set of lexErrorInfo objects created since the last cleanup \n __decompressed: false, /// INTERNAL USE ONLY: mark whether the lexer instance has been 'unfolded' completely and is now ready for use \n done: false, /// INTERNAL USE ONLY \n _backtrack: false, /// INTERNAL USE ONLY \n _input: '', /// INTERNAL USE ONLY \n _more: false, /// INTERNAL USE ONLY \n _signaled_error_token: false, /// INTERNAL USE ONLY \n conditionStack: [], /// INTERNAL USE ONLY; managed via `pushState()`, `popState()`, `topState()` and `stateStackSize()` \n match: '', /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks input which has been matched so far for the lexer token under construction. `match` is identical to `yytext` except that this one still contains the matched input string after `lexer.performAction()` has been invoked, where userland code MAY have changed/replaced the `yytext` value entirely! \n matched: '', /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks entire input which has been matched so far \n matches: false, /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks RE match result for last (successful) match attempt \n yytext: '', /// ADVANCED USE ONLY: tracks input which has been matched so far for the lexer token under construction; this value is transferred to the parser as the 'token value' when the parser consumes the lexer token produced through a call to the `lex()` API. \n offset: 0, /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks the 'cursor position' in the input string, i.e. the number of characters matched so far \n yyleng: 0, /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: length of matched input for the token under construction (`yytext`) \n yylineno: 0, /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: 'line number' at which the token under construction is located \n yylloc: null, /// READ-ONLY EXTERNAL ACCESS - ADVANCED USE ONLY: tracks location info (lines + columns) for the token under construction \n\n /**\n * INTERNAL USE: construct a suitable error info hash object instance for `parseError`.\n * \n * @public\n * @this {RegExpLexer}\n */\n constructLexErrorInfo: function lexer_constructLexErrorInfo(msg, recoverable, show_input_position) {\n msg = '' + msg;\n\n // heuristic to determine if the error message already contains a (partial) source code dump\n // as produced by either `showPosition()` or `prettyPrintRange()`:\n if (show_input_position == undefined) {\n show_input_position = !(msg.indexOf('\\n') > 0 && msg.indexOf('^') > 0);\n }\n\n if (this.yylloc && show_input_position) {\n if (typeof this.prettyPrintRange === 'function') {\n var pretty_src = this.prettyPrintRange(this.yylloc);\n\n if (!/\\n\\s*$/.test(msg)) {\n msg += '\\n';\n }\n\n msg += '\\n Erroneous area:\\n' + this.prettyPrintRange(this.yylloc);\n } else if (typeof this.showPosition === 'function') {\n var pos_str = this.showPosition();\n\n if (pos_str) {\n if (msg.length && msg[msg.length - 1] !== '\\n' && pos_str[0] !== '\\n') {\n msg += '\\n' + pos_str;\n } else {\n msg += pos_str;\n }\n }\n }\n }\n\n /** @constructor */\n var pei = {\n errStr: msg,\n recoverable: !!recoverable,\n text: this.match, // This one MAY be empty; userland code should use the `upcomingInput` API to obtain more text which follows the 'lexer cursor position'... \n token: null,\n line: this.yylineno,\n loc: this.yylloc,\n yy: this.yy,\n lexer: this,\n\n /**\n * and make sure the error info doesn't stay due to potential\n * ref cycle via userland code manipulations.\n * These would otherwise all be memory leak opportunities!\n * \n * Note that only array and object references are nuked as those\n * constitute the set of elements which can produce a cyclic ref.\n * The rest of the members is kept intact as they are harmless.\n * \n * @public\n * @this {LexErrorInfo}\n */\n destroy: function destructLexErrorInfo() {\n // remove cyclic references added to error info:\n // info.yy = null;\n // info.lexer = null;\n // ...\n var rec = !!this.recoverable;\n\n for (var key in this) {\n if (this.hasOwnProperty(key) && typeof key === 'object') {\n this[key] = undefined;\n }\n }\n\n this.recoverable = rec;\n }\n };\n\n // track this instance so we can `destroy()` it once we deem it superfluous and ready for garbage collection!\n this.__error_infos.push(pei);\n\n return pei;\n },\n\n /**\n * handler which is invoked when a lexer error occurs.\n * \n * @public\n * @this {RegExpLexer}\n */\n parseError: function lexer_parseError(str, hash, ExceptionClass) {\n if (!ExceptionClass) {\n ExceptionClass = this.JisonLexerError;\n }\n\n if (this.yy) {\n if (this.yy.parser && typeof this.yy.parser.parseError === 'function') {\n return this.yy.parser.parseError.call(this, str, hash, ExceptionClass) || this.ERROR;\n } else if (typeof this.yy.parseError === 'function') {\n return this.yy.parseError.call(this, str, hash, ExceptionClass) || this.ERROR;\n }\n }\n\n throw new ExceptionClass(str, hash);\n },\n\n /**\n * method which implements `yyerror(str, ...args)` functionality for use inside lexer actions.\n * \n * @public\n * @this {RegExpLexer}\n */\n yyerror: function yyError(str /*, ...args */) {\n var lineno_msg = '';\n\n if (this.yylloc) {\n lineno_msg = ' on line ' + (this.yylineno + 1);\n }\n\n var p = this.constructLexErrorInfo(\n 'Lexical error' + lineno_msg + ': ' + str,\n this.options.lexerErrorsAreRecoverable\n );\n\n // Add any extra args to the hash under the name `extra_error_attributes`:\n var args = Array.prototype.slice.call(arguments, 1);\n\n if (args.length) {\n p.extra_error_attributes = args;\n }\n\n return this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;\n },\n\n /**\n * final cleanup function for when we have completed lexing the input;\n * make it an API so that external code can use this one once userland\n * code has decided it's time to destroy any lingering lexer error\n * hash object instances and the like: this function helps to clean\n * up these constructs, which *may* carry cyclic references which would\n * otherwise prevent the instances from being properly and timely\n * garbage-collected, i.e. this function helps prevent memory leaks!\n * \n * @public\n * @this {RegExpLexer}\n */\n cleanupAfterLex: function lexer_cleanupAfterLex(do_not_nuke_errorinfos) {\n // prevent lingering circular references from causing memory leaks:\n this.setInput('', {});\n\n // nuke the error hash info instances created during this run.\n // Userland code must COPY any data/references\n // in the error hash instance(s) it is more permanently interested in.\n if (!do_not_nuke_errorinfos) {\n for (var i = this.__error_infos.length - 1; i >= 0; i--) {\n var el = this.__error_infos[i];\n\n if (el && typeof el.destroy === 'function') {\n el.destroy();\n }\n }\n\n this.__error_infos.length = 0;\n }\n\n return this;\n },\n\n /**\n * clear the lexer token context; intended for internal use only\n * \n * @public\n * @this {RegExpLexer}\n */\n clear: function lexer_clear() {\n this.yytext = '';\n this.yyleng = 0;\n this.match = '';\n\n // - DO NOT reset `this.matched`\n this.matches = false;\n\n this._more = false;\n this._backtrack = false;\n var col = (this.yylloc ? this.yylloc.last_column : 0);\n\n this.yylloc = {\n first_line: this.yylineno + 1,\n first_column: col,\n last_line: this.yylineno + 1,\n last_column: col,\n range: [this.offset, this.offset]\n };\n },\n\n /**\n * resets the lexer, sets new input\n * \n * @public\n * @this {RegExpLexer}\n */\n setInput: function lexer_setInput(input, yy) {\n this.yy = yy || this.yy || {};\n\n // also check if we've fully initialized the lexer instance,\n // including expansion work to be done to go from a loaded\n // lexer to a usable lexer:\n if (!this.__decompressed) {\n // step 1: decompress the regex list:\n var rules = this.rules;\n\n for (var i = 0, len = rules.length; i < len; i++) {\n var rule_re = rules[i];\n\n // compression: is the RE an xref to another RE slot in the rules[] table?\n if (typeof rule_re === 'number') {\n rules[i] = rules[rule_re];\n }\n }\n\n // step 2: unfold the conditions[] set to make these ready for use:\n var conditions = this.conditions;\n\n for (var k in conditions) {\n var spec = conditions[k];\n var rule_ids = spec.rules;\n var len = rule_ids.length;\n var rule_regexes = new Array(len + 1); // slot 0 is unused; we use a 1-based index approach here to keep the hottest code in `lexer_next()` fast and simple! \n var rule_new_ids = new Array(len + 1);\n\n for (var i = 0; i < len; i++) {\n var idx = rule_ids[i];\n var rule_re = rules[idx];\n rule_regexes[i + 1] = rule_re;\n rule_new_ids[i + 1] = idx;\n }\n\n spec.rules = rule_new_ids;\n spec.__rule_regexes = rule_regexes;\n spec.__rule_count = len;\n }\n\n this.__decompressed = true;\n }\n\n this._input = input || '';\n this.clear();\n this._signaled_error_token = false;\n this.done = false;\n this.yylineno = 0;\n this.matched = '';\n this.conditionStack = ['INITIAL'];\n this.__currentRuleSet__ = null;\n\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0,\n range: [0, 0]\n };\n\n this.offset = 0;\n return this;\n },\n\n /**\n * edit the remaining input via user-specified callback.\n * This can be used to forward-adjust the input-to-parse, \n * e.g. inserting macro expansions and alike in the\n * input which has yet to be lexed.\n * The behaviour of this API contrasts the `unput()` et al\n * APIs as those act on the *consumed* input, while this\n * one allows one to manipulate the future, without impacting\n * the current `yyloc` cursor location or any history. \n * \n * Use this API to help implement C-preprocessor-like\n * `#include` statements, etc.\n * \n * The provided callback must be synchronous and is\n * expected to return the edited input (string).\n *\n * The `cpsArg` argument value is passed to the callback\n * as-is.\n *\n * `callback` interface: \n * `function callback(input, cpsArg)`\n * \n * - `input` will carry the remaining-input-to-lex string\n * from the lexer.\n * - `cpsArg` is `cpsArg` passed into this API.\n * \n * The `this` reference for the callback will be set to\n * reference this lexer instance so that userland code\n * in the callback can easily and quickly access any lexer\n * API. \n *\n * When the callback returns a non-string-type falsey value,\n * we assume the callback did not edit the input and we\n * will using the input as-is.\n *\n * When the callback returns a non-string-type value, it\n * is converted to a string for lexing via the `\"\" + retval`\n * operation. (See also why: http://2ality.com/2012/03/converting-to-string.html \n * -- that way any returned object's `toValue()` and `toString()`\n * methods will be invoked in a proper/desirable order.)\n * \n * @public\n * @this {RegExpLexer}\n */\n editRemainingInput: function lexer_editRemainingInput(callback, cpsArg) {\n var rv = callback.call(this, this._input, cpsArg);\n\n if (typeof rv !== 'string') {\n if (rv) {\n this._input = '' + rv;\n } \n // else: keep `this._input` as is. \n } else {\n this._input = rv;\n }\n\n return this;\n },\n\n /**\n * consumes and returns one char from the input\n * \n * @public\n * @this {RegExpLexer}\n */\n input: function lexer_input() {\n if (!this._input) {\n //this.done = true; -- don't set `done` as we want the lex()/next() API to be able to produce one custom EOF token match after this anyhow. (lexer can match special <> tokens and perform user action code for a <> match, but only does so *once*)\n return null;\n }\n\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n\n // Count the linenumber up when we hit the LF (or a stand-alone CR).\n // On CRLF, the linenumber is incremented when you fetch the CR or the CRLF combo\n // and we advance immediately past the LF as well, returning both together as if\n // it was all a single 'character' only.\n var slice_len = 1;\n\n var lines = false;\n\n if (ch === '\\n') {\n lines = true;\n } else if (ch === '\\r') {\n lines = true;\n var ch2 = this._input[1];\n\n if (ch2 === '\\n') {\n slice_len++;\n ch += ch2;\n this.yytext += ch2;\n this.yyleng++;\n this.offset++;\n this.match += ch2;\n this.matched += ch2;\n this.yylloc.range[1]++;\n }\n }\n\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n this.yylloc.last_column = 0;\n } else {\n this.yylloc.last_column++;\n }\n\n this.yylloc.range[1]++;\n this._input = this._input.slice(slice_len);\n return ch;\n },\n\n /**\n * unshifts one char (or an entire string) into the input\n * \n * @public\n * @this {RegExpLexer}\n */\n unput: function lexer_unput(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.yyleng = this.yytext.length;\n this.offset -= len;\n this.match = this.match.substr(0, this.match.length - len);\n this.matched = this.matched.substr(0, this.matched.length - len);\n\n if (lines.length > 1) {\n this.yylineno -= lines.length - 1;\n this.yylloc.last_line = this.yylineno + 1;\n\n // Get last entirely matched line into the `pre_lines[]` array's\n // last index slot; we don't mind when other previously \n // matched lines end up in the array too. \n var pre = this.match;\n\n var pre_lines = pre.split(/(?:\\r\\n?|\\n)/g);\n\n if (pre_lines.length === 1) {\n pre = this.matched;\n pre_lines = pre.split(/(?:\\r\\n?|\\n)/g);\n }\n\n this.yylloc.last_column = pre_lines[pre_lines.length - 1].length;\n } else {\n this.yylloc.last_column -= len;\n }\n\n this.yylloc.range[1] = this.yylloc.range[0] + this.yyleng;\n this.done = false;\n return this;\n },\n\n /**\n * cache matched text and append it on next action\n * \n * @public\n * @this {RegExpLexer}\n */\n more: function lexer_more() {\n this._more = true;\n return this;\n },\n\n /**\n * signal the lexer that this rule fails to match the input, so the\n * next matching rule (regex) should be tested instead.\n * \n * @public\n * @this {RegExpLexer}\n */\n reject: function lexer_reject() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n // when the `parseError()` call returns, we MUST ensure that the error is registered.\n // We accomplish this by signaling an 'error' token to be produced for the current\n // `.lex()` run.\n var lineno_msg = '';\n\n if (this.yylloc) {\n lineno_msg = ' on line ' + (this.yylineno + 1);\n }\n\n var p = this.constructLexErrorInfo(\n 'Lexical error' + lineno_msg + ': You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).',\n false\n );\n\n this._signaled_error_token = this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;\n }\n\n return this;\n },\n\n /**\n * retain first n characters of the match\n * \n * @public\n * @this {RegExpLexer}\n */\n less: function lexer_less(n) {\n return this.unput(this.match.slice(n));\n },\n\n /**\n * return (part of the) already matched input, i.e. for error\n * messages.\n * \n * Limit the returned string length to `maxSize` (default: 20).\n * \n * Limit the returned string to the `maxLines` number of lines of\n * input (default: 1).\n * \n * Negative limit values equal *unlimited*.\n * \n * @public\n * @this {RegExpLexer}\n */\n pastInput: function lexer_pastInput(maxSize, maxLines) {\n var past = this.matched.substring(0, this.matched.length - this.match.length);\n\n if (maxSize < 0)\n maxSize = past.length;\n else if (!maxSize)\n maxSize = 20;\n\n if (maxLines < 0)\n maxLines = past.length; // can't ever have more input lines than this! \n else if (!maxLines)\n maxLines = 1;\n\n // `substr` anticipation: treat \\r\\n as a single character and take a little\n // more than necessary so that we can still properly check against maxSize\n // after we've transformed and limited the newLines in here:\n past = past.substr(-maxSize * 2 - 2);\n\n // now that we have a significantly reduced string to process, transform the newlines\n // and chop them, then limit them:\n var a = past.replace(/\\r\\n|\\r/g, '\\n').split('\\n');\n\n a = a.slice(-maxLines);\n past = a.join('\\n');\n\n // When, after limiting to maxLines, we still have too much to return,\n // do add an ellipsis prefix...\n if (past.length > maxSize) {\n past = '...' + past.substr(-maxSize);\n }\n\n return past;\n },\n\n /**\n * return (part of the) upcoming input, i.e. for error messages.\n * \n * Limit the returned string length to `maxSize` (default: 20).\n * \n * Limit the returned string to the `maxLines` number of lines of input (default: 1).\n * \n * Negative limit values equal *unlimited*.\n *\n * > ### NOTE ###\n * >\n * > *\"upcoming input\"* is defined as the whole of the both\n * > the *currently lexed* input, together with any remaining input\n * > following that. *\"currently lexed\"* input is the input \n * > already recognized by the lexer but not yet returned with\n * > the lexer token. This happens when you are invoking this API\n * > from inside any lexer rule action code block. \n * >\n * \n * @public\n * @this {RegExpLexer}\n */\n upcomingInput: function lexer_upcomingInput(maxSize, maxLines) {\n var next = this.match;\n\n if (maxSize < 0)\n maxSize = next.length + this._input.length;\n else if (!maxSize)\n maxSize = 20;\n\n if (maxLines < 0)\n maxLines = maxSize; // can't ever have more input lines than this! \n else if (!maxLines)\n maxLines = 1;\n\n // `substring` anticipation: treat \\r\\n as a single character and take a little\n // more than necessary so that we can still properly check against maxSize\n // after we've transformed and limited the newLines in here:\n if (next.length < maxSize * 2 + 2) {\n next += this._input.substring(0, maxSize * 2 + 2); // substring is faster on Chrome/V8 \n }\n\n // now that we have a significantly reduced string to process, transform the newlines\n // and chop them, then limit them:\n var a = next.replace(/\\r\\n|\\r/g, '\\n').split('\\n');\n\n a = a.slice(0, maxLines);\n next = a.join('\\n');\n\n // When, after limiting to maxLines, we still have too much to return,\n // do add an ellipsis postfix...\n if (next.length > maxSize) {\n next = next.substring(0, maxSize) + '...';\n }\n\n return next;\n },\n\n /**\n * return a string which displays the character position where the\n * lexing error occurred, i.e. for error messages\n * \n * @public\n * @this {RegExpLexer}\n */\n showPosition: function lexer_showPosition(maxPrefix, maxPostfix) {\n var pre = this.pastInput(maxPrefix).replace(/\\s/g, ' ');\n var c = new Array(pre.length + 1).join('-');\n return pre + this.upcomingInput(maxPostfix).replace(/\\s/g, ' ') + '\\n' + c + '^';\n },\n\n /**\n * return an YYLLOC info object derived off the given context (actual, preceding, following, current).\n * Use this method when the given `actual` location is not guaranteed to exist (i.e. when\n * it MAY be NULL) and you MUST have a valid location info object anyway:\n * then we take the given context of the `preceding` and `following` locations, IFF those are available,\n * and reconstruct the `actual` location info from those.\n * If this fails, the heuristic is to take the `current` location, IFF available.\n * If this fails as well, we assume the sought location is at/around the current lexer position\n * and then produce that one as a response. DO NOTE that these heuristic/derived location info\n * values MAY be inaccurate!\n *\n * NOTE: `deriveLocationInfo()` ALWAYS produces a location info object *copy* of `actual`, not just\n * a *reference* hence all input location objects can be assumed to be 'constant' (function has no side-effects).\n * \n * @public\n * @this {RegExpLexer}\n */\n deriveLocationInfo: function lexer_deriveYYLLOC(actual, preceding, following, current) {\n var loc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0,\n range: [0, 0]\n };\n\n if (actual) {\n loc.first_line = actual.first_line | 0;\n loc.last_line = actual.last_line | 0;\n loc.first_column = actual.first_column | 0;\n loc.last_column = actual.last_column | 0;\n\n if (actual.range) {\n loc.range[0] = actual.range[0] | 0;\n loc.range[1] = actual.range[1] | 0;\n }\n }\n\n if (loc.first_line <= 0 || loc.last_line < loc.first_line) {\n // plan B: heuristic using preceding and following:\n if (loc.first_line <= 0 && preceding) {\n loc.first_line = preceding.last_line | 0;\n loc.first_column = preceding.last_column | 0;\n\n if (preceding.range) {\n loc.range[0] = actual.range[1] | 0;\n }\n }\n\n if ((loc.last_line <= 0 || loc.last_line < loc.first_line) && following) {\n loc.last_line = following.first_line | 0;\n loc.last_column = following.first_column | 0;\n\n if (following.range) {\n loc.range[1] = actual.range[0] | 0;\n }\n }\n\n // plan C?: see if the 'current' location is useful/sane too:\n if (loc.first_line <= 0 && current && (loc.last_line <= 0 || current.last_line <= loc.last_line)) {\n loc.first_line = current.first_line | 0;\n loc.first_column = current.first_column | 0;\n\n if (current.range) {\n loc.range[0] = current.range[0] | 0;\n }\n }\n\n if (loc.last_line <= 0 && current && (loc.first_line <= 0 || current.first_line >= loc.first_line)) {\n loc.last_line = current.last_line | 0;\n loc.last_column = current.last_column | 0;\n\n if (current.range) {\n loc.range[1] = current.range[1] | 0;\n }\n }\n }\n\n // sanitize: fix last_line BEFORE we fix first_line as we use the 'raw' value of the latter\n // or plan D heuristics to produce a 'sensible' last_line value:\n if (loc.last_line <= 0) {\n if (loc.first_line <= 0) {\n loc.first_line = this.yylloc.first_line;\n loc.last_line = this.yylloc.last_line;\n loc.first_column = this.yylloc.first_column;\n loc.last_column = this.yylloc.last_column;\n loc.range[0] = this.yylloc.range[0];\n loc.range[1] = this.yylloc.range[1];\n } else {\n loc.last_line = this.yylloc.last_line;\n loc.last_column = this.yylloc.last_column;\n loc.range[1] = this.yylloc.range[1];\n }\n }\n\n if (loc.first_line <= 0) {\n loc.first_line = loc.last_line;\n loc.first_column = 0; // loc.last_column; \n loc.range[1] = loc.range[0];\n }\n\n if (loc.first_column < 0) {\n loc.first_column = 0;\n }\n\n if (loc.last_column < 0) {\n loc.last_column = (loc.first_column > 0 ? loc.first_column : 80);\n }\n\n return loc;\n },\n\n /**\n * return a string which displays the lines & columns of input which are referenced \n * by the given location info range, plus a few lines of context.\n * \n * This function pretty-prints the indicated section of the input, with line numbers \n * and everything!\n * \n * This function is very useful to provide highly readable error reports, while\n * the location range may be specified in various flexible ways:\n * \n * - `loc` is the location info object which references the area which should be\n * displayed and 'marked up': these lines & columns of text are marked up by `^`\n * characters below each character in the entire input range.\n * \n * - `context_loc` is the *optional* location info object which instructs this\n * pretty-printer how much *leading* context should be displayed alongside\n * the area referenced by `loc`. This can help provide context for the displayed\n * error, etc.\n * \n * When this location info is not provided, a default context of 3 lines is\n * used.\n * \n * - `context_loc2` is another *optional* location info object, which serves\n * a similar purpose to `context_loc`: it specifies the amount of *trailing*\n * context lines to display in the pretty-print output.\n * \n * When this location info is not provided, a default context of 1 line only is\n * used.\n * \n * Special Notes:\n * \n * - when the `loc`-indicated range is very large (about 5 lines or more), then\n * only the first and last few lines of this block are printed while a\n * `...continued...` message will be printed between them.\n * \n * This serves the purpose of not printing a huge amount of text when the `loc`\n * range happens to be huge: this way a manageable & readable output results\n * for arbitrary large ranges.\n * \n * - this function can display lines of input which whave not yet been lexed.\n * `prettyPrintRange()` can access the entire input!\n * \n * @public\n * @this {RegExpLexer}\n */\n prettyPrintRange: function lexer_prettyPrintRange(loc, context_loc, context_loc2) {\n loc = this.deriveLocationInfo(loc, context_loc, context_loc2);\n const CONTEXT = 3;\n const CONTEXT_TAIL = 1;\n const MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT = 2;\n var input = this.matched + this._input;\n var lines = input.split('\\n');\n var l0 = Math.max(1, (context_loc ? context_loc.first_line : loc.first_line - CONTEXT));\n var l1 = Math.max(1, (context_loc2 ? context_loc2.last_line : loc.last_line + CONTEXT_TAIL));\n var lineno_display_width = 1 + Math.log10(l1 | 1) | 0;\n var ws_prefix = new Array(lineno_display_width).join(' ');\n var nonempty_line_indexes = [];\n\n var rv = lines.slice(l0 - 1, l1 + 1).map(function injectLineNumber(line, index) {\n var lno = index + l0;\n var lno_pfx = (ws_prefix + lno).substr(-lineno_display_width);\n var rv = lno_pfx + ': ' + line;\n var errpfx = new Array(lineno_display_width + 1).join('^');\n var offset = 2 + 1;\n var len = 0;\n\n if (lno === loc.first_line) {\n offset += loc.first_column;\n\n len = Math.max(\n 2,\n ((lno === loc.last_line ? loc.last_column : line.length)) - loc.first_column + 1\n );\n } else if (lno === loc.last_line) {\n len = Math.max(2, loc.last_column + 1);\n } else if (lno > loc.first_line && lno < loc.last_line) {\n len = Math.max(2, line.length + 1);\n }\n\n if (len) {\n var lead = new Array(offset).join('.');\n var mark = new Array(len).join('^');\n rv += '\\n' + errpfx + lead + mark;\n\n if (line.trim().length > 0) {\n nonempty_line_indexes.push(index);\n }\n }\n\n rv = rv.replace(/\\t/g, ' ');\n return rv;\n });\n\n // now make sure we don't print an overly large amount of error area: limit it \n // to the top and bottom line count:\n if (nonempty_line_indexes.length > 2 * MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT) {\n var clip_start = nonempty_line_indexes[MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT - 1] + 1;\n var clip_end = nonempty_line_indexes[nonempty_line_indexes.length - MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT] - 1;\n var intermediate_line = new Array(lineno_display_width + 1).join(' ') + ' (...continued...)';\n intermediate_line += '\\n' + new Array(lineno_display_width + 1).join('-') + ' (---------------)';\n rv.splice(clip_start, clip_end - clip_start + 1, intermediate_line);\n }\n\n return rv.join('\\n');\n },\n\n /**\n * helper function, used to produce a human readable description as a string, given\n * the input `yylloc` location object.\n * \n * Set `display_range_too` to TRUE to include the string character index position(s)\n * in the description if the `yylloc.range` is available.\n * \n * @public\n * @this {RegExpLexer}\n */\n describeYYLLOC: function lexer_describe_yylloc(yylloc, display_range_too) {\n var l1 = yylloc.first_line;\n var l2 = yylloc.last_line;\n var c1 = yylloc.first_column;\n var c2 = yylloc.last_column;\n var dl = l2 - l1;\n var dc = c2 - c1;\n var rv;\n\n if (dl === 0) {\n rv = 'line ' + l1 + ', ';\n\n if (dc <= 1) {\n rv += 'column ' + c1;\n } else {\n rv += 'columns ' + c1 + ' .. ' + c2;\n }\n } else {\n rv = 'lines ' + l1 + '(column ' + c1 + ') .. ' + l2 + '(column ' + c2 + ')';\n }\n\n if (yylloc.range && display_range_too) {\n var r1 = yylloc.range[0];\n var r2 = yylloc.range[1] - 1;\n\n if (r2 <= r1) {\n rv += ' {String Offset: ' + r1 + '}';\n } else {\n rv += ' {String Offset range: ' + r1 + ' .. ' + r2 + '}';\n }\n }\n\n return rv;\n },\n\n /**\n * test the lexed token: return FALSE when not a match, otherwise return token.\n * \n * `match` is supposed to be an array coming out of a regex match, i.e. `match[0]`\n * contains the actually matched text string.\n * \n * Also move the input cursor forward and update the match collectors:\n * \n * - `yytext`\n * - `yyleng`\n * - `match`\n * - `matches`\n * - `yylloc`\n * - `offset`\n * \n * @public\n * @this {RegExpLexer}\n */\n test_match: function lexer_test_match(match, indexed_rule) {\n var token, lines, backup, match_str, match_str_len;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.yylloc.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column,\n range: this.yylloc.range.slice(0)\n },\n\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n\n //_signaled_error_token: this._signaled_error_token,\n yy: this.yy,\n\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n }\n\n match_str = match[0];\n match_str_len = match_str.length;\n\n // if (match_str.indexOf('\\n') !== -1 || match_str.indexOf('\\r') !== -1) {\n lines = match_str.split(/(?:\\r\\n?|\\n)/g);\n\n if (lines.length > 1) {\n this.yylineno += lines.length - 1;\n this.yylloc.last_line = this.yylineno + 1;\n this.yylloc.last_column = lines[lines.length - 1].length;\n } else {\n this.yylloc.last_column += match_str_len;\n }\n\n // }\n this.yytext += match_str;\n\n this.match += match_str;\n this.matched += match_str;\n this.matches = match;\n this.yyleng = this.yytext.length;\n this.yylloc.range[1] += match_str_len;\n\n // previous lex rules MAY have invoked the `more()` API rather than producing a token:\n // those rules will already have moved this `offset` forward matching their match lengths,\n // hence we must only add our own match length now:\n this.offset += match_str_len;\n\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match_str_len);\n\n // calling this method:\n //\n // function lexer__performAction(yy, yyrulenumber, YY_START) {...}\n token = this.performAction.call(\n this,\n this.yy,\n indexed_rule,\n this.conditionStack[this.conditionStack.length - 1] /* = YY_START */\n );\n\n // otherwise, when the action codes are all simple return token statements:\n //token = this.simpleCaseActionClusters[indexed_rule];\n\n if (this.done && this._input) {\n this.done = false;\n }\n\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n\n this.__currentRuleSet__ = null;\n return false; // rule action called reject() implying the next rule should be tested instead. \n } else if (this._signaled_error_token) {\n // produce one 'error' token as `.parseError()` in `reject()`\n // did not guarantee a failure signal by throwing an exception!\n token = this._signaled_error_token;\n\n this._signaled_error_token = false;\n return token;\n }\n\n return false;\n },\n\n /**\n * return next match in input\n * \n * @public\n * @this {RegExpLexer}\n */\n next: function lexer_next() {\n if (this.done) {\n this.clear();\n return this.EOF;\n }\n\n if (!this._input) {\n this.done = true;\n }\n\n var token, match, tempMatch, index;\n\n if (!this._more) {\n this.clear();\n }\n\n var spec = this.__currentRuleSet__;\n\n if (!spec) {\n // Update the ruleset cache as we apparently encountered a state change or just started lexing.\n // The cache is set up for fast lookup -- we assume a lexer will switch states much less often than it will\n // invoke the `lex()` token-producing API and related APIs, hence caching the set for direct access helps\n // speed up those activities a tiny bit.\n spec = this.__currentRuleSet__ = this._currentRules();\n\n // Check whether a *sane* condition has been pushed before: this makes the lexer robust against\n // user-programmer bugs such as https://github.com/zaach/jison-lex/issues/19\n if (!spec || !spec.rules) {\n var lineno_msg = '';\n\n if (this.options.trackPosition) {\n lineno_msg = ' on line ' + (this.yylineno + 1);\n }\n\n var p = this.constructLexErrorInfo(\n 'Internal lexer engine error' + lineno_msg + ': The lex grammar programmer pushed a non-existing condition name \"' + this.topState() + '\"; this is a fatal error and should be reported to the application programmer team!',\n false\n );\n\n // produce one 'error' token until this situation has been resolved, most probably by parse termination!\n return this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;\n }\n }\n\n var rule_ids = spec.rules;\n var regexes = spec.__rule_regexes;\n var len = spec.__rule_count;\n\n // Note: the arrays are 1-based, while `len` itself is a valid index,\n // hence the non-standard less-or-equal check in the next loop condition!\n for (var i = 1; i <= len; i++) {\n tempMatch = this._input.match(regexes[i]);\n\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rule_ids[i]);\n\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = undefined;\n continue; // rule action called reject() implying a rule MISmatch. \n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n\n if (match) {\n token = this.test_match(match, rule_ids[index]);\n\n if (token !== false) {\n return token;\n }\n\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n\n if (!this._input) {\n this.done = true;\n this.clear();\n return this.EOF;\n } else {\n var lineno_msg = '';\n\n if (this.options.trackPosition) {\n lineno_msg = ' on line ' + (this.yylineno + 1);\n }\n\n var p = this.constructLexErrorInfo(\n 'Lexical error' + lineno_msg + ': Unrecognized text.',\n this.options.lexerErrorsAreRecoverable\n );\n\n var pendingInput = this._input;\n var activeCondition = this.topState();\n var conditionStackDepth = this.conditionStack.length;\n token = this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;\n\n if (token === this.ERROR) {\n // we can try to recover from a lexer error that `parseError()` did not 'recover' for us\n // by moving forward at least one character at a time IFF the (user-specified?) `parseError()`\n // has not consumed/modified any pending input or changed state in the error handler:\n if (!this.matches && // and make sure the input has been modified/consumed ...\n pendingInput === this._input && // ...or the lexer state has been modified significantly enough\n // to merit a non-consuming error handling action right now.\n activeCondition === this.topState() && conditionStackDepth === this.conditionStack.length) {\n this.input();\n }\n }\n\n return token;\n }\n },\n\n /**\n * return next match that has a token\n * \n * @public\n * @this {RegExpLexer}\n */\n lex: function lexer_lex() {\n var r;\n\n // allow the PRE/POST handlers set/modify the return token for maximum flexibility of the generated lexer:\n if (typeof this.pre_lex === 'function') {\n r = this.pre_lex.call(this, 0);\n }\n\n if (typeof this.options.pre_lex === 'function') {\n // (also account for a userdef function which does not return any value: keep the token as is)\n r = this.options.pre_lex.call(this, r) || r;\n }\n\n if (this.yy && typeof this.yy.pre_lex === 'function') {\n // (also account for a userdef function which does not return any value: keep the token as is)\n r = this.yy.pre_lex.call(this, r) || r;\n }\n\n while (!r) {\n r = this.next();\n }\n\n if (this.yy && typeof this.yy.post_lex === 'function') {\n // (also account for a userdef function which does not return any value: keep the token as is)\n r = this.yy.post_lex.call(this, r) || r;\n }\n\n if (typeof this.options.post_lex === 'function') {\n // (also account for a userdef function which does not return any value: keep the token as is)\n r = this.options.post_lex.call(this, r) || r;\n }\n\n if (typeof this.post_lex === 'function') {\n // (also account for a userdef function which does not return any value: keep the token as is)\n r = this.post_lex.call(this, r) || r;\n }\n\n return r;\n },\n\n /**\n * return next match that has a token. Identical to the `lex()` API but does not invoke any of the \n * `pre_lex()` nor any of the `post_lex()` callbacks.\n * \n * @public\n * @this {RegExpLexer}\n */\n fastLex: function lexer_fastLex() {\n var r;\n\n while (!r) {\n r = this.next();\n }\n\n return r;\n },\n\n /**\n * return info about the lexer state that can help a parser or other lexer API user to use the\n * most efficient means available. This API is provided to aid run-time performance for larger\n * systems which employ this lexer.\n * \n * @public\n * @this {RegExpLexer}\n */\n canIUse: function lexer_canIUse() {\n var rv = {\n fastLex: !(typeof this.pre_lex === 'function' || typeof this.options.pre_lex === 'function' || this.yy && typeof this.yy.pre_lex === 'function' || this.yy && typeof this.yy.post_lex === 'function' || typeof this.options.post_lex === 'function' || typeof this.post_lex === 'function') && typeof this.fastLex === 'function'\n };\n\n return rv;\n },\n\n /**\n * backwards compatible alias for `pushState()`;\n * the latter is symmetrical with `popState()` and we advise to use\n * those APIs in any modern lexer code, rather than `begin()`.\n * \n * @public\n * @this {RegExpLexer}\n */\n begin: function lexer_begin(condition) {\n return this.pushState(condition);\n },\n\n /**\n * activates a new lexer condition state (pushes the new lexer\n * condition state onto the condition stack)\n * \n * @public\n * @this {RegExpLexer}\n */\n pushState: function lexer_pushState(condition) {\n this.conditionStack.push(condition);\n this.__currentRuleSet__ = null;\n return this;\n },\n\n /**\n * pop the previously active lexer condition state off the condition\n * stack\n * \n * @public\n * @this {RegExpLexer}\n */\n popState: function lexer_popState() {\n var n = this.conditionStack.length - 1;\n\n if (n > 0) {\n this.__currentRuleSet__ = null;\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n /**\n * return the currently active lexer condition state; when an index\n * argument is provided it produces the N-th previous condition state,\n * if available\n * \n * @public\n * @this {RegExpLexer}\n */\n topState: function lexer_topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return 'INITIAL';\n }\n },\n\n /**\n * (internal) determine the lexer rule set which is active for the\n * currently active lexer condition state\n * \n * @public\n * @this {RegExpLexer}\n */\n _currentRules: function lexer__currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]];\n } else {\n return this.conditions['INITIAL'];\n }\n },\n\n /**\n * return the number of states currently on the stack\n * \n * @public\n * @this {RegExpLexer}\n */\n stateStackSize: function lexer_stateStackSize() {\n return this.conditionStack.length;\n },\n\n options: {\n trackPosition: true\n },\n\n JisonLexerError: JisonLexerError,\n\n performAction: function lexer__performAction(yy, yyrulenumber, YY_START) {\n var yy_ = this;\n var YYSTATE = YY_START;\n\n switch (yyrulenumber) {\n case 1:\n /*! Conditions:: INITIAL */\n /*! Rule:: \\s+ */\n /* skip whitespace */\n break;\n\n default:\n return this.simpleCaseActionClusters[yyrulenumber];\n }\n },\n\n simpleCaseActionClusters: {\n /*! Conditions:: INITIAL */\n /*! Rule:: (--[0-9a-z-A-Z-]*) */\n 0: 13,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: \\* */\n 2: 5,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: \\/ */\n 3: 6,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: \\+ */\n 4: 3,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: - */\n 5: 4,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)px\\b */\n 6: 15,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)cm\\b */\n 7: 15,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)mm\\b */\n 8: 15,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)in\\b */\n 9: 15,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)pt\\b */\n 10: 15,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)pc\\b */\n 11: 15,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)deg\\b */\n 12: 16,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)grad\\b */\n 13: 16,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)rad\\b */\n 14: 16,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)turn\\b */\n 15: 16,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)s\\b */\n 16: 17,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)ms\\b */\n 17: 17,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)Hz\\b */\n 18: 18,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)kHz\\b */\n 19: 18,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)dpi\\b */\n 20: 19,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)dpcm\\b */\n 21: 19,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)dppx\\b */\n 22: 19,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)em\\b */\n 23: 20,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)ex\\b */\n 24: 21,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)ch\\b */\n 25: 22,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)rem\\b */\n 26: 23,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)vw\\b */\n 27: 25,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)vh\\b */\n 28: 24,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)vmin\\b */\n 29: 26,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)vmax\\b */\n 30: 27,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)% */\n 31: 28,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([0-9]+(\\.[0-9]*)?|\\.[0-9]+)\\b */\n 32: 11,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: (calc) */\n 33: 9,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: (var) */\n 34: 12,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: ([a-z]+) */\n 35: 10,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: \\( */\n 36: 7,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: \\) */\n 37: 8,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: , */\n 38: 14,\n\n /*! Conditions:: INITIAL */\n /*! Rule:: $ */\n 39: 1\n },\n\n rules: [\n /* 0: */ /^(?:(--[\\d\\-A-Za-z]*))/,\n /* 1: */ /^(?:\\s+)/,\n /* 2: */ /^(?:\\*)/,\n /* 3: */ /^(?:\\/)/,\n /* 4: */ /^(?:\\+)/,\n /* 5: */ /^(?:-)/,\n /* 6: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)px\\b)/,\n /* 7: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)cm\\b)/,\n /* 8: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)mm\\b)/,\n /* 9: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)in\\b)/,\n /* 10: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)pt\\b)/,\n /* 11: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)pc\\b)/,\n /* 12: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)deg\\b)/,\n /* 13: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)grad\\b)/,\n /* 14: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)rad\\b)/,\n /* 15: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)turn\\b)/,\n /* 16: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)s\\b)/,\n /* 17: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)ms\\b)/,\n /* 18: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)Hz\\b)/,\n /* 19: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)kHz\\b)/,\n /* 20: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)dpi\\b)/,\n /* 21: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)dpcm\\b)/,\n /* 22: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)dppx\\b)/,\n /* 23: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)em\\b)/,\n /* 24: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)ex\\b)/,\n /* 25: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)ch\\b)/,\n /* 26: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)rem\\b)/,\n /* 27: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)vw\\b)/,\n /* 28: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)vh\\b)/,\n /* 29: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)vmin\\b)/,\n /* 30: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)vmax\\b)/,\n /* 31: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)%)/,\n /* 32: */ /^(?:(\\d+(\\.\\d*)?|\\.\\d+)\\b)/,\n /* 33: */ /^(?:(calc))/,\n /* 34: */ /^(?:(var))/,\n /* 35: */ /^(?:([a-z]+))/,\n /* 36: */ /^(?:\\()/,\n /* 37: */ /^(?:\\))/,\n /* 38: */ /^(?:,)/,\n /* 39: */ /^(?:$)/\n ],\n\n conditions: {\n 'INITIAL': {\n rules: [\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 16,\n 17,\n 18,\n 19,\n 20,\n 21,\n 22,\n 23,\n 24,\n 25,\n 26,\n 27,\n 28,\n 29,\n 30,\n 31,\n 32,\n 33,\n 34,\n 35,\n 36,\n 37,\n 38,\n 39\n ],\n\n inclusive: true\n }\n }\n };\n\n return lexer;\n}();\nparser.lexer = lexer;\n\n\n\nfunction Parser() {\n this.yy = {};\n}\nParser.prototype = parser;\nparser.Parser = Parser;\n\nreturn new Parser();\n})();\n\n \n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\n exports.parser = parser;\n exports.Parser = parser.Parser;\n exports.parse = function () {\n return parser.parse.apply(parser, arguments);\n };\n \n}\n","var parse = require(\"./parse\");\nvar walk = require(\"./walk\");\nvar stringify = require(\"./stringify\");\n\nfunction ValueParser(value) {\n if (this instanceof ValueParser) {\n this.nodes = parse(value);\n return this;\n }\n return new ValueParser(value);\n}\n\nValueParser.prototype.toString = function() {\n return Array.isArray(this.nodes) ? stringify(this.nodes) : \"\";\n};\n\nValueParser.prototype.walk = function(cb, bubble) {\n walk(this.nodes, cb, bubble);\n return this;\n};\n\nValueParser.unit = require(\"./unit\");\n\nValueParser.walk = walk;\n\nValueParser.stringify = stringify;\n\nmodule.exports = ValueParser;\n","var openParentheses = \"(\".charCodeAt(0);\nvar closeParentheses = \")\".charCodeAt(0);\nvar singleQuote = \"'\".charCodeAt(0);\nvar doubleQuote = '\"'.charCodeAt(0);\nvar backslash = \"\\\\\".charCodeAt(0);\nvar slash = \"/\".charCodeAt(0);\nvar comma = \",\".charCodeAt(0);\nvar colon = \":\".charCodeAt(0);\nvar star = \"*\".charCodeAt(0);\n\nmodule.exports = function(input) {\n var tokens = [];\n var value = input;\n\n var next, quote, prev, token, escape, escapePos, whitespacePos;\n var pos = 0;\n var code = value.charCodeAt(pos);\n var max = value.length;\n var stack = [{ nodes: tokens }];\n var balanced = 0;\n var parent;\n\n var name = \"\";\n var before = \"\";\n var after = \"\";\n\n while (pos < max) {\n // Whitespaces\n if (code <= 32) {\n next = pos;\n do {\n next += 1;\n code = value.charCodeAt(next);\n } while (code <= 32);\n token = value.slice(pos, next);\n\n prev = tokens[tokens.length - 1];\n if (code === closeParentheses && balanced) {\n after = token;\n } else if (prev && prev.type === \"div\") {\n prev.after = token;\n } else if (\n code === comma ||\n code === colon ||\n (code === slash && value.charCodeAt(next + 1) !== star)\n ) {\n before = token;\n } else {\n tokens.push({\n type: \"space\",\n sourceIndex: pos,\n value: token\n });\n }\n\n pos = next;\n\n // Quotes\n } else if (code === singleQuote || code === doubleQuote) {\n next = pos;\n quote = code === singleQuote ? \"'\" : '\"';\n token = {\n type: \"string\",\n sourceIndex: pos,\n quote: quote\n };\n do {\n escape = false;\n next = value.indexOf(quote, next + 1);\n if (~next) {\n escapePos = next;\n while (value.charCodeAt(escapePos - 1) === backslash) {\n escapePos -= 1;\n escape = !escape;\n }\n } else {\n value += quote;\n next = value.length - 1;\n token.unclosed = true;\n }\n } while (escape);\n token.value = value.slice(pos + 1, next);\n\n tokens.push(token);\n pos = next + 1;\n code = value.charCodeAt(pos);\n\n // Comments\n } else if (code === slash && value.charCodeAt(pos + 1) === star) {\n token = {\n type: \"comment\",\n sourceIndex: pos\n };\n\n next = value.indexOf(\"*/\", pos);\n if (next === -1) {\n token.unclosed = true;\n next = value.length;\n }\n\n token.value = value.slice(pos + 2, next);\n tokens.push(token);\n\n pos = next + 2;\n code = value.charCodeAt(pos);\n\n // Dividers\n } else if (code === slash || code === comma || code === colon) {\n token = value[pos];\n\n tokens.push({\n type: \"div\",\n sourceIndex: pos - before.length,\n value: token,\n before: before,\n after: \"\"\n });\n before = \"\";\n\n pos += 1;\n code = value.charCodeAt(pos);\n\n // Open parentheses\n } else if (openParentheses === code) {\n // Whitespaces after open parentheses\n next = pos;\n do {\n next += 1;\n code = value.charCodeAt(next);\n } while (code <= 32);\n token = {\n type: \"function\",\n sourceIndex: pos - name.length,\n value: name,\n before: value.slice(pos + 1, next)\n };\n pos = next;\n\n if (name === \"url\" && code !== singleQuote && code !== doubleQuote) {\n next -= 1;\n do {\n escape = false;\n next = value.indexOf(\")\", next + 1);\n if (~next) {\n escapePos = next;\n while (value.charCodeAt(escapePos - 1) === backslash) {\n escapePos -= 1;\n escape = !escape;\n }\n } else {\n value += \")\";\n next = value.length - 1;\n token.unclosed = true;\n }\n } while (escape);\n // Whitespaces before closed\n whitespacePos = next;\n do {\n whitespacePos -= 1;\n code = value.charCodeAt(whitespacePos);\n } while (code <= 32);\n if (pos !== whitespacePos + 1) {\n token.nodes = [\n {\n type: \"word\",\n sourceIndex: pos,\n value: value.slice(pos, whitespacePos + 1)\n }\n ];\n } else {\n token.nodes = [];\n }\n if (token.unclosed && whitespacePos + 1 !== next) {\n token.after = \"\";\n token.nodes.push({\n type: \"space\",\n sourceIndex: whitespacePos + 1,\n value: value.slice(whitespacePos + 1, next)\n });\n } else {\n token.after = value.slice(whitespacePos + 1, next);\n }\n pos = next + 1;\n code = value.charCodeAt(pos);\n tokens.push(token);\n } else {\n balanced += 1;\n token.after = \"\";\n tokens.push(token);\n stack.push(token);\n tokens = token.nodes = [];\n parent = token;\n }\n name = \"\";\n\n // Close parentheses\n } else if (closeParentheses === code && balanced) {\n pos += 1;\n code = value.charCodeAt(pos);\n\n parent.after = after;\n after = \"\";\n balanced -= 1;\n stack.pop();\n parent = stack[balanced];\n tokens = parent.nodes;\n\n // Words\n } else {\n next = pos;\n do {\n if (code === backslash) {\n next += 1;\n }\n next += 1;\n code = value.charCodeAt(next);\n } while (\n next < max &&\n !(\n code <= 32 ||\n code === singleQuote ||\n code === doubleQuote ||\n code === comma ||\n code === colon ||\n code === slash ||\n code === openParentheses ||\n (code === closeParentheses && balanced)\n )\n );\n token = value.slice(pos, next);\n\n if (openParentheses === code) {\n name = token;\n } else {\n tokens.push({\n type: \"word\",\n sourceIndex: pos,\n value: token\n });\n }\n\n pos = next;\n }\n }\n\n for (pos = stack.length - 1; pos; pos -= 1) {\n stack[pos].unclosed = true;\n }\n\n return stack[0].nodes;\n};\n","function stringifyNode(node, custom) {\n var type = node.type;\n var value = node.value;\n var buf;\n var customResult;\n\n if (custom && (customResult = custom(node)) !== undefined) {\n return customResult;\n } else if (type === \"word\" || type === \"space\") {\n return value;\n } else if (type === \"string\") {\n buf = node.quote || \"\";\n return buf + value + (node.unclosed ? \"\" : buf);\n } else if (type === \"comment\") {\n return \"/*\" + value + (node.unclosed ? \"\" : \"*/\");\n } else if (type === \"div\") {\n return (node.before || \"\") + value + (node.after || \"\");\n } else if (Array.isArray(node.nodes)) {\n buf = stringify(node.nodes);\n if (type !== \"function\") {\n return buf;\n }\n return (\n value +\n \"(\" +\n (node.before || \"\") +\n buf +\n (node.after || \"\") +\n (node.unclosed ? \"\" : \")\")\n );\n }\n return value;\n}\n\nfunction stringify(nodes, custom) {\n var result, i;\n\n if (Array.isArray(nodes)) {\n result = \"\";\n for (i = nodes.length - 1; ~i; i -= 1) {\n result = stringifyNode(nodes[i], custom) + result;\n }\n return result;\n }\n return stringifyNode(nodes, custom);\n}\n\nmodule.exports = stringify;\n","var minus = \"-\".charCodeAt(0);\nvar plus = \"+\".charCodeAt(0);\nvar dot = \".\".charCodeAt(0);\nvar exp = \"e\".charCodeAt(0);\nvar EXP = \"E\".charCodeAt(0);\n\nmodule.exports = function(value) {\n var pos = 0;\n var length = value.length;\n var dotted = false;\n var sciPos = -1;\n var containsNumber = false;\n var code;\n\n while (pos < length) {\n code = value.charCodeAt(pos);\n\n if (code >= 48 && code <= 57) {\n containsNumber = true;\n } else if (code === exp || code === EXP) {\n if (sciPos > -1) {\n break;\n }\n sciPos = pos;\n } else if (code === dot) {\n if (dotted) {\n break;\n }\n dotted = true;\n } else if (code === plus || code === minus) {\n if (pos !== 0) {\n break;\n }\n } else {\n break;\n }\n\n pos += 1;\n }\n\n if (sciPos + 1 === pos) pos--;\n\n return containsNumber\n ? {\n number: value.slice(0, pos),\n unit: value.slice(pos)\n }\n : false;\n};\n","module.exports = function walk(nodes, cb, bubble) {\n var i, max, node, result;\n\n for (i = 0, max = nodes.length; i < max; i += 1) {\n node = nodes[i];\n if (!bubble) {\n result = cb(node, i, nodes);\n }\n\n if (\n result !== false &&\n node.type === \"function\" &&\n Array.isArray(node.nodes)\n ) {\n walk(node.nodes, cb, bubble);\n }\n\n if (bubble) {\n cb(node, i, nodes);\n }\n }\n};\n","import { featureEach, coordEach } from '@turf/meta';\nimport { point, featureCollection } from '@turf/helpers';\n\n/**\n * Takes a feature or set of features and returns all positions as {@link Point|points}.\n *\n * @name explode\n * @param {GeoJSON} geojson input features\n * @returns {FeatureCollection} points representing the exploded input features\n * @throws {Error} if it encounters an unknown geometry type\n * @example\n * var polygon = turf.polygon([[[-81, 41], [-88, 36], [-84, 31], [-80, 33], [-77, 39], [-81, 41]]]);\n *\n * var explode = turf.explode(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, explode]\n */\nfunction explode(geojson) {\n var points = [];\n if (geojson.type === \"FeatureCollection\") {\n featureEach(geojson, function (feature) {\n coordEach(feature, function (coord) {\n points.push(point(coord, feature.properties));\n });\n });\n } else {\n coordEach(geojson, function (coord) {\n points.push(point(coord, geojson.properties));\n });\n }\n return featureCollection(points);\n}\n\nexport default explode;\n","/**\n * @module ol/control/ScaleLine\n */\nimport Control from './Control.js';\nimport {CLASS_UNSELECTABLE} from '../css.js';\nimport {METERS_PER_UNIT, getPointResolution} from '../proj.js';\n\n/**\n * @type {string}\n */\nconst UNITS_PROP = 'units';\n\n/**\n * @typedef {'degrees' | 'imperial' | 'nautical' | 'metric' | 'us'} Units\n * Units for the scale line.\n */\n\n/**\n * @const\n * @type {Array}\n */\nconst LEADING_DIGITS = [1, 2, 5];\n\n/**\n * @const\n * @type {number}\n */\nconst DEFAULT_DPI = 25.4 / 0.28;\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} ScaleLineOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {string} [className] CSS class name. The default is `ol-scale-bar` when configured with\n * `bar: true`. Otherwise the default is `ol-scale-line`.\n * @property {number} [minWidth=64] Minimum width in pixels at the OGC default dpi. The width will be\n * adjusted to match the dpi used.\n * @property {number} [maxWidth] Maximum width in pixels at the OGC default dpi. The width will be\n * adjusted to match the dpi used.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the control\n * should be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {HTMLElement|string} [target] Specify a target if you want the control\n * to be rendered outside of the map's viewport.\n * @property {Units} [units='metric'] Units.\n * @property {boolean} [bar=false] Render scalebars instead of a line.\n * @property {number} [steps=4] Number of steps the scalebar should use. Use even numbers\n * for best results. Only applies when `bar` is `true`.\n * @property {boolean} [text=false] Render the text scale above of the scalebar. Only applies\n * when `bar` is `true`.\n * @property {number|undefined} [dpi=undefined] dpi of output device such as printer. Only applies\n * when `bar` is `true`. If undefined the OGC default screen pixel size of 0.28mm will be assumed.\n */\n\n/**\n * @classdesc\n * A control displaying rough y-axis distances, calculated for the center of the\n * viewport. For conformal projections (e.g. EPSG:3857, the default view\n * projection in OpenLayers), the scale is valid for all directions.\n * No scale line will be shown when the y-axis distance of a pixel at the\n * viewport center cannot be calculated in the view projection.\n * By default the scale line will show in the bottom left portion of the map,\n * but this can be changed by using the css selector `.ol-scale-line`.\n * When specifying `bar` as `true`, a scalebar will be rendered instead\n * of a scaleline.\n * For cartesian measurements of the scaleline, you need to set the\n * `getPointResolution` method of your projection to simply return the input\n * value, e.g. `projection.setGetPointResolution(r => r);`\n *\n * @api\n */\nclass ScaleLine extends Control {\n /**\n * @param {Options} [options] Scale line options.\n */\n constructor(options) {\n options = options ? options : {};\n\n const element = document.createElement('div');\n element.style.pointerEvents = 'none';\n\n super({\n element: element,\n render: options.render,\n target: options.target,\n });\n\n /***\n * @type {ScaleLineOnSignature}\n */\n this.on;\n\n /***\n * @type {ScaleLineOnSignature}\n */\n this.once;\n\n /***\n * @type {ScaleLineOnSignature}\n */\n this.un;\n\n const className =\n options.className !== undefined\n ? options.className\n : options.bar\n ? 'ol-scale-bar'\n : 'ol-scale-line';\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.innerElement_ = document.createElement('div');\n this.innerElement_.className = className + '-inner';\n\n this.element.className = className + ' ' + CLASS_UNSELECTABLE;\n this.element.appendChild(this.innerElement_);\n\n /**\n * @private\n * @type {?import(\"../View.js\").State}\n */\n this.viewState_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.minWidth_ = options.minWidth !== undefined ? options.minWidth : 64;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.maxWidth_ = options.maxWidth;\n\n /**\n * @private\n * @type {boolean}\n */\n this.renderedVisible_ = false;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.renderedWidth_ = undefined;\n\n /**\n * @private\n * @type {string}\n */\n this.renderedHTML_ = '';\n\n this.addChangeListener(UNITS_PROP, this.handleUnitsChanged_);\n\n this.setUnits(options.units || 'metric');\n\n /**\n * @private\n * @type {boolean}\n */\n this.scaleBar_ = options.bar || false;\n\n /**\n * @private\n * @type {number}\n */\n this.scaleBarSteps_ = options.steps || 4;\n\n /**\n * @private\n * @type {boolean}\n */\n this.scaleBarText_ = options.text || false;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.dpi_ = options.dpi || undefined;\n }\n\n /**\n * Return the units to use in the scale line.\n * @return {Units} The units\n * to use in the scale line.\n * @observable\n * @api\n */\n getUnits() {\n return this.get(UNITS_PROP);\n }\n\n /**\n * @private\n */\n handleUnitsChanged_() {\n this.updateElement_();\n }\n\n /**\n * Set the units to use in the scale line.\n * @param {Units} units The units to use in the scale line.\n * @observable\n * @api\n */\n setUnits(units) {\n this.set(UNITS_PROP, units);\n }\n\n /**\n * Specify the dpi of output device such as printer.\n * @param {number|undefined} dpi The dpi of output device.\n * @api\n */\n setDpi(dpi) {\n this.dpi_ = dpi;\n }\n\n /**\n * @private\n */\n updateElement_() {\n const viewState = this.viewState_;\n\n if (!viewState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n\n const center = viewState.center;\n const projection = viewState.projection;\n const units = this.getUnits();\n const pointResolutionUnits = units == 'degrees' ? 'degrees' : 'm';\n let pointResolution = getPointResolution(\n projection,\n viewState.resolution,\n center,\n pointResolutionUnits,\n );\n\n const minWidth =\n (this.minWidth_ * (this.dpi_ || DEFAULT_DPI)) / DEFAULT_DPI;\n\n const maxWidth =\n this.maxWidth_ !== undefined\n ? (this.maxWidth_ * (this.dpi_ || DEFAULT_DPI)) / DEFAULT_DPI\n : undefined;\n\n let nominalCount = minWidth * pointResolution;\n let suffix = '';\n if (units == 'degrees') {\n const metersPerDegree = METERS_PER_UNIT.degrees;\n nominalCount *= metersPerDegree;\n if (nominalCount < metersPerDegree / 60) {\n suffix = '\\u2033'; // seconds\n pointResolution *= 3600;\n } else if (nominalCount < metersPerDegree) {\n suffix = '\\u2032'; // minutes\n pointResolution *= 60;\n } else {\n suffix = '\\u00b0'; // degrees\n }\n } else if (units == 'imperial') {\n if (nominalCount < 0.9144) {\n suffix = 'in';\n pointResolution /= 0.0254;\n } else if (nominalCount < 1609.344) {\n suffix = 'ft';\n pointResolution /= 0.3048;\n } else {\n suffix = 'mi';\n pointResolution /= 1609.344;\n }\n } else if (units == 'nautical') {\n pointResolution /= 1852;\n suffix = 'NM';\n } else if (units == 'metric') {\n if (nominalCount < 1e-6) {\n suffix = 'nm';\n pointResolution *= 1e9;\n } else if (nominalCount < 0.001) {\n suffix = 'μm';\n pointResolution *= 1000000;\n } else if (nominalCount < 1) {\n suffix = 'mm';\n pointResolution *= 1000;\n } else if (nominalCount < 1000) {\n suffix = 'm';\n } else {\n suffix = 'km';\n pointResolution /= 1000;\n }\n } else if (units == 'us') {\n if (nominalCount < 0.9144) {\n suffix = 'in';\n pointResolution *= 39.37;\n } else if (nominalCount < 1609.344) {\n suffix = 'ft';\n pointResolution /= 0.30480061;\n } else {\n suffix = 'mi';\n pointResolution /= 1609.3472;\n }\n } else {\n throw new Error('Invalid units');\n }\n\n let i = 3 * Math.floor(Math.log(minWidth * pointResolution) / Math.log(10));\n let count, width, decimalCount;\n let previousCount, previousWidth, previousDecimalCount;\n while (true) {\n decimalCount = Math.floor(i / 3);\n const decimal = Math.pow(10, decimalCount);\n count = LEADING_DIGITS[((i % 3) + 3) % 3] * decimal;\n width = Math.round(count / pointResolution);\n if (isNaN(width)) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n return;\n }\n if (maxWidth !== undefined && width >= maxWidth) {\n count = previousCount;\n width = previousWidth;\n decimalCount = previousDecimalCount;\n break;\n } else if (width >= minWidth) {\n break;\n }\n previousCount = count;\n previousWidth = width;\n previousDecimalCount = decimalCount;\n ++i;\n }\n const html = this.scaleBar_\n ? this.createScaleBar(width, count, suffix)\n : count.toFixed(decimalCount < 0 ? -decimalCount : 0) + ' ' + suffix;\n\n if (this.renderedHTML_ != html) {\n this.innerElement_.innerHTML = html;\n this.renderedHTML_ = html;\n }\n\n if (this.renderedWidth_ != width) {\n this.innerElement_.style.width = width + 'px';\n this.renderedWidth_ = width;\n }\n\n if (!this.renderedVisible_) {\n this.element.style.display = '';\n this.renderedVisible_ = true;\n }\n }\n\n /**\n * @private\n * @param {number} width The current width of the scalebar.\n * @param {number} scale The current scale.\n * @param {string} suffix The suffix to append to the scale text.\n * @return {string} The stringified HTML of the scalebar.\n */\n createScaleBar(width, scale, suffix) {\n const resolutionScale = this.getScaleForResolution();\n const mapScale =\n resolutionScale < 1\n ? Math.round(1 / resolutionScale).toLocaleString() + ' : 1'\n : '1 : ' + Math.round(resolutionScale).toLocaleString();\n const steps = this.scaleBarSteps_;\n const stepWidth = width / steps;\n const scaleSteps = [this.createMarker('absolute')];\n for (let i = 0; i < steps; ++i) {\n const cls =\n i % 2 === 0 ? 'ol-scale-singlebar-odd' : 'ol-scale-singlebar-even';\n scaleSteps.push(\n '
' +\n '
' +\n '
' +\n this.createMarker('relative') +\n // render text every second step, except when only 2 steps\n (i % 2 === 0 || steps === 2\n ? this.createStepText(i, width, false, scale, suffix)\n : '') +\n '
',\n );\n }\n // render text at the end\n scaleSteps.push(this.createStepText(steps, width, true, scale, suffix));\n\n const scaleBarText = this.scaleBarText_\n ? `
` +\n mapScale +\n '
'\n : '';\n return scaleBarText + scaleSteps.join('');\n }\n\n /**\n * Creates a marker at given position\n * @param {'absolute'|'relative'} position The position, absolute or relative\n * @return {string} The stringified div containing the marker\n */\n createMarker(position) {\n const top = position === 'absolute' ? 3 : -10;\n return (\n '
'\n );\n }\n\n /**\n * Creates the label for a marker marker at given position\n * @param {number} i The iterator\n * @param {number} width The width the scalebar will currently use\n * @param {boolean} isLast Flag indicating if we add the last step text\n * @param {number} scale The current scale for the whole scalebar\n * @param {string} suffix The suffix for the scale\n * @return {string} The stringified div containing the step text\n */\n createStepText(i, width, isLast, scale, suffix) {\n const length =\n i === 0 ? 0 : Math.round((scale / this.scaleBarSteps_) * i * 100) / 100;\n const lengthString = length + (i === 0 ? '' : ' ' + suffix);\n const margin = i === 0 ? -3 : (width / this.scaleBarSteps_) * -1;\n const minWidth = i === 0 ? 0 : (width / this.scaleBarSteps_) * 2;\n return (\n '
' +\n lengthString +\n '
'\n );\n }\n\n /**\n * Returns the appropriate scale for the given resolution and units.\n * @return {number} The appropriate scale.\n */\n getScaleForResolution() {\n const resolution = getPointResolution(\n this.viewState_.projection,\n this.viewState_.resolution,\n this.viewState_.center,\n 'm',\n );\n const dpi = this.dpi_ || DEFAULT_DPI;\n const inchesPerMeter = 1000 / 25.4;\n return resolution * inchesPerMeter * dpi;\n }\n\n /**\n * Update the scale line element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n render(mapEvent) {\n const frameState = mapEvent.frameState;\n if (!frameState) {\n this.viewState_ = null;\n } else {\n this.viewState_ = frameState.viewState;\n }\n this.updateElement_();\n }\n}\n\nexport default ScaleLine;\n"],"names":["Object","defineProperty","exports","value","CsvFormatterStream","stream_1","formatter_1","Transform","constructor","formatterOptions","super","writableObjectMode","objectMode","this","hasWrittenBOM","rowFormatter","RowFormatter","writeBOM","transform","transformFunction","rowTransform","_transform","row","encoding","cb","cbCalled","push","BOM","format","err","rows","forEach","r","Buffer","from","e","_flush","finish","FormatterOptions","opts","_a","delimiter","rowDelimiter","quote","escape","quoteColumns","quoteHeaders","headers","includeEndRowDelimiter","alwaysWriteHeaders","assign","shouldWriteHeaders","writeHeaders","Array","isArray","escapedQuote","__importDefault","mod","__esModule","FieldFormatter","lodash_isboolean_1","lodash_isnil_1","lodash_escaperegexp_1","_headers","REPLACE_REGEXP","RegExp","escapePattern","default","ESCAPE_REGEXP","shouldQuote","fieldIndex","isHeader","quoteConfig","field","preparedField","replace","indexOf","quoteField","search","lodash_isfunction_1","lodash_isequal_1","FieldFormatter_1","types_1","rowCount","fieldFormatter","hasWrittenHeaders","isRowHashArray","length","isRowArray","gatherHeaders","map","it","keys","createTransform","isSyncTransform","transformedRow","TypeError","_rowTransform","callTransformer","shouldFormatColumns","checkHeaders","formatColumns","columns","gatherColumns","Error","header","i","col","isHeadersRow","formattedCols","join","RowFormatter_1","enumerable","get","__createBinding","create","o","m","k","k2","undefined","__setModuleDefault","v","__importStar","result","prototype","hasOwnProperty","call","__exportStar","p","writeToPath","writeToString","writeToBuffer","writeToStream","write","util_1","fs","FormatterOptions_1","CsvFormatterStream_1","CsvFormatterStream_2","FormatterOptions_2","options","csvStream","promiseWrite","promisify","reduce","prev","then","Promise","resolve","end","catch","emit","ws","pipe","buffers","Writable","data","enc","writeCb","res","rej","on","concat","buffer","toString","path","stream","createWriteStream","hasOwn","classNames","classes","arguments","arg","argType","inner","apply","key","module","conversions","Math","PI","sourceUnit","targetUnit","precision","converted","pow","parseInt","round","globalScope","ONE","MAX_DIGITS","Decimal","rounding","toExpNeg","toExpPos","LN10","external","decimalError","invalidArgument","exponentOutOfRange","mathfloor","floor","mathpow","isDecimal","BASE","LOG_BASE","MAX_SAFE_INTEGER","MAX_E","P","add","x","y","carry","d","len","xd","yd","Ctor","pr","s","slice","ceil","reverse","unshift","pop","checkInt32","min","max","digitsToString","indexOfLastWord","str","w","getZeroString","absoluteValue","abs","comparedTo","cmp","j","xdL","ydL","decimalPlaces","dp","dividedBy","div","divide","dividedToIntegerBy","idiv","equals","eq","exponent","getBase10Exponent","greaterThan","gt","greaterThanOrEqualTo","gte","isInteger","isint","isNegative","isneg","isPositive","ispos","isZero","lessThan","lt","lessThanOrEqualTo","lte","logarithm","log","base","wpr","ln","minus","sub","subtract","modulo","q","times","naturalExponential","exp","naturalLogarithm","negated","neg","plus","sd","z","squareRoot","sqrt","n","t","toExponential","mul","rL","shift","toDecimalPlaces","todp","rm","toFixed","toInteger","toint","toNumber","toPower","sign","yIsInt","yn","truncate","toPrecision","toSignificantDigits","tosd","valueOf","val","toJSON","multiplyInteger","temp","compare","a","b","aL","bL","prod","prodL","qd","rem","remL","rem0","xi","xL","yd0","yL","yz","denominator","sum","getLn10","zs","c","c0","numerator","x2","charAt","parseDecimal","substring","charCodeAt","rd","doRound","xdi","xe","xLTy","isExp","arr","config","obj","ps","clone","test","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","set","has","prefix","Events","EE","fn","context","once","addListener","emitter","event","listener","evt","_events","_eventsCount","clearEvent","EventEmitter","__proto__","eventNames","events","name","names","getOwnPropertySymbols","listeners","handlers","l","ee","listenerCount","a1","a2","a3","a4","a5","args","removeListener","removeAllListeners","off","prefixed","HAS_WEAKSET_SUPPORT","WeakSet","sameValueZeroEqual","isPlainObject","isPromiseLike","isReactElement","$$typeof","getNewCacheFallback","values","getNewCache","createCircularEqualCreator","isEqual","comparator","_comparator","cache","isCacheableA","isCacheableB","hasA","hasB","areArraysEqual","meta","index","areMapsEqual","isValueEqual","size","aValue","aKey","bValue","bKey","OWNER","Function","bind","areObjectsEqual","keysA","reactElementA","reactElementB","areRegExpsEqual","source","global","ignoreCase","multiline","unicode","sticky","lastIndex","areSetsEqual","HAS_MAP_SUPPORT","Map","HAS_SET_SUPPORT","Set","createComparator","createIsEqual","aShape","bShape","Date","getTime","deepEqual","shallowEqual","circularDeepEqual","circularShallowEqual","createCustomEqual","factory","INFINITY","symbolTag","reRegExpChar","reHasRegExpChar","freeGlobal","g","freeSelf","self","root","objectToString","Symbol","symbolProto","symbolToString","baseToString","isObjectLike","isSymbol","string","HASH_UNDEFINED","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","argsTag","arrayTag","asyncTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","promiseTag","proxyTag","regexpTag","setTag","stringTag","undefinedTag","weakMapTag","arrayBufferTag","dataViewTag","reIsHostCtor","reIsUint","typedArrayTags","freeExports","nodeType","freeModule","moduleExports","freeProcess","process","nodeUtil","binding","nodeIsTypedArray","isTypedArray","arraySome","array","predicate","mapToArray","setToArray","uid","func","arrayProto","funcProto","objectProto","coreJsData","funcToString","maskSrcKey","exec","IE_PROTO","nativeObjectToString","reIsNative","Uint8Array","propertyIsEnumerable","splice","symToStringTag","toStringTag","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeKeys","DataView","getNative","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolValueOf","Hash","entries","clear","entry","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","iteratee","baseTimes","String","isIndex","assocIndexOf","baseGetTag","isOwn","tag","unmasked","getRawTag","baseIsArguments","baseIsEqual","other","bitmask","customizer","stack","object","equalFunc","objIsArr","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","byteLength","byteOffset","message","convert","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othProps","othLength","skipCtor","objValue","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isObject","isMasked","isFunction","baseKeys","proto","arrLength","seen","arrValue","othIndex","keysFunc","symbolsFunc","offset","arrayPush","baseGetAllKeys","getSymbols","getMapData","type","getValue","pairs","LARGE_ARRAY_SIZE","resIndex","arrayFilter","symbol","ArrayBuffer","ctorString","isLength","baseUnary","now","nativeMax","nativeMin","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","thisArg","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","clearTimeout","cancel","flush","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","performance","hr","uptime","window","vendors","suffix","raf","caf","last","id","queue","callback","_now","next","cp","cancelled","handle","polyfill","requestAnimationFrame","cancelAnimationFrame","componentWillMount","state","getDerivedStateFromProps","props","setState","componentWillReceiveProps","nextProps","prevState","componentWillUpdate","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","Component","isReactComponent","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","componentName","displayName","newApiName","componentDidUpdate","maybeSnapshot","snapshot","__suppressDeprecationWarning","setRafTimeout","timeout","currTime","shouldUpdate","_typeof","iterator","_toArray","_arrayWithHoles","iter","_iterableToArray","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","arr2","createAnimateManager","handleChange","shouldStop","setStyle","_style","_styles","curr","restStyles","stop","start","style","subscribe","_handleChange","ownKeys","enumerableOnly","symbols","filter","sym","getOwnPropertyDescriptor","_objectSpread","target","_defineProperty","getOwnPropertyDescriptors","defineProperties","configurable","writable","PREFIX_LIST","IN_LINE_PREFIX_LIST","IN_COMPATIBLE_PROPERTY","identity","param","mapObject","translateStyle","isTransition","camelName","toUpperCase","styleVal","property","generatePrefixStyle","getTransitionVal","duration","easing","prop","toLowerCase","_slicedToArray","_arr","_n","_d","_e","_s","_i","done","_iterableToArrayLimit","_toConsumableArray","_arrayWithoutHoles","_nonIterableSpread","ACCURACY","cubicBezierFactor","c1","c2","multyTime","params","pre","cubicBezier","configBezier","_len","_key","x1","y1","y2","split","_easing$1$split$0$spl2","parseFloat","every","num","curveX","curveY","derCurveX","newParams","bezier","_t","evalT","derVal","isStepper","configEasing","_len2","_key2","_config$stiff","stiff","_config$damping","damping","_config$dt","dt","stepper","currX","destX","currV","newV","newX","configSpring","alpha","begin","needContinue","_ref","to","calStepperVals","preVals","steps","nextStepVals","_easing2","velocity","render","preObj","nextObj","preTime","beginTime","interKeys","includes","timingStyle","stepperStyle","cafId","update","currStyle","finalStyle","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","_defineProperties","descriptor","_setPrototypeOf","setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","getPrototypeOf","Animate","_PureComponent","subClass","superClass","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_this$props","isActive","attributeName","children","handleStyleChange","changeStyle","_this$props2","canBegin","mounted","runAnimation","_this$props3","shouldReAnimate","isTriggered","manager","stopJSAnimation","_newState","newState","unSubscribe","_this2","onAnimationEnd","onAnimationStart","startAnimation","configUpdate","_this3","_steps$","initialStyle","_steps$$duration","initialTime","sequence","nextItem","_nextItem$easing","nextProperties","properties","preItem","runJSAnimation","transition","newStyle","propsTo","runStepAnimation","_this$props4","others","onAnimationReStart","count","Children","stateStyle","cloneContainer","container","_container$props","_container$props$styl","className","cloneElement","only","child","PureComponent","propTypes","isRequired","defaultProps","_extends","Number","isFinite","parseDurationOfSingleTransition","AnimateGroupChild","_Component","handleEnter","node","isAppearing","appearOptions","enterOptions","handleStyleActive","handleExit","leaveOptions","Transition","onEnter","onExit","parseTimeout","AnimateGroup","component","appear","enter","leave","TransitionGroup","_interopRequireDefault","element","classList","_hasClass","setAttribute","baseVal","contains","replaceClassName","origClass","classToRemove","remove","newObj","desc","_interopRequireWildcard","_addClass","_removeClass","_react","_Transition","addClass","removeClass","CSSTransition","_React$Component","appearing","getClassNames","removeClasses","onEntering","activeClassName","reflowAndAddClass","onEntered","appearClassName","doneClassName","enterClassName","onExiting","onExited","isStringClassNames","_proto","_this$getClassNames6","scrollTop","createElement","_default","_reactDom","_TransitionGroup","ReplaceTransition","_args","handleLifecycle","handleEntering","_len3","_key3","handleEntered","_len4","_key4","_len5","_key5","handleExiting","_len6","_key6","handleExited","_len7","_key7","handler","idx","originalArgs","_child$props","toArray","findDOMNode","inProp","in","_React$Children$toArr","first","second","EXITING","ENTERED","ENTERING","EXITED","UNMOUNTED","PropTypes","_reactLifecyclesCompat","initialStatus","parentGroup","transitionGroup","isMounting","appearStatus","unmountOnExit","mountOnEnter","status","nextCallback","getChildContext","componentDidMount","updateStatus","nextStatus","componentWillUnmount","cancelNextCallback","getTimeouts","exit","mounting","performEnter","performExit","timeouts","enterTimeout","safeSetState","onTransitionEnd","setNextCallback","_this4","active","doesNotHaveTimeoutOrListener","addEndListener","childProps","noop","contextTypes","childContextTypes","_propTypes","_ChildMapping","firstRender","appeared","prevChildMapping","getInitialChildMapping","getNextChildMapping","currentChildMapping","getChildMapping","childFactory","_CSSTransition","_ReplaceTransition","mergeChildMappings","getProp","nextChildMapping","isValidElement","hasPrev","hasNext","prevChild","isLeaving","mapFn","mapper","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","classNamesShape","timeoutsShape","defaultFormatter","DefaultTooltipContent","payload","separator","formatter","itemStyle","itemSorter","items","finalItemStyle","display","paddingTop","paddingBottom","color","finalFormatter","formatted","_formatted","unit","padding","margin","wrapperClassName","contentStyle","labelClassName","labelStyle","label","labelFormatter","backgroundColor","border","whiteSpace","finalLabelStyle","hasLabel","finalLabel","wrapperCN","labelCN","renderContent","CLS_PREFIX","defaultUniqBy","dataKey","Tooltip","boxWidth","boxHeight","wrapperNode","getTranslate","tooltipDimension","viewBoxDimension","allowEscapeViewBox","coordinate","position","viewBox","restricted","unrestricted","updateBBox","_this$state","getBoundingClientRect","box","width","height","_classNames","translateX","translateY","isAnimationActive","animationDuration","animationEasing","filterNull","finalPayload","option","getUniqPayload","payloadUniqBy","hasPayload","content","outerStyle","pointerEvents","visibility","top","left","wrapperStyle","_this$state2","useTranslate3d","cls","ref","cursorStyle","cursor","trigger","Global","isSsr","Cross","getPath","CartesianAxis","tick","ticks","minTickGap","orientation","interval","tickFormatter","getNumberIntervalTicks","getTicksStart","getTicksEnd","_ref2","preserveEnd","sizeKey","unitSize","tail","tailContent","tailSize","tailGap","tickCoord","isShow","gap","_ref3","Text","restProps","viewBoxOld","restPropsOld","tx","ty","tickSize","mirror","tickMargin","finalTickSize","line","textAnchor","verticalAnchor","_this$props5","axisLine","fill","needHeight","needWidth","_this$props6","tickLine","stroke","finalTicks","getTicks","getTickTextAnchor","getTickVerticalAnchor","axisProps","customTickProps","tickLineProps","_this$getTickLineCoor","getTickLineCoord","lineCoord","tickProps","visibleTicksCount","Layer","renderTickItem","_this$props7","ticksGenerator","hide","_this$props8","noTicksProps","renderAxisLine","renderTicks","Label","renderCallByParent","isTouch","changedTouches","Brush","leaveTimer","travellerDragStartHandlers","handleDrag","isTravellerMoving","handleTravellerMove","isSlideMoving","handleSlideDrag","handleTouchMove","handleDragEnd","detachDragEndListener","handleLeaveWrapper","leaveTimeOut","handleEnterSlideOrTraveller","isTextActive","handleLeaveSlideOrTraveller","handleSlideDragStart","slideMoveStartX","pageX","attachDragEndListener","startX","handleTravellerDragStart","endX","lineY","renderDefaultTraveller","travellerWidth","updateId","startIndex","endIndex","prevData","prevUpdateId","prevTravellerWidth","prevX","prevWidth","scale","domain","range","scaleValues","createScale","middle","minIndex","getIndexInRange","maxIndex","text","addEventListener","removeEventListener","onChange","delta","newIndex","getIndex","movingTravellerId","brushMoveStartX","_this$setState","prevValue","chartElement","compact","travellerX","traveller","travellerProps","onMouseEnter","onMouseLeave","onMouseDown","onTouchStart","renderTraveller","fillOpacity","_this$props9","_this$state3","attrs","getTextOfTick","_this$props10","alwaysShowText","_this$state4","layerClass","isPanoramic","onMouseMove","onTouchMove","renderBackground","renderPanorama","renderSlide","renderTravellerLayer","renderText","right","bottom","ifOverflowMatches","alwaysShow","ifOverflow","ReferenceDot","clipPathId","isX","isY","xAxis","yAxis","scales","bandAware","isInRange","getCoordinate","cx","cy","shape","dotProps","clipPath","renderDot","isFront","xAxisId","yAxisId","strokeWidth","Dot","ReferenceLine","fixedX","fixedY","segment","endPoints","isFixedX","isFixedY","isSegment","_props$viewBox","yCoord","coord","points","xCoord","_orientation","_coord","_points","_points2","getEndPoints","_endPoints","_endPoints$","_endPoints$2","lineProps","renderLine","ReferenceArea","hasX1","hasX2","hasY1","hasY2","rect","xValue1","xValue2","yValue1","yValue2","p1","rangeMin","p2","rangeMax","getRect","renderRect","Rectangle","detectReferenceElementsDomain","axisId","axisType","specifiedTicks","lines","dots","elements","areas","idKey","valueKey","finalDomain","el","key1","key2","value1","value2","eventCenter","setMaxListeners","SYNC_EVENT","ORIENT_MAP","originCoordinate","isFinit","defer","setImmediate","deferClear","clearImmediate","getDisplayedData","item","graphicalItems","dataStartIndex","dataEndIndex","itemsData","itemData","getTooltipContent","chartData","activeIndex","activeLabel","tooltipAxis","displayedData","allowDuplicatedCategory","getTooltipData","layout","rangeObj","rangeData","chartX","chartY","pos","angle","radius","calculateTooltipPos","orderedTooltipTicks","axis","tooltipTicks","activePayload","activeCoordinate","find","_angle","_radius","getActiveCoordinate","activeTooltipIndex","getAxisMap","_ref4","_ref4$axisType","AxisComp","stackGroups","axisIdKey","axes","axisMap","stackOffset","isCategorical","allowDataOverflow","duplicateDomain","categoricalDomain","duplicate","errorBarsDomain","hasStack","axisDomain","originalDomain","getAxisMapByAxes","Axis","getAxisMapByItems","createDefaultState","defaultShowTooltip","brushItem","isTooltipActive","getAxisNameByLayout","numericAxisName","cateAxisName","generateCategoricalChart","_ref6","_class","_temp","chartName","GraphicalChild","_ref6$defaultTooltipE","defaultTooltipEventType","_ref6$validateTooltip","validateTooltipEventTypes","axisComponents","legendContent","formatAxisMap","getFormatItems","currentState","barSize","barGap","barCategoryGap","globalMaxBarSize","maxBarSize","_getAxisNameByLayout","hasBar","some","hasGraphicalBarItem","sizeList","formatedItems","_item$props","childMaxBarSize","numericAxisId","cateAxisId","axisObj","_objectSpread6","cateAxis","cateTicks","stackedData","itemIsBar","bandSize","barPosition","barBandSize","_objectSpread7","componsedFn","getComposedData","childIndex","updateStateOfAxisMapsOffsetAndStackGroups","_ref7","reverseStackOrder","_getAxisNameByLayout2","_ref5","prevLegendBBox","_ref5$xAxisMap","xAxisMap","_ref5$yAxisMap","yAxisMap","legendItem","Legend","offsetH","offsetV","brushBottom","calculateOffset","legendBBox","cateAxisMap","ticksObj","tooltipAxisBandSize","formatedGraphicalItems","CategoricalChartWrapper","_props","uniqueChartId","legendInstance","deferId","clearDeferId","handleLegendBBoxUpdate","handleReceiveSyncEvent","cId","chartId","syncId","applySyncEvent","handleBrushChange","_ref8","triggerSyncEvent","handleMouseEnter","mouse","getMouseInfo","triggeredAfterMouseMove","handleItemMouseEnter","activeItem","tooltipPayload","tooltipPosition","handleItemMouseLeave","handleMouseMove","persist","handleMouseLeave","cancelThrottledTriggerAfterMouseMove","handleOuterEvent","eventName","handleClick","onClick","handleMouseDown","handleMouseUp","onMouseUp","handleTouchStart","handleTouchEnd","verticalCoordinatesGenerator","_ref9","horizontalCoordinatesGenerator","_ref10","axesTicksGenerator","renderCursor","tooltipEventType","getTooltipEventType","cursorComp","Curve","getCursorRectangle","_this$getCursorPoints","getCursorPoints","startAngle","endAngle","innerRadius","outerRadius","Sector","cursorProps","payloadIndex","renderPolarAxis","axisOption","renderXAxis","renderAxis","renderYAxis","renderGrid","chartWidth","chartHeight","renderPolarGrid","_element$props","radialLines","polarAngles","polarRadius","radiusAxisMap","angleAxisMap","radiusAxis","angleAxis","renderLegend","legendWidth","otherProps","legend","onBBoxUpdate","renderTooltip","tooltipItem","_this$state5","renderBrush","_this$state6","renderReferenceElement","_this$state7","_element$props2","renderActivePoints","_ref11","activePoint","basePoint","isRange","_item$item$props","activeDot","renderActiveDot","renderGraphicChild","filterFormatItem","_this$state8","_item$props2","baseLine","_item$item$props2","hasActive","itemEvents","onCLick","graphicalItem","specifiedKey","renderCustomized","throttleDelay","shared","eventType","containerOffset","inRange","_this$state9","xScale","yScale","xValue","invert","yValue","toolTipData","_this$state10","halfSize","_this$state11","_cx","_cy","innerPoint","outerPoint","_this$state12","tooltipEvents","onTouchEnd","_maxListeners","syncMethod","_this$state13","validateChartX","validateChartY","axisOptions","_this$state$offset","_ref12","_ref13","_ref14","_ref15","_this$state$xAxisMap","_this$state$xAxisMap$","_this$state$yAxisMap","_this$state$yAxisMap$","chartXY","itemDisplayName","activeBarItem","_activeBarItem","CartesianGrid","XAxis","YAxis","Bar","Line","Area","Radar","RadialBar","Scatter","Pie","Funnel","PolarGrid","PolarAngleAxis","PolarRadiusAxis","Customized","Surface","renderClipPath","parseEventsOfWrapper","defaultState","prevHeight","prevLayout","prevStackOffset","prevMargin","prevChildren","_defaultState","keepFromPrevState","updatesToState","newUpdateId","dot","Cell","getLabel","renderRadialLabel","labelProps","labelAngle","direction","clockWise","deltaAngle","getDeltaAngle","startPoint","endPoint","dominantBaseline","xlinkHref","getAttrsOfPolarLabel","midAngle","_polarToCartesian","_x","_polarToCartesian2","getAttrsOfCartesianLabel","parentViewBox","verticalSign","verticalOffset","verticalEnd","verticalStart","horizontalSign","horizontalOffset","horizontalEnd","horizontalStart","_attrs2","_attrs3","sizeAttrs","isPolar","_props$className","textBreakAll","isPolarLabel","positionAttrs","breakAll","parseViewBox","labelViewBox","parentProps","checkPropsLabel","explicitChildren","implicitLabel","parseLabel","valueAccessor","LabelList","idProps","ckeckPropsLabel","explicitChilren","parseLabelList","pi","atan2","cos","sin","tau","draw","moveTo","arc","lineTo","closePath","tan30","tan30_2","kr","kx","ky","sqrt3","x0","y0","symbolFactories","symbolCircle","symbolCross","symbolDiamond","symbolSquare","symbolStar","symbolTriangle","symbolWye","RADIAN","Symbols","sizeType","symbolFactory","getSymbolFactory","constant","circle","_","tan","calculateAreaSize","registerSymbol","SIZE","DefaultLegendContent","inactiveColor","sixthSize","thirdSize","inactive","strokeDasharray","legendIcon","iconProps","iconSize","marginRight","svgStyle","verticalAlign","renderIcon","align","textAlign","renderItems","hPos","vPos","getBBoxSnapshot","_box3","getDefaultPosition","BREAKING_SPACES","calculateWordWidths","words","wordsWithComputedWidth","word","spaceWidth","getWordsWithoutCalculate","getWordsByLines","needCalculate","scaleToFit","wordWidths","initialWordsWithComputedWith","lineWidth","shouldLimitLines","maxLines","calculate","currentLine","newLine","originalResult","trimmedResult","checkOverflow","tempText","doesOverflow","findLongestLine","iterations","_checkOverflow2","doesPrevOverflow","doesMiddleOverflow","calculateWordsByLines","prevScaleToFit","prevStyle","prevBreakAll","wordsByLines","dx","dy","lineHeight","capHeight","textProps","startDy","transforms","svgView","version","point","that","_context","bezierCurveTo","_x0","_x1","_y0","_y1","Basis","BasisClosed","BasisOpen","LinearClosed","Linear","slope3","h0","h1","s0","s1","slope2","h","t0","t1","MonotoneX","MonotoneY","ReflectContext","Natural","controlPoints","Step","areaStart","_line","areaEnd","NaN","lineStart","_point","lineEnd","_x2","_x3","_x4","_y2","_y3","_y4","_t0","_y","px","py","i0","i1","defined","curve","output","defined0","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","CURVE_FACTORIES","curveBasisClosed","curveBasisOpen","curveBasis","curveLinearClosed","curveLinear","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","getX","getY","lineFunction","connectNulls","curveFactory","getCurveFactory","formatPoints","formatBaseLine","areaPoints","pathRef","realPath","getRectanglePath","maxRadius","ySign","xSign","newRadius","_newRadius","isInRectangle","minX","maxX","minY","maxY","totalLength","getTotalLength","animationBegin","isUpdateAnimationActive","currWidth","currHeight","currY","getTangentCircle","isExternal","cornerRadius","cornerIsExternal","centerRadius","theta","asin","centerAngle","lineTangencyAngle","center","circleTangency","lineTangency","getSectorPath","tempEndAngle","outerStartPoint","outerEndPoint","innerStartPoint","innerEndPoint","forceCornerRadius","deltaRadius","cr","_getTangentCircle","soct","solt","sot","_getTangentCircle2","eoct","eolt","eot","outerArcAngle","_getTangentCircle3","sict","silt","sit","_getTangentCircle4","eict","eilt","eit","innerArcAngle","getSectorWithCorner","ids","leftMirror","rightMirror","topMirror","bottomMirror","needSpace","_axis$padding","reversed","offsetKey","_parseScale","realScaleType","finalAxis","rectWithPoints","rectWithCoords","ScaleHelper","bandwidth","_offset","_offset2","EPS","createLabeledScales","PLACE_HOLDER","isPlaceHolder","curry0","_curried","curryN","argsLength","restArgs","newArgs","curry","compose","fns","firstFn","tailsFn","memoize","lastResult","rangeStep","step","getDigitCount","interpolateNumber","newA","uninterpolateNumber","diff","Infinity","uninterpolateTruncation","getValidInterval","validMin","validMax","getFormatStep","roughStep","allowDecimals","correctionFactor","digitCount","digitCountValue","stepRatio","stepRatioScale","formatStep","getTickOfSingleValue","tickCount","absVal","middleIndex","calculateStep","tickMin","tickMax","belowCount","upCount","scaleCount","getNiceTickValues","_getValidInterval2","cormin","cormax","_values","_calculateStep","getTickValuesFixedDomain","_getValidInterval4","_getValidInterval6","normalize","isNaN","bimap","interpolate","d0","d1","r0","r1","polymap","bisect","copy","clamp","unknown","transformer","untransform","piecewise","input","rescale","rangeRound","u","continuous","tickFormat","specifier","formatSpecifier","precisionPrefix","precisionRound","precisionFixed","linearish","nice","prestep","maxIter","linear","init","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","f","loggish","logs","pows","E","log10","log2","logp","powp","transformSymlog","log1p","transformSymexp","expm1","symlogish","symlog","transformPow","transformSqrt","transformSquare","powish","square","radial","squared","unsquare","thresholds","invertExtent","sort","ascending","quantiles","quantize","threshold","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","newInterval","floori","offseti","date","previous","setTime","millisecond","getMilliseconds","getUTCSeconds","minute","getSeconds","getMinutes","hour","getHours","day","setHours","setDate","getDate","getTimezoneOffset","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","month","setMonth","getMonth","getFullYear","year","setFullYear","utcMinute","setUTCSeconds","getUTCMinutes","utcHour","setUTCMinutes","getUTCHours","utcDay","setUTCHours","setUTCDate","getUTCDate","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","utcYear","setUTCFullYear","ticker","week","tickIntervals","tickInterval","bisector","utcTicks","utcTickInterval","timeTicks","timeTickInterval","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","utcTime","UTC","k10","interpolator","sequential","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","quantile","t2","k21","r2","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","series","order","stackValue","stackSeries","getValueByDataKey","defaultValue","getDomainOfDataByKey","filterNil","flattenData","calculateActiveTickIndex","_ticks$length","unsortedTicks","before","cur","after","sameDirectionCoord","diffInterval","curInRange","afterInRange","sameInterval","getMainColorOfGraphicItem","getLegendProps","legendData","sectors","iconType","legendType","getWithHeight","getBarSizeList","globalSize","_ref5$stackGroups","numericAxisIds","sgs","stackIds","sLen","_sgs$stackIds$j","barItems","selfSize","cateId","stackList","getBarPosition","_ref6$sizeList","realBarGap","useFull","fullBarSize","newRes","originalSize","appendOffsetOfLegend","legendBox","legendProps","newOffset","getDomainOfErrorBars","errorBars","errorBarChild","entryValue","mainValue","errorDomain","prevErrorArr","errorValue","lowerValue","upperValue","parseErrorBarsOfAxis","domains","getDomainOfItemsWithSameAxis","isCategoricalAxis","getCoordinatesOfGrid","hasMin","hasMax","getTicksOfAxis","isGrid","isAll","niceTicks","scaleContent","combineEventHandlers","defaultHandler","parentHandler","childHandler","customizedHandler","arg1","arg2","arg3","arg4","parseScale","chartType","checkDomainOfScale","findPositionOfBar","truncateByDomain","STACK_OFFSET_MAP","positive","negative","expand","none","silhouette","wiggle","s2","si","sij0","s3","sk","getStackedData","stackItems","offsetType","dataKeys","oz","sz","getStackGroupsByAxisId","_items","_item$props3","stackId","childGroup","group","getTicksOfScale","scaleType","tickValues","calculateDomainOfTicks","_domain","getCateCoordinateOfBar","getBaseValueOfBar","numericAxis","getStackedDataOfItem","itemIndex","getDomainOfStackGroups","MIN_VALUE_REG","MAX_VALUE_REG","parseSpecifiedDomain","specifiedDomain","dataDomain","_value","getBandSizeOfAxis","isBar","bandWidth","orderedTicks","parseDomainOfCategoryAxis","calculatedDomain","axisChild","getTooltipItem","_graphicalItem$props","tooltipType","stringCache","widthCache","cacheCount","SPAN_STYLE","STYLE_LIST","MEASUREMENT_SPAN_ID","getStyleString","getStringSize","styleString","cacheKey","measurementSpan","document","getElementById","body","appendChild","measurementSpanStyle","styleKey","textContent","getOffset","html","ownerDocument","documentElement","pageYOffset","clientTop","pageXOffset","clientLeft","calculateChartCoordinate","pageY","mathSign","isPercent","isNumber","isNumOrStr","idCounter","uniqueId","getPercentValue","percent","totalValue","validate","getAnyElementOfObject","hasDuplicate","ary","numberA","numberB","findEntryInArray","specifiedValue","warn","condition","radianToDegree","angleInRadian","polarToCartesian","getMaxRadius","_range2","getAngleOfPoint","anotherPoint","acos","reverseFormatAngleOfSetor","startCnt","endCnt","inRangeOfSector","sector","_getAngleOfPoint","_formatAngleOfSector","formatAngleOfSector","formatAngle","REACT_BROWSER_EVENT_MAP","click","mousedown","mouseup","mouseover","mousemove","mouseout","mouseenter","mouseleave","touchcancel","touchend","touchmove","touchstart","getDisplayName","Comp","findAllByType","types","isFragment","childType","findChildByType","validateWidthHeight","_el$props","SVG_TAGS","isSvgElement","isChildrenEqual","nextChildren","isSingleChildEqual","nextChild","renderByOrder","renderMap","record","results","getReactEventByType","parseChildIndex","SVGContainerPropKeys","SVGElementPropKeys","EventKeys","filterProps","includeEvents","isSvg","inputProps","out","adaptEventHandlers","newHandler","adaptEventsOfChild","originalHandler","getEventHandlerOfChild","band","ordinalRange","paddingInner","paddingOuter","pointish","initRange","initInterpolator","implicit","ordinal","hashClear","hashDelete","hashGet","hashHas","hashSet","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","setCacheAdd","setCacheHas","stackClear","stackDelete","stackGet","stackHas","stackSet","baseIndexOf","baseForOwn","baseEach","createBaseEach","collection","current","computed","fromIndex","fromRight","isFlattenable","baseFlatten","depth","isStrict","baseFor","createBaseFor","castPath","toKey","baseFindIndex","baseIsNaN","strictIndexOf","matchData","noCustomizer","srcValue","baseMatches","baseMatchesProperty","isPrototype","isArrayLike","baseIsMatch","getMatchData","matchesStrictComparable","hasIn","isKey","isStrictComparable","arrayMap","baseGet","baseIteratee","baseMap","baseSortBy","compareMultiple","iteratees","orders","nativeCeil","overRest","setToString","baseSetToString","comparer","trimmedEndIndex","reTrimStart","arrayIncludes","arrayIncludesWith","cacheHas","createSet","isCommon","outer","seenIndex","stringToPath","baseSlice","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","compareAscending","objCriteria","criteria","othCriteria","ordersLength","eachFunc","iterable","castSlice","hasUnicode","stringToArray","methodName","strSymbols","chr","findIndexFunc","baseRange","isIterateeCall","toFinite","arrStacked","othStacked","objStacked","isKeyable","stubArray","hasFunc","reHasUnicode","spreadableSymbol","isConcatSpreadable","reIsDeepProp","reIsPlainProp","overArg","require","otherArgs","shortOut","nativeNow","lastCalled","stamp","remaining","asciiToArray","unicodeToArray","memoizeCapped","rePropName","reEscapeChar","match","number","subString","reWhitespace","rsAstralRange","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsSeq","rsSymbol","reUnicode","arrayEvery","baseEvery","guard","createFind","baseHasIn","hasPath","stubFalse","baseIsTypedArray","baseAssignValue","baseExtremum","baseGt","resolver","memoized","Cache","baseLt","baseProperty","basePropertyDeep","createRange","baseSome","baseOrderBy","baseRest","sortBy","debounce","remainder","baseTrim","baseUniq","upperFirst","createCaseFirst","for","_postcssValueParser2","_parser","_reducer2","_stringifier2","MATCH_CALC","walk","contents","stringify","nodes","ast","parser","parse","reducedAst","_cssUnitConverter","_cssUnitConverter2","convertAbsoluteLength","flip","_convert","_convert2","operator","convertMathExpression","_node","op","flipValue","isValueType","reduceAddSubExpression","reduceDivisionExpression","reduceMultiplicationExpression","reduceMathExpression","calc","_reducer","prec","fallback","JisonParserError","msg","hash","stacktrace","exception","ex2","captureStackTrace","rv","trace","yy","hasPartialLrUpgradeOnConflict","errorRecoveryTokenDiscardCount","symbols_","terminals_","TERROR","EOF","originalQuoteName","originalParseError","cleanupAfterParse","constructParseErrorInfo","yyMergeLocationInfo","__reentrant_call_depth","__error_infos","__error_recovery_infos","quoteName","id_str","getSymbolName","describeSymbol","terminal_descriptions_","collect_expected_token_set","do_not_describe","tokenset","check","state_descriptions_","table","productions_","rule","bp","performAction","yystate","yysp","yyvstack","lexer","$","mode","goto","bt","defaultActions","bda","parseError","ExceptionClass","recoverable","destroy","sstack","vstack","sp","NO_ACTION","__lexer__","sharedState_yy","pre_parse","post_parse","pre_lex","post_lex","fastLex","token","assert","yyGetSharedState","dst","src","shallow_copy_noclobber","resultValue","invoke_post_methods","do_not_nuke_errorinfos","cleanupAfterLex","ex","expected","pei","errStr","yytext","token_id","yylineno","action","new_state","symbol_stack","state_stack","value_stack","stack_pointer","rec","yyrulelen","this_production","lex","yyval","_$","retval","setInput","canIUse","errSymbolDescr","showPosition","ntsymbol","JisonLexerError","ERROR","__currentRuleSet__","__decompressed","_backtrack","_input","_more","_signaled_error_token","conditionStack","matched","matches","yyleng","yylloc","constructLexErrorInfo","show_input_position","prettyPrintRange","pos_str","loc","yyerror","lineno_msg","lexerErrorsAreRecoverable","extra_error_attributes","last_column","first_line","first_column","last_line","rules","rule_re","conditions","spec","rule_ids","rule_regexes","rule_new_ids","__rule_regexes","__rule_count","editRemainingInput","cpsArg","ch","slice_len","ch2","unput","substr","pre_lines","more","reject","backtrack_lexer","less","pastInput","maxSize","past","upcomingInput","maxPrefix","maxPostfix","deriveLocationInfo","actual","preceding","following","context_loc","context_loc2","l0","l1","lineno_display_width","ws_prefix","nonempty_line_indexes","lno","errpfx","trim","clip_start","MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT","clip_end","intermediate_line","describeYYLLOC","display_range_too","l2","test_match","indexed_rule","backup","match_str","match_str_len","tempMatch","_currentRules","trackPosition","topState","regexes","flex","pendingInput","activeCondition","conditionStackDepth","pushState","popState","stateStackSize","yyrulenumber","YY_START","simpleCaseActionClusters","inclusive","Parser","ValueParser","bubble","openParentheses","closeParentheses","singleQuote","doubleQuote","backslash","slash","comma","colon","star","escapePos","whitespacePos","parent","tokens","code","balanced","sourceIndex","unclosed","stringifyNode","custom","buf","customResult","EXP","dotted","sciPos","containsNumber","geojson","feature","UNITS_PROP","LEADING_DIGITS","DEFAULT_DPI","ScaleLine","un","bar","innerElement_","viewState_","minWidth_","minWidth","maxWidth_","maxWidth","renderedVisible_","renderedWidth_","renderedHTML_","addChangeListener","handleUnitsChanged_","setUnits","units","scaleBar_","scaleBarSteps_","scaleBarText_","dpi_","dpi","getUnits","updateElement_","setDpi","viewState","projection","pointResolutionUnits","pointResolution","resolution","nominalCount","metersPerDegree","degrees","decimalCount","previousCount","previousWidth","previousDecimalCount","decimal","createScaleBar","innerHTML","resolutionScale","getScaleForResolution","mapScale","toLocaleString","stepWidth","scaleSteps","createMarker","createStepText","isLast","lengthString","mapEvent","frameState"],"sourceRoot":""}